Skip to main content

Name Resolving

Resolve a Name

Resolves a PIVX name to retrieve its associated PIVX Address, its proof details, synchronization checkpoints, and registration data.

Endpoint

GET https://indexer.pivx.name/v1.0/resolve/{name} (Just name resolving)
POST https://indexer.pivx.name/v1.0/resolve/{name} (If additional parameters are required)

Path Parameters

ParameterTypeRequiredDescription
{name}stringYesThe PIVX name to resolve (e.g., richard.pivx).

Request Body

The request body must be a JSON object containing the following parameters:

ParameterTypeDefaultDescription
extendedbooleanfalseIf true, additionally returns domain_tx (the TX hash of the domain registration).
with_checkpointbooleanfalseIf true, returns the current Indexer's checkpoint to which the Indexer is synced.

Code Examples

curl -X POST https://indexer.pivx.name/v1.0/resolve/richard.pivx \
-H "Content-Type: application/json" \
-d '{
"extended": true,
"with_checkpoint": true
}'

Response Example

{
"response": {
"domain_name": "bob.pivx",
"target_address": "ps12qtzaw6x3dh35xuukrqgk06e9ffx8szg2n2huqncwjsnj3ajczmklqgcx97kn63vwlge6gj2cmn",
"owner_pubkey": "1111111111111111111111111111111111111111111111111111111111111111",
"price": 250000000,
"nonce": 1780000002,
"smt_root": "5892c31e50ad3a4cf0407b91b3012a196d60c4e4f53e37261ac6747dea180eea",
"merkle_proof": [
"29bc98ae3a939618e50ba72e11a25ba30b37bb53a168a17463b9ef3fe90495d8",
"0000000000000000000000000000000000000000000000000000000000000000"
],
"proof_depth": 2,
"proof_terminal": "Occupied"
}
}
FieldTypeDescription
domain_namestringThe registered name
target_addressstringTarget PIVX address
owner_pubkeystringPublic key of the name owner
priceintprice tag (used for Marketplace)
nonceintincremental nonce
smt_rootstringCurrent Merkle tree root (hex)
(if with_checkpoint:false, otherwise see "checkpoint" for SMT Root)
merkle_proofstring[]sibling hashes, hex; [0] is deepest. Length equals proof_depth
proof_depthintnumber of siblings — verify it equals merkle_proof.length
proof_terminalstring | object"Occupied", "Vacant" or {"Blocked":{…}} — see below
extended:
created_block_idintdomain creation PIVX block_id
updated_block_idintdomain last update PIVX block_id
domain_txstringThe PIVX transaction hash of the name registration
with_checkpoint:Fields inside "checkpoint":
idxintPosition in the anchor contract’s rootChain array; the resume cursor for checkpoint discovery
block_idintThe PIVX block_id of the latest SMT Proof generated
smt_rootstringCurrent Merkle tree root (hex)

proof_terminal

Describes what sits at the end of the proof path. This is what makes absence provable rather than merely asserted:

ValueMeaning
"Occupied"the name's own leaf is there — a successful resolution. Reject any resolution whose terminal is not this.
"Vacant"an empty subtree is there — the name is unregistered
{"Blocked": {"record": {…}}}a different name's leaf occupies that position, so the queried name is unregistered. The blocking record is included in full so you can verify the claim rather than trust it.

Verification code for all of this, in Python, PHP and JavaScript, is on Verifying Proofs.

Reverse Name Lookup

Provide a PIVX Address to perform a reverse resolving:

GET/POST https://indexer.pivx.name/v1.0/resolve/reverse/{address}

The POST params are described above.

Names by Owner

All names owned by a given Ed25519 public key.

GET/POST https://indexer.pivx.name/v1.0/resolve/owner/{Ed25519_public_key}

The POST params are described above.