mirror of
https://github.com/ElementsProject/lightning.git
synced 2025-02-22 06:41:44 +01:00
channel_tx: add the commitment sig and pubkey data to the commit tx
needs to be update elsewhere too!
This commit is contained in:
parent
971f615695
commit
891f61ad48
4 changed files with 47 additions and 18 deletions
|
@ -12,6 +12,7 @@
|
|||
*/
|
||||
#include <bitcoin/chainparams.h>
|
||||
#include <bitcoin/privkey.h>
|
||||
#include <bitcoin/psbt.h>
|
||||
#include <bitcoin/script.h>
|
||||
#include <ccan/array_size/array_size.h>
|
||||
#include <ccan/cast/cast.h>
|
||||
|
@ -1289,6 +1290,10 @@ static void handle_peer_commit_sig(struct peer *peer, const u8 *msg)
|
|||
&funding_wscript, peer->channel, &peer->next_local_per_commit,
|
||||
peer->next_index[LOCAL], LOCAL);
|
||||
|
||||
/* Set the commit_sig on the commitment tx psbt */
|
||||
psbt_input_set_partial_sig(txs[0]->psbt, 0,
|
||||
&peer->channel->funding_pubkey[REMOTE], &commit_sig);
|
||||
|
||||
if (!derive_simple_key(&peer->channel->basepoints[REMOTE].htlc,
|
||||
&peer->next_local_per_commit, &remote_htlckey))
|
||||
status_failed(STATUS_FAIL_INTERNAL_ERROR,
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
#include <assert.h>
|
||||
#include <bitcoin/chainparams.h>
|
||||
#include <bitcoin/preimage.h>
|
||||
#include <bitcoin/psbt.h>
|
||||
#include <bitcoin/script.h>
|
||||
#include <bitcoin/tx.h>
|
||||
#include <ccan/array_size/array_size.h>
|
||||
|
@ -311,6 +312,12 @@ struct bitcoin_tx **channel_txs(const tal_t *ctx,
|
|||
commitment_number ^ channel->commitment_number_obscurer,
|
||||
side);
|
||||
|
||||
/* Set the remote/local pubkeys on the commitment tx psbt */
|
||||
psbt_input_add_pubkey(txs[0]->psbt, 0,
|
||||
&channel->funding_pubkey[side]);
|
||||
psbt_input_add_pubkey(txs[0]->psbt, 0,
|
||||
&channel->funding_pubkey[!side]);
|
||||
|
||||
add_htlcs(&txs, *htlcmap, channel, &keyset, side);
|
||||
|
||||
tal_free(committed);
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
#include <assert.h>
|
||||
#include <bitcoin/chainparams.h>
|
||||
#include <bitcoin/psbt.h>
|
||||
#include <bitcoin/script.h>
|
||||
#include <ccan/array_size/array_size.h>
|
||||
#include <ccan/cast/cast.h>
|
||||
|
@ -76,6 +77,7 @@ struct bitcoin_tx *initial_channel_tx(const tal_t *ctx,
|
|||
char** err_reason)
|
||||
{
|
||||
struct keyset keyset;
|
||||
struct bitcoin_tx *init_tx;
|
||||
|
||||
/* This assumes no HTLCs! */
|
||||
assert(!channel->htlcs);
|
||||
|
@ -93,8 +95,7 @@ struct bitcoin_tx *initial_channel_tx(const tal_t *ctx,
|
|||
&channel->funding_pubkey[side],
|
||||
&channel->funding_pubkey[!side]);
|
||||
|
||||
return initial_commit_tx(ctx,
|
||||
&channel->funding_txid,
|
||||
init_tx = initial_commit_tx(ctx, &channel->funding_txid,
|
||||
channel->funding_txout,
|
||||
channel->funding,
|
||||
cast_const(u8 *, *wscript),
|
||||
|
@ -111,6 +112,15 @@ struct bitcoin_tx *initial_channel_tx(const tal_t *ctx,
|
|||
direct_outputs,
|
||||
side,
|
||||
err_reason);
|
||||
|
||||
if (init_tx) {
|
||||
psbt_input_add_pubkey(init_tx->psbt, 0,
|
||||
&channel->funding_pubkey[side]);
|
||||
psbt_input_add_pubkey(init_tx->psbt, 0,
|
||||
&channel->funding_pubkey[!side]);
|
||||
}
|
||||
|
||||
return init_tx;
|
||||
}
|
||||
|
||||
u32 channel_feerate(const struct channel *channel, enum side side)
|
||||
|
|
|
@ -10,6 +10,7 @@
|
|||
#include <bitcoin/block.h>
|
||||
#include <bitcoin/chainparams.h>
|
||||
#include <bitcoin/privkey.h>
|
||||
#include <bitcoin/psbt.h>
|
||||
#include <bitcoin/script.h>
|
||||
#include <ccan/array_size/array_size.h>
|
||||
#include <ccan/breakpoint/breakpoint.h>
|
||||
|
@ -844,6 +845,12 @@ static bool funder_finalize_channel_setup(struct state *state,
|
|||
&state->their_funding_pubkey));
|
||||
}
|
||||
|
||||
/* We save their sig to our first commitment tx */
|
||||
psbt_input_set_partial_sig((*tx)->psbt, 0,
|
||||
&state->their_funding_pubkey,
|
||||
sig);
|
||||
|
||||
|
||||
peer_billboard(false, "Funding channel: opening negotiation succeeded");
|
||||
|
||||
return true;
|
||||
|
|
Loading…
Add table
Reference in a new issue