[About zkEVM]#1: What&Why zkEVM?

Kim Yevin
EWHA-CHAIN
Published in
9 min readMar 15, 2023

zk 증명 방식이 실질적으로 이더리움과 같이 기능하기 위해 필요한 zkEVM에 대해 간단히 살펴봅니다.

이번 글은 zkEVM의 개념과, 왜 zkEVM이 필요한지에 대해서 먼저 다뤄보도록 하겠습니다. 더 많은 내용은 이어지는 다음 아티클을 확인해주세요:)

#1: What & Why zkEVM?

#2: How & Which zkEVM? (Future of zkEVM)

I. WHAT is zkEVM?

“A zkEVM is an EVM-compatible virtual machine that supports zero-knowledge proof computation. Unlike regular virtual machines, a zkEVM proves the correctness of program execution, including the validity of inputs and outputs used in the operation. ”

— zkEVM은 영지식 증명 계산을 지원하는 EVM(Ethereum Virtual Machine) 호환 가상 머신입니다. 일반적인 가상 머신과 달리, zkEVM은 실행에 사용되는 입/출력의 유효성을 포함하여 프로그램 실행의 정확성을 증명합니다.

이더리움 블록체인 개발을 위한 API 노드 서비스를 제공하며 web3 개발 플랫폼인 Alchemy에서 정의한 zkEVM입니다. 이를 이해하기 위해서는 두 가지 개념을 이해할 수 있어야 하죠.

하나, EVM 호환성이란 무엇인가?

둘, 영지식 증명이란 무엇인가?

먼저, EVM 호환성에 대해서 설명하겠습니다. EVM(Ethereum Virtual Machine)이란 이더리움 네트워크 상에서 배포된 스마트 컨트랙트를 실행할 수 있는 런타임 환경입니다. 쉽게 말하면 이더리움 블록체인 위에서 분산형 애플리케이션(dAPP)을 실행할 수 있는 커다란 컴퓨터(실행 환경)이죠. 이때, 어떤 가상 시스템이 EVM 환경에서 실행되도록 생성된(ex. 이더리움 스마트 컨트랙트를 사용하는 dApp) 프로그램을 실행할 수 있는 경우 “EVM 호환” 된다고 합니다. EVM 호환이 가능할 경우, solidity와 같은 언어로 작성된 스마트 컨트랙트를 실행할 수 있는 거죠.

zkEVM는 기본 논리의 수정 없이 이더리움 체인 위에서 배포된 스마트 컨트랙트를 실행할 수 있기에 우리는 EVM 호환성을 가진다고 합니다.

Q. 왜 스마트 컨트랙트의 실행에 EVM이 필요하나요? 그냥 프로그램이 돌아가기만 하면 되지 않나요?

A. 모든 블록체인은 어떤 트랜잭션이 유효한지 결정하기 위한 규칙이 필요합니다. EVM은 블록에서 블록으로 새로운 유효 상태를 계산하기 위한 규칙을 정의하고, 그렇기 때문에 EVM은 이더리움 네트워크를 실행하는 컴퓨터가 블록체인 상태 변화의 무결성을 보장할 수 있습니다.

Q. 왜 zkEVM이 필요하나요? 그냥 EVM만을 사용하면 안되나요?

A. 확장성 문제 때문입니다. EVM이 처리할 수 있는 양은 한정적이기 때문에 이더리움 네트워크에 배포된 트랜잭션이 많아지면 많아질수록, 거래 속도는 느려지고 트랜잭션 마다의 비용은 비싸집니다. zkEVM을 통해 이러한 확장성 문제는 해결하고, 스마트 컨트랙트의 별다른 수정 없이 이더리움 체인 위에 배포된 스마트 컨트랙트를 실행할 수 있습니다. (더 자세한 내용은 뒤이어 이어집니다.)

그렇다면, 영지식 증명은 무엇일까요?

영지식 증명이란(zero-knowledge proof), 데이터를 직접 확인하지 않고도 해당 정보가 이상이 없음을 수학적으로 증명하는 기술입니다. 오프체인에서 실행되는 다수의 트랜잭션을 요약하여 “롤업” 확장성을 향상시키는 Layer 2 솔루션을 롤업이라고 부르는데, 이 과정에서 영지식 증명을 사용하여 오프체인에서 이뤄지는 연산이 유효하다고 보장하는 것이 ZK 롤업입니다.

다만, 기존의 EVM은 영지식 증명 계산과 함께 작동하도록 설계되지 않아서 zk 롤업을 활용할 수 없습니다. 그렇기 때문에 영지식 증명 계산이 가능하면서도 EVM 호환이 가능한 zk EVM을 구축하기 위한 시도가 생겨나기 시작한 것입니다. 이를 통해서 트랜잭션의 유효성을 증명한다면 EVM과 거의 완전한 동등성을 달성하면서도 빠른 증명을 생성하여 EVM이 갖고 있는 확장성 문제를 해결할 수 있겠죠?

II. WHY zkEVM?

앞서 말씀드린 것과 같이, zkEVM은 기존 EVM에 비해 더 나은 확장성을 제공합니다. 확장성, 탈중앙성, 보안성 중 어느 둘을 위해 하나를 희생해야하는 다른 확장성 솔루션과 달리 (블록체인 트릴레마) zkEVM은 “안전하게” 확장성을 가질 수 있다는 점에서 주목할만 합니다.

기존 EVM 방식에서 모든 검증 노드는 트랜잭션을 검증하기 위해서 프로토콜 규칙에 따라 수행되는 모든 계산을 다시 실행합니다. 이러한 방식은 프로그램의 정확성을 이더리움 노드 독립적으로 검증할 수 있기 때문에 가장 간단하고 알기 쉬운 방식으로 보안을 보장할 수 있겠지만 당연히 확장성에 한계를 가질 수 밖에 없죠.

반면에, zk롤업을 사용한 zkEVM은 “영지식 증명”이라는 유효성 증명으로 오프체인에서 이뤄지는 계산의 정확성을 검증하기 때문에 Layer 2에서 스마트 컨트랙트가 수행하는 트랜잭션을 재실행하지 않고도 Layer1에서 안정적으로 검증할 수 있게 합니다. 따라서 이더리움 네트워크의 보안을 원래 수준으로 유지하면서도 이더리움 처리량을 훨씬 늘릴 수 있게 되는 것이죠. 이를 통해 이더리움의 높은 수수료 없이 초당 최대 2000개의 트랜잭션을 처리할 수 있다고 추정되기도 합니다.

확장성 문제를 안전하게 해결할 수 있다는 점 이외에도 zkEVM은 다른 이점들을 가집니다. (zk Rollup 방식이 Layer 2 솔루션으로서 가지는 이점들과 유사하다고 볼 수 있습니다.)

먼저, 비용이 절감될 수 있겠습니다.

롤업 방식은 이더리움의 거래 데이터를 CALLDATA로 작성해 이더리움 메인넷의 보안을 유도하는데, 모든 트랜잭션 관련 데이터를 체인에 게시해야하는 Optimistic 롤업과 달리 (트랜잭션의 유효성에 대한 이의를 제기하는 데 사용되는 사기 증거를 구성하려면 해당 데이터를 필요로 합니다.) zk 롤업은 유효성이 이미 그 트랜잭션 묶음에 대한 신뢰성을 보장하기 때문에 최소한의 데이터만 이더리움에 게시하여도 됩니다. 만약 트랜잭션 입력을 생략하고 최종 상태 변경만 게시한다면, CALLDATA 요구사항을 훨씬 줄일 수 있겠죠.

대부분의 비용은 데이터를 체인에 게시하는 데에서 발생하기 때문에, 이는 곧 영지식 증명 방식만의 가장 큰 장점으로 작용합니다. 다양한 dApp들(DEX, NFT 마켓, 예측 시장)을 더 저렴하게 사용할 수 있게 되는 것입니다.

또한, 트랜잭션의 완결이 빠릅니다.

영지식 증명 계산만으로 그 트랜잭션의 유효성을 보장할 수 있기 때문에 zkEVM에서 실행되는 트랜잭션이 이더리움에 게시만 된다면 해당 트랜잭션이 완결됩니다. 트랜잭션의 완결성(Finality)이란 이더리움 메인체인이 그 트랜잭션을 반영하여 그 트랜잭션이 되돌릴 수 없는 상태가 된다는 뜻인데, 이 속도가 다른 방식에 비해 훨씬 빠르다는 것입니다.

따라서, 거래 이후 이 내용이 메인 체인에 완전히 반영되어 자금을 인출할 때까지의 기간이 짧습니다. 이는 NFT 트레이더나 DeFi 투자자, 혹은 차익 거래 트레이더와 같이 자금을 원활하게 이동해야할 필요성이 있는 사용자들에게 매우 유용하게 작용하겠죠.

Q. 그럼 그냥 Layer 2 솔루션으로 zk 롤업을 사용하면 되는 거 아닌가요? 혹은, zk롤업을 사용하는 zkVM(Virtual Machine)을 새로 구축하면 안되나요?

A. 단순히 Layer 2 솔루션을 활용하는 것에 비해 EVM 호환이 가능한 zkEVM을 사용한다면 “이더리움”이라는 거대한 메인 네트워크의 효과를 활용할 수 있습니다. 이더리움은 세계 최대 스마트 컨트랙트 플랫폼인 만큼 개발자와 프로젝트가 활용할 수 있는 리소스가 풍부합니다. 이미 감사를 마친 방대한 양의 코드 라이브러리, 많은 확장 도구와, 문서들을 활용할 수 있는 EVM은 다른 VM에 비해 절대적으로 개발 접근성이 좋고, 그만큼 유저들도 더 쉽게 프로젝트에 접근할 수 있겠죠?

III. WHY NOT?

앞서 작성한 글, 그러니까 zkEVM의 중요성에 대해 듣다보면 블록체인 생태계를 확장할 수 있는 zkEVM에 대해서 알고 싶어지는 분들이 계실 겁니다. 하지만, 안타깝게도 아직까지 “완전한 zkEVM”는 존재하지 않습니다.

결론부터 말씀드리면, EVM이 영지식 증명 계산을 고려하지 않고 만들어지지 않아서 기존 EVM의 회로를 영지식 증명하기에 적합하지 않은 특징을 가지고 있기 때문입니다.

zkEVM 구축을 어렵게 하는 이유로는 크게 네 가지 이유들이 있습니다.

특수한 OPCODE

일반적인 VM(Virtua Machine)과 달리 EVM은 프로그램 실행(CALL, DELECTCALL)과 오류 처리(REVERT, INVALID)를 위해 특수한 명령어(OPCODE)를 사용합니다. 이 부분에서 EVM 동작이 일어났을 때, 증명 회로를 디자인하는 것이 굉장히 어렵습니다.

스택 기반(Stack-Based) 구조

EVM은 레지스터를 기반으로 한 VM보다 구조적으로 단순한 “스택 구조”로 이루어져있습니다. 하지만, 이 스택 구조가 계산을 증명하기에는 훨씬 복잡한 특성을 갖고 있다는 겁니다. 이 이유 때문에 zkEVM의 대체로 많이 언급되는 ZKSync의 zkEVM과 StarkWare의 StarkNet과 같은 zkVM들은(완전한 EVM이 아님.) EVM의 스택 기반 구조가 아닌 레지스터를 기반으로 한 VM을 사용합니다.

스토리지 오버헤드

EVM의 저장 구조(Storage Layout)는 Keccak 해싱과 Merkle Patricia Trie에 의존하며, 두 방식 모두 검증할 때 높은 오버헤드를 가집니다. 이 문제를 해결하기 위해서 다른 해싱(ex. KECAK256; ZKSync의 경우)으로 대체할 수도 있지만 이러한 방식은 당연히 기존의 이더리움 개발 도구와 인프라와 호환성을 보장할 수 없습니다.

증명 비용

위의 세 가지 문제를 해결하더라도, 여전히 영지식 증명을 생성하기 위해서는 시간, 비용, 노력이 들어갈 뿐 아니라 특수한 하드웨어도 필요로 합니다. 이러한 비용 문제를 확실하게 해결하지 않는다면 아무리 완벽한 zkEVM을 만들어도 실질적으로 사용되기는 힘들겠죠.

하지만, 많은 프로젝트들이 “영지식 증명을 활용한 이더리움 호환 VM” 개발을 위해 많은 노력을 기울이고 있으며 현재도 많은 기술적인 연구를 진행 중에 있습니다.

그렇다면, zkEVM을 위한 프로젝트에는 어떤 것들이 있고, 또 이것들은 어떻게 작동하는지. 다음 아티클에서 다뤄보도록 하겠습니다.

Reference

https://www.alchemy.com/overviews/zkevm

https://polygon.technology/blog/what-is-a-zkevm

--

--

Kim Yevin
EWHA-CHAIN

Ewha Woman University | Ewha-chain | Computer Science & Engineering