본문 바로가기
BlockChain/ZKP

zkEVM에 대해 deepdive 해보자

by gamxong 2023. 3. 12.

0. zkEVM이란?

zkEVM에 대해 생소하신 분은 아래 글을 참고해주시면 되겠습니다.

 

2023.03.07 - [BlockChain/ZKP] - zk-rollup과 zkEVM의 관계

 

zk-rollup과 zkEVM의 관계

1. zk-rollup zk-rollup이란 블록체인 레이어2 스케일링 솔루션으로 처리량을 개선하고, 트랜잭션 실행비용을 줄이는 것을 목표로 합니다. 기존의 이더리움은 낮은 트랜잭션 처리량과 높은 비용이라

gamxong.tistory.com

 

 

1. zkEVM 작동 방식 

zkEVM은 각 계산에서 다양한 요소를 검증하기 위해 영지식 증명을 생성합니다.

1. 바이트코드 액세스 : 해당 프로그램 코드가 올바른 주소에서 올바르게 로드되었습니까? 

2. 읽기-쓰기 작업 : a. 프로그램이 계산 전에 스택/메모리/스토리지에서 올바른 값을 가져왔습니까? 비. 프로그램이 실행 완료 후 스택/메모리/스토리지에 올바른 출력 값을 썼습니까? 

3. 계산 : opcode가 올바르게 실행되었습니까(즉, 단계를 건너뛰지 않고 차례로)? 

 

2. zkEVM의 아키텍처

zkEVM은 실행 환경, 증명 회로 및 검증자 계약의 세 부분으로 나뉩니다. 각 구성 요소는 zkEVM의 프로그램 실행, 증명 생성 및 증명 검증에 기여합니다. 

2-1. 실행환경 

이름에서 알 수 있듯이 실행 환경은 zkEVM에서 프로그램(스마트 계약)이 실행되는 곳입니다. zkEVM의 실행 환경은 EVM과 매우 유사하게 기능합니다. 초기 상태와 현재 트랜잭션을 사용하여 새로운(최종) 상태를 출력합니다.

 

2-2. 증명회로

증명 회로는 실행 환경에서 계산된 트랜잭션의 유효성을 확인하는 영지식 증명을 생성합니다. 사전 상태, 트랜잭션 입력 및 사후 상태 정보를 입력으로 사용하여 증명 생성 프로세스가 완료됩니다. 그 후, 증명자는 특정 상태 전환의 유효성에 대한 간결한 증거를 얻습니다. 

2-3. verifier contract 

ZK-롤업은 검증을 위해 L1 체인(이더리움)에 배포된 스마트 계약에 유효성 증명을 제출합니다. 입력(이전 상태 및 트랜잭션 정보) 및 출력(최종 상태)도 검증자 계약에 제출됩니다. 그런 다음 검증자는 제공된 증명에 대해 계산을 실행하고 제출된 출력이 입력에서 올바르게 계산되었는지 확인합니다. 

 

 

3. zkEVM opcode란?

ZkEVM opcode는 EVM 호환 ZK 롤업에서 프로그램을 실행하는 데 사용되는 저수준 기계 명령어입니다. EVM과 마찬가지로 상위 수준 언어로 작성된 계약은 VM이 해석할 수 있는 하위 수준 언어(바이트코드)로 컴파일되어야 합니다. 이 바이트코드는 프로그램이 VM에 배포될 때 프로그램을 실행하는 데 사용되는 opcode를 지정합니다.

일반 EVM opcode는 영지식 증명 회로에서 사용하기에 비효율적이기 때문에 zkEVM opcode가 필요합니다. 일반적으로 zkEVM용 opcode를 생성하는 방법에는 두 가지가 있습니다.

  1. 기본 EVM opcode를 위한 ZK 회로 구축
  2. ZK 증명 계산을 위한 새로운 언어 생성

 

기본 EVM opcode를 위한 영지식 회로 구축 

이 접근 방식은 복잡하고 시간이 많이 걸리는 작업인 산술 회로에서 모든 EVM 명령어 세트를 구현해야 합니다 . 이점은 개발자가 기존 블록체인 개발자 도구를 사용하여 스마트 계약을 생성 하거나 광범위한 수정 없이 기존 이더리움 계약을 ZK 롤업으로 포팅할 수 있다는 것입니다.  

 

ZK 증명 계산을 위한 새 언어 만들기

이 접근 방식을 사용하려면 유효성 증명을 지원하도록 설계된 새로운 언어를 구축하고 사용자 지정 opcode를 개발해야 합니다. 개발자는 새 언어로 직접 계약을 작성하거나 Solidity 소스 코드를 맞춤형 zkEVM opcode로 컴파일해야 합니다. 

이 방법은 종종 첫 번째 방법보다 구현하기가 더 간단하지만 단점이 있습니다. 예를 들어 개발자는 기존 Ethereum 인프라 및 리소스에 액세스하지 못할 수 있습니다. 

 

4. zkEVM 구축이 어려운 이유는?

EVM은 zk-proof 계산을 염두에 두고 구축되지 않았기 때문에 회로 증명에 적합하지 않은 기능이 있습니다. 다음은 zkEVM 구축을 어렵게 만드는 네 가지 사항에 대한 간략한 개요입니다.

  1. 특수 opcode
  2. 스택 기반 아키텍처
  3. 스토리지 오버헤드
  4. 입증 비용

4-1. 특수 opcode 

일반 VM과 달리 EVM은 다른 작업 중에서 프로그램 실행(CALL, DELEGATECALL) 및 오류 처리(REVERT, INVALID)에 특수 opcode를 사용합니다. 이것은 EVM 작동을 위한 증명 회로를 설계하는 프로세스에 복잡성을 추가합니다. 

4-2. 스택 기반 아키텍처 

EVM은 레지스터 기반 구조보다 단순하지만 계산 증명의 어려움을 증가시키는 스택 기반 아키텍처를 사용합니다. 이것이 ZkSync의 zkEVM 및 StarkWare의 StarkNet과 같은 유명한 영지식 VM이 레지스터 기반 모델을 사용하는 이유입니다. 

4-3. 스토리지 오버헤드

EVM의 스토리지 레이아웃은 Keccak 해싱 기능과 Merkle Patricia Trie에 의존하며 둘 다 증명 오버헤드가 높습니다. ZkSync와 같은 일부 zkVM은 KECCAK256 기능을 대체하여 이 문제를 피하려고 시도하지만, 이로 인해 기존 이더리움 도구 및 인프라와의 호환성이 깨질 수 있습니다.

4-4. 증명 비용 

앞서 언급한 문제가 해결되더라도 여전히 해결해야 할 증명 생성 프로세스가 있습니다. 영지식 증명을 생성하려면 시간, 비용 및 노력에 대한 상당한 투자와 함께 특수 하드웨어가 필요합니다. 

완전하지는 않지만 이 목록은 EVM 호환 zkEVM을 구축하려는 노력을 방해하는 몇 가지 문제를 제시합니다. 그럼에도 불구하고 영지식 기술의 몇 가지 획기적인 발전으로 이러한 문제를 완화할 수 있게 되었으며, 이는 zkEVM 솔루션에 대한 새로운 관심으로 이어졌습니다. 

 

 

5. zkEVM이 중요한 이유는?

완전한 기능을 갖춘 zkEVM을 구축하면 EVM 호환 ZK-롤업 프로젝트 의 개발이 촉진됩니다 . 이는 다음과 같은 몇 가지 이점을 제공합니다.

  1. 안전한 확장성
  2. 저렴한 비용
  3. 더 빠른 완결성 및 자본 효율성
  4. 네트워크 효과

5-1. 확장성 확보

프로토콜 규칙에 따라 모든 유효성 검사 노드는 Ethereum 가상 머신에서 수행되는 모든 계산을 다시 실행해야 합니다. 이 접근 방식은 이더리움 노드가 프로그램의 정확성을 독립적으로 확인할 수 있기 때문에 보안을 보장하지만 이더리움 네트워크가 관리할 수 있는 확장성은 제한됩니다.

EVM 호환 ZK 롤업은 네트워크 보안을 훼손하지 않고 이더리움의 처리량 문제를 해결할 수 있습니다. 다른 스케일링 프로토콜과 마찬가지로 ZK 롤업은 이더리움의 합의 프로토콜 규칙에 의해 부담되지 않으며 실행 속도를 최적화할 수 있습니다. 일부 추정에 따르면 ZK 롤업은 이더리움의 높은 수수료 없이 초당 최대 2000건의 트랜잭션을 처리할 수 있습니다. 

그러나 ZK-롤업은 다른 스케일링 프로젝트에 비해 더 높은 보안 보장을 제공합니다. 유효성 증명으로 오프 체인 계산의 정확성을 확인합니다. 이는 L2에서 스마트 계약에 의해 수행된 거래가 노드가 작업을 다시 실행할 필요 없이 L1(Ethereum)에서 안정적으로 검증될 수 있음을 의미합니다. 이는 보안을 저하시키지 않으면서 이더리움의 처리 속도를 크게 높일 수 있습니다. 

 

5-2. 저렴한 비용

롤업은 이더리움에 트랜잭션 데이터를 CALLDATA로 작성하여 이더리움 메인넷에서 보안을 도출합니다. 그러나 낙관적 롤업과 ZK-롤업은 이더리움에 게시해야 하는 데이터의 양이 다릅니다. 

낙관적 롤업은 오프체인 트랜잭션에 대한 유효성 증명을 제공하지 않기 때문에 모든 트랜잭션 관련 데이터를 온체인(서명 및 트랜잭션 매개변수 포함)에 게시해야 합니다. 모든 데이터를 온체인에 넣지 않으면 도전자는 잘못된 롤업 거래에 대해 이의를 제기하는 데 사용되는 사기 증거를 구성할 수 없습니다. 

반대로 ZK 롤업은 유효성 증명이 이미 상태 전환의 신뢰성을 보장하기 때문에 이더리움에 최소한의 데이터를 게시할 수 있습니다. zkEVM은 트랜잭션 입력을 생략하고 최종 상태 변경만 게시하여 CALLDATA 요구 사항을 더욱 줄일 수 있습니다. 

이는 롤업 비용의 상당 부분이 데이터를 온체인에 게시하는 데서 발생하기 때문에 개발자와 사용자에게 유익합니다. CALLDATA를 최소로 줄임으로써 ZK-롤업은 탈중앙화 거래소, NFT 마켓플레이스, 예측 시장 등과 같은 dApp을 더 저렴하게 사용할 수 있습니다. 

 

5-3. 더 빠른 완결성 및 자본 효율성 

더 나은 보안 외에도 ZK 롤업은 낙관적 롤업에 비해 더 빠른 최종성이라는 또 다른 이점이 있습니다. 블록체인의 최종성은 트랜잭션이 되돌릴 수 없게 되는 데 걸리는 시간입니다. 거래는 네트워크 참가자가 유효성에 대한 객관적인 증거를 가지고 있는 경우에만 완료될 수 있습니다. 

ZK-롤업을 사용하면 zkEVM에서 실행되는 트랜잭션이 이더리움에 게시된 직후에 완료되는 경우가 많습니다. 각 거래 배치에는 즉시 검증 가능한 유효성 증명이 함께 제공되므로 메인 이더리움 체인은 상태 업데이트를 신속하게 적용할 수 있습니다. 

낙관적 롤업은 증명 없이 VM 트랜잭션만 게시하므로 트랜잭션이 완결성을 달성하기 전에 챌린지 기간이 경과해야 합니다. 챌린지 기간은 이더리움에 제출된 후 누구나 트랜잭션에 챌린지할 수 있는 1-2주 기간입니다. 

더 느린 완결성은 사용자 경험에 많은 영향을 미칩니다. 예를 들어 사용자는 지연 기간이 만료될 때까지 롤업에서 자산을 인출할 수 없습니다. 유동성 공급자는 문제를 해결할 수 있지만 인출에 고가 자산 또는 NFT가 포함된 경우 비효율적일 수 있습니다. 

zkEVM에는 위에서 설명한 문제가 없습니다. 더 빠른 완결성은 NFT 거래자, DeFi 투자자 또는 자산을 원활하게 이동해야 하는 차익 거래 거래자와 같은 파워 유저에게 좋습니다(특히 L1과 L2 사이). 

 

5-4. 네트워크 효과

EVM 호환 zkVM을 구축하는 가장 중요한 이유는 이더리움의 네트워크 효과를 활용하기 위함입니다. 세계 최대의 스마트 계약 플랫폼인 이더리움은 개발자와 프로젝트 모두에게 가치를 제공하는 대규모 생태계를 보유하고 있습니다. 

예를 들어 개발자는 실전 테스트 및 감사를 거친 코드 라이브러리, 광범위한 도구, 문서 등에 액세스할 수 있습니다. 이더리움의 인프라와 호환되지 않는 새로운 zkVM을 생성하면 프로젝트와 개발 팀이 이더리움의 네트워크 효과를 활용하지 못하게 됩니다. 

댓글