|
| 1 | +use bdk_chain::DescriptorId; |
1 | 2 | use bdk_wallet::{KeyRing, Wallet};
|
2 | 3 | use bdk_wallet::bitcoin::Network;
|
3 | 4 | use bdk_wallet::KeychainKind;
|
4 | 5 |
|
5 | 6 | const EXTERNAL_DESC: &str = "wpkh(tprv8ZgxMBicQKsPdy6LMhUtFHAgpocR8GC6QmwMSFpZs7h6Eziw3SpThFfczTDh5rW2krkqffa11UpX3XkeTTB2FvzZKWXqPY54Y6Rq4AQ5R8L/84'/1'/0'/0/*)";
|
6 | 7 | const OTHER_DESC_21: &str = "wpkh(tprv8ZgxMBicQKsPdy6LMhUtFHAgpocR8GC6QmwMSFpZs7h6Eziw3SpThFfczTDh5rW2krkqffa11UpX3XkeTTB2FvzZKWXqPY54Y6Rq4AQ5R8L/84'/1'/0'/21/*)";
|
7 |
| -const OTHER_DESC_33: &str = "wpkh(tprv8ZgxMBicQKsPdy6LMhUtFHAgpocR8GC6QmwMSFpZs7h6Eziw3SpThFfczTDh5rW2krkqffa11UpX3XkeTTB2FvzZKWXqPY54Y6Rq4AQ5R8L/84'/1'/0'/33/*)"; |
8 |
| -const OTHER_DESC_44: &str = "wpkh(tprv8ZgxMBicQKsPdy6LMhUtFHAgpocR8GC6QmwMSFpZs7h6Eziw3SpThFfczTDh5rW2krkqffa11UpX3XkeTTB2FvzZKWXqPY54Y6Rq4AQ5R8L/84'/1'/0'/44/*)"; |
| 8 | +const OTHER_DESC_31: &str = "wpkh(tprv8ZgxMBicQKsPdy6LMhUtFHAgpocR8GC6QmwMSFpZs7h6Eziw3SpThFfczTDh5rW2krkqffa11UpX3XkeTTB2FvzZKWXqPY54Y6Rq4AQ5R8L/84'/1'/0'/33/*)"; |
| 9 | +const OTHER_DESC_41: &str = "wpkh(tprv8ZgxMBicQKsPdy6LMhUtFHAgpocR8GC6QmwMSFpZs7h6Eziw3SpThFfczTDh5rW2krkqffa11UpX3XkeTTB2FvzZKWXqPY54Y6Rq4AQ5R8L/84'/1'/0'/44/*)"; |
9 | 10 |
|
10 | 11 | fn main() -> Result<(), anyhow::Error> {
|
| 12 | + // Create a keyring with a single, default descriptor (aka the KeychainKind::External from the 1.2.0 API) |
11 | 13 | let mut keyring = KeyRing::new(EXTERNAL_DESC, Network::Testnet4);
|
12 |
| - // keyring.add_other_descriptor(OTHER_DESC_21); |
13 |
| - // let keychains = keyring.list_keychains(); |
14 |
| - // println!("{:?}", keychains); |
15 | 14 |
|
| 15 | + // Add 3 new custom descriptors |
| 16 | + keyring.add_other_descriptor(OTHER_DESC_21); |
| 17 | + keyring.add_other_descriptor(OTHER_DESC_31); |
| 18 | + keyring.add_other_descriptor(OTHER_DESC_41); |
| 19 | + |
| 20 | + let keychain_ids: Vec<DescriptorId> = keyring.list_keychain_ids(); |
| 21 | + println!("{:?}", keychain_ids); |
| 22 | + |
| 23 | + // Create the wallet and peek addresses on each of the descriptors |
16 | 24 | let wallet: Wallet = Wallet::new(keyring).create_wallet_no_persist()?;
|
17 | 25 | let address_1 = wallet.peek_address(KeychainKind::Default, 0).unwrap();
|
18 |
| - // let address_2 = wallet.peek_address((KeychainKind::Other(), 0).unwrap(); |
| 26 | + let address_2 = wallet.peek_address(KeychainKind::Other(keychain_ids[1]), 0).unwrap(); |
| 27 | + let address_3 = wallet.peek_address(KeychainKind::Other(keychain_ids[2]), 0).unwrap(); |
| 28 | + let address_4 = wallet.peek_address(KeychainKind::Other(keychain_ids[3]), 0).unwrap(); |
19 | 29 |
|
20 |
| - println!("Address {:?} at index {:?} on keychain {:?}", address_1.address, address_1.index, address_1.keychain); |
| 30 | + println!("Address 1 {:?} at index {:?} on keychain {:?}", address_1.address, address_1.index, address_1.keychain); |
| 31 | + println!("Address 2 {:?} at index {:?} on keychain {:?}", address_2.address, address_2.index, address_2.keychain); |
| 32 | + println!("Address 3 {:?} at index {:?} on keychain {:?}", address_3.address, address_3.index, address_3.keychain); |
| 33 | + println!("Address 4 {:?} at index {:?} on keychain {:?}", address_4.address, address_4.index, address_4.keychain); |
21 | 34 |
|
22 | 35 | Ok(())
|
23 | 36 | }
|
0 commit comments