aboutsummaryrefslogtreecommitdiffstats
path: root/ethchain
diff options
context:
space:
mode:
authorobscuren <geffobscura@gmail.com>2014-06-13 19:06:27 +0800
committerobscuren <geffobscura@gmail.com>2014-06-13 19:06:27 +0800
commitc734dde982c4ce778afa074e94efb09e552dbd84 (patch)
treee67fd1bbc2d359f3463112fa1b5c92e8da8f64f7 /ethchain
parentcebf4e3697dcd20e290ff56ad6e5dfca2059c063 (diff)
downloadgo-tangerine-c734dde982c4ce778afa074e94efb09e552dbd84.tar.gz
go-tangerine-c734dde982c4ce778afa074e94efb09e552dbd84.tar.zst
go-tangerine-c734dde982c4ce778afa074e94efb09e552dbd84.zip
comments & refactor
Diffstat (limited to 'ethchain')
-rw-r--r--ethchain/state_manager.go4
-rw-r--r--ethchain/state_transition.go20
2 files changed, 19 insertions, 5 deletions
diff --git a/ethchain/state_manager.go b/ethchain/state_manager.go
index 576afa8d3..c68d5e001 100644
--- a/ethchain/state_manager.go
+++ b/ethchain/state_manager.go
@@ -124,6 +124,9 @@ done:
}
}
+ // Notify all subscribers
+ self.Ethereum.Reactor().Post("newTx:post", tx)
+
txGas.Sub(txGas, st.gas)
accumelative := new(big.Int).Set(totalUsedGas.Add(totalUsedGas, txGas))
receipt := &Receipt{tx, ethutil.CopyBytes(state.Root().([]byte)), accumelative}
@@ -158,7 +161,6 @@ func (sm *StateManager) ProcessBlock(state *State, parent, block *Block, dontRea
hash := block.Hash()
if sm.bc.HasBlock(hash) {
- //fmt.Println("[STATE] We already have this block, ignoring")
return nil
}
diff --git a/ethchain/state_transition.go b/ethchain/state_transition.go
index 6ec9205e9..1256d019c 100644
--- a/ethchain/state_transition.go
+++ b/ethchain/state_transition.go
@@ -6,6 +6,22 @@ import (
"math/big"
)
+/*
+ * The State transitioning model
+ *
+ * A state transition is a change made when a transaction is applied to the current world state
+ * The state transitioning model does all all the necessary work to work out a valid new state root.
+ * 1) Nonce handling
+ * 2) Pre pay / buy gas of the coinbase (miner)
+ * 3) Create a new state object if the recipient is \0*32
+ * 4) Value transfer
+ * == If contract creation ==
+ * 4a) Attempt to run transaction data
+ * 4b) If valid, use result as code for the new state object
+ * == end ==
+ * 5) Run Script section
+ * 6) Derive new state root
+ */
type StateTransition struct {
coinbase []byte
tx *Transaction
@@ -115,10 +131,6 @@ func (self *StateTransition) TransitionState() (err error) {
}
sender.Nonce += 1
- defer func() {
- // Notify all subscribers
- //self.Ethereum.Reactor().Post("newTx:post", tx)
- }()
if err = self.BuyGas(); err != nil {
return err