|
1 | 1 | use crate::disk::{self, INBOUND_PAYMENTS_FNAME, OUTBOUND_PAYMENTS_FNAME}; |
2 | 2 | use crate::hex_utils; |
3 | 3 | use crate::{ |
4 | | - ChannelManager, HTLCStatus, InboundPaymentInfoStorage, MillisatAmount, NetworkGraph, |
5 | | - OutboundPaymentInfoStorage, PaymentInfo, PeerManager, |
| 4 | + ChainMonitor, ChannelManager, HTLCStatus, InboundPaymentInfoStorage, MillisatAmount, |
| 5 | + NetworkGraph, OutboundPaymentInfoStorage, PaymentInfo, PeerManager, |
6 | 6 | }; |
7 | 7 | use bitcoin::hashes::sha256::Hash as Sha256; |
8 | 8 | use bitcoin::hashes::Hash; |
9 | 9 | use bitcoin::network::Network; |
10 | 10 | use bitcoin::secp256k1::PublicKey; |
| 11 | +use lightning::chain::channelmonitor::Balance; |
11 | 12 | use lightning::ln::bolt11_payment::payment_parameters_from_invoice; |
12 | 13 | use lightning::ln::bolt11_payment::payment_parameters_from_zero_amount_invoice; |
13 | 14 | use lightning::ln::channelmanager::{PaymentId, RecipientOnionFields, Retry}; |
@@ -46,8 +47,8 @@ pub(crate) struct LdkUserInfo { |
46 | 47 |
|
47 | 48 | pub(crate) fn poll_for_user_input( |
48 | 49 | peer_manager: Arc<PeerManager>, channel_manager: Arc<ChannelManager>, |
49 | | - keys_manager: Arc<KeysManager>, network_graph: Arc<NetworkGraph>, |
50 | | - inbound_payments: Arc<Mutex<InboundPaymentInfoStorage>>, |
| 50 | + chain_monitor: Arc<ChainMonitor>, keys_manager: Arc<KeysManager>, |
| 51 | + network_graph: Arc<NetworkGraph>, inbound_payments: Arc<Mutex<InboundPaymentInfoStorage>>, |
51 | 52 | outbound_payments: Arc<Mutex<OutboundPaymentInfoStorage>>, ldk_data_dir: String, |
52 | 53 | network: Network, logger: Arc<disk::FilesystemLogger>, fs_store: Arc<FilesystemStore>, |
53 | 54 | ) { |
@@ -461,7 +462,7 @@ pub(crate) fn poll_for_user_input( |
461 | 462 |
|
462 | 463 | force_close_channel(channel_id, peer_pubkey, channel_manager.clone()); |
463 | 464 | }, |
464 | | - "nodeinfo" => node_info(&channel_manager, &peer_manager), |
| 465 | + "nodeinfo" => node_info(&channel_manager, &chain_monitor, &peer_manager), |
465 | 466 | "listpeers" => list_peers(peer_manager.clone()), |
466 | 467 | "signmessage" => { |
467 | 468 | const MSG_STARTPOS: usize = "signmessage".len() + 1; |
@@ -515,14 +516,26 @@ fn help() { |
515 | 516 | println!(" nodeinfo"); |
516 | 517 | } |
517 | 518 |
|
518 | | -fn node_info(channel_manager: &Arc<ChannelManager>, peer_manager: &Arc<PeerManager>) { |
| 519 | +fn node_info( |
| 520 | + channel_manager: &Arc<ChannelManager>, chain_monitor: &Arc<ChainMonitor>, |
| 521 | + peer_manager: &Arc<PeerManager>, |
| 522 | +) { |
519 | 523 | println!("\t{{"); |
520 | 524 | println!("\t\t node_pubkey: {}", channel_manager.get_our_node_id()); |
521 | 525 | let chans = channel_manager.list_channels(); |
522 | 526 | println!("\t\t num_channels: {}", chans.len()); |
523 | 527 | println!("\t\t num_usable_channels: {}", chans.iter().filter(|c| c.is_usable).count()); |
524 | | - let local_balance_msat = chans.iter().map(|c| c.balance_msat).sum::<u64>(); |
525 | | - println!("\t\t local_balance_msat: {}", local_balance_msat); |
| 528 | + let balances = chain_monitor.get_claimable_balances(&[]); |
| 529 | + let local_balance_sat = balances.iter().map(|b| b.claimable_amount_satoshis()).sum::<u64>(); |
| 530 | + println!("\t\t local_balance_sat: {}", local_balance_sat); |
| 531 | + let close_fees_map = |b| match b { |
| 532 | + &Balance::ClaimableOnChannelClose { transaction_fee_satoshis, .. } => { |
| 533 | + transaction_fee_satoshis |
| 534 | + }, |
| 535 | + _ => 0, |
| 536 | + }; |
| 537 | + let close_fees_sats = balances.iter().map(close_fees_map).sum::<u64>(); |
| 538 | + println!("\t\t eventual_close_fees_sat: {}", close_fees_sats); |
526 | 539 | println!("\t\t num_peers: {}", peer_manager.list_peers().len()); |
527 | 540 | println!("\t}},"); |
528 | 541 | } |
|
0 commit comments