Polygon 직원 자술: Polygon zkEVM과 zkSync zkEVM의 차이점
원문 제목:《A comparison of zkEVMs》
저자:Daniel Lubarov
편집:Kxp,BlockBeats
「zkEVM 전쟁」이 격화됨에 따라, 대중은 다양한 zkEVM의 장점에 대해 많은 논의를 하고 있습니다. 그러나 일부 잘못된 정보도 존재하므로, 우리는 Polygon zkEVM 및 다른 프로젝트와의 비교에 대한 몇 가지 사실을 명확히 하고자 합니다.
Polygon의 직원으로서 저는 편향이 있을 수 있지만, 공정한 비교를 유지하기 위해 최선을 다하겠습니다. 저는 주로 Polygon의 zkEVM과 zkSync Era에 주목하고 있으며, 이들은 이미 생산에 사용되고 있고, 다른 zkEVM 프로젝트에 대해서는 잘 알지 못합니다.
zkSync의 zkEVM과 증명기는 10만 줄 이상의 코드로 구성되어 있습니다. 저는 정확한 요약을 제공하기 위해 노력하고 있으며, 만약 부정확한 부분이 있다면 알려주시면 수정하겠습니다.
EVM 호환성
Polygon zkEVM은 EVM 바이트코드를 직접 실행합니다. Vitalik의 분류에 따르면, 이는 타입 3의 zkEVM입니다. 곧 타입 2가 될 것이며, 현재 우리는 네 개의 프리컴파일이 부족합니다. Scroll도 타입 2 zkEVM으로 발전하기 위해 노력하고 있습니다.
반면, zkSync Era는 다른 바이트코드 형식을 사용하여 Solidity를 지원하는 컴파일러를 제공합니다. 이는 Solidity를 지원하지만 EVM 바이트코드 자체는 지원하지 않는 타입 4의 zkEVM입니다. 예를 들어 Hardhat과 같은 도구는 직접 사용할 수 없지만, zkSync의 플러그인을 통해 사용할 수 있습니다.
zkSync는 그들의 zkVM이 더 미래 지향적이라고 생각하며, 이는 Solidity 외의 언어와 더 잘 결합될 수 있다는 것입니다. 그러나 그들의 VM은 EVM의 많은 성능 특성을 물려받은 것으로 보이며, 예를 들어 256비트 워드 크기와 같은 특징이 있습니다. Miden과 같은 zkVM은 일반 계산을 위해 설계되었기 때문에 더 미래 지향적일 수 있습니다.
성능
성능은 항상 Polygon의 초점이었으며, 우리의 zkEVM은 매우 효율적입니다. CPU에서 우리의 증명기를 실행하는 비용은 거래당 약 0.000084 달러입니다.
우리는 zkSync의 zkEVM에 대한 작업 기준을 찾지 못했지만, 매우 다른 ZK 기술 선택으로 인해 성능 차이가 클 것이라고 의심하고 있습니다.
영역 선택
여러 대안을 연구한 결과, 우리는 소위 Goldilocks 필드, 즉 2^64 - 2^32 + 1의 2차 거대 소수 필드를 선택했습니다. 이 필드는 작은 크기와 아름다운 이진 구조로 인해 매우 빠른 필드 연산을 가능하게 하며, 곱셈은 현대 CPU에서 두 사이클도 채 걸리지 않습니다.
zkSync는 alt-bn128 곡선을 기반으로 한 SNARK를 사용하는 보다 전통적인 접근 방식을 채택했습니다. 기본 필드의 크기는 약 254비트이며, 필드 곱셈은 CPU에서 약 80 사이클이 필요합니다.
이러한 큰 차이의 영향을 느끼기 위해, 우리는 Celer의 SHA2 벤치마크를 살펴볼 수 있습니다. 그곳에서 우리의 STARK 증명기는 타원 곡선 기반 증명기보다 5-50배 더 빠릅니다.
alt-bn128의 장점은 EVM이 원주율적으로 지원하므로 Ethereum에 증명을 제출하는 것이 더 간단하다는 것입니다. Polygon에서는 최종 집계 증명을 alt-bn128의 fflonk 증명으로 「포장」합니다. 우리의 접근 방식은 더 많은 작업이 필요하지만, 우리는 이것이 믿을 수 없는 성능 향상을 위해 가치가 있다고 생각합니다.
산술화
차별화는 여기서 그치지 않습니다. 우리의 zkEVM은 STARKs를 기반으로 구축되었지만 현대적인 변화를 가지고 있습니다. 우리는 CPU용으로 하나의 주 STARK가 있으며(각 사이클마다 한 줄), 산술, 해시 등을 위한 다른 STARK도 있습니다. 이러한 표는 RapidUp에서 설명한 것처럼 연결할 수 있습니다. 이는 물리적 CPU와 유사하며, 이들은 종종 렌더링, Crypto 또는 ML 추론과 같은 집약적인 작업을 가속화하기 위해 보조 프로세서를 가지고 있습니다.
Keccak을 예로 들면, EVM 애플리케이션에서 널리 사용되기 때문에 우리는 이를 위해 특별히 설계된 STARK를 만들었으며, 여기서 새로운 기술을 사용했습니다. 이러한 맞춤형 산술화를 설계하는 데는 많은 작업이 필요하지만, 이는 보상을 가져와 매초 수백 개의 Keccak 배열을 증명할 수 있게 해줍니다.
zkSync는 제가 더 전통적이라고 부르는 접근 방식을 채택했습니다. 그들은 PLONK 기반의 증명기를 사용하지만, 사용자 정의 게이트를 지원하더라도 그들의 zkEVM에서는 많이 사용되지 않습니다. 대부분의 계산은 SelectorOptimizedWidth4MainGateWithDNext라는 일반 게이트를 사용하여 수행됩니다. 이는 바닐라 PLONK 게이트보다 약간 더 강력해 보이지만, 여전히 mul-adds와 같은 간단한 작업에 제한됩니다.
칭찬할 만한 점은 zkSync가 우리와 마찬가지로 조회 매개변수를 사용하여 Keccak과 같은 효율성을 높이는 데 도움이 되는 보다 현대적인 기술을 사용했다는 것입니다. 그러나 사용자 정의 산술화가 없으면 256비트 수학, Keccak 등의 효율성이 크게 저하됩니다.
안전성
Polygon은 안전성을 매우 중요하게 생각하며, 우리의 zkEVM은 두 번의 독립 감사(하나는 Spearbit, 다른 하나는 Hexens)에 통과했습니다. 두 보고서는 여기에서 공개적으로 확인할 수 있습니다. 우리는 또한 검증 배포에 대한 설명을 발표했습니다.
우리는 zkSync의 zkEVM이 공개 감사 여부를 알지 못합니다. zkSync의 웹사이트는 브릿지 계약의 감사를 나열하지만, zkEVM 자체에 대한 감사는 없습니다.
감사 외에도 두 프로젝트 모두 다양한 '안전 백업'을 가지고 있어 추가적인 안전 층을 제공합니다. 그러나 이는 깊은 주제이므로 여기에서는 자세히 다루지 않겠습니다.
L1 데이터
Polygon zkEVM은 모든 거래 데이터를 L1에 게시합니다. Twitter에서는 이에 대한 혼란이 있으며, 이에 대한 가스 비용은 Edu의 기사를 참조하십시오. 현재 평균 거래 크기는 약 120바이트이며, 따라서 거래당 가스 비용은 약 120*16=1920Gas입니다.
zkSync는 상태 차이를 게시합니다. 악의적인 직렬화기는 거래 데이터를 숨길 수 있지만, zkSync는 현재 상태의 trie를 보유하는 것만으로도 안전성을 보장할 수 있다고 생각합니다. 이는 논란의 여지가 있는 것으로 보이며, 일반적으로 거래 데이터가 사용 가능해야 하며 특정 애플리케이션이 이를 의존하기 때문입니다.
수정된 데이터를 살펴보면, 우리의 zkEVM과 zkSync의 거래당 가스 비용이 기본적으로 동일하다는 것을 알 수 있습니다. 이러한 숫자는 각 체인에서 발생하는 거래 유형의 혼합에 따라 시간이 지남에 따라 변동할 수 있지만, 현재로서는 상태 차이가 가스 비용을 절감하지 않았습니다. 두 시스템 모두 L1에 대해 거래당 약 120바이트의 데이터를 전송합니다.
우리는 여기에서 몇 가지 최적화를 계획하고 있지만, 상태 차이를 사용하지 않을 것입니다. 거래 자체는 압축할 수 있어 가스 비용을 낮추면서도 거래 데이터의 가용성을 보장할 수 있습니다. 기대해 주세요!














