chainparams: do not let other smart chains inherit DragonX's seeds
A smart chain builds its params by copying a base network and overriding pieces, but nothing ever touched vSeeds/vFixedSeeds. That is how DRAGONX ran on Hush's seeds -- seed1.hush.is and friends, long since gone from DNS -- for as long as it did, and it means any other assetchain started from this binary now inherits DragonX's. Seeds are per-chain by nature: an address serving one chain is useless to another, and dialling it is at best wasted effort and at worst a peer speaking a different protocol. DRAGONX keeps the seeds configured in CMainParams, which are its own; every other chain starts empty and relies on -addnode/-connect, which an assetchain operator has to configure regardless. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FU87LdsJZiZkfq1eXubpeo
This commit is contained in:
@@ -538,10 +538,24 @@ void *chainparams_commandline() {
|
|||||||
//}
|
//}
|
||||||
if ( SMART_CHAIN_SYMBOL[0] != 0 )
|
if ( SMART_CHAIN_SYMBOL[0] != 0 )
|
||||||
{
|
{
|
||||||
|
// A smart chain inherits vSeeds/vFixedSeeds from the base network params,
|
||||||
|
// and nothing below ever touched them. That is how DRAGONX came to run on
|
||||||
|
// Hush's seeds -- seed1.hush.is and friends, long since removed from DNS --
|
||||||
|
// for as long as it did. Seeds are per-chain by nature: an address that
|
||||||
|
// serves one chain is useless to another, and dialling it is at best wasted
|
||||||
|
// effort and at worst a peer that speaks a different protocol.
|
||||||
|
//
|
||||||
|
// DRAGONX keeps the seeds configured in CMainParams (which are its own).
|
||||||
|
// Every other chain starts empty and relies on -addnode/-connect, which is
|
||||||
|
// what an assetchain operator has to configure anyway.
|
||||||
if (strcmp(SMART_CHAIN_SYMBOL,"HUSH3") == 0) {
|
if (strcmp(SMART_CHAIN_SYMBOL,"HUSH3") == 0) {
|
||||||
ASSETCHAINS_P2PPORT = 18030;
|
ASSETCHAINS_P2PPORT = 18030;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (strncmp(SMART_CHAIN_SYMBOL, "DRAGONX", 7) != 0) {
|
||||||
|
pCurrentParams->ClearSeeds();
|
||||||
|
}
|
||||||
|
|
||||||
if ( ASSETCHAINS_BLOCKTIME != 60 )
|
if ( ASSETCHAINS_BLOCKTIME != 60 )
|
||||||
{
|
{
|
||||||
pCurrentParams->consensus.nMaxFutureBlockTime = 7 * ASSETCHAINS_BLOCKTIME; // 7 blocks
|
pCurrentParams->consensus.nMaxFutureBlockTime = 7 * ASSETCHAINS_BLOCKTIME; // 7 blocks
|
||||||
|
|||||||
@@ -117,6 +117,10 @@ public:
|
|||||||
void SetNValue(uint64_t n) { nEquihashN = n; }
|
void SetNValue(uint64_t n) { nEquihashN = n; }
|
||||||
void SetKValue(uint64_t k) { nEquihashK = k; }
|
void SetKValue(uint64_t k) { nEquihashK = k; }
|
||||||
void SetMiningRequiresPeers(bool flag) { fMiningRequiresPeers = flag; }
|
void SetMiningRequiresPeers(bool flag) { fMiningRequiresPeers = flag; }
|
||||||
|
//! Drop any inherited peer seeds. An assetchain gets its params by copying a
|
||||||
|
//! base network and overriding pieces; without this it silently keeps the base
|
||||||
|
//! chain's DNS and fixed seeds, which are wrong for it by definition.
|
||||||
|
void ClearSeeds() { vSeeds.clear(); vFixedSeeds.clear(); }
|
||||||
|
|
||||||
CMessageHeader::MessageStartChars pchMessageStart;
|
CMessageHeader::MessageStartChars pchMessageStart;
|
||||||
Consensus::Params consensus;
|
Consensus::Params consensus;
|
||||||
|
|||||||
Reference in New Issue
Block a user