영지식 롤업
영지식 롤업(ZK-롤업)은 연산 및 상태 저장을 오프체인으로 이동시켜 이더리움 메인넷의 처리량을 늘리는 레이어 2 (l2) 확장성 솔루션입니다. ZK-롤업은 수천 개의 트랜잭션을 일괄 처리한 다음 최소한의 요약 데이터만 메인넷에 게시할 수 있습니다. 이 요약 데이터는 이더리움 상태에 적용해야 할 변경 사항과 해당 변경 사항이 올바르다는 암호학적 증명을 정의합니다.
전제 조건
이더리움 확장성 및 레이어 2 (l2)에 대한 페이지를 읽고 이해해야 합니다.
영지식 롤업이란 무엇인가요?
영지식 롤업(ZK-롤업)은 트랜잭션을 오프체인에서 실행되는 배치로 묶습니다(또는 '롤업'합니다). 오프체인 연산은 블록체인에 게시해야 하는 데이터의 양을 줄여줍니다. ZK-롤업 운영자는 각 트랜잭션을 개별적으로 전송하는 대신 배치 내의 모든 트랜잭션을 나타내는 데 필요한 변경 사항의 요약을 제출합니다. 또한 변경 사항의 정확성을 증명하기 위해 을 생성합니다.
ZK-롤업의 상태는 이더리움 네트워크에 배포된 스마트 컨트랙트에 의해 유지됩니다. 이 상태를 업데이트하려면 ZK-롤업 노드가 검증을 위해 유효성 증명을 제출해야 합니다. 앞서 언급했듯이 유효성 증명은 롤업이 제안한 상태 변경이 실제로 주어진 트랜잭션 배치를 실행한 결과임을 암호학적으로 보장하는 것입니다. 즉, ZK-롤업은 옵티미스틱 롤업처럼 모든 트랜잭션 데이터를 온체인에 게시하는 대신 이더리움에서 트랜잭션을 완결하기 위해 유효성 증명만 제공하면 됩니다.
ZK-롤업 컨트랙트가 유효성 증명을 검증하면 종료 트랜잭션이 실행되므로 ZK-롤업에서 이더리움으로 자금을 이동할 때 지연이 발생하지 않습니다. 반대로 옵티미스틱 롤업에서 자금을 인출할 때는 누구나 으로 종료 트랜잭션에 이의를 제기할 수 있도록 지연 시간이 적용됩니다.
ZK-롤업은 트랜잭션을 이더리움에 calldata로 기록합니다. calldata는 스마트 컨트랙트 함수에 대한 외부 호출에 포함된 데이터가 저장되는 곳입니다. calldata의 정보는 블록체인에 게시되어 누구나 독립적으로 롤업의 상태를 재구성할 수 있게 해줍니다. ZK-롤업은 압축 기술을 사용하여 트랜잭션 데이터를 줄입니다. 예를 들어 계정은 주소 대신 인덱스로 표시되어 28바이트의 데이터를 절약합니다. 온체인 데이터 게시는 롤업에 있어 상당한 비용이므로 데이터 압축을 통해 사용자의 수수료를 줄일 수 있습니다.
ZK-롤업은 이더리움과 어떻게 상호작용하나요?
ZK-롤업 체인은 이더리움 블록체인 위에서 작동하며 온체인 이더리움 스마트 컨트랙트에 의해 관리되는 오프체인 프로토콜입니다. ZK-롤업은 메인넷 외부에서 트랜잭션을 실행하지만 주기적으로 오프체인 트랜잭션 배치를 온체인 롤업 컨트랙트에 커밋합니다. 이 트랜잭션 기록은 이더리움 블록체인과 마찬가지로 불변이며 ZK-롤업 체인을 형성합니다.
ZK-롤업의 핵심 아키텍처는 다음 구성 요소로 이루어져 있습니다.
-
온체인 컨트랙트: 앞서 언급했듯이 ZK-롤업 프로토콜은 이더리움에서 실행되는 스마트 컨트랙트에 의해 제어됩니다. 여기에는 롤업 블록을 저장하고, 예치금을 추적하며, 상태 업데이트를 모니터링하는 메인 컨트랙트가 포함됩니다. 또 다른 온체인 컨트랙트(검증자 컨트랙트)는 블록 생성자가 제출한 영지식 증명을 검증합니다. 따라서 이더리움은 ZK-롤업의 기본 레이어 또는 "레이어 1 (l1)" 역할을 합니다.
-
오프체인 가상 머신(VM): ZK-롤업 프로토콜은 이더리움에 존재하지만, 트랜잭션 실행 및 상태 저장은 EVM과 독립적인 별도의 가상 머신에서 발생합니다. 이 오프체인 VM은 ZK-롤업 트랜잭션의 실행 환경이며 ZK-롤업 프로토콜의 보조 레이어 또는 "레이어 2 (l2)" 역할을 합니다. 이더리움 메인넷에서 검증된 유효성 증명은 오프체인 VM에서 상태 전환의 정확성을 보장합니다.
ZK-롤업은 독립적으로 작동하지만 이더리움에서 보안을 파생하는 오프체인 프로토콜인 "하이브리드 확장성 솔루션"입니다. 구체적으로 이더리움 네트워크는 ZK-롤업의 상태 업데이트 유효성을 강제하고 롤업 상태의 모든 업데이트 이면에 있는 데이터의 가용성을 보장합니다. 결과적으로 ZK-롤업은 자체 보안 속성을 책임지는 사이드체인이나, 이더리움에서 유효성 증명으로 트랜잭션을 검증하지만 트랜잭션 데이터를 다른 곳에 저장하는 발리디움과 같은 순수 오프체인 확장성 솔루션보다 훨씬 안전합니다.
ZK-롤업은 다음 사항에 대해 메인 이더리움 프로토콜에 의존합니다.
데이터 가용성
ZK-롤업은 오프체인에서 처리된 모든 트랜잭션의 상태 데이터를 이더리움에 게시합니다. 이 데이터를 통해 개인이나 기업은 롤업의 상태를 재현하고 체인을 직접 검증할 수 있습니다. 이더리움은 이 데이터를 calldata로 네트워크의 모든 참가자에게 제공합니다.
유효성 증명이 이미 상태 전환의 진위 여부를 검증하기 때문에 ZK-롤업은 많은 트랜잭션 데이터를 온체인에 게시할 필요가 없습니다. 그럼에도 불구하고 온체인에 데이터를 저장하는 것은 여전히 중요합니다. 이를 통해 L2 체인 상태에 대한 무허가성 및 독립적인 검증이 가능해지며, 결과적으로 누구나 트랜잭션 배치를 제출할 수 있어 악의적인 운영자가 체인을 검열하거나 동결하는 것을 방지할 수 있기 때문입니다.
사용자가 롤업과 상호작용하려면 온체인이 필요합니다. 상태 데이터에 접근할 수 없으면 사용자는 계정 잔액을 조회하거나 상태 정보에 의존하는 트랜잭션(예: 인출)을 시작할 수 없습니다.
트랜잭션 완결성
이더리움은 ZK-롤업의 정산 레이어 역할을 합니다. L2 트랜잭션은 L1 컨트랙트가 유효성 증명을 수락하는 경우에만 완결됩니다. 모든 트랜잭션은 메인넷에서 승인되어야 하므로 악의적인 운영자가 체인을 손상시키는(예: 롤업 자금 탈취) 위험이 제거됩니다. 또한 이더리움은 L1에서 완결된 사용자 작업은 되돌릴 수 없음을 보장합니다.
검열 저항성
대부분의 ZK-롤업은 트랜잭션을 실행하고, 배치를 생성하며, L1에 블록을 제출하기 위해 "슈퍼노드"(운영자)를 사용합니다. 이는 효율성을 보장하지만 검열의 위험을 증가시킵니다. 악의적인 ZK-롤업 운영자는 사용자의 트랜잭션을 배치에 포함시키기를 거부하여 사용자를 검열할 수 있습니다.
보안 조치로서 ZK-롤업은 사용자가 운영자에게 검열당하고 있다고 생각할 경우 메인넷의 롤업 컨트랙트에 직접 트랜잭션을 제출할 수 있도록 허용합니다. 이를 통해 사용자는 운영자의 허가에 의존하지 않고 ZK-롤업에서 이더리움으로 강제 종료할 수 있습니다.
ZK-롤업은 어떻게 작동하나요?
트랜잭션
ZK-롤업의 사용자는 트랜잭션에 서명하고 처리를 위해 L2 운영자에게 제출하여 다음 배치에 포함시킵니다. 경우에 따라 운영자는 시퀀서라고 불리는 중앙화된 주체로, 트랜잭션을 실행하고 배치로 집계하여 L1에 제출합니다. 이 시스템에서 시퀀서는 L2 블록을 생성하고 ZK-롤업 컨트랙트에 롤업 트랜잭션을 추가할 수 있는 유일한 주체입니다.
다른 ZK-롤업은 지분 증명 (PoS) 검증자 세트를 사용하여 운영자 역할을 교대할 수 있습니다. 예비 운영자는 롤업 컨트랙트에 자금을 예치하며, 각 스테이크의 크기는 스테이커가 다음 롤업 배치를 생성하도록 선택될 확률에 영향을 미칩니다. 운영자가 악의적으로 행동할 경우 스테이크가 슬래싱될 수 있으며, 이는 유효한 블록을 게시하도록 장려합니다.
ZK-롤업이 이더리움에 트랜잭션 데이터를 게시하는 방법
설명한 바와 같이 트랜잭션 데이터는 이더리움에 calldata로 게시됩니다. calldata는 함수에 인수를 전달하는 데 사용되는 스마트 컨트랙의 데이터 영역이며 메모리와 유사하게 작동합니다. calldata는 이더리움 상태의 일부로 저장되지는 않지만 이더리움 체인의 기록 로그 (opens in a new tab)의 일부로 온체인에 지속됩니다. calldata는 이더리움의 상태에 영향을 미치지 않으므로 온체인에 데이터를 저장하는 저렴한 방법입니다.
calldata 키워드는 종종 트랜잭션에 의해 호출되는 스마트 컨트랙트 메서드를 식별하고 임의의 바이트 시퀀스 형태로 메서드에 대한 입력을 보유합니다. ZK-롤업은 calldata를 사용하여 압축된 트랜잭션 데이터를 온체인에 게시합니다. 롤업 운영자는 롤업 컨트랙트에서 필요한 함수를 호출하여 새 배치를 추가하고 압축된 데이터를 함수 인수로 전달하기만 하면 됩니다. 롤업 수수료의 상당 부분이 온체인에 트랜잭션 데이터를 저장하는 데 사용되므로 이는 사용자의 비용을 줄이는 데 도움이 됩니다.
상태 커밋먼트
L2 계정과 잔액을 포함하는 ZK-롤업의 상태는 머클 트리로 표시됩니다. 머클 트리 루트(머클 루트)의 암호학적 해시는 온체인 컨트랙트에 저장되어 롤업 프로토콜이 ZK-롤업 상태의 변경 사항을 추적할 수 있게 해줍니다.
롤업은 새로운 트랜잭션 세트가 실행된 후 새로운 상태로 전환됩니다. 상태 전환을 시작한 운영자는 새로운 상태 루트를 계산하여 온체인 컨트랙트에 제출해야 합니다. 배치와 관련된 유효성 증명이 검증자 컨트랙트에 의해 인증되면 새로운 머클 루트가 ZK-롤업의 정식 상태 루트가 됩니다.
상태 루트를 계산하는 것 외에도 ZK-롤업 운영자는 배치 내의 모든 트랜잭션으로 구성된 머클 트리의 루트인 배치 루트도 생성합니다. 새 배치가 제출되면 롤업 컨트랙트는 배치 루트를 저장하여 사용자가 트랜잭션(예: 인출 요청)이 배치에 포함되었음을 증명할 수 있도록 합니다. 사용자는 트랜잭션 세부 정보, 배치 루트 및 포함 경로를 보여주는 머클 증명을 제공해야 합니다.
유효성 증명
ZK-롤업 운영자가 L1 컨트랙트에 제출하는 새로운 상태 루트는 롤업 상태 업데이트의 결과입니다. 앨리스가 밥에게 10개의 토큰을 전송한다고 가정하면, 운영자는 단순히 앨리스의 잔액을 10만큼 줄이고 밥의 잔액을 10만큼 늘립니다. 그런 다음 운영자는 업데이트된 계정 데이터를 해싱하고 롤업의 머클 트리를 재구성한 후 새로운 머클 루트를 온체인 컨트랙트에 제출합니다.
그러나 롤업 컨트랙트는 운영자가 새로운 머클 루트가 롤업 상태의 올바른 업데이트로 인한 것임을 증명할 때까지 제안된 상태 커밋먼트를 자동으로 수락하지 않습니다. ZK-롤업 운영자는 일괄 처리된 트랜잭션의 정확성을 검증하는 간결한 암호학적 커밋먼트인 유효성 증명을 생성하여 이를 수행합니다.
유효성 증명을 통해 당사자들은 진술 자체를 공개하지 않고도 진술의 정확성을 증명할 수 있으며, 이러한 이유로 영지식 증명이라고도 불립니다. ZK-롤업은 이더리움에서 트랜잭션을 다시 실행할 필요 없이 오프체인 상태 전환의 정확성을 확인하기 위해 유효성 증명을 사용합니다. 이러한 증명은 영지식 스나크(ZK-SNARK) (opens in a new tab)(Zero-Knowledge Succinct Non-Interactive Argument of Knowledge) 또는 ZK-스탁(ZK-STARK) (opens in a new tab)(Zero-Knowledge Scalable Transparent Argument of Knowledge)의 형태로 제공될 수 있습니다.
SNARK와 STARK 모두 ZK-롤업에서 오프체인 연산의 무결성을 증명하는 데 도움이 되지만, 각 증명 유형에는 고유한 특징이 있습니다.
영지식 스나크(ZK-SNARK)
영지식 스나크 프로토콜이 작동하려면 공통 참조 문자열(CRS)을 생성해야 합니다. CRS는 유효성 증명을 증명하고 검증하기 위한 공개 매개변수를 제공합니다. 증명 시스템의 보안은 CRS 설정에 달려 있습니다. 공개 매개변수를 생성하는 데 사용된 정보가 악의적인 행위자의 손에 들어가면 거짓 유효성 증명을 생성할 수 있습니다.
일부 ZK-롤업은 신뢰할 수 있는 개인이 참여하는 다자간 연산(MPC) 세리머니 (opens in a new tab)를 사용하여 영지식 스나크 회로에 대한 공개 매개변수를 생성함으로써 이 문제를 해결하려고 시도합니다. 각 당사자는 CRS를 구성하기 위해 약간의 무작위성("독성 폐기물"이라고 함)을 기여하며, 이는 즉시 파기해야 합니다.
신뢰할 수 있는 설정은 CRS 설정의 보안을 강화하기 때문에 사용됩니다. 정직한 참가자 한 명이라도 자신의 입력을 파기하는 한 영지식 스나크 시스템의 보안은 보장됩니다. 그럼에도 불구하고 이 접근 방식은 관련된 사람들이 샘플링된 무작위성을 삭제하고 시스템의 보안 보장을 훼손하지 않을 것이라고 신뢰해야 합니다.
신뢰 가정을 차치하고, 영지식 스나크는 증명 크기가 작고 검증 시간이 일정하여 인기가 있습니다. L1에서의 증명 검증이 ZK-롤업 운영 비용의 큰 부분을 차지하므로, L2는 영지식 스나크를 사용하여 메인넷에서 빠르고 저렴하게 검증할 수 있는 증명을 생성합니다.
ZK-스탁(ZK-STARK)
영지식 스나크와 마찬가지로 ZK-스탁은 입력을 공개하지 않고 오프체인 연산의 유효성을 증명합니다. 그러나 ZK-스탁은 확장성과 투명성 때문에 영지식 스나크보다 개선된 것으로 간주됩니다.
ZK-스탁은 공통 참조 문자열(CRS)의 신뢰할 수 있는 설정 없이 작동할 수 있으므로 '투명'합니다. 대신 ZK-스탁은 공개적으로 검증 가능한 무작위성에 의존하여 증명을 생성하고 검증하기 위한 매개변수를 설정합니다.
또한 ZK-스탁은 유효성 증명을 증명하고 검증하는 데 필요한 시간이 기본 연산의 복잡성에 비례하여 준선형적(quasilinearly)으로 증가하기 때문에 더 많은 확장성을 제공합니다. 영지식 스나크의 경우 증명 및 검증 시간은 기본 연산의 크기에 비례하여 선형적으로 확장됩니다. 즉, 대규모 데이터 세트가 관련된 경우 ZK-스탁은 영지식 스나크보다 증명 및 검증에 더 적은 시간이 필요하므로 대용량 애플리케이션에 유용합니다.
ZK-스탁은 양자 컴퓨터에 대해서도 안전한 반면, 영지식 스나크에 사용되는 타원 곡선 암호학(ECC)은 양자 컴퓨팅 공격에 취약한 것으로 널리 알려져 있습니다. ZK-스탁의 단점은 증명 크기가 더 커서 이더리움에서 검증하는 데 비용이 더 많이 든다는 것입니다.
ZK-롤업에서 유효성 증명은 어떻게 작동하나요?
증명 생성
트랜잭션을 수락하기 전에 운영자는 일반적인 검사를 수행합니다. 여기에는 다음 사항을 확인하는 것이 포함됩니다.
- 발신자 및 수신자 계정이 상태 트리의 일부인지 여부.
- 발신자가 트랜잭션을 처리하기에 충분한 자금을 보유하고 있는지 여부.
- 트랜잭션이 올바르고 롤업에 있는 발신자의 공개키와 일치하는지 여부.
- 발신자의 논스가 올바른지 여부 등.
ZK-롤업 노드에 충분한 트랜잭션이 모이면 이를 배치로 집계하고 증명 회로가 간결한 영지식 증명으로 컴파일할 입력을 컴파일합니다. 여기에는 다음이 포함됩니다.
- 배치 내의 모든 트랜잭션으로 구성된 머클 트리 루트.
- 배치에 포함되었음을 증명하기 위한 트랜잭션의 머클 증명.
- 해당 계정이 롤업의 상태 트리의 일부임을 증명하기 위한 트랜잭션 내 각 발신자-수신자 쌍의 머클 증명.
- 각 트랜잭션에 대한 상태 업데이트를 적용한 후(즉, 발신자 계정 감소 및 수신자 계정 증가) 상태 루트를 업데이트하여 파생된 중간 상태 루트 세트.
증명 회로는 각 트랜잭션을 "반복(looping)"하고 운영자가 트랜잭션을 처리하기 전에 완료한 것과 동일한 검사를 수행하여 유효성 증명을 계산합니다. 먼저 제공된 머클 증명을 사용하여 발신자의 계정이 기존 상태 루트의 일부인지 검증합니다. 그런 다음 발신자의 잔액을 줄이고 논스를 늘리며 업데이트된 계정 데이터를 해싱하고 이를 머클 증명과 결합하여 새로운 머클 루트를 생성합니다.
이 머클 루트는 ZK-롤업 상태의 유일한 변경 사항인 발신자의 잔액 및 논스 변경을 반영합니다. 이는 계정의 존재를 증명하는 데 사용된 머클 증명이 새로운 상태 루트를 파생하는 데 사용되기 때문에 가능합니다.
증명 회로는 수신자의 계정에 대해서도 동일한 프로세스를 수행합니다. (머클 증명을 사용하여) 중간 상태 루트 아래에 수신자의 계정이 존재하는지 확인하고, 잔액을 늘리며, 계정 데이터를 다시 해싱하고 이를 머클 증명과 결합하여 새로운 상태 루트를 생성합니다.
이 프로세스는 모든 트랜잭션에 대해 반복됩니다. 각 "루프"는 발신자의 계정을 업데이트하여 새로운 상태 루트를 생성하고, 수신자의 계정을 업데이트하여 후속 새로운 루트를 생성합니다. 설명한 바와 같이 상태 루트에 대한 모든 업데이트는 롤업 상태 트리의 한 부분이 변경됨을 나타냅니다.
영지식 증명 회로는 전체 트랜잭션 배치를 반복하여 마지막 트랜잭션이 실행된 후 최종 상태 루트를 생성하는 업데이트 시퀀스를 검증합니다. 계산된 마지막 머클 루트는 ZK-롤업의 가장 최신 정식 상태 루트가 됩니다.
증명 검증
증명 회로가 상태 업데이트의 정확성을 검증한 후, L2 운영자는 계산된 유효성 증명을 L1의 검증자 컨트랙트에 제출합니다. 컨트랙트의 검증 회로는 증명의 유효성을 검증하고 증명의 일부를 구성하는 공개 입력도 확인합니다.
-
이전 상태 루트(Pre-state root): L2 체인의 마지막으로 알려진 유효한 상태를 반영하는 ZK-롤업의 이전 상태 루트(즉, 일괄 처리된 트랜잭션이 실행되기 전).
-
이후 상태 루트(Post-state root): L2 체인의 최신 상태를 반영하는 ZK-롤업의 새로운 상태 루트(즉, 일괄 처리된 트랜잭션이 실행된 후). 이후 상태 루트는 증명 회로에서 상태 업데이트를 적용한 후 파생된 최종 루트입니다.
-
배치 루트: 배치 내의 트랜잭션을 머클화(merklizing)하고 트리의 루트를 해싱하여 파생된 배치의 머클 루트.
-
트랜잭션 입력: 제출된 배치의 일부로 실행된 트랜잭션과 관련된 데이터.
증명이 회로를 만족시키면(즉, 유효하면) 롤업을 이전 상태(이전 상태 루트로 암호학적 지문이 생성됨)에서 새로운 상태(이후 상태 루트로 암호학적 지문이 생성됨)로 전환하는 유효한 트랜잭션 시퀀스가 존재함을 의미합니다. 이전 상태 루트가 롤업 컨트랙트에 저장된 루트와 일치하고 증명이 유효한 경우, 롤업 컨트랙트는 증명에서 이후 상태 루트를 가져와 상태 트리를 업데이트하여 롤업의 변경된 상태를 반영합니다.
진입 및 종료
사용자는 L1 체인에 배포된 롤업 컨트랙트에 토큰을 예치하여 ZK-롤업에 진입합니다. 운영자만 롤업 컨트랙트에 트랜잭션을 제출할 수 있으므로 이 트랜잭션은 대기열에 추가됩니다.
대기 중인 예치금 대기열이 채워지기 시작하면 ZK-롤업 운영자는 예치 트랜잭션을 가져와 롤업 컨트랙트에 제출합니다. 사용자의 자금이 롤업에 들어가면 처리를 위해 운영자에게 트랜잭션을 전송하여 트랜잭션을 시작할 수 있습니다. 사용자는 계정 데이터를 해싱하고, 해시를 롤업 컨트랙트로 전송하며, 현재 상태 루트에 대해 검증할 머클 증명을 제공하여 롤업의 잔액을 검증할 수 있습니다.
ZK-롤업에서 L1으로 인출하는 것은 간단합니다. 사용자는 롤업에 있는 자산을 소각하기 위해 지정된 계정으로 전송하여 종료 트랜잭션을 시작합니다. 운영자가 다음 배치에 트랜잭션을 포함시키면 사용자는 온체인 컨트랙트에 인출 요청을 제출할 수 있습니다. 이 인출 요청에는 다음이 포함됩니다.
-
트랜잭션 배치에 소각 계정으로의 사용자 트랜잭션이 포함되었음을 증명하는 머클 증명
-
트랜잭션 데이터
-
배치 루트
-
예치된 자금을 수령할 L1 주소
롤업 컨트랙트는 트랜잭션 데이터를 해싱하고, 배치 루트가 존재하는지 확인하며, 머클 증명을 사용하여 트랜잭션 해시가 배치 루트의 일부인지 확인합니다. 그 후 컨트랙트는 종료 트랜잭션을 실행하고 사용자가 선택한 L1 주소로 자금을 전송합니다.
ZK-롤업 및 EVM 호환성
옵티미스틱 롤업과 달리 ZK-롤업은 이더리움 가상 머신(EVM)과 쉽게 호환되지 않습니다. 회로에서 범용 EVM 연산을 증명하는 것은 (앞서 설명한 토큰 전송과 같은) 단순한 연산을 증명하는 것보다 더 어렵고 리소스 집약적입니다.
그러나 영지식 기술의 발전 (opens in a new tab)으로 인해 EVM 연산을 영지식 증명으로 래핑하는 것에 대한 관심이 다시 불붙고 있습니다. 이러한 노력은 프로그램 실행의 정확성을 효율적으로 검증할 수 있는 영지식 EVM(zkEVM) 구현을 만드는 데 맞춰져 있습니다. zkEVM은 회로에서의 증명/검증을 위해 기존 EVM 연산 코드를 재생성하여 스마트 컨트랙트를 실행할 수 있게 해줍니다.
EVM과 마찬가지로 zkEVM은 일부 입력에 대해 연산이 수행된 후 상태 간에 전환됩니다. 차이점은 zkEVM이 프로그램 실행의 모든 단계의 정확성을 검증하기 위해 영지식 증명도 생성한다는 것입니다. 유효성 증명은 VM의 상태(메모리, 스택, 스토리지)를 건드리는 작업의 정확성과 연산 자체(즉, 작업이 올바른 연산 코드를 호출하고 올바르게 실행했는가?)를 검증할 수 있습니다.
EVM 호환 ZK-롤업의 도입은 개발자가 영지식 증명의 확장성 및 보안 보장을 활용하는 데 도움이 될 것으로 예상됩니다. 더 중요한 것은 네이티브 이더리움 인프라와의 호환성을 통해 개발자가 친숙한(그리고 실전 테스트를 거친) 도구와 언어를 사용하여 ZK 친화적인 탈중앙화 애플리케이션 (dapp)을 구축할 수 있다는 것입니다.
ZK-롤업 수수료는 어떻게 작동하나요?
사용자가 ZK-롤업에서 트랜잭션에 지불하는 금액은 이더리움 메인넷과 마찬가지로 가스비에 따라 달라집니다. 그러나 가스비는 L2에서 다르게 작동하며 다음 비용의 영향을 받습니다.
-
상태 쓰기: 이더리움의 상태에 쓰는 것(즉, 이더리움 블록체인에 트랜잭션을 제출하는 것)에는 고정 비용이 있습니다. ZK-롤업은 트랜잭션을 일괄 처리하고 여러 사용자에게 고정 비용을 분산시켜 이 비용을 줄입니다.
-
데이터 게시: ZK-롤업은 모든 트랜잭션의 상태 데이터를 이더리움에
calldata로 게시합니다.calldata비용은 현재 EIP-1559 (opens in a new tab)에 의해 관리되며, 이는calldata의 0이 아닌 바이트에 대해 16 가스, 0인 바이트에 대해 4 가스의 비용을 각각 규정합니다. 각 트랜잭션에 지불되는 비용은 이를 위해 온체인에 게시해야 하는calldata의 양에 영향을 받습니다. -
L2 운영자 수수료: 이는 이더리움 메인넷의 트랜잭션 "우선순위 수수료(팁)"와 마찬가지로 트랜잭션 처리 시 발생하는 연산 비용에 대한 보상으로 롤업 운영자에게 지불되는 금액입니다.
-
증명 생성 및 검증: ZK-롤업 운영자는 트랜잭션 배치에 대한 유효성 증명을 생성해야 하며, 이는 리소스 집약적입니다. 메인넷에서 영지식 증명을 검증하는 데에도 가스(~ 500,000 가스)가 듭니다.
트랜잭션을 일괄 처리하는 것 외에도 ZK-롤업은 트랜잭션 데이터를 압축하여 사용자의 수수료를 줄입니다. 이더리움 ZK-롤업 사용 비용에 대한 실시간 개요를 확인 (opens in a new tab)할 수 있습니다.
ZK-롤업은 이더리움을 어떻게 확장하나요?
트랜잭션 데이터 압축
ZK-롤업은 연산을 오프체인으로 가져와 이더리움 기본 레이어의 처리량을 확장하지만, 확장을 위한 진정한 원동력은 트랜잭션 데이터를 압축하는 데서 나옵니다. 이더리움의 블록 크기는 각 블록이 보유할 수 있는 데이터와 더 나아가 블록당 처리되는 트랜잭션 수를 제한합니다. 트랜잭션 관련 데이터를 압축함으로써 ZK-롤업은 블록당 처리되는 트랜잭션 수를 크게 늘립니다.
ZK-롤업은 각 트랜잭션을 검증하는 데 필요한 모든 데이터를 게시할 필요가 없기 때문에 옵티미스틱 롤업보다 트랜잭션 데이터를 더 잘 압축할 수 있습니다. 롤업에서 계정 및 잔액의 최신 상태를 재구성하는 데 필요한 최소한의 데이터만 게시하면 됩니다.
재귀적 증명
영지식 증명의 장점은 증명이 다른 증명을 검증할 수 있다는 것입니다. 예를 들어 단일 영지식 스나크는 다른 영지식 스나크를 검증할 수 있습니다. 이러한 "증명의 증명"을 재귀적 증명이라고 하며 ZK-롤업의 처리량을 획기적으로 증가시킵니다.
현재 유효성 증명은 블록 단위로 생성되어 검증을 위해 L1 컨트랙트에 제출됩니다. 그러나 단일 블록 증명을 검증하는 것은 운영자가 증명을 제출할 때 하나의 블록만 완결될 수 있기 때문에 ZK-롤업이 달성할 수 있는 처리량을 제한합니다.
그러나 재귀적 증명을 사용하면 하나의 유효성 증명으로 여러 블록을 완결할 수 있습니다. 이는 증명 회로가 하나의 최종 증명이 생성될 때까지 여러 블록 증명을 재귀적으로 집계하기 때문입니다. L2 운영자가 이 재귀적 증명을 제출하고 컨트랙트가 이를 수락하면 모든 관련 블록이 즉시 완결됩니다. 재귀적 증명을 사용하면 일정 간격으로 이더리움에서 완결될 수 있는 ZK-롤업 트랜잭션 수가 증가합니다.
ZK-롤업의 장단점
| 장점 | 단점 |
|---|---|
| 유효성 증명은 오프체인 트랜잭션의 정확성을 보장하고 운영자가 유효하지 않은 상태 전환을 실행하는 것을 방지합니다. | 유효성 증명을 계산하고 검증하는 데 관련된 비용이 상당하며 롤업 사용자의 수수료를 증가시킬 수 있습니다. |
| L1에서 유효성 증명이 검증되면 상태 업데이트가 승인되므로 더 빠른 트랜잭션 완결성을 제공합니다. | 영지식 기술의 복잡성으로 인해 EVM 호환 ZK-롤업을 구축하는 것은 어렵습니다. |
| 옵티미스틱 롤업과 같이 인센티브를 받는 행위자의 정직성이 아닌 보안을 위한 무신뢰 암호학적 메커니즘에 의존합니다. | 유효성 증명을 생성하려면 특수 하드웨어가 필요하며, 이는 소수의 당사자에 의한 체인의 중앙화된 제어를 조장할 수 있습니다. |
| L1에서 오프체인 상태를 복구하는 데 필요한 데이터를 저장하여 보안, 검열 저항성 및 탈중앙화를 보장합니다. | 중앙화된 운영자(시퀀서)가 트랜잭션 순서에 영향을 미칠 수 있습니다. |
| 사용자는 더 큰 자본 효율성의 이점을 누릴 수 있으며 지연 없이 L2에서 자금을 인출할 수 있습니다. | 하드웨어 요구 사항으로 인해 체인의 진행을 강제할 수 있는 참가자 수가 줄어들어 악의적인 운영자가 롤업의 상태를 동결하고 사용자를 검열할 위험이 증가할 수 있습니다. |
| 활성 가정에 의존하지 않으며 사용자는 자금을 보호하기 위해 체인을 검증할 필요가 없습니다. | 일부 증명 시스템(예: 영지식 스나크)은 신뢰할 수 있는 설정이 필요하며, 잘못 처리될 경우 ZK-롤업의 보안 모델을 손상시킬 가능성이 있습니다. |
더 나은 데이터 압축은 이더리움에 calldata를 게시하는 비용을 줄이고 사용자의 롤업 수수료를 최소화하는 데 도움이 될 수 있습니다. |
ZK-롤업에 대한 시각적 설명
Finematics의 ZK-롤업 설명을 시청하세요.
누가 zkEVM을 개발하고 있나요?
L2용 zkEVM 대 L1용 zkEVM
zkEVM을 개발 중인 프로젝트는 다음과 같습니다.
-
zkEVM (opens in a new tab) - zkEVM은 이더리움 재단의 자금 지원을 받아 EVM 호환 ZK-롤업 및 이더리움 블록에 대한 유효성 증명 생성 메커니즘을 개발하는 프로젝트입니다.
-
폴리곤 zkEVM(Polygon zkEVM) (opens in a new tab) - 이더리움 메인넷의 탈중앙화된 ZK 롤업으로, 영지식 증명 검증이 포함된 스마트 컨트랙트를 비롯하여 이더리움 트랜잭션을 투명한 방식으로 실행하는 영지식 이더리움 가상 머신(zkEVM)을 개발하고 있습니다.
-
Scroll (opens in a new tab) - Scroll은 이더리움을 위한 네이티브 zkEVM 레이어 2 (l2) 솔루션 구축을 위해 노력하는 기술 중심 기업입니다.
-
Taiko (opens in a new tab) - Taiko는 탈중앙화된 이더리움 동등 ZK-롤업(유형 1 ZK-EVM (opens in a new tab))입니다.
-
지케이싱크(ZKsync) (opens in a new tab) - 지케이싱크 에라(ZKsync Era)는 Matter Labs에서 구축한 EVM 호환 ZK 롤업으로, 자체 zkEVM으로 구동됩니다.
-
스타크넷(Starknet) (opens in a new tab) - 스타크넷은 StarkWare에서 구축한 EVM 호환 레이어 2 (l2) 확장성 솔루션입니다.
-
Morph (opens in a new tab) - Morph는 영지식 증명을 활용하여 레이어 2 (l2) 상태 챌린지 문제를 해결하는 하이브리드 롤업 확장성 솔루션입니다.
-
Linea (opens in a new tab) - Linea는 컨센시스(Consensys)에서 구축한 이더리움 동등 zkEVM 레이어 2 (l2)로, 이더리움 생태계와 완전히 일치합니다.
ZK-롤업에 대한 추가 자료
- 영지식 롤업이란 무엇인가요? (opens in a new tab)
- 영지식 롤업이란 무엇인가요? (opens in a new tab)
- 이더리움 롤업 실전 가이드 (opens in a new tab)
- STARK 대 SNARK (opens in a new tab)
- zkEVM이란 무엇인가요? (opens in a new tab)
- ZK-EVM 유형: 이더리움 동등, EVM 동등, 유형 1, 유형 4 및 기타 난해한 유행어 (opens in a new tab)
- zkEVM 소개 (opens in a new tab)
- ZK-EVM L2란 무엇인가요? (opens in a new tab)
- Awesome-zkEVM 리소스 (opens in a new tab)
- 영지식 스나크(ZK-SNARK)의 내부 작동 원리 (opens in a new tab)
- SNARK는 어떻게 가능한가요? (opens in a new tab)
튜토리얼: 이더리움의 프라이버시 및 영지식
- 비밀 상태를 위해 영지식 사용하기 – 영지식 증명 및 오프체인 서버 구성 요소를 사용하여 온체인에서 비밀 게임 상태를 유지하는 방법.
- 스텔스 주소 사용하기 – ERC-5564 스텔스 주소가 암호학적 키 파생을 사용하여 익명 ETH 전송을 가능하게 하는 방법.
- 웹2 인증에 이더리움 사용하기 – 이더리움 지갑 서명을 SAML 기반 웹2 인증 시스템과 통합하는 방법.