Skip to content

Commit 1fe3403

Browse files
authored
nmc(P1-PE-2a): embedded NMC DNS + fixed seed tables (#225)
Add src/impl/nmc/coin/chain_seeds.hpp mirroring doge/coin/chain_seeds.hpp: nmc_dns_seeds()/nmc_fixed_seeds() with per-network (mainnet/testnet) DNS hostnames and hardcoded fallback peers. DNS seeds from Namecoin Core chainparams.cpp; mainnet fixed seeds harvested from a synced mainnet namecoind addrman (port 8334). Forced-compiled via coin_smoke.cpp. Fenced to src/impl/nmc/ (rides the allowlisted nmc_coin exe); CMake change is local to the nmc coin tree, no build.yml touched. Co-authored-by: frstrtr <frstrtr@users.noreply.github.com>
1 parent 7fda8ed commit 1fe3403

3 files changed

Lines changed: 82 additions & 0 deletions

File tree

src/impl/nmc/coin/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ set(nmc_coin_interface
88
block.hpp
99
mempool.hpp
1010
header_chain.hpp
11+
chain_seeds.hpp
1112
rpc_data.hpp
1213
template_builder.hpp
1314
coin_smoke.cpp

src/impl/nmc/coin/chain_seeds.hpp

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
#pragma once
2+
3+
/// DNS seed hostnames and hardcoded fallback IPs for Namecoin P2P networks.
4+
/// Sources:
5+
/// - DNS seeds: Namecoin Core chainparams.cpp (CMainParams::vSeeds).
6+
/// - Fixed seeds: live reachable peers harvested from a synced mainnet
7+
/// namecoind addrman (getnodeaddresses) on 2026-06-19, port 8334.
8+
/// Mirrors src/impl/doge/coin/chain_seeds.hpp. Namecoin has a single
9+
/// mainnet and a single testnet (no testnet4alpha variant).
10+
11+
#include <core/dns_seeder.hpp>
12+
#include <core/netaddress.hpp>
13+
#include <vector>
14+
15+
namespace nmc {
16+
namespace coin {
17+
18+
/// DNS seeds for Namecoin mainnet (P2P port 8334).
19+
/// From Namecoin Core chainparams.cpp. Several historical seeds are dead;
20+
/// the fixed_seeds below (live-sourced) provide actual connectivity.
21+
inline std::vector<c2pool::dns::DnsSeed> nmc_mainnet_dns_seeds()
22+
{
23+
return {
24+
{"nmc.seed.quisquis.de", 8334},
25+
{"dnsseed.namecoin.webbtc.com", 8334},
26+
{"seed.nmc.markasoftware.com", 8334},
27+
};
28+
}
29+
30+
/// DNS seeds for Namecoin testnet (P2P port 18334).
31+
inline std::vector<c2pool::dns::DnsSeed> nmc_testnet_dns_seeds()
32+
{
33+
return {
34+
{"dnsseed.test.namecoin.webbtc.com", 18334},
35+
};
36+
}
37+
38+
/// Hardcoded fallback peers for Namecoin mainnet.
39+
/// Harvested 2026-06-19 from a synced mainnet namecoind addrman, port 8334.
40+
inline std::vector<NetService> nmc_mainnet_fixed_seeds()
41+
{
42+
return {
43+
{"23.106.38.114", 8334},
44+
{"174.95.154.115", 8334},
45+
{"212.67.235.211", 8334},
46+
{"23.19.112.151", 8334},
47+
{"83.217.13.217", 8334},
48+
{"166.70.96.250", 8334},
49+
{"66.45.249.52", 8334},
50+
};
51+
}
52+
53+
/// Hardcoded fallback peers for Namecoin testnet.
54+
/// No public fixed peers wired -- connect via --nmc-p2p-address to a known
55+
/// namecoind, consistent with the doge testnet stance.
56+
inline std::vector<NetService> nmc_testnet_fixed_seeds()
57+
{
58+
return {};
59+
}
60+
61+
/// Get DNS seeds for the appropriate NMC network.
62+
inline std::vector<c2pool::dns::DnsSeed> nmc_dns_seeds(bool testnet)
63+
{
64+
return testnet ? nmc_testnet_dns_seeds() : nmc_mainnet_dns_seeds();
65+
}
66+
67+
/// Get fixed fallback seeds for the appropriate NMC network.
68+
inline std::vector<NetService> nmc_fixed_seeds(bool testnet)
69+
{
70+
return testnet ? nmc_testnet_fixed_seeds() : nmc_mainnet_fixed_seeds();
71+
}
72+
73+
} // namespace coin
74+
} // namespace nmc

src/impl/nmc/coin/coin_smoke.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
#include "mempool.hpp"
1212
#include "rpc_data.hpp"
1313
#include "template_builder.hpp"
14+
#include "chain_seeds.hpp"
1415

1516
namespace nmc {
1617
namespace coin {
@@ -49,6 +50,12 @@ void nmc_coin_p0_smoke()
4950
EmbeddedCoinNode node(chain, pool, /*testnet=*/false);
5051
(void)node.getblockchaininfo();
5152
(void)node.is_synced();
53+
54+
// P1 PE 2a: force-compile embedded NMC seed tables (DNS + fixed).
55+
(void)nmc_dns_seeds(false);
56+
(void)nmc_fixed_seeds(false);
57+
(void)nmc_dns_seeds(true);
58+
(void)nmc_fixed_seeds(true);
5259
}
5360

5461
} // namespace coin

0 commit comments

Comments
 (0)