2023. 6. 14. 10:14ㆍBlockchain/Roll up
※ 원글 작성 : 22년 5월 4일
Roll up Series
[Blockchain/Roll up] - Rollup의 개념과 특성
[Blockchain/Roll up] - ZK rollup - 1. 목적/library
[Blockchain/Roll up] - ZK rollup - 2. ZKP
[Blockchain/Roll up] - ZK rollup - 3. zkEVM 프로젝트
[Blockchain/Roll up] - ZK rollup - 4. zk-SNARK의 Circuit & QAP
해당 글은 비탈릭 부테린의 An Incomplete Guid to Rollups를 참고하였다.
블록체인에서 확장성을 증가시키는 방법은 끊임없이 연구해야하는 분야일 것이다. 이전 포스트인 샤딩도 그렇고 사이드체인, state channel, plasma 등등 관련 연구가 많이 진행되고 있다. 그 중에 1 transaction = 1 transfer로 블록의 리소스를 많이 차지하던 부분을 1 transaction = N transfer로 변경시켜 확장성을 높이고자 하는 연구가 진행되고 있으니, 이것이 roll up 이다.
Rollup
Roll up은 Computation과 State storage는 오프체인에 저장하지만 트랜잭션의 일부는 온체인에 저장한다. 일부만 온체인에 저장함으로써 300가스 미만의 비용만 발생하게 된다.
Rollup의 동작
메인체인 내부에 rollup 상태의 state root(merkle tree)를 관리하는 smart contract가 존재한다.
Staking 중인 누구나 해당 state root를 변경할 권한을 가지며 변경 요청(Batch)이 오면 smart contract는 배치 내의 이전 state root가 현재 contract에 기록된 state root와 일치하는지 확인하고 새로운 state root로 변환한다. 이때 이 배치가 올바른 정보를 담고 있는지 확인하고 검증하는 과정이 필요할 것이다. 여기서 두가지 종류의 rollup으로 나뉠 수 있다.
Optimistic & ZK rollup
- Optimistic rollup
Optimistic rollup은 fraud proof를 사용한다. rollup smart contract는 state root의 전체 record와 각 배치의 해시를 추적한다. 임의의 노드가 잘못된 state root가 존재함을 확인하면 메인체인에 잘못됨을 증명하는 기록을 게시하여 배치가 잘못 생성되었음을 증명하고, smart contract는 해당 증거랄 확인 후 배치와 그 이후의 배치를 revert한다. - ZK rollup
ZK rollup은 validity proof를 사용한다. 모든 배치에는 ZK-SNARK를 통한 암호화된 증명이 포함되어 있어 state root가 올바른 결과임이 증명이 된다. 증명을 만들기 위한 계산량은 많지만 해당 증명은 메인체인에서 빠르게 검증이 가능하다.
각 rollup은 장단점이 존재하여 아래처럼 비탈릭이 게시한 표를 통해 내가 설계할 플랫폼이 어떤 rollup을 사용하면 좋을지 판단 가능할 것이다.
Property | Optimistic rollup | ZK rollup |
---|---|---|
배치 당 gas fee | ~40,000 (State root 값만 변경하는 경량 트랜잭션) | ~500,000 (ZK-SNARK의 computation 이 큼) |
출금기간 | ~1주 (fraud 인경우 출금 취소 시간 보장을 위해) | 다음 배치까지 |
기술 복잡성 | 낮음 | 높음 |
일반화 | 쉬움 | 어려움 |
트랜잭션 당 메인체인 gas cost | 높음 (fraud detection 시 증거 게시) | 낮음 |
오프체인 computation cost | 낮음 | 높음 |
개인적으로나 다수의 개발자나 앞으로의 rollup 방식은 ZK rollup이 메인이 되지 않을까 판단한다. Optimistic rollup의 경우는 사후 처리라는 방식이 존재하기 때문에 블록체인의 finality에 있어 많은 시간이 소요가 되며 등록된 배치를 되돌린다는 것을 전제로하는 자체가 risky하다. Rollup은 ZK rollup 위주로 흘러갈 것 같으며 Validium이나 Volition도 고려할만 할 것 같다.
ZK rollup
ZK roll up은 Transactor와 relayer로 구성된다.
Transactor는 transfer를 생성하고 블록체인 네트워크로 브로드 캐스트 한다. 해당 transfer에는 자금을 전달하는 주체(from), 받는자(to)의 주소와 거래 value, network fee, nonce로 구성된다. 3 byte로 단축된 indexed 버전의 주소는 처리 리소스를 줄이고, 거래 value가 0보다 크거나 작으면 각각 입금/출금이 발생한다. On chain의 zk rollup 담당 스마트컨트랙트는 주소 머클트리, 전송 금액 머클트리 각각에 데이터를 기록한다.
Relayer는 roll up transaction을 만들기위해 다량의 transfer를 수집하며, SNARK 증명을 생성한다. SNARK 증명은 블록체인의 상태가 변경된 정도(delta)를 나타내는 hash값이다. SNARK 증명은 transfer 전 블록체인의 스냅샷을 transfer가 진행된 블록체인의 스냅샷과 비교하고 검증 가능한 해시의 변경 사항만 메인넷 스마트 컨트랙트에 전달한다. Relayer는 자금을 스테이킹한 어떤 노드든 될 수 있으며 이것으로 인해 relayer가 롤업을 조작하거나 보류하지 않도록 한다.
ZK rollup에 사용되는 알고리즘은 크게 앞서 설명한 ZK-SNARK와 ZK-STARK가 있다. ZK-SNARK의 ZCash에 사용되는 ZKP 방식으로 유명하고, ZK-STARK는 Starkware에서 개발중인 알고리즘이다. 두가지 방법 모두 Non-interactive 방식이지만 아래 표처럼 차이가 존재한다.
ZK-SNARK/ZK-STARK
ZK-SNARK는 타원 곡선 암호화 방식을 사용한다. SNARK와 STARK를 비교한 블로그에서는 SNARK에 대한 비판이 강하다. ZK-SNARK는 STARK가 사용하는 gas의 24%만 필요로 하고, SNARK의 증명크기가 작아 스토리지를 덜 차지 하지만 양자 저항성이 부족하며, 초기에 진행되는 setup이 올바르게 수행되었다는 것을 믿고 동작한다는 면에서 '초기설정'에 대한 의존도가 높다는 말을 전한다. SNARK가 STARK보다 더 대중화된 이유는 몇년 앞서 발견된 이론이며 Zcash를 통해 대중화가 되어 라이브러리, 코드, 기술설명에 대해 잘 되어있기 때문으로 평가한다.
ZK-STARK는 충돌 저항성 해시 함수를 이용하여 개발되었다. STARK는 양자 저항성을 보유하고 SNARK처럼 신뢰할 수 있는 설정이 필요하지 않다는 점에서 SNARK보다 기술적으로 앞선 분야라 평가 받는다. STARK가 2018년에 논문으로 게시되어 현재까지 진행되어 왔고, 이더리움 재단에서도 1200만 달러의 지원이 있어 앞으로 더 발전하고, STARK의 단점으로 평가받는 gas fee, 증명 크기에 대해서도 해결책을 찾을 수 있을것이라 예상된다.
참고
https://vitalik.ca/general/2021/01/05/rollup.html
https://docs.ethhub.io/ethereum-roadmap/layer-2-scaling/zk-rollups/
https://consensys.net/blog/blockchain-explained/zero-knowledge-proofs-starks-vs-snarks/
'Blockchain > Roll up' 카테고리의 다른 글
ZK rollup - 4. zk-SNARK의 Circuit & QAP (0) | 2023.09.21 |
---|---|
ZK rollup - 3. zkEVM 프로젝트 (0) | 2023.09.21 |
ZK rollup - 2. ZKP (0) | 2023.06.15 |
ZK rollup - 1. 목적/library (0) | 2023.06.15 |