Fluxo de trabalho
O PIVX Naming Service (PiNS) permite aos usuários registrar, atualizar, listar e transferir nomes de domínio legíveis por humanos (como myname.pivx) e mapeá-los com segurança para endereços PIVX shielded (Sapling).
Como PIVX é um blockchain baseado em UTXO sem contratos inteligentes de uso geral, ele não pode executar nativamente um sistema de banco de dados complexo como um registro de domínio. Para resolver isso, o PiNS usa uma Arquitetura estilo Rollup que executa operações fora da cadeia, armazena dados em PIVX e ancora a segurança no Arbitrum.
O sistema é alimentado por cinco componentes interligados:
1. PIVX Blockchain: a camada de disponibilidade de dados
Cada ação que um usuário realiza - registrar um nome (REG), atualizar um endereço (UPD), transferir propriedade (CHG), listar no mercado (LST), cancelar a listagem (ULT) ou comprar (BUY) - começa como uma transação nativa PIVX. A transação contém um comando de texto estruturado no campo do memorando de transação (por exemplo, PiNS:1:REG:domain:address:pubkey:nonce:signature).
- A cadeia PIVX é a fonte da verdade. Ela armazena permanentemente todos os comandos do domínio. Nenhuma mudança de estado pode acontecer sem uma transação PIVX registrada.
2. O nó do registrador: o sequenciador
Um nó registrador automatizado verifica o blockchain PIVX. Ele lê os comandos do domínio, verifica se o usuário pagou a taxa de transação correta e coloca as operações na fila. A cada 10 minutos, o registrador agrupa essas operações em um único Lote.
3. SP1 zkVM: O mecanismo de conhecimento zero (por Sucinto)
O lote de transações é enviado para a Máquina Virtual de Conhecimento Zero SP1 (zkVM). O zkVM executa um programa convidado Rust especializado que atua como um árbitro de protocolo estrito. O provador verifica cada transação no lote:
- As assinaturas são válidas e assinadas pelos verdadeiros proprietários do domínio?
- Os nonces estão aumentando estritamente para evitar ataques de repetição?
- Os prefixos de domínio estão formatados corretamente?
- Uma transação
BUYpaga o preço exato especificado na transaçãoLST? - O
REG0__ faz a transição corretamente para oREG1__ usando provas matemáticas de Merkle?
Se todas as regras forem atendidas, o zkVM gera uma prova criptográfica ZK-SNARK (usando Groth16). Esta prova é um pequeno certificado que declara matematicamente: "Começando com a raiz de estado A, após aplicar este lote válido de transações, a nova raiz de estado é B."
Cada versão compilada deste programa convidado produz um identificador criptográfico exclusivo chamado Verification Key (vkey). O REG2__ é um hash de 32 bytes da própria estrutura do programa convidado compilado. Mesmo que uma única linha do código de verificação seja modificada, o programa será compilado em um REG3__ completamente diferente.
4. Contrato Inteligente de Arbitragem: A Âncora
A prova ZK gerada e suas entradas públicas são enviadas para o contrato inteligente PiNSAnchor no Arbitrum. O contrato atua como porta de liquidação.
- A ligação criptográfica: Dentro do contrato inteligente, o
REG4__ (o hash esperado de 32 bytes do programa convidado) é armazenado na cadeia. Quando uma prova é enviada, o contrato encaminha a prova e oREG5__ para o Succinct SP1 Verifier Gateway. - Validação Key-Lock: O gateway de verificação só aprovará a prova se ela tiver sido gerada pelo programa convidado exato correspondente ao
REG6__ registrado. - Se a prova for válida e verificada em relação ao
REG7__ registrado, o contrato atualiza a raiz estatal oficial e globalmente aceita paraREG8__ e a salva em seu histórico. - Se uma única regra foi violada ou se a prova foi gerada usando um programa convidado modificado (que produziria um
REG9__ diferente), o contrato rejeita a transação, evitando transições de estado não autorizadas.
5. Indexadores Distribuídos: Os Resolvedores
Qualquer um pode executar um Nó Indexador independente. Os indexadores verificam o blockchain PIVX em busca de transações de domínio e verificam o contrato Arbitrum em busca de pontos de verificação de raiz verificados. Eles aplicam as transações localmente, calculam sua própria Árvore Merkle e verificam se sua raiz local corresponde ao ponto de verificação do Arbitrum.
- Isso garante que todos os indexadores, não importa onde sejam executados, sempre resolvam domínios para exatamente o mesmo endereço de destino (mantendo um único estado unificado nas extremidades distribuídas).