mirror of
https://github.com/ElementsProject/lightning.git
synced 2025-03-03 10:46:58 +01:00
script: make "sig_and_empty" more generic, make htlc tx witness fns clearer.
For non-delayed HTLC success spends, we have a similar pattern ("<sig> <preimage> <wscript>") so a we want to use the same function. The other routines don't say "witness" in them, and should. Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
This commit is contained in:
parent
86ecc6a058
commit
6ef64cd52b
4 changed files with 43 additions and 40 deletions
|
@ -422,14 +422,15 @@ bool is_p2wpkh(const u8 *script)
|
|||
return true;
|
||||
}
|
||||
|
||||
u8 **bitcoin_witness_sig_and_empty(const tal_t *ctx,
|
||||
u8 **bitcoin_witness_sig_and_element(const tal_t *ctx,
|
||||
const secp256k1_ecdsa_signature *sig,
|
||||
const void *elem, size_t elemsize,
|
||||
const u8 *witnessscript)
|
||||
{
|
||||
u8 **witness = tal_arr(ctx, u8 *, 3);
|
||||
|
||||
witness[0] = stack_sig(witness, sig);
|
||||
witness[1] = NULL;
|
||||
witness[1] = tal_dup_arr(witness, u8, elem, elemsize, 0);
|
||||
witness[2] = tal_dup_arr(witness, u8,
|
||||
witnessscript, tal_count(witnessscript), 0);
|
||||
|
||||
|
@ -662,7 +663,7 @@ u8 *bitcoin_wscript_htlc_receive(const tal_t *ctx,
|
|||
*...
|
||||
* * `txin[0]` witness stack: `0 <remotesig> <localsig> <payment_preimage>` for HTLC-Success, `0 <remotesig> <localsig> 0` for HTLC-Timeout.
|
||||
*/
|
||||
u8 **bitcoin_htlc_offer_spend_timeout(const tal_t *ctx,
|
||||
u8 **bitcoin_witness_htlc_timeout_tx(const tal_t *ctx,
|
||||
const secp256k1_ecdsa_signature *localsig,
|
||||
const secp256k1_ecdsa_signature *remotesig,
|
||||
const u8 *wscript)
|
||||
|
@ -678,7 +679,7 @@ u8 **bitcoin_htlc_offer_spend_timeout(const tal_t *ctx,
|
|||
return witness;
|
||||
}
|
||||
|
||||
u8 **bitcoin_htlc_receive_spend_preimage(const tal_t *ctx,
|
||||
u8 **bitcoin_witness_htlc_success_tx(const tal_t *ctx,
|
||||
const secp256k1_ecdsa_signature *localsig,
|
||||
const secp256k1_ecdsa_signature *remotesig,
|
||||
const struct preimage *preimage,
|
||||
|
@ -694,7 +695,6 @@ u8 **bitcoin_htlc_receive_spend_preimage(const tal_t *ctx,
|
|||
|
||||
return witness;
|
||||
}
|
||||
|
||||
u8 *bitcoin_wscript_htlc_tx(const tal_t *ctx,
|
||||
u16 to_self_delay,
|
||||
const struct pubkey *revocation_pubkey,
|
||||
|
|
|
@ -66,9 +66,10 @@ u8 **bitcoin_witness_p2wpkh(const tal_t *ctx,
|
|||
const secp256k1_ecdsa_signature *sig,
|
||||
const struct pubkey *key);
|
||||
|
||||
/* Create a witness which contains sig, an empty entry, and the witnessscript */
|
||||
u8 **bitcoin_witness_sig_and_empty(const tal_t *ctx,
|
||||
/* Create a witness which contains sig, another entry, and the witnessscript */
|
||||
u8 **bitcoin_witness_sig_and_element(const tal_t *ctx,
|
||||
const secp256k1_ecdsa_signature *sig,
|
||||
const void *elem, size_t elemsize,
|
||||
const u8 *witnessscript);
|
||||
|
||||
/* BOLT #3 to-local output */
|
||||
|
@ -86,7 +87,7 @@ u8 *bitcoin_wscript_htlc_offer(const tal_t *ctx,
|
|||
const struct pubkey *remotekey,
|
||||
const struct sha256 *payment_hash,
|
||||
const struct pubkey *revocationkey);
|
||||
u8 **bitcoin_htlc_offer_spend_timeout(const tal_t *ctx,
|
||||
u8 **bitcoin_witness_htlc_timeout_tx(const tal_t *ctx,
|
||||
const secp256k1_ecdsa_signature *localsig,
|
||||
const secp256k1_ecdsa_signature *remotesig,
|
||||
const u8 *wscript);
|
||||
|
@ -96,7 +97,7 @@ u8 *bitcoin_wscript_htlc_receive(const tal_t *ctx,
|
|||
const struct pubkey *remotekey,
|
||||
const struct sha256 *payment_hash,
|
||||
const struct pubkey *revocationkey);
|
||||
u8 **bitcoin_htlc_receive_spend_preimage(const tal_t *ctx,
|
||||
u8 **bitcoin_witness_htlc_success_tx(const tal_t *ctx,
|
||||
const secp256k1_ecdsa_signature *localsig,
|
||||
const secp256k1_ecdsa_signature *remotesig,
|
||||
const struct preimage *preimage,
|
||||
|
|
|
@ -109,7 +109,7 @@ void htlc_success_tx_add_witness(struct bitcoin_tx *htlc_success,
|
|||
&hash, revocationkey);
|
||||
|
||||
htlc_success->input[0].witness
|
||||
= bitcoin_htlc_receive_spend_preimage(htlc_success->input,
|
||||
= bitcoin_witness_htlc_success_tx(htlc_success->input,
|
||||
localsig, remotesig,
|
||||
payment_preimage,
|
||||
wscript);
|
||||
|
@ -150,7 +150,7 @@ void htlc_timeout_tx_add_witness(struct bitcoin_tx *htlc_timeout,
|
|||
payment_hash, revocationkey);
|
||||
|
||||
htlc_timeout->input[0].witness
|
||||
= bitcoin_htlc_offer_spend_timeout(htlc_timeout->input,
|
||||
= bitcoin_witness_htlc_timeout_tx(htlc_timeout->input,
|
||||
localsig, remotesig,
|
||||
wscript);
|
||||
tal_free(wscript);
|
||||
|
|
|
@ -659,8 +659,10 @@ static struct bitcoin_tx *tx_to_us(const tal_t *ctx,
|
|||
tx->output[0].amount -= fee;
|
||||
|
||||
sign_tx_input(tx, 0, NULL, wscript, privkey, pubkey, &sig);
|
||||
tx->input[0].witness = bitcoin_witness_sig_and_empty(tx->input,
|
||||
&sig, wscript);
|
||||
tx->input[0].witness = bitcoin_witness_sig_and_element(tx->input,
|
||||
&sig,
|
||||
NULL, 0,
|
||||
wscript);
|
||||
return tx;
|
||||
}
|
||||
|
||||
|
@ -711,7 +713,7 @@ static void resolve_our_htlc_ourcommit(struct tracked_output *out,
|
|||
&keyset->self_payment_key, &localsig);
|
||||
|
||||
tx->input[0].witness
|
||||
= bitcoin_htlc_offer_spend_timeout(tx->input,
|
||||
= bitcoin_witness_htlc_timeout_tx(tx->input,
|
||||
&localsig,
|
||||
remotesig,
|
||||
wscript);
|
||||
|
|
Loading…
Add table
Reference in a new issue