Pular para o conteúdo principal

A cadeia de provas

Os domínios são registados em lote. Cada lote espera cerca de 10 minutos. Cada lote produz uma prova. Essas provas formam uma cadeia de transições de estado desde a origem:

genesis_root (empty tree -- known constant)
| +-- "richard.pivx" registered at block 100,
| +-- "john.pivx" registered at block 110,
| ... (could be more registration/update commands)
| ! Proof 1 is generated
| old_root = genesis_root --> new_root_1
| +-- "richard.pivx" put his name on marketplace at block 200,
| +-- "sam.pivx" registered at block 250,
| ... (could be more registration/update commands)
| ! Proof 2 is generated
| old_root = new_root_1 --> new_root_2 (= current root)

A old_root de cada prova tem de ser igual à new_root da prova anterior. A old_root da primeira prova tem de ser igual à raiz de origem conhecida (uma árvore de Merkle esparsa vazia).

Verificar a cadeia

Um verificador confirma todo o histórico de registos em cinco passos:

  1. Obter a chave de verificação do SP1 — derivada de forma determinista do binário do programa convidado
  2. Descarregar todas as provas a partir da API
  3. Verificar cada prova SP1 com essa chave de verificação
  4. Verificar a cadeiagenesis == P1.old_root, P1.new_root == P2.old_root, ..., PN.new_root == current_root
  5. Verificação por amostragem na cadeia — procurar qualquer txid comprometido num nó PIVX e confirmar que o memo, o valor e o bloco correspondem

Se todas as verificações passarem, todo o histórico de registos está correto — não é preciso confiar no indexador.

O pipeline de provas

O scanner e o gerador de provas funcionam de forma independente:

PIVX Blockchain
|
PiNS Registrar Scanner (validates, captures SMT state)
|
Database (status: "pending")
|
SP1 Prover (generates ZK proof, verifies it)
|
Database (status: "proved")
|
New checkpoint published
|
Indexer syncs to the checkpoint
|
API Server (GET /v1.0/resolve/{name})

O scanner nunca fica bloqueado à espera da geração de provas. O daemon gerador consulta por sua conta os registos pendentes e pode correr em hardware separado.