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