Plonky2 ํ๋ ์์ํฌ๋ก ๋น๋ฐ ์ ๋ ฅ ์ฆ๋ช ํ๋ก๋ฅผ ๊ตฌ์ถํ๊ณ ๊ฒ์ฆํ๋ ZKP ๊ตฌํ ํจํด ํ์ต
๐ Practical Guide to ZKP: Learn Real Usecase of ZKP with Plonky2
AI ์์ฝ
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 ๋จ๊ณ๋ก ๋ถ๋ฆฌํจ์ผ๋ก์จ ๊ฒ์ฆ์์๊ฒ็งๅฏ๊ฐ์ ๋ ธ์ถํ์ง ์๊ณ ๋ ๊ณ์ฐ์ ์ ํจ์ฑ์ ์ฆ๋ช ํ ์ ์๋ค