Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[BCFR-203] Improve CR value comparator querying (topics and data words) by doing encoding in the relayer #14207

Merged
merged 28 commits into from
Sep 18, 2024
Merged
Show file tree
Hide file tree
Changes from 26 commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
551461c
Add EVM CR topic and data words types to codec for QueryKey filtering
ilija42 Aug 12, 2024
54c61d2
temp
ilija42 Aug 13, 2024
eac9959
Update Chain Reader Tester contract to match common testing structs
ilija42 Aug 14, 2024
c4b6e69
Fix codecEntry ToNative() method bad error message
ilija42 Aug 16, 2024
252a7f1
Add support for filtering over indexed topics with query key
ilija42 Aug 16, 2024
fc92341
Remove the need for Chain Reader Config InputFields
ilija42 Aug 22, 2024
f32c138
Implement Chain Reader data words types init and packing
ilija42 Aug 26, 2024
11b7512
cleanup changes
ilija42 Aug 27, 2024
09b8d0c
Implement querying by data words with value comparators as any
ilija42 Aug 29, 2024
f9af3b5
Fix CR topic querying and simplify value comparator encoding
ilija42 Aug 30, 2024
4d65586
Simplify CR event topic and data words typing
ilija42 Aug 30, 2024
cea63bb
Refactor CR topic encoding a bit to be simpler
ilija42 Aug 30, 2024
61b6c4d
Fix lint, changeset and correct a minor test failure
ilija42 Aug 30, 2024
5bc5cfd
[Bot] Update changeset file with jira issue
app-token-issuer-infra-releng[bot] Aug 30, 2024
440d16f
Add changeset
ilija42 Aug 30, 2024
f2467ef
Update changesets
ilija42 Sep 2, 2024
72e8bcc
lint
ilija42 Sep 2, 2024
f5fea68
Separate loop and non loop CR tests, bump go mod and minor fix
ilija42 Sep 6, 2024
eae3851
Fix rebase issues
ilija42 Sep 11, 2024
f4819da
Handle CR value comparator Querying codec type creation and lookup
ilija42 Sep 13, 2024
78bb92b
Update changeset associated ticket numbers
ilija42 Sep 16, 2024
080cfff
lint
ilija42 Sep 16, 2024
1dc20cb
Add todos
ilija42 Sep 16, 2024
0b40a59
Remove unused indexes from ChainReader DataWords config
ilija42 Sep 18, 2024
fb18665
Update common
ilija42 Sep 18, 2024
41a0773
Merge branch 'develop' into BCI-3940-Improve-CR-Querying
ilija42 Sep 18, 2024
6ea3d3b
Bump common
ilija42 Sep 18, 2024
3e3c0a6
Merge branch 'develop' into BCI-3940-Improve-CR-Querying
ilija42 Sep 18, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions .changeset/lucky-zebras-reflect.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
"chainlink": minor
---

#internal Implement EVM ChainReader ValueComparator filtering by non-indexed event data. Right now only simple non indexed data where byte offsets don't exist is supported.

BCFR-203
8 changes: 8 additions & 0 deletions contracts/.changeset/fluffy-papayas-chew.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
'@chainlink/contracts': minor
---

#internal Change Chain Reader testing contract Triggered event for easier testing of filtering by non indexed evm data.


BCFR-203
Original file line number Diff line number Diff line change
Expand Up @@ -26,11 +26,11 @@ struct InnerTestStruct {
contract ChainReaderTester {
event Triggered(
int32 indexed field,
string differentField,
uint8 oracleId,
uint8[32] oracleIds,
address Account,
address[] Accounts,
string differentField,
int192 bigField,
silaslenihan marked this conversation as resolved.
Show resolved Hide resolved
MidLevelTestStruct nestedStruct
);
Expand Down Expand Up @@ -109,15 +109,15 @@ contract ChainReaderTester {

function triggerEvent(
int32 field,
string calldata differentField,
uint8 oracleId,
uint8[32] calldata oracleIds,
address account,
address[] calldata accounts,
string calldata differentField,
int192 bigField,
MidLevelTestStruct calldata nestedStruct
) public {
emit Triggered(field, differentField, oracleId, oracleIds, account, accounts, bigField, nestedStruct);
emit Triggered(field, oracleId, oracleIds, account, accounts, differentField, bigField, nestedStruct);
}

function triggerEventWithDynamicTopic(string calldata field) public {
Expand Down
5 changes: 0 additions & 5 deletions core/capabilities/ccip/configs/evm/contract_reader.go
Original file line number Diff line number Diff line change
Expand Up @@ -194,11 +194,6 @@ var SourceReaderConfig = evmrelaytypes.ChainReaderConfig{
consts.EventNameCCIPMessageSent: {
ChainSpecificName: mustGetEventName("CCIPMessageSent", onrampABI),
ReadType: evmrelaytypes.Event,
EventDefinitions: &evmrelaytypes.EventDefinitions{
GenericDataWordNames: map[string]uint8{
Copy link
Contributor Author

@ilija42 ilija42 Sep 16, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Checked with Makram, this is not needed anymore

consts.EventAttributeSequenceNumber: 5,
},
},
},
},
},
Expand Down
40 changes: 20 additions & 20 deletions core/chains/evm/logpoller/orm_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -606,8 +606,8 @@ func TestORM_IndexedLogs(t *testing.T) {
}

for idx, value := range topicValues {
topicFilters.Expressions[idx] = logpoller.NewEventByTopicFilter(topicIdx, []primitives.ValueComparator{
{Value: logpoller.EvmWord(value).Hex(), Operator: primitives.Eq},
topicFilters.Expressions[idx] = logpoller.NewEventByTopicFilter(topicIdx, []logpoller.HashedValueComparator{
{Value: logpoller.EvmWord(value), Operator: primitives.Eq},
})
}

Expand Down Expand Up @@ -702,8 +702,8 @@ func TestORM_IndexedLogs(t *testing.T) {
Expressions: []query.Expression{
logpoller.NewAddressFilter(addr),
logpoller.NewEventSigFilter(eventSig),
logpoller.NewEventByTopicFilter(1, []primitives.ValueComparator{
{Value: logpoller.EvmWord(2).Hex(), Operator: primitives.Gte},
logpoller.NewEventByTopicFilter(1, []logpoller.HashedValueComparator{
{Value: logpoller.EvmWord(2), Operator: primitives.Gte},
}),
query.Confidence(primitives.Unconfirmed),
},
Expand All @@ -717,11 +717,11 @@ func TestORM_IndexedLogs(t *testing.T) {
return []query.Expression{
logpoller.NewAddressFilter(addr),
logpoller.NewEventSigFilter(eventSig),
logpoller.NewEventByTopicFilter(topicIdx, []primitives.ValueComparator{
{Value: logpoller.EvmWord(min).Hex(), Operator: primitives.Gte},
logpoller.NewEventByTopicFilter(topicIdx, []logpoller.HashedValueComparator{
{Value: logpoller.EvmWord(min), Operator: primitives.Gte},
}),
logpoller.NewEventByTopicFilter(topicIdx, []primitives.ValueComparator{
{Value: logpoller.EvmWord(max).Hex(), Operator: primitives.Lte},
logpoller.NewEventByTopicFilter(topicIdx, []logpoller.HashedValueComparator{
{Value: logpoller.EvmWord(max), Operator: primitives.Lte},
}),
query.Confidence(primitives.Unconfirmed),
}
Expand Down Expand Up @@ -876,11 +876,11 @@ func TestORM_DataWords(t *testing.T) {
return []query.Expression{
logpoller.NewAddressFilter(addr),
logpoller.NewEventSigFilter(eventSig),
logpoller.NewEventByWordFilter(eventSig, wordIdx, []primitives.ValueComparator{
{Value: logpoller.EvmWord(word1).Hex(), Operator: primitives.Gte},
logpoller.NewEventByWordFilter(wordIdx, []logpoller.HashedValueComparator{
{Value: logpoller.EvmWord(word1), Operator: primitives.Gte},
}),
logpoller.NewEventByWordFilter(eventSig, wordIdx, []primitives.ValueComparator{
{Value: logpoller.EvmWord(word2).Hex(), Operator: primitives.Lte},
logpoller.NewEventByWordFilter(wordIdx, []logpoller.HashedValueComparator{
{Value: logpoller.EvmWord(word2), Operator: primitives.Lte},
}),
query.Confidence(primitives.Unconfirmed),
}
Expand Down Expand Up @@ -944,8 +944,8 @@ func TestORM_DataWords(t *testing.T) {
filter := []query.Expression{
logpoller.NewAddressFilter(addr),
logpoller.NewEventSigFilter(eventSig),
logpoller.NewEventByWordFilter(eventSig, 0, []primitives.ValueComparator{
{Value: logpoller.EvmWord(1).Hex(), Operator: primitives.Gte},
logpoller.NewEventByWordFilter(0, []logpoller.HashedValueComparator{
{Value: logpoller.EvmWord(1), Operator: primitives.Gte},
}),
query.Confidence(primitives.Unconfirmed),
}
Expand Down Expand Up @@ -1667,8 +1667,8 @@ func TestSelectLogsCreatedAfter(t *testing.T) {
if len(topicVals) > 0 {
exp := make([]query.Expression, len(topicVals))
for idx, val := range topicVals {
exp[idx] = logpoller.NewEventByTopicFilter(uint64(topicIdx), []primitives.ValueComparator{
{Value: val.String(), Operator: primitives.Eq},
exp[idx] = logpoller.NewEventByTopicFilter(uint64(topicIdx), []logpoller.HashedValueComparator{
{Value: val, Operator: primitives.Eq},
})
}

Expand Down Expand Up @@ -1955,11 +1955,11 @@ func TestSelectLogsDataWordBetween(t *testing.T) {
Expressions: []query.Expression{
logpoller.NewAddressFilter(address),
logpoller.NewEventSigFilter(eventSig),
logpoller.NewEventByWordFilter(eventSig, 0, []primitives.ValueComparator{
{Value: logpoller.EvmWord(word).Hex(), Operator: primitives.Lte},
logpoller.NewEventByWordFilter(0, []logpoller.HashedValueComparator{
{Value: logpoller.EvmWord(word), Operator: primitives.Lte},
}),
logpoller.NewEventByWordFilter(eventSig, 1, []primitives.ValueComparator{
{Value: logpoller.EvmWord(word).Hex(), Operator: primitives.Gte},
logpoller.NewEventByWordFilter(1, []logpoller.HashedValueComparator{
{Value: logpoller.EvmWord(word), Operator: primitives.Gte},
}),
query.Confidence(primitives.Unconfirmed),
},
Expand Down
31 changes: 17 additions & 14 deletions core/chains/evm/logpoller/parser.go
Original file line number Diff line number Diff line change
Expand Up @@ -151,11 +151,11 @@ func (v *pgDSLParser) nestedConfQuery(finalized bool, confs uint64) string {
}

func (v *pgDSLParser) VisitEventByWordFilter(p *eventByWordFilter) {
if len(p.ValueComparers) > 0 {
if len(p.HashedValueComparers) > 0 {
wordIdx := v.args.withIndexedField("word_index", p.WordIndex)

comps := make([]string, len(p.ValueComparers))
for idx, comp := range p.ValueComparers {
comps := make([]string, len(p.HashedValueComparers))
for idx, comp := range p.HashedValueComparers {
comps[idx], v.err = makeComp(comp, v.args, "word_value", wordIdx, "substring(data from 32*:%s+1 for 32) %s :%s")
if v.err != nil {
return
Expand Down Expand Up @@ -199,7 +199,7 @@ func (v *pgDSLParser) VisitConfirmationsFilter(p *confirmationsFilter) {
}
}

func makeComp(comp primitives.ValueComparator, args *queryArgs, field, subfield, pattern string) (string, error) {
func makeComp(comp HashedValueComparator, args *queryArgs, field, subfield, pattern string) (string, error) {
cmp, err := cmpOpToString(comp.Operator)
if err != nil {
return "", err
Expand All @@ -209,7 +209,7 @@ func makeComp(comp primitives.ValueComparator, args *queryArgs, field, subfield,
pattern,
subfield,
cmp,
args.withIndexedField(field, common.HexToHash(comp.Value)),
args.withIndexedField(field, comp.Value),
), nil
}

Expand Down Expand Up @@ -492,17 +492,20 @@ func (f *eventSigFilter) Accept(visitor primitives.Visitor) {
}
}

type HashedValueComparator struct {
Value common.Hash
Operator primitives.ComparisonOperator
}

type eventByWordFilter struct {
EventSig common.Hash
WordIndex uint8
ValueComparers []primitives.ValueComparator
WordIndex uint8
HashedValueComparers []HashedValueComparator
}

func NewEventByWordFilter(eventSig common.Hash, wordIndex uint8, valueComparers []primitives.ValueComparator) query.Expression {
func NewEventByWordFilter(wordIndex uint8, valueComparers []HashedValueComparator) query.Expression {
return query.Expression{Primitive: &eventByWordFilter{
EventSig: eventSig,
WordIndex: wordIndex,
ValueComparers: valueComparers,
WordIndex: wordIndex,
HashedValueComparers: valueComparers,
}}
}

Expand All @@ -515,10 +518,10 @@ func (f *eventByWordFilter) Accept(visitor primitives.Visitor) {

type eventByTopicFilter struct {
Topic uint64
ValueComparers []primitives.ValueComparator
ValueComparers []HashedValueComparator
}

func NewEventByTopicFilter(topicIndex uint64, valueComparers []primitives.ValueComparator) query.Expression {
func NewEventByTopicFilter(topicIndex uint64, valueComparers []HashedValueComparator) query.Expression {
return query.Expression{Primitive: &eventByTopicFilter{
Topic: topicIndex,
ValueComparers: valueComparers,
Expand Down
16 changes: 8 additions & 8 deletions core/chains/evm/logpoller/parser_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -233,8 +233,8 @@ func TestDSLParser(t *testing.T) {
t.Run("query for event by word", func(t *testing.T) {
t.Parallel()

wordFilter := NewEventByWordFilter(common.HexToHash("0x42"), 8, []primitives.ValueComparator{
{Value: "", Operator: primitives.Gt},
wordFilter := NewEventByWordFilter(8, []HashedValueComparator{
{Value: common.HexToHash(""), Operator: primitives.Gt},
})

parser := &pgDSLParser{}
Expand All @@ -257,9 +257,9 @@ func TestDSLParser(t *testing.T) {
t.Run("query for event topic", func(t *testing.T) {
t.Parallel()

topicFilter := NewEventByTopicFilter(2, []primitives.ValueComparator{
{Value: "a", Operator: primitives.Gt},
{Value: "b", Operator: primitives.Lt},
topicFilter := NewEventByTopicFilter(2, []HashedValueComparator{
{Value: common.HexToHash("a"), Operator: primitives.Gt},
{Value: common.HexToHash("b"), Operator: primitives.Lt},
})

parser := &pgDSLParser{}
Expand Down Expand Up @@ -321,9 +321,9 @@ func TestDSLParser(t *testing.T) {
t.Run("nested query deep", func(t *testing.T) {
t.Parallel()

wordFilter := NewEventByWordFilter(common.HexToHash("0x42"), 8, []primitives.ValueComparator{
{Value: "a", Operator: primitives.Gt},
{Value: "b", Operator: primitives.Lte},
wordFilter := NewEventByWordFilter(8, []HashedValueComparator{
{Value: common.HexToHash("a"), Operator: primitives.Gt},
{Value: common.HexToHash("b"), Operator: primitives.Lte},
})

parser := &pgDSLParser{}
Expand Down

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ batch_vrf_coordinator_v2: ../../contracts/solc/v0.8.6/BatchVRFCoordinatorV2/Batc
batch_vrf_coordinator_v2plus: ../../contracts/solc/v0.8.19/BatchVRFCoordinatorV2Plus/BatchVRFCoordinatorV2Plus.abi ../../contracts/solc/v0.8.19/BatchVRFCoordinatorV2Plus/BatchVRFCoordinatorV2Plus.bin f13715b38b5b9084b08bffa571fb1c8ef686001535902e1255052f074b31ad4e
blockhash_store: ../../contracts/solc/v0.8.19/BlockhashStore/BlockhashStore.abi ../../contracts/solc/v0.8.19/BlockhashStore/BlockhashStore.bin 31b118f9577240c8834c35f8b5a1440e82a6ca8aea702970de2601824b6ab0e1
chain_module_base: ../../contracts/solc/v0.8.19/ChainModuleBase/ChainModuleBase.abi ../../contracts/solc/v0.8.19/ChainModuleBase/ChainModuleBase.bin 7a82cc28014761090185c2650239ad01a0901181f1b2b899b42ca293bcda3741
chain_reader_tester: ../../contracts/solc/v0.8.19/ChainReaderTester/ChainReaderTester.abi ../../contracts/solc/v0.8.19/ChainReaderTester/ChainReaderTester.bin b207f9e6bf71e445a2664a602677011b87b80bf95c6352fd7869f1a9ddb08a5b
chain_reader_tester: ../../contracts/solc/v0.8.19/ChainReaderTester/ChainReaderTester.abi ../../contracts/solc/v0.8.19/ChainReaderTester/ChainReaderTester.bin 84c4223c4dbd51aafd77a6787f4b84ce80f661ce86a907c1431c5b82d633f2ad
chain_specific_util_helper: ../../contracts/solc/v0.8.6/ChainSpecificUtilHelper/ChainSpecificUtilHelper.abi ../../contracts/solc/v0.8.6/ChainSpecificUtilHelper/ChainSpecificUtilHelper.bin 66eb30b0717fefe05672df5ec863c0b9a5a654623c4757307a2726d8f31e26b1
counter: ../../contracts/solc/v0.8.6/Counter/Counter.abi ../../contracts/solc/v0.8.6/Counter/Counter.bin 6ca06e000e8423573ffa0bdfda749d88236ab3da2a4cbb4a868c706da90488c9
cron_upkeep_factory_wrapper: ../../contracts/solc/v0.8.6/CronUpkeepFactory/CronUpkeepFactory.abi - dacb0f8cdf54ae9d2781c5e720fc314b32ed5e58eddccff512c75d6067292cd7
Expand Down
10 changes: 5 additions & 5 deletions core/scripts/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
github.com/prometheus/client_golang v1.20.0
github.com/shopspring/decimal v1.4.0
github.com/smartcontractkit/chainlink-automation v1.0.4
github.com/smartcontractkit/chainlink-common v0.2.2-0.20240916150342-36cb47701edf
github.com/smartcontractkit/chainlink-common v0.2.3-0.20240918144115-1e2c93927d7f

Check failure on line 25 in core/scripts/go.mod

View workflow job for this annotation

GitHub Actions / Validate go.mod dependencies

[./core/scripts/go.mod] dependency github.com/smartcontractkit/[email protected] not on default branch (main). Version(commit): 1e2c93927d7f Tree: https://github.com/smartcontractkit/chainlink-common/tree/1e2c93927d7f Commit: https://github.com/smartcontractkit/chainlink-common/commit/1e2c93927d7f
github.com/smartcontractkit/chainlink/v2 v2.0.0-00010101000000-000000000000
github.com/smartcontractkit/libocr v0.0.0-20240717100443-f6226e09bee7
github.com/spf13/cobra v1.8.1
Expand Down Expand Up @@ -116,7 +116,7 @@
github.com/emicklei/go-restful/v3 v3.11.0 // indirect
github.com/esote/minmaxheap v1.0.0 // indirect
github.com/ethereum/c-kzg-4844 v0.4.0 // indirect
github.com/fatih/color v1.16.0 // indirect
github.com/fatih/color v1.17.0 // indirect
github.com/fsnotify/fsnotify v1.7.0 // indirect
github.com/fxamacker/cbor/v2 v2.7.0 // indirect
github.com/gabriel-vasile/mimetype v1.4.3 // indirect
Expand Down Expand Up @@ -341,16 +341,16 @@
go.uber.org/zap v1.27.0 // indirect
golang.org/x/arch v0.8.0 // indirect
golang.org/x/crypto v0.27.0 // indirect
golang.org/x/exp v0.0.0-20240808152545-0cdaa3abc0fa // indirect
golang.org/x/mod v0.20.0 // indirect
golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 // indirect
golang.org/x/mod v0.21.0 // indirect
golang.org/x/net v0.29.0 // indirect
golang.org/x/oauth2 v0.22.0 // indirect
golang.org/x/sync v0.8.0 // indirect
golang.org/x/sys v0.25.0 // indirect
golang.org/x/term v0.24.0 // indirect
golang.org/x/text v0.18.0 // indirect
golang.org/x/time v0.6.0 // indirect
golang.org/x/tools v0.24.0 // indirect
golang.org/x/tools v0.25.0 // indirect
gonum.org/v1/gonum v0.15.0 // indirect
google.golang.org/genproto v0.0.0-20240711142825-46eb208f015d // indirect
google.golang.org/genproto/googleapis/api v0.0.0-20240822170219-fc7c04adadcd // indirect
Expand Down
20 changes: 10 additions & 10 deletions core/scripts/go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -357,8 +357,8 @@ github.com/facebookgo/subset v0.0.0-20200203212716-c811ad88dec4/go.mod h1:5tD+ne
github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4=
github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU=
github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk=
github.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM=
github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE=
github.com/fatih/color v1.17.0 h1:GlRw1BRJxkpqUCBKzKOw098ed57fEsKeNjpTe3cSjK4=
github.com/fatih/color v1.17.0/go.mod h1:YZ7TlrGPkiz6ku9fK3TLD/pl3CpsiFyu8N92HLgmosI=
github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg=
github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
github.com/fjl/memsize v0.0.0-20190710130421-bcb5799ab5e5 h1:FtmdgXiUlNeRsoNMFlKLDt+S+6hbjVMEW6RGQ7aUf7c=
Expand Down Expand Up @@ -1083,8 +1083,8 @@ github.com/smartcontractkit/chainlink-automation v1.0.4 h1:iyW181JjKHLNMnDleI8um
github.com/smartcontractkit/chainlink-automation v1.0.4/go.mod h1:u4NbPZKJ5XiayfKHD/v3z3iflQWqvtdhj13jVZXj/cM=
github.com/smartcontractkit/chainlink-ccip v0.0.0-20240917180332-5a68498d1612 h1:xPEM9XbfZmv8N3NjZ7AX5salonll/LdXrbb8JCbA4FE=
github.com/smartcontractkit/chainlink-ccip v0.0.0-20240917180332-5a68498d1612/go.mod h1:Lv77O13ZxOdmlvnu2vaUC0Lg+t3JAL+N+9K8dRsgmDI=
github.com/smartcontractkit/chainlink-common v0.2.2-0.20240916150342-36cb47701edf h1:1AlTUkT5D8HmvU9bwDoIN54/EFyOnRBl7gnXZVrYXEA=
github.com/smartcontractkit/chainlink-common v0.2.2-0.20240916150342-36cb47701edf/go.mod h1:l8NTByXUdGGJX+vyKYI6yX1/HIpM14F8Wm9BkU3Q4Qo=
github.com/smartcontractkit/chainlink-common v0.2.3-0.20240918144115-1e2c93927d7f h1:H8j9gzmghckSUIokU33RGYydTH8f/UPXQ5XVYat7Ckw=
github.com/smartcontractkit/chainlink-common v0.2.3-0.20240918144115-1e2c93927d7f/go.mod h1:zm+l8gN4LQS1+YvwQDhRz/njirVeWGNiDJKIhCGwaoQ=
github.com/smartcontractkit/chainlink-cosmos v0.4.1-0.20240911175228-daf2600bb7b7 h1:lTGIOQYLk1Ufn++X/AvZnt6VOcuhste5yp+C157No/Q=
github.com/smartcontractkit/chainlink-cosmos v0.4.1-0.20240911175228-daf2600bb7b7/go.mod h1:BMYE1vC/pGmdFSsOJdPrAA0/4gZ0Xo0SxTMdGspBtRo=
github.com/smartcontractkit/chainlink-data-streams v0.0.0-20240916152957-433914114bd2 h1:yRk4ektpx/UxwarqAfgxUXLrsYXlaNeP1NOwzHGrK2Q=
Expand Down Expand Up @@ -1376,8 +1376,8 @@ golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u0
golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4=
golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM=
golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU=
golang.org/x/exp v0.0.0-20240808152545-0cdaa3abc0fa h1:ELnwvuAXPNtPk1TJRuGkI9fDTwym6AYBu0qzT8AcHdI=
golang.org/x/exp v0.0.0-20240808152545-0cdaa3abc0fa/go.mod h1:akd2r19cwCdwSwWeIdzYQGa/EZZyqcOdwWiwj5L5eKQ=
golang.org/x/exp v0.0.0-20240909161429-701f63a606c0 h1:e66Fs6Z+fZTbFBAxKfP3PALWBtpfqks2bwGcexMxgtk=
golang.org/x/exp v0.0.0-20240909161429-701f63a606c0/go.mod h1:2TbTHSBQa924w8M6Xs1QcRcFwyucIwBGpK1p2f1YFFY=
golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js=
golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
Expand All @@ -1402,8 +1402,8 @@ golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
golang.org/x/mod v0.4.2/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.20.0 h1:utOm6MM3R3dnawAiJgn0y+xvuYRsm1RKM/4giyfDgV0=
golang.org/x/mod v0.20.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
golang.org/x/mod v0.21.0 h1:vvrHzRwRfVKSiLrG+d4FMl/Qi4ukBCE6kZlTUkDYRT0=
golang.org/x/mod v0.21.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY=
golang.org/x/net v0.0.0-20180719180050-a680a1efc54d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
Expand Down Expand Up @@ -1614,8 +1614,8 @@ golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0=
golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
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.24.0 h1:J1shsA93PJUEVaUSaay7UXAyE8aimq3GW0pjlolpa24=
golang.org/x/tools v0.24.0/go.mod h1:YhNqVBIfWHdzvTLs0d8LCuMhkKUgSUKldakyV7W/WDQ=
golang.org/x/tools v0.25.0 h1:oFU9pkj/iJgs+0DT+VMHrx+oBKs/LJMV+Uvg78sl+fE=
golang.org/x/tools v0.25.0/go.mod h1:/vtpO8WL1N9cQC3FN5zPqb//fRXskFHbLKk4OW1Q7rg=
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=
Expand Down
Loading
Loading