@@ -134,7 +134,7 @@ pub enum MonitorEvent {
134134HTLCEvent ( HTLCUpdate ) , 
135135
136136	/// A monitor event that the Channel's commitment transaction was confirmed. 
137- CommitmentTxConfirmed ( OutPoint ) , 
137+ HolderForceClosed ( OutPoint ) , 
138138
139139	/// Indicates a [`ChannelMonitor`] update has completed. See 
140140/// [`ChannelMonitorUpdateStatus::InProgress`] for more information on how this is used. 
@@ -150,24 +150,18 @@ pub enum MonitorEvent {
150150/// same [`ChannelMonitor`] have been applied and persisted. 
151151monitor_update_id :  u64 , 
152152	} , 
153- 
154- 	/// Indicates a [`ChannelMonitor`] update has failed. See 
155- /// [`ChannelMonitorUpdateStatus::PermanentFailure`] for more information on how this is used. 
156- /// 
157- /// [`ChannelMonitorUpdateStatus::PermanentFailure`]: super::ChannelMonitorUpdateStatus::PermanentFailure 
158- UpdateFailed ( OutPoint ) , 
159153} 
160154impl_writeable_tlv_based_enum_upgradable ! ( MonitorEvent , 
161- 	// Note that Completed and UpdateFailed are  currently never serialized to disk as they are  
162- 	// generated only in  ChainMonitor 
155+ 	// Note that Completed is  currently never serialized to disk as it is generated only in  
156+ 	// ChainMonitor.  
163157	( 0 ,  Completed )  => { 
164158		( 0 ,  funding_txo,  required) , 
165159		( 2 ,  monitor_update_id,  required) , 
166160	} , 
167161; 
168162	( 2 ,  HTLCEvent ) , 
169- 	( 4 ,  CommitmentTxConfirmed ) , 
170- 	( 6 ,   UpdateFailed ) , 
163+ 	( 4 ,  HolderForceClosed ) , 
164+ 	// 6 was ` UpdateFailed` until LDK 0.0.117 
171165) ; 
172166
173167/// Simple structure sent back by `chain::Watch` when an HTLC from a forward channel is detected on 
@@ -1037,7 +1031,7 @@ impl<Signer: WriteableEcdsaChannelSigner> Writeable for ChannelMonitorImpl<Signe
10371031
10381032		writer. write_all ( & ( self . pending_monitor_events . iter ( ) . filter ( |ev| match  ev { 
10391033			MonitorEvent :: HTLCEvent ( _)  => true , 
1040- 			MonitorEvent :: CommitmentTxConfirmed ( _)  => true , 
1034+ 			MonitorEvent :: HolderForceClosed ( _)  => true , 
10411035			_ => false , 
10421036		} ) . count ( )  as  u64 ) . to_be_bytes ( ) ) ?; 
10431037		for  event in  self . pending_monitor_events . iter ( )  { 
@@ -1046,7 +1040,7 @@ impl<Signer: WriteableEcdsaChannelSigner> Writeable for ChannelMonitorImpl<Signe
10461040					0u8 . write ( writer) ?; 
10471041					upd. write ( writer) ?; 
10481042				} , 
1049- 				MonitorEvent :: CommitmentTxConfirmed ( _)  => 1u8 . write ( writer) ?, 
1043+ 				MonitorEvent :: HolderForceClosed ( _)  => 1u8 . write ( writer) ?, 
10501044				_ => { } ,  // Covered in the TLV writes below 
10511045			} 
10521046		} 
@@ -1488,21 +1482,20 @@ impl<Signer: WriteableEcdsaChannelSigner> ChannelMonitor<Signer> {
14881482		self . inner . lock ( ) . unwrap ( ) . counterparty_node_id 
14891483	} 
14901484
1491- 	/// Used by ChannelManager deserialization to broadcast the latest holder state if its copy of  
1492- /// the Channel  was out-of-date. 
1485+ 	/// Used by [` ChannelManager`]  deserialization to broadcast the latest holder state if its copy 
1486+ /// of  the channel state  was out-of-date. 
14931487/// 
14941488/// You may also use this to broadcast the latest local commitment transaction, either because 
1495- /// a monitor update failed with [`ChannelMonitorUpdateStatus::PermanentFailure`] or because we've 
1496- /// fallen behind (i.e. we've received proof that our counterparty side knows a revocation 
1497- /// secret we gave them that they shouldn't know). 
1489+ /// a monitor update failed or because we've fallen behind (i.e. we've received proof that our 
1490+ /// counterparty side knows a revocation secret we gave them that they shouldn't know). 
14981491/// 
14991492/// Broadcasting these transactions in the second case is UNSAFE, as they allow counterparty 
15001493/// side to punish you. Nevertheless you may want to broadcast them if counterparty doesn't 
15011494/// close channel with their commitment transaction after a substantial amount of time. Best 
15021495/// may be to contact the other node operator out-of-band to coordinate other options available 
1503- /// to you. In any-case, the choice is up to you.  
1496+ /// to you. 
15041497/// 
1505- /// [`ChannelMonitorUpdateStatus::PermanentFailure `]: super::ChannelMonitorUpdateStatus::PermanentFailure  
1498+ /// [`ChannelManager `]: crate::ln::channelmanager::ChannelManager  
15061499pub  fn  get_latest_holder_commitment_txn < L :  Deref > ( & self ,  logger :  & L )  -> Vec < Transaction > 
15071500	where  L :: Target :  Logger  { 
15081501		self . inner . lock ( ) . unwrap ( ) . get_latest_holder_commitment_txn ( logger) 
@@ -2533,7 +2526,7 @@ impl<Signer: WriteableEcdsaChannelSigner> ChannelMonitorImpl<Signer> {
25332526			txs. push ( tx) ; 
25342527		} 
25352528		broadcaster. broadcast_transactions ( & txs) ; 
2536- 		self . pending_monitor_events . push ( MonitorEvent :: CommitmentTxConfirmed ( self . funding_info . 0 ) ) ; 
2529+ 		self . pending_monitor_events . push ( MonitorEvent :: HolderForceClosed ( self . funding_info . 0 ) ) ; 
25372530	} 
25382531
25392532	pub  fn  update_monitor < B :  Deref ,  F :  Deref ,  L :  Deref > ( & mut  self ,  updates :  & ChannelMonitorUpdate ,  broadcaster :  & B ,  fee_estimator :  F ,  logger :  & L )  -> Result < ( ) ,  ( ) > 
@@ -2599,6 +2592,7 @@ impl<Signer: WriteableEcdsaChannelSigner> ChannelMonitorImpl<Signer> {
25992592				ChannelMonitorUpdateStep :: CommitmentSecret  {  idx,  secret }  => { 
26002593					log_trace ! ( logger,  "Updating ChannelMonitor with commitment secret" ) ; 
26012594					if  let  Err ( e)  = self . provide_secret ( * idx,  * secret)  { 
2595+ 						debug_assert ! ( false ,  "Latest counterparty commitment secret was invalid" ) ; 
26022596						log_error ! ( logger,  "Providing latest counterparty commitment secret failed/was refused:" ) ; 
26032597						log_error ! ( logger,  "    {}" ,  e) ; 
26042598						ret = Err ( ( ) ) ; 
@@ -2645,7 +2639,7 @@ impl<Signer: WriteableEcdsaChannelSigner> ChannelMonitorImpl<Signer> {
26452639						log_error ! ( logger,  "    in channel monitor for channel {}!" ,  & self . funding_info. 0 . to_channel_id( ) ) ; 
26462640						log_error ! ( logger,  "    Read the docs for ChannelMonitor::get_latest_holder_commitment_txn and take manual action!" ) ; 
26472641					}  else  { 
2648- 						// If we generated a MonitorEvent::CommitmentTxConfirmed , the ChannelManager 
2642+ 						// If we generated a MonitorEvent::HolderForceClosed , the ChannelManager 
26492643						// will still give us a ChannelForceClosed event with !should_broadcast, but we 
26502644						// shouldn't print the scary warning above. 
26512645						log_info ! ( logger,  "Channel off-chain state closed after we broadcasted our latest commitment transaction." ) ; 
@@ -3490,7 +3484,7 @@ impl<Signer: WriteableEcdsaChannelSigner> ChannelMonitorImpl<Signer> {
34903484			let  funding_outp = HolderFundingOutput :: build ( self . funding_redeemscript . clone ( ) ,  self . channel_value_satoshis ,  self . onchain_tx_handler . channel_type_features ( ) . clone ( ) ) ; 
34913485			let  commitment_package = PackageTemplate :: build_package ( self . funding_info . 0 . txid . clone ( ) ,  self . funding_info . 0 . index  as  u32 ,  PackageSolvingData :: HolderFundingOutput ( funding_outp) ,  self . best_block . height ( ) ,  self . best_block . height ( ) ) ; 
34923486			claimable_outpoints. push ( commitment_package) ; 
3493- 			self . pending_monitor_events . push ( MonitorEvent :: CommitmentTxConfirmed ( self . funding_info . 0 ) ) ; 
3487+ 			self . pending_monitor_events . push ( MonitorEvent :: HolderForceClosed ( self . funding_info . 0 ) ) ; 
34943488			// Although we aren't signing the transaction directly here, the transaction will be signed 
34953489			// in the claim that is queued to OnchainTxHandler. We set holder_tx_signed here to reject 
34963490			// new channel updates. 
@@ -4254,7 +4248,7 @@ impl<'a, 'b, ES: EntropySource, SP: SignerProvider> ReadableArgs<(&'a ES, &'b SP
42544248		for  _ in  0 ..pending_monitor_events_len { 
42554249			let  ev = match  <u8  as  Readable >:: read ( reader) ? { 
42564250				0  => MonitorEvent :: HTLCEvent ( Readable :: read ( reader) ?) , 
4257- 				1  => MonitorEvent :: CommitmentTxConfirmed ( funding_info. 0 ) , 
4251+ 				1  => MonitorEvent :: HolderForceClosed ( funding_info. 0 ) , 
42584252				_ => return  Err ( DecodeError :: InvalidValue ) 
42594253			} ; 
42604254			pending_monitor_events. as_mut ( ) . unwrap ( ) . push ( ev) ; 
@@ -4413,13 +4407,12 @@ mod tests {
44134407	use  crate :: chain:: chaininterface:: LowerBoundedFeeEstimator ; 
44144408
44154409	use  super :: ChannelMonitorUpdateStep ; 
4416- 	use  crate :: { check_added_monitors,  check_closed_broadcast ,  check_closed_event ,   check_spends,  get_local_commitment_txn,  get_monitor,  get_route_and_payment_hash,  unwrap_send_err} ; 
4410+ 	use  crate :: { check_added_monitors,  check_spends,  get_local_commitment_txn,  get_monitor,  get_route_and_payment_hash,  unwrap_send_err} ; 
44174411	use  crate :: chain:: { BestBlock ,  Confirm } ; 
44184412	use  crate :: chain:: channelmonitor:: ChannelMonitor ; 
44194413	use  crate :: chain:: package:: { weight_offered_htlc,  weight_received_htlc,  weight_revoked_offered_htlc,  weight_revoked_received_htlc,  WEIGHT_REVOKED_OUTPUT } ; 
44204414	use  crate :: chain:: transaction:: OutPoint ; 
44214415	use  crate :: sign:: InMemorySigner ; 
4422- 	use  crate :: events:: ClosureReason ; 
44234416	use  crate :: ln:: { PaymentPreimage ,  PaymentHash } ; 
44244417	use  crate :: ln:: chan_utils; 
44254418	use  crate :: ln:: chan_utils:: { HTLCOutputInCommitment ,  ChannelPublicKeys ,  ChannelTransactionParameters ,  HolderCommitmentTransaction ,  CounterpartyChannelTransactionParameters } ; 
@@ -4485,18 +4478,14 @@ mod tests {
44854478		let  ( route,  payment_hash,  _,  payment_secret)  = get_route_and_payment_hash ! ( nodes[ 1 ] ,  nodes[ 0 ] ,  100_000 ) ; 
44864479		unwrap_send_err ! ( nodes[ 1 ] . node. send_payment_with_route( & route,  payment_hash, 
44874480				RecipientOnionFields :: secret_only( payment_secret) ,  PaymentId ( payment_hash. 0 ) 
4488- 			) ,  true ,  APIError :: ChannelUnavailable  {  ref err } , 
4489- 			assert!( err. contains( "ChannelMonitor storage failure" ) ) ) ; 
4490- 		check_added_monitors ! ( nodes[ 1 ] ,  2 ) ;  // After the failure we generate a close-channel monitor update 
4491- 		check_closed_broadcast ! ( nodes[ 1 ] ,  true ) ; 
4492- 		check_closed_event ! ( nodes[ 1 ] ,  1 ,  ClosureReason :: ProcessingError  {  err:  "ChannelMonitor storage failure" . to_string( )  } ,  
4493- 			[ nodes[ 0 ] . node. get_our_node_id( ) ] ,  100000 ) ; 
4481+ 			) ,  false ,  APIError :: MonitorUpdateInProgress ,  { } ) ; 
4482+ 		check_added_monitors ! ( nodes[ 1 ] ,  1 ) ; 
44944483
44954484		// Build a new ChannelMonitorUpdate which contains both the failing commitment tx update 
44964485		// and provides the claim preimages for the two pending HTLCs. The first update generates 
44974486		// an error, but the point of this test is to ensure the later updates are still applied. 
44984487		let  monitor_updates = nodes[ 1 ] . chain_monitor . monitor_updates . lock ( ) . unwrap ( ) ; 
4499- 		let  mut  replay_update = monitor_updates. get ( & channel. 2 ) . unwrap ( ) . iter ( ) . rev ( ) . skip ( 1 ) . next ( ) . unwrap ( ) . clone ( ) ; 
4488+ 		let  mut  replay_update = monitor_updates. get ( & channel. 2 ) . unwrap ( ) . iter ( ) . rev ( ) . next ( ) . unwrap ( ) . clone ( ) ; 
45004489		assert_eq ! ( replay_update. updates. len( ) ,  1 ) ; 
45014490		if  let  ChannelMonitorUpdateStep :: LatestCounterpartyCommitmentTXInfo  {  .. }  = replay_update. updates [ 0 ]  { 
45024491		}  else  {  panic ! ( ) ;  } 
0 commit comments