Skip to content

Commit 20f8f47

Browse files
committed
f Accomodate WalletKeysManager
1 parent c341bc6 commit 20f8f47

File tree

2 files changed

+49
-21
lines changed

2 files changed

+49
-21
lines changed

src/lib.rs

Lines changed: 35 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -38,19 +38,16 @@ pub use error::Error;
3838
pub use event::Event;
3939
use event::{EventHandler, EventQueue};
4040
use peer_store::{PeerInfo, PeerInfoStorage};
41-
use wallet::Wallet;
41+
use wallet::{Wallet, WalletKeysManager};
4242

4343
use logger::{log_error, log_given_level, log_info, log_internal, FilesystemLogger, Logger};
4444

45-
use lightning::chain::keysinterface::{InMemorySigner, KeysInterface, KeysManager, Recipient};
45+
use lightning::chain::keysinterface::{InMemorySigner, KeysInterface, Recipient};
4646
use lightning::chain::{chainmonitor, Access, BestBlock, Confirm, Watch};
4747
use lightning::ln::channelmanager;
48-
use lightning::ln::channelmanager::{
49-
ChainParameters, ChannelManagerReadArgs, SimpleArcChannelManager,
50-
};
51-
use lightning::ln::peer_handler::{IgnoringMessageHandler, MessageHandler, SimpleArcPeerManager};
48+
use lightning::ln::channelmanager::{ChainParameters, ChannelManagerReadArgs};
49+
use lightning::ln::peer_handler::{IgnoringMessageHandler, MessageHandler};
5250
use lightning::ln::{PaymentHash, PaymentPreimage, PaymentSecret};
53-
use lightning::onion_message::SimpleArcOnionMessenger;
5451
use lightning::routing::gossip;
5552
use lightning::routing::gossip::P2PGossipSync;
5653
use lightning::routing::scoring::ProbabilisticScorer;
@@ -262,8 +259,12 @@ impl Builder {
262259
let cur_time = SystemTime::now()
263260
.duration_since(SystemTime::UNIX_EPOCH)
264261
.expect("System time error: Clock may have gone backwards");
265-
let keys_manager =
266-
Arc::new(KeysManager::new(&seed, cur_time.as_secs(), cur_time.subsec_nanos()));
262+
let keys_manager = Arc::new(KeysManager::new(
263+
&seed,
264+
cur_time.as_secs(),
265+
cur_time.subsec_nanos(),
266+
Arc::clone(&wallet),
267+
));
267268

268269
// Step 6: Read ChannelMonitor state from disk
269270
let mut channel_monitors = persister
@@ -701,6 +702,12 @@ impl LdkLite {
701702
Ok(funding_address)
702703
}
703704

705+
#[cfg(test)]
706+
/// Retrieve the current on-chain balance.
707+
pub fn on_chain_balance(&mut self) -> Result<bdk::Balance, Error> {
708+
self.wallet.get_balance()
709+
}
710+
704711
/// Connect to a node and open a new channel. Disconnects and re-connects are handled automatically
705712
///
706713
/// Returns a temporary channel id
@@ -1057,22 +1064,25 @@ type ChainMonitor = chainmonitor::ChainMonitor<
10571064
Arc<FilesystemPersister>,
10581065
>;
10591066

1060-
type PeerManager = SimpleArcPeerManager<
1067+
pub(crate) type PeerManager = lightning::ln::peer_handler::PeerManager<
10611068
SocketDescriptor,
1062-
ChainMonitor,
1063-
Wallet<bdk::sled::Tree>,
1064-
Wallet<bdk::sled::Tree>,
1065-
dyn Access + Send + Sync,
1066-
FilesystemLogger,
1069+
Arc<ChannelManager>,
1070+
Arc<GossipSync>,
1071+
Arc<OnionMessenger>,
1072+
Arc<FilesystemLogger>,
1073+
IgnoringMessageHandler,
10671074
>;
10681075

1069-
pub(crate) type ChannelManager = SimpleArcChannelManager<
1070-
ChainMonitor,
1071-
Wallet<bdk::sled::Tree>,
1072-
Wallet<bdk::sled::Tree>,
1073-
FilesystemLogger,
1076+
pub(crate) type ChannelManager = lightning::ln::channelmanager::ChannelManager<
1077+
Arc<ChainMonitor>,
1078+
Arc<Wallet<bdk::sled::Tree>>,
1079+
Arc<WalletKeysManager<bdk::sled::Tree>>,
1080+
Arc<Wallet<bdk::sled::Tree>>,
1081+
Arc<FilesystemLogger>,
10741082
>;
10751083

1084+
pub(crate) type KeysManager = WalletKeysManager<bdk::sled::Tree>;
1085+
10761086
type InvoicePayer<F> = payment::InvoicePayer<Arc<ChannelManager>, Router, Arc<FilesystemLogger>, F>;
10771087

10781088
type Router = DefaultRouter<Arc<NetworkGraph>, Arc<FilesystemLogger>, Arc<Mutex<Scorer>>>;
@@ -1085,4 +1095,8 @@ pub(crate) type NetworkGraph = gossip::NetworkGraph<Arc<FilesystemLogger>>;
10851095

10861096
pub(crate) type PaymentInfoStorage = Mutex<HashMap<PaymentHash, PaymentInfo>>;
10871097

1088-
pub(crate) type OnionMessenger = SimpleArcOnionMessenger<FilesystemLogger>;
1098+
pub(crate) type OnionMessenger = lightning::onion_message::OnionMessenger<
1099+
Arc<WalletKeysManager<bdk::sled::Tree>>,
1100+
Arc<FilesystemLogger>,
1101+
IgnoringMessageHandler,
1102+
>;

src/tests/functional_tests.rs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,8 @@ fn channel_full_cycle() {
137137
premine_and_distribute_funds(vec![addr_a, addr_b], Amount::from_sat(100000));
138138
node_a.sync_wallets().unwrap();
139139
node_b.sync_wallets().unwrap();
140+
assert_eq!(node_a.on_chain_balance().unwrap().confirmed, 100000);
141+
assert_eq!(node_b.on_chain_balance().unwrap().confirmed, 100000);
140142

141143
println!("\nA -- connect_open_channel -> B");
142144
let node_b_addr =
@@ -151,6 +153,11 @@ fn channel_full_cycle() {
151153
node_a.sync_wallets().unwrap();
152154
node_b.sync_wallets().unwrap();
153155

156+
let node_a_balance = node_a.on_chain_balance().unwrap();
157+
assert!(node_a_balance.confirmed < 50000);
158+
assert!(node_a_balance.confirmed > 40000);
159+
assert_eq!(node_b.on_chain_balance().unwrap().confirmed, 100000);
160+
154161
expect_event!(node_a, ChannelReady);
155162

156163
let channel_id = match node_b.next_event() {
@@ -179,6 +186,13 @@ fn channel_full_cycle() {
179186
expect_event!(node_a, ChannelClosed);
180187
expect_event!(node_b, ChannelClosed);
181188

189+
// TODO: Not entirely sure why we need *another* confirmation before the funds show up as
190+
// confirmed. Is this expected or a BDK bug?
191+
generate_blocks_and_wait(1);
192+
node_a.sync_wallets().unwrap();
193+
assert!(node_a.on_chain_balance().unwrap().confirmed > 90000);
194+
assert_eq!(node_b.on_chain_balance().unwrap().confirmed, 100000);
195+
182196
node_a.stop().unwrap();
183197
println!("\nA stopped");
184198
node_b.stop().unwrap();

0 commit comments

Comments
 (0)