diff --git a/common/wallet_tx.c b/common/wallet_tx.c index 4dfedc0fe..d7d1ec504 100644 --- a/common/wallet_tx.c +++ b/common/wallet_tx.c @@ -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); diff --git a/devtools/mkfunding.c b/devtools/mkfunding.c index 6a7064cab..9e14faf8e 100644 --- a/devtools/mkfunding.c +++ b/devtools/mkfunding.c @@ -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 */ diff --git a/wallet/wallet.c b/wallet/wallet.c index 345b302fd..dda68a17e 100644 --- a/wallet/wallet.c +++ b/wallet/wallet.c @@ -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;