Resolución de nombres
Resolver un nombre
Resuelve un nombre de PIVX y devuelve su dirección de PIVX asociada, los detalles de su prueba, los puntos de control de sincronización y los datos de registro.
Punto de acceso
GET https://indexer.pivx.name/v1.0/resolve/{name} (solo resolución del nombre)
POST https://indexer.pivx.name/v1.0/resolve/{name} (si hacen falta parámetros adicionales)
Parámetros de ruta
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
{name} | string | Sí | El nombre de PIVX que se quiere resolver (por ejemplo, richard.pivx). |
Cuerpo de la petición
El cuerpo de la petición debe ser un objeto JSON con los siguientes parámetros:
| Parámetro | Tipo | Por defecto | Descripción |
|---|---|---|---|
extended | boolean | false | Si es true, devuelve además domain_tx (el hash de la transacción del registro del dominio). |
with_checkpoint | boolean | false | Si es true, devuelve el punto de control actual al que está sincronizado el indexador. |
Ejemplos de código
- cURL
- JavaScript
- Python
- PHP
curl -X POST https://indexer.pivx.name/v1.0/resolve/richard.pivx \
-H "Content-Type: application/json" \
-d '{
"extended": true,
"with_checkpoint": true
}'
const url = 'https://indexer.pivx.name/v1.0/resolve/richard.pivx';
const data = {
extended: true,
with_checkpoint: true
};
fetch(url, {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(data)
})
.then(response => response.json())
.then(result => console.log(result))
.catch(error => console.error('Error:', error));
import requests
url = "https://indexer.pivx.name/v1.0/resolve/richard.pivx"
payload = {
"extended": True,
"with_checkpoint": True
}
headers = {
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
<?php
$url = 'https://indexer.pivx.name/v1.0/resolve/richard.pivx';
$data = [
'extended' => true,
'with_checkpoint' => true
];
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Content-Type: application/json'
]);
$response = curl_exec($ch);
curl_close($ch);
$result = json_decode($response, true);
print_r($result);
?>
Ejemplo de respuesta
{
"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"
}
}
| Campo | Tipo | Descripción |
|---|---|---|
domain_name | string | El nombre registrado |
target_address | string | Dirección de PIVX de destino |
owner_pubkey | string | Clave pública del titular del nombre |
price | int | Precio indicado (se usa en el Mercado) |
nonce | int | Nonce incremental |
smt_root | string | Raíz actual del árbol de Merkle (hex) |
| (si with_checkpoint:false; en otro caso, vea la raíz SMT en "checkpoint") | ||
merkle_proof | string[] | Hashes hermanos en hex; [0] es el más profundo. Su longitud es igual a proof_depth |
proof_depth | int | Número de hermanos: compruebe que es igual a merkle_proof.length |
proof_terminal | string | object | "Occupied", "Vacant" o {"Blocked":{…}} — véase más abajo |
| extended: | ||
created_block_id | int | block_id de PIVX de la creación del dominio |
updated_block_id | int | block_id de PIVX de la última modificación del dominio |
domain_tx | string | El hash de la transacción de PIVX del registro del nombre |
| with_checkpoint: | Campos dentro de "checkpoint": | |
idx | int | Posición en el array rootChain del contrato ancla; el cursor de reanudación al descubrir checkpoints |
block_id | int | El block_id de PIVX de la última prueba SMT generada |
smt_root | string | Raíz actual del árbol de Merkle (hex) |
proof_terminal
Describe qué hay al final del camino de la prueba. Es lo que hace que la ausencia sea demostrable y no una mera afirmación:
| Valor | Significado |
|---|---|
"Occupied" | ahí está la hoja propia del nombre: una resolución correcta. Rechace toda resolución cuyo terminal no sea este. |
"Vacant" | ahí hay un subárbol vacío: el nombre no está registrado |
{"Blocked": {"record": {…}}} | esa posición la ocupa la hoja de un nombre distinto, así que el nombre consultado no está registrado. El registro que bloquea se incluye completo para que pueda comprobar la afirmación en vez de confiar en ella. |
El código de verificación de todo esto, en Python, PHP y JavaScript, está en Verificar pruebas.
Resolución inversa de nombres
Indique una dirección de PIVX para hacer una resolución inversa:
GET/POST https://indexer.pivx.name/v1.0/resolve/reverse/{address}
Los parámetros POST se describen más arriba.
Nombres por titular
Todos los nombres que posee una clave pública Ed25519 dada.
GET/POST https://indexer.pivx.name/v1.0/resolve/owner/{Ed25519_public_key}
Los parámetros POST se describen más arriba.