@@ -26,10 +26,10 @@ use crate::json::BlockStatsFields as BsFields;
26
26
use bitcoin:: consensus:: encode:: { deserialize, serialize_hex} ;
27
27
use bitcoin:: hashes:: hex:: FromHex ;
28
28
use bitcoin:: hashes:: Hash ;
29
- use bitcoin:: { secp256k1, ScriptBuf , sighash } ;
29
+ use bitcoin:: { secp256k1, sighash , ScriptBuf } ;
30
30
use bitcoin:: {
31
- Address , Amount , Network , OutPoint , PrivateKey ,
32
- Sequence , SignedAmount , Transaction , TxIn , TxOut , Txid , Witness ,
31
+ Address , Amount , Network , OutPoint , PrivateKey , Sequence , SignedAmount , Transaction , TxIn ,
32
+ TxOut , Txid , Witness ,
33
33
} ;
34
34
use bitcoincore_rpc:: bitcoincore_rpc_json:: {
35
35
GetBlockTemplateModes , GetBlockTemplateRules , ScanTxOutRequest ,
@@ -249,7 +249,8 @@ fn test_get_new_address(cl: &Client) {
249
249
let addr = cl. get_new_address ( None , Some ( json:: AddressType :: Bech32 ) ) . unwrap ( ) . assume_checked ( ) ;
250
250
assert_eq ! ( addr. address_type( ) , Some ( bitcoin:: AddressType :: P2wpkh ) ) ;
251
251
252
- let addr = cl. get_new_address ( None , Some ( json:: AddressType :: P2shSegwit ) ) . unwrap ( ) . assume_checked ( ) ;
252
+ let addr =
253
+ cl. get_new_address ( None , Some ( json:: AddressType :: P2shSegwit ) ) . unwrap ( ) . assume_checked ( ) ;
253
254
assert_eq ! ( addr. address_type( ) , Some ( bitcoin:: AddressType :: P2sh ) ) ;
254
255
}
255
256
@@ -260,7 +261,8 @@ fn test_get_raw_change_address(cl: &Client) {
260
261
let addr = cl. get_raw_change_address ( Some ( json:: AddressType :: Bech32 ) ) . unwrap ( ) . assume_checked ( ) ;
261
262
assert_eq ! ( addr. address_type( ) , Some ( bitcoin:: AddressType :: P2wpkh ) ) ;
262
263
263
- let addr = cl. get_raw_change_address ( Some ( json:: AddressType :: P2shSegwit ) ) . unwrap ( ) . assume_checked ( ) ;
264
+ let addr =
265
+ cl. get_raw_change_address ( Some ( json:: AddressType :: P2shSegwit ) ) . unwrap ( ) . assume_checked ( ) ;
264
266
assert_eq ! ( addr. address_type( ) , Some ( bitcoin:: AddressType :: P2sh ) ) ;
265
267
}
266
268
@@ -290,7 +292,9 @@ fn test_generate(cl: &Client) {
290
292
fn test_get_balance_generate_to_address ( cl : & Client ) {
291
293
let initial = cl. get_balance ( None , None ) . unwrap ( ) ;
292
294
293
- let blocks = cl. generate_to_address ( 500 , & cl. get_new_address ( None , None ) . unwrap ( ) . assume_checked ( ) ) . unwrap ( ) ;
295
+ let blocks = cl
296
+ . generate_to_address ( 500 , & cl. get_new_address ( None , None ) . unwrap ( ) . assume_checked ( ) )
297
+ . unwrap ( ) ;
294
298
assert_eq ! ( blocks. len( ) , 500 ) ;
295
299
assert_ne ! ( cl. get_balance( None , None ) . unwrap( ) , initial) ;
296
300
}
@@ -299,7 +303,9 @@ fn test_get_balances_generate_to_address(cl: &Client) {
299
303
if version ( ) >= 190000 {
300
304
let initial = cl. get_balances ( ) . unwrap ( ) ;
301
305
302
- let blocks = cl. generate_to_address ( 500 , & cl. get_new_address ( None , None ) . unwrap ( ) . assume_checked ( ) ) . unwrap ( ) ;
306
+ let blocks = cl
307
+ . generate_to_address ( 500 , & cl. get_new_address ( None , None ) . unwrap ( ) . assume_checked ( ) )
308
+ . unwrap ( ) ;
303
309
assert_eq ! ( blocks. len( ) , 500 ) ;
304
310
assert_ne ! ( cl. get_balances( ) . unwrap( ) , initial) ;
305
311
}
@@ -375,7 +381,8 @@ fn test_get_address_info(cl: &Client) {
375
381
let info = cl. get_address_info ( & addr) . unwrap ( ) ;
376
382
assert ! ( !info. witness_program. unwrap( ) . is_empty( ) ) ;
377
383
378
- let addr = cl. get_new_address ( None , Some ( json:: AddressType :: P2shSegwit ) ) . unwrap ( ) . assume_checked ( ) ;
384
+ let addr =
385
+ cl. get_new_address ( None , Some ( json:: AddressType :: P2shSegwit ) ) . unwrap ( ) . assume_checked ( ) ;
379
386
let info = cl. get_address_info ( & addr) . unwrap ( ) ;
380
387
assert ! ( !info. hex. unwrap( ) . is_empty( ) ) ;
381
388
}
@@ -431,27 +438,33 @@ fn test_get_received_by_address(cl: &Client) {
431
438
let _ = cl. send_to_address ( & addr, btc ( 1 ) , None , None , None , None , None , None ) . unwrap ( ) ;
432
439
assert_eq ! ( cl. get_received_by_address( & addr, Some ( 0 ) ) . unwrap( ) , btc( 1 ) ) ;
433
440
assert_eq ! ( cl. get_received_by_address( & addr, Some ( 1 ) ) . unwrap( ) , btc( 0 ) ) ;
434
- let _ = cl. generate_to_address ( 7 , & cl. get_new_address ( None , None ) . unwrap ( ) . assume_checked ( ) ) . unwrap ( ) ;
441
+ let _ = cl
442
+ . generate_to_address ( 7 , & cl. get_new_address ( None , None ) . unwrap ( ) . assume_checked ( ) )
443
+ . unwrap ( ) ;
435
444
assert_eq ! ( cl. get_received_by_address( & addr, Some ( 6 ) ) . unwrap( ) , btc( 1 ) ) ;
436
445
assert_eq ! ( cl. get_received_by_address( & addr, None ) . unwrap( ) , btc( 1 ) ) ;
437
446
}
438
447
439
448
fn test_list_unspent ( cl : & Client ) {
440
449
let addr = cl. get_new_address ( None , None ) . unwrap ( ) ;
441
450
let addr_checked = addr. clone ( ) . assume_checked ( ) ;
442
- let txid = cl. send_to_address ( & addr. clone ( ) . assume_checked ( ) , btc ( 1 ) , None , None , None , None , None , None ) . unwrap ( ) ;
443
- let unspent = cl. list_unspent ( Some ( 0 ) , None , Some ( & [ & addr_checked] ) , None , None ) . unwrap ( ) ;
451
+ let txid = cl
452
+ . send_to_address ( & addr. clone ( ) . assume_checked ( ) , btc ( 1 ) , None , None , None , None , None , None )
453
+ . unwrap ( ) ;
454
+ let unspent = cl. list_unspent ( Some ( 0 ) , None , Some ( & [ & addr_checked] ) , None , None ) . unwrap ( ) ;
444
455
assert_eq ! ( unspent[ 0 ] . txid, txid) ;
445
456
assert_eq ! ( unspent[ 0 ] . address. as_ref( ) , Some ( & addr) ) ;
446
457
assert_eq ! ( unspent[ 0 ] . amount, btc( 1 ) ) ;
447
458
448
- let txid = cl. send_to_address ( & addr_checked, btc ( 7 ) , None , None , None , None , None , None ) . unwrap ( ) ;
459
+ let txid =
460
+ cl. send_to_address ( & addr_checked, btc ( 7 ) , None , None , None , None , None , None ) . unwrap ( ) ;
449
461
let options = json:: ListUnspentQueryOptions {
450
462
minimum_amount : Some ( btc ( 7 ) ) ,
451
463
maximum_amount : Some ( btc ( 7 ) ) ,
452
464
..Default :: default ( )
453
465
} ;
454
- let unspent = cl. list_unspent ( Some ( 0 ) , None , Some ( & [ & addr_checked] ) , None , Some ( options) ) . unwrap ( ) ;
466
+ let unspent =
467
+ cl. list_unspent ( Some ( 0 ) , None , Some ( & [ & addr_checked] ) , None , Some ( options) ) . unwrap ( ) ;
455
468
assert_eq ! ( unspent. len( ) , 1 ) ;
456
469
assert_eq ! ( unspent[ 0 ] . txid, txid) ;
457
470
assert_eq ! ( unspent[ 0 ] . address. as_ref( ) , Some ( & addr) ) ;
@@ -477,7 +490,9 @@ fn test_get_raw_transaction(cl: &Client) {
477
490
let info = cl. get_raw_transaction_info ( & txid, None ) . unwrap ( ) ;
478
491
assert_eq ! ( info. txid, txid) ;
479
492
480
- let blocks = cl. generate_to_address ( 7 , & cl. get_new_address ( None , None ) . unwrap ( ) . assume_checked ( ) ) . unwrap ( ) ;
493
+ let blocks = cl
494
+ . generate_to_address ( 7 , & cl. get_new_address ( None , None ) . unwrap ( ) . assume_checked ( ) )
495
+ . unwrap ( ) ;
481
496
let _ = cl. get_raw_transaction_info ( & txid, Some ( & blocks[ 0 ] ) ) . unwrap ( ) ;
482
497
}
483
498
@@ -533,7 +548,9 @@ fn test_get_tx_out_proof(cl: &Client) {
533
548
cl. send_to_address ( & RANDOM_ADDRESS , btc ( 1 ) , None , None , None , None , None , None ) . unwrap ( ) ;
534
549
let txid2 =
535
550
cl. send_to_address ( & RANDOM_ADDRESS , btc ( 1 ) , None , None , None , None , None , None ) . unwrap ( ) ;
536
- let blocks = cl. generate_to_address ( 7 , & cl. get_new_address ( None , None ) . unwrap ( ) . assume_checked ( ) ) . unwrap ( ) ;
551
+ let blocks = cl
552
+ . generate_to_address ( 7 , & cl. get_new_address ( None , None ) . unwrap ( ) . assume_checked ( ) )
553
+ . unwrap ( ) ;
537
554
let proof = cl. get_tx_out_proof ( & [ txid1, txid2] , Some ( & blocks[ 0 ] ) ) . unwrap ( ) ;
538
555
assert ! ( !proof. is_empty( ) ) ;
539
556
}
@@ -560,7 +577,9 @@ fn test_lock_unspent_unlock_unspent(cl: &Client) {
560
577
}
561
578
562
579
fn test_get_block_filter ( cl : & Client ) {
563
- let blocks = cl. generate_to_address ( 7 , & cl. get_new_address ( None , None ) . unwrap ( ) . assume_checked ( ) ) . unwrap ( ) ;
580
+ let blocks = cl
581
+ . generate_to_address ( 7 , & cl. get_new_address ( None , None ) . unwrap ( ) . assume_checked ( ) )
582
+ . unwrap ( ) ;
564
583
if version ( ) >= 190000 {
565
584
let _ = cl. get_block_filter ( & blocks[ 0 ] ) . unwrap ( ) ;
566
585
} else {
@@ -631,7 +650,12 @@ fn test_sign_raw_transaction_with_send_raw_transaction(cl: &Client) {
631
650
} ;
632
651
633
652
let res = cl
634
- . sign_raw_transaction_with_key ( & tx, & [ sk] , None , Some ( sighash:: EcdsaSighashType :: All . into ( ) ) )
653
+ . sign_raw_transaction_with_key (
654
+ & tx,
655
+ & [ sk] ,
656
+ None ,
657
+ Some ( sighash:: EcdsaSighashType :: All . into ( ) ) ,
658
+ )
635
659
. unwrap ( ) ;
636
660
assert ! ( res. complete) ;
637
661
let _ = cl. send_raw_transaction ( & res. transaction ( ) . unwrap ( ) ) . unwrap ( ) ;
@@ -1280,9 +1304,7 @@ fn test_getblocktemplate(cl: &Client) {
1280
1304
fn test_unloadwallet ( cl : & Client ) {
1281
1305
cl. create_wallet ( "testunloadwallet" , None , None , None , None ) . unwrap ( ) ;
1282
1306
1283
- let res = new_wallet_client ( "testunloadwallet" )
1284
- . unload_wallet ( None )
1285
- . unwrap ( ) ;
1307
+ let res = new_wallet_client ( "testunloadwallet" ) . unload_wallet ( None ) . unwrap ( ) ;
1286
1308
1287
1309
if version ( ) >= 210000 {
1288
1310
assert ! ( res. is_some( ) ) ;
@@ -1321,20 +1343,37 @@ fn test_wait_for_new_block(cl: &Client) {
1321
1343
let hash = cl. get_block_hash ( height) . unwrap ( ) ;
1322
1344
1323
1345
assert ! ( cl. wait_for_new_block( std:: u64 :: MAX ) . is_err( ) ) ; // JSON integer out of range
1324
- assert_eq ! ( cl. wait_for_new_block( 100 ) . unwrap( ) , json:: BlockRef { hash, height} ) ;
1346
+ assert_eq ! (
1347
+ cl. wait_for_new_block( 100 ) . unwrap( ) ,
1348
+ json:: BlockRef {
1349
+ hash,
1350
+ height
1351
+ }
1352
+ ) ;
1325
1353
}
1326
1354
1327
1355
fn test_wait_for_block ( cl : & Client ) {
1328
1356
let height = cl. get_block_count ( ) . unwrap ( ) ;
1329
1357
let hash = cl. get_block_hash ( height) . unwrap ( ) ;
1330
1358
1331
1359
assert ! ( cl. wait_for_block( & hash, std:: u64 :: MAX ) . is_err( ) ) ; // JSON integer out of range
1332
- assert_eq ! ( cl. wait_for_block( & hash, 0 ) . unwrap( ) , json:: BlockRef { hash, height} ) ;
1360
+ assert_eq ! (
1361
+ cl. wait_for_block( & hash, 0 ) . unwrap( ) ,
1362
+ json:: BlockRef {
1363
+ hash,
1364
+ height
1365
+ }
1366
+ ) ;
1333
1367
}
1334
1368
1335
1369
fn test_get_descriptor_info ( cl : & Client ) {
1336
- let res = cl. get_descriptor_info ( r"pkh(cSQPHDBwXGjVzWRqAHm6zfvQhaTuj1f2bFH58h55ghbjtFwvmeXR)" ) . unwrap ( ) ;
1337
- assert_eq ! ( res. descriptor, r"pkh(02e96fe52ef0e22d2f131dd425ce1893073a3c6ad20e8cac36726393dfb4856a4c)#62k9sn4x" ) ;
1370
+ let res = cl
1371
+ . get_descriptor_info ( r"pkh(cSQPHDBwXGjVzWRqAHm6zfvQhaTuj1f2bFH58h55ghbjtFwvmeXR)" )
1372
+ . unwrap ( ) ;
1373
+ assert_eq ! (
1374
+ res. descriptor,
1375
+ r"pkh(02e96fe52ef0e22d2f131dd425ce1893073a3c6ad20e8cac36726393dfb4856a4c)#62k9sn4x"
1376
+ ) ;
1338
1377
assert_eq ! ( res. is_range, false ) ;
1339
1378
assert_eq ! ( res. is_solvable, true ) ;
1340
1379
assert_eq ! ( res. has_private_keys, true ) ;
@@ -1352,34 +1391,50 @@ fn test_get_descriptor_info(cl: &Client) {
1352
1391
fn test_add_multisig_address ( cl : & Client ) {
1353
1392
let addr1 = cl. get_new_address ( None , Some ( json:: AddressType :: Bech32 ) ) . unwrap ( ) . assume_checked ( ) ;
1354
1393
let addr2 = cl. get_new_address ( None , Some ( json:: AddressType :: Bech32 ) ) . unwrap ( ) . assume_checked ( ) ;
1355
- let addresses = [
1356
- json:: PubKeyOrAddress :: Address ( & addr1) ,
1357
- json:: PubKeyOrAddress :: Address ( & addr2) ,
1358
- ] ;
1394
+ let addresses =
1395
+ [ json:: PubKeyOrAddress :: Address ( & addr1) , json:: PubKeyOrAddress :: Address ( & addr2) ] ;
1359
1396
1360
1397
assert ! ( cl. add_multisig_address( addresses. len( ) , & addresses, None , None ) . is_ok( ) ) ;
1361
1398
assert ! ( cl. add_multisig_address( addresses. len( ) - 1 , & addresses, None , None ) . is_ok( ) ) ;
1362
1399
assert ! ( cl. add_multisig_address( addresses. len( ) + 1 , & addresses, None , None ) . is_err( ) ) ;
1363
1400
assert ! ( cl. add_multisig_address( 0 , & addresses, None , None ) . is_err( ) ) ;
1364
1401
assert ! ( cl. add_multisig_address( addresses. len( ) , & addresses, Some ( "test_label" ) , None ) . is_ok( ) ) ;
1365
- assert ! ( cl. add_multisig_address( addresses. len( ) , & addresses, None , Some ( json:: AddressType :: Legacy ) ) . is_ok( ) ) ;
1366
- assert ! ( cl. add_multisig_address( addresses. len( ) , & addresses, None , Some ( json:: AddressType :: P2shSegwit ) ) . is_ok( ) ) ;
1367
- assert ! ( cl. add_multisig_address( addresses. len( ) , & addresses, None , Some ( json:: AddressType :: Bech32 ) ) . is_ok( ) ) ;
1402
+ assert ! ( cl
1403
+ . add_multisig_address( addresses. len( ) , & addresses, None , Some ( json:: AddressType :: Legacy ) )
1404
+ . is_ok( ) ) ;
1405
+ assert ! ( cl
1406
+ . add_multisig_address(
1407
+ addresses. len( ) ,
1408
+ & addresses,
1409
+ None ,
1410
+ Some ( json:: AddressType :: P2shSegwit )
1411
+ )
1412
+ . is_ok( ) ) ;
1413
+ assert ! ( cl
1414
+ . add_multisig_address( addresses. len( ) , & addresses, None , Some ( json:: AddressType :: Bech32 ) )
1415
+ . is_ok( ) ) ;
1368
1416
}
1369
1417
1370
1418
fn test_derive_addresses ( cl : & Client ) {
1371
- let descriptor = r"pkh(02e96fe52ef0e22d2f131dd425ce1893073a3c6ad20e8cac36726393dfb4856a4c)#62k9sn4x" ;
1372
- assert_eq ! ( cl. derive_addresses( descriptor, None ) . unwrap( ) , vec![ "mrkwtj5xpYQjHeJe5wsweNjVeTKkvR5fCr" . parse( ) . unwrap( ) ] ) ;
1419
+ let descriptor =
1420
+ r"pkh(02e96fe52ef0e22d2f131dd425ce1893073a3c6ad20e8cac36726393dfb4856a4c)#62k9sn4x" ;
1421
+ assert_eq ! (
1422
+ cl. derive_addresses( descriptor, None ) . unwrap( ) ,
1423
+ vec![ "mrkwtj5xpYQjHeJe5wsweNjVeTKkvR5fCr" . parse( ) . unwrap( ) ]
1424
+ ) ;
1373
1425
assert ! ( cl. derive_addresses( descriptor, Some ( [ 0 , 1 ] ) ) . is_err( ) ) ; // Range should not be specified for an unranged descriptor
1374
1426
1375
1427
let descriptor = std:: concat!(
1376
1428
r"wpkh([1004658e/84'/1'/0']tpubDCBEcmVKbfC9KfdydyLbJ2gfNL88grZu1XcWSW9ytTM6fi" ,
1377
1429
r"tvaRmVyr8Ddf7SjZ2ZfMx9RicjYAXhuh3fmLiVLPodPEqnQQURUfrBKiiVZc8/0/*)#g8l47ngv" ,
1378
1430
) ;
1379
- assert_eq ! ( cl. derive_addresses( descriptor, Some ( [ 0 , 1 ] ) ) . unwrap( ) , vec![
1380
- "bcrt1q5n5tjkpva8v5s0uadu2y5f0g7pn4h5eqaq2ux2" . parse( ) . unwrap( ) ,
1381
- "bcrt1qcgl303ht03ja2e0hudpwk7ypcxk5t478wspzlt" . parse( ) . unwrap( ) ,
1382
- ] ) ;
1431
+ assert_eq ! (
1432
+ cl. derive_addresses( descriptor, Some ( [ 0 , 1 ] ) ) . unwrap( ) ,
1433
+ vec![
1434
+ "bcrt1q5n5tjkpva8v5s0uadu2y5f0g7pn4h5eqaq2ux2" . parse( ) . unwrap( ) ,
1435
+ "bcrt1qcgl303ht03ja2e0hudpwk7ypcxk5t478wspzlt" . parse( ) . unwrap( ) ,
1436
+ ]
1437
+ ) ;
1383
1438
assert ! ( cl. derive_addresses( descriptor, None ) . is_err( ) ) ; // Range must be specified for a ranged descriptor
1384
1439
}
1385
1440
0 commit comments