Zcash
Zcash é uma criptomoeda voltada ao uso de criptografia para prover uma melhoria em privacidade quando comparada a outras criptomoedas como o Bitcoin. O protocolo Zerocoin foi melhorado e transformado no sistema Zerocash, e finalmente na criptomoeda Zcash em 2016. O desenvolvimento de melhorias no protocolo e a referência de implementação é liderada pelo Zerocoin Electric Coin Company, coloquialmente conhecida como Zcash Company.[1] O fundador e CEO da Zcash Company é Zooko Wilcox-O'Hearn. A sua equipe de fundadores incluem o criptógrafo Matthew D. Green da Universidade Johns Hopkins. Roger Ver foi um dos investidores iniciais da Zcash Company.
Detalhes
[editar | editar código-fonte]Pagamentos em Zcash são publicados em um blockchain público, mas os usuários são capazes de usar um recurso opcional de privacidade para ocultar o remetente, o destinatário e a quantia que está sendo transacionada.[2] Como o Bitcoin, Zcash tem uma quantidade total fixa de 21 milhões de unidades.[3] Nos primeiros quatro anos, 20% das moedas criadas nesse período são alocadas em uma "recompensa para fundadores" divididas entre investidores, desenvolvedores, e uma fundação sem fins lucrativos.[4]
As transações podem ser "transparentes" e similares a transações bitcoin no caso em que são controlados por uma t-addr (endereço transparente), ou podem ser um tipo de prova de conhecimento nulo chamados zk-SNARKs; nesse caso as transações são ditas como "blindadas"e são controladas por um z-addr (endereço blindado). As moedas de Zcash estão ou em um conjunto transparente ou em um conjunto blindado; Em dezembro de 2017, apenas cerca de 4% das moedas Zcash estavam no conjunto blindado e nesse momento a maior parte dos programas de carteiras não dava suporte para os z-addrs e nenhuma carteira baseada na web oferecia suporte.[5]
Zcash proporciona aqueles que optam por transações privadas a opção de "divulgação seletiva", permitindo a um usuário comprovar o pagamento para fins de auditoria. Um motivo para permitir isso é oferecer a escolha ao cumprimento de regras de impostos e contra lavagem de dinheiro. "As transações são auditáveis, mas a divulgação está sob o controle do participante."[6] Wilcox foi palco de reuniões virtuais com agências de lei nos EUA para explicar esses princípios fundamentais e ficou registrado que eles dizem que "eles não desenvolveram a moeda para facilitar atividades ilegais".
Transações[7][8]
[editar | editar código-fonte]Pagamentos em Zcash são publicados em um blockchain público. Entretanto, os usuários podem escolher o grau de privacidade dos valores transferidos, que podem ser de dois tipos:[2]
- Transação de valores transparentes são análogos a transação de valores de bitcoins, mantendo o valor transferido, remetente e destinatários públicos; são referenciados por t-addrs (endereços transparentes);
- Transação de valores blindadas são acompanhados por paying keys e armazenadas como tuplas denominadas notes; payment keys são chaves públicas associadas à chave pública do destinatário e exigem o conhecimento de spending keys para gastar o valor transferido; são referenciadas por z-addrs (endereços blindados).
Uma transação em si é representada por JoinSplits Descriptions, que descrevem um JoinSplit Transfer e um tipo de prova de conhecimento nulo (zk-SNARKs), que garante a privacidade do remetente, destinatário e valor transferido. Um JoinSplit Transfer, por sua vez, recebe como entrada um valor transparente e até dois blindados e produz saídas do mesmo tipo.
Zcash ainda proporciona àqueles que optam por transações privadas a opção de "divulgação seletiva", permitindo a um usuário comprovar um pagamento para fins de auditoria. Um motivo para essa permissão é oferecer a escolha ao cumprimento de regras de impostos e contra lavagem de dinheiro. "As transações são auditáveis, mas a divulgação está sob o controle do participante."[6] Wilcox foi palco de reuniões virtuais com agências de lei nos EUA para explicar esses princípios fundamentais e ficou registrado que "eles não desenvolveram a moeda para facilitar atividades ilegais". Em dezembro de 2017, apenas cerca de 4% das moedas Zcash estavam no conjunto blindado e a maior parte dos programas de carteiras não dava suporte a z-addrs.[5]
Gasto de transações blindadas
[editar | editar código-fonte]Ao gerar o note de uma transação blindada em Zcash, um commitment é criado e seu hash é adicionado a uma lista contendo o hash de todos os outros commitments conhecidos (uma cópia desta lista é armazenada em cada nó da rede).
Quando um note é gasto, cria-se um valor que representa tal operação, denominado nullifier, e seu hash é adicionado a outra lista (também com cópia em todos os nós da rede). O conteúdo de um nullifier é derivado de um commitment a partir de seu spending key. O armazenamento como hash evita a possibilidade de se linkar commitments a nullifiers, garantindo a privacidade do output da transação.
Ao realizar uma transação blindada, deve-se então revelar o nullifier de cada valor blindado enviado e o commitment de cada valor blindado recebido. A transação só se completa se não houver colisão de hashes.
zk-SNARK[9]
[editar | editar código-fonte]A blindagem de uma transação no Zcash consiste na formulação de um zk-SNARK que permite verificar, com alta probabilidade, a validade das seguintes premissas:
- a soma dos valores de entrada condiz com a soma dos valores de saída;
- o commitment de cada note de entrada existe na lista de commitments;
- o spending key de cada note de entrada é conhecido pelo remetente;
- os nullifiers revelados condizem com os notes de entrada;
- os spending keys de cada note de entrada foram criptograficamente ligados a uma assinatura da transação de modo que esta não possam ser modificada por alguém que não os conheça;
- cada note de saída foi gerado de modo que seus nullifiers não colidam com os de outros notes.
A adição de zk-SNARKs à blindagem de transações facilita a validação mas retarda a construção do bloco, uma vez que a formulação dos parâmetros de uma prova é custosa (pode levar até 40 segundos) mas facilmente verificável (não toma mais que alguns milissegundos). A validação é modelada como equações algébricas cujas soluções equivalem ao conhecimento da chave privada, da seguinte maneira:
Computação→ Circuito Aritmético→ R1CS → QAP → zk-SNARK
- Um programa que verifica as premissas acima é convertido para um circuito aritmético: uma equação matemática que representa toda a computação feita em tal validação;
- As saídas de cada porta do circuito são modeladas como R1CS (Rank 1 Constraint System), i.e., uma equação de matrizes cujas linhas representam portas do circuito e colunas representam variáveis:O vetor equivale à solução em cada porta do circuito;
- O R1CS é modelado como um QAP (Quadratic Arithmetic Program): conjunto de polinômios cuja solução do produto equivale à solução do R1CS;
- Um zk-SNARK verifica o conhecimento de uma solução para o produto de polinômios e valida a transação.
Atualização da rede
[editar | editar código-fonte]A primeira atualização da rede de Zcash será feita através de um hard fork no número de bloco 347500[10] , que está previsto para ser no dia 25 de junho de 2018. Um novo recurso vai ser introduzido, que permitirá que os usuários configurem tempos de expiração para transações.[11] Cinco pospostas para melhoria do Zcash, nominalmente as 143, 200, 201, 203 serão implementadas[12]. Esta atualização também melhorou a verificação de assinatura, que ajuda a melhorar a velocidade das transações.
Ver também
[editar | editar código-fonte]Referências
[editar | editar código-fonte]- ↑ «THE ZEROCOIN ELECTRIC COIN COMPANY LLC»
- ↑ a b «Snowden: Anonymous 'Zcash' Could Solve Bitcoin Surveillance Risks»
- ↑ «Zcash, a Harder-to-Trace Virtual Currency, Generates Price Frenzy»
- ↑ «Cypherpunk Desert Bus: My Role In The 2016 Zcash Trusted Setup Ceremony»
- ↑ a b arXiv:1712.01210
|nome1=
sem|sobrenome1=
em Authors list (ajuda); Em falta ou vazio|título=
(ajuda)|nome1=
sem|sobrenome1=
em Authors list (ajuda); Em falta ou vazio|título=
(ajuda) - ↑ a b «How Zcash Tries to Balance Privacy, Transparency in Blockchain» (em inglês)
- ↑ «Anatomy of A Zcash Transaction – Zcash Blog» Verifique valor
|url=
(ajuda). Zcash Blog (em inglês). 23 de novembro de 2016 - ↑ «zcash/zips» (PDF). GitHub (em inglês). Consultado em 26 de junho de 2018
- ↑ Buterin, Vitalik (12 de dezembro de 2016). «Quadratic Arithmetic Programs: from Zero to Hero». Vitalik Buterin. Consultado em 26 de junho de 2018
- ↑ «Zcash - Overwinter Network Upgrade» Verifique valor
|url=
(ajuda). z.cash (em inglês) - ↑ «Overwinter – A Zcash network upgrade». eCoin4Dummies.com
- ↑ «zcash/zips». GitHub (em inglês)