@@ -18,6 +18,7 @@ use std::collections::HashMap;
18
18
use std:: collections:: { BTreeMap , HashSet } ;
19
19
use std:: fmt;
20
20
use std:: ops:: { Deref , DerefMut } ;
21
+ use std:: str:: FromStr ;
21
22
use std:: sync:: Arc ;
22
23
23
24
use bitcoin:: secp256k1:: Secp256k1 ;
@@ -55,6 +56,7 @@ use tx_builder::{BumpFee, CreateTx, FeePolicy, TxBuilder, TxParams};
55
56
use utils:: { check_nlocktime, check_nsequence_rbf, After , Older , SecpCtx , DUST_LIMIT_SATOSHI } ;
56
57
57
58
use crate :: blockchain:: { Blockchain , Progress } ;
59
+ use crate :: database:: memory:: MemoryDatabase ;
58
60
use crate :: database:: { BatchDatabase , BatchOperations , DatabaseUtils } ;
59
61
use crate :: descriptor:: derived:: AsDerived ;
60
62
use crate :: descriptor:: policy:: BuildSatisfaction ;
@@ -66,6 +68,7 @@ use crate::descriptor::{
66
68
use crate :: error:: Error ;
67
69
use crate :: psbt:: PsbtUtils ;
68
70
use crate :: signer:: SignerError ;
71
+ use crate :: testutils;
69
72
use crate :: types:: * ;
70
73
71
74
const CACHE_ADDR_BATCH_SIZE : u32 = 100 ;
@@ -167,6 +170,11 @@ where
167
170
secp,
168
171
} )
169
172
}
173
+
174
+ /// Get the Bitcoin network the wallet is using.
175
+ pub fn network ( & self ) -> Network {
176
+ self . network
177
+ }
170
178
}
171
179
172
180
/// The address index selection strategy to use to derived an address from the wallet's external
@@ -1534,11 +1542,6 @@ where
1534
1542
& self . client
1535
1543
}
1536
1544
1537
- /// Get the Bitcoin network the wallet is using.
1538
- pub fn network ( & self ) -> Network {
1539
- self . network
1540
- }
1541
-
1542
1545
/// Broadcast a transaction to the network
1543
1546
#[ maybe_async]
1544
1547
pub fn broadcast ( & self , tx : Transaction ) -> Result < Txid , Error > {
@@ -1548,19 +1551,60 @@ where
1548
1551
}
1549
1552
}
1550
1553
1554
+ /// Return a fake wallet that appears to be funded for testing.
1555
+ pub fn get_funded_wallet (
1556
+ descriptor : & str ,
1557
+ ) -> (
1558
+ Wallet < ( ) , MemoryDatabase > ,
1559
+ ( String , Option < String > ) ,
1560
+ bitcoin:: Txid ,
1561
+ ) {
1562
+ let descriptors = testutils ! ( @descriptors ( descriptor) ) ;
1563
+ let wallet = Wallet :: new_offline (
1564
+ & descriptors. 0 ,
1565
+ None ,
1566
+ Network :: Regtest ,
1567
+ MemoryDatabase :: new ( ) ,
1568
+ )
1569
+ . unwrap ( ) ;
1570
+
1571
+ let funding_address_kix = 0 ;
1572
+
1573
+ let tx_meta = testutils ! {
1574
+ @tx ( ( @external descriptors, funding_address_kix) => 50_000 ) ( @confirmations 1 )
1575
+ } ;
1576
+
1577
+ wallet
1578
+ . database
1579
+ . borrow_mut ( )
1580
+ . set_script_pubkey (
1581
+ & bitcoin:: Address :: from_str ( & tx_meta. output . get ( 0 ) . unwrap ( ) . to_address )
1582
+ . unwrap ( )
1583
+ . script_pubkey ( ) ,
1584
+ KeychainKind :: External ,
1585
+ funding_address_kix,
1586
+ )
1587
+ . unwrap ( ) ;
1588
+ wallet
1589
+ . database
1590
+ . borrow_mut ( )
1591
+ . set_last_index ( KeychainKind :: External , funding_address_kix)
1592
+ . unwrap ( ) ;
1593
+
1594
+ let txid = crate :: populate_test_db!( wallet. database. borrow_mut( ) , tx_meta, Some ( 100 ) ) ;
1595
+
1596
+ ( wallet, descriptors, txid)
1597
+ }
1598
+
1551
1599
#[ cfg( test) ]
1552
1600
pub ( crate ) mod test {
1553
- use std:: str:: FromStr ;
1554
-
1555
1601
use bitcoin:: { util:: psbt, Network } ;
1556
1602
1557
- use crate :: database:: memory:: MemoryDatabase ;
1558
1603
use crate :: database:: Database ;
1559
1604
use crate :: types:: KeychainKind ;
1560
1605
1561
1606
use super :: * ;
1562
1607
use crate :: signer:: { SignOptions , SignerError } ;
1563
- use crate :: testutils;
1564
1608
use crate :: wallet:: AddressIndex :: { LastUnused , New , Peek , Reset } ;
1565
1609
1566
1610
#[ test]
@@ -1672,50 +1716,6 @@ pub(crate) mod test {
1672
1716
"wsh(and_v(v:pk(cVpPVruEDdmutPzisEsYvtST1usBR3ntr8pXSyt6D2YYqXRyPcFW),after(100000)))"
1673
1717
}
1674
1718
1675
- pub ( crate ) fn get_funded_wallet (
1676
- descriptor : & str ,
1677
- ) -> (
1678
- Wallet < ( ) , MemoryDatabase > ,
1679
- ( String , Option < String > ) ,
1680
- bitcoin:: Txid ,
1681
- ) {
1682
- let descriptors = testutils ! ( @descriptors ( descriptor) ) ;
1683
- let wallet = Wallet :: new_offline (
1684
- & descriptors. 0 ,
1685
- None ,
1686
- Network :: Regtest ,
1687
- MemoryDatabase :: new ( ) ,
1688
- )
1689
- . unwrap ( ) ;
1690
-
1691
- let funding_address_kix = 0 ;
1692
-
1693
- let tx_meta = testutils ! {
1694
- @tx ( ( @external descriptors, funding_address_kix) => 50_000 ) ( @confirmations 1 )
1695
- } ;
1696
-
1697
- wallet
1698
- . database
1699
- . borrow_mut ( )
1700
- . set_script_pubkey (
1701
- & bitcoin:: Address :: from_str ( & tx_meta. output . get ( 0 ) . unwrap ( ) . to_address )
1702
- . unwrap ( )
1703
- . script_pubkey ( ) ,
1704
- KeychainKind :: External ,
1705
- funding_address_kix,
1706
- )
1707
- . unwrap ( ) ;
1708
- wallet
1709
- . database
1710
- . borrow_mut ( )
1711
- . set_last_index ( KeychainKind :: External , funding_address_kix)
1712
- . unwrap ( ) ;
1713
-
1714
- let txid = crate :: populate_test_db!( wallet. database. borrow_mut( ) , tx_meta, Some ( 100 ) ) ;
1715
-
1716
- ( wallet, descriptors, txid)
1717
- }
1718
-
1719
1719
macro_rules! assert_fee_rate {
1720
1720
( $tx: expr, $fees: expr, $fee_rate: expr $( , @dust_change $( $dust_change: expr ) * ) * $( , @add_signature $( $add_signature: expr ) * ) * ) => ( {
1721
1721
let mut tx = $tx. clone( ) ;
0 commit comments