@@ -3,52 +3,50 @@ use std::sync::Arc;
3
3
use async_hwi:: bitbox:: api:: runtime:: TokioRuntime ;
4
4
use async_hwi:: bitbox:: api:: { usb, BitBox } ;
5
5
use async_hwi:: bitbox:: NoiseConfigNoCache ;
6
+ use bdk_wallet:: bitcoin:: secp256k1:: { All , Secp256k1 } ;
6
7
use bdk_wallet:: bitcoin:: { Network , Psbt } ;
7
- use bdk_wallet:: bitcoin:: secp256k1:: { Secp256k1 , All } ;
8
8
use bdk_wallet:: signer:: { SignerError , SignerOrdering , TransactionSigner } ;
9
9
use bdk_wallet:: KeychainKind ;
10
10
use bdk_wallet:: { signer:: SignerCommon , signer:: SignerId , Wallet } ;
11
-
12
- use async_hwi:: { HWI , bitbox:: BitBox02 } ;
11
+
12
+ use async_hwi:: { bitbox:: BitBox02 , HWI } ;
13
13
use tokio:: runtime:: Runtime ;
14
14
15
15
#[ derive( Debug ) ]
16
16
struct HwiSigner < T : HWI > {
17
- hw_device : T
17
+ hw_device : T ,
18
18
}
19
19
20
20
impl < T : HWI > HwiSigner < T > {
21
-
22
21
async fn sign_tx ( & self , psbt : & mut Psbt ) -> Result < ( ) , SignerError > {
23
- if let Err ( e) = self . hw_device . sign_tx ( psbt) . await {
22
+ if let Err ( e) = self . hw_device . sign_tx ( psbt) . await {
24
23
return Err ( SignerError :: External ( e. to_string ( ) ) ) ;
25
24
}
26
25
Ok ( ( ) )
27
26
}
28
27
29
28
fn new ( hw_device : T ) -> Self {
30
- HwiSigner {
31
- hw_device
32
- }
29
+ HwiSigner { hw_device }
33
30
}
34
31
35
32
fn get_id ( & self ) -> SignerId {
36
33
SignerId :: Dummy ( 0 )
37
34
}
38
35
}
39
36
40
- impl < T > SignerCommon for HwiSigner < T >
41
- where T : Sync + Send + HWI {
42
-
37
+ impl < T > SignerCommon for HwiSigner < T >
38
+ where
39
+ T : Sync + Send + HWI ,
40
+ {
43
41
fn id ( & self , _secp : & Secp256k1 < All > ) -> SignerId {
44
42
self . get_id ( )
45
43
}
46
-
47
44
}
48
45
49
- impl < T > TransactionSigner for HwiSigner < T >
50
- where T : Sync + Send + HWI {
51
-
46
+ impl < T > TransactionSigner for HwiSigner < T >
47
+ where
48
+ T : Sync + Send + HWI ,
49
+ {
52
50
fn sign_transaction (
53
51
& self ,
54
52
psbt : & mut Psbt ,
@@ -62,16 +60,14 @@ where T: Sync + Send + HWI {
62
60
}
63
61
64
62
#[ tokio:: main]
65
- async fn main ( ) -> Result < ( ) , anyhow:: Error > {
66
-
63
+ async fn main ( ) -> Result < ( ) , anyhow:: Error > {
67
64
let descriptor = "wpkh(tpubD6NzVbkrYhZ4Xferm7Pz4VnjdcDPFyjVu5K4iZXQ4pVN8Cks4pHVowTBXBKRhX64pkRyJZJN5xAKj4UDNnLPb5p2sSKXhewoYx5GbTdUFWq/0/*)" ;
68
65
let change_descriptor = "wpkh(tpubD6NzVbkrYhZ4Xferm7Pz4VnjdcDPFyjVu5K4iZXQ4pVN8Cks4pHVowTBXBKRhX64pkRyJZJN5xAKj4UDNnLPb5p2sSKXhewoYx5GbTdUFWq/1/*)" ;
69
66
70
67
let noise_config = Box :: new ( NoiseConfigNoCache { } ) ;
71
- let bitbox = BitBox :: < TokioRuntime > :: from_hid_device (
72
- usb:: get_any_bitbox02 ( ) . unwrap ( ) ,
73
- noise_config,
74
- ) . await ?;
68
+ let bitbox =
69
+ BitBox :: < TokioRuntime > :: from_hid_device ( usb:: get_any_bitbox02 ( ) . unwrap ( ) , noise_config)
70
+ . await ?;
75
71
76
72
let pairing_device = bitbox. unlock_and_pair ( ) . await ?;
77
73
let paired_device = pairing_device. wait_confirm ( ) . await ?;
@@ -80,15 +76,15 @@ async fn main() -> Result<(), anyhow::Error> {
80
76
let _ = bb. register_wallet ( "test-wallet" , descriptor) . await . unwrap ( ) ;
81
77
82
78
let bitbox_signer = HwiSigner :: new ( bb) ;
83
-
79
+
84
80
let mut wallet = Wallet :: create ( descriptor, change_descriptor)
85
81
. network ( Network :: Testnet )
86
82
. create_wallet_no_persist ( ) ?;
87
-
83
+
88
84
wallet. add_signer (
89
85
KeychainKind :: External ,
90
86
SignerOrdering ( 100 ) ,
91
- Arc :: new ( bitbox_signer)
87
+ Arc :: new ( bitbox_signer) ,
92
88
) ;
93
89
94
90
Ok ( ( ) )
0 commit comments