Pular para o conteúdo principal

Porquê provas?

Um indexador percorre a cadeia de blocos PIVX e constrói um registo de nomes. Mas porque havia alguém de confiar nele? E se ele:

  • inventar um registo que nunca aconteceu na cadeia?
  • cobrar a taxa errada?
  • registar um nome duas vezes?
  • adulterar o estado do registo?

As provas ZK eliminam estas dúvidas. Cada prova é um certificado criptográfico de que o registo foi processado corretamente. Qualquer pessoa pode verificar a prova de forma independente.

O que cada prova verifica

O gerador de provas do PIVX usa o SP1 — uma máquina virtual de conhecimento zero RISC-V. Para cada transação com domínio, o gerador realiza as seguintes verificações dentro da zkVM:

  1. Validade do nome — 1-64 carateres, minúsculas alfanuméricas e hífenes, numa zona permitida
  2. Validade do endereço — o endereço de destino é um endereço blindado PIVX Sapling na rede certa, na forma bech32 moderna
  3. Assinatura Ed25519 — a assinatura sobre a mensagem assinada exata é válida e foi feita pela chave que a operação requer
  4. Invariantes da operação — a propriedade, o estado do preço e a ordem do nonce são coerentes com a operação em curso
  5. Proteção contra repetição — o nonce excede estritamente o nonce anterior do registo
  6. Transição de estado — a prova de Merkle reconstrói a raiz antiga, e a nova raiz decorre da aplicação exatamente dessa alteração

Se qualquer verificação falhar, a prova não pode ser gerada.

O que a prova não verifica

Aqui ser preciso importa mais do que soar impressionante:

  • O pagamento não é verificado dentro do circuito. Se uma transação pagou a taxa certa e se um BUY transferiu realmente os fundos é imposto pelo registador fora da cadeia, e é verificável por quem reproduza a cadeia com a chave de visualização publicada. Provar a posse de uma nota dentro da zkVM custaria muito mais do que custa hoje o lote inteiro, e daria uma garantia mais fraca do que a replicação já dá: um circuito vê um compromisso de nota, enquanto um indexador que reproduz vê o montante decifrado e o memo.
  • O circuito não prova que as entradas eram a cadeia verdadeira. Prova que, dado este lote, a transição cumpre as regras. Que o lote é o fluxo de comandos verdadeiro, completo e corretamente ordenado é estabelecido pela replicação — ver Confiança e privacidade.

É por isto que o PiNS deixa a fraude à vista em vez de a impedir: um lote incorreto não pode ser provado de todo, e um lote que não veio da cadeia verdadeira é contrariado por todos os indexadores independentes.

Saídas públicas

Cada prova compromete-se com 3 valores permanentemente ligados a ela:

SaídaDescrição
old_rootRaiz da árvore de Merkle antes deste registo
new_rootRaiz da árvore de Merkle depois deste registo
end_block_heightO último bloco PIVX do lote de registos

O end_block_height fixa a prova a um bloco PIVX concreto, como um ponto de controlo. Qualquer pessoa pode percorrer a cadeia até essa altura com a chave de visualização publicada e confirmar que os memos e os montantes correspondem ao que o lote afirmava.