Merge branch 'getmininginfo' of https://github.com/luke-jr/bitcoin

This commit is contained in:
Gavin Andresen 2012-01-13 10:06:05 -05:00
commit f290a649f9
3 changed files with 42 additions and 3 deletions

View File

@ -347,10 +347,7 @@ Value getinfo(const Array& params, bool fHelp)
obj.push_back(Pair("blocks", (int)nBestHeight)); obj.push_back(Pair("blocks", (int)nBestHeight));
obj.push_back(Pair("connections", (int)vNodes.size())); obj.push_back(Pair("connections", (int)vNodes.size()));
obj.push_back(Pair("proxy", (fUseProxy ? addrProxy.ToStringIPPort() : string()))); obj.push_back(Pair("proxy", (fUseProxy ? addrProxy.ToStringIPPort() : string())));
obj.push_back(Pair("generate", (bool)fGenerateBitcoins));
obj.push_back(Pair("genproclimit", (int)(fLimitProcessors ? nLimitProcessors : -1)));
obj.push_back(Pair("difficulty", (double)GetDifficulty())); obj.push_back(Pair("difficulty", (double)GetDifficulty()));
obj.push_back(Pair("hashespersec", gethashespersec(params, false)));
obj.push_back(Pair("testnet", fTestNet)); obj.push_back(Pair("testnet", fTestNet));
obj.push_back(Pair("keypoololdest", (boost::int64_t)pwalletMain->GetOldestKeyPoolTime())); obj.push_back(Pair("keypoololdest", (boost::int64_t)pwalletMain->GetOldestKeyPoolTime()));
obj.push_back(Pair("keypoolsize", pwalletMain->GetKeyPoolSize())); obj.push_back(Pair("keypoolsize", pwalletMain->GetKeyPoolSize()));
@ -362,6 +359,28 @@ Value getinfo(const Array& params, bool fHelp)
} }
Value getmininginfo(const Array& params, bool fHelp)
{
if (fHelp || params.size() != 0)
throw runtime_error(
"getmininginfo\n"
"Returns an object containing mining-related information.");
Object obj;
obj.push_back(Pair("blocks", (int)nBestHeight));
obj.push_back(Pair("currentblocksize",(uint64_t)nLastBlockSize));
obj.push_back(Pair("currentblocktx",(uint64_t)nLastBlockTx));
obj.push_back(Pair("difficulty", (double)GetDifficulty()));
obj.push_back(Pair("errors", GetWarnings("statusbar")));
obj.push_back(Pair("generate", (bool)fGenerateBitcoins));
obj.push_back(Pair("genproclimit", (int)(fLimitProcessors ? nLimitProcessors : -1)));
obj.push_back(Pair("hashespersec", gethashespersec(params, false)));
obj.push_back(Pair("pooledtx", (uint64_t)nPooledTx));
obj.push_back(Pair("testnet", fTestNet));
return obj;
}
Value getnewaddress(const Array& params, bool fHelp) Value getnewaddress(const Array& params, bool fHelp)
{ {
if (fHelp || params.size() > 1) if (fHelp || params.size() > 1)
@ -1986,6 +2005,7 @@ pair<string, rpcfn_type> pCallTable[] =
make_pair("setgenerate", &setgenerate), make_pair("setgenerate", &setgenerate),
make_pair("gethashespersec", &gethashespersec), make_pair("gethashespersec", &gethashespersec),
make_pair("getinfo", &getinfo), make_pair("getinfo", &getinfo),
make_pair("getmininginfo", &getmininginfo),
make_pair("getnewaddress", &getnewaddress), make_pair("getnewaddress", &getnewaddress),
make_pair("getaccountaddress", &getaccountaddress), make_pair("getaccountaddress", &getaccountaddress),
make_pair("setaccount", &setaccount), make_pair("setaccount", &setaccount),
@ -2036,6 +2056,7 @@ string pAllowInSafeMode[] =
"setgenerate", "setgenerate",
"gethashespersec", "gethashespersec",
"getinfo", "getinfo",
"getmininginfo",
"getnewaddress", "getnewaddress",
"getaccountaddress", "getaccountaddress",
"getaccount", "getaccount",

View File

@ -559,8 +559,11 @@ bool CTransaction::AcceptToMemoryPool(bool fCheckInputs, bool* pfMissingInputs)
return AcceptToMemoryPool(txdb, fCheckInputs, pfMissingInputs); return AcceptToMemoryPool(txdb, fCheckInputs, pfMissingInputs);
} }
uint64 nPooledTx = 0;
bool CTransaction::AddToMemoryPoolUnchecked() bool CTransaction::AddToMemoryPoolUnchecked()
{ {
printf("AcceptToMemoryPoolUnchecked(): size %lu\n", mapTransactions.size());
// Add to memory pool without checking anything. Don't call this directly, // Add to memory pool without checking anything. Don't call this directly,
// call AcceptToMemoryPool to properly check the transaction first. // call AcceptToMemoryPool to properly check the transaction first.
CRITICAL_BLOCK(cs_mapTransactions) CRITICAL_BLOCK(cs_mapTransactions)
@ -570,6 +573,7 @@ bool CTransaction::AddToMemoryPoolUnchecked()
for (int i = 0; i < vin.size(); i++) for (int i = 0; i < vin.size(); i++)
mapNextTx[vin[i].prevout] = CInPoint(&mapTransactions[hash], i); mapNextTx[vin[i].prevout] = CInPoint(&mapTransactions[hash], i);
nTransactionsUpdated++; nTransactionsUpdated++;
++nPooledTx;
} }
return true; return true;
} }
@ -584,6 +588,7 @@ bool CTransaction::RemoveFromMemoryPool()
mapNextTx.erase(txin.prevout); mapNextTx.erase(txin.prevout);
mapTransactions.erase(GetHash()); mapTransactions.erase(GetHash());
nTransactionsUpdated++; nTransactionsUpdated++;
--nPooledTx;
} }
return true; return true;
} }
@ -2887,6 +2892,9 @@ public:
}; };
uint64 nLastBlockTx = 0;
uint64 nLastBlockSize = 0;
CBlock* CreateNewBlock(CReserveKey& reservekey) CBlock* CreateNewBlock(CReserveKey& reservekey)
{ {
CBlockIndex* pindexPrev = pindexBest; CBlockIndex* pindexPrev = pindexBest;
@ -2974,6 +2982,7 @@ CBlock* CreateNewBlock(CReserveKey& reservekey)
// Collect transactions into block // Collect transactions into block
map<uint256, CTxIndex> mapTestPool; map<uint256, CTxIndex> mapTestPool;
uint64 nBlockSize = 1000; uint64 nBlockSize = 1000;
uint64 nBlockTx = 0;
int nBlockSigOps = 100; int nBlockSigOps = 100;
while (!mapPriority.empty()) while (!mapPriority.empty())
{ {
@ -3008,6 +3017,7 @@ CBlock* CreateNewBlock(CReserveKey& reservekey)
pblock->vtx.push_back(tx); pblock->vtx.push_back(tx);
nBlockSize += nTxSize; nBlockSize += nTxSize;
nBlockSigOps += nTxSigOps; nBlockSigOps += nTxSigOps;
++nBlockTx;
// Add transactions that depend on this one to the priority queue // Add transactions that depend on this one to the priority queue
uint256 hash = tx.GetHash(); uint256 hash = tx.GetHash();
@ -3024,6 +3034,11 @@ CBlock* CreateNewBlock(CReserveKey& reservekey)
} }
} }
} }
nLastBlockTx = nBlockTx;
nLastBlockSize = nBlockSize;
printf("CreateNewBlock(): total size %lu\n", nBlockSize);
} }
pblock->vtx[0].vout[0].nValue = GetBlockValue(pindexPrev->nHeight+1, nFees); pblock->vtx[0].vout[0].nValue = GetBlockValue(pindexPrev->nHeight+1, nFees);

View File

@ -62,7 +62,10 @@ extern CBigNum bnBestChainWork;
extern CBigNum bnBestInvalidWork; extern CBigNum bnBestInvalidWork;
extern uint256 hashBestChain; extern uint256 hashBestChain;
extern CBlockIndex* pindexBest; extern CBlockIndex* pindexBest;
extern uint64 nPooledTx;
extern unsigned int nTransactionsUpdated; extern unsigned int nTransactionsUpdated;
extern uint64 nLastBlockTx;
extern uint64 nLastBlockSize;
extern double dHashesPerSec; extern double dHashesPerSec;
extern int64 nHPSTimerStart; extern int64 nHPSTimerStart;
extern int64 nTimeBestReceived; extern int64 nTimeBestReceived;