aboutsummaryrefslogtreecommitdiffstats
path: root/vm
diff options
context:
space:
mode:
authorobscuren <geffobscura@gmail.com>2014-12-04 19:35:23 +0800
committerobscuren <geffobscura@gmail.com>2014-12-04 19:35:23 +0800
commit3043b233ea4df9b630638d75f3589b94653ccfa9 (patch)
tree8e426de17ebd46bcbd830abb78af58dd4035206c /vm
parentbff5999efaaa0aa7a2b6518b58d489ad4be9e4ff (diff)
downloaddexon-3043b233ea4df9b630638d75f3589b94653ccfa9.tar.gz
dexon-3043b233ea4df9b630638d75f3589b94653ccfa9.tar.zst
dexon-3043b233ea4df9b630638d75f3589b94653ccfa9.zip
Log is now interface
Diffstat (limited to 'vm')
-rw-r--r--vm/environment.go24
-rw-r--r--vm/vm_debug.go4
2 files changed, 25 insertions, 3 deletions
diff --git a/vm/environment.go b/vm/environment.go
index 9e129b6ee..d77fb1419 100644
--- a/vm/environment.go
+++ b/vm/environment.go
@@ -20,7 +20,7 @@ type Environment interface {
BlockHash() []byte
GasLimit() *big.Int
Transfer(from, to Account, amount *big.Int) error
- AddLog(*state.Log)
+ AddLog(state.Log)
Depth() int
SetDepth(i int)
@@ -52,3 +52,25 @@ func Transfer(from, to Account, amount *big.Int) error {
return nil
}
+
+type Log struct {
+ address []byte
+ topics [][]byte
+ data []byte
+}
+
+func (self *Log) Address() []byte {
+ return self.address
+}
+
+func (self *Log) Topics() [][]byte {
+ return self.topics
+}
+
+func (self *Log) Data() []byte {
+ return self.data
+}
+
+func (self *Log) RlpData() interface{} {
+ return []interface{}{self.address, ethutil.ByteSliceToInterface(self.topics), self.data}
+}
diff --git a/vm/vm_debug.go b/vm/vm_debug.go
index 62b1f121c..0a541a769 100644
--- a/vm/vm_debug.go
+++ b/vm/vm_debug.go
@@ -35,7 +35,7 @@ func NewDebugVm(env Environment) *DebugVm {
lt = LogTyDiff
}
- return &DebugVm{env: env, logTy: lt, Recoverable: false}
+ return &DebugVm{env: env, logTy: lt, Recoverable: true}
}
func (self *DebugVm) Run(me, caller ClosureRef, code []byte, value, gas, price *big.Int, callData []byte) (ret []byte, err error) {
@@ -750,7 +750,7 @@ func (self *DebugVm) Run(me, caller ClosureRef, code []byte, value, gas, price *
topics[i] = ethutil.LeftPadBytes(stack.Pop().Bytes(), 32)
}
- log := &state.Log{closure.Address(), topics, data}
+ log := &Log{closure.Address(), topics, data}
self.env.AddLog(log)
self.Printf(" => %v", log)