Solidity 0.8.19–0.8.37 нұсқаларына әсер ететін Yul оңтайландырғышының қатесін түзетті

Solidity 0.8.38 нұсқасында Yul оңтайландырғышындағы қауіптілігі төмен қате түзетілді. Бұл қате Solidity 0.8.19–0.8.37 нұсқаларында Yul оңтайландырғышы қосулы күйде компиляцияланған контрактілерге әсер етеді. Белгілі бір жағдайларда ескірген есепке алу деректері Yul оңтайландырғышының жадтағы немесе сақтау орнындағы екі мекенжайды бір-бірінен бөлек деп қабылдауына себеп болуы мүмкін, алайда олар шын мәнінде қабаттасады. Соның салдарынан контракт ескірген мәнді қайтаруы немесе қажетті жазу әрекетін орындамай қалуы мүмкін. Мәселе туралы Daniel Boye хабарлады, ал кейін Surya Prakash Akula оның кірістірілген assembly қолданбай-ақ, кәдімгі Solidity кодында туындауы мүмкін екенін көрсетті. `--via-ir` арқылы компиляцияланған контрактілерге кең ауқымда әсер етуі ықтимал; әдепкі EVM assembly конвейерінде осалдық ауқымы тарлау. Yul оңтайландырғышы өшірілген кезде бұл қате туындамайды. Solidity жасаған тексеріс барысында шамамен 283 000 расталған `via-ir` компиляциясы мен 607 000 EVM assembly компиляциясы қаралды. Түзету енгізілген және енгізілмеген құрастырылымдарды салыстырғанда, байткодта айырмашылық табылмады. Команда мұны қатенің сирек кездесетінінің белгісі деп санайды, бірақ бұл қолданысқа енгізілген бірде-бір контракт әсерге ұшырамағанына кепілдік бермейді. Әзірлеушілер Solidity 0.8.38 немесе одан кейінгі нұсқаға жаңартып, осал нұсқалармен компиляцияланған қолданыстағы контрактілерді бағалауы керек. Трейдерлер үшін бұл — смарт-контрактілердің сенімділігіне қатысты нақты ескерту; Ethereum желісінде немесе нарықта ауқымды іркіліс бар екенінің дәлелі емес.
Neutral
Бұл хабарландыру — әзірлеушілерге арналған қауіпсіздік және жаңарту туралы ескерту; ол осалдықтың пайдаланылғанын, желінің істен шыққанын немесе қаражат жоғалғанын дәлелдемейді. Solidity қатенің қауіптілік деңгейін төмен деп бағалайды және тексерілген 890 000-ға жуық компиляцияны сканерлеу кезінде түзетуі бар және жоқ жинақтардың байт-кодында айырмашылық табылмағанын хабарлайды. Бұған қоса, мәселе оңтайландырғышқа және мекенжайларды қайта тағайындауға қатысты нақты шарттарды талап етеді, бұл оның ықтимал ауқымын шектейді. Осы жайттар ETH-ке немесе жалпы крипто-нарық бағаларына бірден әрі кең ауқымда әсер ету ықтималдығын төмендетеді. Қысқа мерзімде трейдерлер Solidity 0.8.19–0.8.37 нұсқаларын пайдаланатын жобалардың мәлімдемелерін, әсіресе Yul оңтайландырғышымен немесе `--via-ir` параметрімен компиляцияланғандарын бақылауы мүмкін. Кеңінен қолданылатын протокол осал болып шыққан іске қосылған келісімшарттар немесе осалдықты пайдалану салдарынан болған шығындар туралы хабарласа, сенім әлсіреп, нақты жобалардың токендері сатылуы немесе құбылмалылық уақытша артуы мүмкін. Бұл мақалада мұндай оқиға туралы айтылмаған, сондықтан нарыққа тұтастай теріс баға беруге негіз жоқ. Ұзақ мерзімде Solidity 0.8.38-дегі түзету және ұсынылған тексеру қадамдары командалар осал нұсқаларды жаңартып, сынақтан өткізген сайын сақталып отырған тәуекелді азайтуы керек. Компилятор осалдықтары туралы басқа хабарламалардағыдай, нарық үшін негізгі белгілер — осалдықтың пайдаланылғаны расталуы, зардап шеккен протоколдардың TVL көрсеткіші, шұғыл тоқтатулар және жобалардың мәселені жою шаралары; түзетілген компилятор мәселесінің болғаны ғана емес. Жалпы алғанда, бұл жаңалық нарық бағытына бейтарап, бірақ смарт-келісімшарт тәуекелдерін бақылау үшін маңызды.