Skip to content

Commit 5f5c55e

Browse files
authored
Updated relayer ccip provider interface to use dedicated args (#1497)
1 parent 93ccbae commit 5f5c55e

9 files changed

Lines changed: 390 additions & 302 deletions

File tree

pkg/loop/internal/pb/relayer.pb.go

Lines changed: 336 additions & 271 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/loop/internal/pb/relayer.proto

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,12 +50,18 @@ message RelayArgs {
5050
string providerType = 6;
5151
}
5252

53-
// RelayArgs represents [github.com/smartcontractkit/chainlink-common/pkg/types.PluginArgs].
53+
// PluginArgs represents [github.com/smartcontractkit/chainlink-common/pkg/types.PluginArgs].
5454
message PluginArgs {
5555
string transmitterID = 1;
5656
bytes pluginConfig = 2;
5757
}
5858

59+
message CCIPProviderArgs {
60+
bytes externalJobID = 1; // [32]byte
61+
bytes contractReaderConfig = 2;
62+
bytes chainWriterConfig = 3;
63+
}
64+
5965
// NewContractWriterRequest has request parameters for [github.com/smartcontractkit/chainlink-common/pkg/loop.Relayer.NewContractWriter].
6066
message NewContractWriterRequest {
6167
bytes contractWriterConfig = 1;
@@ -99,7 +105,7 @@ message NewConfigProviderReply {
99105

100106
// NewCCIPProviderRequest has arguments for [github.com/smartcontractkit/chainlink-common/pkg/loop.Relayer.NewCCIPProvider].
101107
message NewCCIPProviderRequest {
102-
RelayArgs relayArgs = 1;
108+
CCIPProviderArgs ccipProviderArgs = 1;
103109
}
104110

105111
// NewCCIPProviderReply has return arguments for [github.com/smartcontractkit/chainlink-common/pkg/loop.Relayer.NewCCIPProvider].

pkg/loop/internal/relayer/relayer.go

Lines changed: 9 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -288,16 +288,13 @@ func (r *relayerClient) NewLLOProvider(ctx context.Context, rargs types.RelayArg
288288
return nil, fmt.Errorf("llo provider not supported: %w", errors.ErrUnsupported)
289289
}
290290

291-
func (r *relayerClient) NewCCIPProvider(ctx context.Context, rargs types.RelayArgs) (types.CCIPProvider, error) {
291+
func (r *relayerClient) NewCCIPProvider(ctx context.Context, rargs types.CCIPProviderArgs) (types.CCIPProvider, error) {
292292
cc := r.NewClientConn("CCIPProvider", func(ctx context.Context) (uint32, net.Resources, error) {
293293
reply, err := r.relayer.NewCCIPProvider(ctx, &pb.NewCCIPProviderRequest{
294-
RelayArgs: &pb.RelayArgs{
294+
CcipProviderArgs: &pb.CCIPProviderArgs{
295295
ExternalJobID: rargs.ExternalJobID[:],
296-
JobID: rargs.JobID,
297-
ContractID: rargs.ContractID,
298-
New: rargs.New,
299-
RelayConfig: rargs.RelayConfig,
300-
ProviderType: rargs.ProviderType,
296+
ContractReaderConfig: rargs.ContractReaderConfig,
297+
ChainWriterConfig: rargs.ChainWriterConfig,
301298
},
302299
})
303300
if err != nil {
@@ -717,22 +714,19 @@ func (r *relayerServer) newCommitProvider(ctx context.Context, relayArgs types.R
717714
}
718715

719716
func (r *relayerServer) NewCCIPProvider(ctx context.Context, request *pb.NewCCIPProviderRequest) (*pb.NewCCIPProviderReply, error) {
720-
rargs := request.RelayArgs
717+
rargs := request.CcipProviderArgs
721718

722719
exJobID, err := uuid.FromBytes(rargs.ExternalJobID)
723720
if err != nil {
724721
return nil, fmt.Errorf("invalid uuid bytes for ExternalJobID: %w", err)
725722
}
726-
relayArgs := types.RelayArgs{
723+
ccipProviderArgs := types.CCIPProviderArgs{
727724
ExternalJobID: exJobID,
728-
JobID: rargs.JobID,
729-
ContractID: rargs.ContractID,
730-
New: rargs.New,
731-
RelayConfig: rargs.RelayConfig,
732-
ProviderType: rargs.ProviderType,
725+
ContractReaderConfig: rargs.ContractReaderConfig,
726+
ChainWriterConfig: rargs.ChainWriterConfig,
733727
}
734728

735-
provider, err := r.impl.NewCCIPProvider(ctx, relayArgs)
729+
provider, err := r.impl.NewCCIPProvider(ctx, ccipProviderArgs)
736730
if err != nil {
737731
return nil, err
738732
}

pkg/loop/internal/relayer/test/relayer.go

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77
"fmt"
88
"math/big"
99
"reflect"
10+
"slices"
1011
"testing"
1112

1213
"github.com/google/uuid"
@@ -72,6 +73,7 @@ type staticRelayerConfig struct {
7273
relayArgs types.RelayArgs
7374
pluginArgs types.PluginArgs
7475
contractReaderConfig []byte
76+
chainWriterConfig []byte
7577
medianProvider testtypes.MedianProviderTester
7678
agnosticProvider testtypes.PluginProviderTester
7779
mercuryProvider mercurytest.MercuryProviderTester
@@ -96,6 +98,7 @@ func newStaticRelayerConfig(lggr logger.Logger, staticChecks bool) staticRelayer
9698
relayArgs: RelayArgs,
9799
pluginArgs: PluginArgs,
98100
contractReaderConfig: []byte("test"),
101+
chainWriterConfig: []byte("chainwriterconfig"),
99102
medianProvider: mediantest.MedianProvider(lggr),
100103
mercuryProvider: mercurytest.MercuryProvider(lggr),
101104
executionProvider: cciptest.ExecutionProvider(lggr),
@@ -306,8 +309,13 @@ func (s staticRelayer) NewLLOProvider(ctx context.Context, r types.RelayArgs, p
306309
return nil, errors.New("not implemented")
307310
}
308311

309-
func (s staticRelayer) NewCCIPProvider(ctx context.Context, r types.RelayArgs) (types.CCIPProvider, error) {
310-
if s.StaticChecks && !equalRelayArgs(r, s.relayArgs) {
312+
func (s staticRelayer) NewCCIPProvider(ctx context.Context, r types.CCIPProviderArgs) (types.CCIPProvider, error) {
313+
ccipProviderArgs := types.CCIPProviderArgs {
314+
ExternalJobID: s.relayArgs.ExternalJobID,
315+
ContractReaderConfig: s.contractReaderConfig,
316+
ChainWriterConfig: s.chainWriterConfig,
317+
}
318+
if s.StaticChecks && !equalCCIPProviderArgs(r, ccipProviderArgs) {
311319
return nil, fmt.Errorf("expected relay args:\n\t%v\nbut got:\n\t%v", s.relayArgs, r)
312320
}
313321
return ccipocr3test.CCIPProvider(logger.Nop()), nil
@@ -459,6 +467,12 @@ func equalRelayArgs(a, b types.RelayArgs) bool {
459467
bytes.Equal(a.RelayConfig, b.RelayConfig)
460468
}
461469

470+
func equalCCIPProviderArgs(a, b types.CCIPProviderArgs) bool {
471+
return a.ExternalJobID == b.ExternalJobID &&
472+
slices.Equal(a.ContractReaderConfig, b.ContractReaderConfig) &&
473+
slices.Equal(a.ChainWriterConfig, b.ChainWriterConfig)
474+
}
475+
462476
func newRelayArgsWithProviderType(_type types.OCR2PluginType) types.RelayArgs {
463477
return types.RelayArgs{
464478
ExternalJobID: RelayArgs.ExternalJobID,

pkg/loop/internal/types/types.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ type Relayer interface {
5858
NewConfigProvider(context.Context, types.RelayArgs) (types.ConfigProvider, error)
5959
NewPluginProvider(context.Context, types.RelayArgs, types.PluginArgs) (types.PluginProvider, error)
6060
NewLLOProvider(context.Context, types.RelayArgs, types.PluginArgs) (types.LLOProvider, error)
61-
NewCCIPProvider(context.Context, types.RelayArgs) (types.CCIPProvider, error)
61+
NewCCIPProvider(context.Context, types.CCIPProviderArgs) (types.CCIPProvider, error)
6262
}
6363

6464
// Keystore This interface contains all the keystore GRPC functionality, keystore.Keystore is meant to be exposed to consumers and the keystore.Management interface in exposed only to the core node

pkg/loop/mocks/relayer.go

Lines changed: 8 additions & 8 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/loop/relayer_service.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ func (r *RelayerService) NewLLOProvider(ctx context.Context, rargs types.RelayAr
8585
return r.Service.NewLLOProvider(ctx, rargs, pargs)
8686
}
8787

88-
func (r *RelayerService) NewCCIPProvider(ctx context.Context, rargs types.RelayArgs) (types.CCIPProvider, error) {
88+
func (r *RelayerService) NewCCIPProvider(ctx context.Context, rargs types.CCIPProviderArgs) (types.CCIPProvider, error) {
8989
if err := r.WaitCtx(ctx); err != nil {
9090
return nil, err
9191
}

pkg/types/provider_ccip.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package types
33
import (
44
"context"
55

6+
"github.com/google/uuid"
67
"github.com/smartcontractkit/chainlink-common/pkg/services"
78
"github.com/smartcontractkit/chainlink-common/pkg/types/ccip"
89
"github.com/smartcontractkit/chainlink-common/pkg/types/ccipocr3"
@@ -53,3 +54,11 @@ type CCIPProvider interface {
5354
ContractTransmitter() ocr3types.ContractTransmitter[[]byte]
5455
Codec() ccipocr3.Codec
5556
}
57+
58+
// CCIPProviderArgs are the args required to create a CCIP Provider through a Relayer.
59+
// The are common to all relayer implementations.
60+
type CCIPProviderArgs struct {
61+
ExternalJobID uuid.UUID
62+
ContractReaderConfig []byte
63+
ChainWriterConfig []byte
64+
}

pkg/types/relayer.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -255,7 +255,7 @@ type Relayer interface {
255255

256256
NewOCR3CapabilityProvider(ctx context.Context, rargs RelayArgs, pargs PluginArgs) (OCR3CapabilityProvider, error)
257257

258-
NewCCIPProvider(ctx context.Context, rargs RelayArgs) (CCIPProvider, error)
258+
NewCCIPProvider(ctx context.Context, rargs CCIPProviderArgs) (CCIPProvider, error)
259259
}
260260

261261
var _ Relayer = &UnimplementedRelayer{}
@@ -366,6 +366,6 @@ func (u *UnimplementedRelayer) NewOCR3CapabilityProvider(ctx context.Context, ra
366366
return nil, status.Errorf(codes.Unimplemented, "method NewOCR3CapabilityProvider not implemented")
367367
}
368368

369-
func (u *UnimplementedRelayer) NewCCIPProvider(ctx context.Context, rargs RelayArgs) (CCIPProvider, error) {
369+
func (u *UnimplementedRelayer) NewCCIPProvider(ctx context.Context, rargs CCIPProviderArgs) (CCIPProvider, error) {
370370
return nil, status.Errorf(codes.Unimplemented, "method NewCCIPProvider not implemented")
371371
}

0 commit comments

Comments
 (0)