https://cexplorer.io/article/advantages-of-determinism-for-zk-rollups-on-cardano
검증은 공유된 전역 상태에 의존하지 않기 때문에 Cardano 거래는 거의 실패하지 않습니다. 이는 Cardano의 UTxO 모델과 Ethereum의 계정 기반 모델 간의 주요 차이점입니다. Cardano의 접근 방식을 사용하면 예측 가능하고 결정적인 거래 검증 및 스크립트 실행이 가능합니다. 결과는 미리 알려져 있으며 이는 ZK 롤업 구현에 특히 유용합니다. 이는 중앙 집중식 시퀀서 없이도 구현할 수 있습니다. 이 글에서는 먼저 결정론에 대한 설명과 이더리움 거래가 실패할 수 있는 이유를 살펴보겠습니다. 그런 다음 Ethereum의 ZK 롤업의 기본 원칙을 설명합니다. 그 다음에는 Cardano 생태계 내에서 ZK 롤업이 어떻게 다를 수 있는지 살펴보겠습니다.
ZK 롤업 소개
ZK 롤업(Zero-Knowledge Rollup)은 L2(계층 2) 확장 솔루션입니다. 레이어 1(L1)에서 상태(일반적으로 사용자 계정 잔액)의 일부를 가져와 L2로 전송할 수 있습니다. 이를 통해 L2에서 복잡한 계산이 수행될 수 있으며, 그렇지 않으면 온체인(예: L1)에서 수행되는 경우 느리고 리소스 집약적일 수 있습니다. 즉, 계산이 오프체인에서 수행되어 효율적인 확장 솔루션을 제공합니다.
트랜잭션 검증 및 스마트 계약 실행과 같은 상태 변경은 오프체인에서 계산된 후 영지식 증명(ZK 증명 또는 ZKP)을 사용하여 온체인에서 검증됩니다. ZK 롤업은 거래 처리량을 크게 향상시키고 거래 비용을 최소화하는 동시에 결제를 위해 연결된 기본 계층 네트워크의 보안을 상속합니다.
ZK 롤업은 정기적으로 작은 데이터 하위 집합을 레이어 1(L1)에 제출합니다. 이 데이터는 레이어 2(L2)에서 대량의 데이터를 처리한 결과이다. 이러한 방식으로 ZK 롤업은 최종 거래 결제를 위해 기본 계층의 검열 저항과 보안을 효과적으로 활용합니다.
거래 검증에 있어 맥락의 필요성
모든 금융 시스템에서 거래(두 명 이상의 참가자 간의 가치 이전)를 검증하려면 검증을 위한 일부 컨텍스트나 상태가 필요합니다. 시스템은 무엇보다도 송금인의 계좌에 충분한 자금이 있는지 확인해야 합니다. 또한 사용자가 동일한 자금을 두 번 이상 사용하지 않도록 보장하여 잘 알려진 이중 지출 문제를 해결해야 합니다.
검증 입력은 트랜잭션과 상태입니다. 출력은 트랜잭션이 상태의 맥락에서 유효한지 여부를 결정합니다.
블록체인은 블록체인 끝에 새로운 블록을 추가하여 거래 처리 또는 상태 전환이 이루어지는 분산 금융 시스템입니다. 각 블록에는 여러 트랜잭션이 포함됩니다.
이미지에 표시된 것처럼 새로 추가된 블록마다 전역 상태가 변경됩니다. 블록 N+4를 추가한 후 마지막 상태 변경이 발생하여 현재 전역 상태가 N+4가 되었습니다.
Cardano와 Ethereum은 거래 검증을 위해 서로 다른 컨텍스트를 사용합니다.
Ethereum의 경우 거래 또는 스마트 계약의 유효성 검사는 특정 순간의 전역 상태에 따라 달라집니다. 이 전역 상태는 잔액 및 기존 스마트 계약 상태를 포함하여 모든 계정의 현재 상태를 포함합니다. 블록 내의 트랜잭션은 고정된 순서로 배열되며 각 트랜잭션은 전역 상태를 변경할 가능성이 있습니다. 결과적으로, 트랜잭션 실행의 결과는 동일한 블록 내에서 이전에 실행된 트랜잭션의 영향을 받을 수 있습니다.
이미지에 표시된 대로 가장 최근에 추가된 블록은 N+3이므로 전역 상태는 N+3이 됩니다. 네트워크는 새로운 상태인 N+4로 전환을 시도하고 이에 따라 새로운 N+4 블록이 구성됩니다. 블록 N+4(녹색 상자로 표시)의 트랜잭션 유효성 검사는 전역 상태에 따라 다르다는 점에 유의하는 것이 중요합니다. 트랜잭션이 N+4 블록에 통합되면 후속 트랜잭션이 검증될 수 있으며 이는 전역 상태와 이전 트랜잭션 모두에 따라 달라집니다.
이더리움 거래가 실패할 수 있는 이유 중 하나는 거래 검증 당시 전역 상태를 예측할 수 없기 때문입니다. 거래가 구성될 때 그 결과를 예측하는 것은 불가능합니다. 트랜잭션 유효성 검사 중 전역 상태는 트랜잭션 생성 중 상태와 다를 수 있습니다. 거래 제출과 검증 사이에 거래 참가자의 계정 잔액이 변경되었을 수 있습니다. 계정 잔액의 이러한 변경으로 인해 제출자가 원래 의도한 대로 거래가 실행되지 않을 수 있습니다.
그림은 블록 N+2(상태 +2) 주변에서 발생한 트랜잭션 TX 10의 제출과 트랜잭션 TX 9의 유효성 검사에 따른 트랜잭션의 후속 유효성 검사 사이의 기간을 보여줍니다. 상태가 발생했습니다. 트랜잭션 TX 10의 유효성 검사는 전역 상태와 트랜잭션 TX 9에 의해 도입된 변경 사항에 따라 달라집니다. 트랜잭션 TX 9 또는 이전 변경 사항으로 인해 트랜잭션 TX 10이 실패할 가능성이 있습니다.
이더리움 트랜잭션은 상태 저장으로 특징지어질 수 있습니다.
대조적으로 Cardano는 전역 상태 없이 작동하며 UTxO 모델을 사용합니다. 이 모델에서 트랜잭션 유효성 검사는 입력과 출력을 기반으로 하므로 전역 상태 참조가 필요하지 않습니다. 각 트랜잭션은 특정 UTXO를 입력으로 사용하고 새로운 UTXO를 출력으로 생성합니다. 거래의 유효성은 소비된 UTXO가 유효하고 사용되지 않았는지 여부와 입력의 총 가치가 출력의 총 가치와 일치하는지 여부에 따라 달라집니다.
거래 검증은 서로 독립적입니다. UTxO는 불변 객체이며 독점적인 접근이 보장될 수 있습니다. 블록 검증 내에서는 각 입력 UTxO가 한 번만 전체적으로 소비되는지 확인하는 것이 간단합니다. Cardano 블록 내의 거래 순서는 상태의 맥락에서 중요하지 않습니다.
이미지는 트랜잭션 TX 9 및 TX 10을 포함하는 새 블록 N+4를 생성하는 네트워크를 보여줍니다. 새 트랜잭션 TX 9 및 TX 10은 이전 출력 UTxO(녹색 상자로 표시)를 사용하여 입력 UTxO(표시)를 형성합니다. 빨간색 상자로). 블록 내의 거래 순서는 중요하지 않습니다. 거래는 독립적이고 서로 영향을 미치지 않기 때문입니다. 블록 N+2 생성 직후 제출된 트랜잭션 TX 10은 해당 블록 내의 트랜잭션에서 UTxO를 소비할 수 있습니다. 새로운 N+4 블록을 추가하면 입력 UTxO에서 새로운 UTxO가 생성되어 상태 변경을 의미합니다.
Cardano 거래는 본질적으로 무상태입니다. 입력과 출력은 모두 트랜잭션 제출 시점에 알려져 있습니다. 이를 통해 제출 전에 로컬 트랜잭션 검증이 가능해 네트워크 검증을 통과할 가능성이 높습니다. 입력 UTxO를 사용하는 능력(그 존재 및 올바른 서명과 함께 사용하는 능력)은 물론 스크립트 실행 결과(제출자가 트랜잭션에 추가한 입력 데이터에 따라 다름)도 로컬에서 확인할 수 있습니다. 이를 통해 제출자는 거래가 실패하지 않을 것이라는 높은 수준의 확신을 갖게 됩니다.
Ethereum과 달리 Cardano는 예측 가능하고 결정론적으로 작동합니다. 이러한 근본적인 차이점은 ZK 증명의 사용에 큰 영향을 미칩니다.
동일한 입력(거래 데이터)과 동일한 상태(Ethereum 블록체인의 현재 전역 상태)가 주어지면 EVM이 항상 동일한 출력을 생성한다는 점에서 Ethereum이 결정론적으로 거래를 검증한다는 점을 명확히 하는 것이 중요합니다. 그러나 트랜잭션 유효성 검사 결과는 비결정적입니다. 검증 결과는 사용자의 기대와 다를 수 있습니다.
트랜잭션을 제출하는 동안 사용자는 트랜잭션 유효성 검사 시 전역 상태가 어떻게 될지 예측할 수 없습니다. 따라서 높은 확실성을 가지고 검증 결과를 추정하는 것은 불가능합니다. 그것은 단지 가정할 수 있을 뿐입니다.
ZK 롤업은 상태를 유지합니다
ZK 롤업과 같은 레이어 2 솔루션에서 트랜잭션 검증은 시스템 무결성을 유지하는 데 중요합니다. 여기에는 이중 지출 및 무단 새 토큰 생성에 대한 보호 장치가 포함됩니다.
Ethereum의 레이어 1과 마찬가지로 ZK 롤업(L2)도 전역 상태를 유지합니다. 이 전역 상태는 모든 트랜잭션마다 업데이트되므로 트랜잭션 순서가 중요해집니다.
ZK 롤업의 상태 유지 관리는 이더리움 블록체인보다 훨씬 덜 복잡합니다. 주로 시퀀서라고 알려진 중앙 집중식 개체가 이를 감독하기 때문입니다. 결과적으로 단일 서버에서 사용자 계정의 잔액을 관리할 수 있습니다.
ZK 롤업을 활용하려는 사용자는 이더리움에서 발행된 토큰을 잠가야 합니다. 그들은 토큰을 잠그고 두 번째 계층에서 동등한 금액을 생성하는 Ethereum 스마트 계약을 사용하여 이를 달성합니다.
두 번째 계층에서는 사용자가 거래를 제출할 수 있습니다. 이러한 트랜잭션은 레이어 2의 사용자 계정 잔액을 변경합니다. 그러나 레이어 2에서 발생하는 모든 상태 변경은 특정 순간의 이더리움의 전역 상태에 영향을 미치지 않는다는 점에 유의하는 것이 중요합니다.
Ethereum 네트워크 내의 전역 상태는 레이어 2의 상태와 독립적으로 변경됩니다.
사용자가 레이어 2를 종료하고 이더리움 스마트 계약에 보호된 토큰을 잠금 해제하려는 경우 ZK 롤업에서 출금을 시작해야 합니다. 이 작업으로 인해 레이어 2에서 토큰이 소각되고 레이어 1에서 동일한 양의 토큰이 잠금 해제됩니다. 이 프로세스 전반에 걸쳐 레이어 2에서 발생한 토큰 소유권의 모든 변경 사항이 정식으로 반영됩니다.
ZK 롤업에서 토큰을 인출하려면 ZK 증명을 제공해야 합니다.
사용자가 ZK 롤업의 토큰을 이더리움으로 다시 전송하려는 경우 출금 요청을 시작합니다. 이 요청은 그녀가 인출하려는 토큰의 수량과 토큰을 보내야 하는 이더리움 주소를 지정합니다.
이후 ZK 롤업 시스템은 이 출금 요청을 검증하는 영지식(ZK) 증명을 생성합니다.
이 증명은 본질적으로 '사용자가 실제로 레이어 2에서 이러한 토큰을 소유하고 있으며 사용되지 않았다’는 것을 확인합니다.
이 ZK 증명은 이더리움의 스마트 계약에 제출됩니다. 스마트 계약이 증명이 유효한 것으로 확인되면 요청된 양의 토큰이 스마트 계약에서 잠금 해제되어 사용자의 이더리움 주소로 전송됩니다.
요약:
이더리움은 입금 거래의 결과로 사용자의 토큰을 잠그며 이더리움의 글로벌 상태와 ZK 롤업 상태에 동시에 영향을 미칩니다. 사용자는 레이어 2에서만 토큰을 활용할 수 있습니다. ZK 롤업에서 이루어진 트랜잭션은 주로 레이어 2 상태에 영향을 미칩니다. ZK 롤업의 상태 변경이 레이어 1 상태에 어떻게 영향을 미치는지 자세히 설명하겠습니다. 사용자가 레이어 2에서 이더리움으로 토큰을 다시 전송하려는 경우 레이어 1에서 토큰을 잠금 해제하는 출금 트랜잭션을 제출해야 합니다. 이 작업은 다시 한번 레이어 1과 레이어 2의 상태를 변경합니다.
Ethereum과 ZK Rollup의 잔액은 서로 연결되어 있지만 항상 동일하지는 않으며 어느 정도 독립적으로 작동합니다.
ZK 롤업은 어떻게 작동하나요?
레이어 2에서는 각 사용자가 잔액이 있는 계정을 유지합니다. 사용자는 계정 간 가치 이전을 포함할 수 있는 거래를 제출합니다. 이러한 거래는 시퀀서라고 알려진 중앙화된 엔터티에 의해 수집되고 순서가 지정됩니다.
시퀀서는 오프체인으로 처리된 개별 거래 그룹을 나타내는 새로운 거래 배치를 형성합니다.
사용자 트랜잭션은 새로운 상태 루트 또는 ZK 증명에 포함되지 않습니다. 대신, 오프체인 저장소인 데이터 가용성 레이어(Data Availability Layer)에 별도로 저장됩니다. 이 데이터는 롤업 상태를 재구성하는 데 중요하며 이를 오프체인에 저장하면 확장성이 향상됩니다.
배치를 기반으로 시퀀서는 상태 루트라고도 하는 새로운 전역 상태와 ZK 증명을 계산합니다.
ZK 암호화의 맥락에서 레이어 1은 검증자 역할을 하고 레이어 2는 증명자 역할을 합니다.
시퀀서는 주기적으로 새로운 트랜잭션을 이더리움으로 보냅니다. 각 트랜잭션에는 ZK 증명과 새로운 상태 루트(전역 상태)가 포함됩니다.
상태 루트는 일괄 트랜잭션이 처리된 후 ZK 롤업의 새로운 상태에 대한 암호화 약속입니다. 이는 일괄 처리에 포함된 모든 트랜잭션의 순 효과를 나타냅니다.
ZK 증명은 배치로 표시되는 상태 전환의 유효성을 증명하는 암호화 증명입니다. 일괄 트랜잭션이 올바르게 처리되어 새로운 전역 상태가 되었는지 확인합니다.
ZK 증명과 새로운 전역 상태는 모두 일련의 거래에 의존하고 암호화 방식으로 파생됩니다. 이는 각 트랜잭션을 온체인에서 처리할 필요 없이 메인 체인에서 일련의 트랜잭션을 나타내는 안전하고 효율적인 방법을 제공합니다.
이더리움 스마트 계약(검증자)은 검증을 위해 일괄 트랜잭션을 요구하지 않습니다. ZK 증명과 새로운 상태 루트만 필요합니다. 이더리움은 배치 전체가 유효한지(ZK 증명으로 증명됨) 확인하고 각 계정 잔액에 미치는 순 효과를 이해하기만 하면 됩니다.
이미지의 맨 위에서 사용자 거래를 볼 수 있습니다. 시퀀서(ZK Rollup Prover)는 최신 사용자 트랜잭션을 가져와서 주문하고 일괄 트랜잭션을 생성합니다. 배치에서 ZK 증명과 새로운 전역 상태(상태 루트)를 생성하고(빨간색 화살표는 배치에 대한 암호화 종속성을 나타냄) 트랜잭션의 검증을 위해 이를 이더리움으로 보냅니다. 이더리움(ZK 검증자)은 거래를 검증하고 블록체인에 저장하여 전역 상태를 변경합니다.
이더리움은 ZK 증명과 시퀀서가 전송한 새로운 전역 상태를 유지하여 ZK 롤업의 무결성을 보장합니다.
EVM(Ethereum Virtual Machine)은 ZK 롤업 내에서 작동할 수 있습니다. 이는 개발자가 이더리움 메인넷에서와 동일한 방식으로 스마트 계약을 작성할 수 있음을 의미합니다. EVM과의 이러한 호환성은 이더리움에서 ZK 롤업으로의 분산형 애플리케이션(DApp) 포팅을 용이하게 합니다.
이는 본질적으로 DApp의 스마트 계약 실행을 Ethereum에서 ZK Rollup으로 전환합니다. 스마트 계약은 EVM의 규칙을 계속 준수하지만 레이어 2에서 발생하므로 실행이 더욱 확장 가능하고 효율적입니다.
스마트 계약을 레이어 2 솔루션으로 쉽게 마이그레이션할 수 있다는 점은 ZK 롤업(및 기타 레이어 2 솔루션)이 이더리움에서 사용하는 것과 유사한 계정 기반 모델을 채택하는 이유 중 하나입니다.
카르다노 결정론의 장점
이더리움 커뮤니티는 확장성과 효율성을 높이기 위한 다양한 방법을 적극적으로 모색해 왔으며, 영지식 기술은 조사 중인 유망한 솔루션 중 하나입니다. ZK 롤업에 시퀀서를 도입하는 것은 레이어 2 네트워크에서 트랜잭션을 관리하고 주문하기 위한 핵심 메커니즘입니다.
시퀀서는 트랜잭션 순서 및 결정성 문제에 대한 솔루션 역할을 하며 ZK 롤업 기능에서 중추적인 역할을 합니다. 그러나 시퀀서를 사용하면 중앙화 수준이 도입되므로 블록체인의 분산화 원칙과 관련하여 우려가 제기됩니다. 트랜잭션을 주문할 수 있는 권한을 가진 단일 엔터티인 시퀀서는 잠재적으로 실패 또는 조작 지점이 될 수 있습니다.
Cardano의 거래 검증은 결정론적이므로 거래 구축 시 결과가 알려지고 예측 가능한 거래 생성이 가능합니다. 이는 Cardano의 거래 검증이 전역 상태가 아닌 거래의 입력 및 출력에만 의존하기 때문에 가능합니다.
ZK 증명의 맥락에서 이러한 결정론적 특성은 유리합니다. ZK 증명을 생성할 때, 특정 계산을 수행하면 알려진 출력이 발생하는 비밀 입력을 알고 있음을 본질적으로 증명하는 것입니다. 계산은 결정론적이므로 ZK 증명을 구축할 때 출력을 예측할 수 있습니다.
소비되는 UTxO, 생성되는 UTxO 및 실행 중인 검증자(스마트 계약)에 대한 모든 지식이 트랜잭션 구성 중에 알려지면 검증자(산술 회로로 인코딩됨)가 성공적으로 실행되었음을 증명하는 ZK 증명을 생성하는 것이 가능합니다. .
ZK 증명 증인은 보다 복잡한 계산의 결과로 오프체인으로 구성될 수 있습니다. 온체인 유효성 검사기에는 제공된 ZK 증명 증인의 정확성을 확인하는 산술 회로가 포함되어 있습니다.
이것이 바로 시퀀서의 필요성이 줄어들거나 잠재적으로 제거될 수 있는 이유입니다. 오프체인 계산은 트랜잭션의 결정성으로 인해 시퀀서 없이 수행될 수 있습니다. Cardano의 ZK 롤업에서 각 트랜잭션은 특정 입력 및 출력에 대해서만 알아야 하며 전역 상태와 상호 작용할 필요는 없습니다. 즉, L1에서 UTxO 모델의 장점이 L2에도 전달될 수 있다는 것이다.
이더리움에서 ZK 증명 확장 솔루션은 시퀀서를 활용하여 결정론적인 방식으로 트랜잭션 배치의 순서를 지정하므로 필요한 증명(ZK 증명 증인) 생성에 대한 상태를 알 수 있습니다.
Ethereum 트랜잭션을 구성하는 동안 관련 상태에 대한 완벽한 지식을 사용할 수 없습니다. 이로 인해 트랜잭션이 처리되는 시점에 계약 상태를 알 수 없기 때문에 신뢰할 수 있는 시퀀서(연산자) 없이는 애초에 증명을 구성하는 것이 사실상 불가능합니다.
하지만 카르다노에서는 거래가 블록 내 어디에 나타날지 알 필요가 없습니다. 왜냐하면 거래가 블록에 나타나는 위치는 스마트 계약의 상태에 영향을 주지 않기 때문입니다. 블록당 하나의 트랜잭션만 상태(UTxO의 데이텀)와 상호 작용할 수 있습니다.
Cardano의 이러한 결정론적 특성으로 인해 시퀀서 없이도 ZK 증명을 생성할 수 있습니다. 이론적으로는 외부 데이터 가용성 계층 없이도 가능합니다.
L2 네트워크에는 L1에 대한 트랜잭션을 구성할 개체(ZK Prover)가 있어야 합니다. L2 상태는 이더리움과 같은 전역 상태가 아니라 모든 독립적인 트랜잭션의 상태입니다.
ZK 롤업에서 UTxO는 레이어 1에서처럼 서로 독립적으로 작동할 수 있습니다. 이를 통해 트랜잭션 간에 높은 수준의 병렬성과 독립성을 허용합니다.
시퀀서와 트랜잭션 일괄 처리가 없는 경우에도 시스템 무결성과 일관성을 보장하기 위해 어떤 방식으로든 레이어 2의 상태를 레이어 1에 전달해야 할 필요가 있습니다. Cardano는 결정성을 달성하기 위해 시퀀서가 필요하지 않지만 L2는 보안을 위해 여전히 L1에 의존합니다.
UTxO 모델을 활용하는 ZK 롤업은 이더리움 생태계와 달리 더 쉽게 분산화될 수 있습니다. 결정론적 특성과 UTxO 모델은 새로운 구현 가능성을 위한 길을 열어줍니다. 계정 기반 모델로 달성할 수 있는 것보다 더 효율적이고 분산된 ZK 롤업 구현을 개발하는 것이 훨씬 쉬울 수 있습니다.
어떤 팀이 시퀀서 없이 작동하고 검증자 스크립트와 ZK 증명을 사용하여 시스템 무결성을 유지하는 ZK 롤업을 생성할 수 있을지는 아직 알 수 없습니다.
결론
Cardano의 UTxO 모델은 결정론적 트랜잭션, ZK 증명 사용에 대한 강력한 잠재력, 시퀀서의 필요성 제거, 데이터 가용성 계층 없이 ZK 롤업을 구성할 수 있는 이론적 가능성 등 여러 가지 이점을 제공합니다. 이러한 장점으로 인해 Ethereum의 계정 기반 모델에 비해 ZK 롤업에 더 유리한 선택이 됩니다. 다가오는 Chang의 하드포크는 Cardano에 ZK 암호화를 도입하여 전체 생태계의 새로운 장을 열 것입니다.