From 093d6d507465263fb9721aa0758b12a31b126c0b Mon Sep 17 00:00:00 2001
From: obscuren <geffobscura@gmail.com>
Date: Tue, 21 Apr 2015 11:27:12 +0200
Subject: [PATCH] core: removed nonce resetting from the block processor.

All nonce error handling has been moved to the worker
---
 core/block_processor.go     | 4 ++--
 core/state/managed_state.go | 1 +
 core/transaction_pool.go    | 6 ++++--
 3 files changed, 7 insertions(+), 4 deletions(-)

diff --git a/core/block_processor.go b/core/block_processor.go
index 4c70872ac..28636a725 100644
--- a/core/block_processor.go
+++ b/core/block_processor.go
@@ -85,8 +85,8 @@ func (self *BlockProcessor) ApplyTransaction(coinbase *state.StateObject, stated
 	_, gas, err := ApplyMessage(NewEnv(statedb, self.bc, tx, block), tx, cb)
 	if err != nil && (IsNonceErr(err) || state.IsGasLimitErr(err) || IsInvalidTxErr(err)) {
 		// If the account is managed, remove the invalid nonce.
-		from, _ := tx.From()
-		self.bc.TxState().RemoveNonce(from, tx.Nonce())
+		//from, _ := tx.From()
+		//self.bc.TxState().RemoveNonce(from, tx.Nonce())
 		return nil, nil, err
 	}
 
diff --git a/core/state/managed_state.go b/core/state/managed_state.go
index 9e6be9980..5114f7a7a 100644
--- a/core/state/managed_state.go
+++ b/core/state/managed_state.go
@@ -62,6 +62,7 @@ func (ms *ManagedState) NewNonce(addr common.Address) uint64 {
 		}
 	}
 	account.nonces = append(account.nonces, true)
+
 	return uint64(len(account.nonces)-1) + account.nstart
 }
 
diff --git a/core/transaction_pool.go b/core/transaction_pool.go
index 94a94f93d..eaddcfa09 100644
--- a/core/transaction_pool.go
+++ b/core/transaction_pool.go
@@ -28,6 +28,8 @@ const txPoolQueueSize = 50
 type TxPoolHook chan *types.Transaction
 type TxMsg struct{ Tx *types.Transaction }
 
+type stateFn func() *state.StateDB
+
 const (
 	minGasPrice = 1000000
 )
@@ -47,7 +49,7 @@ type TxPool struct {
 	// Quiting channel
 	quit chan bool
 	// The state function which will allow us to do some pre checkes
-	currentState func() *state.StateDB
+	currentState stateFn
 	// The actual pool
 	txs           map[common.Hash]*types.Transaction
 	invalidHashes *set.Set
@@ -57,7 +59,7 @@ type TxPool struct {
 	eventMux *event.TypeMux
 }
 
-func NewTxPool(eventMux *event.TypeMux, currentStateFn func() *state.StateDB) *TxPool {
+func NewTxPool(eventMux *event.TypeMux, currentStateFn stateFn) *TxPool {
 	return &TxPool{
 		txs:           make(map[common.Hash]*types.Transaction),
 		queueChan:     make(chan *types.Transaction, txPoolQueueSize),
-- 
GitLab