File tree Expand file tree Collapse file tree 3 files changed +46
-0
lines changed Expand file tree Collapse file tree 3 files changed +46
-0
lines changed Original file line number Diff line number Diff line change @@ -74,3 +74,6 @@ name = "esplora_blocking"
74
74
75
75
[[example ]]
76
76
name = " bitcoind_rpc"
77
+
78
+ [[example ]]
79
+ name = " keyring"
Original file line number Diff line number Diff line change
1
+ #![ allow( dead_code) ]
2
+
3
+ use bitcoin:: secp256k1:: Secp256k1 ;
4
+ use miniscript:: { Descriptor , DescriptorPublicKey } ;
5
+
6
+ pub const DESCRIPTORS : [ & str ; 8 ] = [
7
+ "pkh([21a559b8/44h/1h/0h]tpubDD2jQhEsAU9uU6Qec2M6k5ygyLS96cCa9iwpQrGAS7p6GRW7eVjCiy1WGwTxqCPiACg99A4vUCZWs5w3xgHgTohxYu2z1ZzhLrLaFHG8at1/0/*)#8t439hyk" ,
8
+ "pkh([21a559b8/44h/1h/0h]tpubDD2jQhEsAU9uU6Qec2M6k5ygyLS96cCa9iwpQrGAS7p6GRW7eVjCiy1WGwTxqCPiACg99A4vUCZWs5w3xgHgTohxYu2z1ZzhLrLaFHG8at1/1/*)#klsscz5w" ,
9
+ "sh(wpkh([21a559b8/49h/1h/0h]tpubDCpBeRAYSsoF8LkbeSa1joNjNPMgTk8jttvydCXTxDwKHJsQab4pr6NeHn11fTKBjHE7NmHrUjEgH3mkQZrQ89qy9tLpZhpMc9w6NvkKkFL/0/*))#5adnu2fe" ,
10
+ "sh(wpkh([21a559b8/49h/1h/0h]tpubDCpBeRAYSsoF8LkbeSa1joNjNPMgTk8jttvydCXTxDwKHJsQab4pr6NeHn11fTKBjHE7NmHrUjEgH3mkQZrQ89qy9tLpZhpMc9w6NvkKkFL/1/*))#pur9y4ux" ,
11
+ "tr([21a559b8/86h/1h/0h]tpubDCdJ64usD8SEL17thc2K43vG4zHNMdgvnRWNvD3j2bEGCh2ER4KjJN3zhhD54AkBuc5k695JsgkTtdVaARepr2kNxv83zKP5Ra6CsUqoPuu/0/*)#2sd7vzr2" ,
12
+ "tr([21a559b8/86h/1h/0h]tpubDCdJ64usD8SEL17thc2K43vG4zHNMdgvnRWNvD3j2bEGCh2ER4KjJN3zhhD54AkBuc5k695JsgkTtdVaARepr2kNxv83zKP5Ra6CsUqoPuu/1/*)#mygl3hnj" ,
13
+ "wpkh([21a559b8/84h/1h/0h]tpubDCWfvMa9sCes3z6nxkF7ox5kc6gjddkkJJHTJKfnj96uRGXDWY9WbpNxupEYREV4kHij4JUBYzp9ziM7qhvsUjcisQHaSQgya39nDvuimkF/0/*)#7gmvfd4d" ,
14
+ "wpkh([21a559b8/84h/1h/0h]tpubDCWfvMa9sCes3z6nxkF7ox5kc6gjddkkJJHTJKfnj96uRGXDWY9WbpNxupEYREV4kHij4JUBYzp9ziM7qhvsUjcisQHaSQgya39nDvuimkF/1/*)#0u7d5c94"
15
+ ] ;
16
+
17
+ pub fn get_descriptor ( desc_str : & str ) -> Descriptor < DescriptorPublicKey > {
18
+ Descriptor :: parse_descriptor ( & Secp256k1 :: new ( ) , desc_str)
19
+ . unwrap ( )
20
+ . 0
21
+ }
Original file line number Diff line number Diff line change
1
+ use bdk_wallet:: keyring:: KeyRing ;
2
+ use bdk_wallet:: { KeychainKind , Wallet } ;
3
+ use bitcoin:: Network ;
4
+
5
+ static EXTERNAL_DESCRIPTOR : & str = "tr([5bc5d243/86'/1'/0']tpubDC72NVP1RK5qwy2QdEfWphDsUBAfBu7oiV6jEFooHP8tGQGFVUeFxhgZxuk1j6EQRJ1YsS3th2RyDgReRqCL4zqp4jtuV2z7gbiqDH2iyUS/0/*)" ;
6
+ static INTERNAL_DESCRIPTOR : & str = "tr([5bc5d243/86'/1'/0']tpubDC72NVP1RK5qwy2QdEfWphDsUBAfBu7oiV6jEFooHP8tGQGFVUeFxhgZxuk1j6EQRJ1YsS3th2RyDgReRqCL4zqp4jtuV2z7gbiqDH2iyUS/1/*)" ;
7
+
8
+ // Simple KeyRing, allowing us to build a standard 2-descriptor wallet with receive and change
9
+ // keychains.
10
+
11
+ fn main ( ) {
12
+ let mut keyring: KeyRing < KeychainKind > = KeyRing :: new (
13
+ Network :: Regtest ,
14
+ KeychainKind :: External ,
15
+ EXTERNAL_DESCRIPTOR ,
16
+ ) ;
17
+ keyring. add_descriptor ( KeychainKind :: Internal , INTERNAL_DESCRIPTOR , false ) ;
18
+
19
+ let mut wallet = Wallet :: new ( keyring) ;
20
+ let address = wallet. reveal_next_address ( KeychainKind :: External ) . unwrap ( ) ;
21
+ println ! ( "Address at index {}: {}" , address. index, address. address)
22
+ }
You can’t perform that action at this time.
0 commit comments