ゼロ知識プロトコルは、1つの当事者(証明者)が、他の当事者(検証者)に、特定の文が真実であることを除いて、情報を一切明かさずに証明できる方法です。
ゼロ知識証明は数年の間に改善され、現在はいくつかの実世界のアプリケーションで使用されています。
ゼロ知識証明は、応用暗号化において画期的な進歩を表しており、個人の情報セキュリティを向上させることを約束しています。別の当事者(たとえばサービスプロバイダー)に主張(例:「私はX国の市民です」)を証明する方法を考えてみてください。ナショナルパスポートや運転免許証などの「証拠」として主張を裏付ける必要があります。
しかし、このアプローチには問題点があります。主にプライバシーの欠如です。第三者サービスと共有される個人を特定できる情報(PII)は、ハッキングのリスクにさらされる中央データベースに保存されています。身元盗用が重大な問題となっている中、機密情報を共有するためのプライバシー保護手段が求められています。
ゼロ知識証明は、主張の妥当性を証明するために情報を明らかにする必要がないようにすることで、この問題を解決します。ゼロ知識プロトコルは、主張(証人と呼ばれる)を入力として使用して、その妥当性の簡潔な証明を生成します。この証明は、その主張が真実であることを強力に保証し、それを作成する際に使用された情報を公開せずに済みます。
先ほどの例に戻ると、市民権主張を証明するために必要な唯一の証拠は、ゼロ知識証明です。検証者は、証明の特定の属性が真実であるかどうかをチェックするだけで、基になる文が真実であると納得することができます。
ゼロ知識証明は、文の内容を共有せずにその真実を証明することを可能にします。このため、ゼロ知識プロトコルは、データを入力として受け取り、「true」または「false」を出力するアルゴリズムに依存しています。
ゼロ知識プロトコルは次の基準を満たさなければなりません:
基本的な形で、ゼロ知識証明は、証人、挑戦、応答の3つの要素で構成されています。
上記は、'インタラクティブゼロ知識証明'の構造を説明しています。初期のゼロ知識プロトコルでは、文の妥当性を検証するには、証明者と検証者の間でのやり取りが必要でした。
相互証明がどのように機能するかを示す良い例は、ジャン=ジャック・キスカテールの有名なアリババの洞窟物語
物語では、ペギー(証明者)は、魔法の扉を開く秘密のフレーズを明かさずに、ヴィクター(検証者)にそのフレーズを知っていることを証明したいと思っています。
革新的でインタラクティブな証明は、2つの当事者が利用可能で繰り返しやり取りする必要があったため、限られた有用性しか持っていませんでした。検証者が証明者の誠実さに納得しても、証拠は独立した検証のために利用できませんでした(新しい証明を計算するには、証明者と検証者の間で新しいメッセージのセットが必要でした)。
この問題を解決するために、Manuel Blum、Paul Feldman、およびSilvio Micaliは最初の提案をしました非対話型ゼロ知識証明
検証者と検証者が共有キーを持っている場合、これにより検証者は情報(すなわち、証人)の知識を提供せずにその情報を証明することができます。
対話型証明とは異なり、非対話型証明は参加者(証明者と検証者)間で1ラウンドの通信のみが必要でした。証明者は秘密情報を特別なアルゴリズムに渡してゼロ知識証明を計算します。この証明は検証者に送信され、検証者は別のアルゴリズムを使用して証明者が秘密情報を知っていることを確認します。
非対話型証明は、証明者と検証者の間の通信を減らし、ZK-証明をより効率的にします。さらに、証明が生成されると、それは共有キーと検証アルゴリズムへのアクセス権を持つ他の誰でも検証できます。
非対話型証明は、ゼロ知識技術にとって画期的なものであり、現在使用されている証明システムの開発を促進しました。以下でこれらの証明タイプについて説明します。
ZK-SNARKはZero-Knowledge Succinct Non-Interactive Argument of Knowledgeの頭字語です。 ZK-SNARKプロトコルには次の特性があります:
先に言及した '共有キー' とは、証明者と検証者が生成および検証のために合意する公共パラメータを指します。公共パラメータ(一般に Common Reference String (CRS) として知られています)を生成することは、プロトコルのセキュリティにおける重要性から、機密操作です。CRS の生成に使用されるエントロピー(ランダム性)が不正な証明者の手に渡ると、彼らは虚偽の証明を計算できます。
公共パラメータを生成する際のリスクを軽減する方法です。複数の当事者が参加します。信頼されたセットアップセレモニー
, それぞれの人がいくつかのランダムな値を貢献してCRSを生成します。1つの誠実な当事者が自分のエントロピーの部分を破壊すれば、ZK-SNARKプロトコルは計算上の妥当性を保持します。
信頼できるセットアップは、パラメータ生成の参加者を信頼する必要があります。しかし、ZK-STARKの開発により、信頼されていないセットアップで機能する証明プロトコルが可能になりました。
ZK-STARKは、Zero-Knowledge Scalable Transparent Argument of Knowledgeの頭字語です。ZK-STARKは、ZK-SNARKと類似していますが、次の点が異なります。
ZK-STARKsは通常、ZK-SNARKsよりも大きな証明を生成するため、一般的により高い検証オーバーヘッドを持ちます。ただし、大規模なデータセットを証明する場合など、ZK-STARKsの方がZK-SNARKsよりもコスト効果が高いケースもあります。
クレジットカードの支払いは、支払いプロバイダー、銀行、その他関係者(例:政府当局)など、複数の当事者によってしばしば見えます。金融監視は違法活動の特定に役立つ一方、一般市民のプライバシーを損なうこともあります。
暗号通貨は、ユーザーがプライベートでピア・ツー・ピアの取引を行う手段を提供することを意図していました。しかし、ほとんどの暗号通貨取引は公開されたブロックチェーン上で明らかになっています。ユーザーのアイデンティティはしばしば擬似的であり、意図的に実世界のアイデンティティにリンクされていたり(例:TwitterやGitHubプロファイルにETHアドレスを含めることによって)、または基本的なオンチェーンおよびオフチェーンのデータ分析を使用して実世界のアイデンティティと関連付けられることがあります。
完全匿名取引向けに設計された特定の「プライバシーコイン」があります。ZcashやMoneroなどのプライバシー重視のブロックチェーンは、送信者/受信者アドレス、資産タイプ、数量、取引のタイムラインなどの取引詳細を保護します。
プロトコルにゼロ知識技術を組み込むことで、プライバシーに焦点を当てたブロックチェーンネットワークは、ノードが取引データにアクセスする必要なく取引を検証することができます。
ゼロ知識証明は、公開ブロックチェーン上で取引を匿名化するためにも適用されています。その例として、Ethereum上でユーザーがプライベート取引を行うことを可能にする分散型の非キュストディアルサービスであるTornado Cashがあります。Tornado Cashは、取引の詳細を曖昧にし、財務プライバシーを保証するためにゼロ知識証明を使用しています。残念ながら、これらは「オプトイン」のプライバシーツールであるため、違法な活動と関連付けられています。これを克服するためには、プライバシーは最終的に公開ブロックチェーン上のデフォルトとならなければなりません。
現在のアイデンティティ管理システムは個人情報を危険にさらします。ゼロ知識証明は、個人がアイデンティティを検証するのに役立ち、同時に機密情報を保護します。
ゼロ知識証明は特にの文脈で特に有用です分散型アイデンティティ. 分散型アイデンティティ(自己主権アイデンティティとも呼ばれる)は個人に個人識別子へのアクセスを制御する機能を提供します。 納税番号やパスポートの詳細を明かさずに市民権を証明することは、ゼロ知識技術が分散型アイデンティティを可能にする良い例です。
オンラインサービスを利用するには、自分の身元やプラットフォームへのアクセス権を証明する必要があります。これには、名前、電子メールアドレス、生年月日などの個人情報を提供することがしばしば必要です。また、長いパスワードを覚えておく必要があるか、アクセス権を失うリスクがあります。
ただし、ゼロ知識証明は、両プラットフォームとユーザーの認証を簡単にすることができます。 ZKプルーフが生成されたら、ユーザーは単にそれを提示して、サービスにアクセスする際に自分の身元を認証できます。 これにより、ユーザーのエクスペリエンスが向上し、組織は膨大なユーザー情報を保存する必要性から解放されます。
検証可能な計算は、ブロックチェーン設計の改善のためのゼロ知識技術の別の応用です。検証可能なコンピューティングは、他のエンティティに計算を外部委託しながら、検証可能な結果を維持することを可能にします。エンティティは、プログラムが正しく実行されたことを検証する証拠とともに結果を提出します。
検証可能な計算は、セキュリティを低下させることなく、ブロックチェーン上の処理速度を向上させる上で重要です。これを理解するには、Ethereumのスケーリングのための提案されたソリューションの違いを知っていることが必要です。
オンチェーンスケーリングソリューション、シャーディングなどのようなものは、ブロックチェーンの基本層を広範囲に修正する必要があります。しかし、このアプローチは非常に複雑で、実装上のエラーがEthereumのセキュリティモデルを損なう可能性があります。
オフチェーンスケーリングソリューションコアのEthereumプロトコルを再設計する必要はありません。代わりに、Ethereumの基本層のスループットを向上させるために、アウトソーシングされた計算モデルに依存しています。
実践での動作方法は次のとおりです:
ここでの利点は、イーサリアムが実行を行う必要がなく、外部の計算結果を状態に適用するだけで済むことです。これによりネットワークの混雑が軽減され、トランザクションの速度も向上します(オフチェーンプロトコルはより高速な実行を最適化しています)。
チェーンは、オフチェーン取引を再実行せずに検証する方法が必要です。そうでないと、オフチェーン実行の価値が失われます。
これが検証可能な計算が重要となるポイントです。ノードがイーサリアムの外でトランザクションを実行する際、オフチェーン実行の正確性を証明するためにゼロ知識証明を提出します。この証明(
バリデーションプルーフ)は、取引が有効であることを保証し、イーサリアムがその結果を状態に適用できるようにするものであり、誰かがそれに異議を唱えるのを待つ必要はありません。
ゼロ知識ロールアップそしてvalidiumsは、セキュアなスケーラビリティを提供するために有効性証明を使用する2つのオフチェーンスケーリングソリューションです。これらのプロトコルは、オフチェーンで数千の取引を実行し、イーサリアム上で検証のための証明を提出します。その結果は、証明が検証されるとすぐに適用でき、イーサリアムがベースレイヤー上での計算を増やさずにより多くの取引を処理できます。
ブロックチェーン投票システムには多くの好ましい特性があります: それらは完全に監査可能で、攻撃に対して安全で、検閲に対抗し、地理的制約から解放されています。しかし、オンチェーンの投票システムでさえ、共謀の問題に免疫ではありません。
「オープンな競争を制限するために共謀し、他者を欺き、詐欺し、誤解させること」と定義される共謀は、悪意のある行為者が賄賂を提供して投票を影響させる形を取ることがあります。 例えば、アリスは、自分がオプションAを好むにも関わらず、ボブからオプションBに投票するための賄賂を受け取るかもしれません。
贈収賄や共謀は、投票を信号機構として使用するプロセスの効果を制限します(特にユーザーが投票した方法を証明できる場合)。これは、特に投票が希少なリソースを割り当てるための責任がある場合、重大な影響を与える可能性があります。
例えば、二次資金調達メカニズム
寄付に頼って、さまざまな公共物件の中で特定のオプションの選好を測定します。各寄付は特定のプロジェクトへの「投票」として数えられ、より多くの投票を受けたプロジェクトがマッチングプールからより多くの資金を受け取ります。
オンチェーン投票を使用すると、二次資金調達は共謀に対して脆弱になります:ブロックチェーン取引は公開されているため、賄賂を受ける側のオンチェーンの活動を調査することができ、どのように「投票」したかが分かります。このように、二次資金調達は、コミュニティの集約された選好に基づいて資金を割り当てるための効果的な手段ではなくなります。
幸いなことに、MACI(最小アンチ共謀インフラストラクチャ)などの新しいソリューションでは、ゼロ知識証明を使用して、オンチェーン投票(例:二次資金調達メカニズム)を賄賂や共謀に対して耐性を持たせています。MACIは、中央管理者(「コーディネーター」と呼ばれる)が投票を集計し、個々の投票方法の詳細を明らかにせずに結果を集計できる一連のスマートコントラクトとスクリプトです。それでも、投票が適切に集計されたことを検証したり、特定の個人が投票ラウンドに参加したことを確認することは可能です。
最初に、コーディネーターはMACI契約をEthereumに展開し、その後、ユーザーは投票にサインアップできます(スマート契約に公開鍵を登録することで)。 ユーザーは、スマート契約に彼らの公開鍵で暗号化されたメッセージを送信することで投票を行います(有効な投票は、他の基準の中でユーザーのアイデンティティに関連付けられた最新の公開鍵で署名されている必要があります)。 その後、コーディネーターは、投票期間が終了すると、すべてのメッセージを処理し、投票を集計し、チェーン上で結果を検証します。
MACIでは、コーディネーターが投票を誤って処理したり、集計結果を誤って計算することを不可能にするために、ゼロ知識証明が使用されています。これは、コーディネーターにZK-SNARK証明を生成するよう要求することによって実現されます。これにより、a) すべてのメッセージが正しく処理されたこと、b) 最終結果がすべての有効な投票の合計に対応していることが検証されます。
そのため、通常の場合と同様に、ユーザーごとの投票の内訳を共有しなくても、MACIは集計プロセス中に計算された結果の整合性を保証します。この機能は、基本的な共謀計画の効果を低下させるのに役立ちます。ボブがアリスに賄賂を贈って特定のオプションに投票するように依頼するという前述の例を使用して、この可能性を探ることができます。
MACIを使用するには、コーディネーターが賄賂を受け取る者と共謀したり、投票者自体に賄賂を提供しようとしないことを信頼する必要があります。 コーディネーターはユーザーメッセージを復号化できるので(証拠を作成するために必要)、各個人がどのように投票したかを正確に検証できます。
しかし、コーディネータが正直である場合、MACIはオンチェーン投票の信頼性を保証する強力なツールを表します。これが、二次資金提供アプリケーションの間で人気がある理由です(例えば、clr.fund
)それは個々の投票選択の信頼性に大きく依存しています。
.
ゼロ知識証明の生成には、非常に複雑な計算が必要であり、専用マシンで最も効果的に実行されます。これらのマシンは高価なため、一般の個人には手の届かないことがしばしばあります。さらに、ゼロ知識技術を使用したいアプリケーションは、ハードウェアコストを考慮に入れる必要があります。これはエンドユーザーのコストを増加させる可能性があります。
証明の検証には複雑な計算が必要であり、アプリケーションでゼロ知識技術を実装するコストが増加します。このコストは特に計算の検証の文脈で重要です。たとえば、ZK-rollupsは、イーサリアム上で1つのZK-SNARK証明を検証するのに約500,000ガスを支払い、ZK-STARKsはさらに高い手数料が必要です。
ZK-SNARKでは、一般参照文字列(公開パラメータ)は一度生成され、ゼロ知識プロトコルに参加したい当事者に再利用可能です。公開パラメータは信頼されたセットアップセレモニーを通じて作成され、参加者が正直であると仮定されます。
ただし、ユーザーが参加者の誠実さを評価する方法は実際にはありません。ユーザーは開発者の言葉を信じなければなりません。ZK-STARKsは、文字列を生成する際に使用されるランダム性が公開可能であるため、信頼前提から解放されています。一方、研究者は、ZK-SNARKsのための信頼されていないセットアップに取り組んでおり、証明メカニズムのセキュリティを高めています。
ZK-SNARKは楕円曲線暗号を使用します
ECDSA) for encryption. ECDSAアルゴリズムは現在は安全ですが、将来的には量子コンピューターの開発によってそのセキュリティモデルが崩壊する可能性があります。
ZK-STARKは、暗号化に衝突耐性ハッシュを使用しているため、量子コンピューティングの脅威に対して免疫力があると考えられています。楕円曲線暗号に使用される公開鍵・秘密鍵ペアとは異なり、衝突耐性のハッシングは量子コンピューティングアルゴリズムにとって破るのがより難しいです。
ゼロ知識プロトコルは、1つの当事者(証明者)が、他の当事者(検証者)に、特定の文が真実であることを除いて、情報を一切明かさずに証明できる方法です。
ゼロ知識証明は数年の間に改善され、現在はいくつかの実世界のアプリケーションで使用されています。
ゼロ知識証明は、応用暗号化において画期的な進歩を表しており、個人の情報セキュリティを向上させることを約束しています。別の当事者(たとえばサービスプロバイダー)に主張(例:「私はX国の市民です」)を証明する方法を考えてみてください。ナショナルパスポートや運転免許証などの「証拠」として主張を裏付ける必要があります。
しかし、このアプローチには問題点があります。主にプライバシーの欠如です。第三者サービスと共有される個人を特定できる情報(PII)は、ハッキングのリスクにさらされる中央データベースに保存されています。身元盗用が重大な問題となっている中、機密情報を共有するためのプライバシー保護手段が求められています。
ゼロ知識証明は、主張の妥当性を証明するために情報を明らかにする必要がないようにすることで、この問題を解決します。ゼロ知識プロトコルは、主張(証人と呼ばれる)を入力として使用して、その妥当性の簡潔な証明を生成します。この証明は、その主張が真実であることを強力に保証し、それを作成する際に使用された情報を公開せずに済みます。
先ほどの例に戻ると、市民権主張を証明するために必要な唯一の証拠は、ゼロ知識証明です。検証者は、証明の特定の属性が真実であるかどうかをチェックするだけで、基になる文が真実であると納得することができます。
ゼロ知識証明は、文の内容を共有せずにその真実を証明することを可能にします。このため、ゼロ知識プロトコルは、データを入力として受け取り、「true」または「false」を出力するアルゴリズムに依存しています。
ゼロ知識プロトコルは次の基準を満たさなければなりません:
基本的な形で、ゼロ知識証明は、証人、挑戦、応答の3つの要素で構成されています。
上記は、'インタラクティブゼロ知識証明'の構造を説明しています。初期のゼロ知識プロトコルでは、文の妥当性を検証するには、証明者と検証者の間でのやり取りが必要でした。
相互証明がどのように機能するかを示す良い例は、ジャン=ジャック・キスカテールの有名なアリババの洞窟物語
物語では、ペギー(証明者)は、魔法の扉を開く秘密のフレーズを明かさずに、ヴィクター(検証者)にそのフレーズを知っていることを証明したいと思っています。
革新的でインタラクティブな証明は、2つの当事者が利用可能で繰り返しやり取りする必要があったため、限られた有用性しか持っていませんでした。検証者が証明者の誠実さに納得しても、証拠は独立した検証のために利用できませんでした(新しい証明を計算するには、証明者と検証者の間で新しいメッセージのセットが必要でした)。
この問題を解決するために、Manuel Blum、Paul Feldman、およびSilvio Micaliは最初の提案をしました非対話型ゼロ知識証明
検証者と検証者が共有キーを持っている場合、これにより検証者は情報(すなわち、証人)の知識を提供せずにその情報を証明することができます。
対話型証明とは異なり、非対話型証明は参加者(証明者と検証者)間で1ラウンドの通信のみが必要でした。証明者は秘密情報を特別なアルゴリズムに渡してゼロ知識証明を計算します。この証明は検証者に送信され、検証者は別のアルゴリズムを使用して証明者が秘密情報を知っていることを確認します。
非対話型証明は、証明者と検証者の間の通信を減らし、ZK-証明をより効率的にします。さらに、証明が生成されると、それは共有キーと検証アルゴリズムへのアクセス権を持つ他の誰でも検証できます。
非対話型証明は、ゼロ知識技術にとって画期的なものであり、現在使用されている証明システムの開発を促進しました。以下でこれらの証明タイプについて説明します。
ZK-SNARKはZero-Knowledge Succinct Non-Interactive Argument of Knowledgeの頭字語です。 ZK-SNARKプロトコルには次の特性があります:
先に言及した '共有キー' とは、証明者と検証者が生成および検証のために合意する公共パラメータを指します。公共パラメータ(一般に Common Reference String (CRS) として知られています)を生成することは、プロトコルのセキュリティにおける重要性から、機密操作です。CRS の生成に使用されるエントロピー(ランダム性)が不正な証明者の手に渡ると、彼らは虚偽の証明を計算できます。
公共パラメータを生成する際のリスクを軽減する方法です。複数の当事者が参加します。信頼されたセットアップセレモニー
, それぞれの人がいくつかのランダムな値を貢献してCRSを生成します。1つの誠実な当事者が自分のエントロピーの部分を破壊すれば、ZK-SNARKプロトコルは計算上の妥当性を保持します。
信頼できるセットアップは、パラメータ生成の参加者を信頼する必要があります。しかし、ZK-STARKの開発により、信頼されていないセットアップで機能する証明プロトコルが可能になりました。
ZK-STARKは、Zero-Knowledge Scalable Transparent Argument of Knowledgeの頭字語です。ZK-STARKは、ZK-SNARKと類似していますが、次の点が異なります。
ZK-STARKsは通常、ZK-SNARKsよりも大きな証明を生成するため、一般的により高い検証オーバーヘッドを持ちます。ただし、大規模なデータセットを証明する場合など、ZK-STARKsの方がZK-SNARKsよりもコスト効果が高いケースもあります。
クレジットカードの支払いは、支払いプロバイダー、銀行、その他関係者(例:政府当局)など、複数の当事者によってしばしば見えます。金融監視は違法活動の特定に役立つ一方、一般市民のプライバシーを損なうこともあります。
暗号通貨は、ユーザーがプライベートでピア・ツー・ピアの取引を行う手段を提供することを意図していました。しかし、ほとんどの暗号通貨取引は公開されたブロックチェーン上で明らかになっています。ユーザーのアイデンティティはしばしば擬似的であり、意図的に実世界のアイデンティティにリンクされていたり(例:TwitterやGitHubプロファイルにETHアドレスを含めることによって)、または基本的なオンチェーンおよびオフチェーンのデータ分析を使用して実世界のアイデンティティと関連付けられることがあります。
完全匿名取引向けに設計された特定の「プライバシーコイン」があります。ZcashやMoneroなどのプライバシー重視のブロックチェーンは、送信者/受信者アドレス、資産タイプ、数量、取引のタイムラインなどの取引詳細を保護します。
プロトコルにゼロ知識技術を組み込むことで、プライバシーに焦点を当てたブロックチェーンネットワークは、ノードが取引データにアクセスする必要なく取引を検証することができます。
ゼロ知識証明は、公開ブロックチェーン上で取引を匿名化するためにも適用されています。その例として、Ethereum上でユーザーがプライベート取引を行うことを可能にする分散型の非キュストディアルサービスであるTornado Cashがあります。Tornado Cashは、取引の詳細を曖昧にし、財務プライバシーを保証するためにゼロ知識証明を使用しています。残念ながら、これらは「オプトイン」のプライバシーツールであるため、違法な活動と関連付けられています。これを克服するためには、プライバシーは最終的に公開ブロックチェーン上のデフォルトとならなければなりません。
現在のアイデンティティ管理システムは個人情報を危険にさらします。ゼロ知識証明は、個人がアイデンティティを検証するのに役立ち、同時に機密情報を保護します。
ゼロ知識証明は特にの文脈で特に有用です分散型アイデンティティ. 分散型アイデンティティ(自己主権アイデンティティとも呼ばれる)は個人に個人識別子へのアクセスを制御する機能を提供します。 納税番号やパスポートの詳細を明かさずに市民権を証明することは、ゼロ知識技術が分散型アイデンティティを可能にする良い例です。
オンラインサービスを利用するには、自分の身元やプラットフォームへのアクセス権を証明する必要があります。これには、名前、電子メールアドレス、生年月日などの個人情報を提供することがしばしば必要です。また、長いパスワードを覚えておく必要があるか、アクセス権を失うリスクがあります。
ただし、ゼロ知識証明は、両プラットフォームとユーザーの認証を簡単にすることができます。 ZKプルーフが生成されたら、ユーザーは単にそれを提示して、サービスにアクセスする際に自分の身元を認証できます。 これにより、ユーザーのエクスペリエンスが向上し、組織は膨大なユーザー情報を保存する必要性から解放されます。
検証可能な計算は、ブロックチェーン設計の改善のためのゼロ知識技術の別の応用です。検証可能なコンピューティングは、他のエンティティに計算を外部委託しながら、検証可能な結果を維持することを可能にします。エンティティは、プログラムが正しく実行されたことを検証する証拠とともに結果を提出します。
検証可能な計算は、セキュリティを低下させることなく、ブロックチェーン上の処理速度を向上させる上で重要です。これを理解するには、Ethereumのスケーリングのための提案されたソリューションの違いを知っていることが必要です。
オンチェーンスケーリングソリューション、シャーディングなどのようなものは、ブロックチェーンの基本層を広範囲に修正する必要があります。しかし、このアプローチは非常に複雑で、実装上のエラーがEthereumのセキュリティモデルを損なう可能性があります。
オフチェーンスケーリングソリューションコアのEthereumプロトコルを再設計する必要はありません。代わりに、Ethereumの基本層のスループットを向上させるために、アウトソーシングされた計算モデルに依存しています。
実践での動作方法は次のとおりです:
ここでの利点は、イーサリアムが実行を行う必要がなく、外部の計算結果を状態に適用するだけで済むことです。これによりネットワークの混雑が軽減され、トランザクションの速度も向上します(オフチェーンプロトコルはより高速な実行を最適化しています)。
チェーンは、オフチェーン取引を再実行せずに検証する方法が必要です。そうでないと、オフチェーン実行の価値が失われます。
これが検証可能な計算が重要となるポイントです。ノードがイーサリアムの外でトランザクションを実行する際、オフチェーン実行の正確性を証明するためにゼロ知識証明を提出します。この証明(
バリデーションプルーフ)は、取引が有効であることを保証し、イーサリアムがその結果を状態に適用できるようにするものであり、誰かがそれに異議を唱えるのを待つ必要はありません。
ゼロ知識ロールアップそしてvalidiumsは、セキュアなスケーラビリティを提供するために有効性証明を使用する2つのオフチェーンスケーリングソリューションです。これらのプロトコルは、オフチェーンで数千の取引を実行し、イーサリアム上で検証のための証明を提出します。その結果は、証明が検証されるとすぐに適用でき、イーサリアムがベースレイヤー上での計算を増やさずにより多くの取引を処理できます。
ブロックチェーン投票システムには多くの好ましい特性があります: それらは完全に監査可能で、攻撃に対して安全で、検閲に対抗し、地理的制約から解放されています。しかし、オンチェーンの投票システムでさえ、共謀の問題に免疫ではありません。
「オープンな競争を制限するために共謀し、他者を欺き、詐欺し、誤解させること」と定義される共謀は、悪意のある行為者が賄賂を提供して投票を影響させる形を取ることがあります。 例えば、アリスは、自分がオプションAを好むにも関わらず、ボブからオプションBに投票するための賄賂を受け取るかもしれません。
贈収賄や共謀は、投票を信号機構として使用するプロセスの効果を制限します(特にユーザーが投票した方法を証明できる場合)。これは、特に投票が希少なリソースを割り当てるための責任がある場合、重大な影響を与える可能性があります。
例えば、二次資金調達メカニズム
寄付に頼って、さまざまな公共物件の中で特定のオプションの選好を測定します。各寄付は特定のプロジェクトへの「投票」として数えられ、より多くの投票を受けたプロジェクトがマッチングプールからより多くの資金を受け取ります。
オンチェーン投票を使用すると、二次資金調達は共謀に対して脆弱になります:ブロックチェーン取引は公開されているため、賄賂を受ける側のオンチェーンの活動を調査することができ、どのように「投票」したかが分かります。このように、二次資金調達は、コミュニティの集約された選好に基づいて資金を割り当てるための効果的な手段ではなくなります。
幸いなことに、MACI(最小アンチ共謀インフラストラクチャ)などの新しいソリューションでは、ゼロ知識証明を使用して、オンチェーン投票(例:二次資金調達メカニズム)を賄賂や共謀に対して耐性を持たせています。MACIは、中央管理者(「コーディネーター」と呼ばれる)が投票を集計し、個々の投票方法の詳細を明らかにせずに結果を集計できる一連のスマートコントラクトとスクリプトです。それでも、投票が適切に集計されたことを検証したり、特定の個人が投票ラウンドに参加したことを確認することは可能です。
最初に、コーディネーターはMACI契約をEthereumに展開し、その後、ユーザーは投票にサインアップできます(スマート契約に公開鍵を登録することで)。 ユーザーは、スマート契約に彼らの公開鍵で暗号化されたメッセージを送信することで投票を行います(有効な投票は、他の基準の中でユーザーのアイデンティティに関連付けられた最新の公開鍵で署名されている必要があります)。 その後、コーディネーターは、投票期間が終了すると、すべてのメッセージを処理し、投票を集計し、チェーン上で結果を検証します。
MACIでは、コーディネーターが投票を誤って処理したり、集計結果を誤って計算することを不可能にするために、ゼロ知識証明が使用されています。これは、コーディネーターにZK-SNARK証明を生成するよう要求することによって実現されます。これにより、a) すべてのメッセージが正しく処理されたこと、b) 最終結果がすべての有効な投票の合計に対応していることが検証されます。
そのため、通常の場合と同様に、ユーザーごとの投票の内訳を共有しなくても、MACIは集計プロセス中に計算された結果の整合性を保証します。この機能は、基本的な共謀計画の効果を低下させるのに役立ちます。ボブがアリスに賄賂を贈って特定のオプションに投票するように依頼するという前述の例を使用して、この可能性を探ることができます。
MACIを使用するには、コーディネーターが賄賂を受け取る者と共謀したり、投票者自体に賄賂を提供しようとしないことを信頼する必要があります。 コーディネーターはユーザーメッセージを復号化できるので(証拠を作成するために必要)、各個人がどのように投票したかを正確に検証できます。
しかし、コーディネータが正直である場合、MACIはオンチェーン投票の信頼性を保証する強力なツールを表します。これが、二次資金提供アプリケーションの間で人気がある理由です(例えば、clr.fund
)それは個々の投票選択の信頼性に大きく依存しています。
.
ゼロ知識証明の生成には、非常に複雑な計算が必要であり、専用マシンで最も効果的に実行されます。これらのマシンは高価なため、一般の個人には手の届かないことがしばしばあります。さらに、ゼロ知識技術を使用したいアプリケーションは、ハードウェアコストを考慮に入れる必要があります。これはエンドユーザーのコストを増加させる可能性があります。
証明の検証には複雑な計算が必要であり、アプリケーションでゼロ知識技術を実装するコストが増加します。このコストは特に計算の検証の文脈で重要です。たとえば、ZK-rollupsは、イーサリアム上で1つのZK-SNARK証明を検証するのに約500,000ガスを支払い、ZK-STARKsはさらに高い手数料が必要です。
ZK-SNARKでは、一般参照文字列(公開パラメータ)は一度生成され、ゼロ知識プロトコルに参加したい当事者に再利用可能です。公開パラメータは信頼されたセットアップセレモニーを通じて作成され、参加者が正直であると仮定されます。
ただし、ユーザーが参加者の誠実さを評価する方法は実際にはありません。ユーザーは開発者の言葉を信じなければなりません。ZK-STARKsは、文字列を生成する際に使用されるランダム性が公開可能であるため、信頼前提から解放されています。一方、研究者は、ZK-SNARKsのための信頼されていないセットアップに取り組んでおり、証明メカニズムのセキュリティを高めています。
ZK-SNARKは楕円曲線暗号を使用します
ECDSA) for encryption. ECDSAアルゴリズムは現在は安全ですが、将来的には量子コンピューターの開発によってそのセキュリティモデルが崩壊する可能性があります。
ZK-STARKは、暗号化に衝突耐性ハッシュを使用しているため、量子コンピューティングの脅威に対して免疫力があると考えられています。楕円曲線暗号に使用される公開鍵・秘密鍵ペアとは異なり、衝突耐性のハッシングは量子コンピューティングアルゴリズムにとって破るのがより難しいです。