funding tx: include segwit marker + flag in fee calculation

Noticed an off by one error when running tests for dual-funding;
we're not including the two 'header' segwit bytes in our weight
calculations.
This commit is contained in:
lisa neigut 2019-07-31 18:53:55 -05:00 committed by Rusty Russell
parent b0b6ddb66f
commit c7f3fa34b2
3 changed files with 7 additions and 1 deletions

View File

@ -184,7 +184,8 @@ struct command_result *wtx_from_utxos(struct wallet_tx *tx,
/* The transaction has `tal_count(tx.utxos)` inputs and one output */
/* (version + in count + out count + locktime) (index + value + script length) */
weight = 4 * (4 + 1 + 1 + 4) + 4 * (8 + 1 + out_len);
/* + segwit marker + flag */
weight = 4 * (4 + 1 + 1 + 4) + 4 * (8 + 1 + out_len) + 1 + 1;
for (size_t i = 0; i < tal_count(utxos); i++) {
if (!*utxos[i]->blockheight || *utxos[i]->blockheight > maxheight) {
tal_arr_remove(&utxos, i);

View File

@ -90,6 +90,8 @@ int main(int argc, char *argv[])
/* nVersion, input count, output count, nLocktime */
weight = 4 * (4 + 1 + 1 + 4);
/* Add segwit fields: marker + flag */
weight += 1 + 1;
/* Single output: Satoshis, script length, p2wsh. */
weight += 4 * (8 + 1 + BITCOIN_SCRIPTPUBKEY_P2WSH_LEN);
/* Single input: txid, index, scriptlen, nSequence */

View File

@ -289,6 +289,9 @@ static const struct utxo **wallet_select(const tal_t *ctx, struct wallet *w,
/* version, input count, output count, locktime */
weight = (4 + 1 + 1 + 4) * 4;
/* Add segwit fields: marker + flag */
weight += 1 + 1;
/* The main output: amount, len, scriptpubkey */
weight += (8 + 1 + outscriptlen) * 4;