std::map<unsigned,SubChain>m_readyChainMap;///< Subchains ready for download
std::map<unsigned,SubChain>m_downloadingChainMap;///< Subchains currently being downloading. In sync with m_chainSyncPeers
std::map<std::weak_ptr<EthereumPeer>,unsigned,std::owner_less<std::weak_ptr<EthereumPeer>>>m_chainSyncPeers;///< Peers to m_downloadingSubchain number map
h256Hashm_knownHashes;///< Subchain start markers. Used to track suchain completion
unsignedm_syncingBlockNumber=0;///< Current subchain marker
h256Hashm_knownHashes;///< Subchain start markers. Used to track suchain completion
unsignedm_syncingBlockNumber=0;///< Current subchain marker
boolm_hashScanComplete=false;///< True if leading peer completed hashchain scan and we have a list of subchains ready
std::unordered_map<NodeId,std::shared_ptr<NodeEntry>>m_nodes;///< Known Node Endpoints
mutableMutexx_state;///< LOCK x_state first if both x_nodes and x_state locks are required.
std::array<NodeBucket,s_bins>m_state;///< State of p2p node network.
@ -264,15 +260,11 @@ private:
Mutexx_findNodeTimeout;
std::list<NodeIdTimePoint>m_findNodeTimeout;///< Timeouts for pending Ping and FindNode requests.
ba::io_service&m_io;///< Used by bucket refresh timer.
std::shared_ptr<NodeSocket>m_socket;///< Shared pointer for our UDPSocket; ASIO requires shared_ptr.
NodeSocket*m_socketPointer;///< Set to m_socket.get(). Socket is created in constructor and disconnected in destructor to ensure access to pointer is safe.
boost::asio::deadline_timerm_bucketRefreshTimer;///< Timer which schedules and enacts bucket refresh.
boost::asio::deadline_timerm_evictionCheckTimer;///< Timer for handling node evictions.