|
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