diff --git a/.changeset/cool-dancers-rescue.md b/.changeset/cool-dancers-rescue.md new file mode 100644 index 00000000000..d41d6316b84 --- /dev/null +++ b/.changeset/cool-dancers-rescue.md @@ -0,0 +1,5 @@ +--- +"chainlink": patch +--- + +#bugfix Use correct data id in secure mint aggregator diff --git a/core/capabilities/integration_tests/keystone/contracts_setup.go b/core/capabilities/integration_tests/keystone/contracts_setup.go index 8193d2b13ce..6e0791a77d1 100644 --- a/core/capabilities/integration_tests/keystone/contracts_setup.go +++ b/core/capabilities/integration_tests/keystone/contracts_setup.go @@ -6,6 +6,7 @@ import ( "github.com/ethereum/go-ethereum/common" "github.com/stretchr/testify/require" + data_feeds_cache "github.com/smartcontractkit/chainlink-evm/gethwrappers/data-feeds/generated/data_feeds_cache" feeds_consumer "github.com/smartcontractkit/chainlink-evm/gethwrappers/keystone/generated/feeds_consumer_1_0_0" forwarder "github.com/smartcontractkit/chainlink-evm/gethwrappers/keystone/generated/forwarder_1_0_0" "github.com/smartcontractkit/chainlink/v2/core/capabilities/integration_tests/framework" @@ -47,3 +48,35 @@ func SetupConsumerContract(t *testing.T, backend *framework.EthBlockchain, return addr, consumer } + +func SetupDataFeedsCacheContract(t *testing.T, backend *framework.EthBlockchain, + forwarderAddress common.Address, workflowOwner string, workflowName string) (common.Address, *data_feeds_cache.DataFeedsCache) { + addr, _, dataFeedsCache, err := data_feeds_cache.DeployDataFeedsCache(backend.TransactionOpts(), backend.Client()) + require.NoError(t, err) + backend.Commit() + + var nameBytes [10]byte + copy(nameBytes[:], workflowName) + + ownerAddr := common.HexToAddress(workflowOwner) + + _, err = dataFeedsCache.SetFeedAdmin(backend.TransactionOpts(), backend.TransactionOpts().From, true) + require.NoError(t, err) + backend.Commit() + + feedIDBytes := [16]byte{} + copy(feedIDBytes[:], common.FromHex("0x04de41ba4fc9d91ad900000000000000")) // Data ID for secure mint report for chain selector 16015286601757825753 (ethereum-testnet-sepolia) + + _, err = dataFeedsCache.SetDecimalFeedConfigs(backend.TransactionOpts(), [][16]byte{feedIDBytes}, []string{"securemint"}, + []data_feeds_cache.DataFeedsCacheWorkflowMetadata{ + { + AllowedSender: forwarderAddress, + AllowedWorkflowOwner: ownerAddr, + AllowedWorkflowName: nameBytes, + }, + }) + require.NoError(t, err) + backend.Commit() + + return addr, dataFeedsCache +} diff --git a/core/capabilities/integration_tests/keystone/keystone_test.go b/core/capabilities/integration_tests/keystone/keystone_test.go index 5aeb5ff1136..dea2799bb47 100644 --- a/core/capabilities/integration_tests/keystone/keystone_test.go +++ b/core/capabilities/integration_tests/keystone/keystone_test.go @@ -18,6 +18,7 @@ import ( "github.com/smartcontractkit/chainlink-common/pkg/capabilities/datastreams" "github.com/smartcontractkit/chainlink-common/pkg/logger" "github.com/smartcontractkit/chainlink-common/pkg/values" + data_feeds_cache "github.com/smartcontractkit/chainlink-evm/gethwrappers/data-feeds/generated/data_feeds_cache" feeds_consumer "github.com/smartcontractkit/chainlink-evm/gethwrappers/keystone/generated/feeds_consumer_1_0_0" fwd "github.com/smartcontractkit/chainlink-evm/gethwrappers/keystone/generated/forwarder_1_0_0" "github.com/smartcontractkit/chainlink/v2/core/capabilities/integration_tests/framework" @@ -46,7 +47,7 @@ func testTransmissionSchedule(t *testing.T, deltaStage string, schedule string) // mercury-style reports triggerSink := framework.NewTriggerSink(t, "streams-trigger", "1.0.0") - workflowDon, consumer, _ := setupKeystoneDons(ctx, t, lggr, workflowDonConfiguration, triggerDonConfiguration, + workflowDon, consumer, _, _ := setupKeystoneDons(ctx, t, lggr, workflowDonConfiguration, triggerDonConfiguration, targetDonConfiguration, triggerSink) feedCount := 3 @@ -124,7 +125,7 @@ func waitForConsumerReports(t *testing.T, consumer *feeds_consumer.KeystoneFeeds } // trackErrorsOnForwarder watches the forwarder contract for report processed events and fails the test if the report is not forwarded to the consumer -func trackErrorsOnForwarder(t *testing.T, forwarder *fwd.KeystoneForwarder, consumerAddress common.Address) { +func trackErrorsOnForwarder(t *testing.T, forwarder *fwd.KeystoneForwarder, dfCacheAddress common.Address) { t.Helper() reportsProcessed := make(chan *fwd.KeystoneForwarderReportProcessed, 1000) @@ -150,16 +151,51 @@ func trackErrorsOnForwarder(t *testing.T, forwarder *fwd.KeystoneForwarder, cons return case report := <-reportsProcessed: t.Logf("Forwarder received report: %+v", report) + + transmissionInfo, err := forwarder.GetTransmissionInfo(nil, dfCacheAddress, report.WorkflowExecutionId, report.ReportId) + assert.NoError(t, err) if !report.Result { // if the report is not forwarded to the consumer, we need to get the transmission info to see why - transmissionInfo, err := forwarder.GetTransmissionInfo(nil, consumerAddress, report.WorkflowExecutionId, report.ReportId) - assert.NoError(t, err) - t.Errorf("Report not forwarded to consumer: %+v", transmissionInfo) + t.Errorf("Report not forwarded to DataFeeds Cache: %+v", transmissionInfo) + } else { + t.Logf("Report successfully forwarded to DataFeeds Cache: %+v", transmissionInfo) } } } }() } +// trackInvalidPermissionEventsOnDFCache watches the DF Cache contract for invalid permission events +func trackInvalidPermissionEventsOnDFCache(t *testing.T, dataFeedsCache *data_feeds_cache.DataFeedsCache) { + t.Helper() + + invalidPermissionEvents := make(chan *data_feeds_cache.DataFeedsCacheInvalidUpdatePermission, 1000) + invalidPermissionSub, err := dataFeedsCache.WatchInvalidUpdatePermission(nil, invalidPermissionEvents, nil) + require.NoError(t, err) + + ctx, cancel := context.WithCancel(t.Context()) + done := make(chan struct{}) + closeFunc := func() { + cancel() + <-done + } + t.Cleanup(closeFunc) + + go func() { + defer close(done) + for { + select { + case <-ctx.Done(): + return + case err := <-invalidPermissionSub.Err(): + assert.NoError(t, err) + return + case evt := <-invalidPermissionEvents: + t.Logf("DF Cache received invalid permission event: %+v", evt) + } + } + }() +} + type streamsV1Handler struct { mu sync.Mutex expected map[string]*datastreams.FeedReport diff --git a/core/capabilities/integration_tests/keystone/llo_feed_test.go b/core/capabilities/integration_tests/keystone/llo_feed_test.go index 10bc804428d..348a051fe4c 100644 --- a/core/capabilities/integration_tests/keystone/llo_feed_test.go +++ b/core/capabilities/integration_tests/keystone/llo_feed_test.go @@ -41,7 +41,7 @@ func Test_runLLOWorkflow(t *testing.T) { targetDonConfiguration, err := framework.NewDonConfiguration(framework.NewDonConfigurationParams{Name: "Target", NumNodes: 4, F: 1}) require.NoError(t, err) - workflowDon, consumer, _ := setupKeystoneDons(ctx, t, lggr, workflowDonConfiguration, triggerDonConfiguration, + workflowDon, consumer, _, _ := setupKeystoneDons(ctx, t, lggr, workflowDonConfiguration, triggerDonConfiguration, targetDonConfiguration, triggerSink) // generate a wf job with 10 feeds diff --git a/core/capabilities/integration_tests/keystone/securemint_workflow_test.go b/core/capabilities/integration_tests/keystone/securemint_workflow_test.go index a048004225a..6e803f4c6fc 100644 --- a/core/capabilities/integration_tests/keystone/securemint_workflow_test.go +++ b/core/capabilities/integration_tests/keystone/securemint_workflow_test.go @@ -1,17 +1,20 @@ package keystone import ( + "context" "encoding/json" "fmt" "math/big" "testing" + "time" + "github.com/ethereum/go-ethereum/accounts/abi/bind" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" commoncap "github.com/smartcontractkit/chainlink-common/pkg/capabilities" "github.com/smartcontractkit/chainlink-common/pkg/logger" - feeds_consumer "github.com/smartcontractkit/chainlink-evm/gethwrappers/keystone/generated/feeds_consumer_1_0_0" + data_feeds_cache "github.com/smartcontractkit/chainlink-evm/gethwrappers/data-feeds/generated/data_feeds_cache" "github.com/smartcontractkit/libocr/offchainreporting2plus/ocr3types" ocr2types "github.com/smartcontractkit/libocr/offchainreporting2plus/types" @@ -25,7 +28,7 @@ import ( func Test_runSecureMintWorkflow(t *testing.T) { ctx := t.Context() lggr := logger.Test(t) - chainID := chainSelector(1337) + chainID := chainSelector(16015286601757825753) seqNr := uint64(1) // setup the trigger sink that will receive the trigger event in the securemint-specific format @@ -39,22 +42,25 @@ func Test_runSecureMintWorkflow(t *testing.T) { targetDonConfiguration, err := framework.NewDonConfiguration(framework.NewDonConfigurationParams{Name: "Target", NumNodes: 4, F: 1}) require.NoError(t, err) - workflowDon, consumer, forwarder := setupKeystoneDons(ctx, t, lggr, workflowDonConfiguration, triggerDonConfiguration, + workflowDon, _, dataFeedsCache, forwarder := setupKeystoneDons(ctx, t, lggr, workflowDonConfiguration, triggerDonConfiguration, targetDonConfiguration, triggerSink) - t.Logf("Consumer contract address: %s", consumer.Address().String()) t.Logf("Forwarder contract address: %s", forwarder.Address().String()) + t.Logf("DataFeedsCache contract address: %s", dataFeedsCache.Address().String()) // make sure we know about forwarder errors in case they happen - trackErrorsOnForwarder(t, forwarder, consumer.Address()) + trackErrorsOnForwarder(t, forwarder, dataFeedsCache.Address()) + + // track invalid update permission events on the DF Cache + trackInvalidPermissionEventsOnDFCache(t, dataFeedsCache) // generate a wf job - job := createSecureMintWorkflowJob(t, workflowName, workflowOwnerID, int64(chainID), consumer.Address()) + job := createSecureMintWorkflowJob(t, workflowName, workflowOwnerID, uint64(chainID), dataFeedsCache.Address()) err = workflowDon.AddJob(ctx, &job) require.NoError(t, err) // create the test trigger event in the format expected by the secure mint transmitter mintableAmount := big.NewInt(99) - blockNumber := uint64(10) + blockNumber := big.NewInt(10) triggerEvent := createSecureMintTriggerEvent(t, chainID, seqNr, mintableAmount, blockNumber) t.Logf("Sending triggerEvent: %+v", triggerEvent) @@ -68,23 +74,23 @@ func Test_runSecureMintWorkflow(t *testing.T) { // The price is packed from Mintable (99) and block number (10) expectedUpdates := []secureMintUpdate{ { - feedID: "0x0400000000000005390000000000000000000000000000000000000000000000", + dataID: "0x04de41ba4fc9d91ad900000000000000", // 0x4 + 16015286601757825753 as bytes + right padded with 0s mintableAmount: mintableAmount, blockNumber: blockNumber, }, } - h := newSecureMintHandler(expectedUpdates, uint32(blockNumber)) // currently the secure mint aggregator uses the block number as timestamp - waitForConsumerReports(t, consumer, h) + h := newSecureMintHandler(expectedUpdates, blockNumber) // currently the secure mint aggregator uses the block number as timestamp + waitForDataFeedsCacheReports(t, dataFeedsCache, h) } type secureMintUpdate struct { - feedID string + dataID string mintableAmount *big.Int - blockNumber uint64 + blockNumber *big.Int } // chainSelector is mimicked after the por plugin, which mimics it from the chain-selectors repo -type chainSelector int64 +type chainSelector uint64 // secureMintReport is mimicked after the report type of the por plugin, see its repo for more details type secureMintReport struct { @@ -114,7 +120,7 @@ type secureMintReport struct { // triggerResponse := capabilities.TriggerResponse{ // Event: event, // } -func createSecureMintTriggerEvent(t *testing.T, chainID chainSelector, seqNr uint64, mintable *big.Int, blockNumber uint64) *values.Map { +func createSecureMintTriggerEvent(t *testing.T, chainID chainSelector, seqNr uint64, mintable *big.Int, blockNumber *big.Int) *values.Map { // Create mock signatures (in a real scenario, these would be actual OCR signatures) sigs := []commoncap.OCRAttributedOnchainSignature{ { @@ -131,7 +137,7 @@ func createSecureMintTriggerEvent(t *testing.T, chainID chainSelector, seqNr uin secureMintReport := &secureMintReport{ ConfigDigest: ocr2types.ConfigDigest(configDigest), SeqNr: seqNr, - Block: blockNumber, + Block: blockNumber.Uint64(), Mintable: mintable, } @@ -161,14 +167,14 @@ func createSecureMintTriggerEvent(t *testing.T, chainID chainSelector, seqNr uin // produced by a workflow using the secure mint trigger and aggregator type secureMintHandler struct { expected []secureMintUpdate - ts uint32 // unix timestamp in seconds + ts *big.Int found map[string]struct{} } -func newSecureMintHandler(expected []secureMintUpdate, ts uint32) *secureMintHandler { +func newSecureMintHandler(expected []secureMintUpdate, ts *big.Int) *secureMintHandler { found := make(map[string]struct{}) for _, update := range expected { - found[update.feedID] = struct{}{} + found[update.dataID] = struct{}{} } return &secureMintHandler{ expected: expected, @@ -177,43 +183,44 @@ func newSecureMintHandler(expected []secureMintUpdate, ts uint32) *secureMintHan } } -// Implement the feedReceivedHandler interface -// to handle the received feeds -func (h *secureMintHandler) handleFeedReceived(t *testing.T, event *feeds_consumer.KeystoneFeedsConsumerFeedReceived) (done bool) { - t.Logf("handling event for feedID %x: %+v", event.FeedId[:], event) +// Implement the dataFeedsCacheHandler interface +// to handle the received feeds from DataFeedsCache +func (h *secureMintHandler) handleDecimalReportUpdated(t *testing.T, event *data_feeds_cache.DataFeedsCacheDecimalReportUpdated) (done bool) { + t.Logf("handling event for dataID %x: %+v", event.DataId[:], event) - // Convert feed ID to string for comparison - feedIDStr := fmt.Sprintf("0x%x", event.FeedId[:]) + // Convert data ID to string for comparison (DataFeedsCache uses bytes16 dataId instead of bytes32 feedId) + dataIDStr := fmt.Sprintf("0x%x", event.DataId[:]) - // Find the expected update for this feed ID + // Find the expected update for this data ID var expectedUpdate *secureMintUpdate for _, update := range h.expected { - if update.feedID == feedIDStr { + if update.dataID == dataIDStr { expectedUpdate = &update break } } - require.NotNil(t, expectedUpdate, "feedID %s not found in expected updates", feedIDStr) + require.NotNil(t, expectedUpdate, "dataID %s not found in expected updates", dataIDStr) mintableMask := new(big.Int).Sub(new(big.Int).Lsh(big.NewInt(1), 128), big.NewInt(1)) - extractedMintable := new(big.Int).And(event.Price, mintableMask) + extractedMintable := new(big.Int).And(event.Answer, mintableMask) t.Logf("extractedMintable: %d", extractedMintable) assert.Equalf(t, expectedUpdate.mintableAmount, extractedMintable, "mintable amount mismatch: expected %d, got %d", expectedUpdate.mintableAmount, extractedMintable) // Extract block number from bits 128-191 blockNumberMask := new(big.Int).Lsh(new(big.Int).Sub(new(big.Int).Lsh(big.NewInt(1), 64), big.NewInt(1)), 128) - extractedBlockNumber := new(big.Int).And(event.Price, blockNumberMask) + extractedBlockNumber := new(big.Int).And(event.Answer, blockNumberMask) extractedBlockNumber = new(big.Int).Rsh(extractedBlockNumber, 128) t.Logf("extractedBlockNumber: %d", extractedBlockNumber) - assert.Equalf(t, expectedUpdate.blockNumber, extractedBlockNumber.Uint64(), "block number mismatch: expected %d, got %d", expectedUpdate.blockNumber, extractedBlockNumber.Uint64()) + assert.Equalf(t, expectedUpdate.blockNumber, extractedBlockNumber, "block number mismatch: expected %d, got %d", expectedUpdate.blockNumber, extractedBlockNumber.Uint64()) assert.Equalf(t, h.ts, event.Timestamp, "timestamp mismatch: expected %d, got %d", h.ts, event.Timestamp) // Mark this feed as found - delete(h.found, expectedUpdate.feedID) + delete(h.found, expectedUpdate.dataID) // Return true if all expected feeds have been found + t.Logf("found %d of %d expected feeds, left: %+v, expected: %+v", len(h.expected)-len(h.found), len(h.expected), h.found, h.expected) return len(h.found) == 0 } @@ -221,3 +228,33 @@ func (h *secureMintHandler) handleDone(t *testing.T) { t.Logf("found %d of %d expected feeds", len(h.expected)-len(h.found), len(h.expected)) require.Empty(t, h.found, "not all expected feeds were received") } + +// Interface for DataFeedsCache event handling +type dataFeedsCacheHandler interface { + handleDecimalReportUpdated(t *testing.T, event *data_feeds_cache.DataFeedsCacheDecimalReportUpdated) (done bool) + handleDone(t *testing.T) +} + +// waitForDataFeedsCacheReports waits for DecimalReportUpdated events from DataFeedsCache contract +func waitForDataFeedsCacheReports(t *testing.T, dataFeedsCache *data_feeds_cache.DataFeedsCache, h dataFeedsCacheHandler) { + reportsReceived := make(chan *data_feeds_cache.DataFeedsCacheDecimalReportUpdated, 1000) + reportsSub, err := dataFeedsCache.WatchDecimalReportUpdated(&bind.WatchOpts{}, reportsReceived, nil, nil, nil) + require.NoError(t, err) + ctx := t.Context() + ctx, cancel := context.WithTimeout(ctx, 30*time.Second) + defer cancel() + for { + select { + case <-ctx.Done(): + h.handleDone(t) + t.Fatalf("timed out waiting for data feeds cache reports") + case err := <-reportsSub.Err(): + require.NoError(t, err) + case report := <-reportsReceived: + done := h.handleDecimalReportUpdated(t, report) + if done { + return + } + } + } +} diff --git a/core/capabilities/integration_tests/keystone/setup.go b/core/capabilities/integration_tests/keystone/setup.go index 0a0abc0395d..81f8265ff58 100644 --- a/core/capabilities/integration_tests/keystone/setup.go +++ b/core/capabilities/integration_tests/keystone/setup.go @@ -18,6 +18,7 @@ import ( "github.com/smartcontractkit/chainlink-common/pkg/logger" "github.com/smartcontractkit/chainlink-common/pkg/services/servicetest" v3 "github.com/smartcontractkit/chainlink-common/pkg/types/mercury/v3" + data_feeds_cache "github.com/smartcontractkit/chainlink-evm/gethwrappers/data-feeds/generated/data_feeds_cache" feeds_consumer "github.com/smartcontractkit/chainlink-evm/gethwrappers/keystone/generated/feeds_consumer_1_0_0" forwarder "github.com/smartcontractkit/chainlink-evm/gethwrappers/keystone/generated/forwarder_1_0_0" @@ -35,13 +36,14 @@ func setupKeystoneDons(ctx context.Context, t *testing.T, lggr logger.Logger, workflowDonInfo framework.DonConfiguration, triggerDonInfo framework.DonConfiguration, targetDonInfo framework.DonConfiguration, - trigger framework.TriggerFactory) (workflowDon *framework.DON, consumer *feeds_consumer.KeystoneFeedsConsumer, forwarder *forwarder.KeystoneForwarder) { + trigger framework.TriggerFactory) (workflowDon *framework.DON, consumer *feeds_consumer.KeystoneFeedsConsumer, dataFeedsCache *data_feeds_cache.DataFeedsCache, forwarder *forwarder.KeystoneForwarder) { donContext := framework.CreateDonContext(ctx, t) workflowDon = createKeystoneWorkflowDon(ctx, t, lggr, workflowDonInfo, triggerDonInfo, targetDonInfo, donContext) forwarderAddr, forwarder := SetupForwarderContract(t, workflowDon, donContext.EthBlockchain) _, consumer = SetupConsumerContract(t, donContext.EthBlockchain, forwarderAddr, workflowOwnerID, workflowName) + _, dataFeedsCache = SetupDataFeedsCacheContract(t, donContext.EthBlockchain, forwarderAddr, workflowOwnerID, workflowName) writeTargetDon := createKeystoneWriteTargetDon(ctx, t, lggr, targetDonInfo, donContext, forwarderAddr) @@ -53,7 +55,7 @@ func setupKeystoneDons(ctx context.Context, t *testing.T, lggr logger.Logger, donContext.WaitForCapabilitiesToBeExposed(t, workflowDon, triggerDon, writeTargetDon) - return workflowDon, consumer, forwarder + return workflowDon, consumer, dataFeedsCache, forwarder } func createKeystoneTriggerDon(ctx context.Context, t *testing.T, lggr logger.Logger, triggerDonInfo framework.DonConfiguration, diff --git a/core/capabilities/integration_tests/keystone/workflow.go b/core/capabilities/integration_tests/keystone/workflow.go index a6df2c076ef..a29e299e771 100644 --- a/core/capabilities/integration_tests/keystone/workflow.go +++ b/core/capabilities/integration_tests/keystone/workflow.go @@ -161,14 +161,14 @@ consensus: "{{.ChainSelector}}" # CHAIN_ID_FOR_WRITE_TARGET: NEW Param, to match write target encoder: "EVM" encoder_config: - abi: "(bytes32 FeedID, uint224 Price, uint32 Timestamp)[] Reports" + abi: "(bytes16 DataID, uint32 Timestamp, uint224 Answer)[] Reports" targets: - id: "write_geth-testnet@1.0.0" inputs: signed_report: $(secure-mint-consensus.outputs) config: - address: "{{.ConsumerAddr}}" + address: "{{.DFCacheAddr}}" params: ["$(report)"] abi: "receive(report bytes)" deltaStage: 1s @@ -178,15 +178,15 @@ targets: type secureMintWorkflowData struct { WorkflowName string WorkflowOwner string - ChainSelector int64 - ConsumerAddr string + ChainSelector uint64 + DFCacheAddr string } func createSecureMintWorkflowJob(t *testing.T, workflowName string, workflowOwner string, - chainSelector int64, - consumerAddr common.Address) job.Job { + chainSelector uint64, + dfCacheAddr common.Address) job.Job { tmpl, err := template.New("secureMintWorkflow").Parse(secureMintWorkflowTemplate) require.NoError(t, err) @@ -194,7 +194,7 @@ func createSecureMintWorkflowJob(t *testing.T, WorkflowName: workflowName, WorkflowOwner: workflowOwner, ChainSelector: chainSelector, - ConsumerAddr: consumerAddr.String(), + DFCacheAddr: dfCacheAddr.String(), } var buf bytes.Buffer diff --git a/core/scripts/go.mod b/core/scripts/go.mod index dc860684894..365a12cbf4e 100644 --- a/core/scripts/go.mod +++ b/core/scripts/go.mod @@ -47,7 +47,7 @@ require ( github.com/shopspring/decimal v1.4.0 github.com/smartcontractkit/chainlink-automation v0.8.1 github.com/smartcontractkit/chainlink-ccip v0.1.1-solana.0.20250811210745-6b815a3f06f7 - github.com/smartcontractkit/chainlink-common v0.8.1-0.20250807102811-ab73d0221b81 + github.com/smartcontractkit/chainlink-common v0.8.1-0.20250807180037-dabbeb9c0d75 github.com/smartcontractkit/chainlink-common/pkg/values v0.0.0-20250806152407-159881c7589c github.com/smartcontractkit/chainlink-data-streams v0.1.2 github.com/smartcontractkit/chainlink-deployments-framework v0.21.0 diff --git a/core/scripts/go.sum b/core/scripts/go.sum index 2859b1e0b14..7ca5686dd2b 100644 --- a/core/scripts/go.sum +++ b/core/scripts/go.sum @@ -1526,8 +1526,8 @@ github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250805210128-7 github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250805210128-7f8a0f403c3a/go.mod h1:Ve1xD71bl193YIZQEoJMmBqLGQJdNs29bwbuObwvbhQ= github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20250805210128-7f8a0f403c3a h1:38dAlTPRUQHZus5dCnBnQyf/V4oYn0p2svWlbPgHDQ4= github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20250805210128-7f8a0f403c3a/go.mod h1:xtZNi6pOKdC3sLvokDvXOhgHzT+cyBqH/gWwvxTxqrg= -github.com/smartcontractkit/chainlink-common v0.8.1-0.20250807102811-ab73d0221b81 h1:IU3XSIsFuUnnhrecqckrLVV1+bn2cNY9rxx3KBUwG/8= -github.com/smartcontractkit/chainlink-common v0.8.1-0.20250807102811-ab73d0221b81/go.mod h1:e4280rM099IzfjaPG9uxHdjXgY79cURgenW7+obyAq0= +github.com/smartcontractkit/chainlink-common v0.8.1-0.20250807180037-dabbeb9c0d75 h1:HPoUyLMxJzGKGpvmRtPzTAsu8+R0hH6FDCpdS2wr8zo= +github.com/smartcontractkit/chainlink-common v0.8.1-0.20250807180037-dabbeb9c0d75/go.mod h1:e4280rM099IzfjaPG9uxHdjXgY79cURgenW7+obyAq0= github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.1 h1:ca2z5OXgnbBPQRxpwXwBLJsUA1+cAp5ncfW4Ssvd6eY= github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.1/go.mod h1:NZv/qKYGFRnkjOYBouajnDfFoZ+WDa6H2KNmSf1dnKc= github.com/smartcontractkit/chainlink-common/pkg/monitoring v0.0.0-20250415235644-8703639403c7 h1:9wh1G+WbXwPVqf0cfSRSgwIcaXTQgvYezylEAfwmrbw= diff --git a/deployment/go.mod b/deployment/go.mod index c0276025db4..4f579902d14 100644 --- a/deployment/go.mod +++ b/deployment/go.mod @@ -35,7 +35,7 @@ require ( github.com/smartcontractkit/chainlink-ccip v0.1.1-solana.0.20250811210745-6b815a3f06f7 github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250805210128-7f8a0f403c3a github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20250805210128-7f8a0f403c3a - github.com/smartcontractkit/chainlink-common v0.8.1-0.20250807102811-ab73d0221b81 + github.com/smartcontractkit/chainlink-common v0.8.1-0.20250807180037-dabbeb9c0d75 github.com/smartcontractkit/chainlink-common/pkg/values v0.0.0-20250806152407-159881c7589c github.com/smartcontractkit/chainlink-deployments-framework v0.21.0 github.com/smartcontractkit/chainlink-evm v0.2.2 diff --git a/deployment/go.sum b/deployment/go.sum index 3059655072d..8b3a0ee8ef4 100644 --- a/deployment/go.sum +++ b/deployment/go.sum @@ -1255,8 +1255,8 @@ github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250805210128-7 github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250805210128-7f8a0f403c3a/go.mod h1:Ve1xD71bl193YIZQEoJMmBqLGQJdNs29bwbuObwvbhQ= github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20250805210128-7f8a0f403c3a h1:38dAlTPRUQHZus5dCnBnQyf/V4oYn0p2svWlbPgHDQ4= github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20250805210128-7f8a0f403c3a/go.mod h1:xtZNi6pOKdC3sLvokDvXOhgHzT+cyBqH/gWwvxTxqrg= -github.com/smartcontractkit/chainlink-common v0.8.1-0.20250807102811-ab73d0221b81 h1:IU3XSIsFuUnnhrecqckrLVV1+bn2cNY9rxx3KBUwG/8= -github.com/smartcontractkit/chainlink-common v0.8.1-0.20250807102811-ab73d0221b81/go.mod h1:e4280rM099IzfjaPG9uxHdjXgY79cURgenW7+obyAq0= +github.com/smartcontractkit/chainlink-common v0.8.1-0.20250807180037-dabbeb9c0d75 h1:HPoUyLMxJzGKGpvmRtPzTAsu8+R0hH6FDCpdS2wr8zo= +github.com/smartcontractkit/chainlink-common v0.8.1-0.20250807180037-dabbeb9c0d75/go.mod h1:e4280rM099IzfjaPG9uxHdjXgY79cURgenW7+obyAq0= github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.1 h1:ca2z5OXgnbBPQRxpwXwBLJsUA1+cAp5ncfW4Ssvd6eY= github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.1/go.mod h1:NZv/qKYGFRnkjOYBouajnDfFoZ+WDa6H2KNmSf1dnKc= github.com/smartcontractkit/chainlink-common/pkg/monitoring v0.0.0-20250415235644-8703639403c7 h1:9wh1G+WbXwPVqf0cfSRSgwIcaXTQgvYezylEAfwmrbw= diff --git a/go.mod b/go.mod index 88115374112..bf1f1a556f4 100644 --- a/go.mod +++ b/go.mod @@ -84,7 +84,7 @@ require ( github.com/smartcontractkit/chainlink-ccip v0.1.1-solana.0.20250811210745-6b815a3f06f7 github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250805210128-7f8a0f403c3a github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20250804184440-c0506474fc44 - github.com/smartcontractkit/chainlink-common v0.8.1-0.20250807102811-ab73d0221b81 + github.com/smartcontractkit/chainlink-common v0.8.1-0.20250807180037-dabbeb9c0d75 github.com/smartcontractkit/chainlink-common/pkg/values v0.0.0-20250806152407-159881c7589c github.com/smartcontractkit/chainlink-common/pkg/workflows/sdk/v2/pb v0.0.0-20250806155403-1d805e639a0f github.com/smartcontractkit/chainlink-data-streams v0.1.2 diff --git a/go.sum b/go.sum index baebd4e6e00..231c81703c6 100644 --- a/go.sum +++ b/go.sum @@ -1086,8 +1086,8 @@ github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250805210128-7 github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250805210128-7f8a0f403c3a/go.mod h1:Ve1xD71bl193YIZQEoJMmBqLGQJdNs29bwbuObwvbhQ= github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20250804184440-c0506474fc44 h1:S00lus9RPu5JuxKRtGEET+aIUfASahHpTRV5RgPARSI= github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20250804184440-c0506474fc44/go.mod h1:xtZNi6pOKdC3sLvokDvXOhgHzT+cyBqH/gWwvxTxqrg= -github.com/smartcontractkit/chainlink-common v0.8.1-0.20250807102811-ab73d0221b81 h1:IU3XSIsFuUnnhrecqckrLVV1+bn2cNY9rxx3KBUwG/8= -github.com/smartcontractkit/chainlink-common v0.8.1-0.20250807102811-ab73d0221b81/go.mod h1:e4280rM099IzfjaPG9uxHdjXgY79cURgenW7+obyAq0= +github.com/smartcontractkit/chainlink-common v0.8.1-0.20250807180037-dabbeb9c0d75 h1:HPoUyLMxJzGKGpvmRtPzTAsu8+R0hH6FDCpdS2wr8zo= +github.com/smartcontractkit/chainlink-common v0.8.1-0.20250807180037-dabbeb9c0d75/go.mod h1:e4280rM099IzfjaPG9uxHdjXgY79cURgenW7+obyAq0= github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.1 h1:ca2z5OXgnbBPQRxpwXwBLJsUA1+cAp5ncfW4Ssvd6eY= github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.1/go.mod h1:NZv/qKYGFRnkjOYBouajnDfFoZ+WDa6H2KNmSf1dnKc= github.com/smartcontractkit/chainlink-common/pkg/monitoring v0.0.0-20250415235644-8703639403c7 h1:9wh1G+WbXwPVqf0cfSRSgwIcaXTQgvYezylEAfwmrbw= diff --git a/integration-tests/go.mod b/integration-tests/go.mod index cebcddc94a3..26e93856dc0 100644 --- a/integration-tests/go.mod +++ b/integration-tests/go.mod @@ -50,7 +50,7 @@ require ( github.com/smartcontractkit/chainlink-ccip v0.1.1-solana.0.20250811210745-6b815a3f06f7 github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250805210128-7f8a0f403c3a github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20250805210128-7f8a0f403c3a - github.com/smartcontractkit/chainlink-common v0.8.1-0.20250807102811-ab73d0221b81 + github.com/smartcontractkit/chainlink-common v0.8.1-0.20250807180037-dabbeb9c0d75 github.com/smartcontractkit/chainlink-deployments-framework v0.21.0 github.com/smartcontractkit/chainlink-evm v0.2.2 github.com/smartcontractkit/chainlink-evm/gethwrappers v0.0.0-20250808121824-2c3544aab8f3 diff --git a/integration-tests/go.sum b/integration-tests/go.sum index 94308809f8c..5e6bbcb5659 100644 --- a/integration-tests/go.sum +++ b/integration-tests/go.sum @@ -1517,8 +1517,8 @@ github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250805210128-7 github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250805210128-7f8a0f403c3a/go.mod h1:Ve1xD71bl193YIZQEoJMmBqLGQJdNs29bwbuObwvbhQ= github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20250805210128-7f8a0f403c3a h1:38dAlTPRUQHZus5dCnBnQyf/V4oYn0p2svWlbPgHDQ4= github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20250805210128-7f8a0f403c3a/go.mod h1:xtZNi6pOKdC3sLvokDvXOhgHzT+cyBqH/gWwvxTxqrg= -github.com/smartcontractkit/chainlink-common v0.8.1-0.20250807102811-ab73d0221b81 h1:IU3XSIsFuUnnhrecqckrLVV1+bn2cNY9rxx3KBUwG/8= -github.com/smartcontractkit/chainlink-common v0.8.1-0.20250807102811-ab73d0221b81/go.mod h1:e4280rM099IzfjaPG9uxHdjXgY79cURgenW7+obyAq0= +github.com/smartcontractkit/chainlink-common v0.8.1-0.20250807180037-dabbeb9c0d75 h1:HPoUyLMxJzGKGpvmRtPzTAsu8+R0hH6FDCpdS2wr8zo= +github.com/smartcontractkit/chainlink-common v0.8.1-0.20250807180037-dabbeb9c0d75/go.mod h1:e4280rM099IzfjaPG9uxHdjXgY79cURgenW7+obyAq0= github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.1 h1:ca2z5OXgnbBPQRxpwXwBLJsUA1+cAp5ncfW4Ssvd6eY= github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.1/go.mod h1:NZv/qKYGFRnkjOYBouajnDfFoZ+WDa6H2KNmSf1dnKc= github.com/smartcontractkit/chainlink-common/pkg/monitoring v0.0.0-20250415235644-8703639403c7 h1:9wh1G+WbXwPVqf0cfSRSgwIcaXTQgvYezylEAfwmrbw= diff --git a/integration-tests/load/go.mod b/integration-tests/load/go.mod index 5c4037bf4fd..56b3214c1da 100644 --- a/integration-tests/load/go.mod +++ b/integration-tests/load/go.mod @@ -30,7 +30,7 @@ require ( github.com/smartcontractkit/chainlink-ccip v0.1.1-solana.0.20250811210745-6b815a3f06f7 github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250805210128-7f8a0f403c3a github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20250805210128-7f8a0f403c3a - github.com/smartcontractkit/chainlink-common v0.8.1-0.20250807102811-ab73d0221b81 + github.com/smartcontractkit/chainlink-common v0.8.1-0.20250807180037-dabbeb9c0d75 github.com/smartcontractkit/chainlink-deployments-framework v0.21.0 github.com/smartcontractkit/chainlink-evm v0.2.2 github.com/smartcontractkit/chainlink-evm/gethwrappers v0.0.0-20250808121824-2c3544aab8f3 diff --git a/integration-tests/load/go.sum b/integration-tests/load/go.sum index 926ed19646d..b662bb9a88c 100644 --- a/integration-tests/load/go.sum +++ b/integration-tests/load/go.sum @@ -1493,8 +1493,8 @@ github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250805210128-7 github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250805210128-7f8a0f403c3a/go.mod h1:Ve1xD71bl193YIZQEoJMmBqLGQJdNs29bwbuObwvbhQ= github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20250805210128-7f8a0f403c3a h1:38dAlTPRUQHZus5dCnBnQyf/V4oYn0p2svWlbPgHDQ4= github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20250805210128-7f8a0f403c3a/go.mod h1:xtZNi6pOKdC3sLvokDvXOhgHzT+cyBqH/gWwvxTxqrg= -github.com/smartcontractkit/chainlink-common v0.8.1-0.20250807102811-ab73d0221b81 h1:IU3XSIsFuUnnhrecqckrLVV1+bn2cNY9rxx3KBUwG/8= -github.com/smartcontractkit/chainlink-common v0.8.1-0.20250807102811-ab73d0221b81/go.mod h1:e4280rM099IzfjaPG9uxHdjXgY79cURgenW7+obyAq0= +github.com/smartcontractkit/chainlink-common v0.8.1-0.20250807180037-dabbeb9c0d75 h1:HPoUyLMxJzGKGpvmRtPzTAsu8+R0hH6FDCpdS2wr8zo= +github.com/smartcontractkit/chainlink-common v0.8.1-0.20250807180037-dabbeb9c0d75/go.mod h1:e4280rM099IzfjaPG9uxHdjXgY79cURgenW7+obyAq0= github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.1 h1:ca2z5OXgnbBPQRxpwXwBLJsUA1+cAp5ncfW4Ssvd6eY= github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.1/go.mod h1:NZv/qKYGFRnkjOYBouajnDfFoZ+WDa6H2KNmSf1dnKc= github.com/smartcontractkit/chainlink-common/pkg/monitoring v0.0.0-20250415235644-8703639403c7 h1:9wh1G+WbXwPVqf0cfSRSgwIcaXTQgvYezylEAfwmrbw= diff --git a/package.json b/package.json index ee3c39bca43..72fc15e78d3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "chainlink", - "version": "2.26.0", + "version": "2.26.1", "description": "node of the decentralized oracle network, bridging on and off-chain computation", "main": "index.js", "scripts": { diff --git a/system-tests/lib/go.mod b/system-tests/lib/go.mod index 2777f3f2c1f..c339020a9f0 100644 --- a/system-tests/lib/go.mod +++ b/system-tests/lib/go.mod @@ -27,7 +27,7 @@ require ( github.com/rs/zerolog v1.33.0 github.com/scylladb/go-reflectx v1.0.1 github.com/smartcontractkit/chain-selectors v1.0.66 - github.com/smartcontractkit/chainlink-common v0.8.1-0.20250807102811-ab73d0221b81 + github.com/smartcontractkit/chainlink-common v0.8.1-0.20250807180037-dabbeb9c0d75 github.com/smartcontractkit/chainlink-common/pkg/values v0.0.0-20250806152407-159881c7589c github.com/smartcontractkit/chainlink-deployments-framework v0.21.0 github.com/smartcontractkit/chainlink-evm v0.2.2 diff --git a/system-tests/lib/go.sum b/system-tests/lib/go.sum index d17fee780ef..5ce89465e52 100644 --- a/system-tests/lib/go.sum +++ b/system-tests/lib/go.sum @@ -1284,8 +1284,8 @@ github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250805210128-7 github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250805210128-7f8a0f403c3a/go.mod h1:Ve1xD71bl193YIZQEoJMmBqLGQJdNs29bwbuObwvbhQ= github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20250805210128-7f8a0f403c3a h1:38dAlTPRUQHZus5dCnBnQyf/V4oYn0p2svWlbPgHDQ4= github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20250805210128-7f8a0f403c3a/go.mod h1:xtZNi6pOKdC3sLvokDvXOhgHzT+cyBqH/gWwvxTxqrg= -github.com/smartcontractkit/chainlink-common v0.8.1-0.20250807102811-ab73d0221b81 h1:IU3XSIsFuUnnhrecqckrLVV1+bn2cNY9rxx3KBUwG/8= -github.com/smartcontractkit/chainlink-common v0.8.1-0.20250807102811-ab73d0221b81/go.mod h1:e4280rM099IzfjaPG9uxHdjXgY79cURgenW7+obyAq0= +github.com/smartcontractkit/chainlink-common v0.8.1-0.20250807180037-dabbeb9c0d75 h1:HPoUyLMxJzGKGpvmRtPzTAsu8+R0hH6FDCpdS2wr8zo= +github.com/smartcontractkit/chainlink-common v0.8.1-0.20250807180037-dabbeb9c0d75/go.mod h1:e4280rM099IzfjaPG9uxHdjXgY79cURgenW7+obyAq0= github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.1 h1:ca2z5OXgnbBPQRxpwXwBLJsUA1+cAp5ncfW4Ssvd6eY= github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.1/go.mod h1:NZv/qKYGFRnkjOYBouajnDfFoZ+WDa6H2KNmSf1dnKc= github.com/smartcontractkit/chainlink-common/pkg/monitoring v0.0.0-20250415235644-8703639403c7 h1:9wh1G+WbXwPVqf0cfSRSgwIcaXTQgvYezylEAfwmrbw= diff --git a/system-tests/tests/go.mod b/system-tests/tests/go.mod index 25acbef1cf6..d9141c4e5a6 100644 --- a/system-tests/tests/go.mod +++ b/system-tests/tests/go.mod @@ -23,7 +23,7 @@ require ( github.com/prometheus/common v0.65.0 github.com/rs/zerolog v1.33.0 github.com/shopspring/decimal v1.4.0 - github.com/smartcontractkit/chainlink-common v0.8.1-0.20250807102811-ab73d0221b81 + github.com/smartcontractkit/chainlink-common v0.8.1-0.20250807180037-dabbeb9c0d75 github.com/smartcontractkit/chainlink-common/pkg/values v0.0.0-20250806152407-159881c7589c github.com/smartcontractkit/chainlink-data-streams v0.1.2 github.com/smartcontractkit/chainlink-deployments-framework v0.21.0 diff --git a/system-tests/tests/go.sum b/system-tests/tests/go.sum index f9872bbd956..63204020b07 100644 --- a/system-tests/tests/go.sum +++ b/system-tests/tests/go.sum @@ -1495,8 +1495,8 @@ github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250805210128-7 github.com/smartcontractkit/chainlink-ccip/chains/solana v0.0.0-20250805210128-7f8a0f403c3a/go.mod h1:Ve1xD71bl193YIZQEoJMmBqLGQJdNs29bwbuObwvbhQ= github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20250805210128-7f8a0f403c3a h1:38dAlTPRUQHZus5dCnBnQyf/V4oYn0p2svWlbPgHDQ4= github.com/smartcontractkit/chainlink-ccip/chains/solana/gobindings v0.0.0-20250805210128-7f8a0f403c3a/go.mod h1:xtZNi6pOKdC3sLvokDvXOhgHzT+cyBqH/gWwvxTxqrg= -github.com/smartcontractkit/chainlink-common v0.8.1-0.20250807102811-ab73d0221b81 h1:IU3XSIsFuUnnhrecqckrLVV1+bn2cNY9rxx3KBUwG/8= -github.com/smartcontractkit/chainlink-common v0.8.1-0.20250807102811-ab73d0221b81/go.mod h1:e4280rM099IzfjaPG9uxHdjXgY79cURgenW7+obyAq0= +github.com/smartcontractkit/chainlink-common v0.8.1-0.20250807180037-dabbeb9c0d75 h1:HPoUyLMxJzGKGpvmRtPzTAsu8+R0hH6FDCpdS2wr8zo= +github.com/smartcontractkit/chainlink-common v0.8.1-0.20250807180037-dabbeb9c0d75/go.mod h1:e4280rM099IzfjaPG9uxHdjXgY79cURgenW7+obyAq0= github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.1 h1:ca2z5OXgnbBPQRxpwXwBLJsUA1+cAp5ncfW4Ssvd6eY= github.com/smartcontractkit/chainlink-common/pkg/chipingress v0.0.1/go.mod h1:NZv/qKYGFRnkjOYBouajnDfFoZ+WDa6H2KNmSf1dnKc= github.com/smartcontractkit/chainlink-common/pkg/monitoring v0.0.0-20250415235644-8703639403c7 h1:9wh1G+WbXwPVqf0cfSRSgwIcaXTQgvYezylEAfwmrbw=