@ -34,6 +34,8 @@ void WalletTxToJSON(const CWalletTx& wtx, Object& entry)
@@ -34,6 +34,8 @@ void WalletTxToJSON(const CWalletTx& wtx, Object& entry)
{
int confirms = wtx . GetDepthInMainChain ( ) ;
entry . push_back ( Pair ( " confirmations " , confirms ) ) ;
if ( wtx . IsCoinBase ( ) )
entry . push_back ( Pair ( " generated " , true ) ) ;
if ( confirms )
{
entry . push_back ( Pair ( " blockhash " , wtx . hashBlock . GetHex ( ) ) ) ;
@ -445,12 +447,12 @@ int64 GetAccountBalance(CWalletDB& walletdb, const string& strAccount, int nMinD
@@ -445,12 +447,12 @@ int64 GetAccountBalance(CWalletDB& walletdb, const string& strAccount, int nMinD
if ( ! wtx . IsFinal ( ) )
continue ;
int64 nGenerated , n Received , nSent , nFee ;
wtx . GetAccountAmounts ( strAccount , nGenerated , n Received , nSent , nFee ) ;
int64 nReceived , nSent , nFee ;
wtx . GetAccountAmounts ( strAccount , nReceived , nSent , nFee ) ;
if ( nReceived ! = 0 & & wtx . GetDepthInMainChain ( ) > = nMinDepth )
nBalance + = nReceived ;
nBalance + = nGenerated - nSent - nFee ;
nBalance - = nSent + nFee ;
}
// Tally internal accounting entries
@ -492,12 +494,11 @@ Value getbalance(const Array& params, bool fHelp)
@@ -492,12 +494,11 @@ Value getbalance(const Array& params, bool fHelp)
if ( ! wtx . IsFinal ( ) )
continue ;
int64 allGeneratedImmature , allGeneratedMature , allFee ;
allGeneratedImmature = allGeneratedMature = allFee = 0 ;
int64 allFee ;
string strSentAccount ;
list < pair < CTxDestination , int64 > > listReceived ;
list < pair < CTxDestination , int64 > > listSent ;
wtx . GetAmounts ( allGeneratedImmature , allGeneratedMature , listReceived , listSent , allFee , strSentAccount ) ;
wtx . GetAmounts ( listReceived , listSent , allFee , strSentAccount ) ;
if ( wtx . GetDepthInMainChain ( ) > = nMinDepth )
{
BOOST_FOREACH ( const PAIRTYPE ( CTxDestination , int64 ) & r , listReceived )
@ -506,7 +507,6 @@ Value getbalance(const Array& params, bool fHelp)
@@ -506,7 +507,6 @@ Value getbalance(const Array& params, bool fHelp)
BOOST_FOREACH ( const PAIRTYPE ( CTxDestination , int64 ) & r , listSent )
nBalance - = r . second ;
nBalance - = allFee ;
nBalance + = allGeneratedMature ;
}
return ValueFromAmount ( nBalance ) ;
}
@ -877,35 +877,15 @@ Value listreceivedbyaccount(const Array& params, bool fHelp)
@@ -877,35 +877,15 @@ Value listreceivedbyaccount(const Array& params, bool fHelp)
void ListTransactions ( const CWalletTx & wtx , const string & strAccount , int nMinDepth , bool fLong , Array & ret )
{
int64 nGeneratedImmature , nGeneratedMature , n Fee ;
int64 nFee ;
string strSentAccount ;
list < pair < CTxDestination , int64 > > listReceived ;
list < pair < CTxDestination , int64 > > listSent ;
wtx . GetAmounts ( nGeneratedImmature , nGeneratedMature , listReceived , listSent , nFee , strSentAccount ) ;
wtx . GetAmounts ( listReceived , listSent , nFee , strSentAccount ) ;
bool fAllAccounts = ( strAccount = = string ( " * " ) ) ;
// Generated blocks assigned to account ""
if ( ( nGeneratedMature + nGeneratedImmature ) ! = 0 & & ( fAllAccounts | | strAccount = = " " ) )
{
Object entry ;
entry . push_back ( Pair ( " account " , string ( " " ) ) ) ;
if ( nGeneratedImmature )
{
entry . push_back ( Pair ( " category " , wtx . GetDepthInMainChain ( ) ? " immature " : " orphan " ) ) ;
entry . push_back ( Pair ( " amount " , ValueFromAmount ( nGeneratedImmature ) ) ) ;
}
else
{
entry . push_back ( Pair ( " category " , " generate " ) ) ;
entry . push_back ( Pair ( " amount " , ValueFromAmount ( nGeneratedMature ) ) ) ;
}
if ( fLong )
WalletTxToJSON ( wtx , entry ) ;
ret . push_back ( entry ) ;
}
// Sent
if ( ( ! listSent . empty ( ) | | nFee ! = 0 ) & & ( fAllAccounts | | strAccount = = strSentAccount ) )
{
@ -936,6 +916,16 @@ void ListTransactions(const CWalletTx& wtx, const string& strAccount, int nMinDe
@@ -936,6 +916,16 @@ void ListTransactions(const CWalletTx& wtx, const string& strAccount, int nMinDe
Object entry ;
entry . push_back ( Pair ( " account " , account ) ) ;
entry . push_back ( Pair ( " address " , CBitcoinAddress ( r . first ) . ToString ( ) ) ) ;
if ( wtx . IsCoinBase ( ) )
{
if ( wtx . GetDepthInMainChain ( ) < 1 )
entry . push_back ( Pair ( " category " , " orphan " ) ) ;
else if ( wtx . GetBlocksToMaturity ( ) > 0 )
entry . push_back ( Pair ( " category " , " immature " ) ) ;
else
entry . push_back ( Pair ( " category " , " generate " ) ) ;
}
else
entry . push_back ( Pair ( " category " , " receive " ) ) ;
entry . push_back ( Pair ( " amount " , ValueFromAmount ( r . second ) ) ) ;
if ( fLong )
@ -1040,17 +1030,16 @@ Value listaccounts(const Array& params, bool fHelp)
@@ -1040,17 +1030,16 @@ Value listaccounts(const Array& params, bool fHelp)
for ( map < uint256 , CWalletTx > : : iterator it = pwalletMain - > mapWallet . begin ( ) ; it ! = pwalletMain - > mapWallet . end ( ) ; + + it )
{
const CWalletTx & wtx = ( * it ) . second ;
int64 nGeneratedImmature , nGeneratedMature , n Fee ;
int64 nFee ;
string strSentAccount ;
list < pair < CTxDestination , int64 > > listReceived ;
list < pair < CTxDestination , int64 > > listSent ;
wtx . GetAmounts ( nGeneratedImmature , nGeneratedMature , listReceived , listSent , nFee , strSentAccount ) ;
wtx . GetAmounts ( listReceived , listSent , nFee , strSentAccount ) ;
mapAccountBalances [ strSentAccount ] - = nFee ;
BOOST_FOREACH ( const PAIRTYPE ( CTxDestination , int64 ) & s , listSent )
mapAccountBalances [ strSentAccount ] - = s . second ;
if ( wtx . GetDepthInMainChain ( ) > = nMinDepth )
{
mapAccountBalances [ " " ] + = nGeneratedMature ;
BOOST_FOREACH ( const PAIRTYPE ( CTxDestination , int64 ) & r , listReceived )
if ( pwalletMain - > mapAddressBook . count ( r . first ) )
mapAccountBalances [ pwalletMain - > mapAddressBook [ r . first ] ] + = r . second ;