From 97c29cfd34a93e585dde3cd3efc6d6185b54fdc7 Mon Sep 17 00:00:00 2001 From: Antoine Riard Date: Tue, 26 May 2020 09:55:03 +0200 Subject: [PATCH] Add get_anchor_script This is a script builder to generate anchor output ones. They can be satisfied either by a signature for the committed funding pubkey or anyone after CSV delay expiration. This is used at anchor output addition while generating commitment transaction. --- lightning/src/ln/chan_utils.rs | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/lightning/src/ln/chan_utils.rs b/lightning/src/ln/chan_utils.rs index 4690d298..982257b6 100644 --- a/lightning/src/ln/chan_utils.rs +++ b/lightning/src/ln/chan_utils.rs @@ -564,6 +564,23 @@ pub fn build_htlc_transaction(commitment_txid: &Txid, feerate_per_kw: u32, conte } } +/// Gets the witnessScript for an anchor output from the funding public key. +/// The witness in the spending input must be: +/// +/// After 16 blocks of confirmation, an alternative satisfying witness could be: +/// <> +#[inline] +pub(crate) fn get_anchor_redeemscript(funding_pubkey: &PublicKey) -> Script { + Builder::new().push_slice(&funding_pubkey.serialize()[..]) + .push_opcode(opcodes::all::OP_CHECKSIG) + .push_opcode(opcodes::all::OP_IFDUP) + .push_opcode(opcodes::all::OP_NOTIF) + .push_int(16) + .push_opcode(opcodes::all::OP_CSV) + .push_opcode(opcodes::all::OP_ENDIF) + .into_script() +} + /// Per-channel data used to build transactions in conjunction with the per-commitment data (CommitmentTransaction). /// The fields are organized by holder/counterparty. /// -- 2.30.2