|
|
|
@ -108,12 +108,11 @@ static feebumper::Result CheckFeeRate(const CWallet& wallet, const CWalletTx& wt
|
|
|
|
|
return feebumper::Result::OK;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static CFeeRate EstimateFeeRate(const CWallet& wallet, const CWalletTx& wtx, CCoinControl& coin_control, CAmount& old_fee)
|
|
|
|
|
static CFeeRate EstimateFeeRate(const CWallet& wallet, const CWalletTx& wtx, const CAmount old_fee, CCoinControl& coin_control)
|
|
|
|
|
{
|
|
|
|
|
// 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
|
|
|
|
|
// result.
|
|
|
|
|
old_fee = wtx.GetDebit(ISMINE_SPENDABLE) - wtx.tx->GetValueOut();
|
|
|
|
|
int64_t txSize = GetVirtualTransactionSize(*(wtx.tx));
|
|
|
|
|
CFeeRate feerate(old_fee, txSize);
|
|
|
|
|
feerate += CFeeRate(1);
|
|
|
|
@ -309,6 +308,8 @@ Result CreateRateBumpTransaction(CWallet& wallet, const uint256& txid, const CCo
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
old_fee = wtx.GetDebit(ISMINE_SPENDABLE) - wtx.tx->GetValueOut();
|
|
|
|
|
|
|
|
|
|
if (coin_control.m_feerate) {
|
|
|
|
|
// The user provided a feeRate argument.
|
|
|
|
|
// We calculate this here to avoid compiler warning on the cs_wallet lock
|
|
|
|
@ -319,7 +320,7 @@ Result CreateRateBumpTransaction(CWallet& wallet, const uint256& txid, const CCo
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
// 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)
|
|
|
|
|