aboutsummaryrefslogtreecommitdiff
path: root/src/policy/feerate.cpp
diff options
context:
space:
mode:
authorJorge Timón <jtimon@jtimon.cc>2016-03-31 23:30:17 +0200
committerJorge Timón <jtimon@jtimon.cc>2017-05-03 18:00:13 +0200
commit381a46e38fa9262c868e5fee9ed0d1f71af4059e (patch)
tree115cf75503d30e8a3f1a976a39bef76bd6e37034 /src/policy/feerate.cpp
parent330bb5a456a5f9c26703fa742e4c80691e1455ab (diff)
Consensus: Policy: MOVEONLY: Move CFeeRate out of the consensus module
...from amount.o to policy/feerate.o Policy, because it moves policy code to the policy directory (common module)
Diffstat (limited to 'src/policy/feerate.cpp')
-rw-r--r--src/policy/feerate.cpp43
1 files changed, 43 insertions, 0 deletions
diff --git a/src/policy/feerate.cpp b/src/policy/feerate.cpp
new file mode 100644
index 0000000000..a089c02284
--- /dev/null
+++ b/src/policy/feerate.cpp
@@ -0,0 +1,43 @@
+// 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 "feerate.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);
+}