diff --git a/contrib/seeds/generate-seeds.py b/contrib/seeds/generate-seeds.py index b4f366273..2b6dfd5c0 100755 --- a/contrib/seeds/generate-seeds.py +++ b/contrib/seeds/generate-seeds.py @@ -177,7 +177,7 @@ def main(): g.write('\n') with open(os.path.join(indir,'nodes_test.txt'), 'r', encoding="utf8") as f: process_nodes(g, f, 'chainparams_seed_test') - g.write('#endif // HUSH_CHAINPARAMSSEEDS_H\n') + g.write('#endif // DRAGONX_CHAINPARAMSSEEDS_H\n') if __name__ == '__main__': main() diff --git a/contrib/seeds/nodes_main.txt b/contrib/seeds/nodes_main.txt index 2516ae38e..6c3b6cfe5 100644 --- a/contrib/seeds/nodes_main.txt +++ b/contrib/seeds/nodes_main.txt @@ -1,14 +1,17 @@ +# generate-seeds.py expects : (see its docstring). Without the port it +# emits 0, and every fixed seed becomes unconnectable -- which is what shipped: +# the whole chainparams_seed_main array carried 0x00,0x00 as the port. # node1.dragonx.is -212.56.41.63 +212.56.41.63:21768 # node2.dragonx.is -194.140.198.176 +194.140.198.176:21768 # node3.dragonx.is -212.56.41.47 +212.56.41.47:21768 # node4.dragonx.is -144.126.147.165 +144.126.147.165:21768 # node5.dragonx.is -176.126.87.241 +176.126.87.241:21768 diff --git a/src/chainparams.cpp b/src/chainparams.cpp index cad00b9f8..24aaf1e2f 100644 --- a/src/chainparams.cpp +++ b/src/chainparams.cpp @@ -181,11 +181,25 @@ public: assert(genesis.hashMerkleRoot == uint256S("0x4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b")); vFixedSeeds.clear(); vSeeds.clear(); - // Hush Official DNS Seeds - vSeeds.push_back(CDNSSeedData("node1", "seed1.hush.is")); - vSeeds.push_back(CDNSSeedData("node2", "seed2.hush.is")); - // Community run DNS Seeds - vSeeds.push_back(CDNSSeedData("node3", "dns.leto.net")); + // DragonX DNS seeds. These must be names that actually resolve. + // + // An assetchain INHERITS these: chainparams_commandline() sets the port, magic, + // blocktime, upgrade heights and checkpoints, but never touches vSeeds or + // vFixedSeeds. DRAGONX therefore ran on Hush's seeds -- seed1.hush.is, + // seed2.hush.is and dns.leto.net -- and all three have no A records left, so DNS + // seeding silently returned zero addresses on every start. The only bootstrap + // path that worked was the node1..node5.dragonx.is -addnode injection in + // hush_utils.h, which is almost certainly why that injection exists. + // + // These are single-A-record hosts, so each contributes one address rather than + // the spread a real seeder returns. That is still strictly better than nothing; + // a dedicated seeder (or a round-robin A record over the seed set) would be the + // proper fix and needs only a DNS change, not a release. + vSeeds.push_back(CDNSSeedData("node1", "node1.dragonx.is")); + vSeeds.push_back(CDNSSeedData("node2", "node2.dragonx.is")); + vSeeds.push_back(CDNSSeedData("node3", "node3.dragonx.is")); + vSeeds.push_back(CDNSSeedData("node4", "node4.dragonx.is")); + vSeeds.push_back(CDNSSeedData("node5", "node5.dragonx.is")); base58Prefixes[PUBKEY_ADDRESS] = std::vector(1,60); base58Prefixes[SCRIPT_ADDRESS] = std::vector(1,85); diff --git a/src/chainparamsseeds.h b/src/chainparamsseeds.h index 90f2d4182..76846bd67 100644 --- a/src/chainparamsseeds.h +++ b/src/chainparamsseeds.h @@ -11,14 +11,14 @@ // Each line contains a BIP155 serialized address. // static const uint8_t chainparams_seed_main[] = { - 0x01,0x04,0xd4,0x38,0x29,0x3f,0x00,0x00, // 212.56.41.63 - 0x01,0x04,0xc2,0x8c,0xc6,0xb0,0x00,0x00, // 194.140.198.176 - 0x01,0x04,0xd4,0x38,0x29,0x2f,0x00,0x00, // 212.56.41.47 - 0x01,0x04,0x90,0x7e,0x93,0xa5,0x00,0x00, // 144.126.147.165 - 0x01,0x04,0xb0,0x7e,0x57,0xf1,0x00,0x00, // 176.126.87.241 + 0x01,0x04,0xd4,0x38,0x29,0x3f,0x55,0x08, // 212.56.41.63:21768 + 0x01,0x04,0xc2,0x8c,0xc6,0xb0,0x55,0x08, // 194.140.198.176:21768 + 0x01,0x04,0xd4,0x38,0x29,0x2f,0x55,0x08, // 212.56.41.47:21768 + 0x01,0x04,0x90,0x7e,0x93,0xa5,0x55,0x08, // 144.126.147.165:21768 + 0x01,0x04,0xb0,0x7e,0x57,0xf1,0x55,0x08, // 176.126.87.241:21768 }; static const uint8_t chainparams_seed_test[] = { 0x01,0x04,0x01,0x02,0x03,0x04,0x00,0x00, // 1.2.3.4 }; -#endif // HUSH_CHAINPARAMSSEEDS_H +#endif // DRAGONX_CHAINPARAMSSEEDS_H diff --git a/src/net.cpp b/src/net.cpp index c6ddb54a8..c4d1b3e86 100644 --- a/src/net.cpp +++ b/src/net.cpp @@ -1581,6 +1581,7 @@ void ThreadDNSAddressSeed() CAddress addr = CAddress(CService(ip, ASSETCHAINS_P2PPORT)); addr.nTime = GetTime() - 3*nOneDay - GetRand(4*nOneDay); // use a random age between 3 and 7 days old vAdd.push_back(addr); + found++; } } // TODO: The seed name resolve may fail, yielding an IP of [::], which results in