mirror of
https://github.com/aljazceru/lightning.git
synced 2025-12-19 15:14:23 +01:00
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:
committed by
Rusty Russell
parent
b0b6ddb66f
commit
c7f3fa34b2
@@ -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 */
|
/* The transaction has `tal_count(tx.utxos)` inputs and one output */
|
||||||
/* (version + in count + out count + locktime) (index + value + script length) */
|
/* (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++) {
|
for (size_t i = 0; i < tal_count(utxos); i++) {
|
||||||
if (!*utxos[i]->blockheight || *utxos[i]->blockheight > maxheight) {
|
if (!*utxos[i]->blockheight || *utxos[i]->blockheight > maxheight) {
|
||||||
tal_arr_remove(&utxos, i);
|
tal_arr_remove(&utxos, i);
|
||||||
|
|||||||
@@ -90,6 +90,8 @@ int main(int argc, char *argv[])
|
|||||||
|
|
||||||
/* nVersion, input count, output count, nLocktime */
|
/* nVersion, input count, output count, nLocktime */
|
||||||
weight = 4 * (4 + 1 + 1 + 4);
|
weight = 4 * (4 + 1 + 1 + 4);
|
||||||
|
/* Add segwit fields: marker + flag */
|
||||||
|
weight += 1 + 1;
|
||||||
/* Single output: Satoshis, script length, p2wsh. */
|
/* Single output: Satoshis, script length, p2wsh. */
|
||||||
weight += 4 * (8 + 1 + BITCOIN_SCRIPTPUBKEY_P2WSH_LEN);
|
weight += 4 * (8 + 1 + BITCOIN_SCRIPTPUBKEY_P2WSH_LEN);
|
||||||
/* Single input: txid, index, scriptlen, nSequence */
|
/* Single input: txid, index, scriptlen, nSequence */
|
||||||
|
|||||||
@@ -289,6 +289,9 @@ static const struct utxo **wallet_select(const tal_t *ctx, struct wallet *w,
|
|||||||
/* version, input count, output count, locktime */
|
/* version, input count, output count, locktime */
|
||||||
weight = (4 + 1 + 1 + 4) * 4;
|
weight = (4 + 1 + 1 + 4) * 4;
|
||||||
|
|
||||||
|
/* Add segwit fields: marker + flag */
|
||||||
|
weight += 1 + 1;
|
||||||
|
|
||||||
/* The main output: amount, len, scriptpubkey */
|
/* The main output: amount, len, scriptpubkey */
|
||||||
weight += (8 + 1 + outscriptlen) * 4;
|
weight += (8 + 1 + outscriptlen) * 4;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user