0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ゼロ知識証明とは?

ゼロ知識証明(Zero-Knowledge Proof, ZKP)とは、「ある主張が正しいこと」を証明する際に、その内容そのものは一切明かさずに証明だけを行う技術です。例えば、「私はある秘密のパスワードを知っている」という事実を、実際にそのパスワードを明かすことなく証明できます。

この技術は、認証、ブロックチェーン、プライバシー保護、選挙など多様な分野に応用されており、特にブロックチェーン分野では匿名性とセキュリティの両立に貢献しています。


zk-SNARKsとは?

zk-SNARKs(Zero-Knowledge Succinct Non-interactive ARgument of Knowledge)は、ゼロ知識証明の一種で、以下の特徴を持ちます。

  • Succinct(簡潔): 証明サイズが小さく、検証が高速
  • Non-interactive(非対話型): 1回のメッセージ送信で証明が完了
  • Argument of Knowledge(知識の主張): 特定の秘密を知っていることを保証

特にZcashのような匿名通貨や、機密情報を含むブロックチェーンアプリケーションで広く利用されています。


主なzk-SNARKsフレームワーク


libsnark

  • 著者/メンテナー: SCIPR Lab
  • リリース年: 2010年代中盤
  • 主な特徴: Zcashでも使われた、C++製の古典的zk-SNARKフレームワーク。PinocchioおよびGroth16を実装し、低レベルAPIでR1CS回路を組み立てる。
  • GitHub: [https://github.com/scipr-lab/libsnark]


gnark

  • 著者/メンテナー: ConsenSys
  • リリース年: 2020年代初頭
  • 主な特徴: Go言語製。Groth16およびPLONKをサポートし、高レベルAPIで直感的に回路設計が可能。GPU加速にも対応。
  • GitHub: [https://github.com/ConsenSys/gnark]


arkworks

  • 著者/メンテナー: arkworks contributors
  • リリース年: 2022年
  • 主な特徴: Rust製のモジュール式ZKPライブラリ群。Groth16、Marlin、PLONKなどをサポートし、PedersenやPoseidonなどのハッシュ関数を提供。
  • GitHub: [https://github.com/arkworks-rs]


Zokrates

  • 著者/メンテナー: Jacob Eberhardt, Stefan Tai
  • リリース年: 2018年
  • 主な特徴: Ethereum向け。Python風DSLで記述し、証明・検証・スマートコントラクト生成まで一貫サポート。
  • GitHub: [https://github.com/Zokrates/ZoKrates](


その他のzk-SNARK関連フレームワーク


hyraxZK

  • 特徴: 信頼できるセットアップ不要。Fiat-Shamir変換による非対話化。
  • GitHub: [https://github.com/hyraxZK/hyrax]


libspartan

  • 特徴: Spartan証明システムのRust実装。信頼できるセットアップ不要。
  • GitHub: [https://github.com/Microsoft/Spartan]


Mirage

  • 特徴: 普遍的な信頼セットアップ対応。Java実装。現在はメンテナンス困難。
  • GitHub: [https://github.com/miragezk/mirage](


LegoSNARK

  • 特徴: libsnarkベースのモジュール式zk-SNARKフレームワーク。
  • GitHub: [https://github.com/scipr-lab/lego-snark]


PySNARK

  • 特徴: Python構文で書けるZKPライブラリ。プロトタイピングに向く。
  • GitHub: [https://github.com/meilof/pysnark]


SnarkJS + RapidSNARK

  • 特徴: Circomで設計した回路を実行可能。RapidSNARKは高速版(C++/ASM)。

  • GitHub:

    • SnarkJS: [https://github.com/iden3/snarkjs]

  • RapidSNARK: [https://github.com/iden3/rapid-snark]


Virgo

  • 特徴: セットアップ不要な階層型対話式ZKP。未メンテ、ドキュメント不足。
  • GitHub: [https://github.com/vEngine/Virgo]


libiop (Aurora, Fractal)

  • 特徴: IOPベースのzk-SNARK。ポスト量子暗号に関心ある開発者向け。
  • GitHub: [https://github.com/scipr-lab/libiop]


Noir

  • 特徴: Rust風DSLで書ける高レベルZKP言語。ACIRで中間表現化。
  • GitHub: [https://github.com/noir-lang/noir]


Dusk-PLONK

  • 特徴: RustによるPLONK実装。低レベルゲート記述が必要。
  • GitHub: [https://github.com/dusk-network/plonk](


Halo2

  • 特徴: Zcash開発チーム製。再帰的証明が可能。低レベルだが強力なコミュニティあり。
  • GitHub: [https://github.com/zcash/halo2]


0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?