
Mga smart contract maxis, Maaaring maluwag na tanggalin ng inyong Solidity compiler ang isang store na kailangan ninyo, at hindi ninyo makikita ito sa inyong source. Lumabas ang Solidity 0.8.38 noong nakaraang Huwebes. Ito ay nag-aayos ng isang bug sa Yul optimiser na nasa bawat release mula 0.8.19 hanggang 0.8.37. Ang optimizer ay nagtutala ng mga bagay na nasa memorya at storage. Ginagamit nito ang mga tala na ito upang palitan ang isang load gamit ang value na alam na nito, at upang i-skips ang isang store na sumusulat ng nasa loob na doon. Upang matukoy kung maaaring mag-overlap ang dalawang address, iginlalayout nito ang bawat isa bilang isang base variable kasama ang offset. Parehong base, iba’t ibang offset, kaya dapat iba’t ibang slot. Ang mga paglalarawan na ito ay naka-cache. Pagkatapos, may nag-reassign ng base variable. Hindi laging napapansin ng optimiser. Ngayon, ihahambing nito ang isang address na gawa sa lumang halaga kasama ang isa na gawa sa bagong halaga bilang kung mayroon silang parehong base. Papasyahan nito na iba’t iba sila, ngunit sa runtime, patutungo sila sa parehong lugar. Ang resulta ay isang stale note. Maaaring bumalik ang isang mas lumang value sa isang susunod na load. Maaaring tanggalin ang store na kailangan ninyo. Maaaring mag-hash ang keccak256 sa lugar na ito ng outdated na data. Lahat ng code na i-compile gamit ang optimizer ay eksposed. Gamit ang via-IR, maaaring makasagot ang anumang code, kahit walang inline assembly. Gamit ang default legacy pipeline, ilan lamang sa inline assembly at compiler-generated helpers. Ligtas ang unoptimized builds. Ang team ay nagbigay ng mababang severity, at ginawa nila ang isang bagay na gustong-gusto kong gawin ng lahat ng compiler team. Ibinahagi nila ang lahat ng verified contract sa database ng Sourcify gamit at hindi gamit ang fix, at pareho ang bytecode ng lahat. Kaya ito ay rare. Ang rare ay hindi katumbas ng never, lalo na kung ang inyong code ay bago at hindi pa deployed. Nakuha ang bug sa pamamagitan ng Ethereum Foundation bug bounty, at ipinakita ng pangalawang report na maaaring ma-trigger ito ng simpleng Solidity nang walang assembly.
