aboutsummaryrefslogtreecommitdiffstats
path: root/ethchain/transaction_pool.go
diff options
context:
space:
mode:
authorobscuren <geffobscura@gmail.com>2014-05-14 22:29:34 +0800
committerobscuren <geffobscura@gmail.com>2014-05-14 22:29:34 +0800
commit98a631b5563b8a87c3fc83f14256087251926a61 (patch)
tree2dbada4e80dd3e70a99fe692c7454c7de9c5a99e /ethchain/transaction_pool.go
parentff2cf2dacd3470e7c2800e2f3644cfc05dfa6c4e (diff)
downloadgo-tangerine-98a631b5563b8a87c3fc83f14256087251926a61.tar.gz
go-tangerine-98a631b5563b8a87c3fc83f14256087251926a61.tar.zst
go-tangerine-98a631b5563b8a87c3fc83f14256087251926a61.zip
Remove any invalid transactions after block processing
Diffstat (limited to 'ethchain/transaction_pool.go')
-rw-r--r--ethchain/transaction_pool.go17
1 files changed, 14 insertions, 3 deletions
diff --git a/ethchain/transaction_pool.go b/ethchain/transaction_pool.go
index 56deae0c6..6c0282dc6 100644
--- a/ethchain/transaction_pool.go
+++ b/ethchain/transaction_pool.go
@@ -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()