aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGavin Andresen <gavinandresen@gmail.com>2013-09-18 11:48:41 +1000
committerGavin Andresen <gavinandresen@gmail.com>2013-10-04 22:05:06 +1000
commitea1cd5b47f473eed60b3ed95853b053e9f686d69 (patch)
treeae8b19ae5371cb7b76731ae4a4fa5c8067ae06c3
parentb16e9f02c82b98635da53c7e485614cba766f0a9 (diff)
downloadbitcoin-ea1cd5b47f473eed60b3ed95853b053e9f686d69.tar.xz
Remove CENT-output free transaction rule when relaying
Remove the (relay/mempool) rule that all outputs of free transactions must be greater than 0.01 XBT. Dust spam is now taken care of by making dusty outputs non-standard.
-rw-r--r--src/main.cpp6
-rw-r--r--src/wallet.cpp7
2 files changed, 8 insertions, 5 deletions
diff --git a/src/main.cpp b/src/main.cpp
index 4b2c32e345..e2e2d3b84f 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -760,8 +760,10 @@ int64 GetMinFee(const CTransaction& tx, bool fAllowFree, enum GetMinFee_mode mod
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 54ede12a50..daa5ba06ff 100644
--- a/src/wallet.cpp
+++ b/src/wallet.cpp
@@ -1232,9 +1232,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);