smacon.dev logo

ゼロ知識証明を学ぼう | Web3 プログラミング, スマートコントラクト入門

ゼロ知識証明とは?

ゼロ知識証明は、これまでのシステムやサービスにおいてできなかったことをできるようにしてくれるしくみです。

準同型暗号や秘密計算といった数学の理論をもとにしており、秘密にしたい情報を公開せずに計算したり、証明したりするときに使います。

ゼロ知識証明自体は、ブロックチェーンに限らずどんな分野でも使うことができますが、ブロックチェーンの課題を解決するために Web3 界隈で活発に研究が進められてきました。

開発で使うためには数学やプログラミング、あるいはブロックチェーンの知識が必要ですが、ゼロ知識証明の概念を理解したり使うだけなら、誰にでもできます。

YouTube

YouTube のこの動画では、子供でもわかるようにゼロ知識証明を説明しています。

日本語字幕はまだありませんが、YouTube の自動翻訳を使えば理解の助けになると思います。

Computer Scientist Explains One Concept in 5 Levels of Difficulty | WIRED

Computer Scientist Explains One Concept in 5 Levels of Difficulty | WIRED

ゼロ知識証明を使った事例

ゼロ知識証明は、ブロックチェーンだけでなく既存の IT システムでも活用することができます。

台湾では、コロナ対策のためにゼロ知識証明や QR コードを使ってプライバシーを保護しながら個人情報を共有するシステムを開発して、社会に役立ったという事例があります。

ブロックチェーン的発想で社会を救う【オードリー・タン氏】

Zero-Knowledge University (zku.ONE)

ZKU (Zero-Knowledge University) ではオンラインでゼロ知識証明を体系的に学ぶことができます。

筆者は受講していないので詳細まで把握していませんが、2022 年時点でゼロ知識証明を学びたい人にとっては、ZKU がもっとも優れた環境の 1 つではないかと思います。

https://zku.one/

Ethereum L2 におけるゼロ知識証明

Ethereum のエコシステムにはスケーリングの課題があります。イーサリアムが世界中で使われるようになるとたくさんの処理をさばかなければなりません。そのために Rollup という手法が採用されました。

Rollup とはレイヤー 2 というブロックチェーンを作りその上で行われる取引を集約してレイヤー 1 である Ethereum にまとめて記録する方法です。

Rollup は大きく分けて Optimistic Rollup と ZK Rollup の 2 つの手法あります。 ZK Rollup の ZK はゼロ知識証明の Zero Knowledge です。

SNARK と STARK

ZK Rollup で使うゼロ知識証明には SNARK と STARK の 2 つのタイプがあります。

Zero-Knowledge Proofs: STARKs vs SNARKs

zk-SNARKs and zk-STARKs Explained

zkSNARKs vs zkSTARKs: a primer

SNARK と STARK にはそれぞれメリットがありますが、STARK のほうが SNARK よりあとに考案されており、SNARK のいくつかの弱点を補っています。

SNARK STARK
信頼すべき機関 必要 不要
量子コンピュータ耐性 なし あり

それなら、SNARK より STARK のほうがいいのかと言えば、必ずしもそうとは言えません。 SNARK を使った ZkSync なら Solidity の資産を活かすことができます。

SNARK を使ったプロトコル

  • ZkSync
  • Loopring
  • Polygon Hermez

STARK を使ったプロトコル

こちらもおすすめ