From d09a6e54215bef8b1ac16a99f0b1d75a8a92a6a8 Mon Sep 17 00:00:00 2001 From: obscuren Date: Wed, 3 Jun 2015 22:22:20 +0200 Subject: core, eth, miner: moved nonce management to tx pool. Removed the managed tx state from the chain manager to the transaction pool where it's much easier to keep track of nonces (and manage them). The transaction pool now also uses the queue and pending txs differently where queued txs are now moved over to the pending queue (i.e. txs ready for processing and propagation). --- xeth/xeth.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'xeth') diff --git a/xeth/xeth.go b/xeth/xeth.go index 157fe76c7..187892a49 100644 --- a/xeth/xeth.go +++ b/xeth/xeth.go @@ -936,22 +936,22 @@ func (self *XEth) Transact(fromStr, toStr, nonceStr, valueStr, gasStr, gasPriceS tx = types.NewTransactionMessage(to, value, gas, price, data) } - state := self.backend.ChainManager().TxState() + state := self.backend.TxPool().State() var nonce uint64 if len(nonceStr) != 0 { nonce = common.Big(nonceStr).Uint64() } else { - nonce = state.NewNonce(from) + nonce = state.GetNonce(from) + 1 //state.NewNonce(from) } tx.SetNonce(nonce) if err := self.sign(tx, from, false); err != nil { - state.RemoveNonce(from, tx.Nonce()) + //state.RemoveNonce(from, tx.Nonce()) return "", err } if err := self.backend.TxPool().Add(tx); err != nil { - state.RemoveNonce(from, tx.Nonce()) + //state.RemoveNonce(from, tx.Nonce()) return "", err } -- cgit v1.2.3 From 36c0db2ac9e1505bfcb29a137f67ba31efde4c90 Mon Sep 17 00:00:00 2001 From: obscuren Date: Thu, 4 Jun 2015 11:35:37 +0200 Subject: xeth: use the correct nonce for creating transactions --- xeth/xeth.go | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'xeth') diff --git a/xeth/xeth.go b/xeth/xeth.go index 187892a49..d0d51bfe0 100644 --- a/xeth/xeth.go +++ b/xeth/xeth.go @@ -942,18 +942,17 @@ func (self *XEth) Transact(fromStr, toStr, nonceStr, valueStr, gasStr, gasPriceS if len(nonceStr) != 0 { nonce = common.Big(nonceStr).Uint64() } else { - nonce = state.GetNonce(from) + 1 //state.NewNonce(from) + nonce = state.GetNonce(from) } tx.SetNonce(nonce) if err := self.sign(tx, from, false); err != nil { - //state.RemoveNonce(from, tx.Nonce()) return "", err } if err := self.backend.TxPool().Add(tx); err != nil { - //state.RemoveNonce(from, tx.Nonce()) return "", err } + state.SetNonce(from, nonce+1) if contractCreation { addr := core.AddressFromMessage(tx) -- cgit v1.2.3