• Home
  • イーサリアム改善提案(EIP 1344)についての調査

イーサリアム改善提案(EIP 1344)についての調査

Ethereumの改善提案(EIP)についての調査結果をまとめる。
今回はGoEthereum(Geth)のv1.9.3に含まれるEIP1334(EVMにチェーンIDを返すオペコード-ChainIDの追加)について調査する。(2019/09/12 現在)

参考:Ethereum Improvement Proposals 「EIP 1344: ChainID opcode

要約

EVM(Ethereum Virtual Machine)に現在のチェーンIDを返すオペコード「ChainID」を追加することの提案。

変更の利点

EIP 155(シンプルなリプレイ攻撃からの保護)は、チェーンIDを使用して、異なるチェーン間のリプレイ攻撃を防ぐことを提案している。特にEIP 712(イーサリアム型構造化データのハッシュと署名)を使用するレイヤー2署名スキームの場合、スマートコントラクト内で同じ署名を使用することは大きな利点となる。

仕様

CHAINID0スタック引数を使用する0x46に新しいオペコードを追加する。現在のチェーンIDをスタックにプッシュする。G_base実行にかかる操作コストで、チェーンIDは256ビット。
現在のチェーンIDの値は、チェーンID構成から取得される。これは、クライアントが着信トランザクションから受け入れるEIP 155固有の識別子と一致する必要がある。EIP 155ごとに一意の識別子がある必要はないが、このシナリオでは、このオペコードはデフォルトではなく設定されたチェーンIDを返す。

変更の根拠

提案したオペコードを追加することで、EIP 712が抱える問題(ハードフォークの発生、資金の損失や署名されたメッセージに対するリプレイ攻撃など)を回避し署名を検証することが可能となる。
チェーンIDがメッセージの署名に使用される場合、プロトコルに重大な不安を引き起こす可能性がある。オペレーターがチェーンIDの更新を制御することを許可されていない場合、更新をブロック送信と完全に同期させることはできず、特定の過去のトランザクションは更新と一致しないため拒否される場合がある。
この提案されたオペコードは、この機能を実装するための最も簡単な方法であり、開発者は、必要に応じて、チェーンIDの変更の独自のグローバルまたはローカル処理を柔軟に実装できる。

特記事項

特になし

ご相談・お見積もり

03-5207-2689