Skip to content

Commit 520eee1

Browse files
committed
f use tlv stream
1 parent 8e46484 commit 520eee1

File tree

1 file changed

+33
-26
lines changed

1 file changed

+33
-26
lines changed

lightning/src/ln/interactivetxs.rs

+33-26
Original file line numberDiff line numberDiff line change
@@ -450,36 +450,43 @@ impl InteractiveTxSigningSession {
450450

451451
impl Writeable for InteractiveTxSigningSession {
452452
fn write<W: Writer>(&self, writer: &mut W) -> Result<(), io::Error> {
453-
self.unsigned_tx.holder_is_initiator.write(writer)?;
454-
self.unsigned_tx.holder_sends_tx_signatures_first.write(writer)?;
455-
self.unsigned_tx
456-
.inputs
457-
.iter()
458-
.map(|input| input.serial_id())
459-
.collect::<Vec<_>>()
460-
.write(writer)?;
461-
self.unsigned_tx
462-
.outputs
463-
.iter()
464-
.map(|output| output.serial_id)
465-
.collect::<Vec<_>>()
466-
.write(writer)?;
467-
self.holder_tx_signatures.write(writer)?;
468-
self.counterparty_sent_tx_signatures.write(writer)?;
469-
self.has_received_commitment_signed.write(writer)?;
453+
let input_serial_ids =
454+
self.unsigned_tx.inputs.iter().map(|input| input.serial_id()).collect::<Vec<_>>();
455+
let output_serial_ids =
456+
self.unsigned_tx.outputs.iter().map(|output| output.serial_id).collect::<Vec<_>>();
457+
458+
write_tlv_fields!(writer, {
459+
(0, self.unsigned_tx.holder_is_initiator, required),
460+
(2, self.unsigned_tx.holder_sends_tx_signatures_first, required),
461+
(4, input_serial_ids, required),
462+
(6, output_serial_ids, required),
463+
(8, self.holder_tx_signatures, required),
464+
(10, self.counterparty_sent_tx_signatures, required),
465+
(12, self.has_received_commitment_signed, required),
466+
});
470467
Ok(())
471468
}
472469
}
473470

474471
impl Readable for InteractiveTxSigningSession {
475472
fn read<R: io::Read>(reader: &mut R) -> Result<Self, DecodeError> {
476-
let holder_is_initiator: bool = Readable::read(reader)?;
477-
let holder_sends_tx_signatures_first: bool = Readable::read(reader)?;
478-
let inputs: Vec<SerialId> = Readable::read(reader)?;
479-
let outputs: Vec<SerialId> = Readable::read(reader)?;
480-
let holder_tx_signatures: Option<TxSignatures> = Readable::read(reader)?;
481-
let counterparty_sent_tx_signatures: bool = Readable::read(reader)?;
482-
let has_received_commitment_signed: bool = Readable::read(reader)?;
473+
let mut holder_is_initiator = false;
474+
let mut holder_sends_tx_signatures_first = false;
475+
let mut input_serial_ids: Vec<SerialId> = vec![];
476+
let mut output_serial_ids: Vec<SerialId> = vec![];
477+
let mut holder_tx_signatures: Option<TxSignatures> = None;
478+
let mut counterparty_sent_tx_signatures = false;
479+
let mut has_received_commitment_signed = false;
480+
481+
read_tlv_fields!(reader, {
482+
(0, holder_is_initiator, required),
483+
(2, holder_sends_tx_signatures_first, required),
484+
(4, input_serial_ids, required),
485+
(6, output_serial_ids, required),
486+
(8, holder_tx_signatures, required),
487+
(10, counterparty_sent_tx_signatures, required),
488+
(12, has_received_commitment_signed, required),
489+
});
483490

484491
// We use an empty dummy `TxOut` for all `TxOut`s as they will be populated with their real
485492
// values from `funding_transaction` after reading.
@@ -493,7 +500,7 @@ impl Readable for InteractiveTxSigningSession {
493500
unsigned_tx: ConstructedTransaction {
494501
holder_is_initiator,
495502
holder_sends_tx_signatures_first,
496-
inputs: inputs
503+
inputs: input_serial_ids
497504
.into_iter()
498505
.map(|serial_id| {
499506
if is_serial_id_valid_for_counterparty(holder_is_initiator, serial_id) {
@@ -514,7 +521,7 @@ impl Readable for InteractiveTxSigningSession {
514521
}
515522
})
516523
.collect(),
517-
outputs: outputs
524+
outputs: output_serial_ids
518525
.into_iter()
519526
.map(|serial_id| {
520527
let added_by = if is_serial_id_valid_for_counterparty(

0 commit comments

Comments
 (0)