Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ks 316 replace secret usage in transmission protocol with the workflow execution #13501

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .changeset/pink-ants-reply.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"chainlink": minor
---

#internal remove shared secret from transmission schedule
8 changes: 1 addition & 7 deletions core/capabilities/remote/target/request/client_request.go
Original file line number Diff line number Diff line change
Expand Up @@ -48,13 +48,7 @@ func NewClientRequest(ctx context.Context, lggr logger.Logger, req commoncap.Cap
return nil, fmt.Errorf("failed to marshal capability request: %w", err)
}

tc, err := transmission.ExtractTransmissionConfig(req.Config)
if err != nil {
return nil, fmt.Errorf("failed to extract transmission config from request config: %w", err)
}

peerIDToTransmissionDelay, err := transmission.GetPeerIDToTransmissionDelay(remoteCapabilityDonInfo.Members, localDonInfo.Config.SharedSecret,
messageID, tc)
peerIDToTransmissionDelay, err := transmission.GetPeerIDToTransmissionDelay(remoteCapabilityDonInfo.Members, req)
if err != nil {
return nil, fmt.Errorf("failed to get peer ID to transmission delay: %w", err)
}
Expand Down
8 changes: 1 addition & 7 deletions core/capabilities/transmission/local_target_capability.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,13 +34,7 @@ func (l *LocalTargetCapability) Execute(ctx context.Context, req capabilities.Ca
return l.TargetCapability.Execute(ctx, req)
}

tc, err := ExtractTransmissionConfig(req.Config)
if err != nil {
return nil, fmt.Errorf("failed to extract transmission config from request config: %w", err)
}

peerIDToTransmissionDelay, err := GetPeerIDToTransmissionDelay(l.don.Members, l.don.Config.SharedSecret,
req.Metadata.WorkflowID+req.Metadata.WorkflowExecutionID, tc)
peerIDToTransmissionDelay, err := GetPeerIDToTransmissionDelay(l.don.Members, req)
if err != nil {
return nil, fmt.Errorf("failed to get peer ID to transmission delay map: %w", err)
}
Expand Down
15 changes: 3 additions & 12 deletions core/capabilities/transmission/local_target_capability_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ package transmission
import (
"context"
"crypto/rand"
"encoding/hex"
"testing"
"time"

Expand Down Expand Up @@ -44,11 +43,6 @@ func TestScheduledExecutionStrategy_LocalDON(t *testing.T) {
},
)

// The combination of this key and the metadata above
// will yield the permutation [3, 2, 0, 1]
key, err := hex.DecodeString("fb13ca015a9ec60089c7141e9522de79")
require.NoError(t, err)

testCases := []struct {
name string
position int
Expand All @@ -67,7 +61,7 @@ func TestScheduledExecutionStrategy_LocalDON(t *testing.T) {
name: "position 1; oneAtATime",
position: 1,
schedule: "oneAtATime",
low: 200 * time.Millisecond,
low: 100 * time.Millisecond,
high: 300 * time.Millisecond,
},
{
Expand All @@ -82,7 +76,7 @@ func TestScheduledExecutionStrategy_LocalDON(t *testing.T) {
position: 3,
schedule: "oneAtATime",
low: 100 * time.Millisecond,
high: 200 * time.Millisecond,
high: 300 * time.Millisecond,
},
{
name: "position 0; allAtOnce",
Expand Down Expand Up @@ -128,7 +122,7 @@ func TestScheduledExecutionStrategy_LocalDON(t *testing.T) {
Config: m,
Metadata: capabilities.RequestMetadata{
WorkflowID: "mock-workflow-id",
WorkflowExecutionID: "mock-execution-id",
WorkflowExecutionID: "mock-execution-id-1",
},
}

Expand All @@ -140,9 +134,6 @@ func TestScheduledExecutionStrategy_LocalDON(t *testing.T) {
}
don := capabilities.DON{
Members: ids,
Config: capabilities.DONConfig{
SharedSecret: [16]byte(key),
},
}
peerID := ids[tc.position]
localTargetCapability := NewLocalTargetCapability(log, peerID, don, mt)
Expand Down
34 changes: 22 additions & 12 deletions core/capabilities/transmission/transmission.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,15 @@ import (
"fmt"
"time"

"golang.org/x/crypto/sha3"
"github.com/pkg/errors"

"github.com/smartcontractkit/libocr/permutation"
ragep2ptypes "github.com/smartcontractkit/libocr/ragep2p/types"

"github.com/smartcontractkit/chainlink-common/pkg/capabilities"
"github.com/smartcontractkit/chainlink-common/pkg/values"
p2ptypes "github.com/smartcontractkit/chainlink/v2/core/services/p2p/types"
"github.com/smartcontractkit/chainlink/v2/core/services/p2p/types"

"golang.org/x/crypto/sha3"
)

var (
Expand All @@ -25,7 +27,7 @@ type TransmissionConfig struct {
DeltaStage time.Duration
}

func ExtractTransmissionConfig(config *values.Map) (TransmissionConfig, error) {
func extractTransmissionConfig(config *values.Map) (TransmissionConfig, error) {
var tc struct {
DeltaStage string
Schedule string
Expand All @@ -47,19 +49,29 @@ func ExtractTransmissionConfig(config *values.Map) (TransmissionConfig, error) {
}

// GetPeerIDToTransmissionDelay returns a map of PeerID to the time.Duration that the node with that PeerID should wait
// before transmitting. If a node is not in the map, it should not transmit. The sharedSecret is shared by nodes in the
// same DON and used to generate a deterministic schedule for the transmission delays.
func GetPeerIDToTransmissionDelay(donPeerIDs []ragep2ptypes.PeerID, sharedSecret [16]byte, transmissionID string, tc TransmissionConfig) (map[p2ptypes.PeerID]time.Duration, error) {
// before transmitting the capability request. If a node is not in the map, it should not transmit.
func GetPeerIDToTransmissionDelay(donPeerIDs []types.PeerID, req capabilities.CapabilityRequest) (map[types.PeerID]time.Duration, error) {
tc, err := extractTransmissionConfig(req.Config)
if err != nil {
return nil, fmt.Errorf("failed to extract transmission config from request: %w", err)
}

if req.Metadata.WorkflowID == "" || req.Metadata.WorkflowExecutionID == "" {
return nil, errors.New("workflow ID and workflow execution ID must be set in request metadata")
}

transmissionID := req.Metadata.WorkflowID + req.Metadata.WorkflowExecutionID
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

WorkflowExecutionID = WorkflowID + EventID, so adding WorkflowID again seems redundant?

Copy link
Collaborator Author

@ettec ettec Jun 13, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

agree, thats not necessary, no material impact I think? I'll get on to it shortly


donMemberCount := len(donPeerIDs)
key := transmissionScheduleSeed(sharedSecret, transmissionID)
key := transmissionScheduleSeed(transmissionID)
schedule, err := createTransmissionSchedule(tc.Schedule, donMemberCount)
if err != nil {
return nil, err
}

picked := permutation.Permutation(donMemberCount, key)

peerIDToTransmissionDelay := map[p2ptypes.PeerID]time.Duration{}
peerIDToTransmissionDelay := map[types.PeerID]time.Duration{}
for i, peerID := range donPeerIDs {
delay := delayFor(i, schedule, picked, tc.DeltaStage)
if delay != nil {
Expand Down Expand Up @@ -96,11 +108,9 @@ func createTransmissionSchedule(scheduleType string, N int) ([]int, error) {
return nil, fmt.Errorf("unknown schedule type %s", scheduleType)
}

func transmissionScheduleSeed(sharedSecret [16]byte, transmissionID string) [16]byte {
func transmissionScheduleSeed(transmissionID string) [16]byte {
hash := sha3.NewLegacyKeccak256()
hash.Write(sharedSecret[:])
hash.Write([]byte(transmissionID))

var key [16]byte
copy(key[:], hash.Sum(nil))
return key
Expand Down
31 changes: 15 additions & 16 deletions core/capabilities/transmission/transmission_test.go
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
package transmission

import (
"encoding/hex"
"fmt"
"testing"
"time"

"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"

"github.com/smartcontractkit/chainlink-common/pkg/capabilities"
"github.com/smartcontractkit/chainlink-common/pkg/values"
p2ptypes "github.com/smartcontractkit/chainlink/v2/core/services/p2p/types"
)
Expand All @@ -26,7 +26,6 @@ func Test_GetPeerIDToTransmissionDelay(t *testing.T) {
testCases := []struct {
name string
peerName string
sharedSecret string
schedule string
deltaStage string
workflowExecutionID string
Expand All @@ -35,21 +34,19 @@ func Test_GetPeerIDToTransmissionDelay(t *testing.T) {
{
"TestOneAtATime",
"one",
"fb13ca015a9ec60089c7141e9522de79",
"oneAtATime",
"100ms",
"mock-execution-id",
map[string]time.Duration{
"one": 300 * time.Millisecond,
"two": 200 * time.Millisecond,
"two": 100 * time.Millisecond,
"three": 0 * time.Millisecond,
"four": 100 * time.Millisecond,
"four": 200 * time.Millisecond,
},
},
{
"TestAllAtOnce",
"one",
"fb13ca015a9ec60089c7141e9522de79",
"allAtOnce",
"100ms",
"mock-execution-id",
Expand All @@ -63,33 +60,35 @@ func Test_GetPeerIDToTransmissionDelay(t *testing.T) {
{
"TestOneAtATimeWithDifferentExecutionID",
"one",
"fb13ca015a9ec60089c7141e9522de79",
"oneAtATime",
"100ms",
"mock-execution-id2",
map[string]time.Duration{
"one": 0 * time.Millisecond,
"two": 300 * time.Millisecond,
"two": 200 * time.Millisecond,
"three": 100 * time.Millisecond,
"four": 200 * time.Millisecond,
"four": 300 * time.Millisecond,
},
},
}

for _, tc := range testCases {
t.Run(tc.name, func(t *testing.T) {
sharedSecret, err := hex.DecodeString(tc.sharedSecret)
require.NoError(t, err)

m, err := values.NewMap(map[string]any{
transmissionCfg, err := values.NewMap(map[string]any{
"schedule": tc.schedule,
"deltaStage": tc.deltaStage,
})
require.NoError(t, err)
transmissionCfg, err := ExtractTransmissionConfig(m)
require.NoError(t, err)

peerIdToDelay, err := GetPeerIDToTransmissionDelay(ids, [16]byte(sharedSecret), "mock-workflow-id"+tc.workflowExecutionID, transmissionCfg)
capabilityRequest := capabilities.CapabilityRequest{
Config: transmissionCfg,
Metadata: capabilities.RequestMetadata{
WorkflowID: "mock-workflow-id",
WorkflowExecutionID: tc.workflowExecutionID,
},
}

peerIdToDelay, err := GetPeerIDToTransmissionDelay(ids, capabilityRequest)
require.NoError(t, err)

assert.Equal(t, tc.expectedDelays["one"], peerIdToDelay[peer1])
Expand Down
2 changes: 1 addition & 1 deletion core/scripts/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ require (
github.com/prometheus/client_golang v1.17.0
github.com/shopspring/decimal v1.3.1
github.com/smartcontractkit/chainlink-automation v1.0.4
github.com/smartcontractkit/chainlink-common v0.1.7-0.20240607135320-c9bc0a2ac0ce
github.com/smartcontractkit/chainlink-common v0.1.7-0.20240611144925-2baf0f2a3fef
github.com/smartcontractkit/chainlink-vrf v0.0.0-20240222010609-cd67d123c772
github.com/smartcontractkit/chainlink/v2 v2.0.0-00010101000000-000000000000
github.com/smartcontractkit/libocr v0.0.0-20240419185742-fd3cab206b2c
Expand Down
4 changes: 2 additions & 2 deletions core/scripts/go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -1212,8 +1212,8 @@ github.com/smartcontractkit/chain-selectors v1.0.10 h1:t9kJeE6B6G+hKD0GYR4kGJSCq
github.com/smartcontractkit/chain-selectors v1.0.10/go.mod h1:d4Hi+E1zqjy9HqMkjBE5q1vcG9VGgxf5VxiRHfzi2kE=
github.com/smartcontractkit/chainlink-automation v1.0.4 h1:iyW181JjKHLNMnDleI8umfIfVVlwC7+n5izbLSFgjw8=
github.com/smartcontractkit/chainlink-automation v1.0.4/go.mod h1:u4NbPZKJ5XiayfKHD/v3z3iflQWqvtdhj13jVZXj/cM=
github.com/smartcontractkit/chainlink-common v0.1.7-0.20240607135320-c9bc0a2ac0ce h1:/CjY8L4lVJh9E8NKg3bdAgsxj+zKg9XYtXR71ZWWMXo=
github.com/smartcontractkit/chainlink-common v0.1.7-0.20240607135320-c9bc0a2ac0ce/go.mod h1:L32xvCpk84Nglit64OhySPMP1tM3TTBK7Tw0qZl7Sd4=
github.com/smartcontractkit/chainlink-common v0.1.7-0.20240611144925-2baf0f2a3fef h1:70N67MKSMYwhGfVMC0Ekfc3yQmFvw3FhXe61M2KZdW4=
github.com/smartcontractkit/chainlink-common v0.1.7-0.20240611144925-2baf0f2a3fef/go.mod h1:L32xvCpk84Nglit64OhySPMP1tM3TTBK7Tw0qZl7Sd4=
github.com/smartcontractkit/chainlink-cosmos v0.4.1-0.20240524214833-c362c2ebbd2d h1:5tgMC5Gi2UAOKZ+m28W8ubjLeR0pQCAcrz6eQ0rW510=
github.com/smartcontractkit/chainlink-cosmos v0.4.1-0.20240524214833-c362c2ebbd2d/go.mod h1:0UNuO3nDt9MFsZPaHJBEUolxVkN0iC69j1ccDp95e8k=
github.com/smartcontractkit/chainlink-data-streams v0.0.0-20240220203239-09be0ea34540 h1:xFSv8561jsLtF6gYZr/zW2z5qUUAkcFkApin2mnbYTo=
Expand Down
20 changes: 3 additions & 17 deletions core/services/workflows/delegate.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ package workflows

import (
"context"
"encoding/hex"
"fmt"

"github.com/google/uuid"
Expand Down Expand Up @@ -38,8 +37,8 @@ func (d *Delegate) BeforeJobDeleted(spec job.Job) {}
func (d *Delegate) OnDeleteJob(context.Context, job.Job) error { return nil }

// ServicesForSpec satisfies the job.Delegate interface.
func (d *Delegate) ServicesForSpec(ctx context.Context, spec job.Job) ([]job.ServiceCtx, error) {
dinfo, err := initializeDONInfo(d.logger)
func (d *Delegate) ServicesForSpec(_ context.Context, spec job.Job) ([]job.ServiceCtx, error) {
dinfo, err := initializeDONInfo()
if err != nil {
d.logger.Errorw("could not add initialize don info", err)
}
Expand All @@ -62,17 +61,7 @@ func (d *Delegate) ServicesForSpec(ctx context.Context, spec job.Job) ([]job.Ser
return []job.ServiceCtx{engine}, nil
}

func initializeDONInfo(lggr logger.Logger) (*capabilities.DON, error) {
var key [16]byte

// TODO: fetch the key and DONInfo from the registry
keyString := "44fb5c1ee8ee48846c808a383da3aba3"
k, err := hex.DecodeString(keyString)
if err != nil {
lggr.Errorf("could not decode key %s: %w", keyString, err)
}
key = [16]byte(k)

func initializeDONInfo() (*capabilities.DON, error) {
p2pStrings := []string{
"12D3KooWBCF1XT5Wi8FzfgNCqRL76Swv8TRU3TiD4QiJm8NMNX7N",
"12D3KooWG1AyvwmCpZ93J8pBQUE1SuzrjDXnT4BeouncHR3jWLCG",
Expand All @@ -97,9 +86,6 @@ func initializeDONInfo(lggr logger.Logger) (*capabilities.DON, error) {
return &capabilities.DON{
ID: "00010203",
Members: p2pIDs,
Config: capabilities.DONConfig{
SharedSecret: key,
},
}, nil
}

Expand Down
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ require (
github.com/shopspring/decimal v1.3.1
github.com/smartcontractkit/chain-selectors v1.0.10
github.com/smartcontractkit/chainlink-automation v1.0.4
github.com/smartcontractkit/chainlink-common v0.1.7-0.20240607135320-c9bc0a2ac0ce
github.com/smartcontractkit/chainlink-common v0.1.7-0.20240611144925-2baf0f2a3fef
github.com/smartcontractkit/chainlink-cosmos v0.4.1-0.20240524214833-c362c2ebbd2d
github.com/smartcontractkit/chainlink-data-streams v0.0.0-20240220203239-09be0ea34540
github.com/smartcontractkit/chainlink-feeds v0.0.0-20240522213638-159fb2d99917
Expand Down
4 changes: 2 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -1171,8 +1171,8 @@ github.com/smartcontractkit/chain-selectors v1.0.10 h1:t9kJeE6B6G+hKD0GYR4kGJSCq
github.com/smartcontractkit/chain-selectors v1.0.10/go.mod h1:d4Hi+E1zqjy9HqMkjBE5q1vcG9VGgxf5VxiRHfzi2kE=
github.com/smartcontractkit/chainlink-automation v1.0.4 h1:iyW181JjKHLNMnDleI8umfIfVVlwC7+n5izbLSFgjw8=
github.com/smartcontractkit/chainlink-automation v1.0.4/go.mod h1:u4NbPZKJ5XiayfKHD/v3z3iflQWqvtdhj13jVZXj/cM=
github.com/smartcontractkit/chainlink-common v0.1.7-0.20240607135320-c9bc0a2ac0ce h1:/CjY8L4lVJh9E8NKg3bdAgsxj+zKg9XYtXR71ZWWMXo=
github.com/smartcontractkit/chainlink-common v0.1.7-0.20240607135320-c9bc0a2ac0ce/go.mod h1:L32xvCpk84Nglit64OhySPMP1tM3TTBK7Tw0qZl7Sd4=
github.com/smartcontractkit/chainlink-common v0.1.7-0.20240611144925-2baf0f2a3fef h1:70N67MKSMYwhGfVMC0Ekfc3yQmFvw3FhXe61M2KZdW4=
github.com/smartcontractkit/chainlink-common v0.1.7-0.20240611144925-2baf0f2a3fef/go.mod h1:L32xvCpk84Nglit64OhySPMP1tM3TTBK7Tw0qZl7Sd4=
github.com/smartcontractkit/chainlink-cosmos v0.4.1-0.20240524214833-c362c2ebbd2d h1:5tgMC5Gi2UAOKZ+m28W8ubjLeR0pQCAcrz6eQ0rW510=
github.com/smartcontractkit/chainlink-cosmos v0.4.1-0.20240524214833-c362c2ebbd2d/go.mod h1:0UNuO3nDt9MFsZPaHJBEUolxVkN0iC69j1ccDp95e8k=
github.com/smartcontractkit/chainlink-data-streams v0.0.0-20240220203239-09be0ea34540 h1:xFSv8561jsLtF6gYZr/zW2z5qUUAkcFkApin2mnbYTo=
Expand Down
2 changes: 1 addition & 1 deletion integration-tests/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ require (
github.com/shopspring/decimal v1.3.1
github.com/slack-go/slack v0.12.2
github.com/smartcontractkit/chainlink-automation v1.0.4
github.com/smartcontractkit/chainlink-common v0.1.7-0.20240607135320-c9bc0a2ac0ce
github.com/smartcontractkit/chainlink-common v0.1.7-0.20240611144925-2baf0f2a3fef
github.com/smartcontractkit/chainlink-testing-framework v1.30.3
github.com/smartcontractkit/chainlink-vrf v0.0.0-20231120191722-fef03814f868
github.com/smartcontractkit/chainlink/v2 v2.0.0-00010101000000-000000000000
Expand Down
4 changes: 2 additions & 2 deletions integration-tests/go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -1512,8 +1512,8 @@ github.com/smartcontractkit/chain-selectors v1.0.10 h1:t9kJeE6B6G+hKD0GYR4kGJSCq
github.com/smartcontractkit/chain-selectors v1.0.10/go.mod h1:d4Hi+E1zqjy9HqMkjBE5q1vcG9VGgxf5VxiRHfzi2kE=
github.com/smartcontractkit/chainlink-automation v1.0.4 h1:iyW181JjKHLNMnDleI8umfIfVVlwC7+n5izbLSFgjw8=
github.com/smartcontractkit/chainlink-automation v1.0.4/go.mod h1:u4NbPZKJ5XiayfKHD/v3z3iflQWqvtdhj13jVZXj/cM=
github.com/smartcontractkit/chainlink-common v0.1.7-0.20240607135320-c9bc0a2ac0ce h1:/CjY8L4lVJh9E8NKg3bdAgsxj+zKg9XYtXR71ZWWMXo=
github.com/smartcontractkit/chainlink-common v0.1.7-0.20240607135320-c9bc0a2ac0ce/go.mod h1:L32xvCpk84Nglit64OhySPMP1tM3TTBK7Tw0qZl7Sd4=
github.com/smartcontractkit/chainlink-common v0.1.7-0.20240611144925-2baf0f2a3fef h1:70N67MKSMYwhGfVMC0Ekfc3yQmFvw3FhXe61M2KZdW4=
github.com/smartcontractkit/chainlink-common v0.1.7-0.20240611144925-2baf0f2a3fef/go.mod h1:L32xvCpk84Nglit64OhySPMP1tM3TTBK7Tw0qZl7Sd4=
github.com/smartcontractkit/chainlink-cosmos v0.4.1-0.20240524214833-c362c2ebbd2d h1:5tgMC5Gi2UAOKZ+m28W8ubjLeR0pQCAcrz6eQ0rW510=
github.com/smartcontractkit/chainlink-cosmos v0.4.1-0.20240524214833-c362c2ebbd2d/go.mod h1:0UNuO3nDt9MFsZPaHJBEUolxVkN0iC69j1ccDp95e8k=
github.com/smartcontractkit/chainlink-data-streams v0.0.0-20240220203239-09be0ea34540 h1:xFSv8561jsLtF6gYZr/zW2z5qUUAkcFkApin2mnbYTo=
Expand Down
2 changes: 1 addition & 1 deletion integration-tests/load/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ require (
github.com/rs/zerolog v1.30.0
github.com/slack-go/slack v0.12.2
github.com/smartcontractkit/chainlink-automation v1.0.4
github.com/smartcontractkit/chainlink-common v0.1.7-0.20240607135320-c9bc0a2ac0ce
github.com/smartcontractkit/chainlink-common v0.1.7-0.20240611144925-2baf0f2a3fef
github.com/smartcontractkit/chainlink-testing-framework v1.30.3
github.com/smartcontractkit/chainlink/integration-tests v0.0.0-20240214231432-4ad5eb95178c
github.com/smartcontractkit/chainlink/v2 v2.9.0-beta0.0.20240216210048-da02459ddad8
Expand Down
4 changes: 2 additions & 2 deletions integration-tests/load/go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -1502,8 +1502,8 @@ github.com/smartcontractkit/chain-selectors v1.0.10 h1:t9kJeE6B6G+hKD0GYR4kGJSCq
github.com/smartcontractkit/chain-selectors v1.0.10/go.mod h1:d4Hi+E1zqjy9HqMkjBE5q1vcG9VGgxf5VxiRHfzi2kE=
github.com/smartcontractkit/chainlink-automation v1.0.4 h1:iyW181JjKHLNMnDleI8umfIfVVlwC7+n5izbLSFgjw8=
github.com/smartcontractkit/chainlink-automation v1.0.4/go.mod h1:u4NbPZKJ5XiayfKHD/v3z3iflQWqvtdhj13jVZXj/cM=
github.com/smartcontractkit/chainlink-common v0.1.7-0.20240607135320-c9bc0a2ac0ce h1:/CjY8L4lVJh9E8NKg3bdAgsxj+zKg9XYtXR71ZWWMXo=
github.com/smartcontractkit/chainlink-common v0.1.7-0.20240607135320-c9bc0a2ac0ce/go.mod h1:L32xvCpk84Nglit64OhySPMP1tM3TTBK7Tw0qZl7Sd4=
github.com/smartcontractkit/chainlink-common v0.1.7-0.20240611144925-2baf0f2a3fef h1:70N67MKSMYwhGfVMC0Ekfc3yQmFvw3FhXe61M2KZdW4=
github.com/smartcontractkit/chainlink-common v0.1.7-0.20240611144925-2baf0f2a3fef/go.mod h1:L32xvCpk84Nglit64OhySPMP1tM3TTBK7Tw0qZl7Sd4=
github.com/smartcontractkit/chainlink-cosmos v0.4.1-0.20240524214833-c362c2ebbd2d h1:5tgMC5Gi2UAOKZ+m28W8ubjLeR0pQCAcrz6eQ0rW510=
github.com/smartcontractkit/chainlink-cosmos v0.4.1-0.20240524214833-c362c2ebbd2d/go.mod h1:0UNuO3nDt9MFsZPaHJBEUolxVkN0iC69j1ccDp95e8k=
github.com/smartcontractkit/chainlink-data-streams v0.0.0-20240220203239-09be0ea34540 h1:xFSv8561jsLtF6gYZr/zW2z5qUUAkcFkApin2mnbYTo=
Expand Down
Loading