@@ -494,13 +494,18 @@ impl_writeable_tlv_based!(PendingChannelMonitorUpdate, {
494
494
( 2 , blocked, required) ,
495
495
} ) ;
496
496
497
+ enum ChannelSignerType < ECS : ChannelSigner > {
498
+ Ecdsa ( ECS ) ,
499
+ }
500
+
497
501
// TODO: We should refactor this to be an Inbound/OutboundChannel until initial setup handshaking
498
502
// has been completed, and then turn into a Channel to get compiler-time enforcement of things like
499
503
// calling channel_id() before we're set up or things like get_outbound_funding_signed on an
500
504
// inbound channel.
501
505
//
502
506
// Holder designates channel data owned for the benefice of the user client.
503
507
// Counterparty designates channel data owned by the another channel participant entity.
508
+ #[ allow( unused) ]
504
509
pub ( super ) struct Channel < Signer : ChannelSigner > {
505
510
config : LegacyChannelConfig ,
506
511
@@ -534,7 +539,7 @@ pub(super) struct Channel<Signer: ChannelSigner> {
534
539
535
540
latest_monitor_update_id : u64 ,
536
541
537
- holder_signer : Signer ,
542
+ holder_signer : ChannelSignerType < Signer > ,
538
543
shutdown_scriptpubkey : Option < ShutdownScript > ,
539
544
destination_script : Script ,
540
545
@@ -1042,7 +1047,7 @@ impl<Signer: WriteableEcdsaChannelSigner> Channel<Signer> {
1042
1047
1043
1048
latest_monitor_update_id : 0 ,
1044
1049
1045
- holder_signer,
1050
+ holder_signer : ChannelSignerType :: Ecdsa ( holder_signer ) ,
1046
1051
shutdown_scriptpubkey,
1047
1052
destination_script,
1048
1053
@@ -1397,7 +1402,7 @@ impl<Signer: WriteableEcdsaChannelSigner> Channel<Signer> {
1397
1402
1398
1403
latest_monitor_update_id : 0 ,
1399
1404
1400
- holder_signer,
1405
+ holder_signer : ChannelSignerType :: Ecdsa ( holder_signer ) ,
1401
1406
shutdown_scriptpubkey,
1402
1407
destination_script,
1403
1408
@@ -1836,7 +1841,8 @@ impl<Signer: WriteableEcdsaChannelSigner> Channel<Signer> {
1836
1841
/// The result is a transaction which we can revoke broadcastership of (ie a "local" transaction)
1837
1842
/// TODO Some magic rust shit to compile-time check this?
1838
1843
fn build_holder_transaction_keys ( & self , commitment_number : u64 ) -> TxCreationKeys {
1839
- let per_commitment_point = self . holder_signer . get_per_commitment_point ( commitment_number, & self . secp_ctx ) ;
1844
+ let ecdsa_signer = match & self . holder_signer { ChannelSignerType :: Ecdsa ( signer) => { signer} } ;
1845
+ let per_commitment_point = ecdsa_signer. get_per_commitment_point ( commitment_number, & self . secp_ctx ) ;
1840
1846
let delayed_payment_base = & self . get_holder_pubkeys ( ) . delayed_payment_basepoint ;
1841
1847
let htlc_basepoint = & self . get_holder_pubkeys ( ) . htlc_basepoint ;
1842
1848
let counterparty_pubkeys = self . get_counterparty_pubkeys ( ) ;
@@ -2323,7 +2329,8 @@ impl<Signer: WriteableEcdsaChannelSigner> Channel<Signer> {
2323
2329
log_trace ! ( logger, "Initial counterparty tx for channel {} is: txid {} tx {}" ,
2324
2330
log_bytes!( self . channel_id( ) ) , counterparty_initial_bitcoin_tx. txid, encode:: serialize_hex( & counterparty_initial_bitcoin_tx. transaction) ) ;
2325
2331
2326
- let counterparty_signature = self . holder_signer . sign_counterparty_commitment ( & counterparty_initial_commitment_tx, Vec :: new ( ) , & self . secp_ctx )
2332
+ let ecdsa_signer = match & self . holder_signer { ChannelSignerType :: Ecdsa ( signer) => { signer} } ;
2333
+ let counterparty_signature = ecdsa_signer. sign_counterparty_commitment ( & counterparty_initial_commitment_tx, Vec :: new ( ) , & self . secp_ctx )
2327
2334
. map_err ( |_| ChannelError :: Close ( "Failed to get signatures for new commitment_signed" . to_owned ( ) ) ) ?. 0 ;
2328
2335
2329
2336
// We sign "counterparty" commitment transaction, allowing them to broadcast the tx if they wish.
@@ -2363,7 +2370,8 @@ impl<Signer: WriteableEcdsaChannelSigner> Channel<Signer> {
2363
2370
self . channel_transaction_parameters . funding_outpoint = Some ( funding_txo) ;
2364
2371
// This is an externally observable change before we finish all our checks. In particular
2365
2372
// funding_created_signature may fail.
2366
- self . holder_signer . provide_channel_parameters ( & self . channel_transaction_parameters ) ;
2373
+ let ecdsa_signer = match & mut self . holder_signer { ChannelSignerType :: Ecdsa ( signer) => { signer} } ;
2374
+ ecdsa_signer. provide_channel_parameters ( & self . channel_transaction_parameters ) ;
2367
2375
2368
2376
let ( counterparty_initial_commitment_txid, initial_commitment_tx, signature) = match self . funding_created_signature ( & msg. signature , logger) {
2369
2377
Ok ( res) => res,
@@ -2386,7 +2394,8 @@ impl<Signer: WriteableEcdsaChannelSigner> Channel<Signer> {
2386
2394
self . counterparty_funding_pubkey ( )
2387
2395
) ;
2388
2396
2389
- self . holder_signer . validate_holder_commitment ( & holder_commitment_tx, Vec :: new ( ) )
2397
+ let ecdsa_signer = match & self . holder_signer { ChannelSignerType :: Ecdsa ( signer) => { signer} } ;
2398
+ ecdsa_signer. validate_holder_commitment ( & holder_commitment_tx, Vec :: new ( ) )
2390
2399
. map_err ( |_| ChannelError :: Close ( "Failed to validate our commitment" . to_owned ( ) ) ) ?;
2391
2400
2392
2401
// Now that we're past error-generating stuff, update our local state:
@@ -2476,7 +2485,8 @@ impl<Signer: WriteableEcdsaChannelSigner> Channel<Signer> {
2476
2485
self . counterparty_funding_pubkey ( )
2477
2486
) ;
2478
2487
2479
- self . holder_signer . validate_holder_commitment ( & holder_commitment_tx, Vec :: new ( ) )
2488
+ let ecdsa_signer = match & self . holder_signer { ChannelSignerType :: Ecdsa ( signer) => { signer} } ;
2489
+ ecdsa_signer. validate_holder_commitment ( & holder_commitment_tx, Vec :: new ( ) )
2480
2490
. map_err ( |_| ChannelError :: Close ( "Failed to validate our commitment" . to_owned ( ) ) ) ?;
2481
2491
2482
2492
@@ -3245,7 +3255,8 @@ impl<Signer: WriteableEcdsaChannelSigner> Channel<Signer> {
3245
3255
self . counterparty_funding_pubkey ( )
3246
3256
) ;
3247
3257
3248
- self . holder_signer . validate_holder_commitment ( & holder_commitment_tx, commitment_stats. preimages )
3258
+ let ecdsa_signer = match & self . holder_signer { ChannelSignerType :: Ecdsa ( signer) => { signer} } ;
3259
+ ecdsa_signer. validate_holder_commitment ( & holder_commitment_tx, commitment_stats. preimages )
3249
3260
. map_err ( |_| ChannelError :: Close ( "Failed to validate our commitment" . to_owned ( ) ) ) ?;
3250
3261
3251
3262
// Update state now that we've passed all the can-fail calls...
@@ -3505,7 +3516,8 @@ impl<Signer: WriteableEcdsaChannelSigner> Channel<Signer> {
3505
3516
* self . next_remote_commitment_tx_fee_info_cached . lock ( ) . unwrap ( ) = None ;
3506
3517
}
3507
3518
3508
- self . holder_signer . validate_counterparty_revocation (
3519
+ let ecdsa_signer = match & self . holder_signer { ChannelSignerType :: Ecdsa ( signer) => { signer} } ;
3520
+ ecdsa_signer. validate_counterparty_revocation (
3509
3521
self . cur_counterparty_commitment_transaction_number + 1 ,
3510
3522
& secret
3511
3523
) . map_err ( |_| ChannelError :: Close ( "Failed to validate revocation from peer" . to_owned ( ) ) ) ?;
@@ -3909,11 +3921,12 @@ impl<Signer: WriteableEcdsaChannelSigner> Channel<Signer> {
3909
3921
// * an inbound channel that failed to persist the monitor on funding_created and we got
3910
3922
// the funding transaction confirmed before the monitor was persisted, or
3911
3923
// * a 0-conf channel and intended to send the channel_ready before any broadcast at all.
3924
+ let ecdsa_signer = match & self . holder_signer { ChannelSignerType :: Ecdsa ( signer) => { signer} } ;
3912
3925
let channel_ready = if self . monitor_pending_channel_ready {
3913
3926
assert ! ( !self . is_outbound( ) || self . minimum_depth == Some ( 0 ) ,
3914
3927
"Funding transaction broadcast by the local client before it should have - LDK didn't do it!" ) ;
3915
3928
self . monitor_pending_channel_ready = false ;
3916
- let next_per_commitment_point = self . holder_signer . get_per_commitment_point ( self . cur_holder_commitment_transaction_number , & self . secp_ctx ) ;
3929
+ let next_per_commitment_point = ecdsa_signer . get_per_commitment_point ( self . cur_holder_commitment_transaction_number , & self . secp_ctx ) ;
3917
3930
Some ( msgs:: ChannelReady {
3918
3931
channel_id : self . channel_id ( ) ,
3919
3932
next_per_commitment_point,
@@ -3993,8 +4006,9 @@ impl<Signer: WriteableEcdsaChannelSigner> Channel<Signer> {
3993
4006
}
3994
4007
3995
4008
fn get_last_revoke_and_ack ( & self ) -> msgs:: RevokeAndACK {
3996
- let next_per_commitment_point = self . holder_signer . get_per_commitment_point ( self . cur_holder_commitment_transaction_number , & self . secp_ctx ) ;
3997
- let per_commitment_secret = self . holder_signer . release_commitment_secret ( self . cur_holder_commitment_transaction_number + 2 ) ;
4009
+ let ecdsa_signer = match & self . holder_signer { ChannelSignerType :: Ecdsa ( signer) => { signer} } ;
4010
+ let next_per_commitment_point = ecdsa_signer. get_per_commitment_point ( self . cur_holder_commitment_transaction_number , & self . secp_ctx ) ;
4011
+ let per_commitment_secret = ecdsa_signer. release_commitment_secret ( self . cur_holder_commitment_transaction_number + 2 ) ;
3998
4012
msgs:: RevokeAndACK {
3999
4013
channel_id : self . channel_id ,
4000
4014
per_commitment_secret,
@@ -4096,7 +4110,8 @@ impl<Signer: WriteableEcdsaChannelSigner> Channel<Signer> {
4096
4110
}
4097
4111
4098
4112
if msg. next_remote_commitment_number > 0 {
4099
- let expected_point = self . holder_signer . get_per_commitment_point ( INITIAL_COMMITMENT_NUMBER - msg. next_remote_commitment_number + 1 , & self . secp_ctx ) ;
4113
+ let ecdsa_signer = match & self . holder_signer { ChannelSignerType :: Ecdsa ( signer) => { signer} } ;
4114
+ let expected_point = ecdsa_signer. get_per_commitment_point ( INITIAL_COMMITMENT_NUMBER - msg. next_remote_commitment_number + 1 , & self . secp_ctx ) ;
4100
4115
let given_secret = SecretKey :: from_slice ( & msg. your_last_per_commitment_secret )
4101
4116
. map_err ( |_| ChannelError :: Close ( "Peer sent a garbage channel_reestablish with unparseable secret key" . to_owned ( ) ) ) ?;
4102
4117
if expected_point != PublicKey :: from_secret_key ( & self . secp_ctx , & given_secret) {
@@ -4160,7 +4175,8 @@ impl<Signer: WriteableEcdsaChannelSigner> Channel<Signer> {
4160
4175
}
4161
4176
4162
4177
// We have OurChannelReady set!
4163
- let next_per_commitment_point = self . holder_signer . get_per_commitment_point ( self . cur_holder_commitment_transaction_number , & self . secp_ctx ) ;
4178
+ let ecdsa_signer = match & self . holder_signer { ChannelSignerType :: Ecdsa ( signer) => { signer} } ;
4179
+ let next_per_commitment_point = ecdsa_signer. get_per_commitment_point ( self . cur_holder_commitment_transaction_number , & self . secp_ctx ) ;
4164
4180
return Ok ( ReestablishResponses {
4165
4181
channel_ready : Some ( msgs:: ChannelReady {
4166
4182
channel_id : self . channel_id ( ) ,
@@ -4196,7 +4212,8 @@ impl<Signer: WriteableEcdsaChannelSigner> Channel<Signer> {
4196
4212
4197
4213
let channel_ready = if msg. next_local_commitment_number == 1 && INITIAL_COMMITMENT_NUMBER - self . cur_holder_commitment_transaction_number == 1 {
4198
4214
// We should never have to worry about MonitorUpdateInProgress resending ChannelReady
4199
- let next_per_commitment_point = self . holder_signer . get_per_commitment_point ( self . cur_holder_commitment_transaction_number , & self . secp_ctx ) ;
4215
+ let ecdsa_signer = match & self . holder_signer { ChannelSignerType :: Ecdsa ( signer) => { signer} } ;
4216
+ let next_per_commitment_point = ecdsa_signer. get_per_commitment_point ( self . cur_holder_commitment_transaction_number , & self . secp_ctx ) ;
4200
4217
Some ( msgs:: ChannelReady {
4201
4218
channel_id : self . channel_id ( ) ,
4202
4219
next_per_commitment_point,
@@ -4345,7 +4362,8 @@ impl<Signer: WriteableEcdsaChannelSigner> Channel<Signer> {
4345
4362
log_trace ! ( logger, "Proposing initial closing_signed for our counterparty with a fee range of {}-{} sat (with initial proposal {} sats)" ,
4346
4363
our_min_fee, our_max_fee, total_fee_satoshis) ;
4347
4364
4348
- let sig = self . holder_signer
4365
+ let ecdsa_signer = match & self . holder_signer { ChannelSignerType :: Ecdsa ( signer) => { signer} } ;
4366
+ let sig = ecdsa_signer
4349
4367
. sign_closing_transaction ( & closing_tx, & self . secp_ctx )
4350
4368
. map_err ( |( ) | ChannelError :: Close ( "Failed to get signature for closing transaction." . to_owned ( ) ) ) ?;
4351
4369
@@ -4547,6 +4565,8 @@ impl<Signer: WriteableEcdsaChannelSigner> Channel<Signer> {
4547
4565
4548
4566
let ( our_min_fee, our_max_fee) = self . calculate_closing_fee_limits ( fee_estimator) ;
4549
4567
4568
+ let ecdsa_signer = match & self . holder_signer { ChannelSignerType :: Ecdsa ( signer) => { signer} } ;
4569
+
4550
4570
macro_rules! propose_fee {
4551
4571
( $new_fee: expr) => {
4552
4572
let ( closing_tx, used_fee) = if $new_fee == msg. fee_satoshis {
@@ -4555,7 +4575,7 @@ impl<Signer: WriteableEcdsaChannelSigner> Channel<Signer> {
4555
4575
self . build_closing_transaction( $new_fee, false )
4556
4576
} ;
4557
4577
4558
- let sig = self . holder_signer
4578
+ let sig = ecdsa_signer
4559
4579
. sign_closing_transaction( & closing_tx, & self . secp_ctx)
4560
4580
. map_err( |_| ChannelError :: Close ( "External signer refused to sign closing transaction" . to_owned( ) ) ) ?;
4561
4581
@@ -4927,7 +4947,7 @@ impl<Signer: WriteableEcdsaChannelSigner> Channel<Signer> {
4927
4947
4928
4948
#[ cfg( test) ]
4929
4949
pub fn get_signer ( & self ) -> & Signer {
4930
- & self . holder_signer
4950
+ match & self . holder_signer { ChannelSignerType :: Ecdsa ( signer ) => { signer } }
4931
4951
}
4932
4952
4933
4953
#[ cfg( test) ]
@@ -5169,8 +5189,9 @@ impl<Signer: WriteableEcdsaChannelSigner> Channel<Signer> {
5169
5189
if need_commitment_update {
5170
5190
if self . channel_state & ( ChannelState :: MonitorUpdateInProgress as u32 ) == 0 {
5171
5191
if self . channel_state & ( ChannelState :: PeerDisconnected as u32 ) == 0 {
5192
+ let ecdsa_signer = match & self . holder_signer { ChannelSignerType :: Ecdsa ( signer) => { signer} } ;
5172
5193
let next_per_commitment_point =
5173
- self . holder_signer . get_per_commitment_point ( INITIAL_COMMITMENT_NUMBER - 1 , & self . secp_ctx ) ;
5194
+ ecdsa_signer . get_per_commitment_point ( INITIAL_COMMITMENT_NUMBER - 1 , & self . secp_ctx ) ;
5174
5195
return Some ( msgs:: ChannelReady {
5175
5196
channel_id : self . channel_id ,
5176
5197
next_per_commitment_point,
@@ -5394,7 +5415,8 @@ impl<Signer: WriteableEcdsaChannelSigner> Channel<Signer> {
5394
5415
panic ! ( "Tried to send an open_channel for a channel that has already advanced" ) ;
5395
5416
}
5396
5417
5397
- let first_per_commitment_point = self . holder_signer . get_per_commitment_point ( self . cur_holder_commitment_transaction_number , & self . secp_ctx ) ;
5418
+ let ecdsa_signer = match & self . holder_signer { ChannelSignerType :: Ecdsa ( signer) => { signer} } ;
5419
+ let first_per_commitment_point = ecdsa_signer. get_per_commitment_point ( self . cur_holder_commitment_transaction_number , & self . secp_ctx ) ;
5398
5420
let keys = self . get_holder_pubkeys ( ) ;
5399
5421
5400
5422
msgs:: OpenChannel {
@@ -5464,7 +5486,8 @@ impl<Signer: WriteableEcdsaChannelSigner> Channel<Signer> {
5464
5486
///
5465
5487
/// [`msgs::AcceptChannel`]: crate::ln::msgs::AcceptChannel
5466
5488
fn generate_accept_channel_message ( & self ) -> msgs:: AcceptChannel {
5467
- let first_per_commitment_point = self . holder_signer . get_per_commitment_point ( self . cur_holder_commitment_transaction_number , & self . secp_ctx ) ;
5489
+ let ecdsa_signer = match & self . holder_signer { ChannelSignerType :: Ecdsa ( signer) => { signer} } ;
5490
+ let first_per_commitment_point = ecdsa_signer. get_per_commitment_point ( self . cur_holder_commitment_transaction_number , & self . secp_ctx ) ;
5468
5491
let keys = self . get_holder_pubkeys ( ) ;
5469
5492
5470
5493
msgs:: AcceptChannel {
@@ -5505,7 +5528,8 @@ impl<Signer: WriteableEcdsaChannelSigner> Channel<Signer> {
5505
5528
fn get_outbound_funding_created_signature < L : Deref > ( & mut self , logger : & L ) -> Result < Signature , ChannelError > where L :: Target : Logger {
5506
5529
let counterparty_keys = self . build_remote_transaction_keys ( ) ;
5507
5530
let counterparty_initial_commitment_tx = self . build_commitment_transaction ( self . cur_counterparty_commitment_transaction_number , & counterparty_keys, false , false , logger) . tx ;
5508
- Ok ( self . holder_signer . sign_counterparty_commitment ( & counterparty_initial_commitment_tx, Vec :: new ( ) , & self . secp_ctx )
5531
+ let ecdsa_signer = match & self . holder_signer { ChannelSignerType :: Ecdsa ( signer) => { signer} } ;
5532
+ Ok ( ecdsa_signer. sign_counterparty_commitment ( & counterparty_initial_commitment_tx, Vec :: new ( ) , & self . secp_ctx )
5509
5533
. map_err ( |_| ChannelError :: Close ( "Failed to get signatures for new commitment_signed" . to_owned ( ) ) ) ?. 0 )
5510
5534
}
5511
5535
@@ -5530,7 +5554,8 @@ impl<Signer: WriteableEcdsaChannelSigner> Channel<Signer> {
5530
5554
}
5531
5555
5532
5556
self . channel_transaction_parameters . funding_outpoint = Some ( funding_txo) ;
5533
- self . holder_signer . provide_channel_parameters ( & self . channel_transaction_parameters ) ;
5557
+ let ecdsa_signer = match & mut self . holder_signer { ChannelSignerType :: Ecdsa ( signer) => { signer} } ;
5558
+ ecdsa_signer. provide_channel_parameters ( & self . channel_transaction_parameters ) ;
5534
5559
5535
5560
let signature = match self . get_outbound_funding_created_signature ( logger) {
5536
5561
Ok ( res) => res,
@@ -5639,7 +5664,8 @@ impl<Signer: WriteableEcdsaChannelSigner> Channel<Signer> {
5639
5664
} ,
5640
5665
Ok ( v) => v
5641
5666
} ;
5642
- let our_bitcoin_sig = match self . holder_signer . sign_channel_announcement_with_funding_key ( & announcement, & self . secp_ctx ) {
5667
+ let ecdsa_signer = match & self . holder_signer { ChannelSignerType :: Ecdsa ( signer) => { signer} } ;
5668
+ let our_bitcoin_sig = match ecdsa_signer. sign_channel_announcement_with_funding_key ( & announcement, & self . secp_ctx ) {
5643
5669
Err ( _) => {
5644
5670
log_error ! ( logger, "Signer rejected channel_announcement signing. Channel will not be announced!" ) ;
5645
5671
return None ;
@@ -5668,7 +5694,8 @@ impl<Signer: WriteableEcdsaChannelSigner> Channel<Signer> {
5668
5694
5669
5695
let our_node_sig = node_signer. sign_gossip_message ( msgs:: UnsignedGossipMessage :: ChannelAnnouncement ( & announcement) )
5670
5696
. map_err ( |_| ChannelError :: Ignore ( "Failed to generate node signature for channel_announcement" . to_owned ( ) ) ) ?;
5671
- let our_bitcoin_sig = self . holder_signer . sign_channel_announcement_with_funding_key ( & announcement, & self . secp_ctx )
5697
+ let ecdsa_signer = match & self . holder_signer { ChannelSignerType :: Ecdsa ( signer) => { signer} } ;
5698
+ let our_bitcoin_sig = ecdsa_signer. sign_channel_announcement_with_funding_key ( & announcement, & self . secp_ctx )
5672
5699
. map_err ( |_| ChannelError :: Ignore ( "Signer rejected channel_announcement" . to_owned ( ) ) ) ?;
5673
5700
Ok ( msgs:: ChannelAnnouncement {
5674
5701
node_signature_1 : if were_node_one { our_node_sig } else { their_node_sig } ,
@@ -6048,7 +6075,8 @@ impl<Signer: WriteableEcdsaChannelSigner> Channel<Signer> {
6048
6075
htlcs. push ( htlc) ;
6049
6076
}
6050
6077
6051
- let res = self . holder_signer . sign_counterparty_commitment ( & commitment_stats. tx , commitment_stats. preimages , & self . secp_ctx )
6078
+ let ecdsa_signer = match & self . holder_signer { ChannelSignerType :: Ecdsa ( signer) => { signer} } ;
6079
+ let res = ecdsa_signer. sign_counterparty_commitment ( & commitment_stats. tx , commitment_stats. preimages , & self . secp_ctx )
6052
6080
. map_err ( |_| ChannelError :: Close ( "Failed to get signatures for new commitment_signed" . to_owned ( ) ) ) ?;
6053
6081
signature = res. 0 ;
6054
6082
htlc_signatures = res. 1 ;
@@ -6360,7 +6388,8 @@ impl<Signer: WriteableEcdsaChannelSigner> Writeable for Channel<Signer> {
6360
6388
self . latest_monitor_update_id . write ( writer) ?;
6361
6389
6362
6390
let mut key_data = VecWriter ( Vec :: new ( ) ) ;
6363
- self . holder_signer . write ( & mut key_data) ?;
6391
+ let ecdsa_signer = match & self . holder_signer { ChannelSignerType :: Ecdsa ( signer) => { signer} } ;
6392
+ ecdsa_signer. write ( & mut key_data) ?;
6364
6393
assert ! ( key_data. 0 . len( ) < core:: usize :: MAX ) ;
6365
6394
assert ! ( key_data. 0 . len( ) < core:: u32 :: MAX as usize ) ;
6366
6395
( key_data. 0 . len ( ) as u32 ) . write ( writer) ?;
@@ -7005,7 +7034,7 @@ impl<'a, 'b, 'c, ES: Deref, SP: Deref> ReadableArgs<(&'a ES, &'b SP, u32, &'c Ch
7005
7034
7006
7035
latest_monitor_update_id,
7007
7036
7008
- holder_signer,
7037
+ holder_signer : ChannelSignerType :: Ecdsa ( holder_signer ) ,
7009
7038
shutdown_scriptpubkey,
7010
7039
destination_script,
7011
7040
0 commit comments