mirror of
https://github.com/dashpay/dash.git
synced 2024-12-26 12:32:48 +01:00
8d4a65d196
fa77aaa5ad21563dd18ce3e407d391d37ac8c201 doc: Add external interface consistency guarantees (MarcoFalke) Pull request description: An attempt to clarify our consistency guarantees for developers and users Tree-SHA512: 8bad6a2bcfd85f0aeeecf3b090332f64c778c69a838a519d11ea83f2cb51929b9f43a7e9b2469567f305a1277206cafe8e65041f1a002dadbe69259d6a0adc18
116 lines
4.5 KiB
Markdown
116 lines
4.5 KiB
Markdown
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.
|
|
|
|
REST Interface consistency guarantees
|
|
-------------------------------------
|
|
|
|
The [same guarantees as for the RPC Interface](/doc/JSON-RPC-interface.md#rpc-consistency-guarantees)
|
|
apply.
|
|
|
|
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 <COUNT> amount of blockheaders in upward direction.
|
|
Returns empty if the block doesn't exist or it isn't in the active chain.
|
|
|
|
#### Blockhash by height
|
|
`GET /rest/blockhashbyheight/<HEIGHT>.<bin|hex|json>`
|
|
|
|
Given a height: returns hash of block in best-block-chain at height provided.
|
|
|
|
#### 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.
|