Skip to content

Commit 51c930d

Browse files
authored
fix(sender): nonce update (#1570)
Co-authored-by: colinlyguo <[email protected]>
1 parent 4cfc551 commit 51c930d

File tree

3 files changed

+10
-21
lines changed

3 files changed

+10
-21
lines changed

common/version/version.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import (
55
"runtime/debug"
66
)
77

8-
var tag = "v4.4.81"
8+
var tag = "v4.4.82"
99

1010
var commit = func() string {
1111
if info, ok := debug.ReadBuildInfo(); ok {

rollup/internal/controller/sender/sender.go

Lines changed: 6 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -216,7 +216,7 @@ func (s *Sender) SendTransaction(contextID string, target *common.Address, data
216216
return common.Hash{}, fmt.Errorf("failed to get fee data, err: %w", err)
217217
}
218218

219-
signedTx, err := s.createTx(feeData, target, data, sidecar, nil)
219+
signedTx, err := s.createTx(feeData, target, data, sidecar, s.transactionSigner.GetNonce())
220220
if err != nil {
221221
s.metrics.sendTransactionFailureSendTx.WithLabelValues(s.service, s.name).Inc()
222222
log.Error("failed to create signed tx (non-resubmit case)", "from", s.transactionSigner.GetAddr().String(), "nonce", s.transactionSigner.GetNonce(), "err", err)
@@ -247,19 +247,13 @@ func (s *Sender) SendTransaction(contextID string, target *common.Address, data
247247
return common.Hash{}, fmt.Errorf("failed to send transaction, err: %w", err)
248248
}
249249

250+
s.transactionSigner.SetNonce(signedTx.Nonce() + 1)
251+
250252
return signedTx.Hash(), nil
251253
}
252254

253-
func (s *Sender) createTx(feeData *FeeData, target *common.Address, data []byte, sidecar *gethTypes.BlobTxSidecar, overrideNonce *uint64) (*gethTypes.Transaction, error) {
254-
var (
255-
nonce = s.transactionSigner.GetNonce()
256-
txData gethTypes.TxData
257-
)
258-
259-
// this is a resubmit call, override the nonce
260-
if overrideNonce != nil {
261-
nonce = *overrideNonce
262-
}
255+
func (s *Sender) createTx(feeData *FeeData, target *common.Address, data []byte, sidecar *gethTypes.BlobTxSidecar, nonce uint64) (*gethTypes.Transaction, error) {
256+
var txData gethTypes.TxData
263257

264258
switch s.config.TxType {
265259
case LegacyTxType:
@@ -312,11 +306,6 @@ func (s *Sender) createTx(feeData *FeeData, target *common.Address, data []byte,
312306
return nil, err
313307
}
314308

315-
// update nonce when it is not from resubmit
316-
if overrideNonce == nil {
317-
s.transactionSigner.SetNonce(nonce + 1)
318-
}
319-
320309
if feeData.gasTipCap != nil {
321310
s.metrics.currentGasTipCap.WithLabelValues(s.service, s.name).Set(float64(feeData.gasTipCap.Uint64()))
322311
}
@@ -492,7 +481,7 @@ func (s *Sender) createReplacingTransaction(tx *gethTypes.Transaction, baseFee,
492481

493482
nonce := tx.Nonce()
494483
s.metrics.resubmitTransactionTotal.WithLabelValues(s.service, s.name).Inc()
495-
signedTx, err := s.createTx(&feeData, tx.To(), tx.Data(), tx.BlobTxSidecar(), &nonce)
484+
signedTx, err := s.createTx(&feeData, tx.To(), tx.Data(), tx.BlobTxSidecar(), nonce)
496485
if err != nil {
497486
log.Error("failed to create signed tx (resubmit case)", "from", s.transactionSigner.GetAddr().String(), "nonce", nonce, "err", err)
498487
return nil, err

rollup/internal/controller/sender/sender_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -282,7 +282,7 @@ func testResubmitZeroGasPriceTransaction(t *testing.T) {
282282
gasFeeCap: big.NewInt(0),
283283
gasLimit: 50000,
284284
}
285-
tx, err := s.createTx(feeData, &common.Address{}, nil, nil, nil)
285+
tx, err := s.createTx(feeData, &common.Address{}, nil, nil, s.transactionSigner.GetNonce())
286286
assert.NoError(t, err)
287287
assert.NotNil(t, tx)
288288
err = s.client.SendTransaction(s.ctx, tx)
@@ -373,7 +373,7 @@ func testResubmitNonZeroGasPriceTransaction(t *testing.T) {
373373
sidecar, err = makeSidecar(txBlob[i])
374374
assert.NoError(t, err)
375375
}
376-
tx, err := s.createTx(feeData, &common.Address{}, nil, sidecar, nil)
376+
tx, err := s.createTx(feeData, &common.Address{}, nil, sidecar, s.transactionSigner.GetNonce())
377377
assert.NoError(t, err)
378378
assert.NotNil(t, tx)
379379
err = s.client.SendTransaction(s.ctx, tx)
@@ -420,7 +420,7 @@ func testResubmitUnderpricedTransaction(t *testing.T) {
420420
gasFeeCap: big.NewInt(1000000000),
421421
gasLimit: 50000,
422422
}
423-
tx, err := s.createTx(feeData, &common.Address{}, nil, nil, nil)
423+
tx, err := s.createTx(feeData, &common.Address{}, nil, nil, s.transactionSigner.GetNonce())
424424
assert.NoError(t, err)
425425
assert.NotNil(t, tx)
426426
err = s.client.SendTransaction(s.ctx, tx)

0 commit comments

Comments
 (0)