aboutsummaryrefslogtreecommitdiffstats
path: root/core/vm/evm.go
diff options
context:
space:
mode:
authorWei-Ning Huang <w@dexon.org>2019-01-25 19:24:35 +0800
committerWei-Ning Huang <w@dexon.org>2019-04-09 21:32:56 +0800
commit09607eed5571e8689ba94d1cd6f6130fbdef3864 (patch)
treea02ee017a14d5dd587eb5586d1f80980293306c2 /core/vm/evm.go
parent3cee5fde1489c6d78df161ec087557b29991f684 (diff)
downloadgo-tangerine-09607eed5571e8689ba94d1cd6f6130fbdef3864.tar
go-tangerine-09607eed5571e8689ba94d1cd6f6130fbdef3864.tar.gz
go-tangerine-09607eed5571e8689ba94d1cd6f6130fbdef3864.tar.bz2
go-tangerine-09607eed5571e8689ba94d1cd6f6130fbdef3864.tar.lz
go-tangerine-09607eed5571e8689ba94d1cd6f6130fbdef3864.tar.xz
go-tangerine-09607eed5571e8689ba94d1cd6f6130fbdef3864.tar.zst
go-tangerine-09607eed5571e8689ba94d1cd6f6130fbdef3864.zip
core: vm: refactor governance and add node info oracle (#174)
Diffstat (limited to 'core/vm/evm.go')
-rw-r--r--core/vm/evm.go7
1 files changed, 4 insertions, 3 deletions
diff --git a/core/vm/evm.go b/core/vm/evm.go
index 2eba9c2cb..422d52ccb 100644
--- a/core/vm/evm.go
+++ b/core/vm/evm.go
@@ -48,8 +48,8 @@ type (
// run runs the given contract and takes care of running precompiles with a fallback to the byte code interpreter.
func run(evm *EVM, contract *Contract, input []byte, readOnly bool) ([]byte, error) {
if contract.CodeAddr != nil {
- if *contract.CodeAddr == GovernanceContractAddress {
- return RunGovernanceContract(evm, input, contract)
+ if o := OracleContracts[*contract.CodeAddr]; o != nil {
+ return RunOracleContract(o, evm, input, contract)
}
precompiles := PrecompiledContractsHomestead
if evm.ChainConfig().IsByzantium(evm.BlockNumber) {
@@ -216,7 +216,8 @@ func (evm *EVM) Call(caller ContractRef, addr common.Address, input []byte, gas
if evm.ChainConfig().IsByzantium(evm.BlockNumber) {
precompiles = PrecompiledContractsByzantium
}
- if precompiles[addr] == nil && evm.ChainConfig().IsEIP158(evm.BlockNumber) && value.Sign() == 0 && addr != GovernanceContractAddress {
+ if precompiles[addr] == nil && OracleContracts[addr] == nil &&
+ evm.ChainConfig().IsEIP158(evm.BlockNumber) && value.Sign() == 0 {
// Calling a non existing account, don't do anything, but ping the tracer
if evm.vmConfig.Debug && evm.depth == 0 {
evm.vmConfig.Tracer.CaptureStart(caller.Address(), addr, false, input, gas, value)