diff --git a/core/vm/interpreter.go b/core/vm/interpreter.go index f34c082eb..1c175baf6 100644 --- a/core/vm/interpreter.go +++ b/core/vm/interpreter.go @@ -60,6 +60,11 @@ func NewEVMInterpreter(evm *EVM) *EVMInterpreter { table = &cancunInstructionSet case evm.chainRules.IsShanghai: table = &shanghaiInstructionSet + // begin PluGeth injection + if !evm.chainRules.IsMerge { + table[RANDOM] = frontierInstructionSet[DIFFICULTY] + } + // end PluGeth injection case evm.chainRules.IsMerge: table = &mergeInstructionSet case evm.chainRules.IsLondon: @@ -72,10 +77,12 @@ func NewEVMInterpreter(evm *EVM) *EVMInterpreter { table = &constantinopleInstructionSet case evm.chainRules.IsByzantium: table = &byzantiumInstructionSet + // begin PluGeth injection case evm.chainRules.IsEIP160: - // end PluGeth injection table = &spuriousDragonInstructionSet + // end PluGeth injection + case evm.chainRules.IsEIP150: table = &tangerineWhistleInstructionSet case evm.chainRules.IsHomestead: diff --git a/params/config.go b/params/config.go index f31f4f98c..9c4958569 100644 --- a/params/config.go +++ b/params/config.go @@ -933,7 +933,11 @@ func (c *ChainConfig) Rules(num *big.Int, isMerge bool, timestamp uint64) Rules IsBerlin: c.IsBerlin(num), IsLondon: c.IsLondon(num), IsMerge: isMerge, - IsShanghai: isMerge && c.IsShanghai(num, timestamp), + // IsShanghai: isMerge && c.IsShanghai(num, timestamp), + // the above is being commented and replaced with the plugeth code below to hotwire the chainrules to allow shanghai without the merge + // begin PluGeth injection + IsShanghai: c.IsShanghai(num, timestamp), + // end PluGeth injection IsCancun: isMerge && c.IsCancun(num, timestamp), IsPrague: isMerge && c.IsPrague(num, timestamp), IsVerkle: isMerge && c.IsVerkle(num, timestamp),