aboutsummaryrefslogtreecommitdiffstats
path: root/core/vm/environment.go
diff options
context:
space:
mode:
Diffstat (limited to 'core/vm/environment.go')
-rw-r--r--core/vm/environment.go17
1 files changed, 17 insertions, 0 deletions
diff --git a/core/vm/environment.go b/core/vm/environment.go
index 282d19578..c103049a2 100644
--- a/core/vm/environment.go
+++ b/core/vm/environment.go
@@ -8,6 +8,8 @@ import (
"github.com/ethereum/go-ethereum/core/state"
)
+// Environment is is required by the virtual machine to get information from
+// it's own isolated environment. For an example see `core.VMEnv`
type Environment interface {
State() *state.StateDB
@@ -20,6 +22,8 @@ type Environment interface {
GasLimit() *big.Int
Transfer(from, to Account, amount *big.Int) error
AddLog(*state.Log)
+ AddStructLog(StructLog)
+ StructLogs() []StructLog
VmType() Type
@@ -31,6 +35,19 @@ type Environment interface {
Create(me ContextRef, data []byte, gas, price, value *big.Int) ([]byte, error, ContextRef)
}
+// StructLog is emited to the Environment each cycle and lists information about the curent internal state
+// prior to the execution of the statement.
+type StructLog struct {
+ Pc uint64
+ Op OpCode
+ Gas *big.Int
+ GasCost *big.Int
+ Memory []byte
+ Stack []*big.Int
+ Storage map[common.Hash][]byte
+ Err error
+}
+
type Account interface {
SubBalance(amount *big.Int)
AddBalance(amount *big.Int)