5분 만에 CocosCreator로 TON 게임 빠르게 배포하기 (세 번째 부분): ZKP 기반 텔레그램 게임 개발
Web3 게임은 전통 게임 분야의 특별한 세분화된 영역으로, 블록체인 위에 구축되어 있기 때문에 Web3 게임은 일반적으로 탈중앙화, 게임 자산의 권리 확립, P2E 등의 특성을 가지고 있으며 많은 인기를 끌고 있습니다. Web3 게임은 진보된 이념을 대표하지만, Web3 게임은 인프라의 부족으로 인해 게임 경험, 게임 콘텐츠 등에서 여전히 Web2 게임과 비교할 수 없습니다.
현재 대부분의 블록체인 기반 성능은 부족한 상황입니다. 예를 들어, 이전에 인기를 끌었던 명문 경로는 많은 Layer1, Layer2의 성능을 드러냈습니다. 따라서 현재 인프라가 완벽하지 않은 상황에서 게임 로직을 완전히 체인에 배포하는 것은 일반적으로 불가능하며, 이는 게임 실행의 지연과 플레이어의 게임 참여 비용을 매우 높게 만들 수 있습니다. 그래서 대부분의 Web3 게임 팀은 게임 로직을 체인 외부의 서버에 작성하고, 게임 내 자산만 체인에 두고 체인 거래를 통해 서버의 데이터를 업데이트하는 방식으로 진행하고 있습니다. 이 두 가지는 데이터 허브를 통해 지속적으로 데이터를 동기화하며, 이를 Web2.5라고 합니다. 따라서 게임 로직이 중앙화된 서버에서 실행되고, 게임 데이터가 서버에 저장되며, 체인과 체인 외부에서 지속적으로 데이터를 동기화할 때, 게임 자체는 신뢰성, 효율성, 안전성 등의 측면에서 몇 가지 도전에 직면하게 됩니다. Web2.5의 방식은 Web3가 지향하는 이념과도 상반됩니다.
동시에 주류 블록체인은 공개적이고 투명한 특성을 지니고 있어 개인 정보를 지원하지 않기 때문에 플레이어의 많은 게임 개인 정보는 일반적으로 공개적으로 조회 가능합니다. 마찬가지로 SLG, MMORPG 게임에서 포커 게임, 모노폴리 및 수집형 카드 게임과 같은 예측할 수 없는 무작위성과 개인 정보 보호는 필수적이며, 대부분의 블록체인은 이를 효과적으로 지원할 수 없습니다. 원래 개인 정보 보호 특성을 가진 일부 블록체인은 자산 유동성, 사용자 활동성 등에서 상대적으로 뒤처져 있으며, 게임 개발자에게는 우호적이지 않습니다.
ZKP가 문제 해결의 핵심 솔루션이 될 수 있다
제로 지식 증명(Zero-Knowledge Proof, ZKP)은 한 쪽(증명자)이 다른 쪽(검증자)에게 특정 정보를 소유하고 있거나 특정 조건을 충족한다는 것을 구체적인 정보를 누설하지 않고 증명할 수 있도록 하는 고급 암호학 기술입니다. 이 기술의 핵심은 사용자의 개인 정보를 보호하면서 데이터의 진실성, 안전성 및 신뢰성을 보장하는 것입니다. 현재 ZKP 솔루션은 게임 분야에 도입되어 게임의 신뢰성 있는 운영을 실현하고, 게임의 효율성, 안전성을 높이며 게임에 개인 정보 보호 특성을 부여하고 있습니다.
Zypher Network는 이러한 추세의 주도자로, ZKP 솔루션 기반의 게임 엔진을 출시하여 개발자가 블록체인 게임을 더 낮은 진입 장벽으로 개발하거나 게임을 블록체인으로 이전할 수 있도록 하고, Services SDK 툴킷을 제공하여 개발자가 ZKP 회로에 게임을 쉽게 작성하고 회로를 직접 wasm으로 컴파일하여 브라우저나 애플리케이션에서 실행할 수 있도록 합니다.
게임이 실행될 때 Zypher Network 엔진의 노드는 플레이어의 연속적인 게임 행동에서 생성된 액션 로그를 ZK 증명으로 집계합니다. 일정 주기 내에 이러한 게임 행동(각각은 하나의 거래)이 하나의 ZKP 증명으로 집계되며, 여러 증명이 단일 거래 방식으로 체인에 제출됩니다. 이러한 방식은 Gas 비용을 대폭 줄일 뿐만 아니라 플레이어에게 지연 없는 게임 경험을 보장합니다.
동시에 Zypher Network가 출시한 비밀 엔진은 다양한 게임에 선택 가능한 개인 정보 보호 솔루션을 제공합니다. 이 엔진은 최적화된 WASM과 미리 컴파일된 계약을 통해 Shuffling SDK를 구현하여 고성능, 저비용의 탈중앙화 셔플링 프로세스를 실현합니다. 셔플링 회로와 프로토콜은 체인에서 검증 가능한 암호 계산의 안전성을 보장하며 전략 요소가 체인에서 비밀로 유지되도록 합니다. 포커, 모노폴리, 수집형 카드 게임 외에도 SDK는 신뢰성 및 무작위성이 필요한 다른 SLG 사용 사례에도 적용될 수 있습니다. 이 엔진은 게임 내 정보와 플레이어 신원 정보 등 플레이어의 정보 안전성과 개인 정보를 보장하는 데 사용되며, 이는 ZK 솔루션을 기반으로 체인에서 비밀로 유지되어 게임의 공정성을 보장하고 플레이어 정보를 숨깁니다.
또한 Zypher Network의 체인 외부 계산 네트워크는 ZKP에 필요한 계산 자원을 지속적으로 지원합니다.
전반적으로 Zypher Network의 ZKP 기반 게임 엔진 솔루션은 블록체인 게임이 중앙화된 서버에서 벗어나 서버 추상화, 진정한 Web3 시대를 향해 나아가고 있습니다.
Zypher Network 엔진의 게임 사용 사례: Ten Sum Rings
Ten Sum Rings 게임을 예로 들면, 이 게임의 플레이 방식은 사용자가 화면에서 특정 영역을 원으로 표시하는 것입니다. 해당 영역 내 모든 숫자의 합이 10이면 이번 작업이 성공합니다. 사용자가 게임을 진행할 때, 실제로는 제로 지식 증명의 원리를 활용하고 있습니다. 구체적으로, 사용자는 검증자에게 자신이 표시한 영역의 합이 실제로 10임을 증명할 수 있으며, 해당 영역 내의 구체적인 숫자를 누설할 필요가 없습니다. 이러한 설계를 통해 사용자는 자신의 개인 정보를 보호하면서 게임의 공정성을 보장할 수 있습니다.
게임 구현에서 사용자의 선택 영역은 zk 회로를 통해 검증될 수 있으며, 검증자는 회로에서 생성된 증명을 기반으로 합이 조건을 충족하는지 확인합니다. 이렇게 하면 검증자가 사용자의 구체적인 선택 숫자에 접근할 수 없더라도 사용자의 작업 결과를 신뢰할 수 있습니다. 제로 지식 증명을 통해 Ten Sum Rings 게임은 개인 정보 보호를 강화할 뿐만 아니라 참여자의 안전감을 높이고 블록체인 기술의 게임 및 애플리케이션에서의 혁신적인 사용을 촉진합니다.
현재 Zypher Network 게임 엔진은 CocosCreator와 통합되어 개발자가 CocosCreator를 통해 블록체인 게임을 직접 개발할 수 있도록 지원하고 있으며, 현재 Zypher 생태계의 게임 개발자는 TON Network에서 ZKP 솔루션을 채택한 수십 개의 고품질 텔레그램 미니게임을 출시했습니다.
다음으로, CocosCreator를 통해 ZKP 기반의 텔레그램 게임을 개발하는 방법을 단계별로 소개하겠습니다. 이 튜토리얼이 도움이 되길 바랍니다.
CocosCreator를 사용하여 TON 게임을 빠르게 배포하기 (3부): CocosCreator를 통해 ZKP 기반의 텔레그램 게임 개발하기
CocosCreator와 텔레그램에 대해 잘 모른다면, 먼저 다음 내용을 참조할 수 있습니다(튜토리얼의 1부):
https://www.chaincatcher.com/article/2140947
튜토리얼의 2부: Web2 게임이 Ton 결제를 사용하는 방법
https://www.chaincatcher.com/article/2146780
그리고 Zypher Network의 개발자 문서:
제로 지식 회로(zk 회로)는 제로 지식 증명 시스템의 핵심 구성 요소로, 특정 논리 또는 수학 계산을 설명하는 데 사용됩니다. zk 회로를 통해 증명자는 어떤 개인 정보도 누설하지 않고 검증자에게 특정 계산의 정확성을 증명할 수 있습니다. 이 기술은 개인 정보 보호, 블록체인, 신원 인증 등 다양한 분야에 널리 사용되어 데이터의 개인 정보 보호와 안전성을 보장합니다.
zk 회로는 여러 개의 게이트(gates)와 와이어(wires)로 구성된 논리 회로 모델입니다. 각 게이트는 덧셈, 곱셈 및 비교와 같은 기본 연산을 나타내며, 와이어는 값의 입력, 출력 또는 중간 결과를 나타냅니다. zk 회로의 설계는 복잡한 계산을 간단한 기본 연산으로 조합하여 임의의 계산 논리를 실현할 수 있도록 합니다.
zk 회로에는 세 가지 중요한 구성 요소가 있습니다:
- 입력 값: 공개 입력(public input)과 개인 입력(private input)을 포함합니다. 공개 입력은 검증자가 접근할 수 있는 데이터이며, 개인 입력은 증명자의 기밀 데이터로 검증자에게 직접 누설할 수 없습니다.
- 회로 논리: 일련의 연산으로 구성되며, 이러한 연산은 계산의 논리 흐름을 정의합니다. 회로의 설계는 복잡한 계산 과정을 효과적으로 표현하고 연산 효율성을 최적화할 수 있어야 합니다.
- 출력 값: zk 회로가 최종적으로 생성하는 출력 데이터로, 검증자가 사용합니다. 출력 값은 일반적으로 계산의 정확성을 검증하는 데 사용되며, 입력의 구체적인 내용을 누설하지 않습니다.
이러한 방식으로 zk 회로는 개인 정보를 보호하면서 계산의 투명성과 신뢰성을 보장하여 개인 정보 보호 계산의 응용 및 발전을 촉진합니다.
다음은 회로를 포함한 계약입니다:
TON 계약을 배포하기 전에 다음 준비 작업을 완료해야 합니다:
- 계약 코드 작성: FunC 언어 또는 기타 TON 가상 머신(TVM)을 지원하는 계약 언어를 사용하여 계약 로직을 작성하고, 계약의 기능 요구 사항과 안전성을 보장합니다.
- TON CLI 도구 설치: TON 공식에서 제공하는 명령줄 도구를 사용하여 계약을 컴파일, 배포하고 블록체인과 상호작용할 수 있도록 합니다.
- TON 지갑 준비: 계약에 초기 배포 비용을 제공하기 위해 TON 지갑을 생성하고 준비합니다. 이 지갑은 충분한 TON 토큰을 보유해야 합니다.
배포 및 상호작용의 전체 프로세스:
- 계약 코드 작성: FunC 또는 기타 계약 언어를 사용하여 계약 로직을 작성합니다.
- 계약 코드 컴파일: func 도구를 사용하여 계약 코드를 컴파일하고 .fif 파일을 생성합니다.
- 계약의 .boc 바이트코드 생성: fift 도구를 통해 .fif 파일을 계약의 바이트코드(.boc 파일)로 변환합니다. 이는 계약이 TON에서 실행되는 데 중요한 요소입니다.
- 계약 주소 생성: 계약의 바이트코드와 초기 매개변수를 기반으로 계약 주소를 생성합니다.
- 초기 자금 제공: 생성된 계약 주소에 충전하여 배포 비용을 충족합니다.
- TON 네트워크에 계약 배포: TON CLI의 deploy 명령을 사용하여 계약을 네트워크에 배포합니다.
- 계약 상태 확인: 계약 주소를 조회하여 계약이 성공적으로 배포되었는지 확인합니다.
- 계약과 상호작용: TON SDK 또는 CLI를 사용하여 계약의 메서드를 호출하고 데이터 조회 또는 상태 업데이트를 수행합니다.
ten sum rings 계약 배포 코드:
Cocos Creator에서 TON 계약을 호출하는 프로세스는 다음과 같습니다: TON 계약이 성공적으로 배포되고 계약 주소를 얻은 후, 프론트엔드는 TON SDK(예: TonWeb 또는 TonConnect)를 통합하여 계약과 상호작용할 수 있습니다. Cocos Creator 프로젝트에서 JavaScript를 사용하여 SDK에서 제공하는 인터페이스를 호출하고, 계약 주소와 메서드 이름에 따라 요청을 보내고 필요한 매개변수와 서명 정보를 전달합니다. 그런 다음 계약이 반환한 데이터를 처리하여 프론트엔드와 체인 상의 계약 간의 상호작용을 구현합니다.
이상은 Cocos Creator에서 zk 회로와 TON 계약을 기반으로 한 체인 상의 검증 프로세스를 구현하는 방법으로, 주요 단계는 다음과 같습니다: zk 회로를 작성하여 개인 정보 보호 계산 논리를 설계하고, 제로 지식 증명(ZKP)을 생성한 다음, 계약을 FunC 코드로 작성하고 TVM 바이트코드로 컴파일하여 TON 네트워크에 배포합니다. TON 계약을 통해 검증 및 데이터 상호작용을 수행하여 효율적이고 개인 정보 안전한 체인 상의 검증을 실현하고 데이터의 완전성과 사용자 개인 정보 보호를 보장합니다.