PIVX Zerocoin (zPIV) Technical Paper

Revisão 0.9

Última atualização no dia 16 de outubro de 2017

VISÃO GERAL PIVX

A PIVX é uma moeda criptografada centrada na comunidade Bitcoin com foco na descentralização, privacidade e uso no mundo real. Utiliza um protocolo baseada na Prova de Participação (Proof of Stake) eficiente em energia e uma rede de Masternode de segundo nível para uma governança baseada na comunidade, juntamente com um sistema de tesouraria de autofinanciamento baseado em blocos, garantindo sua sustentabilidade.

A PIVX está continuamente se esforçando para alcançar um melhor sistema de governança, transações privadas instantâneas e fungibilidade para permanecer na próxima geração de cryptocurrency.

Em termos leigos, o PIVX é basicamente uma forma de dinheiro digital online que pode ser facilmente transferido em todo o mundo em um piscar de olhos com taxas de transação quase inexistentes. Você pode converter seu dinheiro em PIVX em várias bolsas e apenas por mante-lo, você pode ganhar recompensas semelhantes aos juros, troca em troca para comprar outras moedas digitais ou comprar bens ou serviços on-line e off-line onde sao aceitos.

Não é de propriedade ou governado por qualquer pessoa ou organização e sua rede é garantida por milhares de nós em todo o mundo e por seus usuários.

O objetivo do PIVX é ser uma moeda digital avançada que seja rápida, segura, descentralizada e privada.

PRIVACIDADE DE TRANSACÇÕES CRYPTOCURRENCY

As moedas criptográficas mais comuns, como a Bitcoin, possuem um sistema bem conhecido de contas-públicas onde todas as transações são visíveis e rastreáveis através do seu explorador de blocos. Isso resulta em qualquer um ter acesso a todas as transações e saldos associados e mais importante que isso,  também tem o acesso aos seus endereços associados. Isso significa que o histórico de seu proprietário de endereço anterior agora está visível através do seu próprio endereço, uma vez que as moedas atravessaram a cadeia de blocos e acabam em sua carteira.

Um endereço pode parecer que é totalmente anônimo mas se você efetuou uma transação com um endereço que é gerado pelas trocas e / ou outros serviços comerciais, você vinculou essencialmente seu endereço anônimo com um endereço que pode levar a sua identidade.

Na maioria dos cenários, tal transparência pode não ser um problema. Mas isso pode se tornar um problema sério se a moeda que você obteve já foi associada a uma história indesejável ou se seu endereço estava sendo alvo de ladrões em potencial.

Por exemplo, a moeda que você recebeu era de um endereço de propriedade de uma pessoa ou organização que conduzia atividades ilegais e estava sendo monitorado pelas autoridades governamentais. Isso agora significa que você pode ser questionado em seu relacionamento com o proprietário anterior dessas moedas que você possui, mesmo que você as tenha legitimamente e sem conhecimento. Isso também pode significar que as moedas com essa história podem ser consideradas menos valiosas do que essas moedas sem resultar em fungibilidade reduzida.

NOSSA SOLUÇÃO = PROTOCOLO DE ZEROCOIN (zPIV)

Para superar este problema, a partir da atualização da carteira do núcleo v3.0.0 lançada em 7 de outubro de 2017, a PIVX implementou um conhecido protocolo de alta verificação chamado Zerocoin com muitas melhorias personalizadas, permitindo o anonimato das transações no bloco de uma maneira de desvinculação.

Chamamos isso de zPIV, onde PIV é uma unidade de prefixo PIVX e z é para Zerocoin.

O que o zPIV fornece é um serviço de mistura de moeda do protocolo usando certas provas de conhecimento para cortar o vínculo entre o remetente e o receptor com 100% de anonimato e desentendimento. Isso significa que cada moeda que é enviada usando zPIV é agora 100% fungível, pois não possui nenhum histórico determinável.

O uso de zPIV também significa que seu equilíbrio pode ser mascarado para evitar ser alvo de potenciais ladrões. Esta é uma característica muito singular que quase nenhuma outra cryptocurrency atualmente no mercado possui.

Os acumuladores de PIVX zPIV são criptografados usando as chaves geradas por desafio RSA-2048 [1] que negam a necessidade de uma configuração confiável do desenvolvedor e significa que nenhum indivíduo conhece os fatores. Isso significa que a privacidade de todos é assegurada através do uso do zPIV.

FATOR UNICO

A partir da escrita (SETEMBRO DE 2017), a PIVX é a única Moeda Criptografada (POS) que implementou o conjunto completo de ideologias e práticas do protocolo Zerocoin. Embora com base no repositório público original da libzerocoin que foi criado por criptógrafos acadêmicos, a maioria do código PIVX zPIV é personalizado, tornando o zPIV muito único também.

Original White Paper Zerocoin: https://isi.jhu.edu/~mgreen/ZerocoinOakland.pdf

Ao contrário da maioria dos cryptocurrencies que utilizam atualmente um protocolo baseado em zerocontos, o PIVX zPIV utiliza um sistema de controle de acumulação de acumuladores muito eficiente que permite que o processo de gasto do zPiv utilize pontos de controle que contenha todas as moedas que foram feitas antes da mina zPiv sendo gasto quantidade selecionada pelo usuário de mints zPiv além do ponto de controle. Isso permite um grande conjunto de moedas no acumulador, embora ainda tenha requisitos de computação muito menores. A implementação do zPiv da PIVX produz um consumo mínimo de recursos e torna as transações zPIV uma das transferências privadas mais rápidas no mercado hoje.

VANTAGENS TÉCNICAS PIVX zPIV

  1. Transação menores, em uma média de 25% em relação a qualquer outra implementação atual em um ambiente de produção (otimização adicional nas obras)
  2. Verificação rápida e desempenho de sincronização da rede
  3. Desvio direto do zPIV para um endereço PIVX
  4. Múltiplos valores de denominação Zerocoin são possíveis em uma única transação
  5. Capacidade de gastar quantidades exatas e emitir a alteração restante para um endereço PIVX ou mais zPiv.

BENEFÍCIOS NA VIDA REAL DO USO da zPIV

  1. O zPIV pode esconder seu saldo de moedas de curiosos, protegendo você a ser alvo de transações duvidosas.
  2. Portanto, seu saldo zPIV não está vinculado a nenhum endereço específico.
  3. O zPIV pode ocultar o histórico de transações das moedas que estão sendo enviadas.
  4. Os endereços de origem e destino não são visíveis tornando-o privado, seguro e fungível.
  5. As transações anônimas do zPIV são muito rápidas.
  6. Demora apenas 0,5 segundos para fazer a cunhagem da moeda e 2,5 segundos para gastar o zPIV.
  7. A conversão automática para o zPIV é ativada por padrão mas a opção de transferência transparente ainda está disponível.
  8. Isso significa que você sempre pode enviar uma transação totalmente transparente quando necessário.

COMO A ANÓNIMIDADE É ALCANÇADA

1- Mint (converter) seu PIV em denominações zPIV. (Wallet auto-mints alguns por padrão)

2- Gaste (envie) o seu zPIV como PIV para qualquer endereço de carteira PIVX interno ou externo

Essencialmente, as piscinas do protocolo zerocoin (assim combina) com todo o zPIV que as você converta (cunhe) do seu saldo PIV em denominações e as usam para enviar quando um gasto é iniciado. Tenha em mente que o “pooling” não significa que o zPIV de todos estao armazenado em um local centralizado. Em vez disso, o livro público (cadeia de blocos descentralizada) acompanha a quantidade de zPIVs criados.

Quando você deseja enviar (gasto) algum valor de zPIV para um endereço PIVX, sua carteira envia uma prova de conhecimento zero (zero-knowledge proof) para o bloco que permite que o zPIV seja convertido de volta para PIV e enviado para o endereço de destino em uma única etapa.

Uma vez que os gastos do zPiv criam novas moedas o usuario pode fornecer certas provas de conhecimento de que ela possui moedas na pasta acumulada (acumulador), o histórico de transações da moeda de seus endereços previamente associados torna-se desvinculado e assim resulta em uma transação intratável.

Finalmente, uma analogia simples. Pense no zPIV como fixas de cassino. Você dá sua nota de 100 dólares (ou seja, PIV) para o caixa e recebe fichas de 1x $ 10, 2x $ 20, 1x $ 50 dólares (ou seja, zPIV). Isso significa que você já não possui essa nota de 100 dólares específica que você trocou, em vez disso, tem «prova» de que você ainda possui US $ 100. Agora, quando você precisa de 50 dólares de volta como fiat (PIV), você dá suas fichas (zPIV) de volta ao caixa e o caixa entrega uma nova conta de 50 dólares sem circulante para um destinatário de sua escolha.

zPIV Minting & Processo de gasto

Neste exemplo, Kirby quer enviar PIV para a Heidi usando o protocolo Zerocoin para anonimizar a transação.

Processo de cunhagem passo a passo.

  1. Kirby inicia um pedido para cunhar 960 zPIV.
  2. O protocolo Zerocoin converte o 960 PIV da Kirby para o valor equivalente de zPIV, usando as maiores denominações zPIV disponíveis.
    1. Nos bastidores, Kirby recebeu uma mensagem secreta que demonstra ser a propriedade desta cunhagem (um número de série exclusivo que é usado pelo protocolo Zerocoin para rastrear a propriedade de valores específicos de denominação de zPIV).
  3. O saldo da Kirby é atualizado de acordo.
    1. Com uma diminuição de 960 no PIV e um aumento de 960 no zPIV.

Kirby também vê que o 960 zPIV é composto pelas seguintes denominações que foram adicionadas: 1x 500 zPIV, 4x 100 zPIV, 1x 50 zPIV, 1x 10 zPIV.

Passo a passo Processo de despesa

 

  1. Kirby inicia o envio do zPIV 960 para o endereço PIVX da Heidi.
  2. O protocolo Zerocoin recebe e valida a mensagem secreta da Kirby que comprova a propriedade. Uma vez utilizado, o saldo original cunhado não pode ser gasto novamente.
  3. O protocolo Zerocoin cria 960 PIV no endereço PIVX da Heidi.
    1. Heidi recebe 960 PIV de um remetente anônimo.
    2. O saldo da Kirby é atualizado de acordo — com uma diminuição de 960 no zPIV.

Denominações & Explicação

Para melhorar a eficiência de transações mantendo um alto nível de complexidade, a PIVX implementou um conjunto de denominadores comuns baseados em números inteiros para os montantes de moeda (PIV) que se convertem em um conjunto de moedas como zPIV. (bem como fichas de casino acima)

As denominações utilizadas pelo zPIV são: 1, 5, 10, 50, 100, 500, 1000 e 5000. Usar este conjunto de denominações fornece um bom equilíbrio de simplicidade, usabilidade e segurança. A melhor maneira de reduzir a rastreabilidade só usaria 1 denominação (ou seja, 1 zPIV), no entanto, não é muito prático fazer isso, pois grandes transações exigiriam uma enorme quantidade de moedas.

O uso de um conjunto muito grande poderia aumentar a rastreabilidade ha um nível inseguro, portanto, foi estabelecido em um conjunto de 8 possíveis denominações de moedas. Este conjunto é visto como um ponto «doce», pois não inclui moedas que são consideradas muito baixas ou muito altas em uma denominação. À medida que o valor de PIV muda, é concebível que estendermos ou mudemos este conjunto para atender às necessidades dos usuários.

Quando você gasta seu zPIV, você simplesmente terá uma prova de que você tem uma moeda dessa denominação, que inclui outras mentações zPIV dessa denominação.

Isso significa que todo o reembolso do zPIV será feito em números inteiros (com a alteração sendo emitida para valores decimais) tornando assim quase impossível combinar antes do zPIV e depois do valor do zPIV de 2 endereços diferentes, enquanto há muitos outros montantes idênticos de zPIV para PIV sendo feito.

 

Lógica de denominação

Quando minting (convertendo) ou gastando (enviando) zPIV, cada algoritmo determinará automaticamente as denominações usadas.

Ao gastar (enviar) zPIV para um endereço PIVX, o algoritmo seguinte determinará automaticamente as denominações usadas a partir do usuário

1).Se você tiver o valor exato, comece com a maior denominação possível e vá até o total

2) Caso contrário: Minimize Passes (a) encontre a próxima denominação mais alta do que o valor gasto (se possível) e use esse valor se disponível, (b) se não estiver disponível, comece com as denominações maiores e vá para baixo até chegar a um valor acima do que é necessário

3) Ou: Minimizar a mudança. Se não for exato, tente encontrar o valor acima do que é necessário, que minimize quantas moedas você recebe em mudança

Auto Minting (cunhagem automática)

A privacidade do zPIV torna-se mais eficaz quando há mais de cada denominação cunhada vem de uma quantidade de fontes maiores. Portanto, para garantir sua eficácia, a carteira PIVX possui um recurso para auto mint (converter) uma quantidade configurável de PIV do saldo da carteira em zPIV sem a necessidade de converter manualmente.

O Automint é iniciado quando a carteira / daemon é iniciada, a carteira é desbloqueada (totalmente ou somente por uma parte de participação) e a cadeia de blocos é sincronizada. Isso significa que, se sua carteira estiver criptografada e bloqueada, o recurso de auto-mint não se envolverá. Quando a carteira é desbloqueada, ela ainda não tocará qualquer UTXO bloqueado, como aqueles que são usados como garantia para masternodes.

— percentual padrão: 10%. Pode ser alterado via GUI ou através da opção de linha de comando `-zeromintpercentage = <n>` ou pivx.conf `zeromintpercentage = <n>` não deve ser inferior a 10%.

— estado padrão: ativado. Pode ser desativado (por exemplo, para trocas) através da opção de linha de comando `-enablezeromint = 0` ou pivx.conf` enablezeromint = 0`

O usuário agora pode configurar uma denominação preferida para o Automint via UI, a opção de linha de comando `-preferredDenom = <n>` ou pivx.conf `preferredDenom = <n>` <n> é uma das denominações disponíveis `1/5 / 10/50/100/500/1000 / 5000` ou `0` (significa nenhuma preferência e deixar a Automint fazer o que quiser).

Se não houver moedas suficientes disponíveis para a denominação preferida, o Automint espera até encontrar suficientes moedas disponíveis.

O que cada novo bloco faz:

Verifique a quantidade de moedas disponíveis.

1- Isso exclui moedas imaturas e moedas trancadas (por exemplo, de masternodes)

2- Verifique quanto Zerocoin / zPIV está disponível

3- Verifique se a porcentagem está abaixo da porcentagem de destino

Se a porcentagem for inferior à porcentagem de destino, ele ira fazer:

1-Calcular quantos PIV precisam ser convertidos em zPIV, p.ex. 2015

2-Usar a próxima denominação menor (aqui 1000 PIV) e mints (cunhagem) 1000 zPIV

3- Repetira o processo até que o zPIV seja reduzido.

No exemplo acima, o primeiro bloco iria disparar 1000 zPIV, o seguinte a mesma quantidade, ou seja, 1000 zPIV, o terceiro 10 zPIV e o quarto 5 zPIV (supondo que nenhum PIV novo irá alterar a quantidade base de PIV disponível).

A razão para usar a próxima denominação menor e usar apenas uma denominação por bloco é o desempenho, as denominações exatas não precisam ser divididas em denominações exatas, obviamente e uma única cunhagem pode ser feita em tempo razoável.

Exceção: se uma grande quantidade de PIV precisa ser cunhada, usamos NÃO para a nossa maior denominação de 5000 PIV, mas 6666 PIV para ter distribuições mais uniformes de denominações disponíveis (6666 = 5000 + 1000 + 500 + 100 + 50 + 10 + 5 + 1, que são nossas 8 denominações disponíveis).

zPIV Automint Process (processo de auto-cunhagem)

(com base nas configurações padrão)

    1. Kirby, antes do lançamento do Protocolo Zerocoin, tem um saldo de 17.900 PIV. Ele possui um masternode, então 10.000 PIV de seu equilíbrio é mantido no endereço dedicado do masternode e bloqueado como garantia. Kirby não usou o Controle de Moedas para bloquear os restantes 7.900 PIV.
    2. O protocolo Zerocoin e implementado.
    3. O protocolo Zerocoin processa cada endereço individualmente da seguinte maneira:
      1. Determine se as moedas estão trancadas.
      2. Se as moedas não estiverem trancadas, converta 10% de PIV para zPIV.
      3. Se as moedas estão trancadas, não faça nada.
    4. Kirby vê que seu saldo diminuiu em 790 PIV, o que equivale a 10% de suas moedas que não estão trancadas.
    5. Kirby também vê que seu saldo aumentou em 790 zPIV. Como ele não especificou nenhuma preferência de denominação zPIV, ele agora possui as seguintes denominações disponíveis para gastar:
    • 1x 500 zPIV
    • 2x 100 zPIV
    • 1x 50 zPIV
    • 4x 10 zPIV

    Nível de segurança nos gastos

    Ao gastar denominações zPIV, um usuário é solicitado a inserir um nível de segurança escolhendo de 1-100. De forma indireta, o parâmetro do nível de segurança permite ao usuário escolher quantas moedas serão ofuscadas em sua transação.

    Um nível de segurança 1 por exemplo, levaria todas as moedas cunhadas na cadeia de blocos antes de sua moeda que foi (minted) ser adicionada à cadeia de blocos e em seguida, ela adicionaria as moedas que foram cunhadas nos próximos 10 blocos. Um nível de segurança 2, seguiria o mesmo processo, exceto adicionar os próximos 20 blocos das moedas (minted). Um nível de segurança 100, adicionaria a quantidade máxima de moedas que foram (minted) até o final da cadeia de blocos.

    Quanto maior o nível de segurança, mais computação e tempo seria requerido. Embora leve mais tempo, recomenda-se um nível 100 para transações que precisam de máximo anonimato.

    Administrando as Mudança

    Como o zPIV é composto de denominações fixas, haverá momentos em que o valor necessário para gastar não poderá ser constituído por denominações existentes. Por exemplo, se você tiver uma única denominação de 1000 ZPIV porém deseja enviar 985 PIV para um endereço, haverá uma diferença de 15 PIV que será recebida de volta como mudança. Essa alteração pode comprometer a privacidade da transação, pois pode retornar ao seu endereço existente se você misturar sua alteração de forma equivocada com seus outros endereços PIVX.

    Para evitar isso, existem 2 métodos que podem ser usados. A primeira opção é o uso do recurso interno que converte automaticamente a alteração de volta para o zPIV. Isso gastará o zPIV na quantidade requerida de PIV para o endereço do destinatário, fazendo depois a mineração restante de PIV de volta para o zPIV. Este é o método mais conveniente. No entanto, no montante da mudança que não é conversível em uma denominação (a menor denominação disponível é 1) será convertido em uma taxa.

    A segunda opção é emitir uma alteração para um endereço PIVX padrão, o que leva você a lidar com a segregação dessa Piv no seu saldo Piv no dia a dia. Esta opção pode levar a erros e não é recomendável se o anonimato for importante para a transação.

    integridade de dados zPIV

    Toda denominação zPIV que seja cunhada é associada a um número de série exclusivo que é armazenado no wallet.dat e não na cadeia de blocos. Isso significa que quando uma nova denominação zPIV é cunhada, o wallet.dat deve ser copiado do backup, pois o backup anterior não terá os números de série das denominações zPIV recém-cunhadas.

    O número de série e outros dados essenciais do zPIV estão comprometidos com o banco de dados (wallet.dat) antes que a transação seja concluída e transmitida para a rede. Isso minimiza o risco de perder suas denominações zPIV recém-cunhadas durante um evento inesperado durante a cunhagem do zPIV, como falhas de PC ou problemas de conectividade com a internet.

    Devido ao seu design de banco de dados local, é imperativo que a sua carteira seja copiada após cada cunhagem de zPIV para garantir que os números de série da sua denominação estejam atualizados.

    Especificações técnicas (v1.0)

    Principais recursos: sistema de controle personalizado do acumulador

    Criptografia do acumulador: RSA-2048

    Denominadores de zPIV: 1, 5, 10, 50, 100, 500, 1000, 5000

    Horário da hortelã:> = 0.5 segundos

    Passe o tempo:> = 2,5 segundos

    Limite de despesa máximo máximo: 35,000 PIV

    Limite máximo máximo de contagem de gastos individuais: 7

    Tamanho do bloco: 2 MB (foi 1 MB antes da carteira v3.0.0 zPIV)

    Taxas (mint): 0,01 PIV por denominação ZPIV cunhada.

    Taxas (gastos): Nenhuma taxa para gastar o zPIV de volta ao PIV.

    Contagem mínima de confirmação de PIV necessária para mint zPIV: 6

    Contagem de confirmação mínima de zPIV necessária antes de gastar: 20

    Requisitos adicionais antes do zPiv pode ser gasto: 3 mints adicionados ao acumulador depois que o seu é adicionado.

    Autores

    Escrito por: jakiman, 4ml

    Entrada técnica por: spock, presstab, fuzzbawls, mrs-x

    REFERÊNCIAS

    [1] https://en.wikipedia.org/wiki/RSA-2048

 

FAQ

1. So is zPIV a new coin? Is this effectively a coin swap?

No. zPIV is not a new coin. It is a protocol-level pooling of existing PIV using zero-knowledge proofs.

2. Will I lose or affect my coins?

No. You will not lose your coins whatsoever (except for any fees associated with minting). However, as part of the zPIV pooling using everyone’s wallet to increase its complexity, it will convert 10% of your PIV into zPIV within your own wallet. You are free to spend that zPIV back to your PIV address to keep it in PIV if desired. No. You will not lose your coins whatsoever. However, as part of the zPIV pooling using everyone’s wallet to increase its complexity, it will convert 10% of your PIV into zPIV within your own wallet. You are free to spend that zPIV back to your PIV address to keep it in PIV if desired.

3. How does it work with exchanges such as Bittrex?

As zPIV is sent only as PIV when sending to an address, there is zero incompatibility with any existing exchanges. zPIV is used within your own desktop wallet only to increase transaction privacy. The actual coin transfers and PIV balance will always be under your control.

4. Can I stake my zPIV balance?

Unfortunately, zPIV staking is not available currently but it is under consideration for future revisions.

5. Do I have to use zPIV?

No. You can use your PIV balance and transfers just like now without using zPIV.

6. Why are zPIV minted in different denominations?

Denominations are used to help keep things more anonymous. Imagine if you created 6543.123456 zerocoins and then soon after someone else received 6543.123456 PIV. It’s very likely that you are the one paying the amount. By using a limited number of zerocoin denominations (currently 8), you’ll never see amounts like that and thus less likely be identified. For maximum anonymity, only 1 zerocoin denomination would be used — say equivalent to 1 PIV for example. However, that would make transactions very difficult since you’d have to pack up 20 separate 1 zPIV codes into a transaction if you wanted to pay 20 zPIV, versus simply using 2 codes of 10 zPIV denominations. As the amounts get larger it becomes even more useful to use larger denominations. It is similar to buying a new car using $1 bills — which would be pretty crazy for everyone involved.

 

For the best anonymity it is better to have a number of zerocoins at each of the denominations handy and ready for spends. For the above example (in our case rounded up to integer number of zPIVs), it would be better to Mint something like 7000 zPIV (i.e. 1 5000 zPIV and 2 1000 zPIVs) so that you could later pay out 6543 to someone, rather than minting exactly that amount.  That way it is much less likely that someone could link the transactions. This is also while it is important to create a large pool of denominations both overall and at least some spread for each user ahead of any actual transactions.

7. Are there any fees for using zPIV?

Yes and No. It costs 0.01 piv per minted denomination but is free to spend zPIV (convert/send zPIV back to PIV address)

 

E.g. Converting 7 PIV into 7 zPIV will involve minting 3 denominations of 1,1,5 zPIV. So this will cost 0.03 PIV in fees.

8. Do the developers have the private key to decrypt zPIV transactions?

No. RSA-2048 challenge was used to setup the encryption so no individual knows the factors.

9. Whenever I get new stake rewards, my wallet initiates the auto-mint and mints some extra zPIV coins. Why is this so & can it be disabled?

This is due to the auto mint algorithm detecting that your zPIV balance is below 10% as a result of the extra stake reward. You can prevent dust auto-minting by modifying the `Preferred zPIV Denomination` in `Options`. When you change this to a larger denomination amount, Auto-mint will only mint when your wallet balance increases enough to be able to satisfy the minimum denomination value.