diff options
author | obscuren <geffobscura@gmail.com> | 2014-12-04 19:35:23 +0800 |
---|---|---|
committer | obscuren <geffobscura@gmail.com> | 2014-12-04 19:35:23 +0800 |
commit | 3043b233ea4df9b630638d75f3589b94653ccfa9 (patch) | |
tree | 8e426de17ebd46bcbd830abb78af58dd4035206c /vm | |
parent | bff5999efaaa0aa7a2b6518b58d489ad4be9e4ff (diff) | |
download | dexon-3043b233ea4df9b630638d75f3589b94653ccfa9.tar.gz dexon-3043b233ea4df9b630638d75f3589b94653ccfa9.tar.zst dexon-3043b233ea4df9b630638d75f3589b94653ccfa9.zip |
Log is now interface
Diffstat (limited to 'vm')
-rw-r--r-- | vm/environment.go | 24 | ||||
-rw-r--r-- | vm/vm_debug.go | 4 |
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) |