Fix priority calculation in CreateTransaction

Make this projection of priority in 1 block match the calculation in the low priority reject code.

Rebased-From: 2d9b0b7f03
Github-Pull: #5675

Conflicts:
	src/wallet.cpp
This commit is contained in:
Alex Morcos
2015-01-16 12:17:57 -05:00
committed by Gregory Maxwell
parent 74f29c2737
commit 9cd1dd9f6b

View File

@@ -1281,10 +1281,14 @@ bool CWallet::CreateTransaction(const vector<pair<CScript, int64_t> >& vecSend,
BOOST_FOREACH(PAIRTYPE(const CWalletTx*, unsigned int) pcoin, setCoins) BOOST_FOREACH(PAIRTYPE(const CWalletTx*, unsigned int) pcoin, setCoins)
{ {
int64_t nCredit = pcoin.first->vout[pcoin.second].nValue; 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 //reflecting an assumption the user would accept a bit more delay for
//a chance at a free transaction. //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; int64_t nChange = nValueIn - nValue - nFeeRet;