@@ -10,16 +10,17 @@ use crate::io::{
10
10
use crate :: logger:: { log_error, log_info, Logger } ;
11
11
12
12
use lightning:: chain:: chaininterface:: { BroadcasterInterface , ConfirmationTarget , FeeEstimator } ;
13
+ use lightning:: events:: Event as LdkEvent ;
14
+ use lightning:: events:: EventHandler as LdkEventHandler ;
15
+ use lightning:: events:: PaymentPurpose ;
13
16
use lightning:: impl_writeable_tlv_based_enum;
14
17
use lightning:: ln:: PaymentHash ;
15
18
use lightning:: routing:: gossip:: NodeId ;
16
19
use lightning:: util:: errors:: APIError ;
17
- use lightning:: util:: events:: Event as LdkEvent ;
18
- use lightning:: util:: events:: EventHandler as LdkEventHandler ;
19
- use lightning:: util:: events:: PaymentPurpose ;
20
20
use lightning:: util:: ser:: { Readable , ReadableArgs , Writeable , Writer } ;
21
21
22
- use bitcoin:: secp256k1:: Secp256k1 ;
22
+ use bitcoin:: secp256k1:: { PublicKey , Secp256k1 } ;
23
+ use bitcoin:: OutPoint ;
23
24
use rand:: { thread_rng, Rng } ;
24
25
use std:: collections:: VecDeque ;
25
26
use std:: ops:: Deref ;
@@ -48,6 +49,19 @@ pub enum Event {
48
49
/// The value, in thousandths of a satoshi, that has been received.
49
50
amount_msat : u64 ,
50
51
} ,
52
+ /// A channel has been created and is pending confirmation on-chain.
53
+ ChannelPending {
54
+ /// The `channel_id` of the channel.
55
+ channel_id : [ u8 ; 32 ] ,
56
+ /// The `user_channel_id` of the channel.
57
+ user_channel_id : u128 ,
58
+ /// The `temporary_channel_id` this channel used to be known by during channel establishment.
59
+ former_temporary_channel_id : [ u8 ; 32 ] ,
60
+ /// The `node_id` of the channel counterparty.
61
+ counterparty_node_id : PublicKey ,
62
+ /// The outpoint of the channel's funding transaction.
63
+ funding_txo : OutPoint ,
64
+ } ,
51
65
/// A channel is ready to be used.
52
66
ChannelReady {
53
67
/// The `channel_id` of the channel.
@@ -79,7 +93,14 @@ impl_writeable_tlv_based_enum!(Event,
79
93
( 0 , channel_id, required) ,
80
94
( 1 , user_channel_id, required) ,
81
95
} ,
82
- ( 4 , ChannelClosed ) => {
96
+ ( 4 , ChannelPending ) => {
97
+ ( 0 , channel_id, required) ,
98
+ ( 1 , user_channel_id, required) ,
99
+ ( 2 , former_temporary_channel_id, required) ,
100
+ ( 3 , counterparty_node_id, required) ,
101
+ ( 4 , funding_txo, required) ,
102
+ } ,
103
+ ( 5 , ChannelClosed ) => {
83
104
( 0 , channel_id, required) ,
84
105
( 1 , user_channel_id, required) ,
85
106
} ;
@@ -548,6 +569,7 @@ where
548
569
next_channel_id,
549
570
fee_earned_msat,
550
571
claim_from_onchain_tx,
572
+ outbound_amount_forwarded_msat,
551
573
} => {
552
574
let read_only_network_graph = self . network_graph . read_only ( ) ;
553
575
let nodes = read_only_network_graph. nodes ( ) ;
@@ -567,6 +589,9 @@ where
567
589
} )
568
590
} )
569
591
} ;
592
+
593
+ let outbound_amount_str =
594
+ outbound_amount_forwarded_msat. unwrap_or_default ( ) . to_string ( ) ;
570
595
let channel_str = |channel_id : & Option < [ u8 ; 32 ] > | {
571
596
channel_id
572
597
. map ( |channel_id| {
@@ -586,7 +611,8 @@ where
586
611
if claim_from_onchain_tx {
587
612
log_info ! (
588
613
self . logger,
589
- "Forwarded payment{}{}, earning {}msat in fees from claiming onchain." ,
614
+ "Forwarded payment of {}msats{}{}, earning {} msats in fees from claiming onchain." ,
615
+ outbound_amount_str,
590
616
from_prev_str,
591
617
to_next_str,
592
618
fee_earned,
@@ -601,12 +627,35 @@ where
601
627
) ;
602
628
}
603
629
}
630
+ LdkEvent :: ChannelPending {
631
+ channel_id,
632
+ user_channel_id,
633
+ former_temporary_channel_id,
634
+ counterparty_node_id,
635
+ funding_txo,
636
+ } => {
637
+ log_info ! (
638
+ self . logger,
639
+ "New channel {} with counterparty {} has been created and is pending confirmation on chain." ,
640
+ hex_utils:: to_string( & channel_id) ,
641
+ counterparty_node_id,
642
+ ) ;
643
+ self . event_queue
644
+ . add_event ( Event :: ChannelPending {
645
+ channel_id,
646
+ user_channel_id,
647
+ former_temporary_channel_id : former_temporary_channel_id. unwrap ( ) ,
648
+ counterparty_node_id,
649
+ funding_txo,
650
+ } )
651
+ . expect ( "Failed to push to event queue" ) ;
652
+ }
604
653
LdkEvent :: ChannelReady {
605
654
channel_id, user_channel_id, counterparty_node_id, ..
606
655
} => {
607
656
log_info ! (
608
657
self . logger,
609
- "Channel {} with {} ready to be used." ,
658
+ "Channel {} with counterparty {} ready to be used." ,
610
659
hex_utils:: to_string( & channel_id) ,
611
660
counterparty_node_id,
612
661
) ;
0 commit comments