X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=lightning%2Fsrc%2Fln%2Fchan_utils.rs;h=81b0df09607250d2a4a6c5c634c6d9fe2094a3e8;hb=df829a85263e0bc675ca696c0f6ff0a49d89e623;hp=750ee30db14d5469d685c6df54cf79d01416dd13;hpb=f30694bd8c39a967848a84752e3b7d8d520cd0b1;p=rust-lightning diff --git a/lightning/src/ln/chan_utils.rs b/lightning/src/ln/chan_utils.rs index 750ee30d..81b0df09 100644 --- a/lightning/src/ln/chan_utils.rs +++ b/lightning/src/ln/chan_utils.rs @@ -179,6 +179,7 @@ impl Writeable for CounterpartyCommitmentSecrets { writer.write_all(secret)?; writer.write_all(&byte_utils::be64_to_array(*idx))?; } + write_tlv_fields!(writer, {}, {}); Ok(()) } } @@ -189,7 +190,7 @@ impl Readable for CounterpartyCommitmentSecrets { *secret = Readable::read(reader)?; *idx = Readable::read(reader)?; } - + read_tlv_fields!(reader, {}, {}); Ok(Self { old_secrets }) } } @@ -323,8 +324,13 @@ pub struct TxCreationKeys { pub broadcaster_delayed_payment_key: PublicKey, } -impl_writeable!(TxCreationKeys, 33*5, - { per_commitment_point, revocation_key, broadcaster_htlc_key, countersignatory_htlc_key, broadcaster_delayed_payment_key }); +impl_writeable_tlv_based!(TxCreationKeys, { + (0, per_commitment_point), + (2, revocation_key), + (4, broadcaster_htlc_key), + (6, countersignatory_htlc_key), + (8, broadcaster_delayed_payment_key), +}, {}, {}); /// One counterparty's public keys which do not change over the life of a channel. #[derive(Clone, PartialEq)] @@ -350,14 +356,13 @@ pub struct ChannelPublicKeys { pub htlc_basepoint: PublicKey, } -impl_writeable!(ChannelPublicKeys, 33*5, { - funding_pubkey, - revocation_basepoint, - payment_point, - delayed_payment_basepoint, - htlc_basepoint -}); - +impl_writeable_tlv_based!(ChannelPublicKeys, { + (0, funding_pubkey), + (2, revocation_basepoint), + (4, payment_point), + (6, delayed_payment_basepoint), + (8, htlc_basepoint), +}, {}, {}); impl TxCreationKeys { /// Create per-state keys from channel base points and the per-commitment point. @@ -430,16 +435,14 @@ pub struct HTLCOutputInCommitment { pub transaction_output_index: Option, } -impl_writeable_len_match!(HTLCOutputInCommitment, { - { HTLCOutputInCommitment { transaction_output_index: None, .. }, HTLC_OUTPUT_IN_COMMITMENT_SIZE - 4 }, - { _, HTLC_OUTPUT_IN_COMMITMENT_SIZE } - }, { - offered, - amount_msat, - cltv_expiry, - payment_hash, - transaction_output_index -}); +impl_writeable_tlv_based!(HTLCOutputInCommitment, { + (0, offered), + (2, amount_msat), + (4, cltv_expiry), + (6, payment_hash), +}, { + (8, transaction_output_index) +}, {}); #[inline] pub(crate) fn get_htlc_redeemscript_with_explicit_keys(htlc: &HTLCOutputInCommitment, broadcaster_htlc_key: &PublicKey, countersignatory_htlc_key: &PublicKey, revocation_key: &PublicKey) -> Script { @@ -623,18 +626,19 @@ impl ChannelTransactionParameters { } } -impl_writeable!(CounterpartyChannelTransactionParameters, 0, { - pubkeys, - selected_contest_delay -}); +impl_writeable_tlv_based!(CounterpartyChannelTransactionParameters, { + (0, pubkeys), + (2, selected_contest_delay), +}, {}, {}); -impl_writeable!(ChannelTransactionParameters, 0, { - holder_pubkeys, - holder_selected_contest_delay, - is_outbound_from_holder, - counterparty_parameters, - funding_outpoint -}); +impl_writeable_tlv_based!(ChannelTransactionParameters, { + (0, holder_pubkeys), + (2, holder_selected_contest_delay), + (4, is_outbound_from_holder), +}, { + (6, counterparty_parameters), + (8, funding_outpoint), +}, {}); /// Static channel fields used to build transactions given per-commitment fields, organized by /// broadcaster/countersignatory. @@ -716,8 +720,12 @@ impl PartialEq for HolderCommitmentTransaction { } } -impl_writeable!(HolderCommitmentTransaction, 0, { - inner, counterparty_sig, counterparty_htlc_sigs, holder_sig_first +impl_writeable_tlv_based!(HolderCommitmentTransaction, { + (0, inner), + (2, counterparty_sig), + (4, holder_sig_first), +}, {}, { + (6, counterparty_htlc_sigs), }); impl HolderCommitmentTransaction { @@ -801,7 +809,10 @@ pub struct BuiltCommitmentTransaction { pub txid: Txid, } -impl_writeable!(BuiltCommitmentTransaction, 0, { transaction, txid }); +impl_writeable_tlv_based!(BuiltCommitmentTransaction, { + (0, transaction), + (2, txid) +}, {}, {}); impl BuiltCommitmentTransaction { /// Get the SIGHASH_ALL sighash value of the transaction. @@ -884,15 +895,15 @@ impl Readable for Vec { } } -impl_writeable!(CommitmentTransaction, 0, { - commitment_number, - to_broadcaster_value_sat, - to_countersignatory_value_sat, - feerate_per_kw, - htlcs, - keys, - built -}); +impl_writeable_tlv_based!(CommitmentTransaction, { + (0, commitment_number), + (2, to_broadcaster_value_sat), + (4, to_countersignatory_value_sat), + (6, feerate_per_kw), + (8, htlcs), + (10, keys), + (12, built), +}, {}, {}); impl CommitmentTransaction { /// Construct an object of the class while assigning transaction output indices to HTLCs.