提交 03403399 编写于 作者: O obscuren

Return proper error

上级 a0266489
...@@ -449,6 +449,8 @@ func (self *ChainManager) InsertChain(chain types.Blocks) error { ...@@ -449,6 +449,8 @@ func (self *ChainManager) InsertChain(chain types.Blocks) error {
*/ */
self.setTransState(state.New(block.Root(), self.stateDb)) self.setTransState(state.New(block.Root(), self.stateDb))
self.setTxState(state.New(block.Root(), self.stateDb))
queue[i] = ChainEvent{block} queue[i] = ChainEvent{block}
queueEvent.canonicalCount++ queueEvent.canonicalCount++
} else { } else {
......
...@@ -78,7 +78,7 @@ func (err *NonceErr) Error() string { ...@@ -78,7 +78,7 @@ func (err *NonceErr) Error() string {
} }
func NonceError(is, exp uint64) *NonceErr { 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 { func IsNonceErr(err error) bool {
......
...@@ -148,6 +148,9 @@ func (self *StateTransition) preCheck() (err error) { ...@@ -148,6 +148,9 @@ func (self *StateTransition) preCheck() (err error) {
// Pre-pay gas / Buy gas of the coinbase account // Pre-pay gas / Buy gas of the coinbase account
if err = self.BuyGas(); err != nil { if err = self.BuyGas(); err != nil {
if state.IsGasLimitErr(err) {
return err
}
return InvalidTxError(err) return InvalidTxError(err)
} }
......
...@@ -212,6 +212,7 @@ gasLimit: ...@@ -212,6 +212,7 @@ gasLimit:
fallthrough fallthrough
case core.IsInvalidTxErr(err): case core.IsInvalidTxErr(err):
// Remove invalid transactions // Remove invalid transactions
self.chain.TxState().RemoveNonce(tx.From(), tx.Nonce())
remove = append(remove, tx) remove = append(remove, tx)
case state.IsGasLimitErr(err): case state.IsGasLimitErr(err):
// Break on gas limit // Break on gas limit
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册