Autor: The Mandalorian, Protocolo de Rede Manta
No último ano, mais e mais pessoas tomaram consciência do poder das ferramentas criptográficas como ZK (prova de conhecimento zero). Também vimos o surgimento de muitas aplicações de prova de conhecimento zero, como redes sociais privadas, redes privadas votação e DAO privado. etc. Na verdade, a aplicação da prova de conhecimento zero é muito ampla, e qualquer aplicação que exija privacidade na cadeia pode usar a prova de conhecimento zero.
No evento ETHGlobal Hackathon durante o recém-concluído ETHSanFrancisco 2022, membros da equipe de desenvolvimento de criptografia da Manta Network criaram um jogo de pôquer baseado em zkSNARK em apenas 36 horas.Quatro unidades de competição organizadas por ENS, SKALE e Optimism ganharam prêmios.
Dark Forest, com o qual muitas pessoas estão familiarizadas, é um jogo de estratégia em tempo real (informações imperfeitas) baseado em zkSNARK. Jogos de informação incompleta são jogos em que o jogador não conhece todos os estados. Por exemplo, no pôquer, as cartas na mão do jogador são informações privadas e o processo de retirada das cartas também é totalmente privado. O interessante sobre informações incompletas é que elas podem levar a uma série de estratégias de jogo complexas.
Em uma blockchain pública, é difícil construir um jogo com informações incompletas devido à abertura e transparência dos dados da cadeia. No entanto, através da tecnologia de prova de conhecimento zero, os jogadores podem submeter publicamente ações válidas e verificáveis, mantendo a privacidade.
Neste evento hackathon, a Manta Network construiu um sistema de embaralhamento e distribuição de pôquer on-chain baseado em zkSNARK. Este sistema resolve principalmente dois problemas existentes em jogos de pôquer on-chain: como embaralhar as cartas de maneira justa e como distribuir cartas entre os jogadores secretamente (caso contrário, o jogo pode não ser jogado devido a problemas de MEV).
Em essência, o pôquer on-chain baseado na prova de conhecimento zero descentraliza o dealer de cartas, e o dealer não pode controlar o jogo de cartas controlando o dealer de cartas.
Ao jogar Texas Hold'em em um cliente centralizado Web2, você encontrará uma situação em que a probabilidade de uma carta ser extremamente baixa será distribuída para você. Há uma grande probabilidade de você conseguir as cartas, mas não consegue retirá-las.
O objetivo é manipular o jogo distribuindo cartas para que seu oponente possa vencê-lo online quando a probabilidade de ganhar offline for extremamente baixa.
É por isso que precisamos do pôquer descentralizado.
O sistema ZKShuffle tem três funções:
ZKShuffle.setup: Cada jogador gera um par de chaves e reúne as chaves públicas correspondentes de cada jogador para gerar uma chave pública agregada.
ZKShuffle.shuffle_encrypt: Ao embaralhar, cada jogador precisa chamar shuffle_encrypt por sua vez.
Para garantir que a criptografia e a descriptografia possam ser realizadas em qualquer ordem, usamos um esquema de criptografia homomórfica (esquema de criptografia homomórfica). Por exemplo, há três jogadores neste jogo. Após uma rodada de criptografia, cada cartão terá três bloqueios de criptografia: Cartão {Alice, Bob, Charlie}.
ZKShuffle.decrypt: Se você quiser distribuir cartas para um jogador específico, cada jogador precisa chamar a função de descriptografia. Por exemplo, se a lógica do jogo é distribuir cartas para Charlie, a sequência correta deveria ser: Alice recebe o cartão criptografado Cartão {Alice, Bob, Charlie}, usa sua chave para descriptografá-lo e depois envia o cartão descriptografado Cartão {Bob, Charlie} envia na cadeia e envia uma prova de conhecimento zero para verificar a validade da descriptografia.
Depois que Bob recebe o cartão parcialmente descriptografado Card{Bob, Charlie} enviado por Alice na cadeia, ele o descriptografa com sua própria chave e envia o cartão Card{Charlie} e a chave para verificar a validade da descriptografia na cadeia. Prova de conhecimento zero. Finalmente, Charlie obtém o Card{Charlie} e pode visualizar seus cartões descriptografando-o com sua própria chave.
A equipe de desenvolvimento de criptografia da Manta Network construiu uma demonstração de Texas Hold'em usando ZKShuffle, um aplicativo descentralizado baseado em Solidity, React e Ether.js. Nesta demonstração, sempre que uma nova rodada do jogo começa, todos os jogadores devem realizar uma rodada de configurações para garantir que as cartas da cadeia sejam embaralhadas de maneira justa. Em seguida, cada jogador precisa fazer uma rodada de descriptografia e obter duas cartas. Com eles, os jogadores podem jogar Texas Hold'em Poker em um blockchain EVM.
Manta atualmente implantou este DApp nos blockchains Optimism Goerli, Ethereum Goerli e Skale.
Princípio de implementação
Todo o projeto consiste em 3 partes:
Circuito ZK;
Contratos inteligentes para verificar descriptografia e embaralhamento, incluindo contrato ZKShuffle e contrato de lógica de jogo DApp front-end, Demo construída usando React e ether.js e biblioteca Circomlib JS;
Circomlib criptografia JS库。
Na implementação do Circom, o esquema de criptografia ElGamal é adotado e são usadas bibliotecas Circom existentes, como hashes poseidon.
O circuito de criptografia possui restrições 87308 R1CS e o tempo de geração de prova no DApp é de 4,5 segundos. O circuito de descriptografia possui 1522 restrições R1CS e o tempo de geração de prova no DApp é de 0,1 segundos. Use SnarkJs para gerar provas de conhecimento zero em DApps.
O contrato inteligente consiste em duas partes: contrato-quadro ZKShuffle e contrato lógico de jogo de pôquer. O contrato ZKShuffle simplesmente encapsula a lógica de verificação ZKP e dois circuitos. O contrato lógico implanta uma máquina de estados para obter o estágio atual do jogo e a ordem de qual jogador é a vez do nó RPC.
O DApp é implementado usando a estrutura React e Ether.js para exibir a mesa de pôquer e a animação de ação de cada jogador. Quando um jogador é obrigado a agir, ele só precisa clicar em um botão na IU e usar a metamask para assinar a transação.
Assistir demonstração
Sobre Rede Manta
A Manta Network está comprometida em construir um mundo Web3 melhor através da proteção da privacidade. O design do produto Manta começa com os primeiros princípios e fornece proteção de privacidade ponta a ponta para usuários de blockchain por meio de arquiteturas criptográficas líderes, como zkSNARK. Ao mesmo tempo que garante a privacidade, o Manta combina interoperabilidade, conveniência, alto desempenho e auditabilidade, permitindo aos usuários realizar transferências e transações privadas entre quaisquer ativos parachain. A visão da Manta é fornecer serviços de proteção de privacidade mais convenientes para todo o mundo blockchain.
A equipe fundadora da Manta consiste em vários veteranos em criptomoedas, professores e acadêmicos cuja experiência inclui a Universidade de Harvard, o MIT e a Algorand. As instituições de investimento da Manta incluem Polychain, ParaFi, Binance Labs, Multicoin, CoinFund, Alameda, DeFiance e Hypersphere, etc. Manta também é bolsista oficial da Polkadot Web3 Foundation, membro do Substrate Builder Program e membro do Berkeley University Blockchain Accelerator.
