Skip to main content

Why Proofs?

An indexer scans the PIVX blockchain and builds a registry of names. But why should anyone trust it? What if it:

  • Fabricates a registration that never happened on-chain?
  • Charges the wrong fee?
  • Registers a name twice?
  • Tampers with the registry state?

ZK proofs eliminate these questions. Each proof is a cryptographic certificate that the registration was processed correctly. Anyone can verify the proof independently.

What Each Proof Verifies

The PIVX Prover uses SP1 - a RISC-V zero-knowledge virtual machine. For every transaction with domain, the prover performs the following checks inside the zkVM:

  1. Name validity -- 1-64 characters, lowercase alphanumeric + hyphens
  2. Fee sufficiency -- the transaction paid enough PIVX for the name length
  3. Protocol command integrity -- the transaction paid enough PIVX for the name length
  4. Ed25519 signature -- the signature over memo command is valid
  5. Merkle tree insertion -- the name didn't already exist, and the new state root is correct

If any check fails, the proof cannot be generated.

Public Outputs

Each proof commits 3 values that are permanently bound to it:

OutputDescription
old_rootMerkle tree root before this registration
new_rootMerkle tree root after this registration
end_block_heightThe latest PIVX block of the registration batch

The block_height pin the proof to a specific PIVX block (like a checkpoint). Anyone can look up transactions on a PIVX node and confirm the memo and value match.