Introduce -blockmintxfee
This commit is contained in:
parent
123ea73624
commit
daec955fd6
4 changed files with 21 additions and 2 deletions
10
src/init.cpp
10
src/init.cpp
|
@ -476,6 +476,7 @@ std::string HelpMessage(HelpMessageMode mode)
|
||||||
strUsage += HelpMessageOpt("-blockmaxweight=<n>", strprintf(_("Set maximum BIP141 block weight (default: %d)"), DEFAULT_BLOCK_MAX_WEIGHT));
|
strUsage += HelpMessageOpt("-blockmaxweight=<n>", strprintf(_("Set maximum BIP141 block weight (default: %d)"), DEFAULT_BLOCK_MAX_WEIGHT));
|
||||||
strUsage += HelpMessageOpt("-blockmaxsize=<n>", strprintf(_("Set maximum block size in bytes (default: %d)"), DEFAULT_BLOCK_MAX_SIZE));
|
strUsage += HelpMessageOpt("-blockmaxsize=<n>", strprintf(_("Set maximum block size in bytes (default: %d)"), DEFAULT_BLOCK_MAX_SIZE));
|
||||||
strUsage += HelpMessageOpt("-blockprioritysize=<n>", strprintf(_("Set maximum size of high-priority/low-fee transactions in bytes (default: %d)"), DEFAULT_BLOCK_PRIORITY_SIZE));
|
strUsage += HelpMessageOpt("-blockprioritysize=<n>", strprintf(_("Set maximum size of high-priority/low-fee transactions in bytes (default: %d)"), DEFAULT_BLOCK_PRIORITY_SIZE));
|
||||||
|
strUsage += HelpMessageOpt("-blockmintxfee=<amt>", strprintf(_("Set lowest fee rate (in %s/kB) for transactions to be included in block creation. (default: %s)"), CURRENCY_UNIT, FormatMoney(DEFAULT_BLOCK_MIN_TX_FEE)));
|
||||||
if (showDebug)
|
if (showDebug)
|
||||||
strUsage += HelpMessageOpt("-blockversion=<n>", "Override block version to test forking scenarios");
|
strUsage += HelpMessageOpt("-blockversion=<n>", "Override block version to test forking scenarios");
|
||||||
|
|
||||||
|
@ -970,6 +971,15 @@ bool AppInitParameterInteraction()
|
||||||
::minRelayTxFee = CFeeRate(n);
|
::minRelayTxFee = CFeeRate(n);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Sanity check argument for min fee for including tx in block
|
||||||
|
// TODO: Harmonize which arguments need sanity checking and where that happens
|
||||||
|
if (IsArgSet("-blockmintxfee"))
|
||||||
|
{
|
||||||
|
CAmount n = 0;
|
||||||
|
if (!ParseMoney(GetArg("-blockmintxfee", ""), n))
|
||||||
|
return InitError(AmountErrMsg("blockmintxfee", GetArg("-blockmintxfee", "")));
|
||||||
|
}
|
||||||
|
|
||||||
fRequireStandard = !GetBoolArg("-acceptnonstdtxn", !chainparams.RequireStandard());
|
fRequireStandard = !GetBoolArg("-acceptnonstdtxn", !chainparams.RequireStandard());
|
||||||
if (chainparams.RequireStandard() && !fRequireStandard)
|
if (chainparams.RequireStandard() && !fRequireStandard)
|
||||||
return InitError(strprintf("acceptnonstdtxn is not currently supported for %s chain", chainparams.NetworkIDString()));
|
return InitError(strprintf("acceptnonstdtxn is not currently supported for %s chain", chainparams.NetworkIDString()));
|
||||||
|
|
|
@ -95,12 +95,18 @@ BlockAssembler::BlockAssembler(const CChainParams& _chainparams)
|
||||||
nBlockMaxWeight = nBlockMaxSize * WITNESS_SCALE_FACTOR;
|
nBlockMaxWeight = nBlockMaxSize * WITNESS_SCALE_FACTOR;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (IsArgSet("-blockmintxfee")) {
|
||||||
|
CAmount n = 0;
|
||||||
|
ParseMoney(GetArg("-blockmintxfee", ""), n);
|
||||||
|
blockMinFeeRate = CFeeRate(n);
|
||||||
|
} else {
|
||||||
|
blockMinFeeRate = CFeeRate(DEFAULT_BLOCK_MIN_TX_FEE);
|
||||||
|
}
|
||||||
|
|
||||||
// Limit weight to between 4K and MAX_BLOCK_WEIGHT-4K for sanity:
|
// Limit weight to between 4K and MAX_BLOCK_WEIGHT-4K for sanity:
|
||||||
nBlockMaxWeight = std::max((unsigned int)4000, std::min((unsigned int)(MAX_BLOCK_WEIGHT-4000), nBlockMaxWeight));
|
nBlockMaxWeight = std::max((unsigned int)4000, std::min((unsigned int)(MAX_BLOCK_WEIGHT-4000), nBlockMaxWeight));
|
||||||
// Limit size to between 1K and MAX_BLOCK_SERIALIZED_SIZE-1K for sanity:
|
// Limit size to between 1K and MAX_BLOCK_SERIALIZED_SIZE-1K for sanity:
|
||||||
nBlockMaxSize = std::max((unsigned int)1000, std::min((unsigned int)(MAX_BLOCK_SERIALIZED_SIZE-1000), nBlockMaxSize));
|
nBlockMaxSize = std::max((unsigned int)1000, std::min((unsigned int)(MAX_BLOCK_SERIALIZED_SIZE-1000), nBlockMaxSize));
|
||||||
|
|
||||||
// Whether we need to account for byte usage (in addition to weight usage)
|
// Whether we need to account for byte usage (in addition to weight usage)
|
||||||
fNeedSizeAccounting = (nBlockMaxSize < MAX_BLOCK_SERIALIZED_SIZE-1000);
|
fNeedSizeAccounting = (nBlockMaxSize < MAX_BLOCK_SERIALIZED_SIZE-1000);
|
||||||
}
|
}
|
||||||
|
@ -460,7 +466,7 @@ void BlockAssembler::addPackageTxs()
|
||||||
packageSigOpsCost = modit->nSigOpCostWithAncestors;
|
packageSigOpsCost = modit->nSigOpCostWithAncestors;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (packageFees < ::minRelayTxFee.GetFee(packageSize)) {
|
if (packageFees < blockMinFeeRate.GetFee(packageSize)) {
|
||||||
// Everything else we might consider has a lower fee rate
|
// Everything else we might consider has a lower fee rate
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -143,6 +143,7 @@ private:
|
||||||
bool fIncludeWitness;
|
bool fIncludeWitness;
|
||||||
unsigned int nBlockMaxWeight, nBlockMaxSize;
|
unsigned int nBlockMaxWeight, nBlockMaxSize;
|
||||||
bool fNeedSizeAccounting;
|
bool fNeedSizeAccounting;
|
||||||
|
CFeeRate blockMinFeeRate;
|
||||||
|
|
||||||
// Information on the current status of the block
|
// Information on the current status of the block
|
||||||
uint64_t nBlockWeight;
|
uint64_t nBlockWeight;
|
||||||
|
|
|
@ -20,6 +20,8 @@ static const unsigned int DEFAULT_BLOCK_MAX_SIZE = 750000;
|
||||||
static const unsigned int DEFAULT_BLOCK_PRIORITY_SIZE = 0;
|
static const unsigned int DEFAULT_BLOCK_PRIORITY_SIZE = 0;
|
||||||
/** Default for -blockmaxweight, which controls the range of block weights the mining code will create **/
|
/** Default for -blockmaxweight, which controls the range of block weights the mining code will create **/
|
||||||
static const unsigned int DEFAULT_BLOCK_MAX_WEIGHT = 3000000;
|
static const unsigned int DEFAULT_BLOCK_MAX_WEIGHT = 3000000;
|
||||||
|
/** Default for -blockmintxfee, which sets the minimum feerate for a transaction in blocks created by mining code **/
|
||||||
|
static const unsigned int DEFAULT_BLOCK_MIN_TX_FEE = 1000;
|
||||||
/** The maximum weight for transactions we're willing to relay/mine */
|
/** The maximum weight for transactions we're willing to relay/mine */
|
||||||
static const unsigned int MAX_STANDARD_TX_WEIGHT = 400000;
|
static const unsigned int MAX_STANDARD_TX_WEIGHT = 400000;
|
||||||
/** Maximum number of signature check operations in an IsStandard() P2SH script */
|
/** Maximum number of signature check operations in an IsStandard() P2SH script */
|
||||||
|
|
Loading…
Reference in a new issue