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:
- Name validity -- 1-64 characters, lowercase alphanumeric + hyphens
- Fee sufficiency -- the transaction paid enough PIVX for the name length
- Protocol command integrity -- the transaction paid enough PIVX for the name length
- Ed25519 signature -- the signature over
memo commandis valid - 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:
| Output | Description |
|---|---|
old_root | Merkle tree root before this registration |
new_root | Merkle tree root after this registration |
end_block_height | The 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.