Merge pull request #593 from hermeznetwork/fix/addgaspriceresend When resending an eth tx, always increase gas price
arnau 17317030+arnaucube@users.noreply.github.com
Mon, 01 Mar 2021 15:05:36 +0100
2 files changed,
20 insertions(+),
9 deletions(-)
M
coordinator/batch.go
→
coordinator/batch.go
@@ -8,6 +8,7 @@ "math/big"
"path" "time" + "github.com/ethereum/go-ethereum/accounts/abi/bind" "github.com/ethereum/go-ethereum/core/types" "github.com/hermeznetwork/hermez-node/common" "github.com/hermeznetwork/hermez-node/eth"@@ -90,9 +91,9 @@ L1CoordinatorTxsAuths [][]byte
L2Txs []common.L2Tx CoordIdxs []common.Idx ForgeBatchArgs *eth.RollupForgeBatchArgs - // FeesInfo - EthTx *types.Transaction - EthTxErr error + Auth *bind.TransactOpts `json:"-"` + EthTx *types.Transaction + EthTxErr error // SendTimestamp the time of batch sent to ethereum SendTimestamp time.Time Receipt *types.Receipt
M
coordinator/txmanager.go
→
coordinator/txmanager.go
@@ -182,19 +182,29 @@ r := new(big.Int).Set(v)
r.Mul(r, big.NewInt(p)) // nolint reason: to calculate percentages we divide by 100 r.Div(r, big.NewInt(100)) //nolit:gomnd + // If the increase is 0, force it to be 1 so that a gas increase + // doesn't result in the same value, making the transaction to be equal + // than before. + if r.Cmp(big.NewInt(0)) == 0 { + r = big.NewInt(1) + } return r.Add(v, r) } func (t *TxManager) sendRollupForgeBatch(ctx context.Context, batchInfo *BatchInfo, resend bool) error { var ethTx *types.Transaction var err error - auth, err := t.NewAuth(ctx, batchInfo) - if err != nil { - return tracerr.Wrap(err) - } - auth.Nonce = big.NewInt(int64(t.accNextNonce)) + var auth *bind.TransactOpts if resend { - auth.Nonce = big.NewInt(int64(batchInfo.EthTx.Nonce())) + auth = batchInfo.Auth + auth.GasPrice = addPerc(auth.GasPrice, 10) + } else { + auth, err = t.NewAuth(ctx, batchInfo) + if err != nil { + return tracerr.Wrap(err) + } + batchInfo.Auth = auth + auth.Nonce = big.NewInt(int64(t.accNextNonce)) } for attempt := 0; attempt < t.cfg.EthClientAttempts; attempt++ { if auth.GasPrice.Cmp(t.cfg.MaxGasPrice) > 0 {