aboutsummaryrefslogtreecommitdiff
path: root/src/policy/feerate.cpp
diff options
context:
space:
mode:
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);
+}