aboutsummaryrefslogtreecommitdiffstats
path: root/core/vm/runtime
diff options
context:
space:
mode:
authorJeffrey Wilcke <jeffrey@ethereum.org>2016-04-01 19:42:19 +0800
committerJeffrey Wilcke <jeffrey@ethereum.org>2016-04-01 19:42:19 +0800
commitc58079461bafe508bea9233e2b81852df5188f57 (patch)
tree33d4c6a96eed3bf1ce9f69bbef3cbc1561f2b114 /core/vm/runtime
parent10d3466c934bd425a8c941270749a652a588527d (diff)
parent1f3596c25af077a3303c554ee6b49404b20f7117 (diff)
downloaddexon-c58079461bafe508bea9233e2b81852df5188f57.tar
dexon-c58079461bafe508bea9233e2b81852df5188f57.tar.gz
dexon-c58079461bafe508bea9233e2b81852df5188f57.tar.bz2
dexon-c58079461bafe508bea9233e2b81852df5188f57.tar.lz
dexon-c58079461bafe508bea9233e2b81852df5188f57.tar.xz
dexon-c58079461bafe508bea9233e2b81852df5188f57.tar.zst
dexon-c58079461bafe508bea9233e2b81852df5188f57.zip
Merge pull request #2281 from obscuren/configurable-genesis
core: homestead chain configuration & artificial gas floor target mining flag
Diffstat (limited to 'core/vm/runtime')
-rw-r--r--core/vm/runtime/env.go9
-rw-r--r--core/vm/runtime/runtime.go11
2 files changed, 17 insertions, 3 deletions
diff --git a/core/vm/runtime/env.go b/core/vm/runtime/env.go
index ce64d7117..1e943940b 100644
--- a/core/vm/runtime/env.go
+++ b/core/vm/runtime/env.go
@@ -27,8 +27,9 @@ import (
// Env is a basic runtime environment required for running the EVM.
type Env struct {
- depth int
- state *state.StateDB
+ ruleSet vm.RuleSet
+ depth int
+ state *state.StateDB
origin common.Address
coinbase common.Address
@@ -48,6 +49,7 @@ type Env struct {
// NewEnv returns a new vm.Environment
func NewEnv(cfg *Config, state *state.StateDB) vm.Environment {
env := &Env{
+ ruleSet: cfg.RuleSet,
state: state,
origin: cfg.Origin,
coinbase: cfg.Coinbase,
@@ -56,7 +58,7 @@ func NewEnv(cfg *Config, state *state.StateDB) vm.Environment {
difficulty: cfg.Difficulty,
gasLimit: cfg.GasLimit,
}
- env.evm = vm.New(env, &vm.Config{
+ env.evm = vm.New(env, vm.Config{
Debug: cfg.Debug,
EnableJit: !cfg.DisableJit,
ForceJit: !cfg.DisableJit,
@@ -77,6 +79,7 @@ func (self *Env) AddStructLog(log vm.StructLog) {
self.logs = append(self.logs, log)
}
+func (self *Env) RuleSet() vm.RuleSet { return self.ruleSet }
func (self *Env) Vm() vm.Vm { return self.evm }
func (self *Env) Origin() common.Address { return self.origin }
func (self *Env) BlockNumber() *big.Int { return self.number }
diff --git a/core/vm/runtime/runtime.go b/core/vm/runtime/runtime.go
index f88a20170..553864a83 100644
--- a/core/vm/runtime/runtime.go
+++ b/core/vm/runtime/runtime.go
@@ -22,13 +22,20 @@ import (
"github.com/ethereum/go-ethereum/common"
"github.com/ethereum/go-ethereum/core/state"
+ "github.com/ethereum/go-ethereum/core/vm"
"github.com/ethereum/go-ethereum/crypto"
"github.com/ethereum/go-ethereum/ethdb"
)
+// The default, always homestead, rule set for the vm env
+type ruleSet struct{}
+
+func (ruleSet) IsHomestead(*big.Int) bool { return true }
+
// Config is a basic type specifying certain configuration flags for running
// the EVM.
type Config struct {
+ RuleSet vm.RuleSet
Difficulty *big.Int
Origin common.Address
Coinbase common.Address
@@ -46,6 +53,10 @@ type Config struct {
// sets defaults on the config
func setDefaults(cfg *Config) {
+ if cfg.RuleSet == nil {
+ cfg.RuleSet = ruleSet{}
+ }
+
if cfg.Difficulty == nil {
cfg.Difficulty = new(big.Int)
}