出典:https://docs.ssv.network/learn/readme/tech-overview (2023年10月時点)
<aside> <img src="/icons/list_blue.svg" alt="/icons/list_blue.svg" width="40px" /> もくじ
</aside>
このページではssv.networkに関するテクノロジーサイドの概要を紹介します。ssv.networkは、コンセンサスレイヤーを備えた高度なマルチシグネチャウォレットです。このレイヤーはビーコンノードとバリデータークライアントの間に位置するミドルレイヤーとなっています。ユーザーの視点から見ると、ssv.networkはプラグインとして利用することができ、このプラグインを通してノード運用に必要なすべての処理をssvが代行します。ssv.netwrokでは、暗号関数を用いて秘密鍵を複数のノードオペレータ間で分散管理することにより、単一のオペレータに演算上の過失が発生したりオフライン状態に陥ってしまった場合でもコンセンサスを実行することができます。ssv.networkの主たるコンポーネントは次のとおりです。
ssv.networkでは、特定のプロセスがSSVインスタンスを実行しているオペレータによって計算された共有公開鍵と秘密鍵のセットを生成します。Distributed Key Generationでは複数のノードオペレータは秘密鍵の一部分を所有しています。これにより、単一のオペレータが秘密鍵全体に影響を与えたり、完全に制御したりして一方的な決定を下すことができないようになっています。
シャミアの秘密分散法とは、秘密情報秘密をグループ内で分配するための効率的なアルゴリズムです。この秘密情報は、グループの定足数(意思決定を行うための最小限の単位)が協力して知識を集めなければ明らかにされません。ssv.networkでは、このメカニズムを事前に定義されたバリデータノード(KeyShares)の閾値を使用してバリデータキーを再構築するために使用します。秘密鍵の一部を保有する個々の主体(Key Shares)ではタスクの署名を実行できません。ただし、鍵保有者の一部が過失を犯した際にも対応できるよう、鍵の一部を保有するすべての主体が揃わないとタスクの署名ができないというわけでもありません。この仕組みは、n ≥ 3f + 1という条件で説明されます。
SSV.networkはBLS署名(Boneh、Lynn、Shachamにより発明された楕円曲線上のペアリングを用いる署名で、他の手法に比して短いバイト数で署名が表現できる。この署名の特徴として、複数のメッセージに対して複数の署名者によって作成された複数の署名を、一つの署名に集約することが可能な点があがる。)を活用できるため、複数の署名を組み合わせてバリデータキーの署名を再作成できます。シャミアの秘密分散法とBLSを組み合わせることで、一つの鍵を一旦分解して複数のオペレータに共有し、タスクが割り当てられるたびに再結合させることができます。
安全なマルチパーティ計算(MPC)を上述した秘密分散法に適用することで、SSVのKeySharesをオペレータ間で安全に分配できるようになります。また、バリデータキーを単一のデバイス上で再構築することなく、バリデータの任務を分散計算で実行することが可能になります。
これらをすべて結びつけるのが、SSVのコンセンサス層であり、イスタンブール・ビザンチン障害耐性(IBFT)アルゴリズムに基づいています。このアルゴリズムは、ブロックの提案とその情報を他の参加者と共有する役割を持つバリデータノード(KeyShare)をランダムに選択します。KeySharesの事前定義された閾値がブロックを有効と見なすと、そのブロックはチェーンに追加されます。このようにして、一部のオペレータが故障しているか、現在オンラインでない場合でも、コンセンサスを達成することができます。