乱数生成
⚠️ 注意: この機能は計画されていますが、現在は実装されていません。バリデータ選択は決定論的です。
上記のランダム選択のセキュリティを考慮すると、乱数の生成は分散型のスキームを通じて行われる必要があります。さらに、生成された乱数が検証可能であり、すべてのノード間で一貫性が確保されることが不可欠です。また、乱数生成プロセス中に、単一のノードが結果に影響を与えたり操作したりする能力を持つべきではありません。
NEROの乱数はMPC(マルチパーティ計算)アプローチを通じて生成されます。各参加ノードは最初に独自の乱数をローカルで生成します。その後、システムは特定の操作を使用して、すべてのノードの貢献から派生した公開乱数を生成します。他のノードが自身の乱数を生成する前に他のノードの乱数にアクセスすることを防ぐために、NEROは乱数生成プロセス中にシャミア秘密共有に基づく暗号化PVSS(公開検証可能な秘密共有)スキームを採用しています。このスキームにより、現在のバリデータセットが協力して乱数を生成し、暗号技術を使用してプロセスの操作から保護することができます。プロセスは次のとおりです:
- バリデータ は、閾値 に基づいて秘密 を 個の断片 に分割します。次に、 人の参加者の公開鍵 を使用して各断片を暗号化し、対応するコミットメント(ゼロ知識証明による)を生成し、これらすべての情報を共有します。
- 追加情報を取得せずに、バリデータ からの 個の値がすべて有効であることを検証できます。
- 必要に応じて、参加者は自分の秘密鍵で共有を復号化し、それを他の人と共有することができます。
- 個の復号化された共有を取得した後、誰でも秘密 を再構築できます。
最後に、共有乱数の生成は各エポックで発生します。現在のエポックは、前のエポックで生成された乱数を使用します。