aboutsummaryrefslogtreecommitdiffstats
path: root/core/vm/oracle.go
diff options
context:
space:
mode:
authorWei-Ning Huang <w@dexon.org>2019-03-13 18:20:22 +0800
committerGitHub <noreply@github.com>2019-03-13 18:20:22 +0800
commit662cccb5ec127969d6e939fad3e95db021822683 (patch)
treefce48cd9f061cb8752519a5d937a15b7f4b3c0a7 /core/vm/oracle.go
parentc1971db86a3a9ea4d56f24ca375d87338c1ca113 (diff)
downloaddexon-662cccb5ec127969d6e939fad3e95db021822683.tar
dexon-662cccb5ec127969d6e939fad3e95db021822683.tar.gz
dexon-662cccb5ec127969d6e939fad3e95db021822683.tar.bz2
dexon-662cccb5ec127969d6e939fad3e95db021822683.tar.lz
dexon-662cccb5ec127969d6e939fad3e95db021822683.tar.xz
dexon-662cccb5ec127969d6e939fad3e95db021822683.tar.zst
dexon-662cccb5ec127969d6e939fad3e95db021822683.zip
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.
Diffstat (limited to 'core/vm/oracle.go')
-rw-r--r--core/vm/oracle.go8
1 files changed, 5 insertions, 3 deletions
diff --git a/core/vm/oracle.go b/core/vm/oracle.go
index 81755cd9b..0d4c10d9e 100644
--- a/core/vm/oracle.go
+++ b/core/vm/oracle.go
@@ -38,9 +38,11 @@ type OracleContract interface {
}
// A map representing available system oracle contracts.
-var OracleContracts = map[common.Address]OracleContract{
- GovernanceContractAddress: &GovernanceContract{
- coreDKGUtils: &defaultCoreDKGUtils{},
+var OracleContracts = map[common.Address]func() OracleContract{
+ GovernanceContractAddress: func() OracleContract {
+ return &GovernanceContract{
+ coreDKGUtils: &defaultCoreDKGUtils{},
+ }
},
}