فهرست منبع

core: removed nonce resetting from the block processor.

All nonce error handling has been moved to the worker
obscuren 10 سال پیش
والد
کامیت
093d6d5074
3فایلهای تغییر یافته به همراه7 افزوده شده و 4 حذف شده
  1. 2 2
      core/block_processor.go
  2. 1 0
      core/state/managed_state.go
  3. 4 2
      core/transaction_pool.go

+ 2 - 2
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
 	}
 

+ 1 - 0
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
 }
 

+ 4 - 2
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),