aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGavin Andresen <gavinandresen@gmail.com>2013-10-19 23:01:47 -0700
committerGavin Andresen <gavinandresen@gmail.com>2013-10-19 23:01:47 -0700
commitd3b0fa1d82d0883f2e18e95b91125dd19659a17a (patch)
treeb63032e40aacde666251fe4a9fee088de3af2bd5 /src
parente11107f234b2172a03a7bb5fc5fd28ce00ad4e11 (diff)
parent16b3ff66e0137b68de0d08ad88ce9798bce2d68d (diff)
Merge pull request #3008 from gavinandresen/CENTrule
Two small free transaction policy changes
Diffstat (limited to 'src')
-rw-r--r--src/main.cpp15
-rw-r--r--src/wallet.cpp7
2 files changed, 13 insertions, 9 deletions
diff --git a/src/main.cpp b/src/main.cpp
index 215a7ba620..6c2898cff5 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -722,15 +722,18 @@ int64 GetMinFee(const CTransaction& tx, bool fAllowFree, enum GetMinFee_mode mod
{
// There is a free transaction area in blocks created by most miners,
// * If we are relaying we allow transactions up to DEFAULT_BLOCK_PRIORITY_SIZE - 1000
- // to be considered to fall into this category
- // * If we are creating a transaction we allow transactions up to DEFAULT_BLOCK_PRIORITY_SIZE - 17000
- // (= 10000) to be considered safe and assume they can likely make it into this section
- if (nBytes < (mode == GMF_SEND ? (DEFAULT_BLOCK_PRIORITY_SIZE - 17000) : (DEFAULT_BLOCK_PRIORITY_SIZE - 1000)))
+ // to be considered to fall into this category. We don't want to encourage sending
+ // multiple transactions instead of one big transaction to avoid fees.
+ // * If we are creating a transaction we allow transactions up to 1,000 bytes
+ // to be considered safe and assume they can likely make it into this section.
+ if (nBytes < (mode == GMF_SEND ? 1000 : (DEFAULT_BLOCK_PRIORITY_SIZE - 1000)))
nMinFee = 0;
}
- // To limit dust spam, require base fee if any output is less than 0.01
- if (nMinFee < nBaseFee)
+ // This code can be removed after enough miners have upgraded to version 0.9.
+ // Until then, be safe when sending and require a fee if any output
+ // is less than CENT:
+ if (nMinFee < nBaseFee && mode == GMF_SEND)
{
BOOST_FOREACH(const CTxOut& txout, tx.vout)
if (txout.nValue < CENT)
diff --git a/src/wallet.cpp b/src/wallet.cpp
index 0f0ce7e631..03d79406d8 100644
--- a/src/wallet.cpp
+++ b/src/wallet.cpp
@@ -1231,9 +1231,10 @@ bool CWallet::CreateTransaction(const vector<pair<CScript, int64> >& vecSend,
}
int64 nChange = nValueIn - nValue - nFeeRet;
- // if sub-cent change is required, the fee must be raised to at least nMinTxFee
- // or until nChange becomes zero
- // NOTE: this depends on the exact behaviour of GetMinFee
+ // The following if statement should be removed once enough miners
+ // have upgraded to the 0.9 GetMinFee() rules. Until then, this avoids
+ // creating free transactions that have change outputs less than
+ // CENT bitcoins.
if (nFeeRet < CTransaction::nMinTxFee && nChange > 0 && nChange < CENT)
{
int64 nMoveToFee = min(nChange, CTransaction::nMinTxFee - nFeeRet);