Browse Source
0.15381a46e
Consensus: Policy: MOVEONLY: Move CFeeRate out of the consensus module (Jorge Timón)330bb5a
Consensus: Minimal way to move dust out of consensus (Jorge Timón) Tree-SHA512: 19a2ea8169afd5a9d3f940d8974e34cfaead153e3ff3068ac82fccdb8694d19d9b45938904ec9e8cd095bd5ca3a0080364da29372f6aaf56b11a6c2ccd6c7a4d
Wladimir J. van der Laan
8 years ago
23 changed files with 124 additions and 96 deletions
@ -0,0 +1,54 @@ |
|||||||
|
// Copyright (c) 2009-2010 Satoshi Nakamoto
|
||||||
|
// Copyright (c) 2009-2015 The Bitcoin Core developers
|
||||||
|
// Distributed under the MIT software license, see the accompanying
|
||||||
|
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
||||||
|
|
||||||
|
#ifndef BITCOIN_POLICY_FEERATE_H |
||||||
|
#define BITCOIN_POLICY_FEERATE_H |
||||||
|
|
||||||
|
#include "amount.h" |
||||||
|
#include "serialize.h" |
||||||
|
|
||||||
|
#include <string> |
||||||
|
|
||||||
|
extern const std::string CURRENCY_UNIT; |
||||||
|
|
||||||
|
/**
|
||||||
|
* Fee rate in satoshis per kilobyte: CAmount / kB |
||||||
|
*/ |
||||||
|
class CFeeRate |
||||||
|
{ |
||||||
|
private: |
||||||
|
CAmount nSatoshisPerK; // unit is satoshis-per-1,000-bytes
|
||||||
|
public: |
||||||
|
/** Fee rate of 0 satoshis per kB */ |
||||||
|
CFeeRate() : nSatoshisPerK(0) { } |
||||||
|
explicit CFeeRate(const CAmount& _nSatoshisPerK): nSatoshisPerK(_nSatoshisPerK) { } |
||||||
|
/** Constructor for a fee rate in satoshis per kB. The size in bytes must not exceed (2^63 - 1)*/ |
||||||
|
CFeeRate(const CAmount& nFeePaid, size_t nBytes); |
||||||
|
CFeeRate(const CFeeRate& other) { nSatoshisPerK = other.nSatoshisPerK; } |
||||||
|
/**
|
||||||
|
* Return the fee in satoshis for the given size in bytes. |
||||||
|
*/ |
||||||
|
CAmount GetFee(size_t nBytes) 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; } |
||||||
|
CFeeRate& operator+=(const CFeeRate& a) { nSatoshisPerK += a.nSatoshisPerK; return *this; } |
||||||
|
std::string ToString() const; |
||||||
|
|
||||||
|
ADD_SERIALIZE_METHODS; |
||||||
|
|
||||||
|
template <typename Stream, typename Operation> |
||||||
|
inline void SerializationOp(Stream& s, Operation ser_action) { |
||||||
|
READWRITE(nSatoshisPerK); |
||||||
|
} |
||||||
|
}; |
||||||
|
|
||||||
|
#endif // BITCOIN_POLICY_FEERATE_H
|
Loading…
Reference in new issue