diff options
author | obscuren <geffobscura@gmail.com> | 2014-06-13 19:06:27 +0800 |
---|---|---|
committer | obscuren <geffobscura@gmail.com> | 2014-06-13 19:06:27 +0800 |
commit | c734dde982c4ce778afa074e94efb09e552dbd84 (patch) | |
tree | e67fd1bbc2d359f3463112fa1b5c92e8da8f64f7 /ethchain | |
parent | cebf4e3697dcd20e290ff56ad6e5dfca2059c063 (diff) | |
download | go-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.go | 4 | ||||
-rw-r--r-- | ethchain/state_transition.go | 20 |
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 |