diff options
author | Mike Hearn <mike@plan99.net> | 2014-03-10 18:59:12 +0100 |
---|---|---|
committer | Mike Hearn <mike@plan99.net> | 2014-03-10 19:17:18 +0100 |
commit | 037b4f1485404a69f96ac6c448a97d21315c8663 (patch) | |
tree | fecba95feb0e545766945a82f172960d802815d6 /src | |
parent | a63f8b7b36e39722024a0ba061ca214f00a8f1bd (diff) |
Make mining fee policy match relay fee policy.
This resolves a case in which a mismatch could be used to bloat up the
mempool by sending transactions that pay enough fee to relay, but not
to be mined, with the default policies.
Diffstat (limited to 'src')
-rw-r--r-- | src/main.cpp | 2 | ||||
-rw-r--r-- | src/main.h | 3 | ||||
-rw-r--r-- | src/miner.cpp | 4 |
3 files changed, 5 insertions, 4 deletions
diff --git a/src/main.cpp b/src/main.cpp index 2d8ac0c9bc..590ddbf7a9 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -51,7 +51,7 @@ unsigned int nCoinCacheSize = 5000; /** Fees smaller than this (in satoshi) are considered zero fee (for transaction creation) */ int64_t CTransaction::nMinTxFee = 10000; // Override with -mintxfee -/** Fees smaller than this (in satoshi) are considered zero fee (for relaying) */ +/** Fees smaller than this (in satoshi) are considered zero fee (for relaying and mining) */ int64_t CTransaction::nMinRelayTxFee = 1000; static CMedianFilter<int> cPeerBlockCounts(8, 0); // Amount of blocks that other nodes claim to have diff --git a/src/main.h b/src/main.h index 1b1aca4e05..b9c8dd7050 100644 --- a/src/main.h +++ b/src/main.h @@ -35,8 +35,9 @@ class CInv; /** The maximum allowed size for a serialized block, in bytes (network rule) */ static const unsigned int MAX_BLOCK_SIZE = 1000000; -/** Default for -blockmaxsize, maximum size for mined blocks **/ +/** Default for -blockmaxsize and -blockminsize, which control the range of sizes the mining code will create **/ static const unsigned int DEFAULT_BLOCK_MAX_SIZE = 750000; +static const unsigned int DEFAULT_BLOCK_MIN_SIZE = 0; /** Default for -blockprioritysize, maximum space for zero/low-fee transactions **/ static const unsigned int DEFAULT_BLOCK_PRIORITY_SIZE = 50000; /** The maximum size for transactions we're willing to relay/mine */ diff --git a/src/miner.cpp b/src/miner.cpp index e52f539085..3351908e65 100644 --- a/src/miner.cpp +++ b/src/miner.cpp @@ -136,7 +136,7 @@ CBlockTemplate* CreateNewBlock(const CScript& scriptPubKeyIn) // Minimum block size you want to create; block will be filled with free transactions // until there are no more or the block reaches this size: - unsigned int nBlockMinSize = GetArg("-blockminsize", 0); + unsigned int nBlockMinSize = GetArg("-blockminsize", DEFAULT_BLOCK_MIN_SIZE); nBlockMinSize = std::min(nBlockMaxSize, nBlockMinSize); // Collect memory pool transactions into the block @@ -254,7 +254,7 @@ CBlockTemplate* CreateNewBlock(const CScript& scriptPubKeyIn) continue; // Skip free transactions if we're past the minimum block size: - if (fSortedByFee && (dFeePerKb < CTransaction::nMinTxFee) && (nBlockSize + nTxSize >= nBlockMinSize)) + if (fSortedByFee && (dFeePerKb < CTransaction::nMinRelayTxFee) && (nBlockSize + nTxSize >= nBlockMinSize)) continue; // Prioritize by fee once past the priority size or we run out of high-priority |