@ -800,32 +800,6 @@ void LimitMempoolSize(CTxMemPool& pool, size_t limit, unsigned long age) {
pcoinsTip - > Uncache ( removed ) ;
pcoinsTip - > Uncache ( removed ) ;
}
}
CAmount GetMinRelayFee ( const CTransaction & tx , const CTxMemPool & pool , unsigned int nBytes , bool fAllowFree )
{
uint256 hash = tx . GetHash ( ) ;
double dPriorityDelta = 0 ;
CAmount nFeeDelta = 0 ;
pool . ApplyDeltas ( hash , dPriorityDelta , nFeeDelta ) ;
if ( dPriorityDelta > 0 | | nFeeDelta > 0 )
return 0 ;
CAmount nMinFee = : : minRelayTxFee . GetFee ( nBytes ) ;
if ( fAllowFree )
{
// There is a free transaction area in blocks created by most miners,
// * If we are relaying we allow transactions up to DEFAULT_BLOCK_PRIORITY_SIZE - 1000
// to be considered to fall into this category. We don't want to encourage sending
// multiple transactions instead of one big transaction to avoid fees.
if ( nBytes < ( DEFAULT_BLOCK_PRIORITY_SIZE - 1000 ) )
nMinFee = 0 ;
}
if ( ! MoneyRange ( nMinFee ) )
nMinFee = MAX_MONEY ;
return nMinFee ;
}
/** Convert CValidationState to a human-readable message for logging */
/** Convert CValidationState to a human-readable message for logging */
std : : string FormatStateMessage ( const CValidationState & state )
std : : string FormatStateMessage ( const CValidationState & state )
{
{
@ -990,15 +964,6 @@ bool AcceptToMemoryPoolWorker(CTxMemPool& pool, CValidationState &state, const C
CTxMemPoolEntry entry ( tx , nFees , GetTime ( ) , dPriority , chainActive . Height ( ) , pool . HasNoInputsOf ( tx ) , inChainInputValue , fSpendsCoinbase , nSigOps ) ;
CTxMemPoolEntry entry ( tx , nFees , GetTime ( ) , dPriority , chainActive . Height ( ) , pool . HasNoInputsOf ( tx ) , inChainInputValue , fSpendsCoinbase , nSigOps ) ;
unsigned int nSize = entry . GetTxSize ( ) ;
unsigned int nSize = entry . GetTxSize ( ) ;
// Don't accept it if it can't get into a block
CAmount txMinFee = GetMinRelayFee ( tx , pool , nSize , true ) ;
// txMinFee takes into account priority/fee deltas, so compare using
// nFees rather than nModifiedFees
if ( fLimitFree & & nFees < txMinFee )
return state . DoS ( 0 , false , REJECT_INSUFFICIENTFEE , " insufficient fee " , false ,
strprintf ( " %d < %d " , nFees , txMinFee ) ) ;
CAmount mempoolRejectFee = pool . GetMinFee ( GetArg ( " -maxmempool " , DEFAULT_MAX_MEMPOOL_SIZE ) * 1000000 ) . GetFee ( nSize ) ;
CAmount mempoolRejectFee = pool . GetMinFee ( GetArg ( " -maxmempool " , DEFAULT_MAX_MEMPOOL_SIZE ) * 1000000 ) . GetFee ( nSize ) ;
if ( mempoolRejectFee > 0 & & nModifiedFees < mempoolRejectFee ) {
if ( mempoolRejectFee > 0 & & nModifiedFees < mempoolRejectFee ) {
return state . DoS ( 0 , false , REJECT_INSUFFICIENTFEE , " mempool min fee not met " , false , strprintf ( " %d < %d " , nFees , mempoolRejectFee ) ) ;
return state . DoS ( 0 , false , REJECT_INSUFFICIENTFEE , " mempool min fee not met " , false , strprintf ( " %d < %d " , nFees , mempoolRejectFee ) ) ;