Merge branch 'listimmature' of /Users/gavin/src/gavin_btc
This commit is contained in:
commit
485dda9774
3 changed files with 31 additions and 21 deletions
18
main.cpp
18
main.cpp
|
@ -411,18 +411,20 @@ int CWalletTx::GetRequestCount() const
|
|||
return nRequests;
|
||||
}
|
||||
|
||||
void CWalletTx::GetAmounts(int64& nGenerated, list<pair<string, int64> >& listReceived,
|
||||
void CWalletTx::GetAmounts(int64& nGeneratedImmature, int64& nGeneratedMature, list<pair<string, int64> >& listReceived,
|
||||
list<pair<string, int64> >& listSent, int64& nFee, string& strSentAccount) const
|
||||
{
|
||||
nGenerated = nFee = 0;
|
||||
nGeneratedImmature = nGeneratedMature = nFee = 0;
|
||||
listReceived.clear();
|
||||
listSent.clear();
|
||||
strSentAccount = strFromAccount;
|
||||
|
||||
if (IsCoinBase())
|
||||
{
|
||||
if (GetDepthInMainChain() >= COINBASE_MATURITY)
|
||||
nGenerated = GetCredit();
|
||||
if (GetBlocksToMaturity() > 0)
|
||||
nGeneratedImmature = CTransaction::GetCredit();
|
||||
else
|
||||
nGeneratedMature = GetCredit();
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -470,15 +472,15 @@ void CWalletTx::GetAccountAmounts(const string& strAccount, int64& nGenerated, i
|
|||
{
|
||||
nGenerated = nReceived = nSent = nFee = 0;
|
||||
|
||||
int64 allGenerated, allFee;
|
||||
allGenerated = allFee = 0;
|
||||
int64 allGeneratedImmature, allGeneratedMature, allFee;
|
||||
allGeneratedImmature = allGeneratedMature = allFee = 0;
|
||||
string strSentAccount;
|
||||
list<pair<string, int64> > listReceived;
|
||||
list<pair<string, int64> > listSent;
|
||||
GetAmounts(allGenerated, listReceived, listSent, allFee, strSentAccount);
|
||||
GetAmounts(allGeneratedImmature, allGeneratedMature, listReceived, listSent, allFee, strSentAccount);
|
||||
|
||||
if (strAccount == "")
|
||||
nGenerated = allGenerated;
|
||||
nGenerated = allGeneratedMature;
|
||||
if (strAccount == strSentAccount)
|
||||
{
|
||||
foreach(const PAIRTYPE(string,int64)& s, listSent)
|
||||
|
|
2
main.h
2
main.h
|
@ -994,7 +994,7 @@ public:
|
|||
return nChangeCached;
|
||||
}
|
||||
|
||||
void GetAmounts(int64& nGenerated, list<pair<string /* address */, int64> >& listReceived,
|
||||
void GetAmounts(int64& nGeneratedImmature, int64& nGeneratedMature, list<pair<string /* address */, int64> >& listReceived,
|
||||
list<pair<string /* address */, int64> >& listSent, int64& nFee, string& strSentAccount) const;
|
||||
|
||||
void GetAccountAmounts(const string& strAccount, int64& nGenerated, int64& nReceived,
|
||||
|
|
32
rpc.cpp
32
rpc.cpp
|
@ -649,12 +649,12 @@ Value getbalance(const Array& params, bool fHelp)
|
|||
for (map<uint256, CWalletTx>::iterator it = mapWallet.begin(); it != mapWallet.end(); ++it)
|
||||
{
|
||||
const CWalletTx& wtx = (*it).second;
|
||||
int64 allGenerated, allFee;
|
||||
allGenerated = allFee = 0;
|
||||
int64 allGeneratedImmature, allGeneratedMature, allFee;
|
||||
allGeneratedImmature = allGeneratedMature = allFee = 0;
|
||||
string strSentAccount;
|
||||
list<pair<string, int64> > listReceived;
|
||||
list<pair<string, int64> > listSent;
|
||||
wtx.GetAmounts(allGenerated, listReceived, listSent, allFee, strSentAccount);
|
||||
wtx.GetAmounts(allGeneratedImmature, allGeneratedMature, listReceived, listSent, allFee, strSentAccount);
|
||||
foreach(const PAIRTYPE(string,int64)& r, listReceived)
|
||||
{
|
||||
nBalance += r.second;
|
||||
|
@ -664,7 +664,7 @@ Value getbalance(const Array& params, bool fHelp)
|
|||
foreach(const PAIRTYPE(string,int64)& r, listSent)
|
||||
nBalance -= r.second;
|
||||
nBalance -= allFee;
|
||||
nBalance += allGenerated;
|
||||
nBalance += allGeneratedMature;
|
||||
}
|
||||
printf("Found %d accounts\n", vAccounts.size());
|
||||
return ValueFromAmount(nBalance);
|
||||
|
@ -993,21 +993,29 @@ Value listreceivedbyaccount(const Array& params, bool fHelp)
|
|||
|
||||
void ListTransactions(const CWalletTx& wtx, const string& strAccount, int nMinDepth, bool fLong, Array& ret)
|
||||
{
|
||||
int64 nGenerated, nFee;
|
||||
int64 nGeneratedImmature, nGeneratedMature, nFee;
|
||||
string strSentAccount;
|
||||
list<pair<string, int64> > listReceived;
|
||||
list<pair<string, int64> > listSent;
|
||||
wtx.GetAmounts(nGenerated, listReceived, listSent, nFee, strSentAccount);
|
||||
wtx.GetAmounts(nGeneratedImmature, nGeneratedMature, listReceived, listSent, nFee, strSentAccount);
|
||||
|
||||
bool fAllAccounts = (strAccount == string("*"));
|
||||
|
||||
// Generated blocks assigned to account ""
|
||||
if (nGenerated != 0 && (fAllAccounts || strAccount == ""))
|
||||
if ((nGeneratedMature+nGeneratedImmature) != 0 && (fAllAccounts || strAccount == ""))
|
||||
{
|
||||
Object entry;
|
||||
entry.push_back(Pair("account", string("")));
|
||||
entry.push_back(Pair("category", "generate"));
|
||||
entry.push_back(Pair("amount", ValueFromAmount(nGenerated)));
|
||||
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);
|
||||
|
@ -1159,17 +1167,17 @@ Value listaccounts(const Array& params, bool fHelp)
|
|||
for (map<uint256, CWalletTx>::iterator it = mapWallet.begin(); it != mapWallet.end(); ++it)
|
||||
{
|
||||
const CWalletTx& wtx = (*it).second;
|
||||
int64 nGenerated, nFee;
|
||||
int64 nGeneratedImmature, nGeneratedMature, nFee;
|
||||
string strSentAccount;
|
||||
list<pair<string, int64> > listReceived;
|
||||
list<pair<string, int64> > listSent;
|
||||
wtx.GetAmounts(nGenerated, listReceived, listSent, nFee, strSentAccount);
|
||||
wtx.GetAmounts(nGeneratedImmature, nGeneratedMature, listReceived, listSent, nFee, strSentAccount);
|
||||
mapAccountBalances[strSentAccount] -= nFee;
|
||||
foreach(const PAIRTYPE(string, int64)& s, listSent)
|
||||
mapAccountBalances[strSentAccount] -= s.second;
|
||||
if (wtx.GetDepthInMainChain() >= nMinDepth)
|
||||
{
|
||||
mapAccountBalances[""] += nGenerated;
|
||||
mapAccountBalances[""] += nGeneratedMature;
|
||||
foreach(const PAIRTYPE(string, int64)& r, listReceived)
|
||||
if (mapAddressBook.count(r.first))
|
||||
mapAccountBalances[mapAddressBook[r.first]] += r.second;
|
||||
|
|
Loading…
Reference in a new issue