Any projects which want to use Hush code from now on will need to be licensed as GPLv3 or we will send the lawyers: https://www.softwarefreedom.org/ Notably, Komodo (KMD) is licensed as GPLv2 and is no longer compatible to receive code changes, without causing legal issues. MIT projects, such as Zcash, also cannot pull in changes from the Hush Full Node without permission from The Hush Developers, which may in some circumstances grant an MIT license on a case-by-case basis.
83 lines
3.7 KiB
C++
83 lines
3.7 KiB
C++
// Copyright (c) 2009-2010 Satoshi Nakamoto
|
|
// Copyright (c) 2009-2014 The Bitcoin Core developers
|
|
// Copyright (c) 2019-2020 The Hush developers
|
|
// Distributed under the GPLv3 software license, see the accompanying
|
|
// file COPYING or https://www.gnu.org/licenses/gpl-3.0.en.html
|
|
|
|
/******************************************************************************
|
|
* Copyright © 2014-2019 The SuperNET Developers. *
|
|
* *
|
|
* See the AUTHORS, DEVELOPER-AGREEMENT and LICENSE files at *
|
|
* the top-level directory of this distribution for the individual copyright *
|
|
* holder information and the developer policies on copyright and licensing. *
|
|
* *
|
|
* Unless otherwise agreed in a custom licensing agreement, no part of the *
|
|
* SuperNET software, including this file may be copied, modified, propagated *
|
|
* or distributed except according to the terms contained in the LICENSE file *
|
|
* *
|
|
* Removal or modification of this copyright notice is prohibited. *
|
|
* *
|
|
******************************************************************************/
|
|
|
|
#ifndef BITCOIN_AMOUNT_H
|
|
#define BITCOIN_AMOUNT_H
|
|
|
|
#include "serialize.h"
|
|
|
|
#include <stdlib.h>
|
|
#include <string>
|
|
|
|
typedef int64_t CAmount;
|
|
|
|
static const CAmount COIN = 100000000;
|
|
static const CAmount CENT = 1000000;
|
|
|
|
extern const std::string CURRENCY_UNIT;
|
|
|
|
/** No amount larger than this (in satoshi) is valid.
|
|
*
|
|
* Note that this constant is *not* the total money supply, which in Bitcoin
|
|
* currently happens to be less than 21,000,000 BTC for various reasons, but
|
|
* rather a sanity check. As this sanity check is used by consensus-critical
|
|
* validation code, the exact value of the MAX_MONEY constant is consensus
|
|
* critical; in unusual circumstances like a(nother) overflow bug that allowed
|
|
* for the creation of coins out of thin air modification could lead to a fork.
|
|
* */
|
|
//static const CAmount MAX_MONEY = 21000000 * COIN;
|
|
extern int64_t MAX_MONEY;
|
|
|
|
inline bool MoneyRange(const CAmount& nValue) { return (nValue >= 0 && nValue <= MAX_MONEY); }
|
|
|
|
/** Type-safe wrapper class to for fee rates
|
|
* (how much to pay based on transaction size)
|
|
*/
|
|
class CFeeRate
|
|
{
|
|
private:
|
|
CAmount nSatoshisPerK; // unit is satoshis-per-1,000-bytes
|
|
public:
|
|
CFeeRate() : nSatoshisPerK(0) { }
|
|
explicit CFeeRate(const CAmount& _nSatoshisPerK): nSatoshisPerK(_nSatoshisPerK) { }
|
|
CFeeRate(const CAmount& nFeePaid, size_t nSize);
|
|
CFeeRate(const CFeeRate& other) { nSatoshisPerK = other.nSatoshisPerK; }
|
|
|
|
CAmount GetFee(size_t size) const; // unit returned is satoshis
|
|
CAmount GetFeePerK() const { return GetFee(1000); } // satoshis-per-1000-bytes
|
|
|
|
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; }
|
|
std::string ToString() const;
|
|
|
|
ADD_SERIALIZE_METHODS;
|
|
|
|
template <typename Stream, typename Operation>
|
|
inline void SerializationOp(Stream& s, Operation ser_action) {
|
|
READWRITE(nSatoshisPerK);
|
|
}
|
|
};
|
|
|
|
#endif // BITCOIN_AMOUNT_H
|