<p>The 1sat/vB is indeed what you need <em>to enter the mempool</em>. The wallet's 5sat/vB increase is not always necessary or sufficient to meet Rule 4. Sounds like in this situation, the wallet's incremental feerate is much higher than necessary.</p>
<p>For &quot;why are there 2 different incremental feerates?&quot; Since Rule 4 is applied using the size of the <em>replacement</em> transaction, and we don't know that before we're finished building it, AFAIK the approach for the wallet is &quot;eh just shoot 5sat/vB higher and we should probably meet Rule 4.&quot; It's much easier to target a feerate than to target a fee that depends on the size of your resulting tx.</p>

CC BY-SA 4.0
2023-12-12T14:05:57.557Z
2023-12-12T14:13:44.650Z
2023-12-12T14:13:44.650Z
glozow
<p>The <a href="https://github.com/bitcoin/bitcoin/blob/36fabb01b16c70902c085187b0a6978c70c691c0/src/wallet/feebumper.cpp#L95C72-L95C72" rel="nofollow noreferrer"><code>bumpfee</code> command uses</a> a <a href="https://github.com/bitcoin/bitcoin/blob/36fabb01b16c70902c085187b0a6978c70c691c0/src/wallet/wallet.h#L124-L125" rel="nofollow noreferrer">fixed 5sat/vb</a> incremental feerate when creating replacement transactions. This is why it's saying the fee should be at least <code>846</code> sats for bumping your <code>141</code> vbytes transaction. It's accounting for the original <code>141</code> sats fee, plus <code>5 * 141</code> sats for the incremental fee.</p>
<p>As Kalle points out in the comments the documentation for <code>bumpfee</code> is misleading. It states:</p>
<blockquote>
<p>At a minimum, the new fee rate must be high enough to pay an additional new relay fee (incrementalfee returned by getnetworkinfo) to enter the node's mempool.</p>
</blockquote>
<p>But the feerate needs to be 5 times that for the command to succeed.</p>

CC BY-SA 4.0
2023-12-11T10:59:47.860Z
From the bumpfee doc: "At a minimum, the new fee rate must be high enough to pay an additional new relay fee (incrementalfee returned by getnetworkinfo) to enter the node's mempool.". This seems to contradict what you say, see the output of getnetworkinfo in my question.
Kalle Rosenbaum
CC BY-SA 4.0
2023-12-11T11:02:43.840Z
Yes, the doc is wrong. The incremental fee used by the wallet is (5 times) higher than the one used by the mempool.
Antoine Poinsot
CC BY-SA 4.0
2023-12-11T11:05:00.053Z
Gah! Thanks for the answer. Maybe update the answer to mention the incorrect documentation.
Kalle Rosenbaum
CC BY-SA 4.0
2023-12-11T11:06:34.950Z
Hmm i was editing my answer but since it says "at a minimum" it's only misleading not technically wrong right?
Antoine Poinsot
CC BY-SA 4.0
2023-12-11T11:16:34.680Z
Right, but very misleading. I'm filing an isuue on github anyway.
Kalle Rosenbaum
CC BY-SA 4.0
2023-12-11T11:19:25.397Z
https://github.com/bitcoin/bitcoin/issues/29053
Kalle Rosenbaum
CC BY-SA 4.0
2023-12-11T10:54:50.120Z
2023-12-11T11:07:53.397Z
2023-12-11T11:07:53.397Z
Antoine Poinsot
<p>On a regtest node, I'm trying to <code>bumpfee</code> a transaction that have 1 sat/vB fee. I want to bump the fee to 2 sat/vB, but the wallet complains, saying:</p>
<pre><code>error code: -8
error message:
Insufficient total fee 0.00000282, must be at least 0.00000846 (oldFee 0.00000141 + incrementalFee 0.00000705)
</code></pre>
<p>Why is this happening? The new fee pays exactly as much as is required to get this transaction into my mempool, right? I've tested on Bitcoin Core 25.0 and 26.0. The replacement transaction would be of the same size as the replaced transaction.</p>
<p>Here's the full context:</p>
<pre><code>$ ./bitcoin-cli -regtest -rpcwallet=wallet445305173 listunspent 0
[
  {
    &quot;txid&quot;: &quot;33a1ec4bc9eaee66dfb2ae81fadf17bcdf29110643c3775cd462e40148e8e5f1&quot;,
    &quot;vout&quot;: 0,
    &quot;address&quot;: &quot;bcrt1q0c46f338s4gnr34trjae8nu5ckhafj2l4l5nne&quot;,
    &quot;label&quot;: &quot;&quot;,
    &quot;scriptPubKey&quot;: &quot;00147e2ba4c627855131c6ab1cbb93cf94c5afd4c95f&quot;,
    &quot;amount&quot;: 1.00000000,
    &quot;confirmations&quot;: 1,
    &quot;spendable&quot;: true,
    &quot;solvable&quot;: true,
    &quot;desc&quot;: &quot;wpkh([c4093544/84h/1h/0h/0/0]02f32280b38e94d3028e2005a398941093c23794637734f2927a6d856e1d13ff8d)#82m64c6a&quot;,
    &quot;parent_descs&quot;: [
      &quot;wpkh(tpubD6NzVbkrYhZ4WMWdeCvc7DuoqY7wX6dsJEf8SZwrb7jqNUsgtHb3AkeDnYBcRRVNj6jm1RXT6J2R22X6TsKgnjJbQRWs4ZGRsbdjF65Zg9T/84h/1h/0h/0/*)#e3dfjhyk&quot;
    ],
    &quot;safe&quot;: true
  }
]

$ ./bitcoin-cli -regtest -rpcwallet=miner getnewaddress
bcrt1qk02jcchycn947u6e8a740yatrs8cnsxc7qa3zx

$ ./bitcoin-cli -regtest -rpcwallet=wallet445305173 sendtoaddress bcrt1qk02jcchycn947u6e8a740yatrs8cnsxc7qa3zx 0.001
9139f8b08b687b946dee4d24be88bb8cc90294629b206c01b04a34f8ce32b1ab

$ ./bitcoin-cli -regtest -rpcwallet=wallet445305173 gettransaction 9139f8b08b687b946dee4d24be88bb8cc90294629b206c01b04a34f8ce32b1ab
{
  &quot;amount&quot;: -0.00100000,
  &quot;fee&quot;: -0.00000141,
  &quot;confirmations&quot;: 0,
  &quot;trusted&quot;: true,
  &quot;txid&quot;: &quot;9139f8b08b687b946dee4d24be88bb8cc90294629b206c01b04a34f8ce32b1ab&quot;,
  &quot;wtxid&quot;: &quot;41190c475d2098d8a77863262bf117f657f9c07d6ccd1485bb5fc83de1624a72&quot;,
  &quot;walletconflicts&quot;: [
  ],
  &quot;time&quot;: 1702286813,
  &quot;timereceived&quot;: 1702286813,
  &quot;bip125-replaceable&quot;: &quot;yes&quot;,
  &quot;details&quot;: [
    {
      &quot;address&quot;: &quot;bcrt1qk02jcchycn947u6e8a740yatrs8cnsxc7qa3zx&quot;,
      &quot;category&quot;: &quot;send&quot;,
      &quot;amount&quot;: -0.00100000,
      &quot;vout&quot;: 1,
      &quot;fee&quot;: -0.00000141,
      &quot;abandoned&quot;: false
    }
  ],
  &quot;hex&quot;: &quot;02000000000101f1e5e84801e462d45c77c343061129dfbc17dffa81aeb2df66eeeac94beca1330000000000fdffffff02d359f40500000000160014b7dbc2759724bd6495735648cee0aa50e3b2f838a086010000000000160014b3d52c6
2e4c4cb5f73593f7d5793ab1c0f89c0d8024730440220652a34522866a176e6dd343fbf91ad8c002967b90a7496fdf0946c534e9695a90220140527500b84a9bd52684145dd622c49960d52f79b64fb98d93021dfc083d543012102f32280b38e94d302
8e2005a398941093c23794637734f2927a6d856e1d13ff8d59020000&quot;,
  &quot;lastprocessedblock&quot;: {
    &quot;hash&quot;: &quot;44d959c6cb011430d752f16692d464dff2bdabb8a9baa5cb7e65f6675f1e42cd&quot;,
    &quot;height&quot;: 601
  }
}

$ ./bitcoin-cli -regtest -rpcwallet=wallet445305173 bumpfee 9139f8b08b687b946dee4d24be88bb8cc90294629b206c01b04a34f8ce32b1ab '{&quot;fee_rate&quot;: 2}'
error code: -8
error message:
Insufficient total fee 0.00000282, must be at least 0.00000846 (oldFee 0.00000141 + incrementalFee 0.00000705)

$ ./bitcoin-cli -regtest -rpcwallet=wallet445305173 bumpfee 9139f8b08b687b946dee4d24be88bb8cc90294629b206c01b04a34f8ce32b1ab '{&quot;fee_rate&quot;: 5}'
error code: -8
error message:
Insufficient total fee 0.00000705, must be at least 0.00000846 (oldFee 0.00000141 + incrementalFee 0.00000705)

$ ./bitcoin-cli -regtest -rpcwallet=wallet445305173 bumpfee 9139f8b08b687b946dee4d24be88bb8cc90294629b206c01b04a34f8ce32b1ab '{&quot;fee_rate&quot;: 6}'
{
  &quot;txid&quot;: &quot;74bcd6e58e5b7f7b364d6ebd055c9e6212a88cafeb0bf035c26545bc3a21b1a5&quot;,
  &quot;origfee&quot;: 0.00000141,
  &quot;fee&quot;: 0.00000846,
  &quot;errors&quot;: [
  ]
}

$ ./bitcoin-cli -regtest getnetworkinfo
{
  &quot;version&quot;: 260000,
  &quot;subversion&quot;: &quot;/Satoshi:26.0.0/&quot;,
  ...
  &quot;relayfee&quot;: 0.00001000,
  &quot;incrementalfee&quot;: 0.00001000,
  ...
}
</code></pre>
<p><code>bumpfee</code> requires 6x original fee, instead of 2x original fee.</p>
<p>If I create a psbt of the same transaction with 2 sat/vB feerate it works fine. E.g. <code>createpsbt</code>, <code>walletprocesspsbt</code>, <code>finalizepsbt</code>, <code>sendrawtransaction</code>.</p>

CC BY-SA 4.0
2023-12-11T10:21:44.223Z
Maybe `bumpfee` is simply creating a `705` vbytes replacement transaction? But idk why, since `walletprocesspsbt` doesn't..
Antoine Poinsot
CC BY-SA 4.0
2023-12-11T10:24:12.317Z
I have only one UTXO in the wallet, so I don't see how it could create anything bigger than 141 vB. The output from my bumpfee command stated that I try to set a fee of 282 sats, which indicates that the new tx is in fact 141 vB.
Kalle Rosenbaum
CC BY-SA 4.0
2023-12-11T10:47:44.740Z
Hmm. In this case the `705` incremental fee indicates it's using 5sat/vb as incremental feerate.
Antoine Poinsot
CC BY-SA 4.0
2023-12-11T10:48:43.590Z
Which.. Is exactly the default used by the wallet! Mystery solved. Can't wait for the next episode of "Kalle and Antoine explore the behaviour of Bitcoin Core's `bumpfee`".
Antoine Poinsot
<json-rpc><bumpfee>
Why won't bumpfee accept my new fee_rate?
Kalle Rosenbaum
# Why won't bumpfee accept my new fee_rate?

(Asked by: username_0 on 2023-12-11)

On a regtest node, I'm trying to `bumpfee` a transaction that have 1 sat/vB fee. I want to bump the fee to 2 sat/vB, but the wallet complains, saying:

```
error code: -8
error message:
Insufficient total fee 0.00000282, must be at least 0.00000846 (oldFee 0.00000141 + incrementalFee 0.00000705)

```

Why is this happening? The new fee pays exactly as much as is required to get this transaction into my mempool, right? I've tested on Bitcoin Core 25.0 and 26.0. The replacement transaction would be of the same size as the replaced transaction.

Here's the full context:

```
$ ./bitcoin-cli -regtest -rpcwallet=wallet445305173 listunspent 0
[
  {
    "txid": "33a1ec4bc9eaee66dfb2ae81fadf17bcdf29110643c3775cd462e40148e8e5f1",
    "vout": 0,
    "address": "bcrt1q0c46f338s4gnr34trjae8nu5ckhafj2l4l5nne",
    "label": "",
    "scriptPubKey": "00147e2ba4c627855131c6ab1cbb93cf94c5afd4c95f",
    "amount": 1.00000000,
    "confirmations": 1,
    "spendable": true,
    "solvable": true,
    "desc": "wpkh([c4093544/84h/1h/0h/0/0]02f32280b38e94d3028e2005a398941093c23794637734f2927a6d856e1d13ff8d)#82m64c6a",
    "parent_descs": [
      "wpkh(tpubD6NzVbkrYhZ4WMWdeCvc7DuoqY7wX6dsJEf8SZwrb7jqNUsgtHb3AkeDnYBcRRVNj6jm1RXT6J2R22X6TsKgnjJbQRWs4ZGRsbdjF65Zg9T/84h/1h/0h/0/*)#e3dfjhyk"
    ],
    "safe": true
  }
]

$ ./bitcoin-cli -regtest -rpcwallet=miner getnewaddress
bcrt1qk02jcchycn947u6e8a740yatrs8cnsxc7qa3zx

$ ./bitcoin-cli -regtest -rpcwallet=wallet445305173 sendtoaddress bcrt1qk02jcchycn947u6e8a740yatrs8cnsxc7qa3zx 0.001
9139f8b08b687b946dee4d24be88bb8cc90294629b206c01b04a34f8ce32b1ab

$ ./bitcoin-cli -regtest -rpcwallet=wallet445305173 gettransaction 9139f8b08b687b946dee4d24be88bb8cc90294629b206c01b04a34f8ce32b1ab
{
  "amount": -0.00100000,
  "fee": -0.00000141,
  "confirmations": 0,
  "trusted": true,
  "txid": "9139f8b08b687b946dee4d24be88bb8cc90294629b206c01b04a34f8ce32b1ab",
  "wtxid": "41190c475d2098d8a77863262bf117f657f9c07d6ccd1485bb5fc83de1624a72",
  "walletconflicts": [
  ],
  "time": 1702286813,
  "timereceived": 1702286813,
  "bip125-replaceable": "yes",
  "details": [
    {
      "address": "bcrt1qk02jcchycn947u6e8a740yatrs8cnsxc7qa3zx",
      "category": "send",
      "amount": -0.00100000,
      "vout": 1,
      "fee": -0.00000141,
      "abandoned": false
    }
  ],
  "hex": "02000000000101f1e5e84801e462d45c77c343061129dfbc17dffa81aeb2df66eeeac94beca1330000000000fdffffff02d359f40500000000160014b7dbc2759724bd6495735648cee0aa50e3b2f838a086010000000000160014b3d52c6
2e4c4cb5f73593f7d5793ab1c0f89c0d8024730440220652a34522866a176e6dd343fbf91ad8c002967b90a7496fdf0946c534e9695a90220140527500b84a9bd52684145dd622c49960d52f79b64fb98d93021dfc083d543012102f32280b38e94d302
8e2005a398941093c23794637734f2927a6d856e1d13ff8d59020000",
  "lastprocessedblock": {
    "hash": "44d959c6cb011430d752f16692d464dff2bdabb8a9baa5cb7e65f6675f1e42cd",
    "height": 601
  }
}

$ ./bitcoin-cli -regtest -rpcwallet=wallet445305173 bumpfee 9139f8b08b687b946dee4d24be88bb8cc90294629b206c01b04a34f8ce32b1ab '{"fee_rate": 2}'
error code: -8
error message:
Insufficient total fee 0.00000282, must be at least 0.00000846 (oldFee 0.00000141 + incrementalFee 0.00000705)

$ ./bitcoin-cli -regtest -rpcwallet=wallet445305173 bumpfee 9139f8b08b687b946dee4d24be88bb8cc90294629b206c01b04a34f8ce32b1ab '{"fee_rate": 5}'
error code: -8
error message:
Insufficient total fee 0.00000705, must be at least 0.00000846 (oldFee 0.00000141 + incrementalFee 0.00000705)

$ ./bitcoin-cli -regtest -rpcwallet=wallet445305173 bumpfee 9139f8b08b687b946dee4d24be88bb8cc90294629b206c01b04a34f8ce32b1ab '{"fee_rate": 6}'
{
  "txid": "74bcd6e58e5b7f7b364d6ebd055c9e6212a88cafeb0bf035c26545bc3a21b1a5",
  "origfee": 0.00000141,
  "fee": 0.00000846,
  "errors": [
  ]
}

$ ./bitcoin-cli -regtest getnetworkinfo
{
  "version": 260000,
  "subversion": "/Satoshi:26.0.0/",
  ...
  "relayfee": 0.00001000,
  "incrementalfee": 0.00001000,
  ...
}

```

`bumpfee` requires 6x original fee, instead of 2x original fee.

If I create a psbt of the same transaction with 2 sat/vB feerate it works fine. E.g. `createpsbt`, `walletprocesspsbt`, `finalizepsbt`, `sendrawtransaction`.

**Tags:** json-rpc, bumpfee

> **Comments:**
> **username_1**: Maybe `bumpfee` is simply creating a `705` vbytes replacement transaction? But idk why, since `walletprocesspsbt` doesn't..  
> **username_0**: I have only one UTXO in the wallet, so I don't see how it could create anything bigger than 141 vB. The output from my bumpfee command stated that I try to set a fee of 282 sats, which indicates that the new tx is in fact 141 vB.  
> **username_1**: Hmm. In this case the `705` incremental fee indicates it's using 5sat/vb as incremental feerate.  
> **username_1**: Which.. Is exactly the default used by the wallet! Mystery solved. Can't wait for the next episode of "username_0 and username_1 explore the behaviour of Bitcoin Core's `bumpfee`".  

---

## 2 answers

### Answer by username_1 on 2023-12-11. Score: 4 | Accepted answer

The [`bumpfee` command uses](https://github.com/bitcoin/bitcoin/blob/36fabb01b16c70902c085187b0a6978c70c691c0/src/wallet/feebumper.cpp#L95C72-L95C72) a [fixed 5sat/vb](https://github.com/bitcoin/bitcoin/blob/36fabb01b16c70902c085187b0a6978c70c691c0/src/wallet/wallet.h#L124-L125) incremental feerate when creating replacement transactions. This is why it's saying the fee should be at least `846` sats for bumping your `141` vbytes transaction. It's accounting for the original `141` sats fee, plus `5 * 141` sats for the incremental fee.

As username_0 points out in the comments the documentation for `bumpfee` is misleading. It states:

> At a minimum, the new fee rate must be high enough to pay an additional new relay fee (incrementalfee returned by getnetworkinfo) to enter the node's mempool.

But the feerate needs to be 5 times that for the command to succeed.

> **Comments:**
> **username_0**: From the bumpfee doc: "At a minimum, the new fee rate must be high enough to pay an additional new relay fee (incrementalfee returned by getnetworkinfo) to enter the node's mempool.". This seems to contradict what you say, see the output of getnetworkinfo in my question.  
> **username_1**: Yes, the doc is wrong. The incremental fee used by the wallet is (5 times) higher than the one used by the mempool.  
> **username_0**: Gah! Thanks for the answer. Maybe update the answer to mention the incorrect documentation.  
> **username_1**: Hmm i was editing my answer but since it says "at a minimum" it's only misleading not technically wrong right?  
> **username_0**: Right, but very misleading. I'm filing an isuue on github anyway.  
> **username_0**: https://github.com/bitcoin/bitcoin/issues/29053  

---

### Answer by username_2 on 2023-12-12. Score: 2

The 1sat/vB is indeed what you need *to enter the mempool*. The wallet's 5sat/vB increase is not always necessary or sufficient to meet Rule 4. Sounds like in this situation, the wallet's incremental feerate is much higher than necessary.

For "why are there 2 different incremental feerates?" Since Rule 4 is applied using the size of the *replacement* transaction, and we don't know that before we're finished building it, AFAIK the approach for the wallet is "eh just shoot 5sat/vB higher and we should probably meet Rule 4." It's much easier to target a feerate than to target a fee that depends on the size of your resulting tx.


---

