From 936b3794085fbc4504d94431feb38900a497985e Mon Sep 17 00:00:00 2001 From: Alex Yocom-Piatt Date: Tue, 12 Apr 2016 13:18:29 -0500 Subject: [PATCH] Update min relay fee calculation to match btcd calc Plucked from this btcd commit: https://github.com/btcsuite/btcd/commit/489ba8d31d2c54ec2e1043396bc0e844c6253844 Would have been cherry-picked but changes with policy.go prevent that for now --- mempool.go | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/mempool.go b/mempool.go index 197a5f2d8d..c61ab402b9 100644 --- a/mempool.go +++ b/mempool.go @@ -710,16 +710,20 @@ func calcMinRequiredTxRelayFee(serializedSize int64, // divide the transaction size by 1000 to convert to kilobytes. Also, // integer division is used so fees only increase on full kilobyte // boundaries. - var minTxRelayFee dcrutil.Amount + var minRelayTxFee dcrutil.Amount switch { case params == &chaincfg.MainNetParams: - minTxRelayFee = minTxRelayFeeMainNet - case params == &chaincfg.MainNetParams: - minTxRelayFee = minTxRelayFeeTestNet + minRelayTxFee = minTxRelayFeeMainNet + case params == &chaincfg.TestNetParams: + minRelayTxFee = minTxRelayFeeTestNet default: - minTxRelayFee = minTxRelayFeeTestNet + minRelayTxFee = minTxRelayFeeTestNet + } + minFee := (serializedSize * int64(minRelayTxFee)) / 1000 + + if minFee == 0 && minRelayTxFee > 0 { + minFee = int64(minRelayTxFee) } - minFee := (1 + serializedSize/1000) * int64(minTxRelayFee) // Set the minimum fee to the maximum possible value if the calculated // fee is not in the valid range for monetary amounts.