File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -64,6 +64,13 @@ impl OnchainPayment {
6464 Ok ( funding_address)
6565 }
6666
67+ /// Retrieve the next unused on-chain/funding address.
68+ pub fn next_address ( & self ) -> Result < Address , Error > {
69+ let funding_address = self . wallet . get_next_address ( ) ?;
70+ log_info ! ( self . logger, "Generated next funding address: {}" , funding_address) ;
71+ Ok ( funding_address)
72+ }
73+
6774 /// Send an on-chain payment to the given address.
6875 ///
6976 /// This will respect any on-chain reserve we need to keep, i.e., won't allow to cut into
Original file line number Diff line number Diff line change @@ -473,6 +473,18 @@ impl Wallet {
473473 Ok ( address_info. address )
474474 }
475475
476+ pub ( crate ) fn get_next_address ( & self ) -> Result < bitcoin:: Address , Error > {
477+ let mut locked_wallet = self . inner . lock ( ) . unwrap ( ) ;
478+ let mut locked_persister = self . persister . lock ( ) . unwrap ( ) ;
479+
480+ let address_info = locked_wallet. next_unused_address ( KeychainKind :: External ) ;
481+ locked_wallet. persist ( & mut locked_persister) . map_err ( |e| {
482+ log_error ! ( self . logger, "Failed to persist wallet: {}" , e) ;
483+ Error :: PersistenceFailed
484+ } ) ?;
485+ Ok ( address_info. address )
486+ }
487+
476488 pub ( crate ) fn get_new_internal_address ( & self ) -> Result < bitcoin:: Address , Error > {
477489 let mut locked_wallet = self . inner . lock ( ) . unwrap ( ) ;
478490 let mut locked_persister = self . persister . lock ( ) . unwrap ( ) ;
You can’t perform that action at this time.
0 commit comments