- Home
- イーサリアム改善提案(EIP 2200)についての調査
イーサリアム改善提案(EIP 2200)についての調査
Ethereumの改善提案(EIP)についての調査結果をまとめる。
今回はGoEthereum(Geth)のv1.9.3に含まれるEIP2200(EVMのSLOAD命令のGASコスト変更に伴うSSTORE命令のGASコストの再調整)について調査する。(2019/09/20 現在)
参考:Ethereum Improvement Proposals 「EIP 2200: Rebalance net-metered SSTORE gas cost with consideration of SLOAD gas cost change」
要約
ネットメーターのSSTOREオペコード書き込みを変更して、SLOADと同じGASコストを常に持つようにする。SLOADのGASコストを考慮し、SSTOREの設定後の払い戻しを変更することへの提案。
変更の利点
SSTOREおよびSLOADのGASコストに一貫性を持たせ、GASコストの価格を適正にすることが可能となる。
仕様
以下の変数を定義し、EIP-1283とEIP-1706を組み合わせた新しい仕様に置き換える。
・SLOAD_GAS:200から800に変更。
・SSTORE_SET_GAS:20000(未変更)
・SSTORE_RESET_GAS:5000(未変更)
・SSTORE_CLEARS_SCHEDULE:15000(未変更)
- 現在の値が新しい値に等しい場合、OAD_GASが控除される。(ノーオペレーション)
- 現在の値が新しい値と等しくない場合
- 元の値が現在の値と等しい場合
- 元の値が0の場合、SSTORE_SET_GASが控除される。
- それ以外の場合、SSTORE_RESET_GASが控除される。新しい値が0の場合、SSTORE_CLEARS_SCHEDULE払い戻しカウンターにGASを追加する。
- 元の値が現在の値と等しくない場合、SLOAD_GASが控除される。
- 元の値が0でないの場合
- 現在の値が0の場合(新しい値≠0)、SSTORE_CLEARS_SCHEDULE払い戻しカウンターからGASを取り除く。
- 新しい値が0の場合(現在の値≠0)、SSTORE_CLEARS_SCHEDULE払い戻しカウンターにGASを追加する。
- 元の値が新しい値と同じ場合
- 元の値が0の場合、SSTORE_SET_GAS – SLOAD_GASを払戻しカウンターに追加する。
- それ以外の場合、SSTORE_RESET_GAS – SLOAD_GASを払い戻しカウンターに追加する。
- 元の値が0でないの場合
- 元の値が現在の値と等しい場合
- gasleftが2300以下の場合、例外「out of gas」で現在のコールフレームを失敗させる。
変更の根拠
EIP-1283の理論的根拠と同様。EIP-1884が適用される場合、SSTOREオペコードに関連するSLOAD_GASも変更する必要がある。
特記事項
特になし
ご相談・お見積もり
03-5207-2689