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

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

Yosuke
November 10, 2023

Web3 Global Hackathon : How to use ZKP and usecases

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 の元となるデータがあることを証明