[amount] Make GetFee() monotonic

This reverts the hard-to-read and buggy code introduced in
d88af56011 and adds documentation
This commit is contained in:
MarcoFalke 2016-03-09 12:54:55 +01:00
parent fab6880494
commit faf756ae4e
2 changed files with 11 additions and 7 deletions

View file

@ -19,10 +19,10 @@ CFeeRate::CFeeRate(const CAmount& nFeePaid, size_t nSize)
CAmount CFeeRate::GetFee(size_t nSize) const CAmount CFeeRate::GetFee(size_t nSize) const
{ {
CAmount nFee = nSatoshisPerK*nSize / 1000; CAmount nFee = nSatoshisPerK * nSize / 1000;
if (nFee == 0 && nSatoshisPerK > 0) if (nFee == 0 && nSize != 0 && nSatoshisPerK != 0)
nFee = nSatoshisPerK; nFee = CAmount(1);
return nFee; return nFee;
} }

View file

@ -42,10 +42,14 @@ public:
explicit CFeeRate(const CAmount& _nSatoshisPerK): nSatoshisPerK(_nSatoshisPerK) { } explicit CFeeRate(const CAmount& _nSatoshisPerK): nSatoshisPerK(_nSatoshisPerK) { }
CFeeRate(const CAmount& nFeePaid, size_t nSize); CFeeRate(const CAmount& nFeePaid, size_t nSize);
CFeeRate(const CFeeRate& other) { nSatoshisPerK = other.nSatoshisPerK; } CFeeRate(const CFeeRate& other) { nSatoshisPerK = other.nSatoshisPerK; }
/**
CAmount GetFee(size_t size) const; // unit returned is satoshis * Return the fee in satoshis for the given size in bytes.
CAmount GetFeePerK() const { return GetFee(1000); } // satoshis-per-1000-bytes */
CAmount GetFee(size_t size) const;
/**
* Return the fee in satoshis for a size of 1000 bytes
*/
CAmount GetFeePerK() const { return GetFee(1000); }
friend bool operator<(const CFeeRate& a, const CFeeRate& b) { return a.nSatoshisPerK < b.nSatoshisPerK; } friend bool operator<(const CFeeRate& a, const CFeeRate& b) { return a.nSatoshisPerK < b.nSatoshisPerK; }
friend bool operator>(const CFeeRate& a, const CFeeRate& b) { return a.nSatoshisPerK > b.nSatoshisPerK; } friend bool operator>(const CFeeRate& a, const CFeeRate& b) { return a.nSatoshisPerK > b.nSatoshisPerK; }
friend bool operator==(const CFeeRate& a, const CFeeRate& b) { return a.nSatoshisPerK == b.nSatoshisPerK; } friend bool operator==(const CFeeRate& a, const CFeeRate& b) { return a.nSatoshisPerK == b.nSatoshisPerK; }