Merge #10471: Denote functions CNode::GetRecvVersion() and CNode::GetRefCount() ...
[bitcoinplatinum.git] / doc / REST-interface.md
blob7fbb17403027127d529cec77ab9712f6e9b298f9
1 Unauthenticated REST Interface
2 ==============================
4 The REST API can be enabled with the `-rest` option.
6 The interface runs on the same port as the JSON-RPC interface, by default port 8332 for mainnet and port 18332 for testnet.
8 Supported API
9 -------------
11 ####Transactions
12 `GET /rest/tx/<TX-HASH>.<bin|hex|json>`
14 Given a transaction hash: returns a transaction in binary, hex-encoded binary, or JSON formats.
16 For full TX query capability, one must enable the transaction index via "txindex=1" command line / configuration option.
18 ####Blocks
19 `GET /rest/block/<BLOCK-HASH>.<bin|hex|json>`
20 `GET /rest/block/notxdetails/<BLOCK-HASH>.<bin|hex|json>`
22 Given a block hash: returns a block, in binary, hex-encoded binary or JSON formats.
24 The HTTP request and response are both handled entirely in-memory, thus making maximum memory usage at least 2.66MB (1 MB max block, plus hex encoding) per request.
26 With the /notxdetails/ option JSON response will only contain the transaction hash instead of the complete transaction details. The option only affects the JSON response.
28 ####Blockheaders
29 `GET /rest/headers/<COUNT>/<BLOCK-HASH>.<bin|hex|json>`
31 Given a block hash: returns <COUNT> amount of blockheaders in upward direction.
33 ####Chaininfos
34 `GET /rest/chaininfo.json`
36 Returns various state info regarding block chain processing.
37 Only supports JSON as output format.
38 * chain : (string) current network name as defined in BIP70 (main, test, regtest)
39 * blocks : (numeric) the current number of blocks processed in the server
40 * headers : (numeric) the current number of headers we have validated
41 * bestblockhash : (string) the hash of the currently best block
42 * difficulty : (numeric) the current difficulty
43 * verificationprogress : (numeric) estimate of verification progress [0..1]
44 * chainwork : (string) total amount of work in active chain, in hexadecimal
45 * pruned : (boolean) if the blocks are subject to pruning
46 * pruneheight : (numeric) heighest block available
47 * softforks : (array) status of softforks in progress
49 ####Query UTXO set
50 `GET /rest/getutxos/<checkmempool>/<txid>-<n>/<txid>-<n>/.../<txid>-<n>.<bin|hex|json>`
52 The getutxo command allows querying of the UTXO set given a set of outpoints.
53 See BIP64 for input and output serialisation:
54 https://github.com/bitcoin/bips/blob/master/bip-0064.mediawiki
56 Example:
57 ```
58 $ curl localhost:18332/rest/getutxos/checkmempool/b2cdfd7b89def827ff8af7cd9bff7627ff72e5e8b0f71210f92ea7a4000c5d75-0.json 2>/dev/null | json_pp
60    "chaintipHash" : "00000000fb01a7f3745a717f8caebee056c484e6e0bfe4a9591c235bb70506fb",
61    "chainHeight" : 325347,
62    "utxos" : [
63       {
64          "scriptPubKey" : {
65             "addresses" : [
66                "mi7as51dvLJsizWnTMurtRmrP8hG2m1XvD"
67             ],
68             "type" : "pubkeyhash",
69             "hex" : "76a9141c7cebb529b86a04c683dfa87be49de35bcf589e88ac",
70             "reqSigs" : 1,
71             "asm" : "OP_DUP OP_HASH160 1c7cebb529b86a04c683dfa87be49de35bcf589e OP_EQUALVERIFY OP_CHECKSIG"
72          },
73          "value" : 8.8687,
74          "height" : 2147483647,
75          "txvers" : 1
76       }
77    ],
78    "bitmap" : "1"
80 ```
82 ####Memory pool
83 `GET /rest/mempool/info.json`
85 Returns various information about the TX mempool.
86 Only supports JSON as output format.
87 * size : (numeric) the number of transactions in the TX mempool
88 * bytes : (numeric) size of the TX mempool in bytes
89 * usage : (numeric) total TX mempool memory usage
91 `GET /rest/mempool/contents.json`
93 Returns transactions in the TX mempool.
94 Only supports JSON as output format.
96 Risks
97 -------------
98 Running a web browser on the same node with a REST enabled bitcoind can be a risk. Accessing prepared XSS websites could read out tx/block data of your node by placing links like `<script src="http://127.0.0.1:8332/rest/tx/1234567890.json">` which might break the nodes privacy.