Mithril:効率を高める、より強靭で、より軽いブロックチェーン
IOHKが開発する新プロトコルが、ステークベースの閾値署名スキームとして、透明性のある安全で軽量なステークの活用を可能に
2021年 10月 29日 14 分で読めます
Cardanoサミット2021で、IOHKの研究員Pyrros ChaidosとRoman Oliynykovが、IOHKによる研究およびエンジニアリングの成果であるMithril(ミスリル)の設計および目的を発表しました。Mithrilは、ステークベースの閾値署名スキームを提供します。これは、ブロックチェーンアプリケーションにおけるチェーンの同期、ステータスブートストラップ、信用に関する諸問題を解消するために、プロトコルとして実装することができます。
Mithrilは、中つ国に登場する想像上の金属で、鍛えることができ、非常に軽量ながら「鋼の3倍」の強度を持ち、黒ずみ曇ることはないとされています。したがって、この名称は、安全性における強靭さとプロトコル開発における軽量アプローチを象徴しています。
署名集約のためにステークを活用
ブロックチェーンソリューションの開発におけるMithrilのメリットを理解するために、始めに背景を整理します。
Cardanoはプルーフオブステークブロックチェーンです。したがって、コンセンサスアルゴリズムはステーク保有量に応じてブロック生成者となるノードをランダムに選定します。特定のメッセージやアクションでは、一定数のステークホルダーが暗号署名を提供することが重要となります。コンセンサスプロトコルは、個別のノードが台帳システムの現在のステータスを査定する方法を決定するとともに、3つの主要な役割を果たします。
- 台帳のチェックを実行し、ブロックを生成するべきかどうかを判断する
- チェーン選定を処理する
- 生成されたブロックを検証する
ブロックチェーンの設定の中でスケーラビリティを向上させるには、参加者の数に対数的に依存する重要な操作の複雑性に対処することが不可欠です。これは、参加者数が増えるほど(多数であることを想定)、その署名を効率的に集めるのは複雑になっていきます。基本シナリオでは、1つの署名が大多数のステークホルダーを代弁していることを推定するには、すべてのステークホルダーが適切な個別のメッセージに署名する必要があります。これは可能ですが、スケーラビリティとスピードといった面で非効率です。
特定のメッセージを検証するのにかかる時間、そしてチェーン同期中のリソースの使用を考えたとき、マルチシグ集約を、セキュリティ機能を損なうことなく素早く効率的に実行するソリューションを提供することが極めて重要となります。
Mithrilプロトコルの設計
Mithrilは以下のために設計されたプロトコルです。
- ステークを活用して効率を高める
- 信用設定を増やすことなく透過的設定を確保する
- モジュラーコンポーネント設計により保証された、サイズと効率のトレードオフを活用する
Mithrilはパブリック設定で機能します。ここでは署名者が有効な署名を生成するために他の署名者とやり取りする必要はありません。アグリゲーターはすべての署名を1つに統合します。このプロセスは署名数に関して対数的であるため、Mithril集約のパフォーマンスは劣線形になります。たとえば、Daedalusのようなフルノードクライアントに適用すると、Mithrilはフルノードデータ同期を強化してスピードを確保し、リソース消費を削減します。
ステーク総量の重要な部分を表すために、Mithrilはステークベースの閾値設定を使用します。この動作は、特定のメッセージを検証するために所与の参加者数を必要とする標準設定とは異なります。ステークベースの閾値設定では、プロトコルは正しい署名を生成する所与のメッセージを検証するために、ステーク全体のほんの一部を必要とします。
Mithrilはまた、トラストレス設定でコンセンサスを認証します。これは、ここに追加的な信用引受が含まれないことを意味します。プルーフオブステークにすでに示されているもの以外の追加的引受を含まずに、コンセンサス認証を達成することは可能です。たとえば、これはWaaS(Wallet as a Service)サービス内で機能し得るため、モバイルクライアントはMithrilノードから取得された証明書を使用します。高度なセキュリティ設定を伴うこのような手続きは、SPOのブロックチェーン認証よりもさらに効率的になる可能性があります。
さらに、高速のチェーンステータスブートストラップを確実に行うために、署名スキームは異なるステークホルダーが所与のチェーンでチェックポイントのみを認証することを可能にします。ステークホルダーは所与のステータスのすべてのトランザクション履歴をチェックする必要なく、単にチェックポイントを確認して最後のステークが有効であることを検証すればいいのです。これは、チェーンの完全同期なしに迅速に機能する必要があるライトウォレットのような、軽量クライアントアプリケーションにとってメリットになります。Mithril署名は軽量な投票検証、あるいは暗号資産ガバナンスの意思決定にも有用できます。
仕組み
Mithrilは、多数の個別の抽選(M)を行い、この抽選の多数の異なる勝者(K)の署名によりメッセージが有効であるとみなすことにより、マルチパーティ署名を可能にします。したがって、各ユーザーはメッセージへの署名を試み、抽選関数と見なされるものを経由してその署名を渡します。この関数は個別のユーザーがその署名が抽選の勝者として適格かどうかを確認し、待機することなくこれを出力することを可能にします。これは、スロットリーダーが、スロットがアクティブとなり参加できるようになるまで待つ必要がある標準設定とは異なります。さまざまな抽選にわたって署名がある場合には、それらを1つのMithril署名に集約できます。
フェーズ
Mithrilには3フェーズあります。
図1:Mithril操作フェーズ
パラメーター設定
Mithrilプロトコルを設定するためには、ユーザーは以下を行う必要があります。
- 暗号が実行されるグループ設定を修正する
- 実行する抽選数であるインデックス範囲Mを選択する
- 抽選の勝者数(受容されるために必要な署名をする)である定足数Kを設定する
プルーフシステムのための参照文字列を提供することも重要です。これは透過的に行うことが可能で、高度な信用引受は必要ありません。
初期設定
このフェースでは、ユーザーはステータス分布を更新する必要があります。このため、各ステークホルダーは、どこからステークを保有しているのかを知ることになります。その後、各ステークホルダーは自分の鍵を登録する責任を負います。これはオフチェーンでもオンチェーンでも生じます。
最後に、ユーザーはステークを分散させ自分のテスト鍵を圧縮する必要があります。これにはマークルツリーを使用します。この関数により、Mithril署名はそのマークルツリーを表す単一のハッシュに対して検証することが可能になります。したがって、署名を検証するために必要なステータスサイズは小さくしておくことができます。
操作
チェーンで作業している間、ユーザーはMithril署名を生成、集約、検証することができます。署名生成において、ユーザーは、生成された署名が、実際に並行して行われた抽選の1つの勝者のものであるかどうかを確認します。これが真の場合、ユーザーはその署名をブロードキャストします。さまざまな抽選にわたって特定のメッセージをサポートするのに十分な署名がある場合には、それらを1つのMithril署名に集約することができます。その後、プルーフシステムの参照文字列と非常に短いステーク分布のマークルツリーハッシュのみを使用して、誰でもブロードキャストおよび検証できます。
たとえば、1人のユーザーが次のようにMithrilで署名を生成できます。
図2:Mithriの署名生成
最初に、ユーザーは保有するステーク量を確認し、それをスコア関数に渡してスコア閾値Tを取得します。次に、候補署名Sの生成を試みます。インデックスごとに、生成された候補署名が署名したばかりのメッセージとペアとなるかどうかを査定します。チェックしている抽選のインデックス番号も、閾値T未満のスコア値を生成します。これが真になれば、生成された候補署名は、実際にその特定のインデックス番号の抽選の勝者となります。ならなければ、次を試みます。
可能性のあるインデックスをすべて試みたら、ユーザーは、署名Sが有効となるインデックスを1つ以上持つ可能性があります。これらのインデックスごとに、候補署名、有効なインデックス番号、スコアが登録されたステークと整合性を持つことを確認する証明からなる個別の署名を出力することができます。
ネットワークアーキテクチャー
CardanoのMithril実装では、ソフトウェアインタラクションは次のように表現できます。
図3:Mithrilネットワークアーキテクチャー
ステークプールオペレーター(SPO)周辺の代表的なソフトウェアには、Cardano P2Pネットワークとの接続、MithrilノードのP2Pネットワーク、SPOが実行するノードに接続されたMithrilクライアントが含まれます。
SPOプラットフォームにあるMithrilノードは、ローカルストレージの検証済みブロックチェーンにアクセスし、プロトコルを実行して、Mithrilストレージに保管されるMithril証明書を生成します。Mithril証明書の生成は、ネットワーク全体で検証できるように同期されます。したがって、SPOは、全Cardanoブロックチェーンおよび有効なMithril証明書のリストを両方とも共有することができます。Mithrilクライアントがネットワークに接続すると、Mithril証明書のリストを要求し、Cardanoブロックチェーンの最長チェーンのみを問い合わせます。
複数のSPOがこのような設定で参加することもできます。その後、Mithrilクライアントは、取得されたCardanoブロックチェーンを証明書で完全に承認できることを確認します。この手順全体が軽量であり、大量のネットワークストレージや計算リソースを必要としません。さらに、Cardanoノードの完全同期とMithrilの高速同期は相互排他的ではなく、並行して実行できます。Mithrilの高速同期は、あとでノードの完全同期によって確認されます。
ユースケース
Mithrilの適用が非常に有益であるケースを見てみましょう。
MithrilはDaedalusなどのフルノードクライアントやアプリケーションの効率を高めます。高速で安全なフルノードデータの同期を確保し、高レベルのセキュリティを保証しながら、計算、ネットワーク相互接続、ローカルストレージなど、時間や必要とされるリソースを大幅に削減します。
Mithrilはライトクライアントやモバイルアプリケーションにも適用でき、トラストレスアプローチを保証します。また別の重要な利点は、Mithril署名をサイドチェーンの実行に使用できることです。メインブロックチェーンは、さまざまなコンセンサスプロトコルを持つことができるさまざまなサイドチェーンに接続することができます。Mithrilは、軽量ブロックチェーンのステータス認証という利点があります。したがって、証明書は特定のブロックチェーンの現在の状態と、転送および逆転送の正確性を安全な方法で検証することができます。
さらに、ステークベースの投票アプリケーションとガバナンスソリューションも、投票プロトコルの複雑性にかかわらずMithrilを使用することができます。Mithril署名は安全で軽量な投票の検証に活用できます。これは、ガバナンスでステークホルダーが分散型意思決定プロセスを経て、簡単で検証可能な方法で最終結果を提供する場合にも役立ちます。
実装
複数の企業がすでに自社のブロックチェーンソリューションへのMithril実装に関心を寄せています。形式手法、暗号、ハードウェアに主眼を置く先進的R&D企業のGaloisは、IOHKの研究に基づいた最初のMithrilプロトタイプを実装します。Galoisは、高速のプロトタイピング機能を持つプログラミング言語RustでMithrilを実装します。同社はまず、BulletProofsで小規模な署名を提示し、次に本番仕様の実装を行い、最後に形式的プルーフオブコレクトネスを実装します。
Idyllic Visionは、ゼロ知識証明、組織用クレデンシャル管理システム、多様な社会ソリューションと相互運用性を持つエンドユーザー向けモバイルウォレットをベースとした、自己主権型IDプロトコルの構築に主力を置く企業です。同社はMithrilノードのプルーフオブコンセプトの実装を計画しています。今後数か月間、始めにソリューションアーキテクチャーの青写真を作成し、これから開発、そして既存インフラと有機的に統合させることになる数多くのシステムコンポーネントを定義します。これには、Mithril cryptoライブラリーとCardanoノード、ノード間の通信のためのネットワーク層の統合が含まれます。このフェーズの結果はCardanoに統合され、ノードの高速ブートストラップを可能にし、軽量クライアントなど追加的機能をサポートします。
詳細は【ミスリルの研究論文】(https://iohk.io/en/research/library/papers/mithrilstake-based-threshold-multisignatures/)を参照。
最新の記事
Quality Engineering at IO: bridging research and reality in software development 筆者: Ivan Irakoze
20 November 2024
ブラックホーク空へ:ハリケーン「へリーン」を受けて英雄達を輸送 筆者: Fernando Sanchez
29 October 2024
ワイオミングのBlockchain StampedeでCardano Day 筆者: Alejandro Garcia
21 October 2024