From 537c8af7bfc0bd5d8233942e37ee575fa12b7b15 Mon Sep 17 00:00:00 2001 From: yashnevatia Date: Mon, 14 Sep 2026 16:05:08 +0100 Subject: [PATCH 01/33] Add outcome for previous round missing request ids --- .../chainconsensus/oracle/reporting_plugin.go | 21 ++++++- .../oracle/reporting_plugin_test.go | 56 ++++++++++++++++++- 2 files changed, 75 insertions(+), 2 deletions(-) diff --git a/libs/chainconsensus/oracle/reporting_plugin.go b/libs/chainconsensus/oracle/reporting_plugin.go index 3342bf4fe..76457d099 100644 --- a/libs/chainconsensus/oracle/reporting_plugin.go +++ b/libs/chainconsensus/oracle/reporting_plugin.go @@ -773,7 +773,26 @@ func (rp *reportingPlugin) Outcome( return nil, fmt.Errorf("failed to unmarshal request IDs: %w", err) } - for _, requestID := range query.RequestIDs { + requestIDs := query.RequestIDs + if prevOutcome := rp.tryUnmarshalPreviousOutcome(outctx); prevOutcome != nil { + seen := make(map[string]struct{}, len(query.RequestIDs)) + for _, requestID := range query.RequestIDs { + seen[requestID] = struct{}{} + } + + // Requests that the leader's query omitted but that a quorum of nodes still supplied + // observations for (via addObservationsOfPrevMissingRequests) must still be aggregated here, + // otherwise they would be recycled into MissingRequestIDs forever instead of getting resolved. + for _, requestID := range prevOutcome.MissingRequestIDs { + if _, ok := seen[requestID]; ok { + continue + } + seen[requestID] = struct{}{} + requestIDs = append(requestIDs, requestID) + } + } + + for _, requestID := range requestIDs { observationType, err := rp.agreeOnObservationType(requestID, aos) if err != nil { rp.logger.Infow("Could not determine observation type", "requestID", requestID, "err", err) diff --git a/libs/chainconsensus/oracle/reporting_plugin_test.go b/libs/chainconsensus/oracle/reporting_plugin_test.go index 464749211..02a7a230c 100644 --- a/libs/chainconsensus/oracle/reporting_plugin_test.go +++ b/libs/chainconsensus/oracle/reporting_plugin_test.go @@ -648,6 +648,7 @@ func TestOutcome(t *testing.T) { testCases := []struct { name string requestIDs []string + previousOutcome *types.Outcome nodesObservations []types.Observation expectedError string expectedOutcome *types.Outcome @@ -759,6 +760,55 @@ func TestOutcome(t *testing.T) { MissingRequestIDs: []string{"request_1", "request_2"}, }, }, + { + // This reproduces the recovery path added in Observation() via addObservationsOfPrevMissingRequests: + // a request that was flagged as missing in the previous round's Outcome is not present in this + // round's leader query, but a quorum of nodes still supplied observations for it (because they + // proactively re-added it). Outcome() should aggregate it into outcome.Outcomes instead of just + // re-flagging it as missing forever. + name: "recovers observations for previously missing requests not in current query", + requestIDs: []string{"request_in_query"}, + previousOutcome: &types.Outcome{ + ChainHeight: chainHeight, + MissingRequestIDs: []string{"request_missing"}, + }, + nodesObservations: []types.Observation{ + { + // node1 + Observations: map[string]*types.RequestObservation{ + "request_in_query": {Observation: &types.RequestObservation_EventuallyConsistent{EventuallyConsistent: []byte("value1")}}, + "request_missing": {Observation: &types.RequestObservation_EventuallyConsistent{EventuallyConsistent: []byte("recovered")}}, + }, + }, + { + // node2 + Observations: map[string]*types.RequestObservation{ + "request_in_query": {Observation: &types.RequestObservation_EventuallyConsistent{EventuallyConsistent: []byte("value1")}}, + "request_missing": {Observation: &types.RequestObservation_EventuallyConsistent{EventuallyConsistent: []byte("recovered")}}, + }, + }, + { + // node3 + Observations: map[string]*types.RequestObservation{ + "request_in_query": {Observation: &types.RequestObservation_EventuallyConsistent{EventuallyConsistent: []byte("value1")}}, + "request_missing": {Observation: &types.RequestObservation_EventuallyConsistent{EventuallyConsistent: []byte("recovered")}}, + }, + }, + }, + expectedOutcome: &types.Outcome{ + ChainHeight: chainHeight, + Outcomes: []*types.RequestOutcome{ + { + RequestID: "request_in_query", + Outcome: &types.RequestOutcome_EventuallyConsistent{EventuallyConsistent: []byte("value1")}, + }, + { + RequestID: "request_missing", + Outcome: &types.RequestOutcome_EventuallyConsistent{EventuallyConsistent: []byte("recovered")}, + }, + }, + }, + }, { name: "F+1 nodes agree on request value and F observed error", requestIDs: []string{"request"}, @@ -867,7 +917,11 @@ func TestOutcome(t *testing.T) { require.NoError(t, err) rawAOs = append(rawAOs, ocrtypes.AttributedObservation{Observation: rawObservation}) } - rawOutcome, err := plugin.Outcome(t.Context(), ocr3types.OutcomeContext{}, mustQuery(t, tc.requestIDs), rawAOs) + var outcomeContext ocr3types.OutcomeContext + if tc.previousOutcome != nil { + outcomeContext.PreviousOutcome = mustMarshalProto(tc.previousOutcome) + } + rawOutcome, err := plugin.Outcome(t.Context(), outcomeContext, mustQuery(t, tc.requestIDs), rawAOs) if tc.expectedError == "" { require.NoError(t, err) var outcome types.Outcome From 5753fe6a6c3c2c98e0e3ffb01b8ed89d7608fe1f Mon Sep 17 00:00:00 2001 From: yashnevatia Date: Tue, 15 Sep 2026 10:27:51 +0100 Subject: [PATCH 02/33] gate behind config flag --- .../chainconsensus/oracle/reporting_plugin.go | 39 ++-- .../oracle/reporting_plugin_factory.go | 26 +-- .../oracle/reporting_plugin_test.go | 65 +++++- libs/go.mod | 80 ++++---- libs/go.sum | 188 ++++++++++-------- 5 files changed, 233 insertions(+), 165 deletions(-) diff --git a/libs/chainconsensus/oracle/reporting_plugin.go b/libs/chainconsensus/oracle/reporting_plugin.go index 76457d099..210eff716 100644 --- a/libs/chainconsensus/oracle/reporting_plugin.go +++ b/libs/chainconsensus/oracle/reporting_plugin.go @@ -38,11 +38,12 @@ var _ ocr3types.ReportingPlugin[[]byte] = (*reportingPlugin)(nil) type Config struct { ocr3types.ReportingPluginConfig - MaxBatchSize int // max number of requests that this node will try to process in a single round - MaxObservationLength int // max length of observation in bytes - MaxReportLengthBytes int // max length of report in bytes - MaxReportCount int // max number of reports in a single round - MinResponsesToAggregate int // minimum responses to aggregate to accept a read value; 0 means use F+1 + MaxBatchSize int // max number of requests that this node will try to process in a single round + MaxObservationLength int // max length of observation in bytes + MaxReportLengthBytes int // max length of report in bytes + MaxReportCount int // max number of reports in a single round + MinResponsesToAggregate int // minimum responses to aggregate to accept a read value; 0 means use F+1 + EnableMissingRequestRecovery bool // whether to enable missing request recovery } // matchingThreshold returns the minimum number of nodes that must report identical @@ -774,21 +775,23 @@ func (rp *reportingPlugin) Outcome( } requestIDs := query.RequestIDs - if prevOutcome := rp.tryUnmarshalPreviousOutcome(outctx); prevOutcome != nil { - seen := make(map[string]struct{}, len(query.RequestIDs)) - for _, requestID := range query.RequestIDs { - seen[requestID] = struct{}{} - } + if rp.config.EnableMissingRequestRecovery { + if prevOutcome := rp.tryUnmarshalPreviousOutcome(outctx); prevOutcome != nil { + seen := make(map[string]struct{}, len(query.RequestIDs)) + for _, requestID := range query.RequestIDs { + seen[requestID] = struct{}{} + } - // Requests that the leader's query omitted but that a quorum of nodes still supplied - // observations for (via addObservationsOfPrevMissingRequests) must still be aggregated here, - // otherwise they would be recycled into MissingRequestIDs forever instead of getting resolved. - for _, requestID := range prevOutcome.MissingRequestIDs { - if _, ok := seen[requestID]; ok { - continue + // Requests that the leader's query omitted but that a quorum of nodes still supplied + // observations for (via addObservationsOfPrevMissingRequests) must still be aggregated here, + // otherwise they would be recycled into MissingRequestIDs forever instead of getting resolved. + for _, requestID := range prevOutcome.MissingRequestIDs { + if _, ok := seen[requestID]; ok { + continue + } + seen[requestID] = struct{}{} + requestIDs = append(requestIDs, requestID) } - seen[requestID] = struct{}{} - requestIDs = append(requestIDs, requestID) } } diff --git a/libs/chainconsensus/oracle/reporting_plugin_factory.go b/libs/chainconsensus/oracle/reporting_plugin_factory.go index 8ff3a42ae..75f0abdcb 100644 --- a/libs/chainconsensus/oracle/reporting_plugin_factory.go +++ b/libs/chainconsensus/oracle/reporting_plugin_factory.go @@ -59,12 +59,13 @@ func (rpf *ReportingPluginFactory) NewReportingPlugin( rpf.logger.Infof("Using reporting plugin config: %+v", offchainCfg) cfg := Config{ - ReportingPluginConfig: config, - MaxBatchSize: int(offchainCfg.MaxBatchSize), - MaxObservationLength: int(offchainCfg.MaxObservationLengthBytes), - MaxReportLengthBytes: int(offchainCfg.MaxReportLengthBytes), - MaxReportCount: int(offchainCfg.MaxReportCount), - MinResponsesToAggregate: int(offchainCfg.MinResponsesToAggregate), + ReportingPluginConfig: config, + MaxBatchSize: int(offchainCfg.MaxBatchSize), + MaxObservationLength: int(offchainCfg.MaxObservationLengthBytes), + MaxReportLengthBytes: int(offchainCfg.MaxReportLengthBytes), + MaxReportCount: int(offchainCfg.MaxReportCount), + MinResponsesToAggregate: int(offchainCfg.MinResponsesToAggregate), + EnableMissingRequestRecovery: offchainCfg.EnableMissingRequestRecovery, } pluginLogger := rpf.logger.Named("ChainReadReportingPlugin") @@ -86,12 +87,13 @@ func readConfig(rawCfg []byte) (*evmcapocr3types.ReportingPluginConfig, error) { const kib = 1024 const mib = 1024 * kib return &evmcapocr3types.ReportingPluginConfig{ - MaxQueryLengthBytes: mib, - MaxObservationLengthBytes: 95 * kib, // calculation based on 1 Gbit/s bandwidth, 1s round, 10 nodes. Calculator https://docs.google.com/spreadsheets/d/1ldBQGGT_B2OLdeU5QpTzv30V3HhcMbGCtNE0axRo8sg/edit?gid=1355297791#gid=1355297791 - MaxOutcomeLengthBytes: ocr3types.MaxMaxOutcomeLength, - MaxReportLengthBytes: ocr3types.MaxMaxReportLength, - MaxReportCount: ocr3types.MaxMaxReportCount, - MaxBatchSize: 200, + MaxQueryLengthBytes: mib, + MaxObservationLengthBytes: 95 * kib, // calculation based on 1 Gbit/s bandwidth, 1s round, 10 nodes. Calculator https://docs.google.com/spreadsheets/d/1ldBQGGT_B2OLdeU5QpTzv30V3HhcMbGCtNE0axRo8sg/edit?gid=1355297791#gid=1355297791 + MaxOutcomeLengthBytes: ocr3types.MaxMaxOutcomeLength, + MaxReportLengthBytes: ocr3types.MaxMaxReportLength, + MaxReportCount: ocr3types.MaxMaxReportCount, + MaxBatchSize: 200, + EnableMissingRequestRecovery: false, }, nil } diff --git a/libs/chainconsensus/oracle/reporting_plugin_test.go b/libs/chainconsensus/oracle/reporting_plugin_test.go index 02a7a230c..a0532f921 100644 --- a/libs/chainconsensus/oracle/reporting_plugin_test.go +++ b/libs/chainconsensus/oracle/reporting_plugin_test.go @@ -646,13 +646,14 @@ func TestOutcome(t *testing.T) { } chainHeight := &types.ChainHeight{Latest: 10, Safe: 9, Finalized: 8} testCases := []struct { - name string - requestIDs []string - previousOutcome *types.Outcome - nodesObservations []types.Observation - expectedError string - expectedOutcome *types.Outcome - expectedLogs []string + name string + requestIDs []string + previousOutcome *types.Outcome + enableMissingRequestRecovery bool + nodesObservations []types.Observation + expectedError string + expectedOutcome *types.Outcome + expectedLogs []string }{ { name: "fails to agree on chain height", @@ -766,8 +767,9 @@ func TestOutcome(t *testing.T) { // round's leader query, but a quorum of nodes still supplied observations for it (because they // proactively re-added it). Outcome() should aggregate it into outcome.Outcomes instead of just // re-flagging it as missing forever. - name: "recovers observations for previously missing requests not in current query", - requestIDs: []string{"request_in_query"}, + name: "recovers observations for previously missing requests not in current query", + requestIDs: []string{"request_in_query"}, + enableMissingRequestRecovery: true, previousOutcome: &types.Outcome{ ChainHeight: chainHeight, MissingRequestIDs: []string{"request_missing"}, @@ -809,6 +811,49 @@ func TestOutcome(t *testing.T) { }, }, }, + { + // Same setup as the recovery test above, but with the flag left at its default (false). + // Requests missing from the leader's query must NOT be recovered, so behavior stays + // unchanged for nodes that haven't opted in via offchain config yet. + name: "does not recover previously missing requests when flag is disabled", + requestIDs: []string{"request_in_query"}, + previousOutcome: &types.Outcome{ + ChainHeight: chainHeight, + MissingRequestIDs: []string{"request_missing"}, + }, + nodesObservations: []types.Observation{ + { + // node1 + Observations: map[string]*types.RequestObservation{ + "request_in_query": {Observation: &types.RequestObservation_EventuallyConsistent{EventuallyConsistent: []byte("value1")}}, + "request_missing": {Observation: &types.RequestObservation_EventuallyConsistent{EventuallyConsistent: []byte("recovered")}}, + }, + }, + { + // node2 + Observations: map[string]*types.RequestObservation{ + "request_in_query": {Observation: &types.RequestObservation_EventuallyConsistent{EventuallyConsistent: []byte("value1")}}, + "request_missing": {Observation: &types.RequestObservation_EventuallyConsistent{EventuallyConsistent: []byte("recovered")}}, + }, + }, + { + // node3 + Observations: map[string]*types.RequestObservation{ + "request_in_query": {Observation: &types.RequestObservation_EventuallyConsistent{EventuallyConsistent: []byte("value1")}}, + "request_missing": {Observation: &types.RequestObservation_EventuallyConsistent{EventuallyConsistent: []byte("recovered")}}, + }, + }, + }, + expectedOutcome: &types.Outcome{ + ChainHeight: chainHeight, + Outcomes: []*types.RequestOutcome{ + { + RequestID: "request_in_query", + Outcome: &types.RequestOutcome_EventuallyConsistent{EventuallyConsistent: []byte("value1")}, + }, + }, + }, + }, { name: "F+1 nodes agree on request value and F observed error", requestIDs: []string{"request"}, @@ -908,7 +953,7 @@ func TestOutcome(t *testing.T) { for _, tc := range testCases { t.Run(tc.name, func(t *testing.T) { lggr, observed := logger.TestObserved(t, zapcore.DebugLevel) - plugin := newReportingPlugin(Config{ReportingPluginConfig: ocr3types.ReportingPluginConfig{F: 1, N: 4}}, logger.Sugared(lggr), nil, nil, test.GetConsensusMetrics(t)) + plugin := newReportingPlugin(Config{ReportingPluginConfig: ocr3types.ReportingPluginConfig{F: 1, N: 4}, EnableMissingRequestRecovery: tc.enableMissingRequestRecovery}, logger.Sugared(lggr), nil, nil, test.GetConsensusMetrics(t)) var rawAOs []ocrtypes.AttributedObservation for i := range tc.nodesObservations { nodesObservations := &tc.nodesObservations[i] diff --git a/libs/go.mod b/libs/go.mod index d03260b46..21cd69b5a 100644 --- a/libs/go.mod +++ b/libs/go.mod @@ -1,6 +1,6 @@ module github.com/smartcontractkit/capabilities/libs -go 1.26.4 +go 1.26.6 require ( github.com/cenkalti/backoff/v5 v5.0.3 @@ -8,17 +8,17 @@ require ( github.com/google/uuid v1.6.0 github.com/hashicorp/go-plugin v1.8.0 github.com/shopspring/decimal v1.4.0 - github.com/smartcontractkit/chainlink-common v0.11.2-0.20260713185857-30ad2e76c0f4 - github.com/smartcontractkit/chainlink-protos/cre/go v0.0.0-20260707203317-661b54b51a33 + github.com/smartcontractkit/chainlink-common v0.11.2-0.20260915085450-70e088c78bf2 + github.com/smartcontractkit/chainlink-protos/cre/go v0.0.0-20260804191526-b7a850ae7648 github.com/smartcontractkit/libocr v0.0.0-20260810200708-618b5bf7f342 - github.com/stretchr/testify v1.11.1 - go.opentelemetry.io/otel v1.44.0 - go.opentelemetry.io/otel/metric v1.44.0 - go.opentelemetry.io/otel/sdk/metric v1.44.0 - go.uber.org/zap v1.27.1 - google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa + github.com/stretchr/testify v1.12.1 + go.opentelemetry.io/otel v1.46.0 + go.opentelemetry.io/otel/metric v1.46.0 + go.opentelemetry.io/otel/sdk/metric v1.46.0 + go.uber.org/zap v1.28.0 + google.golang.org/genproto/googleapis/rpc v0.0.0-20260819154853-08b0e4226688 google.golang.org/grpc v1.83.1 - google.golang.org/protobuf v1.36.11 + google.golang.org/protobuf v1.36.12 ) require ( @@ -30,24 +30,23 @@ require ( github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/cloudevents/sdk-go/binding/format/protobuf/v2 v2.16.1 // indirect github.com/cloudevents/sdk-go/v2 v2.16.1 // indirect - github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/fatih/color v1.18.0 // indirect github.com/fxamacker/cbor/v2 v2.9.0 // indirect github.com/gabriel-vasile/mimetype v1.4.8 // indirect github.com/go-json-experiment/json v0.0.0-20250223041408-d3c622f1b874 // indirect - github.com/go-logr/logr v1.4.3 // indirect + github.com/go-logr/logr v1.4.4 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-playground/locales v0.14.1 // indirect github.com/go-playground/universal-translator v0.18.1 // indirect github.com/go-playground/validator/v10 v10.26.0 // indirect - github.com/go-viper/mapstructure/v2 v2.4.0 // indirect + github.com/go-viper/mapstructure/v2 v2.5.0 // indirect github.com/golang/protobuf v1.5.4 // indirect github.com/grafana/otel-profiling-go v0.5.1 // indirect github.com/grafana/pyroscope-go v1.2.8 // indirect github.com/grafana/pyroscope-go/godeltaprof v0.1.9 // indirect github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1 // indirect github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.2 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.30.0 // indirect github.com/hashicorp/go-hclog v1.6.3 // indirect github.com/hashicorp/yamux v0.1.2 // indirect github.com/invopop/jsonschema v0.13.0 // indirect @@ -73,7 +72,6 @@ require ( github.com/pelletier/go-toml v1.9.5 // indirect github.com/pelletier/go-toml/v2 v2.2.4 // indirect github.com/pkg/errors v0.9.1 // indirect - github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/prometheus/client_golang v1.23.2 // indirect github.com/prometheus/client_model v0.6.2 // indirect github.com/prometheus/common v0.67.5 // indirect @@ -81,42 +79,46 @@ require ( github.com/santhosh-tekuri/jsonschema/v5 v5.3.1 // indirect github.com/scylladb/go-reflectx v1.0.1 // indirect github.com/smartcontractkit/chain-selectors v1.0.104 // indirect - github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.11-0.20260626151909-052e55e62e62 // indirect + github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.11-0.20260724142814-45996a1bcb72 // indirect github.com/smartcontractkit/chainlink-protos/linking-service/go v0.0.0-20251002192024-d2ad9222409b // indirect + github.com/smartcontractkit/chainlink-protos/metering/go v0.0.0-20260710151514-27b5a126dabe // indirect github.com/smartcontractkit/chainlink-protos/node-platform v0.0.0-20260709145319-7782fb89eb16 // indirect github.com/smartcontractkit/freeport v0.1.3-0.20250716200817-cb5dfd0e369e // indirect github.com/smartcontractkit/grpc-proxy v0.0.0-20240830132753-a7e17fec5ab7 // indirect - github.com/stretchr/objx v0.5.2 // indirect + github.com/stellar/go-stellar-sdk v0.4.0 // indirect + github.com/stellar/go-xdr v0.0.0-20260312225820-cc2b0611aabf // indirect + github.com/stretchr/objx v0.5.3 // indirect github.com/wk8/go-ordered-map/v2 v2.1.8 // indirect github.com/x448/float16 v0.8.4 // indirect go.opentelemetry.io/auto/sdk v1.2.1 // indirect go.opentelemetry.io/contrib/bridges/prometheus v0.68.0 // indirect - go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.63.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.12.2 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.19.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.36.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.43.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.43.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.36.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.43.0 // indirect - go.opentelemetry.io/otel/exporters/stdout/stdoutlog v0.13.0 // indirect - go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.36.0 // indirect - go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.36.0 // indirect - go.opentelemetry.io/otel/log v0.19.0 // indirect - go.opentelemetry.io/otel/sdk v1.44.0 // indirect - go.opentelemetry.io/otel/sdk/log v0.19.0 // indirect - go.opentelemetry.io/otel/trace v1.44.0 // indirect - go.opentelemetry.io/proto/otlp v1.10.0 // indirect + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.70.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.22.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.22.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.46.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.46.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.46.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.46.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.46.0 // indirect + go.opentelemetry.io/otel/exporters/stdout/stdoutlog v0.22.0 // indirect + go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.46.0 // indirect + go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.46.0 // indirect + go.opentelemetry.io/otel/log v0.22.0 // indirect + go.opentelemetry.io/otel/sdk v1.46.0 // indirect + go.opentelemetry.io/otel/sdk/log v0.22.0 // indirect + go.opentelemetry.io/otel/trace v1.46.0 // indirect + go.opentelemetry.io/proto/otlp v1.11.0 // indirect go.uber.org/goleak v1.3.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.yaml.in/yaml/v2 v2.4.4 // indirect - golang.org/x/crypto v0.53.0 // indirect + go.yaml.in/yaml/v3 v3.0.5 // indirect + golang.org/x/crypto v0.55.0 // indirect golang.org/x/exp v0.0.0-20260508232706-74f9aab9d74a // indirect - golang.org/x/net v0.55.0 // indirect - golang.org/x/sync v0.21.0 // indirect - golang.org/x/sys v0.46.0 // indirect - golang.org/x/text v0.38.0 // indirect + golang.org/x/net v0.58.0 // indirect + golang.org/x/sync v0.22.0 // indirect + golang.org/x/sys v0.47.0 // indirect + golang.org/x/text v0.41.0 // indirect golang.org/x/time v0.15.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20260526163538-3dc84a4a5aaa // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20260819154853-08b0e4226688 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/libs/go.sum b/libs/go.sum index d15854361..a85053e3a 100644 --- a/libs/go.sum +++ b/libs/go.sum @@ -29,8 +29,6 @@ github.com/cloudevents/sdk-go/v2 v2.16.1/go.mod h1:v/kVOaWjNfbvc6tkhhlkhvLapj8Aa github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= -github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dominikbraun/graph v0.23.0 h1:TdZB4pPqCLFxYhdyMFb1TBdFxp8XLcJfTTBQucVPgCo= github.com/dominikbraun/graph v0.23.0/go.mod h1:yOjYyogZLY1LSG9E33JWZJiq5k83Qy2C6POAuiViluc= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= @@ -40,6 +38,8 @@ github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7 github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= github.com/fatih/color v1.18.0 h1:S8gINlzdQ840/4pfAwic/ZE0djQEH3wM94VfqLTZcOM= github.com/fatih/color v1.18.0/go.mod h1:4FelSpRwEGDpQ12mAdzqdOukCy4u8WUtOY6lkT/6HfU= +github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= +github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= github.com/fxamacker/cbor/v2 v2.9.0 h1:NpKPmjDBgUfBms6tr6JZkTHtfFGcMKsw3eGcmD/sapM= github.com/fxamacker/cbor/v2 v2.9.0/go.mod h1:vM4b+DJCtHn+zz7h3FFp/hDAI9WNWCsZj23V5ytsSxQ= github.com/gabriel-vasile/mimetype v1.4.8 h1:FfZ3gj38NjllZIeJAmMhr+qKL8Wu+nOoI3GqacKw1NM= @@ -48,8 +48,8 @@ github.com/go-json-experiment/json v0.0.0-20250223041408-d3c622f1b874 h1:F8d1AJ6 github.com/go-json-experiment/json v0.0.0-20250223041408-d3c622f1b874/go.mod h1:TiCD2a1pcmjd7YnhGH0f/zKNcCD06B029pHhzV23c2M= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= -github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= -github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/logr v1.4.4 h1:tG4xh9yMsRCAiodLVTxyrkzSZ9+o0L1Kg/+cPVcbP/8= +github.com/go-logr/logr v1.4.4/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-playground/assert/v2 v2.2.0 h1:JvknZsQTYeFEAhQwI4qEt9cyV5ONwRHC+lYKSsYSR8s= @@ -62,8 +62,8 @@ github.com/go-playground/validator/v10 v10.26.0 h1:SP05Nqhjcvz81uJaRfEV0YBSSSGMc github.com/go-playground/validator/v10 v10.26.0/go.mod h1:I5QpIEbmr8On7W0TktmJAumgzX4CA1XNl4ZmDuVHKKo= github.com/go-sql-driver/mysql v1.8.1 h1:LedoTUt/eveggdHS9qUFC1EFSa8bU2+1pZjSRpvNJ1Y= github.com/go-sql-driver/mysql v1.8.1/go.mod h1:wEBSXgmK//2ZFJyE+qWnIsVGmvmEKlqwuVSjsCm7DZg= -github.com/go-viper/mapstructure/v2 v2.4.0 h1:EBsztssimR/CONLSZZ04E8qAkxNYq4Qp9LvH92wZUgs= -github.com/go-viper/mapstructure/v2 v2.4.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= +github.com/go-viper/mapstructure/v2 v2.5.0 h1:vM5IJoUAy3d7zRSVtIwQgBj7BiWtMPfmPEgAXnvj1Ro= +github.com/go-viper/mapstructure/v2 v2.5.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= github.com/goccy/go-json v0.10.5 h1:Fq85nIqj+gXn/S5ahsiTlK3TmC85qgirsdTP/+DeaC4= github.com/goccy/go-json v0.10.5/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= @@ -107,8 +107,8 @@ github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1 h1:qnpS github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1/go.mod h1:lXGCsh6c22WGtjr+qGHj1otzZpV/1kwTMAqkwZsnWRU= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.2 h1:sGm2vDRFUrQJO/Veii4h4zG2vvqG6uWNkBHSTqXOZk0= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.2/go.mod h1:wd1YpapPLivG6nQgbf7ZkG1hhSOXDhhn4MLTknx2aAc= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0 h1:HWRh5R2+9EifMyIHV7ZV+MIZqgz+PMpZ14Jynv3O2Zs= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0/go.mod h1:JfhWUomR1baixubs02l85lZYYOm7LV6om4ceouMv45c= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.30.0 h1:/Tnpcb2E0Pz/tN9s3bfEY2Q8ePCEX9iuS+cneUwncnw= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.30.0/go.mod h1:zOBXOsUaBSjKgmH4OGzV1esUpR3oUSCPYVd2cUBjKYY= github.com/hashicorp/go-hclog v1.6.3 h1:Qr2kF+eVWjTiYmU7Y31tYlP1h0q/X3Nl3tPGdaB11/k= github.com/hashicorp/go-hclog v1.6.3/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= github.com/hashicorp/go-plugin v1.8.0 h1:ie8S6RRY8RvB2usYZv+AAZ/wBvx2AU5p5QeP5j/FORs= @@ -174,8 +174,14 @@ github.com/mr-tron/base58 v1.2.0 h1:T/HDJBh4ZCPbU39/+c3rRvE0uKBQlU27+QI8LJ4t64o= github.com/mr-tron/base58 v1.2.0/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= +github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= +github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= github.com/oklog/run v1.2.0 h1:O8x3yXwah4A73hJdlrwo/2X6J62gE5qTMusH0dvz60E= github.com/oklog/run v1.2.0/go.mod h1:mgDbKRSwPhJfesJ4PntqFUbKQRZ50NgmZTSPlFA0YFk= +github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= +github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU= +github.com/onsi/gomega v1.27.10 h1:naR28SdDFlqrG6kScpT8VWpu1xWY5nJRCF3XaYyBjhI= +github.com/onsi/gomega v1.27.10/go.mod h1:RsS8tutOdbdgzbPtzzATp12yT7kM5I5aElG3evPbQ0M= github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8= github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= github.com/pelletier/go-toml/v2 v2.2.4 h1:mye9XuhQ6gvn5h28+VilKrrPoQVanw5PMw/TB0t5Ec4= @@ -185,8 +191,6 @@ github.com/pierrec/lz4/v4 v4.1.22/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFu github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= -github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/prometheus/client_golang v1.23.2 h1:Je96obch5RDVy3FDMndoUsjAhG5Edi49h0RJWRi/o0o= github.com/prometheus/client_golang v1.23.2/go.mod h1:Tb1a6LWHB3/SPIzCoaDXI4I8UHKeFTEQ1YCr+0Gyqmg= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= @@ -206,16 +210,18 @@ github.com/shopspring/decimal v1.4.0 h1:bxl37RwXBklmTi0C79JfXCEBD1cqqHt0bbgBAGFp github.com/shopspring/decimal v1.4.0/go.mod h1:gawqmDU56v4yIKSwfBSFip1HdCCXN8/+DMd9qYNcwME= github.com/smartcontractkit/chain-selectors v1.0.104 h1:/n9pPGM5W/+r1eHoWZv4VwX9LNS1af4+ICyhM8zKRNM= github.com/smartcontractkit/chain-selectors v1.0.104/go.mod h1:qy7whtgG5g+7z0jt0nRyii9bLND9m15NZTzuQPkMZ5w= -github.com/smartcontractkit/chainlink-common v0.11.2-0.20260713185857-30ad2e76c0f4 h1:KSg0EnUdefIGyR3Fa6/nXhWXaCUlMP5qFAsLHwzi6Fk= -github.com/smartcontractkit/chainlink-common v0.11.2-0.20260713185857-30ad2e76c0f4/go.mod h1:snfVBRRQTpC2x5O3bQHZe9SvJX5yv/SbG8oHkJTKLtE= -github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.11-0.20260626151909-052e55e62e62 h1:o7vfwNQjQbMKQ9YsZFQOxvU7RMXD/wKnZsX5N9sDS3w= -github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.11-0.20260626151909-052e55e62e62/go.mod h1:HmUyH2oD9m+GRpKq7q3vuRnm1F2Uczf/Nd1v3ipMSK8= +github.com/smartcontractkit/chainlink-common v0.11.2-0.20260915085450-70e088c78bf2 h1:Y7lkBB/AKz4Fdf6UXhqEnqa0/KgJlF3C2PRQE1bPf9g= +github.com/smartcontractkit/chainlink-common v0.11.2-0.20260915085450-70e088c78bf2/go.mod h1:ks0kniCCg8Siv2XflmwLOq5ib9Ifoh6VHXHwfEWIMQA= +github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.11-0.20260724142814-45996a1bcb72 h1:uWEwl7i2ryuRVoV4DmIKm6mqYevf1lH/8cQYhw/JXko= +github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.11-0.20260724142814-45996a1bcb72/go.mod h1:UYcRMb4dZcoaIPgZJ3hckCySTqtJc9K4Q+tOKErwTq0= github.com/smartcontractkit/chainlink-protos/billing/go v0.0.0-20251024234028-0988426d98f4 h1:GCzrxDWn3b7jFfEA+WiYRi8CKoegsayiDoJBCjYkneE= github.com/smartcontractkit/chainlink-protos/billing/go v0.0.0-20251024234028-0988426d98f4/go.mod h1:HHGeDUpAsPa0pmOx7wrByCitjQ0mbUxf0R9v+g67uCA= -github.com/smartcontractkit/chainlink-protos/cre/go v0.0.0-20260707203317-661b54b51a33 h1:oW88YVT5ENU6rCPVOLV/hofmFBux2Mu1EOwz8KJu5ic= -github.com/smartcontractkit/chainlink-protos/cre/go v0.0.0-20260707203317-661b54b51a33/go.mod h1:/i8hjTPFdVWHiY+QjeSiVS2Z3GB3WAZznGgXHstC02E= +github.com/smartcontractkit/chainlink-protos/cre/go v0.0.0-20260804191526-b7a850ae7648 h1:WEUMkKQPAgcNMRgES6CBWrRUiII+HKEWQjulKQBSuMA= +github.com/smartcontractkit/chainlink-protos/cre/go v0.0.0-20260804191526-b7a850ae7648/go.mod h1:/i8hjTPFdVWHiY+QjeSiVS2Z3GB3WAZznGgXHstC02E= github.com/smartcontractkit/chainlink-protos/linking-service/go v0.0.0-20251002192024-d2ad9222409b h1:QuI6SmQFK/zyUlVWEf0GMkiUYBPY4lssn26nKSd/bOM= github.com/smartcontractkit/chainlink-protos/linking-service/go v0.0.0-20251002192024-d2ad9222409b/go.mod h1:qSTSwX3cBP3FKQwQacdjArqv0g6QnukjV4XuzO6UyoY= +github.com/smartcontractkit/chainlink-protos/metering/go v0.0.0-20260710151514-27b5a126dabe h1:MDnY5wQbWTpFdDnMRicEnoMfSP5nM/KncARr4skP1ug= +github.com/smartcontractkit/chainlink-protos/metering/go v0.0.0-20260710151514-27b5a126dabe/go.mod h1:z7lx7wI3XZ4u9kmUtAVdwn1BCC9T8aieWSDcuDgPTdQ= github.com/smartcontractkit/chainlink-protos/node-platform v0.0.0-20260709145319-7782fb89eb16 h1:/vkKPJoweLkRd56V4YHGRAtTG4+/JAlgklGEfvH6l4c= github.com/smartcontractkit/chainlink-protos/node-platform v0.0.0-20260709145319-7782fb89eb16/go.mod h1:dkR2uYg9XYJuT1JASkPzWE51jjFkVb86P7a/yXe5/GM= github.com/smartcontractkit/chainlink-protos/workflows/go v0.0.0-20260528173149-f5b8336b19d9 h1:LQy2j2+TdKLSWsUTUYuqmQPn8kjqCLjGI3ZJYGtDc08= @@ -226,11 +232,15 @@ github.com/smartcontractkit/grpc-proxy v0.0.0-20240830132753-a7e17fec5ab7 h1:12i github.com/smartcontractkit/grpc-proxy v0.0.0-20240830132753-a7e17fec5ab7/go.mod h1:FX7/bVdoep147QQhsOPkYsPEXhGZjeYx6lBSaSXtZOA= github.com/smartcontractkit/libocr v0.0.0-20260810200708-618b5bf7f342 h1:pEcgcjTGA83MzpqbTbyIg9AJrOs62s77SooDdJGIg9w= github.com/smartcontractkit/libocr v0.0.0-20260810200708-618b5bf7f342/go.mod h1:5JPtsRwjugpyfsdEALC4RopfvohqK/G+3DHaR8uv+Bc= +github.com/stellar/go-stellar-sdk v0.4.0 h1:WBLeJk7EllU7WhwrTH1L5Mu2EhZor/xy5sVi/82JzNQ= +github.com/stellar/go-stellar-sdk v0.4.0/go.mod h1:tLKAQPxa2I5UvGMabBbUXcY3fmgYnfDudrMeK7CDX4w= +github.com/stellar/go-xdr v0.0.0-20260312225820-cc2b0611aabf h1:GY1RVbX3Hg7poPXEf6yojjP0hyypvgUgZmCqQU9D0xg= +github.com/stellar/go-xdr v0.0.0-20260312225820-cc2b0611aabf/go.mod h1:If+U9Z1W5xU97VrOgJandQT+2dN7/iOpkCrxBJEyF80= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= -github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= -github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= +github.com/stretchr/objx v0.5.3 h1:jmXUvGomnU1o3W/V5h2VEradbpJDwGrzugQQvL0POH4= +github.com/stretchr/objx v0.5.3/go.mod h1:rDQraq+vQZU7Fde9LOZLr8Tax6zZvy4kuNKF+QYS+U0= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= @@ -238,14 +248,16 @@ github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/ github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= -github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= -github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= +github.com/stretchr/testify v1.12.1 h1:EuwCh5fleGS7H32xRwO3wRGT7DxrDhLAT6FF8MpWDWE= +github.com/stretchr/testify v1.12.1/go.mod h1:MDEgiDPPsNp5cuIrHPPCyornHKgEVbtFUmoNlxoYthg= github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw= github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= github.com/wk8/go-ordered-map/v2 v2.1.8 h1:5h/BUHu93oj4gIdvHHHGsScSTMijfx5PeYkE/fJgbpc= github.com/wk8/go-ordered-map/v2 v2.1.8/go.mod h1:5nJHM5DyteebpVlHnWMV0rPz6Zp7+xBAnxjb1X5vnTw= github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM= github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg= +github.com/xdrpp/goxdr v0.1.1 h1:E1B2c6E8eYhOVyd7yEpOyopzTPirUeF6mVOfXfGyJyc= +github.com/xdrpp/goxdr v0.1.1/go.mod h1:dXo1scL/l6s7iME1gxHWo2XCppbHEKZS7m/KyYWkNzA= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/zeebo/xxh3 v1.0.2 h1:xZmwmqxHZA8AI603jOQ0tMqmBr9lPeFwGg6d+xy9DC0= github.com/zeebo/xxh3 v1.0.2/go.mod h1:5NWz9Sef7zIDm2JHfFlcQvNekmcEl9ekUZQQKCYaDcA= @@ -253,65 +265,67 @@ go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y= go.opentelemetry.io/contrib/bridges/prometheus v0.68.0 h1:w3zlHYETbDwXyWHZlyyR58ZC39XGi8rAhkBgUgJ9d5w= go.opentelemetry.io/contrib/bridges/prometheus v0.68.0/go.mod h1:GR/mClR2nn7vE8RLwxKjoBNg+QtgdDhRzxVa93koy5o= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.63.0 h1:YH4g8lQroajqUwWbq/tr2QX1JFmEXaDLgG+ew9bLMWo= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.63.0/go.mod h1:fvPi2qXDqFs8M4B4fmJhE92TyQs9Ydjlg3RvfUp+NbQ= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.70.0 h1:oECp5f+hN7nkwjU/8BxQ/q23bGPb8FIrD839owX222E= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.70.0/go.mod h1:DqEFwLumhzMBDQv9PcWbyoDxHI/4lAk6CM4nJBH39sc= go.opentelemetry.io/otel v1.21.0/go.mod h1:QZzNPQPm1zLX4gZK4cMi+71eaorMSGT3A4znnUvNNEo= -go.opentelemetry.io/otel v1.44.0 h1:JjwHmHpA4iZ3wBxluu2fbbE7j4kqlE8jXyAyPXH7HqU= -go.opentelemetry.io/otel v1.44.0/go.mod h1:BMgjTHL9WPRlRjL2oZCBTL4whCGtXch2H4BhOPIAyYc= -go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.12.2 h1:06ZeJRe5BnYXceSM9Vya83XXVaNGe3H1QqsvqRANQq8= -go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.12.2/go.mod h1:DvPtKE63knkDVP88qpatBj81JxN+w1bqfVbsbCbj1WY= -go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.19.0 h1:HIBTQ3VO5aupLKjC90JgMqpezVXwFuq6Ryjn0/izoag= -go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.19.0/go.mod h1:ji9vId85hMxqfvICA0Jt8JqEdrXaAkcpkI9HPXya0ro= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.36.0 h1:zwdo1gS2eH26Rg+CoqVQpEK1h8gvt5qyU5Kk5Bixvow= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.36.0/go.mod h1:rUKCPscaRWWcqGT6HnEmYrK+YNe5+Sw64xgQTOJ5b30= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.43.0 h1:w1K+pCJoPpQifuVpsKamUdn9U0zM3xUziVOqsGksUrY= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.43.0/go.mod h1:HBy4BjzgVE8139ieRI75oXm3EcDN+6GhD88JT1Kjvxg= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.43.0 h1:88Y4s2C8oTui1LGM6bTWkw0ICGcOLCAI5l6zsD1j20k= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.43.0/go.mod h1:Vl1/iaggsuRlrHf/hfPJPvVag77kKyvrLeD10kpMl+A= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.36.0 h1:JgtbA0xkWHnTmYk7YusopJFX6uleBmAuZ8n05NEh8nQ= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.36.0/go.mod h1:179AK5aar5R3eS9FucPy6rggvU0g52cvKId8pv4+v0c= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.43.0 h1:3iZJKlCZufyRzPzlQhUIWVmfltrXuGyfjREgGP3UUjc= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.43.0/go.mod h1:/G+nUPfhq2e+qiXMGxMwumDrP5jtzU+mWN7/sjT2rak= -go.opentelemetry.io/otel/exporters/stdout/stdoutlog v0.13.0 h1:yEX3aC9KDgvYPhuKECHbOlr5GLwH6KTjLJ1sBSkkxkc= -go.opentelemetry.io/otel/exporters/stdout/stdoutlog v0.13.0/go.mod h1:/GXR0tBmmkxDaCUGahvksvp66mx4yh5+cFXgSlhg0vQ= -go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.36.0 h1:rixTyDGXFxRy1xzhKrotaHy3/KXdPhlWARrCgK+eqUY= -go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.36.0/go.mod h1:dowW6UsM9MKbJq5JTz2AMVp3/5iW5I/TStsk8S+CfHw= -go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.36.0 h1:G8Xec/SgZQricwWBJF/mHZc7A02YHedfFDENwJEdRA0= -go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.36.0/go.mod h1:PD57idA/AiFD5aqoxGxCvT/ILJPeHy3MjqU/NS7KogY= -go.opentelemetry.io/otel/log v0.19.0 h1:KUZs/GOsw79TBBMfDWsXS+KZ4g2Ckzksd1ymzsIEbo4= -go.opentelemetry.io/otel/log v0.19.0/go.mod h1:5DQYeGmxVIr4n0/BcJvF4upsraHjg6vudJJpnkL6Ipk= +go.opentelemetry.io/otel v1.46.0 h1:FHt5/CDyVxi/8IM1CH7VE/rRgq3kLHa2mSTVMO8AWyc= +go.opentelemetry.io/otel v1.46.0/go.mod h1:Gj3SEScelsNC45tp4nSxRYlS+f5iez7W8XPMCt905kE= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.22.0 h1:Bu39F5tzJct+f2IZbB8989fwyTps3c8e7EsUQsz+vs8= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.22.0/go.mod h1:dJUwod88EsFgYCqrDHaSPzhiY9pBUpt0d85/qSfua7k= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.22.0 h1:lYk7RmxdLK865qLwibroNGldHa1U7SWKYYvNjlK7PIo= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.22.0/go.mod h1:6GvlND0H0xdUJanOtIAn0xfwLkauh1tmsYEEVSMDdqY= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.46.0 h1:qkDYCAFiZXLcs1L4aY+tP2wguQ4kURANqHOQMA2et2s= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.46.0/go.mod h1:tkipS4DRzmpAmvg+Gw4++O1IdDq6TVDnvnYU6cmbQVs= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.46.0 h1:AP23h/mFgb/lc7tdck1Kfn9qxsM8TAeNPCU5C3pzaps= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.46.0/go.mod h1:K4EqCe1b4kGk5WR690ntg9LaBfsPoV32FwthbyoptuA= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.46.0 h1:OFnwLJr+pF3iHrlGSzbxyuo6/6HyBlnlN1CWEJmBVcw= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.46.0/go.mod h1:716wFneO0ov19A2beH5hjfh9AK5z/VWNAtDijp1Y0/g= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.46.0 h1:w53CDeOA/Kurp7yRsegSr6pbbr759dOvJ+yNmWM6Hxs= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.46.0/go.mod h1:BOmGMCbAtvcJiSJ+hLuhgPLdDbimnraSl8irz3iY8sY= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.46.0 h1:KrC1YrQeSt46ITMWAbgQx1M1eV1/1TKzttrBzymPmss= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.46.0/go.mod h1:zDSEzoEqsOrgBeGvH66KRgxh90VonFyJqBHA0Pk3+rM= +go.opentelemetry.io/otel/exporters/stdout/stdoutlog v0.22.0 h1:kvMAiLEudKmk+CSG+iYbU8vTUGNNDaf/V09OO5lrTwI= +go.opentelemetry.io/otel/exporters/stdout/stdoutlog v0.22.0/go.mod h1:L9Dlksri+MdT1cb2gIiA1cJJYW3Y92ipvDjNxYEyaDI= +go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.46.0 h1:PR9eAf7o0dQs3hshZNZpE9aW2dXWX/KdDf6pJilVD3U= +go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.46.0/go.mod h1:2Z4KyNdH1uuzivdinyfGsxzNNT/Rl45pwtVwfYVI0xk= +go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.46.0 h1:KdRxPiAoMptR3vfWzvjjvutTsSiwbC2uG0496rzZNfo= +go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.46.0/go.mod h1:K/qSA+3G7Eovxi4K09wzrAgkWRnosS0DAOZeEpve7sM= +go.opentelemetry.io/otel/log v0.22.0 h1:5DBNnfvaJ6CVdkJ+Jle8Tzs50aSSv49TXGj9XRsEYw0= +go.opentelemetry.io/otel/log v0.22.0/go.mod h1:gzOt/R67vF2GniAqWu8Qv0SXy89f71muHcrkz76PCdc= go.opentelemetry.io/otel/metric v1.21.0/go.mod h1:o1p3CA8nNHW8j5yuQLdc1eeqEaPfzug24uvsyIEJRWM= -go.opentelemetry.io/otel/metric v1.44.0 h1:1w0gILTcHdr3YI+ixLyjemwrVnsMURbTZFrSYCdDdmc= -go.opentelemetry.io/otel/metric v1.44.0/go.mod h1:8O7hanEPBNgEMmybD3s2VBKcgWOCsA6tzHBPODAiquo= -go.opentelemetry.io/otel/metric/x v0.66.0 h1:YkCrx1zLOChi9ZcZ6euupOcsgzbVlec7D/xoEU1+cTA= -go.opentelemetry.io/otel/metric/x v0.66.0/go.mod h1:d1+BDj9t96do0/1LoU1ayfCv79ZgNE41qbhBvnMOBZk= +go.opentelemetry.io/otel/metric v1.46.0 h1:yBnkXvgV7AXFILZc5K6IZe/CBFF3OS7BJ8ov6/lj0K8= +go.opentelemetry.io/otel/metric v1.46.0/go.mod h1:iPmdWqifKUdzziPkvvzIJXITl56fQx2mGM/DHLB3/2o= +go.opentelemetry.io/otel/metric/x v0.68.0 h1:TA/cBT23D3MnxYPwHL7YFOdYGdx0A0v+s7Mzotpd1dU= +go.opentelemetry.io/otel/metric/x v0.68.0/go.mod h1:agudOmvWhwUTjgibWDzxD2PoWYnpw5Ht5jISYOD2Hd4= go.opentelemetry.io/otel/sdk v1.21.0/go.mod h1:Nna6Yv7PWTdgJHVRD9hIYywQBRx7pbox6nwBnZIxl/E= -go.opentelemetry.io/otel/sdk v1.44.0 h1:nHYwb9lK+fJPU/dnT6s7W7Z8itMWyqrnVfbheVYrZ58= -go.opentelemetry.io/otel/sdk v1.44.0/go.mod h1:Osuydd3Se74nqjAKxid74N5eC+jfEqfTegHRnq58oK0= -go.opentelemetry.io/otel/sdk/log v0.19.0 h1:scYVLqT22D2gqXItnWiocLUKGH9yvkkeql5dBDiXyko= -go.opentelemetry.io/otel/sdk/log v0.19.0/go.mod h1:vFBowwXGLlW9AvpuF7bMgnNI95LiW10szrOdvzBHlAg= -go.opentelemetry.io/otel/sdk/log/logtest v0.19.0 h1:BEbF7ZBB6qQloV/Ub1+3NQoOUnVtcGkU3XX4Ws3GQfk= -go.opentelemetry.io/otel/sdk/log/logtest v0.19.0/go.mod h1:Lua81/3yM0wOmoHTokLj9y9ADeA02v1naRrVrkAZuKk= -go.opentelemetry.io/otel/sdk/metric v1.44.0 h1:3LlKgI+VjbVsjNRFZJZAJ30WjXC5VkNRks6si09iEfI= -go.opentelemetry.io/otel/sdk/metric v1.44.0/go.mod h1:5B5pMARnXxKhltooO4xUuCBorl65a4EpnTalObqOigA= +go.opentelemetry.io/otel/sdk v1.46.0 h1:h5CNQQjEbuQXY/JfZtgt3i7HVFV3aHPO2OAwO2eTYPI= +go.opentelemetry.io/otel/sdk v1.46.0/go.mod h1:GAERFXFt5SYCEB+YiKUbMBeza6UaDH7GmGOZEfh2gSM= +go.opentelemetry.io/otel/sdk/log v0.22.0 h1:PRL+s6P63XT4E/bheEflopPUpVxuvANqZwtt89yhoGk= +go.opentelemetry.io/otel/sdk/log v0.22.0/go.mod h1:JNp0sBELrjCTcu5W3GzABVypeU6vDJjBS+X0JISuz+g= +go.opentelemetry.io/otel/sdk/log/logtest v0.22.0 h1:infPnfNrhCNgOUZRs3gWUg8vhoBUHihq02gwK05gzlg= +go.opentelemetry.io/otel/sdk/log/logtest v0.22.0/go.mod h1:gkQZA3z15Bv3KU9vigBTi8dFechSozRP7v94X4VZv+s= +go.opentelemetry.io/otel/sdk/metric v1.46.0 h1:0piZ26EG4RBfebb2jhDH6ERCYHoVWduc3kLgPCwSnSE= +go.opentelemetry.io/otel/sdk/metric v1.46.0/go.mod h1:I1PbKrdVc8Qu8HYVDNtqVIwLwjNrhsV/uFuxfwg8mO4= go.opentelemetry.io/otel/trace v1.21.0/go.mod h1:LGbsEB0f9LGjN+OZaQQ26sohbOmiMR+BaslueVtS/qQ= -go.opentelemetry.io/otel/trace v1.44.0 h1:jxF5CsGYCe74MCRx2X4g7WsY/VBKRqqpNvXlX/6gtIk= -go.opentelemetry.io/otel/trace v1.44.0/go.mod h1:oLl1jrMQAVo6v3GAggN+1VH9VIz9iUSvW53sW1Q8PIE= -go.opentelemetry.io/proto/otlp v1.10.0 h1:IQRWgT5srOCYfiWnpqUYz9CVmbO8bFmKcwYxpuCSL2g= -go.opentelemetry.io/proto/otlp v1.10.0/go.mod h1:/CV4QoCR/S9yaPj8utp3lvQPoqMtxXdzn7ozvvozVqk= +go.opentelemetry.io/otel/trace v1.46.0 h1:OULy7ccdJnZtJ0UDYFOIGaCmiWzJ8Vi2G/Rsu60qs1c= +go.opentelemetry.io/otel/trace v1.46.0/go.mod h1:J7GAXweO77XSFkB/rmAqk9D6ihszhFjLU+d9WuUxDLI= +go.opentelemetry.io/proto/otlp v1.11.0 h1:5rrYs0Ykyj50sdU/JU0x8etU+LubXWb+gED6TbEdMIk= +go.opentelemetry.io/proto/otlp v1.11.0/go.mod h1:SmVizdCOAm3XBtG1g1NnOdhW6jtddT72hLMhv8VwA8E= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= -go.uber.org/zap v1.27.1 h1:08RqriUEv8+ArZRYSTXy1LeBScaMpVSTBhCeaZYfMYc= -go.uber.org/zap v1.27.1/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= +go.uber.org/zap v1.28.0 h1:IZzaP1Fv73/T/pBMLk4VutPl36uNC+OSUh3JLG3FIjo= +go.uber.org/zap v1.28.0/go.mod h1:rDLpOi171uODNm/mxFcuYWxDsqWSAVkFdX4XojSKg/Q= go.yaml.in/yaml/v2 v2.4.4 h1:tuyd0P+2Ont/d6e2rl3be67goVK4R6deVxCUX5vyPaQ= go.yaml.in/yaml/v2 v2.4.4/go.mod h1:gMZqIpDtDqOfM0uNfy0SkpRhvUryYH0Z6wdMYcacYXQ= +go.yaml.in/yaml/v3 v3.0.5 h1:N6y/pJk8buWs9NY5ERU2HSMfm+IuD/OtfdAnq6kESPw= +go.yaml.in/yaml/v3 v3.0.5/go.mod h1:HVTZu1O7/Vkt2N+BFy8Zza+lnLsABggaTM2ZpNIGuKg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.53.0 h1:QZ4Muo8THX6CizN2vPPd5fBGHyogrdK9fG4wLPFUsto= -golang.org/x/crypto v0.53.0/go.mod h1:DNLU434OwVakk9PzuwV8w62mAJpRJL3vsgcfp4Qnsio= +golang.org/x/crypto v0.55.0 h1:+KWHjbgOaAQ66dh/YlkZKHlz9ZUlq61AFirAR9ntP8M= +golang.org/x/crypto v0.55.0/go.mod h1:uq0V9dE/fzQuJtbnL+2EhWOE63vo164FY8xqEnV9xis= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20260508232706-74f9aab9d74a h1:+3jdDGGB8NGb1Zktc737jlt3/A5f6UlwSzmvqUuufxw= golang.org/x/exp v0.0.0-20260508232706-74f9aab9d74a/go.mod h1:d2fgXJLVs4dYDHUk5lwMIfzRzSrWCfGZb0ZqeLa/Vcw= @@ -321,8 +335,8 @@ golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHl golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.36.0 h1:JJjpVx6myfUsUdAzZuOSTTmRE0PfZeNWzzvKrP7amb4= -golang.org/x/mod v0.36.0/go.mod h1:moc6ELqsWcOw5Ef3xVprK5ul/MvtVvkIXLziUOICjUQ= +golang.org/x/mod v0.38.0 h1:MECBjubtXD7yj4HrhIUcywNaGeNVUdfVnxmPajOk4yk= +golang.org/x/mod v0.38.0/go.mod h1:V6Xz0pq8TQ3dGqVQ1FVHuelZpAL0uNhSkk9ogYP3c40= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -332,16 +346,16 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= golang.org/x/net v0.0.0-20210331212208-0fccb6fa2b5c/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= -golang.org/x/net v0.55.0 h1:bcvxaJn3e1U6InsFWt1JUq1aSjnRxLzT2rtD2KfkDF8= -golang.org/x/net v0.55.0/go.mod h1:L5U2KuzuOe1lY7Z+aWVIKK6qEeJXnXV9yzGA+WCHJww= +golang.org/x/net v0.58.0 h1:ynWG7rqYi4ccpTEuPZ2QGWHktVEM9DMCj9yzDE0Q7To= +golang.org/x/net v0.58.0/go.mod h1:YwCddHnFlT7eLQqVprV19OnhLGtc5xOKgE0RyqgfWAU= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.21.0 h1:HLII4xRRTtCRkxYp4HNFF0Js/Og6q2i++KXbg0gHCwM= -golang.org/x/sync v0.21.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= +golang.org/x/sync v0.22.0 h1:SZjpbeLmrCk4xhRSZFNZW5gFUeCeFgjekvI/+gfScek= +golang.org/x/sync v0.22.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -359,17 +373,17 @@ golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.46.0 h1:noSf2Fq6F8DBgS+LysIkx7rIExoNHJsxOAtPp4rthXw= -golang.org/x/sys v0.46.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= -golang.org/x/telemetry v0.0.0-20260519152614-eab6ae52b5e2 h1:2EucmYlcIsc8Y6aLj+kX90Y00hmjqLNlw935kc13R2k= -golang.org/x/telemetry v0.0.0-20260519152614-eab6ae52b5e2/go.mod h1:Eqhaxk/wZsWEH8CRxLwj6xzEJbz7k1EFGqx7nyCoabE= +golang.org/x/sys v0.47.0 h1:o7XGOvZQCADBQQ4Y7VNq2dRWQR7JmOUW8Kxx4ZsNgWs= +golang.org/x/sys v0.47.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/telemetry v0.0.0-20260708182218-49f421fb7959 h1:RJhm5l6Fo4rmEIcndxDllNhhf/fAx8qIm4t6A7vpm2A= +golang.org/x/telemetry v0.0.0-20260708182218-49f421fb7959/go.mod h1:LV7u5Oco+Z/g6XI7PqN+EUUUGGkEcmB1uj2ceI0fOVg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.38.0 h1:sXmwo9DwP3OK9EZ7PqAdaooSGozfl/3a6/xJcbzPRhE= -golang.org/x/text v0.38.0/go.mod h1:YXZt3QhHUKYT53r2lLKFIVi6Ao1jdzrTR/KQ09qyxF4= +golang.org/x/text v0.41.0 h1:vz/seA0lnX87Othu2f/0L24RcgrXD9/YFTSuGjj3rH8= +golang.org/x/text v0.41.0/go.mod h1:jvf1O8ajNzZqhSrQBPbutR/EB83Cc0CFrezNQIwbb5M= golang.org/x/time v0.15.0 h1:bbrp8t3bGUeFOx08pvsMYRTCVSMk89u4tKbNOZbp88U= golang.org/x/time v0.15.0/go.mod h1:Y4YMaQmXwGQZoFaVFk4YpCt4FLQMYKZe9oeV/f4MSno= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -380,8 +394,8 @@ golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBn golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= -golang.org/x/tools v0.45.0 h1:18qN3FAooORvApf5XjCXgsuayZOEtXf6JK18I3+ONa8= -golang.org/x/tools v0.45.0/go.mod h1:LuUGqqaXcXMEFEruIVJVm5mgDD8vww/z/SR1gQ4uE/0= +golang.org/x/tools v0.48.0 h1:3+hClM1aLL5mjMKm5ovokw9epgRXPuu2tILgismM6RE= +golang.org/x/tools v0.48.0/go.mod h1:08xX0orndb/F7jJxGDicx061tyd5pcMto75YMAXr6lk= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -396,10 +410,10 @@ google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoA google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= google.golang.org/genproto v0.0.0-20210401141331-865547bb08e2/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= -google.golang.org/genproto/googleapis/api v0.0.0-20260526163538-3dc84a4a5aaa h1:Kjn0N0tCrDgiAFW+lGO4JZ3ck44CehvJQMAwj9QF0G8= -google.golang.org/genproto/googleapis/api v0.0.0-20260526163538-3dc84a4a5aaa/go.mod h1:q4lMZS6kskjT5HvCPrnnypcDPVJqT/f4nfxmkE7gryY= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa h1:mZHHdPZl0dbGHCflZgAq/Q468DWVFcU2whhB2KAo8fk= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8= +google.golang.org/genproto/googleapis/api v0.0.0-20260819154853-08b0e4226688 h1:ax2KzoSRIZU/M0cIxri3pKxy99vniH1PVxWC6si/eZI= +google.golang.org/genproto/googleapis/api v0.0.0-20260819154853-08b0e4226688/go.mod h1:1RJ9BQGyNdZwkGc1eTqkErfRZ6RJyYPHZo73BZ1vQqI= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260819154853-08b0e4226688 h1:cYNAzI2sUwhmCcoj9TxvihSrqsxt6uIkj3rDRhSDmW4= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260819154853-08b0e4226688/go.mod h1:DjtHYE8FKJLivXcBEjGwndXfIC23G0VpXiXKqG179uA= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= @@ -418,11 +432,13 @@ google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpAD google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= -google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= +google.golang.org/protobuf v1.36.12 h1:pJOKDDOyeXErUroCihFAd5LQuwXBSpVnKGrj5o/fwxc= +google.golang.org/protobuf v1.36.12/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= +gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= From 330bae5defeefaabf247493a4f071126b4d80d79 Mon Sep 17 00:00:00 2001 From: yashnevatia Date: Tue, 15 Sep 2026 10:49:43 +0100 Subject: [PATCH 03/33] bump libs in evm cap --- chain_capabilities/evm/go.mod | 78 ++++++++-------- chain_capabilities/evm/go.sum | 164 ++++++++++++++++++---------------- 2 files changed, 126 insertions(+), 116 deletions(-) diff --git a/chain_capabilities/evm/go.mod b/chain_capabilities/evm/go.mod index e6ff100d6..ca32bc329 100644 --- a/chain_capabilities/evm/go.mod +++ b/chain_capabilities/evm/go.mod @@ -6,17 +6,17 @@ require ( github.com/ethereum/go-ethereum v1.17.4 github.com/google/go-cmp v0.7.0 github.com/smartcontractkit/capabilities/chain_capabilities/common v0.0.0-20260729165045-b00a39493e13 - github.com/smartcontractkit/capabilities/libs v0.0.0-20260714133332-db2a5f11cd64 + github.com/smartcontractkit/capabilities/libs v0.0.0-20260915092957-846dda90a055 github.com/smartcontractkit/chain-selectors v1.0.106 - github.com/smartcontractkit/chainlink-common v0.11.2-0.20260821143015-dd4fa25f7fee + github.com/smartcontractkit/chainlink-common v0.11.2-0.20260915085450-70e088c78bf2 github.com/smartcontractkit/chainlink-evm v0.3.4-0.20260410162948-2dca02f24e98 github.com/smartcontractkit/chainlink-evm/gethwrappers v0.0.0-20251022073203-7d8ae8cf67c1 github.com/smartcontractkit/chainlink-framework/multinode v0.0.0-20260410144512-ca02ad6ed16a github.com/smartcontractkit/chainlink-protos/cre/go v0.0.0-20260821155228-fa1d775e2138 - github.com/stretchr/testify v1.12.0 - go.opentelemetry.io/otel v1.44.0 - go.uber.org/zap v1.27.1 - google.golang.org/protobuf v1.36.11 + github.com/stretchr/testify v1.12.1 + go.opentelemetry.io/otel v1.46.0 + go.uber.org/zap v1.28.0 + google.golang.org/protobuf v1.36.12 ) require ( @@ -50,7 +50,6 @@ require ( github.com/fsnotify/fsnotify v1.9.0 // indirect github.com/gabriel-vasile/mimetype v1.4.10 // indirect github.com/getsentry/sentry-go v0.27.0 // indirect - github.com/go-errors/errors v1.5.1 // indirect github.com/go-ole/go-ole v1.3.0 // indirect github.com/goccy/go-json v0.10.5 // indirect github.com/gofrs/flock v0.12.1 // indirect @@ -97,6 +96,8 @@ require ( github.com/smartcontractkit/chainlink-protos/metering/go v0.0.0-20260710151514-27b5a126dabe // indirect github.com/smartcontractkit/chainlink-protos/node-platform v0.0.0-20260709145319-7782fb89eb16 // indirect github.com/smartcontractkit/chainlink-protos/workflows/go v0.0.0-20260528173149-f5b8336b19d9 // indirect + github.com/stellar/go-stellar-sdk v0.4.0 // indirect + github.com/stellar/go-xdr v0.0.0-20260312225820-cc2b0611aabf // indirect github.com/stretchr/objx v0.5.3 // indirect github.com/supranational/blst v0.3.16 // indirect github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d // indirect @@ -116,11 +117,12 @@ require ( go.opentelemetry.io/contrib/bridges/prometheus v0.68.0 // indirect go.uber.org/goleak v1.3.0 // indirect go.yaml.in/yaml/v2 v2.4.4 // indirect - golang.org/x/mod v0.36.0 // indirect - golang.org/x/sync v0.21.0 // indirect - golang.org/x/telemetry v0.0.0-20260519152614-eab6ae52b5e2 // indirect + go.yaml.in/yaml/v3 v3.0.5 // indirect + golang.org/x/mod v0.38.0 // indirect + golang.org/x/sync v0.22.0 // indirect + golang.org/x/telemetry v0.0.0-20260708182218-49f421fb7959 // indirect golang.org/x/time v0.15.0 // indirect - golang.org/x/tools v0.45.0 // indirect + golang.org/x/tools v0.48.0 // indirect golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da // indirect gopkg.in/guregu/null.v4 v4.0.0 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect @@ -140,17 +142,17 @@ require ( github.com/fatih/color v1.18.0 // indirect github.com/fxamacker/cbor/v2 v2.9.0 // indirect github.com/go-json-experiment/json v0.0.0-20250223041408-d3c622f1b874 // indirect - github.com/go-logr/logr v1.4.3 // indirect + github.com/go-logr/logr v1.4.4 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-playground/locales v0.14.1 // indirect github.com/go-playground/universal-translator v0.18.1 // indirect github.com/go-playground/validator/v10 v10.28.0 // indirect - github.com/go-viper/mapstructure/v2 v2.4.0 // indirect + github.com/go-viper/mapstructure/v2 v2.5.0 // indirect github.com/golang/protobuf v1.5.4 // indirect github.com/google/uuid v1.6.0 // indirect github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1 // indirect github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.2 // indirect - github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0 // indirect + github.com/grpc-ecosystem/grpc-gateway/v2 v2.30.0 // indirect github.com/hashicorp/go-hclog v1.6.3 // indirect github.com/hashicorp/go-plugin v1.8.0 // indirect github.com/hashicorp/yamux v0.1.2 // indirect @@ -187,32 +189,32 @@ require ( github.com/wk8/go-ordered-map/v2 v2.1.8 // indirect github.com/x448/float16 v0.8.4 // indirect go.opentelemetry.io/auto/sdk v1.2.1 // indirect - go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.63.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.12.2 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.19.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.38.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.43.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.43.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.41.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.43.0 // indirect - go.opentelemetry.io/otel/exporters/stdout/stdoutlog v0.13.0 // indirect - go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.36.0 // indirect - go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.36.0 // indirect - go.opentelemetry.io/otel/log v0.19.0 // indirect - go.opentelemetry.io/otel/metric v1.44.0 // indirect - go.opentelemetry.io/otel/sdk v1.44.0 // indirect - go.opentelemetry.io/otel/sdk/log v0.19.0 // indirect - go.opentelemetry.io/otel/sdk/metric v1.44.0 - go.opentelemetry.io/otel/trace v1.44.0 // indirect - go.opentelemetry.io/proto/otlp v1.10.0 // indirect + go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.70.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.22.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.22.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.46.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.46.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.46.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.46.0 // indirect + go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.46.0 // indirect + go.opentelemetry.io/otel/exporters/stdout/stdoutlog v0.22.0 // indirect + go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.46.0 // indirect + go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.46.0 // indirect + go.opentelemetry.io/otel/log v0.22.0 // indirect + go.opentelemetry.io/otel/metric v1.46.0 // indirect + go.opentelemetry.io/otel/sdk v1.46.0 // indirect + go.opentelemetry.io/otel/sdk/log v0.22.0 // indirect + go.opentelemetry.io/otel/sdk/metric v1.46.0 + go.opentelemetry.io/otel/trace v1.46.0 // indirect + go.opentelemetry.io/proto/otlp v1.11.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/crypto v0.53.0 // indirect + golang.org/x/crypto v0.55.0 // indirect golang.org/x/exp v0.0.0-20260508232706-74f9aab9d74a // indirect - golang.org/x/net v0.55.0 // indirect - golang.org/x/sys v0.46.0 // indirect - golang.org/x/text v0.38.0 // indirect - google.golang.org/genproto/googleapis/api v0.0.0-20260526163538-3dc84a4a5aaa // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa // indirect + golang.org/x/net v0.58.0 // indirect + golang.org/x/sys v0.47.0 // indirect + golang.org/x/text v0.41.0 // indirect + google.golang.org/genproto/googleapis/api v0.0.0-20260819154853-08b0e4226688 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20260819154853-08b0e4226688 // indirect google.golang.org/grpc v1.83.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/chain_capabilities/evm/go.sum b/chain_capabilities/evm/go.sum index 4413c91e7..56b5705d8 100644 --- a/chain_capabilities/evm/go.sum +++ b/chain_capabilities/evm/go.sum @@ -133,8 +133,8 @@ github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vb github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= -github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI= -github.com/go-logr/logr v1.4.3/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/logr v1.4.4 h1:tG4xh9yMsRCAiodLVTxyrkzSZ9+o0L1Kg/+cPVcbP/8= +github.com/go-logr/logr v1.4.4/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= @@ -152,8 +152,8 @@ github.com/go-sql-driver/mysql v1.8.1 h1:LedoTUt/eveggdHS9qUFC1EFSa8bU2+1pZjSRpv github.com/go-sql-driver/mysql v1.8.1/go.mod h1:wEBSXgmK//2ZFJyE+qWnIsVGmvmEKlqwuVSjsCm7DZg= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= -github.com/go-viper/mapstructure/v2 v2.4.0 h1:EBsztssimR/CONLSZZ04E8qAkxNYq4Qp9LvH92wZUgs= -github.com/go-viper/mapstructure/v2 v2.4.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= +github.com/go-viper/mapstructure/v2 v2.5.0 h1:vM5IJoUAy3d7zRSVtIwQgBj7BiWtMPfmPEgAXnvj1Ro= +github.com/go-viper/mapstructure/v2 v2.5.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= github.com/goccy/go-json v0.10.5 h1:Fq85nIqj+gXn/S5ahsiTlK3TmC85qgirsdTP/+DeaC4= github.com/goccy/go-json v0.10.5/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M= github.com/gofrs/flock v0.12.1 h1:MTLVXXHf8ekldpJk3AKicLij9MdwOWkZ+a/jHHZby9E= @@ -216,8 +216,8 @@ github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1 h1:qnpS github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1/go.mod h1:lXGCsh6c22WGtjr+qGHj1otzZpV/1kwTMAqkwZsnWRU= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.2 h1:sGm2vDRFUrQJO/Veii4h4zG2vvqG6uWNkBHSTqXOZk0= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.2/go.mod h1:wd1YpapPLivG6nQgbf7ZkG1hhSOXDhhn4MLTknx2aAc= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0 h1:HWRh5R2+9EifMyIHV7ZV+MIZqgz+PMpZ14Jynv3O2Zs= -github.com/grpc-ecosystem/grpc-gateway/v2 v2.28.0/go.mod h1:JfhWUomR1baixubs02l85lZYYOm7LV6om4ceouMv45c= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.30.0 h1:/Tnpcb2E0Pz/tN9s3bfEY2Q8ePCEX9iuS+cneUwncnw= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.30.0/go.mod h1:zOBXOsUaBSjKgmH4OGzV1esUpR3oUSCPYVd2cUBjKYY= github.com/hashicorp/go-bexpr v0.1.10 h1:9kuI5PFotCboP3dkDYFr/wi0gg0QVbSNz5oFRpxn4uE= github.com/hashicorp/go-bexpr v0.1.10/go.mod h1:oxlubA2vC/gFVfX1A6JGp7ls7uCDlfJn732ehYYg+g0= github.com/hashicorp/go-hclog v1.6.3 h1:Qr2kF+eVWjTiYmU7Y31tYlP1h0q/X3Nl3tPGdaB11/k= @@ -466,12 +466,12 @@ github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMB github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/smartcontractkit/capabilities/chain_capabilities/common v0.0.0-20260729165045-b00a39493e13 h1:zUTJ8iBWZsDiiR01sDr4H2q47NBtLHl9ejPq6VOIlkg= github.com/smartcontractkit/capabilities/chain_capabilities/common v0.0.0-20260729165045-b00a39493e13/go.mod h1:8TpRObM98bypYj+xj6cMFyQs3ti1kqz+Po+m6MMTWnQ= -github.com/smartcontractkit/capabilities/libs v0.0.0-20260714133332-db2a5f11cd64 h1:D+N1i+pa+lmmd8llrSgCYmUxG3TX+iyGda5ac2sO4tc= -github.com/smartcontractkit/capabilities/libs v0.0.0-20260714133332-db2a5f11cd64/go.mod h1:DZkOtlIRV6ecpCskdXMF+k2es3uJQqTT1m5TRB9etjQ= +github.com/smartcontractkit/capabilities/libs v0.0.0-20260915092957-846dda90a055 h1:Pi9P0+eFGA7YGAeF+c11Am+tBZ8tpKV0k8o71HRgdjc= +github.com/smartcontractkit/capabilities/libs v0.0.0-20260915092957-846dda90a055/go.mod h1:avHjcoSfcEnN1rtUIi3kWyrYG3lLiKoBUaoPyDGPjY8= github.com/smartcontractkit/chain-selectors v1.0.106 h1:6Mz7FDooWJEcfvuOX3nH7oh5s44fqg/WqVDQS63Mjzs= github.com/smartcontractkit/chain-selectors v1.0.106/go.mod h1:qy7whtgG5g+7z0jt0nRyii9bLND9m15NZTzuQPkMZ5w= -github.com/smartcontractkit/chainlink-common v0.11.2-0.20260821143015-dd4fa25f7fee h1:tgmFTPN8Aj/pXeVWCQiTDKmNmbFS8G2nUFUE2dy3QWk= -github.com/smartcontractkit/chainlink-common v0.11.2-0.20260821143015-dd4fa25f7fee/go.mod h1:HXAfE3CpzesS8GTPLc9W4S4spmBLBTLbGggb5VwK5HQ= +github.com/smartcontractkit/chainlink-common v0.11.2-0.20260915085450-70e088c78bf2 h1:Y7lkBB/AKz4Fdf6UXhqEnqa0/KgJlF3C2PRQE1bPf9g= +github.com/smartcontractkit/chainlink-common v0.11.2-0.20260915085450-70e088c78bf2/go.mod h1:ks0kniCCg8Siv2XflmwLOq5ib9Ifoh6VHXHwfEWIMQA= github.com/smartcontractkit/chainlink-common/keystore v1.1.1-0.20260529092756-a94bc8ce96d6 h1:fWsYxxj35fp1/6YZngoTsOTMLqDie4N5X0osAOdhUTE= github.com/smartcontractkit/chainlink-common/keystore v1.1.1-0.20260529092756-a94bc8ce96d6/go.mod h1:6JexOOhPhknQ0QMuppFIlOpm6wCp54yZMxai+tWugwY= github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.11-0.20260724142814-45996a1bcb72 h1:uWEwl7i2ryuRVoV4DmIKm6mqYevf1lH/8cQYhw/JXko= @@ -504,6 +504,10 @@ github.com/smartcontractkit/grpc-proxy v0.0.0-20240830132753-a7e17fec5ab7 h1:12i github.com/smartcontractkit/grpc-proxy v0.0.0-20240830132753-a7e17fec5ab7/go.mod h1:FX7/bVdoep147QQhsOPkYsPEXhGZjeYx6lBSaSXtZOA= github.com/smartcontractkit/libocr v0.0.0-20260810200708-618b5bf7f342 h1:pEcgcjTGA83MzpqbTbyIg9AJrOs62s77SooDdJGIg9w= github.com/smartcontractkit/libocr v0.0.0-20260810200708-618b5bf7f342/go.mod h1:5JPtsRwjugpyfsdEALC4RopfvohqK/G+3DHaR8uv+Bc= +github.com/stellar/go-stellar-sdk v0.4.0 h1:WBLeJk7EllU7WhwrTH1L5Mu2EhZor/xy5sVi/82JzNQ= +github.com/stellar/go-stellar-sdk v0.4.0/go.mod h1:tLKAQPxa2I5UvGMabBbUXcY3fmgYnfDudrMeK7CDX4w= +github.com/stellar/go-xdr v0.0.0-20260312225820-cc2b0611aabf h1:GY1RVbX3Hg7poPXEf6yojjP0hyypvgUgZmCqQU9D0xg= +github.com/stellar/go-xdr v0.0.0-20260312225820-cc2b0611aabf/go.mod h1:If+U9Z1W5xU97VrOgJandQT+2dN7/iOpkCrxBJEyF80= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= @@ -521,8 +525,8 @@ github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1F github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= -github.com/stretchr/testify v1.12.0 h1:K6Mr6jO9JICuend/5xzTM03ydSV3vdNRYAdPSukj8uI= -github.com/stretchr/testify v1.12.0/go.mod h1:bOYBZb5qJ00vPzWfIqBUZPaxK8jWiXc6d3ErP4Ca9Gw= +github.com/stretchr/testify v1.12.1 h1:EuwCh5fleGS7H32xRwO3wRGT7DxrDhLAT6FF8MpWDWE= +github.com/stretchr/testify v1.12.1/go.mod h1:MDEgiDPPsNp5cuIrHPPCyornHKgEVbtFUmoNlxoYthg= github.com/supranational/blst v0.3.16 h1:bTDadT+3fK497EvLdWRQEjiGnUtzJ7jjIUMF0jqwYhE= github.com/supranational/blst v0.3.16/go.mod h1:jZJtfjgudtNl4en1tzwPIV3KjUnQUvG3/j+w+fVonLw= github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d h1:vfofYNRScrDdvS342BElfbETmL1Aiz3i2t0zfRj16Hs= @@ -550,6 +554,8 @@ github.com/wlynxg/anet v0.0.5 h1:J3VJGi1gvo0JwZ/P1/Yc/8p63SoW98B5dHkYDmpgvvU= github.com/wlynxg/anet v0.0.5/go.mod h1:eay5PRQr7fIVAMbTbchTnO9gG65Hg/uYGdc7mguHxoA= github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM= github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg= +github.com/xdrpp/goxdr v0.1.1 h1:E1B2c6E8eYhOVyd7yEpOyopzTPirUeF6mVOfXfGyJyc= +github.com/xdrpp/goxdr v0.1.1/go.mod h1:dXo1scL/l6s7iME1gxHWo2XCppbHEKZS7m/KyYWkNzA= github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1 h1:gEOO8jv9F4OT7lGCjxCBTO/36wtF6j2nSip77qHd4x4= github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1/go.mod h1:Ohn+xnUBiLI6FVj/9LpzZWtj1/D6lUovWYBkxHVV3aM= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= @@ -575,52 +581,52 @@ go.opentelemetry.io/auto/sdk v1.2.1 h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ go.opentelemetry.io/auto/sdk v1.2.1/go.mod h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y= go.opentelemetry.io/contrib/bridges/prometheus v0.68.0 h1:w3zlHYETbDwXyWHZlyyR58ZC39XGi8rAhkBgUgJ9d5w= go.opentelemetry.io/contrib/bridges/prometheus v0.68.0/go.mod h1:GR/mClR2nn7vE8RLwxKjoBNg+QtgdDhRzxVa93koy5o= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.63.0 h1:YH4g8lQroajqUwWbq/tr2QX1JFmEXaDLgG+ew9bLMWo= -go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.63.0/go.mod h1:fvPi2qXDqFs8M4B4fmJhE92TyQs9Ydjlg3RvfUp+NbQ= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.70.0 h1:oECp5f+hN7nkwjU/8BxQ/q23bGPb8FIrD839owX222E= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.70.0/go.mod h1:DqEFwLumhzMBDQv9PcWbyoDxHI/4lAk6CM4nJBH39sc= go.opentelemetry.io/otel v1.21.0/go.mod h1:QZzNPQPm1zLX4gZK4cMi+71eaorMSGT3A4znnUvNNEo= -go.opentelemetry.io/otel v1.44.0 h1:JjwHmHpA4iZ3wBxluu2fbbE7j4kqlE8jXyAyPXH7HqU= -go.opentelemetry.io/otel v1.44.0/go.mod h1:BMgjTHL9WPRlRjL2oZCBTL4whCGtXch2H4BhOPIAyYc= -go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.12.2 h1:06ZeJRe5BnYXceSM9Vya83XXVaNGe3H1QqsvqRANQq8= -go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.12.2/go.mod h1:DvPtKE63knkDVP88qpatBj81JxN+w1bqfVbsbCbj1WY= -go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.19.0 h1:HIBTQ3VO5aupLKjC90JgMqpezVXwFuq6Ryjn0/izoag= -go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.19.0/go.mod h1:ji9vId85hMxqfvICA0Jt8JqEdrXaAkcpkI9HPXya0ro= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.38.0 h1:vl9obrcoWVKp/lwl8tRE33853I8Xru9HFbw/skNeLs8= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.38.0/go.mod h1:GAXRxmLJcVM3u22IjTg74zWBrRCKq8BnOqUVLodpcpw= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.43.0 h1:w1K+pCJoPpQifuVpsKamUdn9U0zM3xUziVOqsGksUrY= -go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.43.0/go.mod h1:HBy4BjzgVE8139ieRI75oXm3EcDN+6GhD88JT1Kjvxg= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.43.0 h1:88Y4s2C8oTui1LGM6bTWkw0ICGcOLCAI5l6zsD1j20k= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.43.0/go.mod h1:Vl1/iaggsuRlrHf/hfPJPvVag77kKyvrLeD10kpMl+A= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.41.0 h1:mq/Qcf28TWz719lE3/hMB4KkyDuLJIvgJnFGcd0kEUI= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.41.0/go.mod h1:yk5LXEYhsL2htyDNJbEq7fWzNEigeEdV5xBF/Y+kAv0= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.43.0 h1:3iZJKlCZufyRzPzlQhUIWVmfltrXuGyfjREgGP3UUjc= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.43.0/go.mod h1:/G+nUPfhq2e+qiXMGxMwumDrP5jtzU+mWN7/sjT2rak= -go.opentelemetry.io/otel/exporters/stdout/stdoutlog v0.13.0 h1:yEX3aC9KDgvYPhuKECHbOlr5GLwH6KTjLJ1sBSkkxkc= -go.opentelemetry.io/otel/exporters/stdout/stdoutlog v0.13.0/go.mod h1:/GXR0tBmmkxDaCUGahvksvp66mx4yh5+cFXgSlhg0vQ= -go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.36.0 h1:rixTyDGXFxRy1xzhKrotaHy3/KXdPhlWARrCgK+eqUY= -go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.36.0/go.mod h1:dowW6UsM9MKbJq5JTz2AMVp3/5iW5I/TStsk8S+CfHw= -go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.36.0 h1:G8Xec/SgZQricwWBJF/mHZc7A02YHedfFDENwJEdRA0= -go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.36.0/go.mod h1:PD57idA/AiFD5aqoxGxCvT/ILJPeHy3MjqU/NS7KogY= -go.opentelemetry.io/otel/log v0.19.0 h1:KUZs/GOsw79TBBMfDWsXS+KZ4g2Ckzksd1ymzsIEbo4= -go.opentelemetry.io/otel/log v0.19.0/go.mod h1:5DQYeGmxVIr4n0/BcJvF4upsraHjg6vudJJpnkL6Ipk= +go.opentelemetry.io/otel v1.46.0 h1:FHt5/CDyVxi/8IM1CH7VE/rRgq3kLHa2mSTVMO8AWyc= +go.opentelemetry.io/otel v1.46.0/go.mod h1:Gj3SEScelsNC45tp4nSxRYlS+f5iez7W8XPMCt905kE= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.22.0 h1:Bu39F5tzJct+f2IZbB8989fwyTps3c8e7EsUQsz+vs8= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc v0.22.0/go.mod h1:dJUwod88EsFgYCqrDHaSPzhiY9pBUpt0d85/qSfua7k= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.22.0 h1:lYk7RmxdLK865qLwibroNGldHa1U7SWKYYvNjlK7PIo= +go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp v0.22.0/go.mod h1:6GvlND0H0xdUJanOtIAn0xfwLkauh1tmsYEEVSMDdqY= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.46.0 h1:qkDYCAFiZXLcs1L4aY+tP2wguQ4kURANqHOQMA2et2s= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.46.0/go.mod h1:tkipS4DRzmpAmvg+Gw4++O1IdDq6TVDnvnYU6cmbQVs= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.46.0 h1:AP23h/mFgb/lc7tdck1Kfn9qxsM8TAeNPCU5C3pzaps= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v1.46.0/go.mod h1:K4EqCe1b4kGk5WR690ntg9LaBfsPoV32FwthbyoptuA= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.46.0 h1:OFnwLJr+pF3iHrlGSzbxyuo6/6HyBlnlN1CWEJmBVcw= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.46.0/go.mod h1:716wFneO0ov19A2beH5hjfh9AK5z/VWNAtDijp1Y0/g= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.46.0 h1:w53CDeOA/Kurp7yRsegSr6pbbr759dOvJ+yNmWM6Hxs= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.46.0/go.mod h1:BOmGMCbAtvcJiSJ+hLuhgPLdDbimnraSl8irz3iY8sY= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.46.0 h1:KrC1YrQeSt46ITMWAbgQx1M1eV1/1TKzttrBzymPmss= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.46.0/go.mod h1:zDSEzoEqsOrgBeGvH66KRgxh90VonFyJqBHA0Pk3+rM= +go.opentelemetry.io/otel/exporters/stdout/stdoutlog v0.22.0 h1:kvMAiLEudKmk+CSG+iYbU8vTUGNNDaf/V09OO5lrTwI= +go.opentelemetry.io/otel/exporters/stdout/stdoutlog v0.22.0/go.mod h1:L9Dlksri+MdT1cb2gIiA1cJJYW3Y92ipvDjNxYEyaDI= +go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.46.0 h1:PR9eAf7o0dQs3hshZNZpE9aW2dXWX/KdDf6pJilVD3U= +go.opentelemetry.io/otel/exporters/stdout/stdoutmetric v1.46.0/go.mod h1:2Z4KyNdH1uuzivdinyfGsxzNNT/Rl45pwtVwfYVI0xk= +go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.46.0 h1:KdRxPiAoMptR3vfWzvjjvutTsSiwbC2uG0496rzZNfo= +go.opentelemetry.io/otel/exporters/stdout/stdouttrace v1.46.0/go.mod h1:K/qSA+3G7Eovxi4K09wzrAgkWRnosS0DAOZeEpve7sM= +go.opentelemetry.io/otel/log v0.22.0 h1:5DBNnfvaJ6CVdkJ+Jle8Tzs50aSSv49TXGj9XRsEYw0= +go.opentelemetry.io/otel/log v0.22.0/go.mod h1:gzOt/R67vF2GniAqWu8Qv0SXy89f71muHcrkz76PCdc= go.opentelemetry.io/otel/metric v1.21.0/go.mod h1:o1p3CA8nNHW8j5yuQLdc1eeqEaPfzug24uvsyIEJRWM= -go.opentelemetry.io/otel/metric v1.44.0 h1:1w0gILTcHdr3YI+ixLyjemwrVnsMURbTZFrSYCdDdmc= -go.opentelemetry.io/otel/metric v1.44.0/go.mod h1:8O7hanEPBNgEMmybD3s2VBKcgWOCsA6tzHBPODAiquo= -go.opentelemetry.io/otel/metric/x v0.66.0 h1:YkCrx1zLOChi9ZcZ6euupOcsgzbVlec7D/xoEU1+cTA= -go.opentelemetry.io/otel/metric/x v0.66.0/go.mod h1:d1+BDj9t96do0/1LoU1ayfCv79ZgNE41qbhBvnMOBZk= +go.opentelemetry.io/otel/metric v1.46.0 h1:yBnkXvgV7AXFILZc5K6IZe/CBFF3OS7BJ8ov6/lj0K8= +go.opentelemetry.io/otel/metric v1.46.0/go.mod h1:iPmdWqifKUdzziPkvvzIJXITl56fQx2mGM/DHLB3/2o= +go.opentelemetry.io/otel/metric/x v0.68.0 h1:TA/cBT23D3MnxYPwHL7YFOdYGdx0A0v+s7Mzotpd1dU= +go.opentelemetry.io/otel/metric/x v0.68.0/go.mod h1:agudOmvWhwUTjgibWDzxD2PoWYnpw5Ht5jISYOD2Hd4= go.opentelemetry.io/otel/sdk v1.21.0/go.mod h1:Nna6Yv7PWTdgJHVRD9hIYywQBRx7pbox6nwBnZIxl/E= -go.opentelemetry.io/otel/sdk v1.44.0 h1:nHYwb9lK+fJPU/dnT6s7W7Z8itMWyqrnVfbheVYrZ58= -go.opentelemetry.io/otel/sdk v1.44.0/go.mod h1:Osuydd3Se74nqjAKxid74N5eC+jfEqfTegHRnq58oK0= -go.opentelemetry.io/otel/sdk/log v0.19.0 h1:scYVLqT22D2gqXItnWiocLUKGH9yvkkeql5dBDiXyko= -go.opentelemetry.io/otel/sdk/log v0.19.0/go.mod h1:vFBowwXGLlW9AvpuF7bMgnNI95LiW10szrOdvzBHlAg= -go.opentelemetry.io/otel/sdk/log/logtest v0.19.0 h1:BEbF7ZBB6qQloV/Ub1+3NQoOUnVtcGkU3XX4Ws3GQfk= -go.opentelemetry.io/otel/sdk/log/logtest v0.19.0/go.mod h1:Lua81/3yM0wOmoHTokLj9y9ADeA02v1naRrVrkAZuKk= -go.opentelemetry.io/otel/sdk/metric v1.44.0 h1:3LlKgI+VjbVsjNRFZJZAJ30WjXC5VkNRks6si09iEfI= -go.opentelemetry.io/otel/sdk/metric v1.44.0/go.mod h1:5B5pMARnXxKhltooO4xUuCBorl65a4EpnTalObqOigA= +go.opentelemetry.io/otel/sdk v1.46.0 h1:h5CNQQjEbuQXY/JfZtgt3i7HVFV3aHPO2OAwO2eTYPI= +go.opentelemetry.io/otel/sdk v1.46.0/go.mod h1:GAERFXFt5SYCEB+YiKUbMBeza6UaDH7GmGOZEfh2gSM= +go.opentelemetry.io/otel/sdk/log v0.22.0 h1:PRL+s6P63XT4E/bheEflopPUpVxuvANqZwtt89yhoGk= +go.opentelemetry.io/otel/sdk/log v0.22.0/go.mod h1:JNp0sBELrjCTcu5W3GzABVypeU6vDJjBS+X0JISuz+g= +go.opentelemetry.io/otel/sdk/log/logtest v0.22.0 h1:infPnfNrhCNgOUZRs3gWUg8vhoBUHihq02gwK05gzlg= +go.opentelemetry.io/otel/sdk/log/logtest v0.22.0/go.mod h1:gkQZA3z15Bv3KU9vigBTi8dFechSozRP7v94X4VZv+s= +go.opentelemetry.io/otel/sdk/metric v1.46.0 h1:0piZ26EG4RBfebb2jhDH6ERCYHoVWduc3kLgPCwSnSE= +go.opentelemetry.io/otel/sdk/metric v1.46.0/go.mod h1:I1PbKrdVc8Qu8HYVDNtqVIwLwjNrhsV/uFuxfwg8mO4= go.opentelemetry.io/otel/trace v1.21.0/go.mod h1:LGbsEB0f9LGjN+OZaQQ26sohbOmiMR+BaslueVtS/qQ= -go.opentelemetry.io/otel/trace v1.44.0 h1:jxF5CsGYCe74MCRx2X4g7WsY/VBKRqqpNvXlX/6gtIk= -go.opentelemetry.io/otel/trace v1.44.0/go.mod h1:oLl1jrMQAVo6v3GAggN+1VH9VIz9iUSvW53sW1Q8PIE= -go.opentelemetry.io/proto/otlp v1.10.0 h1:IQRWgT5srOCYfiWnpqUYz9CVmbO8bFmKcwYxpuCSL2g= -go.opentelemetry.io/proto/otlp v1.10.0/go.mod h1:/CV4QoCR/S9yaPj8utp3lvQPoqMtxXdzn7ozvvozVqk= +go.opentelemetry.io/otel/trace v1.46.0 h1:OULy7ccdJnZtJ0UDYFOIGaCmiWzJ8Vi2G/Rsu60qs1c= +go.opentelemetry.io/otel/trace v1.46.0/go.mod h1:J7GAXweO77XSFkB/rmAqk9D6ihszhFjLU+d9WuUxDLI= +go.opentelemetry.io/proto/otlp v1.11.0 h1:5rrYs0Ykyj50sdU/JU0x8etU+LubXWb+gED6TbEdMIk= +go.opentelemetry.io/proto/otlp v1.11.0/go.mod h1:SmVizdCOAm3XBtG1g1NnOdhW6jtddT72hLMhv8VwA8E= go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= @@ -636,10 +642,12 @@ go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9E go.uber.org/zap v1.9.1/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= -go.uber.org/zap v1.27.1 h1:08RqriUEv8+ArZRYSTXy1LeBScaMpVSTBhCeaZYfMYc= -go.uber.org/zap v1.27.1/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E= +go.uber.org/zap v1.28.0 h1:IZzaP1Fv73/T/pBMLk4VutPl36uNC+OSUh3JLG3FIjo= +go.uber.org/zap v1.28.0/go.mod h1:rDLpOi171uODNm/mxFcuYWxDsqWSAVkFdX4XojSKg/Q= go.yaml.in/yaml/v2 v2.4.4 h1:tuyd0P+2Ont/d6e2rl3be67goVK4R6deVxCUX5vyPaQ= go.yaml.in/yaml/v2 v2.4.4/go.mod h1:gMZqIpDtDqOfM0uNfy0SkpRhvUryYH0Z6wdMYcacYXQ= +go.yaml.in/yaml/v3 v3.0.5 h1:N6y/pJk8buWs9NY5ERU2HSMfm+IuD/OtfdAnq6kESPw= +go.yaml.in/yaml/v3 v3.0.5/go.mod h1:HVTZu1O7/Vkt2N+BFy8Zza+lnLsABggaTM2ZpNIGuKg= golang.org/x/crypto v0.0.0-20190123085648-057139ce5d2b/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190411191339-88737f569e3a/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= @@ -653,8 +661,8 @@ golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5y golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= golang.org/x/crypto v0.20.0/go.mod h1:Xwo95rrVNIoSMx9wa1JroENMToLWn3RNVrTBpLHgZPQ= -golang.org/x/crypto v0.53.0 h1:QZ4Muo8THX6CizN2vPPd5fBGHyogrdK9fG4wLPFUsto= -golang.org/x/crypto v0.53.0/go.mod h1:DNLU434OwVakk9PzuwV8w62mAJpRJL3vsgcfp4Qnsio= +golang.org/x/crypto v0.55.0 h1:+KWHjbgOaAQ66dh/YlkZKHlz9ZUlq61AFirAR9ntP8M= +golang.org/x/crypto v0.55.0/go.mod h1:uq0V9dE/fzQuJtbnL+2EhWOE63vo164FY8xqEnV9xis= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20260508232706-74f9aab9d74a h1:+3jdDGGB8NGb1Zktc737jlt3/A5f6UlwSzmvqUuufxw= golang.org/x/exp v0.0.0-20260508232706-74f9aab9d74a/go.mod h1:d2fgXJLVs4dYDHUk5lwMIfzRzSrWCfGZb0ZqeLa/Vcw= @@ -669,8 +677,8 @@ golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/mod v0.36.0 h1:JJjpVx6myfUsUdAzZuOSTTmRE0PfZeNWzzvKrP7amb4= -golang.org/x/mod v0.36.0/go.mod h1:moc6ELqsWcOw5Ef3xVprK5ul/MvtVvkIXLziUOICjUQ= +golang.org/x/mod v0.38.0 h1:MECBjubtXD7yj4HrhIUcywNaGeNVUdfVnxmPajOk4yk= +golang.org/x/mod v0.38.0/go.mod h1:V6Xz0pq8TQ3dGqVQ1FVHuelZpAL0uNhSkk9ogYP3c40= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -692,8 +700,8 @@ golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= -golang.org/x/net v0.55.0 h1:bcvxaJn3e1U6InsFWt1JUq1aSjnRxLzT2rtD2KfkDF8= -golang.org/x/net v0.55.0/go.mod h1:L5U2KuzuOe1lY7Z+aWVIKK6qEeJXnXV9yzGA+WCHJww= +golang.org/x/net v0.58.0 h1:ynWG7rqYi4ccpTEuPZ2QGWHktVEM9DMCj9yzDE0Q7To= +golang.org/x/net v0.58.0/go.mod h1:YwCddHnFlT7eLQqVprV19OnhLGtc5xOKgE0RyqgfWAU= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -703,8 +711,8 @@ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.21.0 h1:HLII4xRRTtCRkxYp4HNFF0Js/Og6q2i++KXbg0gHCwM= -golang.org/x/sync v0.21.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= +golang.org/x/sync v0.22.0 h1:SZjpbeLmrCk4xhRSZFNZW5gFUeCeFgjekvI/+gfScek= +golang.org/x/sync v0.22.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -747,10 +755,10 @@ golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.46.0 h1:noSf2Fq6F8DBgS+LysIkx7rIExoNHJsxOAtPp4rthXw= -golang.org/x/sys v0.46.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= -golang.org/x/telemetry v0.0.0-20260519152614-eab6ae52b5e2 h1:2EucmYlcIsc8Y6aLj+kX90Y00hmjqLNlw935kc13R2k= -golang.org/x/telemetry v0.0.0-20260519152614-eab6ae52b5e2/go.mod h1:Eqhaxk/wZsWEH8CRxLwj6xzEJbz7k1EFGqx7nyCoabE= +golang.org/x/sys v0.47.0 h1:o7XGOvZQCADBQQ4Y7VNq2dRWQR7JmOUW8Kxx4ZsNgWs= +golang.org/x/sys v0.47.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= +golang.org/x/telemetry v0.0.0-20260708182218-49f421fb7959 h1:RJhm5l6Fo4rmEIcndxDllNhhf/fAx8qIm4t6A7vpm2A= +golang.org/x/telemetry v0.0.0-20260708182218-49f421fb7959/go.mod h1:LV7u5Oco+Z/g6XI7PqN+EUUUGGkEcmB1uj2ceI0fOVg= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -767,8 +775,8 @@ golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= -golang.org/x/text v0.38.0 h1:sXmwo9DwP3OK9EZ7PqAdaooSGozfl/3a6/xJcbzPRhE= -golang.org/x/text v0.38.0/go.mod h1:YXZt3QhHUKYT53r2lLKFIVi6Ao1jdzrTR/KQ09qyxF4= +golang.org/x/text v0.41.0 h1:vz/seA0lnX87Othu2f/0L24RcgrXD9/YFTSuGjj3rH8= +golang.org/x/text v0.41.0/go.mod h1:jvf1O8ajNzZqhSrQBPbutR/EB83Cc0CFrezNQIwbb5M= golang.org/x/time v0.15.0 h1:bbrp8t3bGUeFOx08pvsMYRTCVSMk89u4tKbNOZbp88U= golang.org/x/time v0.15.0/go.mod h1:Y4YMaQmXwGQZoFaVFk4YpCt4FLQMYKZe9oeV/f4MSno= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -790,8 +798,8 @@ golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4f golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= -golang.org/x/tools v0.45.0 h1:18qN3FAooORvApf5XjCXgsuayZOEtXf6JK18I3+ONa8= -golang.org/x/tools v0.45.0/go.mod h1:LuUGqqaXcXMEFEruIVJVm5mgDD8vww/z/SR1gQ4uE/0= +golang.org/x/tools v0.48.0 h1:3+hClM1aLL5mjMKm5ovokw9epgRXPuu2tILgismM6RE= +golang.org/x/tools v0.48.0/go.mod h1:08xX0orndb/F7jJxGDicx061tyd5pcMto75YMAXr6lk= golang.org/x/xerrors v0.0.0-20190410155217-1f06c39b4373/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20190513163551-3ee3066db522/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -809,10 +817,10 @@ google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoA google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= google.golang.org/genproto v0.0.0-20210401141331-865547bb08e2/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= -google.golang.org/genproto/googleapis/api v0.0.0-20260526163538-3dc84a4a5aaa h1:Kjn0N0tCrDgiAFW+lGO4JZ3ck44CehvJQMAwj9QF0G8= -google.golang.org/genproto/googleapis/api v0.0.0-20260526163538-3dc84a4a5aaa/go.mod h1:q4lMZS6kskjT5HvCPrnnypcDPVJqT/f4nfxmkE7gryY= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa h1:mZHHdPZl0dbGHCflZgAq/Q468DWVFcU2whhB2KAo8fk= -google.golang.org/genproto/googleapis/rpc v0.0.0-20260526163538-3dc84a4a5aaa/go.mod h1:4Hqkh8ycfw05ld/3BWL7rJOSfebL2Q+DVDeRgYgxUU8= +google.golang.org/genproto/googleapis/api v0.0.0-20260819154853-08b0e4226688 h1:ax2KzoSRIZU/M0cIxri3pKxy99vniH1PVxWC6si/eZI= +google.golang.org/genproto/googleapis/api v0.0.0-20260819154853-08b0e4226688/go.mod h1:1RJ9BQGyNdZwkGc1eTqkErfRZ6RJyYPHZo73BZ1vQqI= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260819154853-08b0e4226688 h1:cYNAzI2sUwhmCcoj9TxvihSrqsxt6uIkj3rDRhSDmW4= +google.golang.org/genproto/googleapis/rpc v0.0.0-20260819154853-08b0e4226688/go.mod h1:DjtHYE8FKJLivXcBEjGwndXfIC23G0VpXiXKqG179uA= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= @@ -831,8 +839,8 @@ google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpAD google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= -google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= -google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= +google.golang.org/protobuf v1.36.12 h1:pJOKDDOyeXErUroCihFAd5LQuwXBSpVnKGrj5o/fwxc= +google.golang.org/protobuf v1.36.12/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= From 70cd73b48526ddc748ca5eb3f961404ff5c4dfb3 Mon Sep 17 00:00:00 2001 From: yashnevatia Date: Fri, 18 Sep 2026 10:23:11 +0100 Subject: [PATCH 04/33] use settings flag and check for quorum --- chain_capabilities/evm/go.mod | 8 +- chain_capabilities/evm/go.sum | 16 ++-- chain_capabilities/evm/main.go | 2 +- .../chainconsensus/oracle/reporting_plugin.go | 94 +++++++++++++------ .../oracle/reporting_plugin_factory.go | 37 +++++--- .../oracle/reporting_plugin_test.go | 89 +++++++++++------- libs/chainconsensus/types/ocr.pb.go | 27 ++++-- libs/chainconsensus/types/ocr.proto | 1 + libs/go.mod | 6 +- libs/go.sum | 6 ++ libs/testutils/reports.go | 4 +- 11 files changed, 183 insertions(+), 107 deletions(-) diff --git a/chain_capabilities/evm/go.mod b/chain_capabilities/evm/go.mod index ca32bc329..19a10afb6 100644 --- a/chain_capabilities/evm/go.mod +++ b/chain_capabilities/evm/go.mod @@ -8,7 +8,7 @@ require ( github.com/smartcontractkit/capabilities/chain_capabilities/common v0.0.0-20260729165045-b00a39493e13 github.com/smartcontractkit/capabilities/libs v0.0.0-20260915092957-846dda90a055 github.com/smartcontractkit/chain-selectors v1.0.106 - github.com/smartcontractkit/chainlink-common v0.11.2-0.20260915085450-70e088c78bf2 + github.com/smartcontractkit/chainlink-common v0.11.2-0.20260918090440-4031696dc913 github.com/smartcontractkit/chainlink-evm v0.3.4-0.20260410162948-2dca02f24e98 github.com/smartcontractkit/chainlink-evm/gethwrappers v0.0.0-20251022073203-7d8ae8cf67c1 github.com/smartcontractkit/chainlink-framework/multinode v0.0.0-20260410144512-ca02ad6ed16a @@ -89,7 +89,7 @@ require ( github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/shirou/gopsutil v3.21.11+incompatible // indirect github.com/smartcontractkit/chainlink-common/keystore v1.1.1-0.20260529092756-a94bc8ce96d6 // indirect - github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.11-0.20260724142814-45996a1bcb72 // indirect + github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.11-0.20260915184316-2730f1867c92 // indirect github.com/smartcontractkit/chainlink-framework/chains v0.0.0-20260326122810-b657beadfb57 // indirect github.com/smartcontractkit/chainlink-framework/metrics v0.0.0-20260401162955-be2bc6b5264b // indirect github.com/smartcontractkit/chainlink-protos/linking-service/go v0.0.0-20251002192024-d2ad9222409b // indirect @@ -215,8 +215,10 @@ require ( golang.org/x/text v0.41.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20260819154853-08b0e4226688 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20260819154853-08b0e4226688 // indirect - google.golang.org/grpc v1.83.1 // indirect + google.golang.org/grpc v1.83.2 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) replace github.com/fbsobreira/gotron-sdk => github.com/smartcontractkit/chainlink-tron/relayer/gotron-sdk v0.0.5-0.20250528121202-292529af39df + +replace github.com/smartcontractkit/capabilities/libs => /Users/yashvardhan/capabilities/libs diff --git a/chain_capabilities/evm/go.sum b/chain_capabilities/evm/go.sum index 56b5705d8..ded635540 100644 --- a/chain_capabilities/evm/go.sum +++ b/chain_capabilities/evm/go.sum @@ -466,16 +466,14 @@ github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMB github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/smartcontractkit/capabilities/chain_capabilities/common v0.0.0-20260729165045-b00a39493e13 h1:zUTJ8iBWZsDiiR01sDr4H2q47NBtLHl9ejPq6VOIlkg= github.com/smartcontractkit/capabilities/chain_capabilities/common v0.0.0-20260729165045-b00a39493e13/go.mod h1:8TpRObM98bypYj+xj6cMFyQs3ti1kqz+Po+m6MMTWnQ= -github.com/smartcontractkit/capabilities/libs v0.0.0-20260915092957-846dda90a055 h1:Pi9P0+eFGA7YGAeF+c11Am+tBZ8tpKV0k8o71HRgdjc= -github.com/smartcontractkit/capabilities/libs v0.0.0-20260915092957-846dda90a055/go.mod h1:avHjcoSfcEnN1rtUIi3kWyrYG3lLiKoBUaoPyDGPjY8= github.com/smartcontractkit/chain-selectors v1.0.106 h1:6Mz7FDooWJEcfvuOX3nH7oh5s44fqg/WqVDQS63Mjzs= github.com/smartcontractkit/chain-selectors v1.0.106/go.mod h1:qy7whtgG5g+7z0jt0nRyii9bLND9m15NZTzuQPkMZ5w= -github.com/smartcontractkit/chainlink-common v0.11.2-0.20260915085450-70e088c78bf2 h1:Y7lkBB/AKz4Fdf6UXhqEnqa0/KgJlF3C2PRQE1bPf9g= -github.com/smartcontractkit/chainlink-common v0.11.2-0.20260915085450-70e088c78bf2/go.mod h1:ks0kniCCg8Siv2XflmwLOq5ib9Ifoh6VHXHwfEWIMQA= +github.com/smartcontractkit/chainlink-common v0.11.2-0.20260918090440-4031696dc913 h1:lA1CkKWEC9q3i1hCZdv+pkbzuD2NBDAoAyYQpZuJ0P8= +github.com/smartcontractkit/chainlink-common v0.11.2-0.20260918090440-4031696dc913/go.mod h1:3CaCxSyZmgWl1PhxneFSZqOfN7DF2VnHML0bTfiDNIo= github.com/smartcontractkit/chainlink-common/keystore v1.1.1-0.20260529092756-a94bc8ce96d6 h1:fWsYxxj35fp1/6YZngoTsOTMLqDie4N5X0osAOdhUTE= github.com/smartcontractkit/chainlink-common/keystore v1.1.1-0.20260529092756-a94bc8ce96d6/go.mod h1:6JexOOhPhknQ0QMuppFIlOpm6wCp54yZMxai+tWugwY= -github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.11-0.20260724142814-45996a1bcb72 h1:uWEwl7i2ryuRVoV4DmIKm6mqYevf1lH/8cQYhw/JXko= -github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.11-0.20260724142814-45996a1bcb72/go.mod h1:UYcRMb4dZcoaIPgZJ3hckCySTqtJc9K4Q+tOKErwTq0= +github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.11-0.20260915184316-2730f1867c92 h1:Z1OIGukDhJD+Gknr5G07Vtml24E7BwKaIQoWzV/SdqA= +github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.11-0.20260915184316-2730f1867c92/go.mod h1:Scyk7O80fde5rJF3Ty3fEE3xiS6j84eWbu8/2gl3pIY= github.com/smartcontractkit/chainlink-evm v0.3.4-0.20260410162948-2dca02f24e98 h1:h/L6wrXYLQalI/vHm6qg/KBv6d7kMb3geMHV5hCM1t4= github.com/smartcontractkit/chainlink-evm v0.3.4-0.20260410162948-2dca02f24e98/go.mod h1:6vCMfxz7cMW0wWseNKtct+b1JJbbRVJJhh/t6pQWN3M= github.com/smartcontractkit/chainlink-evm/gethwrappers v0.0.0-20251022073203-7d8ae8cf67c1 h1:NTODgwAil7BLoijS7y6KnEuNbQ9v60VUhIR9FcAzIhg= @@ -486,8 +484,6 @@ github.com/smartcontractkit/chainlink-framework/metrics v0.0.0-20260401162955-be github.com/smartcontractkit/chainlink-framework/metrics v0.0.0-20260401162955-be2bc6b5264b/go.mod h1:HG/aei0MgBOpsyRLexdKGtOUO8yjSJO3iUu0Uu8KBm4= github.com/smartcontractkit/chainlink-framework/multinode v0.0.0-20260410144512-ca02ad6ed16a h1:PsFckZp3Dhb5pVc0Xccj1lvnOEg0H3eQdjtZgnCKd+4= github.com/smartcontractkit/chainlink-framework/multinode v0.0.0-20260410144512-ca02ad6ed16a/go.mod h1:7ketk4ischPQW/JQgmyHz6zdzLUJv1VC29SiSgosydQ= -github.com/smartcontractkit/chainlink-protos/billing/go v0.0.0-20251024234028-0988426d98f4 h1:GCzrxDWn3b7jFfEA+WiYRi8CKoegsayiDoJBCjYkneE= -github.com/smartcontractkit/chainlink-protos/billing/go v0.0.0-20251024234028-0988426d98f4/go.mod h1:HHGeDUpAsPa0pmOx7wrByCitjQ0mbUxf0R9v+g67uCA= github.com/smartcontractkit/chainlink-protos/cre/go v0.0.0-20260821155228-fa1d775e2138 h1:Vk0CZJakAUS/djfBhIJENH4WvM4xl6bY8dYD8cIY/sk= github.com/smartcontractkit/chainlink-protos/cre/go v0.0.0-20260821155228-fa1d775e2138/go.mod h1:/i8hjTPFdVWHiY+QjeSiVS2Z3GB3WAZznGgXHstC02E= github.com/smartcontractkit/chainlink-protos/linking-service/go v0.0.0-20251002192024-d2ad9222409b h1:QuI6SmQFK/zyUlVWEf0GMkiUYBPY4lssn26nKSd/bOM= @@ -826,8 +822,8 @@ google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyac google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.83.1 h1:HIO0+BEtBP6soyqvqC8sNUjZ7bTs+0hFQuFF+RAy++Y= -google.golang.org/grpc v1.83.1/go.mod h1:kDyl6SKsiHKt0uylY5gtn5cEjkrIOhQOGDgIc4JGwzQ= +google.golang.org/grpc v1.83.2 h1:EManeRomTObA0BU7I8vXgg/78uE5MJ9M8B39EX2WscU= +google.golang.org/grpc v1.83.2/go.mod h1:YPI1hK3kDked6iHvgX3tR0y+nX/qpMFKhPgFsokw1S8= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= diff --git a/chain_capabilities/evm/main.go b/chain_capabilities/evm/main.go index 38faa09d5..f20db0c1c 100644 --- a/chain_capabilities/evm/main.go +++ b/chain_capabilities/evm/main.go @@ -179,7 +179,7 @@ func (c *capabilityGRPCService) Initialise(ctx context.Context, dependencies cor ContractConfigLoadTimeout: time.Second * 10, DefaultMaxDurationInitialization: time.Second * 10, }, - ReportingPluginFactoryService: oracle.NewReportingPluginFactory(logger.Sugared(c.lggr), c.consensusHandler, c.heightProvider, consensusMetrics), + ReportingPluginFactoryService: oracle.NewReportingPluginFactory(logger.Sugared(c.lggr), c.consensusHandler, c.heightProvider, consensusMetrics, c.limitsFactory), ContractTransmitter: oracle.NewContractTransmitter(c.lggr, c.consensusHandler), }) if err != nil { diff --git a/libs/chainconsensus/oracle/reporting_plugin.go b/libs/chainconsensus/oracle/reporting_plugin.go index 210eff716..88a621af0 100644 --- a/libs/chainconsensus/oracle/reporting_plugin.go +++ b/libs/chainconsensus/oracle/reporting_plugin.go @@ -26,6 +26,8 @@ import ( ctypes "github.com/smartcontractkit/capabilities/libs/chainconsensus/types" "github.com/smartcontractkit/chainlink-common/pkg/logger" + "github.com/smartcontractkit/chainlink-common/pkg/settings/cresettings" + "github.com/smartcontractkit/chainlink-common/pkg/settings/limits" ) const ( @@ -38,12 +40,11 @@ var _ ocr3types.ReportingPlugin[[]byte] = (*reportingPlugin)(nil) type Config struct { ocr3types.ReportingPluginConfig - MaxBatchSize int // max number of requests that this node will try to process in a single round - MaxObservationLength int // max length of observation in bytes - MaxReportLengthBytes int // max length of report in bytes - MaxReportCount int // max number of reports in a single round - MinResponsesToAggregate int // minimum responses to aggregate to accept a read value; 0 means use F+1 - EnableMissingRequestRecovery bool // whether to enable missing request recovery + MaxBatchSize int // max number of requests that this node will try to process in a single round + MaxObservationLength int // max length of observation in bytes + MaxReportLengthBytes int // max length of report in bytes + MaxReportCount int // max number of reports in a single round + MinResponsesToAggregate int // minimum responses to aggregate to accept a read value; 0 means use F+1 } // matchingThreshold returns the minimum number of nodes that must report identical @@ -57,11 +58,12 @@ func (c Config) matchingThreshold() int { } type reportingPlugin struct { - config Config - logger logger.SugaredLogger - blocksProvider BlocksProvider - requestsStore RequestsHandler - metrics metrics.ConsensusMetrics + config Config + logger logger.SugaredLogger + blocksProvider BlocksProvider + requestsStore RequestsHandler + metrics metrics.ConsensusMetrics + enableMissingRequestRecovery limits.GateLimiter } func newReportingPlugin( @@ -70,14 +72,22 @@ func newReportingPlugin( blocksProvider BlocksProvider, requestsStore RequestsHandler, metrics metrics.ConsensusMetrics, -) *reportingPlugin { - return &reportingPlugin{ + limitsFactory limits.Factory, +) (*reportingPlugin, error) { + rp := &reportingPlugin{ config: config, logger: logger, blocksProvider: blocksProvider, requestsStore: requestsStore, metrics: metrics, } + + var err error + rp.enableMissingRequestRecovery, err = limits.MakeGateLimiter(limitsFactory, cresettings.Default.MissingRequestRecoveryEnabled) + if err != nil { + return nil, fmt.Errorf("failed to create missing request recovery gate limiter: %w", err) + } + return rp, nil } func (rp *reportingPlugin) Query(ctx context.Context, outctx ocr3types.OutcomeContext) (types.Query, error) { @@ -179,6 +189,12 @@ func (rp *reportingPlugin) Observation( return nil, fmt.Errorf("failed to add observations for missing requests from previous outcome: %w", err) } + open, err := rp.enableMissingRequestRecovery.IsOpen(ctx) + if err != nil { + rp.logger.Errorw("error checking if enableMissingRequestRecovery is enabled", "error", err) + } + observation.FeatureEnableMissingRequestRecovery = open + // add observations for requests provided by the leader in the query err = rp.addObservations(ctx, query.RequestIDs, observation) if err != nil { @@ -554,6 +570,24 @@ func (rp *reportingPlugin) agreeOnMissingRequestIDs(aos []attributedObservation) return result, nil } +// agreeOnFeatureEnableMissingRequestRecovery reaches DON-wide quorum, once per round, on +// whether missing-request recovery is enabled. This is a per-node, per-round capability flag +// unrelated to any specific request ID, so it is voted on independently of per-request +// observation quorum (which the aggregation loop in Outcome enforces on its own). +func (rp *reportingPlugin) agreeOnFeatureEnableMissingRequestRecovery(aos []attributedObservation) bool { + minMatching := rp.config.matchingThreshold() + counter := 0 + for _, ob := range aos { + if ob.Observation.FeatureEnableMissingRequestRecovery { + counter++ + if counter >= minMatching { + return true + } + } + } + return false +} + func (rp *reportingPlugin) agreeOnEventuallyConsistentValue(requestID string, aos []attributedObservation) ([]byte, int, error) { iterator := func(yield func(commontypes.OracleID, *observation[[32]byte, []byte]) bool) { for _, ob := range aos { @@ -775,23 +809,23 @@ func (rp *reportingPlugin) Outcome( } requestIDs := query.RequestIDs - if rp.config.EnableMissingRequestRecovery { - if prevOutcome := rp.tryUnmarshalPreviousOutcome(outctx); prevOutcome != nil { - seen := make(map[string]struct{}, len(query.RequestIDs)) - for _, requestID := range query.RequestIDs { - seen[requestID] = struct{}{} - } - - // Requests that the leader's query omitted but that a quorum of nodes still supplied - // observations for (via addObservationsOfPrevMissingRequests) must still be aggregated here, - // otherwise they would be recycled into MissingRequestIDs forever instead of getting resolved. - for _, requestID := range prevOutcome.MissingRequestIDs { - if _, ok := seen[requestID]; ok { - continue - } - seen[requestID] = struct{}{} - requestIDs = append(requestIDs, requestID) + if prevOutcome := rp.tryUnmarshalPreviousOutcome(outctx); prevOutcome != nil && rp.agreeOnFeatureEnableMissingRequestRecovery(aos) { + seen := make(map[string]struct{}, len(query.RequestIDs)) + for _, requestID := range query.RequestIDs { + seen[requestID] = struct{}{} + } + + // Requests that the leader's query omitted but that a quorum of nodes still supplied + // observations for (via addObservationsOfPrevMissingRequests) must still be aggregated here, + // otherwise they would be recycled into MissingRequestIDs forever instead of getting resolved. + // Per-request observation quorum is enforced independently by the aggregation loop below, + // so it's safe to add all of them here once the feature itself has DON-wide quorum. + for _, requestID := range prevOutcome.MissingRequestIDs { + if _, ok := seen[requestID]; ok { + continue } + seen[requestID] = struct{}{} + requestIDs = append(requestIDs, requestID) } } @@ -978,5 +1012,5 @@ func (rp *reportingPlugin) ShouldTransmitAcceptedReport( } func (rp *reportingPlugin) Close() error { - return nil + return rp.enableMissingRequestRecovery.Close() } diff --git a/libs/chainconsensus/oracle/reporting_plugin_factory.go b/libs/chainconsensus/oracle/reporting_plugin_factory.go index 75f0abdcb..bafcc8591 100644 --- a/libs/chainconsensus/oracle/reporting_plugin_factory.go +++ b/libs/chainconsensus/oracle/reporting_plugin_factory.go @@ -8,6 +8,7 @@ import ( "google.golang.org/protobuf/proto" "github.com/smartcontractkit/chainlink-common/pkg/logger" + "github.com/smartcontractkit/chainlink-common/pkg/settings/limits" "github.com/smartcontractkit/capabilities/libs/chainconsensus/metrics" @@ -21,6 +22,7 @@ type ReportingPluginFactory struct { requestsStore RequestsHandler blocksProvider BlocksProvider metrics metrics.ConsensusMetrics + limitsFactory limits.Factory } func NewReportingPluginFactory( @@ -28,12 +30,14 @@ func NewReportingPluginFactory( requestsStore RequestsHandler, blocksProvider BlocksProvider, metrics metrics.ConsensusMetrics, + limitsFactory limits.Factory, ) *ReportingPluginFactory { return &ReportingPluginFactory{ logger: logger, requestsStore: requestsStore, blocksProvider: blocksProvider, metrics: metrics, + limitsFactory: limitsFactory, } } @@ -59,18 +63,22 @@ func (rpf *ReportingPluginFactory) NewReportingPlugin( rpf.logger.Infof("Using reporting plugin config: %+v", offchainCfg) cfg := Config{ - ReportingPluginConfig: config, - MaxBatchSize: int(offchainCfg.MaxBatchSize), - MaxObservationLength: int(offchainCfg.MaxObservationLengthBytes), - MaxReportLengthBytes: int(offchainCfg.MaxReportLengthBytes), - MaxReportCount: int(offchainCfg.MaxReportCount), - MinResponsesToAggregate: int(offchainCfg.MinResponsesToAggregate), - EnableMissingRequestRecovery: offchainCfg.EnableMissingRequestRecovery, + ReportingPluginConfig: config, + MaxBatchSize: int(offchainCfg.MaxBatchSize), + MaxObservationLength: int(offchainCfg.MaxObservationLengthBytes), + MaxReportLengthBytes: int(offchainCfg.MaxReportLengthBytes), + MaxReportCount: int(offchainCfg.MaxReportCount), + MinResponsesToAggregate: int(offchainCfg.MinResponsesToAggregate), } pluginLogger := rpf.logger.Named("ChainReadReportingPlugin") - return newReportingPlugin(cfg, pluginLogger, rpf.blocksProvider, rpf.requestsStore, rpf.metrics), ocr3types.ReportingPluginInfo{ + plugin, err := newReportingPlugin(cfg, pluginLogger, rpf.blocksProvider, rpf.requestsStore, rpf.metrics, rpf.limitsFactory) + if err != nil { + return nil, ocr3types.ReportingPluginInfo{}, fmt.Errorf("failed to create reporting plugin: %w", err) + } + + return plugin, ocr3types.ReportingPluginInfo{ Name: rpf.logger.Name() + ".chain-reads-oracle", Limits: ocr3types.ReportingPluginLimits{ MaxQueryLength: int(offchainCfg.MaxQueryLengthBytes), @@ -87,13 +95,12 @@ func readConfig(rawCfg []byte) (*evmcapocr3types.ReportingPluginConfig, error) { const kib = 1024 const mib = 1024 * kib return &evmcapocr3types.ReportingPluginConfig{ - MaxQueryLengthBytes: mib, - MaxObservationLengthBytes: 95 * kib, // calculation based on 1 Gbit/s bandwidth, 1s round, 10 nodes. Calculator https://docs.google.com/spreadsheets/d/1ldBQGGT_B2OLdeU5QpTzv30V3HhcMbGCtNE0axRo8sg/edit?gid=1355297791#gid=1355297791 - MaxOutcomeLengthBytes: ocr3types.MaxMaxOutcomeLength, - MaxReportLengthBytes: ocr3types.MaxMaxReportLength, - MaxReportCount: ocr3types.MaxMaxReportCount, - MaxBatchSize: 200, - EnableMissingRequestRecovery: false, + MaxQueryLengthBytes: mib, + MaxObservationLengthBytes: 95 * kib, // calculation based on 1 Gbit/s bandwidth, 1s round, 10 nodes. Calculator https://docs.google.com/spreadsheets/d/1ldBQGGT_B2OLdeU5QpTzv30V3HhcMbGCtNE0axRo8sg/edit?gid=1355297791#gid=1355297791 + MaxOutcomeLengthBytes: ocr3types.MaxMaxOutcomeLength, + MaxReportLengthBytes: ocr3types.MaxMaxReportLength, + MaxReportCount: ocr3types.MaxMaxReportCount, + MaxBatchSize: 200, }, nil } diff --git a/libs/chainconsensus/oracle/reporting_plugin_test.go b/libs/chainconsensus/oracle/reporting_plugin_test.go index a0532f921..b4368feae 100644 --- a/libs/chainconsensus/oracle/reporting_plugin_test.go +++ b/libs/chainconsensus/oracle/reporting_plugin_test.go @@ -24,6 +24,7 @@ import ( commoncap "github.com/smartcontractkit/chainlink-common/pkg/capabilities" evmcapocr3types "github.com/smartcontractkit/chainlink-common/pkg/capabilities/v2/chain-capabilities/consensus/ocr3/types" "github.com/smartcontractkit/chainlink-common/pkg/logger" + "github.com/smartcontractkit/chainlink-common/pkg/settings/limits" "github.com/smartcontractkit/chainlink-common/pkg/utils/tests" valuespb "github.com/smartcontractkit/chainlink-protos/cre/go/values/pb" @@ -92,13 +93,15 @@ func mustQuery(t *testing.T, requestIDs []string) ocrtypes.Query { func TestObservation(t *testing.T) { t.Run("Error if query is invalid", func(t *testing.T) { - plugin := newReportingPlugin(Config{}, logger.Sugared(logger.Test(t)), nil, nil, test.GetConsensusMetrics(t)) - _, err := plugin.Observation(t.Context(), ocr3types.OutcomeContext{}, []byte("invalid json")) + plugin, err := newReportingPlugin(Config{}, logger.Sugared(logger.Test(t)), nil, nil, test.GetConsensusMetrics(t), limits.Factory{}) + require.NoError(t, err) + _, err = plugin.Observation(t.Context(), ocr3types.OutcomeContext{}, []byte("invalid json")) require.ErrorContains(t, err, "failed to unmarshal request IDs: proto") }) t.Run("Error if query exceeds max batch size", func(t *testing.T) { - plugin := newReportingPlugin(Config{MaxBatchSize: 2}, logger.Sugared(logger.Test(t)), nil, nil, test.GetConsensusMetrics(t)) - _, err := plugin.Observation(t.Context(), ocr3types.OutcomeContext{}, mustQuery(t, []string{"1", "2", "3"})) + plugin, err := newReportingPlugin(Config{MaxBatchSize: 2}, logger.Sugared(logger.Test(t)), nil, nil, test.GetConsensusMetrics(t), limits.Factory{}) + require.NoError(t, err) + _, err = plugin.Observation(t.Context(), ocr3types.OutcomeContext{}, mustQuery(t, []string{"1", "2", "3"})) require.EqualError(t, err, "too many request IDs: got 3, expected 2") }) newBlockProvider := func(t *testing.T, chainHeight *types.ChainHeight) *mocks.BlocksProvider { @@ -116,7 +119,8 @@ func TestObservation(t *testing.T) { }) requestsStore := mocks.NewRequestsHandler(t) requestsStore.EXPECT().GetRequestIDs(mock.Anything).Return(nil, nil).Once() - plugin := newReportingPlugin(Config{}, logger.Sugared(logger.Test(t)), blocksProvider, requestsStore, test.GetConsensusMetrics(t)) + plugin, err := newReportingPlugin(Config{}, logger.Sugared(logger.Test(t)), blocksProvider, requestsStore, test.GetConsensusMetrics(t), limits.Factory{}) + require.NoError(t, err) previousOutcome := &types.Outcome{ ChainHeight: &types.ChainHeight{ Latest: 15, @@ -148,7 +152,8 @@ func TestObservation(t *testing.T) { requestsStore := mocks.NewRequestsHandler(t) requestsStore.EXPECT().GetRequestIDs(mock.Anything).Return(nil, nil).Once() lggr, observedLogs := logger.TestObservedSugared(t, zapcore.ErrorLevel) - plugin := newReportingPlugin(Config{MaxBatchSize: 1}, lggr, blocksProvider, requestsStore, test.GetConsensusMetrics(t)) + plugin, err := newReportingPlugin(Config{MaxBatchSize: 1}, lggr, blocksProvider, requestsStore, test.GetConsensusMetrics(t), limits.Factory{}) + require.NoError(t, err) req := tmocks.NewRequest(t) req.EXPECT().GetOCRObservation().Return(nil, errors.New("ocr observation error")).Once() requestsStore.EXPECT().GetRequest("1").Return(req, true) @@ -212,7 +217,8 @@ func TestObservation(t *testing.T) { }) requestsStore.EXPECT().GetRequest(lockableHashableID).Return(lockableHashable, true).Once() - plugin := newReportingPlugin(Config{MaxBatchSize: 50, MaxObservationLength: 1000}, logger.Sugared(logger.Test(t)), blocksProvider, requestsStore, test.GetConsensusMetrics(t)) + plugin, err := newReportingPlugin(Config{MaxBatchSize: 50, MaxObservationLength: 1000}, logger.Sugared(logger.Test(t)), blocksProvider, requestsStore, test.GetConsensusMetrics(t), limits.Factory{}) + require.NoError(t, err) query := mustQuery(t, []string{"request_not_present_in_store", "request_without_observation", "request_with_observation", "lockable_request", "aggregatable_request", "aggregatable_request_without_observation", id, lockableHashableID}) rawObservation, err := plugin.Observation(t.Context(), ocr3types.OutcomeContext{}, query) require.NoError(t, err) @@ -271,7 +277,8 @@ func TestObservation(t *testing.T) { addRequestWithObservation("large_request", 400) - plugin := newReportingPlugin(Config{MaxBatchSize: 50, MaxObservationLength: maxObservationLength}, logger.Sugared(logger.Test(t)), blocksProvider, requestsStore, test.GetConsensusMetrics(t)) + plugin, err := newReportingPlugin(Config{MaxBatchSize: 50, MaxObservationLength: maxObservationLength}, logger.Sugared(logger.Test(t)), blocksProvider, requestsStore, test.GetConsensusMetrics(t), limits.Factory{}) + require.NoError(t, err) query := mustQuery(t, []string{"request_1", "request_2", "large_request", "aggregatable_request"}) rawObservation, err := plugin.Observation(t.Context(), ocr3types.OutcomeContext{}, query) require.NoError(t, err) @@ -326,7 +333,8 @@ func TestObservation(t *testing.T) { "regular_request_won't_fit", }, nil).Once() - plugin := newReportingPlugin(Config{MaxBatchSize: 2, MaxObservationLength: 1000}, logger.Sugared(logger.Test(t)), blocksProvider, requestsStore, test.GetConsensusMetrics(t)) + plugin, err := newReportingPlugin(Config{MaxBatchSize: 2, MaxObservationLength: 1000}, logger.Sugared(logger.Test(t)), blocksProvider, requestsStore, test.GetConsensusMetrics(t), limits.Factory{}) + require.NoError(t, err) query := mustQuery(t, []string{"regular_request_with_observation", "regular_request_won't_fit"}) previousOutcome := mustMarshalProto(&types.Outcome{ ChainHeight: expectedChainHeight, @@ -575,9 +583,10 @@ func TestValidateObservation(t *testing.T) { for _, tc := range testCases { t.Run(tc.name, func(t *testing.T) { lggr := logger.Sugared(logger.Test(t)) - plugin := newReportingPlugin(Config{MaxBatchSize: 10}, lggr, nil, nil, test.GetConsensusMetrics(t)) + plugin, err := newReportingPlugin(Config{MaxBatchSize: 10}, lggr, nil, nil, test.GetConsensusMetrics(t), limits.Factory{}) + require.NoError(t, err) - err := plugin.ValidateObservation(t.Context(), tc.outcomeContext, nil, tc.observations) + err = plugin.ValidateObservation(t.Context(), tc.outcomeContext, nil, tc.observations) if tc.expectedError == "" { require.NoError(t, err) } else { @@ -618,7 +627,8 @@ func TestAgreeOnChainHeight(t *testing.T) { for _, tc := range testCases { t.Run(tc.name, func(t *testing.T) { - plugin := newReportingPlugin(Config{ReportingPluginConfig: ocr3types.ReportingPluginConfig{F: 1}}, logger.Sugared(logger.Test(t)), nil, nil, test.GetConsensusMetrics(t)) + plugin, err := newReportingPlugin(Config{ReportingPluginConfig: ocr3types.ReportingPluginConfig{F: 1}}, logger.Sugared(logger.Test(t)), nil, nil, test.GetConsensusMetrics(t), limits.Factory{}) + require.NoError(t, err) aos := make([]attributedObservation, len(tc.observedChainHeights)) for i, chainHeight := range tc.observedChainHeights { aos[i] = attributedObservation{Observation: &types.Observation{ChainHeight: chainHeight}} @@ -646,14 +656,13 @@ func TestOutcome(t *testing.T) { } chainHeight := &types.ChainHeight{Latest: 10, Safe: 9, Finalized: 8} testCases := []struct { - name string - requestIDs []string - previousOutcome *types.Outcome - enableMissingRequestRecovery bool - nodesObservations []types.Observation - expectedError string - expectedOutcome *types.Outcome - expectedLogs []string + name string + requestIDs []string + previousOutcome *types.Outcome + nodesObservations []types.Observation + expectedError string + expectedOutcome *types.Outcome + expectedLogs []string }{ { name: "fails to agree on chain height", @@ -767,9 +776,8 @@ func TestOutcome(t *testing.T) { // round's leader query, but a quorum of nodes still supplied observations for it (because they // proactively re-added it). Outcome() should aggregate it into outcome.Outcomes instead of just // re-flagging it as missing forever. - name: "recovers observations for previously missing requests not in current query", - requestIDs: []string{"request_in_query"}, - enableMissingRequestRecovery: true, + name: "recovers observations for previously missing requests not in current query", + requestIDs: []string{"request_in_query"}, previousOutcome: &types.Outcome{ ChainHeight: chainHeight, MissingRequestIDs: []string{"request_missing"}, @@ -777,6 +785,7 @@ func TestOutcome(t *testing.T) { nodesObservations: []types.Observation{ { // node1 + FeatureEnableMissingRequestRecovery: true, Observations: map[string]*types.RequestObservation{ "request_in_query": {Observation: &types.RequestObservation_EventuallyConsistent{EventuallyConsistent: []byte("value1")}}, "request_missing": {Observation: &types.RequestObservation_EventuallyConsistent{EventuallyConsistent: []byte("recovered")}}, @@ -784,6 +793,7 @@ func TestOutcome(t *testing.T) { }, { // node2 + FeatureEnableMissingRequestRecovery: true, Observations: map[string]*types.RequestObservation{ "request_in_query": {Observation: &types.RequestObservation_EventuallyConsistent{EventuallyConsistent: []byte("value1")}}, "request_missing": {Observation: &types.RequestObservation_EventuallyConsistent{EventuallyConsistent: []byte("recovered")}}, @@ -791,6 +801,7 @@ func TestOutcome(t *testing.T) { }, { // node3 + FeatureEnableMissingRequestRecovery: true, Observations: map[string]*types.RequestObservation{ "request_in_query": {Observation: &types.RequestObservation_EventuallyConsistent{EventuallyConsistent: []byte("value1")}}, "request_missing": {Observation: &types.RequestObservation_EventuallyConsistent{EventuallyConsistent: []byte("recovered")}}, @@ -953,7 +964,8 @@ func TestOutcome(t *testing.T) { for _, tc := range testCases { t.Run(tc.name, func(t *testing.T) { lggr, observed := logger.TestObserved(t, zapcore.DebugLevel) - plugin := newReportingPlugin(Config{ReportingPluginConfig: ocr3types.ReportingPluginConfig{F: 1, N: 4}, EnableMissingRequestRecovery: tc.enableMissingRequestRecovery}, logger.Sugared(lggr), nil, nil, test.GetConsensusMetrics(t)) + plugin, err := newReportingPlugin(Config{ReportingPluginConfig: ocr3types.ReportingPluginConfig{F: 1, N: 4}}, logger.Sugared(lggr), nil, nil, test.GetConsensusMetrics(t), limits.Factory{}) + require.NoError(t, err) var rawAOs []ocrtypes.AttributedObservation for i := range tc.nodesObservations { nodesObservations := &tc.nodesObservations[i] @@ -1037,7 +1049,8 @@ func TestAgreeOnEventuallyConsistentValue(t *testing.T) { } for _, tc := range testCases { t.Run(tc.name, func(t *testing.T) { - plugin := newReportingPlugin(Config{ReportingPluginConfig: ocr3types.ReportingPluginConfig{F: 1, N: 4}}, logger.Sugared(logger.Test(t)), nil, nil, test.GetConsensusMetrics(t)) + plugin, err := newReportingPlugin(Config{ReportingPluginConfig: ocr3types.ReportingPluginConfig{F: 1, N: 4}}, logger.Sugared(logger.Test(t)), nil, nil, test.GetConsensusMetrics(t), limits.Factory{}) + require.NoError(t, err) nodesObservations := make([]attributedObservation, 0, len(tc.nodesObservations)) for i, ob := range tc.nodesObservations { nodesObservations = append(nodesObservations, attributedObservation{ @@ -1135,7 +1148,8 @@ func TestAgreeOnHashableValue(t *testing.T) { } for _, tc := range testCases { t.Run(tc.name, func(t *testing.T) { - plugin := newReportingPlugin(Config{ReportingPluginConfig: ocr3types.ReportingPluginConfig{F: 1, N: 4}}, logger.Sugared(logger.Test(t)), nil, nil, test.GetConsensusMetrics(t)) + plugin, err := newReportingPlugin(Config{ReportingPluginConfig: ocr3types.ReportingPluginConfig{F: 1, N: 4}}, logger.Sugared(logger.Test(t)), nil, nil, test.GetConsensusMetrics(t), limits.Factory{}) + require.NoError(t, err) nodesObservations := make([]attributedObservation, 0, len(tc.nodesObservations)) for i, h := range tc.nodesObservations { var ro *types.RequestObservation @@ -1311,7 +1325,8 @@ func TestAgreeOnVolatileValue(t *testing.T) { } for _, tc := range testCases { t.Run(tc.name, func(t *testing.T) { - plugin := newReportingPlugin(Config{ReportingPluginConfig: ocr3types.ReportingPluginConfig{F: 1, N: 4}}, logger.Sugared(logger.Test(t)), nil, nil, test.GetConsensusMetrics(t)) + plugin, err := newReportingPlugin(Config{ReportingPluginConfig: ocr3types.ReportingPluginConfig{F: 1, N: 4}}, logger.Sugared(logger.Test(t)), nil, nil, test.GetConsensusMetrics(t), limits.Factory{}) + require.NoError(t, err) nodesObservations := make([]attributedObservation, 0, len(tc.observations)) for i := range tc.observations { ro := tc.observations[i] @@ -1432,7 +1447,8 @@ func TestAgreeOnObservationType(t *testing.T) { } for _, tc := range testCases { t.Run(tc.name, func(t *testing.T) { - plugin := newReportingPlugin(Config{ReportingPluginConfig: ocr3types.ReportingPluginConfig{F: 1, N: 4}}, logger.Sugared(logger.Test(t)), nil, nil, test.GetConsensusMetrics(t)) + plugin, err := newReportingPlugin(Config{ReportingPluginConfig: ocr3types.ReportingPluginConfig{F: 1, N: 4}}, logger.Sugared(logger.Test(t)), nil, nil, test.GetConsensusMetrics(t), limits.Factory{}) + require.NoError(t, err) nodesObservations := make([]attributedObservation, 0, len(tc.observations)) for i := range tc.observations { ob := &tc.observations[i] @@ -1539,7 +1555,8 @@ func TestAggregateValue(t *testing.T) { for _, tc := range testCases { const id = "id" t.Run(tc.name, func(t *testing.T) { - plugin := newReportingPlugin(Config{ReportingPluginConfig: ocr3types.ReportingPluginConfig{F: 1, N: 4}}, logger.Sugared(logger.Test(t)), nil, nil, test.GetConsensusMetrics(t)) + plugin, err := newReportingPlugin(Config{ReportingPluginConfig: ocr3types.ReportingPluginConfig{F: 1, N: 4}}, logger.Sugared(logger.Test(t)), nil, nil, test.GetConsensusMetrics(t), limits.Factory{}) + require.NoError(t, err) nodesObservations := make([]attributedObservation, 0, len(tc.observations)) for i := range tc.observations { ob := tc.observations[i] @@ -1739,7 +1756,8 @@ func TestReports(t *testing.T) { for _, tc := range testCases { t.Run(tc.name, func(t *testing.T) { lggr, observer := logger.TestObservedSugared(t, zapcore.InfoLevel) - rp := newReportingPlugin(Config{MaxReportCount: tc.maxReportCount, MaxReportLengthBytes: tc.maxReportLengthBytes}, lggr, nil, nil, test.GetConsensusMetrics(t)) + rp, err := newReportingPlugin(Config{MaxReportCount: tc.maxReportCount, MaxReportLengthBytes: tc.maxReportLengthBytes}, lggr, nil, nil, test.GetConsensusMetrics(t), limits.Factory{}) + require.NoError(t, err) reports, err := rp.Reports(t.Context(), 1, mustMarshalProto(tc.outcome)) require.NoError(t, err) @@ -1863,10 +1881,11 @@ func TestIsVolatileCandidateBetter(t *testing.T) { func TestAgreeOnEventuallyConsistentValue_TwoFPlusOne(t *testing.T) { const id = "req-2f1" // N=7, F=2 → require 5 identical (2F+1) - plugin := newReportingPlugin(Config{ + plugin, err := newReportingPlugin(Config{ ReportingPluginConfig: ocr3types.ReportingPluginConfig{F: 2, N: 7}, MinResponsesToAggregate: 5, - }, logger.Sugared(logger.Test(t)), nil, nil, test.GetConsensusMetrics(t)) + }, logger.Sugared(logger.Test(t)), nil, nil, test.GetConsensusMetrics(t), limits.Factory{}) + require.NoError(t, err) makeAos := func(values []string) []attributedObservation { aos := make([]attributedObservation, len(values)) @@ -1900,9 +1919,10 @@ func TestAgreeOnEventuallyConsistentValue_TwoFPlusOne(t *testing.T) { }) t.Run("default F+1 still works when MinIdenticalObservations is zero", func(t *testing.T) { - pluginDefault := newReportingPlugin(Config{ + pluginDefault, err := newReportingPlugin(Config{ ReportingPluginConfig: ocr3types.ReportingPluginConfig{F: 2, N: 7}, - }, logger.Sugared(logger.Test(t)), nil, nil, test.GetConsensusMetrics(t)) + }, logger.Sugared(logger.Test(t)), nil, nil, test.GetConsensusMetrics(t), limits.Factory{}) + require.NoError(t, err) // 3 of 7 matching → F+1=3, should succeed aos := makeAos([]string{"v", "v", "v", "a", "b", "c", "d"}) got, actualCount, err := pluginDefault.agreeOnEventuallyConsistentValue(id, aos) @@ -1931,6 +1951,7 @@ func TestNewReportingPlugin_MinResponsesToAggregateValidation(t *testing.T) { mocks.NewRequestsHandler(t), mocks.NewBlocksProvider(t), test.GetConsensusMetrics(t), + limits.Factory{}, ) } diff --git a/libs/chainconsensus/types/ocr.pb.go b/libs/chainconsensus/types/ocr.pb.go index f3a576177..9464534f8 100644 --- a/libs/chainconsensus/types/ocr.pb.go +++ b/libs/chainconsensus/types/ocr.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.10 +// protoc-gen-go v1.36.12 // protoc v5.29.3 // source: ocr.proto @@ -495,12 +495,13 @@ func (*RequestObservation_Hashable) isRequestObservation_Observation() {} func (*RequestObservation_Volatile) isRequestObservation_Observation() {} type Observation struct { - state protoimpl.MessageState `protogen:"open.v1"` - ChainHeight *ChainHeight `protobuf:"bytes,1,opt,name=chainHeight,proto3" json:"chainHeight,omitempty"` - Observations map[string]*RequestObservation `protobuf:"bytes,2,rep,name=observations,proto3" json:"observations,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - MissingRequestIDs []string `protobuf:"bytes,3,rep,name=missingRequestIDs,proto3" json:"missingRequestIDs,omitempty"` // list of requests IDs that are known by observer, but not requested by leader - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + ChainHeight *ChainHeight `protobuf:"bytes,1,opt,name=chainHeight,proto3" json:"chainHeight,omitempty"` + Observations map[string]*RequestObservation `protobuf:"bytes,2,rep,name=observations,proto3" json:"observations,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + MissingRequestIDs []string `protobuf:"bytes,3,rep,name=missingRequestIDs,proto3" json:"missingRequestIDs,omitempty"` // list of requests IDs that are known by observer, but not requested by leader + FeatureEnableMissingRequestRecovery bool `protobuf:"varint,4,opt,name=featureEnableMissingRequestRecovery,proto3" json:"featureEnableMissingRequestRecovery,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Observation) Reset() { @@ -554,6 +555,13 @@ func (x *Observation) GetMissingRequestIDs() []string { return nil } +func (x *Observation) GetFeatureEnableMissingRequestRecovery() bool { + if x != nil { + return x.FeatureEnableMissingRequestRecovery + } + return false +} + type RequestError struct { state protoimpl.MessageState `protogen:"open.v1"` Errors [][]byte `protobuf:"bytes,1,rep,name=errors,proto3" json:"errors,omitempty"` @@ -947,11 +955,12 @@ const file_ocr_proto_rawDesc = "" + "\x05error\x18\x04 \x01(\fH\x00R\x05error\x12\x1c\n" + "\bhashable\x18\x05 \x01(\fH\x00R\bhashable\x12P\n" + "\bvolatile\x18\x06 \x01(\v22.chain_capabilities.evm.types.VolatileObservationsH\x00R\bvolatileB\r\n" + - "\vobservation\"\xdc\x02\n" + + "\vobservation\"\xae\x03\n" + "\vObservation\x12K\n" + "\vchainHeight\x18\x01 \x01(\v2).chain_capabilities.evm.types.ChainHeightR\vchainHeight\x12_\n" + "\fobservations\x18\x02 \x03(\v2;.chain_capabilities.evm.types.Observation.ObservationsEntryR\fobservations\x12,\n" + - "\x11missingRequestIDs\x18\x03 \x03(\tR\x11missingRequestIDs\x1aq\n" + + "\x11missingRequestIDs\x18\x03 \x03(\tR\x11missingRequestIDs\x12P\n" + + "#featureEnableMissingRequestRecovery\x18\x04 \x01(\bR#featureEnableMissingRequestRecovery\x1aq\n" + "\x11ObservationsEntry\x12\x10\n" + "\x03key\x18\x01 \x01(\tR\x03key\x12F\n" + "\x05value\x18\x02 \x01(\v20.chain_capabilities.evm.types.RequestObservationR\x05value:\x028\x01\"&\n" + diff --git a/libs/chainconsensus/types/ocr.proto b/libs/chainconsensus/types/ocr.proto index 90f9eff8e..413b56cd7 100644 --- a/libs/chainconsensus/types/ocr.proto +++ b/libs/chainconsensus/types/ocr.proto @@ -61,6 +61,7 @@ message Observation { ChainHeight chainHeight = 1; map observations = 2; repeated string missingRequestIDs = 3; // list of requests IDs that are known by observer, but not requested by leader + bool featureEnableMissingRequestRecovery = 4; } message RequestError { diff --git a/libs/go.mod b/libs/go.mod index 21cd69b5a..dd1d8a624 100644 --- a/libs/go.mod +++ b/libs/go.mod @@ -8,7 +8,7 @@ require ( github.com/google/uuid v1.6.0 github.com/hashicorp/go-plugin v1.8.0 github.com/shopspring/decimal v1.4.0 - github.com/smartcontractkit/chainlink-common v0.11.2-0.20260915085450-70e088c78bf2 + github.com/smartcontractkit/chainlink-common v0.11.2-0.20260918090440-4031696dc913 github.com/smartcontractkit/chainlink-protos/cre/go v0.0.0-20260804191526-b7a850ae7648 github.com/smartcontractkit/libocr v0.0.0-20260810200708-618b5bf7f342 github.com/stretchr/testify v1.12.1 @@ -17,7 +17,7 @@ require ( go.opentelemetry.io/otel/sdk/metric v1.46.0 go.uber.org/zap v1.28.0 google.golang.org/genproto/googleapis/rpc v0.0.0-20260819154853-08b0e4226688 - google.golang.org/grpc v1.83.1 + google.golang.org/grpc v1.83.2 google.golang.org/protobuf v1.36.12 ) @@ -79,7 +79,7 @@ require ( github.com/santhosh-tekuri/jsonschema/v5 v5.3.1 // indirect github.com/scylladb/go-reflectx v1.0.1 // indirect github.com/smartcontractkit/chain-selectors v1.0.104 // indirect - github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.11-0.20260724142814-45996a1bcb72 // indirect + github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.11-0.20260915184316-2730f1867c92 // indirect github.com/smartcontractkit/chainlink-protos/linking-service/go v0.0.0-20251002192024-d2ad9222409b // indirect github.com/smartcontractkit/chainlink-protos/metering/go v0.0.0-20260710151514-27b5a126dabe // indirect github.com/smartcontractkit/chainlink-protos/node-platform v0.0.0-20260709145319-7782fb89eb16 // indirect diff --git a/libs/go.sum b/libs/go.sum index a85053e3a..de98e03ea 100644 --- a/libs/go.sum +++ b/libs/go.sum @@ -212,8 +212,12 @@ github.com/smartcontractkit/chain-selectors v1.0.104 h1:/n9pPGM5W/+r1eHoWZv4VwX9 github.com/smartcontractkit/chain-selectors v1.0.104/go.mod h1:qy7whtgG5g+7z0jt0nRyii9bLND9m15NZTzuQPkMZ5w= github.com/smartcontractkit/chainlink-common v0.11.2-0.20260915085450-70e088c78bf2 h1:Y7lkBB/AKz4Fdf6UXhqEnqa0/KgJlF3C2PRQE1bPf9g= github.com/smartcontractkit/chainlink-common v0.11.2-0.20260915085450-70e088c78bf2/go.mod h1:ks0kniCCg8Siv2XflmwLOq5ib9Ifoh6VHXHwfEWIMQA= +github.com/smartcontractkit/chainlink-common v0.11.2-0.20260918090440-4031696dc913 h1:lA1CkKWEC9q3i1hCZdv+pkbzuD2NBDAoAyYQpZuJ0P8= +github.com/smartcontractkit/chainlink-common v0.11.2-0.20260918090440-4031696dc913/go.mod h1:3CaCxSyZmgWl1PhxneFSZqOfN7DF2VnHML0bTfiDNIo= github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.11-0.20260724142814-45996a1bcb72 h1:uWEwl7i2ryuRVoV4DmIKm6mqYevf1lH/8cQYhw/JXko= github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.11-0.20260724142814-45996a1bcb72/go.mod h1:UYcRMb4dZcoaIPgZJ3hckCySTqtJc9K4Q+tOKErwTq0= +github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.11-0.20260915184316-2730f1867c92 h1:Z1OIGukDhJD+Gknr5G07Vtml24E7BwKaIQoWzV/SdqA= +github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.11-0.20260915184316-2730f1867c92/go.mod h1:Scyk7O80fde5rJF3Ty3fEE3xiS6j84eWbu8/2gl3pIY= github.com/smartcontractkit/chainlink-protos/billing/go v0.0.0-20251024234028-0988426d98f4 h1:GCzrxDWn3b7jFfEA+WiYRi8CKoegsayiDoJBCjYkneE= github.com/smartcontractkit/chainlink-protos/billing/go v0.0.0-20251024234028-0988426d98f4/go.mod h1:HHGeDUpAsPa0pmOx7wrByCitjQ0mbUxf0R9v+g67uCA= github.com/smartcontractkit/chainlink-protos/cre/go v0.0.0-20260804191526-b7a850ae7648 h1:WEUMkKQPAgcNMRgES6CBWrRUiII+HKEWQjulKQBSuMA= @@ -421,6 +425,8 @@ google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8 google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= google.golang.org/grpc v1.83.1 h1:HIO0+BEtBP6soyqvqC8sNUjZ7bTs+0hFQuFF+RAy++Y= google.golang.org/grpc v1.83.1/go.mod h1:kDyl6SKsiHKt0uylY5gtn5cEjkrIOhQOGDgIc4JGwzQ= +google.golang.org/grpc v1.83.2 h1:EManeRomTObA0BU7I8vXgg/78uE5MJ9M8B39EX2WscU= +google.golang.org/grpc v1.83.2/go.mod h1:YPI1hK3kDked6iHvgX3tR0y+nX/qpMFKhPgFsokw1S8= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= diff --git a/libs/testutils/reports.go b/libs/testutils/reports.go index 8c7d06cb7..46a95775c 100644 --- a/libs/testutils/reports.go +++ b/libs/testutils/reports.go @@ -5,7 +5,7 @@ import ( "google.golang.org/protobuf/proto" - "github.com/smartcontractkit/chainlink-common/pkg/capabilities/consensus/ocr3/ocr3cap" + "github.com/smartcontractkit/chainlink-common/pkg/capabilities/consensus/ocr3/types" "github.com/smartcontractkit/chainlink-protos/cre/go/values" ) @@ -21,7 +21,7 @@ func NewReport(t *testing.T, value map[string][]byte) *values.Value { } wrappedSignedReport, err := values.Wrap( - ocr3cap.SignedReport{ + types.SignedReport{ Context: []uint8{}, ID: []uint8{1}, Report: wrappedValueBytes, From 8406273761a033fd8d2bfc735cd196e4fcd1f114 Mon Sep 17 00:00:00 2001 From: yashnevatia Date: Fri, 18 Sep 2026 10:24:29 +0100 Subject: [PATCH 05/33] make generate --- libs/chainconsensus/types/ocr.pb.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libs/chainconsensus/types/ocr.pb.go b/libs/chainconsensus/types/ocr.pb.go index 9464534f8..26b3e937e 100644 --- a/libs/chainconsensus/types/ocr.pb.go +++ b/libs/chainconsensus/types/ocr.pb.go @@ -1,6 +1,6 @@ // Code generated by protoc-gen-go. DO NOT EDIT. // versions: -// protoc-gen-go v1.36.12 +// protoc-gen-go v1.36.10 // protoc v5.29.3 // source: ocr.proto From 91b16df49fb4ce424cda2421dea44aa005910c59 Mon Sep 17 00:00:00 2001 From: yashnevatia Date: Fri, 18 Sep 2026 10:29:47 +0100 Subject: [PATCH 06/33] rename field --- .../chainconsensus/oracle/reporting_plugin.go | 10 ++++---- .../oracle/reporting_plugin_test.go | 6 ++--- libs/chainconsensus/types/ocr.pb.go | 24 +++++++++---------- libs/chainconsensus/types/ocr.proto | 2 +- 4 files changed, 20 insertions(+), 22 deletions(-) diff --git a/libs/chainconsensus/oracle/reporting_plugin.go b/libs/chainconsensus/oracle/reporting_plugin.go index 88a621af0..b09aafd23 100644 --- a/libs/chainconsensus/oracle/reporting_plugin.go +++ b/libs/chainconsensus/oracle/reporting_plugin.go @@ -193,7 +193,7 @@ func (rp *reportingPlugin) Observation( if err != nil { rp.logger.Errorw("error checking if enableMissingRequestRecovery is enabled", "error", err) } - observation.FeatureEnableMissingRequestRecovery = open + observation.EnableMissingRequestRecovery = open // add observations for requests provided by the leader in the query err = rp.addObservations(ctx, query.RequestIDs, observation) @@ -574,11 +574,11 @@ func (rp *reportingPlugin) agreeOnMissingRequestIDs(aos []attributedObservation) // whether missing-request recovery is enabled. This is a per-node, per-round capability flag // unrelated to any specific request ID, so it is voted on independently of per-request // observation quorum (which the aggregation loop in Outcome enforces on its own). -func (rp *reportingPlugin) agreeOnFeatureEnableMissingRequestRecovery(aos []attributedObservation) bool { +func (rp *reportingPlugin) agreeOnEnableMissingRequestRecovery(aos []attributedObservation) bool { minMatching := rp.config.matchingThreshold() counter := 0 for _, ob := range aos { - if ob.Observation.FeatureEnableMissingRequestRecovery { + if ob.Observation.EnableMissingRequestRecovery { counter++ if counter >= minMatching { return true @@ -809,7 +809,7 @@ func (rp *reportingPlugin) Outcome( } requestIDs := query.RequestIDs - if prevOutcome := rp.tryUnmarshalPreviousOutcome(outctx); prevOutcome != nil && rp.agreeOnFeatureEnableMissingRequestRecovery(aos) { + if prevOutcome := rp.tryUnmarshalPreviousOutcome(outctx); prevOutcome != nil && rp.agreeOnEnableMissingRequestRecovery(aos) { seen := make(map[string]struct{}, len(query.RequestIDs)) for _, requestID := range query.RequestIDs { seen[requestID] = struct{}{} @@ -818,8 +818,6 @@ func (rp *reportingPlugin) Outcome( // Requests that the leader's query omitted but that a quorum of nodes still supplied // observations for (via addObservationsOfPrevMissingRequests) must still be aggregated here, // otherwise they would be recycled into MissingRequestIDs forever instead of getting resolved. - // Per-request observation quorum is enforced independently by the aggregation loop below, - // so it's safe to add all of them here once the feature itself has DON-wide quorum. for _, requestID := range prevOutcome.MissingRequestIDs { if _, ok := seen[requestID]; ok { continue diff --git a/libs/chainconsensus/oracle/reporting_plugin_test.go b/libs/chainconsensus/oracle/reporting_plugin_test.go index b4368feae..31374752c 100644 --- a/libs/chainconsensus/oracle/reporting_plugin_test.go +++ b/libs/chainconsensus/oracle/reporting_plugin_test.go @@ -785,7 +785,7 @@ func TestOutcome(t *testing.T) { nodesObservations: []types.Observation{ { // node1 - FeatureEnableMissingRequestRecovery: true, + EnableMissingRequestRecovery: true, Observations: map[string]*types.RequestObservation{ "request_in_query": {Observation: &types.RequestObservation_EventuallyConsistent{EventuallyConsistent: []byte("value1")}}, "request_missing": {Observation: &types.RequestObservation_EventuallyConsistent{EventuallyConsistent: []byte("recovered")}}, @@ -793,7 +793,7 @@ func TestOutcome(t *testing.T) { }, { // node2 - FeatureEnableMissingRequestRecovery: true, + EnableMissingRequestRecovery: true, Observations: map[string]*types.RequestObservation{ "request_in_query": {Observation: &types.RequestObservation_EventuallyConsistent{EventuallyConsistent: []byte("value1")}}, "request_missing": {Observation: &types.RequestObservation_EventuallyConsistent{EventuallyConsistent: []byte("recovered")}}, @@ -801,7 +801,7 @@ func TestOutcome(t *testing.T) { }, { // node3 - FeatureEnableMissingRequestRecovery: true, + EnableMissingRequestRecovery: true, Observations: map[string]*types.RequestObservation{ "request_in_query": {Observation: &types.RequestObservation_EventuallyConsistent{EventuallyConsistent: []byte("value1")}}, "request_missing": {Observation: &types.RequestObservation_EventuallyConsistent{EventuallyConsistent: []byte("recovered")}}, diff --git a/libs/chainconsensus/types/ocr.pb.go b/libs/chainconsensus/types/ocr.pb.go index 26b3e937e..30fbff27e 100644 --- a/libs/chainconsensus/types/ocr.pb.go +++ b/libs/chainconsensus/types/ocr.pb.go @@ -495,13 +495,13 @@ func (*RequestObservation_Hashable) isRequestObservation_Observation() {} func (*RequestObservation_Volatile) isRequestObservation_Observation() {} type Observation struct { - state protoimpl.MessageState `protogen:"open.v1"` - ChainHeight *ChainHeight `protobuf:"bytes,1,opt,name=chainHeight,proto3" json:"chainHeight,omitempty"` - Observations map[string]*RequestObservation `protobuf:"bytes,2,rep,name=observations,proto3" json:"observations,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` - MissingRequestIDs []string `protobuf:"bytes,3,rep,name=missingRequestIDs,proto3" json:"missingRequestIDs,omitempty"` // list of requests IDs that are known by observer, but not requested by leader - FeatureEnableMissingRequestRecovery bool `protobuf:"varint,4,opt,name=featureEnableMissingRequestRecovery,proto3" json:"featureEnableMissingRequestRecovery,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + ChainHeight *ChainHeight `protobuf:"bytes,1,opt,name=chainHeight,proto3" json:"chainHeight,omitempty"` + Observations map[string]*RequestObservation `protobuf:"bytes,2,rep,name=observations,proto3" json:"observations,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"` + MissingRequestIDs []string `protobuf:"bytes,3,rep,name=missingRequestIDs,proto3" json:"missingRequestIDs,omitempty"` // list of requests IDs that are known by observer, but not requested by leader + EnableMissingRequestRecovery bool `protobuf:"varint,4,opt,name=enableMissingRequestRecovery,proto3" json:"enableMissingRequestRecovery,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *Observation) Reset() { @@ -555,9 +555,9 @@ func (x *Observation) GetMissingRequestIDs() []string { return nil } -func (x *Observation) GetFeatureEnableMissingRequestRecovery() bool { +func (x *Observation) GetEnableMissingRequestRecovery() bool { if x != nil { - return x.FeatureEnableMissingRequestRecovery + return x.EnableMissingRequestRecovery } return false } @@ -955,12 +955,12 @@ const file_ocr_proto_rawDesc = "" + "\x05error\x18\x04 \x01(\fH\x00R\x05error\x12\x1c\n" + "\bhashable\x18\x05 \x01(\fH\x00R\bhashable\x12P\n" + "\bvolatile\x18\x06 \x01(\v22.chain_capabilities.evm.types.VolatileObservationsH\x00R\bvolatileB\r\n" + - "\vobservation\"\xae\x03\n" + + "\vobservation\"\xa0\x03\n" + "\vObservation\x12K\n" + "\vchainHeight\x18\x01 \x01(\v2).chain_capabilities.evm.types.ChainHeightR\vchainHeight\x12_\n" + "\fobservations\x18\x02 \x03(\v2;.chain_capabilities.evm.types.Observation.ObservationsEntryR\fobservations\x12,\n" + - "\x11missingRequestIDs\x18\x03 \x03(\tR\x11missingRequestIDs\x12P\n" + - "#featureEnableMissingRequestRecovery\x18\x04 \x01(\bR#featureEnableMissingRequestRecovery\x1aq\n" + + "\x11missingRequestIDs\x18\x03 \x03(\tR\x11missingRequestIDs\x12B\n" + + "\x1cenableMissingRequestRecovery\x18\x04 \x01(\bR\x1cenableMissingRequestRecovery\x1aq\n" + "\x11ObservationsEntry\x12\x10\n" + "\x03key\x18\x01 \x01(\tR\x03key\x12F\n" + "\x05value\x18\x02 \x01(\v20.chain_capabilities.evm.types.RequestObservationR\x05value:\x028\x01\"&\n" + diff --git a/libs/chainconsensus/types/ocr.proto b/libs/chainconsensus/types/ocr.proto index 413b56cd7..bd899b4ad 100644 --- a/libs/chainconsensus/types/ocr.proto +++ b/libs/chainconsensus/types/ocr.proto @@ -61,7 +61,7 @@ message Observation { ChainHeight chainHeight = 1; map observations = 2; repeated string missingRequestIDs = 3; // list of requests IDs that are known by observer, but not requested by leader - bool featureEnableMissingRequestRecovery = 4; + bool enableMissingRequestRecovery = 4; } message RequestError { From ae394580cd78b184f494715cf59b22b58bc6ce79 Mon Sep 17 00:00:00 2001 From: yashnevatia Date: Fri, 18 Sep 2026 10:49:05 +0100 Subject: [PATCH 07/33] clean evm --- chain_capabilities/evm/go.mod | 2 -- chain_capabilities/evm/main.go | 2 +- libs/go.sum | 17 ----------------- 3 files changed, 1 insertion(+), 20 deletions(-) diff --git a/chain_capabilities/evm/go.mod b/chain_capabilities/evm/go.mod index c7e26c568..df5ad68cd 100644 --- a/chain_capabilities/evm/go.mod +++ b/chain_capabilities/evm/go.mod @@ -220,5 +220,3 @@ require ( ) replace github.com/fbsobreira/gotron-sdk => github.com/smartcontractkit/chainlink-tron/relayer/gotron-sdk v0.0.5-0.20250528121202-292529af39df - -replace github.com/smartcontractkit/capabilities/libs => /Users/yashvardhan/capabilities/libs diff --git a/chain_capabilities/evm/main.go b/chain_capabilities/evm/main.go index f20db0c1c..38faa09d5 100644 --- a/chain_capabilities/evm/main.go +++ b/chain_capabilities/evm/main.go @@ -179,7 +179,7 @@ func (c *capabilityGRPCService) Initialise(ctx context.Context, dependencies cor ContractConfigLoadTimeout: time.Second * 10, DefaultMaxDurationInitialization: time.Second * 10, }, - ReportingPluginFactoryService: oracle.NewReportingPluginFactory(logger.Sugared(c.lggr), c.consensusHandler, c.heightProvider, consensusMetrics, c.limitsFactory), + ReportingPluginFactoryService: oracle.NewReportingPluginFactory(logger.Sugared(c.lggr), c.consensusHandler, c.heightProvider, consensusMetrics), ContractTransmitter: oracle.NewContractTransmitter(c.lggr, c.consensusHandler), }) if err != nil { diff --git a/libs/go.sum b/libs/go.sum index 2cb3b00ed..db9c2b9c1 100644 --- a/libs/go.sum +++ b/libs/go.sum @@ -29,13 +29,6 @@ github.com/cloudevents/sdk-go/v2 v2.16.1/go.mod h1:v/kVOaWjNfbvc6tkhhlkhvLapj8Aa github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -<<<<<<< HEAD -github.com/dominikbraun/graph v0.23.0 h1:TdZB4pPqCLFxYhdyMFb1TBdFxp8XLcJfTTBQucVPgCo= -github.com/dominikbraun/graph v0.23.0/go.mod h1:yOjYyogZLY1LSG9E33JWZJiq5k83Qy2C6POAuiViluc= -======= -github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= -github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= ->>>>>>> dd173aa1ec2fc9c7996ded072d21dd2736206091 github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= @@ -215,16 +208,10 @@ github.com/shopspring/decimal v1.4.0 h1:bxl37RwXBklmTi0C79JfXCEBD1cqqHt0bbgBAGFp github.com/shopspring/decimal v1.4.0/go.mod h1:gawqmDU56v4yIKSwfBSFip1HdCCXN8/+DMd9qYNcwME= github.com/smartcontractkit/chain-selectors v1.0.104 h1:/n9pPGM5W/+r1eHoWZv4VwX9LNS1af4+ICyhM8zKRNM= github.com/smartcontractkit/chain-selectors v1.0.104/go.mod h1:qy7whtgG5g+7z0jt0nRyii9bLND9m15NZTzuQPkMZ5w= -github.com/smartcontractkit/chainlink-common v0.11.2-0.20260915085450-70e088c78bf2 h1:Y7lkBB/AKz4Fdf6UXhqEnqa0/KgJlF3C2PRQE1bPf9g= -github.com/smartcontractkit/chainlink-common v0.11.2-0.20260915085450-70e088c78bf2/go.mod h1:ks0kniCCg8Siv2XflmwLOq5ib9Ifoh6VHXHwfEWIMQA= github.com/smartcontractkit/chainlink-common v0.11.2-0.20260918090440-4031696dc913 h1:lA1CkKWEC9q3i1hCZdv+pkbzuD2NBDAoAyYQpZuJ0P8= github.com/smartcontractkit/chainlink-common v0.11.2-0.20260918090440-4031696dc913/go.mod h1:3CaCxSyZmgWl1PhxneFSZqOfN7DF2VnHML0bTfiDNIo= -github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.11-0.20260724142814-45996a1bcb72 h1:uWEwl7i2ryuRVoV4DmIKm6mqYevf1lH/8cQYhw/JXko= -github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.11-0.20260724142814-45996a1bcb72/go.mod h1:UYcRMb4dZcoaIPgZJ3hckCySTqtJc9K4Q+tOKErwTq0= github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.11-0.20260915184316-2730f1867c92 h1:Z1OIGukDhJD+Gknr5G07Vtml24E7BwKaIQoWzV/SdqA= github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.11-0.20260915184316-2730f1867c92/go.mod h1:Scyk7O80fde5rJF3Ty3fEE3xiS6j84eWbu8/2gl3pIY= -github.com/smartcontractkit/chainlink-protos/billing/go v0.0.0-20251024234028-0988426d98f4 h1:GCzrxDWn3b7jFfEA+WiYRi8CKoegsayiDoJBCjYkneE= -github.com/smartcontractkit/chainlink-protos/billing/go v0.0.0-20251024234028-0988426d98f4/go.mod h1:HHGeDUpAsPa0pmOx7wrByCitjQ0mbUxf0R9v+g67uCA= github.com/smartcontractkit/chainlink-protos/cre/go v0.0.0-20260804191526-b7a850ae7648 h1:WEUMkKQPAgcNMRgES6CBWrRUiII+HKEWQjulKQBSuMA= github.com/smartcontractkit/chainlink-protos/cre/go v0.0.0-20260804191526-b7a850ae7648/go.mod h1:/i8hjTPFdVWHiY+QjeSiVS2Z3GB3WAZznGgXHstC02E= github.com/smartcontractkit/chainlink-protos/linking-service/go v0.0.0-20251002192024-d2ad9222409b h1:QuI6SmQFK/zyUlVWEf0GMkiUYBPY4lssn26nKSd/bOM= @@ -233,8 +220,6 @@ github.com/smartcontractkit/chainlink-protos/metering/go v0.0.0-20260710151514-2 github.com/smartcontractkit/chainlink-protos/metering/go v0.0.0-20260710151514-27b5a126dabe/go.mod h1:z7lx7wI3XZ4u9kmUtAVdwn1BCC9T8aieWSDcuDgPTdQ= github.com/smartcontractkit/chainlink-protos/node-platform v0.0.0-20260709145319-7782fb89eb16 h1:/vkKPJoweLkRd56V4YHGRAtTG4+/JAlgklGEfvH6l4c= github.com/smartcontractkit/chainlink-protos/node-platform v0.0.0-20260709145319-7782fb89eb16/go.mod h1:dkR2uYg9XYJuT1JASkPzWE51jjFkVb86P7a/yXe5/GM= -github.com/smartcontractkit/chainlink-protos/workflows/go v0.0.0-20260528173149-f5b8336b19d9 h1:LQy2j2+TdKLSWsUTUYuqmQPn8kjqCLjGI3ZJYGtDc08= -github.com/smartcontractkit/chainlink-protos/workflows/go v0.0.0-20260528173149-f5b8336b19d9/go.mod h1:GTpDgyK0OObf7jpch6p8N281KxN92wbB8serZhU9yRc= github.com/smartcontractkit/freeport v0.1.3-0.20250716200817-cb5dfd0e369e h1:Hv9Mww35LrufCdM9wtS9yVi/rEWGI1UnjHbcKKU0nVY= github.com/smartcontractkit/freeport v0.1.3-0.20250716200817-cb5dfd0e369e/go.mod h1:T4zH9R8R8lVWKfU7tUvYz2o2jMv1OpGCdpY2j2QZXzU= github.com/smartcontractkit/grpc-proxy v0.0.0-20240830132753-a7e17fec5ab7 h1:12ijqMM9tvYVEm+nR826WsrNi6zCKpwBhuApq127wHs= @@ -428,8 +413,6 @@ google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyac google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= -google.golang.org/grpc v1.83.1 h1:HIO0+BEtBP6soyqvqC8sNUjZ7bTs+0hFQuFF+RAy++Y= -google.golang.org/grpc v1.83.1/go.mod h1:kDyl6SKsiHKt0uylY5gtn5cEjkrIOhQOGDgIc4JGwzQ= google.golang.org/grpc v1.83.2 h1:EManeRomTObA0BU7I8vXgg/78uE5MJ9M8B39EX2WscU= google.golang.org/grpc v1.83.2/go.mod h1:YPI1hK3kDked6iHvgX3tR0y+nX/qpMFKhPgFsokw1S8= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= From c6ea99d6ac19002701d33c739e8b2d1957f008a5 Mon Sep 17 00:00:00 2001 From: yashnevatia Date: Fri, 18 Sep 2026 10:53:46 +0100 Subject: [PATCH 08/33] remove reports test --- chain_capabilities/evm/go.mod | 2 +- chain_capabilities/evm/go.sum | 4 ++-- chain_capabilities/evm/main.go | 2 +- libs/testutils/reports.go | 36 ---------------------------------- 4 files changed, 4 insertions(+), 40 deletions(-) delete mode 100644 libs/testutils/reports.go diff --git a/chain_capabilities/evm/go.mod b/chain_capabilities/evm/go.mod index df5ad68cd..c69825619 100644 --- a/chain_capabilities/evm/go.mod +++ b/chain_capabilities/evm/go.mod @@ -6,7 +6,7 @@ require ( github.com/ethereum/go-ethereum v1.17.4 github.com/google/go-cmp v0.7.0 github.com/smartcontractkit/capabilities/chain_capabilities/common v0.0.0-20260915141251-0910a990ef64 - github.com/smartcontractkit/capabilities/libs v0.0.0-20260714133332-db2a5f11cd64 + github.com/smartcontractkit/capabilities/libs v0.0.0-20260918094905-ae394580cd78 github.com/smartcontractkit/chain-selectors v1.0.106 github.com/smartcontractkit/chainlink-common v0.11.2-0.20260918090440-4031696dc913 github.com/smartcontractkit/chainlink-evm v0.3.4-0.20260410162948-2dca02f24e98 diff --git a/chain_capabilities/evm/go.sum b/chain_capabilities/evm/go.sum index 1e5450f3b..aee362c4b 100644 --- a/chain_capabilities/evm/go.sum +++ b/chain_capabilities/evm/go.sum @@ -466,8 +466,8 @@ github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMB github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/smartcontractkit/capabilities/chain_capabilities/common v0.0.0-20260915141251-0910a990ef64 h1:BwsTpKz61em58mjFdqIZg/MVdfTfgGjOz/GBpBMmdZM= github.com/smartcontractkit/capabilities/chain_capabilities/common v0.0.0-20260915141251-0910a990ef64/go.mod h1:kyG5aTnUW7AXyoHuLYNtCZL0d1UFx3v2SuYYYr7bglY= -github.com/smartcontractkit/capabilities/libs v0.0.0-20260714133332-db2a5f11cd64 h1:D+N1i+pa+lmmd8llrSgCYmUxG3TX+iyGda5ac2sO4tc= -github.com/smartcontractkit/capabilities/libs v0.0.0-20260714133332-db2a5f11cd64/go.mod h1:DZkOtlIRV6ecpCskdXMF+k2es3uJQqTT1m5TRB9etjQ= +github.com/smartcontractkit/capabilities/libs v0.0.0-20260918094905-ae394580cd78 h1:vCTFOppKK2zxIBIGWqIz3bw53M17sKyGvZPe2yq/Qwk= +github.com/smartcontractkit/capabilities/libs v0.0.0-20260918094905-ae394580cd78/go.mod h1:aZywtKe7ZzhDHJYaUP8IdGlj17aUS4qndSueDOt8P8Q= github.com/smartcontractkit/chain-selectors v1.0.106 h1:6Mz7FDooWJEcfvuOX3nH7oh5s44fqg/WqVDQS63Mjzs= github.com/smartcontractkit/chain-selectors v1.0.106/go.mod h1:qy7whtgG5g+7z0jt0nRyii9bLND9m15NZTzuQPkMZ5w= github.com/smartcontractkit/chainlink-common v0.11.2-0.20260918090440-4031696dc913 h1:lA1CkKWEC9q3i1hCZdv+pkbzuD2NBDAoAyYQpZuJ0P8= diff --git a/chain_capabilities/evm/main.go b/chain_capabilities/evm/main.go index 38faa09d5..f20db0c1c 100644 --- a/chain_capabilities/evm/main.go +++ b/chain_capabilities/evm/main.go @@ -179,7 +179,7 @@ func (c *capabilityGRPCService) Initialise(ctx context.Context, dependencies cor ContractConfigLoadTimeout: time.Second * 10, DefaultMaxDurationInitialization: time.Second * 10, }, - ReportingPluginFactoryService: oracle.NewReportingPluginFactory(logger.Sugared(c.lggr), c.consensusHandler, c.heightProvider, consensusMetrics), + ReportingPluginFactoryService: oracle.NewReportingPluginFactory(logger.Sugared(c.lggr), c.consensusHandler, c.heightProvider, consensusMetrics, c.limitsFactory), ContractTransmitter: oracle.NewContractTransmitter(c.lggr, c.consensusHandler), }) if err != nil { diff --git a/libs/testutils/reports.go b/libs/testutils/reports.go deleted file mode 100644 index 46a95775c..000000000 --- a/libs/testutils/reports.go +++ /dev/null @@ -1,36 +0,0 @@ -package testutils - -import ( - "testing" - - "google.golang.org/protobuf/proto" - - "github.com/smartcontractkit/chainlink-common/pkg/capabilities/consensus/ocr3/types" - "github.com/smartcontractkit/chainlink-protos/cre/go/values" -) - -func NewReport(t *testing.T, value map[string][]byte) *values.Value { - wrappedValue, err := values.Wrap(value) - if err != nil { - t.Errorf("failed to wrap value: %v", err) - } - - wrappedValueBytes, err := proto.MarshalOptions{Deterministic: true}.Marshal(values.Proto(wrappedValue)) - if err != nil { - t.Errorf("failed to marshal wrapped value: %v", err) - } - - wrappedSignedReport, err := values.Wrap( - types.SignedReport{ - Context: []uint8{}, - ID: []uint8{1}, - Report: wrappedValueBytes, - Signatures: [][]uint8{{}}, - }, - ) - if err != nil { - t.Errorf("failed to wrap signed report: %v", err) - } - - return &wrappedSignedReport -} From 0cfaab72c293712e78257f603e40897cf1f5507d Mon Sep 17 00:00:00 2001 From: yashnevatia Date: Fri, 18 Sep 2026 14:02:09 +0100 Subject: [PATCH 09/33] byzantine --- libs/chainconsensus/oracle/reporting_plugin.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libs/chainconsensus/oracle/reporting_plugin.go b/libs/chainconsensus/oracle/reporting_plugin.go index b09aafd23..19da7a9ee 100644 --- a/libs/chainconsensus/oracle/reporting_plugin.go +++ b/libs/chainconsensus/oracle/reporting_plugin.go @@ -575,7 +575,7 @@ func (rp *reportingPlugin) agreeOnMissingRequestIDs(aos []attributedObservation) // unrelated to any specific request ID, so it is voted on independently of per-request // observation quorum (which the aggregation loop in Outcome enforces on its own). func (rp *reportingPlugin) agreeOnEnableMissingRequestRecovery(aos []attributedObservation) bool { - minMatching := rp.config.matchingThreshold() + minMatching := byzQuorumSize(rp.config.N, rp.config.F) counter := 0 for _, ob := range aos { if ob.Observation.EnableMissingRequestRecovery { From faec3ba1e667fa0ea72db3e43ceacf7186bdbe1b Mon Sep 17 00:00:00 2001 From: yashnevatia Date: Fri, 18 Sep 2026 14:03:18 +0100 Subject: [PATCH 10/33] bump libs to use byzantine --- chain_capabilities/evm/go.mod | 2 +- chain_capabilities/evm/go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/chain_capabilities/evm/go.mod b/chain_capabilities/evm/go.mod index c69825619..6f4424965 100644 --- a/chain_capabilities/evm/go.mod +++ b/chain_capabilities/evm/go.mod @@ -6,7 +6,7 @@ require ( github.com/ethereum/go-ethereum v1.17.4 github.com/google/go-cmp v0.7.0 github.com/smartcontractkit/capabilities/chain_capabilities/common v0.0.0-20260915141251-0910a990ef64 - github.com/smartcontractkit/capabilities/libs v0.0.0-20260918094905-ae394580cd78 + github.com/smartcontractkit/capabilities/libs v0.0.0-20260918130209-0cfaab72c293 github.com/smartcontractkit/chain-selectors v1.0.106 github.com/smartcontractkit/chainlink-common v0.11.2-0.20260918090440-4031696dc913 github.com/smartcontractkit/chainlink-evm v0.3.4-0.20260410162948-2dca02f24e98 diff --git a/chain_capabilities/evm/go.sum b/chain_capabilities/evm/go.sum index aee362c4b..856615c63 100644 --- a/chain_capabilities/evm/go.sum +++ b/chain_capabilities/evm/go.sum @@ -466,8 +466,8 @@ github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMB github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/smartcontractkit/capabilities/chain_capabilities/common v0.0.0-20260915141251-0910a990ef64 h1:BwsTpKz61em58mjFdqIZg/MVdfTfgGjOz/GBpBMmdZM= github.com/smartcontractkit/capabilities/chain_capabilities/common v0.0.0-20260915141251-0910a990ef64/go.mod h1:kyG5aTnUW7AXyoHuLYNtCZL0d1UFx3v2SuYYYr7bglY= -github.com/smartcontractkit/capabilities/libs v0.0.0-20260918094905-ae394580cd78 h1:vCTFOppKK2zxIBIGWqIz3bw53M17sKyGvZPe2yq/Qwk= -github.com/smartcontractkit/capabilities/libs v0.0.0-20260918094905-ae394580cd78/go.mod h1:aZywtKe7ZzhDHJYaUP8IdGlj17aUS4qndSueDOt8P8Q= +github.com/smartcontractkit/capabilities/libs v0.0.0-20260918130209-0cfaab72c293 h1:Z3dVK5a5SFExUOO/9ZAInD3OfpdVf8Xkl8bhOZPhKKM= +github.com/smartcontractkit/capabilities/libs v0.0.0-20260918130209-0cfaab72c293/go.mod h1:aZywtKe7ZzhDHJYaUP8IdGlj17aUS4qndSueDOt8P8Q= github.com/smartcontractkit/chain-selectors v1.0.106 h1:6Mz7FDooWJEcfvuOX3nH7oh5s44fqg/WqVDQS63Mjzs= github.com/smartcontractkit/chain-selectors v1.0.106/go.mod h1:qy7whtgG5g+7z0jt0nRyii9bLND9m15NZTzuQPkMZ5w= github.com/smartcontractkit/chainlink-common v0.11.2-0.20260918090440-4031696dc913 h1:lA1CkKWEC9q3i1hCZdv+pkbzuD2NBDAoAyYQpZuJ0P8= From cbbb0f5d46e9bc0bdb182bb555e879145434ac09 Mon Sep 17 00:00:00 2001 From: yashnevatia Date: Wed, 23 Sep 2026 11:29:50 +0100 Subject: [PATCH 11/33] only keep ocr changes in this --- chain_capabilities/evm/go.mod | 55 ++++------------------------ chain_capabilities/evm/go.sum | 65 ++++++++++++++++------------------ chain_capabilities/evm/main.go | 2 +- 3 files changed, 37 insertions(+), 85 deletions(-) diff --git a/chain_capabilities/evm/go.mod b/chain_capabilities/evm/go.mod index 1e521c3d0..04d1afc08 100644 --- a/chain_capabilities/evm/go.mod +++ b/chain_capabilities/evm/go.mod @@ -5,13 +5,13 @@ go 1.26.6 require ( github.com/ethereum/go-ethereum v1.17.4 github.com/google/go-cmp v0.7.0 - github.com/smartcontractkit/capabilities/chain_capabilities/common v0.0.0-20260915141251-0910a990ef64 - github.com/smartcontractkit/capabilities/libs v0.0.0-20260918130209-0cfaab72c293 + github.com/smartcontractkit/capabilities/chain_capabilities/common v0.0.0-20260922114021-5cee95428866 + github.com/smartcontractkit/capabilities/libs v0.0.0-20260922114021-5cee95428866 github.com/smartcontractkit/chain-selectors v1.0.106 - github.com/smartcontractkit/chainlink-common v0.11.2-0.20260918090440-4031696dc913 - github.com/smartcontractkit/chainlink-evm v0.3.4-0.20260410162948-2dca02f24e98 - github.com/smartcontractkit/chainlink-evm/gethwrappers v0.0.0-20251022073203-7d8ae8cf67c1 - github.com/smartcontractkit/chainlink-framework/multinode v0.0.0-20260410144512-ca02ad6ed16a + github.com/smartcontractkit/chainlink-common v0.11.2-0.20260917115705-1d3a14a9b049 + github.com/smartcontractkit/chainlink-evm v0.3.4-0.20260917132551-2a2b38e8b744 + github.com/smartcontractkit/chainlink-evm/gethwrappers v0.0.0-20260512150409-b4068bf735e6 + github.com/smartcontractkit/chainlink-framework/multinode v0.0.0-20260521164805-26d78d5e1243 github.com/smartcontractkit/chainlink-protos/cre/go v0.0.0-20260821155228-fa1d775e2138 github.com/stretchr/testify v1.12.1 go.opentelemetry.io/otel v1.46.0 @@ -46,15 +46,9 @@ require ( github.com/ethereum/go-bigmodexpfix v0.0.0-20250911101455-f9e208c548ab // indirect github.com/ferranbt/fastssz v0.1.4 // indirect github.com/fjl/jsonw v0.1.0 // indirect -<<<<<<< HEAD - github.com/fsnotify/fsnotify v1.9.0 // indirect - github.com/gabriel-vasile/mimetype v1.4.10 // indirect - github.com/getsentry/sentry-go v0.27.0 // indirect -======= github.com/fsnotify/fsnotify v1.10.1 // indirect github.com/gabriel-vasile/mimetype v1.4.13 // indirect github.com/getsentry/sentry-go v0.35.1 // indirect ->>>>>>> 5eeef034d90b0f4644cd1ad79b410174d042b162 github.com/go-ole/go-ole v1.3.0 // indirect github.com/goccy/go-json v0.10.6 // indirect github.com/gofrs/flock v0.12.1 // indirect @@ -94,18 +88,6 @@ require ( github.com/rs/cors v1.11.1 // indirect github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/shirou/gopsutil v3.21.11+incompatible // indirect -<<<<<<< HEAD - github.com/smartcontractkit/chainlink-common/keystore v1.1.1-0.20260529092756-a94bc8ce96d6 // indirect - github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.11-0.20260915184316-2730f1867c92 // indirect - github.com/smartcontractkit/chainlink-framework/chains v0.0.0-20260326122810-b657beadfb57 // indirect - github.com/smartcontractkit/chainlink-framework/metrics v0.0.0-20260401162955-be2bc6b5264b // indirect - github.com/smartcontractkit/chainlink-protos/linking-service/go v0.0.0-20251002192024-d2ad9222409b // indirect - github.com/smartcontractkit/chainlink-protos/metering/go v0.0.0-20260710151514-27b5a126dabe // indirect - github.com/smartcontractkit/chainlink-protos/node-platform v0.0.0-20260709145319-7782fb89eb16 // indirect - github.com/smartcontractkit/chainlink-protos/workflows/go v0.0.0-20260528173149-f5b8336b19d9 // indirect - github.com/stellar/go-stellar-sdk v0.4.0 // indirect - github.com/stellar/go-xdr v0.0.0-20260312225820-cc2b0611aabf // indirect -======= github.com/smartcontractkit/chainlink-common/keystore v1.3.1-0.20260917115705-1d3a14a9b049 // indirect github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.11-0.20260915184316-2730f1867c92 // indirect github.com/smartcontractkit/chainlink-framework/chains v0.0.0-20260724153515-bb6a2de39bcb // indirect @@ -116,7 +98,6 @@ require ( github.com/smartcontractkit/chainlink-protos/workflows/go v0.0.0-20260528173149-f5b8336b19d9 // indirect github.com/stellar/go-stellar-sdk v0.5.0 // indirect github.com/stellar/go-xdr v0.0.0-20260423131911-a87d4d0789c3 // indirect ->>>>>>> 5eeef034d90b0f4644cd1ad79b410174d042b162 github.com/stretchr/objx v0.5.3 // indirect github.com/supranational/blst v0.3.16 // indirect github.com/syndtr/goleveldb v1.0.1-0.20220721030215-126854af5e6d // indirect @@ -136,18 +117,9 @@ require ( go.uber.org/goleak v1.3.0 // indirect go.yaml.in/yaml/v2 v2.4.4 // indirect go.yaml.in/yaml/v3 v3.0.5 // indirect -<<<<<<< HEAD - golang.org/x/mod v0.38.0 // indirect - golang.org/x/sync v0.22.0 // indirect - golang.org/x/telemetry v0.0.0-20260708182218-49f421fb7959 // indirect - golang.org/x/time v0.15.0 // indirect - golang.org/x/tools v0.48.0 // indirect - golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da // indirect -======= go.yaml.in/yaml/v4 v4.0.0-rc.4 // indirect golang.org/x/sync v0.22.0 // indirect golang.org/x/time v0.15.0 // indirect ->>>>>>> 5eeef034d90b0f4644cd1ad79b410174d042b162 gopkg.in/guregu/null.v4 v4.0.0 // indirect gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect @@ -163,34 +135,19 @@ require ( github.com/cloudevents/sdk-go/binding/format/protobuf/v2 v2.16.2 // indirect github.com/cloudevents/sdk-go/v2 v2.16.2 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect -<<<<<<< HEAD - github.com/fatih/color v1.18.0 // indirect - github.com/fxamacker/cbor/v2 v2.9.0 // indirect - github.com/go-json-experiment/json v0.0.0-20250223041408-d3c622f1b874 // indirect -======= github.com/fatih/color v1.19.0 // indirect github.com/fxamacker/cbor/v2 v2.9.2 // indirect github.com/go-json-experiment/json v0.0.0-20260505212615-e40f80bf6836 // indirect ->>>>>>> 5eeef034d90b0f4644cd1ad79b410174d042b162 github.com/go-logr/logr v1.4.4 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/go-playground/locales v0.14.1 // indirect github.com/go-playground/universal-translator v0.18.1 // indirect -<<<<<<< HEAD - github.com/go-playground/validator/v10 v10.28.0 // indirect - github.com/go-viper/mapstructure/v2 v2.5.0 // indirect - github.com/golang/protobuf v1.5.4 // indirect - github.com/google/uuid v1.6.0 // indirect - github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1 // indirect - github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.2 // indirect -======= github.com/go-playground/validator/v10 v10.30.2 // indirect github.com/go-viper/mapstructure/v2 v2.5.0 // indirect github.com/golang/protobuf v1.5.4 // indirect github.com/google/uuid v1.6.0 // indirect github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 // indirect github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3 // indirect ->>>>>>> 5eeef034d90b0f4644cd1ad79b410174d042b162 github.com/grpc-ecosystem/grpc-gateway/v2 v2.30.0 // indirect github.com/hashicorp/go-hclog v1.6.3 // indirect github.com/hashicorp/go-plugin v1.8.0 // indirect diff --git a/chain_capabilities/evm/go.sum b/chain_capabilities/evm/go.sum index d1e78660e..e97d451c0 100644 --- a/chain_capabilities/evm/go.sum +++ b/chain_capabilities/evm/go.sum @@ -154,8 +154,8 @@ github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/me github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= github.com/go-viper/mapstructure/v2 v2.5.0 h1:vM5IJoUAy3d7zRSVtIwQgBj7BiWtMPfmPEgAXnvj1Ro= github.com/go-viper/mapstructure/v2 v2.5.0/go.mod h1:oJDH3BJKyqBA2TXFhDsKDGDTlndYOZ6rGS0BRZIxGhM= -github.com/goccy/go-json v0.10.5 h1:Fq85nIqj+gXn/S5ahsiTlK3TmC85qgirsdTP/+DeaC4= -github.com/goccy/go-json v0.10.5/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M= +github.com/goccy/go-json v0.10.6 h1:p8HrPJzOakx/mn/bQtjgNjdTcN+/S6FcG2CTtQOrHVU= +github.com/goccy/go-json v0.10.6/go.mod h1:oq7eo15ShAhp70Anwd5lgX2pLfOS3QCiwU/PULtXL6M= github.com/gofrs/flock v0.12.1 h1:MTLVXXHf8ekldpJk3AKicLij9MdwOWkZ+a/jHHZby9E= github.com/gofrs/flock v0.12.1/go.mod h1:9zxTsyu5xtJ9DK+1tFZyibEV7y3uwDxPPfbxeeHCoD0= github.com/gofrs/uuid v4.0.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= @@ -212,10 +212,10 @@ github.com/grafana/pyroscope-go/godeltaprof v0.1.10 h1:dvhndEbyavTb59vFCd6PsrAG5 github.com/grafana/pyroscope-go/godeltaprof v0.1.10/go.mod h1:XnWRGg2XO5uxZdiz1rfeJH6w1eZ+YICCBVXNWOfH86g= github.com/graph-gophers/graphql-go v1.5.0 h1:fDqblo50TEpD0LY7RXk/LFVYEVqo3+tXMNMPSVXA1yc= github.com/graph-gophers/graphql-go v1.5.0/go.mod h1:YtmJZDLbF1YYNrlNAuiO5zAStUWc3XZT07iGsVqe1Os= -github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1 h1:qnpSQwGEnkcRpTqNOIR6bJbR0gAorgP9CSALpRcKoAA= -github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.1/go.mod h1:lXGCsh6c22WGtjr+qGHj1otzZpV/1kwTMAqkwZsnWRU= -github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.2 h1:sGm2vDRFUrQJO/Veii4h4zG2vvqG6uWNkBHSTqXOZk0= -github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.2/go.mod h1:wd1YpapPLivG6nQgbf7ZkG1hhSOXDhhn4MLTknx2aAc= +github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 h1:QGLs/O40yoNK9vmy4rhUGBVyMf1lISBGtXRpsu/Qu/o= +github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0/go.mod h1:hM2alZsMUni80N33RBe6J0e423LB+odMj7d3EMP9l20= +github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3 h1:B+8ClL/kCQkRiU82d9xajRPKYMrB7E0MbtzWVi1K4ns= +github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.3/go.mod h1:NbCUVmiS4foBGBHOYlCT25+YmGpJ32dZPi75pGEUpj4= github.com/grpc-ecosystem/grpc-gateway/v2 v2.30.0 h1:/Tnpcb2E0Pz/tN9s3bfEY2Q8ePCEX9iuS+cneUwncnw= github.com/grpc-ecosystem/grpc-gateway/v2 v2.30.0/go.mod h1:zOBXOsUaBSjKgmH4OGzV1esUpR3oUSCPYVd2cUBjKYY= github.com/hashicorp/go-bexpr v0.1.10 h1:9kuI5PFotCboP3dkDYFr/wi0gg0QVbSNz5oFRpxn4uE= @@ -455,28 +455,28 @@ github.com/shopspring/decimal v1.4.0 h1:bxl37RwXBklmTi0C79JfXCEBD1cqqHt0bbgBAGFp github.com/shopspring/decimal v1.4.0/go.mod h1:gawqmDU56v4yIKSwfBSFip1HdCCXN8/+DMd9qYNcwME= github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= -github.com/smartcontractkit/capabilities/chain_capabilities/common v0.0.0-20260915141251-0910a990ef64 h1:BwsTpKz61em58mjFdqIZg/MVdfTfgGjOz/GBpBMmdZM= -github.com/smartcontractkit/capabilities/chain_capabilities/common v0.0.0-20260915141251-0910a990ef64/go.mod h1:kyG5aTnUW7AXyoHuLYNtCZL0d1UFx3v2SuYYYr7bglY= -github.com/smartcontractkit/capabilities/libs v0.0.0-20260918130209-0cfaab72c293 h1:Z3dVK5a5SFExUOO/9ZAInD3OfpdVf8Xkl8bhOZPhKKM= -github.com/smartcontractkit/capabilities/libs v0.0.0-20260918130209-0cfaab72c293/go.mod h1:aZywtKe7ZzhDHJYaUP8IdGlj17aUS4qndSueDOt8P8Q= +github.com/smartcontractkit/capabilities/chain_capabilities/common v0.0.0-20260922114021-5cee95428866 h1:nJ3V1j6QSFJ3zfwTO8Ty5TVNEb7g4HUkr9VXXV7hLSg= +github.com/smartcontractkit/capabilities/chain_capabilities/common v0.0.0-20260922114021-5cee95428866/go.mod h1:URIXl+ew48QapONMSLC1faCcGRnm5CRL3jj1PtpJt5E= +github.com/smartcontractkit/capabilities/libs v0.0.0-20260922114021-5cee95428866 h1:X9GJ09ZHKoovZLxVEn2/eEUxPvX3lc3WjsW1hmC3o6Q= +github.com/smartcontractkit/capabilities/libs v0.0.0-20260922114021-5cee95428866/go.mod h1:7q+YF5LlwVYqVPMLBgZ5gLQyCbgaOt3NsvD0gFfOhSM= github.com/smartcontractkit/chain-selectors v1.0.106 h1:6Mz7FDooWJEcfvuOX3nH7oh5s44fqg/WqVDQS63Mjzs= github.com/smartcontractkit/chain-selectors v1.0.106/go.mod h1:qy7whtgG5g+7z0jt0nRyii9bLND9m15NZTzuQPkMZ5w= -github.com/smartcontractkit/chainlink-common v0.11.2-0.20260918090440-4031696dc913 h1:lA1CkKWEC9q3i1hCZdv+pkbzuD2NBDAoAyYQpZuJ0P8= -github.com/smartcontractkit/chainlink-common v0.11.2-0.20260918090440-4031696dc913/go.mod h1:3CaCxSyZmgWl1PhxneFSZqOfN7DF2VnHML0bTfiDNIo= -github.com/smartcontractkit/chainlink-common/keystore v1.1.1-0.20260529092756-a94bc8ce96d6 h1:fWsYxxj35fp1/6YZngoTsOTMLqDie4N5X0osAOdhUTE= -github.com/smartcontractkit/chainlink-common/keystore v1.1.1-0.20260529092756-a94bc8ce96d6/go.mod h1:6JexOOhPhknQ0QMuppFIlOpm6wCp54yZMxai+tWugwY= +github.com/smartcontractkit/chainlink-common v0.11.2-0.20260917115705-1d3a14a9b049 h1:WebE9HTubitMC5xq+xCAArEI+oBLekVOoxYnCkB8whI= +github.com/smartcontractkit/chainlink-common v0.11.2-0.20260917115705-1d3a14a9b049/go.mod h1:3CaCxSyZmgWl1PhxneFSZqOfN7DF2VnHML0bTfiDNIo= +github.com/smartcontractkit/chainlink-common/keystore v1.3.1-0.20260917115705-1d3a14a9b049 h1:nQ2bw8QQLT+AuCE6JUVIRT1RAo08wQHR9jWh+MgT2GA= +github.com/smartcontractkit/chainlink-common/keystore v1.3.1-0.20260917115705-1d3a14a9b049/go.mod h1:FO9igruzwHPXstyb9J9z83sJ19iLSNSIg+0H/n0wlJU= github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.11-0.20260915184316-2730f1867c92 h1:Z1OIGukDhJD+Gknr5G07Vtml24E7BwKaIQoWzV/SdqA= github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.11-0.20260915184316-2730f1867c92/go.mod h1:Scyk7O80fde5rJF3Ty3fEE3xiS6j84eWbu8/2gl3pIY= -github.com/smartcontractkit/chainlink-evm v0.3.4-0.20260410162948-2dca02f24e98 h1:h/L6wrXYLQalI/vHm6qg/KBv6d7kMb3geMHV5hCM1t4= -github.com/smartcontractkit/chainlink-evm v0.3.4-0.20260410162948-2dca02f24e98/go.mod h1:6vCMfxz7cMW0wWseNKtct+b1JJbbRVJJhh/t6pQWN3M= -github.com/smartcontractkit/chainlink-evm/gethwrappers v0.0.0-20251022073203-7d8ae8cf67c1 h1:NTODgwAil7BLoijS7y6KnEuNbQ9v60VUhIR9FcAzIhg= -github.com/smartcontractkit/chainlink-evm/gethwrappers v0.0.0-20251022073203-7d8ae8cf67c1/go.mod h1:oyfOm4k0uqmgZIfxk1elI/59B02shbbJQiiUdPdbMgI= -github.com/smartcontractkit/chainlink-framework/chains v0.0.0-20260326122810-b657beadfb57 h1:sCrr1Oy/JZstf/Oi2cRuU4mDN1BRUKfXP2CKByCMADg= -github.com/smartcontractkit/chainlink-framework/chains v0.0.0-20260326122810-b657beadfb57/go.mod h1:kGprqyjsz6qFNVszOQoHc24wfvCjyipNZFste/3zcbs= -github.com/smartcontractkit/chainlink-framework/metrics v0.0.0-20260401162955-be2bc6b5264b h1:L1So1EDBDRET3j/TdV1Gjv3qWARoa/NPRaU7k4r30yA= -github.com/smartcontractkit/chainlink-framework/metrics v0.0.0-20260401162955-be2bc6b5264b/go.mod h1:HG/aei0MgBOpsyRLexdKGtOUO8yjSJO3iUu0Uu8KBm4= -github.com/smartcontractkit/chainlink-framework/multinode v0.0.0-20260410144512-ca02ad6ed16a h1:PsFckZp3Dhb5pVc0Xccj1lvnOEg0H3eQdjtZgnCKd+4= -github.com/smartcontractkit/chainlink-framework/multinode v0.0.0-20260410144512-ca02ad6ed16a/go.mod h1:7ketk4ischPQW/JQgmyHz6zdzLUJv1VC29SiSgosydQ= +github.com/smartcontractkit/chainlink-evm v0.3.4-0.20260917132551-2a2b38e8b744 h1:n+V23NCROMeWFHUyR78Z4dXkUnPV3K8RzOzJpnXuXV0= +github.com/smartcontractkit/chainlink-evm v0.3.4-0.20260917132551-2a2b38e8b744/go.mod h1:dEk48o9w++AyLCv12fNKIJf4Ko6iywWWJAGrjfS0vR8= +github.com/smartcontractkit/chainlink-evm/gethwrappers v0.0.0-20260512150409-b4068bf735e6 h1:JFo7C3FilwhfwGBLAyj2umbL+P4QxGmVi/b8yt9kqvI= +github.com/smartcontractkit/chainlink-evm/gethwrappers v0.0.0-20260512150409-b4068bf735e6/go.mod h1:a260YnLyWq2NHLUN5cSVyMGk9nhO6RguCaTI2rsVqyA= +github.com/smartcontractkit/chainlink-framework/chains v0.0.0-20260724153515-bb6a2de39bcb h1:HQN56hEteWOBagVDCxV2Fn++frjRI7dfnozEQUq/5ok= +github.com/smartcontractkit/chainlink-framework/chains v0.0.0-20260724153515-bb6a2de39bcb/go.mod h1:kGprqyjsz6qFNVszOQoHc24wfvCjyipNZFste/3zcbs= +github.com/smartcontractkit/chainlink-framework/metrics v0.0.0-20260723212800-b2f21d31b1d2 h1:N1Q6NHuH+T2b6cst43LD2pnykNJSymP/szJJ7rrYY8I= +github.com/smartcontractkit/chainlink-framework/metrics v0.0.0-20260723212800-b2f21d31b1d2/go.mod h1:HG/aei0MgBOpsyRLexdKGtOUO8yjSJO3iUu0Uu8KBm4= +github.com/smartcontractkit/chainlink-framework/multinode v0.0.0-20260521164805-26d78d5e1243 h1:71PGTkjdFZ0JrloEC2Fs8eHl1b1gmUuH+bq7q23usKk= +github.com/smartcontractkit/chainlink-framework/multinode v0.0.0-20260521164805-26d78d5e1243/go.mod h1:7ketk4ischPQW/JQgmyHz6zdzLUJv1VC29SiSgosydQ= github.com/smartcontractkit/chainlink-protos/cre/go v0.0.0-20260821155228-fa1d775e2138 h1:Vk0CZJakAUS/djfBhIJENH4WvM4xl6bY8dYD8cIY/sk= github.com/smartcontractkit/chainlink-protos/cre/go v0.0.0-20260821155228-fa1d775e2138/go.mod h1:/i8hjTPFdVWHiY+QjeSiVS2Z3GB3WAZznGgXHstC02E= github.com/smartcontractkit/chainlink-protos/linking-service/go v0.0.0-20260512230622-65f10f4cd305 h1:NJdGFhzT6zMaTod4QkBqVD2sg0I25iw1boOYtTpEwRo= @@ -493,10 +493,10 @@ github.com/smartcontractkit/grpc-proxy v0.0.0-20240830132753-a7e17fec5ab7 h1:12i github.com/smartcontractkit/grpc-proxy v0.0.0-20240830132753-a7e17fec5ab7/go.mod h1:FX7/bVdoep147QQhsOPkYsPEXhGZjeYx6lBSaSXtZOA= github.com/smartcontractkit/libocr v0.0.0-20260810200708-618b5bf7f342 h1:pEcgcjTGA83MzpqbTbyIg9AJrOs62s77SooDdJGIg9w= github.com/smartcontractkit/libocr v0.0.0-20260810200708-618b5bf7f342/go.mod h1:5JPtsRwjugpyfsdEALC4RopfvohqK/G+3DHaR8uv+Bc= -github.com/stellar/go-stellar-sdk v0.4.0 h1:WBLeJk7EllU7WhwrTH1L5Mu2EhZor/xy5sVi/82JzNQ= -github.com/stellar/go-stellar-sdk v0.4.0/go.mod h1:tLKAQPxa2I5UvGMabBbUXcY3fmgYnfDudrMeK7CDX4w= -github.com/stellar/go-xdr v0.0.0-20260312225820-cc2b0611aabf h1:GY1RVbX3Hg7poPXEf6yojjP0hyypvgUgZmCqQU9D0xg= -github.com/stellar/go-xdr v0.0.0-20260312225820-cc2b0611aabf/go.mod h1:If+U9Z1W5xU97VrOgJandQT+2dN7/iOpkCrxBJEyF80= +github.com/stellar/go-stellar-sdk v0.5.0 h1:xpOO+ZTyvGz54wTm7pwl2Gf1e6lZl0ExrJ/tKb+Roj4= +github.com/stellar/go-stellar-sdk v0.5.0/go.mod h1:tLKAQPxa2I5UvGMabBbUXcY3fmgYnfDudrMeK7CDX4w= +github.com/stellar/go-xdr v0.0.0-20260423131911-a87d4d0789c3 h1:/NnsQpfVYPFr5Xm/V7EOblI8P05zewwkJLOlLItsW7U= +github.com/stellar/go-xdr v0.0.0-20260423131911-a87d4d0789c3/go.mod h1:If+U9Z1W5xU97VrOgJandQT+2dN7/iOpkCrxBJEyF80= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= @@ -628,7 +628,8 @@ go.yaml.in/yaml/v2 v2.4.4 h1:tuyd0P+2Ont/d6e2rl3be67goVK4R6deVxCUX5vyPaQ= go.yaml.in/yaml/v2 v2.4.4/go.mod h1:gMZqIpDtDqOfM0uNfy0SkpRhvUryYH0Z6wdMYcacYXQ= go.yaml.in/yaml/v3 v3.0.5 h1:N6y/pJk8buWs9NY5ERU2HSMfm+IuD/OtfdAnq6kESPw= go.yaml.in/yaml/v3 v3.0.5/go.mod h1:HVTZu1O7/Vkt2N+BFy8Zza+lnLsABggaTM2ZpNIGuKg= -golang.org/x/crypto v0.0.0-20190123085648-057139ce5d2b/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +go.yaml.in/yaml/v4 v4.0.0-rc.4 h1:UP4+v6fFrBIb1l934bDl//mmnoIZEDK0idg1+AIvX5U= +go.yaml.in/yaml/v4 v4.0.0-rc.4/go.mod h1:aZqd9kCMsGL7AuUv/m/PvWLdg5sjJsZ4oHDEnfPPfY0= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190411191339-88737f569e3a/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= @@ -657,8 +658,6 @@ golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/mod v0.38.0 h1:MECBjubtXD7yj4HrhIUcywNaGeNVUdfVnxmPajOk4yk= -golang.org/x/mod v0.38.0/go.mod h1:V6Xz0pq8TQ3dGqVQ1FVHuelZpAL0uNhSkk9ogYP3c40= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -735,8 +734,6 @@ golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.47.0 h1:o7XGOvZQCADBQQ4Y7VNq2dRWQR7JmOUW8Kxx4ZsNgWs= golang.org/x/sys v0.47.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= -golang.org/x/telemetry v0.0.0-20260708182218-49f421fb7959 h1:RJhm5l6Fo4rmEIcndxDllNhhf/fAx8qIm4t6A7vpm2A= -golang.org/x/telemetry v0.0.0-20260708182218-49f421fb7959/go.mod h1:LV7u5Oco+Z/g6XI7PqN+EUUUGGkEcmB1uj2ceI0fOVg= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -776,8 +773,6 @@ golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4f golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= -golang.org/x/tools v0.48.0 h1:3+hClM1aLL5mjMKm5ovokw9epgRXPuu2tILgismM6RE= -golang.org/x/tools v0.48.0/go.mod h1:08xX0orndb/F7jJxGDicx061tyd5pcMto75YMAXr6lk= golang.org/x/xerrors v0.0.0-20190410155217-1f06c39b4373/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20190513163551-3ee3066db522/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff --git a/chain_capabilities/evm/main.go b/chain_capabilities/evm/main.go index 868f0a4be..2ba1c0873 100644 --- a/chain_capabilities/evm/main.go +++ b/chain_capabilities/evm/main.go @@ -191,7 +191,7 @@ func (c *capabilityGRPCService) Initialise(ctx context.Context, dependencies cor ContractConfigLoadTimeout: time.Second * 10, DefaultMaxDurationInitialization: time.Second * 10, }, - ReportingPluginFactoryService: oracle.NewReportingPluginFactory(logger.Sugared(c.lggr), c.consensusHandler, c.heightProvider, consensusMetrics, c.limitsFactory), + ReportingPluginFactoryService: oracle.NewReportingPluginFactory(logger.Sugared(c.lggr), c.consensusHandler, c.heightProvider, consensusMetrics), ContractTransmitter: oracle.NewContractTransmitter(c.lggr, c.consensusHandler), }) if err != nil { From 4451402cb1ca27911af633cae2156fecbec9021d Mon Sep 17 00:00:00 2001 From: yashnevatia Date: Wed, 23 Sep 2026 11:31:15 +0100 Subject: [PATCH 12/33] Test hack in main pr --- .../chainconsensus/oracle/reporting_plugin.go | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/libs/chainconsensus/oracle/reporting_plugin.go b/libs/chainconsensus/oracle/reporting_plugin.go index 19da7a9ee..775f01028 100644 --- a/libs/chainconsensus/oracle/reporting_plugin.go +++ b/libs/chainconsensus/oracle/reporting_plugin.go @@ -7,6 +7,7 @@ import ( "encoding/hex" "errors" "fmt" + "os" "slices" "sort" @@ -64,6 +65,10 @@ type reportingPlugin struct { requestsStore RequestsHandler metrics metrics.ConsensusMetrics enableMissingRequestRecovery limits.GateLimiter + // emptyQueryLeaderNode is a TEST HACK (branch: empty-query-leader-node): when the + // CRE_CHAIN_CONSENSUS_EMPTY_QUERY env var is set, this node returns an empty query + // whenever it is the round leader, simulating a leader that never proposes requests. + emptyQueryLeaderNode bool } func newReportingPlugin( @@ -82,6 +87,13 @@ func newReportingPlugin( metrics: metrics, } + // TEST HACK: see emptyQueryLeaderNode field doc. Inert unless the env var is set. + rp.emptyQueryLeaderNode = os.Getenv("CRE_CHAIN_CONSENSUS_EMPTY_QUERY") != "" + if rp.emptyQueryLeaderNode { + logger.Warnw("TEST HACK ENABLED: this node will return EMPTY queries when it is the round leader " + + "(simulating a leader that never proposes requests to be processed)") + } + var err error rp.enableMissingRequestRecovery, err = limits.MakeGateLimiter(limitsFactory, cresettings.Default.MissingRequestRecoveryEnabled) if err != nil { @@ -91,6 +103,15 @@ func newReportingPlugin( } func (rp *reportingPlugin) Query(ctx context.Context, outctx ocr3types.OutcomeContext) (types.Query, error) { + // TEST HACK (branch: empty-query-leader-node): libocr invokes Query only on the round + // leader, so returning an empty ID list here makes every round this node leads omit + // all pending requests. Other nodes then propose them via MissingRequestIDs, and — + // once the recovery setting is enabled DON-wide — report their outcomes in the next + // round. Enable by setting CRE_CHAIN_CONSENSUS_EMPTY_QUERY on this node only. + if rp.emptyQueryLeaderNode { + rp.logger.Infow("TEST HACK: returning empty query (leader stall simulation)") + return proto.Marshal(&ctypes.Query{}) + } ids, err := rp.requestsStore.GetRequestIDs(rp.config.MaxBatchSize) if err != nil { return types.Query{}, fmt.Errorf("failed to get request ready for processing IDs: %w", err) From 569a4b0c8f5364191788ae5b3af033e4a46d97cf Mon Sep 17 00:00:00 2001 From: yashnevatia Date: Wed, 23 Sep 2026 11:59:54 +0100 Subject: [PATCH 13/33] bumping common merged with main and adding log lines --- .../chainconsensus/oracle/reporting_plugin.go | 28 ++++++++++++++++++- libs/go.mod | 4 +-- libs/go.sum | 4 +-- 3 files changed, 31 insertions(+), 5 deletions(-) diff --git a/libs/chainconsensus/oracle/reporting_plugin.go b/libs/chainconsensus/oracle/reporting_plugin.go index 775f01028..7de7bade7 100644 --- a/libs/chainconsensus/oracle/reporting_plugin.go +++ b/libs/chainconsensus/oracle/reporting_plugin.go @@ -309,7 +309,14 @@ func (rp *reportingPlugin) addObservationsOfPrevMissingRequests(ctx context.Cont // Prioritize the original list of missing requests from the previous outcome. // This handles cases where the leader's order of requests in query is different from the majority of other nodes. - return rp.addObservations(ctx, prevOutcome.MissingRequestIDs, observation) + if err := rp.addObservations(ctx, prevOutcome.MissingRequestIDs, observation); err != nil { + return err + } + + rp.logger.Debugw("Finished adding observations for previously missing requests", + "requested", leaderMissingRequests, + "observationsAdded", len(observation.Observations)) + return nil } func (rp *reportingPlugin) getMissingRequestIDs(roundRequests map[string]struct{}) ([]string, error) { @@ -325,6 +332,11 @@ func (rp *reportingPlugin) getMissingRequestIDs(roundRequests map[string]struct{ } } + if len(missingRequestIDs) > 0 { + rp.logger.Infow("Proposing missing request IDs: present in local store but absent from the leader's query", + "missingRequestIDs", missingRequestIDs) + } + return missingRequestIDs, nil } @@ -588,6 +600,10 @@ func (rp *reportingPlugin) agreeOnMissingRequestIDs(aos []attributedObservation) } sort.Strings(result) + if len(result) > 0 { + rp.logger.Infow("Quorum agreed on missing request IDs: committing them to the outcome for recovery in the next round", + "missingRequestIDs", result) + } return result, nil } @@ -602,6 +618,8 @@ func (rp *reportingPlugin) agreeOnEnableMissingRequestRecovery(aos []attributedO if ob.Observation.EnableMissingRequestRecovery { counter++ if counter >= minMatching { + rp.logger.Infow("Quorum reached for enabling missing request recovery: recovered requests will be aggregated into this round's outcome", + "votes", counter, "required", minMatching) return true } } @@ -839,12 +857,20 @@ func (rp *reportingPlugin) Outcome( // Requests that the leader's query omitted but that a quorum of nodes still supplied // observations for (via addObservationsOfPrevMissingRequests) must still be aggregated here, // otherwise they would be recycled into MissingRequestIDs forever instead of getting resolved. + recoveredRequestIDs := make([]string, 0, len(prevOutcome.MissingRequestIDs)) for _, requestID := range prevOutcome.MissingRequestIDs { if _, ok := seen[requestID]; ok { continue } seen[requestID] = struct{}{} requestIDs = append(requestIDs, requestID) + recoveredRequestIDs = append(recoveredRequestIDs, requestID) + } + + if len(recoveredRequestIDs) > 0 { + rp.logger.Infow("Missing request recovery: adding previously missing requests to this round's outcome "+ + "(they were omitted by the leader's query but agreed upon by a quorum in the previous round)", + "recoveredRequestIDs", recoveredRequestIDs) } } diff --git a/libs/go.mod b/libs/go.mod index dd1d8a624..c4937c5fc 100644 --- a/libs/go.mod +++ b/libs/go.mod @@ -1,6 +1,6 @@ module github.com/smartcontractkit/capabilities/libs -go 1.26.6 +go 1.27.1 require ( github.com/cenkalti/backoff/v5 v5.0.3 @@ -8,7 +8,7 @@ require ( github.com/google/uuid v1.6.0 github.com/hashicorp/go-plugin v1.8.0 github.com/shopspring/decimal v1.4.0 - github.com/smartcontractkit/chainlink-common v0.11.2-0.20260918090440-4031696dc913 + github.com/smartcontractkit/chainlink-common v0.11.2-0.20260923105616-0ed2ac25c152 github.com/smartcontractkit/chainlink-protos/cre/go v0.0.0-20260804191526-b7a850ae7648 github.com/smartcontractkit/libocr v0.0.0-20260810200708-618b5bf7f342 github.com/stretchr/testify v1.12.1 diff --git a/libs/go.sum b/libs/go.sum index db9c2b9c1..9cd1b55cc 100644 --- a/libs/go.sum +++ b/libs/go.sum @@ -208,8 +208,8 @@ github.com/shopspring/decimal v1.4.0 h1:bxl37RwXBklmTi0C79JfXCEBD1cqqHt0bbgBAGFp github.com/shopspring/decimal v1.4.0/go.mod h1:gawqmDU56v4yIKSwfBSFip1HdCCXN8/+DMd9qYNcwME= github.com/smartcontractkit/chain-selectors v1.0.104 h1:/n9pPGM5W/+r1eHoWZv4VwX9LNS1af4+ICyhM8zKRNM= github.com/smartcontractkit/chain-selectors v1.0.104/go.mod h1:qy7whtgG5g+7z0jt0nRyii9bLND9m15NZTzuQPkMZ5w= -github.com/smartcontractkit/chainlink-common v0.11.2-0.20260918090440-4031696dc913 h1:lA1CkKWEC9q3i1hCZdv+pkbzuD2NBDAoAyYQpZuJ0P8= -github.com/smartcontractkit/chainlink-common v0.11.2-0.20260918090440-4031696dc913/go.mod h1:3CaCxSyZmgWl1PhxneFSZqOfN7DF2VnHML0bTfiDNIo= +github.com/smartcontractkit/chainlink-common v0.11.2-0.20260923105616-0ed2ac25c152 h1:g5y/nygbh7fUYpZpHN5h77lHyNNbJXyEHGo3vwmBk3o= +github.com/smartcontractkit/chainlink-common v0.11.2-0.20260923105616-0ed2ac25c152/go.mod h1:BniOJQOh52lgDDNyfOQJEmQUVQ68txTSeT0Qxwt0zQI= github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.11-0.20260915184316-2730f1867c92 h1:Z1OIGukDhJD+Gknr5G07Vtml24E7BwKaIQoWzV/SdqA= github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.11-0.20260915184316-2730f1867c92/go.mod h1:Scyk7O80fde5rJF3Ty3fEE3xiS6j84eWbu8/2gl3pIY= github.com/smartcontractkit/chainlink-protos/cre/go v0.0.0-20260804191526-b7a850ae7648 h1:WEUMkKQPAgcNMRgES6CBWrRUiII+HKEWQjulKQBSuMA= From f6f0bfb707fda2e3f885eaa27ec93baa6ad47340 Mon Sep 17 00:00:00 2001 From: yashnevatia Date: Mon, 28 Sep 2026 09:52:25 +0100 Subject: [PATCH 14/33] removing test hack --- .../chainconsensus/oracle/reporting_plugin.go | 26 +------------------ 1 file changed, 1 insertion(+), 25 deletions(-) diff --git a/libs/chainconsensus/oracle/reporting_plugin.go b/libs/chainconsensus/oracle/reporting_plugin.go index 38711b283..be6a6aa08 100644 --- a/libs/chainconsensus/oracle/reporting_plugin.go +++ b/libs/chainconsensus/oracle/reporting_plugin.go @@ -8,7 +8,6 @@ import ( "errors" "fmt" "math" - "os" "slices" "sort" @@ -72,10 +71,6 @@ type reportingPlugin struct { requestsStore RequestsHandler metrics metrics.ConsensusMetrics enableMissingRequestRecovery limits.GateLimiter - // emptyQueryLeaderNode is a TEST HACK (branch: empty-query-leader-node): when the - // CRE_CHAIN_CONSENSUS_EMPTY_QUERY env var is set, this node returns an empty query - // whenever it is the round leader, simulating a leader that never proposes requests. - emptyQueryLeaderNode bool } func newReportingPlugin( @@ -94,13 +89,6 @@ func newReportingPlugin( metrics: metrics, } - // TEST HACK: see emptyQueryLeaderNode field doc. Inert unless the env var is set. - rp.emptyQueryLeaderNode = os.Getenv("CRE_CHAIN_CONSENSUS_EMPTY_QUERY") != "" - if rp.emptyQueryLeaderNode { - logger.Warnw("TEST HACK ENABLED: this node will return EMPTY queries when it is the round leader " + - "(simulating a leader that never proposes requests to be processed)") - } - var err error rp.enableMissingRequestRecovery, err = limits.MakeGateLimiter(limitsFactory, cresettings.Default.MissingRequestRecoveryEnabled) if err != nil { @@ -110,15 +98,6 @@ func newReportingPlugin( } func (rp *reportingPlugin) Query(ctx context.Context, outctx ocr3types.OutcomeContext) (types.Query, error) { - // TEST HACK (branch: empty-query-leader-node): libocr invokes Query only on the round - // leader, so returning an empty ID list here makes every round this node leads omit - // all pending requests. Other nodes then propose them via MissingRequestIDs, and — - // once the recovery setting is enabled DON-wide — report their outcomes in the next - // round. Enable by setting CRE_CHAIN_CONSENSUS_EMPTY_QUERY on this node only. - if rp.emptyQueryLeaderNode { - rp.logger.Infow("TEST HACK: returning empty query (leader stall simulation)") - return proto.Marshal(&ctypes.Query{}) - } ids, err := rp.requestsStore.GetRequestIDs(rp.config.MaxBatchSize) if err != nil { return types.Query{}, fmt.Errorf("failed to get request ready for processing IDs: %w", err) @@ -310,10 +289,6 @@ func (rp *reportingPlugin) addObservationsOfPrevMissingRequests(ctx context.Cont return nil } - rp.logger.Infow("Adding observations for missing requests. It's expected to happen occasionally. "+ - "If you see this log line frequently there might be an issue in communication between the current leader and workflow DON", - "leaderMissingRequests", leaderMissingRequests) - // Prioritize the original list of missing requests from the previous outcome. // This handles cases where the leader's order of requests in query is different from the majority of other nodes. if err := rp.addObservations(ctx, prevOutcome.MissingRequestIDs, observation); err != nil { @@ -624,6 +599,7 @@ func (rp *reportingPlugin) agreeOnMissingRequestIDs(aos []attributedObservation) // whether missing-request recovery is enabled. This is a per-node, per-round capability flag // unrelated to any specific request ID, so it is voted on independently of per-request // observation quorum (which the aggregation loop in Outcome enforces on its own). +// TODO: clean up settings flag and logic when all nodes in all envs support missing-request recovery: https://smartcontract-it.atlassian.net/browse/PLEX-3461 func (rp *reportingPlugin) agreeOnEnableMissingRequestRecovery(aos []attributedObservation) bool { minMatching := byzQuorumSize(rp.config.N, rp.config.F) counter := 0 From 5b1246b0a398bbc24b196131df850fd9bfeb53a2 Mon Sep 17 00:00:00 2001 From: yashnevatia Date: Mon, 28 Sep 2026 09:54:02 +0100 Subject: [PATCH 15/33] bump common in libs --- go.mod | 15 +++++---------- go.sum | 35 ++++++++--------------------------- 2 files changed, 13 insertions(+), 37 deletions(-) diff --git a/go.mod b/go.mod index bb85ec1c9..77f30af3a 100644 --- a/go.mod +++ b/go.mod @@ -1,18 +1,13 @@ module github.com/smartcontractkit/capabilities -go 1.26.7 +go 1.27.1 require ( - github.com/stretchr/testify v1.11.1 - google.golang.org/protobuf v1.36.11 + github.com/stretchr/testify v1.12.1 + google.golang.org/protobuf v1.36.12 ) require ( - github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect - github.com/kr/pretty v0.3.1 // indirect - github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - github.com/rogpeppe/go-internal v1.14.1 // indirect - github.com/stretchr/objx v0.5.2 // indirect - gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect - gopkg.in/yaml.v3 v3.0.1 // indirect + github.com/stretchr/objx v0.5.3 // indirect + go.yaml.in/yaml/v3 v3.0.5 // indirect ) diff --git a/go.sum b/go.sum index d32a65435..47f23bae9 100644 --- a/go.sum +++ b/go.sum @@ -1,27 +1,8 @@ -github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= -github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= -github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= -github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= -github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= -github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= -github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= -github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= -github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= -github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= -github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= -github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= -github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= -github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= -github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= -google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= -google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= -gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= -gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= -gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +github.com/stretchr/objx v0.5.3 h1:jmXUvGomnU1o3W/V5h2VEradbpJDwGrzugQQvL0POH4= +github.com/stretchr/objx v0.5.3/go.mod h1:rDQraq+vQZU7Fde9LOZLr8Tax6zZvy4kuNKF+QYS+U0= +github.com/stretchr/testify v1.12.1 h1:EuwCh5fleGS7H32xRwO3wRGT7DxrDhLAT6FF8MpWDWE= +github.com/stretchr/testify v1.12.1/go.mod h1:MDEgiDPPsNp5cuIrHPPCyornHKgEVbtFUmoNlxoYthg= +go.yaml.in/yaml/v3 v3.0.5 h1:N6y/pJk8buWs9NY5ERU2HSMfm+IuD/OtfdAnq6kESPw= +go.yaml.in/yaml/v3 v3.0.5/go.mod h1:HVTZu1O7/Vkt2N+BFy8Zza+lnLsABggaTM2ZpNIGuKg= +google.golang.org/protobuf v1.36.12 h1:pJOKDDOyeXErUroCihFAd5LQuwXBSpVnKGrj5o/fwxc= +google.golang.org/protobuf v1.36.12/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= From 46ffec0d43ae32092ad88501316c1cafc78d0cc4 Mon Sep 17 00:00:00 2001 From: yashnevatia Date: Mon, 28 Sep 2026 09:55:46 +0100 Subject: [PATCH 16/33] replace log line --- libs/chainconsensus/oracle/reporting_plugin.go | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/libs/chainconsensus/oracle/reporting_plugin.go b/libs/chainconsensus/oracle/reporting_plugin.go index be6a6aa08..c1d56bbcb 100644 --- a/libs/chainconsensus/oracle/reporting_plugin.go +++ b/libs/chainconsensus/oracle/reporting_plugin.go @@ -289,15 +289,16 @@ func (rp *reportingPlugin) addObservationsOfPrevMissingRequests(ctx context.Cont return nil } + rp.logger.Infow("Adding observations for missing requests. It's expected to happen occasionally. "+ + "If you see this log line frequently there might be an issue in communication between the current leader and workflow DON", + "leaderMissingRequests", leaderMissingRequests) + // Prioritize the original list of missing requests from the previous outcome. // This handles cases where the leader's order of requests in query is different from the majority of other nodes. if err := rp.addObservations(ctx, prevOutcome.MissingRequestIDs, observation); err != nil { return err } - rp.logger.Debugw("Finished adding observations for previously missing requests", - "requested", leaderMissingRequests, - "observationsAdded", len(observation.Observations)) return nil } From 70290d3b55ab43f08aa9ae7a6bfedf87671fac3d Mon Sep 17 00:00:00 2001 From: yashnevatia Date: Mon, 28 Sep 2026 09:58:15 +0100 Subject: [PATCH 17/33] return directly --- libs/chainconsensus/oracle/reporting_plugin.go | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/libs/chainconsensus/oracle/reporting_plugin.go b/libs/chainconsensus/oracle/reporting_plugin.go index c1d56bbcb..db4a6bb26 100644 --- a/libs/chainconsensus/oracle/reporting_plugin.go +++ b/libs/chainconsensus/oracle/reporting_plugin.go @@ -295,11 +295,7 @@ func (rp *reportingPlugin) addObservationsOfPrevMissingRequests(ctx context.Cont // Prioritize the original list of missing requests from the previous outcome. // This handles cases where the leader's order of requests in query is different from the majority of other nodes. - if err := rp.addObservations(ctx, prevOutcome.MissingRequestIDs, observation); err != nil { - return err - } - - return nil + return rp.addObservations(ctx, prevOutcome.MissingRequestIDs, observation) } func (rp *reportingPlugin) getMissingRequestIDs(roundRequests map[string]struct{}) ([]string, error) { From 7250618ffd95dbbfe7b21ae3f18b4261f22e93b4 Mon Sep 17 00:00:00 2001 From: yashnevatia Date: Mon, 28 Sep 2026 10:09:47 +0100 Subject: [PATCH 18/33] make tidy;make generate --- chain_capabilities/evm/monitoring/log_trigger.pb.go | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/chain_capabilities/evm/monitoring/log_trigger.pb.go b/chain_capabilities/evm/monitoring/log_trigger.pb.go index a925538dd..c7b5a3ceb 100644 --- a/chain_capabilities/evm/monitoring/log_trigger.pb.go +++ b/chain_capabilities/evm/monitoring/log_trigger.pb.go @@ -69,11 +69,12 @@ func (x *TopicValues) GetValues() [][]byte { type FilterLogTriggerRequest struct { state protoimpl.MessageState `protogen:"open.v1"` Addresses [][]byte `protobuf:"bytes,1,rep,name=addresses,proto3" json:"addresses,omitempty"` // list of addresses to include in evm address [20]byte fix-sized array format, at least one address is required - // TopicValues is a fixed 4 length array of possible values for any topic where: - // a) the first element is an array of the event signatures (keccak256 of the event name and indexed args types), it has to have at least one value - // b) the second element is an array of possible values for the first indexed argument, can be empty - // c) the third element is an array of possible values for the second indexed argument, can be empty - // d) the fourth element is an array of possible values for the third indexed argument, can be empty + // + //TopicValues is a fixed 4 length array of possible values for any topic where: + //a) the first element is an array of the event signatures (keccak256 of the event name and indexed args types), it has to have at least one value + //b) the second element is an array of possible values for the first indexed argument, can be empty + //c) the third element is an array of possible values for the second indexed argument, can be empty + //d) the fourth element is an array of possible values for the third indexed argument, can be empty Topics []*TopicValues `protobuf:"bytes,2,rep,name=topics,proto3" json:"topics,omitempty"` Confidence int64 `protobuf:"varint,3,opt,name=confidence,proto3" json:"confidence,omitempty"` // optional, defaults to "SAFE" unknownFields protoimpl.UnknownFields From 9031ad9090ec1e4c2638939ecf971693a11f4fcf Mon Sep 17 00:00:00 2001 From: yashnevatia Date: Mon, 28 Sep 2026 10:11:31 +0100 Subject: [PATCH 19/33] bump golangci-lint --- .tool-versions | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.tool-versions b/.tool-versions index 542f888fe..991684a85 100644 --- a/.tool-versions +++ b/.tool-versions @@ -1,4 +1,4 @@ nodejs 20.18.1 pnpm 10.6.5 golang 1.26.7 -golangci-lint 2.11.4 +golangci-lint 2.14.0 From 68e5768bb42667b19e210c8c5b79b6a45ac96d3e Mon Sep 17 00:00:00 2001 From: yashnevatia Date: Mon, 28 Sep 2026 10:14:50 +0100 Subject: [PATCH 20/33] clean --- .../evm/monitoring/log_trigger.pb.go | 11 +++--- go.mod | 15 +++++--- go.sum | 35 ++++++++++++++----- libs/go.mod | 2 +- libs/go.sum | 4 +-- 5 files changed, 45 insertions(+), 22 deletions(-) diff --git a/chain_capabilities/evm/monitoring/log_trigger.pb.go b/chain_capabilities/evm/monitoring/log_trigger.pb.go index c7b5a3ceb..a925538dd 100644 --- a/chain_capabilities/evm/monitoring/log_trigger.pb.go +++ b/chain_capabilities/evm/monitoring/log_trigger.pb.go @@ -69,12 +69,11 @@ func (x *TopicValues) GetValues() [][]byte { type FilterLogTriggerRequest struct { state protoimpl.MessageState `protogen:"open.v1"` Addresses [][]byte `protobuf:"bytes,1,rep,name=addresses,proto3" json:"addresses,omitempty"` // list of addresses to include in evm address [20]byte fix-sized array format, at least one address is required - // - //TopicValues is a fixed 4 length array of possible values for any topic where: - //a) the first element is an array of the event signatures (keccak256 of the event name and indexed args types), it has to have at least one value - //b) the second element is an array of possible values for the first indexed argument, can be empty - //c) the third element is an array of possible values for the second indexed argument, can be empty - //d) the fourth element is an array of possible values for the third indexed argument, can be empty + // TopicValues is a fixed 4 length array of possible values for any topic where: + // a) the first element is an array of the event signatures (keccak256 of the event name and indexed args types), it has to have at least one value + // b) the second element is an array of possible values for the first indexed argument, can be empty + // c) the third element is an array of possible values for the second indexed argument, can be empty + // d) the fourth element is an array of possible values for the third indexed argument, can be empty Topics []*TopicValues `protobuf:"bytes,2,rep,name=topics,proto3" json:"topics,omitempty"` Confidence int64 `protobuf:"varint,3,opt,name=confidence,proto3" json:"confidence,omitempty"` // optional, defaults to "SAFE" unknownFields protoimpl.UnknownFields diff --git a/go.mod b/go.mod index 77f30af3a..bb85ec1c9 100644 --- a/go.mod +++ b/go.mod @@ -1,13 +1,18 @@ module github.com/smartcontractkit/capabilities -go 1.27.1 +go 1.26.7 require ( - github.com/stretchr/testify v1.12.1 - google.golang.org/protobuf v1.36.12 + github.com/stretchr/testify v1.11.1 + google.golang.org/protobuf v1.36.11 ) require ( - github.com/stretchr/objx v0.5.3 // indirect - go.yaml.in/yaml/v3 v3.0.5 // indirect + github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect + github.com/kr/pretty v0.3.1 // indirect + github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect + github.com/rogpeppe/go-internal v1.14.1 // indirect + github.com/stretchr/objx v0.5.2 // indirect + gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go.sum b/go.sum index 47f23bae9..d32a65435 100644 --- a/go.sum +++ b/go.sum @@ -1,8 +1,27 @@ -github.com/stretchr/objx v0.5.3 h1:jmXUvGomnU1o3W/V5h2VEradbpJDwGrzugQQvL0POH4= -github.com/stretchr/objx v0.5.3/go.mod h1:rDQraq+vQZU7Fde9LOZLr8Tax6zZvy4kuNKF+QYS+U0= -github.com/stretchr/testify v1.12.1 h1:EuwCh5fleGS7H32xRwO3wRGT7DxrDhLAT6FF8MpWDWE= -github.com/stretchr/testify v1.12.1/go.mod h1:MDEgiDPPsNp5cuIrHPPCyornHKgEVbtFUmoNlxoYthg= -go.yaml.in/yaml/v3 v3.0.5 h1:N6y/pJk8buWs9NY5ERU2HSMfm+IuD/OtfdAnq6kESPw= -go.yaml.in/yaml/v3 v3.0.5/go.mod h1:HVTZu1O7/Vkt2N+BFy8Zza+lnLsABggaTM2ZpNIGuKg= -google.golang.org/protobuf v1.36.12 h1:pJOKDDOyeXErUroCihFAd5LQuwXBSpVnKGrj5o/fwxc= -google.golang.org/protobuf v1.36.12/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= +github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= +github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= +github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= +github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= +github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= +github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= +github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= +google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= +google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/libs/go.mod b/libs/go.mod index c4937c5fc..72e1cdedd 100644 --- a/libs/go.mod +++ b/libs/go.mod @@ -8,7 +8,7 @@ require ( github.com/google/uuid v1.6.0 github.com/hashicorp/go-plugin v1.8.0 github.com/shopspring/decimal v1.4.0 - github.com/smartcontractkit/chainlink-common v0.11.2-0.20260923105616-0ed2ac25c152 + github.com/smartcontractkit/chainlink-common v0.11.2-0.20260925190414-e1b87ad2d7b1 github.com/smartcontractkit/chainlink-protos/cre/go v0.0.0-20260804191526-b7a850ae7648 github.com/smartcontractkit/libocr v0.0.0-20260810200708-618b5bf7f342 github.com/stretchr/testify v1.12.1 diff --git a/libs/go.sum b/libs/go.sum index 9cd1b55cc..b832519a7 100644 --- a/libs/go.sum +++ b/libs/go.sum @@ -208,8 +208,8 @@ github.com/shopspring/decimal v1.4.0 h1:bxl37RwXBklmTi0C79JfXCEBD1cqqHt0bbgBAGFp github.com/shopspring/decimal v1.4.0/go.mod h1:gawqmDU56v4yIKSwfBSFip1HdCCXN8/+DMd9qYNcwME= github.com/smartcontractkit/chain-selectors v1.0.104 h1:/n9pPGM5W/+r1eHoWZv4VwX9LNS1af4+ICyhM8zKRNM= github.com/smartcontractkit/chain-selectors v1.0.104/go.mod h1:qy7whtgG5g+7z0jt0nRyii9bLND9m15NZTzuQPkMZ5w= -github.com/smartcontractkit/chainlink-common v0.11.2-0.20260923105616-0ed2ac25c152 h1:g5y/nygbh7fUYpZpHN5h77lHyNNbJXyEHGo3vwmBk3o= -github.com/smartcontractkit/chainlink-common v0.11.2-0.20260923105616-0ed2ac25c152/go.mod h1:BniOJQOh52lgDDNyfOQJEmQUVQ68txTSeT0Qxwt0zQI= +github.com/smartcontractkit/chainlink-common v0.11.2-0.20260925190414-e1b87ad2d7b1 h1:1rGIv4vUt+Et7k5waRbkODOQsMuEakQ8TA9PiMBaPss= +github.com/smartcontractkit/chainlink-common v0.11.2-0.20260925190414-e1b87ad2d7b1/go.mod h1:UkZJ6uUU9Hlonfb+k62Pg4yRuvOsoShoOd4tPEB/qpE= github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.11-0.20260915184316-2730f1867c92 h1:Z1OIGukDhJD+Gknr5G07Vtml24E7BwKaIQoWzV/SdqA= github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.11-0.20260915184316-2730f1867c92/go.mod h1:Scyk7O80fde5rJF3Ty3fEE3xiS6j84eWbu8/2gl3pIY= github.com/smartcontractkit/chainlink-protos/cre/go v0.0.0-20260804191526-b7a850ae7648 h1:WEUMkKQPAgcNMRgES6CBWrRUiII+HKEWQjulKQBSuMA= From 73c3b08722903672114e9fd48ed55b93df689d91 Mon Sep 17 00:00:00 2001 From: yashnevatia Date: Mon, 28 Sep 2026 10:19:28 +0100 Subject: [PATCH 21/33] gomodguard_v2 --- .golangci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.golangci.yml b/.golangci.yml index 1531aa24b..d97b23077 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -6,7 +6,7 @@ linters: - depguard - errorlint - exhaustive - - gomodguard + - gomodguard_v2 - gosec - loggercheck - misspell From 0bdc90e4236493e2292194aae88098bc58da8131 Mon Sep 17 00:00:00 2001 From: yashnevatia Date: Mon, 28 Sep 2026 10:22:19 +0100 Subject: [PATCH 22/33] gomodguard_v2 --- .golangci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.golangci.yml b/.golangci.yml index d97b23077..a3bc4f86c 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -88,7 +88,7 @@ linters: errorf: false exhaustive: default-signifies-exhaustive: true - gomodguard: + gomodguard_v2: blocked: local-replace-directives: false gosec: From c171d01d66e46b384201764fc4b2a5b6c4190955 Mon Sep 17 00:00:00 2001 From: yashnevatia Date: Mon, 28 Sep 2026 10:28:23 +0100 Subject: [PATCH 23/33] gomodguard_v2 --- .golangci.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.golangci.yml b/.golangci.yml index a3bc4f86c..2c0d10e3a 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -89,8 +89,7 @@ linters: exhaustive: default-signifies-exhaustive: true gomodguard_v2: - blocked: - local-replace-directives: false + local-replace-directives: false gosec: excludes: - G101 From c7354c10d6474c2db8a243aed579edb24f452ef5 Mon Sep 17 00:00:00 2001 From: yashnevatia Date: Mon, 28 Sep 2026 10:53:16 +0100 Subject: [PATCH 24/33] golang 1.27.1 --- .tool-versions | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.tool-versions b/.tool-versions index 991684a85..7092c3b38 100644 --- a/.tool-versions +++ b/.tool-versions @@ -1,4 +1,4 @@ nodejs 20.18.1 pnpm 10.6.5 -golang 1.26.7 +golang 1.27.1 golangci-lint 2.14.0 From eb5b3da1a5d4e5c15c1d4bd841f4232f784688c1 Mon Sep 17 00:00:00 2001 From: yashnevatia Date: Mon, 28 Sep 2026 11:17:31 +0100 Subject: [PATCH 25/33] lint --- .github/workflows/CI.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/CI.yaml b/.github/workflows/CI.yaml index bffeaddce..94292802f 100644 --- a/.github/workflows/CI.yaml +++ b/.github/workflows/CI.yaml @@ -10,7 +10,7 @@ on: env: # Ensure that a cached go version is used: # https://github.com/actions/runner-images/blob/main/images/ubuntu/Ubuntu2404-Readme.md#go - GO_VERSION: 1.26.7 + GO_VERSION: 1.27.1 GOPRIVATE: github.com/smartcontractkit/capabilities jobs: From 011d379fd080b013c56804a28e5bf4ba1539b126 Mon Sep 17 00:00:00 2001 From: yashnevatia Date: Mon, 28 Sep 2026 11:33:33 +0100 Subject: [PATCH 26/33] bump go --- .../evm/monitoring/log_trigger.pb.go | 11 +++--- go.mod | 15 +++----- go.sum | 35 +++++-------------- 3 files changed, 19 insertions(+), 42 deletions(-) diff --git a/chain_capabilities/evm/monitoring/log_trigger.pb.go b/chain_capabilities/evm/monitoring/log_trigger.pb.go index a925538dd..c7b5a3ceb 100644 --- a/chain_capabilities/evm/monitoring/log_trigger.pb.go +++ b/chain_capabilities/evm/monitoring/log_trigger.pb.go @@ -69,11 +69,12 @@ func (x *TopicValues) GetValues() [][]byte { type FilterLogTriggerRequest struct { state protoimpl.MessageState `protogen:"open.v1"` Addresses [][]byte `protobuf:"bytes,1,rep,name=addresses,proto3" json:"addresses,omitempty"` // list of addresses to include in evm address [20]byte fix-sized array format, at least one address is required - // TopicValues is a fixed 4 length array of possible values for any topic where: - // a) the first element is an array of the event signatures (keccak256 of the event name and indexed args types), it has to have at least one value - // b) the second element is an array of possible values for the first indexed argument, can be empty - // c) the third element is an array of possible values for the second indexed argument, can be empty - // d) the fourth element is an array of possible values for the third indexed argument, can be empty + // + //TopicValues is a fixed 4 length array of possible values for any topic where: + //a) the first element is an array of the event signatures (keccak256 of the event name and indexed args types), it has to have at least one value + //b) the second element is an array of possible values for the first indexed argument, can be empty + //c) the third element is an array of possible values for the second indexed argument, can be empty + //d) the fourth element is an array of possible values for the third indexed argument, can be empty Topics []*TopicValues `protobuf:"bytes,2,rep,name=topics,proto3" json:"topics,omitempty"` Confidence int64 `protobuf:"varint,3,opt,name=confidence,proto3" json:"confidence,omitempty"` // optional, defaults to "SAFE" unknownFields protoimpl.UnknownFields diff --git a/go.mod b/go.mod index bb85ec1c9..77f30af3a 100644 --- a/go.mod +++ b/go.mod @@ -1,18 +1,13 @@ module github.com/smartcontractkit/capabilities -go 1.26.7 +go 1.27.1 require ( - github.com/stretchr/testify v1.11.1 - google.golang.org/protobuf v1.36.11 + github.com/stretchr/testify v1.12.1 + google.golang.org/protobuf v1.36.12 ) require ( - github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect - github.com/kr/pretty v0.3.1 // indirect - github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - github.com/rogpeppe/go-internal v1.14.1 // indirect - github.com/stretchr/objx v0.5.2 // indirect - gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect - gopkg.in/yaml.v3 v3.0.1 // indirect + github.com/stretchr/objx v0.5.3 // indirect + go.yaml.in/yaml/v3 v3.0.5 // indirect ) diff --git a/go.sum b/go.sum index d32a65435..47f23bae9 100644 --- a/go.sum +++ b/go.sum @@ -1,27 +1,8 @@ -github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= -github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= -github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= -github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= -github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= -github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= -github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= -github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= -github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= -github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= -github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= -github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= -github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= -github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= -github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= -google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= -google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= -gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= -gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= -gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +github.com/stretchr/objx v0.5.3 h1:jmXUvGomnU1o3W/V5h2VEradbpJDwGrzugQQvL0POH4= +github.com/stretchr/objx v0.5.3/go.mod h1:rDQraq+vQZU7Fde9LOZLr8Tax6zZvy4kuNKF+QYS+U0= +github.com/stretchr/testify v1.12.1 h1:EuwCh5fleGS7H32xRwO3wRGT7DxrDhLAT6FF8MpWDWE= +github.com/stretchr/testify v1.12.1/go.mod h1:MDEgiDPPsNp5cuIrHPPCyornHKgEVbtFUmoNlxoYthg= +go.yaml.in/yaml/v3 v3.0.5 h1:N6y/pJk8buWs9NY5ERU2HSMfm+IuD/OtfdAnq6kESPw= +go.yaml.in/yaml/v3 v3.0.5/go.mod h1:HVTZu1O7/Vkt2N+BFy8Zza+lnLsABggaTM2ZpNIGuKg= +google.golang.org/protobuf v1.36.12 h1:pJOKDDOyeXErUroCihFAd5LQuwXBSpVnKGrj5o/fwxc= +google.golang.org/protobuf v1.36.12/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= From fd5172450b5afab1eeaf1f667f24492589c97912 Mon Sep 17 00:00:00 2001 From: yashnevatia Date: Mon, 28 Sep 2026 12:17:02 +0100 Subject: [PATCH 27/33] update mocks --- .github/workflows/CI.yaml | 2 +- .../actions/test_cre_forwarder_client_mock.go | 10 +- .../evm/height/mocks/header_provider.go | 2 +- .../contracts/mocks/cre_forwarder_client.go | 12 +- .../evm/internal/monitoring/mocks/logger.go | 2 +- .../monitoring/mocks/proto_emitter.go | 2 +- .../monitoring/mocks/proto_emitter.go | 153 ++++++ chain_capabilities/monitoring/mocks/logger.go | 2 +- .../monitoring/mocks/proto_emitter.go | 2 +- .../actions/test_cre_forwarder_client_mock.go | 13 +- .../test_transmission_info_provider_mock.go | 2 +- .../actions/test_stellar_service_mock.go | 493 ++++++++++++++++++ .../stellar/height/mocks/ledger_provider.go | 5 +- .../metrics/mocks/consensus_metrics.go | 5 +- libs/chainconsensus/mocks/handler.go | 2 +- libs/chainconsensus/mocks/poller.go | 2 +- .../oracle/mocks/blocks_provider.go | 2 +- .../oracle/mocks/requests_handler.go | 2 +- libs/chainconsensus/types/mocks/request.go | 2 +- libs/monitoring/mocks/proto_emitter.go | 2 +- 20 files changed, 687 insertions(+), 30 deletions(-) create mode 100644 chain_capabilities/internal/monitoring/mocks/proto_emitter.go create mode 100644 chain_capabilities/stellar/actions/test_stellar_service_mock.go diff --git a/.github/workflows/CI.yaml b/.github/workflows/CI.yaml index 94292802f..c0de8fdcf 100644 --- a/.github/workflows/CI.yaml +++ b/.github/workflows/CI.yaml @@ -225,7 +225,7 @@ jobs: run: ./.github/scripts/support-private-gomods.sh - name: Install mockery - run: go install github.com/vektra/mockery/v2/...@v2.53.5 + run: go install github.com/vektra/mockery/v2/...@v2.53.7 - name: Run "tidy" and "generate" run: | diff --git a/chain_capabilities/aptos/actions/test_cre_forwarder_client_mock.go b/chain_capabilities/aptos/actions/test_cre_forwarder_client_mock.go index e5f86c081..4d4da5046 100644 --- a/chain_capabilities/aptos/actions/test_cre_forwarder_client_mock.go +++ b/chain_capabilities/aptos/actions/test_cre_forwarder_client_mock.go @@ -1,15 +1,17 @@ -// Code generated by mockery v2.53.5. DO NOT EDIT. +// Code generated by mockery v2.53.7. DO NOT EDIT. package actions import ( - context "context" - aptos "github.com/aptos-labs/aptos-go-sdk" chain_capabilitiesaptos "github.com/smartcontractkit/chainlink-common/pkg/capabilities/v2/chain-capabilities/aptos" chainsaptos "github.com/smartcontractkit/chainlink-common/pkg/types/chains/aptos" - sdk "github.com/smartcontractkit/chainlink-protos/cre/go/sdk" + + context "context" + mock "github.com/stretchr/testify/mock" + + sdk "github.com/smartcontractkit/chainlink-protos/cre/go/sdk" ) // CREForwarderClient_mock is an autogenerated mock type for the CREForwarderClient type diff --git a/chain_capabilities/evm/height/mocks/header_provider.go b/chain_capabilities/evm/height/mocks/header_provider.go index ef08d068e..bff9626f7 100644 --- a/chain_capabilities/evm/height/mocks/header_provider.go +++ b/chain_capabilities/evm/height/mocks/header_provider.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.53.5. DO NOT EDIT. +// Code generated by mockery v2.53.7. DO NOT EDIT. package mocks diff --git a/chain_capabilities/evm/internal/contracts/mocks/cre_forwarder_client.go b/chain_capabilities/evm/internal/contracts/mocks/cre_forwarder_client.go index bba4a78b3..23ae404c3 100644 --- a/chain_capabilities/evm/internal/contracts/mocks/cre_forwarder_client.go +++ b/chain_capabilities/evm/internal/contracts/mocks/cre_forwarder_client.go @@ -1,16 +1,20 @@ -// Code generated by mockery v2.53.5. DO NOT EDIT. +// Code generated by mockery v2.53.7. DO NOT EDIT. package mocks import ( + common "github.com/ethereum/go-ethereum/common" + chain_capabilitiesevm "github.com/smartcontractkit/chainlink-common/pkg/capabilities/v2/chain-capabilities/evm" + context "context" - common "github.com/ethereum/go-ethereum/common" contracts "github.com/smartcontractkit/capabilities/chain_capabilities/evm/internal/contracts" - chain_capabilitiesevm "github.com/smartcontractkit/chainlink-common/pkg/capabilities/v2/chain-capabilities/evm" + evm "github.com/smartcontractkit/chainlink-common/pkg/types/chains/evm" - sdk "github.com/smartcontractkit/chainlink-protos/cre/go/sdk" + mock "github.com/stretchr/testify/mock" + + sdk "github.com/smartcontractkit/chainlink-protos/cre/go/sdk" ) // CREForwarderClient is an autogenerated mock type for the CREForwarderClient type diff --git a/chain_capabilities/evm/internal/monitoring/mocks/logger.go b/chain_capabilities/evm/internal/monitoring/mocks/logger.go index 3cee2e554..5353c21c3 100644 --- a/chain_capabilities/evm/internal/monitoring/mocks/logger.go +++ b/chain_capabilities/evm/internal/monitoring/mocks/logger.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.53.5. DO NOT EDIT. +// Code generated by mockery v2.53.7. DO NOT EDIT. package mocks diff --git a/chain_capabilities/evm/internal/monitoring/mocks/proto_emitter.go b/chain_capabilities/evm/internal/monitoring/mocks/proto_emitter.go index 7b3b33c1b..fc16314b8 100644 --- a/chain_capabilities/evm/internal/monitoring/mocks/proto_emitter.go +++ b/chain_capabilities/evm/internal/monitoring/mocks/proto_emitter.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.53.5. DO NOT EDIT. +// Code generated by mockery v2.53.7. DO NOT EDIT. package mocks diff --git a/chain_capabilities/internal/monitoring/mocks/proto_emitter.go b/chain_capabilities/internal/monitoring/mocks/proto_emitter.go new file mode 100644 index 000000000..10bafc11f --- /dev/null +++ b/chain_capabilities/internal/monitoring/mocks/proto_emitter.go @@ -0,0 +1,153 @@ +// Code generated by mockery v2.53.7. DO NOT EDIT. + +package mocks + +import ( + context "context" + + mock "github.com/stretchr/testify/mock" + proto "google.golang.org/protobuf/proto" +) + +// ProtoEmitter is an autogenerated mock type for the ProtoEmitter type +type ProtoEmitter struct { + mock.Mock +} + +type ProtoEmitter_Expecter struct { + mock *mock.Mock +} + +func (_m *ProtoEmitter) EXPECT() *ProtoEmitter_Expecter { + return &ProtoEmitter_Expecter{mock: &_m.Mock} +} + +// Emit provides a mock function with given fields: ctx, m, attrKVs +func (_m *ProtoEmitter) Emit(ctx context.Context, m proto.Message, attrKVs ...any) error { + var _ca []interface{} + _ca = append(_ca, ctx, m) + _ca = append(_ca, attrKVs...) + ret := _m.Called(_ca...) + + if len(ret) == 0 { + panic("no return value specified for Emit") + } + + var r0 error + if rf, ok := ret.Get(0).(func(context.Context, proto.Message, ...any) error); ok { + r0 = rf(ctx, m, attrKVs...) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +// ProtoEmitter_Emit_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Emit' +type ProtoEmitter_Emit_Call struct { + *mock.Call +} + +// Emit is a helper method to define mock.On call +// - ctx context.Context +// - m proto.Message +// - attrKVs ...any +func (_e *ProtoEmitter_Expecter) Emit(ctx interface{}, m interface{}, attrKVs ...interface{}) *ProtoEmitter_Emit_Call { + return &ProtoEmitter_Emit_Call{Call: _e.mock.On("Emit", + append([]interface{}{ctx, m}, attrKVs...)...)} +} + +func (_c *ProtoEmitter_Emit_Call) Run(run func(ctx context.Context, m proto.Message, attrKVs ...any)) *ProtoEmitter_Emit_Call { + _c.Call.Run(func(args mock.Arguments) { + variadicArgs := make([]any, len(args)-2) + for i, a := range args[2:] { + if a != nil { + variadicArgs[i] = a.(any) + } + } + run(args[0].(context.Context), args[1].(proto.Message), variadicArgs...) + }) + return _c +} + +func (_c *ProtoEmitter_Emit_Call) Return(_a0 error) *ProtoEmitter_Emit_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *ProtoEmitter_Emit_Call) RunAndReturn(run func(context.Context, proto.Message, ...any) error) *ProtoEmitter_Emit_Call { + _c.Call.Return(run) + return _c +} + +// EmitWithLog provides a mock function with given fields: ctx, m, attrKVs +func (_m *ProtoEmitter) EmitWithLog(ctx context.Context, m proto.Message, attrKVs ...any) error { + var _ca []interface{} + _ca = append(_ca, ctx, m) + _ca = append(_ca, attrKVs...) + ret := _m.Called(_ca...) + + if len(ret) == 0 { + panic("no return value specified for EmitWithLog") + } + + var r0 error + if rf, ok := ret.Get(0).(func(context.Context, proto.Message, ...any) error); ok { + r0 = rf(ctx, m, attrKVs...) + } else { + r0 = ret.Error(0) + } + + return r0 +} + +// ProtoEmitter_EmitWithLog_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'EmitWithLog' +type ProtoEmitter_EmitWithLog_Call struct { + *mock.Call +} + +// EmitWithLog is a helper method to define mock.On call +// - ctx context.Context +// - m proto.Message +// - attrKVs ...any +func (_e *ProtoEmitter_Expecter) EmitWithLog(ctx interface{}, m interface{}, attrKVs ...interface{}) *ProtoEmitter_EmitWithLog_Call { + return &ProtoEmitter_EmitWithLog_Call{Call: _e.mock.On("EmitWithLog", + append([]interface{}{ctx, m}, attrKVs...)...)} +} + +func (_c *ProtoEmitter_EmitWithLog_Call) Run(run func(ctx context.Context, m proto.Message, attrKVs ...any)) *ProtoEmitter_EmitWithLog_Call { + _c.Call.Run(func(args mock.Arguments) { + variadicArgs := make([]any, len(args)-2) + for i, a := range args[2:] { + if a != nil { + variadicArgs[i] = a.(any) + } + } + run(args[0].(context.Context), args[1].(proto.Message), variadicArgs...) + }) + return _c +} + +func (_c *ProtoEmitter_EmitWithLog_Call) Return(_a0 error) *ProtoEmitter_EmitWithLog_Call { + _c.Call.Return(_a0) + return _c +} + +func (_c *ProtoEmitter_EmitWithLog_Call) RunAndReturn(run func(context.Context, proto.Message, ...any) error) *ProtoEmitter_EmitWithLog_Call { + _c.Call.Return(run) + return _c +} + +// NewProtoEmitter creates a new instance of ProtoEmitter. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. +// The first argument is typically a *testing.T value. +func NewProtoEmitter(t interface { + mock.TestingT + Cleanup(func()) +}) *ProtoEmitter { + mock := &ProtoEmitter{} + mock.Mock.Test(t) + + t.Cleanup(func() { mock.AssertExpectations(t) }) + + return mock +} diff --git a/chain_capabilities/monitoring/mocks/logger.go b/chain_capabilities/monitoring/mocks/logger.go index 3cee2e554..5353c21c3 100644 --- a/chain_capabilities/monitoring/mocks/logger.go +++ b/chain_capabilities/monitoring/mocks/logger.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.53.5. DO NOT EDIT. +// Code generated by mockery v2.53.7. DO NOT EDIT. package mocks diff --git a/chain_capabilities/monitoring/mocks/proto_emitter.go b/chain_capabilities/monitoring/mocks/proto_emitter.go index 7b3b33c1b..fc16314b8 100644 --- a/chain_capabilities/monitoring/mocks/proto_emitter.go +++ b/chain_capabilities/monitoring/mocks/proto_emitter.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.53.5. DO NOT EDIT. +// Code generated by mockery v2.53.7. DO NOT EDIT. package mocks diff --git a/chain_capabilities/solana/actions/test_cre_forwarder_client_mock.go b/chain_capabilities/solana/actions/test_cre_forwarder_client_mock.go index 0d5f7fccf..d0579f0e2 100644 --- a/chain_capabilities/solana/actions/test_cre_forwarder_client_mock.go +++ b/chain_capabilities/solana/actions/test_cre_forwarder_client_mock.go @@ -1,15 +1,18 @@ -// Code generated by mockery v2.53.5. DO NOT EDIT. +// Code generated by mockery v2.53.7. DO NOT EDIT. package actions import ( - context "context" - - solana "github.com/gagliardetto/solana-go" chain_capabilitiessolana "github.com/smartcontractkit/chainlink-common/pkg/capabilities/v2/chain-capabilities/solana" chainssolana "github.com/smartcontractkit/chainlink-common/pkg/types/chains/solana" - sdk "github.com/smartcontractkit/chainlink-protos/cre/go/sdk" + + context "context" + mock "github.com/stretchr/testify/mock" + + sdk "github.com/smartcontractkit/chainlink-protos/cre/go/sdk" + + solana "github.com/gagliardetto/solana-go" ) // CREForwarderClient_mock is an autogenerated mock type for the CREForwarderClient type diff --git a/chain_capabilities/solana/actions/test_transmission_info_provider_mock.go b/chain_capabilities/solana/actions/test_transmission_info_provider_mock.go index 30a5425dd..310274a35 100644 --- a/chain_capabilities/solana/actions/test_transmission_info_provider_mock.go +++ b/chain_capabilities/solana/actions/test_transmission_info_provider_mock.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.53.5. DO NOT EDIT. +// Code generated by mockery v2.53.7. DO NOT EDIT. package actions diff --git a/chain_capabilities/stellar/actions/test_stellar_service_mock.go b/chain_capabilities/stellar/actions/test_stellar_service_mock.go new file mode 100644 index 000000000..32152712c --- /dev/null +++ b/chain_capabilities/stellar/actions/test_stellar_service_mock.go @@ -0,0 +1,493 @@ +// Code generated by mockery v2.53.7. DO NOT EDIT. + +package types + +import ( + context "context" + + stellar "github.com/smartcontractkit/chainlink-common/pkg/types/chains/stellar" + mock "github.com/stretchr/testify/mock" +) + +// StellarService_mock is an autogenerated mock type for the StellarService type +type StellarService_mock struct { + mock.Mock +} + +type StellarService_mock_Expecter struct { + mock *mock.Mock +} + +func (_m *StellarService_mock) EXPECT() *StellarService_mock_Expecter { + return &StellarService_mock_Expecter{mock: &_m.Mock} +} + +// GetEvents provides a mock function with given fields: ctx, req +func (_m *StellarService_mock) GetEvents(ctx context.Context, req stellar.GetEventsRequest) (stellar.GetEventsResponse, error) { + ret := _m.Called(ctx, req) + + if len(ret) == 0 { + panic("no return value specified for GetEvents") + } + + var r0 stellar.GetEventsResponse + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, stellar.GetEventsRequest) (stellar.GetEventsResponse, error)); ok { + return rf(ctx, req) + } + if rf, ok := ret.Get(0).(func(context.Context, stellar.GetEventsRequest) stellar.GetEventsResponse); ok { + r0 = rf(ctx, req) + } else { + r0 = ret.Get(0).(stellar.GetEventsResponse) + } + + if rf, ok := ret.Get(1).(func(context.Context, stellar.GetEventsRequest) error); ok { + r1 = rf(ctx, req) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// StellarService_mock_GetEvents_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'GetEvents' +type StellarService_mock_GetEvents_Call struct { + *mock.Call +} + +// GetEvents is a helper method to define mock.On call +// - ctx context.Context +// - req stellar.GetEventsRequest +func (_e *StellarService_mock_Expecter) GetEvents(ctx interface{}, req interface{}) *StellarService_mock_GetEvents_Call { + return &StellarService_mock_GetEvents_Call{Call: _e.mock.On("GetEvents", ctx, req)} +} + +func (_c *StellarService_mock_GetEvents_Call) Run(run func(ctx context.Context, req stellar.GetEventsRequest)) *StellarService_mock_GetEvents_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(stellar.GetEventsRequest)) + }) + return _c +} + +func (_c *StellarService_mock_GetEvents_Call) Return(_a0 stellar.GetEventsResponse, _a1 error) *StellarService_mock_GetEvents_Call { + _c.Call.Return(_a0, _a1) + return _c +} + +func (_c *StellarService_mock_GetEvents_Call) RunAndReturn(run func(context.Context, stellar.GetEventsRequest) (stellar.GetEventsResponse, error)) *StellarService_mock_GetEvents_Call { + _c.Call.Return(run) + return _c +} + +// GetLatestLedger provides a mock function with given fields: ctx +func (_m *StellarService_mock) GetLatestLedger(ctx context.Context) (stellar.GetLatestLedgerResponse, error) { + ret := _m.Called(ctx) + + if len(ret) == 0 { + panic("no return value specified for GetLatestLedger") + } + + var r0 stellar.GetLatestLedgerResponse + var r1 error + if rf, ok := ret.Get(0).(func(context.Context) (stellar.GetLatestLedgerResponse, error)); ok { + return rf(ctx) + } + if rf, ok := ret.Get(0).(func(context.Context) stellar.GetLatestLedgerResponse); ok { + r0 = rf(ctx) + } else { + r0 = ret.Get(0).(stellar.GetLatestLedgerResponse) + } + + if rf, ok := ret.Get(1).(func(context.Context) error); ok { + r1 = rf(ctx) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// StellarService_mock_GetLatestLedger_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'GetLatestLedger' +type StellarService_mock_GetLatestLedger_Call struct { + *mock.Call +} + +// GetLatestLedger is a helper method to define mock.On call +// - ctx context.Context +func (_e *StellarService_mock_Expecter) GetLatestLedger(ctx interface{}) *StellarService_mock_GetLatestLedger_Call { + return &StellarService_mock_GetLatestLedger_Call{Call: _e.mock.On("GetLatestLedger", ctx)} +} + +func (_c *StellarService_mock_GetLatestLedger_Call) Run(run func(ctx context.Context)) *StellarService_mock_GetLatestLedger_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context)) + }) + return _c +} + +func (_c *StellarService_mock_GetLatestLedger_Call) Return(_a0 stellar.GetLatestLedgerResponse, _a1 error) *StellarService_mock_GetLatestLedger_Call { + _c.Call.Return(_a0, _a1) + return _c +} + +func (_c *StellarService_mock_GetLatestLedger_Call) RunAndReturn(run func(context.Context) (stellar.GetLatestLedgerResponse, error)) *StellarService_mock_GetLatestLedger_Call { + _c.Call.Return(run) + return _c +} + +// GetLedgerEntries provides a mock function with given fields: ctx, req +func (_m *StellarService_mock) GetLedgerEntries(ctx context.Context, req stellar.GetLedgerEntriesRequest) (stellar.GetLedgerEntriesResponse, error) { + ret := _m.Called(ctx, req) + + if len(ret) == 0 { + panic("no return value specified for GetLedgerEntries") + } + + var r0 stellar.GetLedgerEntriesResponse + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, stellar.GetLedgerEntriesRequest) (stellar.GetLedgerEntriesResponse, error)); ok { + return rf(ctx, req) + } + if rf, ok := ret.Get(0).(func(context.Context, stellar.GetLedgerEntriesRequest) stellar.GetLedgerEntriesResponse); ok { + r0 = rf(ctx, req) + } else { + r0 = ret.Get(0).(stellar.GetLedgerEntriesResponse) + } + + if rf, ok := ret.Get(1).(func(context.Context, stellar.GetLedgerEntriesRequest) error); ok { + r1 = rf(ctx, req) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// StellarService_mock_GetLedgerEntries_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'GetLedgerEntries' +type StellarService_mock_GetLedgerEntries_Call struct { + *mock.Call +} + +// GetLedgerEntries is a helper method to define mock.On call +// - ctx context.Context +// - req stellar.GetLedgerEntriesRequest +func (_e *StellarService_mock_Expecter) GetLedgerEntries(ctx interface{}, req interface{}) *StellarService_mock_GetLedgerEntries_Call { + return &StellarService_mock_GetLedgerEntries_Call{Call: _e.mock.On("GetLedgerEntries", ctx, req)} +} + +func (_c *StellarService_mock_GetLedgerEntries_Call) Run(run func(ctx context.Context, req stellar.GetLedgerEntriesRequest)) *StellarService_mock_GetLedgerEntries_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(stellar.GetLedgerEntriesRequest)) + }) + return _c +} + +func (_c *StellarService_mock_GetLedgerEntries_Call) Return(_a0 stellar.GetLedgerEntriesResponse, _a1 error) *StellarService_mock_GetLedgerEntries_Call { + _c.Call.Return(_a0, _a1) + return _c +} + +func (_c *StellarService_mock_GetLedgerEntries_Call) RunAndReturn(run func(context.Context, stellar.GetLedgerEntriesRequest) (stellar.GetLedgerEntriesResponse, error)) *StellarService_mock_GetLedgerEntries_Call { + _c.Call.Return(run) + return _c +} + +// GetLedgers provides a mock function with given fields: ctx, req +func (_m *StellarService_mock) GetLedgers(ctx context.Context, req stellar.GetLedgersRequest) (stellar.GetLedgersResponse, error) { + ret := _m.Called(ctx, req) + + if len(ret) == 0 { + panic("no return value specified for GetLedgers") + } + + var r0 stellar.GetLedgersResponse + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, stellar.GetLedgersRequest) (stellar.GetLedgersResponse, error)); ok { + return rf(ctx, req) + } + if rf, ok := ret.Get(0).(func(context.Context, stellar.GetLedgersRequest) stellar.GetLedgersResponse); ok { + r0 = rf(ctx, req) + } else { + r0 = ret.Get(0).(stellar.GetLedgersResponse) + } + + if rf, ok := ret.Get(1).(func(context.Context, stellar.GetLedgersRequest) error); ok { + r1 = rf(ctx, req) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// StellarService_mock_GetLedgers_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'GetLedgers' +type StellarService_mock_GetLedgers_Call struct { + *mock.Call +} + +// GetLedgers is a helper method to define mock.On call +// - ctx context.Context +// - req stellar.GetLedgersRequest +func (_e *StellarService_mock_Expecter) GetLedgers(ctx interface{}, req interface{}) *StellarService_mock_GetLedgers_Call { + return &StellarService_mock_GetLedgers_Call{Call: _e.mock.On("GetLedgers", ctx, req)} +} + +func (_c *StellarService_mock_GetLedgers_Call) Run(run func(ctx context.Context, req stellar.GetLedgersRequest)) *StellarService_mock_GetLedgers_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(stellar.GetLedgersRequest)) + }) + return _c +} + +func (_c *StellarService_mock_GetLedgers_Call) Return(_a0 stellar.GetLedgersResponse, _a1 error) *StellarService_mock_GetLedgers_Call { + _c.Call.Return(_a0, _a1) + return _c +} + +func (_c *StellarService_mock_GetLedgers_Call) RunAndReturn(run func(context.Context, stellar.GetLedgersRequest) (stellar.GetLedgersResponse, error)) *StellarService_mock_GetLedgers_Call { + _c.Call.Return(run) + return _c +} + +// GetSigningAccount provides a mock function with given fields: ctx +func (_m *StellarService_mock) GetSigningAccount(ctx context.Context) (stellar.GetSigningAccountResponse, error) { + ret := _m.Called(ctx) + + if len(ret) == 0 { + panic("no return value specified for GetSigningAccount") + } + + var r0 stellar.GetSigningAccountResponse + var r1 error + if rf, ok := ret.Get(0).(func(context.Context) (stellar.GetSigningAccountResponse, error)); ok { + return rf(ctx) + } + if rf, ok := ret.Get(0).(func(context.Context) stellar.GetSigningAccountResponse); ok { + r0 = rf(ctx) + } else { + r0 = ret.Get(0).(stellar.GetSigningAccountResponse) + } + + if rf, ok := ret.Get(1).(func(context.Context) error); ok { + r1 = rf(ctx) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// StellarService_mock_GetSigningAccount_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'GetSigningAccount' +type StellarService_mock_GetSigningAccount_Call struct { + *mock.Call +} + +// GetSigningAccount is a helper method to define mock.On call +// - ctx context.Context +func (_e *StellarService_mock_Expecter) GetSigningAccount(ctx interface{}) *StellarService_mock_GetSigningAccount_Call { + return &StellarService_mock_GetSigningAccount_Call{Call: _e.mock.On("GetSigningAccount", ctx)} +} + +func (_c *StellarService_mock_GetSigningAccount_Call) Run(run func(ctx context.Context)) *StellarService_mock_GetSigningAccount_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context)) + }) + return _c +} + +func (_c *StellarService_mock_GetSigningAccount_Call) Return(_a0 stellar.GetSigningAccountResponse, _a1 error) *StellarService_mock_GetSigningAccount_Call { + _c.Call.Return(_a0, _a1) + return _c +} + +func (_c *StellarService_mock_GetSigningAccount_Call) RunAndReturn(run func(context.Context) (stellar.GetSigningAccountResponse, error)) *StellarService_mock_GetSigningAccount_Call { + _c.Call.Return(run) + return _c +} + +// GetTransaction provides a mock function with given fields: ctx, req +func (_m *StellarService_mock) GetTransaction(ctx context.Context, req stellar.GetTransactionRequest) (stellar.GetTransactionResponse, error) { + ret := _m.Called(ctx, req) + + if len(ret) == 0 { + panic("no return value specified for GetTransaction") + } + + var r0 stellar.GetTransactionResponse + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, stellar.GetTransactionRequest) (stellar.GetTransactionResponse, error)); ok { + return rf(ctx, req) + } + if rf, ok := ret.Get(0).(func(context.Context, stellar.GetTransactionRequest) stellar.GetTransactionResponse); ok { + r0 = rf(ctx, req) + } else { + r0 = ret.Get(0).(stellar.GetTransactionResponse) + } + + if rf, ok := ret.Get(1).(func(context.Context, stellar.GetTransactionRequest) error); ok { + r1 = rf(ctx, req) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// StellarService_mock_GetTransaction_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'GetTransaction' +type StellarService_mock_GetTransaction_Call struct { + *mock.Call +} + +// GetTransaction is a helper method to define mock.On call +// - ctx context.Context +// - req stellar.GetTransactionRequest +func (_e *StellarService_mock_Expecter) GetTransaction(ctx interface{}, req interface{}) *StellarService_mock_GetTransaction_Call { + return &StellarService_mock_GetTransaction_Call{Call: _e.mock.On("GetTransaction", ctx, req)} +} + +func (_c *StellarService_mock_GetTransaction_Call) Run(run func(ctx context.Context, req stellar.GetTransactionRequest)) *StellarService_mock_GetTransaction_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(stellar.GetTransactionRequest)) + }) + return _c +} + +func (_c *StellarService_mock_GetTransaction_Call) Return(_a0 stellar.GetTransactionResponse, _a1 error) *StellarService_mock_GetTransaction_Call { + _c.Call.Return(_a0, _a1) + return _c +} + +func (_c *StellarService_mock_GetTransaction_Call) RunAndReturn(run func(context.Context, stellar.GetTransactionRequest) (stellar.GetTransactionResponse, error)) *StellarService_mock_GetTransaction_Call { + _c.Call.Return(run) + return _c +} + +// SimulateTransaction provides a mock function with given fields: ctx, req +func (_m *StellarService_mock) SimulateTransaction(ctx context.Context, req stellar.SimulateTransactionRequest) (stellar.SimulateTransactionResponse, error) { + ret := _m.Called(ctx, req) + + if len(ret) == 0 { + panic("no return value specified for SimulateTransaction") + } + + var r0 stellar.SimulateTransactionResponse + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, stellar.SimulateTransactionRequest) (stellar.SimulateTransactionResponse, error)); ok { + return rf(ctx, req) + } + if rf, ok := ret.Get(0).(func(context.Context, stellar.SimulateTransactionRequest) stellar.SimulateTransactionResponse); ok { + r0 = rf(ctx, req) + } else { + r0 = ret.Get(0).(stellar.SimulateTransactionResponse) + } + + if rf, ok := ret.Get(1).(func(context.Context, stellar.SimulateTransactionRequest) error); ok { + r1 = rf(ctx, req) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// StellarService_mock_SimulateTransaction_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'SimulateTransaction' +type StellarService_mock_SimulateTransaction_Call struct { + *mock.Call +} + +// SimulateTransaction is a helper method to define mock.On call +// - ctx context.Context +// - req stellar.SimulateTransactionRequest +func (_e *StellarService_mock_Expecter) SimulateTransaction(ctx interface{}, req interface{}) *StellarService_mock_SimulateTransaction_Call { + return &StellarService_mock_SimulateTransaction_Call{Call: _e.mock.On("SimulateTransaction", ctx, req)} +} + +func (_c *StellarService_mock_SimulateTransaction_Call) Run(run func(ctx context.Context, req stellar.SimulateTransactionRequest)) *StellarService_mock_SimulateTransaction_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(stellar.SimulateTransactionRequest)) + }) + return _c +} + +func (_c *StellarService_mock_SimulateTransaction_Call) Return(_a0 stellar.SimulateTransactionResponse, _a1 error) *StellarService_mock_SimulateTransaction_Call { + _c.Call.Return(_a0, _a1) + return _c +} + +func (_c *StellarService_mock_SimulateTransaction_Call) RunAndReturn(run func(context.Context, stellar.SimulateTransactionRequest) (stellar.SimulateTransactionResponse, error)) *StellarService_mock_SimulateTransaction_Call { + _c.Call.Return(run) + return _c +} + +// SubmitTransaction provides a mock function with given fields: ctx, req +func (_m *StellarService_mock) SubmitTransaction(ctx context.Context, req stellar.SubmitTransactionRequest) (*stellar.SubmitTransactionResponse, error) { + ret := _m.Called(ctx, req) + + if len(ret) == 0 { + panic("no return value specified for SubmitTransaction") + } + + var r0 *stellar.SubmitTransactionResponse + var r1 error + if rf, ok := ret.Get(0).(func(context.Context, stellar.SubmitTransactionRequest) (*stellar.SubmitTransactionResponse, error)); ok { + return rf(ctx, req) + } + if rf, ok := ret.Get(0).(func(context.Context, stellar.SubmitTransactionRequest) *stellar.SubmitTransactionResponse); ok { + r0 = rf(ctx, req) + } else { + if ret.Get(0) != nil { + r0 = ret.Get(0).(*stellar.SubmitTransactionResponse) + } + } + + if rf, ok := ret.Get(1).(func(context.Context, stellar.SubmitTransactionRequest) error); ok { + r1 = rf(ctx, req) + } else { + r1 = ret.Error(1) + } + + return r0, r1 +} + +// StellarService_mock_SubmitTransaction_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'SubmitTransaction' +type StellarService_mock_SubmitTransaction_Call struct { + *mock.Call +} + +// SubmitTransaction is a helper method to define mock.On call +// - ctx context.Context +// - req stellar.SubmitTransactionRequest +func (_e *StellarService_mock_Expecter) SubmitTransaction(ctx interface{}, req interface{}) *StellarService_mock_SubmitTransaction_Call { + return &StellarService_mock_SubmitTransaction_Call{Call: _e.mock.On("SubmitTransaction", ctx, req)} +} + +func (_c *StellarService_mock_SubmitTransaction_Call) Run(run func(ctx context.Context, req stellar.SubmitTransactionRequest)) *StellarService_mock_SubmitTransaction_Call { + _c.Call.Run(func(args mock.Arguments) { + run(args[0].(context.Context), args[1].(stellar.SubmitTransactionRequest)) + }) + return _c +} + +func (_c *StellarService_mock_SubmitTransaction_Call) Return(_a0 *stellar.SubmitTransactionResponse, _a1 error) *StellarService_mock_SubmitTransaction_Call { + _c.Call.Return(_a0, _a1) + return _c +} + +func (_c *StellarService_mock_SubmitTransaction_Call) RunAndReturn(run func(context.Context, stellar.SubmitTransactionRequest) (*stellar.SubmitTransactionResponse, error)) *StellarService_mock_SubmitTransaction_Call { + _c.Call.Return(run) + return _c +} + +// NewStellarService_mock creates a new instance of StellarService_mock. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. +// The first argument is typically a *testing.T value. +func NewStellarService_mock(t interface { + mock.TestingT + Cleanup(func()) +}) *StellarService_mock { + mock := &StellarService_mock{} + mock.Mock.Test(t) + + t.Cleanup(func() { mock.AssertExpectations(t) }) + + return mock +} diff --git a/chain_capabilities/stellar/height/mocks/ledger_provider.go b/chain_capabilities/stellar/height/mocks/ledger_provider.go index 03c5b3000..6ee4bfe2d 100644 --- a/chain_capabilities/stellar/height/mocks/ledger_provider.go +++ b/chain_capabilities/stellar/height/mocks/ledger_provider.go @@ -1,12 +1,13 @@ -// Code generated by mockery v2.53.5. DO NOT EDIT. +// Code generated by mockery v2.53.7. DO NOT EDIT. package mocks import ( context "context" - stellar "github.com/smartcontractkit/chainlink-common/pkg/types/chains/stellar" mock "github.com/stretchr/testify/mock" + + stellar "github.com/smartcontractkit/chainlink-common/pkg/types/chains/stellar" ) // LedgerProvider is an autogenerated mock type for the LedgerProvider type diff --git a/libs/chainconsensus/metrics/mocks/consensus_metrics.go b/libs/chainconsensus/metrics/mocks/consensus_metrics.go index 12c0102b2..a4160d65c 100644 --- a/libs/chainconsensus/metrics/mocks/consensus_metrics.go +++ b/libs/chainconsensus/metrics/mocks/consensus_metrics.go @@ -1,12 +1,13 @@ -// Code generated by mockery v2.53.5. DO NOT EDIT. +// Code generated by mockery v2.53.7. DO NOT EDIT. package mocks import ( context "context" - types "github.com/smartcontractkit/capabilities/libs/chainconsensus/types" mock "github.com/stretchr/testify/mock" + + types "github.com/smartcontractkit/capabilities/libs/chainconsensus/types" ) // ConsensusMetrics is an autogenerated mock type for the ConsensusMetrics type diff --git a/libs/chainconsensus/mocks/handler.go b/libs/chainconsensus/mocks/handler.go index a9ceb264f..7560f4e61 100644 --- a/libs/chainconsensus/mocks/handler.go +++ b/libs/chainconsensus/mocks/handler.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.53.5. DO NOT EDIT. +// Code generated by mockery v2.53.7. DO NOT EDIT. package mocks diff --git a/libs/chainconsensus/mocks/poller.go b/libs/chainconsensus/mocks/poller.go index 824b382da..3db5a7135 100644 --- a/libs/chainconsensus/mocks/poller.go +++ b/libs/chainconsensus/mocks/poller.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.53.5. DO NOT EDIT. +// Code generated by mockery v2.53.7. DO NOT EDIT. package mocks diff --git a/libs/chainconsensus/oracle/mocks/blocks_provider.go b/libs/chainconsensus/oracle/mocks/blocks_provider.go index 71d07d5c6..91cb79520 100644 --- a/libs/chainconsensus/oracle/mocks/blocks_provider.go +++ b/libs/chainconsensus/oracle/mocks/blocks_provider.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.53.5. DO NOT EDIT. +// Code generated by mockery v2.53.7. DO NOT EDIT. package mocks diff --git a/libs/chainconsensus/oracle/mocks/requests_handler.go b/libs/chainconsensus/oracle/mocks/requests_handler.go index 8b13391df..f709d3b08 100644 --- a/libs/chainconsensus/oracle/mocks/requests_handler.go +++ b/libs/chainconsensus/oracle/mocks/requests_handler.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.53.5. DO NOT EDIT. +// Code generated by mockery v2.53.7. DO NOT EDIT. package mocks diff --git a/libs/chainconsensus/types/mocks/request.go b/libs/chainconsensus/types/mocks/request.go index 90d367ebd..7b74adfab 100644 --- a/libs/chainconsensus/types/mocks/request.go +++ b/libs/chainconsensus/types/mocks/request.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.53.5. DO NOT EDIT. +// Code generated by mockery v2.53.7. DO NOT EDIT. package mocks diff --git a/libs/monitoring/mocks/proto_emitter.go b/libs/monitoring/mocks/proto_emitter.go index 7b3b33c1b..fc16314b8 100644 --- a/libs/monitoring/mocks/proto_emitter.go +++ b/libs/monitoring/mocks/proto_emitter.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.53.5. DO NOT EDIT. +// Code generated by mockery v2.53.7. DO NOT EDIT. package mocks From 6d4117c3e04b37200b477fe1a778c1dd90121536 Mon Sep 17 00:00:00 2001 From: yashnevatia Date: Mon, 28 Sep 2026 12:23:55 +0100 Subject: [PATCH 28/33] remove stellar service mock declaration --- chain_capabilities/stellar/.mockery.yaml | 9 - .../actions/test_stellar_service_mock.go | 493 ------------------ 2 files changed, 502 deletions(-) delete mode 100644 chain_capabilities/stellar/actions/test_stellar_service_mock.go diff --git a/chain_capabilities/stellar/.mockery.yaml b/chain_capabilities/stellar/.mockery.yaml index 48ab605ad..1d90b61b7 100644 --- a/chain_capabilities/stellar/.mockery.yaml +++ b/chain_capabilities/stellar/.mockery.yaml @@ -6,15 +6,6 @@ filename: "test_{{ .InterfaceName | snakecase }}_mock.go" fail-on-missing: true resolve-type-alias: false packages: - github.com/smartcontractkit/chainlink-common/pkg/types: - config: - dir: actions - mockname: "StellarService_mock" - outpkg: actions - inpackage: true - filename: "test_stellar_service_mock.go" - interfaces: - StellarService: github.com/smartcontractkit/capabilities/chain_capabilities/stellar/height: config: dir: "{{ .InterfaceDir }}/mocks" diff --git a/chain_capabilities/stellar/actions/test_stellar_service_mock.go b/chain_capabilities/stellar/actions/test_stellar_service_mock.go deleted file mode 100644 index 32152712c..000000000 --- a/chain_capabilities/stellar/actions/test_stellar_service_mock.go +++ /dev/null @@ -1,493 +0,0 @@ -// Code generated by mockery v2.53.7. DO NOT EDIT. - -package types - -import ( - context "context" - - stellar "github.com/smartcontractkit/chainlink-common/pkg/types/chains/stellar" - mock "github.com/stretchr/testify/mock" -) - -// StellarService_mock is an autogenerated mock type for the StellarService type -type StellarService_mock struct { - mock.Mock -} - -type StellarService_mock_Expecter struct { - mock *mock.Mock -} - -func (_m *StellarService_mock) EXPECT() *StellarService_mock_Expecter { - return &StellarService_mock_Expecter{mock: &_m.Mock} -} - -// GetEvents provides a mock function with given fields: ctx, req -func (_m *StellarService_mock) GetEvents(ctx context.Context, req stellar.GetEventsRequest) (stellar.GetEventsResponse, error) { - ret := _m.Called(ctx, req) - - if len(ret) == 0 { - panic("no return value specified for GetEvents") - } - - var r0 stellar.GetEventsResponse - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, stellar.GetEventsRequest) (stellar.GetEventsResponse, error)); ok { - return rf(ctx, req) - } - if rf, ok := ret.Get(0).(func(context.Context, stellar.GetEventsRequest) stellar.GetEventsResponse); ok { - r0 = rf(ctx, req) - } else { - r0 = ret.Get(0).(stellar.GetEventsResponse) - } - - if rf, ok := ret.Get(1).(func(context.Context, stellar.GetEventsRequest) error); ok { - r1 = rf(ctx, req) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// StellarService_mock_GetEvents_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'GetEvents' -type StellarService_mock_GetEvents_Call struct { - *mock.Call -} - -// GetEvents is a helper method to define mock.On call -// - ctx context.Context -// - req stellar.GetEventsRequest -func (_e *StellarService_mock_Expecter) GetEvents(ctx interface{}, req interface{}) *StellarService_mock_GetEvents_Call { - return &StellarService_mock_GetEvents_Call{Call: _e.mock.On("GetEvents", ctx, req)} -} - -func (_c *StellarService_mock_GetEvents_Call) Run(run func(ctx context.Context, req stellar.GetEventsRequest)) *StellarService_mock_GetEvents_Call { - _c.Call.Run(func(args mock.Arguments) { - run(args[0].(context.Context), args[1].(stellar.GetEventsRequest)) - }) - return _c -} - -func (_c *StellarService_mock_GetEvents_Call) Return(_a0 stellar.GetEventsResponse, _a1 error) *StellarService_mock_GetEvents_Call { - _c.Call.Return(_a0, _a1) - return _c -} - -func (_c *StellarService_mock_GetEvents_Call) RunAndReturn(run func(context.Context, stellar.GetEventsRequest) (stellar.GetEventsResponse, error)) *StellarService_mock_GetEvents_Call { - _c.Call.Return(run) - return _c -} - -// GetLatestLedger provides a mock function with given fields: ctx -func (_m *StellarService_mock) GetLatestLedger(ctx context.Context) (stellar.GetLatestLedgerResponse, error) { - ret := _m.Called(ctx) - - if len(ret) == 0 { - panic("no return value specified for GetLatestLedger") - } - - var r0 stellar.GetLatestLedgerResponse - var r1 error - if rf, ok := ret.Get(0).(func(context.Context) (stellar.GetLatestLedgerResponse, error)); ok { - return rf(ctx) - } - if rf, ok := ret.Get(0).(func(context.Context) stellar.GetLatestLedgerResponse); ok { - r0 = rf(ctx) - } else { - r0 = ret.Get(0).(stellar.GetLatestLedgerResponse) - } - - if rf, ok := ret.Get(1).(func(context.Context) error); ok { - r1 = rf(ctx) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// StellarService_mock_GetLatestLedger_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'GetLatestLedger' -type StellarService_mock_GetLatestLedger_Call struct { - *mock.Call -} - -// GetLatestLedger is a helper method to define mock.On call -// - ctx context.Context -func (_e *StellarService_mock_Expecter) GetLatestLedger(ctx interface{}) *StellarService_mock_GetLatestLedger_Call { - return &StellarService_mock_GetLatestLedger_Call{Call: _e.mock.On("GetLatestLedger", ctx)} -} - -func (_c *StellarService_mock_GetLatestLedger_Call) Run(run func(ctx context.Context)) *StellarService_mock_GetLatestLedger_Call { - _c.Call.Run(func(args mock.Arguments) { - run(args[0].(context.Context)) - }) - return _c -} - -func (_c *StellarService_mock_GetLatestLedger_Call) Return(_a0 stellar.GetLatestLedgerResponse, _a1 error) *StellarService_mock_GetLatestLedger_Call { - _c.Call.Return(_a0, _a1) - return _c -} - -func (_c *StellarService_mock_GetLatestLedger_Call) RunAndReturn(run func(context.Context) (stellar.GetLatestLedgerResponse, error)) *StellarService_mock_GetLatestLedger_Call { - _c.Call.Return(run) - return _c -} - -// GetLedgerEntries provides a mock function with given fields: ctx, req -func (_m *StellarService_mock) GetLedgerEntries(ctx context.Context, req stellar.GetLedgerEntriesRequest) (stellar.GetLedgerEntriesResponse, error) { - ret := _m.Called(ctx, req) - - if len(ret) == 0 { - panic("no return value specified for GetLedgerEntries") - } - - var r0 stellar.GetLedgerEntriesResponse - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, stellar.GetLedgerEntriesRequest) (stellar.GetLedgerEntriesResponse, error)); ok { - return rf(ctx, req) - } - if rf, ok := ret.Get(0).(func(context.Context, stellar.GetLedgerEntriesRequest) stellar.GetLedgerEntriesResponse); ok { - r0 = rf(ctx, req) - } else { - r0 = ret.Get(0).(stellar.GetLedgerEntriesResponse) - } - - if rf, ok := ret.Get(1).(func(context.Context, stellar.GetLedgerEntriesRequest) error); ok { - r1 = rf(ctx, req) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// StellarService_mock_GetLedgerEntries_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'GetLedgerEntries' -type StellarService_mock_GetLedgerEntries_Call struct { - *mock.Call -} - -// GetLedgerEntries is a helper method to define mock.On call -// - ctx context.Context -// - req stellar.GetLedgerEntriesRequest -func (_e *StellarService_mock_Expecter) GetLedgerEntries(ctx interface{}, req interface{}) *StellarService_mock_GetLedgerEntries_Call { - return &StellarService_mock_GetLedgerEntries_Call{Call: _e.mock.On("GetLedgerEntries", ctx, req)} -} - -func (_c *StellarService_mock_GetLedgerEntries_Call) Run(run func(ctx context.Context, req stellar.GetLedgerEntriesRequest)) *StellarService_mock_GetLedgerEntries_Call { - _c.Call.Run(func(args mock.Arguments) { - run(args[0].(context.Context), args[1].(stellar.GetLedgerEntriesRequest)) - }) - return _c -} - -func (_c *StellarService_mock_GetLedgerEntries_Call) Return(_a0 stellar.GetLedgerEntriesResponse, _a1 error) *StellarService_mock_GetLedgerEntries_Call { - _c.Call.Return(_a0, _a1) - return _c -} - -func (_c *StellarService_mock_GetLedgerEntries_Call) RunAndReturn(run func(context.Context, stellar.GetLedgerEntriesRequest) (stellar.GetLedgerEntriesResponse, error)) *StellarService_mock_GetLedgerEntries_Call { - _c.Call.Return(run) - return _c -} - -// GetLedgers provides a mock function with given fields: ctx, req -func (_m *StellarService_mock) GetLedgers(ctx context.Context, req stellar.GetLedgersRequest) (stellar.GetLedgersResponse, error) { - ret := _m.Called(ctx, req) - - if len(ret) == 0 { - panic("no return value specified for GetLedgers") - } - - var r0 stellar.GetLedgersResponse - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, stellar.GetLedgersRequest) (stellar.GetLedgersResponse, error)); ok { - return rf(ctx, req) - } - if rf, ok := ret.Get(0).(func(context.Context, stellar.GetLedgersRequest) stellar.GetLedgersResponse); ok { - r0 = rf(ctx, req) - } else { - r0 = ret.Get(0).(stellar.GetLedgersResponse) - } - - if rf, ok := ret.Get(1).(func(context.Context, stellar.GetLedgersRequest) error); ok { - r1 = rf(ctx, req) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// StellarService_mock_GetLedgers_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'GetLedgers' -type StellarService_mock_GetLedgers_Call struct { - *mock.Call -} - -// GetLedgers is a helper method to define mock.On call -// - ctx context.Context -// - req stellar.GetLedgersRequest -func (_e *StellarService_mock_Expecter) GetLedgers(ctx interface{}, req interface{}) *StellarService_mock_GetLedgers_Call { - return &StellarService_mock_GetLedgers_Call{Call: _e.mock.On("GetLedgers", ctx, req)} -} - -func (_c *StellarService_mock_GetLedgers_Call) Run(run func(ctx context.Context, req stellar.GetLedgersRequest)) *StellarService_mock_GetLedgers_Call { - _c.Call.Run(func(args mock.Arguments) { - run(args[0].(context.Context), args[1].(stellar.GetLedgersRequest)) - }) - return _c -} - -func (_c *StellarService_mock_GetLedgers_Call) Return(_a0 stellar.GetLedgersResponse, _a1 error) *StellarService_mock_GetLedgers_Call { - _c.Call.Return(_a0, _a1) - return _c -} - -func (_c *StellarService_mock_GetLedgers_Call) RunAndReturn(run func(context.Context, stellar.GetLedgersRequest) (stellar.GetLedgersResponse, error)) *StellarService_mock_GetLedgers_Call { - _c.Call.Return(run) - return _c -} - -// GetSigningAccount provides a mock function with given fields: ctx -func (_m *StellarService_mock) GetSigningAccount(ctx context.Context) (stellar.GetSigningAccountResponse, error) { - ret := _m.Called(ctx) - - if len(ret) == 0 { - panic("no return value specified for GetSigningAccount") - } - - var r0 stellar.GetSigningAccountResponse - var r1 error - if rf, ok := ret.Get(0).(func(context.Context) (stellar.GetSigningAccountResponse, error)); ok { - return rf(ctx) - } - if rf, ok := ret.Get(0).(func(context.Context) stellar.GetSigningAccountResponse); ok { - r0 = rf(ctx) - } else { - r0 = ret.Get(0).(stellar.GetSigningAccountResponse) - } - - if rf, ok := ret.Get(1).(func(context.Context) error); ok { - r1 = rf(ctx) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// StellarService_mock_GetSigningAccount_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'GetSigningAccount' -type StellarService_mock_GetSigningAccount_Call struct { - *mock.Call -} - -// GetSigningAccount is a helper method to define mock.On call -// - ctx context.Context -func (_e *StellarService_mock_Expecter) GetSigningAccount(ctx interface{}) *StellarService_mock_GetSigningAccount_Call { - return &StellarService_mock_GetSigningAccount_Call{Call: _e.mock.On("GetSigningAccount", ctx)} -} - -func (_c *StellarService_mock_GetSigningAccount_Call) Run(run func(ctx context.Context)) *StellarService_mock_GetSigningAccount_Call { - _c.Call.Run(func(args mock.Arguments) { - run(args[0].(context.Context)) - }) - return _c -} - -func (_c *StellarService_mock_GetSigningAccount_Call) Return(_a0 stellar.GetSigningAccountResponse, _a1 error) *StellarService_mock_GetSigningAccount_Call { - _c.Call.Return(_a0, _a1) - return _c -} - -func (_c *StellarService_mock_GetSigningAccount_Call) RunAndReturn(run func(context.Context) (stellar.GetSigningAccountResponse, error)) *StellarService_mock_GetSigningAccount_Call { - _c.Call.Return(run) - return _c -} - -// GetTransaction provides a mock function with given fields: ctx, req -func (_m *StellarService_mock) GetTransaction(ctx context.Context, req stellar.GetTransactionRequest) (stellar.GetTransactionResponse, error) { - ret := _m.Called(ctx, req) - - if len(ret) == 0 { - panic("no return value specified for GetTransaction") - } - - var r0 stellar.GetTransactionResponse - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, stellar.GetTransactionRequest) (stellar.GetTransactionResponse, error)); ok { - return rf(ctx, req) - } - if rf, ok := ret.Get(0).(func(context.Context, stellar.GetTransactionRequest) stellar.GetTransactionResponse); ok { - r0 = rf(ctx, req) - } else { - r0 = ret.Get(0).(stellar.GetTransactionResponse) - } - - if rf, ok := ret.Get(1).(func(context.Context, stellar.GetTransactionRequest) error); ok { - r1 = rf(ctx, req) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// StellarService_mock_GetTransaction_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'GetTransaction' -type StellarService_mock_GetTransaction_Call struct { - *mock.Call -} - -// GetTransaction is a helper method to define mock.On call -// - ctx context.Context -// - req stellar.GetTransactionRequest -func (_e *StellarService_mock_Expecter) GetTransaction(ctx interface{}, req interface{}) *StellarService_mock_GetTransaction_Call { - return &StellarService_mock_GetTransaction_Call{Call: _e.mock.On("GetTransaction", ctx, req)} -} - -func (_c *StellarService_mock_GetTransaction_Call) Run(run func(ctx context.Context, req stellar.GetTransactionRequest)) *StellarService_mock_GetTransaction_Call { - _c.Call.Run(func(args mock.Arguments) { - run(args[0].(context.Context), args[1].(stellar.GetTransactionRequest)) - }) - return _c -} - -func (_c *StellarService_mock_GetTransaction_Call) Return(_a0 stellar.GetTransactionResponse, _a1 error) *StellarService_mock_GetTransaction_Call { - _c.Call.Return(_a0, _a1) - return _c -} - -func (_c *StellarService_mock_GetTransaction_Call) RunAndReturn(run func(context.Context, stellar.GetTransactionRequest) (stellar.GetTransactionResponse, error)) *StellarService_mock_GetTransaction_Call { - _c.Call.Return(run) - return _c -} - -// SimulateTransaction provides a mock function with given fields: ctx, req -func (_m *StellarService_mock) SimulateTransaction(ctx context.Context, req stellar.SimulateTransactionRequest) (stellar.SimulateTransactionResponse, error) { - ret := _m.Called(ctx, req) - - if len(ret) == 0 { - panic("no return value specified for SimulateTransaction") - } - - var r0 stellar.SimulateTransactionResponse - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, stellar.SimulateTransactionRequest) (stellar.SimulateTransactionResponse, error)); ok { - return rf(ctx, req) - } - if rf, ok := ret.Get(0).(func(context.Context, stellar.SimulateTransactionRequest) stellar.SimulateTransactionResponse); ok { - r0 = rf(ctx, req) - } else { - r0 = ret.Get(0).(stellar.SimulateTransactionResponse) - } - - if rf, ok := ret.Get(1).(func(context.Context, stellar.SimulateTransactionRequest) error); ok { - r1 = rf(ctx, req) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// StellarService_mock_SimulateTransaction_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'SimulateTransaction' -type StellarService_mock_SimulateTransaction_Call struct { - *mock.Call -} - -// SimulateTransaction is a helper method to define mock.On call -// - ctx context.Context -// - req stellar.SimulateTransactionRequest -func (_e *StellarService_mock_Expecter) SimulateTransaction(ctx interface{}, req interface{}) *StellarService_mock_SimulateTransaction_Call { - return &StellarService_mock_SimulateTransaction_Call{Call: _e.mock.On("SimulateTransaction", ctx, req)} -} - -func (_c *StellarService_mock_SimulateTransaction_Call) Run(run func(ctx context.Context, req stellar.SimulateTransactionRequest)) *StellarService_mock_SimulateTransaction_Call { - _c.Call.Run(func(args mock.Arguments) { - run(args[0].(context.Context), args[1].(stellar.SimulateTransactionRequest)) - }) - return _c -} - -func (_c *StellarService_mock_SimulateTransaction_Call) Return(_a0 stellar.SimulateTransactionResponse, _a1 error) *StellarService_mock_SimulateTransaction_Call { - _c.Call.Return(_a0, _a1) - return _c -} - -func (_c *StellarService_mock_SimulateTransaction_Call) RunAndReturn(run func(context.Context, stellar.SimulateTransactionRequest) (stellar.SimulateTransactionResponse, error)) *StellarService_mock_SimulateTransaction_Call { - _c.Call.Return(run) - return _c -} - -// SubmitTransaction provides a mock function with given fields: ctx, req -func (_m *StellarService_mock) SubmitTransaction(ctx context.Context, req stellar.SubmitTransactionRequest) (*stellar.SubmitTransactionResponse, error) { - ret := _m.Called(ctx, req) - - if len(ret) == 0 { - panic("no return value specified for SubmitTransaction") - } - - var r0 *stellar.SubmitTransactionResponse - var r1 error - if rf, ok := ret.Get(0).(func(context.Context, stellar.SubmitTransactionRequest) (*stellar.SubmitTransactionResponse, error)); ok { - return rf(ctx, req) - } - if rf, ok := ret.Get(0).(func(context.Context, stellar.SubmitTransactionRequest) *stellar.SubmitTransactionResponse); ok { - r0 = rf(ctx, req) - } else { - if ret.Get(0) != nil { - r0 = ret.Get(0).(*stellar.SubmitTransactionResponse) - } - } - - if rf, ok := ret.Get(1).(func(context.Context, stellar.SubmitTransactionRequest) error); ok { - r1 = rf(ctx, req) - } else { - r1 = ret.Error(1) - } - - return r0, r1 -} - -// StellarService_mock_SubmitTransaction_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'SubmitTransaction' -type StellarService_mock_SubmitTransaction_Call struct { - *mock.Call -} - -// SubmitTransaction is a helper method to define mock.On call -// - ctx context.Context -// - req stellar.SubmitTransactionRequest -func (_e *StellarService_mock_Expecter) SubmitTransaction(ctx interface{}, req interface{}) *StellarService_mock_SubmitTransaction_Call { - return &StellarService_mock_SubmitTransaction_Call{Call: _e.mock.On("SubmitTransaction", ctx, req)} -} - -func (_c *StellarService_mock_SubmitTransaction_Call) Run(run func(ctx context.Context, req stellar.SubmitTransactionRequest)) *StellarService_mock_SubmitTransaction_Call { - _c.Call.Run(func(args mock.Arguments) { - run(args[0].(context.Context), args[1].(stellar.SubmitTransactionRequest)) - }) - return _c -} - -func (_c *StellarService_mock_SubmitTransaction_Call) Return(_a0 *stellar.SubmitTransactionResponse, _a1 error) *StellarService_mock_SubmitTransaction_Call { - _c.Call.Return(_a0, _a1) - return _c -} - -func (_c *StellarService_mock_SubmitTransaction_Call) RunAndReturn(run func(context.Context, stellar.SubmitTransactionRequest) (*stellar.SubmitTransactionResponse, error)) *StellarService_mock_SubmitTransaction_Call { - _c.Call.Return(run) - return _c -} - -// NewStellarService_mock creates a new instance of StellarService_mock. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. -// The first argument is typically a *testing.T value. -func NewStellarService_mock(t interface { - mock.TestingT - Cleanup(func()) -}) *StellarService_mock { - mock := &StellarService_mock{} - mock.Mock.Test(t) - - t.Cleanup(func() { mock.AssertExpectations(t) }) - - return mock -} From 011a3d11a415b4d5c6d158b199227132a1c752f1 Mon Sep 17 00:00:00 2001 From: yashnevatia Date: Mon, 28 Sep 2026 13:13:22 +0100 Subject: [PATCH 29/33] aptos proto mock version --- .../aptos/internal/monitoring/mocks/proto_emitter.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/chain_capabilities/aptos/internal/monitoring/mocks/proto_emitter.go b/chain_capabilities/aptos/internal/monitoring/mocks/proto_emitter.go index b02acef2d..10bafc11f 100644 --- a/chain_capabilities/aptos/internal/monitoring/mocks/proto_emitter.go +++ b/chain_capabilities/aptos/internal/monitoring/mocks/proto_emitter.go @@ -1,4 +1,4 @@ -// Code generated by mockery v2.53.5. DO NOT EDIT. +// Code generated by mockery v2.53.7. DO NOT EDIT. package mocks From 04a88b6a2a790749504233ed1e304da10763f8a3 Mon Sep 17 00:00:00 2001 From: yashnevatia Date: Thu, 1 Oct 2026 13:29:46 +0100 Subject: [PATCH 30/33] rm chain_capabilities/monitoring/mocks/logger.go --- chain_capabilities/monitoring/mocks/logger.go | 902 ------------------ 1 file changed, 902 deletions(-) delete mode 100644 chain_capabilities/monitoring/mocks/logger.go diff --git a/chain_capabilities/monitoring/mocks/logger.go b/chain_capabilities/monitoring/mocks/logger.go deleted file mode 100644 index 5353c21c3..000000000 --- a/chain_capabilities/monitoring/mocks/logger.go +++ /dev/null @@ -1,902 +0,0 @@ -// Code generated by mockery v2.53.7. DO NOT EDIT. - -package mocks - -import mock "github.com/stretchr/testify/mock" - -// Logger is an autogenerated mock type for the Logger type -type Logger struct { - mock.Mock -} - -type Logger_Expecter struct { - mock *mock.Mock -} - -func (_m *Logger) EXPECT() *Logger_Expecter { - return &Logger_Expecter{mock: &_m.Mock} -} - -// Debug provides a mock function with given fields: args -func (_m *Logger) Debug(args ...interface{}) { - var _ca []interface{} - _ca = append(_ca, args...) - _m.Called(_ca...) -} - -// Logger_Debug_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Debug' -type Logger_Debug_Call struct { - *mock.Call -} - -// Debug is a helper method to define mock.On call -// - args ...interface{} -func (_e *Logger_Expecter) Debug(args ...interface{}) *Logger_Debug_Call { - return &Logger_Debug_Call{Call: _e.mock.On("Debug", - append([]interface{}{}, args...)...)} -} - -func (_c *Logger_Debug_Call) Run(run func(args ...interface{})) *Logger_Debug_Call { - _c.Call.Run(func(args mock.Arguments) { - variadicArgs := make([]interface{}, len(args)-0) - for i, a := range args[0:] { - if a != nil { - variadicArgs[i] = a.(interface{}) - } - } - run(variadicArgs...) - }) - return _c -} - -func (_c *Logger_Debug_Call) Return() *Logger_Debug_Call { - _c.Call.Return() - return _c -} - -func (_c *Logger_Debug_Call) RunAndReturn(run func(...interface{})) *Logger_Debug_Call { - _c.Run(run) - return _c -} - -// Debugf provides a mock function with given fields: format, values -func (_m *Logger) Debugf(format string, values ...interface{}) { - var _ca []interface{} - _ca = append(_ca, format) - _ca = append(_ca, values...) - _m.Called(_ca...) -} - -// Logger_Debugf_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Debugf' -type Logger_Debugf_Call struct { - *mock.Call -} - -// Debugf is a helper method to define mock.On call -// - format string -// - values ...interface{} -func (_e *Logger_Expecter) Debugf(format interface{}, values ...interface{}) *Logger_Debugf_Call { - return &Logger_Debugf_Call{Call: _e.mock.On("Debugf", - append([]interface{}{format}, values...)...)} -} - -func (_c *Logger_Debugf_Call) Run(run func(format string, values ...interface{})) *Logger_Debugf_Call { - _c.Call.Run(func(args mock.Arguments) { - variadicArgs := make([]interface{}, len(args)-1) - for i, a := range args[1:] { - if a != nil { - variadicArgs[i] = a.(interface{}) - } - } - run(args[0].(string), variadicArgs...) - }) - return _c -} - -func (_c *Logger_Debugf_Call) Return() *Logger_Debugf_Call { - _c.Call.Return() - return _c -} - -func (_c *Logger_Debugf_Call) RunAndReturn(run func(string, ...interface{})) *Logger_Debugf_Call { - _c.Run(run) - return _c -} - -// Debugw provides a mock function with given fields: msg, keysAndValues -func (_m *Logger) Debugw(msg string, keysAndValues ...interface{}) { - var _ca []interface{} - _ca = append(_ca, msg) - _ca = append(_ca, keysAndValues...) - _m.Called(_ca...) -} - -// Logger_Debugw_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Debugw' -type Logger_Debugw_Call struct { - *mock.Call -} - -// Debugw is a helper method to define mock.On call -// - msg string -// - keysAndValues ...interface{} -func (_e *Logger_Expecter) Debugw(msg interface{}, keysAndValues ...interface{}) *Logger_Debugw_Call { - return &Logger_Debugw_Call{Call: _e.mock.On("Debugw", - append([]interface{}{msg}, keysAndValues...)...)} -} - -func (_c *Logger_Debugw_Call) Run(run func(msg string, keysAndValues ...interface{})) *Logger_Debugw_Call { - _c.Call.Run(func(args mock.Arguments) { - variadicArgs := make([]interface{}, len(args)-1) - for i, a := range args[1:] { - if a != nil { - variadicArgs[i] = a.(interface{}) - } - } - run(args[0].(string), variadicArgs...) - }) - return _c -} - -func (_c *Logger_Debugw_Call) Return() *Logger_Debugw_Call { - _c.Call.Return() - return _c -} - -func (_c *Logger_Debugw_Call) RunAndReturn(run func(string, ...interface{})) *Logger_Debugw_Call { - _c.Run(run) - return _c -} - -// Error provides a mock function with given fields: args -func (_m *Logger) Error(args ...interface{}) { - var _ca []interface{} - _ca = append(_ca, args...) - _m.Called(_ca...) -} - -// Logger_Error_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Error' -type Logger_Error_Call struct { - *mock.Call -} - -// Error is a helper method to define mock.On call -// - args ...interface{} -func (_e *Logger_Expecter) Error(args ...interface{}) *Logger_Error_Call { - return &Logger_Error_Call{Call: _e.mock.On("Error", - append([]interface{}{}, args...)...)} -} - -func (_c *Logger_Error_Call) Run(run func(args ...interface{})) *Logger_Error_Call { - _c.Call.Run(func(args mock.Arguments) { - variadicArgs := make([]interface{}, len(args)-0) - for i, a := range args[0:] { - if a != nil { - variadicArgs[i] = a.(interface{}) - } - } - run(variadicArgs...) - }) - return _c -} - -func (_c *Logger_Error_Call) Return() *Logger_Error_Call { - _c.Call.Return() - return _c -} - -func (_c *Logger_Error_Call) RunAndReturn(run func(...interface{})) *Logger_Error_Call { - _c.Run(run) - return _c -} - -// Errorf provides a mock function with given fields: format, values -func (_m *Logger) Errorf(format string, values ...interface{}) { - var _ca []interface{} - _ca = append(_ca, format) - _ca = append(_ca, values...) - _m.Called(_ca...) -} - -// Logger_Errorf_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Errorf' -type Logger_Errorf_Call struct { - *mock.Call -} - -// Errorf is a helper method to define mock.On call -// - format string -// - values ...interface{} -func (_e *Logger_Expecter) Errorf(format interface{}, values ...interface{}) *Logger_Errorf_Call { - return &Logger_Errorf_Call{Call: _e.mock.On("Errorf", - append([]interface{}{format}, values...)...)} -} - -func (_c *Logger_Errorf_Call) Run(run func(format string, values ...interface{})) *Logger_Errorf_Call { - _c.Call.Run(func(args mock.Arguments) { - variadicArgs := make([]interface{}, len(args)-1) - for i, a := range args[1:] { - if a != nil { - variadicArgs[i] = a.(interface{}) - } - } - run(args[0].(string), variadicArgs...) - }) - return _c -} - -func (_c *Logger_Errorf_Call) Return() *Logger_Errorf_Call { - _c.Call.Return() - return _c -} - -func (_c *Logger_Errorf_Call) RunAndReturn(run func(string, ...interface{})) *Logger_Errorf_Call { - _c.Run(run) - return _c -} - -// Errorw provides a mock function with given fields: msg, keysAndValues -func (_m *Logger) Errorw(msg string, keysAndValues ...interface{}) { - var _ca []interface{} - _ca = append(_ca, msg) - _ca = append(_ca, keysAndValues...) - _m.Called(_ca...) -} - -// Logger_Errorw_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Errorw' -type Logger_Errorw_Call struct { - *mock.Call -} - -// Errorw is a helper method to define mock.On call -// - msg string -// - keysAndValues ...interface{} -func (_e *Logger_Expecter) Errorw(msg interface{}, keysAndValues ...interface{}) *Logger_Errorw_Call { - return &Logger_Errorw_Call{Call: _e.mock.On("Errorw", - append([]interface{}{msg}, keysAndValues...)...)} -} - -func (_c *Logger_Errorw_Call) Run(run func(msg string, keysAndValues ...interface{})) *Logger_Errorw_Call { - _c.Call.Run(func(args mock.Arguments) { - variadicArgs := make([]interface{}, len(args)-1) - for i, a := range args[1:] { - if a != nil { - variadicArgs[i] = a.(interface{}) - } - } - run(args[0].(string), variadicArgs...) - }) - return _c -} - -func (_c *Logger_Errorw_Call) Return() *Logger_Errorw_Call { - _c.Call.Return() - return _c -} - -func (_c *Logger_Errorw_Call) RunAndReturn(run func(string, ...interface{})) *Logger_Errorw_Call { - _c.Run(run) - return _c -} - -// Fatal provides a mock function with given fields: args -func (_m *Logger) Fatal(args ...interface{}) { - var _ca []interface{} - _ca = append(_ca, args...) - _m.Called(_ca...) -} - -// Logger_Fatal_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Fatal' -type Logger_Fatal_Call struct { - *mock.Call -} - -// Fatal is a helper method to define mock.On call -// - args ...interface{} -func (_e *Logger_Expecter) Fatal(args ...interface{}) *Logger_Fatal_Call { - return &Logger_Fatal_Call{Call: _e.mock.On("Fatal", - append([]interface{}{}, args...)...)} -} - -func (_c *Logger_Fatal_Call) Run(run func(args ...interface{})) *Logger_Fatal_Call { - _c.Call.Run(func(args mock.Arguments) { - variadicArgs := make([]interface{}, len(args)-0) - for i, a := range args[0:] { - if a != nil { - variadicArgs[i] = a.(interface{}) - } - } - run(variadicArgs...) - }) - return _c -} - -func (_c *Logger_Fatal_Call) Return() *Logger_Fatal_Call { - _c.Call.Return() - return _c -} - -func (_c *Logger_Fatal_Call) RunAndReturn(run func(...interface{})) *Logger_Fatal_Call { - _c.Run(run) - return _c -} - -// Fatalf provides a mock function with given fields: format, values -func (_m *Logger) Fatalf(format string, values ...interface{}) { - var _ca []interface{} - _ca = append(_ca, format) - _ca = append(_ca, values...) - _m.Called(_ca...) -} - -// Logger_Fatalf_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Fatalf' -type Logger_Fatalf_Call struct { - *mock.Call -} - -// Fatalf is a helper method to define mock.On call -// - format string -// - values ...interface{} -func (_e *Logger_Expecter) Fatalf(format interface{}, values ...interface{}) *Logger_Fatalf_Call { - return &Logger_Fatalf_Call{Call: _e.mock.On("Fatalf", - append([]interface{}{format}, values...)...)} -} - -func (_c *Logger_Fatalf_Call) Run(run func(format string, values ...interface{})) *Logger_Fatalf_Call { - _c.Call.Run(func(args mock.Arguments) { - variadicArgs := make([]interface{}, len(args)-1) - for i, a := range args[1:] { - if a != nil { - variadicArgs[i] = a.(interface{}) - } - } - run(args[0].(string), variadicArgs...) - }) - return _c -} - -func (_c *Logger_Fatalf_Call) Return() *Logger_Fatalf_Call { - _c.Call.Return() - return _c -} - -func (_c *Logger_Fatalf_Call) RunAndReturn(run func(string, ...interface{})) *Logger_Fatalf_Call { - _c.Run(run) - return _c -} - -// Fatalw provides a mock function with given fields: msg, keysAndValues -func (_m *Logger) Fatalw(msg string, keysAndValues ...interface{}) { - var _ca []interface{} - _ca = append(_ca, msg) - _ca = append(_ca, keysAndValues...) - _m.Called(_ca...) -} - -// Logger_Fatalw_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Fatalw' -type Logger_Fatalw_Call struct { - *mock.Call -} - -// Fatalw is a helper method to define mock.On call -// - msg string -// - keysAndValues ...interface{} -func (_e *Logger_Expecter) Fatalw(msg interface{}, keysAndValues ...interface{}) *Logger_Fatalw_Call { - return &Logger_Fatalw_Call{Call: _e.mock.On("Fatalw", - append([]interface{}{msg}, keysAndValues...)...)} -} - -func (_c *Logger_Fatalw_Call) Run(run func(msg string, keysAndValues ...interface{})) *Logger_Fatalw_Call { - _c.Call.Run(func(args mock.Arguments) { - variadicArgs := make([]interface{}, len(args)-1) - for i, a := range args[1:] { - if a != nil { - variadicArgs[i] = a.(interface{}) - } - } - run(args[0].(string), variadicArgs...) - }) - return _c -} - -func (_c *Logger_Fatalw_Call) Return() *Logger_Fatalw_Call { - _c.Call.Return() - return _c -} - -func (_c *Logger_Fatalw_Call) RunAndReturn(run func(string, ...interface{})) *Logger_Fatalw_Call { - _c.Run(run) - return _c -} - -// Info provides a mock function with given fields: args -func (_m *Logger) Info(args ...interface{}) { - var _ca []interface{} - _ca = append(_ca, args...) - _m.Called(_ca...) -} - -// Logger_Info_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Info' -type Logger_Info_Call struct { - *mock.Call -} - -// Info is a helper method to define mock.On call -// - args ...interface{} -func (_e *Logger_Expecter) Info(args ...interface{}) *Logger_Info_Call { - return &Logger_Info_Call{Call: _e.mock.On("Info", - append([]interface{}{}, args...)...)} -} - -func (_c *Logger_Info_Call) Run(run func(args ...interface{})) *Logger_Info_Call { - _c.Call.Run(func(args mock.Arguments) { - variadicArgs := make([]interface{}, len(args)-0) - for i, a := range args[0:] { - if a != nil { - variadicArgs[i] = a.(interface{}) - } - } - run(variadicArgs...) - }) - return _c -} - -func (_c *Logger_Info_Call) Return() *Logger_Info_Call { - _c.Call.Return() - return _c -} - -func (_c *Logger_Info_Call) RunAndReturn(run func(...interface{})) *Logger_Info_Call { - _c.Run(run) - return _c -} - -// Infof provides a mock function with given fields: format, values -func (_m *Logger) Infof(format string, values ...interface{}) { - var _ca []interface{} - _ca = append(_ca, format) - _ca = append(_ca, values...) - _m.Called(_ca...) -} - -// Logger_Infof_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Infof' -type Logger_Infof_Call struct { - *mock.Call -} - -// Infof is a helper method to define mock.On call -// - format string -// - values ...interface{} -func (_e *Logger_Expecter) Infof(format interface{}, values ...interface{}) *Logger_Infof_Call { - return &Logger_Infof_Call{Call: _e.mock.On("Infof", - append([]interface{}{format}, values...)...)} -} - -func (_c *Logger_Infof_Call) Run(run func(format string, values ...interface{})) *Logger_Infof_Call { - _c.Call.Run(func(args mock.Arguments) { - variadicArgs := make([]interface{}, len(args)-1) - for i, a := range args[1:] { - if a != nil { - variadicArgs[i] = a.(interface{}) - } - } - run(args[0].(string), variadicArgs...) - }) - return _c -} - -func (_c *Logger_Infof_Call) Return() *Logger_Infof_Call { - _c.Call.Return() - return _c -} - -func (_c *Logger_Infof_Call) RunAndReturn(run func(string, ...interface{})) *Logger_Infof_Call { - _c.Run(run) - return _c -} - -// Infow provides a mock function with given fields: msg, keysAndValues -func (_m *Logger) Infow(msg string, keysAndValues ...interface{}) { - var _ca []interface{} - _ca = append(_ca, msg) - _ca = append(_ca, keysAndValues...) - _m.Called(_ca...) -} - -// Logger_Infow_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Infow' -type Logger_Infow_Call struct { - *mock.Call -} - -// Infow is a helper method to define mock.On call -// - msg string -// - keysAndValues ...interface{} -func (_e *Logger_Expecter) Infow(msg interface{}, keysAndValues ...interface{}) *Logger_Infow_Call { - return &Logger_Infow_Call{Call: _e.mock.On("Infow", - append([]interface{}{msg}, keysAndValues...)...)} -} - -func (_c *Logger_Infow_Call) Run(run func(msg string, keysAndValues ...interface{})) *Logger_Infow_Call { - _c.Call.Run(func(args mock.Arguments) { - variadicArgs := make([]interface{}, len(args)-1) - for i, a := range args[1:] { - if a != nil { - variadicArgs[i] = a.(interface{}) - } - } - run(args[0].(string), variadicArgs...) - }) - return _c -} - -func (_c *Logger_Infow_Call) Return() *Logger_Infow_Call { - _c.Call.Return() - return _c -} - -func (_c *Logger_Infow_Call) RunAndReturn(run func(string, ...interface{})) *Logger_Infow_Call { - _c.Run(run) - return _c -} - -// Name provides a mock function with no fields -func (_m *Logger) Name() string { - ret := _m.Called() - - if len(ret) == 0 { - panic("no return value specified for Name") - } - - var r0 string - if rf, ok := ret.Get(0).(func() string); ok { - r0 = rf() - } else { - r0 = ret.Get(0).(string) - } - - return r0 -} - -// Logger_Name_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Name' -type Logger_Name_Call struct { - *mock.Call -} - -// Name is a helper method to define mock.On call -func (_e *Logger_Expecter) Name() *Logger_Name_Call { - return &Logger_Name_Call{Call: _e.mock.On("Name")} -} - -func (_c *Logger_Name_Call) Run(run func()) *Logger_Name_Call { - _c.Call.Run(func(args mock.Arguments) { - run() - }) - return _c -} - -func (_c *Logger_Name_Call) Return(_a0 string) *Logger_Name_Call { - _c.Call.Return(_a0) - return _c -} - -func (_c *Logger_Name_Call) RunAndReturn(run func() string) *Logger_Name_Call { - _c.Call.Return(run) - return _c -} - -// Panic provides a mock function with given fields: args -func (_m *Logger) Panic(args ...interface{}) { - var _ca []interface{} - _ca = append(_ca, args...) - _m.Called(_ca...) -} - -// Logger_Panic_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Panic' -type Logger_Panic_Call struct { - *mock.Call -} - -// Panic is a helper method to define mock.On call -// - args ...interface{} -func (_e *Logger_Expecter) Panic(args ...interface{}) *Logger_Panic_Call { - return &Logger_Panic_Call{Call: _e.mock.On("Panic", - append([]interface{}{}, args...)...)} -} - -func (_c *Logger_Panic_Call) Run(run func(args ...interface{})) *Logger_Panic_Call { - _c.Call.Run(func(args mock.Arguments) { - variadicArgs := make([]interface{}, len(args)-0) - for i, a := range args[0:] { - if a != nil { - variadicArgs[i] = a.(interface{}) - } - } - run(variadicArgs...) - }) - return _c -} - -func (_c *Logger_Panic_Call) Return() *Logger_Panic_Call { - _c.Call.Return() - return _c -} - -func (_c *Logger_Panic_Call) RunAndReturn(run func(...interface{})) *Logger_Panic_Call { - _c.Run(run) - return _c -} - -// Panicf provides a mock function with given fields: format, values -func (_m *Logger) Panicf(format string, values ...interface{}) { - var _ca []interface{} - _ca = append(_ca, format) - _ca = append(_ca, values...) - _m.Called(_ca...) -} - -// Logger_Panicf_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Panicf' -type Logger_Panicf_Call struct { - *mock.Call -} - -// Panicf is a helper method to define mock.On call -// - format string -// - values ...interface{} -func (_e *Logger_Expecter) Panicf(format interface{}, values ...interface{}) *Logger_Panicf_Call { - return &Logger_Panicf_Call{Call: _e.mock.On("Panicf", - append([]interface{}{format}, values...)...)} -} - -func (_c *Logger_Panicf_Call) Run(run func(format string, values ...interface{})) *Logger_Panicf_Call { - _c.Call.Run(func(args mock.Arguments) { - variadicArgs := make([]interface{}, len(args)-1) - for i, a := range args[1:] { - if a != nil { - variadicArgs[i] = a.(interface{}) - } - } - run(args[0].(string), variadicArgs...) - }) - return _c -} - -func (_c *Logger_Panicf_Call) Return() *Logger_Panicf_Call { - _c.Call.Return() - return _c -} - -func (_c *Logger_Panicf_Call) RunAndReturn(run func(string, ...interface{})) *Logger_Panicf_Call { - _c.Run(run) - return _c -} - -// Panicw provides a mock function with given fields: msg, keysAndValues -func (_m *Logger) Panicw(msg string, keysAndValues ...interface{}) { - var _ca []interface{} - _ca = append(_ca, msg) - _ca = append(_ca, keysAndValues...) - _m.Called(_ca...) -} - -// Logger_Panicw_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Panicw' -type Logger_Panicw_Call struct { - *mock.Call -} - -// Panicw is a helper method to define mock.On call -// - msg string -// - keysAndValues ...interface{} -func (_e *Logger_Expecter) Panicw(msg interface{}, keysAndValues ...interface{}) *Logger_Panicw_Call { - return &Logger_Panicw_Call{Call: _e.mock.On("Panicw", - append([]interface{}{msg}, keysAndValues...)...)} -} - -func (_c *Logger_Panicw_Call) Run(run func(msg string, keysAndValues ...interface{})) *Logger_Panicw_Call { - _c.Call.Run(func(args mock.Arguments) { - variadicArgs := make([]interface{}, len(args)-1) - for i, a := range args[1:] { - if a != nil { - variadicArgs[i] = a.(interface{}) - } - } - run(args[0].(string), variadicArgs...) - }) - return _c -} - -func (_c *Logger_Panicw_Call) Return() *Logger_Panicw_Call { - _c.Call.Return() - return _c -} - -func (_c *Logger_Panicw_Call) RunAndReturn(run func(string, ...interface{})) *Logger_Panicw_Call { - _c.Run(run) - return _c -} - -// Sync provides a mock function with no fields -func (_m *Logger) Sync() error { - ret := _m.Called() - - if len(ret) == 0 { - panic("no return value specified for Sync") - } - - var r0 error - if rf, ok := ret.Get(0).(func() error); ok { - r0 = rf() - } else { - r0 = ret.Error(0) - } - - return r0 -} - -// Logger_Sync_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Sync' -type Logger_Sync_Call struct { - *mock.Call -} - -// Sync is a helper method to define mock.On call -func (_e *Logger_Expecter) Sync() *Logger_Sync_Call { - return &Logger_Sync_Call{Call: _e.mock.On("Sync")} -} - -func (_c *Logger_Sync_Call) Run(run func()) *Logger_Sync_Call { - _c.Call.Run(func(args mock.Arguments) { - run() - }) - return _c -} - -func (_c *Logger_Sync_Call) Return(_a0 error) *Logger_Sync_Call { - _c.Call.Return(_a0) - return _c -} - -func (_c *Logger_Sync_Call) RunAndReturn(run func() error) *Logger_Sync_Call { - _c.Call.Return(run) - return _c -} - -// Warn provides a mock function with given fields: args -func (_m *Logger) Warn(args ...interface{}) { - var _ca []interface{} - _ca = append(_ca, args...) - _m.Called(_ca...) -} - -// Logger_Warn_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Warn' -type Logger_Warn_Call struct { - *mock.Call -} - -// Warn is a helper method to define mock.On call -// - args ...interface{} -func (_e *Logger_Expecter) Warn(args ...interface{}) *Logger_Warn_Call { - return &Logger_Warn_Call{Call: _e.mock.On("Warn", - append([]interface{}{}, args...)...)} -} - -func (_c *Logger_Warn_Call) Run(run func(args ...interface{})) *Logger_Warn_Call { - _c.Call.Run(func(args mock.Arguments) { - variadicArgs := make([]interface{}, len(args)-0) - for i, a := range args[0:] { - if a != nil { - variadicArgs[i] = a.(interface{}) - } - } - run(variadicArgs...) - }) - return _c -} - -func (_c *Logger_Warn_Call) Return() *Logger_Warn_Call { - _c.Call.Return() - return _c -} - -func (_c *Logger_Warn_Call) RunAndReturn(run func(...interface{})) *Logger_Warn_Call { - _c.Run(run) - return _c -} - -// Warnf provides a mock function with given fields: format, values -func (_m *Logger) Warnf(format string, values ...interface{}) { - var _ca []interface{} - _ca = append(_ca, format) - _ca = append(_ca, values...) - _m.Called(_ca...) -} - -// Logger_Warnf_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Warnf' -type Logger_Warnf_Call struct { - *mock.Call -} - -// Warnf is a helper method to define mock.On call -// - format string -// - values ...interface{} -func (_e *Logger_Expecter) Warnf(format interface{}, values ...interface{}) *Logger_Warnf_Call { - return &Logger_Warnf_Call{Call: _e.mock.On("Warnf", - append([]interface{}{format}, values...)...)} -} - -func (_c *Logger_Warnf_Call) Run(run func(format string, values ...interface{})) *Logger_Warnf_Call { - _c.Call.Run(func(args mock.Arguments) { - variadicArgs := make([]interface{}, len(args)-1) - for i, a := range args[1:] { - if a != nil { - variadicArgs[i] = a.(interface{}) - } - } - run(args[0].(string), variadicArgs...) - }) - return _c -} - -func (_c *Logger_Warnf_Call) Return() *Logger_Warnf_Call { - _c.Call.Return() - return _c -} - -func (_c *Logger_Warnf_Call) RunAndReturn(run func(string, ...interface{})) *Logger_Warnf_Call { - _c.Run(run) - return _c -} - -// Warnw provides a mock function with given fields: msg, keysAndValues -func (_m *Logger) Warnw(msg string, keysAndValues ...interface{}) { - var _ca []interface{} - _ca = append(_ca, msg) - _ca = append(_ca, keysAndValues...) - _m.Called(_ca...) -} - -// Logger_Warnw_Call is a *mock.Call that shadows Run/Return methods with type explicit version for method 'Warnw' -type Logger_Warnw_Call struct { - *mock.Call -} - -// Warnw is a helper method to define mock.On call -// - msg string -// - keysAndValues ...interface{} -func (_e *Logger_Expecter) Warnw(msg interface{}, keysAndValues ...interface{}) *Logger_Warnw_Call { - return &Logger_Warnw_Call{Call: _e.mock.On("Warnw", - append([]interface{}{msg}, keysAndValues...)...)} -} - -func (_c *Logger_Warnw_Call) Run(run func(msg string, keysAndValues ...interface{})) *Logger_Warnw_Call { - _c.Call.Run(func(args mock.Arguments) { - variadicArgs := make([]interface{}, len(args)-1) - for i, a := range args[1:] { - if a != nil { - variadicArgs[i] = a.(interface{}) - } - } - run(args[0].(string), variadicArgs...) - }) - return _c -} - -func (_c *Logger_Warnw_Call) Return() *Logger_Warnw_Call { - _c.Call.Return() - return _c -} - -func (_c *Logger_Warnw_Call) RunAndReturn(run func(string, ...interface{})) *Logger_Warnw_Call { - _c.Run(run) - return _c -} - -// NewLogger creates a new instance of Logger. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. -// The first argument is typically a *testing.T value. -func NewLogger(t interface { - mock.TestingT - Cleanup(func()) -}) *Logger { - mock := &Logger{} - mock.Mock.Test(t) - - t.Cleanup(func() { mock.AssertExpectations(t) }) - - return mock -} From a88249c729ec58d8f2c4b1bbd071bc21be23bdc0 Mon Sep 17 00:00:00 2001 From: yashnevatia Date: Thu, 1 Oct 2026 13:34:49 +0100 Subject: [PATCH 31/33] err --- libs/chainconsensus/oracle/reporting_plugin_test.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/libs/chainconsensus/oracle/reporting_plugin_test.go b/libs/chainconsensus/oracle/reporting_plugin_test.go index 954c3d2aa..8e62495e6 100644 --- a/libs/chainconsensus/oracle/reporting_plugin_test.go +++ b/libs/chainconsensus/oracle/reporting_plugin_test.go @@ -1206,7 +1206,7 @@ func TestAgreeOnHashableValue(t *testing.T) { } for _, tc := range testCases { t.Run(tc.name, func(t *testing.T) { - plugin := newReportingPlugin(Config{F: 1, N: 4}, logger.Sugared(logger.Test(t)), nil, nil, test.GetConsensusMetrics(t), limits.Factory{}) + plugin, err := newReportingPlugin(Config{F: 1, N: 4}, logger.Sugared(logger.Test(t)), nil, nil, test.GetConsensusMetrics(t), limits.Factory{}) require.NoError(t, err) nodesObservations := make([]attributedObservation, 0, len(tc.nodesObservations)) for i, h := range tc.nodesObservations { @@ -1383,7 +1383,7 @@ func TestAgreeOnVolatileValue(t *testing.T) { } for _, tc := range testCases { t.Run(tc.name, func(t *testing.T) { - plugin := newReportingPlugin(Config{F: 1, N: 4}, logger.Sugared(logger.Test(t)), nil, nil, test.GetConsensusMetrics(t), limits.Factory{}) + plugin, err := newReportingPlugin(Config{F: 1, N: 4}, logger.Sugared(logger.Test(t)), nil, nil, test.GetConsensusMetrics(t), limits.Factory{}) require.NoError(t, err) nodesObservations := make([]attributedObservation, 0, len(tc.observations)) for i := range tc.observations { @@ -1505,7 +1505,7 @@ func TestAgreeOnObservationType(t *testing.T) { } for _, tc := range testCases { t.Run(tc.name, func(t *testing.T) { - plugin := newReportingPlugin(Config{F: 1, N: 4}, logger.Sugared(logger.Test(t)), nil, nil, test.GetConsensusMetrics(t), limits.Factory{}) + plugin, err := newReportingPlugin(Config{F: 1, N: 4}, logger.Sugared(logger.Test(t)), nil, nil, test.GetConsensusMetrics(t), limits.Factory{}) require.NoError(t, err) nodesObservations := make([]attributedObservation, 0, len(tc.observations)) for i := range tc.observations { From 170a064a1ca65e583b894d0180f709edf7c8311c Mon Sep 17 00:00:00 2001 From: yashnevatia Date: Thu, 1 Oct 2026 13:35:53 +0100 Subject: [PATCH 32/33] Revert root go files --- go.mod | 15 ++++++++++----- go.sum | 37 +++++++++++++++++++++++++++---------- 2 files changed, 37 insertions(+), 15 deletions(-) diff --git a/go.mod b/go.mod index 77f30af3a..bb85ec1c9 100644 --- a/go.mod +++ b/go.mod @@ -1,13 +1,18 @@ module github.com/smartcontractkit/capabilities -go 1.27.1 +go 1.26.7 require ( - github.com/stretchr/testify v1.12.1 - google.golang.org/protobuf v1.36.12 + github.com/stretchr/testify v1.11.1 + google.golang.org/protobuf v1.36.11 ) require ( - github.com/stretchr/objx v0.5.3 // indirect - go.yaml.in/yaml/v3 v3.0.5 // indirect + github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect + github.com/kr/pretty v0.3.1 // indirect + github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect + github.com/rogpeppe/go-internal v1.14.1 // indirect + github.com/stretchr/objx v0.5.2 // indirect + gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect + gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/go.sum b/go.sum index 64406802f..d32a65435 100644 --- a/go.sum +++ b/go.sum @@ -1,10 +1,27 @@ -github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= -github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= -github.com/stretchr/objx v0.5.3 h1:jmXUvGomnU1o3W/V5h2VEradbpJDwGrzugQQvL0POH4= -github.com/stretchr/objx v0.5.3/go.mod h1:rDQraq+vQZU7Fde9LOZLr8Tax6zZvy4kuNKF+QYS+U0= -github.com/stretchr/testify v1.12.1 h1:EuwCh5fleGS7H32xRwO3wRGT7DxrDhLAT6FF8MpWDWE= -github.com/stretchr/testify v1.12.1/go.mod h1:MDEgiDPPsNp5cuIrHPPCyornHKgEVbtFUmoNlxoYthg= -go.yaml.in/yaml/v3 v3.0.5 h1:N6y/pJk8buWs9NY5ERU2HSMfm+IuD/OtfdAnq6kESPw= -go.yaml.in/yaml/v3 v3.0.5/go.mod h1:HVTZu1O7/Vkt2N+BFy8Zza+lnLsABggaTM2ZpNIGuKg= -google.golang.org/protobuf v1.36.12 h1:pJOKDDOyeXErUroCihFAd5LQuwXBSpVnKGrj5o/fwxc= -google.golang.org/protobuf v1.36.12/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= +github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= +github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= +github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= +github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= +github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ= +github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= +github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= +github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= +github.com/stretchr/testify v1.11.1 h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U= +github.com/stretchr/testify v1.11.1/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= +google.golang.org/protobuf v1.36.11 h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE= +google.golang.org/protobuf v1.36.11/go.mod h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= +gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= From eb49dd5fe9b06db480ef9bcabee7d3be8e01ed0f Mon Sep 17 00:00:00 2001 From: yashnevatia Date: Thu, 1 Oct 2026 13:46:51 +0100 Subject: [PATCH 33/33] bump root go --- go.mod | 2 +- go.sum | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/go.mod b/go.mod index bb85ec1c9..92bdae198 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/smartcontractkit/capabilities -go 1.26.7 +go 1.27.1 require ( github.com/stretchr/testify v1.11.1 diff --git a/go.sum b/go.sum index d32a65435..75853af65 100644 --- a/go.sum +++ b/go.sum @@ -1,6 +1,8 @@ github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= +github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=