삼 분 안에 이해하는 zkEVM: 이더리움 확장 솔루션의 보석
작성자: DeGate, 체인뉴스(ChainNews)
9월 1일 새벽, 이더리움 확장 네트워크 Arbitrum은 메인넷 공개 테스트 버전이 공식 출시되었음을 발표했으며, 동시에 Optimism은 이미 일부 화이트리스트 애플리케이션에 개방되었습니다. 이는 이더리움 L2 확장 솔루션 중 하나인 Optimistic Rollup이 공식적으로 무대에 등장했음을 의미합니다.
이제 L2 확장 솔루션의 또 다른 축인 ZK Rollup으로 시선을 돌려보겠습니다:
zkSync는 8월 31일에 2.0 버전 출시를 연기한다고 발표했습니다. zkEVM 기반의 zkSync 2.0은 최초의 EVM 호환 ZK Rollup이 될 것으로 기대됩니다;
8월 13일, Polygon은 2억 5천만 달러에 이더리움 2층 확장 솔루션 Hermez를 인수한다고 발표했습니다. Hermez의 핵심 기술은 바로 zkEVM 솔루션입니다;
같은 8월 13일, 이더리움 재단은 정기적으로 지원하는 팀의 연구 및 개발 진행 상황을 발표하는 기사에서, 지난 몇 개월 동안 zkEVM 연구 개발을 위해 팀을 구성하고 자금을 지원했다고 밝혔습니다.
우리는 Vitalik이 두 가지 확장 솔루션을 비교할 때, 단기적으로 Optimistic Rollups가 일반 EVM 계산에서 승리할 가능성이 높지만, 결국 중장기적으로 ZK-SNARK 기술의 개선에 따라 ZK Rollups가 모든 상황에서 승리할 것이라고 언급한 것을 알고 있습니다. 여기서 말하는 "ZK-SNARK 기술의 개선"은 주로 zkEVM의 성공을 의미합니다.
따라서 zkEVM은 이더리움 확장 솔루션의 왕관에 빛나는 보석이 되었습니다. 필자는 이 글을 통해 독자들이 zkEVM의 기본 원리와 발전 현황을 이해할 수 있기를 바랍니다.
1. zkEVM의 역할
zkEVM의 역할을 이해하기 위해서는 몇 가지 선행 지식이 필요합니다.
먼저 이더리움에 대해 이야기해보겠습니다. 본질적으로 이더리움은 거래 기반의 상태 머신입니다.
이더리움의 생성 상태(Genesis State)에서 시작하여, 블록과 블록의 거래를 통해 최종 상태로 변화하게 되며, 이 최종 상태는 이더리움의 현재 상태로, 모든 계정 주소와 그에 매핑된 계정 상태를 포함하고 있습니다.
출처: https://ethfans.org/posts/how-does-ethereum-work-anyway
거래를 처리하는 구체적인 역할을 하는 것은 EVM, 즉 이더리움 가상 머신(The Ethereum Virtual Machine)입니다. EVM은 스택 머신으로 작동하며, 프로그래머는 Solidity와 같은 고급 언어를 사용하여 코드를 작성하고, 이후 이 코드는 EVM이 이해할 수 있는 EVM 바이트코드로 컴파일되어 다양한 EVM 명령어 실행 표준의 스택 작업을 수행하며, 최종적으로 새로운 상태를 생성합니다.
이제 문제가 생겼습니다. 우리는 ZK Rollup 솔루션이 2층에서 거래에 대한 제로 지식 증명을 생성하고 이를 1층으로 되돌려 검증해야 한다는 것을 알고 있습니다. 제로 지식 증명을 생성하기 위해서는 거래 처리 과정이 zk 회로 증명의 규격에 부합해야 합니다.
EVM이 설계될 당시에는 제로 지식 증명을 지원할 것이라고는 명백히 고려되지 않았습니다(결국 그때는 6, 7년 전으로, 제로 지식 증명은 대부분의 사람들의 시야에 들어오지 않았습니다). 이것이 바로 zkEVM의 의미입니다: ZK Rollup 네트워크에서 실행되며 EVM과 호환되면서 제로 지식 증명에 친화적인 가상 머신입니다.
2. 두 가지 구현 전략
zkEVM에 대해서는 현재 두 가지 주요 구현 전략이 있습니다:
EVM의 기존 명령어 집합을 직접 지원하여 Solidity 명령어 집합과 완전히 호환됩니다. 이 전략을 사용하는 프로젝트에는 Hermez와 이더리움 재단의 zkEVM이 포함됩니다.
제로 지식 증명에 친화적인 새로운 가상 머신을 재설계하고, EVM 개발 도구에 적합하도록 조정하여 Solidity와의 호환성을 유지합니다. 이 전략을 사용하는 주체는 주로 zkSync입니다;
첫 번째 전략의 경우, EVM의 기존 명령어 집합을 완전히 지원하므로 EVM과 동일한 컴파일러를 사용하여 자연스럽게 기존 생태계와 개발 도구와 완전히 호환됩니다. 동시에 이더리움의 보안 모델을 더 잘 계승합니다.
두 번째 전략은 기존 EVM 명령어 집합의 제약을 받지 않기 때문에 코드를 제로 지식 증명에 더 친화적인 명령어 집합으로 더 유연하게 컴파일할 수 있으며, 모든 EVM 기존 명령어 집합과의 호환성을 유지하기 위해 필요한 힘든 작업에서 벗어날 수 있습니다.
종합적으로 볼 때, 첫 번째 전략은 호환성이 더 좋고 보안성이 더 높지만 작업량이 더 많습니다. 두 번째 전략은 더 유연하고 작업량이 적지만 적합성에 추가적인 노력을 기울여야 합니다.
3. 주요 솔루션 비교
Hermez zkEVM
Hermez는 첫 번째 전략을 채택하여 모든 EVM 명령어 집합을 중간 명령어(micro opcode)로 번역합니다.
잘 알려진 바와 같이, EVM에는 CALL, EXP, CREATE와 같은 가변 길이 명령어가 있습니다. 이러한 명령어는 본질적으로 zk 회로 증명에 친화적이지 않으며, 중간 명령어를 사용하면 이러한 명령어의 논리를 더 친화적으로 표현할 수 있습니다. 중간 명령어는 uVM에서 실행되며, uVM에서는 zk 완전성을 구현하기 위해 많은 암호학적 도구를 사용하고, Plookup 알고리즘을 사용하여 증명 및 검증 효율성을 높입니다.
Hermez zkEVM의 구현에서 또 다른 특징은 두 가지 증명 시스템을 동시에 사용한다는 점입니다. 구체적으로 STARK 증명을 생성한 다음 PLONK 또는 Groth16을 사용하여 이 STARK 증명에 대한 증명을 생성하고 1층에서 검증합니다. 이 과정은 증명의 증명과 같습니다.
이렇게 하는 이유는 STARK가 매우 우수하지만 증명 규모가 크고, 체인에서 검증할 때 비용이 많이 들기 때문입니다. 반면 Groth16 또는 PLONK는 더 작은 증명 규모와 더 빠른 검증 속도를 가지고 있습니다. 이러한 두 가지를 결합하여 각자의 장점을 취하는 방식은 비대칭 암호 알고리즘과 대칭 암호 알고리즘이 결합하여 사용되는 장면을 쉽게 연상시킵니다.
AppliedZKP zkEVM
AppliedZKP zkEVM은 Hermez와 마찬가지로 첫 번째 전략을 채택합니다.
AppliedZKP는 데이터 버스(Bus Mapping) 개념을 사용하여 저장과 계산을 분리합니다. Bus Mapping에서 올바른 저장 데이터가 추출된 후, State proof가 데이터의 일관성을 증명하고, EVM proof가 계산 논리의 정확성을 증명합니다.
구체적인 과정은 다음과 같습니다:
EVM은 Bus Mapping을 통해 필요한 관련 상태를 읽습니다. 상태는 Storage, Memory, Stack 세 부분으로 구성됩니다;
EVM은 opcode를 실행합니다;
EVM은 다시 Bus Mapping을 통해 새로운 상태를 기록합니다;
이 과정에서 State proof는 Bus Mapping의 읽기 및 쓰기 정보의 일관성과 정확성을 책임지고, EVM proof는 EVM의 opcode 실행의 정확성을 책임집니다.
zkSync EVM
Hermez와 AppliedZKP와는 달리, zkSync는 두 번째 전략을 선택했습니다. zkSync의 zkEVM은 EVM의 복제품이 아니라, 99%의 Solidity 계약을 실행할 수 있도록 설계되었으며, 다양한 상황(롤백 및 예외 상황 포함)에서 정상적으로 작동할 수 있도록 새롭게 설계되었습니다. 동시에 zkEVM은 회로에서 제로 지식 증명을 효율적으로 생성하는 데 사용될 수 있습니다.
zkSync EVM은 일반 명령어 집합을 구현하기 위해 TinyRAM을 사용하며, Gas 소비가 큰 SHA256/keccak과 같은 명령어는 특별히 회로를 구현하여, 마지막으로 재귀 집합 기술을 사용하여 모든 증명을 하나로 집합하여 효율성을 높입니다.
출처: https://medium.com/matter-labs/zksync-2-0-hello-ethereum-ca48588de179
zkSync는 zkEVM을 위한 두 가지 컴파일러 프론트엔드인 Yul과 Zinc를 동시에 개발했습니다. Yul은 다양한 백엔드에 대해 바이트코드로 컴파일할 수 있는 중간 Solidity 표현입니다. Zinc는 Rust를 기반으로 스마트 계약 및 일반 제로 지식 증명 회로를 개발하기 위한 언어입니다. 이는 개발자에게 더 큰 선택의 여지를 제공합니다.
또한, zkSync는 자신의 컴파일러를 구축할 때 LLVM을 선택했습니다. 이는 산업 수준의 제품을 위한 가장 진보된 컴파일러 프레임워크로, 컴파일러가 충분히 완전하고 모든 고전 최적화를 갖추도록 보장합니다.
4. 마무리하며
zkEVM 기술은 여러 우수한 팀의 지속적인 노력 덕분에 점점 성숙해지고 있으며, 앞으로 6개월 정도의 시간 안에 차례로 실현될 것으로 믿습니다. 그때 EVM과 호환되는 ZK Rollup 확장 솔루션은 반드시 자신의 빛을 발할 것입니다.
현재 블록체인 기술은 전례 없는 대쟁론 시대에 접어들고 있습니다. 공공 체인 간의 경쟁에서부터 이더리움 확장 솔루션 간의 경쟁, 심지어 특정 확장 솔루션 하에서도 다양한 프로젝트들이 앞다투어 경쟁하고 있습니다. 필자는 이 블록체인 기술의 가장 생기 넘치는 대시대에 존재할 수 있어 매우 기쁩니다.
참고 자료:
2. zkSync 2.0: Hello Ethereum!
3. 에피소드 175: zkEVM & zkPorter with Matter Labs
4. 에피소드 194: zkEVM with Jordi & David from Hermez
5. 인기 zkEVM 솔루션 탐색: AppliedZKP, Matter Labs, Hermez, Sin7Y