From 781cdc39634ba64f0affdf3127f37c004368bfaa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Friedemann=20F=C3=BCrst?= <59653747+friedemannf@users.noreply.github.com> Date: Mon, 19 Jan 2026 20:49:35 +0100 Subject: [PATCH 1/4] Add Canton Support --- .gitignore | 4 + build/devenv/canton/canton.go | 195 +++++++++++++++++++ build/devenv/cciptestinterfaces/interface.go | 3 + build/devenv/cldf.go | 123 ++++++++---- build/devenv/env.toml | 6 + build/devenv/environment.go | 9 +- build/devenv/evm/impl.go | 8 + build/devenv/go.mod | 22 ++- build/devenv/go.sum | 54 +++-- 9 files changed, 354 insertions(+), 70 deletions(-) create mode 100644 build/devenv/canton/canton.go diff --git a/.gitignore b/.gitignore index ec6650438..aaa215aa7 100644 --- a/.gitignore +++ b/.gitignore @@ -13,3 +13,7 @@ indexer/secrets.toml # Ignore all tmp directories **/tmp/ + +# Go workspace file +go.work +go.work.sum \ No newline at end of file diff --git a/build/devenv/canton/canton.go b/build/devenv/canton/canton.go new file mode 100644 index 000000000..c35c85ce2 --- /dev/null +++ b/build/devenv/canton/canton.go @@ -0,0 +1,195 @@ +package canton + +import ( + "context" + "fmt" + "math/big" + "os" + "sync/atomic" + "time" + + "github.com/google/uuid" + "github.com/prometheus/client_golang/prometheus" + "github.com/rs/zerolog" + "github.com/rs/zerolog/log" + chainsel "github.com/smartcontractkit/chain-selectors" + + "github.com/noders-team/go-daml/pkg/client" + + "github.com/smartcontractkit/chainlink-canton-internal/bindings/compile" + "github.com/smartcontractkit/chainlink-canton-internal/contracts" + "github.com/smartcontractkit/chainlink-ccv/devenv/cciptestinterfaces" + "github.com/smartcontractkit/chainlink-ccv/protocol" + "github.com/smartcontractkit/chainlink-deployments-framework/chain/canton" + "github.com/smartcontractkit/chainlink-deployments-framework/datastore" + "github.com/smartcontractkit/chainlink-deployments-framework/deployment" + "github.com/smartcontractkit/chainlink-testing-framework/framework/components/blockchain" + "github.com/smartcontractkit/chainlink-testing-framework/framework/components/simple_node_set" +) + +type CCIP17Canton struct { + e *deployment.Environment + ds datastore.DataStore + chain canton.Chain + logger zerolog.Logger + chainDetails chainsel.ChainDetails +} + +func NewEmptyCCIP17Canton() *CCIP17Canton { + return &CCIP17Canton{ + logger: log. + Output(zerolog.ConsoleWriter{Out: os.Stderr}). + Level(zerolog.DebugLevel). + With(). + Fields(map[string]any{"component": "CCIP17Canton"}). + Logger(), + } +} + +func (c CCIP17Canton) Family() string { + return chainsel.FamilyCanton +} + +func (c CCIP17Canton) GetEOAReceiverAddress() (protocol.UnknownAddress, error) { + // TODO implement me + panic("implement me") +} + +func (c CCIP17Canton) GetSenderAddress() (protocol.UnknownAddress, error) { + // TODO implement me + panic("implement me") +} + +func (c CCIP17Canton) SendMessage(ctx context.Context, dest uint64, fields cciptestinterfaces.MessageFields, opts cciptestinterfaces.MessageOptions) (cciptestinterfaces.MessageSentEvent, error) { + // TODO implement me + panic("implement me") +} + +func (c CCIP17Canton) SendMessageWithNonce(ctx context.Context, dest uint64, fields cciptestinterfaces.MessageFields, opts cciptestinterfaces.MessageOptions, nonce *atomic.Uint64, disableTokenAmountCheck bool) (cciptestinterfaces.MessageSentEvent, error) { + // TODO implement me + panic("implement me") +} + +func (c CCIP17Canton) GetUserNonce(ctx context.Context) (uint64, error) { + // TODO implement me + panic("implement me") +} + +func (c CCIP17Canton) GetExpectedNextSequenceNumber(ctx context.Context, to uint64) (uint64, error) { + // TODO implement me + panic("implement me") +} + +func (c CCIP17Canton) WaitOneSentEventBySeqNo(ctx context.Context, to, seq uint64, timeout time.Duration) (cciptestinterfaces.MessageSentEvent, error) { + // TODO implement me + panic("implement me") +} + +func (c CCIP17Canton) WaitOneExecEventBySeqNo(ctx context.Context, from, seq uint64, timeout time.Duration) (cciptestinterfaces.ExecutionStateChangedEvent, error) { + // TODO implement me + panic("implement me") +} + +func (c CCIP17Canton) GetTokenBalance(ctx context.Context, address, tokenAddress protocol.UnknownAddress) (*big.Int, error) { + // TODO implement me + panic("implement me") +} + +func (c CCIP17Canton) GetMaxDataBytes(ctx context.Context, remoteChainSelector uint64) (uint32, error) { + // TODO implement me + panic("implement me") +} + +func (c CCIP17Canton) ManuallyExecuteMessage(ctx context.Context, message protocol.Message, gasLimit uint64, ccvs []protocol.UnknownAddress, verifierResults [][]byte) (cciptestinterfaces.ExecutionStateChangedEvent, error) { + // TODO implement me + panic("implement me") +} + +func (c CCIP17Canton) Curse(ctx context.Context, subjects [][16]byte) error { + // TODO implement me + panic("implement me") +} + +func (c CCIP17Canton) Uncurse(ctx context.Context, subjects [][16]byte) error { + // TODO implement me + panic("implement me") +} + +func (c CCIP17Canton) ExposeMetrics(ctx context.Context, source, dest uint64) ([]string, *prometheus.Registry, error) { + // TODO implement me + panic("implement me") +} + +func (c CCIP17Canton) ChainFamily() string { + return chainsel.FamilyCanton +} + +func (c CCIP17Canton) DeployContractsForSelector(ctx context.Context, env *deployment.Environment, selector uint64, committees []cciptestinterfaces.OnChainCommittees) (datastore.DataStore, error) { + l := c.logger + l.Info().Msg("Configuring contracts for selector") + l.Info().Any("Selector", selector).Msg("Deploying for chain selector") + cc := env.BlockChains.CantonChains()[selector] + participant1 := cc.Participants[0] + jwToken, err := participant1.JWTProvider.Token(ctx) + if err != nil { + return nil, fmt.Errorf("failed to get JWT for participant 1: %w", err) + } + c1, err := client.NewDamlClient(jwToken, participant1.Endpoints.GRPCLedgerAPIURL). + WithAdminAddress(participant1.Endpoints.AdminAPIURL). + Build(ctx) + if err != nil { + return nil, fmt.Errorf("failed to create client for participant 1: %w", err) + } + defer c1.Close() + + runningDs := datastore.NewMemoryDataStore() + + // Deploy contracts + + // Using the Coin dar file as an example + coinDar, err := compile.Package(contracts.Coin) + if err != nil { + return nil, fmt.Errorf("failed to compile Coin contract: %w", err) + } + err = c1.PackageMng.UploadDarFile(ctx, coinDar.Dar, uuid.New().String()) + if err != nil { + return nil, fmt.Errorf("failed to upload Dar file: %w", err) + } + l.Info().Msg("Uploaded Coin Dar file") + + // TODO Deploy contracts + + return runningDs.Seal(), nil +} + +func (c CCIP17Canton) ConnectContractsWithSelectors(ctx context.Context, e *deployment.Environment, selector uint64, remoteSelectors []uint64, committees []cciptestinterfaces.OnChainCommittees) error { + // TODO implement me + panic("implement me") +} + +func (c CCIP17Canton) DeployLocalNetwork(ctx context.Context, bc *blockchain.Input) (*blockchain.Output, error) { + c.logger.Info().Msg("Deploying Canton Network") + out, err := blockchain.NewBlockchainNetwork(bc) + if err != nil { + return nil, fmt.Errorf("failed to deploy Canton Network: %w", err) + } + // TODO set ChainID properly + out.ChainID = bc.ChainID + + return out, nil +} + +func (c CCIP17Canton) ConfigureNodes(ctx context.Context, blockchain *blockchain.Input) (string, error) { + // TODO Return CL Node config for Canton if necessary + return "", nil +} + +func (c CCIP17Canton) FundNodes(ctx context.Context, cls []*simple_node_set.Input, bc *blockchain.Input, linkAmount, nativeAmount *big.Int) error { + // Not required for Canton + return nil +} + +func (c CCIP17Canton) FundAddresses(ctx context.Context, bc *blockchain.Input, addresses []protocol.UnknownAddress, nativeAmount *big.Int) error { + // TODO implement me + panic("implement me") +} diff --git a/build/devenv/cciptestinterfaces/interface.go b/build/devenv/cciptestinterfaces/interface.go index 378f4d17a..fd3a18ab8 100644 --- a/build/devenv/cciptestinterfaces/interface.go +++ b/build/devenv/cciptestinterfaces/interface.go @@ -121,6 +121,8 @@ type ExecutionStateChangedEvent struct { // Chain provides methods to interact with a single chain that has CCIP deployed. type Chain interface { + // Family returns the family of the chain. + Family() string // GetEOAReceiverAddress gets an EOA receiver address for this chain. GetEOAReceiverAddress() (protocol.UnknownAddress, error) // GetSenderAddress gets the sender address for this chain. @@ -160,6 +162,7 @@ type OnChainCommittees struct { // OnChainConfigurable defines methods that allows devenv to // deploy, configure Chainlink product and connect on-chain part with other chains. type OnChainConfigurable interface { + ChainFamily() string // TODO // DeployContractsForSelector configures contracts for chain X // returns all the contract addresses and metadata as datastore.DataStore DeployContractsForSelector(ctx context.Context, env *deployment.Environment, selector uint64, committees []OnChainCommittees) (datastore.DataStore, error) diff --git a/build/devenv/cldf.go b/build/devenv/cldf.go index 243802ded..e8181a938 100644 --- a/build/devenv/cldf.go +++ b/build/devenv/cldf.go @@ -13,15 +13,18 @@ import ( "github.com/smartcontractkit/chainlink-ccv/protocol/common/logging" "github.com/smartcontractkit/chainlink-common/pkg/logger" - "github.com/smartcontractkit/chainlink-deployments-framework/chain/evm/provider/rpcclient" - "github.com/smartcontractkit/chainlink-deployments-framework/datastore" - "github.com/smartcontractkit/chainlink-deployments-framework/deployment" - "github.com/smartcontractkit/chainlink-deployments-framework/operations" "github.com/smartcontractkit/chainlink-testing-framework/framework/components/blockchain" chainsel "github.com/smartcontractkit/chain-selectors" + cldf_chain "github.com/smartcontractkit/chainlink-deployments-framework/chain" + cldf_canton "github.com/smartcontractkit/chainlink-deployments-framework/chain/canton" + cldf_canton_provider "github.com/smartcontractkit/chainlink-deployments-framework/chain/canton/provider" cldf_evm_provider "github.com/smartcontractkit/chainlink-deployments-framework/chain/evm/provider" + "github.com/smartcontractkit/chainlink-deployments-framework/chain/evm/provider/rpcclient" + "github.com/smartcontractkit/chainlink-deployments-framework/datastore" + "github.com/smartcontractkit/chainlink-deployments-framework/deployment" + "github.com/smartcontractkit/chainlink-deployments-framework/operations" ) var Plog = log.Output(zerolog.ConsoleWriter{Out: os.Stderr}).Level(zerolog.DebugLevel).With().Fields(map[string]any{"component": "ccv"}).Logger() @@ -47,48 +50,86 @@ func NewCLDFOperationsEnvironment(bc []*blockchain.Input, dataStore datastore.Da selectors := make([]uint64, 0) defaultTxTimeout := 30 * time.Second for _, b := range bc { - chainID := b.Out.ChainID - rpcWSURL := b.Out.Nodes[0].ExternalWSUrl - rpcHTTPURL := b.Out.Nodes[0].ExternalHTTPUrl - - d, err := chainsel.GetChainDetailsByChainIDAndFamily(chainID, chainsel.FamilyEVM) + family, err := blockchain.TypeToFamily(b.Type) if err != nil { - return nil, nil, err - } - selectors = append(selectors, d.ChainSelector) - - var confirmer cldf_evm_provider.ConfirmFunctor - switch b.Type { - case "anvil": - confirmer = cldf_evm_provider.ConfirmFuncGeth(defaultTxTimeout, cldf_evm_provider.WithTickInterval(5*time.Millisecond)) - case "geth": - confirmer = cldf_evm_provider.ConfirmFuncGeth(defaultTxTimeout) - default: - panic("blockchain type is not 'anvil' or 'geth', no other types are supported right now") + return nil, nil, fmt.Errorf("unable to determine blockchain type: %w", err) } - - p, err := cldf_evm_provider.NewRPCChainProvider( - d.ChainSelector, - cldf_evm_provider.RPCChainProviderConfig{ - DeployerTransactorGen: cldf_evm_provider.TransactorFromRaw( - getNetworkPrivateKey(), - ), - RPCs: []rpcclient.RPC{ - { - Name: "default", - WSURL: rpcWSURL, - HTTPURL: rpcHTTPURL, - PreferredURLScheme: rpcclient.URLSchemePreferenceHTTP, + switch family { + case blockchain.FamilyEVM: + chainID := b.Out.ChainID + rpcWSURL := b.Out.Nodes[0].ExternalWSUrl + rpcHTTPURL := b.Out.Nodes[0].ExternalHTTPUrl + + d, err := chainsel.GetChainDetailsByChainIDAndFamily(chainID, chainsel.FamilyEVM) + if err != nil { + return nil, nil, err + } + selectors = append(selectors, d.ChainSelector) + + var confirmer cldf_evm_provider.ConfirmFunctor + switch b.Type { + case "anvil": + confirmer = cldf_evm_provider.ConfirmFuncGeth(defaultTxTimeout, cldf_evm_provider.WithTickInterval(5*time.Millisecond)) + case "geth": + confirmer = cldf_evm_provider.ConfirmFuncGeth(defaultTxTimeout) + default: + panic("EVM blockchain type is not 'anvil' or 'geth', no other types are supported right now") + } + + p, err := cldf_evm_provider.NewRPCChainProvider( + d.ChainSelector, + cldf_evm_provider.RPCChainProviderConfig{ + DeployerTransactorGen: cldf_evm_provider.TransactorFromRaw( + getNetworkPrivateKey(), + ), + RPCs: []rpcclient.RPC{ + { + Name: "default", + WSURL: rpcWSURL, + HTTPURL: rpcHTTPURL, + PreferredURLScheme: rpcclient.URLSchemePreferenceHTTP, + }, }, + UsersTransactorGen: GenerateUserTransactors(getUserPrivateKeys()), + ConfirmFunctor: confirmer, }, - UsersTransactorGen: GenerateUserTransactors(getUserPrivateKeys()), - ConfirmFunctor: confirmer, - }, - ).Initialize(context.Background()) - if err != nil { - return nil, nil, err + ).Initialize(context.Background()) + if err != nil { + return nil, nil, err + } + providers = append(providers, p) + case blockchain.FamilyCanton: + d, err := chainsel.GetChainDetailsByChainIDAndFamily(b.Out.ChainID, chainsel.FamilyCanton) + if err != nil { + return nil, nil, err + } + selectors = append(selectors, d.ChainSelector) + + var ( + endpoints []cldf_canton.ParticipantEndpoints + jwtProviders []cldf_canton.JWTProvider + ) + for _, p := range b.Out.NetworkSpecificData.CantonEndpoints.Participants { + endpoints = append(endpoints, cldf_canton.ParticipantEndpoints{ + JSONLedgerAPIURL: p.JSONLedgerAPIURL, + GRPCLedgerAPIURL: p.GRPCLedgerAPIURL, + AdminAPIURL: p.AdminAPIURL, + ValidatorAPIURL: p.ValidatorAPIURL, + }) + jwtProviders = append(jwtProviders, cldf_canton.NewStaticJWTProvider(p.JWT)) + } + + p, err := cldf_canton_provider.NewRPCChainProvider(d.ChainSelector, cldf_canton_provider.RPCChainProviderConfig{ + Endpoints: endpoints, + JWTProviders: jwtProviders, + }).Initialize(context.TODO()) + if err != nil { + return nil, nil, err + } + providers = append(providers, p) + default: + return nil, nil, fmt.Errorf("unsupported blockchain family: %s", family) } - providers = append(providers, p) } blockchains := cldf_chain.NewBlockChainsFromSlice(providers) diff --git a/build/devenv/env.toml b/build/devenv/env.toml index 8ea7b726e..cad14d7f0 100644 --- a/build/devenv/env.toml +++ b/build/devenv/env.toml @@ -31,6 +31,12 @@ cl_nodes_funding_link = 50 port = "8565" type = "anvil" +[[blockchains]] + type = "canton" + chain_id = "LocalNet" + number_of_canton_validators = 5 + port = "8088" + [fake] image = "ccv-fakes:dev" port = 9111 diff --git a/build/devenv/environment.go b/build/devenv/environment.go index a12545a70..336f92a58 100644 --- a/build/devenv/environment.go +++ b/build/devenv/environment.go @@ -19,6 +19,7 @@ import ( "github.com/smartcontractkit/chainlink-ccv/deployments" "github.com/smartcontractkit/chainlink-ccv/deployments/changesets" + "github.com/smartcontractkit/chainlink-ccv/devenv/canton" "github.com/smartcontractkit/chainlink-ccv/devenv/cciptestinterfaces" "github.com/smartcontractkit/chainlink-ccv/devenv/internal/util" "github.com/smartcontractkit/chainlink-ccv/devenv/services" @@ -34,6 +35,7 @@ import ( "github.com/smartcontractkit/chainlink-testing-framework/framework/components/jd" chainsel "github.com/smartcontractkit/chain-selectors" + "github.com/smartcontractkit/chainlink-ccv/devenv/evm" ns "github.com/smartcontractkit/chainlink-testing-framework/framework/components/simple_node_set" ) @@ -131,8 +133,7 @@ func NewProductConfigurationFromNetwork(typ string) (cciptestinterfaces.CCIP17Co case "anvil": return evm.NewEmptyCCIP17EVM(), nil case "canton": - // see devenv-evm implementation and add Canton - return nil, errors.New("canton is not supported yet") + return canton.NewEmptyCCIP17Canton(), nil default: return nil, errors.New("unknown devenv network type " + typ) } @@ -229,7 +230,7 @@ func NewEnvironment() (in *Cfg, err error) { // START: Deploy Pricer service // /////////////////////////////// if _, err := services.NewPricer(in.Pricer); err != nil { - return nil, fmt.Errorf("failed to setup pricer service") + return nil, fmt.Errorf("failed to setup pricer service: %w", err) } for i, impl := range impls { @@ -352,7 +353,7 @@ func NewEnvironment() (in *Cfg, err error) { ds := datastore.NewMemoryDataStore() for i, impl := range impls { var networkInfo chainsel.ChainDetails - networkInfo, err = chainsel.GetChainDetailsByChainIDAndFamily(in.Blockchains[i].ChainID, chainsel.FamilyEVM) + networkInfo, err = chainsel.GetChainDetailsByChainIDAndFamily(in.Blockchains[i].ChainID, impl.ChainFamily()) if err != nil { return nil, err } diff --git a/build/devenv/evm/impl.go b/build/devenv/evm/impl.go index ba40042e0..111e620f2 100644 --- a/build/devenv/evm/impl.go +++ b/build/devenv/evm/impl.go @@ -378,6 +378,10 @@ func NewCCIP17EVM(ctx context.Context, logger zerolog.Logger, e *deployment.Envi }, nil } +func (m *CCIP17EVM) Family() string { + return chainsel.FamilyEVM +} + func (m *CCIP17EVM) getOrCreateOnRampPoller() (*eventPoller[cciptestinterfaces.MessageSentEvent], error) { m.pollersMu.Lock() defer m.pollersMu.Unlock() @@ -1116,6 +1120,10 @@ func toCommitteeVerifierParams(committees []cciptestinterfaces.OnChainCommittees return params } +func (m *CCIP17EVMConfig) ChainFamily() string { + return chainsel.FamilyEVM +} + func (m *CCIP17EVMConfig) DeployContractsForSelector(ctx context.Context, env *deployment.Environment, selector uint64, committees []cciptestinterfaces.OnChainCommittees) (datastore.DataStore, error) { l := m.logger l.Info().Msg("Configuring contracts for selector") diff --git a/build/devenv/go.mod b/build/devenv/go.mod index 703ea89f1..37e82cc7a 100644 --- a/build/devenv/go.mod +++ b/build/devenv/go.mod @@ -6,6 +6,8 @@ replace github.com/smartcontractkit/chainlink-ccv => ../.. replace github.com/smartcontractkit/chainlink-ccv/deployments => ../../deployments +replace github.com/smartcontractkit/chainlink-canton-internal => ../../../chainlink-canton-internal + require ( github.com/BurntSushi/toml v1.5.0 github.com/Masterminds/semver/v3 v3.4.0 @@ -17,12 +19,12 @@ require ( github.com/pelletier/go-toml/v2 v2.2.4 github.com/prometheus/client_golang v1.23.0 github.com/rs/zerolog v1.34.0 - github.com/smartcontractkit/chain-selectors v1.0.85 + github.com/smartcontractkit/chain-selectors v1.0.89 github.com/smartcontractkit/chainlink-ccip v0.1.1-solana.0.20260116110203-68d767f52164 github.com/smartcontractkit/chainlink-ccip/chains/evm/deployment v0.0.0-20260116110203-68d767f52164 github.com/smartcontractkit/chainlink-ccip/deployment v0.0.0-20260116110203-68d767f52164 github.com/smartcontractkit/chainlink-common v0.9.6-0.20260114190811-74301cd99dc3 - github.com/smartcontractkit/chainlink-deployments-framework v0.74.2 + github.com/smartcontractkit/chainlink-deployments-framework v0.75.2-0.20260119185452-46c713898510 github.com/smartcontractkit/chainlink-testing-framework/framework v0.13.3 github.com/stretchr/testify v1.11.1 github.com/testcontainers/testcontainers-go v0.39.0 @@ -31,11 +33,13 @@ require ( ) require ( - github.com/go-resty/resty/v2 v2.16.5 + github.com/go-resty/resty/v2 v2.17.1 github.com/google/uuid v1.6.0 github.com/gorilla/websocket v1.5.3 github.com/jmoiron/sqlx v1.4.0 github.com/lib/pq v1.10.9 + github.com/noders-team/go-daml v0.5.0 + github.com/smartcontractkit/chainlink-canton-internal v0.0.0-00010101000000-000000000000 github.com/smartcontractkit/chainlink-ccip/ccv/chains/evm v0.0.0-20260116110203-68d767f52164 github.com/smartcontractkit/chainlink-ccip/ccv/chains/evm/deployment v0.0.0-20260116110203-68d767f52164 github.com/smartcontractkit/chainlink-ccv v0.0.0-20260116152026-295e4f116719 @@ -45,13 +49,14 @@ require ( github.com/smartcontractkit/chainlink-protos/chainlink-ccv/message-discovery v0.0.0-20251211142334-5c3421fe2c8d github.com/smartcontractkit/chainlink-protos/chainlink-ccv/verifier v0.0.0-20251211142334-5c3421fe2c8d github.com/smartcontractkit/chainlink-testing-framework/wasp v1.51.1 - github.com/spf13/cobra v1.8.1 - google.golang.org/grpc v1.77.0 + github.com/spf13/cobra v1.10.1 + google.golang.org/grpc v1.78.0 ) require ( github.com/ProjectZKM/Ziren/crates/go-runtime/zkvm_runtime v0.0.0-20251001021608-1fe7b43fc4d6 // indirect github.com/apapsch/go-jsonmerge/v2 v2.0.0 // indirect + github.com/digital-asset/dazl-client/v8 v8.7.1 // indirect github.com/evanphx/json-patch/v5 v5.9.11 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/oapi-codegen/runtime v1.1.2 // indirect @@ -183,7 +188,7 @@ require ( github.com/gogo/protobuf v1.3.2 // indirect github.com/gogo/status v1.1.1 // indirect github.com/golang-jwt/jwt/v4 v4.5.2 // indirect - github.com/golang-jwt/jwt/v5 v5.3.0 // indirect + github.com/golang-jwt/jwt/v5 v5.3.0 github.com/golang/protobuf v1.5.4 // indirect github.com/golang/snappy v1.0.0 // indirect github.com/google/btree v1.1.3 // indirect @@ -295,7 +300,6 @@ require ( github.com/oklog/ulid v1.3.1 // indirect github.com/olekukonko/tablewriter v0.0.5 // indirect github.com/onsi/ginkgo/v2 v2.22.1 // indirect - github.com/onsi/gomega v1.36.2 // indirect github.com/open-telemetry/opentelemetry-collector-contrib/internal/exp/metrics v0.116.0 // indirect github.com/open-telemetry/opentelemetry-collector-contrib/pkg/pdatautil v0.116.0 // indirect github.com/open-telemetry/opentelemetry-collector-contrib/processor/deltatocumulativeprocessor v0.116.0 // indirect @@ -433,8 +437,8 @@ require ( golang.org/x/time v0.12.0 // indirect golang.org/x/tools v0.39.0 // indirect google.golang.org/api v0.221.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20251022142026-3a174f9686a8 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20251029180050-ab9386a59fda // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20260114163908-3f89685c29c3 // indirect google.golang.org/protobuf v1.36.11 // indirect gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect gopkg.in/guregu/null.v4 v4.0.0 // indirect diff --git a/build/devenv/go.sum b/build/devenv/go.sum index 975f58428..24fc437c3 100644 --- a/build/devenv/go.sum +++ b/build/devenv/go.sum @@ -51,6 +51,8 @@ github.com/Masterminds/sprig/v3 v3.3.0 h1:mQh0Yrg1XPo6vjYXgtf5OtijNAKJRNcTdOOGZe github.com/Masterminds/sprig/v3 v3.3.0/go.mod h1:Zy1iXRYNqNLUolqCpL4uhk6SHUMAOSCzdgBfDb35Lz0= github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= +github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 h1:TngWCqHvy9oXAN6lEVMRuU21PR1EtLVZJmdB18Gu3Rw= +github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5/go.mod h1:lmUJ/7eu/Q8D7ML55dXQrVaamCz2vxCfdQBasLZfHKk= github.com/ProjectZKM/Ziren/crates/go-runtime/zkvm_runtime v0.0.0-20251001021608-1fe7b43fc4d6 h1:1zYrtlhrZ6/b6SAjLSfKzWtdgqK0U+HtH/VcBWh1BaU= github.com/ProjectZKM/Ziren/crates/go-runtime/zkvm_runtime v0.0.0-20251001021608-1fe7b43fc4d6/go.mod h1:ioLG6R+5bUSO1oeGSDxOV3FADARuMoytZCSX6MEMQkI= github.com/RaveNoX/go-jsoncommentstrip v1.0.0/go.mod h1:78ihd09MekBnJnxpICcwzCMzGrKSKYe4AqU6PDYYpjk= @@ -237,6 +239,8 @@ github.com/coder/websocket v1.8.14 h1:9L0p0iKiNOibykf283eHkKUHHrpG7f65OE3BhhO7v9 github.com/coder/websocket v1.8.14/go.mod h1:NX3SzP+inril6yawo5CQXx8+fk145lPDC6pumgx0mVg= github.com/consensys/gnark-crypto v0.19.2 h1:qrEAIXq3T4egxqiliFFoNrepkIWVEeIYwt3UL0fvS80= github.com/consensys/gnark-crypto v0.19.2/go.mod h1:rT23F0XSZqE0mUA0+pRtnL56IbPxs6gp4CeRsBk4XS0= +github.com/containerd/continuity v0.4.5 h1:ZRoN1sXq9u7V6QoHMcVWGhOwDFqZ4B9i5H6un1Wh0x4= +github.com/containerd/continuity v0.4.5/go.mod h1:/lNJvtJKUQStBzpVQ1+rasXO1LAWtUQssk28EZvJ3nE= github.com/containerd/errdefs v1.0.0 h1:tg5yIfIlQIrxYtu9ajqY42W3lpS19XqdxRQeEwYG8PI= github.com/containerd/errdefs v1.0.0/go.mod h1:+YBYIdtsnF4Iw6nWZhJcqGSg/dwvV7tyJ/kCkyJ2k+M= github.com/containerd/errdefs/pkg v0.3.0 h1:9IKJ06FvyNlexW690DXuQNx2KA2cUJXx151Xdx3ZPPE= @@ -255,7 +259,7 @@ github.com/cosmos/go-bip39 v1.0.0 h1:pcomnQdrdH22njcAatO0yWojsUnCO3y2tNoV1cb6hHY github.com/cosmos/go-bip39 v1.0.0/go.mod h1:RNJv0H/pOIVgxw6KS7QeX2a0Uo0aKUlfhZ4xuwvCdJw= github.com/cpuguy83/dockercfg v0.3.2 h1:DlJTyZGBDlXqUZ2Dk2Q3xHs/FtnooJJVaad2S9GKorA= github.com/cpuguy83/dockercfg v0.3.2/go.mod h1:sugsbF4//dDlL/i+S+rtpIWp+5h0BHJHfjj5/jFyUJc= -github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= github.com/cpuguy83/go-md2man/v2 v2.0.7 h1:zbFlGlXEAKlwXpmvle3d8Oe3YnkKIK4xSRTd3sHPnBo= github.com/cpuguy83/go-md2man/v2 v2.0.7/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= github.com/crate-crypto/go-eth-kzg v1.4.0 h1:WzDGjHk4gFg6YzV0rJOAsTK4z3Qkz5jd4RE3DAvPFkg= @@ -294,10 +298,14 @@ github.com/dennwc/varint v1.0.0 h1:kGNFFSSw8ToIy3obO/kKr8U9GZYUAxQEVuix4zfDWzE= github.com/dennwc/varint v1.0.0/go.mod h1:hnItb35rvZvJrbTALZtY/iQfDs48JKRG1RPpgziApxA= github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78= github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc= +github.com/digital-asset/dazl-client/v8 v8.7.1 h1:W/U9xRoreGOq9kfcgwLkcHphp/dPxQrPBldsoBqtt9U= +github.com/digital-asset/dazl-client/v8 v8.7.1/go.mod h1:q1KevCJ8FpH8je2MnnjN8/QUfhstB4fKpyKyqDtqFh0= github.com/digitalocean/godo v1.132.0 h1:n0x6+ZkwbyQBtIU1wwBhv26EINqHg0wWQiBXlwYg/HQ= github.com/digitalocean/godo v1.132.0/go.mod h1:PU8JB6I1XYkQIdHFop8lLAY9ojp6M0XcU0TWaQSxbrc= github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk= github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= +github.com/docker/cli v27.4.1+incompatible h1:VzPiUlRJ/xh+otB75gva3r05isHMo5wXDfPRi5/b4hI= +github.com/docker/cli v27.4.1+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= github.com/docker/docker v28.5.1+incompatible h1:Bm8DchhSD2J6PsFzxC35TZo4TLGR2PdW/E69rU45NhM= github.com/docker/docker v28.5.1+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= github.com/docker/go-connections v0.6.0 h1:LlMG9azAe1TqfR7sO+NJttz1gy6KO7VJBh+pMmjSD94= @@ -420,8 +428,8 @@ github.com/go-playground/universal-translator v0.18.1 h1:Bcnm0ZwsGyWbCzImXv+pAJn github.com/go-playground/universal-translator v0.18.1/go.mod h1:xekY+UJKNuX9WP91TpwSH2VMlDf28Uj24BCp08ZFTUY= github.com/go-playground/validator/v10 v10.28.0 h1:Q7ibns33JjyW48gHkuFT91qX48KG0ktULL6FgHdG688= github.com/go-playground/validator/v10 v10.28.0/go.mod h1:GoI6I1SjPBh9p7ykNE/yj3fFYbyDOpwMn5KXd+m2hUU= -github.com/go-resty/resty/v2 v2.16.5 h1:hBKqmWrr7uRc3euHVqmh1HTHcKn99Smr7o5spptdhTM= -github.com/go-resty/resty/v2 v2.16.5/go.mod h1:hkJtXbA2iKHzJheXYvQ8snQES5ZLGKMwQ07xAwp/fiA= +github.com/go-resty/resty/v2 v2.17.1 h1:x3aMpHK1YM9e4va/TMDRlusDDoZiQ+ViDu/WpA6xTM4= +github.com/go-resty/resty/v2 v2.17.1/go.mod h1:kCKZ3wWmwJaNc7S29BRtUhJwy7iqmn+2mLtQrOyQlVA= github.com/go-sql-driver/mysql v1.8.1/go.mod h1:wEBSXgmK//2ZFJyE+qWnIsVGmvmEKlqwuVSjsCm7DZg= github.com/go-sql-driver/mysql v1.9.3 h1:U/N249h2WzJ3Ukj8SowVFjdtZKfu9vlLZxjPXV1aweo= github.com/go-sql-driver/mysql v1.9.3/go.mod h1:qn46aNg1333BRMNU69Lq93t8du/dwxI64Gl8i5p1WMU= @@ -507,6 +515,8 @@ github.com/google/pprof v0.0.0-20250317173921-a4b03ec1a45e/go.mod h1:boTsfXsheKC github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/s2a-go v0.1.9 h1:LGD7gtMgezd8a/Xak7mEWL0PjoTQFvpRudN895yqKW0= github.com/google/s2a-go v0.1.9/go.mod h1:YA0Ei2ZQL3acow2O62kdp9UlnvMmU7kA6Eutn0dXayM= +github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4= +github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= @@ -878,6 +888,8 @@ github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+ github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/ncruces/go-strftime v0.1.9 h1:bY0MQC28UADQmHmaF5dgpLmImcShSi2kHU9XLdhx/f4= github.com/ncruces/go-strftime v0.1.9/go.mod h1:Fwc5htZGVVkseilnfgOVb9mKy6w1naJmn9CehxcKcls= +github.com/noders-team/go-daml v0.5.0 h1:SkSPrvaApQMIDMUx4mwFHuIFBd8ZygHfta1rN6p1ZOc= +github.com/noders-team/go-daml v0.5.0/go.mod h1:yi458NGE4dlDOhlyCZvQ2XgsIOdHHvepwoHRgEusbo8= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= @@ -919,6 +931,8 @@ github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8 github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= github.com/opencontainers/image-spec v1.1.1 h1:y0fUlFfIZhPF1W537XOLg0/fcx6zcHCJwooC2xJA040= github.com/opencontainers/image-spec v1.1.1/go.mod h1:qpqAh3Dmcf36wStyyWU+kCeDgrGnAve2nCC8+7h8Q0M= +github.com/opencontainers/runc v1.2.3 h1:fxE7amCzfZflJO2lHXf4y/y8M1BoAqp+FVmG19oYB80= +github.com/opencontainers/runc v1.2.3/go.mod h1:nSxcWUydXrsBZVYNSkTjoQ/N6rcyTtn+1SD5D4+kRIM= github.com/opentracing-contrib/go-grpc v0.1.1 h1:Ws7IN1zyiL1DFqKQPhRXuKe5pLYzMfdxnC1qtajE2PE= github.com/opentracing-contrib/go-grpc v0.1.1/go.mod h1:Nu6sz+4zzgxXu8rvKfnwjBEmHsuhTigxRwV2RhELrS8= github.com/opentracing-contrib/go-stdlib v1.1.0 h1:cZBWc4pA4e65tqTJddbflK435S0tDImj6c9BMvkdUH0= @@ -926,6 +940,8 @@ github.com/opentracing-contrib/go-stdlib v1.1.0/go.mod h1:S0p+X9p6dcBkoMTL+Qq2VO github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc= github.com/opentracing/opentracing-go v1.2.1-0.20220228012449-10b1cf09e00b h1:FfH+VrHHk6Lxt9HdVS0PXzSXFyS2NbZKXv33FYPol0A= github.com/opentracing/opentracing-go v1.2.1-0.20220228012449-10b1cf09e00b/go.mod h1:AC62GU6hc0BrNm+9RK9VSiwa/EUe1bkIeFORAMcHvJU= +github.com/ory/dockertest/v3 v3.12.0 h1:3oV9d0sDzlSQfHtIaB5k6ghUCVMVLpAY8hwrqoCyRCw= +github.com/ory/dockertest/v3 v3.12.0/go.mod h1:aKNDTva3cp8dwOWwb9cWuX84aH5akkxXRvO7KCwWVjE= github.com/ovh/go-ovh v1.6.0 h1:ixLOwxQdzYDx296sXcgS35TOPEahJkpjMGtzPadCjQI= github.com/ovh/go-ovh v1.6.0/go.mod h1:cTVDnl94z4tl8pP1uZ/8jlVxntjSIf09bNcQ5TJSC7c= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= @@ -1061,8 +1077,8 @@ github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMB github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= -github.com/smartcontractkit/chain-selectors v1.0.85 h1:A7eyN7KIACxmngn1MJJ0giVtfELK9vh/eYyNU/Q/sFo= -github.com/smartcontractkit/chain-selectors v1.0.85/go.mod h1:xsKM0aN3YGcQKTPRPDDtPx2l4mlTN1Djmg0VVXV40b8= +github.com/smartcontractkit/chain-selectors v1.0.89 h1:L9oWZGqQXWyTPnC6ODXgu3b0DFyLmJ9eHv+uJrE9IZY= +github.com/smartcontractkit/chain-selectors v1.0.89/go.mod h1:qy7whtgG5g+7z0jt0nRyii9bLND9m15NZTzuQPkMZ5w= github.com/smartcontractkit/chainlink-aptos v0.0.0-20251024142440-51f2ad2652a2 h1:vGdeMwHO3ow88HvxfhA4DDPYNY0X9jmdux7L83UF/W8= github.com/smartcontractkit/chainlink-aptos v0.0.0-20251024142440-51f2ad2652a2/go.mod h1:iteU0WORHkArACVh/HoY/1bipV4TcNcJdTmom9uIT0E= github.com/smartcontractkit/chainlink-ccip v0.1.1-solana.0.20260116110203-68d767f52164 h1:8fCj0kcqex97+GkMqJ3ssgn3RarPsIqaiHVmOQR0Bko= @@ -1083,8 +1099,8 @@ github.com/smartcontractkit/chainlink-common v0.9.6-0.20260114190811-74301cd99dc github.com/smartcontractkit/chainlink-common v0.9.6-0.20260114190811-74301cd99dc3/go.mod h1:DAwaVSiQMgAsCjHa8nOnIAM9GixuIQWsgEZFGpf3JxE= github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.10 h1:FJAFgXS9oqASnkS03RE1HQwYQQxrO4l46O5JSzxqLgg= github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.10/go.mod h1:oiDa54M0FwxevWwyAX773lwdWvFYYlYHHQV1LQ5HpWY= -github.com/smartcontractkit/chainlink-deployments-framework v0.74.2 h1:OP4TAlIz8gz0iokYCBleQlpSoxXUBhqUPyV8Xfr34ek= -github.com/smartcontractkit/chainlink-deployments-framework v0.74.2/go.mod h1:YHsMLM5bS9rhvXssmsJtvhmF4tDAm/kdmQi+ws/PLEw= +github.com/smartcontractkit/chainlink-deployments-framework v0.75.2-0.20260119185452-46c713898510 h1:/7lFtiMmbfUWdrrXV8+G2DoVE7G/nLRAA5SnFg+MCVE= +github.com/smartcontractkit/chainlink-deployments-framework v0.75.2-0.20260119185452-46c713898510/go.mod h1:BOV5qWlDzGztM1t03vq2do007IRNNJfTn6728pNnEiw= github.com/smartcontractkit/chainlink-evm/gethwrappers v0.0.0-20251222115927-36a18321243c h1:eX7SCn5AGUGduv5OrjbVJkUSOnyeal0BtVem6zBSB2Y= github.com/smartcontractkit/chainlink-evm/gethwrappers v0.0.0-20251222115927-36a18321243c/go.mod h1:oyfOm4k0uqmgZIfxk1elI/59B02shbbJQiiUdPdbMgI= github.com/smartcontractkit/chainlink-protos/chainlink-ccv/committee-verifier v0.0.0-20251211142334-5c3421fe2c8d h1:VYoBBNnQpZ5p+enPTl8SkKBRaubqyGpO0ul3B1np++I= @@ -1129,9 +1145,9 @@ github.com/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8 h1:+jumHNA0Wrel github.com/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8/go.mod h1:3n1Cwaq1E1/1lhQhtRK2ts/ZwZEhjcQeJQ1RuC6Q/8U= github.com/spf13/cast v1.10.0 h1:h2x0u2shc1QuLHfxi+cTJvs30+ZAHOGRic8uyGTDWxY= github.com/spf13/cast v1.10.0/go.mod h1:jNfB8QC9IA6ZuY2ZjDp0KtFO2LZZlg4S/7bzP6qqeHo= -github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM= -github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y= -github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +github.com/spf13/cobra v1.10.1 h1:lJeBwCfmrnXthfAupyUTzJ/J4Nc1RsHC/mSRU2dll/s= +github.com/spf13/cobra v1.10.1/go.mod h1:7SmJGaTHFVBY0jW4NXGluQoLvhqFQM+6XSKD+P4XaB0= +github.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk= github.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spkg/bom v0.0.0-20160624110644-59b7046e48ad/go.mod h1:qLr4V1qq6nMqFKkMo8ZTx3f+BZEkzsRUY10Xsm2mwU0= @@ -1213,6 +1229,12 @@ github.com/wk8/go-ordered-map/v2 v2.1.8/go.mod h1:5nJHM5DyteebpVlHnWMV0rPz6Zp7+x github.com/wlynxg/anet v0.0.3/go.mod h1:eay5PRQr7fIVAMbTbchTnO9gG65Hg/uYGdc7mguHxoA= github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM= github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg= +github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb h1:zGWFAtiMcyryUHoUjUJX0/lt1H2+i2Ka2n+D3DImSNo= +github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= +github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 h1:EzJWgHovont7NscjpAxXsDA8S8BMYve8Y5+7cuRE7R0= +github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= +github.com/xeipuuv/gojsonschema v1.2.0 h1:LhYJRs+L4fBtjZUfuSZIKGeVu0QRy8e5Xi7D17UxZ74= +github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= github.com/xhit/go-str2duration/v2 v2.1.0/go.mod h1:ohY8p+0f07DiV6Em5LKB0s2YpLtXVyJfNt1+BlmyAsU= github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1 h1:gEOO8jv9F4OT7lGCjxCBTO/36wtF6j2nSip77qHd4x4= github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1/go.mod h1:Ohn+xnUBiLI6FVj/9LpzZWtj1/D6lUovWYBkxHVV3aM= @@ -1604,10 +1626,10 @@ google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98 google.golang.org/genproto v0.0.0-20200324203455-a04cca1dde73/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= google.golang.org/genproto v0.0.0-20210401141331-865547bb08e2/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= -google.golang.org/genproto/googleapis/api v0.0.0-20251022142026-3a174f9686a8 h1:mepRgnBZa07I4TRuomDE4sTIYieg/osKmzIf4USdWS4= -google.golang.org/genproto/googleapis/api v0.0.0-20251022142026-3a174f9686a8/go.mod h1:fDMmzKV90WSg1NbozdqrE64fkuTv6mlq2zxo9ad+3yo= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8 h1:M1rk8KBnUsBDg1oPGHNCxG4vc1f49epmTO7xscSajMk= -google.golang.org/genproto/googleapis/rpc v0.0.0-20251022142026-3a174f9686a8/go.mod h1:7i2o+ce6H/6BluujYR+kqX3GKH+dChPTQU19wjRPiGk= +google.golang.org/genproto/googleapis/api v0.0.0-20251029180050-ab9386a59fda h1:+2XxjfsAu6vqFxwGBRcHiMaDCuZiqXGDUDVWVtrFAnE= +google.golang.org/genproto/googleapis/api v0.0.0-20251029180050-ab9386a59fda/go.mod h1:fDMmzKV90WSg1NbozdqrE64fkuTv6mlq2zxo9ad+3yo= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260114163908-3f89685c29c3 h1:C4WAdL+FbjnGlpp2S+HMVhBeCq2Lcib4xZqfPNF6OoQ= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260114163908-3f89685c29c3/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= google.golang.org/grpc v1.12.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= @@ -1615,8 +1637,8 @@ google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQ google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.28.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.77.0 h1:wVVY6/8cGA6vvffn+wWK5ToddbgdU3d8MNENr4evgXM= -google.golang.org/grpc v1.77.0/go.mod h1:z0BY1iVj0q8E1uSQCjL9cppRj+gnZjzDnzV0dHhrNig= +google.golang.org/grpc v1.78.0 h1:K1XZG/yGDJnzMdd/uZHAkVqJE+xIDOcmdSFZkBUicNc= +google.golang.org/grpc v1.78.0/go.mod h1:I47qjTo4OKbMkjA/aOOwxDIiPSBofUtQUI5EfpWvW7U= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= From d5735c93db1861cbe5af38dcc27fcdda65a59b33 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Friedemann=20F=C3=BCrst?= <59653747+friedemannf@users.noreply.github.com> Date: Thu, 22 Jan 2026 17:24:38 +0100 Subject: [PATCH 2/4] Upgrade CLDF --- build/devenv/go.mod | 24 ++++++++++++------------ build/devenv/go.sum | 14 ++++++++++++++ 2 files changed, 26 insertions(+), 12 deletions(-) diff --git a/build/devenv/go.mod b/build/devenv/go.mod index a1a88bf8c..8c7435544 100644 --- a/build/devenv/go.mod +++ b/build/devenv/go.mod @@ -24,7 +24,7 @@ require ( github.com/smartcontractkit/chainlink-ccip/chains/evm/deployment v0.0.0-20260116110203-68d767f52164 github.com/smartcontractkit/chainlink-ccip/deployment v0.0.0-20260116110203-68d767f52164 github.com/smartcontractkit/chainlink-common v0.9.6-0.20260114190811-74301cd99dc3 - github.com/smartcontractkit/chainlink-deployments-framework v0.75.2-0.20260119185452-46c713898510 + github.com/smartcontractkit/chainlink-deployments-framework v0.76.0 github.com/smartcontractkit/chainlink-testing-framework/framework v0.13.5 github.com/stretchr/testify v1.11.1 github.com/testcontainers/testcontainers-go v0.39.0 @@ -332,7 +332,7 @@ require ( github.com/rogpeppe/go-internal v1.14.1 // indirect github.com/rs/cors v1.11.1 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect - github.com/samber/lo v1.49.1 // indirect + github.com/samber/lo v1.52.0 // indirect github.com/santhosh-tekuri/jsonschema/v5 v5.3.1 // indirect github.com/scylladb/go-reflectx v1.0.1 // indirect github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529 // indirect @@ -344,7 +344,7 @@ require ( github.com/sigurn/crc16 v0.0.0-20211026045750-20ab5afb07e3 // indirect github.com/sirupsen/logrus v1.9.3 // indirect github.com/smartcontractkit/chainlink-aptos v0.0.0-20251024142440-51f2ad2652a2 // indirect - github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250912190424-fd2e35d7deb5 // indirect + github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20260119161343-499241536dea // indirect github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20250912190424-fd2e35d7deb5 // indirect github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.10 // indirect github.com/smartcontractkit/chainlink-protos/cre/go v0.0.0-20251124151448-0448aefdaab9 // indirect @@ -356,7 +356,7 @@ require ( github.com/smartcontractkit/freeport v0.1.3-0.20250716200817-cb5dfd0e369e // indirect github.com/smartcontractkit/grpc-proxy v0.0.0-20240830132753-a7e17fec5ab7 // indirect github.com/smartcontractkit/libocr v0.0.0-20250912173940-f3ab0246e23d // indirect - github.com/smartcontractkit/mcms v0.31.1 // indirect + github.com/smartcontractkit/mcms v0.34.0 // indirect github.com/sony/gobreaker/v2 v2.3.0 // indirect github.com/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8 // indirect github.com/spf13/cast v1.10.0 // indirect @@ -424,19 +424,19 @@ require ( go.uber.org/ratelimit v0.3.1 // indirect go4.org/netipx v0.0.0-20230125063823-8449b0a6169f // indirect golang.org/x/arch v0.21.0 // indirect - golang.org/x/crypto v0.46.0 // indirect + golang.org/x/crypto v0.47.0 // indirect golang.org/x/exp v0.0.0-20250711185948-6ae5c78190dc // indirect - golang.org/x/mod v0.30.0 // indirect - golang.org/x/net v0.47.0 // indirect + golang.org/x/mod v0.31.0 // indirect + golang.org/x/net v0.48.0 // indirect golang.org/x/oauth2 v0.32.0 // indirect golang.org/x/sync v0.19.0 // indirect - golang.org/x/sys v0.39.0 // indirect - golang.org/x/term v0.38.0 // indirect - golang.org/x/text v0.32.0 // indirect + golang.org/x/sys v0.40.0 // indirect + golang.org/x/term v0.39.0 // indirect + golang.org/x/text v0.33.0 // indirect golang.org/x/time v0.12.0 // indirect - golang.org/x/tools v0.39.0 // indirect + golang.org/x/tools v0.40.0 // indirect google.golang.org/api v0.221.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20251029180050-ab9386a59fda // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20260114163908-3f89685c29c3 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260114163908-3f89685c29c3 // indirect google.golang.org/protobuf v1.36.11 // indirect gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect diff --git a/build/devenv/go.sum b/build/devenv/go.sum index 4de19c9c5..d5223a5e6 100644 --- a/build/devenv/go.sum +++ b/build/devenv/go.sum @@ -1044,6 +1044,7 @@ github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQD github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/samber/lo v1.49.1 h1:4BIFyVfuQSEpluc7Fua+j1NolZHiEHEpaSEKdsH0tew= github.com/samber/lo v1.49.1/go.mod h1:dO6KHFzUKXgP8LDhU0oI8d2hekjXnGOu0DB8Jecxd6o= +github.com/samber/lo v1.52.0/go.mod h1:4+MXEGsJzbKGaUEQFKBq2xtfuznW9oz/WrgyzMzRoM0= github.com/santhosh-tekuri/jsonschema/v5 v5.3.1 h1:lZUw3E0/J3roVtGQ+SCrUrg3ON6NgVqpn3+iol9aGu4= github.com/santhosh-tekuri/jsonschema/v5 v5.3.1/go.mod h1:uToXkOrWAZ6/Oc07xWQrPOhJotwFIyu2bBVN41fcDUY= github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= @@ -1088,6 +1089,7 @@ github.com/smartcontractkit/chainlink-ccip/chains/evm/deployment v0.0.0-20260116 github.com/smartcontractkit/chainlink-ccip/chains/evm/deployment v0.0.0-20260116110203-68d767f52164/go.mod h1:EG6LSIKFNMwm/une79cbXT3cqZ8+MoOLiXMxtGbRxoY= github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250912190424-fd2e35d7deb5 h1:f8ak6g6P2KT4HjUbleU+Bh0gUJXMoGuoriMSyGxxD4M= github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250912190424-fd2e35d7deb5/go.mod h1:Ve1xD71bl193YIZQEoJMmBqLGQJdNs29bwbuObwvbhQ= +github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20260119161343-499241536dea/go.mod h1:eCB6SVL+y9URXJgYtDgGMvHjSjbwRbo4oLSwShsusOo= github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20250912190424-fd2e35d7deb5 h1:Z4t2ZY+ZyGWxtcXvPr11y4o3CGqhg3frJB5jXkCSvWA= github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20250912190424-fd2e35d7deb5/go.mod h1:xtZNi6pOKdC3sLvokDvXOhgHzT+cyBqH/gWwvxTxqrg= github.com/smartcontractkit/chainlink-ccip/deployment v0.0.0-20260116110203-68d767f52164 h1:qblToFkLBQEC6vbrPhZP3ZkdtFPiuYg+/YK2X/SC10k= @@ -1098,6 +1100,8 @@ github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.10 h1:FJAFgXS9 github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.10/go.mod h1:oiDa54M0FwxevWwyAX773lwdWvFYYlYHHQV1LQ5HpWY= github.com/smartcontractkit/chainlink-deployments-framework v0.75.2-0.20260119185452-46c713898510 h1:/7lFtiMmbfUWdrrXV8+G2DoVE7G/nLRAA5SnFg+MCVE= github.com/smartcontractkit/chainlink-deployments-framework v0.75.2-0.20260119185452-46c713898510/go.mod h1:BOV5qWlDzGztM1t03vq2do007IRNNJfTn6728pNnEiw= +github.com/smartcontractkit/chainlink-deployments-framework v0.76.0 h1:MmC0yZUR7bn8uOyBmy7m3Z7ebanc/+o8lqIRcQKVsyM= +github.com/smartcontractkit/chainlink-deployments-framework v0.76.0/go.mod h1:k1L8KorYEh2pPnZcmI9kk6gH44YECp9WJvFKm5OdkrU= github.com/smartcontractkit/chainlink-evm/gethwrappers v0.0.0-20251222115927-36a18321243c h1:eX7SCn5AGUGduv5OrjbVJkUSOnyeal0BtVem6zBSB2Y= github.com/smartcontractkit/chainlink-evm/gethwrappers v0.0.0-20251222115927-36a18321243c/go.mod h1:oyfOm4k0uqmgZIfxk1elI/59B02shbbJQiiUdPdbMgI= github.com/smartcontractkit/chainlink-protos/chainlink-ccv/committee-verifier v0.0.0-20251211142334-5c3421fe2c8d h1:VYoBBNnQpZ5p+enPTl8SkKBRaubqyGpO0ul3B1np++I= @@ -1138,6 +1142,8 @@ github.com/smartcontractkit/libocr v0.0.0-20250912173940-f3ab0246e23d h1:LokA9Po github.com/smartcontractkit/libocr v0.0.0-20250912173940-f3ab0246e23d/go.mod h1:Acy3BTBxou83ooMESLO90s8PKSu7RvLCzwSTbxxfOK0= github.com/smartcontractkit/mcms v0.31.1 h1:sUIJG9pTMTpQ9WkLGSuPAIjq7z0b1KQ5rnL9KxaonXE= github.com/smartcontractkit/mcms v0.31.1/go.mod h1:s/FrY+wVrmK7IfrSq8VPLGqqplX9Nv6Qek47ubz2+n8= +github.com/smartcontractkit/mcms v0.34.0 h1:3RQtoSuoeAWnGXculRHsGkUhylYW1cHZdsQFccRs4Z0= +github.com/smartcontractkit/mcms v0.34.0/go.mod h1:CCQEpYC/QIsNZ5lp+KgxjtWUIA17cmxtaRZs5QH1Z6Y= github.com/sony/gobreaker/v2 v2.3.0 h1:7VYxZ69QXRQ2Q4eEawHn6eU4FiuwovzJwsUMA03Lu4I= github.com/sony/gobreaker/v2 v2.3.0/go.mod h1:pTyFJgcZ3h2tdQVLZZruK2C0eoFL1fb/G83wK1ZQl+s= github.com/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8 h1:+jumHNA0Wrelhe64i8F6HNlS8pkoyMv5sreGx2Ry5Rw= @@ -1393,6 +1399,7 @@ golang.org/x/crypto v0.24.0/go.mod h1:Z1PMYSOR5nyMcyAVAIQSKCDwalqy85Aqn1x3Ws4L5D golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/crypto v0.46.0 h1:cKRW/pmt1pKAfetfu+RCEvjvZkA9RimPbh7bhFjGVBU= golang.org/x/crypto v0.46.0/go.mod h1:Evb/oLKmMraqjZ2iQTwDwvCtJkczlDuTmdJXoZVzqU0= +golang.org/x/crypto v0.47.0/go.mod h1:ff3Y9VzzKbwSSEzWqJsJVBnWmRwRSHt/6Op5n9bQc4A= golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20250711185948-6ae5c78190dc h1:TS73t7x3KarrNd5qAipmspBDS1rkMcgVG/fS1aRb4Rc= @@ -1414,6 +1421,7 @@ golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/mod v0.30.0 h1:fDEXFVZ/fmCKProc/yAXXUijritrDzahmwwefnjoPFk= golang.org/x/mod v0.30.0/go.mod h1:lAsf5O2EvJeSFMiBxXDki7sCgAxEUcZHXoXMKT4GJKc= +golang.org/x/mod v0.31.0/go.mod h1:43JraMp9cGx1Rx3AqioxrbrhNsLl2l/iNAvuBkrezpg= golang.org/x/net v0.0.0-20180719180050-a680a1efc54d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -1451,6 +1459,7 @@ golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE= golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4= golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY= golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU= +golang.org/x/net v0.48.0/go.mod h1:+ndRgGjkh8FGtu1w1FGbEC31if4VrNVMuKTgcAAnQRY= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.21.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= golang.org/x/oauth2 v0.24.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= @@ -1539,6 +1548,7 @@ golang.org/x/sys v0.22.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.39.0 h1:CvCKL8MeisomCi6qNZ+wbb0DN9E5AATixKsvNtMoMFk= golang.org/x/sys v0.39.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.40.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE= golang.org/x/telemetry v0.0.0-20251111182119-bc8e575c7b54 h1:E2/AqCUMZGgd73TQkxUMcMla25GB9i/5HOdLr+uH7Vo= golang.org/x/telemetry v0.0.0-20251111182119-bc8e575c7b54/go.mod h1:hKdjCMrbv9skySur+Nek8Hd0uJ0GuxJIoIX2payrIdQ= @@ -1557,6 +1567,7 @@ golang.org/x/term v0.21.0/go.mod h1:ooXLefLobQVslOqselCNF4SxFAaoS6KujMbsGzSDmX0= golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= golang.org/x/term v0.38.0 h1:PQ5pkm/rLO6HnxFR7N2lJHOZX6Kez5Y1gDSJla6jo7Q= golang.org/x/term v0.38.0/go.mod h1:bSEAKrOT1W+VSu9TSCMtoGEOUcKxOKgl3LE5QEF/xVg= +golang.org/x/term v0.39.0/go.mod h1:yxzUCTP/U+FzoxfdKmLaA0RV1WgE0VY7hXBwKtY/4ww= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= @@ -1574,6 +1585,7 @@ golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/text v0.32.0 h1:ZD01bjUt1FQ9WJ0ClOL5vxgxOI/sVCNgX1YtKwcY0mU= golang.org/x/text v0.32.0/go.mod h1:o/rUWzghvpD5TXrTIBuJU77MTaN0ljMWE47kxGJQ7jY= +golang.org/x/text v0.33.0/go.mod h1:LuMebE6+rBincTi9+xWTY8TztLzKHc/9C1uBCG27+q8= golang.org/x/time v0.12.0 h1:ScB/8o8olJvc+CQPWrK3fPZNfh7qgwCrY0zJmoEQLSE= golang.org/x/time v0.12.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -1602,6 +1614,7 @@ golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58 golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= golang.org/x/tools v0.39.0 h1:ik4ho21kwuQln40uelmciQPp9SipgNDdrafrYA4TmQQ= golang.org/x/tools v0.39.0/go.mod h1:JnefbkDPyD8UU2kI5fuf8ZX4/yUeh9W877ZeBONxUqQ= +golang.org/x/tools v0.40.0/go.mod h1:Ik/tzLRlbscWpqqMRjyWYDisX8bG13FrdXp3o4Sr9lc= golang.org/x/xerrors v0.0.0-20190410155217-1f06c39b4373/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20190513163551-3ee3066db522/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -1627,6 +1640,7 @@ google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEY google.golang.org/genproto v0.0.0-20210401141331-865547bb08e2/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= google.golang.org/genproto/googleapis/api v0.0.0-20251029180050-ab9386a59fda h1:+2XxjfsAu6vqFxwGBRcHiMaDCuZiqXGDUDVWVtrFAnE= google.golang.org/genproto/googleapis/api v0.0.0-20251029180050-ab9386a59fda/go.mod h1:fDMmzKV90WSg1NbozdqrE64fkuTv6mlq2zxo9ad+3yo= +google.golang.org/genproto/googleapis/api v0.0.0-20260114163908-3f89685c29c3/go.mod h1:dd646eSK+Dk9kxVBl1nChEOhJPtMXriCcVb4x3o6J+E= google.golang.org/genproto/googleapis/rpc v0.0.0-20260114163908-3f89685c29c3 h1:C4WAdL+FbjnGlpp2S+HMVhBeCq2Lcib4xZqfPNF6OoQ= google.golang.org/genproto/googleapis/rpc v0.0.0-20260114163908-3f89685c29c3/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= google.golang.org/grpc v1.12.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= From da74bccf75a1c161e8a4338d01f583047be8d874 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Friedemann=20F=C3=BCrst?= <59653747+friedemannf@users.noreply.github.com> Date: Thu, 22 Jan 2026 17:42:45 +0100 Subject: [PATCH 3/4] Update Canton implementation --- build/devenv/canton/canton.go | 10 ++++---- build/devenv/go.mod | 3 +++ build/devenv/go.sum | 44 +++++++++++++---------------------- 3 files changed, 24 insertions(+), 33 deletions(-) diff --git a/build/devenv/canton/canton.go b/build/devenv/canton/canton.go index c35c85ce2..35bb9284c 100644 --- a/build/devenv/canton/canton.go +++ b/build/devenv/canton/canton.go @@ -16,8 +16,8 @@ import ( "github.com/noders-team/go-daml/pkg/client" - "github.com/smartcontractkit/chainlink-canton-internal/bindings/compile" "github.com/smartcontractkit/chainlink-canton-internal/contracts" + "github.com/smartcontractkit/chainlink-ccv/deployments" "github.com/smartcontractkit/chainlink-ccv/devenv/cciptestinterfaces" "github.com/smartcontractkit/chainlink-ccv/protocol" "github.com/smartcontractkit/chainlink-deployments-framework/chain/canton" @@ -124,7 +124,7 @@ func (c CCIP17Canton) ChainFamily() string { return chainsel.FamilyCanton } -func (c CCIP17Canton) DeployContractsForSelector(ctx context.Context, env *deployment.Environment, selector uint64, committees []cciptestinterfaces.OnChainCommittees) (datastore.DataStore, error) { +func (c CCIP17Canton) DeployContractsForSelector(ctx context.Context, env *deployment.Environment, selector uint64, topology *deployments.EnvironmentTopology) (datastore.DataStore, error) { l := c.logger l.Info().Msg("Configuring contracts for selector") l.Info().Any("Selector", selector).Msg("Deploying for chain selector") @@ -147,11 +147,11 @@ func (c CCIP17Canton) DeployContractsForSelector(ctx context.Context, env *deplo // Deploy contracts // Using the Coin dar file as an example - coinDar, err := compile.Package(contracts.Coin) + coinDar, err := contracts.GetDar(contracts.Coin, contracts.CurrentVersion) if err != nil { return nil, fmt.Errorf("failed to compile Coin contract: %w", err) } - err = c1.PackageMng.UploadDarFile(ctx, coinDar.Dar, uuid.New().String()) + err = c1.PackageMng.UploadDarFile(ctx, coinDar, uuid.New().String()) if err != nil { return nil, fmt.Errorf("failed to upload Dar file: %w", err) } @@ -162,7 +162,7 @@ func (c CCIP17Canton) DeployContractsForSelector(ctx context.Context, env *deplo return runningDs.Seal(), nil } -func (c CCIP17Canton) ConnectContractsWithSelectors(ctx context.Context, e *deployment.Environment, selector uint64, remoteSelectors []uint64, committees []cciptestinterfaces.OnChainCommittees) error { +func (c CCIP17Canton) ConnectContractsWithSelectors(ctx context.Context, e *deployment.Environment, selector uint64, remoteSelectors []uint64, topology *deployments.EnvironmentTopology) error { // TODO implement me panic("implement me") } diff --git a/build/devenv/go.mod b/build/devenv/go.mod index 8c7435544..914539659 100644 --- a/build/devenv/go.mod +++ b/build/devenv/go.mod @@ -8,6 +8,8 @@ replace github.com/smartcontractkit/chainlink-ccv/deployments => ../../deploymen replace github.com/smartcontractkit/chainlink-canton-internal => ../../../chainlink-canton-internal +replace github.com/digital-asset/dazl-client/v8 => github.com/noders-team/dazl-client/v8 v8.7.1-2 + require ( github.com/BurntSushi/toml v1.5.0 github.com/Masterminds/semver/v3 v3.4.0 @@ -62,6 +64,7 @@ require ( github.com/oapi-codegen/runtime v1.1.2 // indirect github.com/smartcontractkit/chainlink-protos/chainlink-ccv/heartbeat v0.0.0-20260115142640-f6b99095c12e // indirect github.com/smartcontractkit/chainlink-protos/linking-service/go v0.0.0-20251002192024-d2ad9222409b // indirect + github.com/smartcontractkit/chainlink-ton v0.0.0-20260115170733-b16e9683d4d5 // indirect github.com/spf13/pflag v1.0.10 // indirect ) diff --git a/build/devenv/go.sum b/build/devenv/go.sum index d5223a5e6..da1fc5af2 100644 --- a/build/devenv/go.sum +++ b/build/devenv/go.sum @@ -298,8 +298,6 @@ github.com/dennwc/varint v1.0.0 h1:kGNFFSSw8ToIy3obO/kKr8U9GZYUAxQEVuix4zfDWzE= github.com/dennwc/varint v1.0.0/go.mod h1:hnItb35rvZvJrbTALZtY/iQfDs48JKRG1RPpgziApxA= github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78= github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc= -github.com/digital-asset/dazl-client/v8 v8.7.1 h1:W/U9xRoreGOq9kfcgwLkcHphp/dPxQrPBldsoBqtt9U= -github.com/digital-asset/dazl-client/v8 v8.7.1/go.mod h1:q1KevCJ8FpH8je2MnnjN8/QUfhstB4fKpyKyqDtqFh0= github.com/digitalocean/godo v1.132.0 h1:n0x6+ZkwbyQBtIU1wwBhv26EINqHg0wWQiBXlwYg/HQ= github.com/digitalocean/godo v1.132.0/go.mod h1:PU8JB6I1XYkQIdHFop8lLAY9ojp6M0XcU0TWaQSxbrc= github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk= @@ -885,6 +883,8 @@ github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+ github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/ncruces/go-strftime v0.1.9 h1:bY0MQC28UADQmHmaF5dgpLmImcShSi2kHU9XLdhx/f4= github.com/ncruces/go-strftime v0.1.9/go.mod h1:Fwc5htZGVVkseilnfgOVb9mKy6w1naJmn9CehxcKcls= +github.com/noders-team/dazl-client/v8 v8.7.1-2 h1:a8PXw76lE6ozb/MVW/Akw56qXrPM6xUnpz/rT2MXzTA= +github.com/noders-team/dazl-client/v8 v8.7.1-2/go.mod h1:q1KevCJ8FpH8je2MnnjN8/QUfhstB4fKpyKyqDtqFh0= github.com/noders-team/go-daml v0.5.0 h1:SkSPrvaApQMIDMUx4mwFHuIFBd8ZygHfta1rN6p1ZOc= github.com/noders-team/go-daml v0.5.0/go.mod h1:yi458NGE4dlDOhlyCZvQ2XgsIOdHHvepwoHRgEusbo8= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= @@ -1042,8 +1042,7 @@ github.com/rs/zerolog v1.34.0/go.mod h1:bJsvje4Z08ROH4Nhs5iH600c3IkWhwp44iRc54W6 github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= -github.com/samber/lo v1.49.1 h1:4BIFyVfuQSEpluc7Fua+j1NolZHiEHEpaSEKdsH0tew= -github.com/samber/lo v1.49.1/go.mod h1:dO6KHFzUKXgP8LDhU0oI8d2hekjXnGOu0DB8Jecxd6o= +github.com/samber/lo v1.52.0 h1:Rvi+3BFHES3A8meP33VPAxiBZX/Aws5RxrschYGjomw= github.com/samber/lo v1.52.0/go.mod h1:4+MXEGsJzbKGaUEQFKBq2xtfuznW9oz/WrgyzMzRoM0= github.com/santhosh-tekuri/jsonschema/v5 v5.3.1 h1:lZUw3E0/J3roVtGQ+SCrUrg3ON6NgVqpn3+iol9aGu4= github.com/santhosh-tekuri/jsonschema/v5 v5.3.1/go.mod h1:uToXkOrWAZ6/Oc07xWQrPOhJotwFIyu2bBVN41fcDUY= @@ -1087,8 +1086,7 @@ github.com/smartcontractkit/chainlink-ccip/ccv/chains/evm/deployment v0.0.0-2026 github.com/smartcontractkit/chainlink-ccip/ccv/chains/evm/deployment v0.0.0-20260116110203-68d767f52164/go.mod h1:AI1ghAIdVEgXDAsNrJFsiQryJoLiGdomEIxgtK+wBYQ= github.com/smartcontractkit/chainlink-ccip/chains/evm/deployment v0.0.0-20260116110203-68d767f52164 h1:hlu7eHlueFr0CvKyDUGIDgx5QYTrvPK/sEg+3PLM9NQ= github.com/smartcontractkit/chainlink-ccip/chains/evm/deployment v0.0.0-20260116110203-68d767f52164/go.mod h1:EG6LSIKFNMwm/une79cbXT3cqZ8+MoOLiXMxtGbRxoY= -github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250912190424-fd2e35d7deb5 h1:f8ak6g6P2KT4HjUbleU+Bh0gUJXMoGuoriMSyGxxD4M= -github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250912190424-fd2e35d7deb5/go.mod h1:Ve1xD71bl193YIZQEoJMmBqLGQJdNs29bwbuObwvbhQ= +github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20260119161343-499241536dea h1:JiqVOu+cokXY5HbMEGn95sHgu2oTwm6ANRwiI0nZeyQ= github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20260119161343-499241536dea/go.mod h1:eCB6SVL+y9URXJgYtDgGMvHjSjbwRbo4oLSwShsusOo= github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20250912190424-fd2e35d7deb5 h1:Z4t2ZY+ZyGWxtcXvPr11y4o3CGqhg3frJB5jXkCSvWA= github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20250912190424-fd2e35d7deb5/go.mod h1:xtZNi6pOKdC3sLvokDvXOhgHzT+cyBqH/gWwvxTxqrg= @@ -1098,8 +1096,6 @@ github.com/smartcontractkit/chainlink-common v0.9.6-0.20260114190811-74301cd99dc github.com/smartcontractkit/chainlink-common v0.9.6-0.20260114190811-74301cd99dc3/go.mod h1:DAwaVSiQMgAsCjHa8nOnIAM9GixuIQWsgEZFGpf3JxE= github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.10 h1:FJAFgXS9oqASnkS03RE1HQwYQQxrO4l46O5JSzxqLgg= github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.10/go.mod h1:oiDa54M0FwxevWwyAX773lwdWvFYYlYHHQV1LQ5HpWY= -github.com/smartcontractkit/chainlink-deployments-framework v0.75.2-0.20260119185452-46c713898510 h1:/7lFtiMmbfUWdrrXV8+G2DoVE7G/nLRAA5SnFg+MCVE= -github.com/smartcontractkit/chainlink-deployments-framework v0.75.2-0.20260119185452-46c713898510/go.mod h1:BOV5qWlDzGztM1t03vq2do007IRNNJfTn6728pNnEiw= github.com/smartcontractkit/chainlink-deployments-framework v0.76.0 h1:MmC0yZUR7bn8uOyBmy7m3Z7ebanc/+o8lqIRcQKVsyM= github.com/smartcontractkit/chainlink-deployments-framework v0.76.0/go.mod h1:k1L8KorYEh2pPnZcmI9kk6gH44YECp9WJvFKm5OdkrU= github.com/smartcontractkit/chainlink-evm/gethwrappers v0.0.0-20251222115927-36a18321243c h1:eX7SCn5AGUGduv5OrjbVJkUSOnyeal0BtVem6zBSB2Y= @@ -1130,6 +1126,8 @@ github.com/smartcontractkit/chainlink-testing-framework/seth v1.51.2 h1:ZJ/8Jx6B github.com/smartcontractkit/chainlink-testing-framework/seth v1.51.2/go.mod h1:kHYJnZUqiPF7/xN5273prV+srrLJkS77GbBXHLKQpx0= github.com/smartcontractkit/chainlink-testing-framework/wasp v1.51.1 h1:azdJaWIyZJlHFEQQExHklfGfb30zzAx3WsxaCaMm4IM= github.com/smartcontractkit/chainlink-testing-framework/wasp v1.51.1/go.mod h1:vB5W8mngbHvDFlpujHY8jIotHr0a8J/8TIsexP/yANo= +github.com/smartcontractkit/chainlink-ton v0.0.0-20260115170733-b16e9683d4d5 h1:qoXtC2Ypwt/4BYYCsjs58hnzL+38Mp5N7WYmN0cvMkM= +github.com/smartcontractkit/chainlink-ton v0.0.0-20260115170733-b16e9683d4d5/go.mod h1:8Nbyr/8SUFNH9wmTlT4FNd80XzlO3RN5r2DQReeXg7k= github.com/smartcontractkit/chainlink-tron/relayer v0.0.11-0.20250908203554-5bd9d2fe9513 h1:XRNxgcNqagXu6e4smJuS1crRK5cUAcCVd7u+iLduHDM= github.com/smartcontractkit/chainlink-tron/relayer v0.0.11-0.20250908203554-5bd9d2fe9513/go.mod h1:ccjEgNeqOO+bjPddnL4lUrNLzyCvGCxgBjJdhFX3wa8= github.com/smartcontractkit/chainlink-tron/relayer/gotron-sdk v0.0.5-0.20250528121202-292529af39df h1:36e3ROIZyV/qE8SvFOACXtXfMOMd9vG4+zY2v2ScXkI= @@ -1140,8 +1138,6 @@ github.com/smartcontractkit/grpc-proxy v0.0.0-20240830132753-a7e17fec5ab7 h1:12i github.com/smartcontractkit/grpc-proxy v0.0.0-20240830132753-a7e17fec5ab7/go.mod h1:FX7/bVdoep147QQhsOPkYsPEXhGZjeYx6lBSaSXtZOA= github.com/smartcontractkit/libocr v0.0.0-20250912173940-f3ab0246e23d h1:LokA9PoCNb8mm8mDT52c3RECPMRsGz1eCQORq+J3n74= github.com/smartcontractkit/libocr v0.0.0-20250912173940-f3ab0246e23d/go.mod h1:Acy3BTBxou83ooMESLO90s8PKSu7RvLCzwSTbxxfOK0= -github.com/smartcontractkit/mcms v0.31.1 h1:sUIJG9pTMTpQ9WkLGSuPAIjq7z0b1KQ5rnL9KxaonXE= -github.com/smartcontractkit/mcms v0.31.1/go.mod h1:s/FrY+wVrmK7IfrSq8VPLGqqplX9Nv6Qek47ubz2+n8= github.com/smartcontractkit/mcms v0.34.0 h1:3RQtoSuoeAWnGXculRHsGkUhylYW1cHZdsQFccRs4Z0= github.com/smartcontractkit/mcms v0.34.0/go.mod h1:CCQEpYC/QIsNZ5lp+KgxjtWUIA17cmxtaRZs5QH1Z6Y= github.com/sony/gobreaker/v2 v2.3.0 h1:7VYxZ69QXRQ2Q4eEawHn6eU4FiuwovzJwsUMA03Lu4I= @@ -1397,8 +1393,7 @@ golang.org/x/crypto v0.20.0/go.mod h1:Xwo95rrVNIoSMx9wa1JroENMToLWn3RNVrTBpLHgZP golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= golang.org/x/crypto v0.24.0/go.mod h1:Z1PMYSOR5nyMcyAVAIQSKCDwalqy85Aqn1x3Ws4L5DM= golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= -golang.org/x/crypto v0.46.0 h1:cKRW/pmt1pKAfetfu+RCEvjvZkA9RimPbh7bhFjGVBU= -golang.org/x/crypto v0.46.0/go.mod h1:Evb/oLKmMraqjZ2iQTwDwvCtJkczlDuTmdJXoZVzqU0= +golang.org/x/crypto v0.47.0 h1:V6e3FRj+n4dbpw86FJ8Fv7XVOql7TEwpHapKoMJ/GO8= golang.org/x/crypto v0.47.0/go.mod h1:ff3Y9VzzKbwSSEzWqJsJVBnWmRwRSHt/6Op5n9bQc4A= golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -1419,8 +1414,7 @@ golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= -golang.org/x/mod v0.30.0 h1:fDEXFVZ/fmCKProc/yAXXUijritrDzahmwwefnjoPFk= -golang.org/x/mod v0.30.0/go.mod h1:lAsf5O2EvJeSFMiBxXDki7sCgAxEUcZHXoXMKT4GJKc= +golang.org/x/mod v0.31.0 h1:HaW9xtz0+kOcWKwli0ZXy79Ix+UW/vOfmWI5QVd2tgI= golang.org/x/mod v0.31.0/go.mod h1:43JraMp9cGx1Rx3AqioxrbrhNsLl2l/iNAvuBkrezpg= golang.org/x/net v0.0.0-20180719180050-a680a1efc54d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -1457,8 +1451,7 @@ golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE= golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4= -golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY= -golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU= +golang.org/x/net v0.48.0 h1:zyQRTTrjc33Lhh0fBgT/H3oZq9WuvRR5gPC70xpDiQU= golang.org/x/net v0.48.0/go.mod h1:+ndRgGjkh8FGtu1w1FGbEC31if4VrNVMuKTgcAAnQRY= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.21.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= @@ -1546,12 +1539,11 @@ golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.22.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.39.0 h1:CvCKL8MeisomCi6qNZ+wbb0DN9E5AATixKsvNtMoMFk= -golang.org/x/sys v0.39.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.40.0 h1:DBZZqJ2Rkml6QMQsZywtnjnnGvHza6BTfYFWY9kjEWQ= golang.org/x/sys v0.40.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE= -golang.org/x/telemetry v0.0.0-20251111182119-bc8e575c7b54 h1:E2/AqCUMZGgd73TQkxUMcMla25GB9i/5HOdLr+uH7Vo= -golang.org/x/telemetry v0.0.0-20251111182119-bc8e575c7b54/go.mod h1:hKdjCMrbv9skySur+Nek8Hd0uJ0GuxJIoIX2payrIdQ= +golang.org/x/telemetry v0.0.0-20251208220230-2638a1023523 h1:H52Mhyrc44wBgLTGzq6+0cmuVuF3LURCSXsLMOqfFos= +golang.org/x/telemetry v0.0.0-20251208220230-2638a1023523/go.mod h1:ArQvPJS723nJQietgilmZA+shuB3CZxH1n2iXq9VSfs= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -1565,8 +1557,7 @@ golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= golang.org/x/term v0.21.0/go.mod h1:ooXLefLobQVslOqselCNF4SxFAaoS6KujMbsGzSDmX0= golang.org/x/term v0.27.0/go.mod h1:iMsnZpn0cago0GOrHO2+Y7u7JPn5AylBrcoWkElMTSM= -golang.org/x/term v0.38.0 h1:PQ5pkm/rLO6HnxFR7N2lJHOZX6Kez5Y1gDSJla6jo7Q= -golang.org/x/term v0.38.0/go.mod h1:bSEAKrOT1W+VSu9TSCMtoGEOUcKxOKgl3LE5QEF/xVg= +golang.org/x/term v0.39.0 h1:RclSuaJf32jOqZz74CkPA9qFuVTX7vhLlpfj/IGWlqY= golang.org/x/term v0.39.0/go.mod h1:yxzUCTP/U+FzoxfdKmLaA0RV1WgE0VY7hXBwKtY/4ww= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= @@ -1583,8 +1574,7 @@ golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= -golang.org/x/text v0.32.0 h1:ZD01bjUt1FQ9WJ0ClOL5vxgxOI/sVCNgX1YtKwcY0mU= -golang.org/x/text v0.32.0/go.mod h1:o/rUWzghvpD5TXrTIBuJU77MTaN0ljMWE47kxGJQ7jY= +golang.org/x/text v0.33.0 h1:B3njUFyqtHDUI5jMn1YIr5B0IE2U0qck04r6d4KPAxE= golang.org/x/text v0.33.0/go.mod h1:LuMebE6+rBincTi9+xWTY8TztLzKHc/9C1uBCG27+q8= golang.org/x/time v0.12.0 h1:ScB/8o8olJvc+CQPWrK3fPZNfh7qgwCrY0zJmoEQLSE= golang.org/x/time v0.12.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg= @@ -1612,8 +1602,7 @@ golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= -golang.org/x/tools v0.39.0 h1:ik4ho21kwuQln40uelmciQPp9SipgNDdrafrYA4TmQQ= -golang.org/x/tools v0.39.0/go.mod h1:JnefbkDPyD8UU2kI5fuf8ZX4/yUeh9W877ZeBONxUqQ= +golang.org/x/tools v0.40.0 h1:yLkxfA+Qnul4cs9QA3KnlFu0lVmd8JJfoq+E41uSutA= golang.org/x/tools v0.40.0/go.mod h1:Ik/tzLRlbscWpqqMRjyWYDisX8bG13FrdXp3o4Sr9lc= golang.org/x/xerrors v0.0.0-20190410155217-1f06c39b4373/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20190513163551-3ee3066db522/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -1638,8 +1627,7 @@ google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98 google.golang.org/genproto v0.0.0-20200324203455-a04cca1dde73/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= google.golang.org/genproto v0.0.0-20210401141331-865547bb08e2/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= -google.golang.org/genproto/googleapis/api v0.0.0-20251029180050-ab9386a59fda h1:+2XxjfsAu6vqFxwGBRcHiMaDCuZiqXGDUDVWVtrFAnE= -google.golang.org/genproto/googleapis/api v0.0.0-20251029180050-ab9386a59fda/go.mod h1:fDMmzKV90WSg1NbozdqrE64fkuTv6mlq2zxo9ad+3yo= +google.golang.org/genproto/googleapis/api v0.0.0-20260114163908-3f89685c29c3 h1:X9z6obt+cWRX8XjDVOn+SZWhWe5kZHm46TThU9j+jss= google.golang.org/genproto/googleapis/api v0.0.0-20260114163908-3f89685c29c3/go.mod h1:dd646eSK+Dk9kxVBl1nChEOhJPtMXriCcVb4x3o6J+E= google.golang.org/genproto/googleapis/rpc v0.0.0-20260114163908-3f89685c29c3 h1:C4WAdL+FbjnGlpp2S+HMVhBeCq2Lcib4xZqfPNF6OoQ= google.golang.org/genproto/googleapis/rpc v0.0.0-20260114163908-3f89685c29c3/go.mod h1:j9x/tPzZkyxcgEFkiKEEGxfvyumM01BEtsW8xzOahRQ= From 991d2bbfaba6ef74cdcb5e396c0167243f6b462c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Friedemann=20F=C3=BCrst?= <59653747+friedemannf@users.noreply.github.com> Date: Thu, 22 Jan 2026 21:09:27 +0100 Subject: [PATCH 4/4] Update Canton implementation --- build/devenv/canton/canton.go | 195 ---------------------------------- build/devenv/canton/impl.go | 56 +++++++++- build/devenv/go.mod | 1 - 3 files changed, 51 insertions(+), 201 deletions(-) delete mode 100644 build/devenv/canton/canton.go diff --git a/build/devenv/canton/canton.go b/build/devenv/canton/canton.go deleted file mode 100644 index 35bb9284c..000000000 --- a/build/devenv/canton/canton.go +++ /dev/null @@ -1,195 +0,0 @@ -package canton - -import ( - "context" - "fmt" - "math/big" - "os" - "sync/atomic" - "time" - - "github.com/google/uuid" - "github.com/prometheus/client_golang/prometheus" - "github.com/rs/zerolog" - "github.com/rs/zerolog/log" - chainsel "github.com/smartcontractkit/chain-selectors" - - "github.com/noders-team/go-daml/pkg/client" - - "github.com/smartcontractkit/chainlink-canton-internal/contracts" - "github.com/smartcontractkit/chainlink-ccv/deployments" - "github.com/smartcontractkit/chainlink-ccv/devenv/cciptestinterfaces" - "github.com/smartcontractkit/chainlink-ccv/protocol" - "github.com/smartcontractkit/chainlink-deployments-framework/chain/canton" - "github.com/smartcontractkit/chainlink-deployments-framework/datastore" - "github.com/smartcontractkit/chainlink-deployments-framework/deployment" - "github.com/smartcontractkit/chainlink-testing-framework/framework/components/blockchain" - "github.com/smartcontractkit/chainlink-testing-framework/framework/components/simple_node_set" -) - -type CCIP17Canton struct { - e *deployment.Environment - ds datastore.DataStore - chain canton.Chain - logger zerolog.Logger - chainDetails chainsel.ChainDetails -} - -func NewEmptyCCIP17Canton() *CCIP17Canton { - return &CCIP17Canton{ - logger: log. - Output(zerolog.ConsoleWriter{Out: os.Stderr}). - Level(zerolog.DebugLevel). - With(). - Fields(map[string]any{"component": "CCIP17Canton"}). - Logger(), - } -} - -func (c CCIP17Canton) Family() string { - return chainsel.FamilyCanton -} - -func (c CCIP17Canton) GetEOAReceiverAddress() (protocol.UnknownAddress, error) { - // TODO implement me - panic("implement me") -} - -func (c CCIP17Canton) GetSenderAddress() (protocol.UnknownAddress, error) { - // TODO implement me - panic("implement me") -} - -func (c CCIP17Canton) SendMessage(ctx context.Context, dest uint64, fields cciptestinterfaces.MessageFields, opts cciptestinterfaces.MessageOptions) (cciptestinterfaces.MessageSentEvent, error) { - // TODO implement me - panic("implement me") -} - -func (c CCIP17Canton) SendMessageWithNonce(ctx context.Context, dest uint64, fields cciptestinterfaces.MessageFields, opts cciptestinterfaces.MessageOptions, nonce *atomic.Uint64, disableTokenAmountCheck bool) (cciptestinterfaces.MessageSentEvent, error) { - // TODO implement me - panic("implement me") -} - -func (c CCIP17Canton) GetUserNonce(ctx context.Context) (uint64, error) { - // TODO implement me - panic("implement me") -} - -func (c CCIP17Canton) GetExpectedNextSequenceNumber(ctx context.Context, to uint64) (uint64, error) { - // TODO implement me - panic("implement me") -} - -func (c CCIP17Canton) WaitOneSentEventBySeqNo(ctx context.Context, to, seq uint64, timeout time.Duration) (cciptestinterfaces.MessageSentEvent, error) { - // TODO implement me - panic("implement me") -} - -func (c CCIP17Canton) WaitOneExecEventBySeqNo(ctx context.Context, from, seq uint64, timeout time.Duration) (cciptestinterfaces.ExecutionStateChangedEvent, error) { - // TODO implement me - panic("implement me") -} - -func (c CCIP17Canton) GetTokenBalance(ctx context.Context, address, tokenAddress protocol.UnknownAddress) (*big.Int, error) { - // TODO implement me - panic("implement me") -} - -func (c CCIP17Canton) GetMaxDataBytes(ctx context.Context, remoteChainSelector uint64) (uint32, error) { - // TODO implement me - panic("implement me") -} - -func (c CCIP17Canton) ManuallyExecuteMessage(ctx context.Context, message protocol.Message, gasLimit uint64, ccvs []protocol.UnknownAddress, verifierResults [][]byte) (cciptestinterfaces.ExecutionStateChangedEvent, error) { - // TODO implement me - panic("implement me") -} - -func (c CCIP17Canton) Curse(ctx context.Context, subjects [][16]byte) error { - // TODO implement me - panic("implement me") -} - -func (c CCIP17Canton) Uncurse(ctx context.Context, subjects [][16]byte) error { - // TODO implement me - panic("implement me") -} - -func (c CCIP17Canton) ExposeMetrics(ctx context.Context, source, dest uint64) ([]string, *prometheus.Registry, error) { - // TODO implement me - panic("implement me") -} - -func (c CCIP17Canton) ChainFamily() string { - return chainsel.FamilyCanton -} - -func (c CCIP17Canton) DeployContractsForSelector(ctx context.Context, env *deployment.Environment, selector uint64, topology *deployments.EnvironmentTopology) (datastore.DataStore, error) { - l := c.logger - l.Info().Msg("Configuring contracts for selector") - l.Info().Any("Selector", selector).Msg("Deploying for chain selector") - cc := env.BlockChains.CantonChains()[selector] - participant1 := cc.Participants[0] - jwToken, err := participant1.JWTProvider.Token(ctx) - if err != nil { - return nil, fmt.Errorf("failed to get JWT for participant 1: %w", err) - } - c1, err := client.NewDamlClient(jwToken, participant1.Endpoints.GRPCLedgerAPIURL). - WithAdminAddress(participant1.Endpoints.AdminAPIURL). - Build(ctx) - if err != nil { - return nil, fmt.Errorf("failed to create client for participant 1: %w", err) - } - defer c1.Close() - - runningDs := datastore.NewMemoryDataStore() - - // Deploy contracts - - // Using the Coin dar file as an example - coinDar, err := contracts.GetDar(contracts.Coin, contracts.CurrentVersion) - if err != nil { - return nil, fmt.Errorf("failed to compile Coin contract: %w", err) - } - err = c1.PackageMng.UploadDarFile(ctx, coinDar, uuid.New().String()) - if err != nil { - return nil, fmt.Errorf("failed to upload Dar file: %w", err) - } - l.Info().Msg("Uploaded Coin Dar file") - - // TODO Deploy contracts - - return runningDs.Seal(), nil -} - -func (c CCIP17Canton) ConnectContractsWithSelectors(ctx context.Context, e *deployment.Environment, selector uint64, remoteSelectors []uint64, topology *deployments.EnvironmentTopology) error { - // TODO implement me - panic("implement me") -} - -func (c CCIP17Canton) DeployLocalNetwork(ctx context.Context, bc *blockchain.Input) (*blockchain.Output, error) { - c.logger.Info().Msg("Deploying Canton Network") - out, err := blockchain.NewBlockchainNetwork(bc) - if err != nil { - return nil, fmt.Errorf("failed to deploy Canton Network: %w", err) - } - // TODO set ChainID properly - out.ChainID = bc.ChainID - - return out, nil -} - -func (c CCIP17Canton) ConfigureNodes(ctx context.Context, blockchain *blockchain.Input) (string, error) { - // TODO Return CL Node config for Canton if necessary - return "", nil -} - -func (c CCIP17Canton) FundNodes(ctx context.Context, cls []*simple_node_set.Input, bc *blockchain.Input, linkAmount, nativeAmount *big.Int) error { - // Not required for Canton - return nil -} - -func (c CCIP17Canton) FundAddresses(ctx context.Context, bc *blockchain.Input, addresses []protocol.UnknownAddress, nativeAmount *big.Int) error { - // TODO implement me - panic("implement me") -} diff --git a/build/devenv/canton/impl.go b/build/devenv/canton/impl.go index d90e9338b..f2bce6fc3 100644 --- a/build/devenv/canton/impl.go +++ b/build/devenv/canton/impl.go @@ -8,9 +8,13 @@ import ( "time" "github.com/ethereum/go-ethereum/accounts/abi/bind" + "github.com/google/uuid" + "github.com/noders-team/go-daml/pkg/client" "github.com/prometheus/client_golang/prometheus" "github.com/rs/zerolog" + chainsel "github.com/smartcontractkit/chain-selectors" + "github.com/smartcontractkit/chainlink-canton-internal/contracts" "github.com/smartcontractkit/chainlink-ccv/deployments" "github.com/smartcontractkit/chainlink-ccv/devenv/cciptestinterfaces" "github.com/smartcontractkit/chainlink-ccv/protocol" @@ -35,6 +39,53 @@ func New(logger zerolog.Logger) *Chain { } } +func (c *Chain) Family() string { + return chainsel.FamilyCanton +} + +func (c *Chain) ChainFamily() string { + return chainsel.FamilyCanton +} + +// DeployContractsForSelector implements cciptestinterfaces.CCIP17Configuration. +func (c *Chain) DeployContractsForSelector(ctx context.Context, env *deployment.Environment, selector uint64, committees *deployments.EnvironmentTopology) (datastore.DataStore, error) { + l := c.logger + l.Info().Msg("Configuring contracts for selector") + l.Info().Any("Selector", selector).Msg("Deploying for chain selector") + cc := env.BlockChains.CantonChains()[selector] + participant1 := cc.Participants[0] + jwToken, err := participant1.JWTProvider.Token(ctx) + if err != nil { + return nil, fmt.Errorf("failed to get JWT for participant 1: %w", err) + } + c1, err := client.NewDamlClient(jwToken, participant1.Endpoints.GRPCLedgerAPIURL). + WithAdminAddress(participant1.Endpoints.AdminAPIURL). + Build(ctx) + if err != nil { + return nil, fmt.Errorf("failed to create client for participant 1: %w", err) + } + defer c1.Close() + + runningDs := datastore.NewMemoryDataStore() + + // Deploy contracts + + // Using the Coin dar file as an example + coinDar, err := contracts.GetDar(contracts.Coin, contracts.CurrentVersion) + if err != nil { + return nil, fmt.Errorf("failed to compile Coin contract: %w", err) + } + err = c1.PackageMng.UploadDarFile(ctx, coinDar, uuid.New().String()) + if err != nil { + return nil, fmt.Errorf("failed to upload Dar file: %w", err) + } + l.Info().Msg("Uploaded Coin Dar file") + + // TODO Deploy contracts + + return runningDs.Seal(), nil +} + // ConfigureNodes implements cciptestinterfaces.CCIP17Configuration. func (c *Chain) ConfigureNodes(ctx context.Context, blockchain *blockchain.Input) (string, error) { return "", nil // TODO: implement @@ -45,11 +96,6 @@ func (c *Chain) ConnectContractsWithSelectors(ctx context.Context, e *deployment return nil // TODO: implement } -// DeployContractsForSelector implements cciptestinterfaces.CCIP17Configuration. -func (c *Chain) DeployContractsForSelector(ctx context.Context, env *deployment.Environment, selector uint64, committees *deployments.EnvironmentTopology) (datastore.DataStore, error) { - return datastore.NewMemoryDataStore().Seal(), nil // TODO: implement -} - // DeployLocalNetwork implements cciptestinterfaces.CCIP17Configuration. func (c *Chain) DeployLocalNetwork(ctx context.Context, bcs *blockchain.Input) (*blockchain.Output, error) { c.logger. diff --git a/build/devenv/go.mod b/build/devenv/go.mod index 8c2268d3f..f549219bd 100644 --- a/build/devenv/go.mod +++ b/build/devenv/go.mod @@ -59,7 +59,6 @@ require ( require ( github.com/ProjectZKM/Ziren/crates/go-runtime/zkvm_runtime v0.0.0-20251001021608-1fe7b43fc4d6 // indirect github.com/apapsch/go-jsonmerge/v2 v2.0.0 // indirect - github.com/digital-asset/dazl-client/v8 v8.7.1 // indirect github.com/evanphx/json-patch/v5 v5.9.11 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/oapi-codegen/runtime v1.1.2 // indirect