Bem vindo! Novo em Zcash?
A rede Zcash é jovem, mas está evoluindo rapidamente! Cadastre-se e estaremos em contato com mais informações sobre como você pode começar a usar Zcash!

Idioma

zkSNARKs na Ethereum

Sean Bowe | Jul 28, 2016

Na última semana, os Zcashers Vitalik Buterin, Andrew Miller, Eran Tromer e eu estimos no Ethereum/IC3 Bootcamp em Cornell. No evento, que trabalhamos com uma equipe fantástica de estudantes/estagiários da Cornell e um membro da fundação Ethereum para trazer zkSNARKs para Ethereum pela primeira vez.

Foto do Time para SNARKs em Ethereum

(Esquerda para Direita) Yuncong Hu, Casey Detrio, Josh Gancher, Sean Bowe, Eran Tromer

SNARKs

zk-SNARKs são as ferramentas de criptografia subjacente da Zcash. Elas são prova de que você executou um cálculo sobre algumas entradas sem revelar todas as entradas. Zcash usa essas provas para verificar transações ao mesmo tempo proteger a privacidade dos usuários.

Além de ser ótimo para privacidade, elas também são ótimos para reduzir o custo de verificação de contratos inteligentes complicados. Uma vez que pode ser verificado rapidamente, e porque as provas são pequenas, elas podem proteger a integridade da computação sem sobrecarregar os não participantes.

Em nosso trabalho desta semana, nós estendemos a linguagem de contrato Ethereum para apoiar de forma eficiente a verificação das provas zkSNARK. Especificamente, nós adicionamos um snarkverify pré-compilado (como um código de operação) a para um fork de Parity que usa libsnark para verificar provas genéricos.

Zerocash sobre Ethereum

Sean Bowe demonstra o circuito.

Como demonstração, utilizamos este novo verificador de zkSNARK em Ethereum para implementar um contrato de coin mixing primitiva usando uma variante simplificada da Zerocash - o protocolo acadêmico que Zcash baseou para a sua implementação. Chamamos isso de "baby" ZoE, por Zerocash over Ethereum. O contrato permite-lhe depositar quantidades discretas (unidades de ETH) através da inserção de um compromisso com um "número de série" em uma árvore Merkle mantido pelo contrato.

A fim de retirar-se sem revelar qual o compromisso que você está gastando, que ligaria a retirada com o depósito, usamos um zkSNARK para provar que sabemos um compromisso dentro da árvore merkle do contrato. Com o intuito de evitar gastos-duplo, nós utilizamos enquanto revelamos o número de série, onde o contrato se lembra e proíbe a reutilização.

Com o intuito de evitar de que outros usuários tomando a prova e retirada sem a sua permissão, a prova também autentica para um endereço de retirada (em Ethereum), que está autorizado a receber os fundos do contrato.

A ideia de integrar Zerocash em uma moeda usando um código de operação de verificação SNARK remonta ao papel original da Zerocash (Seção 6.3 em Zerocash versão extendida). Seguindo essa receita médica, é possível estender o contrato de ZoE para trabalhar com o protocolo Zerocash completo.

Conclusão

Nós amamos contribuir para a Bitcoin e Ethereum, e estamos ansiosos para uma maior colaboração com a comunidade criptomoeda de uma forma mais ampla. Você pode olhar para o código do nosso grupo aqui.