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 證明,即使沒有使用 inline assembly,一般 Solidity 程式碼也可能觸發此問題。使用 `--via-ir` 編譯的合約可能廣泛受到影響;使用預設 evm assembly pipeline 時,受影響範圍則較小。停用 Yul 最佳化器時,此錯誤不會發生。 Solidity 團隊掃描了約 283,000 次經驗證的 `via-ir` 編譯和 607,000 次 evm assembly 編譯,比較修正前後的建置結果,未發現 bytecode 差異。團隊表示,這顯示該錯誤可能很罕見,但無法保證沒有已部署的合約受到影響。開發者應升級至 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、緊急暫停,以及專案的補救措施,而不是單純存在一項已修補的編譯器問題。整體來說,這則消息對市場走向中性,但與智慧合約風險監控有關。