Changeset View
Changeset View
Standalone View
Standalone View
doc/REST-interface.md
Unauthenticated REST Interface | # Unauthenticated REST Interface | ||||
============================== | |||||
The REST API can be enabled with the `-rest` option. | 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 8332 for mainnet and port 18332 for testnet. | The interface runs on the same port as the JSON-RPC interface, by default port 8332 for mainnet and port 18332 for testnet. | ||||
Supported API | ## Supported API | ||||
------------- | |||||
####Transactions | ### Transactions | ||||
`GET /rest/tx/<TX-HASH>.<bin|hex|json>` | `GET /rest/tx/<TX-HASH>.<bin|hex|json>` | ||||
Given a transaction hash: returns a transaction in binary, hex-encoded binary, or JSON formats. | 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. | For full TX query capability, one must enable the transaction index via "txindex=1" command line / configuration option. | ||||
####Blocks | ### Blocks | ||||
`GET /rest/block/<BLOCK-HASH>.<bin|hex|json>` | `GET /rest/block/<BLOCK-HASH>.<bin|hex|json>` | ||||
`GET /rest/block/notxdetails/<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. | Given a block hash: returns a block, in binary, hex-encoded binary or JSON formats. | ||||
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. | 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. | 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 | ### Blockheaders | ||||
`GET /rest/headers/<COUNT>/<BLOCK-HASH>.<bin|hex|json>` | `GET /rest/headers/<COUNT>/<BLOCK-HASH>.<bin|hex|json>` | ||||
Given a block hash: returns <COUNT> amount of blockheaders in upward direction. | Given a block hash: returns <COUNT> amount of blockheaders in upward direction. | ||||
####Chaininfos | ### Chaininfos | ||||
`GET /rest/chaininfo.json` | `GET /rest/chaininfo.json` | ||||
Returns various state info regarding block chain processing. | Returns various state info regarding block chain processing. | ||||
Only supports JSON as output format. | Only supports JSON as output format. | ||||
* chain : (string) current network name as defined in BIP70 (main, test, regtest) | * chain : (string) current network name as defined in BIP70 (main, test, regtest) | ||||
* blocks : (numeric) the current number of blocks processed in the server | * blocks : (numeric) the current number of blocks processed in the server | ||||
* headers : (numeric) the current number of headers we have validated | * headers : (numeric) the current number of headers we have validated | ||||
* bestblockhash : (string) the hash of the currently best block | * bestblockhash : (string) the hash of the currently best block | ||||
* difficulty : (numeric) the current difficulty | * difficulty : (numeric) the current difficulty | ||||
* verificationprogress : (numeric) estimate of verification progress [0..1] | * verificationprogress : (numeric) estimate of verification progress [0..1] | ||||
* chainwork : (string) total amount of work in active chain, in hexadecimal | * chainwork : (string) total amount of work in active chain, in hexadecimal | ||||
* pruned : (boolean) if the blocks are subject to pruning | * pruned : (boolean) if the blocks are subject to pruning | ||||
* pruneheight : (numeric) heighest block available | * pruneheight : (numeric) heighest block available | ||||
* softforks : (array) status of softforks in progress | * softforks : (array) status of softforks in progress | ||||
####Query UTXO set | ### Query UTXO set | ||||
`GET /rest/getutxos/<checkmempool>/<txid>-<n>/<txid>-<n>/.../<txid>-<n>.<bin|hex|json>` | `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. | The getutxo command allows querying of the UTXO set given a set of outpoints. | ||||
See BIP64 for input and output serialisation: | See BIP64 for input and output serialisation: | ||||
https://github.com/bitcoin/bips/blob/master/bip-0064.mediawiki | https://github.com/bitcoin/bips/blob/master/bip-0064.mediawiki | ||||
Example: | Example: | ||||
``` | ``` | ||||
Show All 16 Lines | "utxos" : [ | ||||
"height" : 2147483647, | "height" : 2147483647, | ||||
"txvers" : 1 | "txvers" : 1 | ||||
} | } | ||||
], | ], | ||||
"bitmap" : "1" | "bitmap" : "1" | ||||
} | } | ||||
``` | ``` | ||||
####Memory pool | ### Memory pool | ||||
`GET /rest/mempool/info.json` | `GET /rest/mempool/info.json` | ||||
Returns various information about the TX mempool. | Returns various information about the TX mempool. | ||||
Only supports JSON as output format. | Only supports JSON as output format. | ||||
* size : (numeric) the number of transactions in the TX mempool | * size : (numeric) the number of transactions in the TX mempool | ||||
* bytes : (numeric) size of the TX mempool in bytes | * bytes : (numeric) size of the TX mempool in bytes | ||||
* usage : (numeric) total TX mempool memory usage | * usage : (numeric) total TX mempool memory usage | ||||
`GET /rest/mempool/contents.json` | `GET /rest/mempool/contents.json` | ||||
Returns transactions in the TX mempool. | Returns transactions in the TX mempool. | ||||
Only supports JSON as output format. | Only supports JSON as output format. | ||||
Risks | ## Risks | ||||
------------- | |||||
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. | 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. |