From 89bcceb986044ec76bd7dd4f0e466d5062ae646a Mon Sep 17 00:00:00 2001 From: SChernykh Date: Thu, 30 Dec 2021 11:10:18 +0100 Subject: [PATCH] Added p2pool mini seed nodes and default port --- src/p2p_server.cpp | 28 ++++++++++++++++------------ src/p2p_server.h | 1 + src/p2pool.cpp | 10 ++++++++++ src/params.cpp | 10 ---------- src/side_chain.cpp | 15 ++++++++++++--- src/side_chain.h | 1 + 6 files changed, 40 insertions(+), 25 deletions(-) diff --git a/src/p2p_server.cpp b/src/p2p_server.cpp index 8472f3a..6722ac6 100644 --- a/src/p2p_server.cpp +++ b/src/p2p_server.cpp @@ -28,9 +28,8 @@ static constexpr char log_category_prefix[] = "P2PServer "; static constexpr char saved_peer_list_file_name[] = "p2pool_peers.txt"; -static const char* seed_nodes[] = { - "seeds.p2pool.io" -}; +static const char* seed_nodes[] = { "seeds.p2pool.io", ""}; +static const char* seed_nodes_mini[] = { "seeds-mini.p2pool.io", "" }; static constexpr int DEFAULT_BACKLOG = 16; static constexpr uint64_t DEFAULT_BAN_TIME = 600; @@ -371,12 +370,10 @@ void P2PServer::load_peer_list() { std::string saved_list; - // Load peers from seed nodes if we're on the default sidechain - if (m_pool->side_chain().is_default()) { - const int p2p_port = DEFAULT_P2P_PORT; - - for (size_t i = 0; i < array_size(seed_nodes); ++i) { - LOGINFO(4, "loading peers from " << seed_nodes[i]); + // Load peers from seed nodes if we're on the default or mini sidechain + auto load_from_seed_nodes = [&saved_list](const char** nodes, int p2p_port) { + for (size_t i = 0; nodes[i][0]; ++i) { + LOGINFO(4, "loading peers from " << nodes[i]); addrinfo hints{}; hints.ai_family = AF_UNSPEC; @@ -384,7 +381,7 @@ void P2PServer::load_peer_list() hints.ai_flags = AI_V4MAPPED | AI_ADDRCONFIG; addrinfo* result; - const int err = getaddrinfo(seed_nodes[i], nullptr, &hints, &result); + const int err = getaddrinfo(nodes[i], nullptr, &hints, &result); if (err == 0) { for (addrinfo* r = result; r != NULL; r = r->ai_next) { const char* addr_str; @@ -407,7 +404,7 @@ void P2PServer::load_peer_list() } if (s.m_pos) { - LOGINFO(4, "added " << static_cast(buf) << " from " << seed_nodes[i]); + LOGINFO(4, "added " << static_cast(buf) << " from " << nodes[i]); if (!saved_list.empty()) { saved_list += ','; } @@ -417,9 +414,16 @@ void P2PServer::load_peer_list() freeaddrinfo(result); } else { - LOGWARN(3, "getaddrinfo failed for " << seed_nodes[i] << ": " << gai_strerror(err)); + LOGWARN(3, "getaddrinfo failed for " << nodes[i] << ": " << gai_strerror(err)); } } + }; + + if (m_pool->side_chain().is_default()) { + load_from_seed_nodes(seed_nodes, DEFAULT_P2P_PORT); + } + else if (m_pool->side_chain().is_mini()) { + load_from_seed_nodes(seed_nodes_mini, DEFAULT_P2P_PORT_MINI); } // Finally load peers from p2pool_peers.txt diff --git a/src/p2p_server.h b/src/p2p_server.h index a3ea5bd..a21a2fa 100644 --- a/src/p2p_server.h +++ b/src/p2p_server.h @@ -29,6 +29,7 @@ class BlockCache; static constexpr size_t P2P_BUF_SIZE = 128 * 1024; static constexpr size_t PEER_LIST_RESPONSE_MAX_PEERS = 16; static constexpr int DEFAULT_P2P_PORT = 37889; +static constexpr int DEFAULT_P2P_PORT_MINI = 37888; class P2PServer : public TCPServer { diff --git a/src/p2pool.cpp b/src/p2pool.cpp index b7371ed..fd33284 100644 --- a/src/p2pool.cpp +++ b/src/p2pool.cpp @@ -111,6 +111,16 @@ p2pool::p2pool(int argc, char* argv[]) m_sideChain = new SideChain(this, type); + if (m_params->m_p2pAddresses.empty()) { + const int p2p_port = m_sideChain->is_mini() ? DEFAULT_P2P_PORT_MINI : DEFAULT_P2P_PORT; + + char buf[log::Stream::BUF_SIZE + 1]; + log::Stream s(buf); + s << "[::]:" << p2p_port << ",0.0.0.0:" << p2p_port << '\0'; + + m_params->m_p2pAddresses = buf; + } + if (m_params->m_disableRandomX) { m_hasher = new RandomX_Hasher_RPC(this); } diff --git a/src/params.cpp b/src/params.cpp index b9766cb..42004f7 100644 --- a/src/params.cpp +++ b/src/params.cpp @@ -104,16 +104,6 @@ Params::Params(int argc, char* argv[]) m_stratumAddresses = buf; } - - if (m_p2pAddresses.empty()) { - const int p2p_port = DEFAULT_P2P_PORT; - - char buf[log::Stream::BUF_SIZE + 1]; - log::Stream s(buf); - s << "[::]:" << p2p_port << ",0.0.0.0:" << p2p_port << '\0'; - - m_p2pAddresses = buf; - } } bool Params::ok() const diff --git a/src/side_chain.cpp b/src/side_chain.cpp index 4b67a96..3d65703 100644 --- a/src/side_chain.cpp +++ b/src/side_chain.cpp @@ -51,9 +51,8 @@ static_assert(1 <= UNCLE_BLOCK_DEPTH && UNCLE_BLOCK_DEPTH <= 10, "Invalid UNCLE_ namespace p2pool { -static constexpr uint8_t default_consensus_id[HASH_SIZE] = { - 34,175,126,231,181,11,104,146,227,153,218,107,44,108,68,39,178,81,4,212,169,4,142,0,177,110,157,240,68,7,249,24 -}; +static constexpr uint8_t default_consensus_id[HASH_SIZE] = { 34,175,126,231,181,11,104,146,227,153,218,107,44,108,68,39,178,81,4,212,169,4,142,0,177,110,157,240,68,7,249,24 }; +static constexpr uint8_t mini_consensus_id[HASH_SIZE] = { 57,130,201,26,149,174,199,250,66,80,189,18,108,216,194,220,136,23,63,24,64,113,221,44,219,86,39,163,53,24,126,196 }; SideChain::SideChain(p2pool* pool, NetworkType type, const char* pool_name) : m_pool(pool) @@ -97,11 +96,16 @@ SideChain::SideChain(p2pool* pool, NetworkType type, const char* pool_name) << m_unclePenalty << '\0'; constexpr char default_config[] = "mainnet\0" "default\0" "\0" "10\0" "100000\0" "2160\0" "20\0"; + constexpr char mini_config[] = "mainnet\0" "mini\0" "\0" "10\0" "100000\0" "2160\0" "20\0"; // Hardcoded default consensus ID if (memcmp(buf, default_config, sizeof(default_config) - 1) == 0) { m_consensusId.assign(default_consensus_id, default_consensus_id + HASH_SIZE); } + // Hardcoded mini consensus ID + else if (memcmp(buf, mini_config, sizeof(mini_config) - 1) == 0) { + m_consensusId.assign(mini_consensus_id, mini_consensus_id + HASH_SIZE); + } else { const randomx_flags flags = randomx_get_flags(); randomx_cache* cache = randomx_alloc_cache(flags | RANDOMX_FLAG_LARGE_PAGES); @@ -785,6 +789,11 @@ bool SideChain::is_default() const return (memcmp(m_consensusId.data(), default_consensus_id, HASH_SIZE) == 0); } +bool SideChain::is_mini() const +{ + return (memcmp(m_consensusId.data(), mini_consensus_id, HASH_SIZE) == 0); +} + bool SideChain::split_reward(uint64_t reward, const std::vector& shares, std::vector& rewards) { const size_t num_shares = shares.size(); diff --git a/src/side_chain.h b/src/side_chain.h index 787a342..fe19c7f 100644 --- a/src/side_chain.h +++ b/src/side_chain.h @@ -71,6 +71,7 @@ public: uint64_t miner_count(); time_t last_updated() const; bool is_default() const; + bool is_mini() const; const PoolBlock* chainTip() const { return m_chainTip; }