aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Morcos <morcos@chaincode.com>2015-01-16 12:17:57 -0500
committerAlex Morcos <morcos@chaincode.com>2015-01-16 12:17:57 -0500
commit2d9b0b7f03a268e557c6dce1dfa29401b5c9178b (patch)
tree760c4a41b8e948e64c0dc72643d3d2ab5f7b2bbb
parent9fe53a85e0e50ca82e369b7d29485a0a6f0f8dbf (diff)
downloadbitcoin-2d9b0b7f03a268e557c6dce1dfa29401b5c9178b.tar.xz
Fix priority calculation in CreateTransaction
Make this projection of priority in 1 block match the calculation in the low priority reject code.
-rw-r--r--src/wallet.cpp8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/wallet.cpp b/src/wallet.cpp
index 6c5af3bdc7..6c24faf61c 100644
--- a/src/wallet.cpp
+++ b/src/wallet.cpp
@@ -1439,10 +1439,14 @@ bool CWallet::CreateTransaction(const vector<pair<CScript, CAmount> >& vecSend,
BOOST_FOREACH(PAIRTYPE(const CWalletTx*, unsigned int) pcoin, setCoins)
{
CAmount nCredit = pcoin.first->vout[pcoin.second].nValue;
- //The priority after the next block (depth+1) is used instead of the current,
+ //The coin age after the next block (depth+1) is used instead of the current,
//reflecting an assumption the user would accept a bit more delay for
//a chance at a free transaction.
- dPriority += (double)nCredit * (pcoin.first->GetDepthInMainChain()+1);
+ //But mempool inputs might still be in the mempool, so their age stays 0
+ int age = pcoin.first->GetDepthInMainChain();
+ if (age != 0)
+ age += 1;
+ dPriority += (double)nCredit * age;
}
CAmount nChange = nValueIn - nValue - nFeeRet;