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

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が次のフロンティア:大規模スケーラビリティに焦点を当てるための滑走路をクリアしました。