2020年12月1日、イーサリアム 2.0のビーコンチェーン(Beacon chain)がついにローンチし、ステーキングが始まりました。
【関連記事】
・イーサリアム 2.0とは? ついに始まるPoS(プルーフ・オブ・ステーク)への移行を理解しよう
・ETHのステーキングはどのように行う?ステーキングの方法を3種類に整理して解説
既にブロック生成が行われてブロックチェーンが稼働していますが、ステーキングをしているノードの一部にはスラッシュが行われたものも存在します。スラッシュとは、ノード運用者がノードを安定的に稼働させなかったり、悪意が疑われる行為をするとステーキングしているETHが没収される仕組みです。
今回はイーサリアム 2.0のビーコンチェーンではじめてスラッシュされたノードに何が起きたのかを振り返ってみましょう。
イーサリアム 2.0のバリデータノードで初めてのスラッシュが発生
ビーコンチェーンではじめてのスラッシュはエポック(Epoch) 208のスロット(Slot) 6668で起きました。ブロックチェーンエクスプローラーでスロット6669のスラッシュ提案者の内容によるとバリデータ20075は、6668のSlotで対象バリデータは本来ならば1つの提案を行うはずが、2つの異なるブロックを提案しました。
結果としてバリデータ 20075は0.24 ETHがスラッシュされてネットワークからEXITしています。
一方、6668Slotのバリデータをスラッシュするべきだと提案したバリデータ 11313は報酬として約0.06 ETHを受け取っています。この報酬を多くもらったバリデータはステーキングサービスを提供するstakefishのノードの一つで、ビーコンチェーンのステーキング報酬獲得ランキングで7位になりました(2020年12月執筆時点)。
スラッシュされたノードは何をしたのか?
ここまでの流れだとスラッシュされたバリデータは20075はなぜ今回このようなペナルティを受けるに至ってしまったのでしょうか。
バリデータ20075は、単一のノードを2つのインスタンスで稼働させていました。1つのノードが落ちたときのためにバックアップとして稼働させていたはずですが、この2つのインスタンスで稼働していたノードが同時にブロック提案してしまったのです。
バリデータがスラッシュされるときの条件
ここでバリデータノードが同じスロットで2つのブロック提案をするとなぜスラッシュされるのか確認しましょう。
イーサリアム2.0のビーコンチェーンではバリデータがスラッシュされるパターンは3通りあります。
- 二重提案:バリデータが1つのスロットで2つの異なるブロックを提案するとき
- 二重署名(FFGの二重投票):バリデータが、同じエポック内の同じターゲットに対して2つの異なるアテステーションに署名した場合
- 囲い投票:バリデータが既に署名を完了したものを「囲んだり」「囲まれる」形になる署名をしようとした場合。詳しくはこちら
これらの要件を備えて、攻撃の可能性がある行動に懲罰的な設計を加えることでイーサリアムのPoS(プルーフ・オブ・ステーク)は安全に稼動します。ブロックの二重提案によってノードがスラッシュされるという事象は2019年にコスモス(Cosmos)のバリデータでも見られました。ヴィタリックはこのケースから、悪意のある攻撃者がネットワークを意図的に分割してプライマリノードとバックアップ(フェイルオーバー)ノードをターゲットにし、競合するブロックに署名してファイナライズする潜在的な攻撃可能性を懸念して、イーサリアム2.0に対策を組み込んでいます。
このようにイーサリアム 2.0のノード運用を自前で行うなら、スラッシュ要件をしっかり把握して、そのうえで安全に稼動させる必要があります。もしそれが面倒であったり、技術的に難しい場合は専門のステーキングサービスを使用すると良いでしょう。
参考
・Ethereum 2.0: The First Slash, A Retrospective
この記事はstakefishからコンテンツ協力を得て提供しています。stakefishは暗号資産ユーザー向けのステーキングサービスを提供しています。Ethereumをはじめとした様々なノード運用の実績を元にサービスを提供しており、ユーザーは秘密鍵を渡すことなくステーキングができます。stakefishによるステーキングサービスの詳細を知りたい方は是非下記のリンクをご参照ください。
■stakefish:https://stake.fish/ja/