From 71ac32c03333884a9c5f6fccbb0b880fef802c0b Mon Sep 17 00:00:00 2001 From: ilija Date: Fri, 1 Nov 2024 17:09:04 +0100 Subject: [PATCH] Improve CCIP CR QueryKey usage and fix CR data word index calculation --- .changeset/good-roses-smash.md | 5 ++ .../ccipreader/ccipreader_test.go | 18 ++++ .../ccip/configs/evm/contract_reader.go | 18 ++++ core/scripts/go.mod | 2 +- core/scripts/go.sum | 4 +- core/services/relay/evm/chain_reader.go | 89 ++++++++++++------- .../chain_components_interface_tester.go | 1 + .../relay/evm/evmtesting/run_tests.go | 20 +++++ deployment/go.mod | 2 +- deployment/go.sum | 4 +- go.mod | 2 +- go.sum | 4 +- integration-tests/go.mod | 2 +- integration-tests/go.sum | 4 +- integration-tests/load/go.mod | 2 +- integration-tests/load/go.sum | 4 +- 16 files changed, 133 insertions(+), 48 deletions(-) create mode 100644 .changeset/good-roses-smash.md diff --git a/.changeset/good-roses-smash.md b/.changeset/good-roses-smash.md new file mode 100644 index 00000000000..3efa2dd439f --- /dev/null +++ b/.changeset/good-roses-smash.md @@ -0,0 +1,5 @@ +--- +"chainlink": minor +--- + +#internal Fix Contract Reader data word index calculation and change ccip contract reader config for more optimal querying. diff --git a/core/capabilities/ccip/ccip_integration_tests/ccipreader/ccipreader_test.go b/core/capabilities/ccip/ccip_integration_tests/ccipreader/ccipreader_test.go index 9fda8e52393..39aa322e0a2 100644 --- a/core/capabilities/ccip/ccip_integration_tests/ccipreader/ccipreader_test.go +++ b/core/capabilities/ccip/ccip_integration_tests/ccipreader/ccipreader_test.go @@ -165,6 +165,17 @@ func TestCCIPReader_ExecutedMessageRanges(t *testing.T) { consts.EventNameExecutionStateChanged: { ChainSpecificName: consts.EventNameExecutionStateChanged, ReadType: evmtypes.Event, + EventDefinitions: &evmtypes.EventDefinitions{ + GenericTopicNames: map[string]string{ + "sourceChainSelector": consts.EventAttributeSourceChain, + "sequenceNumber": consts.EventAttributeSequenceNumber, + }, + GenericDataWordDetails: map[string]evmtypes.DataWordDetail{ + consts.EventAttributeState: { + Name: "state", + }, + }, + }, }, }, }, @@ -236,6 +247,13 @@ func TestCCIPReader_MsgsBetweenSeqNums(t *testing.T) { consts.EventNameCCIPMessageSent: { ChainSpecificName: "CCIPMessageSent", ReadType: evmtypes.Event, + EventDefinitions: &evmtypes.EventDefinitions{ + GenericDataWordDetails: map[string]evmtypes.DataWordDetail{ + consts.EventAttributeSourceChain: {Name: "message.header.sourceChainSelector"}, + consts.EventAttributeDestChain: {Name: "message.header.destChainSelector"}, + consts.EventAttributeSequenceNumber: {Name: "message.header.sequenceNumber"}, + }, + }, }, }, }, diff --git a/core/capabilities/ccip/configs/evm/contract_reader.go b/core/capabilities/ccip/configs/evm/contract_reader.go index 20bab0ac82a..7cbc4a9fa8d 100644 --- a/core/capabilities/ccip/configs/evm/contract_reader.go +++ b/core/capabilities/ccip/configs/evm/contract_reader.go @@ -95,6 +95,17 @@ var DestReaderConfig = evmrelaytypes.ChainReaderConfig{ consts.EventNameExecutionStateChanged: { ChainSpecificName: mustGetEventName(consts.EventNameExecutionStateChanged, offrampABI), ReadType: evmrelaytypes.Event, + EventDefinitions: &evmrelaytypes.EventDefinitions{ + GenericTopicNames: map[string]string{ + "sourceChainSelector": consts.EventAttributeSourceChain, + "sequenceNumber": consts.EventAttributeSequenceNumber, + }, + GenericDataWordDetails: map[string]evmrelaytypes.DataWordDetail{ + consts.EventAttributeState: { + Name: "state", + }, + }, + }, }, }, }, @@ -210,6 +221,13 @@ var SourceReaderConfig = evmrelaytypes.ChainReaderConfig{ consts.EventNameCCIPMessageSent: { ChainSpecificName: mustGetEventName("CCIPMessageSent", onrampABI), ReadType: evmrelaytypes.Event, + EventDefinitions: &evmrelaytypes.EventDefinitions{ + GenericDataWordDetails: map[string]evmrelaytypes.DataWordDetail{ + consts.EventAttributeSourceChain: {Name: "message.header.sourceChainSelector"}, + consts.EventAttributeDestChain: {Name: "message.header.destChainSelector"}, + consts.EventAttributeSequenceNumber: {Name: "message.header.sequenceNumber"}, + }, + }, }, consts.MethodNameOnRampGetStaticConfig: { ChainSpecificName: mustGetMethodName("getStaticConfig", onrampABI), diff --git a/core/scripts/go.mod b/core/scripts/go.mod index d5100c6f3d2..5ede4448d9f 100644 --- a/core/scripts/go.mod +++ b/core/scripts/go.mod @@ -288,7 +288,7 @@ require ( github.com/shirou/gopsutil/v3 v3.24.3 // indirect github.com/smartcontractkit/ccip-owner-contracts v0.0.0-20240926212305-a6deabdfce86 // indirect github.com/smartcontractkit/chain-selectors v1.0.27 // indirect - github.com/smartcontractkit/chainlink-ccip v0.0.0-20241101132401-00090bf7feb4 // indirect + github.com/smartcontractkit/chainlink-ccip v0.0.0-20241101155858-0cf44c0d3007 // indirect github.com/smartcontractkit/chainlink-cosmos v0.5.2-0.20241017133723-5277829bd53f // indirect github.com/smartcontractkit/chainlink-data-streams v0.1.1-0.20241018134907-a00ba3729b5e // indirect github.com/smartcontractkit/chainlink-feeds v0.1.1 // indirect diff --git a/core/scripts/go.sum b/core/scripts/go.sum index 005d95779ae..76956dd7cee 100644 --- a/core/scripts/go.sum +++ b/core/scripts/go.sum @@ -1090,8 +1090,8 @@ github.com/smartcontractkit/chain-selectors v1.0.27 h1:VE/ftX9Aae4gnw67yR1raKi+3 github.com/smartcontractkit/chain-selectors v1.0.27/go.mod h1:d4Hi+E1zqjy9HqMkjBE5q1vcG9VGgxf5VxiRHfzi2kE= github.com/smartcontractkit/chainlink-automation v0.8.1 h1:sTc9LKpBvcKPc1JDYAmgBc2xpDKBco/Q4h4ydl6+UUU= github.com/smartcontractkit/chainlink-automation v0.8.1/go.mod h1:Iij36PvWZ6blrdC5A/nrQUBuf3MH3JvsBB9sSyc9W08= -github.com/smartcontractkit/chainlink-ccip v0.0.0-20241101132401-00090bf7feb4 h1:+VR9yKhbz+iCtWnCabaCDP18lIqGnk7YvGQIbJYgDrs= -github.com/smartcontractkit/chainlink-ccip v0.0.0-20241101132401-00090bf7feb4/go.mod h1:4adKaHNaxFsRvV/lYfqtbsWyyvIPUMLR0FdOJN/ljis= +github.com/smartcontractkit/chainlink-ccip v0.0.0-20241101155858-0cf44c0d3007 h1:J8WGYWC6sArDG+oj5Nzd5exqDrL1HDpZhg1ofNL+bos= +github.com/smartcontractkit/chainlink-ccip v0.0.0-20241101155858-0cf44c0d3007/go.mod h1:4adKaHNaxFsRvV/lYfqtbsWyyvIPUMLR0FdOJN/ljis= github.com/smartcontractkit/chainlink-common v0.3.1-0.20241101093830-33711d0c3de7 h1:AGi0kAtMRW1zl1h7sGw+3CKO4Nlev6iA08YfEcgJCGs= github.com/smartcontractkit/chainlink-common v0.3.1-0.20241101093830-33711d0c3de7/go.mod h1:TQ9/KKXZ9vr8QAlUquqGpSvDCpR+DtABKPXZY4CiRns= github.com/smartcontractkit/chainlink-cosmos v0.5.2-0.20241017133723-5277829bd53f h1:BwrIaQIx5Iy6eT+DfLhFfK2XqjxRm74mVdlX8gbu4dw= diff --git a/core/services/relay/evm/chain_reader.go b/core/services/relay/evm/chain_reader.go index c734ade1104..8f8e0bdabfb 100644 --- a/core/services/relay/evm/chain_reader.go +++ b/core/services/relay/evm/chain_reader.go @@ -302,7 +302,7 @@ func (cr *chainReader) addEvent(contractName, eventName string, a abi.ABI, chain return fmt.Errorf("%w: event %q doesn't exist", commontypes.ErrInvalidConfig, chainReaderDefinition.ChainSpecificName) } - indexedAsUnIndexedABITypes, indexedTopicsCodecTypes, eventDWs := getEventTypes(event) + indexedAsUnIndexedABITypes, indexedTopicsCodecTypes, dwsDetails := getEventTypes(event) if err := indexedTopicsCodecTypes.Init(); err != nil { return err } @@ -337,7 +337,7 @@ func (cr *chainReader) addEvent(contractName, eventName string, a abi.ABI, chain maps.Copy(codecModifiers, topicsModifiers) // TODO BCFR-44 no dw modifier for now - dataWordsDetails, dWSCodecTypeInfo, initDWQueryingErr := cr.initDWQuerying(contractName, eventName, eventDWs, eventDefinitions.GenericDataWordDetails) + dataWordsDetails, dWSCodecTypeInfo, initDWQueryingErr := cr.initDWQuerying(contractName, eventName, dwsDetails, eventDefinitions.GenericDataWordDetails) if initDWQueryingErr != nil { return fmt.Errorf("failed to init dw querying for event: %q, err: %w", eventName, initDWQueryingErr) } @@ -473,43 +473,61 @@ func (cr *chainReader) addDecoderDef(contractName, itemType string, outputs abi. func getEventTypes(event abi.Event) ([]abi.Argument, types.CodecEntry, map[string]read.DataWordDetail) { indexedAsUnIndexedTypes := make([]abi.Argument, 0, types.MaxTopicFields) indexedTypes := make([]abi.Argument, 0, len(event.Inputs)) - dataWords := make(map[string]read.DataWordDetail) - var dwIndex int - for _, input := range event.Inputs { - if !input.Indexed { - dwIndex = calculateFieldDWIndex(input, event.Name+"."+input.Name, dataWords, dwIndex) - continue + if input.Indexed { + indexedAsUnIndexed := input + indexedAsUnIndexed.Indexed = false + // when presenting the filter off-chain, the caller will provide the unHashed version of the input and CR will hash topics when needed. + indexedAsUnIndexedTypes = append(indexedAsUnIndexedTypes, indexedAsUnIndexed) + indexedTypes = append(indexedTypes, input) } - - indexedAsUnIndexed := input - indexedAsUnIndexed.Indexed = false - // when presenting the filter off-chain, the caller will provide the unHashed version of the input and CR will hash topics when needed. - indexedAsUnIndexedTypes = append(indexedAsUnIndexedTypes, indexedAsUnIndexed) - indexedTypes = append(indexedTypes, input) } - return indexedAsUnIndexedTypes, types.NewCodecEntry(indexedTypes, nil, nil), dataWords + return indexedAsUnIndexedTypes, types.NewCodecEntry(indexedTypes, nil, nil), getDWIndexesWithTypes(event.Name, event.Inputs) } -// calculateFieldDWIndex recursively calculates the indices of all static unindexed fields in the event -// and calculates the offset for all unsearchable / dynamic fields. -func calculateFieldDWIndex(arg abi.Argument, fieldPath string, dataWords map[string]read.DataWordDetail, index int) int { - if isDynamic(arg.Type) { - return index + 1 +func getDWIndexesWithTypes(eventName string, eventInputs abi.Arguments) map[string]read.DataWordDetail { + var dwIndexOffset int + dataWords := make(map[string]read.DataWordDetail) + dynamicQueue := make([]abi.Argument, 0) + + for _, input := range eventInputs.NonIndexed() { + // each dynamic field has an extra field that stores the dwIndexOffset that points to the start of the dynamic data. + if isDynamic(input.Type) { + dynamicQueue = append(dynamicQueue, input) + dwIndexOffset = dwIndexOffset + 1 + } else { + dwIndexOffset = processDWStaticField(input.Type, eventName+"."+input.Name, dataWords, dwIndexOffset) + } } - return processFields(arg.Type, fieldPath, dataWords, index) + processDWDynamicFields(eventName, dataWords, dynamicQueue, dwIndexOffset) + return dataWords +} + +func isDynamic(fieldType abi.Type) bool { + switch fieldType.T { + case abi.StringTy, abi.SliceTy, abi.BytesTy: + return true + case abi.TupleTy: + // If one element in a struct is dynamic, the whole struct is treated as dynamic. + for _, elem := range fieldType.TupleElems { + if isDynamic(*elem) { + return true + } + } + } + return false } -func processFields(fieldType abi.Type, parentFieldPath string, dataWords map[string]read.DataWordDetail, index int) int { +func processDWStaticField(fieldType abi.Type, parentFieldPath string, dataWords map[string]read.DataWordDetail, index int) int { switch fieldType.T { case abi.TupleTy: // Recursively process tuple elements for i, tupleElem := range fieldType.TupleElems { fieldName := fieldType.TupleRawNames[i] fullFieldPath := fmt.Sprintf("%s.%s", parentFieldPath, fieldName) - index = processFields(*tupleElem, fullFieldPath, dataWords, index) + index = processDWStaticField(*tupleElem, fullFieldPath, dataWords, index) } return index case abi.ArrayTy: @@ -525,19 +543,24 @@ func processFields(fieldType abi.Type, parentFieldPath string, dataWords map[str } } -func isDynamic(fieldType abi.Type) bool { - switch fieldType.T { - case abi.StringTy, abi.SliceTy, abi.BytesTy: - return true - case abi.TupleTy: - // If one element in a struct is dynamic, the whole struct is treated as dynamic. - for _, elem := range fieldType.TupleElems { - if isDynamic(*elem) { - return true +// processDWDynamicFields indexes static fields in dynamic structs. +// These fields come first after the static fields in the event encoding, so we can calculate their indices. +func processDWDynamicFields(eventName string, dataWords map[string]read.DataWordDetail, dynamicQueue []abi.Argument, dwIndex int) { + for _, arg := range dynamicQueue { + switch arg.Type.T { + case abi.TupleTy: + for i, tupleElem := range arg.Type.TupleElems { + // any field after a dynamic field can't be predictably indexed. + if isDynamic(*tupleElem) { + return + } + dwIndex = processDWStaticField(*tupleElem, fmt.Sprintf("%s.%s.%s", eventName, arg.Name, arg.Type.TupleRawNames[i]), dataWords, dwIndex) } + default: + // exit if we see a dynamic field, as we can't predict the index of fields after it. + return } } - return false } // ConfirmationsFromConfig maps chain agnostic confidence levels defined in config to predefined EVM finality. diff --git a/core/services/relay/evm/evmtesting/chain_components_interface_tester.go b/core/services/relay/evm/evmtesting/chain_components_interface_tester.go index 968c7667882..c0d1754f6fd 100644 --- a/core/services/relay/evm/evmtesting/chain_components_interface_tester.go +++ b/core/services/relay/evm/evmtesting/chain_components_interface_tester.go @@ -146,6 +146,7 @@ func (it *EVMChainComponentsInterfaceTester[T]) Setup(t T) { "OracleID": {Name: "oracleId"}, // this is just to illustrate an example, generic names shouldn't really be formatted like this since other chains might not store it in the same way "NestedStaticStruct.Inner.IntVal": {Name: "nestedStaticStruct.Inner.IntVal"}, + "NestedDynamicStruct.FixedBytes": {Name: "nestedDynamicStruct.FixedBytes"}, "BigField": {Name: "bigField"}, }, }, diff --git a/core/services/relay/evm/evmtesting/run_tests.go b/core/services/relay/evm/evmtesting/run_tests.go index 1e3d6ec8edc..2efe1c3f08a 100644 --- a/core/services/relay/evm/evmtesting/run_tests.go +++ b/core/services/relay/evm/evmtesting/run_tests.go @@ -223,6 +223,26 @@ func RunContractReaderInLoopTests[T TestingT[T]](t T, it ChainComponentsInterfac }, it.MaxWaitTimeForEvents(), time.Millisecond*10) }) + t.Run("Filtering can be done on data words using value comparator on a static field in a dynamic struct that is the first dynamic field", func(t T) { + ts := &TestStruct{} + assert.Eventually(t, func() bool { + sequences, err := cr.QueryKey(ctx, boundContract, query.KeyFilter{Key: EventName, Expressions: []query.Expression{ + query.Comparator("OracleID", + primitives.ValueComparator{ + Value: uint8(ts2.OracleID), + Operator: primitives.Eq, + }), + query.Comparator("NestedDynamicStruct.FixedBytes", + primitives.ValueComparator{ + Value: ts2.NestedDynamicStruct.FixedBytes, + Operator: primitives.Eq, + }), + }, + }, query.LimitAndSort{}, ts) + return err == nil && len(sequences) == 1 && reflect.DeepEqual(&ts2, sequences[0].Data) + }, it.MaxWaitTimeForEvents(), time.Millisecond*10) + }) + t.Run("Filtering can be done on data words using value comparators on fields that require manual index input", func(t T) { empty12Bytes := [12]byte{} val1, val2, val3, val4 := uint32(1), uint32(2), uint32(3), uint64(4) diff --git a/deployment/go.mod b/deployment/go.mod index 14630351641..0458160c73a 100644 --- a/deployment/go.mod +++ b/deployment/go.mod @@ -23,7 +23,7 @@ require ( github.com/sethvargo/go-retry v0.2.4 github.com/smartcontractkit/ccip-owner-contracts v0.0.0-20240926212305-a6deabdfce86 github.com/smartcontractkit/chain-selectors v1.0.27 - github.com/smartcontractkit/chainlink-ccip v0.0.0-20241101132401-00090bf7feb4 + github.com/smartcontractkit/chainlink-ccip v0.0.0-20241101155858-0cf44c0d3007 github.com/smartcontractkit/chainlink-common v0.3.1-0.20241101093830-33711d0c3de7 github.com/smartcontractkit/chainlink-protos/job-distributor v0.4.0 github.com/smartcontractkit/chainlink-testing-framework/lib v1.50.13 diff --git a/deployment/go.sum b/deployment/go.sum index 5c4f0df9cad..da6dbfee3cf 100644 --- a/deployment/go.sum +++ b/deployment/go.sum @@ -1382,8 +1382,8 @@ github.com/smartcontractkit/chain-selectors v1.0.27 h1:VE/ftX9Aae4gnw67yR1raKi+3 github.com/smartcontractkit/chain-selectors v1.0.27/go.mod h1:d4Hi+E1zqjy9HqMkjBE5q1vcG9VGgxf5VxiRHfzi2kE= github.com/smartcontractkit/chainlink-automation v0.8.1 h1:sTc9LKpBvcKPc1JDYAmgBc2xpDKBco/Q4h4ydl6+UUU= github.com/smartcontractkit/chainlink-automation v0.8.1/go.mod h1:Iij36PvWZ6blrdC5A/nrQUBuf3MH3JvsBB9sSyc9W08= -github.com/smartcontractkit/chainlink-ccip v0.0.0-20241101132401-00090bf7feb4 h1:+VR9yKhbz+iCtWnCabaCDP18lIqGnk7YvGQIbJYgDrs= -github.com/smartcontractkit/chainlink-ccip v0.0.0-20241101132401-00090bf7feb4/go.mod h1:4adKaHNaxFsRvV/lYfqtbsWyyvIPUMLR0FdOJN/ljis= +github.com/smartcontractkit/chainlink-ccip v0.0.0-20241101155858-0cf44c0d3007 h1:J8WGYWC6sArDG+oj5Nzd5exqDrL1HDpZhg1ofNL+bos= +github.com/smartcontractkit/chainlink-ccip v0.0.0-20241101155858-0cf44c0d3007/go.mod h1:4adKaHNaxFsRvV/lYfqtbsWyyvIPUMLR0FdOJN/ljis= github.com/smartcontractkit/chainlink-common v0.3.1-0.20241101093830-33711d0c3de7 h1:AGi0kAtMRW1zl1h7sGw+3CKO4Nlev6iA08YfEcgJCGs= github.com/smartcontractkit/chainlink-common v0.3.1-0.20241101093830-33711d0c3de7/go.mod h1:TQ9/KKXZ9vr8QAlUquqGpSvDCpR+DtABKPXZY4CiRns= github.com/smartcontractkit/chainlink-cosmos v0.5.2-0.20241017133723-5277829bd53f h1:BwrIaQIx5Iy6eT+DfLhFfK2XqjxRm74mVdlX8gbu4dw= diff --git a/go.mod b/go.mod index 03084edf658..d8371c10831 100644 --- a/go.mod +++ b/go.mod @@ -75,7 +75,7 @@ require ( github.com/shopspring/decimal v1.4.0 github.com/smartcontractkit/chain-selectors v1.0.27 github.com/smartcontractkit/chainlink-automation v0.8.1 - github.com/smartcontractkit/chainlink-ccip v0.0.0-20241101132401-00090bf7feb4 + github.com/smartcontractkit/chainlink-ccip v0.0.0-20241101155858-0cf44c0d3007 github.com/smartcontractkit/chainlink-common v0.3.1-0.20241101093830-33711d0c3de7 github.com/smartcontractkit/chainlink-cosmos v0.5.2-0.20241017133723-5277829bd53f github.com/smartcontractkit/chainlink-data-streams v0.1.1-0.20241018134907-a00ba3729b5e diff --git a/go.sum b/go.sum index c9ffda30070..c6e49b5c13d 100644 --- a/go.sum +++ b/go.sum @@ -1075,8 +1075,8 @@ github.com/smartcontractkit/chain-selectors v1.0.27 h1:VE/ftX9Aae4gnw67yR1raKi+3 github.com/smartcontractkit/chain-selectors v1.0.27/go.mod h1:d4Hi+E1zqjy9HqMkjBE5q1vcG9VGgxf5VxiRHfzi2kE= github.com/smartcontractkit/chainlink-automation v0.8.1 h1:sTc9LKpBvcKPc1JDYAmgBc2xpDKBco/Q4h4ydl6+UUU= github.com/smartcontractkit/chainlink-automation v0.8.1/go.mod h1:Iij36PvWZ6blrdC5A/nrQUBuf3MH3JvsBB9sSyc9W08= -github.com/smartcontractkit/chainlink-ccip v0.0.0-20241101132401-00090bf7feb4 h1:+VR9yKhbz+iCtWnCabaCDP18lIqGnk7YvGQIbJYgDrs= -github.com/smartcontractkit/chainlink-ccip v0.0.0-20241101132401-00090bf7feb4/go.mod h1:4adKaHNaxFsRvV/lYfqtbsWyyvIPUMLR0FdOJN/ljis= +github.com/smartcontractkit/chainlink-ccip v0.0.0-20241101155858-0cf44c0d3007 h1:J8WGYWC6sArDG+oj5Nzd5exqDrL1HDpZhg1ofNL+bos= +github.com/smartcontractkit/chainlink-ccip v0.0.0-20241101155858-0cf44c0d3007/go.mod h1:4adKaHNaxFsRvV/lYfqtbsWyyvIPUMLR0FdOJN/ljis= github.com/smartcontractkit/chainlink-common v0.3.1-0.20241101093830-33711d0c3de7 h1:AGi0kAtMRW1zl1h7sGw+3CKO4Nlev6iA08YfEcgJCGs= github.com/smartcontractkit/chainlink-common v0.3.1-0.20241101093830-33711d0c3de7/go.mod h1:TQ9/KKXZ9vr8QAlUquqGpSvDCpR+DtABKPXZY4CiRns= github.com/smartcontractkit/chainlink-cosmos v0.5.2-0.20241017133723-5277829bd53f h1:BwrIaQIx5Iy6eT+DfLhFfK2XqjxRm74mVdlX8gbu4dw= diff --git a/integration-tests/go.mod b/integration-tests/go.mod index 054fbb27787..b286727dd16 100644 --- a/integration-tests/go.mod +++ b/integration-tests/go.mod @@ -35,7 +35,7 @@ require ( github.com/slack-go/slack v0.15.0 github.com/smartcontractkit/chain-selectors v1.0.27 github.com/smartcontractkit/chainlink-automation v0.8.1 - github.com/smartcontractkit/chainlink-ccip v0.0.0-20241101132401-00090bf7feb4 + github.com/smartcontractkit/chainlink-ccip v0.0.0-20241101155858-0cf44c0d3007 github.com/smartcontractkit/chainlink-common v0.3.1-0.20241101093830-33711d0c3de7 github.com/smartcontractkit/chainlink-protos/job-distributor v0.4.0 github.com/smartcontractkit/chainlink-testing-framework/havoc v1.50.2 diff --git a/integration-tests/go.sum b/integration-tests/go.sum index d4f87ad83e7..956de633036 100644 --- a/integration-tests/go.sum +++ b/integration-tests/go.sum @@ -1403,8 +1403,8 @@ github.com/smartcontractkit/chain-selectors v1.0.27 h1:VE/ftX9Aae4gnw67yR1raKi+3 github.com/smartcontractkit/chain-selectors v1.0.27/go.mod h1:d4Hi+E1zqjy9HqMkjBE5q1vcG9VGgxf5VxiRHfzi2kE= github.com/smartcontractkit/chainlink-automation v0.8.1 h1:sTc9LKpBvcKPc1JDYAmgBc2xpDKBco/Q4h4ydl6+UUU= github.com/smartcontractkit/chainlink-automation v0.8.1/go.mod h1:Iij36PvWZ6blrdC5A/nrQUBuf3MH3JvsBB9sSyc9W08= -github.com/smartcontractkit/chainlink-ccip v0.0.0-20241101132401-00090bf7feb4 h1:+VR9yKhbz+iCtWnCabaCDP18lIqGnk7YvGQIbJYgDrs= -github.com/smartcontractkit/chainlink-ccip v0.0.0-20241101132401-00090bf7feb4/go.mod h1:4adKaHNaxFsRvV/lYfqtbsWyyvIPUMLR0FdOJN/ljis= +github.com/smartcontractkit/chainlink-ccip v0.0.0-20241101155858-0cf44c0d3007 h1:J8WGYWC6sArDG+oj5Nzd5exqDrL1HDpZhg1ofNL+bos= +github.com/smartcontractkit/chainlink-ccip v0.0.0-20241101155858-0cf44c0d3007/go.mod h1:4adKaHNaxFsRvV/lYfqtbsWyyvIPUMLR0FdOJN/ljis= github.com/smartcontractkit/chainlink-common v0.3.1-0.20241101093830-33711d0c3de7 h1:AGi0kAtMRW1zl1h7sGw+3CKO4Nlev6iA08YfEcgJCGs= github.com/smartcontractkit/chainlink-common v0.3.1-0.20241101093830-33711d0c3de7/go.mod h1:TQ9/KKXZ9vr8QAlUquqGpSvDCpR+DtABKPXZY4CiRns= github.com/smartcontractkit/chainlink-cosmos v0.5.2-0.20241017133723-5277829bd53f h1:BwrIaQIx5Iy6eT+DfLhFfK2XqjxRm74mVdlX8gbu4dw= diff --git a/integration-tests/load/go.mod b/integration-tests/load/go.mod index de72bc705e7..f91abb53126 100644 --- a/integration-tests/load/go.mod +++ b/integration-tests/load/go.mod @@ -64,7 +64,7 @@ require ( github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/sagikazarmark/locafero v0.4.0 // indirect github.com/sagikazarmark/slog-shim v0.1.0 // indirect - github.com/smartcontractkit/chainlink-ccip v0.0.0-20241101132401-00090bf7feb4 // indirect + github.com/smartcontractkit/chainlink-ccip v0.0.0-20241101155858-0cf44c0d3007 // indirect github.com/smartcontractkit/chainlink-cosmos v0.5.2-0.20241017133723-5277829bd53f // indirect github.com/smartcontractkit/chainlink-testing-framework/havoc v1.50.2 // indirect github.com/smartcontractkit/grpc-proxy v0.0.0-20240830132753-a7e17fec5ab7 // indirect diff --git a/integration-tests/load/go.sum b/integration-tests/load/go.sum index 13e1974b17e..319e3cfa192 100644 --- a/integration-tests/load/go.sum +++ b/integration-tests/load/go.sum @@ -1392,8 +1392,8 @@ github.com/smartcontractkit/chain-selectors v1.0.27 h1:VE/ftX9Aae4gnw67yR1raKi+3 github.com/smartcontractkit/chain-selectors v1.0.27/go.mod h1:d4Hi+E1zqjy9HqMkjBE5q1vcG9VGgxf5VxiRHfzi2kE= github.com/smartcontractkit/chainlink-automation v0.8.1 h1:sTc9LKpBvcKPc1JDYAmgBc2xpDKBco/Q4h4ydl6+UUU= github.com/smartcontractkit/chainlink-automation v0.8.1/go.mod h1:Iij36PvWZ6blrdC5A/nrQUBuf3MH3JvsBB9sSyc9W08= -github.com/smartcontractkit/chainlink-ccip v0.0.0-20241101132401-00090bf7feb4 h1:+VR9yKhbz+iCtWnCabaCDP18lIqGnk7YvGQIbJYgDrs= -github.com/smartcontractkit/chainlink-ccip v0.0.0-20241101132401-00090bf7feb4/go.mod h1:4adKaHNaxFsRvV/lYfqtbsWyyvIPUMLR0FdOJN/ljis= +github.com/smartcontractkit/chainlink-ccip v0.0.0-20241101155858-0cf44c0d3007 h1:J8WGYWC6sArDG+oj5Nzd5exqDrL1HDpZhg1ofNL+bos= +github.com/smartcontractkit/chainlink-ccip v0.0.0-20241101155858-0cf44c0d3007/go.mod h1:4adKaHNaxFsRvV/lYfqtbsWyyvIPUMLR0FdOJN/ljis= github.com/smartcontractkit/chainlink-common v0.3.1-0.20241101093830-33711d0c3de7 h1:AGi0kAtMRW1zl1h7sGw+3CKO4Nlev6iA08YfEcgJCGs= github.com/smartcontractkit/chainlink-common v0.3.1-0.20241101093830-33711d0c3de7/go.mod h1:TQ9/KKXZ9vr8QAlUquqGpSvDCpR+DtABKPXZY4CiRns= github.com/smartcontractkit/chainlink-cosmos v0.5.2-0.20241017133723-5277829bd53f h1:BwrIaQIx5Iy6eT+DfLhFfK2XqjxRm74mVdlX8gbu4dw=