見出し画像

[web3探訪]アカウントアブストラクションについて

この記事は社員メンバーに向けてアカウントアブストラクションについて理解を深めてもらうための記事です。

アカウントアブストラクションはイーサリアムブロックチェーンにおけるトランザクションの送信や実行をするときに必要なアカウントを抽象化することを指す。

これまでのウォレットを使ったWeb3の体験では秘密鍵の紛失リスクが存在した。

そもそもイーサリアムにおけるアカウント

イーサリアムには2種類のアカウントが存在する。
・外部所有アカウント
・コントラクトアカウント

前者はユーザーが所有するアカウントで、従来(というか一般的にイメージされる)アカウントで、ETHの残高やナンス、アドレスなどが紐づいている。

(ナンスとはトランザクションが一意であることを保証するもので、トランザクションを送信するたびに+1されていく。トランザクションを送信するときにその時点でのナンスがトランザクションにも渡されるので、そのアカウントが同じナンスのトランザクションを複数送信するということはあり得ない。)

アカウントアブストラクションとは、上記のアカウントをトランザクションの検証を行うロジックを持つスマートコントラクトに変えることができます。

そもそもトランザクションを送信する仕組み

トランザクションを送信して処理が実行されるまでに、イーサリアムでは認可の仕組が動作している。それは以下のような流れになっている。

①送信者が自身の秘密鍵でトランザクションのデータ(例えばETHを受信者に送信するような)を丸ごと署名する。
②このとき、署名したトランザクションのデータ(未署名の状態のトランザクションのデータと署名を含んだ形式で)が渡される
③EVMは送信者の公開鍵でデータが改ざんされていないかを検証する。
④トランザクションのナンスと送信者のアカウントのナンスが一致するかを検証する。
⑤トランザクションを実行し、トランザクション手数料(ガス代)をアカウントの残高から差し引く。

③、④の検証のロジックはEVMにハードコードされていたものだった。しかし、先のコントラクトアカウントという仕組を用いることでアカウントアブストラクションができるようになった。

アカウントアブストラクションでは上記の認可のプロセスをプログラムすることができる。よって、認可のロジックを先の例からカスタマイズすることができる。

アカウントアブストラクションのメリット

・秘密鍵紛失リスクの低減
秘密鍵の署名による検証とがちがちに結合していた認可のロジックがカスタマイズできるので、秘密鍵をユーザーが持つ必要がなくなり、仮にアカウントに入れなくなったとしても復元が可能。(通常のWebサービスのように利用することができる)

・ソーシャルログイン
一般的なWebサービスのようにソーシャルログインがウォレットに実装できる。ソーシャルログインがされているなどの条件で認可のロジックを通せば、一般的なサービスと同様の体験でWeb3サービスを利用できる。

・署名方式を変更可能
公開鍵からは秘密鍵は作成できないというのが定説ですが、量子コンピュータによって秘密鍵が解読されてしまうという話があるので、それの対策として、より強固な署名方式を利用できる。(イーサリアムではECDSAと決まっている。)

参考:
https://medium.com/@bluesky-aozora/account-abstraction-%E3%82%A2%E3%82%AB%E3%82%A6%E3%83%B3%E3%83%88%E6%8A%BD%E8%B1%A1%E5%8C%96-%E3%81%A8%E3%81%AF-9fa34a5de876


この記事が気に入ったらサポートをしてみませんか?