From 7bbdf3e2687ea293b68a7f73c039cbde411217fa Mon Sep 17 00:00:00 2001 From: Jeffrey Wilcke Date: Thu, 10 Aug 2017 14:07:11 +0300 Subject: core: add Metropolis pre-compiles (EIP 197, 198 and 213) --- core/vm/evm.go | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'core/vm/evm.go') diff --git a/core/vm/evm.go b/core/vm/evm.go index 9296cc7ca..20eaaccb4 100644 --- a/core/vm/evm.go +++ b/core/vm/evm.go @@ -37,6 +37,10 @@ type ( func run(evm *EVM, snapshot int, contract *Contract, input []byte) ([]byte, error) { if contract.CodeAddr != nil { precompiledContracts := PrecompiledContracts + if evm.ChainConfig().IsMetropolis(evm.BlockNumber) { + precompiledContracts = PrecompiledContractsMetropolis + } + if p := precompiledContracts[*contract.CodeAddr]; p != nil { return RunPrecompiledContract(p, input, contract) } @@ -100,8 +104,8 @@ type EVM struct { abort int32 } -// NewEVM retutrns a new EVM evmironment. The returned EVM is not thread safe -// and should only ever be used *once*. +// NewEVM retutrns a new EVM . The returned EVM is not thread safe and should +// only ever be used *once*. func NewEVM(ctx Context, statedb StateDB, chainConfig *params.ChainConfig, vmConfig Config) *EVM { evm := &EVM{ Context: ctx, -- cgit