Cardano FoundationがCardano上でゼロ知識証明を検証する方法を示す

全5回の開発者向けシリーズの第1回は、Plutus V3で既に利用可能な暗号操作を用いて、192バイトのGroth16証明を構築し、Aikenで検証する方法を示す。

By SongMarketCap

Updated:

Cardano News - Cardano FoundationがCardano上でゼロ知識証明を検証する方法を示す

Cardanoのスマートコントラクトは、数値自体を受け取ることなく、ある方程式を満たす8つの数を誰かが知っているかどうかを確認できる。Cardano Foundationはその例を用いて、ゼロ知識証明に関する新しいシリーズを紹介している。最初のチュートリアルは、方程式を制約の集合として記述することから、オフチェーンで証明を生成し、Aikenのテストで検証するまでの過程を追う。

非公開の8つの数、公開の1つの結果

この例では8つの数を4組に分ける。各組の2つの数を掛け合わせ、4つの積を合計する。その合計は100でなければならない。その結果は公開される一方、8つの数自体は非公開のままだ。

チュートリアルはこの計算を5つの数学的制約として表現する。4つは各積を検査し、5つ目はそれらが公開の結果に等しくなることを確認する。有効な証明は、どの集合を用いたかを明かさずに、証明者がその制約を満たす数の集合を知っていることを示す。

Aikenが192バイトのGroth16証明を検証する方法

このチュートリアルでは証明をオフチェーンで生成する。Groth16の証明は、例で用いられている圧縮BLS12-381形式では192バイトを占める3つの楕円曲線上の点で構成される。検証者は公開入力と回路に結び付けられた検証鍵に対して証明を照合する。

ウォークスルーは、Cardanoメインネット上のPlutus V3スクリプトで利用可能なものと同じBLS12-381の演算を用いるAikenのテストで締めくくられる。例を再現可能にするため、チュートリアルは本来は秘密にされるセットアップの一部について固定された公知の値を使用している。本番のGroth16セットアップでは、その秘密のセットアップ値を保持している者は誰でも証明を偽造できてしまう。

Cardanoにとってオンチェーン検証が重要である理由

Cardanoの開発者は、既存のPlutus V3の演算を用いて、AikenのスマートコントラクトにGroth16の検証器を組み込むことができる。アプリケーションは証明をオフチェーンで生成し、それをコントラクトに渡して、バリデータがトランザクションが条件を満たすかどうかを判断できるようにすることができる。証明と必要な公開入力はバリデータが利用できる一方、根底にある非公開データはオフチェーンにとどめておける。

資格情報を扱うアプリケーションでは、その分離がユーザーが何を開示する必要があるかを決定する。回路と資格情報の設計が主張の検証を適切に担保していることを前提に、コントラクトは生年月日を受け取ることなく、資格保有者が年齢要件を満たしているかどうかを確認できる。

[NEWSBREAK]

今後の4回で扱う内容

第2回は、証明生成を高速化する方法と、本番のセットアップセレモニーがどのように機能するかを示す。また、Groth16を他の証明システムと比較し、ゼロ知識仮想マシンが開発者に手作業で回路を設計させることなく、プログラムが正しく実行されたことをどのように証明できるかを探る。

第3回は、鍵の所有証明をCardanoのアドレスにどのように結び付けられるかを示す。第4回は選択的開示に焦点を当てる。予定されている一つの例では、資格保有者が生年月日やブロックチェーンアドレスを明かすことなく、21歳以上であることを証明する。

最終回は耐量子性を備えた証明システムを検討し、Groth16で用いられている楕円曲線の仮定に代わり得る格子ベースの手法に焦点を当てる。