@@ -1318,6 +1318,29 @@ pub enum Event {
1318
1318
/// The features that this channel will operate with.
1319
1319
channel_type : ChannelTypeFeatures ,
1320
1320
} ,
1321
+ /// Used to indicate that a channel with the given `channel_id` has had its funding spliced.
1322
+ /// This event is emitted when the splice transaction has been confirmed on-chain to a
1323
+ /// sufficient depth by both parties, or, in case of a 0-conf channel, when both parties have
1324
+ /// completed negotiation of the splice transaction.
1325
+ ///
1326
+ /// # Failure Behavior and Persistence
1327
+ /// This event will eventually be replayed after failures-to-handle (i.e., the event handler
1328
+ /// returning `Err(ReplayEvent ())`) and will be persisted across restarts.
1329
+ SpliceLocked {
1330
+ /// The `channel_id` of the channel that had its funding spliced.
1331
+ channel_id : ChannelId ,
1332
+ /// The `user_channel_id` value passed in to [`ChannelManager::create_channel`] for outbound
1333
+ /// channels, or to [`ChannelManager::accept_inbound_channel`] for inbound channels if
1334
+ /// [`UserConfig::manually_accept_inbound_channels`] config flag is set to true. Otherwise
1335
+ /// `user_channel_id` will be randomized for an inbound channel.
1336
+ ///
1337
+ /// [`ChannelManager::create_channel`]: crate::ln::channelmanager::ChannelManager::create_channel
1338
+ /// [`ChannelManager::accept_inbound_channel`]: crate::ln::channelmanager::ChannelManager::accept_inbound_channel
1339
+ /// [`UserConfig::manually_accept_inbound_channels`]: crate::util::config::UserConfig::manually_accept_inbound_channels
1340
+ user_channel_id : u128 ,
1341
+ /// The `node_id` of the channel counterparty.
1342
+ counterparty_node_id : PublicKey ,
1343
+ } ,
1321
1344
/// Used to indicate that a channel that got past the initial handshake with the given `channel_id` is in the
1322
1345
/// process of closure. This includes previously opened channels, and channels that time out from not being funded.
1323
1346
///
@@ -1842,6 +1865,14 @@ impl Writeable for Event {
1842
1865
( 8 , former_temporary_channel_id, required) ,
1843
1866
} ) ;
1844
1867
} ,
1868
+ & Event :: SpliceLocked { ref channel_id, ref user_channel_id, ref counterparty_node_id } => {
1869
+ 45u8 . write ( writer) ?;
1870
+ write_tlv_fields ! ( writer, {
1871
+ ( 0 , channel_id, required) ,
1872
+ ( 2 , user_channel_id, required) ,
1873
+ ( 4 , counterparty_node_id, required) ,
1874
+ } ) ;
1875
+ } ,
1845
1876
// Note that, going forward, all new events must only write data inside of
1846
1877
// `write_tlv_fields`. Versions 0.0.101+ will ignore odd-numbered events that write
1847
1878
// data via `write_tlv_fields`.
@@ -2358,6 +2389,25 @@ impl MaybeReadable for Event {
2358
2389
former_temporary_channel_id : former_temporary_channel_id. 0 . unwrap ( ) ,
2359
2390
} ) )
2360
2391
} ,
2392
+ 45u8 => {
2393
+ let mut f = || {
2394
+ let mut channel_id = ChannelId :: new_zero ( ) ;
2395
+ let mut user_channel_id: u128 = 0 ;
2396
+ let mut counterparty_node_id = RequiredWrapper ( None ) ;
2397
+ read_tlv_fields ! ( reader, {
2398
+ ( 0 , channel_id, required) ,
2399
+ ( 2 , user_channel_id, required) ,
2400
+ ( 4 , counterparty_node_id, required) ,
2401
+ } ) ;
2402
+
2403
+ Ok ( Some ( Event :: SpliceLocked {
2404
+ channel_id,
2405
+ user_channel_id,
2406
+ counterparty_node_id : counterparty_node_id. 0 . unwrap ( ) ,
2407
+ } ) )
2408
+ } ;
2409
+ f ( )
2410
+ } ,
2361
2411
// Versions prior to 0.0.100 did not ignore odd types, instead returning InvalidValue.
2362
2412
// Version 0.0.100 failed to properly ignore odd types, possibly resulting in corrupt
2363
2413
// reads.
0 commit comments