From a1a275301e1309949c86fb009fb390a5f76c1eb8 Mon Sep 17 00:00:00 2001 From: Dimitris Grigoriou Date: Mon, 27 Jan 2025 20:38:35 +0200 Subject: [PATCH] Use both TXMv1 and TXMv2 for OEV (#16077) * Fix txmv2 for oev * Fix txmv2 not false errors --- core/chains/evm/txm/orchestrator.go | 11 +++++++++-- core/chains/legacyevm/evm_txm.go | 2 +- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/core/chains/evm/txm/orchestrator.go b/core/chains/evm/txm/orchestrator.go index ae981e153b0..1e94642bded 100644 --- a/core/chains/evm/txm/orchestrator.go +++ b/core/chains/evm/txm/orchestrator.go @@ -7,6 +7,7 @@ import ( "fmt" "math" "math/big" + "strings" "github.com/ethereum/go-ethereum/common" "github.com/google/uuid" @@ -86,7 +87,10 @@ func (o *Orchestrator[BLOCK_HASH, HEAD]) Start(ctx context.Context) error { return o.StartOnce("Orchestrator", func() error { var ms services.MultiStart if err := ms.Start(ctx, o.attemptBuilder); err != nil { - return fmt.Errorf("Orchestrator: AttemptBuilder failed to start: %w", err) + // TODO: hacky fix for DualBroadcast + if !strings.Contains(err.Error(), "already been started once") { + return fmt.Errorf("Orchestrator: AttemptBuilder failed to start: %w", err) + } } addresses, err := o.keystore.EnabledAddressesForChain(ctx, o.chainID) if err != nil { @@ -121,7 +125,10 @@ func (o *Orchestrator[BLOCK_HASH, HEAD]) Close() (merr error) { merr = errors.Join(merr, fmt.Errorf("Orchestrator failed to stop Txm: %w", err)) } if err := o.attemptBuilder.Close(); err != nil { - merr = errors.Join(merr, fmt.Errorf("Orchestrator failed to stop AttemptBuilder: %w", err)) + // TODO: hacky fix for DualBroadcast + if !strings.Contains(err.Error(), "already been stopped") { + merr = errors.Join(merr, fmt.Errorf("Orchestrator failed to stop AttemptBuilder: %w", err)) + } } return merr }) diff --git a/core/chains/legacyevm/evm_txm.go b/core/chains/legacyevm/evm_txm.go index 078bd413636..34549f92992 100644 --- a/core/chains/legacyevm/evm_txm.go +++ b/core/chains/legacyevm/evm_txm.go @@ -54,7 +54,7 @@ func newEvmTxm( opts.KeyStore, estimator, ) - if cfg.Transactions().TransactionManagerV2().DualBroadcast() != nil && *cfg.Transactions().TransactionManagerV2().DualBroadcast() { + if cfg.Transactions().TransactionManagerV2().DualBroadcast() == nil || !*cfg.Transactions().TransactionManagerV2().DualBroadcast() { return txmv2, err } }