@@ -73,6 +73,16 @@ impl DelayedPaymentOutputDescriptor {
73
73
pub const MAX_WITNESS_LENGTH : usize = 1 + 73 + 1 + chan_utils:: REVOKEABLE_REDEEMSCRIPT_MAX_LENGTH + 1 ;
74
74
}
75
75
76
+ impl_writeable_tlv_based ! ( DelayedPaymentOutputDescriptor , {
77
+ ( 0 , outpoint) ,
78
+ ( 2 , per_commitment_point) ,
79
+ ( 4 , to_self_delay) ,
80
+ ( 6 , output) ,
81
+ ( 8 , revocation_pubkey) ,
82
+ ( 10 , channel_keys_id) ,
83
+ ( 12 , channel_value_satoshis) ,
84
+ } , { } , { } ) ;
85
+
76
86
/// Information about a spendable output to our "payment key". See
77
87
/// SpendableOutputDescriptor::StaticPaymentOutput for more details on how to spend this.
78
88
#[ derive( Clone , Debug , PartialEq ) ]
@@ -94,6 +104,12 @@ impl StaticPaymentOutputDescriptor {
94
104
// redeemscript push length.
95
105
pub const MAX_WITNESS_LENGTH : usize = 1 + 73 + 34 ;
96
106
}
107
+ impl_writeable_tlv_based ! ( StaticPaymentOutputDescriptor , {
108
+ ( 0 , outpoint) ,
109
+ ( 2 , output) ,
110
+ ( 4 , channel_keys_id) ,
111
+ ( 6 , channel_value_satoshis) ,
112
+ } , { } , { } ) ;
97
113
98
114
/// When on-chain outputs are created by rust-lightning (which our counterparty is not able to
99
115
/// claim at any point in the future) an event is generated which you must track and be able to
@@ -152,62 +168,15 @@ pub enum SpendableOutputDescriptor {
152
168
StaticPaymentOutput ( StaticPaymentOutputDescriptor ) ,
153
169
}
154
170
155
- impl Writeable for SpendableOutputDescriptor {
156
- fn write < W : Writer > ( & self , writer : & mut W ) -> Result < ( ) , :: std:: io:: Error > {
157
- match self {
158
- & SpendableOutputDescriptor :: StaticOutput { ref outpoint, ref output } => {
159
- 0u8 . write ( writer) ?;
160
- outpoint. write ( writer) ?;
161
- output. write ( writer) ?;
162
- } ,
163
- & SpendableOutputDescriptor :: DelayedPaymentOutput ( ref descriptor) => {
164
- 1u8 . write ( writer) ?;
165
- descriptor. outpoint . write ( writer) ?;
166
- descriptor. per_commitment_point . write ( writer) ?;
167
- descriptor. to_self_delay . write ( writer) ?;
168
- descriptor. output . write ( writer) ?;
169
- descriptor. revocation_pubkey . write ( writer) ?;
170
- descriptor. channel_keys_id . write ( writer) ?;
171
- descriptor. channel_value_satoshis . write ( writer) ?;
172
- } ,
173
- & SpendableOutputDescriptor :: StaticPaymentOutput ( ref descriptor) => {
174
- 2u8 . write ( writer) ?;
175
- descriptor. outpoint . write ( writer) ?;
176
- descriptor. output . write ( writer) ?;
177
- descriptor. channel_keys_id . write ( writer) ?;
178
- descriptor. channel_value_satoshis . write ( writer) ?;
179
- } ,
180
- }
181
- Ok ( ( ) )
182
- }
183
- }
184
-
185
- impl Readable for SpendableOutputDescriptor {
186
- fn read < R : :: std:: io:: Read > ( reader : & mut R ) -> Result < Self , DecodeError > {
187
- match Readable :: read ( reader) ? {
188
- 0u8 => Ok ( SpendableOutputDescriptor :: StaticOutput {
189
- outpoint : Readable :: read ( reader) ?,
190
- output : Readable :: read ( reader) ?,
191
- } ) ,
192
- 1u8 => Ok ( SpendableOutputDescriptor :: DelayedPaymentOutput ( DelayedPaymentOutputDescriptor {
193
- outpoint : Readable :: read ( reader) ?,
194
- per_commitment_point : Readable :: read ( reader) ?,
195
- to_self_delay : Readable :: read ( reader) ?,
196
- output : Readable :: read ( reader) ?,
197
- revocation_pubkey : Readable :: read ( reader) ?,
198
- channel_keys_id : Readable :: read ( reader) ?,
199
- channel_value_satoshis : Readable :: read ( reader) ?,
200
- } ) ) ,
201
- 2u8 => Ok ( SpendableOutputDescriptor :: StaticPaymentOutput ( StaticPaymentOutputDescriptor {
202
- outpoint : Readable :: read ( reader) ?,
203
- output : Readable :: read ( reader) ?,
204
- channel_keys_id : Readable :: read ( reader) ?,
205
- channel_value_satoshis : Readable :: read ( reader) ?,
206
- } ) ) ,
207
- _ => Err ( DecodeError :: InvalidValue ) ,
208
- }
209
- }
210
- }
171
+ impl_writeable_tlv_based_enum ! ( SpendableOutputDescriptor ,
172
+ ( 0 , StaticOutput ) => {
173
+ ( 0 , outpoint) ,
174
+ ( 2 , output) ,
175
+ } , { } , { } ,
176
+ ;
177
+ ( 1 , DelayedPaymentOutput ) ,
178
+ ( 2 , StaticPaymentOutput ) ,
179
+ ) ;
211
180
212
181
/// A trait to sign lightning channel transactions as described in BOLT 3.
213
182
///
0 commit comments