ゼロ知識証明とMina Protocolと可能性
これは「Create Content About Mina Protocol in English and Japanese」に向けて書かれた記事です。ゼロ知識証明を中心に据えたMina Protocolはそれ自体だけでなくいわゆるWeb3技術、ブロックチェーンやDAGなどによる分散台帳システムの次の流れとしても非常に興味深く、良い機会なので書いてみました。指定されたテーマは「Getting Started with Mina Protocol 」ということなので基礎知識と私が感じている可能性についての記事になります。
ゼロ知識証明?
始めに、Mina Protocolの核となるゼロ知識証明とは何なのかについて説明します。おそらく多くの人が感じていると思いますが、このゼロ知識証明については検索してみても抽象的な説明やいきなり原理に踏み込んだ説明しかなく、私も最初は明確なイメージが掴めずに戸惑いました。結局ゼロ知識証明は何をしているのか、何ができるのか。
実は技術的・原理的な難易度が高いものの枠組みとしては単純で、ある種の数学的なパズルを用いて入力・計算(ゼロ知識証明では回路と言います)・出力の組み合わせを暗号化した状態のままそれが正しいと証明できる技術のことを指します。暗号化した状態では当然元の状態についての知識が使えない、ゼロなわけですから、ゼロ知識証明と呼ぶわけです。
ポイントは三点あって、まず暗号化した状態のまま証明できること。証明をネットのどこかに置いて自由にアクセスできるようにしておいても、秘密を明かしたい人以外には意味が解りません。
次に、入力・計算・出力の組み合わせの各部分について、公開と非公開を選択できることが挙げられます。例えば入力を現在の日付と生年月日、計算を成人しているかどうかの判定、出力を成人しているかどうかの真偽値とします。ここで生年月日だけを非公開の状態で証明を作成すると、生年月日というプライバシーを隠したまま、現在は成人していることを証明できるわけです。
最後に、そして一番重要なことは、証明できる内容に計算が含まれていることです。プログラムも計算ですから、プログラムの実行を証明できるということになります。これは分散系においては信頼を保証する社会的な手続きや、多数のサーバーによる重複実行のようなプロセスを経なくても自動的にプログラムの実行に一定範囲の信頼が担保できるのと等価です。この影響は多岐にわたりますが、代表的なものを挙げると以下のようになります
- プログラムの実行の証明のみをブロックチェーンに書き込むことで高速化する(ZkVM)
- プライバシーを保証するために病歴などのセンシティブなデータをクラウドや分散系で分析する際に「暗号化したままで計算したこと」を証明する(Zk-ML等)
- 計算に再帰的に別の証明の検証を含めることでブロックチェーンのログのような巨大で複雑な状態遷移を一つの小さな証明に集約する(再帰的ゼロ知識証明)
最後に挙げた再帰的ゼロ知識証明のユースケースの一つがMina Protocolです。
Mina Protocolについて
Mina Protocolは、先ほど述べた通り再帰的ゼロ知識証明を利用して軽量化したブロックチェーンで、携帯電話でも証明に参加できるとされています。
大きな特徴としては、公式のブログでも述べている通りスマートコントラクトが分散系のノードで実行されるのではなく、ローカルで実行されてその実行の証明のみが提出されることにあります。ゼロ知識証明の「実行の証明」の応用ですね。
これにより計算コストが低くかつスケールしやすく、またプライバシーを含んだデータの操作が小規模ならば手元で完結するので安全性が高くなります。典型的なプライバシー保護アプリであれば、開発難易度と運用コストがかなり下がるのではないでしょうか?
実際にドキュメントを読んでサンプルコードを弄ってみた感想なのですが、ゼロ知識証明を利用したアプリを手軽に開発、運用できるようにするツールチェーンだと思いました。ゼロ知識証明をTypeScriptで書くためのライブラリであり独立しての利用も可能なO1jsや再帰的ゼロ知識証明のチェーンを作るためのフレームワークであるprotokitと言ったライブラリ群に加えて、データの証明の置き場としてのブロックチェーンがあり、絶対に必要になるものはそろっているという印象を受けました。
Mina Protocolと可能性
繰り返しになりますが、Mina Protocolの大きな特徴にゼロ知識証明を生かしたスマートコントラクトのローカル実行があります。私が興味を惹かれている主な理由もこれで、大きく分けて二つの可能性があると考えています。
一つは、ブログのような従来のwebアプリのサーバーサイド処理のそれなりの部分をMina Protocolに委譲できるのではないかと考えています。実行の保証は現在はサーバー運営側に対する信頼がベースになっており、またサーバーとローカルの両方の処理を開発するのはいまだにそれなりの負担があります。それをローカルに大きく寄せることができ、実行の保証ができるのは相応に大きいと思います。
もう一つは、従来のブロックチェーンではコスト的に不可能だった大規模かつ複雑な状態の証明です。これにより、多人数参加の対戦ゲームの試合内容のような体験を丸ごと証明し、共有できます。
建築学の用語で、ゲニウス・ロキという土地や建物に紐づいた記憶を意味する言葉があります。例えば日本武道館は本来はその名前の通り武道のための施設でした。しかし、歴史的なコンサートがいくつも開催され、現在ではコンサート会場としての共有された記憶に強く結びつけられた施設になっています。
ネット上においてもこのゲニウス・ロキと同様に土地のようなキーを中心に体験を共有しあうことが出来たら、コンビニで仮想通貨が普通に使えるようになるようなものとはまた違ったWeb3技術の一般化につながる可能性があります。
そして、一歩引いてみると一つの技術の流れとしても面白いと思います。Mina ProtocolだけでなくAvaranchのretroアップデートのように、少しずつですが分散系での実行の証明に焦点を当てたものが出てきました。ブロックチェーンやDAGが最も得意とするのはまさにこの実行の保証であり、欠点として挙げられるコストの高さも長所として挙げられる送金処理の実装の容易さもこれがあるからです。そこに注力し、改善していこうという流れがあるのは期待がもてます。
まとめ
- ゼロ知識証明は入力・計算・出力の組み合わせを暗号化したまま証明する技術です
- 計算が対象に含まれているので、実行の保証をすることができます
- Mina Protocolはゼロ知識証明のユースケースの一つです
- 実行の保証を生かしたスマートコントラクトのローカル実行が特徴です
- 私はゼロ知識証明アプリを作るための便利なツールチェーンという印象をもちました
- Mina Protocolのローカル実行には可能性を感じています
- 従来のWebアプリの簡素化、容易化
- 体験を丸ごと証明し、共有する
- 一つの技術の流れとして、分散系での実行の証明に焦点を当てたものが出てきています
Discussion