Merge pull request #4134
aa250f0
Remove NumBlocksOfPeers (Wladimir J. van der Laan)
This commit is contained in:
commit
82564e21e7
9 changed files with 19 additions and 75 deletions
11
src/main.cpp
11
src/main.cpp
|
@ -54,8 +54,6 @@ int64_t CTransaction::nMinTxFee = 10000; // Override with -mintxfee
|
||||||
/** Fees smaller than this (in satoshi) are considered zero fee (for relaying and mining) */
|
/** Fees smaller than this (in satoshi) are considered zero fee (for relaying and mining) */
|
||||||
int64_t CTransaction::nMinRelayTxFee = 1000;
|
int64_t CTransaction::nMinRelayTxFee = 1000;
|
||||||
|
|
||||||
static CMedianFilter<int> cPeerBlockCounts(8, 0); // Amount of blocks that other nodes claim to have
|
|
||||||
|
|
||||||
struct COrphanBlock {
|
struct COrphanBlock {
|
||||||
uint256 hashBlock;
|
uint256 hashBlock;
|
||||||
uint256 hashPrev;
|
uint256 hashPrev;
|
||||||
|
@ -1307,12 +1305,6 @@ bool CheckProofOfWork(uint256 hash, unsigned int nBits)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Return maximum amount of blocks that other nodes claim to have
|
|
||||||
int GetNumBlocksOfPeers()
|
|
||||||
{
|
|
||||||
return std::max(cPeerBlockCounts.median(), Checkpoints::GetTotalBlocksEstimate());
|
|
||||||
}
|
|
||||||
|
|
||||||
bool IsInitialBlockDownload()
|
bool IsInitialBlockDownload()
|
||||||
{
|
{
|
||||||
LOCK(cs_main);
|
LOCK(cs_main);
|
||||||
|
@ -3583,9 +3575,6 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv)
|
||||||
LogPrintf("receive version message: %s: version %d, blocks=%d, us=%s, them=%s, peer=%s\n", pfrom->cleanSubVer, pfrom->nVersion, pfrom->nStartingHeight, addrMe.ToString(), addrFrom.ToString(), pfrom->addr.ToString());
|
LogPrintf("receive version message: %s: version %d, blocks=%d, us=%s, them=%s, peer=%s\n", pfrom->cleanSubVer, pfrom->nVersion, pfrom->nStartingHeight, addrMe.ToString(), addrFrom.ToString(), pfrom->addr.ToString());
|
||||||
|
|
||||||
AddTimeData(pfrom->addr, nTime);
|
AddTimeData(pfrom->addr, nTime);
|
||||||
|
|
||||||
LOCK(cs_main);
|
|
||||||
cPeerBlockCounts.input(pfrom->nStartingHeight);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -160,8 +160,6 @@ void ThreadScriptCheck();
|
||||||
bool CheckProofOfWork(uint256 hash, unsigned int nBits);
|
bool CheckProofOfWork(uint256 hash, unsigned int nBits);
|
||||||
/** Calculate the minimum amount of work a received block needs, without knowing its direct parent */
|
/** Calculate the minimum amount of work a received block needs, without knowing its direct parent */
|
||||||
unsigned int ComputeMinWork(unsigned int nBase, int64_t nTime);
|
unsigned int ComputeMinWork(unsigned int nBase, int64_t nTime);
|
||||||
/** Get the number of active peers */
|
|
||||||
int GetNumBlocksOfPeers();
|
|
||||||
/** Check whether we are doing an initial block download (synchronizing from disk or network) */
|
/** Check whether we are doing an initial block download (synchronizing from disk or network) */
|
||||||
bool IsInitialBlockDownload();
|
bool IsInitialBlockDownload();
|
||||||
/** Format a string that describes several potential problems detected by the core */
|
/** Format a string that describes several potential problems detected by the core */
|
||||||
|
|
|
@ -403,8 +403,8 @@ void BitcoinGUI::setClientModel(ClientModel *clientModel)
|
||||||
setNumConnections(clientModel->getNumConnections());
|
setNumConnections(clientModel->getNumConnections());
|
||||||
connect(clientModel, SIGNAL(numConnectionsChanged(int)), this, SLOT(setNumConnections(int)));
|
connect(clientModel, SIGNAL(numConnectionsChanged(int)), this, SLOT(setNumConnections(int)));
|
||||||
|
|
||||||
setNumBlocks(clientModel->getNumBlocks(), clientModel->getNumBlocksOfPeers());
|
setNumBlocks(clientModel->getNumBlocks());
|
||||||
connect(clientModel, SIGNAL(numBlocksChanged(int,int)), this, SLOT(setNumBlocks(int,int)));
|
connect(clientModel, SIGNAL(numBlocksChanged(int)), this, SLOT(setNumBlocks(int)));
|
||||||
|
|
||||||
// Receive and report messages from client model
|
// Receive and report messages from client model
|
||||||
connect(clientModel, SIGNAL(message(QString,QString,unsigned int)), this, SLOT(message(QString,QString,unsigned int)));
|
connect(clientModel, SIGNAL(message(QString,QString,unsigned int)), this, SLOT(message(QString,QString,unsigned int)));
|
||||||
|
@ -617,7 +617,7 @@ void BitcoinGUI::setNumConnections(int count)
|
||||||
labelConnectionsIcon->setToolTip(tr("%n active connection(s) to Bitcoin network", "", count));
|
labelConnectionsIcon->setToolTip(tr("%n active connection(s) to Bitcoin network", "", count));
|
||||||
}
|
}
|
||||||
|
|
||||||
void BitcoinGUI::setNumBlocks(int count, int nTotalBlocks)
|
void BitcoinGUI::setNumBlocks(int count)
|
||||||
{
|
{
|
||||||
// Prevent orphan statusbar messages (e.g. hover Quit in main menu, wait until chain-sync starts -> garbelled text)
|
// Prevent orphan statusbar messages (e.g. hover Quit in main menu, wait until chain-sync starts -> garbelled text)
|
||||||
statusBar()->clearMessage();
|
statusBar()->clearMessage();
|
||||||
|
@ -646,17 +646,10 @@ void BitcoinGUI::setNumBlocks(int count, int nTotalBlocks)
|
||||||
QDateTime currentDate = QDateTime::currentDateTime();
|
QDateTime currentDate = QDateTime::currentDateTime();
|
||||||
int secs = lastBlockDate.secsTo(currentDate);
|
int secs = lastBlockDate.secsTo(currentDate);
|
||||||
|
|
||||||
if(count < nTotalBlocks)
|
tooltip = tr("Processed %1 blocks of transaction history.").arg(count);
|
||||||
{
|
|
||||||
tooltip = tr("Processed %1 of %2 (estimated) blocks of transaction history.").arg(count).arg(nTotalBlocks);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
tooltip = tr("Processed %1 blocks of transaction history.").arg(count);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Set icon state: spinning if catching up, tick otherwise
|
// Set icon state: spinning if catching up, tick otherwise
|
||||||
if(secs < 90*60 && count >= nTotalBlocks)
|
if(secs < 90*60)
|
||||||
{
|
{
|
||||||
tooltip = tr("Up to date") + QString(".<br>") + tooltip;
|
tooltip = tr("Up to date") + QString(".<br>") + tooltip;
|
||||||
labelBlocksIcon->setPixmap(QIcon(":/icons/synced").pixmap(STATUSBAR_ICONSIZE, STATUSBAR_ICONSIZE));
|
labelBlocksIcon->setPixmap(QIcon(":/icons/synced").pixmap(STATUSBAR_ICONSIZE, STATUSBAR_ICONSIZE));
|
||||||
|
|
|
@ -130,7 +130,7 @@ public slots:
|
||||||
/** Set number of connections shown in the UI */
|
/** Set number of connections shown in the UI */
|
||||||
void setNumConnections(int count);
|
void setNumConnections(int count);
|
||||||
/** Set number of blocks shown in the UI */
|
/** Set number of blocks shown in the UI */
|
||||||
void setNumBlocks(int count, int nTotalBlocks);
|
void setNumBlocks(int count);
|
||||||
|
|
||||||
/** Notify the user of an event from the core network or transaction handling code.
|
/** Notify the user of an event from the core network or transaction handling code.
|
||||||
@param[in] title the message box / notification title
|
@param[in] title the message box / notification title
|
||||||
|
|
|
@ -23,7 +23,7 @@ static const int64_t nClientStartupTime = GetTime();
|
||||||
|
|
||||||
ClientModel::ClientModel(OptionsModel *optionsModel, QObject *parent) :
|
ClientModel::ClientModel(OptionsModel *optionsModel, QObject *parent) :
|
||||||
QObject(parent), optionsModel(optionsModel),
|
QObject(parent), optionsModel(optionsModel),
|
||||||
cachedNumBlocks(0), cachedNumBlocksOfPeers(0),
|
cachedNumBlocks(0),
|
||||||
cachedReindexing(0), cachedImporting(0),
|
cachedReindexing(0), cachedImporting(0),
|
||||||
numBlocksAtStartup(-1), pollTimer(0)
|
numBlocksAtStartup(-1), pollTimer(0)
|
||||||
{
|
{
|
||||||
|
@ -101,19 +101,16 @@ void ClientModel::updateTimer()
|
||||||
// Some quantities (such as number of blocks) change so fast that we don't want to be notified for each change.
|
// Some quantities (such as number of blocks) change so fast that we don't want to be notified for each change.
|
||||||
// Periodically check and update with a timer.
|
// Periodically check and update with a timer.
|
||||||
int newNumBlocks = getNumBlocks();
|
int newNumBlocks = getNumBlocks();
|
||||||
int newNumBlocksOfPeers = getNumBlocksOfPeers();
|
|
||||||
|
|
||||||
// check for changed number of blocks we have, number of blocks peers claim to have, reindexing state and importing state
|
// check for changed number of blocks we have, number of blocks peers claim to have, reindexing state and importing state
|
||||||
if (cachedNumBlocks != newNumBlocks || cachedNumBlocksOfPeers != newNumBlocksOfPeers ||
|
if (cachedNumBlocks != newNumBlocks ||
|
||||||
cachedReindexing != fReindex || cachedImporting != fImporting)
|
cachedReindexing != fReindex || cachedImporting != fImporting)
|
||||||
{
|
{
|
||||||
cachedNumBlocks = newNumBlocks;
|
cachedNumBlocks = newNumBlocks;
|
||||||
cachedNumBlocksOfPeers = newNumBlocksOfPeers;
|
|
||||||
cachedReindexing = fReindex;
|
cachedReindexing = fReindex;
|
||||||
cachedImporting = fImporting;
|
cachedImporting = fImporting;
|
||||||
|
|
||||||
// ensure we return the maximum of newNumBlocksOfPeers and newNumBlocks to not create weird displays in the GUI
|
emit numBlocksChanged(newNumBlocks);
|
||||||
emit numBlocksChanged(newNumBlocks, std::max(newNumBlocksOfPeers, newNumBlocks));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
emit bytesChanged(getTotalBytesRecv(), getTotalBytesSent());
|
emit bytesChanged(getTotalBytesRecv(), getTotalBytesSent());
|
||||||
|
@ -166,11 +163,6 @@ enum BlockSource ClientModel::getBlockSource() const
|
||||||
return BLOCK_SOURCE_NONE;
|
return BLOCK_SOURCE_NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ClientModel::getNumBlocksOfPeers() const
|
|
||||||
{
|
|
||||||
return GetNumBlocksOfPeers();
|
|
||||||
}
|
|
||||||
|
|
||||||
QString ClientModel::getStatusBarWarnings() const
|
QString ClientModel::getStatusBarWarnings() const
|
||||||
{
|
{
|
||||||
return QString::fromStdString(GetWarnings("statusbar"));
|
return QString::fromStdString(GetWarnings("statusbar"));
|
||||||
|
|
|
@ -60,8 +60,6 @@ public:
|
||||||
bool inInitialBlockDownload() const;
|
bool inInitialBlockDownload() const;
|
||||||
//! Return true if core is importing blocks
|
//! Return true if core is importing blocks
|
||||||
enum BlockSource getBlockSource() const;
|
enum BlockSource getBlockSource() const;
|
||||||
//! Return conservative estimate of total number of blocks, or 0 if unknown
|
|
||||||
int getNumBlocksOfPeers() const;
|
|
||||||
//! Return warnings to be displayed in status bar
|
//! Return warnings to be displayed in status bar
|
||||||
QString getStatusBarWarnings() const;
|
QString getStatusBarWarnings() const;
|
||||||
|
|
||||||
|
@ -75,7 +73,6 @@ private:
|
||||||
OptionsModel *optionsModel;
|
OptionsModel *optionsModel;
|
||||||
|
|
||||||
int cachedNumBlocks;
|
int cachedNumBlocks;
|
||||||
int cachedNumBlocksOfPeers;
|
|
||||||
bool cachedReindexing;
|
bool cachedReindexing;
|
||||||
bool cachedImporting;
|
bool cachedImporting;
|
||||||
|
|
||||||
|
@ -88,7 +85,7 @@ private:
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void numConnectionsChanged(int count);
|
void numConnectionsChanged(int count);
|
||||||
void numBlocksChanged(int count, int countOfPeers);
|
void numBlocksChanged(int count);
|
||||||
void alertsChanged(const QString &warnings);
|
void alertsChanged(const QString &warnings);
|
||||||
void bytesChanged(quint64 totalBytesIn, quint64 totalBytesOut);
|
void bytesChanged(quint64 totalBytesIn, quint64 totalBytesOut);
|
||||||
|
|
||||||
|
|
|
@ -254,36 +254,13 @@
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="11" column="0">
|
<item row="11" column="0">
|
||||||
<widget class="QLabel" name="label_4">
|
|
||||||
<property name="text">
|
|
||||||
<string>Estimated total blocks</string>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="11" column="1">
|
|
||||||
<widget class="QLabel" name="totalBlocks">
|
|
||||||
<property name="cursor">
|
|
||||||
<cursorShape>IBeamCursor</cursorShape>
|
|
||||||
</property>
|
|
||||||
<property name="text">
|
|
||||||
<string>N/A</string>
|
|
||||||
</property>
|
|
||||||
<property name="textFormat">
|
|
||||||
<enum>Qt::PlainText</enum>
|
|
||||||
</property>
|
|
||||||
<property name="textInteractionFlags">
|
|
||||||
<set>Qt::LinksAccessibleByMouse|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>
|
|
||||||
</property>
|
|
||||||
</widget>
|
|
||||||
</item>
|
|
||||||
<item row="12" column="0">
|
|
||||||
<widget class="QLabel" name="label_2">
|
<widget class="QLabel" name="label_2">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Last block time</string>
|
<string>Last block time</string>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="12" column="1">
|
<item row="11" column="1">
|
||||||
<widget class="QLabel" name="lastBlockTime">
|
<widget class="QLabel" name="lastBlockTime">
|
||||||
<property name="cursor">
|
<property name="cursor">
|
||||||
<cursorShape>IBeamCursor</cursorShape>
|
<cursorShape>IBeamCursor</cursorShape>
|
||||||
|
@ -299,7 +276,7 @@
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="13" column="0">
|
<item row="12" column="0">
|
||||||
<spacer name="verticalSpacer_2">
|
<spacer name="verticalSpacer_2">
|
||||||
<property name="orientation">
|
<property name="orientation">
|
||||||
<enum>Qt::Vertical</enum>
|
<enum>Qt::Vertical</enum>
|
||||||
|
@ -312,7 +289,7 @@
|
||||||
</property>
|
</property>
|
||||||
</spacer>
|
</spacer>
|
||||||
</item>
|
</item>
|
||||||
<item row="14" column="0">
|
<item row="13" column="0">
|
||||||
<widget class="QLabel" name="labelDebugLogfile">
|
<widget class="QLabel" name="labelDebugLogfile">
|
||||||
<property name="font">
|
<property name="font">
|
||||||
<font>
|
<font>
|
||||||
|
@ -325,7 +302,7 @@
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="15" column="0">
|
<item row="14" column="0">
|
||||||
<widget class="QPushButton" name="openDebugLogfileButton">
|
<widget class="QPushButton" name="openDebugLogfileButton">
|
||||||
<property name="toolTip">
|
<property name="toolTip">
|
||||||
<string>Open the Bitcoin debug log file from the current data directory. This can take a few seconds for large log files.</string>
|
<string>Open the Bitcoin debug log file from the current data directory. This can take a few seconds for large log files.</string>
|
||||||
|
@ -338,7 +315,7 @@
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item row="16" column="0">
|
<item row="15" column="0">
|
||||||
<spacer name="verticalSpacer">
|
<spacer name="verticalSpacer">
|
||||||
<property name="orientation">
|
<property name="orientation">
|
||||||
<enum>Qt::Vertical</enum>
|
<enum>Qt::Vertical</enum>
|
||||||
|
|
|
@ -271,8 +271,8 @@ void RPCConsole::setClientModel(ClientModel *model)
|
||||||
setNumConnections(model->getNumConnections());
|
setNumConnections(model->getNumConnections());
|
||||||
connect(model, SIGNAL(numConnectionsChanged(int)), this, SLOT(setNumConnections(int)));
|
connect(model, SIGNAL(numConnectionsChanged(int)), this, SLOT(setNumConnections(int)));
|
||||||
|
|
||||||
setNumBlocks(model->getNumBlocks(), model->getNumBlocksOfPeers());
|
setNumBlocks(model->getNumBlocks());
|
||||||
connect(model, SIGNAL(numBlocksChanged(int,int)), this, SLOT(setNumBlocks(int,int)));
|
connect(model, SIGNAL(numBlocksChanged(int)), this, SLOT(setNumBlocks(int)));
|
||||||
|
|
||||||
updateTrafficStats(model->getTotalBytesRecv(), model->getTotalBytesSent());
|
updateTrafficStats(model->getTotalBytesRecv(), model->getTotalBytesSent());
|
||||||
connect(model, SIGNAL(bytesChanged(quint64,quint64)), this, SLOT(updateTrafficStats(quint64, quint64)));
|
connect(model, SIGNAL(bytesChanged(quint64,quint64)), this, SLOT(updateTrafficStats(quint64, quint64)));
|
||||||
|
@ -366,11 +366,9 @@ void RPCConsole::setNumConnections(int count)
|
||||||
ui->numberOfConnections->setText(connections);
|
ui->numberOfConnections->setText(connections);
|
||||||
}
|
}
|
||||||
|
|
||||||
void RPCConsole::setNumBlocks(int count, int countOfPeers)
|
void RPCConsole::setNumBlocks(int count)
|
||||||
{
|
{
|
||||||
ui->numberOfBlocks->setText(QString::number(count));
|
ui->numberOfBlocks->setText(QString::number(count));
|
||||||
// If there is no current countOfPeers available display N/A instead of 0, which can't ever be true
|
|
||||||
ui->totalBlocks->setText(countOfPeers == 0 ? tr("N/A") : QString::number(countOfPeers));
|
|
||||||
if(clientModel)
|
if(clientModel)
|
||||||
ui->lastBlockTime->setText(clientModel->getLastBlockDate().toString());
|
ui->lastBlockTime->setText(clientModel->getLastBlockDate().toString());
|
||||||
}
|
}
|
||||||
|
|
|
@ -52,7 +52,7 @@ public slots:
|
||||||
/** Set number of connections shown in the UI */
|
/** Set number of connections shown in the UI */
|
||||||
void setNumConnections(int count);
|
void setNumConnections(int count);
|
||||||
/** Set number of blocks shown in the UI */
|
/** Set number of blocks shown in the UI */
|
||||||
void setNumBlocks(int count, int countOfPeers);
|
void setNumBlocks(int count);
|
||||||
/** Go forward or back in history */
|
/** Go forward or back in history */
|
||||||
void browseHistory(int offset);
|
void browseHistory(int offset);
|
||||||
/** Scroll console view to end */
|
/** Scroll console view to end */
|
||||||
|
|
Loading…
Reference in a new issue