core-lightning/channeld/splice.c
Dusty Daemon 73ad8eaa31 splice: Allow splice_update to return signatures
This is needed to all multi-channel splices. When channeld can return the signatures to the user (based on signing order precedent), it now does from splice_update.

Additionally, we move sending of the initial psbt from splice_init down to splice_update. This is also necessary for correct psbt diff detection during multi-channel splices.

Changelog-Changed: splice_update can in some cases now return the remotely partiall signed psbt to the user, if so `signtures_secured` will be true.
2024-11-12 06:42:52 +10:30

39 lines
1012 B
C

#include "config.h"
#include <ccan/tal/tal.h>
#include <channeld/splice.h>
struct splice_state *splice_state_new(const tal_t *ctx)
{
struct splice_state *splice_state = tal(ctx, struct splice_state);
splice_state->count = 0;
splice_state->locked_ready[LOCAL] = false;
splice_state->locked_ready[REMOTE] = false;
splice_state->await_commitment_succcess = false;
splice_state->inflights = NULL;
return splice_state;
}
struct splicing *splicing_new(const tal_t *ctx)
{
struct splicing *splicing = tal(ctx, struct splicing);
splicing->opener_relative = 0;
splicing->accepter_relative = 0;
splicing->feerate_per_kw = 0;
splicing->force_feerate = false;
splicing->force_sign_first = false;
splicing->mode = false;
splicing->tx_add_input_count = 0;
splicing->tx_add_output_count = 0;
splicing->current_psbt = NULL;
splicing->received_tx_complete = false;
splicing->sent_tx_complete = false;
splicing->tx_sig_msg = NULL;
splicing->inws = NULL;
splicing->their_sig = NULL;
return splicing;
}