corepc_client/client_sync/v29/
mod.rs

1// SPDX-License-Identifier: CC0-1.0
2
3//! A JSON-RPC client for testing against Bitcoin Core `v29`.
4//!
5//! We ignore option arguments unless they effect the shape of the returned JSON data.
6
7pub mod blockchain;
8
9use std::collections::BTreeMap;
10use std::path::Path;
11
12use bitcoin::address::{Address, NetworkChecked};
13use bitcoin::{sign_message, Amount, Block, BlockHash, PublicKey, Txid};
14use serde::{Deserialize, Serialize};
15use serde_json::json;
16
17use crate::client_sync::into_json;
18use crate::types::v29::*;
19
20#[rustfmt::skip]                // Keep public re-exports separate.
21pub use crate::client_sync::{
22    v17::{Input, Output, WalletCreateFundedPsbtInput},
23    v23::AddressType,
24};
25
26crate::define_jsonrpc_minreq_client!("v29");
27crate::impl_client_check_expected_server_version!({ [290000] });
28
29// == Blockchain ==
30crate::impl_client_v17__getbestblockhash!();
31crate::impl_client_v17__getblock!();
32crate::impl_client_v17__getblockchaininfo!();
33crate::impl_client_v17__getblockcount!();
34crate::impl_client_v19__getblockfilter!();
35crate::impl_client_v17__getblockhash!();
36crate::impl_client_v17__getblockheader!();
37crate::impl_client_v17__getblockstats!();
38crate::impl_client_v17__getchaintips!();
39crate::impl_client_v17__getchaintxstats!();
40crate::impl_client_v29__getdescriptoractivity!();
41crate::impl_client_v17__getdifficulty!();
42crate::impl_client_v17__getmempoolancestors!();
43crate::impl_client_v17__getmempooldescendants!();
44crate::impl_client_v17__getmempoolentry!();
45crate::impl_client_v17__getmempoolinfo!();
46crate::impl_client_v17__getrawmempool!();
47crate::impl_client_v17__gettxout!();
48crate::impl_client_v17__gettxoutproof!();
49crate::impl_client_v26__gettxoutsetinfo!();
50crate::impl_client_v17__preciousblock!();
51crate::impl_client_v17__pruneblockchain!();
52crate::impl_client_v23__savemempool!();
53crate::impl_client_v17__verifychain!();
54crate::impl_client_v17__verifytxoutproof!();
55
56// == Control ==
57crate::impl_client_v17__getmemoryinfo!();
58crate::impl_client_v18__getrpcinfo!();
59crate::impl_client_v17__help!();
60crate::impl_client_v17__logging!();
61crate::impl_client_v17__stop!();
62crate::impl_client_v17__uptime!();
63
64// == Generating ==
65crate::impl_client_v17__generatetoaddress!();
66crate::impl_client_v17__invalidateblock!();
67
68// == Mining ==
69crate::impl_client_v17__getblocktemplate!();
70crate::impl_client_v17__getmininginfo!();
71crate::impl_client_v17__getnetworkhashps!();
72crate::impl_client_v26__get_prioritised_transactions!();
73crate::impl_client_v17__prioritisetransaction!();
74crate::impl_client_v17__submitblock!();
75
76// == Network ==
77crate::impl_client_v17__getaddednodeinfo!();
78crate::impl_client_v17__getnettotals!();
79crate::impl_client_v17__getnetworkinfo!();
80crate::impl_client_v18__getnodeaddresses!();
81crate::impl_client_v17__getpeerinfo!();
82
83// == Rawtransactions ==
84crate::impl_client_v18__analyzepsbt!();
85crate::impl_client_v17__combinepsbt!();
86crate::impl_client_v17__combinerawtransaction!();
87crate::impl_client_v17__converttopsbt!();
88crate::impl_client_v17__createpsbt!();
89crate::impl_client_v17__createrawtransaction!();
90crate::impl_client_v17__decodepsbt!();
91crate::impl_client_v17__decoderawtransaction!();
92crate::impl_client_v17__decodescript!();
93crate::impl_client_v17__finalizepsbt!();
94crate::impl_client_v17__fundrawtransaction!();
95crate::impl_client_v17__getrawtransaction!();
96crate::impl_client_v18__joinpsbts!();
97crate::impl_client_v17__sendrawtransaction!();
98crate::impl_client_v17__signrawtransaction!();
99crate::impl_client_v17__signrawtransactionwithkey!();
100crate::impl_client_v28__submitpackage!();
101crate::impl_client_v17__testmempoolaccept!();
102crate::impl_client_v18__utxoupdatepsbt!();
103
104// == Util ==
105crate::impl_client_v17__createmultisig!();
106crate::impl_client_v17__estimatesmartfee!();
107crate::impl_client_v17__signmessagewithprivkey!();
108crate::impl_client_v17__validateaddress!();
109crate::impl_client_v17__verifymessage!();
110
111// == Wallet ==
112crate::impl_client_v17__addmultisigaddress!();
113crate::impl_client_v17__bumpfee!();
114crate::impl_client_v23__createwallet!();
115crate::impl_client_v17__dumpprivkey!();
116crate::impl_client_v17__dumpwallet!();
117crate::impl_client_v17__getaddressesbylabel!();
118crate::impl_client_v17__getaddressinfo!();
119crate::impl_client_v17__getbalance!();
120crate::impl_client_v19__getbalances!();
121crate::impl_client_v17__getnewaddress!();
122crate::impl_client_v17__getrawchangeaddress!();
123crate::impl_client_v17__getreceivedbyaddress!();
124crate::impl_client_v17__gettransaction!();
125crate::impl_client_v17__getunconfirmedbalance!();
126crate::impl_client_v17__getwalletinfo!();
127crate::impl_client_v17__listaddressgroupings!();
128crate::impl_client_v17__listlabels!();
129crate::impl_client_v17__listlockunspent!();
130crate::impl_client_v17__listreceivedbyaddress!();
131crate::impl_client_v17__listsinceblock!();
132crate::impl_client_v17__listtransactions!();
133crate::impl_client_v17__listunspent!();
134crate::impl_client_v17__listwallets!();
135crate::impl_client_v22__loadwallet!();
136crate::impl_client_v17__rescanblockchain!();
137crate::impl_client_v17__sendmany!();
138crate::impl_client_v17__sendtoaddress!();
139crate::impl_client_v17__signmessage!();
140crate::impl_client_v17__signrawtransactionwithwallet!();
141crate::impl_client_v21__unloadwallet!();
142crate::impl_client_v17__walletcreatefundedpsbt!();
143crate::impl_client_v17__walletprocesspsbt!();
144
145/// Arg for the `getblocktemplate` method. (v29+).
146#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Eq, Default)]
147pub struct TemplateRequest {
148    #[serde(skip_serializing_if = "Option::is_none")]
149    pub mode: Option<String>,
150    #[serde(default, skip_serializing_if = "Vec::is_empty")]
151    pub capabilities: Vec<String>,
152    #[serde(default, skip_serializing_if = "Vec::is_empty")]
153    pub rules: Vec<TemplateRules>,
154    #[serde(skip_serializing_if = "Option::is_none")]
155    pub longpollid: Option<String>,
156    #[serde(skip_serializing_if = "Option::is_none")]
157    pub data: Option<String>,
158}
159
160/// Client side supported softfork deployment.
161#[derive(Copy, Clone, PartialEq, Eq, Debug, Deserialize, Serialize)]
162#[serde(rename_all = "lowercase")]
163pub enum TemplateRules {
164    /// SegWit v0 supported.
165    Segwit,
166    /// Signet supported.
167    Signet,
168    /// CSV supported.
169    Csv,
170    /// Taproot supported.
171    Taproot,
172}