Fix origfee return for bumpfee with feerate arg
Github-Pull: #17643 Rebased-From: 02afb0c550dc8529918460c845d1da3adf236eed
This commit is contained in:
parent
8afa602f30
commit
bd8c6f12e8
2 changed files with 6 additions and 4 deletions
|
@ -109,12 +109,11 @@ static feebumper::Result CheckFeeRate(const CWallet* wallet, const CWalletTx& wt
|
||||||
return feebumper::Result::OK;
|
return feebumper::Result::OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
static CFeeRate EstimateFeeRate(CWallet* wallet, const CWalletTx& wtx, CCoinControl& coin_control, CAmount& old_fee)
|
static CFeeRate EstimateFeeRate(CWallet* wallet, const CWalletTx& wtx, const CAmount old_fee, CCoinControl& coin_control)
|
||||||
{
|
{
|
||||||
// Get the fee rate of the original transaction. This is calculated from
|
// Get the fee rate of the original transaction. This is calculated from
|
||||||
// the tx fee/vsize, so it may have been rounded down. Add 1 satoshi to the
|
// the tx fee/vsize, so it may have been rounded down. Add 1 satoshi to the
|
||||||
// result.
|
// result.
|
||||||
old_fee = wtx.GetDebit(ISMINE_SPENDABLE) - wtx.tx->GetValueOut();
|
|
||||||
int64_t txSize = GetVirtualTransactionSize(*(wtx.tx));
|
int64_t txSize = GetVirtualTransactionSize(*(wtx.tx));
|
||||||
CFeeRate feerate(old_fee, txSize);
|
CFeeRate feerate(old_fee, txSize);
|
||||||
feerate += CFeeRate(1);
|
feerate += CFeeRate(1);
|
||||||
|
@ -310,6 +309,8 @@ Result CreateRateBumpTransaction(CWallet* wallet, const uint256& txid, const CCo
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
old_fee = wtx.GetDebit(ISMINE_SPENDABLE) - wtx.tx->GetValueOut();
|
||||||
|
|
||||||
if (coin_control.m_feerate) {
|
if (coin_control.m_feerate) {
|
||||||
// The user provided a feeRate argument.
|
// The user provided a feeRate argument.
|
||||||
// We calculate this here to avoid compiler warning on the cs_wallet lock
|
// We calculate this here to avoid compiler warning on the cs_wallet lock
|
||||||
|
@ -320,7 +321,7 @@ Result CreateRateBumpTransaction(CWallet* wallet, const uint256& txid, const CCo
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// The user did not provide a feeRate argument
|
// The user did not provide a feeRate argument
|
||||||
new_coin_control.m_feerate = EstimateFeeRate(wallet, wtx, new_coin_control, old_fee);
|
new_coin_control.m_feerate = EstimateFeeRate(wallet, wtx, old_fee, new_coin_control);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Fill in required inputs we are double-spending(all of them)
|
// Fill in required inputs we are double-spending(all of them)
|
||||||
|
|
|
@ -100,7 +100,8 @@ def test_simple_bumpfee_succeeds(self, mode, rbf_node, peer_node, dest_address):
|
||||||
else:
|
else:
|
||||||
bumped_tx = rbf_node.bumpfee(rbfid)
|
bumped_tx = rbf_node.bumpfee(rbfid)
|
||||||
assert_equal(bumped_tx["errors"], [])
|
assert_equal(bumped_tx["errors"], [])
|
||||||
assert bumped_tx["fee"] - abs(rbftx["fee"]) > 0
|
assert bumped_tx["fee"] > -rbftx["fee"]
|
||||||
|
assert_equal(bumped_tx["origfee"], -rbftx["fee"])
|
||||||
# check that bumped_tx propagates, original tx was evicted and has a wallet conflict
|
# check that bumped_tx propagates, original tx was evicted and has a wallet conflict
|
||||||
self.sync_mempools((rbf_node, peer_node))
|
self.sync_mempools((rbf_node, peer_node))
|
||||||
assert bumped_tx["txid"] in rbf_node.getrawmempool()
|
assert bumped_tx["txid"] in rbf_node.getrawmempool()
|
||||||
|
|
Loading…
Add table
Reference in a new issue