Escrito por Yooma
Fonte da imagem: https://unsplash.com/photos/people-inside-library-1mwPOXb_pB8
Problemas encontrados
PopCraft é um jogo de eliminação completa. Cada jogo dura 4 minutos. Os jogadores que eliminarem todos os elementos do tabuleiro dentro do tempo especificado receberão recompensas simbólicas.
Devido às características de toda a cadeia, cada operação do jogador durante o jogo precisa interagir com o blockchain. O tempo de bloqueio do Ethereum Layer 2 é geralmente de 2 segundos, o que faz com que os jogadores tenham que esperar pelo menos 2 segundos para que cada operação do jogo seja concluída. Isso é muito mais longo do que o tempo de espera em jogos Web2 semelhantes, tornando o jogo PopCraft. experiência abaixo do ideal.
Interface principal do jogo PopCraft
plano previsto
Prevemos o uso da tecnologia de prova de conhecimento zero (doravante denominada ZKP) no PopCraft para reduzir o número de interações entre os jogadores e o blockchain durante o jogo.
A abordagem esperada é: o processo do jogo não será carregado na cadeia, mas haverá um mecanismo para garantir que não haja risco de trapaça. Cada etapa da operação do jogador no jogo irá gerar ZKP. O ZKP da próxima etapa é gerado com base no ZKP da etapa anterior, formando assim um ZKP independente semelhante à estrutura do blockchain. o ZKP da última etapa da operação é enviado à cadeia do contrato inteligente para verificação do resultado.
Planejar pesquisa e derivação
1. Anti-trapaça no processo do jogo e resultados: Não basta gerar ZKP apenas para os resultados do jogo, pois também existe a possibilidade de trapaça no processo do jogo. Portanto, é necessário gerar ZKP para os resultados do jogo e verificar o processo do jogo.
2. O desafio técnico de gerar ZKP gradualmente: Para evitar trapaças, o ZKP precisa ser gerado para cada operação do jogador no jogo, e o último ZKP deve ser carregado na cadeia para verificação no final do jogo. Neste processo, o ZKP de cada etapa dependerá do ZKP da etapa anterior até o final do jogo.
Mas a dificuldade é:
1> A nova geração de ZKP precisa contar com o ZKP da etapa anterior, o que torna o processo de verificação complicado e incerto se pode ser alcançado. Além disso, a verificação do ZKP é feita por meio de contratos inteligentes (on-chain). Como verificar se o ZKP da etapa anterior está correto quando o ZKP é gerado na etapa posterior.
2> Ao verificar se o ZKP em cada etapa está correto por meio de contratos inteligentes, como garantir a coerência de cada ZKP com o ZKP anterior, não tenho certeza se existe uma solução para este problema.
3. O problema dos dados públicos do jogo: Os dados do jogo PopCraft são públicos, portanto não há necessidade de ocultar informações através do ZKP. Se as etapas de verificação acima puderem ser alcançadas, a próxima etapa será considerar salvar os dados do jogo no lado do contrato. No entanto, o problema é que a natureza do ZKP não pode resolver os dados específicos do jogo. Neste momento, os dados dos resultados do jogo transmitidos pelo cliente ao contrato inteligente não podem ser diretamente confiáveis, o que significa que o contrato inteligente não pode armazenar diretamente esses dados.
4. O problema do consumo de adereços de jogo (consumo de Token) no PopCraft: Quando o processo do jogo envolve a eliminação de elementos isolados através de adereços de jogo, corresponde essencialmente ao consumo de Token, sendo necessário transferir o Token correspondente na carteira do utilizador. para lidar com isso? A geração e verificação de ZKP em uma etapa também é um problema.
1> Uma possível solução é: Esta etapa continua gerando ZKP conforme processo anterior, verificando a quantidade de Tokens consumidos e por fim enviando-os para o contrato inteligente. No entanto, como o contrato inteligente não pode obter dados específicos do jogo através do ZKP, ele não pode determinar o número de Tokens que devem ser transferidos.
Além disso, suponha que um jogador possua 3 Token A, mas tente consumir 4 Token A no jogo. Este erro será descoberto no final do jogo e não em tempo real durante a operação do usuário.
2> Outra solução possível é: ao utilizar o Token para completar a eliminação de elementos isolados, interagir diretamente com o contrato inteligente para completar a eliminação, e então atualizar o saldo do Token do jogador. O ZKP gerado é responsável apenas por salvar a prova de operações e status do jogo neste momento.
Então, após a transferência do token ser bem-sucedida, você ainda precisará continuar a gerar o ZKP como na operação anterior. Caso não seja gerado, haverá mais uma interação com o contrato inteligente entre o ZKP gerado na etapa anterior do token. operação de transferência e a próxima etapa do ZKP gerado, o estado do jogo no ZKP entrará em conflito, portanto, se o ZKP gerado no final do jogo é válido também é uma questão em aberto.
5. Problema de ocultação de dados do ZKP: Para cenários como o PopCraft, onde não há necessidade de ocultar os dados do jogo, a ocultação de dados através do ZKP é redundante e aumenta a dificuldade de obtenção de dados do jogo e a incerteza do plano de implementação de engenharia. PopCraft só precisa garantir que o processo e os resultados do jogo estejam livres de riscos de trapaça e não precisa ocultar os dados do processo do jogo.
para concluir
Em jogos como o PopCraft, os dados do jogo não precisam ser ocultados, portanto, não é necessário ocultar informações por meio do ZKP. Para melhorar a experiência do jogo reduzindo o tempo de resposta, você pode considerar não enviar o processo do jogo para a cadeia, mas apenas enviar o resultado final. A chave é encontrar uma maneira de garantir que não haja possibilidade de trapaça desde a primeira até a última etapa do jogo e, finalmente, os resultados corretos são carregados na cadeia para verificação.
Se a ocultação de informações for realizada por meio do ZKP, aumentará a dificuldade de implementação de engenharia. A segunda é como garantir que não haja risco de trapaça no processo do jogo. O uso do ZKP pode garantir que não haja risco de trapaça em uma única operação do jogo. não pode ser gerado e enviado uma vez. Então, desde a primeira etapa do jogo até o final do jogo, como garantir que não haja risco de trapaça? No momento, parece que o ZKP não consegue resolver este problema.
Pela nossa pesquisa, o ZKP no campo do jogo é adequado para dois tipos de coisas:
Ocultação de informações em jogos com informações incompletas, como Dark Forest, Texas Hold'em, Werewolf, Hearthstone, etc.
O processo do jogo é uma prova de resultados de jogo em uma única etapa, como: loteria, adivinhação de números, pedra-papel-tesoura, jogos de dados, etc.
Devido às nossas reservas limitadas em tecnologia de prova de conhecimento zero, o conteúdo deste artigo pode conter erros factuais ou suposições de engenharia irracionais. Solicitamos gentilmente críticas e correções de especialistas na área de prova de conhecimento zero com vasta experiência.