@@ -6,17 +6,18 @@ use crate::{
6
6
use crate :: logger:: { log_error, log_info, Logger } ;
7
7
8
8
use lightning:: chain:: chaininterface:: { BroadcasterInterface , ConfirmationTarget , FeeEstimator } ;
9
+ use lightning:: events:: Event as LdkEvent ;
10
+ use lightning:: events:: EventHandler as LdkEventHandler ;
11
+ use lightning:: events:: PaymentPurpose ;
9
12
use lightning:: impl_writeable_tlv_based_enum;
10
13
use lightning:: ln:: PaymentHash ;
11
14
use lightning:: routing:: gossip:: NodeId ;
12
15
use lightning:: util:: errors:: APIError ;
13
- use lightning:: util:: events:: Event as LdkEvent ;
14
- use lightning:: util:: events:: EventHandler as LdkEventHandler ;
15
- use lightning:: util:: events:: PaymentPurpose ;
16
16
use lightning:: util:: persist:: KVStorePersister ;
17
17
use lightning:: util:: ser:: { Readable , ReadableArgs , Writeable , Writer } ;
18
18
19
- use bitcoin:: secp256k1:: Secp256k1 ;
19
+ use bitcoin:: secp256k1:: { PublicKey , Secp256k1 } ;
20
+ use bitcoin:: OutPoint ;
20
21
use rand:: { thread_rng, Rng } ;
21
22
use std:: collections:: { hash_map, VecDeque } ;
22
23
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
} ;
@@ -455,6 +476,7 @@ where
455
476
next_channel_id,
456
477
fee_earned_msat,
457
478
claim_from_onchain_tx,
479
+ outbound_amount_forwarded_msat,
458
480
} => {
459
481
let read_only_network_graph = self . network_graph . read_only ( ) ;
460
482
let nodes = read_only_network_graph. nodes ( ) ;
@@ -474,6 +496,9 @@ where
474
496
} )
475
497
} )
476
498
} ;
499
+
500
+ let outbound_amount_str =
501
+ outbound_amount_forwarded_msat. unwrap_or_default ( ) . to_string ( ) ;
477
502
let channel_str = |channel_id : & Option < [ u8 ; 32 ] > | {
478
503
channel_id
479
504
. map ( |channel_id| {
@@ -493,7 +518,8 @@ where
493
518
if claim_from_onchain_tx {
494
519
log_info ! (
495
520
self . logger,
496
- "Forwarded payment{}{}, earning {} msats in fees from claiming onchain." ,
521
+ "Forwarded payment of {}msats{}{}, earning {} msats in fees from claiming onchain." ,
522
+ outbound_amount_str,
497
523
from_prev_str,
498
524
to_next_str,
499
525
fee_earned,
@@ -508,12 +534,35 @@ where
508
534
) ;
509
535
}
510
536
}
537
+ LdkEvent :: ChannelPending {
538
+ channel_id,
539
+ user_channel_id,
540
+ former_temporary_channel_id,
541
+ counterparty_node_id,
542
+ funding_txo,
543
+ } => {
544
+ log_info ! (
545
+ self . logger,
546
+ "New channel {} with counterparty {} has been created and is pending confirmation on chain." ,
547
+ hex_utils:: to_string( & channel_id) ,
548
+ counterparty_node_id,
549
+ ) ;
550
+ self . event_queue
551
+ . add_event ( Event :: ChannelPending {
552
+ channel_id,
553
+ user_channel_id,
554
+ former_temporary_channel_id : former_temporary_channel_id. unwrap ( ) ,
555
+ counterparty_node_id,
556
+ funding_txo,
557
+ } )
558
+ . expect ( "Failed to push to event queue" ) ;
559
+ }
511
560
LdkEvent :: ChannelReady {
512
561
channel_id, user_channel_id, counterparty_node_id, ..
513
562
} => {
514
563
log_info ! (
515
564
self . logger,
516
- "Channel {} with {} ready to be used." ,
565
+ "Channel {} with counterparty {} ready to be used." ,
517
566
hex_utils:: to_string( & channel_id) ,
518
567
counterparty_node_id,
519
568
) ;
0 commit comments