[Lookup table]
- 증명자가 table에 witness value가 존재한다고 주장할 수 있도록 미리 만들어 놓은 값. zkEVM에서 증명을 만들때 이 table에서 값을 가져와 연산의 정확성을 증명함
- 대표적인 솔루션: Plookup, Halo2 Lookup table
- Halo2를 사용하면 Plookup보다 universality가 높음
[Custom gate]
- circuit의 gate 수를 줄이고 설계의 유연성을 높이는 방법
- 일반 계산을 TinyRam에만 구현하는 것은 어렵기 때문에 계산의 간소화를 위해 custom gate를 채택
대표적인 솔루션
- turboPlonk: custom gate + Plonk
- UltraPlink: custom gate + Plonk + Lookup table
[Combined selector]
- zkEVM circuit을 설계할 때는 많은 custom gate를 정의해야하기 때문에 binary selector가 많이 도입됨
- Selector가 불필요하게 많이 있으면 증명 생성과 검증에 비용이 많이 발생하기 때문에, combined selector로 selector polynomial을 최적화시키는 방법을 고안해야함
[Recursive Proof]
- zkp에서 recursion이란, Relation (circuit) 안에서 이전에 생성된 proof를 verify하는 코드를 포함하는 것을 의미
- 10개의 트랜잭션을 검증하기 위해서는 10개의 증명 생성과 10번의 검증이 필요
- recursive는 10개의 증명을 한 개로 압축하기에, 한 번의 검증만 필요함
[Recursive Proof in Halo2]
- Halo는 circuit안에서 verify code를 효율적으로 수행할 수 있도록 설계된 알고리즘
- Halo는 recursion의 모든 step에서 verify code를 매번 실행하지 않고, 마지막 step에서 한 번만 실행
- 이를 위해 모든 step에서 원래 검증해야했던 이전 proof를 accumulate함
[블록체인과 영지식 증명 이해하기]
영지식 증명을 공부하면서 남겼던 글들입니다. 좀 더 수학적으로 깊이 영지식 증명을 이해하고 싶으신 분들에게 아래 글들을 순서대로 읽어보시는 것을 추천드립니다 :)
1편. 영지식 증명 이해하기 medium.com/@hyun-jeong/h-…
As a summary by @0xPolygonHermez
The zkEVM code has already been open-sourced!
Road to Mainnet of zkEVM:
✅ Q3 2022 - public testnet, permission-less
✅ Early 2023 - Mainnet.
먼저 각 서비스들의 zkEVM 특성 별로 분류해 봅시다. 이 분류는 앞으로 여러분이 zkEVM의 업데이트를 이해하는데 큰 도움이 될 것입니다. 1) zkVM @StarkWareLtd 2) custom zkEVM @0xPolygonHermez 3) native zkEVM @Scroll_ZKP @zksync -- 원래는 zkVM이었으나 zkEVM으로 구현 방향을 바꿈
1) zkVM (Language Level) @StarkWareLtd
- EVM과 Solidity는 영지식을 구현하기 좋은 환경이 아님
- 언어부터 영지식 친화적으로 설계하여 자체 VM에서 실행
- 장점: EVM 설계에 제한받지 않고, 당장 돌아갈 만큼 견고하며 오버헤드가 적음
- 단점: EVM 호환성 ❌, 개발 접근성이 떨어짐
[Verkle tree와 Merkle tree 간단 비교]
- Verkle tree는 ETH 2.0 업그레이드의 주요한 부분임
- Verkle tree는 기존 Merkle tree보다 증명 크기를 매우 작게 줄일 수 있음
- 이는 ETH 2.0 확장성에 큰 기여를 할 걸로 보임
👇detail
- Verkle tree와 Merkle tree의 가장 큰 차이는 원소(element)의 존재를 증명하기 위해 저장해야하는 데이터의 차이임
- Merkle tree: 32를 증명하기 위해서 빨간색 원소(sister node)를 모두 증명에 포함
- Verkle tree: pi_3를 증명하기 위해서 초록색 부분만 증명에 포함 vitalik.ca/general/2021/0…
대신 Verkle tree는 root 부터 pi_3원소까지의 경로를 함께 증명해야함. 이를 위해 부모(바로 위에 있는 원소)와 자식간의 연결을 증명해야함. 부모는 자식의 commitment(쉽게 말해 hash 값)를 포함하여 경로 증명에 필요한 값을 가지고 있음. vitalik.ca/general/2021/0…