You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
43 lines
1.1 KiB
43 lines
1.1 KiB
// Copyright (c) 2009-2010 Satoshi Nakamoto |
|
// Copyright (c) 2009-2016 The Bitcoin Core developers |
|
// Distributed under the MIT software license, see the accompanying |
|
// file COPYING or http://www.opensource.org/licenses/mit-license.php. |
|
|
|
#include "amount.h" |
|
|
|
#include "tinyformat.h" |
|
|
|
const std::string CURRENCY_UNIT = "BTC"; |
|
|
|
CFeeRate::CFeeRate(const CAmount& nFeePaid, size_t nBytes_) |
|
{ |
|
assert(nBytes_ <= uint64_t(std::numeric_limits<int64_t>::max())); |
|
int64_t nSize = int64_t(nBytes_); |
|
|
|
if (nSize > 0) |
|
nSatoshisPerK = nFeePaid * 1000 / nSize; |
|
else |
|
nSatoshisPerK = 0; |
|
} |
|
|
|
CAmount CFeeRate::GetFee(size_t nBytes_) const |
|
{ |
|
assert(nBytes_ <= uint64_t(std::numeric_limits<int64_t>::max())); |
|
int64_t nSize = int64_t(nBytes_); |
|
|
|
CAmount nFee = nSatoshisPerK * nSize / 1000; |
|
|
|
if (nFee == 0 && nSize != 0) { |
|
if (nSatoshisPerK > 0) |
|
nFee = CAmount(1); |
|
if (nSatoshisPerK < 0) |
|
nFee = CAmount(-1); |
|
} |
|
|
|
return nFee; |
|
} |
|
|
|
std::string CFeeRate::ToString() const |
|
{ |
|
return strprintf("%d.%08d %s/kB", nSatoshisPerK / COIN, nSatoshisPerK % COIN, CURRENCY_UNIT); |
|
}
|
|
|