mirror of
https://github.com/bitcoin/bitcoin.git
synced 2026-06-06 11:13:02 +02:00
Merge bitcoin/bitcoin#34640: wallet: rpc: Improve error message for low feerates.
98fcd7af23wallet: rpc: Improve error message for low feerates. (David Gumberg) Pull request description: Giving the user a hint about what action to take when they encounter an error related to a feerate that is below the minimum. I encountered this myself not knowing about `-mintxfee` and the manpage was slightly less than clear, ``` -mintxfee=<amt> Fee rates (in BTC/kvB) smaller than this are considered zero fee for transaction creation (default: 0.00001) ``` ACKs for top commit: achow101: ACK98fcd7af23ismaelsadeeq: ACK98fcd7af23w0xlt: ACK98fcd7af23Tree-SHA512: 8471bfd5682ca59137541ab4da670e85947cf7812baa9e07d816e352fccfb5e0e71a06c2baf1a5422d78a7da8c08b9fcbb73d85cc9daba88b7c22e802abe5b2e
This commit is contained in:
@@ -1431,7 +1431,16 @@ RPCMethod sendall()
|
||||
// Do not, ever, assume that it's fine to change the fee rate if the user has explicitly
|
||||
// provided one
|
||||
if (coin_control.m_feerate && fee_rate > *coin_control.m_feerate) {
|
||||
throw JSONRPCError(RPC_INVALID_PARAMETER, strprintf("Fee rate (%s) is lower than the minimum fee rate setting (%s)", coin_control.m_feerate->ToString(FeeRateFormat::SAT_VB), fee_rate.ToString(FeeRateFormat::SAT_VB)));
|
||||
const auto feerate_format = FeeRateFormat::SAT_VB;
|
||||
auto msg{strprintf("Fee rate (%s) is lower than the minimum fee rate setting (%s).",
|
||||
coin_control.m_feerate->ToString(feerate_format),
|
||||
fee_rate.ToString(feerate_format))};
|
||||
if (fee_calc_out.reason == FeeReason::REQUIRED) {
|
||||
msg += strprintf("\nConsider modifying -mintxfee (%s) or -minrelaytxfee (%s).",
|
||||
pwallet->m_min_fee.ToString(feerate_format),
|
||||
pwallet->chain().relayMinFee().ToString(feerate_format));
|
||||
}
|
||||
throw JSONRPCError(RPC_INVALID_PARAMETER, msg);
|
||||
}
|
||||
if (fee_calc_out.reason == FeeReason::FALLBACK && !pwallet->m_allow_fallback_fee) {
|
||||
// eventually allow a fallback fee
|
||||
|
||||
@@ -1159,7 +1159,18 @@ static util::Result<CreatedTransactionResult> CreateTransactionInternal(
|
||||
// Do not, ever, assume that it's fine to change the fee rate if the user has explicitly
|
||||
// provided one
|
||||
if (coin_control.m_feerate && coin_selection_params.m_effective_feerate > *coin_control.m_feerate) {
|
||||
return util::Error{strprintf(_("Fee rate (%s) is lower than the minimum fee rate setting (%s)"), coin_control.m_feerate->ToString(FeeRateFormat::SAT_VB), coin_selection_params.m_effective_feerate.ToString(FeeRateFormat::SAT_VB))};
|
||||
const auto feerate_format = FeeRateFormat::SAT_VB;
|
||||
auto msg{strprintf(_("Fee rate (%s) is lower than the minimum fee rate setting (%s)."),
|
||||
coin_control.m_feerate->ToString(feerate_format),
|
||||
coin_selection_params.m_effective_feerate.ToString(feerate_format))};
|
||||
if (feeCalc.reason == FeeReason::REQUIRED) {
|
||||
msg += strprintf(_("\nConsider modifying %s (%s) or %s (%s)."),
|
||||
"-mintxfee",
|
||||
wallet.m_min_fee.ToString(feerate_format),
|
||||
"-minrelaytxfee",
|
||||
wallet.chain().relayMinFee().ToString(feerate_format));
|
||||
}
|
||||
return util::Error{msg};
|
||||
}
|
||||
if (feeCalc.reason == FeeReason::FALLBACK && !wallet.m_allow_fallback_fee) {
|
||||
// eventually allow a fallback fee
|
||||
|
||||
Reference in New Issue
Block a user