Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Web3 Global Hackathon : How to use ZKP and usec...

Avatar for Yosuke Yosuke
November 10, 2023

Web3 Global Hackathon : How to use ZKP and usecases

Avatar for Yosuke

Yosuke

November 10, 2023
Tweet

More Decks by Yosuke

Other Decks in Technology

Transcript

  1. ZKP (Zero Knowledge Proof) とは C(x, w) = z でw

    を明かすことなくC(x, w) = true であることを証明できる x : public input w : private input (witness) prover : w を公開することなくC(x,w) = true がなりたつ「proof (pr=P(pk,x,w)) 」を作成する varifier : 「proof 」の検証V(vk,x,pr) を行う proving key(pk) a verification key(vk) P(Prover) 例)x = ユーザーネーム, w = パスワード
  2. ZKP の種類 STARK : StarkWare Halo : scroll, Filecoin, Anoma

    Bulletproofs : Monero Groth16 : tornado cash, Zcash, Loopring, Polygon Hermez* PlonK : Aztec, zkSync, Mina Halo list : https://electriccoin.co/blog/halos-contribution-goes-beyond-efficiency/ Plonk list : https://zeroknowledge.fm/news-2-on-optimization-plonk/ Groth16 list : https://docs.gnark.consensys.net/Concepts/schemes_curves https://blog.pantherprotocol.io/zk-snarks-vs-zk-starks-differences-in-zero-knowledge-technologies/
  3. ZKP の種類 SNARKs 証明の生成は遅いが、Proof のサイ ズが小さく検証が早い STARKs 証明の生成は早いが、Proof のサイ ズが大きく検証が遅い

    Trusted setup が不要 + 量子耐性 証明するデータ量が多くなっても Proof のサイズがそこまで大きくな らない https://github.com/matter-labs/awesome-zero-knowledge-proofs?ref=blog.pantherprotocol.io#comparison-of-the- most-popular-zkp-systems https://ethereum.stackexchange.com/questions/59145/zk-snarks-vs-zk-starks-vs-bulletproofs-updated https://blog.chain.link/zk-snarks-vs-zk-starks/
  4. zk-SNARKs とは zkSNARKS = Succinct Non interactive ARgument of Knowledge

    Succint = 簡潔:実際のデータ量よりもproof のサイズ非常に小さい Non Interactive = 非対話式 : prover からverifier への情報の送信は一度きりで、両者間での往復する やりとりはない ARguement of Knowledge = 知識の根拠:proof は計算上確かなものとみなされるため、proof の元 となる情報を保持していない限り、システムをハックすることは困難 https://coincodecap.com/snarks-vs-starks-difference
  5. zkSNARKs の流れ 【開発者側】 circom でcircuit( 回路) の作成 1. circuit のcompile

    2. Trusted Setup* (Power Of Tau, phase2) 3. Solidity Verifier の作成 4. 【利用者側】 Prover のpublic / private input からProof の 生成 1. Proof をSolidity で検証 2. https://docs.circom.io/ https://github.com/tornadocash/tornado-core/blob/master/contracts/Tornado.sol#L76-L99
  6. Trusted setup とCeremony Trusted Setup ZKP を利用するために必要となる最初のパラ メータを生成するプロセスのこと パラメータを生成する際の秘密情報* が漏洩し

    てしまうと虚偽のproof が生成できてしまう しかし、private input は算出することはでき ない *toxic waste https://inevitableeth.com/en/home/ethereum/upgrades/scaling/data/proto-danksharding/kzg-ceremony
  7. zk-Rollup とは Optimism (Optimistic rollup) op-bacher : L2 のトランザクションを全てまとめてL1 に保存

    zkSync (zk Rollup) commit : L2 のトランザクションからなるCommit を保存 prove : Commit の元となるデータがあることを証明