コントラクトの安全性に関する8つの警告を受け、EthereumがGlamsterdamを延期

監査担当者は、手数料の変更によって、エラー発生後に実行される命令が変わる可能性があるかどうかを調査しています。

ガス消費ルールの変更により、Ethereum上ですでに稼働しているスマートコントラクトの動作が変わる可能性があります。

この懸念を受け、開発者は、8つの潜在的な非互換性を調査し、既存のアプリケーションを調整すべきか、アップグレードの仕様を変更すべきかを判断する間、テストネットHoodiでのGlamsterdamのテストを延期しました。
この問題は、EIP-8037およびEIP-8038の提案に関連しています。これらの提案は、新しい情報の作成や、ネットワーク上にすでに保存されているデータへのアクセスにかかるガスコストを変更するものです。
こうした調整はネットワークのコスト構造を変更することを目的としていますが、現在のルールに基づいてプログラムされたコントラクトにも影響を及ぼす可能性があります。
主な懸念は、あるコントラクトが別のコントラクトを呼び出し、その処理が失敗した場合に生じます。一部のプログラムは、特定の処理を停止したり、エラーが発生したことを記録したりするための判断材料として、ガスの消費量を利用しています。
しかし、新しいルールでは、呼び出しの失敗後に利用できるガスが増える可能性があり、その結果、追加の命令が実行されるおそれがあります。
つまり、開発者が中断されると想定していた処理をコントラクトが続行したり、想定とは異なる結果を記録したりする可能性があります。
影響はプログラムの書き方によって異なるため、Ethereumのすべてのコントラクトに不具合が生じるというわけではありません。
#ChainSecurity は、10月13日に公開した分析でこの挙動について警告しました。
こうした指摘を受け、Ethereum Foundationは、提案された変更によって成立しなくなる可能性がある技術的な前提を8つまとめました。
その中には、処理に必要なガス量や、呼び出しが取り消されたときに利用可能なリソースがどうなるかについての前提が含まれています。
確認作業を容易にするため、同組織は例や手順をまとめたリポジトリを公開しました。開発者はこれを使って、コントラクトに潜在的な問題がないかを特定し、調査結果を記録して、解決策を提案できます。
また、今後予定されているAll Core Developersの議論に先立ち、独立した監査担当者にも協力を呼びかけました。
