
제로 나이지 증명이 전량체인 게임과 블록체인 간의 상호작용 횟수를 줄여 사용자 경험을 향상시킬 수 있을까?
글: Yooma

이미지 출처: https://unsplash.com/photos/people-inside-library-1mwPOXb_pB8
발생한 문제
PopCraft는 완전 체인 기반의 매치-3 게임으로, 한 판당 4분 동안 진행된다. 플레이어는 제한 시간 내에 보드 상의 모든 요소를 제거하면 토큰 보상을 받는다.
완전 체인 기반 특성상, 플레이어의 각 게임 액션마다 블록체인과 상호작용해야 한다. 이더리움 L2의 블록 생성 주기는 일반적으로 2초이며, 이로 인해 플레이어가 게임 중 수행하는 모든 조작마다 최소 2초 이상 대기해야 하므로, 유사 Web2 게임들과 비교해 훨씬 긴 대기 시간이 발생하며, PopCraft의 게임 경험은 낮아진다.

PopCraft 게임 메인 화면
제안된 해결책
우리는 PopCraft에서 제로노울리지 프루프(이하 ZKP) 기술을 활용하여, 게임 도중 블록체인과의 상호작용 횟수를 줄일 수 있을 것으로 기대하고 있다.
예상되는 방식은 다음과 같다. 게임 과정은 체인에 올리지 않되, 부정행위 없음을 보장할 수 있는 메커니즘이 필요하다. 플레이어의 각 단계별 조작마다 ZKP를 생성하며, 다음 단계의 ZKP는 이전 단계의 ZKP를 기반으로 생성되어, 일종의 블록체인 구조와 유사한 자체 포함형 ZKP 체인을 형성한다. 게임 종료 시 마지막 조작의 ZKP를 체인에 전송하여 스마트 컨트랙트에서 결과를 검증하는 것이다.
방안 조사 및 추론
1. 게임 과정 및 결과의 부정행위 방지: 게임 최종 결과만을 위한 ZKP 생성은 충분하지 않다. 왜냐하면 게임 과정 자체에서도 부정행위 가능성이 존재하기 때문이다. 따라서 최종 결과뿐 아니라 게임 전체 과정에 대한 검증도 필요하다.
2. 단계별 ZKP 생성의 기술적 과제: 부정행위를 막기 위해 플레이어의 모든 게임 조작마다 ZKP를 생성하고, 게임 종료 시 마지막 ZKP만을 체인에 올려 검증하는 것이 목표이다. 이 과정에서 각 단계의 ZKP는 그 이전 단계의 ZKP에 의존하게 되며, 게임 종료까지 이러한 의존 관계가 지속된다.
그러나 다음과 같은 어려움이 있다:
1> 새로운 ZKP 생성은 이전 ZKP에 의존해야 하므로, 검증 절차가 복잡하며 실현 가능한지도 불확실하다. 또한 ZKP 검증은 스마트 컨트랙트(체인 상)에서 이루어져야 하는데, 후속 ZKP 생성 시점에서 어떻게 이전 ZKP의 정확성을 검증할 것인지가 문제이다.
2> 스마트 컨트랙트가 각 단계의 ZKP 정확성을 검증할 때, 각 ZKP가 직전 ZKP와 연속성을 유지하는지를 보장하는 방법이 현재로서는 명확하지 않다.
3. 게임 데이터 공개 문제: PopCraft의 게임 데이터는 공개적이므로, ZKP를 통한 정보 은닉은 불필요하다. 만약 앞서 언급한 검증 절차들이 모두 실현 가능하다고 해도, 다음 고려사항은 컨트랙트 측에서 게임 데이터를 저장하는 것이다. 문제는 ZKP의 성질상 실제 게임 데이터를 복원할 수 없으며, 클라이언트가 스마트 컨트랙트에 전달하는 게임 결과 데이터를 무조건 신뢰할 수도 없으므로, 스마트 컨트랙트가 해당 데이터를 직접 저장할 수 없다는 점이다.
4. PopCraft 내 게임 아이템 사용 (토큰 소모) 문제: 고립된 요소 제거를 위해 게임 아이템을 사용하는 경우, 이는 실질적으로 토큰 소모를 의미하며 사용자 지갑에서 해당 토큰을 이체해야 한다. 이러한 단계에서 ZKP 생성 및 검증을 어떻게 처리할 것인지가 또 다른 문제이다.
1> 가능한 해결책 하나는: 기존 프로세스를 따라 ZKP를 생성하고 소모된 토큰 수량을 검증한 후 최종적으로 스마트 컨트랙트에 제출하는 것이다. 그러나 스마트 컨트랙트는 ZKP로부터 구체적인 게임 데이터를 얻을 수 없으므로, 어느 정도의 토큰을 이체해야 할지 판단할 수 없다.
또한 플레이어가 토큰 A를 3개 보유하고 있는데 게임 중 4개를 소모하려 시도하는 경우, 이러한 오류는 게임 종료 시점에야 발견되며, 실시간 조작 시점에는 감지되지 않는다.
2> 또 다른 가능한 해결책은: 고립 요소 제거를 위해 토큰을 사용할 때, 바로 스마트 컨트랙트와 상호작용하여 제거를 수행하고 플레이어의 토큰 잔액을 업데이트하는 것이다. 이후 생성된 ZKP는 해당 조작과 상태의 증명 역할만 수행한다.
이 경우 토큰 이체가 성공한 후에도 앞선 조작처럼 계속해서 ZKP를 생성해야 한다. 그렇지 않으면, 토큰 이체 조작 직전의 ZKP와 다음 ZKP 사이에 스마트 컨트랙트와의 상호작용 단계가 추가되어 ZKP 내 게임 상태가 충돌하게 되며, 최종적으로 생성된 ZKP의 유효성 여부도 미결 상태가 된다.
5. ZKP의 데이터 은닉 문제: PopCraft처럼 게임 데이터 은닉이 불필요한 경우, ZKP를 통해 데이터를 숨기는 것은 불필요하며, 게임 데이터 접근의 난이도와 기술 구현의 불확실성을 오히려 증가시킨다. PopCraft는 게임 과정 및 결과의 부정행위 위험이 없도록 보장하기만 하면 되며, 게임 과정 데이터를 숨길 필요는 없다.
결론
PopCraft와 같은 게임에서는 게임 데이터 은닉이 필요하지 않으므로, ZKP를 통한 정보 은닉은 불필요하다. 반응 시간 단축을 통해 게임 경험을 개선하기 위해 게임 과정은 체인 외부에서 처리하고 최종 결과만 체인에 올리는 것을 고려할 수 있다. 핵심은 첫 번째 조작부터 마지막 조작까지 부정행위가 전혀 없는지를 보장하는 방법을 찾는 것이며, 이를 통해 올바른 최종 결과만 체인에 제출하여 검증받는 것이다.
ZKP를 통한 정보 은닉은 기술 구현 난이도를 오히려 높일 뿐이다. 또한 게임 과정의 부정행위 위험을 어떻게 차단할 것인지가 관건인데, ZKP는 개별 조작의 부정행위를 막을 수 있지만, 블록체인과의 상호작용 횟수를 줄이기 위해 매번 ZKP를 생성하고 제출하는 것은 불가능하다. 따라서 처음부터 끝까지 전체 게임 과정에 걸쳐 부정행위 없음을 보장하는 방법은 현재로서 ZKP로 해결하기 어렵다.
우리의 조사 결과에 따르면, 게임 분야에서 ZKP는 다음 두 가지 용도에 적합하다:
-
비완전 정보 게임에서의 정보 은닉: 예를 들어 다크 포레스트, 텍사스 홀덤, 워게임, 하스스톤 등.
-
단일 단계로 구성된 게임 결과의 증명: 예를 들어 복권, 숫자 맞추기, 가위바위보, 주사위 게임 등.
저자는 제로노울리지 프루프 기술에 대한 전문 지식이 제한적이므로, 본 문서 내용에 사실 오류 또는 비현실적인 기술 가정이 포함되어 있을 수 있으며, 관련 분야 전문가들의 피드백과 지적을 진심으로 환영한다.
TechFlow 공식 커뮤니티에 오신 것을 환영합니다
Telegram 구독 그룹:https://t.me/TechFlowDaily
트위터 공식 계정:https://x.com/TechFlowPost
트위터 영어 계정:https://x.com/BlockFlow_News









