]> Untitled Git - bdk/commitdiff
Properly handle the `Signet` network
authorAlekos Filini <alekos.filini@gmail.com>
Fri, 5 Feb 2021 15:23:17 +0000 (10:23 -0500)
committerAlekos Filini <alekos.filini@gmail.com>
Fri, 5 Feb 2021 21:51:48 +0000 (16:51 -0500)
Closes #62

CHANGELOG.md
examples/compiler.rs
src/descriptor/dsl.rs
src/keys/bip39.rs
src/keys/mod.rs

index 30f5d8b613a1459f5d9cc38fe6d5a1749bc9379c..3717708a7aad11e35c7030d8c3fc79e637fc4035 100644 (file)
@@ -18,6 +18,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
 - 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
index eb2e52d5fd819b6b223d54313f10ed6eb572fed5..3b62147c2fca84e76eb1b580ac5e1e672ceb99d2 100644 (file)
@@ -75,7 +75,7 @@ fn main() -> Result<(), Box<dyn Error>> {
                 .help("Sets the network")
                 .takes_value(true)
                 .default_value("testnet")
-                .possible_values(&["testnet", "regtest"]),
+                .possible_values(&["testnet", "regtest", "bitcoin", "signet"]),
         )
         .get_matches();
 
@@ -95,10 +95,12 @@ fn main() -> Result<(), Box<dyn Error>> {
 
     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()?);
index 41c4ec563af71768f05b4741869c8b584fc3a065..bc1f72567d8ed1e8ff7291053be8eb8a336b690a 100644 (file)
@@ -686,7 +686,7 @@ mod test {
 
     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;
 
@@ -971,7 +971,10 @@ mod test {
         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();
index 4f121165527091056527054f24f12ef55fa3da36..d4f80e33e0ebd31c41bb367ab1fcd3377fca7508 100644 (file)
@@ -149,7 +149,7 @@ mod test {
         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]
@@ -163,7 +163,7 @@ mod 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]
index 8c08d03aedfb3830ef2eaa417486f8200c63714d..065c008b0f8a5b0bfb092d8566432090f937e903 100644 (file)
@@ -55,9 +55,14 @@ pub type ValidNetworks = HashSet<Network>;
 
 /// 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 {
@@ -65,7 +70,7 @@ 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()
 }