롤업은 무엇이고, 이제는 왜 ZKR인가?
롤업의 자료구조를 중심으로
이더리움 메인넷이 가진 한계를 극복하는 ‘확장(Scaling)’ 에는 두가지 방식이 있다. 첫째는 온체인 확장(On-chain Scaling)으로 레이어1 메인넷(이하 L1)을 개선하는 방법이다. 둘째는 오프체인 확장(Off-chain Scaling)으로 메인넷의 구조는 유지한채 외부의 요소를 활용하여 문제점을 개선하는 방법이다. 이더리움은 2023년까지의 점진적인 Eth2 업데이트를 통해 온체인 확장을 지원할 예정이다. 업데이트가 완료 전까지는 오프체인 확장을 주목할 수 밖에 없다.
오프체인 확장 기법으로는 사이드체인 처럼 1) 메인넷과 분리된 별도의 체인을 활용한 방법, 스테이트 채널, 플라즈마과 롤업처럼 2) 레이어2(Layer 2/이하 L2)를 활용한 방법이 있다.
아래 그림 1. 은 이더리움 확장 솔루션 점유율을 시간 흐름에 따라 나타낸 것이다. 이중 롤업 확장인 남색(Optimistic Rollups), 청록색(ZK Rollups), 연보라색(Validium)의 비중이 커지고 있는 것을 확인할 수 있다. 롤업이 도대체 뭐길래 이렇게 많은 인기를 끄는가?
1. 롤업의 자료구조와 작동방식
롤업을 포함한 L2 확장은 유저 간 트랜잭션이 L1으로 제출되지 않고 L2로 제출된다. L2노드는 트랜잭션을 모아 배치(batch)를 형성하고 이를 L1으로 전달한다. 이 때 연산수행, 트랜잭션 보관, 스테이트 보관의 세부적인 방식 차이에 따라 L2 확장이 나뉜다. 본 단락에서는 L2 확장 중 롤업 시스템의 자료구와 작동방식에 대해 알아보고자 한다.
위 그림 2.의 오른쪽은 현재의 상태(state)를 집약한 머클트리로 L1 외부, 즉 L2에 존재한다. 그림 2. 왼쪽은 L1상에 존재하는 롤업 스마트 컨트랙트인데, 이 컨트랙트는 오른쪽 머클트리의 root값을 저장하고 있어서, 롤업에서의 현 스테이트를 보관하는 역할을 한다. 뿐만 아니라, 롤업 컨트랙트는 롤업에서 사용하고자 하는 자산을 묶어두는 기능을 한다. 이에 따라, 롤업을 처음 사용하고자 하는 사용자는 L1의 롤업 컨트랙트로 관련 자산을 예치시켜야 하며, 롤업 사용을 종료했을 때는 동일한 컨트랙트에서 자산을 인출하면 된다. 그렇다면, 롤업 컨트랙트로 자산을 예치하여 L2 롤업을 사용하고자 하는 유저가 모였을 때, 해당 유저끼리의 트랜잭션이 발생하면 롤업에서는 어떤 흐름으로 처리가 이루어지는가?
위 그림 3. 의 중간 부분 상단 batch 내에는 Alice, Bob, Charlie 사이에서 발생한 트랜잭션 3건이 기록되어 있다. 이는 트랜잭션을 발생시킨 Alice와 Bob이 각 트랜잭션을 L2 노드로 제출한 결과이다. L2 노드는 트랜잭션 실행 이전의 상태(pre-state)에 제출받은 트랜잭션들을 적용하여 새로운 상태(post-state)를 만들어내는데, 이는 위 그림 3. 의 변화된 상태 머클트리로 확인할 수 있다. 종합하자면 노드는 변화 전 상태 루트값과 변화 후 상태 루트값 그리고 트랜잭션의 압축을 모아서 배치(Batch)를 형성하고 이를 L1의 롤업 컨트랙트에 제출한다. 롤업 컨트랙트는 업데이트된 스테이트를 보관하게 된다.
위 그림 4. 은 롤업을 포함한 오프체인 확장이 온체인에 반영되는 과정을 시각화 한 것이다. 연산과 스테이트 보관은 롤업 노드에서, 트랜잭션 보관은 L1에서 이루어진다 .
L2 롤업 노드 등에 의해 L1 의 롤업 컨트랙트가 업데이트되는 것은, L1 메인넷의 상태가 업데이트되는 것을 의미한다. L1의 상태를 보관하는 이더리움 메인넷의 Merkle Patricia Trie는 이 업데이트에 따라 value값이 변동되고, 변화 결과가 종합된 L1의 merkle root는 L1 블록 헤더의 stateroot로 보관된다.
이러한 일련의 과정을 통해 롤업 확장을 이용하면 연산은 빠르게 처리될 수 있으며, 메인넷과 소통하는 수수료는 롤업 노드 운영자가 부담하게 되어 일반 사용자의 가스비 부담도 줄어든다. 또 최종적으로는 이더리움의 합의 프로토콜과 보안성 가정도 활용하기 때문에 보안적으로도 뛰어나다.
하지만, L2노드가 악의적인 행동을 하거나 연산상의 실수를 하여 잘못된 결과를 만들 위험은 없을까? 잘 설계된 롤업 시스템은 잘못된 결과가 반영되는 위험을 방지하는데, 그 세부적인 방식의 차이에 따라 롤업 역시 여러가지 형태로 구분된다.
2. 롤업 분류 1 — 옵티미스틱 롤업
옵티미스틱 롤업(Optimistic Rollup)은 Fraud Proof를 이용한다. 노드 운영자가 ‘트랜잭션 모음’과 ‘변화 전 머클트리 스테이트 루트 값’과 ‘변화 후 머클트리 스테이트 루트 값’을 배치로 모아 L1 스마트 컨트랙트에 제출하면 우선적으로 그 변화가 반영된다. 결과가 잘못되지 않았다는 ‘낙관적 믿음’하에 L2의 연산결과와 데이터를 선반영해주기 때문에, ‘Optimistic’ 한 롤업이다. L1의 스마트 컨트랙트는 스테이트 루트값과 각 배치의 해쉬의 기록을 모두 보관하고 있다. 이를 통해 누군가 배치 연산이 잘못되었음을 찾아내어 이러한 문제에 대한 증명을 체인으로 제출하면, 컨트랙트가 보관하고 있는 기록을 바탕으로 잘못을 검증한다(따라서 Fraud Proof이다). 잘못된 결과가 L1에 반영된 경우, 이를 모두 뒤집어엎고, 잘못된 결과를 제출한 노드 운영자의 예치자산 중 일부는 삭제한다.
위 그림 5. 은 옵티미스틱 롤업을 사용하는 프로젝트들의 TVL 을 나타낸다. 2022년 1월 기준으로 Arbitrum, Optimism, Boda Network, Metis Andromeda, Fuel 순이다.
- Arbitrum : 아비트럼은 분쟁 해결과정에서(앞서 언급한 옵티미스틱 롤업의 fraud proof 과정) 상호작용이 여러 차례에 걸쳐 일어난다 (Interactive multi-round proving).
- Optimism : 옵티미즘은 분쟁 해결과정에서의 상호작용이 단일 라운드에 걸쳐 완료된다. (Single round proving)
3. 롤업 분류 2 — ZK 롤업
ZK 롤업은 Validity Proof를 사용한다. 그렇다. zero knowledge proof가 아니라 validity proof를 이용한다. 유효성 증명은 영지식 증명의 확장판인데, 특정 상태변화가 참임을 증명하는 역할을 한다.
노드 운영자는 ‘트랜잭션 모음’ 과 ‘변화 전 머클트리 스테이트 루트 값’ 과 ‘변화 후 머클트리 스테이트 루트 값’ 그리고 해당 연산이 문제 없이 이루어졌음을 수학적으로 증명하는 ‘증명내용’ 을 배치로 모아 L1 스마트 컨트랙에 제출한다 (스테이트 연산결과가 맞음에 대한 유효성을 먼저 증명함으로 Validity Proof이다) . 이 과정에서 ZK-SNARK 기반의 증명을 사용할 수도 있고, ZK-STARK 기반의 증명을 사용할 수도 있다. L1의 롤업 스마트 컨트랙트에서는 해당 증명내용을 기반으로 증명을 검증하고, 검증이 통과하면 스테이트의 변화내용과 데이터를 온체인에 최종적으로 반영한다.
위 그림 6.은 ZK롤업을 사용하는 프로젝트들의 TVL을 나타낸다. 2022년 1월을 기준으로 dYdX, Loopring, ZKSwap v2, zkSync, Aztec, Polygon Hermez 순이다.
- dYdX : Starkware 사의 zk-Stark기반 zk롤업 StarkEX를 이용하는 파생금융상품 perpetual 거래소이다.
- Loopring : zk-snark 기반 zk롤업을 이용하는 DEX이다.
4. 롤업 분류 3 — 밸리디움
밸리디움은 zk롤업과 유사한 롤업형태로 Validity Proof를 사용한다. 그러나, 앞선 ZK 롤업과 다르게 트랜잭션 데이터는 L1에 제출 및 저장되지 않는다.
이어서 위 그림 7. 은 밸리디움을 사용하는 프로젝트들의 TVL을 나타낸다. 2022년 1월을 기준으로 Immutable X, DeversiFi, Sorare, ZKSwap 순이다.
- Immutable X : Starkware 사의 zk-Stark기반 밸리디움 StarkEX를 이용하는 NFT 거래소
- DeversiFi : Starkware 사의 zk-Stark기반 밸리디움 StarkEX를 이용하는 DEX
5. 롤업 분류 4— 볼리션
볼리션(Volition)은 Starkware사에서 새로 제안한 롤업 방식으로 zk롤업과 밸리디움을 섞은 하이브리드 방식이다. 필요한 데이터는 L1에 제출 및 보관하고, 그렇지 않는 데이터는 오프체인에서만 연산하여 데이터 별 노출도를 조절할 수 있다.
6. OR vs ZKR : ZKR 이 장기적으로 더 우세한 롤업이 될 것이다
위 논의들을 종합하면 롤업간의 차이는 위 그림 8. 처럼 요약할 수 있다. 여러가지 롤업 방식 중 현재 점유율 면에서 선두를 차지하고 있는 것은 옵티미스틱 롤업이다. 이는 옵티미스틱 롤업이 EVM 호환가능(EVM-compatible)하다는 강력한 장점을 가지고 있기 때문이다. 트랜잭션 수행을 수학적으로 검증한 압축물을 만들어낼 필요가 없기 때문에, 옵티미스틱 롤업에서는 어떤 코드던 실행할 수 있다. 이는 솔리디티 코드로 작성된 기존의 디앱을 옵티미스틱 롤업으로 쉽게 옮길 수 있는 것을 의미한다.
하지만 증명이 사후적으로 이루어진다는 점은 치명적인 단점으로 꼽힌다. 유저가 옵티미스틱 롤업 사용을 종료하고 롤업 컨트랙트에서 자산의 인출을 희망할 때, 해당 자산이 최종적인 상태값을 잘 반영하고 있는지에 대한 검증을 시작한다. 때문에, 옵티미스틱 롤업은 자산 인출시 7일의 분쟁조정기간을 두고 있으며, 유저는 그 기간을 기다려야만 자산을 돌려받을 수 있게 된다.
zk 롤업의 장점은 많다. 우선 zk-snark, zk-stark 등을 통해 증명을 사전에 만들어내기 때문에, 상태에 대한 검증을 즉시적으로 이룰 수 있다. 즉시적인 검증을 통해 거래의 시간차를 활용해 발생하는 프론트러닝(front-running)의 위험도 대폭 감소시킬 수 있다.
복잡한 수학 연산을 통해 증명을 만들어야 하기 때문에 롤업 노드의 연산량은 많아지지만, L1의 롤업 컨트랙트의 검증 컴퓨팅 로드는 감소하게 된다. 또한, zk 롤업은 옵티미스틱 롤업에 비해 트랜잭션 배치를 더욱 효율적으로 확장한다. 최대 10배까지 많은 트랜잭션을 지원한다. zk롤업의 수수료 역시 옵티미스틱 롤업에 비해 더 저렴하다.
하지만 현행 zk 롤업은 EVM-compatible하지 못하다는 단점이 있다. zk 롤업은 롤업 위에서 돌아가는 코드를 특별한 수식으로 바꿔준다. 이 수식이 메인넷에 저장되는 간결한 증명이다. 일반적으로 이러한 수식은 인풋이 한정되어 있을 때 더 쉽게 정의할 수 있는데, 이러한 상황은 단순한 토큰 전송만 하는 경우 등을 의미한다. 디앱의 활용이 application specific 한 상황으로 한정이 될 때, 수식을 디자인하기 훨씬 쉬워지는 것이다. 이 때문에 스타크웨어 팀은 dYdX 를 위한 starkEx 와 같이 개별 앱에 맞춘 starkEX를 제공하게 되었다. 반면, “어떤 형태의 코드”도 인풋으로 받아서 증명을 만들어내는 수식을 정의하기는 훨씬 어렵다. 이것이 임의의 코드를 위한 zk 롤업을 만드는 것의 어려움이다.
현재 zk 롤업의 이러한 문제를 극복하기 위한 zk롤업을 위한 EVM 호환성을 지원하는 여러 zkEVM 솔루션이 개발 중에 있다. 스타크웨어 팀은 starknet의 알파 단계를 지난 11월 선보였으며, polygon hermez 팀도 솔루션 고도화를 위해 노력중이다. 장기적으로는 zkEVM 솔루션이 개발됨에 따라, zk 롤업이 더 우세한 확장성 솔루션이 될 것으로 여겨진다. 옵티미스틱 롤업과 비교해 기존에 가지고 있던 여러 장점에 더해, 거의 유일한 단점이었던 EVM 호환성 부족까지 보완이 되면, 그 사용성은 더욱 커질 것으로 생각되기 때문이다.
[참고자료]
[글쓴이 연락처]
이메일 : andrew@superblock.co
트위터 : @minseokk1m
텔레그램 : @minseokk1m
디스코드 : @seoultower#6283