aboutsummaryrefslogtreecommitdiffstats
path: root/ethchain/state_transition.go
diff options
context:
space:
mode:
Diffstat (limited to 'ethchain/state_transition.go')
-rw-r--r--ethchain/state_transition.go14
1 files changed, 6 insertions, 8 deletions
diff --git a/ethchain/state_transition.go b/ethchain/state_transition.go
index 6ea9a837d..a92aa4a33 100644
--- a/ethchain/state_transition.go
+++ b/ethchain/state_transition.go
@@ -164,8 +164,6 @@ func (self *StateTransition) TransitionState() (err error) {
// Increment the nonce for the next transaction
sender.Nonce += 1
- receiver = self.Receiver()
-
// Transaction gas
if err = self.UseGas(GasTx); err != nil {
return
@@ -178,6 +176,10 @@ func (self *StateTransition) TransitionState() (err error) {
return
}
+ snapshot := self.state.Copy()
+
+ receiver = self.Receiver()
+
// If the receiver is nil it's a contract (\0*32).
if receiver == nil {
// Create a new state object for the contract
@@ -192,8 +194,6 @@ func (self *StateTransition) TransitionState() (err error) {
return
}
- //snapshot := self.state.Copy()
-
// Process the init code and create 'valid' contract
if IsContractAddr(self.receiver) {
// Evaluate the initialization script
@@ -203,8 +203,7 @@ func (self *StateTransition) TransitionState() (err error) {
code, err := self.Eval(receiver.Init(), receiver, "init")
if err != nil {
- //self.state.Set(snapshot)
- self.state.ResetStateObject(receiver)
+ self.state.Set(snapshot)
return fmt.Errorf("Error during init execution %v", err)
}
@@ -214,8 +213,7 @@ func (self *StateTransition) TransitionState() (err error) {
if len(receiver.Script()) > 0 {
_, err = self.Eval(receiver.Script(), receiver, "code")
if err != nil {
- //self.state.Set(snapshot)
- self.state.ResetStateObject(receiver)
+ self.state.Set(snapshot)
return fmt.Errorf("Error during code execution %v", err)
}