Further changes to enable the shanghai fork as well as redefining the random opcode

This commit is contained in:
philip-morlier 2024-02-28 20:37:17 -08:00
parent 2a41f9d36f
commit 98464ca463
2 changed files with 13 additions and 2 deletions

View File

@ -60,6 +60,11 @@ func NewEVMInterpreter(evm *EVM) *EVMInterpreter {
table = &cancunInstructionSet table = &cancunInstructionSet
case evm.chainRules.IsShanghai: case evm.chainRules.IsShanghai:
table = &shanghaiInstructionSet table = &shanghaiInstructionSet
// begin PluGeth injection
if !evm.chainRules.IsMerge {
table[RANDOM] = frontierInstructionSet[DIFFICULTY]
}
// end PluGeth injection
case evm.chainRules.IsMerge: case evm.chainRules.IsMerge:
table = &mergeInstructionSet table = &mergeInstructionSet
case evm.chainRules.IsLondon: case evm.chainRules.IsLondon:
@ -72,10 +77,12 @@ func NewEVMInterpreter(evm *EVM) *EVMInterpreter {
table = &constantinopleInstructionSet table = &constantinopleInstructionSet
case evm.chainRules.IsByzantium: case evm.chainRules.IsByzantium:
table = &byzantiumInstructionSet table = &byzantiumInstructionSet
// begin PluGeth injection // begin PluGeth injection
case evm.chainRules.IsEIP160: case evm.chainRules.IsEIP160:
// end PluGeth injection
table = &spuriousDragonInstructionSet table = &spuriousDragonInstructionSet
// end PluGeth injection
case evm.chainRules.IsEIP150: case evm.chainRules.IsEIP150:
table = &tangerineWhistleInstructionSet table = &tangerineWhistleInstructionSet
case evm.chainRules.IsHomestead: case evm.chainRules.IsHomestead:

View File

@ -933,7 +933,11 @@ func (c *ChainConfig) Rules(num *big.Int, isMerge bool, timestamp uint64) Rules
IsBerlin: c.IsBerlin(num), IsBerlin: c.IsBerlin(num),
IsLondon: c.IsLondon(num), IsLondon: c.IsLondon(num),
IsMerge: isMerge, 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), IsCancun: isMerge && c.IsCancun(num, timestamp),
IsPrague: isMerge && c.IsPrague(num, timestamp), IsPrague: isMerge && c.IsPrague(num, timestamp),
IsVerkle: isMerge && c.IsVerkle(num, timestamp), IsVerkle: isMerge && c.IsVerkle(num, timestamp),