Zypher Network 기술 백서 시리즈 해석(삼): AW 엔진—게임 실시간성과 일관성을 위한 블록체인 확장 솔루션
# 3.2 AW 엔진
AW 엔진은 게임의 실시간성과 일관성을 위해 설계된 블록체인 수직 확장 솔루션입니다.
## 3.2.1 AW 실행 방식
최근 몇 년 동안 게임 산업은 빠르게 변화하고 있으며, 블록체인 기반의 Web3 게임은 새로운 비즈니스 모델을 가져올 것으로 기대되고 있지만, 전통적인 게임이 Web3를 완전히 수용하는 데는 여전히 많은 도전 과제가 있습니다:
처리량: 많은 게임은 빠른 조작과 일관된 방해 없는 플레이를 필요로 하며, 이는 블록체인과 강한 충돌을 일으킵니다. 일부 빠른 속도의 슈팅 게임은 동작이 밀리초 단위로 이루어지지만, 현재 가장 빠른 블록체인도 블록 생성에 2초가 필요합니다. 이는 게임 내의 모든 단계에서 최소 2초를 기다려야 함을 의미합니다. 따라서 체인 위에서 빠른 속도의 게임을 구축하는 것은 불가능합니다.
확장성: 게임이 얼마나 많은 플레이어를 지원할 수 있는지, 블록체인이 혼잡해지지 않고 Gas 가격이 급등하지 않도록 하는 것이 중요합니다. 플레이어의 모든 동작이 체인에 기록되어야 한다면, 블록체인은 매우 혼잡해질 것입니다.
이 문제를 해결하기 위해 우리는 AW 엔진을 개발했습니다. 이 엔진은 제로 지식 증명을 통해 게임 내의 동작을 패키징하여 한 번에 체인에 업로드하고 검증합니다. 이는 플레이어가 블록체인과 상호작용하기 전에 더 많은 동작을 수행하고 더 오랜 시간 동안 게임을 즐길 수 있게 하여, 메인 블록체인에서의 거래 비용과 혼잡을 줄입니다. 예를 들어, 턴제 게임에서는 플레이어가 여러 번의 동작을 수행할 수 있으며, 여러 번의 동작이 증명을 생성할 수 있습니다. 공식적으로 우리는 다음과 같습니다:
이러한 반복 계산을 검증하는 가장 직접적인 방법은 n개의 동작을 개별 회로에 넣고 SNARK를 사용하여 증명을 완료하는 것입니다. 이를 통해 단일 거래에 포함될 수 있는 동작의 수를 크게 늘릴 수 있습니다. 이는 다양한 유형의 게임 개발을 위한 완전한 체인 게임의 가능성을 제공합니다. 여기서는 단일 플레이어 게임과 다중 플레이어 게임을 예로 들겠습니다.
단일 플레이어 게임: 2048, 토너먼트와 같은 게임을 예로 들면, 플레이어의 세부 동작과 탈락 로직을 모두 체인에 업로드하면 많은 Gas와 체인 자원을 소모하게 됩니다. ZKP를 사용하여 이러한 프로세스를 압축함으로써, 필요한 정보와 증명만을 체인에 전송합니다. 이러한 방식은 Gas 비용과 거래 수를 100배 이상 줄일 수 있습니다.
우리는 이러한 턴 압축 회로와 필요한 스마트 계약을 제공하여 개발자가 회로를 작성하지 않고도 필요한 게임 경제 논리와 프론트엔드 포장을 완료하여 게임을 만들 수 있도록 합니다.
다중 플레이어 게임: 다음은 Trading Card Game (TCG) 게임에서 모두 사용되는 예시입니다.
TCG(수집형 카드 게임)에 참여하기 위해서는 플레이어가 매치메이킹을 사용하여 상대를 찾아야 합니다. 게임이 시작되면 양측의 카드는 ZK Shuffle을 사용하여 섞입니다. 그런 다음 매 라운드마다 ZK Shuffle의 카드 오픈 기능을 활용합니다. 또한, 우리는 Data Rollup을 사용하여 각 라운드의 세부 정보를 하나의 거래로 압축합니다. 이러한 방법은 완전한 체인 기반 TCG를 구현하며, 상호작용과 거래 비용이 매우 낮습니다.
## 3.2.2 느린 속도의 ZK 게임
위에서 논의한 2048 게임과 같은 느린 속도의 게임에 대해, 우리는 제로 지식 증명 기반의 두 가지 솔루션을 제공합니다.
SNARK: ZKP 설계 제약 시스템은 숙련된 개발자만이 수행할 수 있는 어려운 작업으로, 제약 시스템에 오류가 없도록 보장하기가 어렵습니다. 이는 제로 지식 증명의 개발과 사용을 제한하는 요소 중 하나입니다. 그러나 우리는 기본 산술 회로, 해시, ECC, zkshuffle, zkmatchmaking 등 게임 회로 개발에 사용되는 다양한 도구를 제공하여 전체 체인 게임 개발의 진입 장벽을 크게 낮춥니다.
ZKVM: 우리는 게임 로직을 작성하기 위한 범용 zkvm을 제공합니다. 예를 들어 RISC Zero는 RISC-V 아키텍처를 위해 설계된 범용 제로 지식 증명 시스템으로, 개발자가 Rust 및 C++와 같은 성숙한 언어를 사용하여 ZK 애플리케이션을 구축할 수 있도록 합니다. 이는 RISC Zero가 기존의 Web2 프로그래밍 언어로 작성된 애플리케이션을 지원할 수 있음을 의미하며, plonk 관련 회로를 구축할 필요가 없고 DSL 언어를 사용할 필요도 없습니다.
현재 Bonsai는 사용자가 자신의 하드웨어를 사용하지 않고도 zkVM 애플리케이션에 대한 원격 증명을 생성할 수 있도록 허용합니다. 그러나 Bonsai를 사용한다고 해서 사용자 개인 정보가 보호되는 것은 아닙니다. 마찬가지로 zkSNARK의 경우, 우리는 원격 증명자를 필요로 하며, 클라이언트 증명 계산을 신뢰할 수 없는 서버 그룹에 위임하여 더 빠르게 증명을 생성하고 사용자 개인 정보를 보호합니다. 기존 솔루션은 MPC 프로토콜을 결합하여 다중 서버 협력을 통해 zkSNARK 증명을 구축합니다. 【28】에 따르면, 타원 곡선과 도메인상의 점은 직접 암호화하여 공유할 수 있으며, MPC 기술은 이러한 공유에 적용될 수 있습니다. 현재 사용되는 주요 방법은 패키지 암호화 공유입니다.
따라서 패키지 암호화 공유 및 그 속성을 사용하면 해당 zkSNARK 증명자를 위한 효율적인 MPC 프로토콜을 쉽게 구현할 수 있습니다.
## 3.2.3 Z4 엔진
AW 엔진은 단일 체인 오프라인 게임을 해결하는 데 사용할 수 있을 뿐만 아니라, 빠른 속도의 다중 사용자 온라인 실시간 게임을 지원하는 데에도 사용할 수 있습니다. 다중 사용자 온라인 환경의 복잡성을 관리하기 위해 우리는 Z4 엔진을 설계했습니다. 간단히 말해, 게임은 제3자의 노드에서 진행되며, 게임이 끝난 후 제3자 노드는 게임 과정의 zk 증명을 제공하여 게임 결과를 검증합니다. 제3자 노드는 스테이킹을 해야 공개 룸 마켓에서 게임을 수락할 수 있으며, 이는 보상 사냥꾼과 유사합니다.
Z4 엔진은 여러 모듈로 구성되어 있습니다: 체인 상호작용 모듈, 체인 상 이벤트 리스닝 모듈, HTTP 및 P2P 네트워크 시작 모듈, 제로 지식 증명 모듈을 갖춘 증명기, 게임 로직 인터페이스. 모듈 통합을 기반으로 개발자는 게임 로직만 정의하면 자신만의 게임을 위한 완전한 Z4 노드를 실행할 수 있습니다.
Z4 엔진 아키텍처 다이어그램
Z4 엔진 워크플로우에서 플레이어는 체인에서 게임 방을 생성합니다. 다른 플레이어가 이 방을 보게 되면 참여를 선택할 수 있으며, 방이 가득 차거나 방장이 시작 버튼을 클릭하면 방은 준비 상태가 되고, 방은 보상 사냥꾼의 수락 가능한 목록에 나타나 이들이 해당 방을 차지하도록 유도합니다. 첫 번째로 성공적으로 차지한 Z4 노드는 이 게임의 제공자가 됩니다. 방 내의 플레이어는 체인 상의 동적 정보를 통해 방의 제공자를 관찰하고, 계약 내 제공자의 주소에 따라 로컬 네트워크 연결을 수행합니다. 이 연결은 HTTP와 P2P의 이중 연결을 포함하여 네트워크의 안정성과 호환성을 보장합니다. 네트워크에 Z4 노드가 없을 경우, 임의의 플레이어가 제공자가 될 수 있으며, 외부에 접근 가능한 HTTP 주소를 제공할 필요 없이 P2P를 통해 빠른 시작과 점대점 연결을 구현할 수 있습니다. 게임이 끝난 후, 제공자는 게임 과정을 zk 증명으로 변환하고, 게임 결과와 zk 증명을 함께 체인에 제출하여 검증이 완료되면 방 상태가 종료로 업데이트됩니다.
게임의 zk 증명 회로는 PLONK을 사용하여 맞춤화하거나 ZKVM 또는 DSL을 사용하여 작성할 수 있으며, 자신만의 게임 특화된 Z4 노드를 형성할 수 있습니다. zk의 학습 곡선과 회로 작성의 어려움을 감안할 때, 우리는 Z4와 Risc Zero를 깊이 통합한 범용 게임 실행 플랫폼을 제공합니다. 이 범용 Z4-RISC0 노드는 RISC-VM 샌드박스 환경에서 실행되며, 게임 개발자는 게임 로직을 정의하고 이를 Z4-RISC0 노드로 체인에 제출하기만 하면 됩니다. 이 범용 노드는 RISC-VM 프레임워크 하에 개발된 모든 게임을 실행할 수 있으며, 게임이 끝난 후 자동으로 게임의 zk 증명을 수행합니다. 또한, Bonsai 증명 마켓을 통합하여 빠른 증명 목표를 달성하고 체인 상 게임 검증의 효율성과 신뢰성을 높입니다.
대규모 동작이 포함된 게임은 증명 시간이 너무 길어질 수 있습니다. 게임의 증명 효율성을 더욱 높이기 위해, 우리는 Threshold ECDSA 기반의 증명 솔루션을 동시에 제공합니다. 플레이어는 게임이 끝난 후 게임 결과에 서명하며, n-m 서명의 임계값에 도달하면 게임 결과의 유효성을 판단할 수 있습니다. 이 솔루션은 zk 증명 생성 및 검증 시간이 너무 긴 문제를 효과적으로 완화하며, zk 증명을 수행할 수 없는 일부 단계에 대해 실행 가능한 증명 방식을 제공합니다. 예를 들어 슈팅 게임에서 누가 먼저 Z4 노드에 의해 처리되는지에 따라 킬 가능성이 더 높아지며, 시간은 ZK 회로에 기록될 수 없으므로 이러한 사회적 합의를 통해 게임의 검증 가능한 경로로 활용해야 합니다. 다음은 ZK 증명과 Threshold ECDSA 서명 간의 비교입니다:
위 표는 zk 증명이 더 간단하고 결정적인 게임 이벤트에 대해 높은 수준의 보안성과 부인 방지를 제공하는 반면, Threshold ECDSA는 복잡하고 실시간 시나리오에 대해 더 빠르고 확장 가능한 솔루션을 제공하며, 커뮤니티 합의에 의존하여 zk 증명이 효과적으로 처리할 수 없는 측면을 해결한다는 것을 보여줍니다.
참고 문헌:
【28】Ozdemir A, Boneh D. Experimenting with collaborative zk-SNARKs: Zero Knowledge proofs for distributed secrets[C]//31st USENIX Security Symposium (USENIX Security 22). 2022: 4291-4308.