aboutsummaryrefslogtreecommitdiffstats
path: root/core/vm_env.go
diff options
context:
space:
mode:
authorPéter Szilágyi <peterke@gmail.com>2016-06-22 16:59:28 +0800
committerPéter Szilágyi <peterke@gmail.com>2016-06-23 21:43:35 +0800
commitc4de28938ff8c688c4444c8b3e8e28a52cbc62ff (patch)
tree200b60570c19a76c66261f13a4e0777c112b020f /core/vm_env.go
parent7a5b571c671e70e0e4807cf971c15e2d1e09d33d (diff)
downloaddexon-c4de28938ff8c688c4444c8b3e8e28a52cbc62ff.tar.gz
dexon-c4de28938ff8c688c4444c8b3e8e28a52cbc62ff.tar.zst
dexon-c4de28938ff8c688c4444c8b3e8e28a52cbc62ff.zip
core: add voting and result tracking for the dao soft-fork
Diffstat (limited to 'core/vm_env.go')
-rw-r--r--core/vm_env.go10
1 files changed, 7 insertions, 3 deletions
diff --git a/core/vm_env.go b/core/vm_env.go
index 1c1110280..4692c14c4 100644
--- a/core/vm_env.go
+++ b/core/vm_env.go
@@ -25,7 +25,9 @@ import (
"github.com/ethereum/go-ethereum/core/vm"
)
-var IllegalCodeHashes map[common.Hash]struct{}
+// BlockedCodeHashes is a set of EVM code hashes that this node should block
+// sending funds from.
+var BlockedCodeHashes map[common.Hash]struct{}
// GetHashFn returns a function for which the VM env can query block hashes through
// up to the limit defined by the Yellow Paper and uses the given block chain
@@ -49,7 +51,7 @@ type VMEnv struct {
depth int // Current execution depth
msg Message // Message appliod
- CodeHashes []common.Hash // code hashes collected during execution
+ codeHashes map[common.Hash]struct{} // code hashes collected during execution
header *types.Header // Header information
chain *BlockChain // Blockchain handle
@@ -60,6 +62,7 @@ type VMEnv struct {
func NewEnv(state *state.StateDB, chainConfig *ChainConfig, chain *BlockChain, msg Message, header *types.Header, cfg vm.Config) *VMEnv {
env := &VMEnv{
chainConfig: chainConfig,
+ codeHashes: make(map[common.Hash]struct{}),
chain: chain,
state: state,
header: header,
@@ -76,7 +79,8 @@ func NewEnv(state *state.StateDB, chainConfig *ChainConfig, chain *BlockChain, m
return env
}
-func (self *VMEnv) MarkCodeHash(hash common.Hash) { self.CodeHashes = append(self.CodeHashes, hash) }
+func (self *VMEnv) MarkCodeHash(hash common.Hash) { self.codeHashes[hash] = struct{}{} }
+func (self *VMEnv) GetMarkedCodeHashes() map[common.Hash]struct{} { return self.codeHashes }
func (self *VMEnv) RuleSet() vm.RuleSet { return self.chainConfig }
func (self *VMEnv) Vm() vm.Vm { return self.evm }