aboutsummaryrefslogtreecommitdiffstats
path: root/core/vm/environment.go
diff options
context:
space:
mode:
authorJeffrey Wilcke <jeffrey@ethereum.org>2016-03-02 06:32:43 +0800
committerJeffrey Wilcke <geffobscura@gmail.com>2016-04-01 07:01:10 +0800
commitf0cbebb19f3137ee3ba0e66dadd1b5b9dbf98b1c (patch)
tree02e31a0e31040980e30e3a835ff9eba73e419439 /core/vm/environment.go
parent10d3466c934bd425a8c941270749a652a588527d (diff)
downloaddexon-f0cbebb19f3137ee3ba0e66dadd1b5b9dbf98b1c.tar.gz
dexon-f0cbebb19f3137ee3ba0e66dadd1b5b9dbf98b1c.tar.zst
dexon-f0cbebb19f3137ee3ba0e66dadd1b5b9dbf98b1c.zip
core: added basic chain configuration
Added chain configuration options and write out during genesis database insertion. If no "config" was found, nothing is written to the database. Configurations are written on a per genesis base. This means that any chain (which is identified by it's genesis hash) can have their own chain settings.
Diffstat (limited to 'core/vm/environment.go')
-rw-r--r--core/vm/environment.go12
1 files changed, 10 insertions, 2 deletions
diff --git a/core/vm/environment.go b/core/vm/environment.go
index 568218edd..747627565 100644
--- a/core/vm/environment.go
+++ b/core/vm/environment.go
@@ -22,9 +22,17 @@ import (
"github.com/ethereum/go-ethereum/common"
)
+// RuleSet is an interface that defines the current rule set during the
+// execution of the EVM instructions (e.g. whether it's homestead)
+type RuleSet interface {
+ IsHomestead(*big.Int) bool
+}
+
// Environment is an EVM requirement and helper which allows access to outside
// information such as states.
type Environment interface {
+ // The current ruleset
+ RuleSet() RuleSet
// The state database
Db() Database
// Creates a restorable snapshot
@@ -53,10 +61,10 @@ type Environment interface {
AddLog(*Log)
// Type of the VM
Vm() Vm
- // Current calling depth
+ // Get the curret calling depth
Depth() int
+ // Set the current calling depth
SetDepth(i int)
-
// Call another contract
Call(me ContractRef, addr common.Address, data []byte, gas, price, value *big.Int) ([]byte, error)
// Take another's contract code and execute within our own context