イーサリアムの開発者2人は9日、手数料を改定しても既存のスマートコントラクトの動作を変えない仕組みを、それぞれイーサリアム
ETHの改善提案として提出した。スマートコントラクトはアプリを動かすブロックチェーン上のプログラムで、1案は次期大型アップグレード「Glamsterdam(グラムステルダム)」の改定を対象と明記する。イーサリアム財団は、この改定で一部のプロジェクトが脆弱になるとしている。
グラムステルダムで新規データの作成料金が約5〜8倍に
問題の元は、グラムステルダムへの組み込みが決まっている手数料の改定2件だ。イーサリアムでは処理ごとにガスという単位で料金が決まる。改善提案(EIP)のうち、EIP-8037は新しいデータを作る処理を、EIP-8038は既存データの読み書きを値上げする。
| 処理 | 現在 | 改定後 |
|---|---|---|
| 空の保存場所に初めて書き込む | 22,100 | 110,020 |
| 空のアドレスにETHを送り、新しいアカウントを作る | 25,000 | 183,600+実行の料金 |
| 空のアドレスにコントラクトを作る(初期化コードとコードの保存料を除く) | 32,000 | 195,600 |
| コードを保存する(1バイトあたり) | 200 | 1,530 |
| 出典:イーサリアム財団 料金改定で崩れる前提の一覧 ※保存場所はその取引で初めて触る場合。仕様が変われば値も変わる | ||
困るのは、すでに動いているコントラクトの一部だ。呼び出し先に渡すガスの量を、今の料金に合わせて固定したものがあり、料金が上がると、渡したガスが足りずに呼び出しが失敗するおそれがある。財団の資料によると、ガスの量を後から変えられないコントラクトは新しいコントラクトへの移行が必要になる。
財団は6日付のブログで、テストの過程で監査会社のChainSecurityが、改定後に脆弱になるプロジェクトをいくつか見つけたと説明した。
財団は改定で崩れる前提を8つにまとめて公開し、開発者や監査人に自分のプロジェクトが当てはまらないか確かめるよう求めている。よくある例は、残高がゼロの相手へのトークン送金だ。今は6万5,000ガスで足りる送金に、15万ガス超が必要になりうるという。
既存の料金を据え置く案と、メーター2本の案
- 開発者のLeo Glisic氏の案(EIP-8488):アップグレード後に作るコントラクトは、新料金の命令(V2)だけで書く。既存のコントラクトは今の料金のまま動き続ける
- 開発者のGiulio Rebuffo氏の案(番号は未付与):取引ごとにガスのメーターを2本持つ。コントラクトの動作は古い料金表のメーターで決め、利用者が払う手数料は新しい料金表のメーターで計算する
Glisic氏は、改定を一律に当てはめれば既存のコントラクトが壊れるおそれがあり、見送ればデータの増加を抑える仕組みも遅れるとして、3つ目の選択肢と位置づける。ブロックのガス上限の引き上げはまず一部にとどめ、新料金の処理が増え、データの増え方が許容範囲にとどまれば進めるという。
Rebuffo氏の文書はグラムステルダムに触れず、料金を改定しても既存のコントラクトの動作を変えないことを目的に掲げる。新しい料金表のメーターが尽きると、古い方に残りがあっても取引全体を中止し、利用者は取引に設定したガス上限分の手数料を払う。成功していた取引が止まりうることも認めている。
Rebuffo氏の提出文によると、ノードのソフトへの実装も、ソフト間で結果が一致するかの検証もまだ行っていない。どの料金表を使うかも、今後決めるとしている。
Hoodiでの実施は延期、メインネットは未定
グラムステルダムは10月6日にテストネット「セポリア」で有効になった。次のテストネット「Hoodi」で予定していた10月27日2時42分(日本時間)の実施は、開発者会議が延期を決め、財団が10月22日付で発表した。EIP-8037とメインネット上のコントラクトの関係を調べるためで、新日程は未定だ。
財団はChainSecurityとDedaubに監査を依頼し、内部の監査も進める。何が壊れうるか、仕様の変更で防げるかを見極め、今後の開発者会議での判断につなげるとしている。
メインネットでの実施日は決まっていない。2人の提案は、いずれも下書きの段階にある。
