Ethereumの上海(Shapella)アップグレード、解明
引き出し、ガス調整、そしてその後の展開—誇大広告なしで。
短縮版
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でその動作を後に変更する前に、それへの依存を段階的に廃止する時間を得ました。