7cf994d5cfd53dcff76ebd0e0007e3477a7570e8 qa: Improve tests of /rest/headers and /rest/block (João Barbosa) 0825b86b280c684c32c60bac9e862298c7279f27 doc: /rest/block responds with 404 if block does not exist (João Barbosa) be625f7c5562afed517ff51d2d85268ba5ce6017 doc: Explain empty result of /rest/headers (João Barbosa) Pull request description: Follow up of #15107. Tree-SHA512: a7fdeed05216e3eda9604664db529237c2d0ddf422cfac139d6345a22b6e00bfe870d4e3f177423db7d4efb295ac2dc0ca2eb20c9c27c0719b89fd5428860d03
4.2 KiB
Unauthenticated REST Interface
The REST API can be enabled with the -rest
option.
The interface runs on the same port as the JSON-RPC interface, by default port 9998 for mainnet and port 19998 for testnet.
Supported API
Transactions
GET /rest/tx/<TX-HASH>.<bin|hex|json>
Given a transaction hash: returns a transaction in binary, hex-encoded binary, or JSON formats.
For full TX query capability, one must enable the transaction index via "txindex=1" command line / configuration option.
Blocks
GET /rest/block/<BLOCK-HASH>.<bin|hex|json>
GET /rest/block/notxdetails/<BLOCK-HASH>.<bin|hex|json>
Given a block hash: returns a block, in binary, hex-encoded binary or JSON formats. Responds with 404 if the block doesn't exist.
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.
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.
Blockheaders
GET /rest/headers/<COUNT>/<BLOCK-HASH>.<bin|hex|json>
Given a block hash: returns amount of blockheaders in upward direction. Returns empty if the block doesn't exist or it isn't in the active chain.
Chaininfos
GET /rest/chaininfo.json
Returns various state info regarding block chain processing. Only supports JSON as output format.
- chain : (string) current network name as defined in BIP70 (main, test, regtest)
- blocks : (numeric) the current number of blocks processed in the server
- headers : (numeric) the current number of headers we have validated
- bestblockhash : (string) the hash of the currently best block
- difficulty : (numeric) the current difficulty
- mediantime : (numeric) the median time of the 11 blocks before the most recent block on the blockchain
- verificationprogress : (numeric) estimate of verification progress [0..1]
- chainwork : (string) total amount of work in active chain, in hexadecimal
- pruned : (boolean) if the blocks are subject to pruning
- pruneheight : (numeric) highest block available
- softforks : (array) status of softforks in progress
- bip9_softforks : (object) status of BIP9 softforks in progress
Query UTXO set
GET /rest/getutxos/<checkmempool>/<txid>-<n>/<txid>-<n>/.../<txid>-<n>.<bin|hex|json>
The getutxo command allows querying of the UTXO set given a set of outpoints. See BIP64 for input and output serialisation: https://github.com/bitcoin/bips/blob/master/bip-0064.mediawiki
Example:
$ curl localhost:19998/rest/getutxos/checkmempool/b2cdfd7b89def827ff8af7cd9bff7627ff72e5e8b0f71210f92ea7a4000c5d75-0.json 2>/dev/null | json_pp
{
"chainHeight" : 325347,
"chaintipHash" : "00000000fb01a7f3745a717f8caebee056c484e6e0bfe4a9591c235bb70506fb",
"bitmap": "1",
"utxos" : [
{
"txvers" : 1
"height" : 2147483647,
"value" : 8.8687,
"scriptPubKey" : {
"asm" : "OP_DUP OP_HASH160 1c7cebb529b86a04c683dfa87be49de35bcf589e OP_EQUALVERIFY OP_CHECKSIG",
"hex" : "76a9141c7cebb529b86a04c683dfa87be49de35bcf589e88ac",
"reqSigs" : 1,
"type" : "pubkeyhash",
"addresses" : [
"mi7as51dvLJsizWnTMurtRmrP8hG2m1XvD"
]
}
}
]
}
Memory pool
GET /rest/mempool/info.json
Returns various information about the TX mempool. Only supports JSON as output format.
- size : (numeric) the number of transactions in the TX mempool
- bytes : (numeric) size of the TX mempool in bytes
- usage : (numeric) total TX mempool memory usage
- maxmempool : (numeric) maximum memory usage for the mempool in bytes
- mempoolminfee : (numeric) minimum feerate (DASH per KB) for tx to be accepted
GET /rest/mempool/contents.json
Returns transactions in the TX mempool. Only supports JSON as output format.
Risks
Running a web browser on the same node with a REST enabled dashd 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:19998/rest/tx/1234567890.json">
which might break the nodes privacy.