
序文
この記事は、2つの主要なモジュールに分かれています。
2015年の最初のAA提案から始まる前半には、AAの歴史的提案の歴史を探求し、各計画の利点と欠点を包括的に評価することを望んで、これまでのEIP提案の主要な内容を体系的に整理します。
後半では、提案後にEIP4337が直面する市場の低迷のフィードバックを比較することに焦点を当て、Ethereumアップグレードの次のバージョンに含まれるEIP7702の詳細な分析を分析します。あらゆる面でチェーン上のアプリケーションフォームを変更します。
EIP-7702にはエポック作りの変更があります。14人の王を詳細に聞かせてください
1。アカウントの抽象的な背景
1.1アカウントの抽象意味の位置付け
Ethereumの創設者Vitalikは、2023年末にETH開発ロードマップを再び更新しましたが、アカウントの抽象化の設定は変更されていません。今日の主流モデルは、EIP-4337から自発的変換の次の段階(EOAアカウントの自発的変換)までです。
https://x.com/vitalikbuterin/status/1741190491578810445
EIP4337の発売から1年以上(2023.3.1、デンバーウォレットコン、2023.3.1、ERC-4337のコア契約は、Ethereum Foundationの開発者によって設計および実装されることが公式に発表され、Openzeppelinの監査に合格し、ノードの公式履歴と見なされます。
それは常にユーザーによって広く認識されてきましたが、このような矛盾した市場環境では、EIP-7702の進歩は大幅に進歩しており、次のアップグレードでそれに統合されることさえ確認されています。
1.2アカウント抽象市場の状況
多くを言う必要はありません。データを見てください。
1年半後、EIP4337は、主流のチェーンアカウントのコレクションの下で1200Wのアドレスしかありません。少なくともEOAやCAとは非常に異なるアドレスの数は、イーサリアムのメインネットワーク上の独立したアドレスの数が2億7,000万に達したことを知っている必要があります(https://etherscan.io/chart/address )。
メインネットワーク上のEIP4337には実質的な開発はないと言えます。
(チャートデータのソース:https://dune.com/niftytable/account-abstraction)
ただし、これはAAの本質的な値を消去しません。これは、EIP4337の設計の開始から運命づけられていたため、メインネットワークの深刻な順方向の互換性の問題を遂行できなかったためです。チェーンEIP4337のアドレスの数は一般にネイティブAAに埋め込まれており、EIP4337のアドレスの数はL2で爆発します。
したがって、EIP437は誤って設計されています。
2。アカウントの抽象化とは何ですか?
アカウントの抽象化は不可解に聞こえますが、実際、それは本質的に財産権の分離の問題を解決します。
EVMアーキテクチャ(Ethereum Virtual Machine)には、外部アカウント(EOA)と契約アカウント(契約アカウント)、および外部アカウントには2種類のアカウントがあります。所有そして署名権実際、同じユニットによって保持されています。所有秘密鍵その人は、このアカウントの「所有権」を所有するだけでなく、「すべての資産の署名譲渡」する権利も持っています。
これは、Ethereumアカウントのトランザクション構造によって決定されます
下の図の構造から、実際、Ethereumの標準的な取引があることがわかります。実際、FROMアドレスは、VRSパラメーター(つまり、ユーザー署名)を介して逆に解析されます。
これには、ECDSA、一方向のしきい値関数などの概念が含まれます。これを拡大するために使用されません。
EIP4337のコア効果は、操作されたアドレスから秘密キーを分離できるように、トランザクションフィールドに送信者アドレスフィールドを追加することです。
では、なぜ財産権の分離がそれほど重要なのでしょうか?
外部アカウント(EOA)設計はより多くの問題につながるためです。
-
プライベートキーを保護するのは困難です。ユーザーは、秘密鍵(紛失、ハッキング、暗号化されたひび割れ)を失い、すべての資産を失うことを意味します。
-
署名アルゴリズムはほとんどありません。ネイティブプロトコルは、検証トランザクションでECDSA署名および署名検証アルゴリズムのみを使用できます。
-
高い署名許可:ネイティブのマルチ署名はありません(スマートコントラクトによってのみ複数の署名を達成できます)。また、単一の署名によって任意の操作を実行できます。
-
取引手数料はETHを通じてのみ支払うことができ、バルクトランザクションをサポートしません。
-
トランザクションプライバシーブレイク:1対1のトランザクションは、アカウント所有者のプライバシー情報を簡単に分析できます。
アピールの制約により、通常のユーザーがEthereumを使用することが困難になります。
まず、Ethereumのアプリを使用すると、ユーザーはEtherを保持する必要があります(およびEther価格の変動のリスクを想定しています)。
第二に、ユーザーは複雑なコストロジックに対処する必要があり、ガス価格、ガス制限、およびトランザクションブロッキング(NonCE Order)の概念は、ユーザーにとって複雑すぎます。
最後に、多くのブロックチェーンウォレットやアプリケーションは、製品の最適化を通じてユーザーエクスペリエンスを改善しようとしますが、効果はほとんどありません。
したがって、デッドロックを破る方法は、上記の問題を1つずつ解決するために、アカウントの抽象化と分離所有権(所有者)と署名権(署名者)を実現することです。
実際、多くの歴史的計画があり、最終的には2つのルートに集まります。
3. AA歴史的提案のコンテキストを明確にします
問題の解決策については多くのEIP提案があるようですが、最終的な分析では、彼らが過去に承認されていない各EIPで考慮される2つのコアのアイデアです。現在の計画。
3.1最初のルートは、EOAアドレスをCAアドレスに変更することです
早くも2015年11月15日、Vitalikは、EIP-101周辺のアカウントとして契約を使用するための新しい構造を提案しました。アドレスをコードとストレージスペースのみに変更し、ERC20による取り扱い料金とサポートの支払いを変更し、ネイティブトークンを事前コンパイルされた契約を介してERC20に変更して、残高を節約し(控除承認などの機能を持つ場合があります)、トランザクションフィールドを合理化します。 to、startgas、データ、コード。
今では、それは大きな前進の変化であり、各アカウントアドレスに独自の「コード」ロジックがあるように、基礎となるデザインを大幅に変更するように思われます(実際、EIP-7702が今達成する必要がある効果です)。
また、などの他の機能を生成することもできます
-
トランザクションがより多くの暗号化アルゴリズムを使用し、各アドレスの内部コードで署名検証方法を指定できます。
-
コードにはアップグレードの特性があるため、抗二量体攻撃の特性があります。
-
Ethereumに、ERC20契約と一致する機能特性を持たせ、コア効果が承認されているため、ネイティブコインの損失が必要ありません。
-
社会的回復、SBTサポート、キーリカバリなどと互換性のあるアカウントのカスタムスペースを改善します。
前進し続けない理由も非常に単純です後続のEIP4337およびEIP7702のコア関数の1つになりました。
後で、このロジックを改善しようとしている一連のEIPがありました
EIP-859:メインチェーンアカウント抽象化-2018-01-30
コードの展開問題を解決しようとするコア関数は、トランザクションパーティ契約が展開されていない場合、トランザクション添付コードパラメーターを使用して契約ウォレットの展開が実行されることです。ガスを支払うことも、検証部分とトランザクションパラメーターの実行部品の間のセパレータになります。
当時は無駄に終了しましたが、これはEIP7702の各トランザクションのコアロジックの1つになりました。 。
EIP-7702:EOAアカウントコード2024-05-07のセットアップ
これは、後続の記事で説明したメカニズムの中心的なEIPでもあり、VitalikはEIP-3074(2024-05-07)の代替としてEIP-7702を公開しました。したがって、EIP-3074は廃止され、EIP-7702は、今後のETH Prague/Electra(Pectra)ハードフォークに含まれると判断されました。
3.2 2番目のルートは、EOAアドレスがCAアドレスを運転させることです
EIP-3074:追加認証
そしてauthcall
opcode-2020-10-15
EVMに2つの新しいオペコードを追加します認証
そしてauthcall
、EOAがこれらの2つのOPCODE承認契約を通じてEOAのIDの代わりに他の契約を呼び出すことを許可します。
以下の図に基づいて、EOAの要約は署名付きメッセージ(トランザクション)を送信できますあなたが信頼する契約(呼び出されます招待者
)これについて招待者
契約を使用できます認証
そしてauthcall
オペコードは、このEOAの代わりにこのトランザクションを送信するために使用されます。
EIP-4337:トランザクションメモリプールを使用して、アカウント抽象化-2021-09-29を実現します
要するに、彼はMEVに触発され、設計に触発され、その中核的な価値は、コンセンサスレイヤープロトコルの変更を完全に回避できることでした。
EIP4337は新しいトランザクションオブジェクトを提案しますユーザーオペレーション
、ユーザーはこのオブジェクトをメモリプールに送信します。バンドラー
マイナーの次元からのトランザクションを実行するためのバルクパッケージ配信契約は、基本的に基礎となるトランザクションとアカウント運用を実行のために契約レベルにもたらします。
EIP-5189:承認による抽象アカウントの運用—2022-06-29
これにより、EIP4337の論理が最適化され、悪意に直面していますバンドラー
資金の罰金のための承認者のメカニズムを確立することにより、DOSブロッキング攻撃を防ぎます。
3.3 AAをサポートするためのその他の提案
EIP-2718:新しいトランザクションタイプ-2020-06-13用の包装封筒
これは最終的な提案であり、新しいトランザクションタイプを将来の新しいトランザクションタイプの封筒として定義します。
最終的な効果は、新しいトランザクションタイプが導入されると、特定のエンコードによって区別されるため、順方向の互換性がない後方互換のみが必要です。最も一般的な例は、EIP1559です。トランザクション料金を区別し、初期のレガシートランザクションタイプに影響を与えることなく新しいトランザクションタイプを使用します。
EIP-3607:letEOA
住所は契約-2021-06-10を展開することはできません
これは、EOAアドレスと矛盾する契約展開アドレスの問題を防ぐためのAAパスに関する補足ソリューションです。契約生成方法を制御して、システムがすでにEOAアドレスであるアドレスにコードを展開することを許可しないようにします。このリスクは、結局のところ、160ビットの長さです。ビットコインの電力投資。
3.4アカウントの抽象的な開発履歴を理解する方法は?
まず第一に、CAに変換した後、価値を理解する必要があります
基本的に、それはEIP-4337の実際の効果であり、達成できます
ただし、EIP-4337の中心的な欠点は、人間の動機付けの原則に違反することです。
それはより良いようですが、それは市場開発の悪循環に閉じ込められているため、ユーザーはCAアドレスを使用する意思がなく、CASの使用でさえ、通常の転送シナリオもあります。 CASを使用するには)。これは、DAPP自体の互換性にも大きく依存します。
そのため、これまでのところ、Ethereumメインネットワークでは普及していません。
コストはユーザーにとって最も重要な尺度であり、コストを削減する必要があります。
ただし、イーサリアム自体は、ソフトフォークをアップグレードしたり、ガスの計算やその他のモジュールを修正したり、OPCODEを変更したりする必要があります。
4。EIP-7702の包括的な分析
4.1 EIP-7702とは何ですか
新しいトランザクションタイプによってそれを区別し、EOAが単一のトランザクションでスマートコントラクトの機能を一時的に持つことができるため、新しいEVMオプコードを導入する必要なく、ビジネスでのバッチトランザクション、ガスのないトランザクション、カスタム許可管理をサポートします(影響は影響します。フォワード互換性)。
ユーザーは、スマートコントラクトを展開せずにAAの機能のほとんどを取得でき、ユーザーに代わってトランザクションを開始するためのサードパーティの機能を提供することもできます。
4.2データ構造
新しいトランザクションタイプ0x04を定義し、このトランザクションタイプのトランザクションペイロードは、次のコンテンツのシリアル化結果をエンコードするRLPです
重要なのは、署名者がEOAで実行するコードを保存するために追加されることです複数の操作情報をバッチに保存できます。
4.3トランザクションライフサイクル
4.3.1検証フェーズ
トランザクション実行の開始時に、各authorization_listについて[Chain_id、address、nonce、y_parity、r、s]
タプル:
-
ERECOVERを使用して、署名者アドレスを署名RとSから復元します(これはイーサリアム自体のメカニズムであるため、このEIPは署名アルゴリズムを変更しません)。
authorid = ecrecover(keccak(magic || rlp([chain_id、address、nonce]))、y_parity、r、s]
(FROMアドレスを取得するための以前の除去と同様に、このリストのローカル署名アドレスが取得されます) -
チェーンID(アンチフォークチェーンリプレイ)を確認します。
-
確認する
権限
署名者のコードが空であるか、委任されているかどうか(トランザクションが有効な7702トランザクションであるかどうかを確認し、トランザクションは将来の委任メカニズムを通じて実行されるかどうかを確認します)。 -
確認する
権限
署名者のノンセ(防衛権限
署名再生)。 -
設定
権限
署名者のコードはです0XEF0100 ||
(EIP3607衝突防止戦略をバイパスするために使用) -
増加
権限
署名者のノンセ(ローカル署名のリプレイを防止)。 -
意思
権限
署名者アカウントをアクセスしたアドレスリストに追加します(ホットアドレスを交換し、クエリストレージのガス料金を削減します)
4.3.2実行操作フェーズ
実行される契約コードと操作指示はどこにありますか?
「新しい」バージョンは、コード展開の観点から動作のみを変更します。
アカウントコードをに設定しなくなりましたcontract_code
、しかしからauthorization_list
コードを検索します住所
コードをアカウントコードとして設定します。
したがって、承認コードを実行する必要がある場合、authorization_list
の住所
フィールドで指定されたアドレスは、コードをロードし、署名者アカウントのコンテキストで実行されます。
これは、ユーザーの契約コードが実際にトランザクションに直接含まれるのではなく、チェーン上の特定のアドレスに保存されることを意味します。
操作手順と関連パラメーターは、トランザクション負荷に保存されますデータ
フィールドで。
4.4 EIP-7702の価値は何ですか?
Web3ウォレットの彼の完全なリンクは変更され、ユーザーエクスペリエンスも劇的に変更されます。これは、EOAによって開始された通常のトランザクションがバッチ転送などの契約と同様の複数のロジックを実行することもできるためです。CEFIシナリオの場合、それはトランザクションの識別に影響し、引き出し徴収料にも影響します
その外観のため、以前の星座の多くが壊れています。
-
アカウントの残高は、そのアカウントから発信されるトランザクションによってのみ削減できる不変を破ります。
-
トランザクションの実行が開始された後、EOA Nonceが1(おそらく同時に複数の場合)増加する不変性を破ります。
-
Tx.originとMsg.senderの比較の保護論理を破ると、多くの過去の契約が危険です。
-
EOA自体がイベントを発行できないという現在の状況を破り、いくつかのオンチェーンイベントの識別とリスニングに注意を払う必要があるかもしれません。
-
EOAが対処する現在の状況を破ることは、必然的にERC20、721、1155およびその他の資産を受け入れることに成功します(コールバックメカニズムのため、失敗する可能性があります)
4.5 EIP-7702とEIP-4337の比較
1。EIP-7702の利点
エントリポイントモジュールを通過する必要がないため、ガスは低くなり、チェーン操作を削減します。
ユーザーの移行コストは低く、メインボディとして事前にチェーン契約を展開する必要はありません
EIP4337と比較して、コード委任実行もあり、次の2つの方法があります。
完全な代表団
完全な代表者とは、操作のすべての許可を特定のアドレスに委任することを指します。たとえば、ユーザーはすべてのERC-20トークンの管理権限をスマートコントラクトアドレスに委任できるため、このスマートコントラクトはユーザーに代わってすべての関連操作を実行できます。
保護された委任
保護された委任とは、委任作業の安全性と制御性を確保するために、委任プロセスにいくつかの制限と保護対策を追加することを指します。
たとえば、ユーザーは、ERC-20トークンの一部のみの管理権限をスマートコントラクトに委任するか、いくつかの制限を設定できます(1日あたりの総残高の最大1%を費やすなど)。
2。EIP-7702の短所
彼の中心的な不利な点は、それがソフトフォークのアップグレードであり、これは全員のコンセンサスと昇進を必要とし、14の領主の予備的な評価に大きな影響を与える大きな変化がありますが、次の課題があります。課題は市場の機会です:
-
自由度は非常に高く、ユーザーを監査するのが困難です。
-
元のアーキテクチャはあまりにも大きく変化していますが、さまざまなトランザクションタイプによって区別されていますが、多くのインフラストラクチャ、特にチェーンで変更できない契約は直接適合できません。
-
EOAアドレスには契約機能が提供されますが、対応するストレージスペースは保持できません。
-
CallData部品が大幅に増加するため、個別のトランザクションのコストはわずかに増加し、推定コールの総コストは
16(ガス) * 15(バイト)= 240
(ガス)CallDataコストに加えて、EIP-3860コスト2 * 15 = 30
、さらにランタイムコスト150
。したがって、アカウントを準備して何もしないだけで、500ガスを追加する必要があります。 -
「受信者が受信機能なしでコードに署名した場合、送信者は資産を送信しようとするときにDOSに直面する可能性があります。」問題は、EOAが署名すべきではない何かに署名することです。
受け取る()
)再生可能なファイル。 -
たとえば、ERC-20トークンを転送する場合、受信者のアカウントにコードがある場合、トークン契約が呼び出されます。
onerc20received
受信者のアカウント。もしonerc20received
間違った値を復元または返すと、トークン転送が復元されます。 -
また、EOAがイベントを発行できる場合、問題はありますか?一部のインフラストラクチャには注意が必要な場合があります。
これらは、現在のEIP7702の提案コンテンツと、最終的には最終的に分析するための最終的な実装コードに基づいていることに基づいて、14 junによって要約されたいくつかの欠点です。
参照は次のとおりです。
5。フルテキストの概要
この記事は壮大なようですが、実際には、テキストの内容は6k以上の単語です。
現在、アカウントの抽象化は、6番目のモジュールにのみ配置できます。つまり、最終的に実装されています結局、彼はそれを実装すると予想されます。
しかし、今回はあまりにも多くの転覆があり、複数のチェーンの不可能な暗黙のルールを破り、ほとんどのDappのアプリケーションロジックを破りましたが、それが最も核となるポイントを占めていました。つまり、ユーザーのコストは現在低くなっています!EIP4337のほぼ2倍の取引コストと比較してください。
ユーザー自体は依然としてEOAアドレスであり、必要に応じてCAロジックのみを駆動および使用するため、保有コストは低くなります。操作を行う前に、最初にオンチェーンCAのIDを変換する必要はありません。つまり、ユーザーは登録する必要はありません。
ユーザーは、EOAを簡単に使用して、控除や実行控除など、DAPPの取引コストを削減しますより破壊的で最適化されます。
したがって、彼は大きく変化しましたが、すべてのDappsに勉強して適応する価値があります。今回は、ユーザーがEIP7702の側にいる必要があるためです。