Add get_anchor_script
authorAntoine Riard <ariard@student.42.fr>
Tue, 26 May 2020 07:55:03 +0000 (09:55 +0200)
committerDevrandom <c1.devrandom@niftybox.net>
Sat, 28 Aug 2021 09:09:42 +0000 (11:09 +0200)
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

index 4690d298aedee2a7f16b18adf09ffee8ac202c4e..982257b633673f05521d7788167059ebf60af0da 100644 (file)
@@ -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:
+/// <BIP 143 funding_signature>
+/// 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.
 ///