上昇中のイーサリアム: EIP-1559 の後の EIP-3074
Ropsten テストネットは 6 月 24 日に開始され、ブロック高さは 10,499,401 でした。
導入以来、1 億 7,760 万ドル相当の約 88,500 のテストネット イーサが焼かれました。
Eth2 のローンチとほぼ同時期に、2 億ドル相当の 100,000 ETH が Eth2 のステーキング契約に入金されました。
大いに期待されていたイーサリアム改善提案 EIP-1559 が、イーサリアムの今後のロンドンアップグレードに向けて、ついに Ropsten テストネットに導入されました。数日前、ロンドンのハードフォークにおける 3 つのイーサリアム テストネットの開始日が発表されました。イーサリアムコア開発者のティム・ベイコ氏は、Ropsten、Goerli、Rinkeby テストネットのブロック高さが決定されたと発表した。ロプステンの高さは 10499401 で、6 月 24 日に打ち上げられました。一方、ゲルリ氏は6月30日、リンケビ氏は7月7日となる。
EIP-1559 の書き込みメカニズムはトークンの価格に利益をもたらす可能性があります
ロンドンのハードフォークには 5 つのイーサリアム改善提案がありますが、EIP-1559 がすべての注目を集めました。新しいアップグレードでは、ネットワーク上のトランザクション手数料が消費されることが予想されます。 EIP-1559 追跡サイト Watch the Burn によると、Ropsten テストネットがロンドンでアップグレードされて以来、約 88,500 個のテストネット イーサ (1 億 7,760 万ドル相当) が焼き付けられました。しかし、EIP-1559によって大量のイーサリアムが燃やされたことで、Eth2オーバーホールデフレの議論が再燃しました。エーテルは、燃焼メカニズムにより、循環供給よりも速く燃焼します。これはETHの価格にとって非常に有益となる可能性があります。
EIP-1559 の後、コミュニティはセキュリティ問題に対処することを目的とした EIP-3074 に焦点を当てました。
ただし、イーサリアム コミュニティが注目している EIP は EIP-1559 だけではありません。 EIP-3074 は、アップグレードにおいてコミュニティによって非常に期待されているもう 1 つの改善提案です。デビッド・ミハル氏と彼のツイートによると、イーサリアムが見落としてきた主要なセキュリティ問題の1つはERC20の承認だという。同氏は、ERC777を推進しており、これを修正する唯一のチャンスはEIP-3074であると付け加えた。イーサリアムの改善案では、ユーザーが単一のトランザクションで転送の承認、アクションの実行、承認の取り消しを行えるようになります。
以前、イーサリアム開発者らは、EIP-1559はガスコストを削減するように設計されていないと指摘していましたが、多くの人は今でも、この提案が間違いなくガスコストを大幅に削減すると信じています。これにより鉱山労働者の収入が50%減少し、「鉱山労働者の反乱」が起こる可能性もあったが、最終的には失敗に終わった。それにもかかわらず、ロンドンでのアップグレードはイーサリアムの強気傾向を後押しすると予想されます。著名な暗号化アナリストのCryptoQuant氏は、Eth2の立ち上げとほぼ同時期に、2億ドル相当の10万イーサリアムがEth2のプレッジ契約に入金されたと指摘した。現在、ETH供給量の5%以上、約117億5,000万ドル相当がロックされています。
EIP-3074とは何ですか?
トークンをスマート コントラクトに送信する場合、通常は 2 つのトランザクションを実行する必要があります。最初のトランザクション承認はトークンを使用するコントラクトであり、2 番目のトランザクションはトークンをコントラクトに送信する transferFrom です。
EIP-3074 は、スマート コントラクトが外部所有のアカウント (EOA、または単に通常のイーサリアム アドレス) でトランザクションを送信する方法を導入することで問題を解決します。
この EIP では、AUTH と AUTHCALL という 2 つの EVM 命令が導入されています。 1 つ目は、ECDSA ベースの署名の *authorized* コンテキスト変数を設定します。 2 つ目は呼び出しを *承認済み* として送信します。これは基本的に、EOA の制御を [a] スマート コントラクトに委任します。
AUTH および AUTHCALL EVM 命令 (オペコードとも呼ばれる) を使用すると、スマート コントラクトは署名されたメッセージに基づいて EOA を承認し、その EOA からトランザクション (「呼び出し」) を送信できます。これにより、次のような多くの可能性が広がります。
スポンサー付きトランザクション (メタ トランザクションとも呼ばれます): 別のアカウントからトランザクションのガスを支払います。これにより、イーサを持たないアドレスからトークンを送信することも可能になります。
バッチ トランザクション: 1 回の呼び出しで複数のトランザクションを送信します。これにより、2 つ以上のトランザクションが同じブロックで実行されることが保証され、トランザクション手数料も削減されます。
ユーザー エクスペリエンス (UX) の向上: たとえば、単一のトランザクション内でapproveとtransferFromを呼び出すことができます。
副題
AUTH および AUTHCALL オペコード
EIP-3074 では、スマート コントラクトから呼び出すことができる 2 つの新しいオペコードが定義されています。
AUTH (0xf6) - 署名とコミットに基づいて、外部所有のアカウントを承認します。コミットおよび署名 yParity、r、s の 4 つの入力パラメータを受け入れます。
AUTHCALL (0xf7) - 許可された EOA コンテキストで呼び出し (トランザクション) を送信します。 8 つの入力パラメータ (gas、addr、value、valueExt、argsOffset、argsLength、retOffset、retLength) を受け入れます。これは既存の CALL オペコードに似ています。
EOA を承認するには、その EOA からの署名付きメッセージが必要です。 AUTH を呼び出すスマート コントラクトは、メッセージ署名から署名者を回復し、メッセージ署名を承認された EVM コンテキスト変数に設定できます。これで、スマート コントラクトが AUTHCALL を呼び出すたびに、呼び出し元には承認されたアドレスが設定されます。呼び出されたスマート コントラクトが CALLER を呼び出す場合 (たとえば、Solidity の msg.sender 経由)、これは呼び出しを実行したスマート コントラクトの呼び出し元のアドレスではなく、EOA を承認するアドレスになります。
1 つ以上のトランザクションを送信する基本的なフローは次のとおりです。
呼び出し側コントラクトが複数のトランザクションを送信する基本的な EIP-3074 フロー。
EOA 署名承認情報。
EOA または他のガス支払者は、トランザクション データと認証情報を発信者契約に送信します。
呼び出し側コントラクトは、AUTH を使用して承認を実行し、AUTHCALL を使用してトランザクションを送信します。
副題
認可メッセージとコミット
画像の説明
(注: || はバイト連結演算子として使用されます)
画像の説明
承認メッセージの形式(送信可能な例を含む)
コミットは、EOA がコミットするオブジェクトを記述し、呼び出しの特定の属性 (アドレス、値など) に基づいて計算できます。呼び出し側コントラクトは、提供されたプロパティに基づいて送信を再計算でき、それらのフィールドが正しい場合、承認が実行されます。
たとえば、次のトランザクション (JSON として表される) を送信するとします。
これらのフィールドをハッシュし (たとえば、決定論的な方法でフィールドを連結したり、EIP-712 などを使用したり)、それをコミットとして使用できます。
この JSON データに示されているように、スマート コントラクトで送信されるトランザクションと承認メッセージの署名を提供できます。コントラクト関数は次のようになります。
スマート コントラクトはコミット トランザクションを再計算し、このコミットを (署名とともに) AUTH 呼び出しに提供します。これにより、署名者のアドレスの回復が試みられますが、コミットが無効な場合は、間違ったアドレスが署名から回復され、トランザクションは失敗します。
文章
制限とセキュリティの問題
EIP-3074 は署名に基づいて CALLER を変更することができ、これにより EVM の動作方法が大幅に変わります。これにより、新規および既存の契約に潜在的な脆弱性が生じる可能性があります。したがって、EIP-3074 が監査されます。
文章
弱いコミットおよびリプレイ攻撃
前述したように、EIP-3074 は提出用の標準化された形式を定義していません。呼び出し元は、希望する方法でこれを自由に実装できます。これは、呼び出し元が、(たとえば)リプレイ攻撃に対する適切な保護を提供する責任を単独で負うことを意味します。
コミットに何らかの nonce が含まれていない場合は、署名されたメッセージを取得して呼び出し元に再度送信するだけで済みます。悪意のある呼び出し元は、コミットをまったく検証しないことで、EOA の制御を取得する可能性があります。メッセージに署名するときは常に注意する必要があります。
EIP-3074 は、認証メッセージに発信者のアドレスを含めることにより、リプレイ攻撃に対する基本的な保護を備えています。これにより、ある呼び出し元の認証メッセージを別の呼び出し元で再生することができなくなります。
アップグレード可能な呼び出し元
EIP-3074 では、呼び出し元はアップグレード不可でなければならないと明示的に述べられています。コールアウトがアップグレード可能な場合、誰かがコミットを検証しない別のバージョンのコールアウトをデプロイし、コントラクトに EOA に対する完全な制御を与えることができます。
リエントランシー攻撃
現在、スマート コントラクトは、トランザクションが (別のコントラクトではなく) EOA から送信されたかどうかをチェックする require(tx.origin == msg.sender) を使用できます。これにより、コントラクトによる関数の呼び出しが防止されるため、再入を簡単に防止できます。
結論は
結論は
EIP-3074 は、イーサリアムに多くのエキサイティングな新しい可能性をもたらします。 AUTH と AUTHCALL を使用すると、EOA がアカウントの制御をスマート コントラクトの呼び出し元に委任できるようになり、バッチ トランザクション、スポンサー トランザクションなどを送信できるようになります。ただし、イーサリアムでのトランザクションの動作方法にいくつかの重要な変更がもたらされるため、メインネットで EIP-3074 をアクティブ化する前に、セキュリティについてさらに考慮する必要があります。


