Skip to content

Commit 83d8947

Browse files
author
Antoine Riard
committed
Add KeysInterface trait to handle keys management, first part: when ChannelMonitor
detects a spendable outputs onchain it will notify back the user wallet with needed data to spend it with register_spendable_outputs
1 parent 84953fc commit 83d8947

File tree

6 files changed

+151
-38
lines changed

6 files changed

+151
-38
lines changed

fuzz/fuzz_targets/full_stack_target.rs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ extern crate secp256k1;
66
use bitcoin::blockdata::block::BlockHeader;
77
use bitcoin::blockdata::transaction::{Transaction, TxOut};
88
use bitcoin::blockdata::script::Script;
9+
use bitcoin::blockdata::transaction::OutPoint as BitcoinOutPoint;
910
use bitcoin::network::constants::Network;
1011
use bitcoin::network::serialize::{deserialize, serialize, BitcoinHash};
1112
use bitcoin::util::hash::Sha256dHash;
@@ -22,6 +23,7 @@ use lightning::util::events::{EventsProvider,Event};
2223
use lightning::util::reset_rng_state;
2324
use lightning::util::logger::Logger;
2425
use lightning::util::sha2::Sha256;
26+
use lightning::ln::keysinterface::KeysInterface;
2527

2628
mod utils;
2729

@@ -104,6 +106,11 @@ impl BroadcasterInterface for TestBroadcaster {
104106
fn broadcast_transaction(&self, _tx: &Transaction) {}
105107
}
106108

109+
struct TestKeysManager {}
110+
impl KeysInterface for TestKeysManager {
111+
fn register_spendable_outputs(&self, _spendable_outputs: Vec<(Option<SecretKey>, Script, BitcoinOutPoint)>) {}
112+
}
113+
107114
#[derive(Clone)]
108115
struct Peer<'a> {
109116
id: u8,
@@ -234,7 +241,8 @@ pub fn do_test(data: &[u8], logger: &Arc<Logger>) {
234241

235242
let watch = Arc::new(ChainWatchInterfaceUtil::new(Network::Bitcoin, Arc::clone(&logger)));
236243
let broadcast = Arc::new(TestBroadcaster{});
237-
let monitor = channelmonitor::SimpleManyChannelMonitor::new(watch.clone(), broadcast.clone());
244+
let keys_manager = Arc::new(TestKeysManager{});
245+
let monitor = channelmonitor::SimpleManyChannelMonitor::new(watch.clone(), broadcast.clone(), keys_manager.clone());
238246

239247
let channelmanager = ChannelManager::new(our_network_key, slice_to_be32(get_slice!(4)), get_slice!(1)[0] != 0, Network::Bitcoin, fee_est.clone(), monitor.clone(), watch.clone(), broadcast.clone(), Arc::clone(&logger)).unwrap();
240248
let router = Arc::new(Router::new(PublicKey::from_secret_key(&secp_ctx, &our_network_key), watch.clone(), Arc::clone(&logger)));

src/ln/channelmanager.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3086,7 +3086,8 @@ mod tests {
30863086
let feeest = Arc::new(test_utils::TestFeeEstimator { sat_per_kw: 253 });
30873087
let chain_monitor = Arc::new(chaininterface::ChainWatchInterfaceUtil::new(Network::Testnet, Arc::clone(&logger)));
30883088
let tx_broadcaster = Arc::new(test_utils::TestBroadcaster{txn_broadcasted: Mutex::new(Vec::new())});
3089-
let chan_monitor = Arc::new(test_utils::TestChannelMonitor::new(chain_monitor.clone(), tx_broadcaster.clone()));
3089+
let keys_manager = Arc::new(test_utils::TestKeysInterface::new());
3090+
let chan_monitor = Arc::new(test_utils::TestChannelMonitor::new(chain_monitor.clone(), tx_broadcaster.clone(), keys_manager));
30903091
let node_id = {
30913092
let mut key_slice = [0; 32];
30923093
rng.fill_bytes(&mut key_slice);

0 commit comments

Comments
 (0)