mirror of
https://github.com/ElementsProject/lightning.git
synced 2025-01-18 13:25:43 +01:00
elements: use normalization for elements fee output
This will update the fee output if it exists, rather than unilaterally adding a new one. Also, if the fee output already exists, we should make sure that it doesn't interfere with the outnums of the other outputs
This commit is contained in:
parent
eab7fcf8e5
commit
81a7a6742a
@ -1362,9 +1362,10 @@ perform_funding_tx_finalize(struct multifundchannel_command *mfc)
|
||||
/* Funding outpoint. */
|
||||
struct multifundchannel_destination *dest;
|
||||
dest = deck[outnum];
|
||||
(void) psbt_append_output(mfc->psbt,
|
||||
(void) psbt_insert_output(mfc->psbt,
|
||||
dest->funding_script,
|
||||
dest->amount);
|
||||
dest->amount,
|
||||
outnum);
|
||||
dest->outnum = outnum;
|
||||
tal_append_fmt(&content, "%s: %s",
|
||||
type_to_string(tmpctx, struct node_id,
|
||||
@ -1375,9 +1376,10 @@ perform_funding_tx_finalize(struct multifundchannel_command *mfc)
|
||||
} else {
|
||||
/* Change output. */
|
||||
assert(mfc->change_needed);
|
||||
(void) psbt_append_output(mfc->psbt,
|
||||
(void) psbt_insert_output(mfc->psbt,
|
||||
mfc->change_scriptpubkey,
|
||||
mfc->change_amount);
|
||||
mfc->change_amount,
|
||||
outnum);
|
||||
tal_append_fmt(&content, "change: %s",
|
||||
type_to_string(tmpctx,
|
||||
struct amount_sat,
|
||||
@ -1386,30 +1388,7 @@ perform_funding_tx_finalize(struct multifundchannel_command *mfc)
|
||||
}
|
||||
|
||||
/* Elements requires a fee output. */
|
||||
if (chainparams->is_elements) {
|
||||
struct amount_sat inputs = AMOUNT_SAT(0);
|
||||
struct amount_sat outputs = AMOUNT_SAT(0);
|
||||
struct amount_sat fees;
|
||||
for (size_t i = 0; i < mfc->psbt->num_inputs; ++i)
|
||||
if (!amount_sat_add(&inputs,
|
||||
inputs,
|
||||
psbt_input_get_amount(mfc->psbt,
|
||||
i)))
|
||||
plugin_err(mfc->cmd->plugin,
|
||||
"Overflow while adding inputs");
|
||||
for (size_t i = 0; i < mfc->psbt->num_outputs; ++i)
|
||||
if (!amount_sat_add(&outputs,
|
||||
outputs,
|
||||
psbt_output_get_amount(mfc->psbt,
|
||||
i)))
|
||||
plugin_err(mfc->cmd->plugin,
|
||||
"Overflow while adding outputs");
|
||||
if (!amount_sat_sub(&fees, inputs, outputs))
|
||||
fees = AMOUNT_SAT(0);
|
||||
/* If there is any fee at all, add the fee output. */
|
||||
if (!amount_sat_eq(fees, AMOUNT_SAT(0)))
|
||||
(void) psbt_append_output(mfc->psbt, NULL, fees);
|
||||
}
|
||||
psbt_elements_normalize_fees(mfc->psbt);
|
||||
|
||||
/* Generate the TXID. */
|
||||
mfc->txid = tal(mfc, struct bitcoin_txid);
|
||||
|
Loading…
Reference in New Issue
Block a user