1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ERC 4337: account abstractionとは何か_勉強会資料

Last updated at Posted at 2023-03-06

はじめに

先週、ERC4337: account abstraction (AA)がmainnetにdeployされたことで、
ERC-4337トークン標準が利用可能となりました。
ETHDenverで開催されたWalletConで、Ethereum FoundationのYoav Weiss氏によって発表されました。

“The next billion users are not going to write 12 words on a piece of paper. Normal people don’t do that” (次の 10 億人のユーザーは、1 枚の紙に 12 語を書くことはありません。普通の人はそんなことはしません)

と述べられたように、「アカウントの抽象化」や「スマートアカウント」とも呼ばれるテクノロジーによって標準のスマートフォンのセキュリティモジュールに固有の暗号化キーを入れることで、複雑なシードフレーズを記録する必要がなくなります。

これまでも、秘密鍵の流出によって資産が失われるなどの被害が起きてきましたが、これらの応用によって、FIDOなどの生体認証ベースの認証技術と連携させた2要素認証 (2FA) や
信頼できるグループ内のソーシャルリカバリなどへの応用が期待されています。

EOAとAA

AA は Ethereum デベロッパーの長年の夢であり、Vitalik氏が2016年頃から実現に向けて取り組んできました。
https://notes.ethereum.org/@vbuterin/account_abstraction_roadmap
コントラクトをdeployしてみると、すぐに理解できますが、Ethereum のアカウントは下記のように2種類存在します。

名前 詳細
EOA 外部所有アカウント、Metamaskなどで作ったアカウント
CA ContractAccount、Contractをdeployすることで作成されたAccount。PKはない。

Ethereumにおいてトランザクションの起点となれるのはEOAのみとなっていますが、理由は、「トランザクションは、EOA による ECDSA 電子署名を基準にした検証をパスしないとブロックに含めることができない」とプロトコルとして規定されているからです
署名方式はECDSAで、楕円曲線はspec256k1のみで回避することはできません。

AAは、Account abstraction (AA) allows a contract to be the top-level account that pays fees and starts transaction execution.
と定義されていますが、「コントラクトを最上位アカウント(トランザクションの起点、つまり手数料を支払うことができるアカウント)にすること」 です。

Abstraction(抽象化)という名前の所以(ゆえん)とEntory Point Contract

今回の変更の実態はあくまで、コントラクトの追加であり、プロトコル自体が変わるわけではないので、ECDSAは残り続けています。

ERC-4337 ( Account Abstraction via Entry Point Contract specification ) は、エントリ ポイント コントラクト(https://etherscan.io/address/0x0576a174D229E3cFA37253523E645A78A0C91B57#code
) を使用することで、Ethereum自体のprotocolを変更せず実現することを目的とした仕様となります。アップグレード自体は、スマートコントラクトの追加によって行われており、
https://notes.ethereum.org/@vbuterin/account_abstraction_roadmap#Transaction-inclusion-lists
全てのEVM互換のある場所であればどこからでも利用できるようになっています。

ではどのようにして、トランザクションの身元を確認するのかというと、
具体的な検証や処理はEntryPointContractというコントラクトが行うことになっています。

1.UserがUserOperationを作成する

詳細はこちら... > コントラクトWalletや署名などが含まれている

2.BundlerがUserOperationを束ねる

3.BundlerがUserOperationをトランザクションにする

4.トランザクションがEntryPointのコントラクトを経由してblockに入る

スクリーンショット 2023-03-03 14.19.06.png

引用元 https://notes.ethereum.org/@vbuterin/account_abstraction_roadmap

実装を試してみる

EIPの実装自体はこちらのリポジトリにあります
https://github.com/eth-infinitism/account-abstraction

AAを実装するにおいて、stackupというSDKが使いやすいようなので、こちらを試してみました。
https://www.stackup.sh/pricing

1.png

git clone git@github.com:stackup-wallet/erc-4337-examples.git

yarn install

//config.jsonが作成される
yarn run init

2.png

BunderURLにコピーする
3.png

//アドレスを取得する
yarn run simpleAccount:address

Conclusion

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?