use bitcoin_bech32::WitnessProgram;
use lightning::chain;
use lightning::chain::chaininterface::{BroadcasterInterface, ConfirmationTarget, FeeEstimator};
-use lightning::chain::chainmonitor;
use lightning::chain::keysinterface::{InMemorySigner, KeysInterface, KeysManager, Recipient};
+use lightning::chain::{chainmonitor, ChannelMonitorUpdateStatus};
use lightning::chain::{BestBlock, Filter, Watch};
use lightning::ln::channelmanager;
use lightning::ln::channelmanager::{
use rand::{thread_rng, Rng};
use std::collections::hash_map::Entry;
use std::collections::HashMap;
+use std::convert::TryInto;
use std::fmt;
use std::fs;
use std::fs::File;
pub(crate) type ChannelManager =
SimpleArcChannelManager<ChainMonitor, BitcoindClient, BitcoindClient, FilesystemLogger>;
-pub(crate) type InvoicePayer<E> = payment::InvoicePayer<
- Arc<ChannelManager>,
- Router,
- Arc<Mutex<ProbabilisticScorer<Arc<NetworkGraph>, Arc<FilesystemLogger>>>>,
+pub(crate) type InvoicePayer<E> =
+ payment::InvoicePayer<Arc<ChannelManager>, Router, Arc<FilesystemLogger>, E>;
+
+type Router = DefaultRouter<
+ Arc<NetworkGraph>,
Arc<FilesystemLogger>,
- E,
+ Arc<Mutex<ProbabilisticScorer<Arc<NetworkGraph>, Arc<FilesystemLogger>>>>,
>;
-type Router = DefaultRouter<Arc<NetworkGraph>, Arc<FilesystemLogger>>;
-
pub(crate) type NetworkGraph = gossip::NetworkGraph<Arc<FilesystemLogger>>;
type OnionMessenger = SimpleArcOnionMessenger<FilesystemLogger>;
for item in chain_listener_channel_monitors.drain(..) {
let channel_monitor = item.1 .0;
let funding_outpoint = item.2;
- chain_monitor.watch_channel(funding_outpoint, channel_monitor).unwrap();
+ assert_eq!(
+ chain_monitor.watch_channel(funding_outpoint, channel_monitor),
+ ChannelMonitorUpdateStatus::Completed
+ );
}
// Step 11: Optional: Initialize the P2PGossipSync
// Step 12: Initialize the PeerManager
let channel_manager: Arc<ChannelManager> = Arc::new(channel_manager);
- let onion_messenger: Arc<OnionMessenger> =
- Arc::new(OnionMessenger::new(keys_manager.clone(), logger.clone()));
+ let onion_messenger: Arc<OnionMessenger> = Arc::new(OnionMessenger::new(
+ Arc::clone(&keys_manager),
+ Arc::clone(&logger),
+ IgnoringMessageHandler {},
+ ));
let mut ephemeral_bytes = [0; 32];
let current_time = SystemTime::now().duration_since(SystemTime::UNIX_EPOCH).unwrap().as_secs();
rand::thread_rng().fill_bytes(&mut ephemeral_bytes);
let peer_manager: Arc<PeerManager> = Arc::new(PeerManager::new(
lightning_msg_handler,
keys_manager.get_node_secret(Recipient::Node).unwrap(),
- current_time,
+ current_time.try_into().unwrap(),
&ephemeral_bytes,
logger.clone(),
IgnoringMessageHandler {},
network_graph.clone(),
logger.clone(),
keys_manager.get_secure_random_bytes(),
+ scorer.clone(),
);
let invoice_payer = Arc::new(InvoicePayer::new(
channel_manager.clone(),
router,
- scorer.clone(),
logger.clone(),
event_handler,
payment::Retry::Timeout(Duration::from_secs(10)),
outbound_payments,
ldk_data_dir.clone(),
network,
+ Arc::clone(&logger),
)
.await;