名前の解決
名前を解決する
PIVX 名を解決し、対応する PIVX アドレス、証明の詳細、同期チェックポイント、登録データを取得します。
エンドポイント
GET https://indexer.pivx.name/v1.0/resolve/{name}(名前の解決のみ)
POST https://indexer.pivx.name/v1.0/resolve/{name}(追加のパラメーターが必要な場合)
パスパラメーター
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
{name} | string | はい | 解決する PIVX 名(例:richard.pivx)。 |
リクエストボディ
リクエストボディは次のパラメーターを含む JSON オブジェクトでなければなりません:
| パラメーター | 型 | 既定値 | 説明 |
|---|---|---|---|
extended | boolean | false | true の場合、domain_tx(ドメイン登録のトランザクションハッシュ)も返します。 |
with_checkpoint | boolean | false | true の場合、インデクサーが同期している現在のチェックポイントを返します。 |
コード例
- 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
<?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);
?>
レスポンス例
{
"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"
}
}
| フィールド | 型 | 説明 |
|---|---|---|
domain_name | string | 登録された名前 |
target_address | string | 宛先の PIVX アドレス |
owner_pubkey | string | 名前の保有者の公開鍵 |
price | int | 価格(マーケットプレイスで使用) |
nonce | int | 増加する nonce |
smt_root | string | 現在のマークルツリールート(16 進数) |
| (with_checkpoint:false の場合。それ以外は "checkpoint" の SMT ルートを参照) | ||
merkle_proof | string[] | 16 進数の兄弟ハッシュ。[0] が最も深い。長さは proof_depth と同じ |
proof_depth | int | 兄弟ノードの数 — merkle_proof.length と等しいことを確認してください |
proof_terminal | string | object | "Occupied"、"Vacant"、または {"Blocked":{…}} — 下記参照 |
| extended: | ||
created_block_id | int | ドメインが作成された PIVX の block_id |
updated_block_id | int | ドメインが最後に更新された PIVX の block_id |
domain_tx | string | その名前の登録に対応する PIVX のトランザクションハッシュ |
| with_checkpoint: | "checkpoint" 内のフィールド: | |
idx | int | アンカーコントラクトの rootChain 配列における位置。チェックポイント探索の再開カーソル |
block_id | int | 最後に生成された SMT 証明の PIVX の block_id |
smt_root | string | 現在のマークルツリールート(16 進数) |
proof_terminal
証明経路の末端に何があるかを表します。不在を単なる主張ではなく証明可能にしているのが、まさにこれです:
| 値 | 意味 |
|---|---|
"Occupied" | そこにその名前自身の葉がある — 解決成功。ターミナルがこれ以外の解決結果はすべて拒否してください。 |
"Vacant" | そこに空の部分木がある — 名前は登録されていない |
{"Blocked": {"record": {…}}} | その位置を別の名前の葉が占めているため、問い合わせた名前は登録されていません。ブロックしているレコードが丸ごと含まれているので、その主張を信じる代わりに検証できます。 |
これらすべての検証コードは、Python、PHP、JavaScript で 証明の検証に用意されています。
逆引き
逆引きするには PIVX アドレスを指定してください:
GET/POST https://indexer.pivx.name/v1.0/resolve/reverse/{address}
POST パラメーターは上記のとおりです。
保有者による名前の一覧
指定した Ed25519 公開鍵が保有するすべての名前。
GET/POST https://indexer.pivx.name/v1.0/resolve/owner/{Ed25519_public_key}
POST パラメーターは上記のとおりです。