Open6
Plonky2のまとめ
学習リソース
学習リソースはあまりない。testコードなどを読んで勉強するのが一番良さそう。
レポジトリ
論文
ドラフトということもあり、技術的な詳細もあまり触れられていない。
動画
実装例
- plonky2-semaphore
semaphoreというサービスのplonky2実装。Tornado cashの実装とほぼ同じ。
https://github.com/mir-protocol/plonky2-semaphore
次の動画の後半で、軽く解説がある。
-
examples(fork)
https://github.com/proxima-one/plonky2/blob/examples/examples/src/lib.rs -
plonky2-examples
いくつか実装を行ってみた
https://github.com/qope/plonky2-examples
コミュニティ
Polygon zero のdiscordにも結構情報が落ちている
学習の進め方
Plonky2 = Plonk + Fri
なのでPlonkとFriについてそれぞれ学習するのが良さそう。
Plonk
論文
解説記事
動画
Fri
FriはSTARKのサブルーチンで使われるテクニック
解説記事
チュートリアル
とても分かりやすい
FRIについて解説した記事を書きました
plonky2の特徴
- Transparent
Trusted setup が不要。 - Recursive proofの作成時間が世界最速でM1 Macで0.3sほど。圧倒的に速い。
- 算術化につかう有限体はGoldilocks Fieldと呼ばれる、
を法とする64bit有限体。サイズが小さいために有限体の演算が高速で、これがplonky2の高速化に大きく寄与している。FRIでは128bitに有限体を拡大し、健全性を保証する。p = 2^{64} - 2^{32} + 1
署名検証
-
ed25519
https://github.com/polymerdao/plonky2-ed25519
proof生成時間はM1 mac pro で40秒ほど -
secp256k1
proof生成時間はM1 mac pro で10秒ほど
複数の署名検証
plonky2はrecursive proofがcheapなので、複数の署名検証は並列証明→証明の集約化
になりそう
L1 Verifier
ブロックチェーンでplonky2の証明を検証するには次の3つの方法がある
- plonky2をWASMでコンパイルしてWASM contract対応のL1にデプロイする
`default-features = false"を指定してWASMにコンパイルする
- plonky2のproofをsolidityで検証する
- plonky2のproofをcircom回路でラップし、そのproofをL1で検証する