Pular para o conteúdo principal

A Cadeia de Provas

Os domínios são registrados em lote. O tempo limite de espera de cada lote é de aproximadamente 10 minutos. Cada lote produz uma prova. Essas provas formam uma cadeia de transições de estado desde a gênese:

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)

O old_root de cada prova deve ser igual ao new_root da prova anterior. O old_root da primeira prova deve ser igual à raiz de gênese conhecida (uma Sparse Merkle Tree vazia).

Verificando a cadeia

Um verificador verifica todo o histórico de registro em cinco etapas:

  1. Obtenha a chave de verificação do SP1 – derivada deterministicamente do binário do programa convidado
  2. Busque todas as provas da API
  3. Verifique cada prova do SP1 usando a chave de verificação
  4. Verifique a corrente -- genesis == P1.old_root, P1.new_root == P2.old_root, ..., PN.new_root == current_root
  5. Verificação pontual na cadeia – procure qualquer txid confirmado em um nó PIVX e confirme o memorando, o valor e a correspondência do bloco

Se todas as verificações forem aprovadas, todo o histórico de registro estará correto – não é necessária confiança no indexador.

Pipeline de prova

O scanner e o provador são executados 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 bloqueia a geração de provas. O daemon do provador pesquisa registros pendentes e pode ser executado em hardware separado.