|
|
@ -11,6 +11,7 @@ |
|
|
|
#include <stdlib.h> |
|
|
|
#include <stdlib.h> |
|
|
|
#include <string> |
|
|
|
#include <string> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** Amount in satoshis (Can be negative) */ |
|
|
|
typedef int64_t CAmount; |
|
|
|
typedef int64_t CAmount; |
|
|
|
|
|
|
|
|
|
|
|
static const CAmount COIN = 100000000; |
|
|
|
static const CAmount COIN = 100000000; |
|
|
@ -30,22 +31,24 @@ extern const std::string CURRENCY_UNIT; |
|
|
|
static const CAmount MAX_MONEY = 21000000 * COIN; |
|
|
|
static const CAmount MAX_MONEY = 21000000 * COIN; |
|
|
|
inline bool MoneyRange(const CAmount& nValue) { return (nValue >= 0 && nValue <= MAX_MONEY); } |
|
|
|
inline bool MoneyRange(const CAmount& nValue) { return (nValue >= 0 && nValue <= MAX_MONEY); } |
|
|
|
|
|
|
|
|
|
|
|
/** Type-safe wrapper class for fee rates
|
|
|
|
/**
|
|
|
|
* (how much to pay based on transaction size) |
|
|
|
* Fee rate in satoshis per kilobyte: CAmount / kB |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
class CFeeRate |
|
|
|
class CFeeRate |
|
|
|
{ |
|
|
|
{ |
|
|
|
private: |
|
|
|
private: |
|
|
|
CAmount nSatoshisPerK; // unit is satoshis-per-1,000-bytes
|
|
|
|
CAmount nSatoshisPerK; // unit is satoshis-per-1,000-bytes
|
|
|
|
public: |
|
|
|
public: |
|
|
|
|
|
|
|
/** Fee rate of 0 satoshis per kB */ |
|
|
|
CFeeRate() : nSatoshisPerK(0) { } |
|
|
|
CFeeRate() : nSatoshisPerK(0) { } |
|
|
|
explicit CFeeRate(const CAmount& _nSatoshisPerK): nSatoshisPerK(_nSatoshisPerK) { } |
|
|
|
explicit CFeeRate(const CAmount& _nSatoshisPerK): nSatoshisPerK(_nSatoshisPerK) { } |
|
|
|
CFeeRate(const CAmount& nFeePaid, size_t nSize); |
|
|
|
/** 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; } |
|
|
|
CFeeRate(const CFeeRate& other) { nSatoshisPerK = other.nSatoshisPerK; } |
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* Return the fee in satoshis for the given size in bytes. |
|
|
|
* Return the fee in satoshis for the given size in bytes. |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
CAmount GetFee(size_t size) const; |
|
|
|
CAmount GetFee(size_t nBytes) const; |
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* Return the fee in satoshis for a size of 1000 bytes |
|
|
|
* Return the fee in satoshis for a size of 1000 bytes |
|
|
|
*/ |
|
|
|
*/ |
|
|
|