From 9cd1dd9f6b5aace6c0e780bf4365fb2900757c1a Mon Sep 17 00:00:00 2001 From: Alex Morcos Date: Fri, 16 Jan 2015 12:17:57 -0500 Subject: [PATCH] Fix priority calculation in CreateTransaction Make this projection of priority in 1 block match the calculation in the low priority reject code. Rebased-From: 2d9b0b7f03a268e557c6dce1dfa29401b5c9178b Github-Pull: #5675 Conflicts: src/wallet.cpp --- src/wallet.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/wallet.cpp b/src/wallet.cpp index 80f011e7d..0e92c8307 100644 --- a/src/wallet.cpp +++ b/src/wallet.cpp @@ -1281,10 +1281,14 @@ bool CWallet::CreateTransaction(const vector >& vecSend, BOOST_FOREACH(PAIRTYPE(const CWalletTx*, unsigned int) pcoin, setCoins) { int64_t 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; } int64_t nChange = nValueIn - nValue - nFeeRet;