- Removed the `parse_descriptor` example, since it wasn't demostrating any bdk-specific API anymore.
#### Changed
- Updated `bitcoin` to `0.26`, `miniscript` to `5.1` and `electrum-client` to `0.6`
+#### Added
+- Added support for the `signet` network (issue #62)
#### Added
- Added a function to get the version of BDK at runtime
.help("Sets the network")
.takes_value(true)
.default_value("testnet")
- .possible_values(&["testnet", "regtest"]),
+ .possible_values(&["testnet", "regtest", "bitcoin", "signet"]),
)
.get_matches();
let database = MemoryDatabase::new();
- let network = match matches.value_of("network") {
- Some("regtest") => Network::Regtest,
- Some("testnet") | _ => Network::Testnet,
- };
+ let network = matches
+ .value_of("network")
+ .and_then(|n| Some(Network::from_str(n)))
+ .transpose()
+ .unwrap()
+ .unwrap_or(Network::Testnet);
let wallet = Wallet::new_offline(&format!("{}", descriptor), None, network, database)?;
info!("... First address: {}", wallet.get_new_address()?);
use crate::descriptor::{DescriptorError, DescriptorMeta};
use crate::keys::{DescriptorKey, ToDescriptorKey, ValidNetworks};
- use bitcoin::network::constants::Network::{Bitcoin, Regtest, Testnet};
+ use bitcoin::network::constants::Network::{Bitcoin, Regtest, Signet, Testnet};
use bitcoin::util::bip32;
use bitcoin::PrivateKey;
let desc_key = (xprv, path.clone()).to_descriptor_key().unwrap();
let (_desc, _key_map, valid_networks) = descriptor!(pkh(desc_key)).unwrap();
- assert_eq!(valid_networks, [Testnet, Regtest].iter().cloned().collect());
+ assert_eq!(
+ valid_networks,
+ [Testnet, Regtest, Signet].iter().cloned().collect()
+ );
let xprv = bip32::ExtendedPrivKey::from_str("xprv9s21ZrQH143K3QTDL4LXw2F7HEK3wJUD2nW2nRk4stbPy6cq3jPPqjiChkVvvNKmPGJxWUtg6LnF5kejMRNNU3TGtRBeJgk33yuGBxrMPHi").unwrap();
let path = bip32::DerivationPath::from_str("m/10/20/30/40").unwrap();
let (desc, keys, networks) = crate::descriptor!(wpkh(key)).unwrap();
assert_eq!(desc.to_string(), "wpkh([be83839f/44'/0'/0']xpub6DCQ1YcqvZtSwGWMrwHELPehjWV3f2MGZ69yBADTxFEUAoLwb5Mp5GniQK6tTp3AgbngVz9zEFbBJUPVnkG7LFYt8QMTfbrNqs6FNEwAPKA/0/*)#0r8v4nkv");
assert_eq!(keys.len(), 1);
- assert_eq!(networks.len(), 3);
+ assert_eq!(networks.len(), 4);
}
#[test]
let (desc, keys, networks) = crate::descriptor!(wpkh(key)).unwrap();
assert_eq!(desc.to_string(), "wpkh([8f6cb80c/44'/0'/0']xpub6DWYS8bbihFevy29M4cbw4ZR3P5E12jB8R88gBDWCTCNpYiDHhYWNywrCF9VZQYagzPmsZpxXpytzSoxynyeFr4ZyzheVjnpLKuse4fiwZw/0/*)#h0j0tg5m");
assert_eq!(keys.len(), 1);
- assert_eq!(networks.len(), 3);
+ assert_eq!(networks.len(), 4);
}
#[test]
/// Create a set containing mainnet, testnet and regtest
pub fn any_network() -> ValidNetworks {
- vec![Network::Bitcoin, Network::Testnet, Network::Regtest]
- .into_iter()
- .collect()
+ vec![
+ Network::Bitcoin,
+ Network::Testnet,
+ Network::Regtest,
+ Network::Signet,
+ ]
+ .into_iter()
+ .collect()
}
/// Create a set only containing mainnet
pub fn mainnet_network() -> ValidNetworks {
}
/// Create a set containing testnet and regtest
pub fn test_networks() -> ValidNetworks {
- vec![Network::Testnet, Network::Regtest]
+ vec![Network::Testnet, Network::Regtest, Network::Signet]
.into_iter()
.collect()
}