Inaayos ng Solidity ang bug sa Yul optimizer na nakaaapekto sa mga bersyon 0.8.19–0.8.37
Inayos ng Solidity ang isang Yul optimizer bug na mababa ang antas ng tindi sa bersyon 0.8.38. Apektado nito ang mga contract na kinompile gamit ang naka-enable na Yul optimizer sa Solidity 0.8.19–0.8.37. Sa ilang partikular na kondisyon, dahil sa lipas na bookkeeping, maaaring ituring ng Yul optimizer na magkahiwalay ang dalawang lokasyon sa memory o storage kahit nag-o-overlap ang mga ito. Maaari nitong maging sanhi ng pagbabalik ng contract ng lumang value o hindi pagsasagawa ng kinakailangang pagsulat.
Iniulat ni Daniel Boye ang problema, at kalaunan ay ipinakita ni Surya Prakash Akula na maaaring mangyari ito sa ordinaryong Solidity code kahit walang inline assembly. Maaaring malawak ang epekto sa mga contract na kinompile gamit ang `--via-ir`; mas limitado naman ang saklaw ng panganib sa default na evm assembly pipeline. Hindi maaaring mangyari ang bug kapag naka-disable ang Yul optimizer.
Sinuri ng Solidity ang humigit-kumulang 283,000 beripikadong `via-ir` compilation at 607,000 evm assembly compilation at walang nakitang pagkakaiba sa bytecode sa paghahambing ng mga build na mayroon at walang pag-aayos. Ayon sa team, ipinahihiwatig nitong bihira ang bug, ngunit hindi nito ginagarantiyang walang deployed contract na apektado. Dapat mag-upgrade ang mga developer sa Solidity 0.8.38 o mas bago at tasahin ang mga deployed contract na kinompile gamit ang mga apektadong bersyon. Para sa mga trader, isa itong naka-target na alerto tungkol sa pagiging maaasahan ng smart contract, hindi ebidensiya ng malawakang pagkaantala sa Ethereum network o merkado.
Neutral
Ang anunsyo ay abiso tungkol sa seguridad at pag-upgrade para sa mga developer, hindi katibayan ng pagsasamantala sa kahinaan, pagkaantala ng network, o pagkawala ng pondo. Itinuturing ng Solidity na mababa ang tindi ng bug at sinasabing sa pag-scan nito sa halos 890,000 beripikadong compilation, walang nakitang pagkakaiba sa bytecode ng mga build na mayroon at walang pag-aayos. Nangangailangan din ang isyu ng mga partikular na kundisyon kaugnay ng optimizer at muling pagtatalaga ng address, kaya limitado ang malamang na saklaw nito. Dahil dito, malabong magkaroon ito ng agarang epekto sa buong merkado ng ETH o sa mas malawak na presyo ng crypto.
Sa maikling panahon, maaaring bantayan ng mga trader ang mga pahayag mula sa mga proyektong gumagamit ng Solidity 0.8.19–0.8.37, lalo na ang mga kinompile gamit ang Yul optimizer o `--via-ir`. Kung mag-ulat ang isang malawakang ginagamit na protocol ng mga na-deploy na kontratang bulnerable o mga pagkaluging maaaring samantalahin, maaaring humina ang kumpiyansa at magbunsod ito ng pagbebenta ng token ng partikular na proyekto o pansamantalang pagtaas ng volatility. Walang iniulat na ganitong insidente sa artikulong ito, kaya walang sapat na batayan para sa malawakang negatibong pananaw.
Sa mas mahabang panahon, dapat makatulong ang pag-aayos sa Solidity 0.8.38 at ang mga inirerekomendang hakbang sa beripikasyon na mabawasan ang patuloy na panganib habang nag-a-upgrade at sumusubok ang mga team sa mga apektadong deployment. Gaya ng iba pang pagsisiwalat ng kahinaan sa compiler, ang mahahalagang senyales sa merkado ay ang kumpirmadong pagsasamantala, TVL ng apektadong protocol, mga emergency pause, at mga hakbang sa pag-aayos ng proyekto—hindi ang pagkakaroon lamang ng isyu sa compiler na may inilabas nang patch. Sa kabuuan, neutral ang balitang ito sa direksiyon ng merkado, ngunit mahalaga ito sa pagsubaybay sa panganib ng mga smart contract.