diff --git a/README.md b/README.md index 7529fed50..371b82097 100644 --- a/README.md +++ b/README.md @@ -2,9 +2,11 @@ By Gav Wood, 2014. -Based on a design by Vitalik Buterin. +[![Build ++Status](http://build.ethdev.com/buildstatusimage?builder=Linux%20C%2B%2B%20master%20branch)](http://build.ethdev.com/builders/Linux%20C%2B%2B%20master%20branch/builds/-1) master [![Build ++Status](http://build.ethdev.com/buildstatusimage?builder=Linux%20C%2B%2B%20develop%20branch)](http://build.ethdev.com/builders/Linux%20C%2B%2B%20develop%20branch/builds/-1) develop -Contributors, builders and testers include Eric Lombrozo (cross-compilation), Tim Hughes (MSVC compilation & Dagger testing), Alex Leverington (Clang & Mac building), Marko Simovic (CI) and several others. +Ethereum is based on a design in an original whitepaper by Vitalik Buterin. This implementation is based on the formal specification of a refinement of that idea detailed in the 'yellow paper' by Gavin Wood. Contributors, builders and testers include Alex Leverington (Clang & Mac building, client multiplexing), Tim Hughes (MSVC compilation & Dagger testing), Caktux (ongoing CI), Christoph Jentzsch (tests), Christian Reissweiner (Solidity), Marek Kotewicz (external JS & JSON-RPC), Eric Lombrozo (MinGW32 cross-compilation), Marko Simovic (original CI), and several others. ### Building diff --git a/alethzero/MainWin.cpp b/alethzero/MainWin.cpp index 3964f0e6f..1da6b7d9a 100644 --- a/alethzero/MainWin.cpp +++ b/alethzero/MainWin.cpp @@ -751,35 +751,39 @@ void Main::refreshNetwork() { auto ps = web3()->peers(); - map clients; ui->peerCount->setText(QString::fromStdString(toString(ps.size())) + " peer(s)"); ui->peers->clear(); - for (PeerInfo const& i: ps) - ui->peers->addItem(QString("[%8 %7] %3 ms - %1:%2 - %4 %5 %6") - .arg(QString::fromStdString(i.host)) - .arg(i.port) - .arg(chrono::duration_cast(i.lastPing).count()) - .arg(clients[i.id] = QString::fromStdString(i.clientVersion)) - .arg(QString::fromStdString(toString(i.caps))) - .arg(QString::fromStdString(toString(i.notes))) - .arg(i.socket) - .arg(QString::fromStdString(i.id.abridged()))); - - auto ns = web3()->nodes(); ui->nodes->clear(); - for (p2p::Node const& i: ns) - if (!i.dead) - ui->nodes->addItem(QString("[%1 %3] %2 - ( =%5s | /%4s%6 ) - *%7 $%8") - .arg(QString::fromStdString(i.id.abridged())) - .arg(QString::fromStdString(toString(i.address))) - .arg(i.id == web3()->id() ? "self" : i.isOffline() ? i.secondsSinceLastAttempted() > -1 ? "retry-" + QString::number(i.fallbackSeconds() - i.secondsSinceLastAttempted()) + "s" : "session-fail" : clients[i.id]) - .arg(i.secondsSinceLastAttempted()) - .arg(i.secondsSinceLastConnected()) - .arg(i.isOffline() ? " | " + QString::fromStdString(reasonOf(i.lastDisconnect)) + " | " + QString::number(i.failedAttempts) + "x" : "") - .arg(i.rating) - .arg((int)i.idOrigin) - ); + + if (web3()->haveNetwork()) + { + map clients; + for (PeerInfo const& i: ps) + ui->peers->addItem(QString("[%8 %7] %3 ms - %1:%2 - %4 %5 %6") + .arg(QString::fromStdString(i.host)) + .arg(i.port) + .arg(chrono::duration_cast(i.lastPing).count()) + .arg(clients[i.id] = QString::fromStdString(i.clientVersion)) + .arg(QString::fromStdString(toString(i.caps))) + .arg(QString::fromStdString(toString(i.notes))) + .arg(i.socket) + .arg(QString::fromStdString(i.id.abridged()))); + + auto ns = web3()->nodes(); + for (p2p::Node const& i: ns) + if (!i.dead) + ui->nodes->insertItem(i.isOffline() ? ui->nodes->count() : 0, QString("[%1 %3] %2 - ( =%5s | /%4s%6 ) - *%7 $%8") + .arg(QString::fromStdString(i.id.abridged())) + .arg(QString::fromStdString(toString(i.address))) + .arg(i.id == web3()->id() ? "self" : i.isOffline() ? i.secondsSinceLastAttempted() > -1 ? i.secondsSinceLastAttempted() < (int)i.fallbackSeconds() ? "retry-" + QString::number(i.fallbackSeconds() - i.secondsSinceLastAttempted()) + "s" : "retrying..." : "session-fail" : clients[i.id]) + .arg(i.secondsSinceLastAttempted()) + .arg(i.secondsSinceLastConnected()) + .arg(i.isOffline() ? " | " + QString::fromStdString(reasonOf(i.lastDisconnect)) + " | " + QString::number(i.failedAttempts) + "x" : "") + .arg(i.rating) + .arg((int)i.idOrigin) + ); + } } void Main::refreshAll() @@ -973,7 +977,7 @@ void Main::timerEvent(QTimerEvent*) if (interval / 100 % 2 == 0) refreshMining(); - if (interval / 100 % 2 == 0 && m_webThree->ethereum()->isSyncing()) + if ((interval / 100 % 2 == 0 && m_webThree->ethereum()->isSyncing()) || interval == 1000) ui->downloadView->update(); if (m_logChanged) diff --git a/libp2p/Host.cpp b/libp2p/Host.cpp index 7ce453839..ea89b5613 100644 --- a/libp2p/Host.cpp +++ b/libp2p/Host.cpp @@ -382,7 +382,6 @@ shared_ptr Host::noteNode(NodeId _id, bi::tcp::endpoint _a, Origin _o, boo } m_nodes[_id] = make_shared(); m_nodes[_id]->id = _id; - m_nodes[_id]->address = _a; m_nodes[_id]->index = i; m_nodes[_id]->idOrigin = _o; } @@ -391,6 +390,7 @@ shared_ptr Host::noteNode(NodeId _id, bi::tcp::endpoint _a, Origin _o, boo i = m_nodes[_id]->index; m_nodes[_id]->idOrigin = max(m_nodes[_id]->idOrigin, _o); } + m_nodes[_id]->address = _a; m_ready.extendAll(i); m_private.extendAll(i); if (_ready)