Signal
📡 Signal|Ethereum Glamsterdam、一度見送った預け入れ不具合の修正を採用
Glamsterdam の切り替え時にステーキングの預け入れがビルダーの残高に入りうる不具合の修正が、一度見送られたのち10月26日に仕様へ取り込まれた。

イーサリアムのコンセンサス層の仕様を管理する consensus-specs リポジトリで10月26日 (UTC)、次期アップグレード Glamsterdam の切り替え時に、ステーキングの預け入れがバリデーターではなく「ビルダー」の残高に入りうる不具合の修正 (PR #5736) が取り込まれた。同じ修正は10月19日に、クライアント開発チームの支持が足りないとして一度閉じられていた。
見送りから 1 週間で判断が戻ったのは、Hoodi テストネットでの有効化が延期され、日程に修正を入れる余地ができたためだ。実害の報告はなく、修正はこれから各クライアントの実装に入る。
Hoodi の延期そのものは、10月23日の Signal で書いた。本稿は、延期の間に入った修正の中身を見る。
他人の預け入れが、ビルダーの残高に入る
Glamsterdam のコンセンサス層側 (Gloas) は、ブロックの中身を組み立てる「ビルダー」を、バリデーターとは別の登録簿で扱う仕組みを入れる。問題は、アップグレードの切り替えの瞬間に、待機中の預け入れをどちらの登録簿に振り分けるかの規則にあった。
不具合を報告した issue #5735 によると、切り替え前の規則では、ある公開鍵でビルダーの登録がいったん済むと、同じ公開鍵への後続の預け入れは、引き出し資格情報 (預けた資金の戻り先を示す設定) が何であれ、そのビルダーへの追加入金として扱われる。バリデーター向けの預け入れが、バリデーターの待ち行列から抜かれて、ビルダーの残高に足される。
issue が挙げた例は次の順序だ。
- 運営者が新しい公開鍵で、自分の引き出し先を指定したビルダーの預け入れ (
0xB0資格情報) を先に出す - ステーキングのプロトコルが、同じ公開鍵に、自分の引き出し先を指定したバリデーターの預け入れ (
0x02資格情報) を出す - 両方が切り替えの時点で待機中なら、2 つの額がともにビルダーに入り、運営者はプロトコルの資金を引き出せる
バリデーターが作られないため、プロトコルは「自分の資格情報を持つバリデーターができた」という証明を取れない。預け入れを分けて出し、最初の分の証明を確かめてから残りを出す、という安全策そのものが止まる。
名前が挙がった Lido・Origin・Rocket Pool
報告者の avsetsin 氏は issue に、影響を受けうるプロトコルを調べたコメントを添えた。CoinDesk によると、同氏は Lido の GitHub 組織のメンバーとして登録されている。
コメントが挙げたのは 3 つだ。Lido の事前預け入れの保証の仕組み (PDG) では 1 ETH の事前預け入れが失われ、補償にはバリデーターの証明が要る。Origin の OETH では最初の預け入れが欠けると戦略全体の残高の検証が止まる。Rocket Pool の Saturn では証明にもとづく解散ができず、残り 31 ETH がタイムアウトまで待つ。
ただしコメント自身が、これは条件付きのコード上の所見で、実際に悪用された例ではないと書いている。先行するビルダーの預け入れを事前に弾く確認があれば、このシナリオは防げる。恒久的な凍結に至るとも確認されていない。
10月19日に閉じ、23日に開け直す
issue は10月12日に立ち、修正の PR は michaelsproul 氏らのレビューを受けた。仕様のメンテナーである jtraglia 氏は10月19日、コンセンサス層 (ACDC) とテスト (ACDT) の定例会議で話し合った結果として、PR と issue を閉じた。理由は「現時点でこの変更をするほどクライアントの支持がない」というものだ。
10月23日、dgusakov 氏が「Glamsterdam の日程が変わり、直す機会ができた」として再開を提案し、jtraglia 氏が同日 issue を開け直した。前日の10月22日に、イーサリアム財団が Hoodi での有効化の延期を告知している。potuz 氏が23日に承認し、報告者が切り替えの 3 つの場合のテストを足したあと、nflaig 氏と jtraglia 氏が26日に承認して取り込まれた。
修正後の規則は、待機中の預け入れを引き出し資格情報で仕分ける。
- バリデーターの預け入れは、同じ鍵をビルダーが使っていてもバリデーターの待ち行列に残る
- 正しいビルダーの預け入れは、同じ鍵をバリデーターが使っていてもビルダーを登録するか追加入金する
- 既にいるビルダーへのビルダーの預け入れは、署名にかかわらず追加入金になる
PR は、切り替え後にバリデーターの鍵でビルダーを登録できるという既存のテストと規則をそろえる、とも説明している。テストベクトルのうち 3 件が改名され、4 件が BLS 署名の検証を必要とするようになった。
先にテストネットへ出た Sepolia は
Glamsterdam は既に Sepolia テストネットで有効化されている。修正が Sepolia の切り替えと矛盾しないかを michaelsproul 氏がレビューで尋ね、nflaig 氏は、Sepolia の預け入れ用コントラクトは特別なトークンが要るため、切り替え時のビルダー登録を試していないと答えた。クライアントが Sepolia 向けの例外を抱え込む必要はない、という整理だ。
仕様の修正で、日程を決める条件の一つが片付いた。Hoodi の新しい日程は、ガス料金を見直す EIP-8037 の調査と並んで、クライアントがこの規則を実装したリリースを出せるかにもかかってくる。
次に見るもの
確認先は、イーサリアム財団のブログに出る Hoodi の新しい有効化の告知だ。告知のクライアントのリリース表に、この預け入れの仕分けを実装した版が並ぶかを見る。並ばなければ、メインネットの前にもう一度テストネットで試す段階が要る。預け入れを扱うプロトコル側は、Lido・Origin・Rocket Pool が Gloas に合わせた検証の更新を出すかが、その次の確認点になる。
ことば
- ビルダー — イーサリアムで、ブロックに入れる取引を選んで並べ、ブロックの中身を組み立てる役。Glamsterdam はビルダーをバリデーターと別に登録し、残高を持たせる仕組みを入れる。
- 引き出し資格情報 — バリデーターやビルダーの預け入れに付ける設定で、引き出した資金がどのアドレスに戻るかを決める。今回の修正は、この設定を見て預け入れをバリデーター側とビルダー側に分ける。
- Gloas — Glamsterdam のうち、コンセンサス層 (バリデーターが合意を作る層) 側のアップグレードの名前。実行層側の Amsterdam と合わせて Glamsterdam と呼ぶ。
🔗 一次ソース
ethereum/consensus-specs PR #5736「Separate builder and validator deposits at the Gloas fork」— 10月26日 (UTC) の merge、修正後の仕分けの規則、テストの変更、レビューと承認の経緯を確認GitHub
ethereum/consensus-specs issue #5735「Gloas fork onboarding credits validator deposits to builders with the same public key」— 不具合の仕組みと例、影響を受けうるプロトコルの調査、10月19日のクローズと23日の再開を確認GitHub
Ethereum Foundation Blog「Glamsterdam on Hoodi Postponed」(2026年10月22日)Ethereum Foundation Blog
CoinDesk「Ethereum fixes Glamsterdam bug that could have sent staking deposits to builders」(2026年10月27日)coindesk.com