@@ -1187,6 +1187,15 @@ pub(crate) struct ChannelMonitorImpl<Signer: EcdsaChannelSigner> {
1187
1187
funding : FundingScope ,
1188
1188
pending_funding : Vec < FundingScope > ,
1189
1189
1190
+ /// True if this channel was configured for manual funding broadcasts. Monitors written by
1191
+ /// versions prior to LDK 0.2 load with `false` until a new update persists it.
1192
+ is_manual_broadcast : bool ,
1193
+ /// True once we've observed either funding transaction on-chain. Older monitors prior to LDK 0.2
1194
+ /// assume this is `true` when absent during upgrade so holder broadcasts aren't gated unexpectedly.
1195
+ /// In manual-broadcast channels we also use this to trigger deferred holder
1196
+ /// broadcasts once the funding transaction finally appears on-chain.
1197
+ funding_seen_onchain : bool ,
1198
+
1190
1199
latest_update_id : u64 ,
1191
1200
commitment_transaction_number_obscure_factor : u64 ,
1192
1201
@@ -1725,6 +1734,8 @@ pub(crate) fn write_chanmon_internal<Signer: EcdsaChannelSigner, W: Writer>(
1725
1734
( 32 , channel_monitor. pending_funding, optional_vec) ,
1726
1735
( 33 , channel_monitor. htlcs_resolved_to_user, required) ,
1727
1736
( 34 , channel_monitor. alternative_funding_confirmed, option) ,
1737
+ ( 35 , channel_monitor. is_manual_broadcast, required) ,
1738
+ ( 37 , channel_monitor. funding_seen_onchain, required) ,
1728
1739
} ) ;
1729
1740
1730
1741
Ok ( ( ) )
@@ -1853,6 +1864,7 @@ impl<Signer: EcdsaChannelSigner> ChannelMonitor<Signer> {
1853
1864
commitment_transaction_number_obscure_factor : u64 ,
1854
1865
initial_holder_commitment_tx : HolderCommitmentTransaction , best_block : BestBlock ,
1855
1866
counterparty_node_id : PublicKey , channel_id : ChannelId ,
1867
+ is_manual_broadcast : bool ,
1856
1868
) -> ChannelMonitor < Signer > {
1857
1869
1858
1870
assert ! ( commitment_transaction_number_obscure_factor <= ( 1 << 48 ) ) ;
@@ -1899,6 +1911,9 @@ impl<Signer: EcdsaChannelSigner> ChannelMonitor<Signer> {
1899
1911
} ,
1900
1912
pending_funding : vec ! [ ] ,
1901
1913
1914
+ is_manual_broadcast,
1915
+ funding_seen_onchain : false ,
1916
+
1902
1917
latest_update_id : 0 ,
1903
1918
commitment_transaction_number_obscure_factor,
1904
1919
@@ -6456,6 +6471,8 @@ impl<'a, 'b, ES: EntropySource, SP: SignerProvider> ReadableArgs<(&'a ES, &'b SP
6456
6471
let mut channel_parameters = None ;
6457
6472
let mut pending_funding = None ;
6458
6473
let mut alternative_funding_confirmed = None ;
6474
+ let mut is_manual_broadcast = RequiredWrapper ( None ) ;
6475
+ let mut funding_seen_onchain = RequiredWrapper ( None ) ;
6459
6476
read_tlv_fields ! ( reader, {
6460
6477
( 1 , funding_spend_confirmed, option) ,
6461
6478
( 3 , htlcs_resolved_on_chain, optional_vec) ,
@@ -6476,6 +6493,8 @@ impl<'a, 'b, ES: EntropySource, SP: SignerProvider> ReadableArgs<(&'a ES, &'b SP
6476
6493
( 32 , pending_funding, optional_vec) ,
6477
6494
( 33 , htlcs_resolved_to_user, option) ,
6478
6495
( 34 , alternative_funding_confirmed, option) ,
6496
+ ( 35 , is_manual_broadcast, ( default_value, false ) ) ,
6497
+ ( 37 , funding_seen_onchain, ( default_value, true ) ) ,
6479
6498
} ) ;
6480
6499
// Note that `payment_preimages_with_info` was added (and is always written) in LDK 0.1, so
6481
6500
// we can use it to determine if this monitor was last written by LDK 0.1 or later.
@@ -6593,6 +6612,10 @@ impl<'a, 'b, ES: EntropySource, SP: SignerProvider> ReadableArgs<(&'a ES, &'b SP
6593
6612
prev_holder_commitment_tx,
6594
6613
} ,
6595
6614
pending_funding : pending_funding. unwrap_or ( vec ! [ ] ) ,
6615
+ is_manual_broadcast : is_manual_broadcast. 0 . unwrap ( ) ,
6616
+ // Older monitors prior to LDK 0.2 assume this is `true` when absent
6617
+ // during upgrade so holder broadcasts aren't gated unexpectedly.
6618
+ funding_seen_onchain : funding_seen_onchain. 0 . unwrap ( ) ,
6596
6619
6597
6620
latest_update_id,
6598
6621
commitment_transaction_number_obscure_factor,
0 commit comments