Relax condition for updating chain config

This allows for converting any ethereum mainnet node to PulseChain
as long as its height is less than the PrimordialPulse fork block.
This commit is contained in:
Shane Bammel 2023-03-04 14:18:50 -06:00
parent 0485a24457
commit 28d94dda61

View File

@ -708,8 +708,8 @@ func (c *ChainConfig) checkCompatible(newcfg *ChainConfig, headNumber *big.Int,
if isForkBlockIncompatible(c.EIP158Block, newcfg.EIP158Block, headNumber) { if isForkBlockIncompatible(c.EIP158Block, newcfg.EIP158Block, headNumber) {
return newBlockCompatError("EIP158 fork block", c.EIP158Block, newcfg.EIP158Block) return newBlockCompatError("EIP158 fork block", c.EIP158Block, newcfg.EIP158Block)
} }
// allow mismatching ChainID if we're at the PrimordialPulseBlock // allow mismatching ChainID if there is a PrimordialPulse block ahead
if c.IsEIP158(headNumber) && !configBlockEqual(c.ChainID, newcfg.ChainID) && !newcfg.IsPrimordialPulseBlock(new(big.Int).Add(headNumber, common.Big1)) { if c.IsEIP158(headNumber) && !configBlockEqual(c.ChainID, newcfg.ChainID) && !newcfg.PrimordialPulseAhead(headNumber) {
return newBlockCompatError("EIP158 chain ID", c.EIP158Block, newcfg.EIP158Block) return newBlockCompatError("EIP158 chain ID", c.EIP158Block, newcfg.EIP158Block)
} }
if isForkBlockIncompatible(c.ByzantiumBlock, newcfg.ByzantiumBlock, headNumber) { if isForkBlockIncompatible(c.ByzantiumBlock, newcfg.ByzantiumBlock, headNumber) {