aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMaran <maran.hidskes@gmail.com>2014-05-28 21:54:56 +0800
committerMaran <maran.hidskes@gmail.com>2014-05-28 21:54:56 +0800
commita453b5514da21c021394b42fae23d3b9c229a03a (patch)
tree7e6bc59ab71ed6a33155b03eaa754af18032dd70
parent8601604a09a5995525ea5604bfbb1f15b0d09c59 (diff)
parentb695c82520548f62f65937731def1224c72dce48 (diff)
downloadgo-tangerine-a453b5514da21c021394b42fae23d3b9c229a03a.tar
go-tangerine-a453b5514da21c021394b42fae23d3b9c229a03a.tar.gz
go-tangerine-a453b5514da21c021394b42fae23d3b9c229a03a.tar.bz2
go-tangerine-a453b5514da21c021394b42fae23d3b9c229a03a.tar.lz
go-tangerine-a453b5514da21c021394b42fae23d3b9c229a03a.tar.xz
go-tangerine-a453b5514da21c021394b42fae23d3b9c229a03a.tar.zst
go-tangerine-a453b5514da21c021394b42fae23d3b9c229a03a.zip
Merge branch 'develop' of github.com:ethereum/eth-go into develop
-rw-r--r--ethchain/state_manager.go7
-rw-r--r--ethchain/transaction_pool.go4
2 files changed, 7 insertions, 4 deletions
diff --git a/ethchain/state_manager.go b/ethchain/state_manager.go
index 1a9e9f601..a57377bee 100644
--- a/ethchain/state_manager.go
+++ b/ethchain/state_manager.go
@@ -105,8 +105,11 @@ func (sm *StateManager) ApplyTransactions(state *State, block *Block, txs []*Tra
for _, tx := range txs {
usedGas, err := sm.ApplyTransaction(state, block, tx)
if err != nil {
+ if IsNonceErr(err) {
+ continue
+ }
+
ethutil.Config.Log.Infoln(err)
- //continue
}
accumelative := new(big.Int).Set(totalUsedGas.Add(totalUsedGas, usedGas))
@@ -116,7 +119,7 @@ func (sm *StateManager) ApplyTransactions(state *State, block *Block, txs []*Tra
validTxs = append(validTxs, tx)
}
- return receipts, txs
+ return receipts, validTxs
}
func (sm *StateManager) ApplyTransaction(state *State, block *Block, tx *Transaction) (totalGasUsed *big.Int, err error) {
diff --git a/ethchain/transaction_pool.go b/ethchain/transaction_pool.go
index 7198026a8..ba2ffcef5 100644
--- a/ethchain/transaction_pool.go
+++ b/ethchain/transaction_pool.go
@@ -106,7 +106,7 @@ func (pool *TxPool) ProcessTransaction(tx *Transaction, state *State, toContract
sender := state.GetAccount(tx.Sender())
if sender.Nonce != tx.Nonce {
- err = fmt.Errorf("[TXPL] Invalid account nonce, state nonce is %d transaction nonce is %d instead", sender.Nonce, tx.Nonce)
+ err = NonceError(tx.Nonce, sender.Nonce)
return
}
@@ -235,7 +235,7 @@ func (pool *TxPool) RemoveInvalid(state *State) {
tx := e.Value.(*Transaction)
sender := state.GetAccount(tx.Sender())
err := pool.ValidateTransaction(tx)
- if err != nil || sender.Nonce != tx.Nonce {
+ if err != nil || sender.Nonce >= tx.Nonce {
pool.pool.Remove(e)
}
}