上級者用語を調べる
二重署名とは
- 執筆
- CRYPTO PORT 編集部
- 公開日
- 更新日
- 読了目安
- 5 分
結論
二重署名は、検証者が同じ高さや同じ投票対象に対して矛盾する署名を二つ出してしまうことです。チェーンの分岐を助長する行為と見なされ、多くのネットワークで最も重いスラッシングの対象になります。原因の大半は悪意ではなく、同じ鍵でノードを二台動かしてしまう運用ミスです。
要点
- 同じ対象に矛盾する署名を二つ出す行為
- チェーン分岐を助長するため最も重く罰される
- 原因の多くは同一鍵での二重起動という運用ミス
- 第三者が証拠を提出することで検出される
定義
同一の検証者鍵で、同じブロック高や同じ投票対象に対して互いに矛盾する署名を発行すること。等価誤動作(equivocation)とも呼ばれる。
プルーフ・オブ・ステークの安全性は、検証者が一つの履歴だけを支持することを前提にしています。同じ高さで二つの異なるブロックに署名すると、ネットワークから見てどちらが支持されているのか判別できなくなり、分岐が確定しなくなります。
この矛盾した署名の組は、誰でも証拠としてチェーンに提出できます。提出されると検証者の預け入れから一定割合が没収され、検証者としての資格も剥奪されるのが一般的です。同時期に多数の検証者が違反していた場合、没収の割合が跳ね上がる設計もあります。
実際の発生原因で最も多いのは、運用者が待機系のノードを立ち上げたものの、本番系が生きていたという状況です。両方が同じ署名鍵を読み込んでいれば、どちらも自分が正規だと思って署名します。バックアップからの復元でも同じことが起きます。
対策は、署名の履歴を保持する仕組みを使い、過去に署名した高さより前には署名しないようにすること、そして鍵を一箇所でしか使えない構成にすることです。冗長化を素朴に二重起動で実現しようとすることが、最も危険な設計になります。
注意点
- · 悪意がなくても、運用ミスによる二重署名は同じように罰される
- · 委任している場合、委任先の二重署名によって自分の元本も減ることがある
- · 署名履歴を引き継がずにサーバーを移設すると、違反を起こす可能性がある