From 324d6267a970ed29159607fd333a9d6db4f49029 Mon Sep 17 00:00:00 2001 From: jeff <113397187+cyberhorsey@users.noreply.github.com> Date: Mon, 15 Apr 2024 23:45:26 -0700 Subject: [PATCH] fix(relayer): add revert check back in, add gas limit to response (#16734) --- .../pkg/http/get_recommended_processing_fees.go | 4 ++++ packages/relayer/processor/errors.go | 2 ++ packages/relayer/processor/process_message.go | 10 ++++++++-- packages/relayer/processor/process_message_test.go | 2 +- packages/relayer/prometheus.go | 4 ++++ 5 files changed, 19 insertions(+), 3 deletions(-) diff --git a/packages/relayer/pkg/http/get_recommended_processing_fees.go b/packages/relayer/pkg/http/get_recommended_processing_fees.go index bab0befccaf..0fd733f7e1b 100644 --- a/packages/relayer/pkg/http/get_recommended_processing_fees.go +++ b/packages/relayer/pkg/http/get_recommended_processing_fees.go @@ -4,6 +4,7 @@ import ( "context" "math/big" "net/http" + "strconv" "github.com/cyberhorsey/webutils" "github.com/ethereum/go-ethereum/accounts/abi/bind" @@ -20,6 +21,7 @@ type fee struct { Type string `json:"type"` Amount string `json:"amount"` DestChainID uint64 `json:"destChainID"` + GasLimit string `json:"gasLimit"` } type FeeType uint64 @@ -122,12 +124,14 @@ func (srv *Server) GetRecommendedProcessingFees(c echo.Context) error { Type: f.String(), Amount: srv.getCost(c.Request().Context(), uint64(f), destGasTipCap, destBaseFee, Layer1).String(), DestChainID: srcChainID.Uint64(), + GasLimit: strconv.Itoa(int(f)), }) fees = append(fees, fee{ Type: f.String(), Amount: srv.getCost(c.Request().Context(), uint64(f), srcGasTipCap, srcBaseFee, Layer2).String(), DestChainID: destChainID.Uint64(), + GasLimit: strconv.Itoa(int(f)), }) } diff --git a/packages/relayer/processor/errors.go b/packages/relayer/processor/errors.go index 0eb7de1feaf..2534d7c4d86 100644 --- a/packages/relayer/processor/errors.go +++ b/packages/relayer/processor/errors.go @@ -13,6 +13,8 @@ var ( "Method eth_maxPriorityFeePerGas not found", ) + errTxReverted = errors.New("tx reverted") + // FallbackGasTipCap is the default fallback gasTipCap used when we are // unable to query an L1 backend for a suggested gasTipCap. FallbackGasTipCap = big.NewInt(1500000000) diff --git a/packages/relayer/processor/process_message.go b/packages/relayer/processor/process_message.go index 2ce01991f37..6b4994a1357 100644 --- a/packages/relayer/processor/process_message.go +++ b/packages/relayer/processor/process_message.go @@ -507,10 +507,16 @@ func (p *Processor) sendProcessMessageCall( return nil, err } - relayer.MessageSentEventsProcessed.Inc() - slog.Info("Mined tx", "txHash", hex.EncodeToString(receipt.TxHash.Bytes())) + if receipt.Status != types.ReceiptStatusSuccessful { + relayer.MessageSentEventsProcessedReverted.Inc() + + return nil, errTxReverted + } + + relayer.MessageSentEventsProcessed.Inc() + if err := p.saveMessageStatusChangedEvent(ctx, receipt, event); err != nil { return nil, err } diff --git a/packages/relayer/processor/process_message_test.go b/packages/relayer/processor/process_message_test.go index d257177feb1..bde1be481a1 100644 --- a/packages/relayer/processor/process_message_test.go +++ b/packages/relayer/processor/process_message_test.go @@ -45,7 +45,7 @@ func Test_sendProcessMessageCall(t *testing.T) { }, }, []byte{}) - assert.Nil(t, err) + assert.Equal(t, err, errTxReverted) } func Test_ProcessMessage_messageUnprocessable(t *testing.T) { diff --git a/packages/relayer/prometheus.go b/packages/relayer/prometheus.go index 8a515aeaafe..b3036d7f7da 100644 --- a/packages/relayer/prometheus.go +++ b/packages/relayer/prometheus.go @@ -50,6 +50,10 @@ var ( Name: "message_sent_events_processed_ops_total", Help: "The total number of MessageSent processed events", }) + MessageSentEventsProcessedReverted = promauto.NewCounter(prometheus.CounterOpts{ + Name: "message_sent_events_processed_reverted_ops_total", + Help: "The total number of MessageSent processed events that reverted", + }) MessageSentEventsIndexed = promauto.NewCounter(prometheus.CounterOpts{ Name: "message_sent_events_indexed_ops_total", Help: "The total number of MessageSent indexed events",