|
1 | 1 | // SPDX-License-Identifier: CC0-1.0
|
2 | 2 |
|
3 |
| -//! JSON-RPC types for `bitcoind v0.17.1`. |
| 3 | +//! # JSON-RPC types for Bitcoin Core `v0.17.1` |
4 | 4 | //!
|
5 | 5 | //! These structs are shaped for the JSON data returned by the JSON-RPC API. They use stdlib types
|
6 | 6 | //! (or custom types) and where necessary implement an `into_model` function to convert the type to
|
7 |
| -//! a [`crate::model`] type of the same name. The types in this module are version specific, the |
| 7 | +//! a [`crate::model`] type of the same name. The types in this module are version specific. The |
8 | 8 | //! types in the `model` module are version nonspecific and are strongly typed using `rust-bitcoin`.
|
9 | 9 | //!
|
10 |
| -//! ## Key: |
11 |
| -//! |
12 |
| -//! - `[ ]` Not yet done. |
13 |
| -//! - `[i]` Implemented but not yet tested (includes `into_model`). |
14 |
| -//! - `[x]` Implemented _and_ tested. |
15 |
| -//! - `[-]` Intentionally not done, typically for one of the following reasons: |
16 |
| -//! - Method does not return anything. |
17 |
| -//! - Method returns a simple type (e.g. bool or integer). |
18 |
| -//! - Method is deprecated. |
19 |
| -// TODO: After all the `[i]` is gone (ie testing done) remove the backticks. |
20 |
| -//! |
21 |
| -//! **== Blockchain ==** |
22 |
| -//! - `[x]` `getbestblockhash` |
23 |
| -//! - `[x]` `getblock "blockhash" ( verbosity ) ` |
24 |
| -//! - `[x]` `getblockchaininfo` |
25 |
| -//! - `[x]` `getblockcount` |
26 |
| -//! - `[x]` `getblockhash height` |
27 |
| -//! - `[x]` `getblockheader "hash" ( verbose )` |
28 |
| -//! - `[x]` `getblockstats hash_or_height ( stats )` |
29 |
| -//! - `[x]` `getchaintips` |
30 |
| -//! - `[x]` `getchaintxstats ( nblocks blockhash )` |
31 |
| -//! - `[x]` `getdifficulty` |
32 |
| -//! - `[i]` `getmempoolancestors txid (verbose)` |
33 |
| -//! - `[i]` `getmempooldescendants txid (verbose)` |
34 |
| -//! - `[i]` `getmempoolentry txid` |
35 |
| -//! - `[i]` `getmempoolinfo` |
36 |
| -//! - `[i]` `getrawmempool ( verbose )` |
37 |
| -//! - `[i]` `gettxout "txid" n ( include_mempool )` |
38 |
| -//! - `[i]` `gettxoutproof ["txid",...] ( blockhash )` |
39 |
| -//! - `[i]` `gettxoutsetinfo` |
40 |
| -//! - `[-]` `preciousblock "blockhash"` |
41 |
| -//! - `[-]` `pruneblockchain` |
42 |
| -//! - `[-]` `savemempool` |
43 |
| -//! - `[-]` `scantxoutset <action> ( <scanobjects> )` |
44 |
| -//! - `[-]` `verifychain ( checklevel nblocks )` |
45 |
| -//! - `[i]` `verifytxoutproof "proof"` |
46 |
| -//! |
47 |
| -//! **== Control ==** |
48 |
| -//! - `[x]` `getmemoryinfo ("mode")` |
49 |
| -//! - `[-]` `help ( "command" )` |
50 |
| -//! - `[x]` `logging ( <include> <exclude> )` |
51 |
| -//! - `[x]` `stop` |
52 |
| -//! - `[x]` `uptime` |
53 |
| -//! |
54 |
| -//! **== Generating ==** |
55 |
| -//! - `[x]` `generate nblocks ( maxtries )` |
56 |
| -//! - `[x]` `generatetoaddress nblocks address (maxtries)` |
57 |
| -//! |
58 |
| -//! **== Mining ==** |
59 |
| -//! - `[ ]` `getblocktemplate ( TemplateRequest )` |
60 |
| -//! - `[ ]` `getmininginfo` |
61 |
| -//! - `[ ]` `getnetworkhashps ( nblocks height )` |
62 |
| -//! - `[ ]` `prioritisetransaction <txid> <dummy value> <fee delta>` |
63 |
| -//! - `[ ]` `submitblock "hexdata" ( "dummy" )` |
64 |
| -//! |
65 |
| -//! **== Network ==** |
66 |
| -//! - `[-]` `addnode "node" "add|remove|onetry"` |
67 |
| -//! - `[-]` `clearbanned` |
68 |
| -//! - `[-]` `disconnectnode "[address]" [nodeid]` |
69 |
| -//! - `[x]` `getaddednodeinfo ( "node" )` |
70 |
| -//! - `[-]` `getconnectioncount` |
71 |
| -//! - `[x]` `getnettotals` |
72 |
| -//! - `[x]` `getnetworkinfo` |
73 |
| -//! - `[x]` `getpeerinfo` |
74 |
| -//! - `[-]` `listbanned` |
75 |
| -//! - `[-]` `ping` |
76 |
| -//! - `[-]` `setban "subnet" "add|remove" (bantime) (absolute)` |
77 |
| -//! - `[-]` `setnetworkactive true|false` |
78 |
| -//! |
79 |
| -//! **== Rawtransactions ==** |
80 |
| -//! - `[ ]` `combinepsbt ["psbt",...]` |
81 |
| -//! - `[ ]` `combinerawtransaction ["hexstring",...]` |
82 |
| -//! - `[ ]` `converttopsbt "hexstring" ( permitsigdata iswitness )` |
83 |
| -//! - `[ ]` `createpsbt [{"txid":"id","vout":n},...] [{"address":amount},{"data":"hex"},...] ( locktime ) ( replaceable )` |
84 |
| -//! - `[ ]` `createrawtransaction [{"txid":"id","vout":n},...] [{"address":amount},{"data":"hex"},...] ( locktime ) ( replaceable )` |
85 |
| -//! - `[ ]` `decodepsbt "psbt"` |
86 |
| -//! - `[ ]` `decoderawtransaction "hexstring" ( iswitness )` |
87 |
| -//! - `[ ]` `decodescript "hexstring"` |
88 |
| -//! - `[ ]` `finalizepsbt "psbt" ( extract )` |
89 |
| -//! - `[ ]` `fundrawtransaction "hexstring" ( options iswitness )` |
90 |
| -//! - `[ ]` `getrawtransaction "txid" ( verbose "blockhash" )` |
91 |
| -//! - `[i]` `sendrawtransaction "hexstring" ( allowhighfees )` |
92 |
| -//! - `[ ]` `signrawtransaction "hexstring" ( [{"txid":"id","vout":n,"scriptPubKey":"hex","redeemScript":"hex"},...] ["privatekey1",...] sighashtype )` |
93 |
| -//! - `[ ]` `signrawtransactionwithkey "hexstring" ["privatekey1",...] ( [{"txid":"id","vout":n,"scriptPubKey":"hex","redeemScript":"hex"},...] sighashtype )` |
94 |
| -//! - `[ ]` `testmempoolaccept ["rawtxs"] ( allowhighfees )` |
95 |
| -//! |
96 |
| -//! **== Util ==** |
97 |
| -//! - `[ ]` `createmultisig nrequired ["key",...] ( "address_type" )` |
98 |
| -//! - `[ ]` `estimatesmartfee conf_target ("estimate_mode")` |
99 |
| -//! - `[ ]` `signmessagewithprivkey "privkey" "message"` |
100 |
| -//! - `[ ]` `validateaddress "address"` |
101 |
| -//! - `[ ]` `verifymessage "address" "signature" "message"` |
102 |
| -//! |
103 |
| -//! **== Wallet ==** |
104 |
| -//! - `[-]` `abandontransaction "txid"` |
105 |
| -//! - `[-]` `abortrescan` |
106 |
| -//! - `[x]` `addmultisigaddress nrequired ["key",...] ( "label" "address_type" )` |
107 |
| -//! - `[-]` `backupwallet "destination"` |
108 |
| -//! - `[x]` `bumpfee "txid" ( options ) ` |
109 |
| -//! - `[x]` `createwallet "wallet_name" ( disable_private_keys )` |
110 |
| -//! - `[x]` `dumpprivkey "address"` |
111 |
| -//! - `[x]` `dumpwallet "filename"` |
112 |
| -//! - `[-]` `encryptwallet "passphrase"` |
113 |
| -//! - `[-]` `getaccount (Deprecated, will be removed in V0.18. To use this command, start bitcoind with -deprecatedrpc=accounts)` |
114 |
| -//! - `[-]` `getaccountaddress (Deprecated, will be removed in V0.18. To use this command, start bitcoind with -deprecatedrpc=accounts)` |
115 |
| -//! - `[-]` `getaddressbyaccount (Deprecated, will be removed in V0.18. To use this command, start bitcoind with -deprecatedrpc=accounts)` |
116 |
| -//! - `[x]` `getaddressesbylabel "label"` |
117 |
| -//! - `[x]` `getaddressinfo "address"` |
118 |
| -//! - `[x]` `getbalance ( "(dummy)" minconf include_watchonly )` |
119 |
| -//! - `[x]` `getnewaddress ( "label" "address_type" )` |
120 |
| -//! - `[x]` `getrawchangeaddress ( "address_type" )` |
121 |
| -//! - `[-]` `getreceivedbyaccount (Deprecated, will be removed in V0.18. To use this command, start bitcoind with -deprecatedrpc=accounts)` |
122 |
| -//! - `[i]` `getreceivedbyaddress "address" ( minconf )` |
123 |
| -//! - `[x]` `gettransaction "txid" ( include_watchonly )` |
124 |
| -//! - `[i]` `getunconfirmedbalance` |
125 |
| -//! - `[i]` `getwalletinfo` |
126 |
| -//! - `[-]` `importaddress "address" ( "label" rescan p2sh )` |
127 |
| -//! - `[-]` `importmulti "requests" ( "options" )` |
128 |
| -//! - `[-]` `importprivkey "privkey" ( "label" ) ( rescan )` |
129 |
| -//! - `[-]` `importprunedfunds` |
130 |
| -//! - `[-]` `importpubkey "pubkey" ( "label" rescan )` |
131 |
| -//! - `[-]` `importwallet "filename"` |
132 |
| -//! - `[-]` `keypoolrefill ( newsize )` |
133 |
| -//! - `[-]` `listaccounts (Deprecated, will be removed in V0.18. To use this command, start bitcoind with -deprecatedrpc=accounts)` |
134 |
| -//! - `[i]` `listaddressgroupings` |
135 |
| -//! - `[i]` `listlabels ( "purpose" )` |
136 |
| -//! - `[i]` `listlockunspent` |
137 |
| -//! - `[-]` `listreceivedbyaccount (Deprecated, will be removed in V0.18. To use this command, start bitcoind with -deprecatedrpc=accounts)` |
138 |
| -//! - `[i]` `listreceivedbyaddress ( minconf include_empty include_watchonly address_filter )` |
139 |
| -//! - `[i]` `listsinceblock ( "blockhash" target_confirmations include_watchonly include_removed )` |
140 |
| -//! - `[i]` `listtransactions (label count skip include_watchonly)` |
141 |
| -//! - `[i]` `listunspent ( minconf maxconf ["addresses",...] [include_unsafe] [query_options])` |
142 |
| -//! - `[i]` `listwallets` |
143 |
| -//! - `[x]` `loadwallet "filename"` |
144 |
| -//! - `[-]` `lockunspent unlock ([{"txid":"txid","vout":n},...])` |
145 |
| -//! - `[-]` `move (Deprecated, will be removed in V0.18. To use this command, start bitcboind with -deprecatedrpc=accounts)` |
146 |
| -//! - `[-]` `removeprunedfunds "txid"` |
147 |
| -//! - `[x]` `rescanblockchain ("start_height") ("stop_height")` |
148 |
| -//! - `[-]` `sendfrom (Deprecated, will be removed in V0.18. To use this command, start bitcoind with -deprecatedrpc=accounts)` |
149 |
| -//! - `[i]` `sendmany "" {"address":amount,...} ( minconf "comment" ["address",...] replaceable conf_target "estimate_mode")` |
150 |
| -//! - `[x]` `sendtoaddress "address" amount ( "comment" "comment_to" subtractfeefromamount replaceable conf_target "estimate_mode")` |
151 |
| -//! - `[-]` `setaccount (Deprecated, will be removed in V0.18. To use this command, start bitcoind with -deprecatedrpc=accounts)` |
152 |
| -//! - `[-]` `sethdseed ( "newkeypool" "seed" )` |
153 |
| -//! - `[-]` `settxfee amount` |
154 |
| -//! - `[i]` `signmessage "address" "message"` |
155 |
| -//! - `[i]` `signrawtransactionwithwallet "hexstring" ( [{"txid":"id","vout":n,"scriptPubKey":"hex","redeemScript":"hex"},...] sighashtype )` |
156 |
| -//! - `[-]` `unloadwallet ( "wallet_name" )` |
157 |
| -//! - `[i]` `walletcreatefundedpsbt [{"txid":"id","vout":n},...] [{"address":amount},{"data":"hex"},...] ( locktime ) ( replaceable ) ( options bip32derivs )` |
158 |
| -//! - `[-]` `walletlock` |
159 |
| -//! - `[-]` `walletpassphrase "passphrase" timeout` |
160 |
| -//! - `[-]` `walletpassphrasechange "oldpassphrase" "newpassphrase"` |
161 |
| -//! - `[i]` `walletprocesspsbt "psbt" ( sign "sighashtype" bip32derivs )` |
162 |
| -//! |
163 |
| -//! **== Zmq ==** |
164 |
| -//! - `[i]` `getzmqnotifications` |
| 10 | +//! ### Method name and implementation status |
| 11 | +//! |
| 12 | +//! Every JSON-RPC method supported by this version of Bitcoin Core is listed below along with its |
| 13 | +//! current implementation status. |
| 14 | +//! |
| 15 | +//! <details> |
| 16 | +//! <summary> Methods from the == Blockchain == section </summary> |
| 17 | +//! |
| 18 | +//! | JSON-PRC Method Name | Status | |
| 19 | +//! |:-----------------------------------|:---------------:| |
| 20 | +//! | getbestblockhash | done | |
| 21 | +//! | getblock | done | |
| 22 | +//! | getblockchaininfo | done | |
| 23 | +//! | getblockcount | done | |
| 24 | +//! | getblockhash | done | |
| 25 | +//! | getblockheader | done | |
| 26 | +//! | getblockstats | done | |
| 27 | +//! | getchaintips | done | |
| 28 | +//! | getchaintxstats | done | |
| 29 | +//! | getdifficulty | done | |
| 30 | +//! | getmempoolancestors | done (untested) | |
| 31 | +//! | getmempooldescendants | done (untested) | |
| 32 | +//! | getmempoolentry | done (untested) | |
| 33 | +//! | getmempoolinfo | done (untested) | |
| 34 | +//! | getrawmempool | done (untested) | |
| 35 | +//! | gettxout | done (untested) | |
| 36 | +//! | gettxoutproof | done (untested) | |
| 37 | +//! | gettxoutsetinfo | done (untested) | |
| 38 | +//! | preciousblock | omitted | |
| 39 | +//! | pruneblockchain | omitted | |
| 40 | +//! | savemempool | omitted | |
| 41 | +//! | scantxoutset | omitted | |
| 42 | +//! | verifychain | omitted | |
| 43 | +//! | verifytxoutproof | done (untested) | |
| 44 | +//! |
| 45 | +//! </details> |
| 46 | +//! |
| 47 | +//! <details> |
| 48 | +//! <summary> Methods from the == Control == section </summary> |
| 49 | +//! |
| 50 | +//! | JSON-PRC Method Name | Status | |
| 51 | +//! |:-----------------------------------|:---------------:| |
| 52 | +//! | getmemoryinfo | done | |
| 53 | +//! | help | omitted | |
| 54 | +//! | logging | done | |
| 55 | +//! | stop | omitted | |
| 56 | +//! | uptime | omitted | |
| 57 | +//! |
| 58 | +//! </details> |
| 59 | +//! |
| 60 | +//! <details> |
| 61 | +//! <summary> Methods from the == Generating == section </summary> |
| 62 | +//! |
| 63 | +//! | JSON-PRC Method Name | Status | |
| 64 | +//! |:-----------------------------------|:---------------:| |
| 65 | +//! | generate | done | |
| 66 | +//! | generatetoaddress | done | |
| 67 | +//! |
| 68 | +//! </details> |
| 69 | +//! |
| 70 | +//! <details> |
| 71 | +//! <summary> Methods from the == Mining == section </summary> |
| 72 | +//! |
| 73 | +//! | JSON-PRC Method Name | Status | |
| 74 | +//! |:-----------------------------------|:---------------:| |
| 75 | +//! | getblocktemplate | todo | |
| 76 | +//! | getmininginfo | todo | |
| 77 | +//! | getnetworkhashps | todo | |
| 78 | +//! | prioritisetransaction | todo | |
| 79 | +//! | submitblock | todo | |
| 80 | +//! |
| 81 | +//! </details> |
| 82 | +//! |
| 83 | +//! <details> |
| 84 | +//! <summary> Methods from the == Network == section </summary> |
| 85 | +//! |
| 86 | +//! | JSON-PRC Method Name | Status | |
| 87 | +//! |:-----------------------------------|:---------------:| |
| 88 | +//! | addnode | omitted | |
| 89 | +//! | clearbanned | omitted | |
| 90 | +//! | disconnectnode | omitted | |
| 91 | +//! | getaddednodeinfo | done | |
| 92 | +//! | getconnectioncount | omitted | |
| 93 | +//! | getnettotals | done | |
| 94 | +//! | getnetworkinfo | done | |
| 95 | +//! | getpeerinfo | done | |
| 96 | +//! | listbanned | omitted | |
| 97 | +//! | ping | omitted | |
| 98 | +//! | setban | omitted | |
| 99 | +//! | setnetworkactive | omitted | |
| 100 | +//! |
| 101 | +//! </details> |
| 102 | +//! |
| 103 | +//! <details> |
| 104 | +//! <summary> Methods from the == Rawtransactions == section </summary> |
| 105 | +//! |
| 106 | +//! | JSON-PRC Method Name | Status | |
| 107 | +//! |:-----------------------------------|:---------------:| |
| 108 | +//! | combinepsbt | todo | |
| 109 | +//! | combinerawtransaction | todo | |
| 110 | +//! | converttopsbt | todo | |
| 111 | +//! | createpsbt | todo | |
| 112 | +//! | createrawtransaction | todo | |
| 113 | +//! | decodepsbt | todo | |
| 114 | +//! | decoderawtransaction | todo | |
| 115 | +//! | decodescript | todo | |
| 116 | +//! | finalizepsbt | todo | |
| 117 | +//! | fundrawtransaction | todo | |
| 118 | +//! | getrawtransaction | todo | |
| 119 | +//! | sendrawtransaction | done (untested) | |
| 120 | +//! | signrawtransaction | todo | |
| 121 | +//! | signrawtransactionwithkey | todo | |
| 122 | +//! | testmempoolaccept | todo | |
| 123 | +//! |
| 124 | +//! </details> |
| 125 | +//! |
| 126 | +//! <details> |
| 127 | +//! <summary> Methods from the == Util == section </summary> |
| 128 | +//! |
| 129 | +//! | JSON-PRC Method Name | Status | |
| 130 | +//! |:-----------------------------------|:---------------:| |
| 131 | +//! | createmultisig | omitted | |
| 132 | +//! | estimatesmartfee | omitted | |
| 133 | +//! | signmessagewithprivkey | omitted | |
| 134 | +//! | validateaddress | omitted | |
| 135 | +//! | verifymessage | omitted | |
| 136 | +//! |
| 137 | +//! </details> |
| 138 | +//! |
| 139 | +//! <details> |
| 140 | +//! <summary> Methods from the == Wallet == section </summary> |
| 141 | +//! |
| 142 | +//! | JSON-PRC Method Name | Status | |
| 143 | +//! |:-----------------------------------|:---------------:| |
| 144 | +//! | abandontransaction | omitted | |
| 145 | +//! | abortrescan | omitted | |
| 146 | +//! | addmultisigaddress | done | |
| 147 | +//! | backupwallet | omitted | |
| 148 | +//! | bumpfee | done | |
| 149 | +//! | createwallet | done | |
| 150 | +//! | dumpprivkey | done | |
| 151 | +//! | dumpwallet | done | |
| 152 | +//! | encryptwallet | omitted | |
| 153 | +//! | getaccount | omitted | |
| 154 | +//! | getaccountaddress | omitted | |
| 155 | +//! | getaddressbyaccount | omitted | |
| 156 | +//! | getaddressesbylabel | done | |
| 157 | +//! | getaddressinfo | done | |
| 158 | +//! | getbalance | done | |
| 159 | +//! | getnewaddress | done | |
| 160 | +//! | getrawchangeaddress | done | |
| 161 | +//! | getreceivedbyaccount | omitted | |
| 162 | +//! | getreceivedbyaddress | done (untested) | |
| 163 | +//! | gettransaction | done | |
| 164 | +//! | getunconfirmedbalance | done (untested) | |
| 165 | +//! | getwalletinfo | done (untested) | |
| 166 | +//! | importaddress | omitted | |
| 167 | +//! | importmulti | omitted | |
| 168 | +//! | importprivkey | omitted | |
| 169 | +//! | importprunedfunds | omitted | |
| 170 | +//! | importpubkey | omitted | |
| 171 | +//! | importwallet | omitted | |
| 172 | +//! | keypoolrefill | omitted | |
| 173 | +//! | listaccounts | omitted | |
| 174 | +//! | listaddressgroupings | done (untested) | |
| 175 | +//! | listlabels | done (untested) | |
| 176 | +//! | listlockunspent | done (untested) | |
| 177 | +//! | listreceivedbyaccount | omitted | |
| 178 | +//! | listreceivedbyaddress | done (untested) | |
| 179 | +//! | listsinceblock | done (untested) | |
| 180 | +//! | listtransactions | done (untested) | |
| 181 | +//! | listunspent | done (untested) | |
| 182 | +//! | listwallets | done (untested) | |
| 183 | +//! | loadwallet | done | |
| 184 | +//! | lockunspent | omitted | |
| 185 | +//! | move | omitted | |
| 186 | +//! | removeprunedfunds | omitted | |
| 187 | +//! | rescanblockchain | done | |
| 188 | +//! | sendfrom | omitted | |
| 189 | +//! | sendmany | done (untested) | |
| 190 | +//! | sendtoaddress | done | |
| 191 | +//! | setaccount | omitted | |
| 192 | +//! | sethdseed | omitted | |
| 193 | +//! | settxfee | omitted | |
| 194 | +//! | signmessage | done (untested) | |
| 195 | +//! | signrawtransactionwithwallet | done (untested) | |
| 196 | +//! | unloadwallet | omitted | |
| 197 | +//! | walletcreatefundedpsbt | done (untested) | |
| 198 | +//! | walletlock | omitted | |
| 199 | +//! | walletpassphrase | omitted | |
| 200 | +//! | walletpassphrasechange | omitted | |
| 201 | +//! | walletprocesspsbt | done (untested) | |
| 202 | +//! |
| 203 | +//! </details> |
| 204 | +//! |
| 205 | +//! <details> |
| 206 | +//! <summary> Methods from the == Zmq == section </summary> |
| 207 | +//! |
| 208 | +//! | JSON-PRC Method Name | Status | |
| 209 | +//! |:-----------------------------------|:---------------:| |
| 210 | +//! | getzmqnotifications` | done (untested) | |
| 211 | +//! |
| 212 | +//! </details> |
| 213 | +//! |
| 214 | +//! |
| 215 | +//! **Items marked omitted were omitted because:** |
| 216 | +//! |
| 217 | +//! - Method does not return anything. |
| 218 | +//! - Method returns a simple type (e.g. bool or integer). |
| 219 | +//! - Method is deprecated. |
165 | 220 |
|
166 | 221 | // JSON-RPC types by API section.
|
167 | 222 | mod blockchain;
|
|
0 commit comments