use lightning::chain::chaininterface::{BroadcasterInterface, ConfirmationTarget, FeeEstimator};
use lightning::chain::chainmonitor;
use lightning::chain::keysinterface::{InMemorySigner, KeysInterface, KeysManager};
-use lightning::chain::Filter;
-use lightning::chain::Watch;
+use lightning::chain::{BestBlock, Filter, Watch};
use lightning::ln::channelmanager;
use lightning::ln::channelmanager::{
- BestBlock, ChainParameters, ChannelManagerReadArgs, SimpleArcChannelManager,
+ ChainParameters, ChannelManagerReadArgs, SimpleArcChannelManager,
};
use lightning::ln::peer_handler::{MessageHandler, SimpleArcPeerManager};
use lightning::ln::{PaymentHash, PaymentPreimage, PaymentSecret};
use lightning::routing::network_graph::NetGraphMsgHandler;
use lightning::util::config::UserConfig;
-use lightning::util::events::Event;
+use lightning::util::events::{Event, PaymentPurpose};
use lightning::util::ser::ReadableArgs;
use lightning_background_processor::BackgroundProcessor;
use lightning_block_sync::init;
io::stdout().flush().unwrap();
}
}
- Event::PaymentReceived { payment_hash, payment_preimage, payment_secret, amt, .. } => {
+ Event::PaymentReceived { payment_hash, purpose, amt, .. } => {
let mut payments = inbound_payments.lock().unwrap();
+ let (payment_preimage, payment_secret) = match purpose {
+ PaymentPurpose::InvoicePayment { payment_preimage, payment_secret, .. } => {
+ (payment_preimage, Some(payment_secret))
+ }
+ PaymentPurpose::SpontaneousPayment(preimage) => (Some(preimage), None),
+ };
let status = match channel_manager.claim_funds(payment_preimage.unwrap()) {
true => {
println!(
Entry::Occupied(mut e) => {
let payment = e.get_mut();
payment.status = status;
- payment.preimage = Some(payment_preimage.unwrap());
- payment.secret = Some(payment_secret);
+ payment.preimage = payment_preimage;
+ payment.secret = payment_secret;
}
Entry::Vacant(e) => {
e.insert(PaymentInfo {
- preimage: Some(payment_preimage.unwrap()),
- secret: Some(payment_secret),
+ preimage: payment_preimage,
+ secret: payment_secret,
status,
amt_msat: MillisatAmount(Some(amt)),
});
let mut channelmonitors = persister.read_channelmonitors(keys_manager.clone()).unwrap();
// Step 8: Initialize the ChannelManager
- let user_config = UserConfig::default();
+ let mut user_config = UserConfig::default();
+ user_config.peer_channel_config_limits.force_announced_channel_preference = false;
let mut restarting_node = true;
let (channel_manager_blockhash, mut channel_manager) = {
if let Ok(mut f) = fs::File::open(format!("{}/manager", ldk_data_dir.clone())) {
Ok(mut info) => {
for (pubkey, peer_addr) in info.drain() {
for chan_info in channel_manager.list_channels() {
- if pubkey == chan_info.remote_network_id {
+ if pubkey == chan_info.counterparty.node_id {
let _ =
cli::connect_peer_if_necessary(pubkey, peer_addr, peer_manager.clone())
.await;