mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-01-12 04:42:36 -03:00
Sanity checks for estimates
Require at least 11 samples before giving fee/priority estimates. And have wallet-created transactions go throught the fee-sanity-check code path.
This commit is contained in:
parent
b33d1f5ee5
commit
4b7b1bb1ac
3 changed files with 10 additions and 5 deletions
|
@ -1129,10 +1129,10 @@ int CMerkleTx::GetBlocksToMaturity() const
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool CMerkleTx::AcceptToMemoryPool(bool fLimitFree)
|
bool CMerkleTx::AcceptToMemoryPool(bool fLimitFree, bool fRejectInsaneFee)
|
||||||
{
|
{
|
||||||
CValidationState state;
|
CValidationState state;
|
||||||
return ::AcceptToMemoryPool(mempool, state, *this, fLimitFree, NULL);
|
return ::AcceptToMemoryPool(mempool, state, *this, fLimitFree, NULL, fRejectInsaneFee);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -452,7 +452,7 @@ public:
|
||||||
int GetDepthInMainChain() const { CBlockIndex *pindexRet; return GetDepthInMainChain(pindexRet); }
|
int GetDepthInMainChain() const { CBlockIndex *pindexRet; return GetDepthInMainChain(pindexRet); }
|
||||||
bool IsInMainChain() const { CBlockIndex *pindexRet; return GetDepthInMainChainINTERNAL(pindexRet) > 0; }
|
bool IsInMainChain() const { CBlockIndex *pindexRet; return GetDepthInMainChainINTERNAL(pindexRet) > 0; }
|
||||||
int GetBlocksToMaturity() const;
|
int GetBlocksToMaturity() const;
|
||||||
bool AcceptToMemoryPool(bool fLimitFree=true);
|
bool AcceptToMemoryPool(bool fLimitFree=true, bool fRejectInsaneFee=true);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -251,8 +251,13 @@ public:
|
||||||
std::sort(sortedFeeSamples.begin(), sortedFeeSamples.end(),
|
std::sort(sortedFeeSamples.begin(), sortedFeeSamples.end(),
|
||||||
std::greater<CFeeRate>());
|
std::greater<CFeeRate>());
|
||||||
}
|
}
|
||||||
if (sortedFeeSamples.size() == 0)
|
if (sortedFeeSamples.size() < 11)
|
||||||
|
{
|
||||||
|
// Eleven is Gavin's Favorite Number
|
||||||
|
// ... but we also take a maximum of 10 samples per block so eleven means
|
||||||
|
// we're getting samples from at least two different blocks
|
||||||
return CFeeRate(0);
|
return CFeeRate(0);
|
||||||
|
}
|
||||||
|
|
||||||
int nBucketSize = history.at(nBlocksToConfirm).FeeSamples();
|
int nBucketSize = history.at(nBlocksToConfirm).FeeSamples();
|
||||||
|
|
||||||
|
@ -281,7 +286,7 @@ public:
|
||||||
std::sort(sortedPrioritySamples.begin(), sortedPrioritySamples.end(),
|
std::sort(sortedPrioritySamples.begin(), sortedPrioritySamples.end(),
|
||||||
std::greater<double>());
|
std::greater<double>());
|
||||||
}
|
}
|
||||||
if (sortedPrioritySamples.size() == 0)
|
if (sortedPrioritySamples.size() < 11)
|
||||||
return -1.0;
|
return -1.0;
|
||||||
|
|
||||||
int nBucketSize = history.at(nBlocksToConfirm).PrioritySamples();
|
int nBucketSize = history.at(nBlocksToConfirm).PrioritySamples();
|
||||||
|
|
Loading…
Reference in a new issue