Browse Source

Use incrementalRelayFee for BIP 125 replacement

0.14
Alex Morcos 8 years ago
parent
commit
5b158707f2
  1. 4
      src/validation.cpp
  2. 14
      src/wallet/rpcwallet.cpp

4
src/validation.cpp

@ -898,14 +898,14 @@ bool AcceptToMemoryPoolWorker(CTxMemPool& pool, CValidationState& state, const C
// Finally in addition to paying more fees than the conflicts the // Finally in addition to paying more fees than the conflicts the
// new transaction must pay for its own bandwidth. // new transaction must pay for its own bandwidth.
CAmount nDeltaFees = nModifiedFees - nConflictingFees; CAmount nDeltaFees = nModifiedFees - nConflictingFees;
if (nDeltaFees < ::minRelayTxFee.GetFee(nSize)) if (nDeltaFees < ::incrementalRelayFee.GetFee(nSize))
{ {
return state.DoS(0, false, return state.DoS(0, false,
REJECT_INSUFFICIENTFEE, "insufficient fee", false, REJECT_INSUFFICIENTFEE, "insufficient fee", false,
strprintf("rejecting replacement %s, not enough additional fees to relay; %s < %s", strprintf("rejecting replacement %s, not enough additional fees to relay; %s < %s",
hash.ToString(), hash.ToString(),
FormatMoney(nDeltaFees), FormatMoney(nDeltaFees),
FormatMoney(::minRelayTxFee.GetFee(nSize)))); FormatMoney(::incrementalRelayFee.GetFee(nSize))));
} }
} }

14
src/wallet/rpcwallet.cpp

@ -2652,8 +2652,8 @@ UniValue bumpfee(const JSONRPCRequest& request)
"By default, the new fee will be calculated automatically using estimatefee.\n" "By default, the new fee will be calculated automatically using estimatefee.\n"
"The user can specify a confirmation target for estimatefee.\n" "The user can specify a confirmation target for estimatefee.\n"
"Alternatively, the user can specify totalFee, or use RPC setpaytxfee to set a higher fee rate.\n" "Alternatively, the user can specify totalFee, or use RPC setpaytxfee to set a higher fee rate.\n"
"At a minimum, the new fee rate must be high enough to pay a new relay fee (relay fee amount returned\n" "At a minimum, the new fee rate must be high enough to pay a new relay fee over the original fee\n"
"by getnetworkinfo RPC) and to enter the node's mempool.\n" "to enter the node's mempool.\n"
"\nArguments:\n" "\nArguments:\n"
"1. txid (string, required) The txid to be bumped\n" "1. txid (string, required) The txid to be bumped\n"
"2. options (object, optional)\n" "2. options (object, optional)\n"
@ -2787,9 +2787,9 @@ UniValue bumpfee(const JSONRPCRequest& request)
CFeeRate nNewFeeRate; CFeeRate nNewFeeRate;
if (totalFee > 0) { if (totalFee > 0) {
CAmount minTotalFee = nOldFeeRate.GetFee(maxNewTxSize) + minRelayTxFee.GetFee(maxNewTxSize); CAmount minTotalFee = nOldFeeRate.GetFee(maxNewTxSize) + ::incrementalRelayFee.GetFee(maxNewTxSize);
if (totalFee < minTotalFee) { if (totalFee < minTotalFee) {
throw JSONRPCError(RPC_INVALID_PARAMETER, strprintf("Invalid totalFee, must be at least %s (oldFee %s + relayFee %s)", FormatMoney(minTotalFee), nOldFeeRate.GetFee(maxNewTxSize), minRelayTxFee.GetFee(maxNewTxSize))); throw JSONRPCError(RPC_INVALID_PARAMETER, strprintf("Invalid totalFee, must be at least %s (oldFee %s + relayFee %s)", FormatMoney(minTotalFee), nOldFeeRate.GetFee(maxNewTxSize), ::incrementalRelayFee.GetFee(maxNewTxSize)));
} }
nNewFee = totalFee; nNewFee = totalFee;
nNewFeeRate = CFeeRate(totalFee, maxNewTxSize); nNewFeeRate = CFeeRate(totalFee, maxNewTxSize);
@ -2804,9 +2804,9 @@ UniValue bumpfee(const JSONRPCRequest& request)
nNewFeeRate = CWallet::fallbackFee; nNewFeeRate = CWallet::fallbackFee;
} }
// new fee rate must be at least old rate + minimum relay rate // new fee rate must be at least old rate + minimum incremental relay rate
if (nNewFeeRate.GetFeePerK() < nOldFeeRate.GetFeePerK() + ::minRelayTxFee.GetFeePerK()) { if (nNewFeeRate.GetFeePerK() < nOldFeeRate.GetFeePerK() + ::incrementalRelayFee.GetFeePerK()) {
nNewFeeRate = CFeeRate(nOldFeeRate.GetFeePerK() + ::minRelayTxFee.GetFeePerK()); nNewFeeRate = CFeeRate(nOldFeeRate.GetFeePerK() + ::incrementalRelayFee.GetFeePerK());
} }
nNewFee = nNewFeeRate.GetFee(maxNewTxSize); nNewFee = nNewFeeRate.GetFee(maxNewTxSize);

Loading…
Cancel
Save