github.com/btcsuite/btcd@v0.24.0/docs/json_rpc_api.md (about)

     1  # JSON RPC API
     2  
     3  1. [Overview](#Overview)<br />
     4  2. [HTTP POST Versus Websockets](#HttpPostVsWebsockets)<br />
     5  3. [Authentication](#Authentication)<br />
     6  3.1.  [Overview](#AuthenticationOverview)<br />
     7  3.2.  [HTTP Basic Access Authentication](#HTTPAuth)<br />
     8  3.3.  [JSON-RPC Authenticate Command (Websocket-specific)](#JSONAuth)<br />
     9  4. [Command-line Utility](#CLIUtil)<br />
    10  5. [Standard Methods](#Methods)<br />
    11  5.1. [Method Overview](#MethodOverview)<br />
    12  5.2. [Method Details](#MethodDetails)<br />
    13  6. [Extension Methods](#ExtensionMethods)<br />
    14  6.1. [Method Overview](#ExtMethodOverview)<br />
    15  6.2. [Method Details](#ExtMethodDetails)<br />
    16  7. [Websocket Extension Methods (Websocket-specific)](#WSExtMethods)<br />
    17  7.1. [Method Overview](#WSExtMethodOverview)<br />
    18  7.2. [Method Details](#WSExtMethodDetails)<br />
    19  8. [Notifications (Websocket-specific)](#Notifications)<br />
    20  8.1. [Notification Overview](#NotificationOverview)<br />
    21  8.2. [Notification Details](#NotificationDetails)<br />
    22  9. [Example Code](#ExampleCode)<br />
    23  9.1. [Go](#ExampleGoApp)<br />
    24  9.2. [node.js](#ExampleNodeJsCode)<br />
    25  
    26  <a name="Overview" />
    27  
    28  ### 1. Overview
    29  
    30  btcd provides a [JSON-RPC](http://json-rpc.org/wiki/specification) API that is
    31  fully compatible with the original bitcoind/bitcoin-qt.  There are a few key
    32  differences between btcd and bitcoind as far as how RPCs are serviced:
    33  * Unlike bitcoind that has the wallet and chain intermingled in the same process
    34    which leads to several issues, btcd intentionally splits the wallet and chain
    35    services into independent processes.  See the blog post
    36    [here](https://blog.conformal.com/btcd-not-your-moms-bitcoin-daemon/) for
    37    further details on why they were separated.  This means that if you are
    38    talking directly to btcd, only chain-related RPCs are available.  However both
    39    chain-related and wallet-related RPCs are available via
    40    [btcwallet](https://github.com/btcsuite/btcwallet).
    41  * btcd is secure by default which means that the RPC connection is TLS-enabled
    42    by default
    43  * btcd provides access to the API through both
    44    [HTTP POST](http://en.wikipedia.org/wiki/POST_%28HTTP%29) requests and
    45    [Websockets](http://en.wikipedia.org/wiki/WebSocket)
    46  
    47  Websockets are the preferred transport for btcd RPC and are used by applications
    48  such as [btcwallet](https://github.com/btcsuite/btcwallet) for inter-process
    49  communication with btcd.  The websocket connection endpoint for btcd is
    50  `wss://your_ip_or_domain:8334/ws`.
    51  
    52  In addition to the [standard API](#Methods), an [extension API](#WSExtMethods)
    53  has been developed that is exclusive to clients using Websockets. In its current
    54  state, this API attempts to cover features found missing in the standard API
    55  during the development of btcwallet.
    56  
    57  While the [standard API](#Methods) is stable, the
    58  [Websocket extension API](#WSExtMethods) should be considered a work in
    59  progress, incomplete, and susceptible to changes (both additions and removals).
    60  
    61  The original bitcoind/bitcoin-qt JSON-RPC API documentation is available at [https://en.bitcoin.it/wiki/Original_Bitcoin_client/API_Calls_list](https://en.bitcoin.it/wiki/Original_Bitcoin_client/API_Calls_list)
    62  
    63  <a name="HttpPostVsWebsockets" />
    64  
    65  ### 2. HTTP POST Versus Websockets
    66  
    67  The btcd RPC server supports both [HTTP POST](http://en.wikipedia.org/wiki/POST_%28HTTP%29)
    68  requests and the preferred [Websockets](http://en.wikipedia.org/wiki/WebSocket).
    69  All of the [standard](#Methods) and [extension](#ExtensionMethods) methods
    70  described in this documentation can be accessed through both.  As the name
    71  indicates, the [Websocket-specific extension](#WSExtMethods) methods can only be
    72  accessed when connected via Websockets.
    73  
    74  As mentioned in the [overview](#Overview), the websocket connection endpoint for
    75  btcd is `wss://your_ip_or_domain:8334/ws`.
    76  
    77  The most important differences between the two transports as it pertains to the
    78  JSON-RPC API are:
    79  
    80  |   |HTTP POST Requests|Websockets|
    81  |---|------------------|----------|
    82  |Allows multiple requests across a single connection|No|Yes|
    83  |Supports asynchronous notifications|No|Yes|
    84  |Scales well with large numbers of requests|No|Yes|
    85  
    86  <a name="Authentication" />
    87  
    88  ### 3. Authentication
    89  
    90  <a name="AuthenticationOverview" />
    91  
    92  **3.1 Authentication Overview**<br />
    93  
    94  The following authentication details are needed before establishing a connection
    95  to a btcd RPC server:
    96  
    97  * **rpcuser** is the full-access username configured for the btcd RPC server
    98  * **rpcpass** is the full-access password configured for the btcd RPC server
    99  * **rpclimituser** is the limited username configured for the btcd RPC server
   100  * **rpclimitpass** is the limited password configured for the btcd RPC server
   101  * **rpccert** is the PEM-encoded X.509 certificate (public key) that the btcd
   102    server is configured with.  It is automatically generated by btcd and placed
   103    in the btcd home directory (which is typically `%LOCALAPPDATA%\Btcd` on
   104    Windows and `~/.btcd` on POSIX-like OSes)
   105  
   106  **NOTE:** As mentioned above, btcd is secure by default which means the RPC
   107  server is not running unless configured with a **rpcuser** and **rpcpass**
   108  and/or a **rpclimituser** and **rpclimitpass**, and uses TLS authentication for
   109  all connections.
   110  
   111  Depending on which connection transaction you are using, you can choose one of
   112  two, mutually exclusive, methods.
   113  - [Use HTTP Authorization Header](#HTTPAuth) - HTTP POST requests and Websockets
   114  - [Use the JSON-RPC "authenticate" command](#JSONAuth) - Websockets only
   115  
   116  <a name="HTTPAuth" />
   117  
   118  **3.2 HTTP Basic Access Authentication**<br />
   119  
   120  The btcd RPC server uses HTTP [basic access authentication](http://en.wikipedia.org/wiki/Basic_access_authentication) with the **rpcuser**
   121  and **rpcpass** detailed above.  If the supplied credentials are invalid, you
   122  will be disconnected immediately upon making the connection.
   123  
   124  <a name="JSONAuth" />
   125  
   126  **3.3 JSON-RPC Authenticate Command (Websocket-specific)**<br />
   127  
   128  While the HTTP basic access authentication method is the preferred method, the
   129  ability to set HTTP headers from websockets is not always available.  In that
   130  case, you will need to use the [authenticate](#authenticate) JSON-RPC method.
   131  
   132  The [authenticate](#authenticate) command must be the first command sent after
   133  connecting to the websocket.  Sending any other commands before authenticating,
   134  supplying invalid credentials, or attempting to authenticate again when already
   135  authenticated will cause the websocket to be closed immediately.
   136  
   137  
   138  <a name="CLIUtil" />
   139  
   140  ### 4. Command-line Utility
   141  
   142  btcd comes with a separate utility named `btcctl` which can be used to issue
   143  these RPC commands via HTTP POST requests to btcd after configuring it with the
   144  information in the [Authentication](#Authentication) section above.  It can also
   145  be used to communicate with any server/daemon/service which provides a JSON-RPC
   146  API compatible with the original bitcoind/bitcoin-qt client.
   147  
   148  <a name="Methods" />
   149  
   150  ### 5. Standard Methods
   151  
   152  <a name="MethodOverview" />
   153  
   154  **5.1 Method Overview**<br />
   155  
   156  The following is an overview of the RPC methods and their current status.  Click
   157  the method name for further details such as parameter and return information.
   158  
   159  |#|Method|Safe for limited user?|Description|
   160  |---|------|----------|-----------|
   161  |1|[addnode](#addnode)|N|Attempts to add or remove a persistent peer.|
   162  |2|[createrawtransaction](#createrawtransaction)|Y|Returns a new transaction spending the provided inputs and sending to the provided addresses.|
   163  |3|[decoderawtransaction](#decoderawtransaction)|Y|Returns a JSON object representing the provided serialized, hex-encoded transaction.|
   164  |4|[decodescript](#decodescript)|Y|Returns a JSON object with information about the provided hex-encoded script.|
   165  |5|[getaddednodeinfo](#getaddednodeinfo)|N|Returns information about manually added (persistent) peers.|
   166  |6|[getbestblockhash](#getbestblockhash)|Y|Returns the hash of the of the best (most recent) block in the longest block chain.|
   167  |7|[getblock](#getblock)|Y|Returns information about a block given its hash.|
   168  |8|[getblockcount](#getblockcount)|Y|Returns the number of blocks in the longest block chain.|
   169  |9|[getblockhash](#getblockhash)|Y|Returns hash of the block in best block chain at the given height.|
   170  |10|[getblockheader](#getblockheader)|Y|Returns the block header of the block.|
   171  |11|[getchaintips](#getchaintips)|Y|Returns information about all known tips in the block tree, including the main chain as well as orphaned branches.|
   172  |12|[getconnectioncount](#getconnectioncount)|N|Returns the number of active connections to other peers.|
   173  |13|[getdifficulty](#getdifficulty)|Y|Returns the proof-of-work difficulty as a multiple of the minimum difficulty.|
   174  |14|[getgenerate](#getgenerate)|N|Return if the server is set to generate coins (mine) or not.|
   175  |15|[gethashespersec](#gethashespersec)|N|Returns a recent hashes per second performance measurement while generating coins (mining).|
   176  |16|[getinfo](#getinfo)|Y|Returns a JSON object containing various state info.|
   177  |17|[getmempoolinfo](#getmempoolinfo)|N|Returns a JSON object containing mempool-related information.|
   178  |18|[getmininginfo](#getmininginfo)|N|Returns a JSON object containing mining-related information.|
   179  |19|[getnettotals](#getnettotals)|Y|Returns a JSON object containing network traffic statistics.|
   180  |20|[getnetworkhashps](#getnetworkhashps)|Y|Returns the estimated network hashes per second for the block heights provided by the parameters.|
   181  |21|[getpeerinfo](#getpeerinfo)|N|Returns information about each connected network peer as an array of json objects.|
   182  |22|[getrawmempool](#getrawmempool)|Y|Returns an array of hashes for all of the transactions currently in the memory pool.|
   183  |23|[getrawtransaction](#getrawtransaction)|Y|Returns information about a transaction given its hash.|
   184  |24|[help](#help)|Y|Returns a list of all commands or help for a specified command.|
   185  |25|[ping](#ping)|N|Queues a ping to be sent to each connected peer.|
   186  |26|[sendrawtransaction](#sendrawtransaction)|Y|Submits the serialized, hex-encoded transaction to the local peer and relays it to the network.<br /><font color="orange">btcd does not yet implement the `allowhighfees` parameter, so it has no effect</font>|
   187  |27|[setgenerate](#setgenerate) |N|Set the server to generate coins (mine) or not.<br/>NOTE: Since btcd does not have the wallet integrated to provide payment addresses, btcd must be configured via the `--miningaddr` option to provide which payment addresses to pay created blocks to for this RPC to function.|
   188  |28|[stop](#stop)|N|Shutdown btcd.|
   189  |29|[submitblock](#submitblock)|Y|Attempts to submit a new serialized, hex-encoded block to the network.|
   190  |30|[validateaddress](#validateaddress)|Y|Verifies the given address is valid.  NOTE: Since btcd does not have a wallet integrated, btcd will only return whether the address is valid or not.|
   191  |31|[verifychain](#verifychain)|N|Verifies the block chain database.|
   192  
   193  <a name="MethodDetails" />
   194  
   195  **5.2 Method Details**<br />
   196  
   197  <a name="addnode"/>
   198  
   199  |   |   |
   200  |---|---|
   201  |Method|addnode|
   202  |Parameters|1. peer (string, required) - ip address and port of the peer to operate on<br />2. command (string, required) - `add` to add a persistent peer, `remove` to remove a persistent peer, or `onetry` to try a single connection to a peer|
   203  |Description|Attempts to add or remove a persistent peer.|
   204  |Returns|Nothing|
   205  [Return to Overview](#MethodOverview)<br />
   206  
   207  ***
   208  <a name="createrawtransaction"/>
   209  
   210  |   |   |
   211  |---|---|
   212  |Method|createrawtransaction|
   213  |Parameters|1. transaction inputs (JSON array, required) - json array of json objects<br />`[`<br />&nbsp;&nbsp;`{`<br />&nbsp;&nbsp;&nbsp;&nbsp;`"txid": "hash", (string, required) the hash of the input transaction`<br />&nbsp;&nbsp;&nbsp;&nbsp;`"vout": n  (numeric, required) the specific output of the input transaction to redeem`<br />&nbsp;&nbsp;`}, ...`<br />`]`<br />2. addresses and amounts (JSON object, required) - json object with addresses as keys and amounts as values<br />`{`<br />&nbsp;&nbsp;`"address": n.nnn (numeric, required) the address to send to as the key and the amount in BTC as the value`<br />&nbsp;&nbsp;`, ...`<br />`}`<br />3. locktime (int64, optional, default=0) - specifies the transaction locktime.  If non-zero, the inputs will also have their locktimes activated. |
   214  |Description|Returns a new transaction spending the provided inputs and sending to the provided addresses.<br />The transaction inputs are not signed in the created transaction.<br />The `signrawtransaction` RPC command provided by wallet must be used to sign the resulting transaction.|
   215  |Returns|`"transaction" (string) hex-encoded bytes of the serialized transaction`|
   216  |Example Parameters|1. transaction inputs `[{"txid":"e6da89de7a6b8508ce8f371a3d0535b04b5e108cb1a6e9284602d3bfd357c018","vout":1}]`<br />2. addresses and amounts `{"13cgrTP7wgbZYWrY9BZ22BV6p82QXQT3nY": 0.49213337}`<br />3. locktime `0`|
   217  |Example Return|`010000000118c057d3bfd3024628e9a6b18c105e4bb035053d1a378fce08856b7ade89dae6010000`<br />`0000ffffffff0199efee02000000001976a9141cb013db35ecccc156fdfd81d03a11c51998f99388`<br />`ac00000000`<br /><font color="orange">**Newlines added for display purposes.  The actual return does not contain newlines.**</font>|
   218  [Return to Overview](#MethodOverview)<br />
   219  
   220  ***
   221  <a name="decoderawtransaction"/>
   222  
   223  |   |   |
   224  |---|---|
   225  |Method|decoderawtransaction|
   226  |Parameters|1. data (string, required) - serialized, hex-encoded transaction|
   227  |Description|Returns a JSON object representing the provided serialized, hex-encoded transaction.|
   228  |Returns|`{ (json object)`<br />&nbsp;&nbsp;`"txid": "hash",  (string) the hash of the transaction`<br />&nbsp;&nbsp;`"version": n,  (numeric) the transaction version`<br />&nbsp;&nbsp;`"locktime": n,  (numeric) the transaction lock time`<br />&nbsp;&nbsp;`"vin": [  (array of json objects) the transaction inputs as json objects`<br />&nbsp;&nbsp;<font color="orange">For coinbase transactions:</font><br />&nbsp;&nbsp;&nbsp;&nbsp;`{ (json object)`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"coinbase": "data",  (string) the hex-encoded bytes of the signature script`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"sequence": n,  (numeric) the script sequence number`<br />&nbsp;&nbsp;&nbsp;&nbsp;`}`<br />&nbsp;&nbsp;<font color="orange">For non-coinbase transactions:</font><br />&nbsp;&nbsp;&nbsp;&nbsp;`{ (json object)`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"txid": "hash", (string) the hash of the origin transaction`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"vout": n, (numeric) the index of the output being redeemed from the origin transaction`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"scriptSig": { (json object) the signature script used to redeem the origin transaction`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"asm": "asm", (string) disassembly of the script`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"hex": "data",  (string) hex-encoded bytes of the script`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`}`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"sequence": n,  (numeric) the script sequence number`<br />&nbsp;&nbsp;&nbsp;&nbsp;`}, ...`<br />&nbsp;&nbsp;`]`<br />&nbsp;&nbsp;`"vout": [  (array of json objects) the transaction outputs as json objects`<br />&nbsp;&nbsp;&nbsp;&nbsp;`{ (json object)`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"value": n, (numeric) the value in BTC`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"n": n, (numeric) the index of this transaction output`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"scriptPubKey": { (json object) the public key script used to pay coins`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"asm": "asm",  (string) disassembly of the script`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"hex": "data", (string) hex-encoded bytes of the script`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"reqSigs": n,  (numeric) the number of required signatures`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"type": "scripttype" (string) the type of the script (e.g. 'pubkeyhash')`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"addresses": [ (json array of string) the bitcoin addresses associated with this output`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"bitcoinaddress",  (string) the bitcoin address`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`...`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`]`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`}`<br />&nbsp;&nbsp;&nbsp;&nbsp;`}, ...`<br />&nbsp;&nbsp;`]`<br />`}`|
   229  |Example Return|`{`<br />&nbsp;&nbsp;`"txid": "4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b",`<br />&nbsp;&nbsp;`"version": 1,`<br />&nbsp;&nbsp;`"locktime": 0,`<br />&nbsp;&nbsp;`"vin": [`<br />&nbsp;&nbsp;<font color="orange">For coinbase transactions:</font><br />&nbsp;&nbsp;&nbsp;&nbsp;`{ (json object)`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"coinbase": "04ffff001d0104455468652054696d65732030332f4a616e2f32303039204368616e63656c6c6...",`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"sequence": 4294967295,`<br />&nbsp;&nbsp;&nbsp;&nbsp;`}`<br />&nbsp;&nbsp;<font color="orange">For non-coinbase transactions:</font><br />&nbsp;&nbsp;&nbsp;&nbsp;`{`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"txid": "60ac4b057247b3d0b9a8173de56b5e1be8c1d1da970511c626ef53706c66be04",`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"vout": 0,`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"scriptSig": {`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"asm": "3046022100cb42f8df44eca83dd0a727988dcde9384953e830b1f8004d57485e2ede1b9c8f0...",`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"hex": "493046022100cb42f8df44eca83dd0a727988dcde9384953e830b1f8004d57485e2ede1b9c8...",`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`}`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"sequence": 4294967295,`<br />&nbsp;&nbsp;&nbsp;&nbsp;`}`<br />&nbsp;&nbsp;`]`<br />&nbsp;&nbsp;`"vout": [`<br />&nbsp;&nbsp;&nbsp;&nbsp;`{`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"value": 50,`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"n": 0,`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"scriptPubKey": {`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"asm": "04678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4ce...",`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"hex": "4104678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f4...",`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"reqSigs": 1,`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"type": "pubkey"`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"addresses": [`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa",`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`]`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`}`<br />&nbsp;&nbsp;&nbsp;&nbsp;`}`<br />&nbsp;&nbsp;`]`<br />`}`|
   230  [Return to Overview](#MethodOverview)<br />
   231  
   232  ***
   233  <a name="decodescript"/>
   234  
   235  |   |   |
   236  |---|---|
   237  |Method|decodescript|
   238  |Parameters|1. script (string, required) - hex-encoded script|
   239  |Description|Returns a JSON object with information about the provided hex-encoded script.|
   240  |Returns|`{ (json object)`<br />&nbsp;&nbsp;`"asm": "asm",  (string) disassembly of the script`<br />&nbsp;&nbsp;`"reqSigs": n,  (numeric) the number of required signatures`<br />&nbsp;&nbsp;`"type": "scripttype",  (string) the type of the script (e.g. 'pubkeyhash')`<br />&nbsp;&nbsp;`"addresses": [ (json array of string) the bitcoin addresses associated with this script`<br />&nbsp;&nbsp;&nbsp;&nbsp;`"bitcoinaddress",  (string) the bitcoin address`<br />&nbsp;&nbsp;&nbsp;&nbsp;`...`<br />&nbsp;&nbsp;`]`<br />&nbsp;&nbsp;`"p2sh": "scripthash",  (string) the script hash for use in pay-to-script-hash transactions`<br />`}`|
   241  |Example Return|`{`<br />&nbsp;&nbsp;`"asm": "OP_DUP OP_HASH160 b0a4d8a91981106e4ed85165a66748b19f7b7ad4 OP_EQUALVERIFY OP_CHECKSIG",`<br />&nbsp;&nbsp;`"reqSigs": 1,`<br />&nbsp;&nbsp;`"type": "pubkeyhash",`<br />&nbsp;&nbsp;`"addresses": [`<br />&nbsp;&nbsp;&nbsp;&nbsp;`"1H71QVBpzuLTNUh5pewaH3UTLTo2vWgcRJ"`<br />&nbsp;&nbsp;`]`<br />&nbsp;&nbsp;`"p2sh": "359b84ff799f48231990ff0298206f54117b08b6"`<br />`}`|
   242  [Return to Overview](#MethodOverview)<br />
   243  
   244  ***
   245  <a name="getaddednodeinfo"/>
   246  
   247  |   |   |
   248  |---|---|
   249  |Method|getaddednodeinfo|
   250  |Parameters|1. dns (boolean, required) - specifies whether the returned data is a JSON object including DNS and connection information, or just a list of added peers<br />2. node (string, optional) - only return information about this specific peer instead of all added peers.|
   251  |Description|Returns information about manually added (persistent) peers.|
   252  |Returns (dns=false)|`["ip:port", ...]`|
   253  |Returns (dns=true)|`[ (json array of objects)`<br />&nbsp;&nbsp;`{ (json object)`<br />&nbsp;&nbsp;&nbsp;&nbsp;`"addednode": "ip_or_domain",  (string) the ip address or domain of the added peer`<br />&nbsp;&nbsp;&nbsp;&nbsp;`"connected": true or false,  (boolean) whether or not the peer is currently connected`<br />&nbsp;&nbsp;&nbsp;&nbsp;`"addresses": [  (json array or objects) DNS lookup and connection information about the peer`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`{ (json object)`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"address": "ip",  (string) the ip address for this DNS entry`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"connected": "inbound/outbound/false"  (string) the connection 'direction' (if connected)`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`}, ...`<br />&nbsp;&nbsp;&nbsp;&nbsp;`]`<br />&nbsp;&nbsp;`}, ...`<br />`]`|
   254  |Example Return (dns=false)|`["192.168.0.10:8333", "mydomain.org:8333"]`|
   255  |Example Return (dns=true)|`[`<br />&nbsp;&nbsp;`{`<br />&nbsp;&nbsp;&nbsp;&nbsp;`"addednode": "mydomain.org:8333",`<br />&nbsp;&nbsp;&nbsp;&nbsp;`"connected": true,`<br />&nbsp;&nbsp;&nbsp;&nbsp;`"addresses": [`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`{`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"address": "1.2.3.4",`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"connected": "outbound"`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`},`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`{`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"address": "5.6.7.8",`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"connected": "false"`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`}`<br />&nbsp;&nbsp;&nbsp;&nbsp;`]`<br />&nbsp;&nbsp;`}`<br />`]`|
   256  [Return to Overview](#MethodOverview)<br />
   257  
   258  ***
   259  <a name="getbestblockhash"/>
   260  
   261  |   |   |
   262  |---|---|
   263  |Method|getbestblockhash|
   264  |Parameters|None|
   265  |Description|Returns the hash of the of the best (most recent) block in the longest block chain.|
   266  |Returns|string|
   267  |Example Return|`0000000000000001f356adc6b29ab42b59f913a396e170f80190dba615bd1e60`|
   268  [Return to Overview](#MethodOverview)<br />
   269  
   270  ***
   271  <a name="getblock"/>
   272  
   273  |   |   |
   274  |---|---|
   275  |Method|getblock|
   276  |Parameters|1. block hash (string, required) - the hash of the block<br />2. verbosity (int, optional, default=1) - Specifies whether the block data should be returned as a hex-encoded string (0), as parsed data with a slice of TXIDs (1), or as parsed data with parsed transaction data (2).
   277  |Description|Returns information about a block given its hash.|
   278  |Returns (verbosity=0)|`"data" (string) hex-encoded bytes of the serialized block`|
   279  |Returns (verbosity=1)|`{ (json object)`<br />&nbsp;&nbsp;`"hash": "blockhash",  (string) the hash of the block (same as provided)`<br />&nbsp;&nbsp;`"confirmations": n,  (numeric) the number of confirmations`<br />&nbsp;&nbsp;`"strippedsize", n (numeric) the size of the block without witness data`<br />&nbsp;&nbsp;`"size": n,  (numeric) the size of the block`<br />&nbsp;&nbsp;`"weight": n, (numeric) value of the weight metric`<br />&nbsp;&nbsp;`"height": n,  (numeric) the height of the block in the block chain`<br />&nbsp;&nbsp;`"version": n,  (numeric) the block version`<br />&nbsp;&nbsp;`"merkleroot": "hash",  (string) root hash of the merkle tree`<br />&nbsp;&nbsp;`"tx": [ (json array of string) the transaction hashes`<br />&nbsp;&nbsp;&nbsp;&nbsp;`"transactionhash",  (string) hash of the parent transaction`<br />&nbsp;&nbsp;&nbsp;&nbsp;`...`<br />&nbsp;&nbsp;`]`<br />&nbsp;&nbsp;`"time": n,  (numeric) the block time in seconds since 1 Jan 1970 GMT`<br />&nbsp;&nbsp;`"nonce": n,  (numeric) the block nonce`<br />&nbsp;&nbsp;`"bits", n,  (numeric) the bits which represent the block difficulty`<br />&nbsp;&nbsp;`difficulty: n.nn,  (numeric) the proof-of-work difficulty as a multiple of the minimum difficulty`<br />&nbsp;&nbsp;`"previousblockhash": "hash",  (string) the hash of the previous block`<br />&nbsp;&nbsp;`"nextblockhash": "hash",  (string) the hash of the next block (only if there is one)`<br />`}`|
   280  |Returns (verbosity=2)|`{ (json object)`<br />&nbsp;&nbsp;`"hash": "blockhash",  (string) the hash of the block (same as provided)`<br />&nbsp;&nbsp;`"confirmations": n,  (numeric) the number of confirmations`<br />&nbsp;&nbsp;`"strippedsize", n (numeric) the size of the block without witness data`<br />&nbsp;&nbsp;`"size": n,  (numeric) the size of the block`<br />&nbsp;&nbsp;`"weight": n, (numeric) value of the weight metric`<br />&nbsp;&nbsp;`"height": n,  (numeric) the height of the block in the block chain`<br />&nbsp;&nbsp;`"version": n,  (numeric) the block version`<br />&nbsp;&nbsp;`"merkleroot": "hash",  (string) root hash of the merkle tree`<br />&nbsp;&nbsp;`"rawtx": [ (array of json objects) the transactions as json objects`<br />&nbsp;&nbsp;&nbsp;&nbsp;`(see getrawtransaction json object details)`<br />&nbsp;&nbsp;`]`<br />&nbsp;&nbsp;`"time": n,  (numeric) the block time in seconds since 1 Jan 1970 GMT`<br />&nbsp;&nbsp;`"nonce": n,  (numeric) the block nonce`<br />&nbsp;&nbsp;`"bits", n,  (numeric) the bits which represent the block difficulty`<br />&nbsp;&nbsp;`difficulty: n.nn,  (numeric) the proof-of-work difficulty as a multiple of the minimum difficulty`<br />&nbsp;&nbsp;`"previousblockhash": "hash",  (string) the hash of the previous block`<br />&nbsp;&nbsp;`"nextblockhash": "hash",  (string) the hash of the next block`<br />`}`|
   281  |Example Return (verbosity=0)|`"010000000000000000000000000000000000000000000000000000000000000000000000`<br />`3ba3edfd7a7b12b27ac72c3e67768f617fc81bc3888a51323a9fb8aa4b1e5e4a29ab5f49`<br />`ffff001d1dac2b7c01010000000100000000000000000000000000000000000000000000`<br />`00000000000000000000ffffffff4d04ffff001d0104455468652054696d65732030332f`<br />`4a616e2f32303039204368616e63656c6c6f72206f6e206272696e6b206f66207365636f`<br />`6e64206261696c6f757420666f722062616e6b73ffffffff0100f2052a01000000434104`<br />`678afdb0fe5548271967f1a67130b7105cd6a828e03909a67962e0ea1f61deb649f6bc3f`<br />`4cef38c4f35504e51ec112de5c384df7ba0b8d578a4c702b6bf11d5fac00000000"`<br /><font color="orange">**Newlines added for display purposes.  The actual return does not contain newlines.**</font>|
   282  |Example Return (verbosity=1)|`{`<br />&nbsp;&nbsp;`"hash": "000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f",`<br />&nbsp;&nbsp;`"confirmations": 277113,`<br />&nbsp;&nbsp;`"size": 285,`<br />&nbsp;&nbsp;`"height": 0,`<br />&nbsp;&nbsp;`"version": 1,`<br />&nbsp;&nbsp;`"merkleroot": "4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b",`<br />&nbsp;&nbsp;`"tx": [`<br />&nbsp;&nbsp;&nbsp;&nbsp;`"4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b"`<br />&nbsp;&nbsp;`],`<br />&nbsp;&nbsp;`"time": 1231006505,`<br />&nbsp;&nbsp;`"nonce": 2083236893,`<br />&nbsp;&nbsp;`"bits": "1d00ffff",`<br />&nbsp;&nbsp;`"difficulty": 1,`<br />&nbsp;&nbsp;`"previousblockhash": "0000000000000000000000000000000000000000000000000000000000000000",`<br />&nbsp;&nbsp;`"nextblockhash": "00000000839a8e6886ab5951d76f411475428afc90947ee320161bbf18eb6048"`<br />`}`|
   283  [Return to Overview](#MethodOverview)<br />
   284  
   285  ***
   286  <a name="getblockcount"/>
   287  
   288  |   |   |
   289  |---|---|
   290  |Method|getblockcount|
   291  |Parameters|None|
   292  |Description|Returns the number of blocks in the longest block chain.|
   293  |Returns|numeric|
   294  |Example Return|`276820`|
   295  [Return to Overview](#MethodOverview)<br />
   296  
   297  ***
   298  <a name="getblockhash"/>
   299  
   300  |   |   |
   301  |---|---|
   302  |Method|getblockhash|
   303  |Parameters|1. block height (numeric, required)|
   304  |Description|Returns hash of the block in best block chain at the given height.|
   305  |Returns|string|
   306  |Example Return|`000000000000000096579458d1c0f1531fcfc58d57b4fce51eb177d8d10e784d`|
   307  [Return to Overview](#MethodOverview)<br />
   308  
   309  ***
   310  <a name="getblockheader"/>
   311  
   312  |   |   |
   313  |---|---|
   314  |Method|getblockheader|
   315  |Parameters|1. block hash (string, required) - the hash of the block<br />2. verbose (boolean, optional, default=true) - specifies the block header is returned as a JSON object instead of a hex-encoded string|
   316  |Description|Returns hex-encoded bytes of the serialized block header.|
   317  |Returns (verbose=false)|`"data" (string) hex-encoded bytes of the serialized block`|
   318  |Returns (verbose=true)|`{ (json object)`<br />&nbsp;&nbsp;`"hash": "blockhash", (string) the hash of the block (same as provided)`<br />&nbsp;&nbsp;`"confirmations": n,  (numeric) the number of confirmations`<br />&nbsp;&nbsp;`"height": n, (numeric) the height of the block in the block chain`<br />&nbsp;&nbsp;`"version": n,  (numeric) the block version`<br />&nbsp;&nbsp;`"merkleroot": "hash",  (string) root hash of the merkle tree`<br />&nbsp;&nbsp;`"time": n,  (numeric) the block time in seconds since 1 Jan 1970 GMT`<br />&nbsp;&nbsp;`"nonce": n,  (numeric) the block nonce`<br />&nbsp;&nbsp;`"bits": n,  (numeric) the bits which represent the block difficulty`<br />&nbsp;&nbsp;`"difficulty": n.nn,  (numeric) the proof-of-work difficulty as a multiple of the minimum difficulty`<br />&nbsp;&nbsp;`"previousblockhash": "hash",  (string) the hash of the previous block`<br />&nbsp;&nbsp;`"nextblockhash": "hash",  (string) the hash of the next block (only if there is one)`<br />`}`|
   319  |Example Return (verbose=false)|`"0200000035ab154183570282ce9afc0b494c9fc6a3cfea05aa8c1add2ecc564900000000`<br />`38ba3d78e4500a5a7570dbe61960398add4410d278b21cd9708e6d9743f374d544fc0552`<br />`27f1001c29c1ea3b"`<br /><font color="orange">**Newlines added for display purposes.  The actual return does not contain newlines.**</font>|
   320  |Example Return (verbose=true)|`{`<br />&nbsp;&nbsp;`"hash": "00000000009e2958c15ff9290d571bf9459e93b19765c6801ddeccadbb160a1e",`<br />&nbsp;&nbsp;`"confirmations": 392076,`<br />&nbsp;&nbsp;`"height": 100000,`<br />&nbsp;&nbsp;`"version": 2,`<br />&nbsp;&nbsp;`"merkleroot": "d574f343976d8e70d91cb278d21044dd8a396019e6db70755a0a50e4783dba38",`<br />&nbsp;&nbsp;`"time": 1376123972,`<br />&nbsp;&nbsp;`"nonce": 1005240617,`<br />&nbsp;&nbsp;`"bits": "1c00f127",`<br />&nbsp;&nbsp;`"difficulty": 271.75767393,`<br />&nbsp;&nbsp;`"previousblockhash": "000000004956cc2edd1a8caa05eacfa3c69f4c490bfc9ace820257834115ab35",`<br />&nbsp;&nbsp;`"nextblockhash": "0000000000629d100db387f37d0f37c51118f250fb0946310a8c37316cbc4028"`<br />`}`|
   321  [Return to Overview](#MethodOverview)<br />
   322  
   323  ***
   324  <a name="getchaintips"/>
   325  
   326  |   |   |
   327  |---|---|
   328  |Method|getchaintips|
   329  |Parameters|None|
   330  |Description|Returns information about all known tips in the block tree, including the main chain as well as orphaned branches|
   331  |Returns|`(A json object array)`<br />`height`: `(numeric)` The height of the chain tip.<br />`hash`: `(string)` The block hash of the chain tip.<br />`branchlen`: `(numeric)` Returns zero for main chain. Otherwise is the length of branch connecting the tip to the main chain.<br />`status`: `(string)`  Status of the chain. Returns "active" for the main chain.`|
   332  |Example Return|`["{"height": 1, "hash": "78b945a390c561cf8b9ccf0598be15d7d85c67022bf71083c0b0bd8042fc30d7", "branchlen": 1, "status": "valid-fork"}, {"height": 1, "hash": "584c830a4783c6331e59cb984686cfec14bccc596fe8bbd1660b90cda359b42a", "branchlen": 0, "status": "active"}"]`|
   333  [Return to Overview](#MethodOverview)<br />
   334  
   335  ***
   336  <a name="getconnectioncount"/>
   337  
   338  |   |   |
   339  |---|---|
   340  |Method|getconnectioncount|
   341  |Parameters|None|
   342  |Description|Returns the number of active connections to other peers|
   343  |Returns|numeric|
   344  |Example Return|`8`|
   345  [Return to Overview](#MethodOverview)<br />
   346  
   347  ***
   348  <a name="getdifficulty"/>
   349  
   350  |   |   |
   351  |---|---|
   352  |Method|getdifficulty|
   353  |Parameters|None|
   354  |Description|Returns the proof-of-work difficulty as a multiple of the minimum difficulty.|
   355  |Returns|numeric|
   356  |Example Return|`1180923195.260000`|
   357  [Return to Overview](#MethodOverview)<br />
   358  
   359  ***
   360  <a name="getgenerate"/>
   361  
   362  |   |   |
   363  |---|---|
   364  |Method|getgenerate|
   365  |Parameters|None|
   366  |Description|Return if the server is set to generate coins (mine) or not.|
   367  |Returns|`false` (boolean)|
   368  [Return to Overview](#MethodOverview)<br />
   369  
   370  ***
   371  <a name="gethashespersec"/>
   372  
   373  |   |   |
   374  |---|---|
   375  |Method|gethashespersec|
   376  |Parameters|None|
   377  |Description|Returns a recent hashes per second performance measurement while generating coins (mining).|
   378  |Returns|`0` (numeric)|
   379  [Return to Overview](#MethodOverview)<br />
   380  
   381  ***
   382  <a name="getinfo"/>
   383  
   384  |   |   |
   385  |---|---|
   386  |Method|getinfo|
   387  |Parameters|None|
   388  |Description|Returns a JSON object containing various state info.|
   389  |Notes|NOTE: Since btcd does NOT contain wallet functionality, wallet-related fields are not returned.  See getinfo in btcwallet for a version which includes that information.|
   390  |Returns|`{ (json object)`<br />&nbsp;&nbsp;`"version": n,  (numeric) the version of the server`<br />&nbsp;&nbsp;`"protocolversion": n,  (numeric) the latest supported protocol version`<br />&nbsp;&nbsp;`"blocks": n,  (numeric) the number of blocks processed`<br />&nbsp;&nbsp;`"timeoffset": n,  (numeric) the time offset`<br />&nbsp;&nbsp;`"connections": n,  (numeric) the number of connected peers`<br />&nbsp;&nbsp;`"proxy": "host:port",  (string) the proxy used by the server`<br />&nbsp;&nbsp;`"difficulty": n.nn,  (numeric) the current target difficulty`<br />&nbsp;&nbsp;`"testnet": true or false,  (boolean) whether or not server is using testnet`<br />&nbsp;&nbsp;`"relayfee": n.nn,  (numeric) the minimum relay fee for non-free transactions in BTC/KB`<br />`}`|
   391  |Example Return|`{`<br />&nbsp;&nbsp;`"version": 70000`<br />&nbsp;&nbsp;`"protocolversion": 70001,  `<br />&nbsp;&nbsp;`"blocks": 298963,`<br />&nbsp;&nbsp;`"timeoffset": 0,`<br />&nbsp;&nbsp;`"connections": 17,`<br />&nbsp;&nbsp;`"proxy": "",`<br />&nbsp;&nbsp;`"difficulty": 8000872135.97,`<br />&nbsp;&nbsp;`"testnet": false,`<br />&nbsp;&nbsp;`"relayfee": 0.00001,`<br />`}`|
   392  [Return to Overview](#MethodOverview)<br />
   393  
   394  ***
   395  <a name="getmempoolinfo"/>
   396  
   397  |   |   |
   398  |---|---|
   399  |Method|getmempoolinfo|
   400  |Parameters|None|
   401  |Description|Returns a JSON object containing mempool-related information.|
   402  |Returns|`{ (json object)`<br />&nbsp;&nbsp;`"bytes": n,  (numeric) size in bytes of the mempool`<br />&nbsp;&nbsp;`"size": n,  (numeric) number of transactions in the mempool`<br />`}`|
   403  Example Return|`{`<br />&nbsp;&nbsp;`"bytes": 310768,`<br />&nbsp;&nbsp;`"size": 157,`<br />`}`|
   404  [Return to Overview](#MethodOverview)<br />
   405  
   406  ***
   407  <a name="getmininginfo"/>
   408  
   409  |   |   |
   410  |---|---|
   411  |Method|getmininginfo|
   412  |Parameters|None|
   413  |Description|Returns a JSON object containing mining-related information.|
   414  |Returns|`{ (json object)`<br />&nbsp;&nbsp;`"blocks": n,  (numeric) latest best block`<br />&nbsp;&nbsp;`"currentblocksize": n,  (numeric) size of the latest best block`<br />&nbsp;&nbsp;`"currentblockweight": n,  (numeric) weight of the latest best block`<br />&nbsp;&nbsp;`"currentblocktx": n,  (numeric) number of transactions in the latest best block`<br />&nbsp;&nbsp;`"difficulty": n.nn,  (numeric) current target difficulty`<br />&nbsp;&nbsp;`"errors": "errors",  (string) any current errors`<br />&nbsp;&nbsp;`"generate": true or false,  (boolean) whether or not server is set to generate coins`<br />&nbsp;&nbsp;`"genproclimit": n,  (numeric) number of processors to use for coin generation (-1 when disabled)`<br />&nbsp;&nbsp;`"hashespersec": n,  (numeric) recent hashes per second performance measurement while generating coins`<br />&nbsp;&nbsp;`"networkhashps": n,  (numeric) estimated network hashes per second for the most recent blocks`<br />&nbsp;&nbsp;`"pooledtx": n,  (numeric) number of transactions in the memory pool`<br />&nbsp;&nbsp;`"testnet": true or false,  (boolean) whether or not server is using testnet`<br />`}`|
   415  |Example Return|`{`<br />&nbsp;&nbsp;`"blocks": 236526,`<br />&nbsp;&nbsp;`"currentblocksize": 185,`<br />&nbsp;&nbsp;`"currentblockweight": 740,`<br />&nbsp;&nbsp;`"currentblocktx": 1,`<br />&nbsp;&nbsp;`"difficulty": 256,`<br />&nbsp;&nbsp;`"errors": "",`<br />&nbsp;&nbsp;`"generate": false,`<br />&nbsp;&nbsp;`"genproclimit": -1,`<br />&nbsp;&nbsp;`"hashespersec": 0,`<br />&nbsp;&nbsp;`"networkhashps": 33081554756,`<br />&nbsp;&nbsp;`"pooledtx": 8,`<br />&nbsp;&nbsp;`"testnet": true,`<br />`}`|
   416  [Return to Overview](#MethodOverview)<br />
   417  
   418  ***
   419  <a name="getnettotals"/>
   420  
   421  |   |   |
   422  |---|---|
   423  |Method|getnettotals|
   424  |Parameters|None|
   425  |Description|Returns a JSON object containing network traffic statistics.|
   426  |Returns|`{`<br />&nbsp;&nbsp;`"totalbytesrecv": n,  (numeric) total bytes received`<br />&nbsp;&nbsp;`"totalbytessent": n,  (numeric) total bytes sent`<br />&nbsp;&nbsp;`"timemillis": n  (numeric) number of milliseconds since 1 Jan 1970 GMT`<br />`}`|
   427  |Example Return|`{`<br />&nbsp;&nbsp;`"totalbytesrecv": 1150990,`<br />&nbsp;&nbsp;`"totalbytessent": 206739,`<br />&nbsp;&nbsp;`"timemillis": 1391626433845`<br />`}`|
   428  [Return to Overview](#MethodOverview)<br />
   429  
   430  ***
   431  <a name="getnetworkhashps"/>
   432  
   433  |   |   |
   434  |---|---|
   435  |Method|getnetworkhashps|
   436  |Parameters|1. blocks (numeric, optional, default=120) - The number of blocks, or -1 for blocks since last difficulty change<br />2. height (numeric, optional, default=-1) - Perform estimate ending with this height or -1 for current best chain block height|
   437  |Description|Returns the estimated network hashes per second for the block heights provided by the parameters.|
   438  |Returns|numeric|
   439  |Example Return|`6573971939`|
   440  [Return to Overview](#MethodOverview)<br />
   441  
   442  ***
   443  <a name="getpeerinfo"/>
   444  
   445  |   |   |
   446  |---|---|
   447  |Method|getpeerinfo|
   448  |Parameters|None|
   449  |Description|Returns data about each connected network peer as an array of json objects.|
   450  |Returns|`[`<br />&nbsp;&nbsp;`{`<br />&nbsp;&nbsp;&nbsp;&nbsp;`"addr": "host:port",  (string) the ip address and port of the peer`<br />&nbsp;&nbsp;&nbsp;&nbsp;`"services": "00000001",  (string) the services supported by the peer`<br />&nbsp;&nbsp;&nbsp;&nbsp;`"lastrecv": n,  (numeric) time the last message was received in seconds since 1 Jan 1970 GMT`<br />&nbsp;&nbsp;&nbsp;&nbsp;`"lastsend": n,  (numeric) time the last message was sent in seconds since 1 Jan 1970 GMT`<br />&nbsp;&nbsp;&nbsp;&nbsp;`"bytessent": n,  (numeric) total bytes sent`<br />&nbsp;&nbsp;&nbsp;&nbsp;`"bytesrecv": n,  (numeric) total bytes received`<br />&nbsp;&nbsp;&nbsp;&nbsp;`"conntime": n,  (numeric) time the connection was made in seconds since 1 Jan 1970 GMT`<br />&nbsp;&nbsp;&nbsp;&nbsp;`"pingtime": n,  (numeric) number of microseconds the last ping took`<br />&nbsp;&nbsp;&nbsp;&nbsp;`"pingwait": n,  (numeric) number of microseconds a queued ping has been waiting for a response`<br />&nbsp;&nbsp;&nbsp;&nbsp;`"version": n,  (numeric) the protocol version of the peer`<br />&nbsp;&nbsp;&nbsp;&nbsp;`"subver": "useragent",  (string) the user agent of the peer`<br />&nbsp;&nbsp;&nbsp;&nbsp;`"inbound": true_or_false,  (boolean) whether or not the peer is an inbound connection`<br />&nbsp;&nbsp;&nbsp;&nbsp;`"startingheight": n,  (numeric) the latest block height the peer knew about when the connection was established`<br />&nbsp;&nbsp;&nbsp;&nbsp;`"currentheight": n,  (numeric) the latest block height the peer is known to have relayed since connected`<br />&nbsp;&nbsp;&nbsp;&nbsp;`"syncnode": true_or_false,  (boolean) whether or not the peer is the sync peer`<br />&nbsp;&nbsp;`}, ...`<br />`]`|
   451  |Example Return|`[`<br />&nbsp;&nbsp;`{`<br />&nbsp;&nbsp;&nbsp;&nbsp;`"addr": "178.172.xxx.xxx:8333",`<br />&nbsp;&nbsp;&nbsp;&nbsp;`"services": "00000001",`<br />&nbsp;&nbsp;&nbsp;&nbsp;`"lastrecv": 1388183523,`<br />&nbsp;&nbsp;&nbsp;&nbsp;`"lastsend": 1388185470,`<br />&nbsp;&nbsp;&nbsp;&nbsp;`"bytessent": 287592965,`<br />&nbsp;&nbsp;&nbsp;&nbsp;`"bytesrecv": 780340,`<br />&nbsp;&nbsp;&nbsp;&nbsp;`"conntime": 1388182973,`<br />&nbsp;&nbsp;&nbsp;&nbsp;`"pingtime": 405551,`<br />&nbsp;&nbsp;&nbsp;&nbsp;`"pingwait": 183023,`<br />&nbsp;&nbsp;&nbsp;&nbsp;`"version": 70001,`<br />&nbsp;&nbsp;&nbsp;&nbsp;`"subver": "/btcd:0.4.0/",`<br />&nbsp;&nbsp;&nbsp;&nbsp;`"inbound": false,`<br />&nbsp;&nbsp;&nbsp;&nbsp;`"startingheight": 276921,`<br />&nbsp;&nbsp;&nbsp;&nbsp;`"currentheight": 276955,`<br/>&nbsp;&nbsp;&nbsp;&nbsp;`"syncnode": true,`<br />&nbsp;&nbsp;`}`<br />`]`|
   452  [Return to Overview](#MethodOverview)<br />
   453  
   454  ***
   455  <a name="getrawtransaction"/>
   456  
   457  |   |   |
   458  |---|---|
   459  |Method|getrawtransaction|
   460  |Parameters|1. transaction hash (string, required) - the hash of the transaction<br />2. verbose (int, optional, default=0) - specifies the transaction is returned as a JSON object instead of hex-encoded string|
   461  |Description|Returns information about a transaction given its hash.|
   462  |Returns (verbose=0)|`"data" (string) hex-encoded bytes of the serialized transaction`|
   463  |Returns (verbose=1)|`{ (json object)`<br />&nbsp;&nbsp;`"hex": "data",  (string) hex-encoded transaction`<br />&nbsp;&nbsp;`"txid": "hash",  (string) the hash of the transaction`<br />&nbsp;&nbsp;`"version": n,  (numeric) the transaction version`<br />&nbsp;&nbsp;`"locktime": n,  (numeric) the transaction lock time`<br />&nbsp;&nbsp;`"vin": [  (array of json objects) the transaction inputs as json objects`<br />&nbsp;&nbsp;<font color="orange">For coinbase transactions:</font><br />&nbsp;&nbsp;&nbsp;&nbsp;`{ (json object)`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"coinbase": "data",  (string) the hex-encoded bytes of the signature script`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"sequence": n,  (numeric) the script sequence number`<br />&nbsp;&nbsp;&nbsp;&nbsp;`"txinwitness": “data", (string) the witness stack for the input`<br />&nbsp;&nbsp;&nbsp;&nbsp;`}`<br />&nbsp;&nbsp;<font color="orange">For non-coinbase transactions:</font><br />&nbsp;&nbsp;&nbsp;&nbsp;`{ (json object)`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"txid": "hash", (string) the hash of the origin transaction`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"vout": n, (numeric) the index of the output being redeemed from the origin transaction`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"scriptSig": { (json object) the signature script used to redeem the origin transaction`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"asm": "asm", (string) disassembly of the script`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"hex": "data",  (string) hex-encoded bytes of the script`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`}`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"sequence": n,  (numeric) the script sequence number`<br />&nbsp;&nbsp;&nbsp;&nbsp;`"txinwitness": “data", (string) the witness stack for the input`<br />&nbsp;&nbsp;&nbsp;&nbsp;`}, ...`<br />&nbsp;&nbsp;`]`<br />&nbsp;&nbsp;`"vout": [  (array of json objects) the transaction outputs as json objects`<br />&nbsp;&nbsp;&nbsp;&nbsp;`{ (json object)`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"value": n, (numeric) the value in BTC`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"n": n, (numeric) the index of this transaction output`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"scriptPubKey": { (json object) the public key script used to pay coins`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"asm": "asm",  (string) disassembly of the script`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"hex": "data", (string) hex-encoded bytes of the script`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"reqSigs": n,  (numeric) the number of required signatures`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"type": "scripttype" (string) the type of the script (e.g. 'pubkeyhash')`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"addresses": [ (json array of string) the bitcoin addresses associated with this output`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"bitcoinaddress",  (string) the bitcoin address`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`...`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`]`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`}`<br />&nbsp;&nbsp;&nbsp;&nbsp;`}, ...`<br />&nbsp;&nbsp;`]`<br />`}`|
   464  |Example Return (verbose=0)|`"010000000104be666c7053ef26c6110597dad1c1e81b5e6be53d17a8b9d0b34772054bac60000000`<br />`008c493046022100cb42f8df44eca83dd0a727988dcde9384953e830b1f8004d57485e2ede1b9c8f`<br />`022100fbce8d84fcf2839127605818ac6c3e7a1531ebc69277c504599289fb1e9058df0141045a33`<br />`76eeb85e494330b03c1791619d53327441002832f4bd618fd9efa9e644d242d5e1145cb9c2f71965`<br />`656e276633d4ff1a6db5e7153a0a9042745178ebe0f5ffffffff0280841e00000000001976a91406`<br />`f1b6703d3f56427bfcfd372f952d50d04b64bd88ac4dd52700000000001976a9146b63f291c295ee`<br />`abd9aee6be193ab2d019e7ea7088ac00000000`<br /><font color="orange">**Newlines added for display purposes.  The actual return does not contain newlines.**</font>|
   465  |Example Return (verbose=1)|`{`<br />&nbsp;&nbsp;`"hex": "01000000010000000000000000000000000000000000000000000000000000000000000000f...",`<br />&nbsp;&nbsp;`"txid": "90743aad855880e517270550d2a881627d84db5265142fd1e7fb7add38b08be9",`<br />&nbsp;&nbsp;`"version": 1,`<br />&nbsp;&nbsp;`"locktime": 0,`<br />&nbsp;&nbsp;`"vin": [`<br />&nbsp;&nbsp;<font color="orange">For coinbase transactions:</font><br />&nbsp;&nbsp;&nbsp;&nbsp;`{ (json object)`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"coinbase": "03708203062f503253482f04066d605108f800080100000ea2122f6f7a636f696e4065757374726174756d2f",`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"sequence": 0,`<br />&nbsp;&nbsp;&nbsp;&nbsp;`}`<br />&nbsp;&nbsp;<font color="orange">For non-coinbase transactions:</font><br />&nbsp;&nbsp;&nbsp;&nbsp;`{`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"txid": "60ac4b057247b3d0b9a8173de56b5e1be8c1d1da970511c626ef53706c66be04",`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"vout": 0,`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"scriptSig": {`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"asm": "3046022100cb42f8df44eca83dd0a727988dcde9384953e830b1f8004d57485e2ede1b9c8f0...",`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"hex": "493046022100cb42f8df44eca83dd0a727988dcde9384953e830b1f8004d57485e2ede1b9c8...",`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`}`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"sequence": 4294967295,`<br />&nbsp;&nbsp;&nbsp;&nbsp;`}`<br />&nbsp;&nbsp;`]`<br />&nbsp;&nbsp;`"vout": [`<br />&nbsp;&nbsp;&nbsp;&nbsp;`{`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"value": 25.1394,`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"n": 0,`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"scriptPubKey": {`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"asm": "OP_DUP OP_HASH160 ea132286328cfc819457b9dec386c4b5c84faa5c OP_EQUALVERIFY OP_CHECKSIG",`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"hex": "76a914ea132286328cfc819457b9dec386c4b5c84faa5c88ac",`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"reqSigs": 1,`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"type": "pubkeyhash"`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"addresses": [`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"1NLg3QJMsMQGM5KEUaEu5ADDmKQSLHwmyh",`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`]`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`}`<br />&nbsp;&nbsp;&nbsp;&nbsp;`}`<br />&nbsp;&nbsp;`]`<br />`}`|
   466  [Return to Overview](#MethodOverview)<br />
   467  
   468  ***
   469  <a name="help"/>
   470  
   471  |   |   |
   472  |---|---|
   473  |Method|help|
   474  |Parameters|1. command (string, optional) - the command to get help for|
   475  |Description|Returns a list of all commands or help for a specified command.<br />When no `command` parameter is specified, a list of avaialable commands is returned<br />When `command` is a valid method, the help text for that method is returned.|
   476  |Returns|string|
   477  |Example Return|getblockcount<br />Returns a numeric for the number of blocks in the longest block chain.|
   478  [Return to Overview](#MethodOverview)<br />
   479  
   480  ***
   481  <a name="ping"/>
   482  
   483  |   |   |
   484  |---|---|
   485  |Method|ping|
   486  |Parameters|None|
   487  |Description|Queues a ping to be sent to each connected peer.<br />Ping times are provided by [getpeerinfo](#getpeerinfo) via the `pingtime` and `pingwait` fields.|
   488  |Returns|Nothing|
   489  [Return to Overview](#MethodOverview)<br />
   490  
   491  ***
   492  <a name="getrawmempool"/>
   493  
   494  |   |   |
   495  |---|---|
   496  |Method|getrawmempool|
   497  |Parameters|1. verbose (boolean, optional, default=false)|
   498  |Description|Returns an array of hashes for all of the transactions currently in the memory pool.<br />The `verbose` flag specifies that each transaction is returned as a JSON object.|
   499  |Notes|<font color="orange">Since btcd does not perform any mining, the priority related fields `startingpriority` and `currentpriority` that are available when the `verbose` flag is set are always 0.</font>|
   500  |Returns (verbose=false)|`[ (json array of string)`<br />&nbsp;&nbsp;`"transactionhash", (string) hash of the transaction`<br />&nbsp;&nbsp;`...`<br />`]`|
   501  |Returns (verbose=true)|`{ (json object)`<br />&nbsp;&nbsp;`"transactionhash": { (json object)`<br />&nbsp;&nbsp;&nbsp;&nbsp;`"size": n, (numeric) transaction size in bytes`<br />&nbsp;&nbsp;&nbsp;&nbsp;`"vsize": n, (numeric) transaction virtual size`<br />&nbsp;&nbsp;&nbsp;&nbsp;`"weight": n, (numeric) The transaction's weight (between vsize*4-3 and vsize*4)`<br />&nbsp;&nbsp;&nbsp;&nbsp;`"fee" : n, (numeric) transaction fee in bitcoins`<br />&nbsp;&nbsp;&nbsp;&nbsp;`"time": n, (numeric) local time transaction entered pool in seconds since 1 Jan 1970 GMT`<br />&nbsp;&nbsp;&nbsp;&nbsp;`"height": n, (numeric) block height when transaction entered the pool`<br />&nbsp;&nbsp;&nbsp;&nbsp;`"startingpriority": n, (numeric) priority when transaction entered the pool`<br />&nbsp;&nbsp;&nbsp;&nbsp;`"currentpriority": n, (numeric) current priority`<br />&nbsp;&nbsp;&nbsp;&nbsp;`"depends": [ (json array) unconfirmed transactions used as inputs for this transaction`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"transactionhash", (string) hash of the parent transaction`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`...`<br />&nbsp;&nbsp;&nbsp;&nbsp;`]`<br />&nbsp;&nbsp;`}, ...`<br />`}`|
   502  |Example Return (verbose=false)|`[`<br />&nbsp;&nbsp;`"3480058a397b6ffcc60f7e3345a61370fded1ca6bef4b58156ed17987f20d4e7",`<br />&nbsp;&nbsp;`"cbfe7c056a358c3a1dbced5a22b06d74b8650055d5195c1c2469e6b63a41514a"`<br />`]`|
   503  |Example Return (verbose=true)|`{`<br />&nbsp;&nbsp;`"1697a19cede08694278f19584e8dcc87945f40c6b59a942dd8906f133ad3f9cc": {`<br />&nbsp;&nbsp;&nbsp;&nbsp;`"size": 226,`<br />&nbsp;&nbsp;&nbsp;&nbsp;`"fee" : 0.0001,`<br />&nbsp;&nbsp;&nbsp;&nbsp;`"time": 1387992789,`<br />&nbsp;&nbsp;&nbsp;&nbsp;`"height": 276836,`<br />&nbsp;&nbsp;&nbsp;&nbsp;`"startingpriority": 0,`<br />&nbsp;&nbsp;&nbsp;&nbsp;`"currentpriority": 0,`<br />&nbsp;&nbsp;&nbsp;&nbsp;`"depends": [`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"aa96f672fcc5a1ec6a08a94aa46d6b789799c87bd6542967da25a96b2dee0afb",`<br />&nbsp;&nbsp;&nbsp;&nbsp;`]`<br />`}`|
   504  [Return to Overview](#MethodOverview)<br />
   505  
   506  ***
   507  <a name="setgenerate"/>
   508  
   509  |   |   |
   510  |---|---|
   511  |Method|setgenerate|
   512  |Parameters|1. generate (boolean, required) - `true` to enable generation, `false` to disable it<br />2. genproclimit (numeric, optional) - the number of processors (cores) to limit generation to or `-1` for default|
   513  |Description|Set the server to generate coins (mine) or not.|
   514  |Notes|NOTE: Since btcd does not have the wallet integrated to provide payment addresses, btcd must be configured via the `--miningaddr` option to provide which payment addresses to pay created blocks to for this RPC to function.|
   515  |Returns|Nothing|
   516  [Return to Overview](#MethodOverview)<br />
   517  
   518  ***
   519  <a name="sendrawtransaction"/>
   520  
   521  |   |   |
   522  |---|---|
   523  |Method|sendrawtransaction|
   524  |Parameters|1. signedhex (string, required) serialized, hex-encoded signed transaction<br />2. allowhighfees (boolean, optional, default=false) whether or not to allow insanely high fees|
   525  |Description|Submits the serialized, hex-encoded transaction to the local peer and relays it to the network.|
   526  |Notes|<font color="orange">btcd does not yet implement the `allowhighfees` parameter, so it has no effect</font>|
   527  |Returns|`"hash" (string) the hash of the transaction`|
   528  |Example Return|`"1697a19cede08694278f19584e8dcc87945f40c6b59a942dd8906f133ad3f9cc"`|
   529  [Return to Overview](#MethodOverview)<br />
   530  
   531  ***
   532  <a name="submitblock"/>
   533  
   534  |   |   |
   535  |---|---|
   536  |Method|submitblock|
   537  |Parameters|1. data (string, required) serialized, hex-encoded block<br />2. params (json object, optional, default=nil) this parameter is currently ignored|
   538  |Description|Attempts to submit a new serialized, hex-encoded block to the network.|
   539  |Returns (success)|Success: Nothing<br />Failure: `"rejected: reason"` (string)|
   540  [Return to Overview](#MethodOverview)<br />
   541  
   542  ***
   543  <a name="stop"/>
   544  
   545  |   |   |
   546  |---|---|
   547  |Method|stop|
   548  |Parameters|None|
   549  |Description|Shutdown btcd.|
   550  |Returns|`"btcd stopping."` (string)|
   551  [Return to Overview](#MethodOverview)<br />
   552  
   553  ***
   554  <a name="validateaddress"/>
   555  
   556  |   |   |
   557  |---|---|
   558  |Method|validateaddress|
   559  |Parameters|1. address (string, required) - bitcoin address|
   560  |Description|Verify an address is valid.|
   561  |Returns|`{ (json object)`<br />&nbsp;&nbsp;`"isvalid": true or false,  (bool) whether or not the address is valid.`<br />&nbsp;&nbsp;`"address": "bitcoinaddress", (string) the bitcoin address validated.`<br />}|
   562  [Return to Overview](#MethodOverview)<br />
   563  
   564  ***
   565  <a name="verifychain"/>
   566  
   567  |   |   |
   568  |---|---|
   569  |Method|verifychain|
   570  |Parameters|1. checklevel (numeric, optional, default=3) - how in-depth the verification is (0=least amount of checks, higher levels are clamped to the highest supported level)<br />2. numblocks (numeric, optional, default=288) - the number of blocks starting from the end of the chain to verify|
   571  |Description|Verifies the block chain database.<br />The actual checks performed by the `checklevel` parameter is implementation specific.  For btcd this is:<br />`checklevel=0` - Look up each block and ensure it can be loaded from the database.<br />`checklevel=1` - Perform basic context-free sanity checks on each block.|
   572  |Notes|<font color="orange">Btcd currently only supports `checklevel` 0 and 1, but the default is still 3 for compatibility.  Per the information in the Parameters section above, higher levels are automatically clamped to the highest supported level, so this means the default is effectively 1 for btcd.</font>|
   573  |Returns|`true` or `false` (boolean)|
   574  |Example Return|`true`|
   575  [Return to Overview](#MethodOverview)<br />
   576  
   577  
   578  <a name="ExtensionMethods" />
   579  
   580  ### 6. Extension Methods
   581  
   582  <a name="ExtMethodOverview" />
   583  
   584  **6.1 Method Overview**<br />
   585  
   586  The following is an overview of the RPC methods which are implemented by btcd, but not the original bitcoind client. Click the method name for further details such as parameter and return information.
   587  
   588  |#|Method|Safe for limited user?|Description|
   589  |---|------|----------|-----------|
   590  |1|[debuglevel](#debuglevel)|N|Dynamically changes the debug logging level.|
   591  |2|[getbestblock](#getbestblock)|Y|Get block height and hash of best block in the main chain.|None|
   592  |3|[getcurrentnet](#getcurrentnet)|Y|Get bitcoin network btcd is running on.|None|
   593  |4|[searchrawtransactions](#searchrawtransactions)|Y|Query for transactions related to a particular address.|None|
   594  |5|[node](#node)|N|Attempts to add or remove a peer. |None|
   595  |6|[generate](#generate)|N|When in simnet or regtest mode, generate a set number of blocks. |None|
   596  |7|[version](#version)|Y|Returns the JSON-RPC API version.|
   597  |8|[getheaders](#getheaders)|Y|Returns block headers starting with the first known block hash from the request.|
   598  
   599  
   600  <a name="ExtMethodDetails" />
   601  
   602  **6.2 Method Details**<br />
   603  
   604  <a name="debuglevel"/>
   605  
   606  |   |   |
   607  |---|---|
   608  |Method|debuglevel|
   609  |Parameters|1. _levelspec_ (string)|
   610  |Description|Dynamically changes the debug logging level.<br />The levelspec can either a debug level or of the form `<subsystem>=<level>,<subsystem2>=<level2>,...`<br />The valid debug levels are `trace`, `debug`, `info`, `warn`, `error`, and `critical`.<br />The valid subsystems are `AMGR`, `ADXR`, `BCDB`, `BMGR`, `BTCD`, `CHAN`, `DISC`, `PEER`, `RPCS`, `SCRP`, `SRVR`, and `TXMP`.<br />Additionally, the special keyword `show` can be used to get a list of the available subsystems.|
   611  |Returns|string|
   612  |Example Return|`Done.`|
   613  |Example `show` Return|`Supported subsystems [AMGR ADXR BCDB BMGR BTCD CHAN DISC PEER RPCS SCRP SRVR TXMP]`|
   614  [Return to Overview](#ExtMethodOverview)<br />
   615  
   616  ***
   617  
   618  <a name="getbestblock"/>
   619  
   620  |   |   |
   621  |---|---|
   622  |Method|getbestblock|
   623  |Parameters|None|
   624  |Description|Get block height and hash of best block in the main chain.|
   625  |Returns|`{ (json object)`<br />&nbsp;`"hash": "data",  (string) the hex-encoded bytes of the best block hash`<br />&nbsp;`"height": n (numeric) the block height of the best block`<br />`}`|
   626  [Return to Overview](#ExtMethodOverview)<br />
   627  
   628  ***
   629  
   630  <a name="getcurrentnet"/>
   631  
   632  |   |   |
   633  |---|---|
   634  |Method|getcurrentnet|
   635  |Parameters|None|
   636  |Description|Get bitcoin network btcd is running on.|
   637  |Returns|numeric|
   638  |Example Return|`3652501241` (mainnet)<br />`118034699` (testnet3)|
   639  [Return to Overview](#ExtMethodOverview)<br />
   640  
   641  ***
   642  
   643  <a name="searchrawtransactions"/>
   644  
   645  |   |   |
   646  |---|---|
   647  |Method|searchrawtransactions|
   648  |Parameters|1. address (string, required) - bitcoin address <br /> 2. verbose (int, optional, default=true) - specifies the transaction is returned as a JSON object instead of hex-encoded string <br />3. skip (int, optional, default=0) - the number of leading transactions to leave out of the final response <br /> 4. count (int, optional, default=100) - the maximum number of transactions to return <br /> 5. vinextra (int, optional, default=0) - Specify that extra data from previous output will be returned in vin <br /> 6. reverse (boolean, optional, default=false) - Specifies that the transactions should be returned in reverse chronological order|
   649  |Description|Returns raw data for transactions involving the passed address. Returned transactions are pulled from both the database, and transactions currently in the mempool. Transactions pulled from the mempool will have the `"confirmations"` field set to 0. Usage of this RPC requires the optional `--addrindex` flag to be activated, otherwise all responses will simply return with an error stating the address index has not yet been built up. Similarly, until the address index has caught up with the current best height, all requests will return an error response in order to avoid serving stale data.|
   650  |Returns (verbose=0)|`[ (json array of strings)` <br/>&nbsp;&nbsp; `"serializedtx", ... hex-encoded bytes of the serialized transaction` <br/>`]` |
   651  |Returns (verbose=1)|`[ (array of json objects)` <br/> &nbsp;&nbsp; `{ (json object)`<br />&nbsp;&nbsp;`"hex": "data",  (string) hex-encoded transaction`<br />&nbsp;&nbsp;`"txid": "hash",  (string) the hash of the transaction`<br />&nbsp;&nbsp;`"version": n,  (numeric) the transaction version`<br />&nbsp;&nbsp;`"locktime": n,  (numeric) the transaction lock time`<br />&nbsp;&nbsp;`"vin": [  (array of json objects) the transaction inputs as json objects`<br />&nbsp;&nbsp;<font color="orange">For coinbase transactions:</font><br />&nbsp;&nbsp;&nbsp;&nbsp;`{ (json object)`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"coinbase": "data",  (string) the hex-encoded bytes of the signature script`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"txinwitness": “data", (string) the witness stack for the input`<br />&nbsp;&nbsp;&nbsp;&nbsp;`"sequence": n,  (numeric) the script sequence number`<br />&nbsp;&nbsp;&nbsp;&nbsp;`}`<br />&nbsp;&nbsp;<font color="orange">For non-coinbase transactions:</font><br />&nbsp;&nbsp;&nbsp;&nbsp;`{ (json object)`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"txid": "hash", (string) the hash of the origin transaction`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"vout": n, (numeric) the index of the output being redeemed from the origin transaction`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"scriptSig": { (json object) the signature script used to redeem the origin transaction`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"asm": "asm", (string) disassembly of the script`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"hex": "data",  (string) hex-encoded bytes of the script`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`}`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"prevOut": { (json object) Data from the origin transaction output with index vout.`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"addresses": ["value",...], (array of string) previous output addresses`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"value": n.nnn,             (numeric)         previous output value`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`}`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"txinwitness": “data", (string) the witness stack for the input`<br />&nbsp;&nbsp;&nbsp;&nbsp;`"sequence": n,  (numeric) the script sequence number`<br />&nbsp;&nbsp;&nbsp;&nbsp;`}, ...`<br />&nbsp;&nbsp;`]`<br />&nbsp;&nbsp;`"vout": [  (array of json objects) the transaction outputs as json objects`<br />&nbsp;&nbsp;&nbsp;&nbsp;`{ (json object)`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"value": n, (numeric) the value in BTC`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"n": n, (numeric) the index of this transaction output`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"scriptPubKey": { (json object) the public key script used to pay coins`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"asm": "asm",  (string) disassembly of the script`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"hex": "data", (string) hex-encoded bytes of the script`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"reqSigs": n,  (numeric) the number of required signatures`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"type": "scripttype" (string) the type of the script (e.g. 'pubkeyhash')`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"addresses": [ (json array of string) the bitcoin addresses associated with this output`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"address",  (string) the bitcoin address`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`...`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`]`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`}`<br />&nbsp;&nbsp;&nbsp;&nbsp;`}, ...`<br /> &nbsp;&nbsp;&nbsp;`]`<br />&nbsp;&nbsp; `"blockhash":"hash" Hash of the block the transaction is part of.` <br /> &nbsp;&nbsp; `"confirmations":n,  Number of numeric confirmations of block.` <br /> &nbsp;&nbsp;&nbsp;`"time":t, Transaction time in seconds since the epoch.` <br /> &nbsp;&nbsp;&nbsp;`"blocktime":t, Block time in seconds since the epoch.`<br />`},...`<br/> `]`|
   652  [Return to Overview](#ExtMethodOverview)<br />
   653  
   654  ***
   655  
   656  <a name="node"/>
   657  
   658  |   |   |
   659  |---|---|
   660  |Method|node|
   661  |Parameters|1. command (string, required) - `connect` to add a peer (defaults to temporary), `remove` to remove a persistent peer, or `disconnect` to remove all matching non-persistent peers <br /> 2. peer (string, required) - ip address and port, or ID of the peer to operate on<br /> 3. connection type (string, optional) - `perm` indicates the peer should be added as a permanent peer, `temp` indicates a connection should only be attempted once. |
   662  |Description|Attempts to add or remove a peer.|
   663  |Returns|Nothing|
   664  [Return to Overview](#MethodOverview)<br />
   665  
   666  ***
   667  
   668  <a name="generate"/>
   669  
   670  |   |   |
   671  |---|---|
   672  |Method|generate|
   673  |Parameters|1. numblocks (int, required) - The number of blocks to generate |
   674  |Description|When in simnet or regtest mode, generates `numblocks` blocks. If blocks arrive from elsewhere, they are built upon but don't count toward the number of blocks to generate. Only generated blocks are returned. This RPC call will exit with an error if the server is already CPU mining, and will prevent the server from CPU mining for another command while it runs. |
   675  |Returns|`[ (json array of strings)` <br/>&nbsp;&nbsp; `"blockhash", ... hash of the generated block` <br/>`]` |
   676  [Return to Overview](#MethodOverview)<br />
   677  
   678  ***
   679  
   680  <a name="version"/>
   681  
   682  |   |   |
   683  |---|---|
   684  |Method|version|
   685  |Parameters|None|
   686  |Description|Returns the version of the JSON-RPC API built into this release of btcd.|
   687  |Returns|`{ (json object)`<br />&nbsp;&nbsp;`"btcdjsonrpcapi": {`<br />&nbsp;&nbsp;&nbsp;&nbsp;`"versionstring": "x.y.z",  (string) the version of the JSON-RPC API`<br />&nbsp;&nbsp;&nbsp;&nbsp;`"major": x,  (numeric) the major version of the JSON-RPC API`<br />&nbsp;&nbsp;&nbsp;&nbsp;`"minor": y,  (numeric) the minor version of the JSON-RPC API`<br />&nbsp;&nbsp;&nbsp;&nbsp;`"patch": z,  (numeric) the patch version of the JSON-RPC API`<br />&nbsp;&nbsp;&nbsp;&nbsp;`"prerelease": "",  (string) prerelease info for the JSON-RPC API`<br />&nbsp;&nbsp;&nbsp;&nbsp;`"buildmetadata": ""  (string) metadata about the server build`<br />&nbsp;&nbsp;`}`<br />`}`|
   688  |Example Return|`{`<br />&nbsp;&nbsp;`"btcdjsonrpcapi": {`<br />&nbsp;&nbsp;&nbsp;&nbsp;`"versionstring": "1.0.0",`<br />&nbsp;&nbsp;&nbsp;&nbsp;`"major": 1,  `<br />&nbsp;&nbsp;&nbsp;&nbsp;`"minor": 0,`<br />&nbsp;&nbsp;&nbsp;&nbsp;`"patch": 0,`<br />&nbsp;&nbsp;&nbsp;&nbsp;`"prerelease": "",`<br />&nbsp;&nbsp;&nbsp;&nbsp;`"buildmetadata": ""`<br />&nbsp;&nbsp;`}`<br />`}`|
   689  [Return to Overview](#MethodOverview)<br />
   690  
   691  ***
   692  
   693  <a name="getheaders"/>
   694  
   695  |   |   |
   696  |---|---|
   697  |Method|getheaders|
   698  |Parameters|1. Block Locators (JSON array, required)<br />&nbsp;`[ (json array of strings)`<br />&nbsp;&nbsp;`"blocklocator", (string) the known block hash`<br />&nbsp;&nbsp;`...`<br />&nbsp;`]`<br />2. hashstop (string) - last desired block's hash|
   699  |Description|Returns block headers starting with the first known block hash from the request.|
   700  |Returns|`[ (json array of strings)`<br />&nbsp;&nbsp;`"blockheader",`<br />&nbsp;&nbsp;`...`<br />`]`|
   701  |Example Return|`[`<br />&nbsp;&nbsp;`"0000002099417930b2ae09feda10e38b58c0f6bb44b4d60fa33f0e000000000000000000d53...",`<br />&nbsp;&nbsp;`"000000203ba25a173bfd24d09e0c76002a910b685ca297bd09a17b020000000000000000702..."`<br />`]`|
   702  [Return to Overview](#MethodOverview)<br />
   703  
   704  ***
   705  
   706  <a name="WSExtMethods" />
   707  
   708  ### 7. Websocket Extension Methods (Websocket-specific)
   709  
   710  <a name="WSExtMethodOverview" />
   711  
   712  **7.1 Method Overview**<br />
   713  
   714  The following is an overview of the RPC method requests available exclusively to Websocket clients.  All of these RPC methods are available to the limited
   715  user.  Click the method name for further details such as parameter and return information.
   716  
   717  |#|Method|Description|Notifications|
   718  |---|------|-----------|-------------|
   719  |1|[authenticate](#authenticate)|Authenticate the connection against the username and passphrase configured for the RPC server.<br /><font color="orange">NOTE: This is only required if an HTTP Authorization header is not being used.</font>|None|
   720  |2|[notifyblocks](#notifyblocks)|Send notifications when a block is connected or disconnected from the best chain.|[blockconnected](#blockconnected), [blockdisconnected](#blockdisconnected), [filteredblockconnected](#filteredblockconnected), and [filteredblockdisconnected](#filteredblockdisconnected)|
   721  |3|[stopnotifyblocks](#stopnotifyblocks)|Cancel registered notifications for whenever a block is connected or disconnected from the main (best) chain. |None|
   722  |4|[notifyreceived](#notifyreceived)|*DEPRECATED, for similar functionality see [loadtxfilter](#loadtxfilter)*<br />Send notifications when a txout spends to an address.|[recvtx](#recvtx) and [redeemingtx](#redeemingtx)|
   723  |5|[stopnotifyreceived](#stopnotifyreceived)|*DEPRECATED, for similar functionality see [loadtxfilter](#loadtxfilter)*<br />Cancel registered notifications for when a txout spends to any of the passed addresses.|None|
   724  |6|[notifyspent](#notifyspent)|*DEPRECATED, for similar functionality see [loadtxfilter](#loadtxfilter)*<br />Send notification when a txout is spent.|[redeemingtx](#redeemingtx)|
   725  |7|[stopnotifyspent](#stopnotifyspent)|*DEPRECATED, for similar functionality see [loadtxfilter](#loadtxfilter)*<br />Cancel registered spending notifications for each passed outpoint.|None|
   726  |8|[rescan](#rescan)|*DEPRECATED, for similar functionality see [rescanblocks](#rescanblocks)*<br />Rescan block chain for transactions to addresses and spent transaction outpoints.|[recvtx](#recvtx), [redeemingtx](#redeemingtx), [rescanprogress](#rescanprogress), and [rescanfinished](#rescanfinished) |
   727  |9|[notifynewtransactions](#notifynewtransactions)|Send notifications for all new transactions as they are accepted into the mempool.|[txaccepted](#txaccepted) or [txacceptedverbose](#txacceptedverbose)|
   728  |10|[stopnotifynewtransactions](#stopnotifynewtransactions)|Stop sending either a txaccepted or a txacceptedverbose notification when a new transaction is accepted into the mempool.|None|
   729  |11|[session](#session)|Return details regarding a websocket client's current connection.|None|
   730  |12|[loadtxfilter](#loadtxfilter)|Load, add to, or reload a websocket client's transaction filter for mempool transactions, new blocks and rescanblocks.|[relevanttxaccepted](#relevanttxaccepted)|
   731  |13|[rescanblocks](#rescanblocks)|Rescan blocks for transactions matching the loaded transaction filter.|None|
   732  
   733  <a name="WSExtMethodDetails" />
   734  
   735  **7.2 Method Details**<br />
   736  
   737  <a name="authenticate"/>
   738  
   739  |   |   |
   740  |---|---|
   741  |Method|authenticate|
   742  |Parameters|1. username (string, required)<br />2. passphrase (string, required)|
   743  |Description|Authenticate the connection against the username and password configured for the RPC server.<br />  Invoking any other method before authenticating with this command will close the connection.<br /><font color="orange">NOTE: This is only required if an HTTP Authorization header is not being used.</font>|
   744  |Returns|Success: Nothing<br />Failure: Nothing (websocket disconnected)|
   745  [Return to Overview](#WSExtMethodOverview)<br />
   746  
   747  ***
   748  
   749  <a name="notifyblocks"/>
   750  
   751  |   |   |
   752  |---|---|
   753  |Method|notifyblocks|
   754  |Notifications|[blockconnected](#blockconnected), [blockdisconnected](#blockdisconnected), [filteredblockconnected](#filteredblockconnected), and [filteredblockdisconnected](#filteredblockdisconnected)|
   755  |Parameters|None|
   756  |Description|Request notifications for whenever a block is connected or disconnected from the main (best) chain.<br />NOTE: If a client subscribes to both block and transaction (recvtx and redeemingtx) notifications, the blockconnected notification will be sent after all transaction notifications have been sent.  This allows clients to know when all relevant transactions for a block have been received.|
   757  |Returns|Nothing|
   758  [Return to Overview](#WSExtMethodOverview)<br />
   759  
   760  ***
   761  
   762  <a name="stopnotifyblocks"/>
   763  
   764  |   |   |
   765  |---|---|
   766  |Method|stopnotifyblocks|
   767  |Notifications|None|
   768  |Parameters|None|
   769  |Description|Cancel sending notifications for whenever a block is connected or disconnected from the main (best) chain.|
   770  |Returns|Nothing|
   771  [Return to Overview](#WSExtMethodOverview)<br />
   772  
   773  ***
   774  
   775  <a name="notifyreceived"/>
   776  
   777  |   |   |
   778  |---|---|
   779  |Method|notifyreceived|
   780  |Notifications|[recvtx](#recvtx) and [redeemingtx](#redeemingtx)|
   781  |Parameters|1. Addresses (JSON array, required)<br />&nbsp;`[ (json array of strings)`<br />&nbsp;&nbsp;`"bitcoinaddress", (string) the bitcoin address`<br />&nbsp;&nbsp;`...`<br />&nbsp;`]`|
   782  |Description|*DEPRECATED, for similar functionality see [loadtxfilter](#loadtxfilter)*<br />Send a recvtx notification when a transaction added to mempool or appears in a newly-attached block contains a txout pkScript sending to any of the passed addresses.  Matching outpoints are automatically registered for redeemingtx notifications.|
   783  |Returns|Nothing|
   784  [Return to Overview](#WSExtMethodOverview)<br />
   785  
   786  ***
   787  
   788  <a name="stopnotifyreceived"/>
   789  
   790  |   |   |
   791  |---|---|
   792  |Method|stopnotifyreceived|
   793  |Notifications|None|
   794  |Parameters|1. Addresses (JSON array, required)<br />&nbsp;`[ (json array of strings)`<br />&nbsp;&nbsp;`"bitcoinaddress", (string) the bitcoin address`<br />&nbsp;&nbsp;`...`<br />&nbsp;`]`|
   795  |Description|*DEPRECATED, for similar functionality see [loadtxfilter](#loadtxfilter)*<br />Cancel registered receive notifications for each passed address.|
   796  |Returns|Nothing|
   797  [Return to Overview](#WSExtMethodOverview)<br />
   798  
   799  ***
   800  
   801  <a name="notifyspent"/>
   802  
   803  |   |   |
   804  |---|---|
   805  |Method|notifyspent|
   806  |Notifications|[redeemingtx](#redeemingtx)|
   807  |Parameters|1. Outpoints (JSON array, required)<br />&nbsp;`[ (JSON array)`<br />&nbsp;&nbsp;`{ (JSON object)`<br />&nbsp;&nbsp;&nbsp;`"hash":"data", (string) the hex-encoded bytes of the outpoint hash`<br />&nbsp;&nbsp;&nbsp;`"index":n (numeric) the txout index of the outpoint`<br />&nbsp;&nbsp;`},`<br />&nbsp;&nbsp;`...`<br />&nbsp;`]`|
   808  |Description|*DEPRECATED, for similar functionality see [loadtxfilter](#loadtxfilter)*<br />Send a redeemingtx notification when a transaction spending an outpoint appears in mempool (if relayed to this btcd instance) and when such a transaction first appears in a newly-attached block.|
   809  |Returns|Nothing|
   810  [Return to Overview](#WSExtMethodOverview)<br />
   811  
   812  ***
   813  
   814  <a name="stopnotifyspent"/>
   815  
   816  |   |   |
   817  |---|---|
   818  |Method|stopnotifyspent|
   819  |Notifications|None|
   820  |Parameters|1. Outpoints (JSON array, required)<br />&nbsp;`[ (JSON array)`<br />&nbsp;&nbsp;`{ (JSON object)`<br />&nbsp;&nbsp;&nbsp;`"hash":"data", (string) the hex-encoded bytes of the outpoint hash`<br />&nbsp;&nbsp;&nbsp;`"index":n (numeric) the txout index of the outpoint`<br />&nbsp;&nbsp;`},`<br />&nbsp;&nbsp;`...`<br />&nbsp;`]`|
   821  |Description|*DEPRECATED, for similar functionality see [loadtxfilter](#loadtxfilter)*<br />Cancel registered spending notifications for each passed outpoint.|
   822  |Returns|Nothing|
   823  [Return to Overview](#WSExtMethodOverview)<br />
   824  
   825  ***
   826  
   827  <a name="rescan"/>
   828  
   829  |   |   |
   830  |---|---|
   831  |Method|rescan|
   832  |Notifications|[recvtx](#recvtx), [redeemingtx](#redeemingtx), [rescanprogress](#rescanprogress), and [rescanfinished](#rescanfinished)|
   833  |Parameters|1. BeginBlock (string, required) block hash to begin rescanning from<br />2. Addresses (JSON array, required)<br />&nbsp;`[ (json array of strings)`<br />&nbsp;&nbsp;`"bitcoinaddress", (string) the bitcoin address`<br />&nbsp;&nbsp;`...` <br />&nbsp;`]`<br />3. Outpoints (JSON array, required)<br />&nbsp;`[ (JSON array)`<br />&nbsp;&nbsp;`{ (JSON object)`<br />&nbsp;&nbsp;&nbsp;`"hash":"data", (string) the hex-encoded bytes of the outpoint hash`<br />&nbsp;&nbsp;&nbsp;`"index":n (numeric) the txout index of the outpoint`<br />&nbsp;&nbsp;`},`<br />&nbsp;&nbsp;`...`<br />&nbsp;`]`<br />4. EndBlock (string, optional) hash of final block to rescan|
   834  |Description|*DEPRECATED, for similar functionality see [rescanblocks](#rescanblocks)*<br />Rescan block chain for transactions to addresses, starting at block BeginBlock and ending at EndBlock.  The current known UTXO set for all passed addresses at height BeginBlock should included in the Outpoints argument.  If EndBlock is omitted, the rescan continues through the best block in the main chain.  Additionally, if no EndBlock is provided, the client is automatically registered for transaction notifications for all rescanned addresses and the final UTXO set.  Rescan results are sent as recvtx and redeemingtx notifications.  This call returns once the rescan completes.|
   835  |Returns|Nothing|
   836  [Return to Overview](#WSExtMethodOverview)<br />
   837  
   838  ***
   839  
   840  <a name="notifynewtransactions"/>
   841  
   842  |   |   |
   843  |---|---|
   844  |Method|notifynewtransactions|
   845  |Notifications|[txaccepted](#txaccepted) or [txacceptedverbose](#txacceptedverbose)|
   846  |Parameters|1. verbose (boolean, optional, default=false) - specifies which type of notification to receive.  If verbose is true, then the caller receives [txacceptedverbose](#txacceptedverbose), otherwise the caller receives [txaccepted](#txaccepted)|
   847  |Description|Send either a [txaccepted](#txaccepted) or a [txacceptedverbose](#txacceptedverbose) notification when a new transaction is accepted into the mempool.|
   848  |Returns|Nothing|
   849  [Return to Overview](#WSExtMethodOverview)<br />
   850  
   851  ***
   852  
   853  <a name="stopnotifynewtransactions"/>
   854  
   855  |   |   |
   856  |---|---|
   857  |Method|stopnotifynewtransactions|
   858  |Notifications|None|
   859  |Parameters|None|
   860  |Description|Stop sending either a [txaccepted](#txaccepted) or a [txacceptedverbose](#txacceptedverbose) notification when a new transaction is accepted into the mempool.|
   861  |Returns|Nothing|
   862  [Return to Overview](#WSExtMethodOverview)<br />
   863  
   864  ***
   865  
   866  <a name="session"/>
   867  
   868  |   |   |
   869  |---|---|
   870  |Method|session|
   871  |Notifications|None|
   872  |Parameters|None|
   873  |Description|Return a JSON object with details regarding a websocket client's current connection to the RPC server.  This currently only includes the session ID, a random unsigned 64-bit integer that is created for each newly connected client.  Session IDs may be used to verify that the current connection was not lost and subsequently reestablished.|
   874  |Returns|`{ (json object)`<br />&nbsp;&nbsp;`"sessionid": n  (numeric) the session ID`<br />`}`|
   875  |Example Return|`{`<br />&nbsp;&nbsp;`"sessionid": 67089679842`<br />`}`|
   876  [Return to Overview](#WSExtMethodOverview)<br />
   877  
   878  ***
   879  
   880  <a name="loadtxfilter"/>
   881  
   882  |   |   |
   883  |---|---|
   884  |Method|loadtxfilter|
   885  |Notifications|[relevanttxaccepted](#relevanttxaccepted)|
   886  |Parameters|1. Reload (boolean, required) - Load a new filter instead of adding data to an existing one<br />2. Addresses (JSON array, required) - Array of addresses to add to the transaction filter<br />3. Outpoints (JSON array, required) - Array of outpoints to add to the transaction filter|
   887  |Description|Load, add to, or reload a websocket client's transaction filter for mempool transactions, new blocks and [rescanblocks](#rescanblocks).|
   888  |Returns|Nothing|
   889  [Return to Overview](#WSExtMethodOverview)<br />
   890  
   891  ***
   892  
   893  <a name="rescanblocks"/>
   894  
   895  |   |   |
   896  |---|---|
   897  |Method|rescanblocks|
   898  |Notifications|None|
   899  |Parameters|1. Blockhashes (JSON array, required) - List of hashes to rescan.  Each next block must be a child of the previous.|
   900  |Description|Rescan blocks for transactions matching the loaded transaction filter.|
   901  |Returns|`[ (JSON array)`<br />&nbsp;&nbsp;`{ (JSON object)`<br />&nbsp;&nbsp;&nbsp;&nbsp;`"hash": "data", (string) Hash of the matching block.`<br />&nbsp;&nbsp;&nbsp;&nbsp;`"transactions": [ (JSON array) List of matching transactions, serialized and hex-encoded.`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"serializedtx" (string) Serialized and hex-encoded transaction.`<br />&nbsp;&nbsp;&nbsp;&nbsp;`]`<br />&nbsp;&nbsp;`}`<br />`]`|
   902  |Example Return|`[`<br />&nbsp;&nbsp;`{`<br />&nbsp;&nbsp;&nbsp;&nbsp;`"hash": "0000002099417930b2ae09feda10e38b58c0f6bb44b4d60fa33f0e000000000000000000d53...",`<br />&nbsp;&nbsp;&nbsp;&nbsp;`"transactions": [`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"493046022100cb42f8df44eca83dd0a727988dcde9384953e830b1f8004d57485e2ede1b9c8..."`<br />&nbsp;&nbsp;&nbsp;&nbsp;`]`<br />&nbsp;&nbsp;`}`<br />`]`|
   903  
   904  
   905  <a name="Notifications" />
   906  
   907  ### 8. Notifications (Websocket-specific)
   908  
   909  btcd uses standard JSON-RPC notifications to notify clients of changes, rather than requiring clients to poll btcd for updates.  JSON-RPC notifications are a subset of requests, but do not contain an ID.  The notification type is categorized by the `method` field and additional details are sent as a JSON array in the `params` field.
   910  
   911  <a name="NotificationOverview" />
   912  
   913  **8.1 Notification Overview**<br />
   914  
   915  The following is an overview of the JSON-RPC notifications used for Websocket connections.  Click the method name for further details of the context(s) in which they are sent and their parameters.
   916  
   917  |#|Method|Description|Request|
   918  |---|------|-----------|-------|
   919  |1|[blockconnected](#blockconnected)|*DEPRECATED, for similar functionality see [filteredblockconnected](#filteredblockconnected)*<br />Block connected to the main chain.|[notifyblocks](#notifyblocks)|
   920  |2|[blockdisconnected](#blockdisconnected)|*DEPRECATED, for similar functionality see [filteredblockdisconnected](#filteredblockdisconnected)*<br />Block disconnected from the main chain.|[notifyblocks](#notifyblocks)|
   921  |3|[recvtx](#recvtx)|*DEPRECATED, for similar functionality see [relevanttxaccepted](#relevanttxaccepted) and [filteredblockconnected](#filteredblockconnected)*<br />Processed a transaction output spending to a wallet address.|[notifyreceived](#notifyreceived) and [rescan](#rescan)|
   922  |4|[redeemingtx](#redeemingtx)|*DEPRECATED, for similar functionality see [relevanttxaccepted](#relevanttxaccepted) and [filteredblockconnected](#filteredblockconnected)*<br />Processed a transaction that spends a registered outpoint.|[notifyspent](#notifyspent) and [rescan](#rescan)|
   923  |5|[txaccepted](#txaccepted)|Received a new transaction after requesting simple notifications of all new transactions accepted into the mempool.|[notifynewtransactions](#notifynewtransactions)|
   924  |6|[txacceptedverbose](#txacceptedverbose)|Received a new transaction after requesting verbose notifications of all new transactions accepted into the mempool.|[notifynewtransactions](#notifynewtransactions)|
   925  |7|[rescanprogress](#rescanprogress)|*DEPRECATED, notifications not used by [rescanblocks](#rescanblocks)*<br />A rescan operation that is underway has made progress.|[rescan](#rescan)|
   926  |8|[rescanfinished](#rescanfinished)|*DEPRECATED, notifications not used by [rescanblocks](#rescanblocks)*<br />A rescan operation has completed.|[rescan](#rescan)|
   927  |9|[relevanttxaccepted](#relevanttxaccepted)|A transaction matching the tx filter has been accepted into the mempool.|[loadtxfilter](#loadtxfilter)|
   928  |10|[filteredblockconnected](#filteredblockconnected)|Block connected to the main chain; contains any transactions that match the client's tx filter.|[notifyblocks](#notifyblocks), [loadtxfilter](#loadtxfilter)|
   929  |11|[filteredblockdisconnected](#filteredblockdisconnected)|Block disconnected from the main chain.|[notifyblocks](#notifyblocks), [loadtxfilter](#loadtxfilter)|
   930  
   931  <a name="NotificationDetails" />
   932  
   933  **8.2 Notification Details**<br />
   934  
   935  <a name="blockconnected"/>
   936  
   937  |   |   |
   938  |---|---|
   939  |Method|blockconnected|
   940  |Request|[notifyblocks](#notifyblocks)|
   941  |Parameters|1. BlockHash (string) hex-encoded bytes of the attached block hash<br />2. BlockHeight (numeric) height of the attached block<br />3. BlockTime (numeric) unix time of the attached block|
   942  |Description|*DEPRECATED, for similar functionality see [filteredblockconnected](#filteredblockconnected)*<br />Notifies when a block has been added to the main chain.  Notification is sent to all connected clients.|
   943  |Example|Example blockconnected notification for mainnet block 280330 (newlines added for readability):<br />`{`<br />&nbsp;`"jsonrpc": "1.0",`<br />&nbsp;`"method": "blockconnected",`<br />&nbsp;`"params":`<br />&nbsp;&nbsp;`[`<br />&nbsp;&nbsp;&nbsp;`"000000000000000004cbdfe387f4df44b914e464ca79838a8ab777b3214dbffd",`<br />&nbsp;&nbsp;&nbsp;`280330,`<br />&nbsp;&nbsp;&nbsp;`1389636265`<br />&nbsp;&nbsp;`],`<br />&nbsp;`"id": null`<br />`}`|
   944  [Return to Overview](#NotificationOverview)<br />
   945  
   946  ***
   947  
   948  <a name="blockdisconnected"/>
   949  
   950  |   |   |
   951  |---|---|
   952  |Method|blockdisconnected|
   953  |Request|[notifyblocks](#notifyblocks)|
   954  |Parameters|1. BlockHash (string) hex-encoded bytes of the disconnected block hash<br />2. BlockHeight (numeric) height of the disconnected block<br />3. BlockTime (numeric) unix time of the disconnected block|
   955  |Description|*DEPRECATED, for similar functionality see [filteredblockdisconnected](#filteredblockdisconnected)*<br />Notifies when a block has been removed from the main chain.  Notification is sent to all connected clients.|
   956  |Example|Example blockdisconnected notification for mainnet block 280330 (newlines added for readability):<br />`{`<br />&nbsp;`"jsonrpc": "1.0",`<br />&nbsp;`"method": "blockdisconnected",`<br />&nbsp;`"params":`<br />&nbsp;&nbsp;`[`<br />&nbsp;&nbsp;&nbsp;`"000000000000000004cbdfe387f4df44b914e464ca79838a8ab777b3214dbffd",`<br />&nbsp;&nbsp;&nbsp;`280330,`<br />&nbsp;&nbsp;&nbsp;`1389636265`<br />&nbsp;&nbsp;`],`<br />&nbsp;`"id": null`<br />`}`|
   957  [Return to Overview](#NotificationOverview)<br />
   958  
   959  ***
   960  
   961  <a name="recvtx"/>
   962  
   963  |   |   |
   964  |---|---|
   965  |Method|recvtx|
   966  |Request|[rescan](#rescan) or [notifyreceived](#notifyreceived)|
   967  |Parameters|1. Transaction (string) full transaction encoded as a hex string<br />2. Block details (object, optional) details about a block and the index of the transaction within a block, if the transaction is mined|
   968  |Description|*DEPRECATED, for similar functionality see [relevanttxaccepted](#relevanttxaccepted) and [filteredblockconnected](#filteredblockconnected)*<br />Notifies a client when a transaction is processed that contains at least a single output with a pkScript sending to a requested address.  If multiple outputs send to requested addresses, a single notification is sent.  If a mempool (unmined) transaction is processed, the block details object (second parameter) is excluded.|
   969  |Example|Example recvtx notification for mainnet transaction 61d3696de4c888730cbe06b0ad8ecb6d72d6108e893895aa9bc067bd7eba3fad when processed by mempool (newlines added for readability):<br />`{`<br />&nbsp;`"jsonrpc": "1.0",`<br />&nbsp;`"method": "recvtx",`<br />&nbsp;`"params":`<br />&nbsp;&nbsp;`[`<br />&nbsp;&nbsp;&nbsp;`"010000000114d9ff358894c486b4ae11c2a8cf7851b1df64c53d2e511278eff17c22fb737300000000..."`<br />&nbsp;&nbsp;`],`<br />&nbsp;`"id": null`<br />`}`<br />The recvtx notification for the same txout, after the transaction was mined into block 276425:<br />`{`<br />&nbsp;`"jsonrpc": "1.0",`<br />&nbsp;`"method": "recvtx",`<br />&nbsp;`"params":`<br />&nbsp;&nbsp;`[`<br />&nbsp;&nbsp;&nbsp;`"010000000114d9ff358894c486b4ae11c2a8cf7851b1df64c53d2e511278eff17c22fb737300000000...",`<br />&nbsp;&nbsp;&nbsp;`{`<br />&nbsp;&nbsp;&nbsp;&nbsp;`"height": 276425,`<br />&nbsp;&nbsp;&nbsp;&nbsp;`"hash": "000000000000000325474bb799b9e591f965ca4461b72cb7012b808db92bb2fc",`<br />&nbsp;&nbsp;&nbsp;&nbsp;`"index": 684,`<br />&nbsp;&nbsp;&nbsp;&nbsp;`"time": 1387737310`<br />&nbsp;&nbsp;&nbsp;`}`<br />&nbsp;&nbsp;`],`<br />&nbsp;`"id": null`<br />`}`|
   970  [Return to Overview](#NotificationOverview)<br />
   971  
   972  ***
   973  
   974  <a name="redeemingtx"/>
   975  
   976  |   |   |
   977  |---|---|
   978  |Method|redeemingtx|
   979  |Requests|[notifyspent](#notifyspent) and [rescan](#rescan)|
   980  |Parameters|1. Transaction (string) full transaction encoded as a hex string<br />2. Block details (object, optional) details about a block and the index of the transaction within a block, if the transaction is mined|
   981  |Description|*DEPRECATED, for similar functionality see [relevanttxaccepted](#relevanttxaccepted) and [filteredblockconnected](#filteredblockconnected)*<br />Notifies a client when an registered outpoint is spent by a transaction accepted to mempool and/or mined into a block.|
   982  |Example|Example redeemingtx notification for mainnet outpoint 61d3696de4c888730cbe06b0ad8ecb6d72d6108e893895aa9bc067bd7eba3fad:0 after being spent by transaction 4ad0c16ac973ff675dec1f3e5f1273f1c45be2a63554343f21b70240a1e43ece (newlines added for readability):<br />`{`<br />&nbsp;`"jsonrpc": "1.0",`<br />&nbsp;`"method": "redeemingtx",`<br />&nbsp;`"params":`<br />&nbsp;&nbsp;`[`<br />&nbsp;&nbsp;&nbsp;`"0100000003ad3fba7ebd67c09baa9538898e10d6726dcb8eadb006be0c7388c8e46d69d3610000000..."`<br />&nbsp;&nbsp;`],`<br />&nbsp;`"id": null`<br />`}`<br />The redeemingtx notification for the same txout, after the spending transaction was mined into block 279143:<br />`{`<br />&nbsp;`"jsonrpc": "1.0",`<br />&nbsp;`"method": "recvtx",`<br />&nbsp;`"params":`<br />&nbsp;&nbsp;`[`<br />&nbsp;&nbsp;&nbsp;`"0100000003ad3fba7ebd67c09baa9538898e10d6726dcb8eadb006be0c7388c8e46d69d3610000000...",`<br />&nbsp;&nbsp;&nbsp;`{`<br />&nbsp;&nbsp;&nbsp;&nbsp;`"height": 279143,`<br />&nbsp;&nbsp;&nbsp;&nbsp;`"hash": "00000000000000017188b968a371bab95aa43522665353b646e41865abae02a4",`<br />&nbsp;&nbsp;&nbsp;&nbsp;`"index": 6,`<br />&nbsp;&nbsp;&nbsp;&nbsp;`"time": 1389115004`<br />&nbsp;&nbsp;&nbsp;`}`<br />&nbsp;&nbsp;`],`<br />&nbsp;`"id": null`<br />`}`|
   983  [Return to Overview](#NotificationOverview)<br />
   984  
   985  ***
   986  
   987  <a name="txaccepted"/>
   988  
   989  |   |   |
   990  |---|---|
   991  |Method|txaccepted|
   992  |Request|[notifynewtransactions](#notifynewtransactions)|
   993  |Parameters|1. TxHash (string) hex-encoded bytes of the transaction hash<br />2. Amount (numeric) sum of the value of all the transaction outpoints|
   994  |Description|Notifies when a new transaction has been accepted and the client has requested standard transaction details.|
   995  |Example|Example txaccepted notification for mainnet transaction id "16c54c9d02fe570b9d41b518c0daefae81cc05c69bbe842058e84c6ed5826261" (newlines added for readability):<br />`{`<br />&nbsp;`"jsonrpc": "1.0",`<br />&nbsp;`"method": "txaccepted",`<br />&nbsp;`"params":`<br />&nbsp;&nbsp;`[`<br />&nbsp;&nbsp;&nbsp;`"16c54c9d02fe570b9d41b518c0daefae81cc05c69bbe842058e84c6ed5826261",`<br />&nbsp;&nbsp;&nbsp;`55838384`<br />&nbsp;&nbsp;`],`<br />&nbsp;`"id": null`<br />`}`|
   996  [Return to Overview](#NotificationOverview)<br />
   997  
   998  ***
   999  
  1000  <a name="txacceptedverbose"/>
  1001  
  1002  |   |   |
  1003  |---|---|
  1004  |Method|txacceptedverbose|
  1005  |Request|[notifynewtransactions](#notifynewtransactions)|
  1006  |Parameters|1. RawTx (json object) the transaction as a json object (see getrawtransaction json object details)|
  1007  |Description|Notifies when a new transaction has been accepted and the client has requested verbose transaction details.|
  1008  |Example|Example txacceptedverbose notification (newlines added for readability):<br />`{`<br />&nbsp;`"jsonrpc": "1.0",`<br />&nbsp;`"method": "txacceptedverbose",`<br />&nbsp;`"params":`<br />&nbsp;&nbsp;`[`<br />&nbsp;&nbsp;&nbsp;`{`<br />&nbsp;&nbsp;&nbsp;&nbsp;`"hex": "01000000010000000000000000000000000000000000000000000000000000000000000000f...",`<br />&nbsp;&nbsp;&nbsp;&nbsp;`"txid": "90743aad855880e517270550d2a881627d84db5265142fd1e7fb7add38b08be9",`<br />&nbsp;&nbsp;&nbsp;&nbsp;`"version": 1,`<br />&nbsp;&nbsp;&nbsp;&nbsp;`"locktime": 0,`<br />&nbsp;&nbsp;&nbsp;&nbsp;`"vin": [`<br />&nbsp;&nbsp;&nbsp;&nbsp;<font color="orange">For coinbase transactions:</font><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`{ (json object)`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"coinbase": "03708203062f503253482f04066d605108f800080100000ea2122f6f7a636f696e4065757374726174756d2f",`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"sequence": 0,`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`}`<br />&nbsp;&nbsp;&nbsp;&nbsp;<font color="orange">For non-coinbase transactions:</font><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`{`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"txid": "60ac4b057247b3d0b9a8173de56b5e1be8c1d1da970511c626ef53706c66be04",`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"vout": 0,`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"scriptSig": {`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"asm": "3046022100cb42f8df44eca83dd0a727988dcde9384953e830b1f8004d57485e2ede1b9c8f0...",`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"hex": "493046022100cb42f8df44eca83dd0a727988dcde9384953e830b1f8004d57485e2ede1b9c8...",`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`}`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"sequence": 4294967295,`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`}`<br />&nbsp;&nbsp;&nbsp;&nbsp;`],`<br />&nbsp;&nbsp;&nbsp;&nbsp;`"vout": [`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`{`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"value": 25.1394,`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"n": 0,`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"scriptPubKey": {`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"asm": "OP_DUP OP_HASH160 ea132286328cfc819457b9dec386c4b5c84faa5c OP_EQUALVERIFY OP_CHECKSIG",`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"hex": "76a914ea132286328cfc819457b9dec386c4b5c84faa5c88ac",`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"reqSigs": 1,`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"type": "pubkeyhash"`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"addresses": [`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`"1NLg3QJMsMQGM5KEUaEu5ADDmKQSLHwmyh",`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`]`<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;`}`<br />&nbsp;&nbsp;&nbsp;&nbsp;`]`<br />&nbsp;&nbsp;&nbsp;`}`<br />&nbsp;&nbsp;`],`<br />&nbsp;`"id": null`<br />`}`|
  1009  [Return to Overview](#NotificationOverview)<br />
  1010  
  1011  ***
  1012  
  1013  <a name="rescanprogress"/>
  1014  
  1015  |   |   |
  1016  |---|---|
  1017  |Method|rescanprogress|
  1018  |Request|[rescan](#rescan)|
  1019  |Parameters|1. Hash (string) hash of the last processed block<br />2. Height (numeric) height of the last processed block<br />3. Time (numeric) UNIX time of the last processed block|
  1020  |Description|*DEPRECATED, notifications not used by [rescanblocks](#rescanblocks)*<br />Notifies a client with the current progress at periodic intervals when a long-running [rescan](#rescan) is underway.|
  1021  |Example|`{`<br />&nbsp;`"jsonrpc": "1.0",`<br />&nbsp;`"method": "rescanprogress",`<br />&nbsp;`"params":`<br />&nbsp;&nbsp;`[`<br />&nbsp;&nbsp;&nbsp;`"0000000000000ea86b49e11843b2ad937ac89ae74a963c7edd36e0147079b89d",`<br />&nbsp;&nbsp;&nbsp;`127213,`<br />&nbsp;&nbsp;&nbsp;`1306533807`<br />&nbsp;&nbsp;`],`<br />&nbsp;`"id": null`<br />`}`|
  1022  [Return to Overview](#NotificationOverview)<br />
  1023  
  1024  ***
  1025  
  1026  <a name="rescanfinished"/>
  1027  
  1028  |   |   |
  1029  |---|---|
  1030  |Method|rescanfinished|
  1031  |Request|[rescan](#rescan)|
  1032  |Parameters|1. Hash (string) hash of the last rescanned block<br />2. Height (numeric) height of the last rescanned block<br />3. Time (numeric) UNIX time of the last rescanned block |
  1033  |Description|*DEPRECATED, notifications not used by [rescanblocks](#rescanblocks)*<br />Notifies a client that the [rescan](#rescan) has completed and no further notifications will be sent.|
  1034  |Example|`{`<br />&nbsp;`"jsonrpc": "1.0",`<br />&nbsp;`"method": "rescanfinished",`<br />&nbsp;`"params":`<br />&nbsp;&nbsp;`[`<br />&nbsp;&nbsp;&nbsp;`"0000000000000ea86b49e11843b2ad937ac89ae74a963c7edd36e0147079b89d",`<br />&nbsp;&nbsp;&nbsp;`127213,`<br />&nbsp;&nbsp;&nbsp;`1306533807`<br />&nbsp;&nbsp;`],`<br />&nbsp;`"id": null`<br />`}`|
  1035  [Return to Overview](#NotificationOverview)<br />
  1036  
  1037  ***
  1038  
  1039  <a name="relevanttxaccepted"/>
  1040  
  1041  |   |   |
  1042  |---|---|
  1043  |Method|relevanttxaccepted|
  1044  |Request|[loadtxfilter](#loadtxfilter)|
  1045  |Parameters|1. Transaction (string) hex-encoded serialized transaction matching the client's filter loaded ith [loadtxfilter](#loadtxfilter)|
  1046  |Description|Notifies a client that a transaction matching the client's tx filter has been accepted into he mempool.|
  1047  |Example|Example `relevanttxaccepted` notification (newlines added for readability):<br />`{`<br >&nbsp;`"jsonrpc": "1.0",`<br />&nbsp;`"method": "relevanttxaccepted",`<br />&nbsp;`"params": [`<br >&nbsp;&nbsp;`"01000000014221abdcca25c8a3b0c044034875dece048c77d567a806f0c2e7e0f5e25a8f100..."`<br >&nbsp;`],`<br />&nbsp;`"id": null`<br />`}`|
  1048  
  1049  ***
  1050  
  1051  <a name="filteredblockconnected"/>
  1052  
  1053  |   |   |
  1054  |---|---|
  1055  |Method|filteredblockconnected|
  1056  |Request|[notifyblocks](#notifyblocks), [loadtxfilter](#loadtxfilter)|
  1057  |Parameters|1. BlockHeight (numeric) height of the attached block<br />2. Header (string) hex-encoded serialized header of the attached block<br />3. Transactions (JSON array) hex-encoded serialized transactions matching the filter for the client connection loaded with [loadtxfilter](#loadtxfilter)|
  1058  |Description|Notifies when a block has been added to the main chain.  Notification is sent to all connected clients.|
  1059  |Example|Example filteredblockconnected notification for mainnet block 280330 (newlines added for readability):<br />`{`<br />&nbsp;`"jsonrpc": "1.0",`<br />&nbsp;`"method": "filteredblockconnected",`<br />&nbsp;`"params":`<br />&nbsp;&nbsp;`[`<br />&nbsp;&nbsp;&nbsp;`280330,`<br />&nbsp;&nbsp;&nbsp;`"0200000052d1e8813f697293e41942aa230e7e4fcc44832d78a1372202000000000000006aa...",`<br />&nbsp;&nbsp;&nbsp;`[`<br />&nbsp;&nbsp;&nbsp;&nbsp;`"01000000014221abdcca25c8a3b0c044034875dece048c77d567a806f0c2e7e0f5e25a8f100..."`<br />&nbsp;&nbsp;&nbsp;`]`<br />&nbsp;&nbsp;`],`<br />&nbsp;`"id": null`<br />`}`|
  1060  [Return to Overview](#NotificationOverview)<br />
  1061  
  1062  ***
  1063  
  1064  <a name="filteredblockdisconnected"/>
  1065  
  1066  |   |   |
  1067  |---|---|
  1068  |Method|filteredblockdisconnected|
  1069  |Request|[notifyblocks](#notifyblocks), [loadtxfilter](#loadtxfilter)|
  1070  |Parameters|1. BlockHeight (numeric) height of the disconnected block<br />2. Header (string) hex-encoded serialized header of the disconnected block|
  1071  |Description|Notifies when a block has been removed from the main chain.  Notification is sent to all connected clients.|
  1072  |Example|Example blockdisconnected notification for mainnet block 280330 (newlines added for readability):<br />`{`<br />&nbsp;`"jsonrpc": "1.0",`<br />&nbsp;`"method": "blockdisconnected",`<br />&nbsp;`"params":`<br />&nbsp;&nbsp;`[`<br />&nbsp;&nbsp;&nbsp;`280330,`<br />&nbsp;&nbsp;&nbsp;`"0200000052d1e8813f697293e41942aa230e7e4fcc44832d78a1372202000000000000006aa..."`<br />&nbsp;&nbsp;`],`<br />&nbsp;`"id": null`<br />`}`|
  1073  [Return to Overview](#NotificationOverview)<br />
  1074  
  1075  
  1076  <a name="ExampleCode" />
  1077  
  1078  ### 9. Example Code
  1079  
  1080  This section provides example code for interacting with the JSON-RPC API in
  1081  various languages.
  1082  
  1083  * [Go](#ExampleGoApp)
  1084  * [node.js](#ExampleNodeJsCode)
  1085  
  1086  <a name="ExampleGoApp" />
  1087  
  1088  **9.1 Go**
  1089  
  1090  This section provides examples of using the RPC interface using Go and the
  1091  [rpcclient](https://github.com/btcsuite/btcd/tree/master/rpcclient) package.
  1092  
  1093  * [Using getblockcount to Retrieve the Current Block Height](#ExampleGetBlockCount)
  1094  * [Using getblock to Retrieve the Genesis Block](#ExampleGetBlock)
  1095  * [Using notifyblocks to Receive blockconnected and blockdisconnected Notifications (Websocket-specific)](#ExampleNotifyBlocks)
  1096  
  1097  
  1098  <a name="ExampleGetBlockCount" />
  1099  
  1100  **9.1.1 Using getblockcount to Retrieve the Current Block Height**<br />
  1101  
  1102  The following is an example Go application which uses the
  1103  [rpcclient](https://github.com/btcsuite/btcd/tree/master/rpcclient) package to connect with
  1104  a btcd instance via Websockets, issues [getblockcount](#getblockcount) to
  1105  retrieve the current block height, and displays it.
  1106  
  1107  ```Go
  1108  package main
  1109  
  1110  import (
  1111  	"io/ioutil"
  1112  	"log"
  1113  	"path/filepath"
  1114  
  1115  	"github.com/btcsuite/btcd/rpcclient"
  1116  	"github.com/btcsuite/btcd/btcutil"
  1117  )
  1118  
  1119  func main() {
  1120  	// Load the certificate for the TLS connection which is automatically
  1121  	// generated by btcd when it starts the RPC server and doesn't already
  1122  	// have one.
  1123  	btcdHomeDir := btcutil.AppDataDir("btcd", false)
  1124  	certs, err := ioutil.ReadFile(filepath.Join(btcdHomeDir, "rpc.cert"))
  1125  	if err != nil {
  1126  		log.Fatal(err)
  1127  	}
  1128  
  1129  	// Create a new RPC client using websockets.  Since this example is
  1130  	// not long-lived, the connection will be closed as soon as the program
  1131  	// exits.
  1132  	connCfg := &rpcclient.ConnConfig{
  1133  		Host:         "localhost:8334",
  1134  		Endpoint:     "ws",
  1135  		User:         "yourrpcuser",
  1136  		Pass:         "yourrpcpass",
  1137  		Certificates: certs,
  1138  	}
  1139  	client, err := rpcclient.New(connCfg, nil)
  1140  	if err != nil {
  1141  		log.Fatal(err)
  1142  	}
  1143  	defer client.Shutdown()
  1144  
  1145  	// Query the RPC server for the current block count and display it.
  1146  	blockCount, err := client.GetBlockCount()
  1147  	if err != nil {
  1148  		log.Fatal(err)
  1149  	}
  1150  	log.Printf("Block count: %d", blockCount)
  1151  }
  1152  ```
  1153  
  1154  Which results in:
  1155  
  1156  ```bash
  1157  2018/08/27 11:17:27 Block count: 536027
  1158  ```
  1159  
  1160  <a name="ExampleGetBlock" />
  1161  
  1162  **9.1.2 Using getblock to Retrieve the Genesis Block**<br />
  1163  
  1164  The following is an example Go application which uses the
  1165  [rpcclient](https://github.com/btcsuite/btcd/tree/master/rpcclient) package to connect with
  1166  a btcd instance via Websockets, issues [getblock](#getblock) to retrieve
  1167  information about the Genesis block, and display a few details about it.
  1168  
  1169  ```Go
  1170  package main
  1171  
  1172  import (
  1173  	"io/ioutil"
  1174  	"log"
  1175  	"path/filepath"
  1176  	"time"
  1177  
  1178  	"github.com/btcsuite/btcd/chaincfg/chainhash"
  1179  	"github.com/btcsuite/btcd/rpcclient"
  1180  	"github.com/btcsuite/btcd/btcutil"
  1181  )
  1182  
  1183  func main() {
  1184  	// Load the certificate for the TLS connection which is automatically
  1185  	// generated by btcd when it starts the RPC server and doesn't already
  1186  	// have one.
  1187  	btcdHomeDir := btcutil.AppDataDir("btcd", false)
  1188  	certs, err := ioutil.ReadFile(filepath.Join(btcdHomeDir, "rpc.cert"))
  1189  	if err != nil {
  1190  		log.Fatal(err)
  1191  	}
  1192  
  1193  	// Create a new RPC client using websockets.  Since this example is
  1194  	// not long-lived, the connection will be closed as soon as the program
  1195  	// exits.
  1196  	connCfg := &rpcclient.ConnConfig{
  1197  		Host:         "localhost:18334",
  1198  		Endpoint:     "ws",
  1199  		User:         "yourrpcuser",
  1200  		Pass:         "yourrpcpass",
  1201  		Certificates: certs,
  1202  	}
  1203  	client, err := rpcclient.New(connCfg, nil)
  1204  	if err != nil {
  1205  		log.Fatal(err)
  1206  	}
  1207  	defer client.Shutdown()
  1208  
  1209  	// Query the RPC server for the genesis block using the "getblock"
  1210  	// command with the verbose flag set to true and the verboseTx flag
  1211  	// set to false.
  1212  	genesisHashStr := "000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f"
  1213  	blockHash, err := chainhash.NewHashFromStr(genesisHashStr)
  1214  	if err != nil {
  1215  		log.Fatal(err)
  1216  	}
  1217  	block, err := client.GetBlockVerbose(blockHash)
  1218  	if err != nil {
  1219  		log.Fatal(err)
  1220  	}
  1221  
  1222  	// Display some details about the returned block.
  1223  	log.Printf("Hash: %v\n", block.Hash)
  1224  	log.Printf("Previous Block: %v\n", block.PreviousHash)
  1225  	log.Printf("Next Block: %v\n", block.NextHash)
  1226  	log.Printf("Merkle root: %v\n", block.MerkleRoot)
  1227  	log.Printf("Timestamp: %v\n", time.Unix(block.Time, 0).UTC())
  1228  	log.Printf("Confirmations: %v\n", block.Confirmations)
  1229  	log.Printf("Difficulty: %f\n", block.Difficulty)
  1230  	log.Printf("Size (in bytes): %v\n", block.Size)
  1231  	log.Printf("Num transactions: %v\n", len(block.Tx))
  1232  }
  1233  ```
  1234  
  1235  Which results in:
  1236  
  1237  ```bash
  1238  Hash: 000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f
  1239  Previous Block: 0000000000000000000000000000000000000000000000000000000000000000
  1240  Next Block: 00000000839a8e6886ab5951d76f411475428afc90947ee320161bbf18eb6048
  1241  Merkle root: 4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b
  1242  Timestamp: 2009-01-03 18:15:05 +0000 UTC
  1243  Confirmations: 534323
  1244  Difficulty: 1.000000
  1245  Size (in bytes): 285
  1246  Num transactions: 1
  1247  ```
  1248  
  1249  <a name="ExampleNotifyBlocks" />
  1250  
  1251  **9.1.3 Using notifyblocks to Receive blockconnected and blockdisconnected
  1252  Notifications (Websocket-specific)**<br />
  1253  
  1254  The following is an example Go application which uses the
  1255  [rpcclient](https://github.com/btcsuite/btcd/tree/master/rpcclient) package to connect with
  1256  a btcd instance via Websockets and registers for
  1257  [blockconnected](#blockconnected) and [blockdisconnected](#blockdisconnected)
  1258  notifications with [notifyblocks](#notifyblocks).  It also sets up handlers for
  1259  the notifications.
  1260  
  1261  ```Go
  1262  package main
  1263  
  1264  import (
  1265  	"io/ioutil"
  1266  	"log"
  1267  	"path/filepath"
  1268  	"time"
  1269  
  1270  	"github.com/btcsuite/btcd/chaincfg/chainhash"
  1271  	"github.com/btcsuite/btcd/rpcclient"
  1272  	"github.com/btcsuite/btcd/btcutil"
  1273  )
  1274  
  1275  func main() {
  1276  	// Setup handlers for blockconnected and blockdisconnected
  1277  	// notifications.
  1278  	ntfnHandlers := rpcclient.NotificationHandlers{
  1279  		OnBlockConnected: func(hash *chainhash.Hash, height int32, t time.Time) {
  1280  			log.Printf("Block connected: %v (%d) %s", hash, height, t)
  1281  		},
  1282  		OnBlockDisconnected: func(hash *chainhash.Hash, height int32, t time.Time) {
  1283  			log.Printf("Block disconnected: %v (%d) %s", hash, height, t)
  1284  		},
  1285  	}
  1286  
  1287  	// Load the certificate for the TLS connection which is automatically
  1288  	// generated by btcd when it starts the RPC server and doesn't already
  1289  	// have one.
  1290  	btcdHomeDir := btcutil.AppDataDir("btcd", false)
  1291  	certs, err := ioutil.ReadFile(filepath.Join(btcdHomeDir, "rpc.cert"))
  1292  	if err != nil {
  1293  		log.Fatal(err)
  1294  	}
  1295  
  1296  	// Create a new RPC client using websockets.
  1297  	connCfg := &rpcclient.ConnConfig{
  1298  		Host:         "localhost:8334",
  1299  		Endpoint:     "ws",
  1300  		User:         "yourrpcuser",
  1301  		Pass:         "yourrpcpass",
  1302  		Certificates: certs,
  1303  	}
  1304  	client, err := rpcclient.New(connCfg, &ntfnHandlers)
  1305  	if err != nil {
  1306  		log.Fatal(err)
  1307  	}
  1308  
  1309  	// Register for blockconnected and blockdisconneted notifications.
  1310  	if err := client.NotifyBlocks(); err != nil {
  1311  		client.Shutdown()
  1312  		log.Fatal(err)
  1313  	}
  1314  
  1315  	// For this example, gracefully shutdown the client after 10 seconds.
  1316  	// Ordinarily when to shutdown the client is highly application
  1317  	// specific.
  1318  	log.Println("Client shutdown in 10 seconds...")
  1319  	time.AfterFunc(time.Second*10, func() {
  1320  		log.Println("Client shutting down...")
  1321  		client.Shutdown()
  1322  		log.Println("Client shutdown complete.")
  1323  	})
  1324  
  1325  	// Wait until the client either shuts down gracefully (or the user
  1326  	// terminates the process with Ctrl+C).
  1327  	client.WaitForShutdown()
  1328  }
  1329  ```
  1330  
  1331  Example output:
  1332  
  1333  ```
  1334  2018/08/27 10:35:43 Client shutdown in 10 seconds...
  1335  2018/08/27 10:35:44 Block connected: 00000000000000000003321723557df58914658dc6fd963d547292a0a4797454 (534747) 2018-08-02 06:37:52 +0800 CST
  1336  2018/08/27 10:35:47 Block connected: 0000000000000000002e12773b798fc61dffe00ed5c3e89d3c306f8058c51e13 (534748) 2018-08-02 06:39:54 +0800 CST
  1337  2018/08/27 10:35:49 Block connected: 0000000000000000001bb311cd849839ce88499b91a201922f55a1cfafabe267 (534749) 2018-08-02 06:44:22 +0800 CST
  1338  2018/08/27 10:35:50 Block connected: 00000000000000000019d7296c9b5c175369ad337ec44b76bd4728021a09b864 (534750) 2018-08-02 06:55:44 +0800 CST
  1339  2018/08/27 10:35:53 Block connected: 00000000000000000022db98cf47e944ed58ca450c819e8fef8f8c71ca5d9901 (534751) 2018-08-02 06:57:39 +0800 CST
  1340  2018/08/27 10:35:53 Client shutting down...
  1341  2018/08/27 10:35:53 Client shutdown complete.
  1342  ```
  1343  
  1344  <a name="ExampleNodeJsCode" />
  1345  
  1346  ### 9.2. Example node.js Code
  1347  
  1348  <a name="ExampleNotifyBlocks" />
  1349  
  1350  **9.2.1 Using notifyblocks to be Notified of Block Connects and Disconnects**<br />
  1351  
  1352  The following is example node.js code which uses [ws](https://github.com/einaros/ws)
  1353  (can be installed with `npm install ws`) to connect with a btcd instance,
  1354  issues [notifyblocks](#notifyblocks) to register for
  1355  [blockconnected](#blockconnected) and [blockdisconnected](#blockdisconnected)
  1356  notifications, and displays all incoming messages.
  1357  
  1358  ```javascript
  1359  var fs = require('fs');
  1360  var WebSocket = require('ws');
  1361  
  1362  // Load the certificate for the TLS connection which is automatically
  1363  // generated by btcd when it starts the RPC server and doesn't already
  1364  // have one.
  1365  var cert = fs.readFileSync('/path/to/btcd/appdata/rpc.cert');
  1366  var user = "yourusername";
  1367  var password = "yourpassword";
  1368  
  1369  
  1370  // Initiate the websocket connection.  The btcd generated certificate acts as
  1371  // its own certificate authority, so it needs to be specified in the 'ca' array
  1372  // for the certificate to properly validate.
  1373  var ws = new WebSocket('wss://127.0.0.1:8334/ws', {
  1374    headers: {
  1375      'Authorization': 'Basic '+new Buffer(user+':'+password).toString('base64')
  1376    },
  1377    cert: cert,
  1378    ca: [cert]
  1379  });
  1380  ws.on('open', function() {
  1381      console.log('CONNECTED');
  1382      // Send a JSON-RPC command to be notified when blocks are connected and
  1383      // disconnected from the chain.
  1384      ws.send('{"jsonrpc":"1.0","id":"0","method":"notifyblocks","params":[]}');
  1385  });
  1386  ws.on('message', function(data, flags) {
  1387      console.log(data);
  1388  });
  1389  ws.on('error', function(derp) {
  1390    console.log('ERROR:' + derp);
  1391  })
  1392  ws.on('close', function(data) {
  1393    console.log('DISCONNECTED');
  1394  })
  1395  ```