From 4aa1de20760aa8f3dbae31c468b684610dfc010d Mon Sep 17 00:00:00 2001 From: Dmytro Haidashenko Date: Fri, 12 Sep 2025 13:48:56 +0200 Subject: [PATCH 01/21] Custom OffchainConfig --- core/scripts/go.mod | 2 +- core/scripts/go.sum | 4 +- deployment/cre/ocr3/config.go | 99 +------ deployment/cre/ocr3/oracle_config.go | 243 ++++++++++++++++++ deployment/cre/ocr3/oracle_config_test.go | 47 ++++ .../cre/ocr3/v2/changeset/deploy_ocr3_test.go | 154 ++++++----- .../operations/contracts/deploy_ocr3.go | 14 +- .../v2/changeset/sequences/deploy_ocr3.go | 12 +- deployment/go.mod | 2 +- deployment/go.sum | 4 +- .../keystone/changeset/view_contracts.go | 22 +- deployment/keystone/changeset/view_test.go | 22 +- go.mod | 2 +- go.sum | 4 +- integration-tests/go.mod | 2 +- integration-tests/go.sum | 4 +- integration-tests/load/go.mod | 2 +- integration-tests/load/go.sum | 4 +- system-tests/lib/go.mod | 2 +- system-tests/lib/go.sum | 4 +- system-tests/tests/go.mod | 2 +- system-tests/tests/go.sum | 4 +- 22 files changed, 461 insertions(+), 194 deletions(-) create mode 100644 deployment/cre/ocr3/oracle_config.go create mode 100644 deployment/cre/ocr3/oracle_config_test.go diff --git a/core/scripts/go.mod b/core/scripts/go.mod index 4df87d065b2..925ac9c3569 100644 --- a/core/scripts/go.mod +++ b/core/scripts/go.mod @@ -47,7 +47,7 @@ require ( github.com/shopspring/decimal v1.4.0 github.com/smartcontractkit/chainlink-automation v0.8.1 github.com/smartcontractkit/chainlink-ccip v0.1.1-solana.0.20250825135846-84f0d5167f8f - github.com/smartcontractkit/chainlink-common v0.9.5-0.20250908133421-f9b356d61ca9 + github.com/smartcontractkit/chainlink-common v0.9.5-0.20250910160725-cdc5ae13efee github.com/smartcontractkit/chainlink-data-streams v0.1.2 github.com/smartcontractkit/chainlink-deployments-framework v0.44.0 github.com/smartcontractkit/chainlink-evm v0.3.4-0.20250909183314-c46f62fb74f6 diff --git a/core/scripts/go.sum b/core/scripts/go.sum index df279e1737e..74788880c01 100644 --- a/core/scripts/go.sum +++ b/core/scripts/go.sum @@ -1538,8 +1538,8 @@ github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250908144012-8 github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250908144012-8184001834b5/go.mod h1:Ve1xD71bl193YIZQEoJMmBqLGQJdNs29bwbuObwvbhQ= github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20250908144012-8184001834b5 h1:QhcYGEhRLInr1/qh/3RJiVdvJ0nxBHKhPe65WLbSBnU= github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20250908144012-8184001834b5/go.mod h1:xtZNi6pOKdC3sLvokDvXOhgHzT+cyBqH/gWwvxTxqrg= -github.com/smartcontractkit/chainlink-common v0.9.5-0.20250908133421-f9b356d61ca9 h1:ZWE1acA9mP9RlA+wcGm2Q2eF0CXSGcTUwyBVwHiiv24= -github.com/smartcontractkit/chainlink-common v0.9.5-0.20250908133421-f9b356d61ca9/go.mod h1:b5KI42+P0ZmUXuvOFzSH9uIB8K83wvXq1GNVoY+ePeg= +github.com/smartcontractkit/chainlink-common v0.9.5-0.20250910160725-cdc5ae13efee h1:vpSqThcS6pHF0Qt0k7O5RRu5i6zh3V+DBlaZbbZjNTk= +github.com/smartcontractkit/chainlink-common v0.9.5-0.20250910160725-cdc5ae13efee/go.mod h1:1diMLMwfIACeqJFt7ySGaBrJIeUwHTLhVVYlb41EyKk= github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.1 h1:ca2z5OXgnbBPQRxpwXwBLJsUA1+cAp5ncfW4Ssvd6eY= github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.1/go.mod h1:NZv/qKYGFRnkjOYBouajnDfFoZ+WDa6H2KNmSf1dnKc= github.com/smartcontractkit/chainlink-common/pkg/monitoring v0.0.0-20250415235644-8703639403c7 h1:9wh1G+WbXwPVqf0cfSRSgwIcaXTQgvYezylEAfwmrbw= diff --git a/deployment/cre/ocr3/config.go b/deployment/cre/ocr3/config.go index 0b3363d8c2f..e494c688caf 100644 --- a/deployment/cre/ocr3/config.go +++ b/deployment/cre/ocr3/config.go @@ -11,16 +11,12 @@ import ( "time" "github.com/ethereum/go-ethereum/common" - "google.golang.org/protobuf/proto" - "google.golang.org/protobuf/types/known/durationpb" - chainsel "github.com/smartcontractkit/chain-selectors" "github.com/smartcontractkit/libocr/offchainreporting2plus/confighelper" "github.com/smartcontractkit/libocr/offchainreporting2plus/ocr3confighelper" "github.com/smartcontractkit/libocr/offchainreporting2plus/types" mcmstypes "github.com/smartcontractkit/mcms/types" - - capocr3types "github.com/smartcontractkit/chainlink-common/pkg/capabilities/consensus/ocr3/types" + "google.golang.org/protobuf/proto" ocr3_capability "github.com/smartcontractkit/chainlink-evm/gethwrappers/keystone/generated/ocr3_capability_1_0_0" @@ -47,71 +43,6 @@ type MCMSConfig struct { MinDuration time.Duration } -type OracleConfig struct { - MaxQueryLengthBytes uint32 - MaxObservationLengthBytes uint32 - MaxReportLengthBytes uint32 - MaxOutcomeLengthBytes uint32 - MaxReportCount uint32 - MaxBatchSize uint32 - OutcomePruningThreshold uint64 - UniqueReports bool - RequestTimeout time.Duration - - DeltaProgressMillis uint32 - DeltaResendMillis uint32 - DeltaInitialMillis uint32 - DeltaRoundMillis uint32 - DeltaGraceMillis uint32 - DeltaCertifiedCommitRequestMillis uint32 - DeltaStageMillis uint32 - MaxRoundsPerEpoch uint64 - TransmissionSchedule []int - - MaxDurationQueryMillis uint32 - MaxDurationObservationMillis uint32 - MaxDurationShouldAcceptMillis uint32 - MaxDurationShouldTransmitMillis uint32 - - MaxFaultyOracles int -} - -func (oc *OracleConfig) UnmarshalJSON(data []byte) error { - type aliasT OracleConfig - temp := &struct { - RequestTimeout string `json:"RequestTimeout"` - *aliasT - }{ - aliasT: (*aliasT)(oc), - } - if err := json.Unmarshal(data, temp); err != nil { - return fmt.Errorf("failed to unmarshal OracleConfig: %w", err) - } - - if temp.RequestTimeout == "" { - oc.RequestTimeout = 0 - } else { - requestTimeout, err := time.ParseDuration(temp.RequestTimeout) - if err != nil { - return fmt.Errorf("failed to parse RequestTimeout: %w", err) - } - oc.RequestTimeout = requestTimeout - } - - return nil -} - -func (oc OracleConfig) MarshalJSON() ([]byte, error) { - type aliasT OracleConfig - return json.Marshal(&struct { - RequestTimeout string `json:"RequestTimeout"` - *aliasT - }{ - RequestTimeout: oc.RequestTimeout.String(), - aliasT: (*aliasT)(&oc), - }) -} - type NodeKeys struct { EthAddress string `json:"EthAddress"` AptosAccount string `json:"AptosAccount"` @@ -290,24 +221,16 @@ func GenerateOCR3Config(cfg OracleConfig, nca []NodeKeys, secrets focr.OCRSecret }) } - // let's keep reqTimeout as nil if it's 0, so we can use the default value within `chainlink-common`. - // See: https://github.com/smartcontractkit/chainlink-common/blob/main/pkg/capabilities/consensus/ocr3/factory.go#L73 - var reqTimeout *durationpb.Duration - if cfg.RequestTimeout > 0 { - reqTimeout = durationpb.New(cfg.RequestTimeout) - } - cfgBytes, err := proto.Marshal(&capocr3types.ReportingPluginConfig{ - MaxQueryLengthBytes: cfg.MaxQueryLengthBytes, - MaxObservationLengthBytes: cfg.MaxObservationLengthBytes, - MaxReportLengthBytes: cfg.MaxReportLengthBytes, - MaxOutcomeLengthBytes: cfg.MaxOutcomeLengthBytes, - MaxReportCount: cfg.MaxReportCount, - MaxBatchSize: cfg.MaxBatchSize, - OutcomePruningThreshold: cfg.OutcomePruningThreshold, - RequestTimeout: reqTimeout, - }) - if err != nil { - return OCR2OracleConfig{}, fmt.Errorf("failed to marshal ReportingPluginConfig: %w", err) + var cfgBytes []byte + if cfg.OffchainConfig != nil { + offchainCfgAsProto, err := cfg.OffchainConfig.ToProto() + if err != nil { + return OCR2OracleConfig{}, fmt.Errorf("failed to convert offchain config to proto: %w", err) + } + cfgBytes, err = proto.Marshal(offchainCfgAsProto) + if err != nil { + return OCR2OracleConfig{}, fmt.Errorf("failed to marshal ReportingPluginConfig: %w", err) + } } signers, transmitters, f, onchainConfig, offchainConfigVersion, offchainConfig, err := ocr3confighelper.ContractSetConfigArgsDeterministic( diff --git a/deployment/cre/ocr3/oracle_config.go b/deployment/cre/ocr3/oracle_config.go new file mode 100644 index 00000000000..b943842d5c4 --- /dev/null +++ b/deployment/cre/ocr3/oracle_config.go @@ -0,0 +1,243 @@ +package ocr3 + +import ( + "encoding/json" + "fmt" + "time" + + "google.golang.org/protobuf/proto" + "google.golang.org/protobuf/types/known/durationpb" + + capocr3types "github.com/smartcontractkit/chainlink-common/pkg/capabilities/consensus/ocr3/types" + evmcapocr3types "github.com/smartcontractkit/chainlink-common/pkg/capabilities/v2/chain-capabilities/consensus/ocr3/types" +) + +type OracleConfig struct { + // Excluded from JSON to maintain backward compatibility with previous versions where ReportingPluginConfig was embedded + OffchainConfig OffchainConfig `json:"-"` + RawOffchainConfig json.RawMessage `json:"OffchainConfig"` + OffchainConfigType OffchainConfigType + + UniqueReports bool + DeltaProgressMillis uint32 + DeltaResendMillis uint32 + DeltaInitialMillis uint32 + DeltaRoundMillis uint32 + DeltaGraceMillis uint32 + DeltaCertifiedCommitRequestMillis uint32 + DeltaStageMillis uint32 + MaxRoundsPerEpoch uint64 + TransmissionSchedule []int + + MaxDurationQueryMillis uint32 + MaxDurationObservationMillis uint32 + MaxDurationShouldAcceptMillis uint32 + MaxDurationShouldTransmitMillis uint32 + + MaxFaultyOracles int +} + +func (oc *OracleConfig) UnmarshalJSON(data []byte) error { + type aliasT OracleConfig + err := json.Unmarshal(data, (*aliasT)(oc)) + if err != nil { + return fmt.Errorf("failed to unmarshal OracleConfig: %w", err) + } + + switch oc.OffchainConfigType { + case "", OffchainConfigTypeConsensusCap: + oc.OffchainConfig = &ConsensusCapOffchainConfig{} + case OffchainConfigTypeChainCap: + oc.OffchainConfig = &ChainCapOffchainConfig{} + default: + return fmt.Errorf("unsupported OffchainConfigType: %s", oc.OffchainConfigType) + } + + // if offchain_config is empty, try to use previous version, where OffchainConfig was embedded + rawOffchainConfig := oc.RawOffchainConfig + if len(rawOffchainConfig) == 0 { + rawOffchainConfig = data + } + // try to use previous version, where OffchainConfig was embedded + err = json.Unmarshal(rawOffchainConfig, &oc.OffchainConfig) + if err != nil { + return fmt.Errorf("failed to unmarshal OffchainConfig: %w", err) + } + + oc.RawOffchainConfig = nil // clear raw data after successful unmarshalling + return nil +} + +func (oc OracleConfig) MarshalJSON() ([]byte, error) { + // ensure that caller did not forget to set OffchainConfigType + if oc.OffchainConfigType == "" && oc.OffchainConfig != nil { + _, ok := oc.OffchainConfig.(*ConsensusCapOffchainConfig) + if !ok { + return nil, fmt.Errorf("OffchainConfigType must be set when OffchainConfig is set") + } + } + + offchainConfigAsJSON, err := json.Marshal(oc.OffchainConfig) + if err != nil { + return nil, fmt.Errorf("failed to marshal OffchainConfig: %w", err) + } + + oc.RawOffchainConfig = offchainConfigAsJSON + + type aliasT OracleConfig + asJSON, err := json.Marshal((aliasT)(oc)) + if err != nil { + return nil, fmt.Errorf("failed to marshal OracleConfig: %w", err) + } + + oc.RawOffchainConfig = nil // clear raw data after marshalling + return asJSON, nil +} + +type OffchainConfig interface { + ToProto() (proto.Message, error) + isOffchainConfig() +} + +type OffchainConfigType string + +func (Oct OffchainConfigType) String() string { + return string(Oct) +} + +const ( + OffchainConfigTypeConsensusCap OffchainConfigType = "consensus-cap" + OffchainConfigTypeChainCap OffchainConfigType = "chain-cap" +) + +func ChainCapChainSelectorLabel(chainSelector uint64) string { + return fmt.Sprintf("chain-selector-%d", chainSelector) +} + +func NewOffchainConfigFromProto(cfgType OffchainConfigType, raw []byte) (OffchainConfig, error) { + switch cfgType { + case OffchainConfigTypeConsensusCap: + cfg := &capocr3types.ReportingPluginConfig{} + err := proto.Unmarshal(raw, cfg) + if err != nil { + return nil, fmt.Errorf("failed to unmarshal ConsensusCap OffchainConfig from proto: %w", err) + } + + return &ConsensusCapOffchainConfig{ + MaxQueryLengthBytes: cfg.MaxQueryLengthBytes, + MaxObservationLengthBytes: cfg.MaxObservationLengthBytes, + MaxReportLengthBytes: cfg.MaxReportLengthBytes, + MaxOutcomeLengthBytes: cfg.MaxOutcomeLengthBytes, + MaxReportCount: cfg.MaxReportCount, + MaxBatchSize: cfg.MaxBatchSize, + OutcomePruningThreshold: cfg.OutcomePruningThreshold, + RequestTimeout: cfg.RequestTimeout.AsDuration(), + }, nil + case OffchainConfigTypeChainCap: + cfg := &evmcapocr3types.ReportingPluginConfig{} + err := proto.Unmarshal(raw, cfg) + if err != nil { + return nil, fmt.Errorf("failed to unmarshal ChainCap OffchainConfig from proto: %w", err) + } + return &ChainCapOffchainConfig{ + MaxQueryLengthBytes: cfg.MaxQueryLengthBytes, + MaxObservationLengthBytes: cfg.MaxObservationLengthBytes, + MaxReportLengthBytes: cfg.MaxReportLengthBytes, + MaxOutcomeLengthBytes: cfg.MaxOutcomeLengthBytes, + MaxReportCount: cfg.MaxReportCount, + MaxBatchSize: cfg.MaxBatchSize, + }, nil + default: + return nil, fmt.Errorf("unsupported OffchainConfigType: %s", cfgType) + } +} + +type ConsensusCapOffchainConfig struct { + MaxQueryLengthBytes uint32 + MaxObservationLengthBytes uint32 + MaxReportLengthBytes uint32 + MaxOutcomeLengthBytes uint32 + MaxReportCount uint32 + MaxBatchSize uint32 + OutcomePruningThreshold uint64 + RequestTimeout time.Duration +} + +func (oc *ConsensusCapOffchainConfig) UnmarshalJSON(data []byte) error { + type aliasT ConsensusCapOffchainConfig + temp := &struct { + RequestTimeout string `json:"RequestTimeout"` + *aliasT + }{ + aliasT: (*aliasT)(oc), + } + if err := json.Unmarshal(data, temp); err != nil { + return fmt.Errorf("failed to unmarshal OracleConfig: %w", err) + } + + if temp.RequestTimeout == "" { + oc.RequestTimeout = 0 + } else { + requestTimeout, err := time.ParseDuration(temp.RequestTimeout) + if err != nil { + return fmt.Errorf("failed to parse RequestTimeout: %w", err) + } + oc.RequestTimeout = requestTimeout + } + + return nil +} + +func (oc *ConsensusCapOffchainConfig) MarshalJSON() ([]byte, error) { + type aliasT ConsensusCapOffchainConfig + return json.Marshal(&struct { + RequestTimeout string `json:"RequestTimeout"` + *aliasT + }{ + RequestTimeout: oc.RequestTimeout.String(), + aliasT: (*aliasT)(oc), + }) +} + +func (oc *ConsensusCapOffchainConfig) ToProto() (proto.Message, error) { + // let's keep reqTimeout as nil if it's 0, so we can use the default value within `chainlink-common`. + // See: https://github.com/smartcontractkit/chainlink-common/blob/main/pkg/capabilities/consensus/ocr3/factory.go#L73 + var reqTimeout *durationpb.Duration + if oc.RequestTimeout > 0 { + reqTimeout = durationpb.New(oc.RequestTimeout) + } + return &capocr3types.ReportingPluginConfig{ + MaxQueryLengthBytes: oc.MaxQueryLengthBytes, + MaxObservationLengthBytes: oc.MaxObservationLengthBytes, + MaxReportLengthBytes: oc.MaxReportLengthBytes, + MaxOutcomeLengthBytes: oc.MaxOutcomeLengthBytes, + MaxReportCount: oc.MaxReportCount, + MaxBatchSize: oc.MaxBatchSize, + OutcomePruningThreshold: oc.OutcomePruningThreshold, + RequestTimeout: reqTimeout, + }, nil +} + +func (*ConsensusCapOffchainConfig) isOffchainConfig() {} + +type ChainCapOffchainConfig struct { + MaxQueryLengthBytes uint32 + MaxObservationLengthBytes uint32 + MaxReportLengthBytes uint32 + MaxOutcomeLengthBytes uint32 + MaxReportCount uint32 + MaxBatchSize uint32 +} + +func (oc *ChainCapOffchainConfig) ToProto() (proto.Message, error) { + return &evmcapocr3types.ReportingPluginConfig{ + MaxQueryLengthBytes: oc.MaxQueryLengthBytes, + MaxObservationLengthBytes: oc.MaxObservationLengthBytes, + MaxReportLengthBytes: oc.MaxReportLengthBytes, + MaxOutcomeLengthBytes: oc.MaxOutcomeLengthBytes, + MaxReportCount: oc.MaxReportCount, + MaxBatchSize: oc.MaxBatchSize, + }, nil +} + +func (*ChainCapOffchainConfig) isOffchainConfig() {} diff --git a/deployment/cre/ocr3/oracle_config_test.go b/deployment/cre/ocr3/oracle_config_test.go new file mode 100644 index 00000000000..91a0d8ba14c --- /dev/null +++ b/deployment/cre/ocr3/oracle_config_test.go @@ -0,0 +1,47 @@ +package ocr3 + +import ( + "encoding/json" + "testing" + "time" + + "github.com/stretchr/testify/require" +) + +func TestOracleConfig_JSON(t *testing.T) { + t.Run("Legacy format general OCR config", func(t *testing.T) { + var cfg OracleConfig + err := json.Unmarshal([]byte(ocr3Cfg), &cfg) + require.NoError(t, err) + // ensure the values were correctly unmarshalled + require.Equal(t, cfg.MaxFaultyOracles, 3) + require.IsType(t, &ConsensusCapOffchainConfig{}, cfg.OffchainConfig) + consensusCapCfg := cfg.OffchainConfig.(*ConsensusCapOffchainConfig) + require.Equal(t, consensusCapCfg.RequestTimeout, 30*time.Second) + require.Equal(t, consensusCapCfg.MaxBatchSize, uint32(20)) + // ensure that marshalling back to JSON works + asJSON, err := json.Marshal(cfg) + require.NoError(t, err) + var cfg2 OracleConfig + err = json.Unmarshal(asJSON, &cfg2) + require.NoError(t, err) + require.Equal(t, cfg, cfg2) + }) + t.Run("Chain Capability OCR Config", func(t *testing.T) { + cfg := OracleConfig{ + OffchainConfigType: OffchainConfigTypeChainCap, + DeltaProgressMillis: 5000, + OffchainConfig: &ChainCapOffchainConfig{ + MaxBatchSize: 100, + MaxQueryLengthBytes: 1000000, + }, + } + asJSON, err := json.Marshal(cfg) + require.NoError(t, err) + + var fromJSON OracleConfig + err = json.Unmarshal(asJSON, &fromJSON) + require.NoError(t, err) + require.Equal(t, cfg, fromJSON) + }) +} diff --git a/deployment/cre/ocr3/v2/changeset/deploy_ocr3_test.go b/deployment/cre/ocr3/v2/changeset/deploy_ocr3_test.go index 3a65dc41e53..0c608eec370 100644 --- a/deployment/cre/ocr3/v2/changeset/deploy_ocr3_test.go +++ b/deployment/cre/ocr3/v2/changeset/deploy_ocr3_test.go @@ -16,70 +16,100 @@ import ( func TestDeployOCR3(t *testing.T) { env := test.SetupEnvV2(t, false) - - // Apply the changeset to deploy the V2 capabilities registry - t.Log("Starting changeset application...") - changesetOutput, err := DeployOCR3{}.Apply(*env.Env, DeployOCR3Input{ - ChainSelector: env.RegistrySelector, - Qualifier: "test-ocr3", - Don: contracts.DonNodeSet{ - Name: "test-don", // This should match the DON created in SetupEnvV2 - NodeIDs: env.Env.NodeIDs, // Use all available node IDs + testCases := []struct { + Name string + Input DeployOCR3Input + }{ + { + Name: "Consensus Capability OCR3 Deployment", + Input: DeployOCR3Input{ + ChainSelector: env.RegistrySelector, + Qualifier: "test-ocr3", + Don: contracts.DonNodeSet{ + Name: "test-don", // This should match the DON created in SetupEnvV2 + NodeIDs: env.Env.NodeIDs, // Use all available node IDs + }, + OracleConfig: &ocr3.OracleConfig{ + MaxFaultyOracles: 1, + TransmissionSchedule: []int{len(env.Env.NodeIDs)}, // Single entry with number of nodes + OffchainConfigType: ocr3.OffchainConfigTypeConsensusCap, + }, + }, }, - OracleConfig: &ocr3.OracleConfig{ - MaxFaultyOracles: 1, - TransmissionSchedule: []int{len(env.Env.NodeIDs)}, // Single entry with number of nodes + { + Name: "Chain Capability OCR3 Deployment", + Input: DeployOCR3Input{ + ChainSelector: env.RegistrySelector, + Qualifier: "test-ocr3", + Don: contracts.DonNodeSet{ + Name: "test-don", // This should match the DON created in SetupEnvV2 + NodeIDs: env.Env.NodeIDs, // Use all available node IDs + }, + OracleConfig: &ocr3.OracleConfig{ + MaxFaultyOracles: 1, + TransmissionSchedule: []int{len(env.Env.NodeIDs)}, // Single entry with number of nodes + OffchainConfigType: ocr3.OffchainConfigTypeChainCap, + }, + }, }, - }) - t.Logf("Changeset result: err=%v, output=%v", err, changesetOutput) + } - if err != nil { - t.Fatalf("changeset apply failed: %v", err) + for _, tc := range testCases { + t.Run(tc.Name, func(t *testing.T) { + // Apply the changeset to deploy the V2 capabilities registry + t.Log("Starting changeset application...") + changesetOutput, err := DeployOCR3{}.Apply(*env.Env, tc.Input) + t.Logf("Changeset result: err=%v, output=%v", err, changesetOutput) + + if err != nil { + t.Fatalf("changeset apply failed: %v", err) + } + require.NotNil(t, changesetOutput, "changeset output should not be nil") + t.Logf("Changeset applied successfully") + + // Verify the datastore contains the deployed contract + require.NotNil(t, changesetOutput.DataStore, "datastore should not be nil") + addresses, err := changesetOutput.DataStore.Addresses().Fetch() + require.NoError(t, err, "should fetch addresses without error") + t.Logf("Found %d addresses", len(addresses)) + require.Len(t, addresses, 1, "expected exactly one deployed contract") + + // Verify the address is for the correct chain + deployedAddress := addresses[0] + require.Equal(t, env.RegistrySelector, deployedAddress.ChainSelector, "deployed contract should be on the correct chain") + require.NotEmpty(t, deployedAddress.Address, "deployed contract address should not be empty") + + // Verify the contract type is correct + require.Equal(t, datastore.ContractType("OCR3Capability"), deployedAddress.Type, "contract type should be OCR3Capability") + require.NotNil(t, deployedAddress.Version, "contract version should be set") + + // Verify reports are generated + require.NotNil(t, changesetOutput.Reports, "reports should be present") + require.Len(t, changesetOutput.Reports, 1, "should have exactly one operation report") + + // Further verify the deployed contract by connecting to it + ocr3Contract, err := ocr3_capability.NewOCR3Capability(common.HexToAddress(deployedAddress.Address), env.Env.BlockChains.EVMChains()[env.RegistrySelector].Client) + require.NoError(t, err, "failed to create OCR3 contract instance") + require.NotNil(t, ocr3Contract, "OCR3 contract instance should not be nil") + + // Get ConfigSet events to verify configuration details + configIterator, err := ocr3Contract.FilterConfigSet(&bind.FilterOpts{}) + require.NoError(t, err, "failed to filter ConfigSet events") + defer configIterator.Close() + + // There should be exactly one ConfigSet event + require.True(t, configIterator.Next(), "should have at least one ConfigSet event") + configEvent := configIterator.Event + + // Assert the fault tolerance parameter + require.Equal(t, uint8(1), configEvent.F, "F should be 1") + + // Assert the number of signers/transmitters matches expected nodes + require.Len(t, configEvent.Signers, 4, "should have 4 signers") + require.Len(t, configEvent.Transmitters, 4, "should have 4 transmitters") + + // Assert no more ConfigSet events + require.False(t, configIterator.Next(), "should have exactly one ConfigSet event") + }) } - require.NotNil(t, changesetOutput, "changeset output should not be nil") - t.Logf("Changeset applied successfully") - - // Verify the datastore contains the deployed contract - require.NotNil(t, changesetOutput.DataStore, "datastore should not be nil") - addresses, err := changesetOutput.DataStore.Addresses().Fetch() - require.NoError(t, err, "should fetch addresses without error") - t.Logf("Found %d addresses", len(addresses)) - require.Len(t, addresses, 1, "expected exactly one deployed contract") - - // Verify the address is for the correct chain - deployedAddress := addresses[0] - require.Equal(t, env.RegistrySelector, deployedAddress.ChainSelector, "deployed contract should be on the correct chain") - require.NotEmpty(t, deployedAddress.Address, "deployed contract address should not be empty") - - // Verify the contract type is correct - require.Equal(t, datastore.ContractType("OCR3Capability"), deployedAddress.Type, "contract type should be OCR3Capability") - require.NotNil(t, deployedAddress.Version, "contract version should be set") - - // Verify reports are generated - require.NotNil(t, changesetOutput.Reports, "reports should be present") - require.Len(t, changesetOutput.Reports, 1, "should have exactly one operation report") - - // Further verify the deployed contract by connecting to it - ocr3Contract, err := ocr3_capability.NewOCR3Capability(common.HexToAddress(deployedAddress.Address), env.Env.BlockChains.EVMChains()[env.RegistrySelector].Client) - require.NoError(t, err, "failed to create OCR3 contract instance") - require.NotNil(t, ocr3Contract, "OCR3 contract instance should not be nil") - - // Get ConfigSet events to verify configuration details - configIterator, err := ocr3Contract.FilterConfigSet(&bind.FilterOpts{}) - require.NoError(t, err, "failed to filter ConfigSet events") - - // There should be exactly one ConfigSet event - require.True(t, configIterator.Next(), "should have at least one ConfigSet event") - configEvent := configIterator.Event - - // Assert the fault tolerance parameter - require.Equal(t, uint8(1), configEvent.F, "F should be 1") - - // Assert the number of signers/transmitters matches expected nodes - require.Len(t, configEvent.Signers, 4, "should have 4 signers") - require.Len(t, configEvent.Transmitters, 4, "should have 4 transmitters") - - // Assert no more ConfigSet events - require.False(t, configIterator.Next(), "should have exactly one ConfigSet event") - configIterator.Close() } diff --git a/deployment/cre/ocr3/v2/changeset/operations/contracts/deploy_ocr3.go b/deployment/cre/ocr3/v2/changeset/operations/contracts/deploy_ocr3.go index b9481c36c8f..5e970290435 100644 --- a/deployment/cre/ocr3/v2/changeset/operations/contracts/deploy_ocr3.go +++ b/deployment/cre/ocr3/v2/changeset/operations/contracts/deploy_ocr3.go @@ -9,6 +9,7 @@ import ( "github.com/smartcontractkit/chainlink-deployments-framework/datastore" cldf "github.com/smartcontractkit/chainlink-deployments-framework/deployment" "github.com/smartcontractkit/chainlink-deployments-framework/operations" + "github.com/smartcontractkit/chainlink/deployment/cre/ocr3" ocr3_capability "github.com/smartcontractkit/chainlink-evm/gethwrappers/keystone/generated/ocr3_capability_1_0_0" ) @@ -18,8 +19,9 @@ type DeployOCR3Deps struct { } type DeployOCR3Input struct { - ChainSelector uint64 - Qualifier string + ChainSelector uint64 + Qualifier string + OffchainConfigType ocr3.OffchainConfigType } type DeployOCR3Output struct { @@ -42,6 +44,10 @@ var DeployOCR3 = operations.NewOperation[DeployOCR3Input, DeployOCR3Output, Depl func(b operations.Bundle, deps DeployOCR3Deps, input DeployOCR3Input) (DeployOCR3Output, error) { lggr := deps.Env.Logger + if input.OffchainConfigType == "" { + return DeployOCR3Output{}, fmt.Errorf("OffchainConfigType is required") + } + // Get the target chain chain, ok := deps.Env.BlockChains.EVMChains()[input.ChainSelector] if !ok { @@ -76,10 +82,12 @@ var DeployOCR3 = operations.NewOperation[DeployOCR3Input, DeployOCR3Output, Depl // Create labels from the operation output labels := datastore.NewLabelSet() - for _, label := range tv.Labels.List() { + for _, label := range append(tv.Labels.List()) { labels.Add(label) } + labels.Add(input.OffchainConfigType.String()) + addressRef := datastore.AddressRef{ ChainSelector: chain.Selector, Address: ocr3Addr.Hex(), diff --git a/deployment/cre/ocr3/v2/changeset/sequences/deploy_ocr3.go b/deployment/cre/ocr3/v2/changeset/sequences/deploy_ocr3.go index 7b65fcbcc50..e0c318bb527 100644 --- a/deployment/cre/ocr3/v2/changeset/sequences/deploy_ocr3.go +++ b/deployment/cre/ocr3/v2/changeset/sequences/deploy_ocr3.go @@ -31,6 +31,13 @@ type DeployOCR3Input struct { } func (c DeployOCR3Input) Validate() error { + if c.OracleConfig == nil { + return fmt.Errorf("OracleConfig is required") + } + + if c.OracleConfig.OffchainConfigType == "" { + return fmt.Errorf("OracleConfig.OffchainConfigType is required") + } return nil } @@ -49,8 +56,9 @@ var DeployOCR3 = operations.NewSequence( func(b operations.Bundle, deps DeployOCR3Deps, input DeployOCR3Input) (DeployOCR3Output, error) { // Step 1: Deploy OCR3 Contract for Consensus Capability ocr3DeploymentReport, err := operations.ExecuteOperation(b, contracts.DeployOCR3, contracts.DeployOCR3Deps{Env: deps.Env}, contracts.DeployOCR3Input{ - ChainSelector: input.ChainSelector, - Qualifier: input.Qualifier, + ChainSelector: input.ChainSelector, + Qualifier: input.Qualifier, + OffchainConfigType: input.OracleConfig.OffchainConfigType, }) if err != nil { return DeployOCR3Output{}, err diff --git a/deployment/go.mod b/deployment/go.mod index 5636bd7675a..209d723cb91 100644 --- a/deployment/go.mod +++ b/deployment/go.mod @@ -37,7 +37,7 @@ require ( github.com/smartcontractkit/chainlink-ccip v0.1.1-solana.0.20250825135846-84f0d5167f8f github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250908144012-8184001834b5 github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20250908144012-8184001834b5 - github.com/smartcontractkit/chainlink-common v0.9.5-0.20250908133421-f9b356d61ca9 + github.com/smartcontractkit/chainlink-common v0.9.5-0.20250910160725-cdc5ae13efee github.com/smartcontractkit/chainlink-deployments-framework v0.44.0 github.com/smartcontractkit/chainlink-evm v0.3.4-0.20250909183314-c46f62fb74f6 github.com/smartcontractkit/chainlink-evm/gethwrappers v0.0.0-20250827130336-5922343458be diff --git a/deployment/go.sum b/deployment/go.sum index 6056bf4362f..0bdc1a515f7 100644 --- a/deployment/go.sum +++ b/deployment/go.sum @@ -1272,8 +1272,8 @@ github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250908144012-8 github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250908144012-8184001834b5/go.mod h1:Ve1xD71bl193YIZQEoJMmBqLGQJdNs29bwbuObwvbhQ= github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20250908144012-8184001834b5 h1:QhcYGEhRLInr1/qh/3RJiVdvJ0nxBHKhPe65WLbSBnU= github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20250908144012-8184001834b5/go.mod h1:xtZNi6pOKdC3sLvokDvXOhgHzT+cyBqH/gWwvxTxqrg= -github.com/smartcontractkit/chainlink-common v0.9.5-0.20250908133421-f9b356d61ca9 h1:ZWE1acA9mP9RlA+wcGm2Q2eF0CXSGcTUwyBVwHiiv24= -github.com/smartcontractkit/chainlink-common v0.9.5-0.20250908133421-f9b356d61ca9/go.mod h1:b5KI42+P0ZmUXuvOFzSH9uIB8K83wvXq1GNVoY+ePeg= +github.com/smartcontractkit/chainlink-common v0.9.5-0.20250910160725-cdc5ae13efee h1:vpSqThcS6pHF0Qt0k7O5RRu5i6zh3V+DBlaZbbZjNTk= +github.com/smartcontractkit/chainlink-common v0.9.5-0.20250910160725-cdc5ae13efee/go.mod h1:1diMLMwfIACeqJFt7ySGaBrJIeUwHTLhVVYlb41EyKk= github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.1 h1:ca2z5OXgnbBPQRxpwXwBLJsUA1+cAp5ncfW4Ssvd6eY= github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.1/go.mod h1:NZv/qKYGFRnkjOYBouajnDfFoZ+WDa6H2KNmSf1dnKc= github.com/smartcontractkit/chainlink-common/pkg/monitoring v0.0.0-20250415235644-8703639403c7 h1:9wh1G+WbXwPVqf0cfSRSgwIcaXTQgvYezylEAfwmrbw= diff --git a/deployment/keystone/changeset/view_contracts.go b/deployment/keystone/changeset/view_contracts.go index da8ee91b759..2f01bf4c888 100644 --- a/deployment/keystone/changeset/view_contracts.go +++ b/deployment/keystone/changeset/view_contracts.go @@ -21,6 +21,7 @@ import ( capocr3types "github.com/smartcontractkit/chainlink-common/pkg/capabilities/consensus/ocr3/types" "github.com/smartcontractkit/chainlink-common/pkg/logger" + "github.com/smartcontractkit/chainlink/deployment/cre/ocr3" forwarder "github.com/smartcontractkit/chainlink-evm/gethwrappers/keystone/generated/forwarder_1_0_0" ocr3_capability "github.com/smartcontractkit/chainlink-evm/gethwrappers/keystone/generated/ocr3_capability_1_0_0" @@ -285,15 +286,18 @@ func GenerateOCR3ConfigView(ctx context.Context, ocr3Cap ocr3_capability.OCR3Cap return OCR3ConfigView{}, err } oracleConfig := OracleConfig{ - MaxQueryLengthBytes: cfg.MaxQueryLengthBytes, - MaxObservationLengthBytes: cfg.MaxObservationLengthBytes, - MaxReportLengthBytes: cfg.MaxReportLengthBytes, - MaxOutcomeLengthBytes: cfg.MaxOutcomeLengthBytes, - MaxReportCount: cfg.MaxReportCount, - MaxBatchSize: cfg.MaxBatchSize, - OutcomePruningThreshold: cfg.OutcomePruningThreshold, - RequestTimeout: cfg.RequestTimeout.AsDuration(), - UniqueReports: true, // This is hardcoded to true in the OCR3 contract + OffchainConfigType: ocr3.OffchainConfigTypeConsensusCap, + OffchainConfig: &ocr3.ConsensusCapOffchainConfig{ + MaxQueryLengthBytes: cfg.MaxQueryLengthBytes, + MaxObservationLengthBytes: cfg.MaxObservationLengthBytes, + MaxReportLengthBytes: cfg.MaxReportLengthBytes, + MaxOutcomeLengthBytes: cfg.MaxOutcomeLengthBytes, + MaxReportCount: cfg.MaxReportCount, + MaxBatchSize: cfg.MaxBatchSize, + OutcomePruningThreshold: cfg.OutcomePruningThreshold, + RequestTimeout: cfg.RequestTimeout.AsDuration(), + }, + UniqueReports: true, // This is hardcoded to true in the OCR3 contract DeltaProgressMillis: millisecondsToUint32(publicConfig.DeltaProgress), DeltaResendMillis: millisecondsToUint32(publicConfig.DeltaResend), diff --git a/deployment/keystone/changeset/view_test.go b/deployment/keystone/changeset/view_test.go index eccaf9cb272..744feeab0a8 100644 --- a/deployment/keystone/changeset/view_test.go +++ b/deployment/keystone/changeset/view_test.go @@ -15,6 +15,7 @@ import ( "github.com/smartcontractkit/chainlink-deployments-framework/datastore" "github.com/smartcontractkit/chainlink-deployments-framework/deployment" capabilities_registry "github.com/smartcontractkit/chainlink-evm/gethwrappers/keystone/generated/capabilities_registry_1_1_0" + "github.com/smartcontractkit/chainlink/deployment/cre/ocr3" "github.com/smartcontractkit/chainlink/deployment/cre/contracts" "github.com/smartcontractkit/chainlink/deployment/keystone/changeset" @@ -38,15 +39,18 @@ var oracleConfig = changeset.OracleConfig{ MaxDurationShouldAcceptMillis: 1000, MaxDurationShouldTransmitMillis: 1000, MaxFaultyOracles: 1, - MaxQueryLengthBytes: 1000000, - MaxObservationLengthBytes: 1000000, - MaxReportLengthBytes: 1000000, - MaxOutcomeLengthBytes: 1000000, - MaxReportCount: 20, - MaxBatchSize: 20, - OutcomePruningThreshold: 3600, - UniqueReports: true, - RequestTimeout: 30 * time.Second, + OffchainConfigType: ocr3.OffchainConfigTypeConsensusCap, + OffchainConfig: &ocr3.ConsensusCapOffchainConfig{ + MaxQueryLengthBytes: 1000000, + MaxObservationLengthBytes: 1000000, + MaxReportLengthBytes: 1000000, + MaxOutcomeLengthBytes: 1000000, + MaxReportCount: 20, + MaxBatchSize: 20, + OutcomePruningThreshold: 3600, + RequestTimeout: 30 * time.Second, + }, + UniqueReports: true, } func TestKeystoneView(t *testing.T) { diff --git a/go.mod b/go.mod index 28bc7e824df..106ef38ae46 100644 --- a/go.mod +++ b/go.mod @@ -84,7 +84,7 @@ require ( github.com/smartcontractkit/chainlink-ccip v0.1.1-solana.0.20250825135846-84f0d5167f8f github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250805210128-7f8a0f403c3a github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20250804184440-c0506474fc44 - github.com/smartcontractkit/chainlink-common v0.9.5-0.20250908133421-f9b356d61ca9 + github.com/smartcontractkit/chainlink-common v0.9.5-0.20250910160725-cdc5ae13efee github.com/smartcontractkit/chainlink-data-streams v0.1.2 github.com/smartcontractkit/chainlink-evm v0.3.4-0.20250909183314-c46f62fb74f6 github.com/smartcontractkit/chainlink-evm/gethwrappers v0.0.0-20250827130336-5922343458be diff --git a/go.sum b/go.sum index 14a6c346c31..89bfa3188b2 100644 --- a/go.sum +++ b/go.sum @@ -1110,8 +1110,8 @@ github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250805210128-7 github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250805210128-7f8a0f403c3a/go.mod h1:Ve1xD71bl193YIZQEoJMmBqLGQJdNs29bwbuObwvbhQ= github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20250804184440-c0506474fc44 h1:S00lus9RPu5JuxKRtGEET+aIUfASahHpTRV5RgPARSI= github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20250804184440-c0506474fc44/go.mod h1:xtZNi6pOKdC3sLvokDvXOhgHzT+cyBqH/gWwvxTxqrg= -github.com/smartcontractkit/chainlink-common v0.9.5-0.20250908133421-f9b356d61ca9 h1:ZWE1acA9mP9RlA+wcGm2Q2eF0CXSGcTUwyBVwHiiv24= -github.com/smartcontractkit/chainlink-common v0.9.5-0.20250908133421-f9b356d61ca9/go.mod h1:b5KI42+P0ZmUXuvOFzSH9uIB8K83wvXq1GNVoY+ePeg= +github.com/smartcontractkit/chainlink-common v0.9.5-0.20250910160725-cdc5ae13efee h1:vpSqThcS6pHF0Qt0k7O5RRu5i6zh3V+DBlaZbbZjNTk= +github.com/smartcontractkit/chainlink-common v0.9.5-0.20250910160725-cdc5ae13efee/go.mod h1:1diMLMwfIACeqJFt7ySGaBrJIeUwHTLhVVYlb41EyKk= github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.1 h1:ca2z5OXgnbBPQRxpwXwBLJsUA1+cAp5ncfW4Ssvd6eY= github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.1/go.mod h1:NZv/qKYGFRnkjOYBouajnDfFoZ+WDa6H2KNmSf1dnKc= github.com/smartcontractkit/chainlink-common/pkg/monitoring v0.0.0-20250415235644-8703639403c7 h1:9wh1G+WbXwPVqf0cfSRSgwIcaXTQgvYezylEAfwmrbw= diff --git a/integration-tests/go.mod b/integration-tests/go.mod index b99a6fe272e..468c5da0cb2 100644 --- a/integration-tests/go.mod +++ b/integration-tests/go.mod @@ -50,7 +50,7 @@ require ( github.com/smartcontractkit/chainlink-ccip v0.1.1-solana.0.20250825135846-84f0d5167f8f github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250908144012-8184001834b5 github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20250908144012-8184001834b5 - github.com/smartcontractkit/chainlink-common v0.9.5-0.20250908133421-f9b356d61ca9 + github.com/smartcontractkit/chainlink-common v0.9.5-0.20250910160725-cdc5ae13efee github.com/smartcontractkit/chainlink-deployments-framework v0.44.0 github.com/smartcontractkit/chainlink-evm v0.3.4-0.20250909183314-c46f62fb74f6 github.com/smartcontractkit/chainlink-evm/gethwrappers v0.0.0-20250827130336-5922343458be diff --git a/integration-tests/go.sum b/integration-tests/go.sum index f72a9bf713a..f5c8c0e3fc2 100644 --- a/integration-tests/go.sum +++ b/integration-tests/go.sum @@ -1524,8 +1524,8 @@ github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250908144012-8 github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250908144012-8184001834b5/go.mod h1:Ve1xD71bl193YIZQEoJMmBqLGQJdNs29bwbuObwvbhQ= github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20250908144012-8184001834b5 h1:QhcYGEhRLInr1/qh/3RJiVdvJ0nxBHKhPe65WLbSBnU= github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20250908144012-8184001834b5/go.mod h1:xtZNi6pOKdC3sLvokDvXOhgHzT+cyBqH/gWwvxTxqrg= -github.com/smartcontractkit/chainlink-common v0.9.5-0.20250908133421-f9b356d61ca9 h1:ZWE1acA9mP9RlA+wcGm2Q2eF0CXSGcTUwyBVwHiiv24= -github.com/smartcontractkit/chainlink-common v0.9.5-0.20250908133421-f9b356d61ca9/go.mod h1:b5KI42+P0ZmUXuvOFzSH9uIB8K83wvXq1GNVoY+ePeg= +github.com/smartcontractkit/chainlink-common v0.9.5-0.20250910160725-cdc5ae13efee h1:vpSqThcS6pHF0Qt0k7O5RRu5i6zh3V+DBlaZbbZjNTk= +github.com/smartcontractkit/chainlink-common v0.9.5-0.20250910160725-cdc5ae13efee/go.mod h1:1diMLMwfIACeqJFt7ySGaBrJIeUwHTLhVVYlb41EyKk= github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.1 h1:ca2z5OXgnbBPQRxpwXwBLJsUA1+cAp5ncfW4Ssvd6eY= github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.1/go.mod h1:NZv/qKYGFRnkjOYBouajnDfFoZ+WDa6H2KNmSf1dnKc= github.com/smartcontractkit/chainlink-common/pkg/monitoring v0.0.0-20250415235644-8703639403c7 h1:9wh1G+WbXwPVqf0cfSRSgwIcaXTQgvYezylEAfwmrbw= diff --git a/integration-tests/load/go.mod b/integration-tests/load/go.mod index b1347ddba6d..92dd86325c9 100644 --- a/integration-tests/load/go.mod +++ b/integration-tests/load/go.mod @@ -32,7 +32,7 @@ require ( github.com/smartcontractkit/chainlink-ccip v0.1.1-solana.0.20250825135846-84f0d5167f8f github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250908144012-8184001834b5 github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20250908144012-8184001834b5 - github.com/smartcontractkit/chainlink-common v0.9.5-0.20250908133421-f9b356d61ca9 + github.com/smartcontractkit/chainlink-common v0.9.5-0.20250910160725-cdc5ae13efee github.com/smartcontractkit/chainlink-deployments-framework v0.44.0 github.com/smartcontractkit/chainlink-evm v0.3.4-0.20250909183314-c46f62fb74f6 github.com/smartcontractkit/chainlink-evm/gethwrappers v0.0.0-20250827130336-5922343458be diff --git a/integration-tests/load/go.sum b/integration-tests/load/go.sum index fe4745314c3..b7a38b8aa24 100644 --- a/integration-tests/load/go.sum +++ b/integration-tests/load/go.sum @@ -1500,8 +1500,8 @@ github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250908144012-8 github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250908144012-8184001834b5/go.mod h1:Ve1xD71bl193YIZQEoJMmBqLGQJdNs29bwbuObwvbhQ= github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20250908144012-8184001834b5 h1:QhcYGEhRLInr1/qh/3RJiVdvJ0nxBHKhPe65WLbSBnU= github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20250908144012-8184001834b5/go.mod h1:xtZNi6pOKdC3sLvokDvXOhgHzT+cyBqH/gWwvxTxqrg= -github.com/smartcontractkit/chainlink-common v0.9.5-0.20250908133421-f9b356d61ca9 h1:ZWE1acA9mP9RlA+wcGm2Q2eF0CXSGcTUwyBVwHiiv24= -github.com/smartcontractkit/chainlink-common v0.9.5-0.20250908133421-f9b356d61ca9/go.mod h1:b5KI42+P0ZmUXuvOFzSH9uIB8K83wvXq1GNVoY+ePeg= +github.com/smartcontractkit/chainlink-common v0.9.5-0.20250910160725-cdc5ae13efee h1:vpSqThcS6pHF0Qt0k7O5RRu5i6zh3V+DBlaZbbZjNTk= +github.com/smartcontractkit/chainlink-common v0.9.5-0.20250910160725-cdc5ae13efee/go.mod h1:1diMLMwfIACeqJFt7ySGaBrJIeUwHTLhVVYlb41EyKk= github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.1 h1:ca2z5OXgnbBPQRxpwXwBLJsUA1+cAp5ncfW4Ssvd6eY= github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.1/go.mod h1:NZv/qKYGFRnkjOYBouajnDfFoZ+WDa6H2KNmSf1dnKc= github.com/smartcontractkit/chainlink-common/pkg/monitoring v0.0.0-20250415235644-8703639403c7 h1:9wh1G+WbXwPVqf0cfSRSgwIcaXTQgvYezylEAfwmrbw= diff --git a/system-tests/lib/go.mod b/system-tests/lib/go.mod index 235ce9e2635..87abd0d855f 100644 --- a/system-tests/lib/go.mod +++ b/system-tests/lib/go.mod @@ -32,7 +32,7 @@ require ( github.com/rs/zerolog v1.33.0 github.com/scylladb/go-reflectx v1.0.1 github.com/smartcontractkit/chain-selectors v1.0.67 - github.com/smartcontractkit/chainlink-common v0.9.5-0.20250908133421-f9b356d61ca9 + github.com/smartcontractkit/chainlink-common v0.9.5-0.20250910160725-cdc5ae13efee github.com/smartcontractkit/chainlink-deployments-framework v0.44.0 github.com/smartcontractkit/chainlink-evm v0.3.4-0.20250909183314-c46f62fb74f6 github.com/smartcontractkit/chainlink-evm/gethwrappers v0.0.0-20250827130336-5922343458be diff --git a/system-tests/lib/go.sum b/system-tests/lib/go.sum index 149d0b16c25..af3e01ef736 100644 --- a/system-tests/lib/go.sum +++ b/system-tests/lib/go.sum @@ -1516,8 +1516,8 @@ github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250908144012-8 github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250908144012-8184001834b5/go.mod h1:Ve1xD71bl193YIZQEoJMmBqLGQJdNs29bwbuObwvbhQ= github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20250908144012-8184001834b5 h1:QhcYGEhRLInr1/qh/3RJiVdvJ0nxBHKhPe65WLbSBnU= github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20250908144012-8184001834b5/go.mod h1:xtZNi6pOKdC3sLvokDvXOhgHzT+cyBqH/gWwvxTxqrg= -github.com/smartcontractkit/chainlink-common v0.9.5-0.20250908133421-f9b356d61ca9 h1:ZWE1acA9mP9RlA+wcGm2Q2eF0CXSGcTUwyBVwHiiv24= -github.com/smartcontractkit/chainlink-common v0.9.5-0.20250908133421-f9b356d61ca9/go.mod h1:b5KI42+P0ZmUXuvOFzSH9uIB8K83wvXq1GNVoY+ePeg= +github.com/smartcontractkit/chainlink-common v0.9.5-0.20250910160725-cdc5ae13efee h1:vpSqThcS6pHF0Qt0k7O5RRu5i6zh3V+DBlaZbbZjNTk= +github.com/smartcontractkit/chainlink-common v0.9.5-0.20250910160725-cdc5ae13efee/go.mod h1:1diMLMwfIACeqJFt7ySGaBrJIeUwHTLhVVYlb41EyKk= github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.1 h1:ca2z5OXgnbBPQRxpwXwBLJsUA1+cAp5ncfW4Ssvd6eY= github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.1/go.mod h1:NZv/qKYGFRnkjOYBouajnDfFoZ+WDa6H2KNmSf1dnKc= github.com/smartcontractkit/chainlink-common/pkg/monitoring v0.0.0-20250415235644-8703639403c7 h1:9wh1G+WbXwPVqf0cfSRSgwIcaXTQgvYezylEAfwmrbw= diff --git a/system-tests/tests/go.mod b/system-tests/tests/go.mod index 9aedabfe488..0074400fb45 100644 --- a/system-tests/tests/go.mod +++ b/system-tests/tests/go.mod @@ -27,7 +27,7 @@ require ( github.com/prometheus/common v0.65.0 github.com/rs/zerolog v1.33.0 github.com/shopspring/decimal v1.4.0 - github.com/smartcontractkit/chainlink-common v0.9.5-0.20250908133421-f9b356d61ca9 + github.com/smartcontractkit/chainlink-common v0.9.5-0.20250910160725-cdc5ae13efee github.com/smartcontractkit/chainlink-data-streams v0.1.2 github.com/smartcontractkit/chainlink-deployments-framework v0.44.0 github.com/smartcontractkit/chainlink-evm/gethwrappers v0.0.0-20250827130336-5922343458be diff --git a/system-tests/tests/go.sum b/system-tests/tests/go.sum index 067d4e38399..4920464161f 100644 --- a/system-tests/tests/go.sum +++ b/system-tests/tests/go.sum @@ -1721,8 +1721,8 @@ github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250908144012-8 github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250908144012-8184001834b5/go.mod h1:Ve1xD71bl193YIZQEoJMmBqLGQJdNs29bwbuObwvbhQ= github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20250908144012-8184001834b5 h1:QhcYGEhRLInr1/qh/3RJiVdvJ0nxBHKhPe65WLbSBnU= github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20250908144012-8184001834b5/go.mod h1:xtZNi6pOKdC3sLvokDvXOhgHzT+cyBqH/gWwvxTxqrg= -github.com/smartcontractkit/chainlink-common v0.9.5-0.20250908133421-f9b356d61ca9 h1:ZWE1acA9mP9RlA+wcGm2Q2eF0CXSGcTUwyBVwHiiv24= -github.com/smartcontractkit/chainlink-common v0.9.5-0.20250908133421-f9b356d61ca9/go.mod h1:b5KI42+P0ZmUXuvOFzSH9uIB8K83wvXq1GNVoY+ePeg= +github.com/smartcontractkit/chainlink-common v0.9.5-0.20250910160725-cdc5ae13efee h1:vpSqThcS6pHF0Qt0k7O5RRu5i6zh3V+DBlaZbbZjNTk= +github.com/smartcontractkit/chainlink-common v0.9.5-0.20250910160725-cdc5ae13efee/go.mod h1:1diMLMwfIACeqJFt7ySGaBrJIeUwHTLhVVYlb41EyKk= github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.1 h1:ca2z5OXgnbBPQRxpwXwBLJsUA1+cAp5ncfW4Ssvd6eY= github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.1/go.mod h1:NZv/qKYGFRnkjOYBouajnDfFoZ+WDa6H2KNmSf1dnKc= github.com/smartcontractkit/chainlink-common/pkg/monitoring v0.0.0-20250415235644-8703639403c7 h1:9wh1G+WbXwPVqf0cfSRSgwIcaXTQgvYezylEAfwmrbw= From 949106a95da42c39076b75f208af54ef345ef0fa Mon Sep 17 00:00:00 2001 From: Dmytro Haidashenko Date: Tue, 23 Sep 2025 16:04:25 +0200 Subject: [PATCH 02/21] bump plugins --- plugins/plugins.private.yaml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/plugins/plugins.private.yaml b/plugins/plugins.private.yaml index 133f4ab30ad..134f1b91c5c 100644 --- a/plugins/plugins.private.yaml +++ b/plugins/plugins.private.yaml @@ -10,36 +10,36 @@ defaults: plugins: cron: - moduleURI: "github.com/smartcontractkit/capabilities/cron" - gitRef: "01573000e81f91ea8b6a2641d49e5d9e02f58ef2" + gitRef: "be95745f97d18a2c054ded93a89c253cf0095c49" installPath: "github.com/smartcontractkit/capabilities/cron" flags: "-tags timetzdata" kvstore: - enabled: false moduleURI: "github.com/smartcontractkit/capabilities/kvstore" - gitRef: "01573000e81f91ea8b6a2641d49e5d9e02f58ef2" + gitRef: "be95745f97d18a2c054ded93a89c253cf0095c49" installPath: "github.com/smartcontractkit/capabilities/kvstore" readcontract: - moduleURI: "github.com/smartcontractkit/capabilities/readcontract" - gitRef: "01573000e81f91ea8b6a2641d49e5d9e02f58ef2" + gitRef: "be95745f97d18a2c054ded93a89c253cf0095c49" installPath: "github.com/smartcontractkit/capabilities/readcontract" consensus: - moduleURI: "github.com/smartcontractkit/capabilities/consensus" - gitRef: "01573000e81f91ea8b6a2641d49e5d9e02f58ef2" + gitRef: "be95745f97d18a2c054ded93a89c253cf0095c49" installPath: "github.com/smartcontractkit/capabilities/consensus" workflowevent: - enabled: false moduleURI: "github.com/smartcontractkit/capabilities/workflowevent" - gitRef: "01573000e81f91ea8b6a2641d49e5d9e02f58ef2" + gitRef: "be95745f97d18a2c054ded93a89c253cf0095c49" installPath: "github.com/smartcontractkit/capabilities/workflowevent" httpaction: - moduleURI: "github.com/smartcontractkit/capabilities/http_action" - gitRef: "01573000e81f91ea8b6a2641d49e5d9e02f58ef2" + gitRef: "be95745f97d18a2c054ded93a89c253cf0095c49" installPath: "github.com/smartcontractkit/capabilities/http_action" httptrigger: - moduleURI: "github.com/smartcontractkit/capabilities/http_trigger" - gitRef: "01573000e81f91ea8b6a2641d49e5d9e02f58ef2" + gitRef: "be95745f97d18a2c054ded93a89c253cf0095c49" installPath: "github.com/smartcontractkit/capabilities/http_trigger" evm: - moduleURI: "github.com/smartcontractkit/capabilities/chain_capabilities/evm" - gitRef: "01573000e81f91ea8b6a2641d49e5d9e02f58ef2" + gitRef: "be95745f97d18a2c054ded93a89c253cf0095c49" installPath: "github.com/smartcontractkit/capabilities/chain_capabilities/evm" From ea0952b49adc625d53d55d533877a5894227f94f Mon Sep 17 00:00:00 2001 From: Dmytro Haidashenko Date: Tue, 23 Sep 2025 17:37:22 +0200 Subject: [PATCH 03/21] custom ocr config --- .../operations/contracts/deploy_ocr3_op.go | 15 +++++--- system-tests/lib/cre/contracts/contracts.go | 34 ++++++++++++++++--- system-tests/lib/cre/contracts/keystone.go | 18 +++++----- .../lib/cre/environment/environment.go | 9 +++-- 4 files changed, 58 insertions(+), 18 deletions(-) diff --git a/deployment/keystone/changeset/operations/contracts/deploy_ocr3_op.go b/deployment/keystone/changeset/operations/contracts/deploy_ocr3_op.go index 023aeaa1b48..b87189e6d40 100644 --- a/deployment/keystone/changeset/operations/contracts/deploy_ocr3_op.go +++ b/deployment/keystone/changeset/operations/contracts/deploy_ocr3_op.go @@ -8,7 +8,8 @@ import ( "github.com/smartcontractkit/chainlink-deployments-framework/datastore" cldf "github.com/smartcontractkit/chainlink-deployments-framework/deployment" "github.com/smartcontractkit/chainlink-deployments-framework/operations" - contracts "github.com/smartcontractkit/chainlink/deployment/cre/ocr3/v2/changeset/operations/contracts" + "github.com/smartcontractkit/chainlink/deployment/cre/ocr3" + "github.com/smartcontractkit/chainlink/deployment/cre/ocr3/v2/changeset/operations/contracts" ) type DeployOCR3ContractSequenceDeps struct { @@ -16,8 +17,9 @@ type DeployOCR3ContractSequenceDeps struct { } type DeployOCR3ContractSequenceInput struct { - ChainSelector uint64 - Qualifier string // qualifier for the OCR3 contract deployment + ChainSelector uint64 + Qualifier string // qualifier for the OCR3 contract deployment + OffchainConfigType ocr3.OffchainConfigType // type of offchain config, e.g. consensus or chain capability } type DeployOCR3ContractSequenceOutput struct { @@ -37,7 +39,12 @@ var DeployOCR3ContractsSequence = operations.NewSequence[DeployOCR3ContractSeque as := datastore.NewMemoryDataStore() // OCR3 Contract - ocr3DeployReport, err := operations.ExecuteOperation(b, contracts.DeployOCR3, contracts.DeployOCR3Deps(deps), contracts.DeployOCR3Input{ChainSelector: input.ChainSelector, Qualifier: input.Qualifier}) + deployInput := contracts.DeployOCR3Input{ + ChainSelector: input.ChainSelector, + Qualifier: input.Qualifier, + OffchainConfigType: input.OffchainConfigType, + } + ocr3DeployReport, err := operations.ExecuteOperation(b, contracts.DeployOCR3, contracts.DeployOCR3Deps(deps), deployInput) if err != nil { return DeployOCR3ContractSequenceOutput{}, fmt.Errorf("failed to execution operation DeployOCR3: %w", err) } diff --git a/system-tests/lib/cre/contracts/contracts.go b/system-tests/lib/cre/contracts/contracts.go index 93abb04cb61..9e7e3f8af47 100644 --- a/system-tests/lib/cre/contracts/contracts.go +++ b/system-tests/lib/cre/contracts/contracts.go @@ -12,6 +12,7 @@ import ( "github.com/smartcontractkit/chainlink-deployments-framework/operations" "github.com/smartcontractkit/chainlink-testing-framework/framework" + "github.com/smartcontractkit/chainlink/deployment/cre/ocr3" "github.com/smartcontractkit/chainlink-evm/gethwrappers/data-feeds/generated/data_feeds_cache" kcr "github.com/smartcontractkit/chainlink-evm/gethwrappers/keystone/generated/capabilities_registry_1_1_0" @@ -423,6 +424,7 @@ func ConfigureKeystone(input cre.ConfigureKeystoneInput) error { } for chainSelector, evmOCR3Address := range input.EVMOCR3Addresses { + println("AAAA Configuring EVM OCR3 for chain selector:", chainSelector, "address:", evmOCR3Address.Hex()) // not sure how to map EVM chains to DONs, so for now we assume that there's only one DON that supports EVM chains evmDON, err := dons.shouldBeOneDon(cre.EVMCapability) if err != nil { @@ -541,16 +543,40 @@ func DefaultOCR3Config(topology *cre.Topology) (*keystone_changeset.OracleConfig MaxDurationShouldAcceptMillis: 1000, MaxDurationShouldTransmitMillis: 1000, MaxFaultyOracles: 1, - MaxQueryLengthBytes: 1000000, - MaxObservationLengthBytes: 1000000, - MaxReportLengthBytes: 1000000, - MaxBatchSize: 1000, UniqueReports: true, + OffchainConfigType: ocr3.OffchainConfigTypeConsensusCap, + OffchainConfig: &ocr3.ConsensusCapOffchainConfig{ + MaxQueryLengthBytes: 1000000, + MaxObservationLengthBytes: 1000000, + MaxReportLengthBytes: 1000000, + MaxBatchSize: 1000, + }, } return oracleConfig, nil } +func DefaultChainCapabilityOCR3Config(topology *cre.Topology) (*keystone_changeset.OracleConfig, error) { + cfg, err := DefaultOCR3Config(topology) + if err != nil { + return nil, fmt.Errorf("failed to generate default OCR3 config: %w", err) + } + + cfg.DeltaRoundMillis = 1000 + cfg.OffchainConfigType = ocr3.OffchainConfigTypeChainCap + const kib = 1024 + const mib = 1024 * kib + cfg.OffchainConfig = &ocr3.ChainCapOffchainConfig{ + MaxQueryLengthBytes: mib, + MaxObservationLengthBytes: 97 * kib, + MaxReportLengthBytes: mib, + MaxOutcomeLengthBytes: mib, + MaxReportCount: 1000, + MaxBatchSize: 200, + } + return cfg, nil +} + func FindAddressesForChain(addressBook cldf.AddressBook, chainSelector uint64, contractName string) (common.Address, cldf.TypeAndVersion, error) { addresses, err := addressBook.AddressesForChain(chainSelector) if err != nil { diff --git a/system-tests/lib/cre/contracts/keystone.go b/system-tests/lib/cre/contracts/keystone.go index 0c12ec24098..c00e1bdcaf7 100644 --- a/system-tests/lib/cre/contracts/keystone.go +++ b/system-tests/lib/cre/contracts/keystone.go @@ -16,6 +16,7 @@ import ( cldf "github.com/smartcontractkit/chainlink-deployments-framework/deployment" "github.com/smartcontractkit/chainlink-deployments-framework/operations" "github.com/smartcontractkit/chainlink-testing-framework/lib/utils/ptr" + "github.com/smartcontractkit/chainlink/deployment/cre/ocr3" "github.com/smartcontractkit/chainlink/deployment" creforwarder "github.com/smartcontractkit/chainlink/deployment/cre/forwarder" @@ -205,7 +206,7 @@ func DeployKeystoneContracts( // TODO move this deeper into the stack when we have all the p2p ids and can deploy and configure in one sequence // deploy OCR3 contract // we deploy OCR3 contract with a qualifier, so that we can distinguish it from other OCR3 contracts (Vault, EVM, ConsensusV2) - _, seqErr = deployOCR3Contract(OCR3ContractQualifier, homeChainSelector, allChainsCLDEnvironment, memoryDatastore) + _, seqErr = deployOCR3Contract(OCR3ContractQualifier, homeChainSelector, allChainsCLDEnvironment, memoryDatastore, ocr3.OffchainConfigTypeConsensusCap) if seqErr != nil { return nil, fmt.Errorf("failed to deploy OCR3 contract %w", seqErr) } @@ -213,7 +214,7 @@ func DeployKeystoneContracts( testLogger.Info().Msgf("Deployed OCR3 %s contract on chain %d at %s", input.ContractVersions[keystone_changeset.OCR3Capability.String()], homeChainSelector, ocr3Addr) // deploy DONTime contract - _, seqErr = deployOCR3Contract(DONTimeContractQualifier, homeChainSelector, allChainsCLDEnvironment, memoryDatastore) + _, seqErr = deployOCR3Contract(DONTimeContractQualifier, homeChainSelector, allChainsCLDEnvironment, memoryDatastore, ocr3.OffchainConfigTypeConsensusCap) // Switch to dedicated config type once available if seqErr != nil { return nil, fmt.Errorf("failed to deploy DONTime contract %w", seqErr) } @@ -222,7 +223,7 @@ func DeployKeystoneContracts( // deploy Vault OCR3 contract if vaultOCR3AddrFlag { - _, seqErr = deployOCR3Contract(VaultOCR3ContractQualifier, homeChainSelector, allChainsCLDEnvironment, memoryDatastore) + _, seqErr = deployOCR3Contract(VaultOCR3ContractQualifier, homeChainSelector, allChainsCLDEnvironment, memoryDatastore, ocr3.OffchainConfigTypeConsensusCap) // Switch to dedicated config type once available if seqErr != nil { return nil, fmt.Errorf("failed to deploy Vault OCR3 contract %w", seqErr) } @@ -235,7 +236,7 @@ func DeployKeystoneContracts( if evmOCR3AddrFlag { for chainID, selector := range chainsWithEVMCapability { qualifier := ks_contracts_op.CapabilityContractIdentifier(uint64(chainID)) - _, seqErr = deployOCR3Contract(qualifier, homeChainSelector, allChainsCLDEnvironment, memoryDatastore) + _, seqErr = deployOCR3Contract(qualifier, homeChainSelector, allChainsCLDEnvironment, memoryDatastore, ocr3.OffchainConfigTypeChainCap) if seqErr != nil { return nil, fmt.Errorf("failed to deploy EVM OCR3 contract for chainID %d, selector %d: %w", chainID, selector, seqErr) } @@ -247,7 +248,7 @@ func DeployKeystoneContracts( // deploy Consensus V2 OCR3 contract if consensusV2AddrFlag { - _, seqErr = deployOCR3Contract(ConsensusV2ContractQualifier, homeChainSelector, allChainsCLDEnvironment, memoryDatastore) + _, seqErr = deployOCR3Contract(ConsensusV2ContractQualifier, homeChainSelector, allChainsCLDEnvironment, memoryDatastore, ocr3.OffchainConfigTypeConsensusCap) if seqErr != nil { return nil, fmt.Errorf("failed to deploy Consensus V2 OCR3 contract %w", seqErr) } @@ -262,7 +263,7 @@ func DeployKeystoneContracts( }, nil } -func deployOCR3Contract(qualifier string, selector uint64, env *cldf.Environment, ds datastore.MutableDataStore) (*ks_contracts_op.DeployOCR3ContractSequenceOutput, error) { +func deployOCR3Contract(qualifier string, selector uint64, env *cldf.Environment, ds datastore.MutableDataStore, ocrCfgType ocr3.OffchainConfigType) (*ks_contracts_op.DeployOCR3ContractSequenceOutput, error) { ocr3DeployReport, err := operations.ExecuteSequence( env.OperationsBundle, ks_contracts_op.DeployOCR3ContractsSequence, @@ -270,8 +271,9 @@ func deployOCR3Contract(qualifier string, selector uint64, env *cldf.Environment Env: env, }, ks_contracts_op.DeployOCR3ContractSequenceInput{ - ChainSelector: selector, - Qualifier: qualifier, + ChainSelector: selector, + Qualifier: qualifier, + OffchainConfigType: ocrCfgType, }, ) if err != nil { diff --git a/system-tests/lib/cre/environment/environment.go b/system-tests/lib/cre/environment/environment.go index b1269bc2f6d..886f3c46ed4 100644 --- a/system-tests/lib/cre/environment/environment.go +++ b/system-tests/lib/cre/environment/environment.go @@ -418,12 +418,17 @@ func prepareKeystoneConfigurationInput(input SetupInput, homeChainSelector uint6 } configureKeystoneInput.VaultOCR3Config = *ocr3Config + chainOCR3Config, chainOCR3ConfigErr := crecontracts.DefaultChainCapabilityOCR3Config(topology) + if chainOCR3ConfigErr != nil { + return nil, pkgerrors.Wrap(chainOCR3ConfigErr, "failed to generate default Chain OCR3 config") + } + + configureKeystoneInput.EVMOCR3Config = *chainOCR3Config + defaultOcr3Config, defaultOcr3ConfigErr := crecontracts.DefaultOCR3Config(topology) if defaultOcr3ConfigErr != nil { return nil, pkgerrors.Wrap(defaultOcr3ConfigErr, "failed to generate default OCR3 config for EVM") } - configureKeystoneInput.EVMOCR3Config = *defaultOcr3Config - configureKeystoneInput.EVMOCR3Config.DeltaRoundMillis = 1000 // set delta round millis to 1 second for EVM OCR3 configureKeystoneInput.ConsensusV2OCR3Config = *defaultOcr3Config for _, capability := range input.Capabilities { From 7f27990d476d3ec37d42ea1c98fb7e6eb8e465e1 Mon Sep 17 00:00:00 2001 From: Dmytro Haidashenko Date: Tue, 23 Sep 2025 18:12:34 +0200 Subject: [PATCH 04/21] bump common --- core/scripts/go.mod | 4 ++-- core/scripts/go.sum | 8 ++++---- deployment/go.mod | 4 ++-- deployment/go.sum | 8 ++++---- go.mod | 4 ++-- go.sum | 8 ++++---- integration-tests/go.mod | 4 ++-- integration-tests/go.sum | 8 ++++---- integration-tests/load/go.mod | 4 ++-- integration-tests/load/go.sum | 8 ++++---- system-tests/lib/go.mod | 4 ++-- system-tests/lib/go.sum | 8 ++++---- system-tests/tests/go.mod | 4 ++-- system-tests/tests/go.sum | 8 ++++---- 14 files changed, 42 insertions(+), 42 deletions(-) diff --git a/core/scripts/go.mod b/core/scripts/go.mod index b29a6d37a7d..805585e0bd6 100644 --- a/core/scripts/go.mod +++ b/core/scripts/go.mod @@ -47,7 +47,7 @@ require ( github.com/shopspring/decimal v1.4.0 github.com/smartcontractkit/chainlink-automation v0.8.1 github.com/smartcontractkit/chainlink-ccip v0.1.1-solana.0.20250911201806-5a095deaeb52 - github.com/smartcontractkit/chainlink-common v0.9.5-0.20250916141452-e1a0681b6bae + github.com/smartcontractkit/chainlink-common v0.9.6-0.20250923160555-c46f8a658a31 github.com/smartcontractkit/chainlink-data-streams v0.1.2 github.com/smartcontractkit/chainlink-deployments-framework v0.49.0 github.com/smartcontractkit/chainlink-evm v0.3.4-0.20250915101441-709f87f7d401 @@ -479,7 +479,7 @@ require ( github.com/smartcontractkit/chainlink-aptos v0.0.0-20250916164650-970686360fbf // indirect github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250908144012-8184001834b5 // indirect github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20250908144012-8184001834b5 // indirect - github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.1 // indirect + github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.4 // indirect github.com/smartcontractkit/chainlink-feeds v0.1.2-0.20250227211209-7cd000095135 // indirect github.com/smartcontractkit/chainlink-framework/capabilities v0.0.0-20250818175541-3389ac08a563 // indirect github.com/smartcontractkit/chainlink-framework/chains v0.0.0-20250717121125-2350c82883e2 // indirect diff --git a/core/scripts/go.sum b/core/scripts/go.sum index 0a49e9f3130..18247b668d0 100644 --- a/core/scripts/go.sum +++ b/core/scripts/go.sum @@ -1597,10 +1597,10 @@ github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250908144012-8 github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250908144012-8184001834b5/go.mod h1:Ve1xD71bl193YIZQEoJMmBqLGQJdNs29bwbuObwvbhQ= github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20250908144012-8184001834b5 h1:QhcYGEhRLInr1/qh/3RJiVdvJ0nxBHKhPe65WLbSBnU= github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20250908144012-8184001834b5/go.mod h1:xtZNi6pOKdC3sLvokDvXOhgHzT+cyBqH/gWwvxTxqrg= -github.com/smartcontractkit/chainlink-common v0.9.5-0.20250916141452-e1a0681b6bae h1:ZWR3fF8vEtT+WeTtO5pSoaOExynn2MH6ThM1JzcRo4g= -github.com/smartcontractkit/chainlink-common v0.9.5-0.20250916141452-e1a0681b6bae/go.mod h1:Sjn789M++//bIH4vC5LYdo+0zvdkGvt0xz1LCxrYx1M= -github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.1 h1:ca2z5OXgnbBPQRxpwXwBLJsUA1+cAp5ncfW4Ssvd6eY= -github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.1/go.mod h1:NZv/qKYGFRnkjOYBouajnDfFoZ+WDa6H2KNmSf1dnKc= +github.com/smartcontractkit/chainlink-common v0.9.6-0.20250923160555-c46f8a658a31 h1:mqiTmGUQEmbO2BneyAsbuRR8QvngKOuzgujC4aYER9s= +github.com/smartcontractkit/chainlink-common v0.9.6-0.20250923160555-c46f8a658a31/go.mod h1:1r3aM96KHAESfnayJ3BTHCkP1qJS1BEG1r4czeoaXlA= +github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.4 h1:hvqATtrZ0iMRTI80cpBot/3JFbjz2j+2tvpfooVhRHw= +github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.4/go.mod h1:eKGyfTKzr0/PeR7qKN4l2FcW9p+HzyKUwAfGhm/5YZc= github.com/smartcontractkit/chainlink-common/pkg/monitoring v0.0.0-20250415235644-8703639403c7 h1:9wh1G+WbXwPVqf0cfSRSgwIcaXTQgvYezylEAfwmrbw= github.com/smartcontractkit/chainlink-common/pkg/monitoring v0.0.0-20250415235644-8703639403c7/go.mod h1:yaDOAZF6MNB+NGYpxGCUc+owIdKrjvFW0JODdTcQ3V0= github.com/smartcontractkit/chainlink-data-streams v0.1.2 h1:g/UmFJa/E1Zmc7NO20ob5SijxQen51DhnqTLr2f7BEc= diff --git a/deployment/go.mod b/deployment/go.mod index f960067fefb..b2cd73c8a19 100644 --- a/deployment/go.mod +++ b/deployment/go.mod @@ -39,7 +39,7 @@ require ( github.com/smartcontractkit/chainlink-ccip v0.1.1-solana.0.20250911201806-5a095deaeb52 github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250908144012-8184001834b5 github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20250908144012-8184001834b5 - github.com/smartcontractkit/chainlink-common v0.9.5-0.20250916141452-e1a0681b6bae + github.com/smartcontractkit/chainlink-common v0.9.6-0.20250923160555-c46f8a658a31 github.com/smartcontractkit/chainlink-deployments-framework v0.49.0 github.com/smartcontractkit/chainlink-evm v0.3.4-0.20250915101441-709f87f7d401 github.com/smartcontractkit/chainlink-evm/gethwrappers v0.0.0-20250827130336-5922343458be @@ -400,7 +400,7 @@ require ( github.com/sigurn/crc16 v0.0.0-20211026045750-20ab5afb07e3 // indirect github.com/sirupsen/logrus v1.9.3 // indirect github.com/smartcontractkit/chainlink-automation v0.8.1 // indirect - github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.1 // indirect + github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.4 // indirect github.com/smartcontractkit/chainlink-data-streams v0.1.2 // indirect github.com/smartcontractkit/chainlink-feeds v0.1.2-0.20250227211209-7cd000095135 // indirect github.com/smartcontractkit/chainlink-framework/capabilities v0.0.0-20250818175541-3389ac08a563 // indirect diff --git a/deployment/go.sum b/deployment/go.sum index a9cd5658575..708d7846bd6 100644 --- a/deployment/go.sum +++ b/deployment/go.sum @@ -1334,10 +1334,10 @@ github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250908144012-8 github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250908144012-8184001834b5/go.mod h1:Ve1xD71bl193YIZQEoJMmBqLGQJdNs29bwbuObwvbhQ= github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20250908144012-8184001834b5 h1:QhcYGEhRLInr1/qh/3RJiVdvJ0nxBHKhPe65WLbSBnU= github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20250908144012-8184001834b5/go.mod h1:xtZNi6pOKdC3sLvokDvXOhgHzT+cyBqH/gWwvxTxqrg= -github.com/smartcontractkit/chainlink-common v0.9.5-0.20250916141452-e1a0681b6bae h1:ZWR3fF8vEtT+WeTtO5pSoaOExynn2MH6ThM1JzcRo4g= -github.com/smartcontractkit/chainlink-common v0.9.5-0.20250916141452-e1a0681b6bae/go.mod h1:Sjn789M++//bIH4vC5LYdo+0zvdkGvt0xz1LCxrYx1M= -github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.1 h1:ca2z5OXgnbBPQRxpwXwBLJsUA1+cAp5ncfW4Ssvd6eY= -github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.1/go.mod h1:NZv/qKYGFRnkjOYBouajnDfFoZ+WDa6H2KNmSf1dnKc= +github.com/smartcontractkit/chainlink-common v0.9.6-0.20250923160555-c46f8a658a31 h1:mqiTmGUQEmbO2BneyAsbuRR8QvngKOuzgujC4aYER9s= +github.com/smartcontractkit/chainlink-common v0.9.6-0.20250923160555-c46f8a658a31/go.mod h1:1r3aM96KHAESfnayJ3BTHCkP1qJS1BEG1r4czeoaXlA= +github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.4 h1:hvqATtrZ0iMRTI80cpBot/3JFbjz2j+2tvpfooVhRHw= +github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.4/go.mod h1:eKGyfTKzr0/PeR7qKN4l2FcW9p+HzyKUwAfGhm/5YZc= github.com/smartcontractkit/chainlink-common/pkg/monitoring v0.0.0-20250415235644-8703639403c7 h1:9wh1G+WbXwPVqf0cfSRSgwIcaXTQgvYezylEAfwmrbw= github.com/smartcontractkit/chainlink-common/pkg/monitoring v0.0.0-20250415235644-8703639403c7/go.mod h1:yaDOAZF6MNB+NGYpxGCUc+owIdKrjvFW0JODdTcQ3V0= github.com/smartcontractkit/chainlink-data-streams v0.1.2 h1:g/UmFJa/E1Zmc7NO20ob5SijxQen51DhnqTLr2f7BEc= diff --git a/go.mod b/go.mod index 6eb127e3b32..bf3b368a6dc 100644 --- a/go.mod +++ b/go.mod @@ -84,7 +84,7 @@ require ( github.com/smartcontractkit/chainlink-ccip v0.1.1-solana.0.20250911201806-5a095deaeb52 github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250908144012-8184001834b5 github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20250908144012-8184001834b5 - github.com/smartcontractkit/chainlink-common v0.9.5-0.20250916141452-e1a0681b6bae + github.com/smartcontractkit/chainlink-common v0.9.6-0.20250923160555-c46f8a658a31 github.com/smartcontractkit/chainlink-data-streams v0.1.2 github.com/smartcontractkit/chainlink-evm v0.3.4-0.20250915101441-709f87f7d401 github.com/smartcontractkit/chainlink-evm/gethwrappers v0.0.0-20250827130336-5922343458be @@ -344,7 +344,7 @@ require ( github.com/sasha-s/go-deadlock v0.3.5 // indirect github.com/sethvargo/go-retry v0.2.4 // indirect github.com/shirou/gopsutil v3.21.11+incompatible // indirect - github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.1 // indirect + github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.4 // indirect github.com/smartcontractkit/chainlink-framework/metrics v0.0.0-20250717121125-2350c82883e2 // indirect github.com/smartcontractkit/chainlink-protos/rmn/v1.6/go v0.0.0-20250131130834-15e0d4cde2a6 // indirect github.com/smartcontractkit/chainlink-protos/svr v1.1.0 // indirect diff --git a/go.sum b/go.sum index f4d5e3d0429..fcb8c28eb65 100644 --- a/go.sum +++ b/go.sum @@ -1113,10 +1113,10 @@ github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250908144012-8 github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250908144012-8184001834b5/go.mod h1:Ve1xD71bl193YIZQEoJMmBqLGQJdNs29bwbuObwvbhQ= github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20250908144012-8184001834b5 h1:QhcYGEhRLInr1/qh/3RJiVdvJ0nxBHKhPe65WLbSBnU= github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20250908144012-8184001834b5/go.mod h1:xtZNi6pOKdC3sLvokDvXOhgHzT+cyBqH/gWwvxTxqrg= -github.com/smartcontractkit/chainlink-common v0.9.5-0.20250916141452-e1a0681b6bae h1:ZWR3fF8vEtT+WeTtO5pSoaOExynn2MH6ThM1JzcRo4g= -github.com/smartcontractkit/chainlink-common v0.9.5-0.20250916141452-e1a0681b6bae/go.mod h1:Sjn789M++//bIH4vC5LYdo+0zvdkGvt0xz1LCxrYx1M= -github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.1 h1:ca2z5OXgnbBPQRxpwXwBLJsUA1+cAp5ncfW4Ssvd6eY= -github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.1/go.mod h1:NZv/qKYGFRnkjOYBouajnDfFoZ+WDa6H2KNmSf1dnKc= +github.com/smartcontractkit/chainlink-common v0.9.6-0.20250923160555-c46f8a658a31 h1:mqiTmGUQEmbO2BneyAsbuRR8QvngKOuzgujC4aYER9s= +github.com/smartcontractkit/chainlink-common v0.9.6-0.20250923160555-c46f8a658a31/go.mod h1:1r3aM96KHAESfnayJ3BTHCkP1qJS1BEG1r4czeoaXlA= +github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.4 h1:hvqATtrZ0iMRTI80cpBot/3JFbjz2j+2tvpfooVhRHw= +github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.4/go.mod h1:eKGyfTKzr0/PeR7qKN4l2FcW9p+HzyKUwAfGhm/5YZc= github.com/smartcontractkit/chainlink-common/pkg/monitoring v0.0.0-20250415235644-8703639403c7 h1:9wh1G+WbXwPVqf0cfSRSgwIcaXTQgvYezylEAfwmrbw= github.com/smartcontractkit/chainlink-common/pkg/monitoring v0.0.0-20250415235644-8703639403c7/go.mod h1:yaDOAZF6MNB+NGYpxGCUc+owIdKrjvFW0JODdTcQ3V0= github.com/smartcontractkit/chainlink-data-streams v0.1.2 h1:g/UmFJa/E1Zmc7NO20ob5SijxQen51DhnqTLr2f7BEc= diff --git a/integration-tests/go.mod b/integration-tests/go.mod index 1cb25e9b24d..aafe3724a95 100644 --- a/integration-tests/go.mod +++ b/integration-tests/go.mod @@ -50,7 +50,7 @@ require ( github.com/smartcontractkit/chainlink-ccip v0.1.1-solana.0.20250911201806-5a095deaeb52 github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250908144012-8184001834b5 github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20250908144012-8184001834b5 - github.com/smartcontractkit/chainlink-common v0.9.5-0.20250916141452-e1a0681b6bae + github.com/smartcontractkit/chainlink-common v0.9.6-0.20250923160555-c46f8a658a31 github.com/smartcontractkit/chainlink-deployments-framework v0.49.0 github.com/smartcontractkit/chainlink-evm v0.3.4-0.20250915101441-709f87f7d401 github.com/smartcontractkit/chainlink-evm/gethwrappers v0.0.0-20250827130336-5922343458be @@ -482,7 +482,7 @@ require ( github.com/sirupsen/logrus v1.9.3 // indirect github.com/smartcontractkit/ccip-contract-examples/chains/evm v0.0.0-20250826190403-aed7f5f33cde // indirect github.com/smartcontractkit/ccip-owner-contracts v0.1.0 // indirect - github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.1 // indirect + github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.4 // indirect github.com/smartcontractkit/chainlink-data-streams v0.1.2 // indirect github.com/smartcontractkit/chainlink-feeds v0.1.2-0.20250227211209-7cd000095135 // indirect github.com/smartcontractkit/chainlink-framework/capabilities v0.0.0-20250818175541-3389ac08a563 // indirect diff --git a/integration-tests/go.sum b/integration-tests/go.sum index 6ffa49e478b..99ea3bf8c7d 100644 --- a/integration-tests/go.sum +++ b/integration-tests/go.sum @@ -1580,10 +1580,10 @@ github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250908144012-8 github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250908144012-8184001834b5/go.mod h1:Ve1xD71bl193YIZQEoJMmBqLGQJdNs29bwbuObwvbhQ= github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20250908144012-8184001834b5 h1:QhcYGEhRLInr1/qh/3RJiVdvJ0nxBHKhPe65WLbSBnU= github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20250908144012-8184001834b5/go.mod h1:xtZNi6pOKdC3sLvokDvXOhgHzT+cyBqH/gWwvxTxqrg= -github.com/smartcontractkit/chainlink-common v0.9.5-0.20250916141452-e1a0681b6bae h1:ZWR3fF8vEtT+WeTtO5pSoaOExynn2MH6ThM1JzcRo4g= -github.com/smartcontractkit/chainlink-common v0.9.5-0.20250916141452-e1a0681b6bae/go.mod h1:Sjn789M++//bIH4vC5LYdo+0zvdkGvt0xz1LCxrYx1M= -github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.1 h1:ca2z5OXgnbBPQRxpwXwBLJsUA1+cAp5ncfW4Ssvd6eY= -github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.1/go.mod h1:NZv/qKYGFRnkjOYBouajnDfFoZ+WDa6H2KNmSf1dnKc= +github.com/smartcontractkit/chainlink-common v0.9.6-0.20250923160555-c46f8a658a31 h1:mqiTmGUQEmbO2BneyAsbuRR8QvngKOuzgujC4aYER9s= +github.com/smartcontractkit/chainlink-common v0.9.6-0.20250923160555-c46f8a658a31/go.mod h1:1r3aM96KHAESfnayJ3BTHCkP1qJS1BEG1r4czeoaXlA= +github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.4 h1:hvqATtrZ0iMRTI80cpBot/3JFbjz2j+2tvpfooVhRHw= +github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.4/go.mod h1:eKGyfTKzr0/PeR7qKN4l2FcW9p+HzyKUwAfGhm/5YZc= github.com/smartcontractkit/chainlink-common/pkg/monitoring v0.0.0-20250415235644-8703639403c7 h1:9wh1G+WbXwPVqf0cfSRSgwIcaXTQgvYezylEAfwmrbw= github.com/smartcontractkit/chainlink-common/pkg/monitoring v0.0.0-20250415235644-8703639403c7/go.mod h1:yaDOAZF6MNB+NGYpxGCUc+owIdKrjvFW0JODdTcQ3V0= github.com/smartcontractkit/chainlink-data-streams v0.1.2 h1:g/UmFJa/E1Zmc7NO20ob5SijxQen51DhnqTLr2f7BEc= diff --git a/integration-tests/load/go.mod b/integration-tests/load/go.mod index 2deb0edbaac..e0982080a46 100644 --- a/integration-tests/load/go.mod +++ b/integration-tests/load/go.mod @@ -32,7 +32,7 @@ require ( github.com/smartcontractkit/chainlink-ccip v0.1.1-solana.0.20250911201806-5a095deaeb52 github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250908144012-8184001834b5 github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20250908144012-8184001834b5 - github.com/smartcontractkit/chainlink-common v0.9.5-0.20250916141452-e1a0681b6bae + github.com/smartcontractkit/chainlink-common v0.9.6-0.20250923160555-c46f8a658a31 github.com/smartcontractkit/chainlink-deployments-framework v0.49.0 github.com/smartcontractkit/chainlink-evm v0.3.4-0.20250915101441-709f87f7d401 github.com/smartcontractkit/chainlink-evm/gethwrappers v0.0.0-20250827130336-5922343458be @@ -471,7 +471,7 @@ require ( github.com/smartcontractkit/ccip-contract-examples/chains/evm v0.0.0-20250826190403-aed7f5f33cde // indirect github.com/smartcontractkit/ccip-owner-contracts v0.1.0 // indirect github.com/smartcontractkit/chainlink-automation v0.8.1 // indirect - github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.1 // indirect + github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.4 // indirect github.com/smartcontractkit/chainlink-data-streams v0.1.2 // indirect github.com/smartcontractkit/chainlink-feeds v0.1.2-0.20250227211209-7cd000095135 // indirect github.com/smartcontractkit/chainlink-framework/capabilities v0.0.0-20250818175541-3389ac08a563 // indirect diff --git a/integration-tests/load/go.sum b/integration-tests/load/go.sum index 24de54c41db..9df4951b49a 100644 --- a/integration-tests/load/go.sum +++ b/integration-tests/load/go.sum @@ -1559,10 +1559,10 @@ github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250908144012-8 github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250908144012-8184001834b5/go.mod h1:Ve1xD71bl193YIZQEoJMmBqLGQJdNs29bwbuObwvbhQ= github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20250908144012-8184001834b5 h1:QhcYGEhRLInr1/qh/3RJiVdvJ0nxBHKhPe65WLbSBnU= github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20250908144012-8184001834b5/go.mod h1:xtZNi6pOKdC3sLvokDvXOhgHzT+cyBqH/gWwvxTxqrg= -github.com/smartcontractkit/chainlink-common v0.9.5-0.20250916141452-e1a0681b6bae h1:ZWR3fF8vEtT+WeTtO5pSoaOExynn2MH6ThM1JzcRo4g= -github.com/smartcontractkit/chainlink-common v0.9.5-0.20250916141452-e1a0681b6bae/go.mod h1:Sjn789M++//bIH4vC5LYdo+0zvdkGvt0xz1LCxrYx1M= -github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.1 h1:ca2z5OXgnbBPQRxpwXwBLJsUA1+cAp5ncfW4Ssvd6eY= -github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.1/go.mod h1:NZv/qKYGFRnkjOYBouajnDfFoZ+WDa6H2KNmSf1dnKc= +github.com/smartcontractkit/chainlink-common v0.9.6-0.20250923160555-c46f8a658a31 h1:mqiTmGUQEmbO2BneyAsbuRR8QvngKOuzgujC4aYER9s= +github.com/smartcontractkit/chainlink-common v0.9.6-0.20250923160555-c46f8a658a31/go.mod h1:1r3aM96KHAESfnayJ3BTHCkP1qJS1BEG1r4czeoaXlA= +github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.4 h1:hvqATtrZ0iMRTI80cpBot/3JFbjz2j+2tvpfooVhRHw= +github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.4/go.mod h1:eKGyfTKzr0/PeR7qKN4l2FcW9p+HzyKUwAfGhm/5YZc= github.com/smartcontractkit/chainlink-common/pkg/monitoring v0.0.0-20250415235644-8703639403c7 h1:9wh1G+WbXwPVqf0cfSRSgwIcaXTQgvYezylEAfwmrbw= github.com/smartcontractkit/chainlink-common/pkg/monitoring v0.0.0-20250415235644-8703639403c7/go.mod h1:yaDOAZF6MNB+NGYpxGCUc+owIdKrjvFW0JODdTcQ3V0= github.com/smartcontractkit/chainlink-data-streams v0.1.2 h1:g/UmFJa/E1Zmc7NO20ob5SijxQen51DhnqTLr2f7BEc= diff --git a/system-tests/lib/go.mod b/system-tests/lib/go.mod index 82843fd57e0..43a495a03ee 100644 --- a/system-tests/lib/go.mod +++ b/system-tests/lib/go.mod @@ -33,7 +33,7 @@ require ( github.com/rs/zerolog v1.33.0 github.com/scylladb/go-reflectx v1.0.1 github.com/smartcontractkit/chain-selectors v1.0.71 - github.com/smartcontractkit/chainlink-common v0.9.5-0.20250916141452-e1a0681b6bae + github.com/smartcontractkit/chainlink-common v0.9.6-0.20250923160555-c46f8a658a31 github.com/smartcontractkit/chainlink-deployments-framework v0.49.0 github.com/smartcontractkit/chainlink-evm v0.3.4-0.20250915101441-709f87f7d401 github.com/smartcontractkit/chainlink-evm/gethwrappers v0.0.0-20250827130336-5922343458be @@ -452,7 +452,7 @@ require ( github.com/smartcontractkit/chainlink-ccip v0.1.1-solana.0.20250911201806-5a095deaeb52 // indirect github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250908144012-8184001834b5 // indirect github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20250908144012-8184001834b5 // indirect - github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.1 // indirect + github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.4 // indirect github.com/smartcontractkit/chainlink-data-streams v0.1.2 // indirect github.com/smartcontractkit/chainlink-feeds v0.1.2-0.20250227211209-7cd000095135 // indirect github.com/smartcontractkit/chainlink-framework/capabilities v0.0.0-20250818175541-3389ac08a563 // indirect diff --git a/system-tests/lib/go.sum b/system-tests/lib/go.sum index eaabf8f34fd..eaa688ed9a9 100644 --- a/system-tests/lib/go.sum +++ b/system-tests/lib/go.sum @@ -1575,10 +1575,10 @@ github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250908144012-8 github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250908144012-8184001834b5/go.mod h1:Ve1xD71bl193YIZQEoJMmBqLGQJdNs29bwbuObwvbhQ= github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20250908144012-8184001834b5 h1:QhcYGEhRLInr1/qh/3RJiVdvJ0nxBHKhPe65WLbSBnU= github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20250908144012-8184001834b5/go.mod h1:xtZNi6pOKdC3sLvokDvXOhgHzT+cyBqH/gWwvxTxqrg= -github.com/smartcontractkit/chainlink-common v0.9.5-0.20250916141452-e1a0681b6bae h1:ZWR3fF8vEtT+WeTtO5pSoaOExynn2MH6ThM1JzcRo4g= -github.com/smartcontractkit/chainlink-common v0.9.5-0.20250916141452-e1a0681b6bae/go.mod h1:Sjn789M++//bIH4vC5LYdo+0zvdkGvt0xz1LCxrYx1M= -github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.1 h1:ca2z5OXgnbBPQRxpwXwBLJsUA1+cAp5ncfW4Ssvd6eY= -github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.1/go.mod h1:NZv/qKYGFRnkjOYBouajnDfFoZ+WDa6H2KNmSf1dnKc= +github.com/smartcontractkit/chainlink-common v0.9.6-0.20250923160555-c46f8a658a31 h1:mqiTmGUQEmbO2BneyAsbuRR8QvngKOuzgujC4aYER9s= +github.com/smartcontractkit/chainlink-common v0.9.6-0.20250923160555-c46f8a658a31/go.mod h1:1r3aM96KHAESfnayJ3BTHCkP1qJS1BEG1r4czeoaXlA= +github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.4 h1:hvqATtrZ0iMRTI80cpBot/3JFbjz2j+2tvpfooVhRHw= +github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.4/go.mod h1:eKGyfTKzr0/PeR7qKN4l2FcW9p+HzyKUwAfGhm/5YZc= github.com/smartcontractkit/chainlink-common/pkg/monitoring v0.0.0-20250415235644-8703639403c7 h1:9wh1G+WbXwPVqf0cfSRSgwIcaXTQgvYezylEAfwmrbw= github.com/smartcontractkit/chainlink-common/pkg/monitoring v0.0.0-20250415235644-8703639403c7/go.mod h1:yaDOAZF6MNB+NGYpxGCUc+owIdKrjvFW0JODdTcQ3V0= github.com/smartcontractkit/chainlink-data-streams v0.1.2 h1:g/UmFJa/E1Zmc7NO20ob5SijxQen51DhnqTLr2f7BEc= diff --git a/system-tests/tests/go.mod b/system-tests/tests/go.mod index a48829d513e..e7f98ee2d64 100644 --- a/system-tests/tests/go.mod +++ b/system-tests/tests/go.mod @@ -34,7 +34,7 @@ require ( github.com/prometheus/common v0.65.0 github.com/rs/zerolog v1.33.0 github.com/shopspring/decimal v1.4.0 - github.com/smartcontractkit/chainlink-common v0.9.5-0.20250916141452-e1a0681b6bae + github.com/smartcontractkit/chainlink-common v0.9.6-0.20250923160555-c46f8a658a31 github.com/smartcontractkit/chainlink-data-streams v0.1.2 github.com/smartcontractkit/chainlink-deployments-framework v0.49.0 github.com/smartcontractkit/chainlink-evm/gethwrappers v0.0.0-20250827130336-5922343458be @@ -533,7 +533,7 @@ require ( github.com/smartcontractkit/chainlink-ccip v0.1.1-solana.0.20250911201806-5a095deaeb52 // indirect github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250908144012-8184001834b5 // indirect github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20250908144012-8184001834b5 // indirect - github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.1 // indirect + github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.4 // indirect github.com/smartcontractkit/chainlink-evm v0.3.4-0.20250915101441-709f87f7d401 // indirect github.com/smartcontractkit/chainlink-feeds v0.1.2-0.20250227211209-7cd000095135 // indirect github.com/smartcontractkit/chainlink-framework/capabilities v0.0.0-20250818175541-3389ac08a563 // indirect diff --git a/system-tests/tests/go.sum b/system-tests/tests/go.sum index 7d02680d1c1..f2a0f2dfa95 100644 --- a/system-tests/tests/go.sum +++ b/system-tests/tests/go.sum @@ -1778,10 +1778,10 @@ github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250908144012-8 github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250908144012-8184001834b5/go.mod h1:Ve1xD71bl193YIZQEoJMmBqLGQJdNs29bwbuObwvbhQ= github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20250908144012-8184001834b5 h1:QhcYGEhRLInr1/qh/3RJiVdvJ0nxBHKhPe65WLbSBnU= github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20250908144012-8184001834b5/go.mod h1:xtZNi6pOKdC3sLvokDvXOhgHzT+cyBqH/gWwvxTxqrg= -github.com/smartcontractkit/chainlink-common v0.9.5-0.20250916141452-e1a0681b6bae h1:ZWR3fF8vEtT+WeTtO5pSoaOExynn2MH6ThM1JzcRo4g= -github.com/smartcontractkit/chainlink-common v0.9.5-0.20250916141452-e1a0681b6bae/go.mod h1:Sjn789M++//bIH4vC5LYdo+0zvdkGvt0xz1LCxrYx1M= -github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.1 h1:ca2z5OXgnbBPQRxpwXwBLJsUA1+cAp5ncfW4Ssvd6eY= -github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.1/go.mod h1:NZv/qKYGFRnkjOYBouajnDfFoZ+WDa6H2KNmSf1dnKc= +github.com/smartcontractkit/chainlink-common v0.9.6-0.20250923160555-c46f8a658a31 h1:mqiTmGUQEmbO2BneyAsbuRR8QvngKOuzgujC4aYER9s= +github.com/smartcontractkit/chainlink-common v0.9.6-0.20250923160555-c46f8a658a31/go.mod h1:1r3aM96KHAESfnayJ3BTHCkP1qJS1BEG1r4czeoaXlA= +github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.4 h1:hvqATtrZ0iMRTI80cpBot/3JFbjz2j+2tvpfooVhRHw= +github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.4/go.mod h1:eKGyfTKzr0/PeR7qKN4l2FcW9p+HzyKUwAfGhm/5YZc= github.com/smartcontractkit/chainlink-common/pkg/monitoring v0.0.0-20250415235644-8703639403c7 h1:9wh1G+WbXwPVqf0cfSRSgwIcaXTQgvYezylEAfwmrbw= github.com/smartcontractkit/chainlink-common/pkg/monitoring v0.0.0-20250415235644-8703639403c7/go.mod h1:yaDOAZF6MNB+NGYpxGCUc+owIdKrjvFW0JODdTcQ3V0= github.com/smartcontractkit/chainlink-data-streams v0.1.2 h1:g/UmFJa/E1Zmc7NO20ob5SijxQen51DhnqTLr2f7BEc= From 7dd7bad3498291cbf7f5917c9d193bab83e6acba Mon Sep 17 00:00:00 2001 From: Dmytro Haidashenko Date: Tue, 23 Sep 2025 18:13:11 +0200 Subject: [PATCH 05/21] bump evm plugin --- plugins/plugins.private.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/plugins.private.yaml b/plugins/plugins.private.yaml index a31f8a8c6fd..a340665dc65 100644 --- a/plugins/plugins.private.yaml +++ b/plugins/plugins.private.yaml @@ -41,7 +41,7 @@ plugins: installPath: "github.com/smartcontractkit/capabilities/http_trigger" evm: - moduleURI: "github.com/smartcontractkit/capabilities/chain_capabilities/evm" - gitRef: "f972e04023347f532ed174979d97ae3687f4a58f" + gitRef: "be95745f97d18a2c054ded93a89c253cf0095c49" installPath: "github.com/smartcontractkit/capabilities/chain_capabilities/evm" mock: - moduleURI: "github.com/smartcontractkit/capabilities/mock" From 4eecd7a47b1e2bf3531bc852434299309c9e8396 Mon Sep 17 00:00:00 2001 From: Dmytro Haidashenko Date: Tue, 23 Sep 2025 18:19:05 +0200 Subject: [PATCH 06/21] remove merge artifcat --- .../v2/changeset/sequences/deploy_ocr3.go | 100 ------------------ 1 file changed, 100 deletions(-) delete mode 100644 deployment/cre/ocr3/v2/changeset/sequences/deploy_ocr3.go diff --git a/deployment/cre/ocr3/v2/changeset/sequences/deploy_ocr3.go b/deployment/cre/ocr3/v2/changeset/sequences/deploy_ocr3.go deleted file mode 100644 index e0c318bb527..00000000000 --- a/deployment/cre/ocr3/v2/changeset/sequences/deploy_ocr3.go +++ /dev/null @@ -1,100 +0,0 @@ -package sequences - -import ( - "fmt" - "io" - - "github.com/Masterminds/semver/v3" - "github.com/ethereum/go-ethereum/common" - - cldf "github.com/smartcontractkit/chainlink-deployments-framework/deployment" - "github.com/smartcontractkit/chainlink-deployments-framework/operations" - - "github.com/smartcontractkit/chainlink/deployment/cre/ocr3" - "github.com/smartcontractkit/chainlink/deployment/cre/ocr3/v2/changeset/operations/contracts" -) - -type DeployOCR3Deps struct { - Env *cldf.Environment - WriteGeneratedConfig io.Writer -} - -type DeployOCR3Input struct { - ChainSelector uint64 - Qualifier string - - DON contracts.DonNodeSet - OracleConfig *ocr3.OracleConfig - DryRun bool - - MCMSConfig *ocr3.MCMSConfig -} - -func (c DeployOCR3Input) Validate() error { - if c.OracleConfig == nil { - return fmt.Errorf("OracleConfig is required") - } - - if c.OracleConfig.OffchainConfigType == "" { - return fmt.Errorf("OracleConfig.OffchainConfigType is required") - } - return nil -} - -type DeployOCR3Output struct { - ChainSelector uint64 - Address string - Type string - Version string - Labels []string -} - -var DeployOCR3 = operations.NewSequence( - "deploy-ocr3", - semver.MustParse("1.0.0"), - "Deploys the OCR3 contract", - func(b operations.Bundle, deps DeployOCR3Deps, input DeployOCR3Input) (DeployOCR3Output, error) { - // Step 1: Deploy OCR3 Contract for Consensus Capability - ocr3DeploymentReport, err := operations.ExecuteOperation(b, contracts.DeployOCR3, contracts.DeployOCR3Deps{Env: deps.Env}, contracts.DeployOCR3Input{ - ChainSelector: input.ChainSelector, - Qualifier: input.Qualifier, - OffchainConfigType: input.OracleConfig.OffchainConfigType, - }) - if err != nil { - return DeployOCR3Output{}, err - } - - ocr3ContractAddress := common.HexToAddress(ocr3DeploymentReport.Output.Address) - - // Update the environment datastore to include the newly deployed OCR3 contract - deps.Env.DataStore = ocr3DeploymentReport.Output.Datastore - - // Step 3: Configure OCR3 Contract with DONs - deps.Env.Logger.Infow("Configuring OCR3 contract with DON", - "nodes", input.DON.NodeIDs, - "dryRun", input.DryRun) - - _, err = operations.ExecuteOperation(b, contracts.ConfigureOCR3, contracts.ConfigureOCR3Deps{ - Env: deps.Env, - WriteGeneratedConfig: deps.WriteGeneratedConfig, - }, contracts.ConfigureOCR3Input{ - ContractAddress: &ocr3ContractAddress, - ChainSelector: input.ChainSelector, - DON: input.DON, - Config: input.OracleConfig, - DryRun: input.DryRun, - MCMSConfig: input.MCMSConfig, - }) - if err != nil { - return DeployOCR3Output{}, fmt.Errorf("failed to configure OCR3 contract: %w", err) - } - - return DeployOCR3Output{ - ChainSelector: ocr3DeploymentReport.Output.ChainSelector, - Address: ocr3DeploymentReport.Output.Address, - Type: ocr3DeploymentReport.Output.Type, - Version: ocr3DeploymentReport.Output.Version, - Labels: ocr3DeploymentReport.Output.Labels, - }, nil - }, -) From f2a5e3d7a0f8a604a55e428207cdec722c5ec314 Mon Sep 17 00:00:00 2001 From: Dmytro Haidashenko Date: Tue, 23 Sep 2025 18:57:42 +0200 Subject: [PATCH 07/21] bump chainlink common --- core/scripts/go.mod | 4 ++-- go.mod | 2 +- go.sum | 4 ++-- system-tests/lib/cre/contracts/contracts.go | 21 +++++++++++++++++++++ system-tests/lib/cre/contracts/keystone.go | 4 ++-- 5 files changed, 28 insertions(+), 7 deletions(-) diff --git a/core/scripts/go.mod b/core/scripts/go.mod index 805585e0bd6..ef4436f0859 100644 --- a/core/scripts/go.mod +++ b/core/scripts/go.mod @@ -59,8 +59,8 @@ require ( github.com/smartcontractkit/chainlink-testing-framework/lib v1.54.5 github.com/smartcontractkit/chainlink-testing-framework/seth v1.51.2 github.com/smartcontractkit/chainlink/core/scripts/cre/environment/examples/workflows/v1/proof-of-reserve/cron-based v0.0.0-20250826151008-ae5ec0ee6f2c - github.com/smartcontractkit/chainlink/core/scripts/cre/environment/examples/workflows/v1/proof-of-reserve/web-trigger-based v0.0.0-20250826151008-ae5ec0ee6f2c - github.com/smartcontractkit/chainlink/system-tests/lib v0.0.0-20250908212658-66264730d63f + github.com/smartcontractkit/chainlink/core/scripts/cre/environment/examples/workflows/v1/proof-of-reserve/web-trigger-based v0.0.0-00010101000000-000000000000 + github.com/smartcontractkit/chainlink/system-tests/lib v0.0.0-00010101000000-000000000000 github.com/smartcontractkit/cre-sdk-go/capabilities/scheduler/cron v0.7.0 github.com/smartcontractkit/libocr v0.0.0-20250905115425-2785a5cee79d github.com/spf13/cobra v1.9.1 diff --git a/go.mod b/go.mod index bf3b368a6dc..e6c5e4b2730 100644 --- a/go.mod +++ b/go.mod @@ -84,7 +84,7 @@ require ( github.com/smartcontractkit/chainlink-ccip v0.1.1-solana.0.20250911201806-5a095deaeb52 github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250908144012-8184001834b5 github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20250908144012-8184001834b5 - github.com/smartcontractkit/chainlink-common v0.9.6-0.20250923160555-c46f8a658a31 + github.com/smartcontractkit/chainlink-common v0.9.5-0.20250923165240-d84b8ca3258c github.com/smartcontractkit/chainlink-data-streams v0.1.2 github.com/smartcontractkit/chainlink-evm v0.3.4-0.20250915101441-709f87f7d401 github.com/smartcontractkit/chainlink-evm/gethwrappers v0.0.0-20250827130336-5922343458be diff --git a/go.sum b/go.sum index fcb8c28eb65..73dfa8bd435 100644 --- a/go.sum +++ b/go.sum @@ -1113,8 +1113,8 @@ github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250908144012-8 github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250908144012-8184001834b5/go.mod h1:Ve1xD71bl193YIZQEoJMmBqLGQJdNs29bwbuObwvbhQ= github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20250908144012-8184001834b5 h1:QhcYGEhRLInr1/qh/3RJiVdvJ0nxBHKhPe65WLbSBnU= github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20250908144012-8184001834b5/go.mod h1:xtZNi6pOKdC3sLvokDvXOhgHzT+cyBqH/gWwvxTxqrg= -github.com/smartcontractkit/chainlink-common v0.9.6-0.20250923160555-c46f8a658a31 h1:mqiTmGUQEmbO2BneyAsbuRR8QvngKOuzgujC4aYER9s= -github.com/smartcontractkit/chainlink-common v0.9.6-0.20250923160555-c46f8a658a31/go.mod h1:1r3aM96KHAESfnayJ3BTHCkP1qJS1BEG1r4czeoaXlA= +github.com/smartcontractkit/chainlink-common v0.9.5-0.20250923165240-d84b8ca3258c h1:D8SCY81GFT9G4iy1/DiuQjmwAGK62SLAWFjrx7krmS4= +github.com/smartcontractkit/chainlink-common v0.9.5-0.20250923165240-d84b8ca3258c/go.mod h1:Sjn789M++//bIH4vC5LYdo+0zvdkGvt0xz1LCxrYx1M= github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.4 h1:hvqATtrZ0iMRTI80cpBot/3JFbjz2j+2tvpfooVhRHw= github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.4/go.mod h1:eKGyfTKzr0/PeR7qKN4l2FcW9p+HzyKUwAfGhm/5YZc= github.com/smartcontractkit/chainlink-common/pkg/monitoring v0.0.0-20250415235644-8703639403c7 h1:9wh1G+WbXwPVqf0cfSRSgwIcaXTQgvYezylEAfwmrbw= diff --git a/system-tests/lib/cre/contracts/contracts.go b/system-tests/lib/cre/contracts/contracts.go index db0939ae416..e9d40d512d5 100644 --- a/system-tests/lib/cre/contracts/contracts.go +++ b/system-tests/lib/cre/contracts/contracts.go @@ -796,6 +796,27 @@ func DefaultOCR3Config(topology *cre.Topology) (*keystone_changeset.OracleConfig return oracleConfig, nil } +func DefaultChainCapabilityOCR3Config(topology *cre.Topology) (*keystone_changeset.OracleConfig, error) { + cfg, err := DefaultOCR3Config(topology) + if err != nil { + return nil, fmt.Errorf("failed to generate default OCR3 config: %w", err) + } + + cfg.DeltaRoundMillis = 1000 + cfg.OffchainConfigType = ocr3.OffchainConfigTypeChainCap + const kib = 1024 + const mib = 1024 * kib + cfg.OffchainConfig = &ocr3.ChainCapOffchainConfig{ + MaxQueryLengthBytes: mib, + MaxObservationLengthBytes: 97 * kib, + MaxReportLengthBytes: mib, + MaxOutcomeLengthBytes: mib, + MaxReportCount: 1000, + MaxBatchSize: 200, + } + return cfg, nil +} + func DKGReportingPluginConfig(topology *cre.Topology, nodeSets []*cre.CapabilitiesAwareNodeSet) (*dkgocrtypes.ReportingPluginConfig, error) { cfg := &dkgocrtypes.ReportingPluginConfig{ T: 1, diff --git a/system-tests/lib/cre/contracts/keystone.go b/system-tests/lib/cre/contracts/keystone.go index c261e48ea9e..f1a75cd57e1 100644 --- a/system-tests/lib/cre/contracts/keystone.go +++ b/system-tests/lib/cre/contracts/keystone.go @@ -246,8 +246,8 @@ func DeployKeystoneContracts( // deploy Vault OCR3 contract if vaultOCR3AddrFlag { - _, seqErr = deployOCR3Contract(VaultOCR3ContractQualifier, homeChainSelector, input.CldfEnvironment, memoryDatastore, ocr3.OffchainConfigTypeConsensusCap) // Switch to dedicated config type once available - if seqErr != nil { + report, err := deployVaultContracts(VaultOCR3ContractQualifier, homeChainSelector, input.CldfEnvironment, memoryDatastore) + if err != nil { return nil, fmt.Errorf("failed to deploy Vault OCR3 contract %w", seqErr) } From 4eeb242285ad56056ec726876baaa10407d5853a Mon Sep 17 00:00:00 2001 From: Dmytro Haidashenko Date: Wed, 24 Sep 2025 14:28:27 +0200 Subject: [PATCH 08/21] fix offchain config validation on ocr3 deployment --- .../ocr3/v2/changeset/operations/contracts/deploy_ocr3.go | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/deployment/cre/ocr3/v2/changeset/operations/contracts/deploy_ocr3.go b/deployment/cre/ocr3/v2/changeset/operations/contracts/deploy_ocr3.go index 88f48638afd..ec4b3b7f1bf 100644 --- a/deployment/cre/ocr3/v2/changeset/operations/contracts/deploy_ocr3.go +++ b/deployment/cre/ocr3/v2/changeset/operations/contracts/deploy_ocr3.go @@ -44,10 +44,6 @@ var DeployOCR3 = operations.NewOperation[DeployOCR3Input, DeployOCR3Output, Depl func(b operations.Bundle, deps DeployOCR3Deps, input DeployOCR3Input) (DeployOCR3Output, error) { lggr := deps.Env.Logger - if input.OffchainConfigType == "" { - return DeployOCR3Output{}, fmt.Errorf("OffchainConfigType is required") - } - // Get the target chain chain, ok := deps.Env.BlockChains.EVMChains()[input.ChainSelector] if !ok { @@ -86,7 +82,9 @@ var DeployOCR3 = operations.NewOperation[DeployOCR3Input, DeployOCR3Output, Depl labels.Add(label) } - labels.Add(input.OffchainConfigType.String()) + if input.OffchainConfigType != "" { + labels.Add(input.OffchainConfigType.String()) + } addressRef := datastore.AddressRef{ ChainSelector: chain.Selector, From 093fbcc5f7bdc55dac7af7abc0135948f30c6ee4 Mon Sep 17 00:00:00 2001 From: Dmytro Haidashenko Date: Wed, 24 Sep 2025 14:29:41 +0200 Subject: [PATCH 09/21] fix vault error printing --- system-tests/lib/cre/contracts/keystone.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/system-tests/lib/cre/contracts/keystone.go b/system-tests/lib/cre/contracts/keystone.go index f1a75cd57e1..24ccbb0b060 100644 --- a/system-tests/lib/cre/contracts/keystone.go +++ b/system-tests/lib/cre/contracts/keystone.go @@ -248,7 +248,7 @@ func DeployKeystoneContracts( if vaultOCR3AddrFlag { report, err := deployVaultContracts(VaultOCR3ContractQualifier, homeChainSelector, input.CldfEnvironment, memoryDatastore) if err != nil { - return nil, fmt.Errorf("failed to deploy Vault OCR3 contract %w", seqErr) + return nil, fmt.Errorf("failed to deploy Vault OCR3 contract %w", err) } vaultOCR3Addr := report.PluginAddress From 705b45c0cb4c2afb42119503930f3973d1152043 Mon Sep 17 00:00:00 2001 From: Dmytro Haidashenko Date: Wed, 24 Sep 2025 14:30:30 +0200 Subject: [PATCH 10/21] bump evm capability --- plugins/plugins.private.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/plugins.private.yaml b/plugins/plugins.private.yaml index a340665dc65..bf764c76391 100644 --- a/plugins/plugins.private.yaml +++ b/plugins/plugins.private.yaml @@ -41,7 +41,7 @@ plugins: installPath: "github.com/smartcontractkit/capabilities/http_trigger" evm: - moduleURI: "github.com/smartcontractkit/capabilities/chain_capabilities/evm" - gitRef: "be95745f97d18a2c054ded93a89c253cf0095c49" + gitRef: "c41b9d1734341f0afc451de7a19ccc0ec2344a13" installPath: "github.com/smartcontractkit/capabilities/chain_capabilities/evm" mock: - moduleURI: "github.com/smartcontractkit/capabilities/mock" From bf74cbbe56d145a825f69c13e994213b74b47b50 Mon Sep 17 00:00:00 2001 From: Dmytro Haidashenko Date: Wed, 24 Sep 2025 15:30:56 +0200 Subject: [PATCH 11/21] linter fixes --- deployment/cre/ocr3/oracle_config.go | 13 +++++++------ deployment/cre/ocr3/oracle_config_test.go | 6 +++--- .../changeset/operations/contracts/deploy_ocr3.go | 2 +- 3 files changed, 11 insertions(+), 10 deletions(-) diff --git a/deployment/cre/ocr3/oracle_config.go b/deployment/cre/ocr3/oracle_config.go index b943842d5c4..3a0aa63a624 100644 --- a/deployment/cre/ocr3/oracle_config.go +++ b/deployment/cre/ocr3/oracle_config.go @@ -2,6 +2,7 @@ package ocr3 import ( "encoding/json" + "errors" "fmt" "time" @@ -73,7 +74,7 @@ func (oc OracleConfig) MarshalJSON() ([]byte, error) { if oc.OffchainConfigType == "" && oc.OffchainConfig != nil { _, ok := oc.OffchainConfig.(*ConsensusCapOffchainConfig) if !ok { - return nil, fmt.Errorf("OffchainConfigType must be set when OffchainConfig is set") + return nil, errors.New("OffchainConfigType must be set when OffchainConfig is set") } } @@ -82,15 +83,15 @@ func (oc OracleConfig) MarshalJSON() ([]byte, error) { return nil, fmt.Errorf("failed to marshal OffchainConfig: %w", err) } - oc.RawOffchainConfig = offchainConfigAsJSON + cfgToMarshal := oc + cfgToMarshal.RawOffchainConfig = offchainConfigAsJSON type aliasT OracleConfig - asJSON, err := json.Marshal((aliasT)(oc)) + asJSON, err := json.Marshal((aliasT)(cfgToMarshal)) if err != nil { return nil, fmt.Errorf("failed to marshal OracleConfig: %w", err) } - oc.RawOffchainConfig = nil // clear raw data after marshalling return asJSON, nil } @@ -101,8 +102,8 @@ type OffchainConfig interface { type OffchainConfigType string -func (Oct OffchainConfigType) String() string { - return string(Oct) +func (t OffchainConfigType) String() string { + return string(t) } const ( diff --git a/deployment/cre/ocr3/oracle_config_test.go b/deployment/cre/ocr3/oracle_config_test.go index 91a0d8ba14c..7abd320f5e0 100644 --- a/deployment/cre/ocr3/oracle_config_test.go +++ b/deployment/cre/ocr3/oracle_config_test.go @@ -14,11 +14,11 @@ func TestOracleConfig_JSON(t *testing.T) { err := json.Unmarshal([]byte(ocr3Cfg), &cfg) require.NoError(t, err) // ensure the values were correctly unmarshalled - require.Equal(t, cfg.MaxFaultyOracles, 3) + require.Equal(t, 3, cfg.MaxFaultyOracles) require.IsType(t, &ConsensusCapOffchainConfig{}, cfg.OffchainConfig) consensusCapCfg := cfg.OffchainConfig.(*ConsensusCapOffchainConfig) - require.Equal(t, consensusCapCfg.RequestTimeout, 30*time.Second) - require.Equal(t, consensusCapCfg.MaxBatchSize, uint32(20)) + require.Equal(t, 30*time.Second, consensusCapCfg.RequestTimeout) + require.Equal(t, uint32(20), consensusCapCfg.MaxBatchSize) // ensure that marshalling back to JSON works asJSON, err := json.Marshal(cfg) require.NoError(t, err) diff --git a/deployment/cre/ocr3/v2/changeset/operations/contracts/deploy_ocr3.go b/deployment/cre/ocr3/v2/changeset/operations/contracts/deploy_ocr3.go index ec4b3b7f1bf..d45074454ba 100644 --- a/deployment/cre/ocr3/v2/changeset/operations/contracts/deploy_ocr3.go +++ b/deployment/cre/ocr3/v2/changeset/operations/contracts/deploy_ocr3.go @@ -78,7 +78,7 @@ var DeployOCR3 = operations.NewOperation[DeployOCR3Input, DeployOCR3Output, Depl // Create labels from the operation output labels := datastore.NewLabelSet() - for _, label := range append(tv.Labels.List()) { + for _, label := range tv.Labels.List() { labels.Add(label) } From e93cb8e075f8224bcaca9c4436bbcf36eda8805a Mon Sep 17 00:00:00 2001 From: Dmytro Haidashenko Date: Thu, 25 Sep 2025 17:51:57 +0200 Subject: [PATCH 12/21] Enable input template generation for offchain config --- deployment/cre/ocr3/config.go | 15 +- deployment/cre/ocr3/config_test.go | 18 +-- deployment/cre/ocr3/oracle_config.go | 136 +++++------------- deployment/cre/ocr3/oracle_config_test.go | 72 +++++++++- .../cre/ocr3/v2/changeset/deploy_ocr3.go | 6 +- .../operations/contracts/deploy_ocr3.go | 12 +- .../keystone/changeset/view_contracts.go | 3 +- system-tests/lib/cre/contracts/contracts.go | 3 +- 8 files changed, 133 insertions(+), 132 deletions(-) diff --git a/deployment/cre/ocr3/config.go b/deployment/cre/ocr3/config.go index a307957588d..fcc74d2b199 100644 --- a/deployment/cre/ocr3/config.go +++ b/deployment/cre/ocr3/config.go @@ -234,14 +234,21 @@ func GenerateOCR3Config(cfg OracleConfig, nca []NodeKeys, secrets focr.OCRSecret cfgBytes := reportingPluginConfigOverride if cfgBytes == nil { - if cfg.OffchainConfig != nil { - offchainCfgAsProto, err := cfg.OffchainConfig.ToProto() + var offchainCfg offchainConfig + switch { + case cfg.ConsensusCapOffchainConfig != nil: + offchainCfg = cfg.ConsensusCapOffchainConfig + case cfg.ChainCapOffchainConfig != nil: + offchainCfg = cfg.ChainCapOffchainConfig + } + if offchainCfg != nil { + offchainCfgAsProto, err := offchainCfg.ToProto() if err != nil { - return OCR2OracleConfig{}, fmt.Errorf("failed to convert offchain config to proto: %w", err) + return OCR2OracleConfig{}, fmt.Errorf("failed to convert offchainConfig to proto: %w", err) } cfgBytes, err = proto.Marshal(offchainCfgAsProto) if err != nil { - return OCR2OracleConfig{}, fmt.Errorf("failed to marshal ReportingPluginConfig: %w", err) + return OCR2OracleConfig{}, fmt.Errorf("failed to marshal offchainConfig to proto: %w", err) } } } diff --git a/deployment/cre/ocr3/config_test.go b/deployment/cre/ocr3/config_test.go index 5faecbf7a92..3a210b10c8f 100644 --- a/deployment/cre/ocr3/config_test.go +++ b/deployment/cre/ocr3/config_test.go @@ -55,15 +55,17 @@ var wantOCR3Config = `{ var ocr3Cfg = ` { - "MaxQueryLengthBytes": 1000000, - "MaxObservationLengthBytes": 1000000, - "MaxReportLengthBytes": 1000000, - "MaxOutcomeLengthBytes": 1000000, - "MaxReportCount": 20, - "MaxBatchSize": 20, - "OutcomePruningThreshold": 3600, + "ConsensusCapOffchainConfig": { + "MaxQueryLengthBytes": 1000000, + "MaxObservationLengthBytes": 1000000, + "MaxReportLengthBytes": 1000000, + "MaxOutcomeLengthBytes": 1000000, + "MaxReportCount": 20, + "MaxBatchSize": 20, + "OutcomePruningThreshold": 3600, + "RequestTimeout": "30s" + }, "UniqueReports": true, - "RequestTimeout": "30s", "DeltaProgressMillis": 5000, "DeltaResendMillis": 5000, "DeltaInitialMillis": 5000, diff --git a/deployment/cre/ocr3/oracle_config.go b/deployment/cre/ocr3/oracle_config.go index 3a0aa63a624..5ef72f4b995 100644 --- a/deployment/cre/ocr3/oracle_config.go +++ b/deployment/cre/ocr3/oracle_config.go @@ -2,23 +2,18 @@ package ocr3 import ( "encoding/json" - "errors" "fmt" "time" "google.golang.org/protobuf/proto" "google.golang.org/protobuf/types/known/durationpb" + "gopkg.in/yaml.v3" capocr3types "github.com/smartcontractkit/chainlink-common/pkg/capabilities/consensus/ocr3/types" evmcapocr3types "github.com/smartcontractkit/chainlink-common/pkg/capabilities/v2/chain-capabilities/consensus/ocr3/types" ) type OracleConfig struct { - // Excluded from JSON to maintain backward compatibility with previous versions where ReportingPluginConfig was embedded - OffchainConfig OffchainConfig `json:"-"` - RawOffchainConfig json.RawMessage `json:"OffchainConfig"` - OffchainConfigType OffchainConfigType - UniqueReports bool DeltaProgressMillis uint32 DeltaResendMillis uint32 @@ -36,121 +31,62 @@ type OracleConfig struct { MaxDurationShouldTransmitMillis uint32 MaxFaultyOracles int + + ConsensusCapOffchainConfig *ConsensusCapOffchainConfig + ChainCapOffchainConfig *ChainCapOffchainConfig } func (oc *OracleConfig) UnmarshalJSON(data []byte) error { - type aliasT OracleConfig - err := json.Unmarshal(data, (*aliasT)(oc)) - if err != nil { - return fmt.Errorf("failed to unmarshal OracleConfig: %w", err) + // ensure that caller migrated to new OracleConfig structure, where ConsensusCapOffchainConfig is not embedded + var raw map[string]interface{} + if err := json.Unmarshal(data, &raw); err != nil { + return fmt.Errorf("failed to unmarshal OracleConfig into map[string]interface{}: %w", err) } - switch oc.OffchainConfigType { - case "", OffchainConfigTypeConsensusCap: - oc.OffchainConfig = &ConsensusCapOffchainConfig{} - case OffchainConfigTypeChainCap: - oc.OffchainConfig = &ChainCapOffchainConfig{} - default: - return fmt.Errorf("unsupported OffchainConfigType: %s", oc.OffchainConfigType) + var legacyOffchainConfigFields = []string{"MaxQueryLengthBytes", "MaxObservationLengthBytes", "MaxReportLengthBytes", "MaxOutcomeLengthBytes", "MaxReportCount", "MaxBatchSize", "OutcomePruningThreshold", "RequestTimeout"} + err := ensureNoLegacyFields(legacyOffchainConfigFields, raw) + if err != nil { + return err } - // if offchain_config is empty, try to use previous version, where OffchainConfig was embedded - rawOffchainConfig := oc.RawOffchainConfig - if len(rawOffchainConfig) == 0 { - rawOffchainConfig = data - } - // try to use previous version, where OffchainConfig was embedded - err = json.Unmarshal(rawOffchainConfig, &oc.OffchainConfig) - if err != nil { - return fmt.Errorf("failed to unmarshal OffchainConfig: %w", err) + type aliasT OracleConfig + err = json.Unmarshal(data, (*aliasT)(oc)) + return err +} + +func ensureNoLegacyFields(legacyFields []string, raw map[string]interface{}) error { + for _, f := range legacyFields { + if _, exists := raw[f]; exists { + return fmt.Errorf("not supported config format detected: field %s is not supported. All %v must be moved into ConsensusCapOffchainConfig", f, legacyFields) + } } - oc.RawOffchainConfig = nil // clear raw data after successful unmarshalling return nil } -func (oc OracleConfig) MarshalJSON() ([]byte, error) { - // ensure that caller did not forget to set OffchainConfigType - if oc.OffchainConfigType == "" && oc.OffchainConfig != nil { - _, ok := oc.OffchainConfig.(*ConsensusCapOffchainConfig) - if !ok { - return nil, errors.New("OffchainConfigType must be set when OffchainConfig is set") - } +func (oc *OracleConfig) UnmarshalYAML(value *yaml.Node) error { + // ensure that caller migrated to new OracleConfig structure, where ConsensusCapOffchainConfig is not embedded + var raw map[string]interface{} + if err := value.Decode(&raw); err != nil { + return fmt.Errorf("failed to decode OracleConfig into map[string]interface{}: %w", err) } - offchainConfigAsJSON, err := json.Marshal(oc.OffchainConfig) + var legacyOffchainConfigFields = []string{"maxQueryLengthBytes", "maxObservationLengthBytes", "maxReportLengthBytes", "maxOutcomeLengthBytes", "maxReportCount", "maxBatchSize", "outcomePruningThreshold", "requestTimeout"} + err := ensureNoLegacyFields(legacyOffchainConfigFields, raw) if err != nil { - return nil, fmt.Errorf("failed to marshal OffchainConfig: %w", err) + return err } - cfgToMarshal := oc - cfgToMarshal.RawOffchainConfig = offchainConfigAsJSON - type aliasT OracleConfig - asJSON, err := json.Marshal((aliasT)(cfgToMarshal)) - if err != nil { - return nil, fmt.Errorf("failed to marshal OracleConfig: %w", err) + if err := value.Decode((*aliasT)(oc)); err != nil { + return err } - return asJSON, nil + return nil } -type OffchainConfig interface { +type offchainConfig interface { ToProto() (proto.Message, error) - isOffchainConfig() -} - -type OffchainConfigType string - -func (t OffchainConfigType) String() string { - return string(t) -} - -const ( - OffchainConfigTypeConsensusCap OffchainConfigType = "consensus-cap" - OffchainConfigTypeChainCap OffchainConfigType = "chain-cap" -) - -func ChainCapChainSelectorLabel(chainSelector uint64) string { - return fmt.Sprintf("chain-selector-%d", chainSelector) -} - -func NewOffchainConfigFromProto(cfgType OffchainConfigType, raw []byte) (OffchainConfig, error) { - switch cfgType { - case OffchainConfigTypeConsensusCap: - cfg := &capocr3types.ReportingPluginConfig{} - err := proto.Unmarshal(raw, cfg) - if err != nil { - return nil, fmt.Errorf("failed to unmarshal ConsensusCap OffchainConfig from proto: %w", err) - } - - return &ConsensusCapOffchainConfig{ - MaxQueryLengthBytes: cfg.MaxQueryLengthBytes, - MaxObservationLengthBytes: cfg.MaxObservationLengthBytes, - MaxReportLengthBytes: cfg.MaxReportLengthBytes, - MaxOutcomeLengthBytes: cfg.MaxOutcomeLengthBytes, - MaxReportCount: cfg.MaxReportCount, - MaxBatchSize: cfg.MaxBatchSize, - OutcomePruningThreshold: cfg.OutcomePruningThreshold, - RequestTimeout: cfg.RequestTimeout.AsDuration(), - }, nil - case OffchainConfigTypeChainCap: - cfg := &evmcapocr3types.ReportingPluginConfig{} - err := proto.Unmarshal(raw, cfg) - if err != nil { - return nil, fmt.Errorf("failed to unmarshal ChainCap OffchainConfig from proto: %w", err) - } - return &ChainCapOffchainConfig{ - MaxQueryLengthBytes: cfg.MaxQueryLengthBytes, - MaxObservationLengthBytes: cfg.MaxObservationLengthBytes, - MaxReportLengthBytes: cfg.MaxReportLengthBytes, - MaxOutcomeLengthBytes: cfg.MaxOutcomeLengthBytes, - MaxReportCount: cfg.MaxReportCount, - MaxBatchSize: cfg.MaxBatchSize, - }, nil - default: - return nil, fmt.Errorf("unsupported OffchainConfigType: %s", cfgType) - } } type ConsensusCapOffchainConfig struct { @@ -219,8 +155,6 @@ func (oc *ConsensusCapOffchainConfig) ToProto() (proto.Message, error) { }, nil } -func (*ConsensusCapOffchainConfig) isOffchainConfig() {} - type ChainCapOffchainConfig struct { MaxQueryLengthBytes uint32 MaxObservationLengthBytes uint32 @@ -240,5 +174,3 @@ func (oc *ChainCapOffchainConfig) ToProto() (proto.Message, error) { MaxBatchSize: oc.MaxBatchSize, }, nil } - -func (*ChainCapOffchainConfig) isOffchainConfig() {} diff --git a/deployment/cre/ocr3/oracle_config_test.go b/deployment/cre/ocr3/oracle_config_test.go index 7abd320f5e0..032c1a4d0fc 100644 --- a/deployment/cre/ocr3/oracle_config_test.go +++ b/deployment/cre/ocr3/oracle_config_test.go @@ -6,17 +6,27 @@ import ( "time" "github.com/stretchr/testify/require" + "gopkg.in/yaml.v3" ) func TestOracleConfig_JSON(t *testing.T) { - t.Run("Legacy format general OCR config", func(t *testing.T) { + t.Run("Legacy config returns an error", func(t *testing.T) { + var cfg OracleConfig + err := json.Unmarshal([]byte(legacyOcr3Cfg), &cfg) + require.ErrorContains(t, err, "not supported config format detected: field MaxQueryLengthBytes is not supported") + }) + t.Run("Legacy yaml config returns an error", func(t *testing.T) { + var cfg OracleConfig + err := yaml.Unmarshal([]byte(legacyOCR3YamlCfg), &cfg) + require.ErrorContains(t, err, "not supported config format detected: field maxQueryLengthBytes is not supported") + }) + t.Run("Consensus Capability OCR config", func(t *testing.T) { var cfg OracleConfig err := json.Unmarshal([]byte(ocr3Cfg), &cfg) require.NoError(t, err) // ensure the values were correctly unmarshalled require.Equal(t, 3, cfg.MaxFaultyOracles) - require.IsType(t, &ConsensusCapOffchainConfig{}, cfg.OffchainConfig) - consensusCapCfg := cfg.OffchainConfig.(*ConsensusCapOffchainConfig) + consensusCapCfg := cfg.ConsensusCapOffchainConfig require.Equal(t, 30*time.Second, consensusCapCfg.RequestTimeout) require.Equal(t, uint32(20), consensusCapCfg.MaxBatchSize) // ensure that marshalling back to JSON works @@ -29,9 +39,8 @@ func TestOracleConfig_JSON(t *testing.T) { }) t.Run("Chain Capability OCR Config", func(t *testing.T) { cfg := OracleConfig{ - OffchainConfigType: OffchainConfigTypeChainCap, DeltaProgressMillis: 5000, - OffchainConfig: &ChainCapOffchainConfig{ + ChainCapOffchainConfig: &ChainCapOffchainConfig{ MaxBatchSize: 100, MaxQueryLengthBytes: 1000000, }, @@ -45,3 +54,56 @@ func TestOracleConfig_JSON(t *testing.T) { require.Equal(t, cfg, fromJSON) }) } + +var legacyOCR3YamlCfg = ` +deltaProgressMillis: 5000 +deltaResendMillis: 5000 +deltaInitialMillis: 5000 +deltaRoundMillis: 2000 +deltaGraceMillis: 500 +deltaCertifiedCommitRequestMillis: 1000 +deltaStageMillis: 30000 +maxRoundsPerEpoch: 10 +transmissionSchedule: +- 7 +maxDurationQueryMillis: 1000 +maxDurationObservationMillis: 1000 +maxDurationShouldAcceptMillis: 1000 +maxDurationShouldTransmitMillis: 1000 +maxFaultyOracles: 2 +maxQueryLengthBytes: 1000000 +maxObservationLengthBytes: 1000000 +maxReportLengthBytes: 1000000 +maxBatchSize: 1000 +uniqueReports: true +` + +var legacyOcr3Cfg = ` +{ + "MaxQueryLengthBytes": 1000000, + "MaxObservationLengthBytes": 1000000, + "MaxReportLengthBytes": 1000000, + "MaxOutcomeLengthBytes": 1000000, + "MaxReportCount": 20, + "MaxBatchSize": 20, + "OutcomePruningThreshold": 3600, + "UniqueReports": true, + "RequestTimeout": "30s", + "DeltaProgressMillis": 5000, + "DeltaResendMillis": 5000, + "DeltaInitialMillis": 5000, + "DeltaRoundMillis": 2000, + "DeltaGraceMillis": 500, + "DeltaCertifiedCommitRequestMillis": 1000, + "DeltaStageMillis": 30000, + "MaxRoundsPerEpoch": 10, + "TransmissionSchedule": [ + 10 + ], + "MaxDurationQueryMillis": 1000, + "MaxDurationObservationMillis": 1000, + "MaxDurationReportMillis": 1000, + "MaxDurationShouldAcceptMillis": 1000, + "MaxDurationShouldTransmitMillis": 1000, + "MaxFaultyOracles": 3 +}` diff --git a/deployment/cre/ocr3/v2/changeset/deploy_ocr3.go b/deployment/cre/ocr3/v2/changeset/deploy_ocr3.go index 6bf36ee68da..210d8235735 100644 --- a/deployment/cre/ocr3/v2/changeset/deploy_ocr3.go +++ b/deployment/cre/ocr3/v2/changeset/deploy_ocr3.go @@ -13,8 +13,9 @@ import ( var _ cldf.ChangeSetV2[DeployOCR3Input] = DeployOCR3{} type DeployOCR3Input struct { - ChainSelector uint64 `json:"chain_selector" yaml:"chain_selector"` - Qualifier string `json:"qualifier" yaml:"qualifier"` + ChainSelector uint64 `json:"chain_selector" yaml:"chain_selector"` + Qualifier string `json:"qualifier" yaml:"qualifier"` + Labels []string `json:"labels" yaml:"labels"` } type DeployOCR3Deps struct { @@ -41,6 +42,7 @@ func (l DeployOCR3) Apply(e cldf.Environment, config DeployOCR3Input) (cldf.Chan contracts.DeployOCR3Input{ ChainSelector: config.ChainSelector, Qualifier: config.Qualifier, + Labels: config.Labels, }, ) if err != nil { diff --git a/deployment/cre/ocr3/v2/changeset/operations/contracts/deploy_ocr3.go b/deployment/cre/ocr3/v2/changeset/operations/contracts/deploy_ocr3.go index d45074454ba..a54adba41ef 100644 --- a/deployment/cre/ocr3/v2/changeset/operations/contracts/deploy_ocr3.go +++ b/deployment/cre/ocr3/v2/changeset/operations/contracts/deploy_ocr3.go @@ -9,8 +9,6 @@ import ( "github.com/smartcontractkit/chainlink-deployments-framework/datastore" cldf "github.com/smartcontractkit/chainlink-deployments-framework/deployment" "github.com/smartcontractkit/chainlink-deployments-framework/operations" - "github.com/smartcontractkit/chainlink/deployment/cre/ocr3" - ocr3_capability "github.com/smartcontractkit/chainlink-evm/gethwrappers/keystone/generated/ocr3_capability_1_0_0" ) @@ -19,9 +17,9 @@ type DeployOCR3Deps struct { } type DeployOCR3Input struct { - ChainSelector uint64 - Qualifier string - OffchainConfigType ocr3.OffchainConfigType + ChainSelector uint64 + Qualifier string + Labels []string } type DeployOCR3Output struct { @@ -82,8 +80,8 @@ var DeployOCR3 = operations.NewOperation[DeployOCR3Input, DeployOCR3Output, Depl labels.Add(label) } - if input.OffchainConfigType != "" { - labels.Add(input.OffchainConfigType.String()) + for _, label := range input.Labels { + labels.Add(label) } addressRef := datastore.AddressRef{ diff --git a/deployment/keystone/changeset/view_contracts.go b/deployment/keystone/changeset/view_contracts.go index 2f01bf4c888..55c638f69f0 100644 --- a/deployment/keystone/changeset/view_contracts.go +++ b/deployment/keystone/changeset/view_contracts.go @@ -286,8 +286,7 @@ func GenerateOCR3ConfigView(ctx context.Context, ocr3Cap ocr3_capability.OCR3Cap return OCR3ConfigView{}, err } oracleConfig := OracleConfig{ - OffchainConfigType: ocr3.OffchainConfigTypeConsensusCap, - OffchainConfig: &ocr3.ConsensusCapOffchainConfig{ + ConsensusCapOffchainConfig: &ocr3.ConsensusCapOffchainConfig{ MaxQueryLengthBytes: cfg.MaxQueryLengthBytes, MaxObservationLengthBytes: cfg.MaxObservationLengthBytes, MaxReportLengthBytes: cfg.MaxReportLengthBytes, diff --git a/system-tests/lib/cre/contracts/contracts.go b/system-tests/lib/cre/contracts/contracts.go index e9d40d512d5..3488e80e360 100644 --- a/system-tests/lib/cre/contracts/contracts.go +++ b/system-tests/lib/cre/contracts/contracts.go @@ -803,10 +803,9 @@ func DefaultChainCapabilityOCR3Config(topology *cre.Topology) (*keystone_changes } cfg.DeltaRoundMillis = 1000 - cfg.OffchainConfigType = ocr3.OffchainConfigTypeChainCap const kib = 1024 const mib = 1024 * kib - cfg.OffchainConfig = &ocr3.ChainCapOffchainConfig{ + cfg.ChainCapOffchainConfig = &ocr3.ChainCapOffchainConfig{ MaxQueryLengthBytes: mib, MaxObservationLengthBytes: 97 * kib, MaxReportLengthBytes: mib, From 355d93966383908627af5646357208e181558ed5 Mon Sep 17 00:00:00 2001 From: Dmytro Haidashenko Date: Thu, 25 Sep 2025 18:08:58 +0200 Subject: [PATCH 13/21] fix test --- deployment/cre/ocr3/v2/changeset/configure_ocr3_test.go | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/deployment/cre/ocr3/v2/changeset/configure_ocr3_test.go b/deployment/cre/ocr3/v2/changeset/configure_ocr3_test.go index 5705e6c4508..d5fa3ded533 100644 --- a/deployment/cre/ocr3/v2/changeset/configure_ocr3_test.go +++ b/deployment/cre/ocr3/v2/changeset/configure_ocr3_test.go @@ -33,7 +33,9 @@ func TestConfigureOCR3(t *testing.T) { OracleConfig: &ocr3.OracleConfig{ MaxFaultyOracles: 1, TransmissionSchedule: []int{len(env.Env.NodeIDs)}, // Single entry with number of nodes - OffchainConfigType: ocr3.OffchainConfigTypeConsensusCap, + ConsensusCapOffchainConfig: &ocr3.ConsensusCapOffchainConfig{ + MaxQueryLengthBytes: 1000000, + }, }, }, }, @@ -49,8 +51,7 @@ func TestConfigureOCR3(t *testing.T) { OracleConfig: &ocr3.OracleConfig{ MaxFaultyOracles: 1, TransmissionSchedule: []int{len(env.Env.NodeIDs)}, // Single entry with number of nodes - OffchainConfigType: ocr3.OffchainConfigTypeChainCap, - OffchainConfig: &ocr3.ChainCapOffchainConfig{ + ChainCapOffchainConfig: &ocr3.ChainCapOffchainConfig{ MaxQueryLengthBytes: 1, MaxObservationLengthBytes: 2, MaxReportLengthBytes: 3, From 89fa303cc0fe5ecd62a482599ad4023223408e6f Mon Sep 17 00:00:00 2001 From: Dmytro Haidashenko Date: Thu, 25 Sep 2025 18:23:32 +0200 Subject: [PATCH 14/21] rollback redundant changes --- .../operations/contracts/deploy_ocr3_op.go | 11 ++++------- system-tests/lib/cre/contracts/keystone.go | 17 +++++++---------- 2 files changed, 11 insertions(+), 17 deletions(-) diff --git a/deployment/keystone/changeset/operations/contracts/deploy_ocr3_op.go b/deployment/keystone/changeset/operations/contracts/deploy_ocr3_op.go index b87189e6d40..9b4d95e46a3 100644 --- a/deployment/keystone/changeset/operations/contracts/deploy_ocr3_op.go +++ b/deployment/keystone/changeset/operations/contracts/deploy_ocr3_op.go @@ -8,7 +8,6 @@ import ( "github.com/smartcontractkit/chainlink-deployments-framework/datastore" cldf "github.com/smartcontractkit/chainlink-deployments-framework/deployment" "github.com/smartcontractkit/chainlink-deployments-framework/operations" - "github.com/smartcontractkit/chainlink/deployment/cre/ocr3" "github.com/smartcontractkit/chainlink/deployment/cre/ocr3/v2/changeset/operations/contracts" ) @@ -17,9 +16,8 @@ type DeployOCR3ContractSequenceDeps struct { } type DeployOCR3ContractSequenceInput struct { - ChainSelector uint64 - Qualifier string // qualifier for the OCR3 contract deployment - OffchainConfigType ocr3.OffchainConfigType // type of offchain config, e.g. consensus or chain capability + ChainSelector uint64 + Qualifier string // qualifier for the OCR3 contract deployment } type DeployOCR3ContractSequenceOutput struct { @@ -40,9 +38,8 @@ var DeployOCR3ContractsSequence = operations.NewSequence[DeployOCR3ContractSeque // OCR3 Contract deployInput := contracts.DeployOCR3Input{ - ChainSelector: input.ChainSelector, - Qualifier: input.Qualifier, - OffchainConfigType: input.OffchainConfigType, + ChainSelector: input.ChainSelector, + Qualifier: input.Qualifier, } ocr3DeployReport, err := operations.ExecuteOperation(b, contracts.DeployOCR3, contracts.DeployOCR3Deps(deps), deployInput) if err != nil { diff --git a/system-tests/lib/cre/contracts/keystone.go b/system-tests/lib/cre/contracts/keystone.go index 24ccbb0b060..7b60d2aaa98 100644 --- a/system-tests/lib/cre/contracts/keystone.go +++ b/system-tests/lib/cre/contracts/keystone.go @@ -17,8 +17,6 @@ import ( "github.com/smartcontractkit/chainlink-deployments-framework/operations" "github.com/smartcontractkit/chainlink-testing-framework/framework/components/blockchain" "github.com/smartcontractkit/chainlink-testing-framework/lib/utils/ptr" - "github.com/smartcontractkit/chainlink/deployment/cre/ocr3" - "github.com/smartcontractkit/chainlink/deployment" commonchangeset "github.com/smartcontractkit/chainlink/deployment/common/changeset" creforwarder "github.com/smartcontractkit/chainlink/deployment/cre/forwarder" @@ -229,7 +227,7 @@ func DeployKeystoneContracts( // TODO move this deeper into the stack when we have all the p2p ids and can deploy and configure in one sequence // deploy OCR3 contract // we deploy OCR3 contract with a qualifier, so that we can distinguish it from other OCR3 contracts (Vault, EVM, ConsensusV2) - _, seqErr = deployOCR3Contract(OCR3ContractQualifier, homeChainSelector, input.CldfEnvironment, memoryDatastore, ocr3.OffchainConfigTypeConsensusCap) + _, seqErr = deployOCR3Contract(OCR3ContractQualifier, homeChainSelector, input.CldfEnvironment, memoryDatastore) if seqErr != nil { return nil, fmt.Errorf("failed to deploy OCR3 contract %w", seqErr) } @@ -237,7 +235,7 @@ func DeployKeystoneContracts( testLogger.Info().Msgf("Deployed OCR3 %s contract on chain %d at %s", input.ContractVersions[keystone_changeset.OCR3Capability.String()], homeChainSelector, ocr3Addr) // deploy DONTime contract - _, seqErr = deployOCR3Contract(DONTimeContractQualifier, homeChainSelector, input.CldfEnvironment, memoryDatastore, ocr3.OffchainConfigTypeConsensusCap) // Switch to dedicated config type once available + _, seqErr = deployOCR3Contract(DONTimeContractQualifier, homeChainSelector, input.CldfEnvironment, memoryDatastore) // Switch to dedicated config type once available if seqErr != nil { return nil, fmt.Errorf("failed to deploy DONTime contract %w", seqErr) } @@ -261,7 +259,7 @@ func DeployKeystoneContracts( if evmOCR3AddrFlag { for chainID, selector := range chainsWithEVMCapability { qualifier := ks_contracts_op.CapabilityContractIdentifier(uint64(chainID)) - _, seqErr = deployOCR3Contract(qualifier, homeChainSelector, input.CldfEnvironment, memoryDatastore, ocr3.OffchainConfigTypeChainCap) + _, seqErr = deployOCR3Contract(qualifier, homeChainSelector, input.CldfEnvironment, memoryDatastore) if seqErr != nil { return nil, fmt.Errorf("failed to deploy EVM OCR3 contract for chainID %d, selector %d: %w", chainID, selector, seqErr) } @@ -273,7 +271,7 @@ func DeployKeystoneContracts( // deploy Consensus V2 OCR3 contract if consensusV2AddrFlag { - _, seqErr = deployOCR3Contract(ConsensusV2ContractQualifier, homeChainSelector, input.CldfEnvironment, memoryDatastore, ocr3.OffchainConfigTypeConsensusCap) + _, seqErr = deployOCR3Contract(ConsensusV2ContractQualifier, homeChainSelector, input.CldfEnvironment, memoryDatastore) if seqErr != nil { return nil, fmt.Errorf("failed to deploy Consensus V2 OCR3 contract %w", seqErr) } @@ -288,7 +286,7 @@ func DeployKeystoneContracts( }, nil } -func deployOCR3Contract(qualifier string, selector uint64, env *cldf.Environment, ds datastore.MutableDataStore, ocrCfgType ocr3.OffchainConfigType) (*ks_contracts_op.DeployOCR3ContractSequenceOutput, error) { +func deployOCR3Contract(qualifier string, selector uint64, env *cldf.Environment, ds datastore.MutableDataStore) (*ks_contracts_op.DeployOCR3ContractSequenceOutput, error) { ocr3DeployReport, err := operations.ExecuteSequence( env.OperationsBundle, ks_contracts_op.DeployOCR3ContractsSequence, @@ -296,9 +294,8 @@ func deployOCR3Contract(qualifier string, selector uint64, env *cldf.Environment Env: env, }, ks_contracts_op.DeployOCR3ContractSequenceInput{ - ChainSelector: selector, - Qualifier: qualifier, - OffchainConfigType: ocrCfgType, + ChainSelector: selector, + Qualifier: qualifier, }, ) if err != nil { From 885b9a23a39ae5b43de1613ea4f0603810e00ac4 Mon Sep 17 00:00:00 2001 From: Dmytro Haidashenko Date: Thu, 25 Sep 2025 18:30:38 +0200 Subject: [PATCH 15/21] Fix view tests --- deployment/keystone/changeset/view_test.go | 3 +-- system-tests/lib/cre/contracts/contracts.go | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/deployment/keystone/changeset/view_test.go b/deployment/keystone/changeset/view_test.go index 744feeab0a8..4161ee7249b 100644 --- a/deployment/keystone/changeset/view_test.go +++ b/deployment/keystone/changeset/view_test.go @@ -39,8 +39,7 @@ var oracleConfig = changeset.OracleConfig{ MaxDurationShouldAcceptMillis: 1000, MaxDurationShouldTransmitMillis: 1000, MaxFaultyOracles: 1, - OffchainConfigType: ocr3.OffchainConfigTypeConsensusCap, - OffchainConfig: &ocr3.ConsensusCapOffchainConfig{ + ConsensusCapOffchainConfig: &ocr3.ConsensusCapOffchainConfig{ MaxQueryLengthBytes: 1000000, MaxObservationLengthBytes: 1000000, MaxReportLengthBytes: 1000000, diff --git a/system-tests/lib/cre/contracts/contracts.go b/system-tests/lib/cre/contracts/contracts.go index 3488e80e360..edf32b8c27c 100644 --- a/system-tests/lib/cre/contracts/contracts.go +++ b/system-tests/lib/cre/contracts/contracts.go @@ -783,8 +783,7 @@ func DefaultOCR3Config(topology *cre.Topology) (*keystone_changeset.OracleConfig MaxDurationShouldAcceptMillis: 1000, MaxDurationShouldTransmitMillis: 1000, MaxFaultyOracles: 1, - OffchainConfigType: ocr3.OffchainConfigTypeConsensusCap, - OffchainConfig: &ocr3.ConsensusCapOffchainConfig{ + ConsensusCapOffchainConfig: &ocr3.ConsensusCapOffchainConfig{ MaxQueryLengthBytes: 1000000, MaxObservationLengthBytes: 1000000, MaxReportLengthBytes: 1000000, From fa26fc6a83c89487098baad8b155e2405b41aca5 Mon Sep 17 00:00:00 2001 From: Dmytro Haidashenko Date: Thu, 25 Sep 2025 18:49:10 +0200 Subject: [PATCH 16/21] Fix TestGenerateOCR3Config --- .../keystone/src/testdata/SampleConfig.json | 14 ++++++++------ deployment/cre/ocr3/oracle_config.go | 6 +----- 2 files changed, 9 insertions(+), 11 deletions(-) diff --git a/core/scripts/keystone/src/testdata/SampleConfig.json b/core/scripts/keystone/src/testdata/SampleConfig.json index d39dc759af7..d80dfe8c2c2 100644 --- a/core/scripts/keystone/src/testdata/SampleConfig.json +++ b/core/scripts/keystone/src/testdata/SampleConfig.json @@ -1,11 +1,6 @@ { "OracleConfig": { - "MaxQueryLengthBytes": 1000000, - "MaxObservationLengthBytes": 1000000, - "MaxReportLengthBytes": 1000000, - "MaxBatchSize": 20, "UniqueReports": true, - "RequestTimeout": "30s", "DeltaProgressMillis": 5000, "DeltaResendMillis": 5000, "DeltaInitialMillis": 5000, @@ -23,6 +18,13 @@ "MaxDurationShouldAcceptMillis": 1000, "MaxDurationShouldTransmitMillis": 1000, - "MaxFaultyOracles": 1 + "MaxFaultyOracles": 1, + "ConsensusCapOffchainConfig": { + "MaxQueryLengthBytes": 1000000, + "MaxObservationLengthBytes": 1000000, + "MaxReportLengthBytes": 1000000, + "MaxBatchSize": 20, + "RequestTimeout": "30s" + } } } \ No newline at end of file diff --git a/deployment/cre/ocr3/oracle_config.go b/deployment/cre/ocr3/oracle_config.go index 5ef72f4b995..00c6c43b4d3 100644 --- a/deployment/cre/ocr3/oracle_config.go +++ b/deployment/cre/ocr3/oracle_config.go @@ -78,11 +78,7 @@ func (oc *OracleConfig) UnmarshalYAML(value *yaml.Node) error { } type aliasT OracleConfig - if err := value.Decode((*aliasT)(oc)); err != nil { - return err - } - - return nil + return value.Decode((*aliasT)(oc)) } type offchainConfig interface { From 127902648637df1580d0161655468576fcd49075 Mon Sep 17 00:00:00 2001 From: Dmytro Haidashenko Date: Fri, 26 Sep 2025 13:51:07 +0200 Subject: [PATCH 17/21] bump ton --- core/scripts/go.mod | 7 +++++-- core/scripts/go.sum | 8 ++++---- deployment/go.mod | 4 ++-- deployment/go.sum | 8 ++++---- go.mod | 2 +- go.sum | 4 ++-- integration-tests/go.mod | 6 ++++-- integration-tests/go.sum | 8 ++++---- integration-tests/load/go.mod | 7 +++++-- integration-tests/load/go.sum | 8 ++++---- system-tests/lib/go.mod | 8 +++++--- system-tests/lib/go.sum | 8 ++++---- system-tests/tests/go.mod | 7 +++++-- system-tests/tests/go.sum | 8 ++++---- 14 files changed, 53 insertions(+), 40 deletions(-) diff --git a/core/scripts/go.mod b/core/scripts/go.mod index e260aa69357..21680a84ddf 100644 --- a/core/scripts/go.mod +++ b/core/scripts/go.mod @@ -80,6 +80,11 @@ require ( k8s.io/client-go v0.32.3 ) +require ( + github.com/smartcontractkit/chainlink-ton v0.0.0-20250923170055-ba21c6ff1cc2 // indirect + github.com/smartcontractkit/chainlink-ton/deployment v0.0.0-20250923170055-ba21c6ff1cc2 // indirect +) + require ( cosmossdk.io/api v0.7.6 // indirect cosmossdk.io/collections v0.4.0 // indirect @@ -496,8 +501,6 @@ require ( github.com/smartcontractkit/chainlink-sui v0.0.0-20250916193659-4becc28a467f // indirect github.com/smartcontractkit/chainlink-testing-framework/framework/components/fake v0.10.0 // indirect github.com/smartcontractkit/chainlink-testing-framework/parrot v0.6.2 // indirect - github.com/smartcontractkit/chainlink-ton v0.0.0-20250923115307-8be0359fbce5 // indirect - github.com/smartcontractkit/chainlink-ton/deployment v0.0.0-20250923115307-8be0359fbce5 // indirect github.com/smartcontractkit/chainlink-tron/relayer v0.0.11-0.20250908203554-5bd9d2fe9513 // indirect github.com/smartcontractkit/cre-sdk-go v0.7.0 // indirect github.com/smartcontractkit/crib-sdk v0.4.0 // indirect diff --git a/core/scripts/go.sum b/core/scripts/go.sum index 9dd639c115c..d50e7dc28d8 100644 --- a/core/scripts/go.sum +++ b/core/scripts/go.sum @@ -1655,10 +1655,10 @@ github.com/smartcontractkit/chainlink-testing-framework/parrot v0.6.2 h1:cWUHB6Q github.com/smartcontractkit/chainlink-testing-framework/parrot v0.6.2/go.mod h1:Z4K5VJLjsfqIIaBcZ1Sfccxu0xsCxBjPa6zF+5gtQaM= github.com/smartcontractkit/chainlink-testing-framework/seth v1.51.2 h1:ZJ/8Jx6Be5//TyjPi1pS1uotnmcYq5vVkSyISIymSj8= github.com/smartcontractkit/chainlink-testing-framework/seth v1.51.2/go.mod h1:kHYJnZUqiPF7/xN5273prV+srrLJkS77GbBXHLKQpx0= -github.com/smartcontractkit/chainlink-ton v0.0.0-20250923115307-8be0359fbce5 h1:bpuj+Uwfz3eIoWAz++dxmx4PKmmAReqgkpZaibN8KlI= -github.com/smartcontractkit/chainlink-ton v0.0.0-20250923115307-8be0359fbce5/go.mod h1:8HcupBfNYQFTewBXisIqG+dHkjMEVeFa+hV5ZFWIwlo= -github.com/smartcontractkit/chainlink-ton/deployment v0.0.0-20250923115307-8be0359fbce5 h1:TLzMjXJCiWEMUr/k/TC7MBy6PeNFqYdp748i8nOHyGU= -github.com/smartcontractkit/chainlink-ton/deployment v0.0.0-20250923115307-8be0359fbce5/go.mod h1:6A+vzX/1E+JCVYJtG3CTaed0PJsw4KP7jRRB6RirMck= +github.com/smartcontractkit/chainlink-ton v0.0.0-20250923170055-ba21c6ff1cc2 h1:GFS/eU30QYVJ/kT52IEA4SK2jHAJQblVRR5phE9yWhU= +github.com/smartcontractkit/chainlink-ton v0.0.0-20250923170055-ba21c6ff1cc2/go.mod h1:8HcupBfNYQFTewBXisIqG+dHkjMEVeFa+hV5ZFWIwlo= +github.com/smartcontractkit/chainlink-ton/deployment v0.0.0-20250923170055-ba21c6ff1cc2 h1:E88yV2JCK7Gv/m4aVpg/lQn7CNBZivh3vS6nFyxXbuw= +github.com/smartcontractkit/chainlink-ton/deployment v0.0.0-20250923170055-ba21c6ff1cc2/go.mod h1:6A+vzX/1E+JCVYJtG3CTaed0PJsw4KP7jRRB6RirMck= 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.20250422175525-b7575d96bd4d h1:qLmSOOtB/Ogn79eIDkuujOu8M5Jd747V1H7Brk/nTvo= diff --git a/deployment/go.mod b/deployment/go.mod index 8b37d6fe862..eef4e0137f6 100644 --- a/deployment/go.mod +++ b/deployment/go.mod @@ -50,8 +50,8 @@ require ( github.com/smartcontractkit/chainlink-solana v1.1.2-0.20250910230900-fa42dad2d413 github.com/smartcontractkit/chainlink-testing-framework/framework v0.10.24 github.com/smartcontractkit/chainlink-testing-framework/lib v1.54.5 - github.com/smartcontractkit/chainlink-ton v0.0.0-20250923115307-8be0359fbce5 - github.com/smartcontractkit/chainlink-ton/deployment v0.0.0-20250923115307-8be0359fbce5 + github.com/smartcontractkit/chainlink-ton v0.0.0-20250923170055-ba21c6ff1cc2 + github.com/smartcontractkit/chainlink-ton/deployment v0.0.0-20250923170055-ba21c6ff1cc2 github.com/smartcontractkit/freeport v0.1.3-0.20250716200817-cb5dfd0e369e github.com/smartcontractkit/libocr v0.0.0-20250905115425-2785a5cee79d github.com/smartcontractkit/mcms v0.25.0 diff --git a/deployment/go.sum b/deployment/go.sum index 0bdc0232c8d..0b7d1da531c 100644 --- a/deployment/go.sum +++ b/deployment/go.sum @@ -1388,10 +1388,10 @@ github.com/smartcontractkit/chainlink-testing-framework/parrot v0.6.2 h1:cWUHB6Q github.com/smartcontractkit/chainlink-testing-framework/parrot v0.6.2/go.mod h1:Z4K5VJLjsfqIIaBcZ1Sfccxu0xsCxBjPa6zF+5gtQaM= github.com/smartcontractkit/chainlink-testing-framework/seth v1.51.2 h1:ZJ/8Jx6Be5//TyjPi1pS1uotnmcYq5vVkSyISIymSj8= github.com/smartcontractkit/chainlink-testing-framework/seth v1.51.2/go.mod h1:kHYJnZUqiPF7/xN5273prV+srrLJkS77GbBXHLKQpx0= -github.com/smartcontractkit/chainlink-ton v0.0.0-20250923115307-8be0359fbce5 h1:bpuj+Uwfz3eIoWAz++dxmx4PKmmAReqgkpZaibN8KlI= -github.com/smartcontractkit/chainlink-ton v0.0.0-20250923115307-8be0359fbce5/go.mod h1:8HcupBfNYQFTewBXisIqG+dHkjMEVeFa+hV5ZFWIwlo= -github.com/smartcontractkit/chainlink-ton/deployment v0.0.0-20250923115307-8be0359fbce5 h1:TLzMjXJCiWEMUr/k/TC7MBy6PeNFqYdp748i8nOHyGU= -github.com/smartcontractkit/chainlink-ton/deployment v0.0.0-20250923115307-8be0359fbce5/go.mod h1:6A+vzX/1E+JCVYJtG3CTaed0PJsw4KP7jRRB6RirMck= +github.com/smartcontractkit/chainlink-ton v0.0.0-20250923170055-ba21c6ff1cc2 h1:GFS/eU30QYVJ/kT52IEA4SK2jHAJQblVRR5phE9yWhU= +github.com/smartcontractkit/chainlink-ton v0.0.0-20250923170055-ba21c6ff1cc2/go.mod h1:8HcupBfNYQFTewBXisIqG+dHkjMEVeFa+hV5ZFWIwlo= +github.com/smartcontractkit/chainlink-ton/deployment v0.0.0-20250923170055-ba21c6ff1cc2 h1:E88yV2JCK7Gv/m4aVpg/lQn7CNBZivh3vS6nFyxXbuw= +github.com/smartcontractkit/chainlink-ton/deployment v0.0.0-20250923170055-ba21c6ff1cc2/go.mod h1:6A+vzX/1E+JCVYJtG3CTaed0PJsw4KP7jRRB6RirMck= 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.20250422175525-b7575d96bd4d h1:qLmSOOtB/Ogn79eIDkuujOu8M5Jd747V1H7Brk/nTvo= diff --git a/go.mod b/go.mod index 85d98892d8e..26e29b3b842 100644 --- a/go.mod +++ b/go.mod @@ -100,7 +100,7 @@ require ( github.com/smartcontractkit/chainlink-protos/workflows/go v0.0.0-20250912140847-cbfb1710ac76 github.com/smartcontractkit/chainlink-solana v1.1.2-0.20250910230900-fa42dad2d413 github.com/smartcontractkit/chainlink-sui v0.0.0-20250916145228-cc9dd5b92c88 - github.com/smartcontractkit/chainlink-ton v0.0.0-20250923115307-8be0359fbce5 + github.com/smartcontractkit/chainlink-ton v0.0.0-20250923170055-ba21c6ff1cc2 github.com/smartcontractkit/chainlink-tron/relayer v0.0.11-0.20250815105909-75499abc4335 github.com/smartcontractkit/cre-sdk-go v0.7.0 github.com/smartcontractkit/cre-sdk-go/capabilities/networking/http v0.7.0 diff --git a/go.sum b/go.sum index 056f36f9840..c8dad4d571d 100644 --- a/go.sum +++ b/go.sum @@ -1155,8 +1155,8 @@ github.com/smartcontractkit/chainlink-solana v1.1.2-0.20250910230900-fa42dad2d41 github.com/smartcontractkit/chainlink-solana v1.1.2-0.20250910230900-fa42dad2d413/go.mod h1:LSZMvQYbdK20+21S68/lcTNHStehHPF1X764PICkrRU= github.com/smartcontractkit/chainlink-sui v0.0.0-20250916145228-cc9dd5b92c88 h1:L2mllixqv7DOgkSnd4GDBuRz6UzYujrhETqRJNZOxOk= github.com/smartcontractkit/chainlink-sui v0.0.0-20250916145228-cc9dd5b92c88/go.mod h1:CTR5agBB07sCpRltBkHmnkCZ+g8sXRafCJge/Hqr7aM= -github.com/smartcontractkit/chainlink-ton v0.0.0-20250923115307-8be0359fbce5 h1:bpuj+Uwfz3eIoWAz++dxmx4PKmmAReqgkpZaibN8KlI= -github.com/smartcontractkit/chainlink-ton v0.0.0-20250923115307-8be0359fbce5/go.mod h1:8HcupBfNYQFTewBXisIqG+dHkjMEVeFa+hV5ZFWIwlo= +github.com/smartcontractkit/chainlink-ton v0.0.0-20250923170055-ba21c6ff1cc2 h1:GFS/eU30QYVJ/kT52IEA4SK2jHAJQblVRR5phE9yWhU= +github.com/smartcontractkit/chainlink-ton v0.0.0-20250923170055-ba21c6ff1cc2/go.mod h1:8HcupBfNYQFTewBXisIqG+dHkjMEVeFa+hV5ZFWIwlo= github.com/smartcontractkit/chainlink-tron/relayer v0.0.11-0.20250815105909-75499abc4335 h1:7bxYNrPpygn8PUSBiEKn8riMd7CXMi/4bjTy0fHhcrY= github.com/smartcontractkit/chainlink-tron/relayer v0.0.11-0.20250815105909-75499abc4335/go.mod h1:ccjEgNeqOO+bjPddnL4lUrNLzyCvGCxgBjJdhFX3wa8= github.com/smartcontractkit/chainlink-tron/relayer/gotron-sdk v0.0.5-0.20250422175525-b7575d96bd4d h1:qLmSOOtB/Ogn79eIDkuujOu8M5Jd747V1H7Brk/nTvo= diff --git a/integration-tests/go.mod b/integration-tests/go.mod index e9c286ab9d7..11f592ced62 100644 --- a/integration-tests/go.mod +++ b/integration-tests/go.mod @@ -62,7 +62,6 @@ require ( github.com/smartcontractkit/chainlink-testing-framework/sentinel v0.1.2 github.com/smartcontractkit/chainlink-testing-framework/seth v1.51.2 github.com/smartcontractkit/chainlink-testing-framework/wasp v1.51.0 - github.com/smartcontractkit/chainlink-ton v0.0.0-20250923115307-8be0359fbce5 github.com/smartcontractkit/libocr v0.0.0-20250905115425-2785a5cee79d github.com/smartcontractkit/mcms v0.25.0 github.com/spf13/cobra v1.9.1 @@ -500,7 +499,6 @@ require ( github.com/smartcontractkit/chainlink-solana v1.1.2-0.20250910230900-fa42dad2d413 // indirect github.com/smartcontractkit/chainlink-sui v0.0.0-20250916193659-4becc28a467f // indirect github.com/smartcontractkit/chainlink-testing-framework/framework v0.10.24 // indirect - github.com/smartcontractkit/chainlink-ton/deployment v0.0.0-20250923115307-8be0359fbce5 // indirect github.com/smartcontractkit/chainlink-tron/relayer v0.0.11-0.20250908203554-5bd9d2fe9513 // indirect github.com/smartcontractkit/freeport v0.1.3-0.20250716200817-cb5dfd0e369e // indirect github.com/smartcontractkit/grpc-proxy v0.0.0-20240830132753-a7e17fec5ab7 // indirect @@ -634,6 +632,10 @@ require ( sigs.k8s.io/yaml v1.4.0 // indirect ) +require github.com/smartcontractkit/chainlink-ton v0.0.0-20250923170055-ba21c6ff1cc2 + +require github.com/smartcontractkit/chainlink-ton/deployment v0.0.0-20250923170055-ba21c6ff1cc2 // indirect + // gotron-sdk is not longer maintained replace github.com/fbsobreira/gotron-sdk => github.com/smartcontractkit/chainlink-tron/relayer/gotron-sdk v0.0.5-0.20250422175525-b7575d96bd4d diff --git a/integration-tests/go.sum b/integration-tests/go.sum index 7fc7e516f86..d4ed1cb966d 100644 --- a/integration-tests/go.sum +++ b/integration-tests/go.sum @@ -1642,10 +1642,10 @@ 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.0 h1:qaLw7J7oRRsj+lUzzIjGVlXAVNmkAEwjj7xTXe0hcAk= github.com/smartcontractkit/chainlink-testing-framework/wasp v1.51.0/go.mod h1:eqV2n0vpqnY5N51je5/1vC/Qm8MMXVKvOXjLM+53Sog= -github.com/smartcontractkit/chainlink-ton v0.0.0-20250923115307-8be0359fbce5 h1:bpuj+Uwfz3eIoWAz++dxmx4PKmmAReqgkpZaibN8KlI= -github.com/smartcontractkit/chainlink-ton v0.0.0-20250923115307-8be0359fbce5/go.mod h1:8HcupBfNYQFTewBXisIqG+dHkjMEVeFa+hV5ZFWIwlo= -github.com/smartcontractkit/chainlink-ton/deployment v0.0.0-20250923115307-8be0359fbce5 h1:TLzMjXJCiWEMUr/k/TC7MBy6PeNFqYdp748i8nOHyGU= -github.com/smartcontractkit/chainlink-ton/deployment v0.0.0-20250923115307-8be0359fbce5/go.mod h1:6A+vzX/1E+JCVYJtG3CTaed0PJsw4KP7jRRB6RirMck= +github.com/smartcontractkit/chainlink-ton v0.0.0-20250923170055-ba21c6ff1cc2 h1:GFS/eU30QYVJ/kT52IEA4SK2jHAJQblVRR5phE9yWhU= +github.com/smartcontractkit/chainlink-ton v0.0.0-20250923170055-ba21c6ff1cc2/go.mod h1:8HcupBfNYQFTewBXisIqG+dHkjMEVeFa+hV5ZFWIwlo= +github.com/smartcontractkit/chainlink-ton/deployment v0.0.0-20250923170055-ba21c6ff1cc2 h1:E88yV2JCK7Gv/m4aVpg/lQn7CNBZivh3vS6nFyxXbuw= +github.com/smartcontractkit/chainlink-ton/deployment v0.0.0-20250923170055-ba21c6ff1cc2/go.mod h1:6A+vzX/1E+JCVYJtG3CTaed0PJsw4KP7jRRB6RirMck= 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.20250422175525-b7575d96bd4d h1:qLmSOOtB/Ogn79eIDkuujOu8M5Jd747V1H7Brk/nTvo= diff --git a/integration-tests/load/go.mod b/integration-tests/load/go.mod index 34213a54bbf..597e894496a 100644 --- a/integration-tests/load/go.mod +++ b/integration-tests/load/go.mod @@ -50,6 +50,11 @@ require ( golang.org/x/sync v0.16.0 ) +require ( + github.com/smartcontractkit/chainlink-ton v0.0.0-20250923170055-ba21c6ff1cc2 // indirect + github.com/smartcontractkit/chainlink-ton/deployment v0.0.0-20250923170055-ba21c6ff1cc2 // indirect +) + require ( cloud.google.com/go/auth v0.16.2 // indirect cloud.google.com/go/auth/oauth2adapt v0.2.8 // indirect @@ -492,8 +497,6 @@ require ( github.com/smartcontractkit/chainlink-testing-framework/lib/grafana v1.51.0 // indirect github.com/smartcontractkit/chainlink-testing-framework/parrot v0.6.2 // indirect github.com/smartcontractkit/chainlink-testing-framework/sentinel v0.1.2 // indirect - github.com/smartcontractkit/chainlink-ton v0.0.0-20250923115307-8be0359fbce5 // indirect - github.com/smartcontractkit/chainlink-ton/deployment v0.0.0-20250923115307-8be0359fbce5 // indirect github.com/smartcontractkit/chainlink-tron/relayer v0.0.11-0.20250908203554-5bd9d2fe9513 // indirect github.com/smartcontractkit/freeport v0.1.3-0.20250716200817-cb5dfd0e369e // indirect github.com/smartcontractkit/grpc-proxy v0.0.0-20240830132753-a7e17fec5ab7 // indirect diff --git a/integration-tests/load/go.sum b/integration-tests/load/go.sum index 77481e4da7f..bcd78102c69 100644 --- a/integration-tests/load/go.sum +++ b/integration-tests/load/go.sum @@ -1621,10 +1621,10 @@ 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.0 h1:qaLw7J7oRRsj+lUzzIjGVlXAVNmkAEwjj7xTXe0hcAk= github.com/smartcontractkit/chainlink-testing-framework/wasp v1.51.0/go.mod h1:eqV2n0vpqnY5N51je5/1vC/Qm8MMXVKvOXjLM+53Sog= -github.com/smartcontractkit/chainlink-ton v0.0.0-20250923115307-8be0359fbce5 h1:bpuj+Uwfz3eIoWAz++dxmx4PKmmAReqgkpZaibN8KlI= -github.com/smartcontractkit/chainlink-ton v0.0.0-20250923115307-8be0359fbce5/go.mod h1:8HcupBfNYQFTewBXisIqG+dHkjMEVeFa+hV5ZFWIwlo= -github.com/smartcontractkit/chainlink-ton/deployment v0.0.0-20250923115307-8be0359fbce5 h1:TLzMjXJCiWEMUr/k/TC7MBy6PeNFqYdp748i8nOHyGU= -github.com/smartcontractkit/chainlink-ton/deployment v0.0.0-20250923115307-8be0359fbce5/go.mod h1:6A+vzX/1E+JCVYJtG3CTaed0PJsw4KP7jRRB6RirMck= +github.com/smartcontractkit/chainlink-ton v0.0.0-20250923170055-ba21c6ff1cc2 h1:GFS/eU30QYVJ/kT52IEA4SK2jHAJQblVRR5phE9yWhU= +github.com/smartcontractkit/chainlink-ton v0.0.0-20250923170055-ba21c6ff1cc2/go.mod h1:8HcupBfNYQFTewBXisIqG+dHkjMEVeFa+hV5ZFWIwlo= +github.com/smartcontractkit/chainlink-ton/deployment v0.0.0-20250923170055-ba21c6ff1cc2 h1:E88yV2JCK7Gv/m4aVpg/lQn7CNBZivh3vS6nFyxXbuw= +github.com/smartcontractkit/chainlink-ton/deployment v0.0.0-20250923170055-ba21c6ff1cc2/go.mod h1:6A+vzX/1E+JCVYJtG3CTaed0PJsw4KP7jRRB6RirMck= 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.20250422175525-b7575d96bd4d h1:qLmSOOtB/Ogn79eIDkuujOu8M5Jd747V1H7Brk/nTvo= diff --git a/system-tests/lib/go.mod b/system-tests/lib/go.mod index 5866137a793..d3032853fe6 100644 --- a/system-tests/lib/go.mod +++ b/system-tests/lib/go.mod @@ -60,7 +60,11 @@ require ( gopkg.in/yaml.v3 v3.0.1 ) -require github.com/hashicorp/go-multierror v1.1.1 // indirect +require ( + github.com/hashicorp/go-multierror v1.1.1 // indirect + github.com/smartcontractkit/chainlink-ton v0.0.0-20250923170055-ba21c6ff1cc2 // indirect + github.com/smartcontractkit/chainlink-ton/deployment v0.0.0-20250923170055-ba21c6ff1cc2 // indirect +) require ( cosmossdk.io/api v0.7.6 // indirect @@ -468,8 +472,6 @@ require ( github.com/smartcontractkit/chainlink-protos/workflows/go v0.0.0-20250912140847-cbfb1710ac76 // indirect github.com/smartcontractkit/chainlink-sui v0.0.0-20250916193659-4becc28a467f // indirect github.com/smartcontractkit/chainlink-testing-framework/parrot v0.6.2 // indirect - github.com/smartcontractkit/chainlink-ton v0.0.0-20250923115307-8be0359fbce5 // indirect - github.com/smartcontractkit/chainlink-ton/deployment v0.0.0-20250923115307-8be0359fbce5 // indirect github.com/smartcontractkit/chainlink-tron/relayer v0.0.11-0.20250908203554-5bd9d2fe9513 // indirect github.com/smartcontractkit/freeport v0.1.3-0.20250716200817-cb5dfd0e369e // indirect github.com/smartcontractkit/grpc-proxy v0.0.0-20240830132753-a7e17fec5ab7 // indirect diff --git a/system-tests/lib/go.sum b/system-tests/lib/go.sum index caf5cf5595e..2b75895f5f4 100644 --- a/system-tests/lib/go.sum +++ b/system-tests/lib/go.sum @@ -1633,10 +1633,10 @@ github.com/smartcontractkit/chainlink-testing-framework/parrot v0.6.2 h1:cWUHB6Q github.com/smartcontractkit/chainlink-testing-framework/parrot v0.6.2/go.mod h1:Z4K5VJLjsfqIIaBcZ1Sfccxu0xsCxBjPa6zF+5gtQaM= github.com/smartcontractkit/chainlink-testing-framework/seth v1.51.2 h1:ZJ/8Jx6Be5//TyjPi1pS1uotnmcYq5vVkSyISIymSj8= github.com/smartcontractkit/chainlink-testing-framework/seth v1.51.2/go.mod h1:kHYJnZUqiPF7/xN5273prV+srrLJkS77GbBXHLKQpx0= -github.com/smartcontractkit/chainlink-ton v0.0.0-20250923115307-8be0359fbce5 h1:bpuj+Uwfz3eIoWAz++dxmx4PKmmAReqgkpZaibN8KlI= -github.com/smartcontractkit/chainlink-ton v0.0.0-20250923115307-8be0359fbce5/go.mod h1:8HcupBfNYQFTewBXisIqG+dHkjMEVeFa+hV5ZFWIwlo= -github.com/smartcontractkit/chainlink-ton/deployment v0.0.0-20250923115307-8be0359fbce5 h1:TLzMjXJCiWEMUr/k/TC7MBy6PeNFqYdp748i8nOHyGU= -github.com/smartcontractkit/chainlink-ton/deployment v0.0.0-20250923115307-8be0359fbce5/go.mod h1:6A+vzX/1E+JCVYJtG3CTaed0PJsw4KP7jRRB6RirMck= +github.com/smartcontractkit/chainlink-ton v0.0.0-20250923170055-ba21c6ff1cc2 h1:GFS/eU30QYVJ/kT52IEA4SK2jHAJQblVRR5phE9yWhU= +github.com/smartcontractkit/chainlink-ton v0.0.0-20250923170055-ba21c6ff1cc2/go.mod h1:8HcupBfNYQFTewBXisIqG+dHkjMEVeFa+hV5ZFWIwlo= +github.com/smartcontractkit/chainlink-ton/deployment v0.0.0-20250923170055-ba21c6ff1cc2 h1:E88yV2JCK7Gv/m4aVpg/lQn7CNBZivh3vS6nFyxXbuw= +github.com/smartcontractkit/chainlink-ton/deployment v0.0.0-20250923170055-ba21c6ff1cc2/go.mod h1:6A+vzX/1E+JCVYJtG3CTaed0PJsw4KP7jRRB6RirMck= 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.20250422175525-b7575d96bd4d h1:qLmSOOtB/Ogn79eIDkuujOu8M5Jd747V1H7Brk/nTvo= diff --git a/system-tests/tests/go.mod b/system-tests/tests/go.mod index de5fd3477e3..c8caf09eb02 100644 --- a/system-tests/tests/go.mod +++ b/system-tests/tests/go.mod @@ -64,6 +64,11 @@ require ( gopkg.in/yaml.v3 v3.0.1 ) +require ( + github.com/smartcontractkit/chainlink-ton v0.0.0-20250923170055-ba21c6ff1cc2 // indirect + github.com/smartcontractkit/chainlink-ton/deployment v0.0.0-20250923170055-ba21c6ff1cc2 // indirect +) + require ( cloud.google.com/go/auth v0.16.2 // indirect cloud.google.com/go/auth/oauth2adapt v0.2.8 // indirect @@ -552,8 +557,6 @@ require ( github.com/smartcontractkit/chainlink-testing-framework/framework/components/dockercompose v0.1.14-0.20250918200130-426cdc905d74 // indirect github.com/smartcontractkit/chainlink-testing-framework/lib/grafana v1.50.0 // indirect github.com/smartcontractkit/chainlink-testing-framework/parrot v0.6.2 // indirect - github.com/smartcontractkit/chainlink-ton v0.0.0-20250923115307-8be0359fbce5 // indirect - github.com/smartcontractkit/chainlink-ton/deployment v0.0.0-20250923115307-8be0359fbce5 // indirect github.com/smartcontractkit/chainlink-tron/relayer v0.0.11-0.20250908203554-5bd9d2fe9513 // indirect github.com/smartcontractkit/crib-sdk v0.4.0 // indirect github.com/smartcontractkit/freeport v0.1.3-0.20250716200817-cb5dfd0e369e // indirect diff --git a/system-tests/tests/go.sum b/system-tests/tests/go.sum index 19d3ce0b7e7..effe334d4a4 100644 --- a/system-tests/tests/go.sum +++ b/system-tests/tests/go.sum @@ -1842,10 +1842,10 @@ 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-20250923115307-8be0359fbce5 h1:bpuj+Uwfz3eIoWAz++dxmx4PKmmAReqgkpZaibN8KlI= -github.com/smartcontractkit/chainlink-ton v0.0.0-20250923115307-8be0359fbce5/go.mod h1:8HcupBfNYQFTewBXisIqG+dHkjMEVeFa+hV5ZFWIwlo= -github.com/smartcontractkit/chainlink-ton/deployment v0.0.0-20250923115307-8be0359fbce5 h1:TLzMjXJCiWEMUr/k/TC7MBy6PeNFqYdp748i8nOHyGU= -github.com/smartcontractkit/chainlink-ton/deployment v0.0.0-20250923115307-8be0359fbce5/go.mod h1:6A+vzX/1E+JCVYJtG3CTaed0PJsw4KP7jRRB6RirMck= +github.com/smartcontractkit/chainlink-ton v0.0.0-20250923170055-ba21c6ff1cc2 h1:GFS/eU30QYVJ/kT52IEA4SK2jHAJQblVRR5phE9yWhU= +github.com/smartcontractkit/chainlink-ton v0.0.0-20250923170055-ba21c6ff1cc2/go.mod h1:8HcupBfNYQFTewBXisIqG+dHkjMEVeFa+hV5ZFWIwlo= +github.com/smartcontractkit/chainlink-ton/deployment v0.0.0-20250923170055-ba21c6ff1cc2 h1:E88yV2JCK7Gv/m4aVpg/lQn7CNBZivh3vS6nFyxXbuw= +github.com/smartcontractkit/chainlink-ton/deployment v0.0.0-20250923170055-ba21c6ff1cc2/go.mod h1:6A+vzX/1E+JCVYJtG3CTaed0PJsw4KP7jRRB6RirMck= 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.20250422175525-b7575d96bd4d h1:qLmSOOtB/Ogn79eIDkuujOu8M5Jd747V1H7Brk/nTvo= From e48c707c3b2916e8cc0b108a10fa2afe368327e7 Mon Sep 17 00:00:00 2001 From: Dmytro Haidashenko Date: Fri, 26 Sep 2025 14:31:22 +0200 Subject: [PATCH 18/21] Trigger Build From 6166fb2850915bcdccf289a540fc156edd6cce10 Mon Sep 17 00:00:00 2001 From: Dmytro Haidashenko Date: Mon, 29 Sep 2025 15:01:53 +0200 Subject: [PATCH 19/21] bump evm capabilties --- plugins/plugins.private.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/plugins.private.yaml b/plugins/plugins.private.yaml index bf764c76391..df1094e394c 100644 --- a/plugins/plugins.private.yaml +++ b/plugins/plugins.private.yaml @@ -41,7 +41,7 @@ plugins: installPath: "github.com/smartcontractkit/capabilities/http_trigger" evm: - moduleURI: "github.com/smartcontractkit/capabilities/chain_capabilities/evm" - gitRef: "c41b9d1734341f0afc451de7a19ccc0ec2344a13" + gitRef: "7bfba549572d72acc3d099af774bf93f3a1d0448" installPath: "github.com/smartcontractkit/capabilities/chain_capabilities/evm" mock: - moduleURI: "github.com/smartcontractkit/capabilities/mock" From d969508803046745749a314a8b16136a08e0750c Mon Sep 17 00:00:00 2001 From: Dmytro Haidashenko Date: Mon, 29 Sep 2025 17:07:29 +0200 Subject: [PATCH 20/21] Return error if multiple offchain cfgs are defined --- deployment/cre/ocr3/config.go | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/deployment/cre/ocr3/config.go b/deployment/cre/ocr3/config.go index fcc74d2b199..1232b573f9c 100644 --- a/deployment/cre/ocr3/config.go +++ b/deployment/cre/ocr3/config.go @@ -234,12 +234,9 @@ func GenerateOCR3Config(cfg OracleConfig, nca []NodeKeys, secrets focr.OCRSecret cfgBytes := reportingPluginConfigOverride if cfgBytes == nil { - var offchainCfg offchainConfig - switch { - case cfg.ConsensusCapOffchainConfig != nil: - offchainCfg = cfg.ConsensusCapOffchainConfig - case cfg.ChainCapOffchainConfig != nil: - offchainCfg = cfg.ChainCapOffchainConfig + offchainCfg, err := getOffchainCfg(cfg) + if err != nil { + return OCR2OracleConfig{}, fmt.Errorf("failed to get offchain config: %w", err) } if offchainCfg != nil { offchainCfgAsProto, err := offchainCfg.ToProto() @@ -301,6 +298,23 @@ func GenerateOCR3Config(cfg OracleConfig, nca []NodeKeys, secrets focr.OCRSecret return config, nil } +func getOffchainCfg(oracleCfg OracleConfig) (offchainConfig, error) { + var result offchainConfig + if oracleCfg.ConsensusCapOffchainConfig != nil { + result = oracleCfg.ConsensusCapOffchainConfig + } + + if oracleCfg.ChainCapOffchainConfig != nil { + if result != nil { + return nil, fmt.Errorf("multiple offchain configs specified: %+v. Only one allowed", oracleCfg) + } + + result = oracleCfg.ChainCapOffchainConfig + } + + return result, nil +} + type ConfigureOCR3Request struct { Cfg *OracleConfig Chain cldf_evm.Chain From e7a3c41276333092724cc9d71752bd89c1e5009f Mon Sep 17 00:00:00 2001 From: Dmytro Haidashenko Date: Mon, 29 Sep 2025 17:07:59 +0200 Subject: [PATCH 21/21] fix chain cap offchain cfg definition --- system-tests/lib/cre/contracts/contracts.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/system-tests/lib/cre/contracts/contracts.go b/system-tests/lib/cre/contracts/contracts.go index d08c8a653dc..395cd151b65 100644 --- a/system-tests/lib/cre/contracts/contracts.go +++ b/system-tests/lib/cre/contracts/contracts.go @@ -786,6 +786,7 @@ func DefaultOCR3Config(topology *cre.Topology) (*keystone_changeset.OracleConfig ConsensusCapOffchainConfig: &ocr3.ConsensusCapOffchainConfig{ MaxQueryLengthBytes: 1000000, MaxObservationLengthBytes: 1000000, + MaxOutcomeLengthBytes: 1000000, MaxReportLengthBytes: 1000000, MaxBatchSize: 1000, }, @@ -804,6 +805,7 @@ func DefaultChainCapabilityOCR3Config(topology *cre.Topology) (*keystone_changes cfg.DeltaRoundMillis = 1000 const kib = 1024 const mib = 1024 * kib + cfg.ConsensusCapOffchainConfig = nil cfg.ChainCapOffchainConfig = &ocr3.ChainCapOffchainConfig{ MaxQueryLengthBytes: mib, MaxObservationLengthBytes: 97 * kib,