Autore: The Mandalorian, Manta Network Protocol

Nell'ultimo anno circa, sempre più persone sono diventate consapevoli della potenza degli strumenti crittografici come ZK (prova a conoscenza zero), e abbiamo anche assistito all'aumento di molte applicazioni a prova di conoscenza zero, come i social network privati, voto privato e DAO privato, ecc. In effetti, l’applicazione della prova a conoscenza zero è molto ampia e qualsiasi applicazione che richiede la privacy sulla catena può utilizzare la prova a conoscenza zero.

All'evento ETHGlobal Hackathon durante l'ETHSanFrancisco 2022 appena concluso, gli amici del team di sviluppo della crittografia di Manta Network hanno realizzato un gioco di poker basato su zkSNARK in sole 36 ore e lo hanno lanciato con successo su ApeCoin, quattro unità di competizione organizzate da ENS, SKALE e L'ottimismo ha vinto premi.

Dark Forest, che molte persone conoscono, è un gioco di strategia in tempo reale (con informazioni imperfette) basato su zkSNARK. I giochi con informazioni incomplete sono giochi in cui il giocatore non conosce tutti gli stati. Ad esempio, nel poker, le carte in mano al giocatore sono informazioni private e anche il processo di pesca delle carte è completamente privato. La cosa interessante delle informazioni incomplete è che possono portare a una serie di strategie di gioco complesse.

Su una blockchain pubblica, è difficile costruire un gioco con informazioni incomplete a causa dell’apertura e della trasparenza dei dati sulla catena. Tuttavia, attraverso la tecnologia di prova a conoscenza zero, i giocatori possono inviare pubblicamente azioni valide verificabili mantenendo la privacy.

In questo evento hackathon, Manta Network ha creato un sistema di mescolamento e distribuzione del poker on-chain basato su zkSNARK. Questo sistema risolve principalmente due problemi esistenti nei giochi di poker on-chain: come mescolare le carte in modo equo e come distribuire le carte tra i giocatori in modo nascosto (altrimenti il ​​gioco potrebbe non essere giocato a causa di problemi MEV).

In sostanza, il poker on-chain basato sulla prova a conoscenza zero decentralizza il dealer delle carte, e il dealer non può controllare il gioco di carte controllando il dealer delle carte.

Quando giochi a Texas Hold'em in un client centralizzato Web2, ti imbatterai in una situazione in cui ti verrà semplicemente distribuita la probabilità che una carta sia estremamente piccola. C'è un'alta probabilità che tu possa ottenere le carte, ma non riesci a tirarle fuori.

Lo scopo è manipolare il gioco distribuendo le carte in modo che il tuo avversario possa batterti online quando la probabilità di vincere offline è estremamente bassa.

Questo è il motivo per cui abbiamo bisogno del poker decentralizzato.

Il sistema ZKShuffle ha tre funzioni:

ZKShuffle.setup: ogni giocatore genera una coppia di chiavi e mette insieme le chiavi pubbliche corrispondenti di ciascun giocatore per generare una chiave pubblica aggregata.

ZKShuffle.shuffle_encrypt: quando mescola, ogni giocatore deve chiamare shuffle_encrypt a turno.

Per garantire che la crittografia e la decrittografia possano essere eseguite in qualsiasi ordine, utilizziamo uno schema di crittografia omomorfica (schema di crittografia omomorfica). Ad esempio, in questo gioco ci sono tre giocatori. Dopo un giro di crittografia, ogni carta avrà tre blocchi di crittografia: Carta {Alice, Bob, Charlie}.

ZKShuffle.decrypt: se vuoi distribuire le carte a un giocatore specifico, ogni giocatore deve chiamare la funzione di decrittazione. Ad esempio, se la logica del gioco è distribuire le carte a Charlie, la sequenza corretta dovrebbe essere: Alice riceve la carta crittografata Carta {Alice, Bob, Charlie}, usa la sua chiave per decrittografarla e quindi invia la carta decrittografata Carta {Bob, Charlie} si inserisce nella catena e presenta una prova a conoscenza zero per verificare la validità della decrittazione.

Dopo che Bob ha ricevuto la carta parzialmente decriptata Card{Bob, Charlie} inviata da Alice sulla catena, la decrittografa con la propria chiave e invia la carta Card{Charlie} e la chiave per verificare la validità della decrittazione sulla catena. Prova di conoscenza zero. Alla fine, Charlie ottiene Carta{Charlie} e può visualizzare le sue carte semplicemente decodificandole con la sua stessa chiave.

Il team di sviluppo della crittografia di Manta Network ha creato una demo di Texas Hold'em utilizzando ZKShuffle, un'applicazione decentralizzata basata su Solidity, React ed Ether.js. In questa demo, ogni volta che inizia un nuovo round di gioco, tutti i giocatori devono eseguire un round di impostazioni per garantire che le carte da gioco sulla catena siano mescolate equamente. Quindi, ogni giocatore deve eseguire un giro di decrittazione e ottenere due carte. Con questi, i giocatori possono giocare a Texas Hold'em Poker su una blockchain EVM.

Manta ha attualmente implementato questa DApp sulle blockchain di Optimism Goerli, Ethereum Goerli e Skale.

 

Principio di attuazione

 

L'intero progetto è composto da 3 parti:

  • circuito ZK;

  • Contratti intelligenti per la verifica della decrittazione e dello shuffle, incluso il front-end DApp del contratto ZKShuffle e della logica di gioco, demo creata utilizzando React e ether.js e la libreria Circomlib JS;

  • JS crittografico Circomlib.

Nell'implementazione di Circom, viene adottato lo schema di crittografia ElGamal e vengono utilizzate le librerie Circom esistenti come gli hash Poseidon.

Il circuito di crittografia ha vincoli 87308 R1CS e il tempo di generazione della prova nella DApp è di 4,5 secondi. Il circuito di decrittazione ha vincoli 1522 R1CS e il tempo di generazione della prova nella DApp è di 0,1 secondi. Utilizza SnarkJs per generare prove a conoscenza zero nelle DApp.

Il contratto intelligente è composto da due parti: contratto quadro ZKShuffle e contratto logico di gioco del poker. Il contratto ZKShuffle incapsula semplicemente la logica di verifica ZKP e due circuiti. Il contratto logico distribuisce una macchina a stati per ottenere dal nodo RPC la fase corrente del gioco e l'ordine di turno del giocatore.

La DApp è implementata utilizzando il framework React ed Ether.js per visualizzare il tavolo da poker e l'animazione dell'azione di ciascun giocatore. Quando a un giocatore viene richiesto di agire, il giocatore deve solo fare clic su un pulsante nell'interfaccia utente e utilizzare metamask per firmare la transazione.

Guarda la dimostrazione

 

Informazioni sulla rete Manta

 

Manta Network è impegnata a costruire un mondo Web3 migliore attraverso la protezione della privacy. La progettazione del prodotto Manta parte dai principi primi e fornisce protezione della privacy end-to-end per gli utenti blockchain attraverso architetture crittografiche leader come zkSNARK. Garantendo la privacy, Manta combina interoperabilità, praticità, alte prestazioni e verificabilità, consentendo agli utenti di condurre trasferimenti e transazioni privati ​​tra qualsiasi risorsa parachain. La visione di Manta è fornire servizi di protezione della privacy più convenienti per l'intero mondo blockchain.

Il team fondatore di Manta è composto da diversi veterani della criptovaluta, professori e accademici la cui esperienza include l'Università di Harvard, il MIT e Algorand. Gli istituti di investimento di Manta includono Polychain, ParaFi, Binance Labs, Multicoin, CoinFund, Alameda, DeFiance e Hypersphere, ecc. Manta è anche un beneficiario ufficiale della borsa di studio della Polkadot Web3 Foundation, membro del programma Substrate Builder e membro del Blockchain Accelerator dell'Università di Berkeley.