From: Antoine Riard Date: Tue, 26 May 2020 07:55:03 +0000 (+0200) Subject: Add get_anchor_script X-Git-Tag: v0.0.101~25^2~1 X-Git-Url: http://git.bitcoin.ninja/index.cgi?p=rust-lightning;a=commitdiff_plain;h=97c29cfd34a93e585dde3cd3efc6d6185b54fdc7 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. --- 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. ///