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

Keystone e2e test #15182

Open
wants to merge 122 commits into
base: develop
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
122 commits
Select commit Hold shift + click to select a range
36031ed
init, wip
skudasov Oct 17, 2024
5420691
fix go mod
skudasov Oct 17, 2024
fc73619
fix go mod again
skudasov Oct 17, 2024
038b11e
update
skudasov Oct 17, 2024
b7a94b5
fix go mod
skudasov Oct 17, 2024
05b2233
ready to test
skudasov Oct 17, 2024
ab0baf3
update deps
skudasov Oct 17, 2024
0a13f5e
update
skudasov Oct 18, 2024
7d8ffb3
update README
skudasov Oct 18, 2024
dce9c56
fix
skudasov Oct 18, 2024
d6cc825
fix readme
skudasov Oct 18, 2024
9be9a8a
try mockserver in CI
skudasov Oct 21, 2024
dc8fe4d
try reach the localhost mock in CI
skudasov Oct 21, 2024
cc4e526
check it can work both locally and in CI without code modification
skudasov Oct 21, 2024
e0465e6
check again
skudasov Oct 21, 2024
c75d06e
use the same Go version
skudasov Oct 21, 2024
c143938
example of CL client connection
skudasov Oct 21, 2024
85d9973
connect all the clients
skudasov Oct 21, 2024
3111ad8
example with contracts
skudasov Oct 21, 2024
d1ca470
finalize
skudasov Oct 22, 2024
cf1ea62
readmes
skudasov Oct 22, 2024
95c9562
ignore caching, update
skudasov Oct 22, 2024
2674e22
change CI workflow name
skudasov Oct 22, 2024
8e8597a
re-trigger
skudasov Oct 22, 2024
8fd3436
fix readme
skudasov Oct 22, 2024
547f054
switch to v0.1.0
skudasov Oct 23, 2024
7639522
fix go mod
skudasov Oct 23, 2024
d2581b2
use strict config version
skudasov Oct 23, 2024
430f573
update go mod
skudasov Oct 23, 2024
2ddc36c
add Sepolia example
skudasov Oct 23, 2024
81c972f
simplify configuration
skudasov Oct 24, 2024
5a82459
copy capabilities into container
skudasov Oct 24, 2024
f28c64a
expose p2p ports, add Fuji example
skudasov Oct 24, 2024
87beabc
fund nodes
skudasov Oct 24, 2024
29d8b77
use shared PG nodeset
skudasov Oct 25, 2024
db528ae
static node names
skudasov Oct 25, 2024
cde6a27
capabilities perms
skudasov Oct 25, 2024
91aa2a4
capabilities perms again
skudasov Oct 25, 2024
f5a1a79
unified config for one or more node overrides
skudasov Oct 28, 2024
b1145e3
comment config
skudasov Oct 28, 2024
7503510
docker rebuild from config
skudasov Oct 29, 2024
3cd15e1
simplify, explicit rebuild using config, no flags
skudasov Oct 29, 2024
95e45ae
--wip-- [skip CI]
DeividasK Oct 25, 2024
5298829
Fetch node keys and generate OCR3 config
DeividasK Oct 25, 2024
8c942eb
Configure KV store OCR contract
DeividasK Oct 25, 2024
dc0aeb6
--wip-- [skip CI]
DeividasK Oct 29, 2024
9bcf265
Merge
DeividasK Oct 29, 2024
725a5d3
Working capability setup
DeividasK Oct 29, 2024
67e3efa
Deploy mock streams capabilities
DeividasK Oct 31, 2024
3ce6f55
OCR3 not working (incorrect keys)
DeividasK Oct 31, 2024
e2b0887
--wip-- [skip CI]
DeividasK Nov 4, 2024
df8f8d3
OCR3 capability added successfully
DeividasK Nov 4, 2024
1590f69
Target capability configuration
DeividasK Nov 5, 2024
db84b3c
--wip-- [skip CI]
DeividasK Nov 5, 2024
d2f2a73
--wip-- [skip CI]
DeividasK Nov 6, 2024
0881f6a
--wip-- [skip CI]
DeividasK Nov 11, 2024
e0eba92
--wip-- [skip CI]
DeividasK Nov 11, 2024
e6e73fd
--wip-- [skip CI]
DeividasK Nov 11, 2024
5d381df
OCR endpoint initializes
DeividasK Nov 12, 2024
342aae6
fix, use default configs on start and replace config instead overridi…
skudasov Nov 13, 2024
4c4d151
--wip-- [skip CI]
DeividasK Nov 19, 2024
421ebf6
Merge branch 'develop' into dk-keystone-e2e-test
DeividasK Nov 19, 2024
b7fee52
Add workflows
DeividasK Nov 20, 2024
fd9acca
--wip-- [skip CI]
DeividasK Nov 21, 2024
781f6c6
E2E test sets up the environment correctly
DeividasK Nov 22, 2024
6642fee
Cleanup
DeividasK Nov 22, 2024
b7e606d
Cleanup
DeividasK Nov 22, 2024
73caca4
Run the test in CI
DeividasK Nov 22, 2024
64bbe1b
Less logs; increase timeout
DeividasK Nov 22, 2024
0dfdbfc
Reduce timeout
DeividasK Nov 22, 2024
d170c19
Move things around and cleanup
DeividasK Nov 25, 2024
a05205d
Refactor capabiliteis registry evm contract wrapper
DeividasK Nov 25, 2024
a60018e
Update go.mod and tidy
DeividasK Nov 25, 2024
f892377
Update CI config
DeividasK Nov 25, 2024
5a47543
Cleanup
DeividasK Nov 25, 2024
6e49339
Increase go test timeout
DeividasK Nov 25, 2024
dda8e3b
Upgrade CTFv2
DeividasK Nov 25, 2024
c366f08
try beefy machine
skudasov Nov 25, 2024
c9c9228
Double OCR timeouts config
DeividasK Nov 26, 2024
a86bff5
Add sleep 20
DeividasK Nov 26, 2024
1b8fe62
Log URLs
DeividasK Nov 26, 2024
001c70d
Add mroe sleep
DeividasK Nov 26, 2024
5c26247
Try another thing
DeividasK Nov 26, 2024
1a21e70
Print entire job spec
DeividasK Nov 26, 2024
1ec9511
try the version with exposed raw IPs
skudasov Nov 26, 2024
e1974e6
increase timeout, try non-aliased network
skudasov Nov 26, 2024
a3fa576
try 32 cores and log ips
skudasov Nov 26, 2024
1630563
try no-ipv6 network
skudasov Nov 26, 2024
532d64c
long blocks, add logs
skudasov Nov 26, 2024
6481c5b
fix upload
skudasov Nov 26, 2024
3aec009
update the framework, switch back the runner
skudasov Nov 26, 2024
e74c833
Use explicit linux amd64 streams binary
DeividasK Nov 27, 2024
e202dce
Polish
DeividasK Nov 27, 2024
7aa7883
Go mod tidy
DeividasK Nov 27, 2024
851990d
Remove sleep
DeividasK Nov 27, 2024
271a5db
Reduce test waiting time
DeividasK Nov 27, 2024
7058d3a
Run generate
DeividasK Nov 27, 2024
31249fe
Reduce test timeout windown
DeividasK Nov 27, 2024
f41b892
Merge remote-tracking branch 'origin/develop' into dk-keystone-e2e-test
DeividasK Nov 27, 2024
1f25769
update CTF, update dockerfile paths
skudasov Nov 27, 2024
a04e8b3
Move e2e tests to the integration-tests folder
DeividasK Nov 28, 2024
c0c9078
Update CI
DeividasK Nov 28, 2024
1b3d82e
Re-generate & tidy
DeividasK Nov 28, 2024
ef5d6d4
Fix lint issues
DeividasK Nov 28, 2024
8e4dcdd
upgrade CTF
skudasov Dec 2, 2024
53c1a3d
Merge branch 'develop' into dk-keystone-e2e-test
skudasov Dec 2, 2024
5006478
merge
skudasov Dec 2, 2024
29680ef
try with built image
skudasov Dec 2, 2024
843b6ff
debug image
skudasov Dec 2, 2024
50ac1b8
combine CL image with version
skudasov Dec 2, 2024
d16311a
try tag
skudasov Dec 2, 2024
c92fea5
require build
skudasov Dec 2, 2024
591c9f2
try different region
skudasov Dec 2, 2024
fcbd7f7
stub missing region
skudasov Dec 2, 2024
7cfab70
re-trigger
skudasov Dec 2, 2024
49b858e
auth
skudasov Dec 2, 2024
e7bd381
remove incompatible image build
skudasov Dec 2, 2024
18bc11a
rollback config
skudasov Dec 2, 2024
9f62f89
Updates to get the test working again
DeividasK Dec 3, 2024
bb02a58
Add more logs
DeividasK Dec 3, 2024
4a14601
Change OCR configuration
DeividasK Dec 3, 2024
d0b7af3
Change OCR config again
DeividasK Dec 3, 2024
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
Prev Previous commit
Next Next commit
Fetch node keys and generate OCR3 config
  • Loading branch information
DeividasK committed Oct 29, 2024
commit 5298829b4993bf21e573d1752e914dc1adf7406c
17 changes: 14 additions & 3 deletions e2e/capabilities/environment.toml
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,23 @@ tag = "latest"
[data_provider]
port = 9111

[don]
[nodeset]
nodes = 5

[don.node_spec.node]
[nodeset.node_spec.node]
image = "public.ecr.aws/chainlink/chainlink"
tag = "v2.17.0"
user_config_overrides = """"""
user_config_overrides = """
[Feature]
LogPoller = true

[OCR2]
Enabled = true
DatabaseTimeout = '1s'

[P2P.V2]
Enabled = true
ListenAddresses = ['0.0.0.0:6690']
"""
# default directory inside container is "/capabilities/$binary_name"
capabilities = ["./kvstore"]
246 changes: 188 additions & 58 deletions e2e/capabilities/workflow_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,20 @@ package capabilities_test

import (
"context"
"encoding/hex"
"fmt"
"os"
"sync"
"testing"
"time"

"github.com/ethereum/go-ethereum/accounts/abi/bind"
"github.com/stretchr/testify/require"

"github.com/smartcontractkit/libocr/offchainreporting2/confighelper"
"github.com/smartcontractkit/libocr/offchainreporting2/types"
"github.com/smartcontractkit/libocr/offchainreporting2plus/ocr3confighelper"

"github.com/smartcontractkit/chainlink-testing-framework/framework"
"github.com/smartcontractkit/chainlink-testing-framework/framework/clclient"
"github.com/smartcontractkit/chainlink-testing-framework/framework/components/blockchain"
Expand All @@ -24,6 +31,104 @@ type WorkflowTestConfig struct {
NodeSet *ns.Input `toml:"nodeset" validate:"required"`
}

type OCR3Config struct {
Signers []types.OnchainPublicKey
Transmitters []types.Account
F uint8
OnchainConfig []byte
OffchainConfigVersion uint64
OffchainConfig []byte
}

func generateOCR3Config(t *testing.T, nodes []*clclient.ChainlinkClient) (*OCR3Config, error) {
// type OracleIdentity struct {
// OnChainSigningAddress types.OnChainSigningAddress
// TransmitAddress common.Address
// OffchainPublicKey types.OffchainPublicKey
// PeerID string
// }
oracleIdentities := []confighelper.OracleIdentityExtra{}
transmissionSchedule := []int{}

for _, node := range nodes {
transmissionSchedule = append(transmissionSchedule, 0)
oracleIdentity := confighelper.OracleIdentityExtra{}
// ocr2
ocr2Keys, err := node.MustReadOCR2Keys()
require.NoError(t, err)

firstOCR2Key := ocr2Keys.Data[0].Attributes

offchainPublicKeyBytes, err := hex.DecodeString(firstOCR2Key.OffChainPublicKey)
require.NoError(t, err)
var offchainPublicKey [32]byte
copy(offchainPublicKey[:], offchainPublicKeyBytes)
oracleIdentity.OffchainPublicKey = offchainPublicKey

onchainPubkey, err := hex.DecodeString(firstOCR2Key.OnChainPublicKey)
require.NoError(t, err)
oracleIdentity.OnchainPublicKey = onchainPubkey

sharedSecretEncryptionPublicKeyBytes, err := hex.DecodeString(firstOCR2Key.ConfigPublicKey)
require.NoError(t, err)
var sharedSecretEncryptionPublicKey [32]byte
copy(sharedSecretEncryptionPublicKey[:], sharedSecretEncryptionPublicKeyBytes)
oracleIdentity.ConfigEncryptionPublicKey = sharedSecretEncryptionPublicKey

// p2p
p2pKeys, err := node.MustReadP2PKeys()
require.NoError(t, err)
oracleIdentity.PeerID = p2pKeys.Data[0].Attributes.PeerID

// eth
ethKeys, err := node.MustReadETHKeys()
require.NoError(t, err)
oracleIdentity.TransmitAccount = types.Account(ethKeys.Data[0].Attributes.Address)

oracleIdentities = append(oracleIdentities, oracleIdentity)
}

maxDurationInitialization := 10 * time.Second

// Generate OCR3 configuration arguments for testing
signers, transmitters, f, onchainConfig, offchainConfigVersion, offchainConfig, err := ocr3confighelper.ContractSetConfigArgsForTests(
5*time.Second, // DeltaProgress: Time between rounds
5*time.Second, // DeltaResend: Time between resending unconfirmed transmissions
5*time.Second, // DeltaInitial: Initial delay before starting the first round
2*time.Second, // DeltaRound: Time between rounds within an epoch
500*time.Millisecond, // DeltaGrace: Grace period for delayed transmissions
1*time.Second, // DeltaCertifiedCommitRequest: Time between certified commit requests
30*time.Second, // DeltaStage: Time between stages of the protocol
uint64(10), // MaxRoundsPerEpoch: Maximum number of rounds per epoch
transmissionSchedule, // TransmissionSchedule: Transmission schedule
oracleIdentities, // Oracle identities with their public keys
nil, // Plugin config (empty for now)
&maxDurationInitialization, // MaxDurationInitialization: ???
1*time.Second, // MaxDurationQuery: Maximum duration for querying
1*time.Second, // MaxDurationObservation: Maximum duration for observation
1*time.Second, // MaxDurationAccept: Maximum duration for acceptance
1*time.Second, // MaxDurationTransmit: Maximum duration for transmission
1, // F: Maximum number of faulty oracles
nil, // OnChain config (empty for now)
)
require.NoError(t, err)

// maxDurationInitialization *time.Duration,
// maxDurationQuery time.Duration,
// maxDurationObservation time.Duration,
// maxDurationShouldAcceptAttestedReport time.Duration,
// maxDurationShouldTransmitAcceptedReport time.Duration,

return &OCR3Config{
Signers: signers,
Transmitters: transmitters,
F: f,
OnchainConfig: onchainConfig,
OffchainConfigVersion: offchainConfigVersion,
OffchainConfig: offchainConfig,
}, nil
}

func TestWorkflow(t *testing.T) {
t.Run("smoke test", func(t *testing.T) {
in, err := framework.Load[WorkflowTestConfig](t)
Expand All @@ -33,10 +138,10 @@ func TestWorkflow(t *testing.T) {
bc, err := blockchain.NewBlockchainNetwork(in.BlockchainA)
require.NoError(t, err)

out, err := ns.NewNodeSet(in.NodeSet, bc, "https://example.com") // TODO: Should not be a thing
nodeset, err := ns.NewNodeSet(in.NodeSet, bc, "https://example.com") // TODO: Should not be a thing
require.NoError(t, err)

for i, n := range out.CLNodes {
for i, n := range nodeset.CLNodes {
fmt.Printf("Node %d --> %s\n", i, n.Node.HostURL)
fmt.Printf("Node P2P %d --> %s\n", i, n.Node.HostP2PURL)
}
Expand All @@ -48,12 +153,12 @@ func TestWorkflow(t *testing.T) {
Build()
require.NoError(t, err)

c, err := clclient.NewCLCDefaultlients(out.CLNodes, framework.L)
nodeClients, err := clclient.NewCLCDefaultlients(nodeset.CLNodes, framework.L)
require.NoError(t, err)

fmt.Println("Setting up KV store capabilities...")

simpleOCRAddress, tx, _, err := simple_ocr.DeploySimpleOCR(
simpleOCRAddress, tx, _ /* KVStoreOCRContract */, err := simple_ocr.DeploySimpleOCR(
sc.NewTXOpts(),
sc.Client,
)
Expand All @@ -64,68 +169,93 @@ func TestWorkflow(t *testing.T) {
require.NoError(t, err)

// Add bootstrap spec to the first node
r, _, err := c[0].CreateJobRaw(fmt.Sprintf(`
type = "bootstrap"
schemaVersion = 1
name = "Botostrap"
contractID = "%s"
contractConfigTrackerPollInterval = "1s"
contractConfigConfirmations = 1
relay = "evm"

[relayConfig]
chainID = %s
`, simpleOCRAddress, bc.ChainID))
bootstrapNode := nodeClients[0]
p2pKeys, err := bootstrapNode.MustReadP2PKeys()
require.NoError(t, err)
require.Equal(t, len(r.Errors), 0)
fmt.Println(r)
fmt.Println("P2P keys fetched")
var wg sync.WaitGroup

p2pKeys, err := c[0].MustReadP2PKeys()
wg.Add(1)
go func() {
defer wg.Done()
r, _, err := bootstrapNode.CreateJobRaw(fmt.Sprintf(`
type = "bootstrap"
schemaVersion = 1
name = "Botostrap"
contractID = "%s"
contractConfigTrackerPollInterval = "1s"
contractConfigConfirmations = 1
relay = "evm"

[relayConfig]
chainID = %s
`, simpleOCRAddress, bc.ChainID))
require.NoError(t, err)
require.Equal(t, len(r.Errors), 0)
fmt.Printf("Response from bootstrap node: %x\n", r)
}()

for i, nodeClient := range nodeClients {
// First node is a bootstrap node, so we skip it
if i == 0 {
continue
}

wg.Add(1)
go func() {
defer wg.Done()
response, _, err := nodeClient.CreateJobRaw(fmt.Sprintf(`
type = "standardcapabilities"
schemaVersion = 1
name = "%s-capabilities"
command="%s"

[oracle_factory]
enabled=true
bootstrap_peers = [
"%s@%s"
]
network="%s"
chain_id="%s"
ocr_contract_address="%s"`,
"kvstore",
"./capabilities/kvstore",
p2pKeys.Data[0].Attributes.PeerID,
nodeset.CLNodes[0].Node.HostP2PURL,
"evm",
bc.ChainID,
simpleOCRAddress,
))
require.NoError(t, err)
require.Equal(t, len(response.Errors), 0)
fmt.Printf("Response from node %d: %x\n", i+1, response)
}()
}

ocr3Config, err := generateOCR3Config(t, nodeClients)
require.NoError(t, err)

fmt.Println("P2P keys", p2pKeys)

// t.Fail()

// for i, nodeClient := range c {
// // First node is a bootstrap node, so we skip it
// if i == 0 {
// continue
// }

// response, _, err := nodeClient.CreateJobRaw(fmt.Sprintf(`
// type = "standardcapabilities"
// schemaVersion = 1
// name = "%s-capabilities"
// command="%s"

// [oracle_factory]
// enabled=true
// bootstrap_peers = [
// "%s@localhost:%s"
// ]
// network="%s"
// chain_id="%s"
// ocr_contract_address="%s"`,
// "kvstore",
// "./capabilities/kvstore",
// p2pKeys.Data[0].Attributes.PeerID,
// "", // bootstrapNodeInfo.Ports.P2P,
// "evm",
// bc.ChainID,
// simpleOCRAddress,
// ))
// require.NoError(t, err)
// require.Equal(t, len(response.Errors), 0)
// fmt.Println(r)
// }
fmt.Println("ocr3Config", ocr3Config)

wg.Wait()

// Configure KV store OCR contract
// KVStoreOCRContract.SetConfig(
// sc,
// // _signers []common.Address,
// // _transmitters []common.Address,
// // _f uint8,
// // _onchainConfig []byte,
// // _offchainConfigVersion uint64,
// // _offchainConfig []byte
// )

// Add bootstrap spec
// ✅ 2. Deploy KV store OCR contract
// ✅ 4. Add boostrap job spec
// ✅ 4. Add KV store capabilities (hardocded binaries for now)
// 1. Fetch node keys
// 2. Deploy KV store OCR contract
// 3. Configure OCR contract
// 4. Add boostrap job spec
// 4. Add KV store capabilities (hardocded binaries for now)
// 4.1. Add CRON capabilities
// 4.2. EVM target capabilities
// 5. TODOs: Have a workflow running and tested
Expand Down
3 changes: 3 additions & 0 deletions e2e/go.mod
jmank88 marked this conversation as resolved.
Show resolved Hide resolved
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ require (
github.com/ethereum/go-ethereum v1.14.11
github.com/smartcontractkit/chainlink-testing-framework/framework v0.1.1-0.20241029135646-2a8fff601bc7
github.com/smartcontractkit/chainlink-testing-framework/seth v1.50.4
github.com/smartcontractkit/libocr v0.0.0-20241007185508-adbe57025f12
github.com/stretchr/testify v1.9.0
github.com/testcontainers/testcontainers-go v0.33.0
)
Expand Down Expand Up @@ -94,6 +95,7 @@ require (
github.com/modern-go/reflect2 v1.0.2 // indirect
github.com/montanaflynn/stats v0.7.1 // indirect
github.com/morikuni/aec v1.0.0 // indirect
github.com/mr-tron/base58 v1.2.0 // indirect
github.com/opencontainers/go-digest v1.0.0 // indirect
github.com/opencontainers/image-spec v1.1.0 // indirect
github.com/pelletier/go-toml v1.9.5 // indirect
Expand All @@ -119,6 +121,7 @@ require (
go.opentelemetry.io/otel v1.24.0 // indirect
go.opentelemetry.io/otel/metric v1.24.0 // indirect
go.opentelemetry.io/otel/trace v1.24.0 // indirect
go.uber.org/multierr v1.11.0 // indirect
go.uber.org/ratelimit v0.3.0 // indirect
golang.org/x/arch v0.11.0 // indirect
golang.org/x/crypto v0.28.0 // indirect
Expand Down
6 changes: 6 additions & 0 deletions e2e/go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -260,6 +260,8 @@ github.com/montanaflynn/stats v0.7.1 h1:etflOAAHORrCC44V+aR6Ftzort912ZU+YLiSTuV8
github.com/montanaflynn/stats v0.7.1/go.mod h1:etXPPgVO6n31NxCd9KQUMvCM+ve0ruNzt6R8Bnaayow=
github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A=
github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc=
github.com/mr-tron/base58 v1.2.0 h1:T/HDJBh4ZCPbU39/+c3rRvE0uKBQlU27+QI8LJ4t64o=
github.com/mr-tron/base58 v1.2.0/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc=
github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec=
github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY=
github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U=
Expand Down Expand Up @@ -311,6 +313,8 @@ github.com/smartcontractkit/chainlink-testing-framework/framework v0.1.1-0.20241
github.com/smartcontractkit/chainlink-testing-framework/framework v0.1.1-0.20241029135646-2a8fff601bc7/go.mod h1:yn9pctizXEn8Y06IJ1RwAUH8eDKXuNOPMm13wqyWlUo=
github.com/smartcontractkit/chainlink-testing-framework/seth v1.50.4 h1:hPI9GhHE1RmIG1oyPeFjED0AhWnNb9JzD74Oq2bO+IQ=
github.com/smartcontractkit/chainlink-testing-framework/seth v1.50.4/go.mod h1:afY3QmNgeR/VI1pRbGH8g3YXGy7C2RrFOwUzEFvL3L8=
github.com/smartcontractkit/libocr v0.0.0-20241007185508-adbe57025f12 h1:NzZGjaqez21I3DU7objl3xExTH4fxYvzTqar8DC6360=
github.com/smartcontractkit/libocr v0.0.0-20241007185508-adbe57025f12/go.mod h1:fb1ZDVXACvu4frX3APHZaEBp0xi1DIm34DcA0CwTsZM=
github.com/status-im/keycard-go v0.2.0 h1:QDLFswOQu1r5jsycloeQh3bVU8n/NatHHaZobtDnDzA=
github.com/status-im/keycard-go v0.2.0/go.mod h1:wlp8ZLbsmrF6g6WjugPAx+IzoLrkdf9+mHxBEeo3Hbg=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
Expand Down Expand Up @@ -367,6 +371,8 @@ go.opentelemetry.io/proto/otlp v1.0.0 h1:T0TX0tmXU8a3CbNXzEKGeU5mIVOdf0oykP+u2lI
go.opentelemetry.io/proto/otlp v1.0.0/go.mod h1:Sy6pihPLfYHkr3NkUbEhGHFhINUSI/v80hjKIs5JXpM=
go.uber.org/atomic v1.7.0 h1:ADUqmZGgLDDfbSL9ZmPxKTybcoEYHgpYfELNoN+7hsw=
go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
go.uber.org/ratelimit v0.3.0 h1:IdZd9wqvFXnvLvSEBo0KPcGfkoBGNkpTHlrE3Rcjkjw=
go.uber.org/ratelimit v0.3.0/go.mod h1:So5LG7CV1zWpY1sHe+DXTJqQvOx+FFPFaAs2SnoyBaI=
golang.org/x/arch v0.11.0 h1:KXV8WWKCXm6tRpLirl2szsO5j/oOODwZf4hATmGVNs4=
Expand Down