v2 opens: don't use p2sh inputs for v2 opens

They're not allowed!
This commit is contained in:
niftynei
2022-10-26 15:59:44 -05:00
committed by Rusty Russell
parent 35f12b4ca1
commit 278fa7a0a4
2 changed files with 11 additions and 7 deletions

View File

@@ -586,7 +586,7 @@ listfunds_success(struct command *cmd,
avail_prev_outs = tal_arr(info, struct bitcoin_outpoint *, 0); avail_prev_outs = tal_arr(info, struct bitcoin_outpoint *, 0);
json_for_each_arr(i, tok, outputs_tok) { json_for_each_arr(i, tok, outputs_tok) {
struct funder_utxo *utxo; struct funder_utxo *utxo;
bool is_reserved, is_p2sh; bool is_reserved;
struct bitcoin_outpoint *prev_out; struct bitcoin_outpoint *prev_out;
char *status; char *status;
const char *err; const char *err;
@@ -609,15 +609,13 @@ listfunds_success(struct command *cmd,
err, json_tok_full_len(result), err, json_tok_full_len(result),
json_tok_full(buf, result)); json_tok_full(buf, result));
/* is it a p2sh output? */ /* v2 opens don't support p2sh-wrapped inputs */
if (json_get_member(buf, tok, "redeemscript")) if (json_get_member(buf, tok, "redeemscript"))
is_p2sh = true; continue;
else
is_p2sh = false;
/* The estimated fee per utxo. */ /* The estimated fee per utxo. */
est_fee = amount_tx_fee(info->funding_feerate_perkw, est_fee = amount_tx_fee(info->funding_feerate_perkw,
bitcoin_tx_input_weight(is_p2sh, 110)); bitcoin_tx_input_weight(false, 110));
/* Did we use this utxo on a previous attempt? */ /* Did we use this utxo on a previous attempt? */
prev_out = previously_reserved(info->prev_outs, &utxo->out); prev_out = previously_reserved(info->prev_outs, &utxo->out);
@@ -697,12 +695,15 @@ listfunds_success(struct command *cmd,
committed_funds, committed_funds,
avail_utxos); avail_utxos);
json_add_bool(req->js, "reservedok", true); json_add_bool(req->js, "reservedok", true);
} else } else {
req = jsonrpc_request_start(cmd->plugin, cmd, req = jsonrpc_request_start(cmd->plugin, cmd,
"fundpsbt", "fundpsbt",
&psbt_funded, &psbt_funded,
&psbt_fund_failed, &psbt_fund_failed,
info); info);
json_add_bool(req->js, "nonwrapped", true);
}
json_add_string(req->js, "satoshi", json_add_string(req->js, "satoshi",
type_to_string(tmpctx, struct amount_sat, type_to_string(tmpctx, struct amount_sat,
&info->our_funding)); &info->our_funding));

View File

@@ -1404,6 +1404,9 @@ perform_fundpsbt(struct multifundchannel_command *mfc, u32 feerate)
&mfc_forward_error, &mfc_forward_error,
mfc); mfc);
json_add_u32(req->js, "minconf", mfc->minconf); json_add_u32(req->js, "minconf", mfc->minconf);
/* If there's any v2 opens, we can't use p2sh inputs */
json_add_bool(req->js, "nonwrapped",
dest_count(mfc, OPEN_CHANNEL) > 0);
} }
/* The entire point is to reserve the inputs. */ /* The entire point is to reserve the inputs. */