core/vm: make use of the chainrules

This commit is contained in:
Martin Holst Swende 2019-06-18 22:59:44 +02:00
parent 4991ef86f6
commit 34fd5ca4f4
No known key found for this signature in database
GPG key ID: 683B438C05A5DDF0
3 changed files with 8 additions and 8 deletions

View file

@ -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)

View file

@ -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())

View file

@ -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