aboutsummaryrefslogtreecommitdiff
path: root/src/wallet.cpp
diff options
context:
space:
mode:
authorWladimir J. van der Laan <[email protected]>2014-11-19 16:11:15 +0100
committerWladimir J. van der Laan <[email protected]>2014-11-19 16:27:04 +0100
commitb7fe9cd04cd2756b1ce40b668d25a130441ba847 (patch)
tree8d56d76ed4b19a0a5689a5ec5c866c489ed62c78 /src/wallet.cpp
parentgmp needed to build on OSX (diff)
parent[Qt] Add Smartfee to GUI (diff)
downloaddiscoin-b7fe9cd04cd2756b1ce40b668d25a130441ba847.tar.xz
discoin-b7fe9cd04cd2756b1ce40b668d25a130441ba847.zip
Merge pull request #5200
c1c9d5b [Qt] Add Smartfee to GUI (Cozz Lovan) e7876b2 [Wallet] Prevent user from paying a non-sense fee (Cozz Lovan) ed3e5e4 [Wallet] Add global boolean whether to pay at least the custom fee (default=true) (Cozz Lovan) 0ed9675 [Wallet] Add global boolean whether to send free transactions (default=true) (Cozz Lovan)
Diffstat (limited to 'src/wallet.cpp')
-rw-r--r--src/wallet.cpp12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/wallet.cpp b/src/wallet.cpp
index ec439c5aa..5aea9881c 100644
--- a/src/wallet.cpp
+++ b/src/wallet.cpp
@@ -28,6 +28,8 @@ using namespace std;
CFeeRate payTxFee(DEFAULT_TRANSACTION_FEE);
unsigned int nTxConfirmTarget = 1;
bool bSpendZeroConfChange = true;
+bool fSendFreeTransactions = false;
+bool fPayAtLeastCustomFee = true;
/**
* Fees smaller than this (in satoshi) are considered zero fee (for transaction creation)
@@ -1382,7 +1384,7 @@ bool CWallet::CreateTransaction(const vector<pair<CScript, CAmount> >& vecSend,
{
LOCK2(cs_main, cs_wallet);
{
- nFeeRet = payTxFee.GetFeePerK();
+ nFeeRet = 0;
while (true)
{
txNew.vin.clear();
@@ -1502,7 +1504,7 @@ bool CWallet::CreateTransaction(const vector<pair<CScript, CAmount> >& vecSend,
break; // Done, enough fee included.
// Too big to send for free? Include more fee and try again:
- if (nBytes > MAX_FREE_TRANSACTION_CREATE_SIZE)
+ if (!fSendFreeTransactions || nBytes > MAX_FREE_TRANSACTION_CREATE_SIZE)
{
nFeeRet = nFeeNeeded;
continue;
@@ -1628,6 +1630,12 @@ CAmount CWallet::GetMinimumFee(unsigned int nTxBytes, unsigned int nConfirmTarge
{
// payTxFee is user-set "I want to pay this much"
CAmount nFeeNeeded = payTxFee.GetFee(nTxBytes);
+ // prevent user from paying a non-sense fee (like 1 satoshi): 0 < fee < minRelayFee
+ if (nFeeNeeded > 0 && nFeeNeeded < ::minRelayTxFee.GetFee(nTxBytes))
+ nFeeNeeded = ::minRelayTxFee.GetFee(nTxBytes);
+ // user selected total at least (default=true)
+ if (fPayAtLeastCustomFee && nFeeNeeded > 0 && nFeeNeeded < payTxFee.GetFeePerK())
+ nFeeNeeded = payTxFee.GetFeePerK();
// User didn't set: use -txconfirmtarget to estimate...
if (nFeeNeeded == 0)
nFeeNeeded = pool.estimateFee(nConfirmTarget).GetFee(nTxBytes);