Remove any invalid transactions after block processing
This commit is contained in:
parent
ff2cf2dacd
commit
98a631b556
|
@ -199,6 +199,8 @@ func (sm *StateManager) ProcessBlock(block *Block, dontReact bool) error {
|
|||
}
|
||||
|
||||
sm.Ethereum.Broadcast(ethwire.MsgBlockTy, []interface{}{block.Value().Val})
|
||||
|
||||
sm.Ethereum.TxPool().RemoveInvalid(sm.procState)
|
||||
} else {
|
||||
fmt.Println("total diff failed")
|
||||
}
|
||||
|
|
|
@ -210,9 +210,9 @@ func (pool *TxPool) CurrentTransactions() []*Transaction {
|
|||
txList := make([]*Transaction, pool.pool.Len())
|
||||
i := 0
|
||||
for e := pool.pool.Front(); e != nil; e = e.Next() {
|
||||
if tx, ok := e.Value.(*Transaction); ok {
|
||||
txList[i] = tx
|
||||
}
|
||||
tx := e.Value.(*Transaction)
|
||||
|
||||
txList[i] = tx
|
||||
|
||||
i++
|
||||
}
|
||||
|
@ -220,6 +220,17 @@ func (pool *TxPool) CurrentTransactions() []*Transaction {
|
|||
return txList
|
||||
}
|
||||
|
||||
func (pool *TxPool) RemoveInvalid(state *State) {
|
||||
for e := pool.pool.Front(); e != nil; e = e.Next() {
|
||||
tx := e.Value.(*Transaction)
|
||||
sender := state.GetAccount(tx.Sender())
|
||||
err := pool.ValidateTransaction(tx)
|
||||
if err != nil || sender.Nonce != tx.Nonce {
|
||||
pool.pool.Remove(e)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func (pool *TxPool) Flush() []*Transaction {
|
||||
txList := pool.CurrentTransactions()
|
||||
|
||||
|
|
Loading…
Reference in New Issue