blockchainjapan’s blog

旬のブロックチェーンを記事を厳選して提供!

ZK Proofs 201:SNARK、STARK、トップユースケース


ZK Proofs 201:SNARK、STARK、トップユースケース

Pontem Network

翻訳・編集:Takeshi

この記事では、ゼロ知識(Zero Knowledge、zk)技術と暗号分野におけるユースケースについて、掘り下げていきます。

ゼロ知識とは?

まず、「ゼロ知識証明とは何か」を再確認しましょう:

ゼロ知識証明とは、ある秘密を知っていることを、その秘密を教えることなく、相手に納得させる方法です。

この考え方は1980年代に考え出されましたが、実際にゼロ知識証明の開発方法が発見されたのは、1991年の三色問題からです。

このシナリオでは、ノードを連結したグラフがあります。ノードは3色に着色できますが、隣接する2つのノードは異なる色に着色しなければなりません。

検証者に解の知識を与えずに、自分が解を知っていることを証明することが可能です。検証者が高い信頼度を得られるまで、(他のノードを見せずに)2つのノードを公開するだけで良いのです。これを非常に大きな配列で何度も繰り返すことで、複雑な問題のゼロ知識を計算で作り出すことができます。

この解決策は、ゼロ知識証明が可能であることを証明し、その後の技術革新と発展のバックボーンを形成しました。

ゼロ知識証明の基準

では、実際にゼロ知識証明(ZK -Proof、ZKP)の定義とは何なのかを見ていきましょう。ゼロ知識証明は、3つの条件を満たすことが条件です:

  • 完全性: ステートメントが真であれば、追加情報がなくても、検証者はその証明で納得できる。
  • 健全性: ステートメントが偽である場合、証明者は、証明によって検証者にそれが真であることを納得させることができない。
  • ゼロ知識: 検証者は、ステートメントが真であるという事実以外に、ステートメントに関する追加情報を一切学習しない。

インタラクティブな証明と非インタラクティブな証明

ゼロ知識証明のカテゴリーでは、必要なコミュニケーションの度合いに基づいて、2つのタイプに分類できます:

  • インタラクティブ(対話型)証明は、前後のコミュニケーションを通じて検証者を納得させるものです。トリコロールの例を思い出してください。あの場合、検証者はより多くのノード(色のついた丸)を見るように要求し、証明者はそれを何度も繰り返して明らかにしなければならなりません。つまり、証明者と検証者は何度もやりとりする必要があるのです。この方法はシンプルですが、ブロックチェーン取引のような複雑なタスクやコンピュータ化されたタスクには適していません。zk-rollupが1つのトランザクションを実行するためだけに、L1と何千回も通信する必要があるとしたら、手数料と遅延は耐え難いものになるでしょう。
  • インタラクティブ(非対話型)証明では、証明者と検証者の間で必要な通信を1メッセージに抑えます。検証者はアルゴリズムに置き換えられ、検証者は証明者にランダムな質問やテストを行います。証明は生成され、検証者に送られます。検証者は別のアルゴリズムを用いて、証明者がテストに関する予備知識を持たず、証明が完全性、健全性、ゼロ知識という基準を満たすことを確認します。非対話型証明の開発によって、より実用的なアプリケーションに使用できるようになりました。ほぼすべてのゼロ知識暗号ツールは、非対話型証明を使用しています。

非対話型証明の種類:SNARKとSTARK

SNARK(Succinct Non-Interactive Arguments of Knowledge)とSTARK(Scalable Transparent Arguments of Knowledge)は、ゼロ知識証明の最も一般的な2つのタイプです。

SNARKの最大の特徴は、検証者と証明者が非対話的にコミュニケーションできるような検証方法を生成することにあります。これは、CRS(Common Reference String)という、両者が証明の作成/検証に使用する公開パラメータを作成することで実現しています。

しかし、CRSの作成には欠点もあります。それは、誰かがそれを行わなければならないということです。これは、プロセスに他のエンティティが関与することになるため、セキュリティ上のリスクが発生します。(これは、信頼性を失わせることになります)。CRSを作成する際、関係者は機密情報にアクセスすることになり、偽の証明を作成するために利用される可能性があるのです。この情報は「toxic waste」と呼ばれ、CRSを作成したらすぐに削除しなければなりません。

CRSは多くの場合、関わるセキュリティリスクを抑えるために、multi-party computation (MPC)の設定式を用いて作成されます。この方法では、複数の当事者がCRSの作成に必要なtoxic wasteの一部を入力し、それを互いに隠しておきます。この場合最後に一人だけが自分のtoxic wasteを削除しさえすれば、CRSは安全となります。しかし、そうでないリスクも存在します。

STARKsは、CRSをなくすことで、この問題を解決しています。toxic wasteの代わりに、公に検証可能な方法を用いてパラメータがランダムに生成されます。このセキュリティ上の利点に加えて、STARKはSNARKよりも証明と検証の速度が速く、複雑な証明には適しています。主な欠点は、データの使用量にあり、STARKの証明はSNARKよりはるかに大きいことから使用コストが高くなります。

SNARKは、低コストで比較的単純であるため、多くのゼロ知識ツールで使用されています。最も有名なL2イーサリアムのロールアップであるzkSyncは、信頼できるセットアップ式を使っています。これには200人以上の参加者(Vitalik Buterinも)が含まれており、そのうちの1人だけが正直である限り、システム全体は安全です。zkSyncについては、次回の記事で詳しく紹介します。

同時に、特に高いセキュリティが必要な特定の場面でのみ、STARKが採用されることが多くなっています。

ロールアップ以外のユースケース

このゼロ知識を活用した仕組みを実際にどのように使うことができるのでしょうか。

L2ロールアップは最も発展したユースケースであり、zkSyncLoopringZKSpaceAztecなどがあります。しかし、ゼロ知識は急速に開発が進んでいる分野であり、常に新しいアプリケーションが生まれています。今回は、そのうちの2つ、アイデンティティとプライベート暗号通貨を見ていきましょう。

アイデンティティ

ゼロ知識の最も興味深い実装の1つは、本人確認です。暗号分野では、匿名や偽名を使うことが珍しくありません。Twitterで、ENSドメインとNFTだけで知られている主要なインフルエンサーを見たことがあるでしょう。

これは、キャリア全体を通して「undoxxed」のままである大規模なプロジェクトの創設者にまで及ぶことがあります。例えば、SushiSwapの元料理長で、現在はLayerZeroのメンバーである0xMakiがその一例です。

このことは、私たちが苦労して稼いだ現金を匿名の人物に託すことができるのか、という難しい問題を提起するものでもあります。暗号分野に身を置く人たちは、このような問題に臆することはないかもしれませんが、伝統的な金融のバックグラウンドを持つ人たちにとっては、飲み込むのが難しい問題となります。

ZKアイデンティティで解決できるシナリオを考えてみましょう:

  • 融資を申し込むために、匿名の債務者は、自分の身元、融資の規模、目的を明らかにすることなく、以前に融資を受けて期限内に返済したことを証明することができます。
  • DAOの提案やコミュニティの決定に意見を述べるとき、自分の身元やこれらの資格の正確な詳細を明らかにすることなく、自身のステークの大きさ、プロジェクトでの時間、より広い空間での評判を証明することができます。
  • エアドロップ、NFTのホワイトリスト、dAppへの早期アクセス、その他の独占的な機会を得るには、保有資産の規模、独占的なNFTのコレクション、豊富な取引履歴などを、この機密情報の性質を正確に明らかにすることなく証明することができます。

いくつかのプロジェクトがすでにゼロ知識IDソリューションの実装を開始しており、最も顕著なものはPolygon IDです。

Polygon IDは、Polygonブロックチェーンチームによって開発されたゼロ知識IDプラットフォームです。このプラットフォームは、エンドユーザーにはプライバシーを、dAppsやプロトコルにはオンチェーンでの検証を提供し、よりプライベートでより安全な環境を作り出します。Polygonの共同創業者であるMihailo Bjelicは、Polygon IDがデジタルIDで初めて「デフォルトでプライベートであり、オンチェーン検証を提供し、パーミションレスの認証を提供する」 と述べています。

プライベート暗号通貨

ゼロ知識は、余分な情報を明らかにすることなく取引や通信を行う強力な方法であり、暗号の重要な目的の1つであるプライバシーを向上させるための技術として注目されています。

数多くのプロジェクトが、取引の匿名化、ユーザーのプライバシーの保護、データの暗号化などにゼロ知識証明を採用しています。

その中でも最も有名なのがZcashで、2016年にローンチした際に「zk-SNARKsの最初の広範なアプリケーション」となりました。Zcashの「シールドトランザクション」は、取引の送信者、受信者、金額を完全に暗号化する。Zcashは、取引グラフも隠蔽するため、Zcashの取引を追跡することが極めて困難であることから、その技術はMoneroのような他のプライベート暗号通貨を超えると主張しています。Zcashの時価総額は現在4億9500万ドルで、24時間の出来高は3300万ドルとなっています。

Zcashの歴史の中で興味深いのは、歴史上最も有名な信頼できる設定である「The Ceremony」です。2016年にZcashをローンチするために、世界6カ所にまたがって2日間のプロセスで秘密鍵が生成されました。ここにはJPモルガンエドワード・スノーデンが参加したことでも知られています。

Zcash Ceremonyに使用されたコンピューターを破壊する:IEEE Spectrum

プライバシーにゼロ知識証明を採用したもう一つの例は、TRONブロックチェーンと暗号通貨です。2020年7月、TronTron 4.0にアップグレードし、SNARKをベースとしたTRONZプライバシープロトコルを導入しました。これによって、シールドされたTRC-20トークンのミント、シールドされていない形への変換、アドレス間のシールドされた転送という3種類のトランザクションがネットワークに追加されました。

ZcashとTronがL1であるのに対し、Aztecは暗号化指向のEthereumのL2です。zk-SNARKを使ってトランザクションをロールアップして手数料を下げつつ、完全に暗号化する仕組みを採用しています。そのAztec ConnectSDKによって、開発者は暗号化されたdAppsとDAOをEthereum上でも構築することが可能です。Aztec上に構築されたzk.moneyプロトコルは、暗号化と手数料の削減を実現したEthereum DeFiツールとなっています。

ゼロ知識証明は急速に発展している技術で、日々新しい機能やアプリケーションが開発されています。今後もこのシリーズの記事をリリースしていく予定です。Pontemの各コンテンツをフォローして、さらなるアップデートをお楽しみください!


Pontem Networkについて

Pontem Networkは、Aptosの基盤となるdAppsの最初のスイートを構築しているプロダクトスタジオです。Aptosチームと共に、世界中の最初の10億人のブロックチェーンユーザーのためのエコシステムを構築しています。

Pontem Walletは、ChromeFirefoxiOSで提供されているAptosエコシステムへの入り口となるツールです。ユーザーは、トークンの送受信、分散型アプリケーションへの接続、Aptosのエコシステムの探索がウォレット内で可能になります。

また、Pontemは、Move Code PlaygroundLiquidswapByteBabelなどのAptosの基盤となるdAppsを開発しています。

Pontem Networkの各コンテンツはこちら