DEINSIGHT2025 등록 카운트다운이 시작됩니다! 10월 5일 실리콘 밸리의 AI 및 암호화폐 업계 리더들과 함께하세요! [지금 가입하세요]
API RootData 앱 다운로드

zkEVM 성능은 어느 쪽이 강한가? 개발자는 도대체 어떻게 선택해야 할까?

2024-09-19 08:58:52

공유하십시오

원문 저자: Jarrod Watts

편집: BlockBeats

이더리움 확장성 전쟁에서, Optimistic rollups는 EVM과의 높은 호환성으로 인해 Arbitrum과 Optimism이 개발자 채택에서 선천적인 이점을 가지게 되었습니다. 이들은 L1에서 L2로의 코드 이식과 풍부한 개발 도구를 통해 개발자들이 플랫폼에 쉽게 진입하고 애플리케이션을 배포하고 생성할 수 있도록 빠르게 유도합니다.

이에 비해 ZK 계열은 조금 더 어렵습니다. 기술적으로 고유한 특성으로 인해 ZK rollups는 자체 가상 머신을 맞춤화해야 하며, 이는 프로젝트 팀이 EVM에서 오는 코드를 "설명"하거나 심지어 처음부터 새로운 코드를 개발하는 데 더 많은 작업을 해야 함을 의미합니다. 그러나 현재 Taiko, Polygon, Linea, Scroll 및 ZkSync Era를 포함한 여러 ZK rollups 프로젝트가 자체 zkEVM 구현을 출시했습니다.

확장성의 성배로서 zkEVM은 개발자 계약 배포 경험에 매우 중요한 영향을 미칩니다. 다양한 ZK rollups 프로젝트를 마주한 개발자들은 어떻게 선택해야 할까요?

이 글은 Jarrod Watts의 트윗 요약을 바탕으로 편집되었습니다. 그는 Polygon의 개발자 관계 엔지니어로, 현재 인기 있는 ZK rollups 프로젝트에 스마트 계약(1개의 Solidity 스마트 계약과 1개의 NFT 계약)을 배포하여 Taiko, Polygon, Linea, Scroll 및 ZkSync Era와 같은 프로젝트의 zkEVM 성능을 실험하고, 각자의 장단점과 L2에서 L1으로의 입금 시간을 비교하여 2층 계약을 배포하려는 개발자들에게 실험 가이드를 제공합니다.

다음은 BlockBeats의 원문 편집입니다:

ZK-EVM이란 무엇이며 왜 필요한가?

ZK-EVM이 무엇인지 해석하기 전에, 왜 ZK-EVM이 필요한지 먼저 살펴보자.

ZK Rollups는 이더리움에 확장성과 높은 성능을 제공합니다. 그러나 ZK Rollups 솔루션은 EVM(이더리움 가상 머신)과 호환되지 않기 때문에, ZK Rollups 솔루션은 전송, 발행 또는 소각과 같은 제한된 작업만 수행할 수 있으며, 사용자에게 지갑과 같은 도구를 개발해야 합니다.

따라서 우리는 EVM과 호환되는 ZK Rollups가 필요하며, 이를 위해 여러 회사가 자체 ZK-EVM을 개발했습니다.

ZK-EVM, 즉 제로 지식 EVM은 제로 지식 증명과 호환되는 이더리움 가상 머신 구현입니다.

ZK-EVM의 주요 기능은 이더리움 L2(2층)에서 거래를 배치 처리하고 해당 배치 거래의 "유효성 증명"을 이더리움 L1으로 반환하는 것입니다. 일반적으로 zkEVM은 이더리움 메인넷에서 할 수 있는 모든 작업을 수행할 수 있습니다. 이는 Solidity 또는 Vyper로 작성된 인간이 읽을 수 있는 코드를 바이트코드로 컴파일하고, 스마트 계약을 실행하며, 블록체인 상태를 업데이트합니다.

EVM 호환 ZK Rollups를 구축하는 데 어려움이 있는 이유는 이더리움의 초기 설계가 ZK 친화성을 고려하지 않았기 때문입니다. 이는 제로 지식 증명이 계산에 많은 자원을 필요로 한다는 것을 의미합니다.

특히, 특정 EVM 연산 코드(opcodes)는 "ZK 친화적이지 않다"고 여겨지며, 이로 인해 각 회사가 최종적으로 설계한 ZK-EVM 제품의 EVM 호환성이 다르게 나타납니다.

opcodes, 바이트코드 및 EVM은 각각 무엇인가?

과학 시간입니다. opcodes, 바이트코드 및 EVM은 각각 무엇인가요?

먼저, EVM은 이더리움에서 스마트 계약이 실행되는 환경입니다. 이더리움은 이른바 "머신 상태"를 trie 트리 구조로 저장하며, 블록 내 거래가 실행될 때마다 이 구조가 변경됩니다.

EVM은 결정적입니다. 이는 특정 상태에서 명령어 집합을 실행하면 항상 동일한 새로운 상태가 생성된다는 것을 의미합니다.

이더리움 개발자 문서에 따르면, 하나의 오래된 유효 상태(S)와 새로운 유효 거래 집합(T)이 있을 때, 이더리움은 새로운 유효 출력 상태 S'를 생성합니다.

이것을 체스와 같은 게임으로 생각할 수 있습니다. 이더리움은 체스판과 같으며, 다양한 게임 상태가 존재합니다. 이더리움에서 이러한 상태의 가능성은 무한합니다. 체스 게임은 특정 이동 규칙(이더리움의 거래와 비교)이 있으며, 어떤 종류의 기물이 어떤 작업을 수행할 수 있는지에 대한 특정 제한이 있습니다. 게임 플레이어는 행동을 취하고(이더리움에서 사용자가 거래를 제출하는 것과 비교), 게임(이더리움)은 규칙을 설정하고 실행하여 각 턴(블록 시간에 해당) 후 새로운 체스판(이더리움 전역) 상태를 생성합니다.

이더리움 또는 EVM 호환 블록체인 개발을 위해서는 Solidity로 스마트 계약을 작성해야 합니다. Solidity는 고급 언어로, 인간이 읽을 수 있도록 설계되어 개발자가 코드 작성에 집중할 수 있도록 합니다. 이는 레지스터, 메모리 주소, 호출 스택 등 추상적 수준의 것들에 대한 걱정을 덜어줍니다.

그러나 EVM은 Solidity를 읽을 수 없습니다. 반대로, EVM은 "바이트코드"(bytecode)만 이해할 수 있으며, 이는 이진수로 기계가 읽을 수 있는 저급 코드입니다.

EVM에서 "바이트코드"(bytecode)는 일련의 EVM "연산 코드"(opcodes)를 나타내며, 연산 코드는 프로그램의 저급 읽기 가능한 지침으로 EVM에서 실행할 수 있는 특정 작업을 나타냅니다.

Solidity와 같은 고급 언어는 EVM에서 직접 실행될 수 없기 때문에, 우리는 스마트 계약 코드를 인간이 읽을 수 있는 Solidity 언어에서 연산 코드 바이트코드로 변환한 다음 EVM이 실행할 수 있는 방법이 필요합니다. 이것이 컴파일러의 역할입니다.

Remix IDE 컴파일러를 사용하여 Solidity 코드를 컴파일하면, 해당 스마트 계약이 변환된 특정 연산 코드를 볼 수 있으며, 이 연산 코드에서 생성된 바이트코드를 확인할 수 있습니다.

다음은 연산 코드입니다:

다음은 위의 연산 코드에 해당하는 바이트코드입니다.

바이트코드를 연산 코드로 변환함으로써 바이트코드에 포함된 실행 지침을 알 수 있습니다.

EVM 내 특정 연산 코드에 대한 ZK 증명의 난이도로 인해 시장에는 다양한 호환성 수준의 ZK-EVM이 등장했습니다. 일부 ZK-EVM은 EVM 연산 코드 집합과 완전히 동등하며, 일부는 일부 EVM 연산 코드를 수정하였고, 또 다른 것은 완전히 다른 바이트코드를 가지고 있습니다.

다양한 유형의 ZK-EVM

이더리움의 초기 설계가 ZK 친화성을 고려하지 않았기 때문에, 이론적으로 이더리움 설계에 가까울수록 ZK 증명을 생성하는 것이 더 어렵고 시간이 많이 걸립니다. 2022년 8월, 이더리움 창시자 비탈릭은 “비탈릭이 다양한 유형의 ZK-EVM의 미래를 해석하다”라는 블로그를 발표하여 다양한 ZK-EVM을 분류했습니다.

이 글에서 비탈릭은 EVM 호환성과 ZK 증명 생성 시간(성능)이라는 두 가지 차원에서 다양한 ZK-EVM을 분류하였으며, 비탈릭은 이 도표에서 네 가지(반) 유형을 나열했습니다. 현재 시장에 있는 모든 ZK-EVM 제품은 이 중 하나에 포함될 수 있습니다.

  1. 첫 번째 유형의 ZK-EVM은 이더리움과 완전히 동등하며, 이더리움 시스템의 어떤 부분도 변경하지 않으며, 증명 생성을 더 쉽게 합니다. 이러한 시스템에서 ZK 증명을 생성하는 데는 오랜 시간이 걸립니다(몇 시간). Taiko는 이 유형의 ZK-EVM에 해당합니다.

  2. 두 번째 유형은 EVM과 완전히 동등하지만, ZK 증명 생성 시간을 단축하기 위해 체인 상태의 저장 방식과 같은 몇 가지 내부 표현 방식을 변경합니다. 현재 시장에는 이러한 유형의 ZK-EVM이 없지만, Polygon, Linea 및 Scroll은 이 방향으로 노력하고 있습니다.

2.5. 유형 2와 유형 3 사이에는 유형 2.5가 있습니다. 이 유형은 EVM과 완전히 동등하지만, 특정 작업의 가스 비용을 증가시켜 "최악의 경우 증명 시간을 대폭 단축"합니다. 현재 시장에는 이러한 유형의 ZK-EVM이 없지만, Kakarot라는 새로운 ZK-EVM 프로젝트가 이 방향으로 노력하고 있습니다.

  1. 유형 3은 EVM과 거의 동등하지만, 증명 시간을 단축하고 EVM 개발을 단순화하기 위해 일부 정확성을 포기합니다. 현재 Polygon, Linea 및 Scroll이 이 유형에 해당합니다.

  2. 유형 4는 ZK-EVM의 고급 언어에 해당하며, 이 유형의 ZK-EVM은 스마트 계약의 소스 코드를 ZK-SNARK 친화적인 언어로 컴파일합니다. 이는 더 빠른 증명 시간을 가져오지만, 그에 따른 비호환성과 제한 등의 단점도 발생합니다. 현재 zkSync Era가 이 유형에 해당합니다.

유효성 증명을 이더리움 L1으로 반환하는 데 필요한 시간은 사용자가 자금을 L1으로 다시 전송하는 데 걸리는 시간입니다. 증명 생성에 몇 시간이 걸린다면, 사용자는 이 몇 시간 동안 자금을 L1으로 브리지할 수 없습니다.

실전: Taiko, Polygon, Linea, Scroll 및 ZkSync Era 개발 평가

이론 지식 복습이 끝났습니다. 이제 실전 부분입니다.

Taiko, Polygon, Linea, Scroll 및 ZkSync Era에 각각 Solidity 스마트 계약과 NFT 계약을 배포하여 각 ZK-EVM의 성능과 존재하는 결함을 테스트하였으며, 저자는 사용 가능한 개발자 리소스를 제공하고, 주로 개발자 경험 및 L2에서 L1으로의 브리지 시간 두 가지 차원에서 평가하였습니다.

Taiko ZK-EVM

Taiko는 유형 1 ZK-EVM에 해당하며, 현재 테스트넷 단계에 있습니다. Taiko는 이더리움의 모든 동작을 정확하게 처리할 수 있습니다. 동일한 해시 함수, 가스 가격 및 암호화 알고리즘 등을 사용합니다.

작업 과정: 간단한 Solidity 스마트 계약을 배포하고 ThirdWeb 프록시를 사용하여 간단한 NFT 컬렉션을 배포했습니다.

유형 1 ZK-EVM의 단점은 모든 것이 이더리움과 완전히 동일할 때(내부적으로도) 증명 생성에 오랜 시간이 걸린다는 것입니다. 이는 사용자가 Taiko L2에서 이더리움 L1으로 ETH를 브리지하는 데 몇 시간이 걸린다는 것을 의미합니다(아래 참조).

Linea ZK-EVM

Linea는 유형 3 ZK-EVM에 해당하며, 현재 모든 연산 코드 또는 프리컴파일을 증명할 수 없습니다. 이는 이더리움과 다른 체인 내부 상태를 나타내며, 다른 해시 함수를 사용합니다.

배포된 바이트코드는 이더리움과 동일합니다.

이번 배포 과정은 거의 무결점으로, 두 개의 스마트 계약을 쉽게 배포하고 상호작용할 수 있었습니다. 이는 이더리움의 동작과 동일하며, 기존 도구와 지갑을 사용하여 스마트 계약을 배포하고 상호작용하며 NFT를 발행할 수 있습니다.

이 글을 작성할 당시, Linea는 브리지 프론트엔드 인터페이스를 출시하지 않았습니다. 따라서 브리지의 스마트 계약 함수를 직접 호출해야만 했습니다.

Linea 문서에 따르면, ETH의 L2에서 L1으로의 브리지는 일반적으로 약 15분이 걸리지만, 이번 작업 사례에서는 몇 시간이 소요되었습니다.

Polygon ZK-EVM

Polygon ZK-EVM은 유형 3 ZK-EVM에 해당하며, 올해 3월 말부터 메인넷을 시작했습니다.

Polygon zkEVM은 공식 문서에서 EVM과 zkEVM 간의 현재 모든 차이를 나열했습니다.

Polygon zkEVM에서 배포된 바이트코드는 이더리움과 동일하여 스마트 계약을 배포하고 상호작용하는 것이 매우 간단합니다. 비탈릭은 "Polygon zkEVM은 독특한 설계를 가지고 있으며, 그들은 zkASM이라는 내부 언어를 사용하여 ZK를 검증하고 있다"고 언급했습니다.

Polygon 엔지니어링 팀은 증명 생성 및 인출 시간을 개선하는 것 외에도, 향후 가능한 한 빨리 나머지 프리컴파일을 완료할 계획이며, 목표는 비탈릭의 도표에서 유형 2가 되는 것입니다.

이번 배포 사례에서 zkEVM 메인넷 브리지는 매우 순조롭게 진행되었습니다. L2 -> L1 브리지 과정은 약 1시간이 걸렸습니다.

Scroll

Scroll은 유형 3 ZK-EVM에 해당하며, 현재 테스트넷 단계에 있습니다. Scroll은 공식 문서에서 ZK-EVM과 이더리움 EVM 간의 차이를 나열했습니다.

다른 3형 ZK-EVM과 마찬가지로 이번 배포 과정은 거의 무결점으로, Solidity 스마트 계약과 NFT 컬렉션을 쉽게 배포하고 상호작용할 수 있었습니다. L2에서 L1으로의 자금 브리지는 "10분에서 몇 시간"이 걸릴 것으로 예상됩니다.

ZkSync Era

ZkSync Era는 유형 4 ZK-EVM에 해당합니다. 다른 ZK-EVM과 완전히 다르며, ZkSync Era의 zkEVM에서 배포된 스마트 계약 바이트코드는 이더리움과 다릅니다.

이는 ZkSync Era가 계정 추상화(Account abstraction)에 대한 네이티브 지원이라는 독특한 기능을 제공하여 다른 개발자 경험을 가져옵니다. 일반적으로 대부분의 암호화 지갑은 표준 주소일 뿐이며, 자금을 송수신하고 스마트 계약과 상호작용할 수 있습니다. 계정 추상화가 있으면 암호화 지갑은 맞춤형으로 설계될 수 있으며, 더 복잡한 방식으로 설계되어 더 넓은 기능을 제공합니다. 또한, 해당 zkEVM은 개발자가 Solidity와 같은 동일한 고급 언어를 사용할 수 있도록 허용합니다.

ZkSync Era의 ZK-EVM은 EVM과 큰 차이가 있지만, ZkSync Era는 개발자에게 최상의 실천 및 주의 사항을 제공하는 전체 세트를 제공합니다. 또한, 개발자는 ZkSync Era에 맞춰 구축하기 위해 개발 프로세스에 약간의 조정을 해야 합니다.

예를 들어, 다음 예에서는 사용자 정의 zkSync 확장을 사용하여 Hardhat 환경을 설치하고 구성해야 하며, 이를 통해 Era ZK-EVM에 배포할 수 있는 바이트코드를 생성할 수 있습니다.

컴파일 결과 이더리움과 완전히 다른 새로운 바이트코드가 생성되었으며, 위의 ZK-EVM에서 생성된 바이트코드와 완전히 다릅니다.

주목할 점은, ThirdWeb가 현재 zkSync Era에 출시되었다는 것입니다. 이는 개발자에게 더 편리한 배포 경험을 제공합니다.

이번 작업에서는 총 두 개의 스마트 계약을 배포하고, 이들과 상호작용하며, 자산을 L2에서 L1으로 반환했습니다. 현재 보안상의 이유로 ZkSync Era 메인넷에서 이더리움 L1으로의 인출에는 24시간의 지연이 있습니다.

Kakarot ZkEvm

유형 2.5 ZK-EVM을 구현하기 위해 노력하는 또 다른 프로젝트는 Kakarot ZkEvm입니다. 이 프로젝트는 올해 6월 비탈릭 부테린과 StarkWare를 포함한 여러 기관으로부터 자금을 확보하였으며, Kakarot는 2023년 늦여름에 테스트넷을 출시할 계획입니다.

관련 기사:

《Kakarot 상세 설명: 비탈릭이 선호하고 투자한 zkEVM 프로젝트》

결론

최종 사용자에게는 누가 경주에서 이기는지가 중요하지 않습니다. EVM 호환 ZK 솔루션의 발전은 전체 산업의 큰 승리입니다. 각 프로젝트 팀에게는 경쟁이라기보다는 전체 산업의 발전을 촉진하기 위한 다양한 방법을 탐색하는 과정입니다. 비탈릭은 심지어 "다중 증명자 이론"을 가지고 있으며, 그 기본 전제는 서로 다른 Rollup이 협력하여 이더리움의 전체 보안을 강화할 수 있다는 것입니다.

결국, 모두가 이더리움의 성공을 원합니다. L2 확장 전환은 비탈릭이 이더리움이 겪어야 할 세 가지 기술 전환 중 하나로 생각하고 있습니다. 앞으로 어떻게 발전할지는 두고 볼 일입니다.

zkEVM 성능은 어느 쪽이 강한가? 개발자는 도대체 어떻게 선택해야 할까?

펀딩 정보

더보기
$13M 09-30
$21M 09-30
$100M 09-30

최근 출시 토큰

더보기
10-01
09-30
09-30