| 649 | |
| 650 | // Compare a package's feerate against minimum allowed. |
| 651 | bool CheckFeeRate(size_t package_size, CAmount package_fee, TxValidationState& state) EXCLUSIVE_LOCKS_REQUIRED(::cs_main, m_pool.cs) |
| 652 | { |
| 653 | AssertLockHeld(::cs_main); |
| 654 | AssertLockHeld(m_pool.cs); |
| 655 | CAmount mempoolRejectFee = m_pool.GetMinFee(gArgs.GetIntArg("-maxmempool", DEFAULT_MAX_MEMPOOL_SIZE) * 1000000).GetFee(package_size); |
| 656 | if (mempoolRejectFee > 0 && package_fee < mempoolRejectFee) { |
| 657 | return state.Invalid(TxValidationResult::TX_MEMPOOL_POLICY, "mempool min fee not met", strprintf("%d < %d", package_fee, mempoolRejectFee)); |
| 658 | } |
| 659 | |
| 660 | if (package_fee < ::minRelayTxFee.GetFee(package_size)) { |
| 661 | return state.Invalid(TxValidationResult::TX_MEMPOOL_POLICY, "min relay fee not met", strprintf("%d < %d", package_fee, ::minRelayTxFee.GetFee(package_size))); |
| 662 | } |
| 663 | return true; |
| 664 | } |
| 665 | |
| 666 | private: |
| 667 | CTxMemPool& m_pool; |