diff --git a/services/rfq/relayer/chain/chain.go b/services/rfq/relayer/chain/chain.go index 1655c36cfa..10b19d28ae 100644 --- a/services/rfq/relayer/chain/chain.go +++ b/services/rfq/relayer/chain/chain.go @@ -14,6 +14,7 @@ import ( "github.com/synapsecns/sanguine/ethergo/listener" "github.com/synapsecns/sanguine/ethergo/submitter" "github.com/synapsecns/sanguine/services/rfq/contracts/fastbridge" + "github.com/synapsecns/sanguine/services/rfq/relayer/relconfig" "github.com/synapsecns/sanguine/services/rfq/relayer/reldb" ) @@ -30,21 +31,28 @@ type Chain struct { } // NewChain creates a new chain. -func NewChain(ctx context.Context, chainClient client.EVM, addr common.Address, chainListener listener.ContractListener, ts submitter.TransactionSubmitter) (*Chain, error) { - bridge, err := fastbridge.NewFastBridgeRef(addr, chainClient) +func NewChain(ctx context.Context, cfg relconfig.Config, chainClient client.EVM, chainListener listener.ContractListener, ts submitter.TransactionSubmitter) (*Chain, error) { + chainID, err := chainClient.ChainID(ctx) + if err != nil { + return nil, fmt.Errorf("could not get chain id: %w", err) + } + addr, err := cfg.GetRFQAddress(int(chainID.Int64())) + if err != nil { + return nil, fmt.Errorf("could not get rfq address: %w", err) + } + bridge, err := fastbridge.NewFastBridgeRef(common.HexToAddress(addr), chainClient) if err != nil { return nil, fmt.Errorf("could not create bridge contract: %w", err) } - chainID, err := chainClient.ChainID(ctx) + confirmations, err := cfg.GetConfirmations(int(chainID.Int64())) if err != nil { - return nil, fmt.Errorf("could not get chain id: %w", err) + return nil, fmt.Errorf("could not get confirmations: %w", err) } return &Chain{ - ChainID: uint32(chainID.Int64()), - Bridge: bridge, - Client: chainClient, - // TODO: configure - Confirmations: 1, + ChainID: uint32(chainID.Int64()), + Bridge: bridge, + Client: chainClient, + Confirmations: confirmations, listener: chainListener, submitter: ts, }, nil diff --git a/services/rfq/relayer/relapi/server.go b/services/rfq/relayer/relapi/server.go index 570da0b33b..03e2f8f448 100644 --- a/services/rfq/relayer/relapi/server.go +++ b/services/rfq/relayer/relapi/server.go @@ -59,7 +59,7 @@ func NewRelayerAPI( } chains := make(map[uint32]*chain.Chain) - for chainID, chainCfg := range cfg.Chains { + for chainID := range cfg.Chains { chainClient, err := omniRPCClient.GetChainClient(ctx, chainID) if err != nil { return nil, fmt.Errorf("could not create omnirpc client: %w", err) @@ -80,7 +80,7 @@ func NewRelayerAPI( if err != nil { return nil, fmt.Errorf("could not get chain listener: %w", err) } - chains[uint32(chainID)], err = chain.NewChain(ctx, chainClient, common.HexToAddress(chainCfg.RFQAddress), chainListener, submitter) + chains[uint32(chainID)], err = chain.NewChain(ctx, cfg, chainClient, chainListener, submitter) if err != nil { return nil, fmt.Errorf("could not create chain: %w", err) } diff --git a/services/rfq/relayer/service/statushandler.go b/services/rfq/relayer/service/statushandler.go index c329260926..8d89c89b54 100644 --- a/services/rfq/relayer/service/statushandler.go +++ b/services/rfq/relayer/service/statushandler.go @@ -200,12 +200,7 @@ func (r *Relayer) chainIDToChain(ctx context.Context, chainID uint32) (*chain.Ch return nil, fmt.Errorf("could not get origin client: %w", err) } - //nolint: wrapcheck - rfqAddr, err := r.cfg.GetRFQAddress(id) - if err != nil { - return nil, fmt.Errorf("could not get rfq address: %w", err) - } - chain, err := chain.NewChain(ctx, chainClient, common.HexToAddress(rfqAddr), r.chainListeners[id], r.submitter) + chain, err := chain.NewChain(ctx, r.cfg, chainClient, r.chainListeners[id], r.submitter) if err != nil { return nil, fmt.Errorf("could not create chain: %w", err) }