Pular para o conteúdo principal

Garantias de segurança

Esta página diz com precisão o que o PiNS garante e o que não garante. Ser exato é mais útil do que ser tranquilizador: aquilo que é sólido é-o mesmo, e saber onde estão os limites é justamente o que permite apoiar-se neles.

A propriedade: a fraude fica à vista

O PiNS é evidente perante a fraude (fraud-evident). Qualquer violação das regras ou é impossível de provar à partida, ou é publicamente visível para quem olhar — e os dados necessários para olhar estão publicados, pelo que olhar não exige autorização nem a colaboração do operador.

Vale a pena perceber a distinção entre as duas metades. A propriedade e as transições de estado são impostas por criptografia e simplesmente não podem ser violadas. Tudo o resto é estabelecido por replicação independente, em que um desvio é contrariado por todas as réplicas ao mesmo tempo. Ambas são sólidas; são-no de maneiras diferentes, e esta página diz explicitamente qual se aplica onde.

O que não pode acontecer de todo

Isto é imposto pela matemática. Nenhuma ação do operador o contorna.

  • Um domínio não pode ser retirado ao seu titular. Qualquer alteração de estado exige uma assinatura Ed25519 com a chave que a operação requer, verificada dentro do circuito com verificação estrita. O registador não tem a sua chave e não a consegue forjar.
  • Um nome não pode ser registado duas vezes. REG exige uma prova de não inclusão, e um nome que já existe não a consegue produzir.
  • Não pode haver uma venda a um preço que o vendedor não assinou. BUY exige que o preço pago seja igual ao preço listado, que fica fixado na árvore pelo LST assinado do vendedor.
  • Não se pode ancorar uma raiz de estado sem uma prova válida. O contrato âncora na BNB Smart Chain verifica cada prova contra a programVkey antes de aceitar uma raiz. Uma transição inválida simplesmente não pode ser provada.
  • O circuito não pode ser trocado em silêncio. A programVkey compromete-se com o programa compilado exato. Alterar uma linha altera a chave, e alterar a chave na cadeia é uma ação a duas partes, que exige o sequenciador e o proprietário.

O que é verificado por observação e não pelo circuito

Algumas propriedades não são impostas dentro da prova, sendo antes estabelecidas por quem reproduza os dados públicos. É um mecanismo diferente, não um resultado mais fraco: são verificáveis por qualquer observador, sem autorização, e um desvio é visível para todos ao mesmo tempo, em vez de apenas para alguns privilegiados.

  • Inclusão e ordem dos comandos. É o registador que monta os lotes, portanto é ele que coloca os comandos por ordem. Como o endereço de protocolo e a sua chave de visualização estão publicados, cada indexador independente deriva a mesma ordem a partir da própria cadeia e calcula a mesma raiz. Um comando omitido ou reordenado produz uma raiz que todas as réplicas contrariam, de imediato e sem que ninguém precise de a procurar.
  • O end_block_height que um lote declara. É transportado para as saídas públicas em vez de ser restringido dentro do circuito, porque a replicação já o estabelece: um indexador que reproduza a cadeia sabe que bloco o lote cobria, pelo que uma altura errada é apanhada da mesma forma que qualquer outro desvio.
  • Os destinos dos levantamentos. Montantes de pagamento, comissões e obrigações são totalmente auditáveis a partir da chave de visualização publicada — cada pagamento traz um memo que nomeia a conta que liquida, pelo que qualquer pessoa pode reconstruir o livro de saldos. O que não consta do registo público é qual o endereço de destino que o utilizador indicou, já que esse pedido é feito no site. Essa parte é confirmada diretamente pelo destinatário, que guarda o pedido que assinou. Ver Confiança e privacidade.

Porque é a replicação a verdadeira garantia

A prova ZK responde: dadas estas entradas, as regras foram cumpridas?

A replicação responde: estas eram as entradas verdadeiras?

Na prática, a segunda pergunta é a que mais importa, e não é respondida pela criptografia — é respondida pelo facto de o registador publicar o seu endereço de protocolo e a sua chave de visualização, para que qualquer pessoa possa decifrar todo o histórico de comandos desde a origem, reproduzi-lo com o indexador de código aberto e comparar raízes. Um registador que se desvie produz uma raiz que todas as réplicas independentes contrariam.

É por isso que a chave de visualização ser pública não é um pormenor. É o mecanismo.

Um rollup soberano, com precisão

Estruturalmente, o PiNS é um ZK-rollup:

  • Disponibilidade de dados — cada comando vive no memo de uma transação PIVX, com o pagamento na mesma nota blindada, pelo que intenção e pagamento ficam ligados de forma atómica.
  • Execução — fora da cadeia, na zkVM do SP1.
  • Liquidação — a BNB Smart Chain guarda a raiz ancorada e verifica as provas em segundos.

O que difere de um rollup típico é que a camada de disponibilidade de dados é uma cadeia de privacidade, pelo que «qualquer pessoa pode ler as entradas» exige que a chave de visualização esteja publicada — e está.

Verificar isto por si próprio

Nada do que está acima tem de ser aceite por confiança:

  • Reproduza a programVkey compilando o gerador de provas e comparando com o contrato.
  • Reproduza a cadeia com a chave de visualização publicada no seu próprio indexador e compare as raízes.
  • Verifique qualquer resolução individual com uma prova de Merkle mais uma verificação da raiz na cadeia — ver Verificar provas.