Skip to content

Commit 6ac38c3

Browse files
committed
Merge bitcoindevkit/bdk#1805: feat(wallet): support Testnet4 in valid networks
c8e8a6a feat(wallet): support Testnet4 in valid networks (valued mammal) Pull request description: Adds support for `Testnet4` in valid networks. fixes #1429 ### Notes to the reviewers The `Testnet4` variant is included in `keys::any_network` and `keys::test_networks`. Tests are updated accordingly and a new assertion is added to `test_descriptor_from_str_with_keys_network` checking the result of `into_wallet_descriptor` when the specified network is `Network::Testnet4`. ### Changelog notice Added: - `Wallet` can now be constructed using `Network::Testnet4` ### Checklists #### All Submissions: * [x] I've signed all my commits * [x] I followed the [contribution guidelines](https://github.com/bitcoindevkit/bdk/blob/master/CONTRIBUTING.md) * [x] I ran `cargo fmt` and `cargo clippy` before committing ACKs for top commit: notmandatory: ACK c8e8a6a Tree-SHA512: e52642a799d1d781ad708d61ae9e78d18ecb7ad03df1e1feb6babe5067fa02859a2214b92b9d35b6922d40a606ed99163189c4cac8bbcc709edec970c1e136a4
2 parents 43f0f8d + c8e8a6a commit 6ac38c3

File tree

4 files changed

+22
-9
lines changed

4 files changed

+22
-9
lines changed

crates/wallet/src/descriptor/dsl.rs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -817,7 +817,7 @@ mod test {
817817
use crate::descriptor::{DescriptorError, DescriptorMeta};
818818
use crate::keys::{DescriptorKey, IntoDescriptorKey, ValidNetworks};
819819
use bitcoin::bip32;
820-
use bitcoin::Network::{Bitcoin, Regtest, Signet, Testnet};
820+
use bitcoin::Network::{Bitcoin, Regtest, Signet, Testnet, Testnet4};
821821
use bitcoin::PrivateKey;
822822

823823
// test the descriptor!() macro
@@ -1115,7 +1115,10 @@ mod test {
11151115
let (_desc, _key_map, valid_networks) = descriptor!(pkh(desc_key)).unwrap();
11161116
assert_eq!(
11171117
valid_networks,
1118-
[Testnet, Regtest, Signet].iter().cloned().collect()
1118+
[Testnet, Testnet4, Regtest, Signet]
1119+
.iter()
1120+
.cloned()
1121+
.collect()
11191122
);
11201123

11211124
let xprv = bip32::Xpriv::from_str("xprv9s21ZrQH143K3QTDL4LXw2F7HEK3wJUD2nW2nRk4stbPy6cq3jPPqjiChkVvvNKmPGJxWUtg6LnF5kejMRNNU3TGtRBeJgk33yuGBxrMPHi").unwrap();

crates/wallet/src/descriptor/mod.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -803,6 +803,10 @@ mod test {
803803
.into_wallet_descriptor(&secp, Network::Testnet);
804804
assert!(desc.is_ok());
805805

806+
let desc = "wpkh(tprv8ZgxMBicQKsPdpkqS7Eair4YxjcuuvDPNYmKX3sCniCf16tHEVrjjiSXEkFRnUH77yXc6ZcwHHcLNfjdi5qUvw3VDfgYiH5mNsj5izuiu2N/1/2/*)"
807+
.into_wallet_descriptor(&secp, Network::Testnet4);
808+
assert!(desc.is_ok());
809+
806810
let desc = "wpkh(tprv8ZgxMBicQKsPdpkqS7Eair4YxjcuuvDPNYmKX3sCniCf16tHEVrjjiSXEkFRnUH77yXc6ZcwHHcLNfjdi5qUvw3VDfgYiH5mNsj5izuiu2N/1/2/*)"
807811
.into_wallet_descriptor(&secp, Network::Regtest);
808812
assert!(desc.is_ok());

crates/wallet/src/keys/bip39.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,7 @@ mod test {
173173
let (desc, keys, networks) = crate::descriptor!(wpkh(key)).unwrap();
174174
assert_eq!(desc.to_string(), "wpkh([be83839f/44'/0'/0']xpub6DCQ1YcqvZtSwGWMrwHELPehjWV3f2MGZ69yBADTxFEUAoLwb5Mp5GniQK6tTp3AgbngVz9zEFbBJUPVnkG7LFYt8QMTfbrNqs6FNEwAPKA/0/*)#0r8v4nkv");
175175
assert_eq!(keys.len(), 1);
176-
assert_eq!(networks.len(), 4);
176+
assert_eq!(networks, any_network());
177177
}
178178

179179
#[test]
@@ -187,7 +187,7 @@ mod test {
187187
let (desc, keys, networks) = crate::descriptor!(wpkh(key)).unwrap();
188188
assert_eq!(desc.to_string(), "wpkh([8f6cb80c/44'/0'/0']xpub6DWYS8bbihFevy29M4cbw4ZR3P5E12jB8R88gBDWCTCNpYiDHhYWNywrCF9VZQYagzPmsZpxXpytzSoxynyeFr4ZyzheVjnpLKuse4fiwZw/0/*)#h0j0tg5m");
189189
assert_eq!(keys.len(), 1);
190-
assert_eq!(networks.len(), 4);
190+
assert_eq!(networks, any_network());
191191
}
192192

193193
#[test]

crates/wallet/src/keys/mod.rs

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -45,11 +45,12 @@ pub mod bip39;
4545
/// Set of valid networks for a key
4646
pub type ValidNetworks = HashSet<Network>;
4747

48-
/// Create a set containing mainnet, testnet, signet, and regtest
48+
/// Create a set containing mainnet, testnet, testnet4, signet, and regtest
4949
pub fn any_network() -> ValidNetworks {
5050
vec![
5151
Network::Bitcoin,
5252
Network::Testnet,
53+
Network::Testnet4,
5354
Network::Regtest,
5455
Network::Signet,
5556
]
@@ -60,11 +61,16 @@ pub fn any_network() -> ValidNetworks {
6061
pub fn mainnet_network() -> ValidNetworks {
6162
vec![Network::Bitcoin].into_iter().collect()
6263
}
63-
/// Create a set containing testnet and regtest
64+
/// Create a set containing test networks
6465
pub fn test_networks() -> ValidNetworks {
65-
vec![Network::Testnet, Network::Regtest, Network::Signet]
66-
.into_iter()
67-
.collect()
66+
vec![
67+
Network::Testnet,
68+
Network::Testnet4,
69+
Network::Regtest,
70+
Network::Signet,
71+
]
72+
.into_iter()
73+
.collect()
6874
}
6975
/// Compute the intersection of two sets
7076
pub fn merge_networks(a: &ValidNetworks, b: &ValidNetworks) -> ValidNetworks {

0 commit comments

Comments
 (0)