From 88ff13c241faff1d58e47f12bd283c112de7225a Mon Sep 17 00:00:00 2001 From: obscuren Date: Thu, 5 Mar 2015 19:51:25 +0100 Subject: Spec changes. * All errors during state transition result in an invalid tx --- vm/vm.go | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'vm/vm.go') diff --git a/vm/vm.go b/vm/vm.go index bce8088ef..ff4692ec8 100644 --- a/vm/vm.go +++ b/vm/vm.go @@ -408,7 +408,12 @@ func (self *Vm) Run(me, caller ContextRef, code []byte, value, gas, price *big.I case BALANCE: addr := stack.Pop().Bytes() - balance := statedb.GetBalance(addr) + var balance *big.Int + if statedb.GetStateObject(addr) != nil { + balance = statedb.GetBalance(addr) + } else { + balance = base + } stack.Push(balance) -- cgit v1.2.3 From ed84b58af57809a743e5be6f6ea53c079c50b765 Mon Sep 17 00:00:00 2001 From: obscuren Date: Fri, 6 Mar 2015 16:58:52 +0100 Subject: Debug option for VM & command line flag --- vm/vm.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'vm/vm.go') diff --git a/vm/vm.go b/vm/vm.go index 837be8c4d..890a7dd2c 100644 --- a/vm/vm.go +++ b/vm/vm.go @@ -30,8 +30,8 @@ type Vm struct { func New(env Environment) *Vm { lt := LogTyPretty - // lt = LogTyDiff - return &Vm{debug: true, env: env, logTy: lt, Recoverable: true} + + return &Vm{debug: Debug, env: env, logTy: lt, Recoverable: true} } func (self *Vm) Run(me, caller ContextRef, code []byte, value, gas, price *big.Int, callData []byte) (ret []byte, err error) { -- cgit v1.2.3 From 19efebe91e354ad86c171e01c47f9c2f3ef5cf9f Mon Sep 17 00:00:00 2001 From: obscuren Date: Mon, 9 Mar 2015 11:28:35 +0100 Subject: Updated tests and fixed suicide --- vm/vm.go | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'vm/vm.go') diff --git a/vm/vm.go b/vm/vm.go index 890a7dd2c..3647d7a5e 100644 --- a/vm/vm.go +++ b/vm/vm.go @@ -736,6 +736,7 @@ func (self *Vm) Run(me, caller ContextRef, code []byte, value, gas, price *big.I self.Printf(" => (%x) %v", receiver.Address()[:4], balance) receiver.AddBalance(balance) + statedb.Delete(context.Address()) fallthrough @@ -905,6 +906,10 @@ func (self *Vm) calculateGasAndSize(context *Context, caller ContextRef, op OpCo g = GasStorageMod } gas.Set(g) + case SUICIDE: + if !statedb.IsDeleted(context.Address()) { + statedb.Refund(self.env.Origin(), RefundSuicide) + } case MLOAD: newMemSize = calcMemSize(stack.Peek(), u256(32)) case MSTORE8: -- cgit v1.2.3