💻

EIP-7702: Pectraでマージ予定の「EOAをスマートコントラクトウォレットのように扱う」提案とは?

2024/09/20に公開

はじめに

2024年現在、EIP-4337のAccount AbstractionによるSmart Contract Walletが勢いを増している。
そうなると次に考えられるのが、「EOAでも同じようにBatch Transactionなどを処理したい」という願望だ。

2025年に2回に分けて行われるEthereumのアップデートPectraには、この「EOAをスマートコントラクトウォレットのように扱う」提案であるEIP-7702が含まれる予定である。

しかしこのEIP-7702だが、実は2024年4月に作成されたばかりの新しい提案であり、元々はEIP-3074という提案が、同じ「EOAをスマートコントラクトウォレットのように扱う」仕組みを実現するためにマージされる予定であった。

ではなぜ、マージされる提案が、当初予定されていたEIP-3074から、EIP-7702に変更されたのだろうか?
2つの提案の違いを知ることでこの理由を理解し、EIP-7702の重要性を認識する。

EIP-3074とは?

EIP-3074の提案がされたのは2020年であり、長い間議論がされてきた。
https://eips.ethereum.org/EIPS/eip-3074

そして2024年4月、ついに次回のアップデートでマージされるとの噂が上がった。

EIP-3074の内容をまとめると、以下の図のようになる。

これによって、EOAが持っているERC20やERC721をガスレスで扱えるようになる。また、approveとtransferなどの複数アクションを1つのトランザクションで実行することもできる。
つまり「EOAをスマートコントラクトウォレットのように扱う」ことができるようになる。

EIP-3074のポイントは、AUTH, AUTHCALLという2つのopcodeを追加することで、EOAを直接msg.senderに設定できていること。

例えば、EIP-2771もガスレストランザクションでEOAのアセットを扱えるようにしていたが、EIP-2771はmsg.senderの代わりに_msgSender()を利用することで擬似的にEOAのアドレスを扱っていた。そのため、ERC20やERC721といったアセット側の実装にも手を入れて対応する必要があった。
https://docs.openzeppelin.com/contracts/4.x/api/metatx
https://eips.ethereum.org/EIPS/eip-2771

EIP-3074は、うまく「EOAをスマートコントラクトウォレットのように扱う」ことを実現しているように見える。ではなぜ、EIP-7702という新しい提案が生まれ、そちらがマージされることになったのであろうか?

EIP-7702

2024年5月7日、イーサリアム創業者のVitalikが、突如この「EOAをスマートコントラクトウォレットのように扱う」という同じ内容を実現するために、完全に新しいEIP-7702を提案した。
https://eips.ethereum.org/EIPS/eip-7702

なぜだろうか?

この理由は一言でいえば、「Account Abstraction(AA)の最終形である『NativeなAA』への移行コストを下げるため」である。

もう少し具体的にいうと以下のようになる。

Vitalikはなぜ、EIP-3074が次回のアップデートに含まれる話があるにも関わらず、EIP-7702を提案したのか?

Account Abstraction(AA)の最終系は、ブロックチェーン上でNativeに実現されるAAである。ただ、NativeなAAはプロトコルレベルでの変更が大きいので、今は段階的に実現していっている。なので、なるべくなら将来発生するNativeなAAへの移行コストを小さくしたい。

そんな中、EIP-3074は、「プロトコルレベルでの変更を必要としない擬似的なAAとして現在勢いを増しているERC-4337」のスマートコントラクトウォレットとは違う形式のコントラクトと開発エコシステムを生んでしまう設計になっている。
これだと最終的なNative AAへの移行コストが大きくなる。

そのため、ERC-4337と互換性がある形で「EOAをスマートコントラクトウォレットのように扱う」機能を実現したい。そのために提案されたのが、EIP-7702の方法だった。

まとめ

EIP-3074とEIP-7702は、どちらも「EOAをスマートコントラクトウォレットのように扱う」提案である。
しかし、EIP-3074はERC-4337との互換性がないため、EIP-7702が新しく提案され、次回のPectraアップデートに含まれることになった。

2020年から議論されてきたEIP-3074が、2024年に突如提案されたEIP-7702に置き換えられた事実は、この4年間の間にERC-4337の勢いが急激に増していることを意味している。また同時に、イーサリアムが最終的にNativeなAAを実現する方向に確実に向かっていることを表している。

お知らせ

Xではより高頻度にWeb3関連の情報を発信しています🔊
是非フォローをよろしくお願いします!
https://x.com/ryoheikomy

Discussion