Browse Source

[amount] Make GetFee() monotonic

This reverts the hard-to-read and buggy code introduced in
d88af56011 and adds documentation
0.13
MarcoFalke 9 years ago
parent
commit
faf756ae4e
  1. 6
      src/amount.cpp
  2. 12
      src/amount.h

6
src/amount.cpp

@ -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;
} }

12
src/amount.h

@ -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; }

Loading…
Cancel
Save