
zkEVM과 zkVM 기술 비교: 검증 가능한 컴퓨팅 능력의 해제
글: 에릭 카네타(Erik Kaneda), RISC Zero 시니어 엔지니어
번역: Maxlion
서론
본문은 zkEVM과 zkVM의 기술적 차이점을 비교하고, RISC Zero zkVM과 곧 출시될 Bonsai 네트워크를 소개합니다. RISC Zero는 범용 zkVM으로, 실제 임베디드 RISC-V 마이크로프로세서처럼 동작하는 검증 가능한 컴퓨터입니다. 이를 통해 개발자는 다른 코드를 작성하듯 ZK 증명을 만들 수 있습니다. Rust와 C++로 ZK 증명 작성이 가능하며, RISC-V로 컴파일되는 모든 언어도 지원합니다.
배경
현재 스마트 계약의 복잡성이 증가함에 따라 dapp은 점점 더 정교해지고 있으며, 블록 공간은 부족해지고 있고, 체인 상에서 코드를 실행하는 비용도 늘고 있습니다. 즉, DeFi 로직이 계산적으로 비용이 커지거나, 체인 상 게임 로직에 추가적인 처리 능력이 필요하다면, 복잡한 애플리케이션 로직을 오프체인으로 옮기기 위해 zkVM 또는 zkEVM을 고려해야 합니다.
이 블로그 포스트에서는 이러한 맥락에서 한 글자가 만들어내는 차이를 설명하고자 합니다. 먼저 EVM에 대한 개요를 다루고, 이어서 zkEVM과 zkVM을 설명하겠습니다. zkEVM은 Solidity 애플리케이션을 오프체인에서 실행할 수 있게 해주는 반면, RISC Zero의 zkVM과 곧 출시될 Bonsai 네트워크는 Rust를 사용하여 확장 가능하고 체인 독립적인 코드를 작성할 수 있도록 합니다.
EVM 간단 이해하기:
EVM은 Ethereum Virtual Machine(이더리움 가상 머신)의 약자로, 이더리움 상의 모든 트랜잭션을 실행하는 소프트웨어라고 생각할 수 있습니다.

각 노드는 geth 등의 구현체를 실행함으로써 이더리움 네트워크에 참여합니다. 이더리움에서 트랜잭션은 코드 형태로 표현되며, 이를 EVM 바이트코드라고 부릅니다. 이는 EVM 명령어를 의미합니다. 대체로 이러한 명령어들은 수학 계산, 블록체인 정보 조회, 자금 이체 등을 위한 것입니다. 세상에는 다양한 가상 머신이 존재하며 각각의 특화된 분야가 있습니다. 이더리움 가상 머신은 탈중앙화 금융(DeFi) 애플리케이션에 적합하다는 점에서 중요한 위치를 차지합니다.
"zk"란 무엇이며, 왜 모두 앞에 붙이는가?
최근 가장 유행하는 트렌드 중 하나는 단어 앞에 "zk"를 붙이는 것입니다. 이 두 글자는 제로 낼리지 증명(zero-knowledge proof)을 의미합니다. 위키백과에는 다양한 예시들이 있는데, 그중 제가 가장 좋아하는 것은 "두 개의 공과 색맹 친구" 문제입니다. 제로 낼리지 증명에 익숙하지 않다면, 지금 몇 분간 관련 예시를 읽어보는 것을 추천합니다.
요약하면, 제로 낼리지 증명은 검증 가능한 컴퓨팅을 가능하게 합니다. 특정 연산이 수행되었으며 그 결과가 올바르다는 것을 보장할 수 있는 방법이라고 생각할 수 있습니다. 컴퓨터들이 연산 결과에 대해 합의하는 일반적인 방법은 모든 기계가 동일한 코드를 실행하고 결과를 비교하는 것입니다. 그러나 연산의 종류에 따라 리소스가 제한된 시스템에서는 이 방식이 매우 비효율적일 수 있습니다. RISC Zero와 같은 제로 낼리지 증명 프레임워크를 사용하면, 기계는 동일한 코드(예: EVM)를 반복 실행하는 대신, 증명의 수학적 유효성을 검사함으로써 연산의 정확한 실행을 보장할 수 있습니다.
RISC Zero에서는 이러한 증명을 "영수증(receipts)"이라 부릅니다. 본 블로그의 나머지 부분에서도 이 용어를 사용하겠습니다. 각 영수증은 어떤 연산이 수행되었는지를 나타내는 암호화된 식별자와 연산의 공개 출력 결과를 포함합니다. 단순해 보일 수 있지만, 이는 기계가 계산이 완료되었음을 "입증"하기 위해 영수증을 생성할 수 있음을 의미합니다.
그렇다면 "zk"를 EVM 앞에 붙이면 어떻게 되는가?
zkEVM이라는 용어는 EVM 바이트코드 엔진 위에서 스마트 계약을 실행하고 특정 연산(또는 트랜잭션)에 대한 영수증을 생성하는 소프트웨어를 설명하는 데 사용됩니다. 이 소프트웨어는 일반적으로 두 개 이상의 영수증이 유효함을 입증하고 또 다른 영수증을 생성할 수 있습니다. 이러한 메커니즘을 활용하면, zkEVM은 여러 트랜잭션을 실행한 후 하나의 영수증으로 표현할 수 있으며, 이를 "롤업(Rollup)"이라고 부릅니다. Solidity로 작성된 프로젝트는 체인 상에서 모든 계산을 수행하는 대신 zkEVM을 사용하여 트랜잭션을 확장할 수 있으며, 블록체인에는 오프체인에서 발생한 많은 트랜잭션을 대표하는 하나의 영수증만 게시하면 됩니다. zkEVM에는 여러 유형이 있으며, 더 알고 싶다면 이 글에서 더 자세히 읽어볼 수 있습니다.

zkVM: 'E'를 버림으로써 검증 가능한 컴퓨팅을 열다
RISC Zero는 zkEVM 대신, 제로 낼리지 가상 머신(zkVM)을 구현했습니다. 두 시스템의 차이점은 "VM", 즉 "가상 머신"이 EVM보다 훨씬 더 범용적이라는 점입니다.
zkVM에서는 이더리움에서 실행 가능한 소프트웨어가 아닌, 거의 모든 컴퓨터에서 실행 가능한 소프트웨어를 실행할 수 있습니다. 이 컴퓨터는 RISC-V 아키텍처를 사용하며, 이는 범용 컴퓨팅을 위한 명령어 세트입니다. 즉, RISC-V는 지갑 주소나 기타 블록체인 구조 개념을 내장하고 있지 않습니다. 이 명령어 세트는 주로 메모리 위치 사이의 데이터 이동과 수학 연산을 수행하는 연산자들로 구성되어 있습니다. 이 명령어 세트가 지나치게 일반적으로 보일 수 있지만, 개발자가 어셈블리 언어 프로그래밍을 알지 못해도 이 zkVM용 프로그램을 작성할 수 있습니다.
EVM과 비교했을 때, 이 하위 RISC-V 시뮬레이터는 개발자가 Rust, C/C++, Go 등 다양한 언어로 zkVM용 프로그램을 작성할 수 있게 해줍니다(현재는 Rust를 지원하며, C/C++ 및 Go 지원은 현재 진행 중입니다). 이는 zkVM 개발자가 해당 언어 생태계에서 개발된 기존 라이브러리를 활용할 수 있음을 의미합니다. 예를 들어, 워들(Wordle)이나 왈도 찾기(Where's Waldo) 같은 게임을 실행하는 프로그램을 돌릴 수 있습니다. 하지만 단순한 게임에 국한되지 않고, RISC-V로 컴파일되는 거의 모든 프로그램을 실행할 수 있습니다.
RISC-V 프로그램을 실행하는 것이 왜 중요한가?
더 나은 DeFi 애플리케이션을 개발하는 데 도움이 되는 프레임워크에 관심이 있다면, 왜 RISC Zero와 같은 범용 컴퓨팅 프레임워크를 연구하고 있는지 궁금할 수 있습니다.
범용 언어로 프로그램 작성을 허용함으로써, 우리는 Solidity 라이브러리 밖에서 코드를 작성할 수 있는 가능성을 열었습니다. 즉, 애플리케이션 로직이 Solidity로 표현 가능한 것으로 제한되지 않으며, 체인 독립적인 코드 작성이 가능합니다. Rust와 같은 범용 언어는 특정 목적을 위해 설계된 언어보다 다양한 유형의 프로그램을 훨씬 쉽게 작성할 수 있게 해줍니다. 예를 들어, 수학 표현식을 입력으로 받아 계산을 수행하고 결과를 반환하는 간단한 산술 계산기를 Rust로 작성할 수 있습니다. 변수, 반복문, 함수와 같은 일반적인 프로그래밍 언어 구조를 지원하도록 이 계산기의 복잡성을 높이면, 프로그램을 입력으로 받아 실행하고 결과를 반환하는 간단한 언어 인터프리터를 구현할 수 있습니다. 이러한 프로그램들은 RISC-V로 컴파일되어 RISC Zero의 zkVM에서 실행될 수 있습니다. Rust를 사용하면 모든 것을 처음부터 작성하는 대신, 기존의 크레이트(crate)를 활용하여 애플리케이션을 개발할 수 있습니다.
그러한 라이브러리 중 하나가 Rust의 revm 크레이트입니다. 이 크레이트는 Rust로 작성된 EVM 구현체입니다. 이 크레이트를 사용하면 zkVM 위에 EVM 바이트코드 인터프리터를 실행할 수 있습니다. 즉, zkVM에서 실행되는 EVM 바이트코드 인터프리터 위에서 솔리디티 계약을 실행할 수 있다는 의미입니다! 이렇게 하면 zkVM은 스마트 계약을 실행한 EVM의 실행을 나타내는 영수증을 생성합니다. 이것은 Odra의 블로그 포스트에서 이미 다뤄졌으며, zkPoEx 팀이 버그 보상금을 높이기 위해 활용했습니다.
블록체인을 어떻게 확장할 것인가?
현재 스마트 계약의 복잡성이 증가함에 따라, 많은 사람들이 관리하는 체인 상 코드가 개발과 함께 비용만 늘어나는 것을 경험하고 있습니다. 즉, DeFi 로직이 점점 더 계산 집약적이 되거나, 체인 상 게임 로직이 추가적인 처리 능력을 필요로 한다면, RISC Zero의 zkVM과 곧 출시될 Bonsai 네트워크를 통해 범용 프로그래밍 언어로 확장 가능한 체인 상 코드를 작성할 수 있습니다. 본 포스트에서는 몇 가지 사례를 들었으며, 우리는 이제 진정한 확장 가능한 컴퓨팅 네트워크의 시작점에 서 있습니다. 실제로 어떻게 작동하는지 확인하고 싶다면 오늘 시작해 보세요. 커뮤니티에 참여하고 Bonsai에 등록하여, 누구나 이용할 수 있는 탈중앙화되고 확장 가능한 인터넷을 만드는 데 함께하세요.
TechFlow 공식 커뮤니티에 오신 것을 환영합니다
Telegram 구독 그룹:https://t.me/TechFlowDaily
트위터 공식 계정:https://x.com/TechFlowPost
트위터 영어 계정:https://x.com/BlockFlow_News














