diff --git a/core/vm/evm.go b/core/vm/evm.go index 70e1cd1b87..ac5d4fefdf 100644 --- a/core/vm/evm.go +++ b/core/vm/evm.go @@ -389,7 +389,7 @@ func (evm *EVM) create(caller ContractRef, codeAndHash *codeAndHash, gas uint64, // Create a new account on the state snapshot := evm.StateDB.Snapshot() evm.StateDB.CreateAccount(address) - if evm.ChainConfig().IsEIP158(evm.BlockNumber) { + if evm.chainRules.IsEIP158 { evm.StateDB.SetNonce(address, 1) } evm.Transfer(evm.StateDB, caller.Address(), address, value) diff --git a/core/vm/instructions.go b/core/vm/instructions.go index 2a062d7e77..7b6909c927 100644 --- a/core/vm/instructions.go +++ b/core/vm/instructions.go @@ -694,7 +694,7 @@ func opCreate(pc *uint64, interpreter *EVMInterpreter, contract *Contract, memor input = memory.Get(offset.Int64(), size.Int64()) gas = contract.Gas ) - if interpreter.evm.ChainConfig().IsEIP150(interpreter.evm.BlockNumber) { + if interpreter.evm.chainRules.IsEIP150 { gas -= gas / 64 } @@ -704,7 +704,7 @@ func opCreate(pc *uint64, interpreter *EVMInterpreter, contract *Contract, memor // homestead we must check for CodeStoreOutOfGasError (homestead only // rule) and treat as an error, if the ruleset is frontier we must // ignore this error and pretend the operation was successful. - if interpreter.evm.ChainConfig().IsHomestead(interpreter.evm.BlockNumber) && suberr == ErrCodeStoreOutOfGas { + if interpreter.evm.chainRules.IsHomestead && suberr == ErrCodeStoreOutOfGas { stack.push(interpreter.intPool.getZero()) } else if suberr != nil && suberr != ErrCodeStoreOutOfGas { stack.push(interpreter.intPool.getZero()) diff --git a/core/vm/interpreter.go b/core/vm/interpreter.go index 612c4e2a21..7d38adf36f 100644 --- a/core/vm/interpreter.go +++ b/core/vm/interpreter.go @@ -89,15 +89,15 @@ func NewEVMInterpreter(evm *EVM, cfg Config) *EVMInterpreter { // we'll set the default jump table. if !cfg.JumpTable[STOP].valid { switch { - case evm.ChainConfig().IsConstantinople(evm.BlockNumber): + case evm.chainRules.IsConstantinople: cfg.JumpTable = constantinopleInstructionSet - case evm.ChainConfig().IsByzantium(evm.BlockNumber): + case evm.chainRules.IsByzantium: cfg.JumpTable = byzantiumInstructionSet - case evm.ChainConfig().IsEIP158(evm.BlockNumber): + case evm.chainRules.IsEIP158: cfg.JumpTable = spuriousDragonInstructionSet - case evm.ChainConfig().IsEIP150(evm.BlockNumber): + case evm.chainRules.IsEIP150: cfg.JumpTable = tangerineWhistleInstructionSet - case evm.ChainConfig().IsHomestead(evm.BlockNumber): + case evm.chainRules.IsHomestead: cfg.JumpTable = homesteadInstructionSet default: cfg.JumpTable = frontierInstructionSet