Daemon RPC dokumentace

Úvod

Zde je seznam monerod daemon RPC volání, jejich vstupy a výstupy a jednotlivé příklady.

Většina RPC volání používá JSON RPC rozhraní, zatímco ostatní používají svá vlastní rozhraní, jak je vidět na příkladu níže.

Poznámka: "atomické jednotky" představují nejmenší zlomek 1 XMR dle monerod implementace. 1 XMR = 1e12 atomických jednotek.

JSON RPC metody:

Další RPC metody:


JSON RPC Metody

Většina monerod RPC volání využívá json_rpc rozhraní daemona pro vyžádání různých informací. Všechny tyto metody mají podobnou strukturu, například:

IP=127.0.0.1
PORT=18081
METHOD='getblockheaderbyheight'
PARAMS='{"height":912345}'
curl \
    -X POST http://$IP:$PORT/json_rpc \
    -d '{"jsonrpc":"2.0","id":"0","method":"'$METHOD'","params":'$PARAMS'}' \
    -H 'Content-Type: application/json'

Některé metody obsahují parametry, jiné je naopak nepoužívají vůbec. Příklad každé JSON RPC metody níže.

getblockcount

Zjistěte, kolik bloků je v tom nejdelším řetězci známém danému uzlu.

Vstupy: None.

Výstupy:

  • count - unsigned int; Number of blocks in longest chain seen by the node.
  • status - string; General RPC error code. "OK" means everything looks good.

Příklad:

$ curl -X POST http://127.0.0.1:18081/json_rpc -d '{"jsonrpc":"2.0","id":"0","method":"getblockcount"}' -H 'Content-Type: application/json'  

{  
  "id": "0",  
  "jsonrpc": "2.0",  
  "result": {  
    "count": 993163,  
    "status": "OK"  
  }  
}  

on_getblockhash

Vyhledejte haš bloku podle jeho velikosti.

Vstupy:

  • výška bloku (int array of length 1)

Výstupy:

  • Hash bloku (string)

Příklad:

$ curl -X POST http://127.0.0.1:18081/json_rpc -d '{"jsonrpc":"2.0","id":"0","method":"on_getblockhash","params":[912345]}' -H 'Content-Type: application/json'

{
  "id": "0",
  "jsonrpc": "2.0",
  "result": "e22cf75f39ae720e8b71b3d120a5ac03f0db50bba6379e2850975b4859190bc6"
}

getblocktemplate

Vstupy:

  • wallet_address - string; Adresa peněženky pro obdržení coinbase transakce v případě, že je úspěšně vytěžen blok.
  • reserve_size - unsigned int; Velikost rezervy.

Výstupy:

  • blocktemplate_blob - string; Blob na kterém se bude těžit nový blok.
  • difficulty - unsigned int; Obtížnost dalšího bloku.
  • height - unsigned int; Výška bloku, pořadí, od kterého se bude těžit.
  • prev_hash - string; Hash nejaktuálnějšího bloku, na kterém se bude těžit další blok.
  • reserved_offset - unsigned int; Rezerva určena k vyrovnání.
  • status - string; Obecný RPC error kód. "OK" znamená, že vše vypadá jak má.

Příklad:

$ curl -X POST http://127.0.0.1:18081/json_rpc -d '{"jsonrpc":"2.0","id":"0","method":"getblocktemplate","params":{"wallet_address":"44GBHzv6ZyQdJkjqZje6KLZ3xSyN1hBSFAnLP6EAqJtCRVzMzZmeXTC2AHKDS9aEDTRKmo6a6o9r9j86pYfhCWDkKjbtcns","reserve_size":60}' -H 'Content-Type: application/json'

{
  "id": "0",
  "jsonrpc": "2.0",
  "result": {
    "blocktemplate_blob": "01029af88cb70568b84a11dc9406ace9e635918ca03b008f7728b9726b327c1b482a98d81ed83000000000018bd03c01ffcfcf3c0493d7cec7020278dfc296544f139394e5e045fcda1ba2cca5b69b39c9ddc90b7e0de859fdebdc80e8eda1ba01029c5d518ce3cc4de26364059eadc8220a3f52edabdaf025a9bff4eec8b6b50e3d8080dd9da417021e642d07a8c33fbe497054cfea9c760ab4068d31532ff0fbb543a7856a9b78ee80c0f9decfae01023ef3a7182cb0c260732e7828606052a0645d3686d7a03ce3da091dbb2b75e5955f01ad2af83bce0d823bf3dbbed01ab219250eb36098c62cbb6aa2976936848bae53023c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001f12d7c87346d6b84e17680082d9b4a1d84e36dd01bd2c7f3b3893478a8d88fb3",
    "difficulty": 982540729,
    "height": 993231,
    "prev_hash": "68b84a11dc9406ace9e635918ca03b008f7728b9726b327c1b482a98d81ed830",
    "reserved_offset": 246,
    "status": "OK"
  }
}

submitblock

Vložit vytěžený blok na síť.

Vstupy:

  • Block blob data - string

Výstupy:

  • status - string; Stav vložení bloku.

getlastblockheader

Informace ze záhlaví nejaktuálnějšího bloku jsou s touto metodou získatelné velmi snadno. Nejsou potřeba žádné vstupy.

Vstupy: Žádné.

Výstupy:

  • block_header - Struktura obsahující informace ze záhlaví bloku.
    • depth - unsigned int; Počet bloků následujících po tomto bloku v blockchainu. Čím vyšší číslo, tím starší blok.
    • difficulty - unsigned int; Síla Monero sítě odvíjející se od těžebního výkonu.
    • hash - string; hash daného bloku.
    • height - unsigned int; Počet bloků následujících po tomto bloku v blockchainu.
    • major_version - unsigned int; Hlavní verze monero protokolu na tomto pořadí bloku.
    • minor_version - unsigned int; Minor verze monero protokolu na tomto pořadí bloku.
    • nonce - unsigned int; Kryptografické náhodné číslo, použité pro těžbu Monero bloku.
    • orphan_status - boolean; Většinou false. Pokud true, tento blok není součástí nejdelšího řetězce.
    • prev_hash - string; Hash bloku bezprostředně předcházejícího tomuto bloku v řetězci.
    • reward - unsigned int; Množství nových atomických jednotek vygenerovaných na tomto bloku a vyplacených těžařům. Poznámka: 1 XMR = 1e12 atomic units.
    • timestamp - unsigned int; Čas v kterém byl blok přidán do blockchainu.
  • status - string; Obecný RPC error kód. "OK" znamená, že vše vypadá jak má.

V tomto případě nejaktuálnějšího bloku (990793) vvypadá return následovně:

$ curl -X POST http://127.0.0.1:18081/json_rpc -d '{"jsonrpc":"2.0","id":"0","method":"getlastblockheader"}' -H 'Content-Type: application/json'

{
  "id": "0",
  "jsonrpc": "2.0",
  "result": {
    "block_header": {
      "depth": 0,
      "difficulty": 746963928,
      "hash": "ac0f1e226268d45c99a16202fdcb730d8f7b36ea5e5b4a565b1ba1a8fc252eb0",
      "height": 990793,
      "major_version": 1,
      "minor_version": 1,
      "nonce": 1550,
      "orphan_status": false,
      "prev_hash": "386575e3b0b004ed8d458dbd31bff0fe37b280339937f971e06df33f8589b75c",
      "reward": 6856609225169,
      "timestamp": 1457589942
    },
    "status": "OK"
  }
}

getblockheaderbyhash

Informace o záhlaví bloku mohou být získány pomocí haše nebo výšky bloku. Tato metoda zahrnuje haš bloku jako vstupní parametr pro získání základních informací o bloku.

Vstupy:

  • hash - string; Sha256 hash bloku.

Výstupy:

  • block_header - Struktura obsahující informace ze záhlaví bloku. Více zde: getlastblockheader.

V tomto případě je blok 912345 vyhledán dle svého hashe.

$ curl -X POST http://127.0.0.1:18081/json_rpc -d '{"jsonrpc":"2.0","id":"0","method":"getblockheaderbyhash","params":{"hash":"e22cf75f39ae720e8b71b3d120a5ac03f0db50bba6379e2850975b4859190bc6"}}' -H 'Content-Type: application/json'

{
  "id": "0",
  "jsonrpc": "2.0",
  "result": {
    "block_header": {
      "depth": 78376,
      "difficulty": 815625611,
      "hash": "e22cf75f39ae720e8b71b3d120a5ac03f0db50bba6379e2850975b4859190bc6",
      "height": 912345,
      "major_version": 1,
      "minor_version": 2,
      "nonce": 1646,
      "orphan_status": false,
      "prev_hash": "b61c58b2e0be53fad5ef9d9731a55e8a81d972b8d90ed07c04fd37ca6403ff78",
      "reward": 7388968946286,
      "timestamp": 1452793716
    },
    "status": "OK"
  }
}

getblockheaderbyheight

Podobně jako getblockheaderbyhash výše, tato metoda pracuje s výškou bloku jako se vstupním parametrem pro získání základních informací o bloku.

Vstupy:

  • height - unsigned int; Výška bloku

Výstupy:

  • block_header - Struktura obsahující informace ze záhlaví bloku. Více zde: getlastblockheader.

V tomto příkladě, je blok 912345 hledán dle své výšky (všimněte si, že výpis informací je "save" jako v předchozím případě.)

$ curl -X POST http://127.0.0.1:18081/json_rpc -d '{"jsonrpc":"2.0","id":"0","method":"getblockheaderbyheight","params":{"height":912345}}' -H 'Content-Type: application/json'

{
  "id": "0",
  "jsonrpc": "2.0",
  "result": {
    "block_header": {
      "depth": 78376,
      "difficulty": 815625611,
      "hash": "e22cf75f39ae720e8b71b3d120a5ac03f0db50bba6379e2850975b4859190bc6",
      "height": 912345,
      "major_version": 1,
      "minor_version": 2,
      "nonce": 1646,
      "orphan_status": false,
      "prev_hash": "b61c58b2e0be53fad5ef9d9731a55e8a81d972b8d90ed07c04fd37ca6403ff78",
      "reward": 7388968946286,
      "timestamp": 1452793716
    },
    "status": "OK"
  }
}

getblock

Kompletní informace o bloku mohou být vyhledány pomocí výšky bloku nebo hashe, podobně jako výše volání do záhlaví bloku. Pro kompletní informace o bloku užívají obě vyhledávací funkce stejnou metodu, pouze s jinými vstupními parametry.

Vstupy (vyberte jeden z následujících):

  • height - unsigned int; Výška bloku
  • hash - string; Hash bloku

Výstupy:

  • blob - string; Hexadecimální blob obsahující informace o bloku.
  • block_header - Struktura obsahující informace ze záhlaví bloku. Více zde: getlastblockheader.
  • json - json string; Podrobnosti k formátování účtů:
    • major_version - Stejné jako v záhlaví bloku.
    • minor_version - Stejné jako v záhlaví bloku.
    • timestamp - Stejné jako v záhlaví bloku.
    • prev_id - Stejné jako prev_hash v záhlaví bloku.
    • nonce - Stejné jako v záhlaví bloku.
    • miner_tx - Informace o transakci těžaře.
      • version - Číslo verze transakce.
      • unlock_time - Výška bloku, od které je možné coinbase transakci utratit.
      • vin - Seznam vstupů transakce:
        • gen - Težařské txs jsou coinbase txs, nebo "gen".
          • height - Výška tohoto bloku, neboli kdy došlo k vygenerování coinbase.
      • vout - Seznam výstupů transakce. Každý výstup obsahuje:
        • amount - Počet vstupů transakce v atomických jednotkách.
        • target -
          • key -
      • extra - Většinou pod názvem "transaction ID", ale může být použito cokoli s náhodnými 32 bajty/64 znakový hex string.
      • signatures - Obsahuje tx podpisy. Coinbased txs podpisy nemají.
    • tx_hashes - Seznam hašů non-coinbase transakcí v bloku. Pokud zde žádné další transakce nejsou, seznam bude prázdný.
  • status - string; Obecný RPC error kód. "OK" znamená, že vše vypadá jak má.

Vyhledávání pomocí výšky bloku:

V následujícím příkladě je blok 912345 hledán pomocí své výšky. Všimněte si, že blok 912345 nemá žádnou ne-coinbase transakci.

$ curl -X POST http://127.0.0.1:18081/json_rpc -d '{"jsonrpc":"2.0","id":"0","method":"getblock","params":{"height":912345}}' -H 'Content-Type: application/json'

{
  "id": "0",
  "jsonrpc": "2.0",
  "result": {
    "blob": "...",
    "block_header": {
      "depth": 80694,
      "difficulty": 815625611,
      "hash": "e22cf75f39ae720e8b71b3d120a5ac03f0db50bba6379e2850975b4859190bc6",
      "height": 912345,
      "major_version": 1,
      "minor_version": 2,
      "nonce": 1646,
      "orphan_status": false,
      "prev_hash": "b61c58b2e0be53fad5ef9d9731a55e8a81d972b8d90ed07c04fd37ca6403ff78",
      "reward": 7388968946286,
      "timestamp": 1452793716
    },
    "json": "{\n  \"major_version\": 1, \n  \"minor_version\": 2, \n  \"timestamp\": 1452793716, \n  \"prev_id\": \"b61c58b2e0be53fad5ef9d9731a55e8a81d972b8d90ed07c04fd37ca6403ff78\", \n  \"nonce\": 1646, \n  \"miner_tx\": {\n    \"version\": 1, \n    \"unlock_time\": 912405, \n    \"vin\": [ {\n        \"gen\": {\n          \"height\": 912345\n        }\n      }\n    ], \n    \"vout\": [ {\n        \"amount\": 8968946286, \n        \"target\": {\n          \"key\": \"378b043c1724c92c69d923d266fe86477d3a5ddd21145062e148c64c57677008\"\n        }\n      }, {\n        \"amount\": 80000000000, \n        \"target\": {\n          \"key\": \"73733cbd6e6218bda671596462a4b062f95cfe5e1dbb5b990dacb30e827d02f2\"\n        }\n      }, {\n        \"amount\": 300000000000, \n        \"target\": {\n          \"key\": \"47a5dab669770da69a860acde21616a119818e1a489bb3c4b1b6b3c50547bc0c\"\n        }\n      }, {\n        \"amount\": 7000000000000, \n        \"target\": {\n          \"key\": \"1f7e4762b8b755e3e3c72b8610cc87b9bc25d1f0a87c0c816ebb952e4f8aff3d\"\n        }\n      }\n    ], \n    \"extra\": [ 1, 253, 10, 119, 137, 87, 244, 243, 16, 58, 131, 138, 253, 164, 136, 195, 205, 173, 242, 105, 123, 61, 52, 173, 113, 35, 66, 130, 178, 250, 217, 16, 14, 2, 8, 0, 0, 0, 11, 223, 194, 193, 108\n    ], \n    \"signatures\": [ ]\n  }, \n  \"tx_hashes\": [ ]\n}",
    "status": "OK"
  }
}

Hledání pomocí hashe

V následujícím případě je blok 993056 vyhledáván pomocí svého hashe. Všimněte si, že blok 993056 má 3 non-coinbase transakce:

$ curl -X POST http://127.0.0.1:18081/json_rpc -d '{"jsonrpc":"2.0","id":"0","method":"getblock","params":{"hash":"510ee3c4e14330a7b96e883c323a60ebd1b5556ac1262d0bc03c24a3b785516f"}}' -H 'Content-Type: application/json'

{
  "id": "0",
  "jsonrpc": "2.0",
  "result": {
    "blob": "...",
    "block_header": {
      "depth": 12,
      "difficulty": 964985344,
      "hash": "510ee3c4e14330a7b96e883c323a60ebd1b5556ac1262d0bc03c24a3b785516f",
      "height": 993056,
      "major_version": 1,
      "minor_version": 2,
      "nonce": 2036,
      "orphan_status": false,
      "prev_hash": "0ea4af6547c05c965afc8df6d31509ff3105dc7ae6b10172521d77e09711fd6d",
      "reward": 6932043647005,
      "timestamp": 1457720227
    },
    "json": "{\n  \"major_version\": 1, \n  \"minor_version\": 2, \n  \"timestamp\": 1457720227, \n  \"prev_id\": \"0ea4af6547c05c965afc8df6d31509ff3105dc7ae6b10172521d77e09711fd6d\", \n  \"nonce\": 2036, \n  \"miner_tx\": {\n    \"version\": 1, \n    \"unlock_time\": 993116, \n    \"vin\": [ {\n        \"gen\": {\n          \"height\": 993056\n        }\n      }\n    ], \n    \"vout\": [ {\n        \"amount\": 2043647005, \n        \"target\": {\n          \"key\": \"59e9d685b3484886bc7b47c133e6099ecdf212d5eaa16ce19cd58e8c3c1e590a\"\n        }\n      }, {\n        \"amount\": 30000000000, \n        \"target\": {\n          \"key\": \"4c5e2f542d25513c46b9e3b7d40140a22d0ae5314bfcae492ad9f56fff8185f0\"\n        }\n      }, {\n        \"amount\": 900000000000, \n        \"target\": {\n          \"key\": \"13dd8ffdac9e6a2f71e327dad65328198dc879a492d145eae72677c0703a3515\"\n        }\n      }, {\n        \"amount\": 6000000000000, \n        \"target\": {\n          \"key\": \"62bda00341681dccbc066757862da593734395745bdfe1fdc89b5948c86a5d4c\"\n        }\n      }\n    ], \n    \"extra\": [ 1, 182, 145, 133, 28, 240, 87, 185, 195, 2, 163, 219, 202, 135, 158, 28, 186, 76, 196, 80, 97, 202, 85, 170, 166, 224, 60, 220, 103, 171, 158, 69, 80, 2, 8, 0, 0, 0, 12, 97, 127, 223, 22\n    ], \n    \"signatures\": [ ]\n  }, \n  \"tx_hashes\": [ \"79c6b9f00db027bde151705aafe85c495883aae2597d5cb8e1adb2e0f3ae1d07\", \"d715db73331abc3ec588ef07c7bb195786a4724b08dff431b51ffa32a4ce899b\", \"b197066426c0ed89f0b431fe171f7fd62bc95dd29943daa7cf3585cf1fdfc99d\"\n  ]\n}",
    "status": "OK",
    "tx_hashes": ["79c6b9f00db027bde151705aafe85c495883aae2597d5cb8e1adb2e0f3ae1d07","d715db73331abc3ec588ef07c7bb195786a4724b08dff431b51ffa32a4ce899b","b197066426c0ed89f0b431fe171f7fd62bc95dd29943daa7cf3585cf1fdfc99d"]
  }
}

get_connections

Vyhledejte informace o příchozích a odchozích spojeních do vašeho uzle (node).

Vstupy: Žádné.

Výstupy:

  • connections - Seznam všech spojení a jejich vlastností:
    • avg_download - unsigned int; Průměr dat v bajtech, které byly uzlem staženy.
    • avg_upload - unsigned int; Průměr dat v bajtech, které byly uzlem nahrány.
    • current_download - unsigned int; Momentální stahování bajtů uzlem.
    • current_upload - unsigned int; Momentální nahrávání bajtů uzlem.
    • incoming - boolean; Dostává daný uzel informace z vašeho uzlu?
    • ip - string; IP adresa uzlu.
    • live_time - unsigned int
    • local_ip - boolean
    • localhost - boolean
    • peer_id - string; ID uzlu na síti.
    • port - stringl Port, který uzel využívá pro připojení do sítě.
    • recv_count - unsigned int
    • recv_idle_time - unsigned int
    • send_count - unsigned int
    • send_idle_time - unsigned int
    • state - string

Následuje příklad get_connections a jeho odpověď (return):

$ curl -X POST http://127.0.0.1:18081/json_rpc -d '{"jsonrpc":"2.0","id":"0","method":"get_connections"}' -H 'Content-Type: application/json'

{
  "id": "0",
  "jsonrpc": "2.0",
  "result": {
    "connections": [{
      "avg_download": 0,
      "avg_upload": 0,
      "current_download": 0,
      "current_upload": 0,
      "incoming": false,
      "ip": "76.173.170.133",
      "live_time": 1865,
      "local_ip": false,
      "localhost": false,
      "peer_id": "3bfe29d6b1aa7c4c",
      "port": "18080",
      "recv_count": 116396,
      "recv_idle_time": 23,
      "send_count": 176893,
      "send_idle_time": 1457726610,
      "state": "state_normal"
    },{
    ...
    }],
    "status": "OK"
  }
}

get_info

Zjistěte základní informace o stavu vašeho uzlu na síti.

Vstupy: Žádné.

Výstupy:

  • alt_blocks_count - unsigned int; Počet alternativních bloků ku hlavnímu chainu.
  • difficulty - unsigned int; Obtížnost
  • grey_peerlist_size - unsigned int; Grey Peerlist Size
  • height - unsigned int; Momentální délka nejdelšího chainu, který je daemonovi znám.
  • incoming_connections_count - unsigned int; Počet peers napojených na váš uzel.
  • outgoing_connections_count - unsigned int; Počet peers ke kterým jste připojeni a získáváte od nich informace.
  • status - string; Obecný RPC error kód. "OK" znamená, že vše vypadá jak má.
  • target - unsigned int; Momentální cíl pro další proof of work.
  • target_height - unsigned int; Výška dalšího bloku v pořadí.
  • testnet - boolean; Udává, jestli je uzel v testnetu (true) nebo mainnetu (false).
  • top_block_hash - string; Hash nejvyššího bloku v chainu.
  • tx_count - unsigned int; Celkový počet non-coinbase trasakcí v chainu.
  • tx_pool_siz - unsigned int; Počet transakcí, které byly vyslané, ale zatím nepřipsané do bloku.
  • white_peerlist_size - unsigned int; Velikost White Peerlist.

Následuje příklad: get_info call a jeho return:

$ curl -X POST http://127.0.0.1:18081/json_rpc -d '{"jsonrpc":"2.0","id":"0","method":"get_info"}' -H 'Content-Type: application/json'

{
  "id": "0",
  "jsonrpc": "2.0",
  "result": {
    "alt_blocks_count": 5,
    "difficulty": 972165250,
    "grey_peerlist_size": 2280,
    "height": 993145,
    "incoming_connections_count": 0,
    "outgoing_connections_count": 8,
    "status": "OK",
    "target": 60,
    "target_height": 993137,
    "testnet": false,
    "top_block_hash": "",
    "tx_count": 564287,
    "tx_pool_size": 45,
    "white_peerlist_size": 529
  }
}

hard_fork_info

Vyhledejte informace o hlasování o hard forku a připravenosti.

Vstupy: Žádné.

Výstupy:

  • earliest_height - unsigned int; Výška bloku, na kterém by došlo k hard forku pokud by byl odhlasován.
  • enabled - boolean; Oznamuje, že byl vynucen hard fork
  • state - unsigned int; momentální stav hard forku 0 (Hard fork je pravděpodobný), 1 (Je potřeba update aby fork proběhl správně), nebo 2 (Vše se zdá v pořádku).
  • status - string; Obecný RPC error kód. "OK" znamená, že vše vypadá jak má.
  • threshold - unsigned int; Minimální počet hlasů v % pro hard fork. Defaultní počet je 80.
  • version - unsigned int; Hlavní verze bloku pro fork.
  • votes - unsigned int; Počet hlasů "pro" hard fork.
  • voting - unsigned int; Stav hlasování hard forku
  • window - unsigned int; Počet bloků, přes jsou odevzdávány současné hlasy. 10080 je defaultní počet bloků.

Příklad:

$ curl -X POST http://127.0.0.1:18081/json_rpc -d '{"jsonrpc":"2.0","id":"0","method":"hard_fork_info"}' -H 'Content-Type: application/json'

{
  "id": "0",
  "jsonrpc": "2.0",
  "result": {
    "earliest_height": 1009827,
    "enabled": false,
    "state": 2,
    "status": "OK",
    "threshold": 0,
    "version": 1,
    "votes": 7277,
    "voting": 2,
    "window": 10080
  }
}

setbans

Zablokujte jiný uzel podle IP.

Vstupy:

  • bans - seznam uzlů k zablokování
    • ip - unsigned int; IP adresy k zablokování v Int formátu.
    • ban - boolean; Nastavte jako true pro zablokování.
    • seconds - unsigned int; Počet vteřin na které bude uzel zablokován.

Výstupy:

  • status - string; Obecný RPC error kód. "OK" znamená, že vše vypadá jak má.

Příklad:

$ curl -X POST http://127.0.0.1:18081/json_rpc -d '{"jsonrpc":"2.0","id":"0","method":"setbans","params":{"bans":[{"ip":838969536,"ban":true,"seconds":30}]}}' -H  'Content-Type: application/json'

{
  "id": "0",
  "jsonrpc": "2.0",
  "result": {
    "status": "OK"
  }
}

getbans

Vstupy: Žádné.

Výstupy:

  • bans - Seznam zablokovaných uzlů:
    • ip - unsigned int; Zablokované IP adresy v Int formátu.
    • seconds - unsigned int; (místní) Unixový čas, do kdy bude daná IP adresa zablokována.
  • status - string; Obecný RPC error kód. "OK" znamená, že vše vypadá jak má.

Příklad:

$ curl -X POST http://127.0.0.1:18081/json_rpc -d '{"jsonrpc":"2.0","id":"0","method":"getbans"}' -H 'Content-Type: application/json'

{
  "id": "0",
  "jsonrpc": "2.0",
  "result": {
    "bans": [{
      "ip": 838969536,
      "seconds": 1457748792
    }],
    "status": "OK"
  }
}

Další Daemon RPC Calls

Ne všechny RPC calls používají rozhraní JSON_RPC. Tato část poskytuje několik příkladů takových volání (calls).

Struktura dat těchto calls je odlišná od JSON RPC calls. Zatímco u volání JSON RPC metod se používá /json_rpc rozšíření a metoda se specifikuje, tyto další metody jsou volány na jejich vlastní rozšíření. Například:

IP=127.0.0.1
PORT=18081
METHOD='gettransactions'
PARAMS='{"txs_hashes":["d6e48158472848e6687173a91ae6eebfa3e1d778e65252ee99d7515d63090408"]}'
curl \
	-X POST http://$IP:$PORT/$METHOD \
	-d $PARAMS \
	-H 'Content-Type: application/json'

Poznámka: Spíš než používat následující metody je doporučováno - tam, kde je to možné - používat JSON RPC. Doporučovaný způsob získávání výšky uzlu je například přes JSON RPC metodu get_info nebo getlastblockheader, spíše než getheight níže.

/getheight

Získejte aktuální výšku uzlu.

Vstupy: Žádné.

Výstupy:

  • height - unsigned int; Momentální délka nejdelšího chainu, který je daemonovi znám.
$ curl -X POST http://127.0.0.1:18081/getheight -H 'Content-Type: application/json'

{
  "height": 993488,
  "status": "OK"
}

/gettransactions

Vyhledejte jednu nebo více transakcí podle hashe.

Vstupy:

  • txs_hashes - string list; Seznam hashů transakcí, které se budou vyhledávat.
  • decode_as_json - boolean; Volitelné. Pokud true, informace o transakci se vrátí dekódovaná a ne binární.

Výstupy:

  • status - Obecný RPC error kód. "OK" znamená, že vše vypadá jak má.
  • txs_as_hex - string; Full transaction information as a hex string.
  • txs_as_json - json string; (volitélné - return v případě, že je nastaveno jako input.) Seznam informací o transakci:
    • version - Verze transakce
    • unlock_time - Pokud je rozdílný od 0, udává, kdy může dojít k útratě výstupu.
    • vin - Seznam vstupů do transakce
      • key - Veřejný klíč předchozího výstupu odeslaného v této transakci.
        • amount - počet vstupů transakce v atomických jednotkách.
        • key_offsets - seznam integerových offsetů pro vstup.
        • k_image - key image daného vstupu
    • vout - Seznam výstupů z transakce
      • amount - počet výstupů transakce v atomických jednotkách.
      • target - informace o místě výstupu
        • key - skrytý veřejný klíč příjemce. Ten, kdo vlastní soukromý klíč tohoto klíče, má pod kontrolou výstup z této transakce.
    • extra - Zpravidla se udává jako "payment ID" ale může být nastaveno tak, že obsahuje jakýchkoli náhodných 32 bajtů.
    • signatures - Seznam podpisů použitých v kruhovém podpisu pro zakrytí původu transakce. Příkald č. 1: Return informací o transakci v binárním formátu. Příklad č. 1: vrací informace o transakci v binárním formátu
$ curl -X POST http://127.0.0.1:18081/gettransactions -d '{"txs_hashes":["d6e48158472848e6687173a91ae6eebfa3e1d778e65252ee99d7515d63090408"]}' -H 'Content-Type: application/json'

{
  "status": "OK",
  "txs_as_hex": ["..."]
}

Příklad č. 2: Dekódovat return informací o transakci v JSON formátu Poznámka: seznam "vout" byl zkrácen pro úsporu místa

$ curl -X POST http://127.0.0.1:18081/gettransactions -d '{"txs_hashes":["d6e48158472848e6687173a91ae6eebfa3e1d778e65252ee99d7515d63090408"],"decode_as_json":true}' -H 'Content-Type: application/json'

{
  "status": "OK",
  "txs_as_hex": ["..."],
  "txs_as_json": ["{\n  \"version\": 1, \n  \"unlock_time\": 0, \n  \"vin\": [ {\n      \"key\": {\n        \"amount\": 70000000, \n        \"key_offsets\": [ 35952\n        ], \n        \"k_image\": \"d16908468dff9438a9814fe96bdaa575f06fe8da85772b72e54926428712293d\"\n      }\n    }, {\n      \"key\": {\n        \"amount\": 400000000000000, \n        \"key_offsets\": [ 6830\n        ], \n        \"k_image\": \"c7a7024b763df1181ae6fe821b70669735e38a68162ac02362e33acbe829b605\"\n      }\n    }\n  ], \n  \"vout\": [ {\n      \"amount\": 50000, \n      \"target\": {\n        \"key\": \"f6be43f7be4f06adcb1d06f4a07c637c7359e009cf3e57bb32b8c9ea636509c3\"\n      }\n    }, {\n      \"amount\": 200000, \n      \"target\": {\n        \"key\": \"b0a7a8e32f2b5302552bcd8d85112c62838b1f56cccd844eb9b63e0a732d0353\"\n      }\n    },  ...  \n  ], \n  \"extra\": [ 1, 225, 240, 98, 34, 169, 73, 47, 237, 117, 192, 30, 192, 60, 155, 47, 4, 115, 20, 21, 11, 13, 252, 219, 129, 13, 174, 37, 36, 78, 191, 141, 109\n  ], \n  \"signatures\": [ \"e6a3be8003d481d2855c8127f56871de3d28a4fb52385b999eb986c831c5cc08361c126b0db24a21b6c4299b438ee2be201d44d57a371230b9cd04395ab8c400\", \"8309851abaf2cf2a7091e0cdb9c83704fa7d68838a7a8ef8c178bb55a1e93a038dd18bb4a7549dc056b7a70e037cabd80911a03f427e36f712756d4c00f38f0b\"]\n}"]
}

/is_key_image_spent

Zkontrolujte, že došlo k útratě výstupů pomocí zobrazovacího klíče k danému výstupu.

Vstupy:

  • key_images - string list;Seznam key images hex strings ke kontrole.

Výstupy:

  • spent_status - unsigned int list; Seznam stavů všech překontrolovaných obrazů. Stavy mohou být popsány následovně: 0 = neutraceno, 1 = utraceno v blockchainu, 2 = utraceno v transakčním poolu
  • status - string; Obecný RPC error kód. "OK" znamená, že vše vypadá jak má.

Příklad:

$ curl -X POST http://127.0.0.1:18081/is_key_image_spent -d '{"key_images":["8d1bd8181bf7d857bdb281e0153d84cd55a3fcaa57c3e570f4a49f935850b5e3","7319134bfc50668251f5b899c66b005805ee255c136f0e1cecbb0f3a912e09d4"]}' -H 'Content-Type: application/json'

{
  "spent_status": [1,2],
  "status": "OK"
}

/sendrawtransaction

Zviditelnit neupravenou transakci v síti.

Vstupy:

  • tx_as_hex - string; Kompletní informace o transakci v podobě hexadecimálního řetězce.

Výstupy:

  • status - string; Obecný RPC error kód. "OK" znamená, že vše vypadá jak má. Jakákoli jiná hodnota znamená, že je něco špatně.
  • double_spend - boolean; Transakce je duplikát (double spend)(true) nebo není (false).
  • fee_too_low - boolean; Poplatek je moc nízký (true) nebo OK (false).
  • invalid_input - boolean; Vstup je neplatný (true) nebo platný (false).
  • invalid_output - boolean; Výstup je neplatný (true) nebo platný (false).
  • low_mixin - boolean; Mixin počet je nedostatečný (true) nebo OK (false).
  • not_rct - boolean; Transakce není kruhová (true) nebo je (false).
  • not_relayed - boolean; Transakce nebyla vyřízena (true) nebo byla (false).
  • overspend - boolean; Transakce používá větší sumu peněz než je k dispozici (true) nebo ne (false).
  • reason - string; Podrobnosti. V současnosti prázdné nebo "Not relayed" pokud byla transakce přijata ale nevyřízena.
  • too_big - boolean; Transakce je moc objemná (true) nebo OK (false).

Příklad (žádný return):

$ curl -X POST http://127.0.0.1:18081/sendrawtransaction -d '{"tx_as_hex":"de6a3..."}' -H 'Content-Type: application/json'

/get_transaction_pool

Informace o platných transakcích viděných uzlem, které ještě nejsou vytěženy do bloku, stejně tak informace o utracených obrazových klíčích v paměti uzlu.

Vstupy: Žádné.

Výstupy:

  • spent_key_images - Seznam utracených výstupů key images:
    • id_hash - string; Key image ID hash.
    • txs_hashes - string list; Key image hashes transakce.
  • status - string; Obecný RPC error kód. "OK" znamená, že vše vypadá jak má.
  • transactions - seznam transakcí v mempoolu, které ještě nebyly zařazeny do bloku.
    • blob_size - unsigned int; Celková velikost blobu transakce.
    • fee - unsigned int; Velikost těžařského poplatku zahrnutého v transakci, udáváno v atomických jednotkách.
    • id_hash - string; Hash ID transakce.
    • kept_by_block - boolean; Nepřijímáme timed out (vypršené) transakce, ledaže je parametr nastaven jako true.
    • last_failed_height - unsigned int; Pokud došlo k time out transakce, řekne nám, na jakém bloku k tomu došlo.
    • last_failed_id_hash - string; Jako u předchozího, označuje hash předchozího ID transakce.
    • max_used_block_height - unsigned int; Označuje výšku nejaktuálnějšího bloku s výstupem použitým v této transakci.
    • max_used_block_hash - string; Označuje haš nejaktuálnějšího bloku s výstupem použitým v této transakci.
    • receive_time - unsigned int; Unixový čas, kdy byla transakce poprvé uzlem viditelná na síti.
    • tx_json - json string; JSON struktura všech informací v transakci.
      • version - Verze transakce
      • unlock_time - Pokud je rozdílný od 0, udává, kdy může dojít k útratě výstupu.
      • vin - Seznam vstupů do transakce
        • key - Veřejný klíč předchozího výstupu odeslaného v této transakci.
          • amount - počet vstupů transakce v atomických jednotkách.
          • key_offsets - seznam integerových offsetů pro vstup.
          • k_image - key image daného vstupu
      • vout - Seznam výstupů z transakce
        • amount - počet výstupů transakce v atomických jednotkách.
        • target - informace o místě výstupu
          • key - skrytý veřejný klíč příjemce. Ten, kdo vlastní soukromý klíč tohoto klíče, má pod kontrolou výstup z této transakce.
      • extra - Většinou pod názvem "transaction ID", ale může být použito cokoli s náhodnými 32 bajty.
      • signatures - Seznam podpisů použitých v kruhovém podpisu pro zakrytí původu transakce.

Příklad (Poznámka: Některé seznamy v odpovědi (return) byly zkráceny pro lepší zobrazení):

$ curl -X POST http://127.0.0.1:18081/get_transaction_pool -H 'Content-Type: application/json'

{
  "spent_key_images": [{
    "id_hash": "1edb9ecc39602040282d326070ad22cb473c952c0d6280c9c4c3b853fb34f3bc",
    "txs_hashes": ["409911b2be02e3f0e930b326c67ab9e74675885ce23d71bb3bd28b62bc3e7803"]
  },{
    "id_hash": "4adb4bb63b3397027340ca4e6c45f4ce2147dfb3a4e0fafdec18834ae594a05e",
    "txs_hashes": ["946f1f4c52e3426a41959c93b60078f314813bc4bdebcf69b8ee11d593b2bd14"]
  },
  ...],
  "status": "OK",
  "transactions": [{
    "blob_size": 25761,
    "fee": 290000000000,
    "id_hash": "11d4cff23e610fac6a2b89187ad61d429a5e226652693dcac5d83d506eb92b96",
    "kept_by_block": false,
    "last_failed_height": 0,
    "last_failed_id_hash": "0000000000000000000000000000000000000000000000000000000000000000",
    "max_used_block_height": 954508,
    "max_used_block_id_hash": "03f96b374778bc059e47b96e2beec2e6d4d9e0ad39afeabdbcd77e1bd5a62f81",
    "receive_time": 1457676127,
    "tx_json": "{\n  \"version\": 1, \n  \"unlock_time\": 0, \n  \"vin\": [ {\n      \"key\": {\n        \"amount\": 70000000000, \n        \"key_offsets\": [ 63408, 18978, 78357, 16560\n        ], \n        \"k_image\": \"7319134bfc50668251f5b899c66b005805ee255c136f0e1cecbb0f3a912e09d4\"\n      }\n    },  ...  ], \n  \"vout\": [ {\n      \"amount\": 80000000000, \n      \"target\": {\n        \"key\": \"094e6a1b187385533665f89db741149f42d95fdc50bdd2a2384bcd1dc5209c55\"\n      }\n    },  ...  ], \n  \"extra\": [ 2, 33, 0, 15, 56, 190, 21, 169, 77, 13, 182, 209, 51, 35, 54, 96, 89, 237, 96, 23, 24, 107, 240, 79, 40, 86, 64, 68, 45, 166, 119, 192, 17, 225, 23, 1, 31, 159, 145, 15, 173, 255, 165, 192, 55, 84, 127, 154, 163, 25, 85, 204, 212, 127, 147, 133, 118, 218, 166, 52, 78, 188, 131, 235, 9, 159, 105, 158\n  ], \n  \"signatures\": [ \"966e5a67fbdbf72d7dc0364b705121a58e0ced7e2ab45747b6b154c05a1afe04fac4aac7f64faa2dc6dd4d51b8277f11e2f2ec7729fac225088befe3b8399c0b71a4cb55b9d0e20f93d305c78cebceff1bcfcfaf225428dfcfaaec630c88720ab65bf5d3399dd1ac82ea0ecf308b3f80d9780af7742fb157692cd60515a7e2086878f082117fa80fff3d257de7d3a2e9cc8b3472ef4a5e545d90e1159523a60f38d16cece783579627124776813334bdb2a2df4171ef1fa12bf415da338ce5085c01e7a715638ef5505aebec06a0625aaa72d13839838f7d4f981673c8f05f08408e8b372f900af7227c49cfb1e1febab6c07dd42b7c26f921cf010832841205\",  ...  ]\n}"
  },
  ...]
}

/stop_daemon

Zadejte příkaz a bezpečně se odpojte a vypněte.

Vstupy: Žádné.

Výstupy:

  • status - string; Obecný RPC error kód. "OK" znamená, že vše vypadá jak má.

Příklad:

$ curl -X POST http://127.0.0.1:18081/stop_daemon -H 'Content-Type: application/json'

{
  "status": "OK"
}