ํ”ผ๋“œ๋กœ ๋Œ์•„๊ฐ€๊ธฐ
๐Ÿ” Practical Guide to ZKP: Learn Real Usecase of ZKP with Plonky2
Dev.toDev.to
Security

Plonky2 ํ”„๋ ˆ์ž„์›Œํฌ๋กœ ๋น„๋ฐ€ ์ž…๋ ฅ ์ฆ๋ช… ํšŒ๋กœ๋ฅผ ๊ตฌ์ถ•ํ•˜๊ณ  ๊ฒ€์ฆํ•˜๋Š” ZKP ๊ตฌํ˜„ ํŒจํ„ด ํ•™์Šต

๐Ÿ” Practical Guide to ZKP: Learn Real Usecase of ZKP with Plonky2

Toshiya Matsumoto2026๋…„ 3์›” 31์ผ18๋ถ„intermediate

Context

๊ธฐ์กด ๋น„๋ฐ€ ์ •๋ณด ์ฆ๋ช… ์‹œ์Šคํ…œ์€ ์›๋ณธ ๋ฐ์ดํ„ฐ๋ฅผ ๊ณต์œ ํ•˜๊ฑฐ๋‚˜ ๋ณ„๋„ ์‹ ๋ขฐ ์„œ๋ฒ„๊ฐ€ ํ•„์š”ํ–ˆ๋‹ค. ๊ฒ€์ฆ์ž๊ฐ€ ๊ฒฐ๊ณผ๋งŒ ํ™•์ธํ•˜๋ฉด์„œ๋„ ๋น„๋ฐ€ ๊ฐ’์„ ์•Œ ์ˆ˜ ์—†๋Š” ๋ฐฉ์‹์ด ์—†์—ˆ๋‹ค.

Technical Solution

  • ZKP ํšŒ๋กœ๋ฅผ Circuit, Prover, Verifier 3๊ฐœ ๋กœ ๋ถ„๋ฆฌํ•˜์—ฌ ๊ฒ€์ฆ ๊ทœ์น™๊ณผ ์ฆ๋ช… ์ƒ์„ฑ์„ ๋ถ„๋ฆฌ
  • CircuitBuilder๋กœ ์ œ์•ฝ ์กฐ๊ฑด์„ ์ •์˜ํ•˜๊ณ  builder.build()๋กœ CircuitData ์ƒ์„ฑ
  • PartialWitness์— ๋น„๋ฐ€ ์ž…๋ ฅ์„ ์„ค์ • ํ›„ data.prove(pw)๋กœ ์ฆ๋ช… ์ƒ์„ฑ
  • data.verify(proof)๋ฅผ ํ†ตํ•ด ๊ณต๊ฐœ ์ž…๋ ฅ๋งŒ์œผ๋กœ ๊ฒ€์ฆ ์ˆ˜ํ–‰
  • Hash Chain ํŒจํ„ด์œผ๋กœ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ์ˆœ์„œ๋ฅผ ์ฆ๋ช…ํ•˜๊ณ  State Transition ํŒจํ„ด์œผ๋กœ Merkle tree ์ƒํƒœ ๋ณ€๊ฒฝ์„ ์ฆ๋ช…

Impact

Plonky2๋Š” Rust ๊ธฐ๋ฐ˜ fast recursive SNARK์œผ๋กœ Poseidon ํ•ด์‹ฑ over Goldilocks ํ•„๋“œ ์‚ฌ์šฉ

Key Takeaway

ํšŒ๋กœ๋Š” ๊ฒ€์ฆ ๊ทœ์น™๋งŒ ์ •์˜ํ•˜๊ณ  ์‹ค์ œ ๋น„๋ฐ€ ๊ฐ’์€ ์ฆ๋ช… ์‹œ์ ์— Prover๊ฐ€ ์ž…๋ ฅํ•œ๋‹ค. ๊ฒ€์ฆ์ž๋Š” ๊ทœ์น™ ์œ„๋ฐ˜ ์—ฌ๋ถ€๋งŒ ํ™•์ธํ•˜๋ฉฐ ๋น„๋ฐ€ ๊ฐ’ ์ž์ฒด๋ฅผ ์•Œ ์ˆ˜ ์—†๋‹ค.


Rust ํ™˜๊ฒฝ์—์„œ Plonky2 CircuitBuilder ํŒจํ„ด์„ ์‚ฌ์šฉํ•˜์—ฌ ๋น„๋ฐ€ ์ž…๋ ฅ์„ ํšŒ๋กœ์— ์ •์˜ํ•˜๊ณ  PartialWitness๋กœ ์„ค์ • ํ›„ prove์™€ verify ๋‹จ๊ณ„๋กœ ๋ถ„๋ฆฌํ•จ์œผ๋กœ์จ ๊ฒ€์ฆ์ž์—๊ฒŒ็ง˜ๅฏ†๊ฐ’์„ ๋…ธ์ถœํ•˜์ง€ ์•Š๊ณ ๋„ ๊ณ„์‚ฐ์˜ ์œ ํšจ์„ฑ์„ ์ฆ๋ช…ํ•  ์ˆ˜ ์žˆ๋‹ค

์›๋ฌธ ์ฝ๊ธฐ