@@ -47,7 +47,7 @@ use chain::onchaintx::OnchainTxHandler;
47
47
use chain:: package:: { CounterpartyOfferedHTLCOutput , CounterpartyReceivedHTLCOutput , HolderFundingOutput , HolderHTLCOutput , PackageSolvingData , PackageTemplate , RevokedOutput , RevokedHTLCOutput } ;
48
48
use chain:: Filter ;
49
49
use util:: logger:: Logger ;
50
- use util:: ser:: { Readable , ReadableArgs , MaybeReadable , Writer , Writeable , U48 } ;
50
+ use util:: ser:: { Readable , ReadableArgs , MaybeReadable , Writer , Writeable , U48 , OptionDeserWrapper } ;
51
51
use util:: byte_utils;
52
52
use util:: events:: Event ;
53
53
@@ -90,22 +90,26 @@ pub const CLOSED_CHANNEL_UPDATE_ID: u64 = core::u64::MAX;
90
90
91
91
impl Writeable for ChannelMonitorUpdate {
92
92
fn write < W : Writer > ( & self , w : & mut W ) -> Result < ( ) , :: std:: io:: Error > {
93
+ write_ver_prefix ! ( w, SERIALIZATION_VERSION , MIN_SERIALIZATION_VERSION ) ;
93
94
self . update_id . write ( w) ?;
94
95
( self . updates . len ( ) as u64 ) . write ( w) ?;
95
96
for update_step in self . updates . iter ( ) {
96
97
update_step. write ( w) ?;
97
98
}
99
+ write_tlv_fields ! ( w, { } , { } ) ;
98
100
Ok ( ( ) )
99
101
}
100
102
}
101
103
impl Readable for ChannelMonitorUpdate {
102
104
fn read < R : :: std:: io:: Read > ( r : & mut R ) -> Result < Self , DecodeError > {
105
+ let _ver = read_ver_prefix ! ( r, SERIALIZATION_VERSION ) ;
103
106
let update_id: u64 = Readable :: read ( r) ?;
104
107
let len: u64 = Readable :: read ( r) ?;
105
108
let mut updates = Vec :: with_capacity ( cmp:: min ( len as usize , MAX_ALLOC_SIZE / :: core:: mem:: size_of :: < ChannelMonitorUpdateStep > ( ) ) ) ;
106
109
for _ in 0 ..len {
107
110
updates. push ( Readable :: read ( r) ?) ;
108
111
}
112
+ read_tlv_fields ! ( r, { } , { } ) ;
109
113
Ok ( Self { update_id, updates } )
110
114
}
111
115
}
@@ -293,9 +297,6 @@ struct CounterpartyCommitmentTransaction {
293
297
294
298
impl Writeable for CounterpartyCommitmentTransaction {
295
299
fn write < W : Writer > ( & self , w : & mut W ) -> Result < ( ) , :: std:: io:: Error > {
296
- self . counterparty_delayed_payment_base_key . write ( w) ?;
297
- self . counterparty_htlc_base_key . write ( w) ?;
298
- w. write_all ( & byte_utils:: be16_to_array ( self . on_counterparty_tx_csv ) ) ?;
299
300
w. write_all ( & byte_utils:: be64_to_array ( self . per_htlc . len ( ) as u64 ) ) ?;
300
301
for ( ref txid, ref htlcs) in self . per_htlc . iter ( ) {
301
302
w. write_all ( & txid[ ..] ) ?;
@@ -304,15 +305,17 @@ impl Writeable for CounterpartyCommitmentTransaction {
304
305
htlc. write ( w) ?;
305
306
}
306
307
}
308
+ write_tlv_fields ! ( w, {
309
+ ( 0 , self . counterparty_delayed_payment_base_key) ,
310
+ ( 2 , self . counterparty_htlc_base_key) ,
311
+ ( 4 , self . on_counterparty_tx_csv) ,
312
+ } , { } ) ;
307
313
Ok ( ( ) )
308
314
}
309
315
}
310
316
impl Readable for CounterpartyCommitmentTransaction {
311
317
fn read < R : :: std:: io:: Read > ( r : & mut R ) -> Result < Self , DecodeError > {
312
318
let counterparty_commitment_transaction = {
313
- let counterparty_delayed_payment_base_key = Readable :: read ( r) ?;
314
- let counterparty_htlc_base_key = Readable :: read ( r) ?;
315
- let on_counterparty_tx_csv: u16 = Readable :: read ( r) ?;
316
319
let per_htlc_len: u64 = Readable :: read ( r) ?;
317
320
let mut per_htlc = HashMap :: with_capacity ( cmp:: min ( per_htlc_len as usize , MAX_ALLOC_SIZE / 64 ) ) ;
318
321
for _ in 0 ..per_htlc_len {
@@ -327,9 +330,17 @@ impl Readable for CounterpartyCommitmentTransaction {
327
330
return Err ( DecodeError :: InvalidValue ) ;
328
331
}
329
332
}
333
+ let mut counterparty_delayed_payment_base_key = OptionDeserWrapper ( None ) ;
334
+ let mut counterparty_htlc_base_key = OptionDeserWrapper ( None ) ;
335
+ let mut on_counterparty_tx_csv: u16 = 0 ;
336
+ read_tlv_fields ! ( r, {
337
+ ( 0 , counterparty_delayed_payment_base_key) ,
338
+ ( 2 , counterparty_htlc_base_key) ,
339
+ ( 4 , on_counterparty_tx_csv) ,
340
+ } , { } ) ;
330
341
CounterpartyCommitmentTransaction {
331
- counterparty_delayed_payment_base_key,
332
- counterparty_htlc_base_key,
342
+ counterparty_delayed_payment_base_key : counterparty_delayed_payment_base_key . 0 . unwrap ( ) ,
343
+ counterparty_htlc_base_key : counterparty_htlc_base_key . 0 . unwrap ( ) ,
333
344
on_counterparty_tx_csv,
334
345
per_htlc,
335
346
}
@@ -627,6 +638,7 @@ impl<Signer: Sign> Writeable for ChannelMonitor<Signer> {
627
638
}
628
639
}
629
640
641
+ // These are also used for ChannelMonitorUpdate, above.
630
642
const SERIALIZATION_VERSION : u8 = 1 ;
631
643
const MIN_SERIALIZATION_VERSION : u8 = 1 ;
632
644
0 commit comments