2014-11-20 16:39:09 +01:00
Unauthenticated REST Interface
==============================
The REST API can be enabled with the `-rest` option.
2016-08-24 13:56:27 +02:00
The interface runs on the same port as the JSON-RPC interface, by default port 9998 for mainnet and port 19998 for testnet.
2018-11-01 16:17:12 +01:00
REST Interface consistency guarantees
-------------------------------------
The [same guarantees as for the RPC Interface ](/doc/JSON-RPC-interface.md#rpc-consistency-guarantees )
apply.
2020-12-17 10:00:34 +01:00
Limitations
-----------
There is a known issue in the REST interface that can cause a node to crash if
too many http connections are being opened at the same time because the system runs
out of available file descriptors. To prevent this from happening you might
want to increase the number of maximum allowed file descriptors in your system
and try to prevent opening too many connections to your rest interface at the
same time if this is under your control. It is hard to give general advice
since this depends on your system but if you make several hundred requests at
once you are definitely at risk of encountering this issue.
2014-11-20 16:39:09 +01:00
Supported API
-------------
2015-04-21 20:20:24 +02:00
2017-05-05 13:28:08 +02:00
#### Transactions
2015-05-18 15:55:03 +02:00
`GET /rest/tx/<TX-HASH>.<bin|hex|json>`
2014-11-20 16:39:09 +01:00
2015-07-13 18:43:30 +02:00
Given a transaction hash: returns a transaction in binary, hex-encoded binary, or JSON formats.
2014-11-20 16:39:09 +01:00
2019-02-19 16:30:36 +01:00
By default, this endpoint will only search the mempool.
To query for a confirmed transaction, enable the transaction index via "txindex=1" command line / configuration option.
2014-12-29 20:26:47 +01:00
2017-05-05 13:28:08 +02:00
#### Blocks
2015-05-18 15:55:03 +02:00
`GET /rest/block/<BLOCK-HASH>.<bin|hex|json>`
`GET /rest/block/notxdetails/<BLOCK-HASH>.<bin|hex|json>`
2014-11-20 16:39:09 +01:00
2015-07-13 18:43:30 +02:00
Given a block hash: returns a block, in binary, hex-encoded binary or JSON formats.
2019-01-21 17:37:18 +01:00
Responds with 404 if the block doesn't exist.
2014-11-20 16:39:09 +01:00
2020-04-30 11:44:59 +02:00
The HTTP request and response are both handled entirely in-memory.
2014-11-20 16:39:09 +01:00
2014-12-06 10:54:09 +01:00
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.
2017-05-05 13:28:08 +02:00
#### Blockheaders
2014-12-16 10:50:44 +01:00
`GET /rest/headers/<COUNT>/<BLOCK-HASH>.<bin|hex|json>`
2015-04-21 20:20:24 +02:00
2015-07-13 18:43:30 +02:00
Given a block hash: returns < COUNT > amount of blockheaders in upward direction.
2019-01-21 17:37:18 +01:00
Returns empty if the block doesn't exist or it isn't in the active chain.
2015-04-21 20:20:24 +02:00
2019-01-23 06:58:43 +01:00
#### Blockhash by height
`GET /rest/blockhashbyheight/<HEIGHT>.<bin|hex|json>`
Given a height: returns hash of block in best-block-chain at height provided.
2017-05-05 13:28:08 +02:00
#### Chaininfos
2014-12-29 20:26:47 +01:00
`GET /rest/chaininfo.json`
Returns various state info regarding block chain processing.
Only supports JSON as output format.
2019-11-02 14:47:34 +01:00
* chain : (string) current network name (main, test, regtest)
2014-12-29 20:26:47 +01:00
* 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
2017-07-06 18:11:49 +02:00
* mediantime : (numeric) the median time of the 11 blocks before the most recent block on the blockchain
2014-12-29 20:26:47 +01:00
* verificationprogress : (numeric) estimate of verification progress [0..1]
* chainwork : (string) total amount of work in active chain, in hexadecimal
2015-07-18 10:32:09 +02:00
* pruned : (boolean) if the blocks are subject to pruning
2018-03-03 15:24:28 +01:00
* pruneheight : (numeric) highest block available
2015-07-19 14:07:35 +02:00
* softforks : (array) status of softforks in progress
2017-07-06 18:11:49 +02:00
* bip9_softforks : (object) status of BIP9 softforks in progress
2014-11-20 16:39:09 +01:00
2017-05-05 13:28:08 +02:00
#### Query UTXO set
2015-05-27 15:56:16 +02:00
`GET /rest/getutxos/<checkmempool>/<txid>-<n>/<txid>-<n>/.../<txid>-<n>.<bin|hex|json>`
2015-04-21 20:32:37 +02:00
2015-05-18 15:55:03 +02:00
The getutxo command allows querying of the UTXO set given a set of outpoints.
2015-04-21 20:32:37 +02:00
See BIP64 for input and output serialisation:
https://github.com/bitcoin/bips/blob/master/bip-0064.mediawiki
2015-05-18 15:55:03 +02:00
Example:
```
2019-08-28 09:54:19 +02:00
$ curl localhost:19998/rest/getutxos/checkmempool/b2cdfd7b89def827ff8af7cd9bff7627ff72e5e8b0f71210f92ea7a4000c5d75-0.json 2>/dev/null | json_pp
2015-05-18 15:55:03 +02:00
{
"chainHeight" : 325347,
2017-07-06 18:11:49 +02:00
"chaintipHash" : "00000000fb01a7f3745a717f8caebee056c484e6e0bfe4a9591c235bb70506fb",
"bitmap": "1",
2015-05-18 15:55:03 +02:00
"utxos" : [
{
2017-07-06 18:11:49 +02:00
"txvers" : 1
"height" : 2147483647,
Merge #16812: doc: Fix whitespace errs in .md files, bitcoin.conf, and Info.plist.in
6aab7649d30b19d136a27f1287fd2c8b00fb460c doc: Fix whitespace errs in .md files, bitcoin.conf, Info.plist.in, and find_bdb48.m4 (Jon Layton)
Pull request description:
Although there is an existing `test/lint/lint-whitespace.sh` linter, it only prevents new errors from being introduced. This commit removes all existing whitespace errors from Core markdown files (skips `src/crypto/ctaes/`, `leveldb/`, and `doc/release-notes/`), `bitcoin.conf`, and `Info.plist.in`.
Further formatting could be done on the markdown documents, but seeing as there several coexisting styles that break a few `markdownlint` rules, a first step would be to define and add a linter to Travis. For now, the small fix is made.
ACKs for top commit:
fanquake:
ACK 6aab7649d30b19d136a27f1287fd2c8b00fb460c - Thanks for following up. Hopefully we now never have to deal with whitespace again.
Tree-SHA512: 810cc31ae4364b2dedf85783e67315d7b4e11589e4b32c599606e1b1ba8de0663bcae9ddb1bd8c9762a3636a2d65bdcd64ec22d2e90943f374a0c9574b77ca23
2019-09-17 10:33:29 +02:00
"value" : 8.8687,
2015-05-18 15:55:03 +02:00
"scriptPubKey" : {
2017-07-06 18:11:49 +02:00
"asm" : "OP_DUP OP_HASH160 1c7cebb529b86a04c683dfa87be49de35bcf589e OP_EQUALVERIFY OP_CHECKSIG",
2015-05-18 15:55:03 +02:00
"hex" : "76a9141c7cebb529b86a04c683dfa87be49de35bcf589e88ac",
"reqSigs" : 1,
2017-07-06 18:11:49 +02:00
"type" : "pubkeyhash",
"addresses" : [
"mi7as51dvLJsizWnTMurtRmrP8hG2m1XvD"
]
}
2015-05-18 15:55:03 +02:00
}
2017-07-06 18:11:49 +02:00
]
2015-05-18 15:55:03 +02:00
}
```
2015-04-21 20:32:37 +02:00
2017-05-05 13:28:08 +02:00
#### Memory pool
2015-08-06 19:38:19 +02:00
`GET /rest/mempool/info.json`
Returns various information about the TX mempool.
Only supports JSON as output format.
2019-05-01 16:06:11 +02:00
* loaded : (boolean) if the mempool is fully loaded
2015-08-06 19:38:19 +02:00
* 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
2017-07-06 18:11:49 +02:00
* maxmempool : (numeric) maximum memory usage for the mempool in bytes
2019-07-18 01:59:02 +02:00
* mempoolminfee : (numeric) minimum feerate (DASH per KB) for tx to be accepted
2015-08-06 19:38:19 +02:00
`GET /rest/mempool/contents.json`
Returns transactions in the TX mempool.
Only supports JSON as output format.
2014-11-20 16:39:09 +01:00
Risks
-------------
2019-08-28 09:54:19 +02:00
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.