メインコンテンツまでスキップ

「EIP-7702」タグの記事が3件件あります

EIP-7702 と Ethereum の改善

すべてのタグを見る

Pectra後のEIP-7702:Ethereum アプリ開発者のための実践的プレイブック

· 約12分
Dora Noda
Software Engineer

2025年5月7日、EthereumのPectraアップグレード(Prague + Electra)がメインネットにリリースされました。開発者にとって最も目に見える変更の一つがEIP-7702で、これは外部所有アカウント(EOA)が資金を移行したりアドレスを変更したりすることなく、スマートコントラクトロジックを「マウント」できるようにします。ウォレット、dapp、リレイヤーを構築している場合、これはスマートアカウントUXへのより簡単な道筋を提供します。

以下は実装重視の簡潔なガイドです:実際に出荷されたもの、7702がどのように動作するか、純粋なERC-4337よりもいつ選択するべきか、そして今日適用できるコピー&ペースト可能なスカフォールド。


実際に出荷されたもの

  • EIP-7702はPectraの最終範囲に含まれています。 Pectraハードフォークのメタ-EIPは、含まれる変更の中に7702を正式にリストしています。
  • アクティベーション詳細: Pectraは2025年5月7日のエポック364032でメインネット上でアクティベートされ、すべての主要テストネットでの成功したアクティベーションに続きました。
  • ツールチェーン注記: Solidity v0.8.30は、Pectra互換性のためにデフォルトEVMターゲットをpragueに更新しました。コンパイラとCIパイプラインをアップグレードする必要があります、特に特定のバージョンを固定している場合。

EIP-7702—どのように動作するか(詳細)

EIP-7702は新しいトランザクションタイプと、EOAがその実行ロジックをスマートコントラクトに委任するメカニズムを導入します。

  • 新しいトランザクションタイプ(0x04): タイプ4トランザクションにはauthorization_listという新しいフィールドが含まれます。このリストには一つ以上の認証タプル—(chain_id, address, nonce, y_parity, r, s)—が含まれ、それぞれEOAの秘密鍵で署名されています。このトランザクションが処理されると、プロトコルはEOAのコードフィールドに委任インジケーターを書き込みます:0xef0100 || address。それ以降、EOAへのすべての呼び出しは指定されたaddress実装)にプロキシされますが、EOAのストレージとバランスコンテキスト内で実行されます。この委任は明示的に変更されるまで有効です。
  • チェーンスコープ: 認証はchain_idを提供することでチェーン固有にできるか、chain_id0に設定されている場合はすべてのチェーンに適用できます。これにより、ユーザーが各チェーンに対して新しい認証に署名することなく、同じ実装コントラクトを複数のネットワークにデプロイできます。
  • 取り消し: EOAを元の非プログラマブル動作に戻すには、実装addressゼロアドレスに設定された別の7702トランザクションを送信するだけです。これにより委任インジケーターがクリアされます。
  • セルフスポンサード vs. リレー: EOA自身がタイプ4トランザクションを送信することも、サードパーティのリレイヤーがEOAの代わりに送信することもできます。後者はガスレスユーザーエクスペリエンスを作成するために一般的です。nonceハンドリングは方法によって若干異なるため、この区別を正しく管理するライブラリを使用することが重要です。

セキュリティモデルの変化: 元のEOA秘密鍵がまだ存在するため、新しい7702トランザクションを送信して委任を変更することで、常にスマートコントラクトルール(ソーシャルリカバリーや支出制限など)を上書きできます。これは根本的な変化です。tx.originを使用してEOAからの呼び出しであることを確認するコントラクトは再監査が必要です、7702がこれらの前提を破る可能性があるためです。フローを適切に監査してください。


7702かERC-4337か?(そして組み合わせるべき時)

EIP-7702とERC-4337の両方がアカウント抽象化を可能にしますが、異なるニーズに対応します。

  • EIP-7702を選ぶべき時…
    • ユーザーに資金を移行させたりアドレスを変更させることなく、既存のEOAに即座のスマートアカウントUXを提供したい場合。
    • 新機能で段階的にアップグレードできるチェーン間での一貫したアドレスが必要な場合。
    • アカウント抽象化への移行を段階的に進めたい場合、シンプルな機能から始めて時間をかけて複雑さを追加する。
  • 純粋なERC-4337を選ぶべき時…
    • 製品が完全なプログラマビリティと複雑なポリシーエンジン(マルチシグ、高度な回復など)を最初から必要とする場合。
    • 既存のEOAを持たない新しいユーザー向けに構築している場合、新しいスマートアカウントアドレスと関連する設定が受け入れられる。
  • 両方を組み合わせる: 最も強力なパターンは両方を使用することです。EOAは7702トランザクションを使用してERC-4337ウォレット実装をそのロジックとして指定できます。これによりEOAは4337アカウントのように動作し、既存の4337インフラストラクチャによってバンドル、ペイマスターによるスポンサー、処理が可能になります—すべてユーザーが新しいアドレスを必要とすることなく。これはEIPの著者によって明示的に推奨される前方互換パスです。

適用可能な最小限の7702スカフォールド

実装コントラクトとそれを有効化するクライアントサイドコードの実用的な例を以下に示します。

1. 小さく監査可能な実装コントラクト

このコントラクトコードは指定されるとEOAのコンテキスト内で実行されます。小さく監査可能に保ち、アップグレードメカニズムの追加を検討してください。

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;

/// @notice EIP-7702で指定された時にEOAコンテキストから呼び出しを実行します。
contract DelegatedAccount {
// 他のコントラクトとの衝突を避けるためのユニークなストレージスロット。
bytes32 private constant INIT_SLOT =
0x3fb93b3d3dcd1d1f4b4a1a8db6f4c5d55a1b7f9ac01dfe8e53b1b0f35f0c1a01;

event Initialized(address indexed account);
event Executed(address indexed to, uint256 value, bytes data, bytes result);

modifier onlyEOA() {
// オプション:特定の関数を呼び出せるユーザーを制限するチェックを追加。
_;
}

function initialize() external payable onlyEOA {
// EOAのストレージにシンプルなワンタイム初期化フラグを設定。
bytes32 slot = INIT_SLOT;
assembly {
if iszero(iszero(sload(slot))) { revert(0, 0) } // すでに初期化済みの場合はrevert
sstore(slot, 1)
}
emit Initialized(address(this));
}

function execute(address to, uint256 value, bytes calldata data)
external
payable
onlyEOA
returns (bytes memory result)
{
(bool ok, bytes memory ret) = to.call{value: value}(data);
require(ok, "CALL_FAILED");
emit Executed(to, value, data, ret);
return ret;
}

function executeBatch(address[] calldata to, uint256[] calldata value, bytes[] calldata data)
external
payable
onlyEOA
{
uint256 n = to.length;
require(n == value.length && n == data.length, "LENGTH_MISMATCH");
for (uint256 i = 0; i < n; i++) {
(bool ok, ) = to[i].call{value: value[i]}(data[i]);
require(ok, "CALL_FAILED");
}
}
}

2. viemでEOAにコントラクトを指定(タイプ4 tx)

viemのような現代的なクライアントは、認証に署名してタイプ4トランザクションを送信する組み込みヘルパーを持っています。この例では、relayerアカウントがeoaをアップグレードするためのガスを支払います。

import { createWalletClient, http, encodeFunctionData } from "viem";
import { sepolia } from "viem/chains";
import { privateKeyToAccount } from "viem/accounts";
import { abi, implementationAddress } from "./DelegatedAccountABI";

// 1. リレイヤー(ガススポンサー)とアップグレードされるEOAを定義
const relayer = privateKeyToAccount(process.env.RELAYER_PK as `0x${string}`);
const eoa = privateKeyToAccount(process.env.EOA_PK as `0x${string}`);

const client = createWalletClient({
account: relayer,
chain: sepolia,
transport: http(),
});

// 2. EOAが実装コントラクトを指す認証に署名
const authorization = await client.signAuthorization({
account: eoa,
contractAddress: implementationAddress,
// EOA自身がこれを送信する場合は追加:executor: 'self'
});

// 3. リレイヤーがタイプ4トランザクションを送信してEOAのコードを設定し、initialize()を呼び出す
const hash = await client.sendTransaction({
to: eoa.address, // 宛先はEOA自身
authorizationList: [authorization], // 新しいEIP-7702フィールド
data: encodeFunctionData({ abi, functionName: "initialize" }),
});

// 4. これで、EOAは追加の認証なしに新しいロジックで制御できます
// 例えば、トランザクションを実行するには:
// await client.sendTransaction({
// to: eoa.address,
// data: encodeFunctionData({ abi, functionName: 'execute', args: [...] })
// });

3. 委任を取り消す(プレーンEOAに戻す)

アップグレードを元に戻すには、EOAにゼロアドレスを実装として指定する認証に署名させ、別のタイプ4トランザクションを送信します。その後、eth_getCode(eoa.address)への呼び出しは空のバイトを返すはずです。


本番環境で機能する統合パターン

  • 既存ユーザーのためのインプレースアップグレード: dappで、ユーザーがPectra互換ネットワークにいるかどうかを検出します。もしそうなら、ワンタイム認証署名をトリガーするオプションの「アカウントアップグレード」ボタンを表示します。古いウォレットを持つユーザーのためのフォールバック経路(クラシックなapprove + swapなど)を維持します。
  • ガスレスオンボーディング: 初期タイプ4トランザクションをスポンサーするためにリレイヤー(バックエンドまたはサービス)を使用します。継続的なガスレストランザクションには、既存のペイマスターと公開メンプールを活用するためにERC-4337バンドラーを通してユーザー操作をルーティングします。
  • クロスチェーン展開: すべてのチェーンで同じ実装コントラクトを指定するためにchain_id = 0認証を使用します。その後、アプリケーションロジック内でチェーンごとに機能を有効または無効にできます。
  • 監視可能性: バックエンドはタイプ4トランザクションをインデックス化し、どのEOAがアップグレードされたかを追跡するためにauthorization_listを解析する必要があります。トランザクション後、eth_getCodeを呼び出してEOAのコードが委任インジケーター(0xef0100 || implementationAddress)と一致することを確認して変更を検証します。

脅威モデルとGotcha(これをスキップしないでください)

  • 委任は永続的: EOAの実装コントラクトへの変更を、標準的なスマートコントラクトアップグレードと同じ重要度で扱ってください。これには監査、明確なユーザーコミュニケーション、理想的にはオプトインフローが必要です。新しいロジックをユーザーに静かにプッシュしないでください。
  • tx.origin地雷: msg.sender == tx.originを使用してEOAから直接呼び出されたことを確認していたロジックは今では潜在的に脆弱です。このパターンはEIP-712署名や明示的許可リストなど、より堅牢なチェックで置き換える必要があります。
  • Nonce計算: EOAが自身の7702トランザクションをスポンサーする場合(executor: 'self')、認証nonceとトランザクションnonceが特定の方法で相互作用します。リプレイ問題を避けるために、これを正しく処理するライブラリを常に使用してください。
  • ウォレットUXの責任: EIP-7702仕様は、dappがユーザーに任意の指定への署名を求めるべきではないと警告しています。提案された実装を検証し、安全であることを確認するのはウォレットの責任です。ウォレット仲介セキュリティのこの原則に従うようにUXを設計してください。

7702が明確な勝利となる場合

  • DEXフロー: マルチステップのapproveswapexecuteBatch関数を使用してシングルクリックに結合できます。
  • ゲームとセッション: ユーザーが新しいウォレットを作成・資金提供することなく、限られた時間またはスコープでセッションキーのような特権を付与します。
  • 企業とフィンテック: スポンサー付きトランザクションを有効にし、会計とアイデンティティのために各チェーンで同じ企業アドレスを維持しながらカスタム支出ポリシーを適用します。
  • L2ブリッジとインテント: 異なるネットワーク間で一貫したEOAアイデンティティを持つ、よりスムーズなメタトランザクションフローを作成します。

これらのユースケースは、ERC-4337によって約束された同じコアベネフィットを表していますが、今では単一の認証だけですべての既存EOAで利用可能です。


出荷チェックリスト

プロトコル

  • ノード、SDK、インフラプロバイダーがタイプ4トランザクションとPectraの「prague」EVMをサポートすることを確認。
  • 新しいトランザクションでauthorization_listフィールドを解析するようにインデクサーと分析ツールを更新。

コントラクト

  • 必須機能(バッチング、取り消しなど)を持つ最小限の監査済み実装コントラクトを開発。
  • メインネットにデプロイする前にテストネットで取り消し再指定フローを徹底的にテスト。

クライアント

  • クライアントサイドライブラリ(viemethersなど)をアップグレードし、signAuthorizationsendTransaction機能をテスト。
  • セルフスポンサーとリレイの両方のトランザクションパスがnonceリプレイを正しく処理することを確認。

セキュリティ

  • コントラクトからtx.originに基づくすべての前提を削除し、より安全な代替手段に置き換える。
  • ユーザーアドレスでの予期しないコード変更を検出し、疑わしいアクティビティについてアラートするデプロイ後監視を実装。

結論: EIP-7702は、すでに使用されている数百万のEOAに対するスマートアカウントUXへの低摩擦オンランプを提供します。小さく監査された実装から始め、ガスレスセットアップにリレイパスを使用し、取り消しを明確で簡単にすれば、完全なアカウント抽象化の90%の利益を提供できます—アドレス変更と資産移行の痛みなしに

ウォレット革命: アカウント抽象化の3つの道を探る

· 約7分
Dora Noda
Software Engineer

長年、暗号業界は重大なユーザビリティ課題――ウォレット――に悩まされてきました。従来のウォレットは外部所有アカウント(EOA)と呼ばれ、非常に厳格です。シードフレーズを一度でも失うと資金は永遠に失われます。すべての操作には署名が必要で、ガス代はチェーンのネイティブトークンで支払わなければなりません。この扱いにくくハイリスクな体験が、主流への採用を阻んでいます。

そこで登場したのが アカウント抽象化(AA) です。これはブロックチェーンとのインタラクションを根本から変えるパラダイムシフトです。AA の本質は、ユーザーのアカウントをプログラム可能なスマートコントラクトに変換し、ソーシャルリカバリやワンクリック取引、柔軟なガス支払いといった機能を解放することです。

この賢い未来への旅路は、次の 3 つの異なる道で進行しています:実績のある ERC-4337、効率的な ネイティブ AA、そして期待の高い EIP-7702。それぞれのアプローチが開発者とユーザーにもたらす意味を見ていきましょう。


💡 パス 1: パイオニア — ERC-4337

ERC-4337 は、コアプロトコルを変更せずに Ethereum および EVM 系チェーンにアカウント抽象化をもたらした画期的な技術です。既存システムの上にスマートレイヤーを追加したイメージです。

新しいトランザクションフローは次の要素で構成されます:

  • UserOperations:ユーザーの「意図」(例: “100 USDC を ETH にスワップ”) を表す新しいオブジェクト。
  • Bundlers:オフチェーンのアクターで、UserOperations を集めてバンドルし、ネットワークに送信します。
  • EntryPoint:バンドルされた操作を検証・実行するグローバルスマートコントラクト。

メリット:

  • ユニバーサル互換性:任意の EVM チェーンにデプロイ可能。
  • 柔軟性:ゲーム向けセッションキー、マルチシグセキュリティ、Paymaster によるガススポンサーシップなど豊富な機能を実装可能。

トレードオフ:

  • 複雑性とコスト:Bundler の運用が必要で、3 つのアプローチの中で最もガスコストが高くなります。すべての操作が追加の EntryPoint ロジックを通過するためです。そのため、採用はガスコストが低い L2(Base、Polygon など)で主に進んでいます。

ERC-4337 は他の AA ソリューションが走れる道を切り開き、需要を証明し、より直感的な Web3 体験の基盤を築きました。


🚀 パス 2: 統合された理想 — ネイティブ アカウント抽象化

ERC-4337 がアドオンであるのに対し、ネイティブ AA はブロックチェーンの基盤そのものにスマート機能を組み込んでいます。zkSync EraStarknet などは、設計段階から AA をコア原則として構築されています。これらのネットワークでは、すべてのアカウントがスマートコントラクトです。

メリット:

  • 効率性:プロトコルに AA ロジックが組み込まれているため、余分なレイヤーがなく、ERC-4337 と比べてガスコストが大幅に低減。
  • 開発者に優しい:Bundler や別個のメモプールを管理する必要がなく、トランザクションフローが標準的なものに近い。

トレードオフ:

  • エコシステムの分散:ネイティブ AA はチェーン固有です。zkSync のアカウントは Starknet のものとは異なり、どちらも Ethereum メインネットのネイティブアカウントではありません。これにより、複数チェーンを横断するユーザーや開発者にとって体験が分断されます。

ネイティブ AA は効率性の「究極形」を示しますが、その採用はホストチェーンの成長に依存します。


🌉 パス 3: 実用的な橋渡し — EIP-7702

Ethereum の 2025 年「Pectra」アップグレードに含まれる予定の EIP-7702 は、既存の EOA ユーザーに AA 機能を提供する画期的な提案です。ハイブリッドアプローチを採用し、EOA が 一時的にスマートコントラクトへ権限を委譲 できるようにします。

つまり、EOA に一時的なスーパーパワーを付与するイメージです。資金やアドレスを移行する必要はなく、トランザクションに認可情報を付加するだけで、バッチ処理(例:承認+スワップをワンクリック)やガススポンサーシップが可能になります。

メリット:

  • 下位互換性:既存の膨大な資金が保管された EOA と互換性があり、移行不要。
  • 低複雑性:標準のトランザクションプールを使用するため、Bundler が不要でインフラが大幅に簡素化。
  • 大衆採用の触媒:すべての Ethereum ユーザーが即座にスマート機能を利用できるため、UX 改善の波が急速に広がる可能性があります。

トレードオフ:

  • 「完全な」AA ではない:EIP-7702 は EOA 自体の鍵管理問題を解決しません。秘密鍵を失えば資金は失われます。主に取引機能の拡張に焦点を当てています。

正面比較: 明確な対比

機能ERC-4337(パイオニア)ネイティブ AA(理想)EIP-7702(橋渡し)
コアコンセプトBundler を介した外部スマートコントラクトシステムプロトコルレベルのスマートアカウントEOA が一時的にスマートコントラクトへ権限委譲
ガスコスト最高(EntryPoint のオーバーヘッド)低(プロトコル最適化)中程度(バッチ処理時の小さなオーバーヘッド)
インフラ高(Bundler、Paymaster が必要)低(チェーンのバリデータが処理)最小(既存トランザクションインフラ使用)
主なユースケース任意の EVM チェーンで柔軟な AA、特に L2 向けzkSync、Starknet など目的別 L2 での高効率 AA既存 EOAs にスマート機能を即時付加
最適な対象ゲーミングウォレット、ガスレスオンボーディングが必要な dAppzkSync・Starknet 専用プロジェクト主流ユーザーへのバッチ処理・ガススポンサーシップ提供

未来は収束し、ユーザー中心になる

この 3 つの道は相互排他的ではなく、ウォレットの摩擦をなくす未来へと収束しています。

  1. ソーシャルリカバリが標準化 🛡️: “鍵を失う=資金を失う” 時代は終わります。AA によりガーディアンベースのリカバリが可能となり、自己管理資産が従来の銀行口座と同等の安全性と寛容さを得ます。
  2. ゲーム UX の再構築 🎮:セッションキーにより、毎回の “取引承認” ポップアップが不要になり、Web3 ゲームが Web2 と同等のスムーズさを実現します。
  3. ウォレットはプログラム可能なプラットフォーム:ユーザーは “DeFi モジュール” や “セキュリティモジュール” を自由に追加でき、例えば自動イールドファーミングや大口送金時の 2FA などを実装可能です。

Blockeden.xyz のような開発者・インフラプロバイダーにとって、この進化は大きなチャンスです。Bundler、Paymaster、各種 AA 標準の複雑さは、堅牢で抽象化されたインフラを提供する余地を広げます。目指すは、開発者が AA 機能をシームレスに統合でき、ウォレットがチェーンに応じて ERC-4337、ネイティブ AA、または EIP-7702 を自動的に選択して利用できる統一体験です。

ウォレットはついに相応のアップグレードを迎えました。静的な EOA から動的でプログラム可能なスマートアカウントへの移行は、単なる改善ではなく、次の十億ユーザーにとって Web3 を安全かつアクセスしやすくする革命です。

Ethereumの上海(Shapella)アップグレード、解明

· 約8分
Dora Noda
Software Engineer

引き出し、ガス調整、そしてその後の展開—誇大広告なしで。


短縮版

Shapellaアップグレード(実行レイヤーの上海とコンセンサスレイヤーのCapellaのかばん語)は、2023年4月12日にEthereumで稼働しました。そのランドマーク機能は、Beacon Chainの開始以来初めてステーキング引き出しを可能にすることでした。

ヘッドライン変更であるEIP-4895は、バリデーターの引き出しがコンセンサスレイヤーから実行レイヤーに自動的に「プッシュ」されるシステムを導入し、ユーザートランザクションやガス手数料を必要としません。これと併せて、4つの小さなEIPがEVMの微調整を行い、ガスコスト削減(Warm COINBASE)、バイトコード最適化(PUSH0)、およびコントラクト作成制限(Initcode metering)が含まれています。アップグレードは、SELFDESTRUCTオペコードが段階的に廃止されることを開発者に最終警告する役割も果たしました。

ShapellaはMergeのサイクルを効果的に完了し、次の主要なアップグレードであるDencunは2024年3月13日に続き、EIP-4844「blob」によりネットワークの焦点をスケーラビリティに移しました。


なぜShapellaが重要なマイルストーンだったのか

Beacon Chainの開始から2023年4月まで、ETHをステーキングすることは一方通行でした。32 ETHを預けてネットワークを保護し報酬を得ることはできましたが、元本やそれらのコンセンサスレイヤー報酬を引き出すことはできませんでした。このロックされた流動性は重大なコミットメントであり、多くの潜在的なステーカーにとって障壁でした。

Shapellaは出口ドアを開くことによってすべてを変えました。

アップグレードの核心はEIP-4895で、巧妙に設計された**システムレベルの「引き出し操作」**でした。ステーカーがトランザクションを作成してガスを支払って引き出しを行う代わりに、プロトコル自体がコンセンサスレイヤーから適格な資金を自動的にスイープし、実行レイヤーにプッシュするようになりました。この清潔なプッシュベースの設計は複雑さとリスクを最小化し、変更のテストと安全な展開を大幅に容易にしました。


実際に変更されたもの:平易な日本語でのEIP

Shapellaは5つの主要なEthereum改善提案(EIP)のバンドルでした:

  • EIP-4895 — Beacon Chain引き出し(プッシュベース) これがメインイベントでした。部分的(報酬)および完全(元本+報酬)引き出しの両方を、コンセンサスレイヤーからステーカーの指定された引き出しアドレスに流すことを可能にしました。重要なイノベーションは、これらがユーザー開始のトランザクションではないことです;提案されたブロックに埋め込まれた自動操作です。

  • EIP-3651 — "Warm COINBASE" このEIPは小さいながらも重要なガス最適化を行いました。EVMでは、COINBASEはブロック生産者(バリデーター)のアドレスを指し、取引所ではありません。Shapella以前、スマートコントラクトがトランザクション内でこのアドレスに最初にアクセスする際、より高いガスコストが発生していました。EIP-3651はCOINBASEアドレスをデフォルトで「warm」にし、MEVチップをブロックビルダーに直接支払うプロトコルなど、頻繁にこれとやり取りするプロトコルのガスコストを削減しました。

  • EIP-3855 — PUSH0オペコード EVMへの簡潔で洗練された追加。この新しいオペコードPUSH0は、その名前の通り:値ゼロをスタックにプッシュします。以前、開発者はこれを達成するためにより重く高価なオペコードを使用する必要がありました。PUSH0はバイトコードを若干小さく、よりガス効率的にし、特に変数をゼロに初期化する多数のコントラクトにとって有益です。

  • EIP-3860 — initcodeの制限と測定 この変更は、スマートコントラクトを作成するために使用されるコード(initcode)に2つのルールを導入しました。第一に、initcodeの最大サイズを49,152バイトに制限しました。第二に、このコードの32バイトチャンクごとに小さなガス手数料を追加しました。これは過度に大きなコントラクトを含むサービス拒否攻撃を防ぎ、コントラクト作成コストをより予測可能にします。

  • EIP-6049 — SELFDESTRUCTの非推奨(警告) これはコード変更ではなく、開発者コミュニティへの正式な警告でした。コントラクトが自身を削除し、そのETHをターゲットアドレスに送信することを可能にするSELFDESTRUCTオペコードが、将来のアップグレードで機能が大幅に変更されることを示しました。これにより、開発者はDencunアップグレードがEIP-6780でその動作を後に変更する前に、それへの依存を段階的に廃止する時間を得ました。


引き出し101:部分的 vs. 完全

Shapellaは2種類の自動引き出しを導入し、それぞれに独自のルールがありました。

  • 部分引き出し これらは自動報酬スイープです。バリデーターの残高がコンセンサスレイヤー報酬により32 ETHを超えて成長する場合、プロトコルは自動的に超過分を「スキミング」し、指定された引き出しアドレスに送信します。バリデーターはアクティブのままで、その職務を継続します。これはステーカーからのアクションを必要とせずに発生します。

  • 完全引き出し(退出) これは、検証を停止し全残高を回収したいステーカー向けです。ステーカーは最初に自発的退出メッセージをブロードキャストする必要があります。待機期間後、バリデーターは完全引き出しの資格を得ます。スイープで処理されると、全残高が引き出しアドレスに送信され、バリデーターはもはやアクティブセットの一部ではありません。

スループットとケイデンス

ネットワークは不安定性を引き起こすことなく引き出しをスムーズに処理するよう設計されています。

  • 各ブロック(12秒ごと)に最大16の引き出しを含めることができ、1日あたり約115,200の引き出しの最大値を可能にします。
  • ブロック提案者はアクティブバリデーターのリストをスキャンし、最初の16の適格な引き出しを含めます。次のブロック提案者は最後の提案者が終了したところから続行し、すべてのバリデーターがキューで順番を得ることを保証します。
  • ネットワークを不安定化させる大規模な脱出を防ぐため、エポックごと(約6.4分ごと)に退出できるバリデーターの数はチャーン制限により制限されています。この制限は、アクティブバリデーターの総数に基づいて動的で、退出波を平滑化します。

コンセンサスレイヤー報酬はこのEIP-4895引き出しメカニズムによって処理される一方、実行レイヤー報酬(優先手数料とMEV)はバリデーターの設定された手数料受取人アドレスに直接送信され、即座に利用可能であることも重要です。


その後の展開:Dencunとスケーラビリティへの道

Shapellaは「Merge時代」の成功した完了を記録しました。ステーキングが完全に流動的な双方向プロセスになったことで、開発者はEthereumの次の大きな課題に注意を向けました:スケーラビリティ

次の主要なアップグレードであるDencun(Deneb + Cancun)は、2024年3月13日に到着しました。その中心はLayer 2ロールアップがEthereumメインネットにトランザクションデータを投稿するための新しい、より安価な方法である「blob」を導入したEIP-4844でした。これによりL2のトランザクション手数料が劇的に下がり、ロールアップ中心のロードマップにおける大きな前進となりました。DencunはまたEIP-6049の約束を果たし、SELFDESTRUCTオペコードの力を大幅に制限したEIP-6780を実装しました。


大きな図

ShapellaはEthereumのProof-of-Stakeコンセンサスにとって不可欠な信頼のマイルストーンでした。引き出しを可能にすることで、ステーキングのリスクを軽減し、流動性を回復し、複雑で協調されたアップグレードを実行するネットワークの能力を確認しました。また、技術的負債を清算し、将来の最適化への道を舗装した実用的なEVM改善も提供しました。

要するに、Shapellaはステーカーのための出口ドアを開いただけでなく—Post-Merge時代の基盤を固め、Ethereumが次のフロンティア:大規模スケーラビリティに焦点を当てるための滑走路をクリアしました。