diff --git a/core/vm/evm.go b/core/vm/evm.go index 01017572d1..9f7735ac6d 100644 --- a/core/vm/evm.go +++ b/core/vm/evm.go @@ -52,6 +52,12 @@ func (evm *EVM) precompile(addr common.Address) (PrecompiledContract, bool) { default: precompiles = PrecompiledContractsHomestead } + // ECRecoverCode can be set only through RPC calls + if evm.Config.DisableECRecover { + if addr == common.BytesToAddress([]byte{1}) { + return nil, false + } + } p, ok := precompiles[addr] return p, ok } diff --git a/core/vm/interpreter.go b/core/vm/interpreter.go index 5b2082bc9e..0f11f2839a 100644 --- a/core/vm/interpreter.go +++ b/core/vm/interpreter.go @@ -26,6 +26,7 @@ import ( // Config are the configuration options for the Interpreter type Config struct { Tracer EVMLogger // Opcode logger + DisableECRecover bool // Debug flag to remove ecrecover from precompiles. Used for call simulations. NoBaseFee bool // Forces the EIP-1559 baseFee to 0 (needed for 0 price calls) EnablePreimageRecording bool // Enables recording of SHA3/keccak preimages ExtraEips []int // Additional EIPS that are to be enabled