PIVX 5.0 com zk-SNARKs

PIVX Brasil
13 min readOct 30, 2020

Prefácio

A PIVX não está apenas determinada a fazer uma criptomoeda extensível e amplamente usada para as massas; mas também para continuar pesquisando e inovando nas áreas de privacidade financeira e de governança, bem como na tecnologia de consenso de blockchain de Prova de Participação (PoS).

Com o recente lançamento da carteira 4.0 core (18 de dezembro de 2019), a PIVX fez avanços significativos em direção a uma usabilidade e adaptabilidade aprimoradas por meio de uma interface de usuário Qt aprimorada construída do zero. Agora, estamos finalmente prontos para fazer um anúncio sobre a principal área de foco do projeto PIVX: ou seja, Privacidade.

No processo de seleção para o próximo protocolo de privacidade da PIVX, uma avaliação dos protocolos usados ​​no passado foi realizada e nos levou a destacar alguns atributos desejáveis ​​para futuras pesquisas a serem incluídas no novo protocolo, tais como:

  • Provas verificáveis ​​pequenas e rápidas
  • Provas de associação à árvore Merkle
  • Circuitos aritméticos
  • Unidades não fixas para quantidade oculta
  • Possibilidade de configuração confiável

Ele também precisava ter uma construção criptográfica e um fluxo de código comprovadamente eficaz na prática por um longo período de tempo, supervisionado por autores, professores e revisores reconhecidos da comunidade criptográfica mais ampla.

Isso concluiu em uma única progressão natural para o nosso trabalho que estamos animados em compartilhar com vocês agora: Protocolo de Sapling [1] usando Groth16 [2] zk-SNARKs [3] provas de conhecimento zero

Introdução à criptografia Zero-Knowledge e zk-SNARKs

A prova Zero-Knowledge é um método criptográfico pelo qual uma parte (o provador) pode provar a outra parte (o verificador) que uma determinada declaração é verdadeira, sem transmitir (ou vazar sem saber) qualquer informação além de uma declaração simples: que a declaração sendo feito é realmente verdade. Um protocolo Zero-Knowledge permite que você faça algo REALMENTE impressionante. Para provar que você sabe algo sem revelar o que é esse algo. Dito de outra forma, digamos que você tenha conhecimento de algo, mas não queira compartilhá-lo (por uma infinidade de razões. Protocolos de segurança, prevenção de hacking, etc). Mas você PRECISA se autenticar em outra parte / pessoa / entidade / computador que realmente SABE disso. Dilema. Como você faz isso sem revelar esse segredo? Essa é a própria definição de “conhecimento zero” — nenhuma (“zero”) informação sobre o segredo é revelada, mas a segunda parte (ou qualquer outra parte que precise validar) está convencida (por completo) de que você conhece as informações / dados / detalhes (esse segredo).

Por que isso importa? Por que alguém precisaria provar que sabe algo sem dizer o que é esse algo?
Quando você não confia na outra pessoa
Quando você confia na outra pessoa, mas não quer detalhes PESSOAIS flutuando on-line
Quando você é “neutro” quanto a confiar na outra pessoa, mas precisa concluir alguma transação.
Quando você precisa persuadir outra pessoa de que você TEM / sabe algo e pode demonstrar isso de uma maneira matemática e computacional sólida.

Vamos agora aplicar isso ao PIVX e à transação de criptomoeda:

Você deseja fazer uma compra (online ou em uma loja). Obviamente, o varejista precisa saber que você tem os fundos e que eles podem ser enviados. Caso contrário, nenhuma transação pode ocorrer. PORTANTO, você precisa demonstrar (provar) que tem dinheiro suficiente para pagar por esse item. MAS, provavelmente você NÃO deseja divulgar o valor exato do total de seus ativos / saldo da conta, etc. a esse indivíduo / varejista. Ao usar uma prova Zero-Knowledge, esta informação (PROOF de seus fundos) pode, assim, ser transmitida e comprovada como verdadeira sem revelar mais nada. Suas informações pessoais estão seguras. Sua identidade está segura. Seu saldo total está seguro. O varejista está satisfeito (sim, você tem os fundos, obrigado!) E você está satisfeito por ter demonstrado que tem fundos suficientes para concluir a transação,

Mudas / zk-SNARKS (Groth16)

Para começar, zk-SNARK ou, Zero-Knowledge Succinct Non-Interactive Argument of Knowledge, refere-se a um método de construção de prova onde um indivíduo tem a capacidade de provar a posse de certas informações (por exemplo, chave privada) sem ter que revelar essa informação para outra parte anonimamente e, portanto, não tem qualquer interação. Portanto, zk-SNARKS é uma forma de realizar uma transação de “conhecimento zero” — uma prova que permite que duas partes provem que uma afirmação entre um provador e um verificador é verdadeira, nada mais.

Sapling é um protocolo de habilitação de privacidade avançado desenvolvido pela Electric Coin Company [4], criadora do Zcash [5], que combina todos os aspectos técnicos destacados acima, juntamente com uma nova construção criptográfica, padronizando um Pagamento Anônimo Descentralizado totalmente funcional ( Esquema DAP) aproveitado em uma nova forma de criptografia de conhecimento zero chamada Argumentos de Conhecimento Sucinto e Não Interativo de Conhecimento Zero (zk-SNARKS).

O Sapling adiciona novos tipos de transações altamente utilizáveis ​​ao blockchain baseado em utxo padrão que permite preservar a invisibilidade dos (meta) dados transacionais enquanto permite a geração de provas zk-SNARKs tão pequenas quanto 144 bytes em questão de segundos em uma casa de baixa potência computador. Graças a essa grande melhoria de desempenho no Sapling, as transações privadas tornam-se realmente práticas com <1 segundo (~ 500ms) necessário para executar uma transação privada. No lado receptor, o destinatário deve levar <1 segundo (~ 10 ms) para verificar a transação. Esses tempos colocam uma transação privada no reino do aceitável quando se trata de transações em grande escala e tempos de verificação para o comércio global.

Ao contrário do protocolo Zerocoin anterior, agora extinto [6], o Sapling faz isso de uma forma muito mais completa, ocultando não apenas os dados do remetente, mas também do receptor, bem como a quantidade transacionada, levando a uma privacidade muito mais completa.

Chaves de Mudas

As chaves que o Sapling fornece são ligeiramente diferentes daquelas que eram usadas no PIVX anteriormente. Com o Sapling, um indivíduo gera o que é chamado de “chave de gastos” — permitindo que eles façam um pagamento (o que é equivalente a ter uma chave secreta / privada) e uma “chave de visualização” que permite que qualquer pessoa que possua esta chave veja os pagamentos recebidos ou emitidos.

Essa chave de visualização pode ser considerada uma “declaração” pública — por exemplo, pode ser compartilhada com um advogado de garantia, regulador, etc. para fins de conformidade. No entanto, não é necessário compartilhar também os gastos (ou chave privada).

Agora, digamos que você deseja receber um pagamento. Você pode gerar um endereço a partir dessa chave de visualização e retransmiti-lo para o indivíduo que está enviando fundos. O que é realmente bom sobre os endereços da Sapling é que eles são diversificados. Com uma única chave de visualização, você pode criar ou derivar novos endereços que de forma alguma correspondem ao anterior.

Como isso afeta a manutenção da privacidade? Por ter endereços de recebimento não correlacionados, um indivíduo evita o vazamento potencial de privacidade por meio de uma chave pública — seria possível para diferentes entidades / indivíduos que estão fazendo pagamentos descobrir a identidade da pessoa que está sendo paga.

Mudas vs Zerocoin

Em comparação com o protocolo Zerocoin usado anteriormente, Sapling compartilha o mesmo conceito de conhecimento zero, mas foi estendido com a criação de uma estrutura sobre zk-SNARKs para encadear várias instruções em um único circuito matemático que pode ser comprovado de uma maneira de conhecimento zero.

Principais vantagens do Sapling:

  • Menor e mais rápido — Com o Sapling usando a construção Groth16, cada gasto é de apenas 0,3 KB; até 70x menor do que o que era possível com o protocolo Zerocoin (em 22 KB), embora tenha um tempo de verificação menor de menos de 6 ms.
  • Mais fácil de usar — Com o Sapling, os usuários podem simplesmente gerenciar a privacidade e / ou transparência de cada transação e seu saldo com base apenas no tipo de endereço de pagamento usado.
  • Usabilidade aprimorada — Com o Sapling, os usuários poderão enviar ou receber qualquer quantidade de moedas, incluindo decimais, sem se limitar a definir tamanhos de unidades de denominação nem contar como era com Zerocoin.
  • Aceitação mais ampla — o Sapling foi revisado por um público de criptografia muito mais amplo com maior suporte.
  • Mais potencial — a construção do zk-SNARKS pode ser usada em outras áreas, como a execução do programa e, portanto, não é tão isolada no uso como o Zerocoin. Isso também denota uma aceitação mais ampla, bem como pesquisas e desenvolvimentos contínuos.

O Sapling usa uma abordagem de distinção de moeda pública / privada semelhante ao protocolo Zerocoin para quebrar a rastreabilidade da transação, mas tem algumas diferenças importantes em como ela é alcançada e usada pelo usuário final para ambos os tipos de transações.

Na prática, o Sapling consegue isso com dois novos tipos de endereços; Blindado (z) e transparente (t) com os seguintes tipos de transação comuns:

  1. Endereço transparente (t) para endereço blindado (z) = Transação de blindagem
  2. Endereço blindado (z) para endereço blindado (z) = Transação protegida
  3. Endereço blindado (z) para endereço transparente (t) = Transação de desprendimento
  4. Endereço transparente (t) para endereço transparente (t) = transação desprotegida

Portanto, ao contrário do Zerocoin, o Sapling permite uma transação totalmente privada entre dois endereços protegidos, bem como um método mais lógico de conversão entre dois tipos diferentes de estados de privacidade da moeda.

Existem também tipos de transações mais avançados, que podem enviar moedas para o endereço privado e para um endereço público ao mesmo tempo, permitindo a privacidade do saldo e tornando públicos determinados detalhes da transação que os exigem / exigem. (como transações governamentais ou de câmbio)

Além disso, o Sapling permite que vários pagamentos de vários endereços de remetentes diferentes sejam recebidos por um único endereço protegido, mantendo a privacidade no blockchain. Também permite a criação eficiente de endereços de pagamento, onde todos eles têm a mesma chave de visualização completa e chave de visualização de entrada, o que minimiza a carga de digitalização do blockchain de suas transações.

Ao todo, este sistema permite um método muito mais intuitivo e transparente para o usuário de transacionar as zerocoins que permitem a privacidade, sem a necessidade de gerenciamento de cunhagem complexo que era necessário com o uso do protocolo Zerocoin.

A equipe PIVX acredita que Sapling, com anos de pesquisa e desenvolvimento colocados nele por vários desenvolvedores e criptógrafos reconhecidos, é o protocolo de privacidade mais adequado para atender às nossas necessidades de agora e no futuro.

Fase de Integração PIVX 5.0

Agora, com o PIVX, adicionando a complexidade de Proof of Stake (PoS), Cold Staking [7], rede masternode de nível dois, junto com seu sistema de governança, isso se tornará uma implementação bastante avançada; na verdade, será a primeira tentativa mundial de implementar Sapling / zk-SNARKs em um blockchain de PoS de mainnet em tempo integral.

A fase de integração inicial é para garantir que o Sapling possa ser feito para fornecer uma camada de privacidade completa para o PIVX. Como esperado, isso não envolverá apenas mudanças de backend de magnitude radical, mas também uma quantidade significativa de mudanças de GUI para a carteira Qt, bem como configurações de operação do desenvolvedor, como suas bibliotecas associadas e configuração Gitian, aumentando assim a complexidade da integração e do esforço envolvimento.

Posteriormente, a PIVX terá como objetivo implementar o novo protocolo de privacidade no domínio móvel, permitindo transações anônimas leves em movimento, simplesmente com o uso da carteira móvel que incorpora o novo protocolo de privacidade.

Além do trabalho mencionado acima, há muitas outras áreas de pesquisa que podem ser conduzidas ao longo ou depois, como garantia de masternode privada, votação de governança privada, participação privada e muito mais.

Mas isso não é tudo. A PIVX também conduzirá pesquisas adicionais em um componente criptográfico importante com o objetivo de implementar uma configuração sem confiança; conforme descrito na próxima seção.

Além de confiável

Embora seja muito cedo para ter certeza da construção exata que será usada no futuro, e enquanto os 88 participantes [8] computação multipartidária (MPC) [9] do Sapling são considerados altamente seguros em sua construção, a PIVX se esforçará para obter uma configuração menos confiável do Sapling em um futuro próximo; pós-implementação inicial.

Alguns construtos sem confiança sendo pesquisados ​​atualmente para isso são Halo [10], Spartan [11] e SuperSonic [12].

O que isso significa é que o PIVX tem como objetivo remover a confiança em uma prova criptográfica confiável que foi criada por participantes aleatórios, a fim de obter uma configuração de prova zk-SNARKs confiável, levando à resistência pós-quântica antes que se tornem um risco significativo.

Suspensão de uso do suporte Zerocoin

Desde o início do protocolo Zerocoin em PIVX em 2017, tivemos muitas versões progressivas de zerocoins (zPIV), que tinham diferentes níveis de capacidade e suporte.

zPIV v1 = início do protocolo Zerocoin.
zPIV v2 = Protocolo Zerocoin com serial de chave de pub em hash.
zPIV v3 = protocolo Zerocoin com gasto público zPIV v2.
zPIV v4 = Protocolo Zerocoin com gasto público zPIV v1 e v2 usando assinatura Schnorr.

Mas com o lançamento do 5.0, o protocolo Zerocoin será substituído por Sapling e zk-SNARKs, o que resultará na remoção do suporte para todas as versões anteriores do zPIV. Coincidentemente, a nova zerocoin que será gerada no Sapling terá a versão zPIV v5.

Devido a isso, gostaríamos de aconselhar qualquer pessoa com saldo positivo de zPIV a converter (gastar) todo o zPIV de volta para PIV usando a carteira 4.x mais recente antes do lançamento do 5.0, a fim de manter o acesso às moedas após a esperada Mudança- garfo rígido de ativação. Faremos um anúncio separado sobre isso com lembretes de acompanhamento na esperança de notificar todos os proprietários de zPIV antes do lançamento do 5.0.

Apêndice. UMA

Evolução da privacidade do PIVX

A seção a seguir apresenta como o protocolo de privacidade PIVX evoluiu desde seu início, incluindo cada uma das etapas pesquisadas e implementadas. Ao aprender o passado, podemos nos preparar para um futuro melhor.

1. Mistura de serviço de “ofuscação” — Coinjoin

No início, este projeto teve uma tentativa inicial de privacidade, privacidade por ofuscação; e foi alcançado misturando transações usando um serviço CoinJoin [13] descentralizado no topo da rede masternode de nível dois. Ao juntar as saídas de diferentes proprietários em uma única transação; o montante total a ser enviado foi dividido em vários montantes parciais de tamanhos idênticos e atribuídos a seus próprios endereços.

Essa abordagem tinha desvantagens técnicas óbvias, bem como capacidade limitada de privacidade. Mas foi um bom primeiro passo para a privacidade da transação do blockchain.

2. Primeiro protocolo à prova de conhecimento zero — Zerocoin

Após um longo período de pesquisa em 2017, a PIVX decidiu ser uma das pioneiras ao implementar uma versão customizada de um dos novos protocolos de privacidade baseados em prova de conhecimento zero para blockchains nativos que o ecossistema tinha naquela época; o protocolo Zerocoin.

Conforme proposto em 2013 por Miers et. al .; o protocolo Zerocoin habilitou a rastreabilidade do gráfico de transações e, portanto, o anonimato de origem, quebrando a ligação entre as entradas e as saídas nos dados de blockchain públicos. Usando acumuladores RSA, compromissos Pedersen e um conjunto predefinido de denominações de moedas para queimar (cunhar) e criar (gastar) novas moedas de valor exatamente equivalente.

Este protocolo bruto tinha algumas desvantagens que foram pesquisadas posteriormente e aprimoradas ao longo do tempo, como o espaço de armazenamento necessário, o tamanho do gasto grande, a limitação de quantias que ele poderia enviar e a configuração confiável com base no número 2048-RSA.

O trabalho subsequente foi conduzido pela equipe de desenvolvimento PIVX no código de serialização da mensagem zerocoin para diminuir o tamanho de gasto do zerocoin de 25 KB para 21 KB; que na época era uma melhoria significativa de 16% em relação ao tamanho original.

3. Para mobilidade — Protocolo de Nó de Luz Zerocoin

Nova pesquisa e implementação, denominada Zerocoin Light Node Protocol (ZLNP) [14], foi conduzida em 2018 pela PIVX para permitir a capacidade de cunhar e gastar zerocoin em dispositivos móveis menos potentes. Com o uso do processo de simulação de computação multipartidária no estilo round-robin para minimizar a quantidade de dados necessária para realizar o cálculo, isso pela primeira vez permitiu que as carteiras móveis executassem transações não rastreáveis ​​utilizando o protocolo zerocoin.

Neste trabalho, tornou-se evidente a necessidade de uma estrutura diferente de prova de filiação em vez das provas de acumulador RSA. A prova de associação à árvore Merkle apareceu no escopo pela primeira vez.

4. Zerocoin Pequena Assinatura de Conhecimento — À Prova de Balas

Em colaboração com os criptógrafos da UCL (na época) Mary Maller e Jonathan Bootle, a equipe PIVX projetou e implementou uma nova assinatura de conhecimento (SoK) para reduzir drasticamente os custos de comunicação dos gastos com zerocoin.

Para tanto, a prova de conhecimento dos valores secretos da moeda foi modelada como uma prova de conhecimento de uma solução para um circuito aritmético. Reformulando nosso problema dessa maneira, fomos capazes de usar o protocolo de prova de conhecimento zero não interativo de última geração, conforme apresentado na árvore Bulletproofs do PIVX GitHub [15], reduzindo o tamanho da assinatura de conhecimento em mais de 75%, resultando em uma redução de 50% no tamanho total do gasto. Assim, um gasto de zerocoin que anteriormente ocupava 21kb na cadeia tornou-se ~ 10kb após este trabalho!

NOTA: Embora totalmente funcional, o novo protocolo nunca foi integrado à carteira PIVX, pois o zerocoin foi desativado antes que essa pesquisa significativa pudesse ser devidamente revisada e implementada.

5. Zerocoin Trustless Setup
(outro trabalho realizado em colaboração com Mary Maller e Jonathan Bootle)

- Novo comprovante de adesão, adeus acumulador RSA -

Resumindo o que este protocolo faz em um alto nível; envolveu a mudança para uma prova de associação diferente escrita por Bayer e Groth (com as otimizações de Bootle) ​​[16]. Em vez de usar o acumulador RSA para a prova de associação da moeda, ele usa um argumento de conhecimento zero para avaliação polinomial. Isso significa que existe um polinômio público determinado pelas moedas, inserido no protocolo à prova de balas para mostrar a exatidão do número de série e provar a associação apenas se o polinômio for avaliado como zero.

Como à prova de balas, os parâmetros públicos para esse esquema são apenas elementos de grupos aleatórios que podem ser gerados de maneira não confiável. Baseando-se na suposição de log discreto e no modelo oráculo aleatório.

NOTA: Embora este trabalho de pesquisa tenha sido quase concluído e vários protótipos ao lado do trabalho à prova de balas tenham sido criados, ele nunca foi integrado à carteira PIVX, pois o zerocoin foi desativado antes que essa pesquisa significativa pudesse ser devidamente revisada.

Posfácio

Este documento atua como o próximo estabelecimento de marco do protocolo de privacidade PIVX. Nos próximos artigos, a equipe estará liberando mais informações sobre o Sapling, incluindo a primeira integração em nosso trabalho de protótipo de rede, um FAQ e aprofundar em possíveis objetivos futuros, como configuração sem confiança, protocolo de privacidade leve para aplicativos móveis, governança privada e sistema de masternodes, entre outras ideias incríveis.

Referências

[1] Sapling
https://z.cash/upgrade/sapling/

[2] Groth16 por Jens Groth
https://eprint.iacr.org/2016/260

[3] zk-SNARKS
https://en.wikipedia.org/wiki/Non-interactive_zero-knowledge_proof

[4] Electric Coin Company
https://electriccoin.co/

[5] Zcash
https://z.cash/

[6] Zerocoin: Dinheiro eletrônico distribuído anônimo do Bitcoin
http://zerocoin.org/media/pdf/ZerocoinOakland.pdf

[7] PIVX Cold Staking
https://github.com/PIVX-Project/PIVX/wiki/ColdStaking

[8] Power of Tau Ceremony
https://github.com/ZcashFoundation/powersoftau-attestations

[9] Protocolo MPC
https://electriccoin.co/blog/new-mpc-protocol/

[10] Halo: Composição de prova recursiva sem uma configuração confiável
https://eprint.iacr.org/2019/1021

[11] Spartan: zkSNARKs eficientes e de uso geral sem configuração confiável
https://eprint.iacr.org/2019/550

[12] SuperSonic: SNARKs transparentes da DARK Compilers
https://eprint.iacr.org/2019/1229

[13] Coinjoin
https://bitcointalk.org/?topic=279249

[14] Protocolo de Nó Leve Zerocoin (ZLNP)
https://pivx.org/wp-content/uploads/2018/11/Zerocoin_Light_Node_Protocol.pdf

[15] PIVX Bulletproofs
https://github.com/PIVX-Project/PIVX/tree/Bulletproofs

[16] Argumento de conhecimento zero para avaliação polinomial com aplicação a listas negras
http://www0.cs.ucl.ac.uk/staff/J.Groth/PolynomialZK.pdf

--

--