From 662cccb5ec127969d6e939fad3e95db021822683 Mon Sep 17 00:00:00 2001 From: Wei-Ning Huang Date: Wed, 13 Mar 2019 18:20:22 +0800 Subject: core: vm: create new oracle contract instance in each call (#251) Since the VM might be called from different source (downloader, RPC, etc.). We need to make the call state separate. Modify the calling sequence so a new oracle contract instance is used on each run. --- core/vm/evm.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'core/vm/evm.go') diff --git a/core/vm/evm.go b/core/vm/evm.go index 6b2844020..baf3a0ac9 100644 --- a/core/vm/evm.go +++ b/core/vm/evm.go @@ -49,7 +49,7 @@ type ( func run(evm *EVM, contract *Contract, input []byte, readOnly bool) ([]byte, error) { if contract.CodeAddr != nil { if o := OracleContracts[*contract.CodeAddr]; o != nil { - return RunOracleContract(o, evm, input, contract) + return RunOracleContract(o(), evm, input, contract) } precompiles := PrecompiledContractsHomestead if evm.ChainConfig().IsByzantium(evm.BlockNumber) { -- cgit v1.2.3