diff options
author | Péter Szilágyi <peterke@gmail.com> | 2016-06-22 16:59:28 +0800 |
---|---|---|
committer | Péter Szilágyi <peterke@gmail.com> | 2016-06-23 21:43:35 +0800 |
commit | c4de28938ff8c688c4444c8b3e8e28a52cbc62ff (patch) | |
tree | 200b60570c19a76c66261f13a4e0777c112b020f /core/vm_env.go | |
parent | 7a5b571c671e70e0e4807cf971c15e2d1e09d33d (diff) | |
download | dexon-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.go | 10 |
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 } |