저자: Yooma; 출처: MetaCat
발생한 문제< /h2>
팝크래프트는 각 게임이 4분 동안 진행되며 제한 시간 내에 보드의 모든 요소를 제거하면 토큰을 보상으로 받는 풀체인 제거 게임입니다.
온체인 게임의 특성상 플레이어는 게임 중 모든 행동에 대해 블록체인과 상호작용해야 합니다. 이더리움의 두 번째 계층의 블록 시간은 일반적으로 2초이므로 플레이어는 각 액션이 완료될 때까지 최소 2초를 기다려야 하며, 이는 유사한 웹2.0 게임의 대기 시간보다 훨씬 길기 때문에 팝크래프트 게임 플레이 경험이 즐거워지지 않습니다. ">팝크래프트 메인 게임 인터페이스
구상한 시나리오
우리는 게임플레이 중 플레이어가 블록체인과 상호작용하는 횟수를 줄이기 위해 팝크래프트에 영지식 증명 기술(이하 ZKP)을 활용하는 것을 구상하고 있습니다.
의도는 게임플레이 과정이 업링크되지 않지만 부정행위의 위험이 없도록 보장하는 메커니즘이 있다는 것입니다. 플레이어는 게임의 각 단계마다 ZKP를 생성하고, 이전 단계의 ZKP를 기반으로 다음 단계의 ZKP가 생성되어 블록체인의 구조와 유사한 독립적인 ZKP를 형성하며, 게임이 끝나면 마지막 단계의 ZKP가 체인으로 전송되어 스마트 컨트랙트가 결과를 검증하게 됩니다.
체계 연구 및 도출
1. 게임 과정 및 결과의 부정행위 방지: 게임 결과에 대한 ZKP를 생성하는 것만으로는 충분하지 않으므로 게임 과정과 게임 결과의 부정행위를 방지하는 것이 중요합니다. 게임의 과정도 속일 수 있기 때문에 게임 결과에 대한 ZKP를 생성하는 것만으로는 충분하지 않습니다. 따라서 게임 결과와 게임 과정 모두에 대한 ZKP를 생성하는 것이 중요합니다.
2. 단계별 ZKP 생성의 기술적 과제: 부정 행위를 방지하기 위해서는 플레이어가 게임 중 수행하는 모든 행동에 대해 ZKP를 생성하고, 게임 종료 시 마지막 ZKP를 업로드하여 검증해야 합니다. 이 과정에서 각 단계의 ZKP는 게임이 끝날 때까지 이전 단계의 ZKP에 따라 달라집니다.
그러나 문제는 다음과 같습니다.
1> 새 ZKP의 생성은 이전 단계의 ZKP에 의존하므로 검증은 달성 여부가 불확실한 복잡한 프로세스가 될 수 있습니다. 또한 ZKP 검증은 스마트 컨트랙트(온체인)를 통해 이루어지므로, 이후 ZKP 생성 단계에서 이전 ZKP가 올바른지 어떻게 확인할 수 있을까요?
2 스마트 컨트랙트를 통해 각 ZKP가 올바른지 검증할 때 각 ZKP가 이전 ZKP와 일치하는지 확인하는 방법에 대한 해결책은 확실하지 않습니다.
3. 게임 데이터 공개 문제: 팝크래프트의 게임 데이터는 공개되어 있기 때문에 굳이 ZKP를 통해 정보를 숨길 필요가 없습니다. 위의 검증 단계가 가능하다면 다음 단계는 계약 측에서 게임 데이터를 저장하는 것을 고려할 수 있습니다. <하지만 문제는 ZKP의 특성상 특정 게임 데이터를 해결할 수 없고, 클라이언트가 스마트 컨트랙트에 전달하는 게임 결과 데이터를 신뢰할 수 없기 때문에 스마트 컨트랙트가 직접 저장할 수 없다는 것입니다.
4. 팝크래프트에서 게임 소품 (토큰 소비)의 소비 문제: 게임 진행 시 : 게임 과정에서 게임 소품을 통해 고립된 요소를 제거하는 경우, 이는 본질적으로 토큰 소비에 해당하며 사용자의 지갑에 있는 해당 토큰을 전송해야 하는데, 이 ZKP 생성 및 검증 단계를 어떻게 처리할지도 이슈가 됩니다.
1> 한 가지 가능한 해결책은 이 단계에서 이전과 같은 방식으로 ZKP를 계속 생성하고 소비된 토큰의 양을 검증하여 궁극적으로 스마트 컨트랙트로 전송하는 것입니다. 그러나 스마트 컨트랙트는 ZKP를 통해 게임별 데이터에 액세스할 수 없으므로 전송해야 하는 토큰의 양을 결정할 수 없습니다.
또한, 플레이어가 토큰 A 3개를 가지고 있는데 게임에서 토큰 A 4개를 소비하려고 한다고 가정하면, 이 오류는 사용자의 실제 행동 시점이 아닌 게임 종료 시점에 감지됩니다.
2> 다른 가능한 해결책은 토큰을 사용하여 고립된 요소의 제거를 완료할 때 스마트 컨트랙트와 직접 상호작용하여 제거를 완료한 다음, 플레이어의 토큰 잔액을 업데이트합니다. 생성된 ZKP는 이 시점에서 게임 운영과 상태에 대한 증거를 보관하는 역할만 담당합니다.
그런 다음 토큰 전송 성공 시점에 이전 작업과 마찬가지로 ZKP를 계속 생성해야 하며, 그렇지 않은 경우 마지막 단계의 토큰 전송 작업과 중간에 다음 단계의 ZKP 생성 작업에서 스마트 컨트랙트와 한 번 더 상호작용을 해야 합니다. 그렇지 않다면 토큰 전송 작업의 이전 단계에서 생성된 ZKP와 다음 단계에서 생성된 ZKP가 중간에 있어 스마트 컨트랙트와 상호작용하는 단계가 하나 더 생기게 되고, 그러면 ZKP 내 게임 상태가 충돌하게 되므로 게임 종료 시점에 생성된 ZKP가 유효한지 여부도 미지의 문제입니다.
5. ZKP에 데이터 숨기기: 게임 데이터를 숨길 필요가 없는 팝크래프트와 같은 시나리오의 경우, ZKP에 데이터를 숨기는 것은 중복되며 게임 데이터 확보의 어려움과 엔지니어링 솔루션의 불확실성을 증가시킵니다. 팝크래프트는 게임 프로세스와 결과에 부정행위 위험이 없는지 확인하기만 하면 되며, 게임 프로세스 데이터를 숨길 필요가 없습니다.
결론
팝크래프트와 같은 게임에서는 게임 데이터를 숨길 필요가 없으므로 ZKP를 통해 정보를 숨기는 것은 불필요합니다. 응답 시간을 줄여 게임 경험을 개선하기 위해 게임 프로세스는 업로드하지 않고 최종 결과만 업로드하는 것을 고려할 수 있습니다. 핵심은 게임 플레이의 첫 단계부터 마지막 단계까지 부정행위가 발생하지 않도록 하는 방법을 찾은 다음 마지막에 정확한 결과만 업로드하는 것입니다.
ZKP를 통해 정보를 숨기면 프로젝트 구현이 더 어려워집니다. 둘째, 게임 과정에서 부정행위의 위험이 없음을 어떻게 보장할 수 있을까요? ZKP를 사용하면 개별 게임 운영에 부정행위 위험이 없음을 보장할 수 있지만, 블록체인과의 상호작용 횟수를 줄이기 위해 ZKP를 생성하여 한 번만 제출할 수는 없습니다. 그렇다면 게임의 첫 단계부터 게임이 끝날 때까지 부정행위의 위험이 없음을 어떻게 보장할 수 있을까요, ZKP는 이 문제를 해결하지 못하는 것 같습니다.
연구 결과, 게임 분야에서 ZKP가 적합한 것은 두 가지 유형이 있습니다.
다크 포레스트와 같은 불완전 정보 게임에 대한 정보 숨기기. 다크 포레스트, 텍사스 홀덤, 울프스베인, 하스스톤 레전드 등과 같은 비완전 정보 게임의 정보 숨기기.
복권, 숫자 맞추기, 가위바위보, 주사위 게임 등 한 단계 게임 결과의 증명.
영지식 증명 기술의 한계로 인해 본 논문 내용은 사실적 오류나 무리한 공학적 가정이 있을 수 있으며, 풍부한 경험을 가진 영지식 증명 분야 전문가들의 비판과 수정을 부탁드립니다.