mirror of
https://gitlab.com/pulsechaincom/go-pulse.git
synced 2024-12-22 03:30:35 +00:00
Add support for PulseChain genesis
This commit is contained in:
parent
f8bf51978e
commit
a96a211bbb
@ -280,16 +280,25 @@ func SetupGenesisBlockWithOverride(db ethdb.Database, triedb *triedb.Database, g
|
||||
}
|
||||
return genesis.Config, block.Hash(), nil
|
||||
}
|
||||
// Assume mainnet chainId first
|
||||
chainId := params.MainnetChainConfig.ChainID.Uint64()
|
||||
// Note: The `genesis` argument will be one of:
|
||||
// - nil: if running without the `init` command and without providing a network flag (--pulsechain, --ropsten, etc..)
|
||||
// - defaulted: when a network flag is provided (--pulsechain, --ropsten, etc..), genesis will hold the defaults
|
||||
// - custom: if running with the `init` command supplying a custom genesis.json file, genesis will hold the file contents
|
||||
// Check whether the genesis block is already written.
|
||||
if genesis != nil {
|
||||
applyOverrides(genesis.Config)
|
||||
if genesis.Config.ChainID != nil {
|
||||
chainId = genesis.Config.ChainID.Uint64()
|
||||
}
|
||||
hash := genesis.ToBlock().Hash()
|
||||
if hash != stored {
|
||||
return genesis.Config, hash, &GenesisMismatchError{stored, hash}
|
||||
}
|
||||
}
|
||||
// Get the existing chain configuration.
|
||||
newcfg := genesis.configOrDefault(stored)
|
||||
newcfg := genesis.configOrDefault(stored, chainId)
|
||||
applyOverrides(newcfg)
|
||||
if err := newcfg.CheckConfigForkOrder(); err != nil {
|
||||
return newcfg, common.Hash{}, err
|
||||
@ -306,7 +315,10 @@ func SetupGenesisBlockWithOverride(db ethdb.Database, triedb *triedb.Database, g
|
||||
// chain config as that would be AllProtocolChanges (applying any new fork
|
||||
// on top of an existing private network genesis block). In that case, only
|
||||
// apply the overrides.
|
||||
if genesis == nil && stored != params.MainnetGenesisHash {
|
||||
// Added: support custom config for PrimordialPulse fork with mainnet genesis
|
||||
// and non-standard chain id.
|
||||
if genesis == nil && (storedcfg.PrimordialPulseBlock != nil ||
|
||||
stored != params.MainnetGenesisHash) {
|
||||
newcfg = storedcfg
|
||||
applyOverrides(newcfg)
|
||||
}
|
||||
@ -360,12 +372,19 @@ func LoadChainConfig(db ethdb.Database, genesis *Genesis) (*params.ChainConfig,
|
||||
return params.MainnetChainConfig, nil
|
||||
}
|
||||
|
||||
func (g *Genesis) configOrDefault(ghash common.Hash) *params.ChainConfig {
|
||||
func (g *Genesis) configOrDefault(ghash common.Hash, chainId uint64) *params.ChainConfig {
|
||||
switch {
|
||||
case g != nil:
|
||||
return g.Config
|
||||
case ghash == params.MainnetGenesisHash:
|
||||
switch chainId {
|
||||
case params.PulseChainConfig.ChainID.Uint64():
|
||||
return params.PulseChainConfig
|
||||
case params.PulseChainTestnetConfig.ChainID.Uint64():
|
||||
return params.PulseChainTestnetConfig
|
||||
default:
|
||||
return params.MainnetChainConfig
|
||||
}
|
||||
case ghash == params.HoleskyGenesisHash:
|
||||
return params.HoleskyChainConfig
|
||||
case ghash == params.SepoliaGenesisHash:
|
||||
|
Loading…
Reference in New Issue
Block a user