From 03403399fcd4abf106a098f15bc7186197bd09bc Mon Sep 17 00:00:00 2001 From: obscuren Date: Fri, 13 Mar 2015 17:47:11 +0100 Subject: [PATCH] Return proper error --- core/chain_manager.go | 2 ++ core/error.go | 2 +- core/state_transition.go | 3 +++ miner/worker.go | 1 + 4 files changed, 7 insertions(+), 1 deletion(-) diff --git a/core/chain_manager.go b/core/chain_manager.go index 7fed7b8b18..101d0568da 100644 --- a/core/chain_manager.go +++ b/core/chain_manager.go @@ -449,6 +449,8 @@ func (self *ChainManager) InsertChain(chain types.Blocks) error { */ self.setTransState(state.New(block.Root(), self.stateDb)) + self.setTxState(state.New(block.Root(), self.stateDb)) + queue[i] = ChainEvent{block} queueEvent.canonicalCount++ } else { diff --git a/core/error.go b/core/error.go index 04e40646cf..69e320eb0f 100644 --- a/core/error.go +++ b/core/error.go @@ -78,7 +78,7 @@ func (err *NonceErr) Error() string { } func NonceError(is, exp uint64) *NonceErr { - return &NonceErr{Message: fmt.Sprintf("Nonce err. Is %d, expected %d", is, exp), Is: is, Exp: exp} + return &NonceErr{Message: fmt.Sprintf("Transaction w/ invalid nonce (%d / %d)", is, exp), Is: is, Exp: exp} } func IsNonceErr(err error) bool { diff --git a/core/state_transition.go b/core/state_transition.go index ee99ec7aa3..f49aed8742 100644 --- a/core/state_transition.go +++ b/core/state_transition.go @@ -148,6 +148,9 @@ func (self *StateTransition) preCheck() (err error) { // Pre-pay gas / Buy gas of the coinbase account if err = self.BuyGas(); err != nil { + if state.IsGasLimitErr(err) { + return err + } return InvalidTxError(err) } diff --git a/miner/worker.go b/miner/worker.go index 9bcea15396..a39a0b43b5 100644 --- a/miner/worker.go +++ b/miner/worker.go @@ -212,6 +212,7 @@ gasLimit: fallthrough case core.IsInvalidTxErr(err): // Remove invalid transactions + self.chain.TxState().RemoveNonce(tx.From(), tx.Nonce()) remove = append(remove, tx) case state.IsGasLimitErr(err): // Break on gas limit