core: removed nonce resetting from the block processor.
All nonce error handling has been moved to the worker
This commit is contained in:
parent
1d6d42919e
commit
093d6d5074
|
@ -85,8 +85,8 @@ func (self *BlockProcessor) ApplyTransaction(coinbase *state.StateObject, stated
|
||||||
_, gas, err := ApplyMessage(NewEnv(statedb, self.bc, tx, block), tx, cb)
|
_, gas, err := ApplyMessage(NewEnv(statedb, self.bc, tx, block), tx, cb)
|
||||||
if err != nil && (IsNonceErr(err) || state.IsGasLimitErr(err) || IsInvalidTxErr(err)) {
|
if err != nil && (IsNonceErr(err) || state.IsGasLimitErr(err) || IsInvalidTxErr(err)) {
|
||||||
// If the account is managed, remove the invalid nonce.
|
// If the account is managed, remove the invalid nonce.
|
||||||
from, _ := tx.From()
|
//from, _ := tx.From()
|
||||||
self.bc.TxState().RemoveNonce(from, tx.Nonce())
|
//self.bc.TxState().RemoveNonce(from, tx.Nonce())
|
||||||
return nil, nil, err
|
return nil, nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -62,6 +62,7 @@ func (ms *ManagedState) NewNonce(addr common.Address) uint64 {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
account.nonces = append(account.nonces, true)
|
account.nonces = append(account.nonces, true)
|
||||||
|
|
||||||
return uint64(len(account.nonces)-1) + account.nstart
|
return uint64(len(account.nonces)-1) + account.nstart
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -28,6 +28,8 @@ const txPoolQueueSize = 50
|
||||||
type TxPoolHook chan *types.Transaction
|
type TxPoolHook chan *types.Transaction
|
||||||
type TxMsg struct{ Tx *types.Transaction }
|
type TxMsg struct{ Tx *types.Transaction }
|
||||||
|
|
||||||
|
type stateFn func() *state.StateDB
|
||||||
|
|
||||||
const (
|
const (
|
||||||
minGasPrice = 1000000
|
minGasPrice = 1000000
|
||||||
)
|
)
|
||||||
|
@ -47,7 +49,7 @@ type TxPool struct {
|
||||||
// Quiting channel
|
// Quiting channel
|
||||||
quit chan bool
|
quit chan bool
|
||||||
// The state function which will allow us to do some pre checkes
|
// The state function which will allow us to do some pre checkes
|
||||||
currentState func() *state.StateDB
|
currentState stateFn
|
||||||
// The actual pool
|
// The actual pool
|
||||||
txs map[common.Hash]*types.Transaction
|
txs map[common.Hash]*types.Transaction
|
||||||
invalidHashes *set.Set
|
invalidHashes *set.Set
|
||||||
|
@ -57,7 +59,7 @@ type TxPool struct {
|
||||||
eventMux *event.TypeMux
|
eventMux *event.TypeMux
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewTxPool(eventMux *event.TypeMux, currentStateFn func() *state.StateDB) *TxPool {
|
func NewTxPool(eventMux *event.TypeMux, currentStateFn stateFn) *TxPool {
|
||||||
return &TxPool{
|
return &TxPool{
|
||||||
txs: make(map[common.Hash]*types.Transaction),
|
txs: make(map[common.Hash]*types.Transaction),
|
||||||
queueChan: make(chan *types.Transaction, txPoolQueueSize),
|
queueChan: make(chan *types.Transaction, txPoolQueueSize),
|
||||||
|
|
Loading…
Reference in New Issue