From 2590e1b0459d439a304f03f308f452af333e3579 Mon Sep 17 00:00:00 2001 From: Ryan Tinianov Date: Thu, 7 Dec 2023 10:22:53 -0500 Subject: [PATCH] add events --- core/scripts/go.mod | 2 +- core/scripts/go.sum | 4 +- core/services/relay/evm/chain_reader.go | 95 ++++++---- core/services/relay/evm/chain_reader_test.go | 68 +++++-- core/services/relay/evm/codec_test.go | 3 +- core/services/relay/evm/evm.go | 3 +- .../testfiles/chain_reader_test_contract.sol | 21 +++ .../chain_reader_test_contract_gen.abi | 2 +- .../chain_reader_test_contract_gen.bin | 2 +- .../chain_reader_test_contract_gen.go | 166 +++++++++++++++++- go.mod | 2 +- go.sum | 4 +- integration-tests/go.mod | 2 +- integration-tests/go.sum | 4 +- 14 files changed, 319 insertions(+), 59 deletions(-) diff --git a/core/scripts/go.mod b/core/scripts/go.mod index db57f375369..437ec17db15 100644 --- a/core/scripts/go.mod +++ b/core/scripts/go.mod @@ -258,7 +258,7 @@ require ( github.com/shirou/gopsutil/v3 v3.23.10 // indirect github.com/sirupsen/logrus v1.9.3 // indirect github.com/smartcontractkit/caigo v0.0.0-20230621050857-b29a4ca8c704 // indirect - github.com/smartcontractkit/chainlink-common v0.1.7-0.20231206153113-f86b0b21496d // indirect + github.com/smartcontractkit/chainlink-common v0.1.7-0.20231208012003-888e7dbdb9c6 // indirect github.com/smartcontractkit/chainlink-cosmos v0.4.1-0.20231128204301-ee4297eff679 // indirect github.com/smartcontractkit/chainlink-data-streams v0.0.0-20231204152908-a6e3fe8ff2a1 // indirect github.com/smartcontractkit/chainlink-feeds v0.0.0-20231127231053-2232d3a6766d // indirect diff --git a/core/scripts/go.sum b/core/scripts/go.sum index 56a67fcc82b..e9de4b92a4e 100644 --- a/core/scripts/go.sum +++ b/core/scripts/go.sum @@ -1214,8 +1214,8 @@ github.com/smartcontractkit/caigo v0.0.0-20230621050857-b29a4ca8c704 h1:T3lFWumv github.com/smartcontractkit/caigo v0.0.0-20230621050857-b29a4ca8c704/go.mod h1:2QuJdEouTWjh5BDy5o/vgGXQtR4Gz8yH1IYB5eT7u4M= github.com/smartcontractkit/chainlink-automation v1.0.1 h1:vVjBFq2Zsz21kPy1Pb0wpjF9zrbJX+zjXphDeeR4XZk= github.com/smartcontractkit/chainlink-automation v1.0.1/go.mod h1:INSchkV3ntyDdlZKGWA030MPDpp6pbeuiRkRKYFCm2k= -github.com/smartcontractkit/chainlink-common v0.1.7-0.20231206153113-f86b0b21496d h1:ibnzqA27rmFXJvBKQhx1D/tg7X0Oe9tPsWNhi+GQ3sM= -github.com/smartcontractkit/chainlink-common v0.1.7-0.20231206153113-f86b0b21496d/go.mod h1:IdlfCN9rUs8Q/hrOYe8McNBIwEOHEsi0jilb3Cw77xs= +github.com/smartcontractkit/chainlink-common v0.1.7-0.20231208012003-888e7dbdb9c6 h1:Vqi/po+LG3J47USCh83vvjutn2KX8nr7PsU9q4qHt2o= +github.com/smartcontractkit/chainlink-common v0.1.7-0.20231208012003-888e7dbdb9c6/go.mod h1:IdlfCN9rUs8Q/hrOYe8McNBIwEOHEsi0jilb3Cw77xs= github.com/smartcontractkit/chainlink-cosmos v0.4.1-0.20231128204301-ee4297eff679 h1:iu1pNbUoSDTrp+7BUtfTygZ2C0f5C2ZOBQhIoJjp+S0= github.com/smartcontractkit/chainlink-cosmos v0.4.1-0.20231128204301-ee4297eff679/go.mod h1:2Jx7bTEk4ujFQdsZpZq3A0BydvaVPs6mX8clUfxHOEM= github.com/smartcontractkit/chainlink-data-streams v0.0.0-20231204152908-a6e3fe8ff2a1 h1:xYqRgZO0nMSO8CBCMR0r3WA+LZ4kNL8a6bnbyk/oBtQ= diff --git a/core/services/relay/evm/chain_reader.go b/core/services/relay/evm/chain_reader.go index de4940c177c..d14da6f290c 100644 --- a/core/services/relay/evm/chain_reader.go +++ b/core/services/relay/evm/chain_reader.go @@ -10,9 +10,11 @@ import ( "github.com/ethereum/go-ethereum/common" "github.com/pkg/errors" + commonservices "github.com/smartcontractkit/chainlink-common/pkg/services" commontypes "github.com/smartcontractkit/chainlink-common/pkg/types" evmclient "github.com/smartcontractkit/chainlink/v2/core/chains/evm/client" + evmtypes "github.com/smartcontractkit/chainlink/v2/core/chains/evm/types" "github.com/smartcontractkit/chainlink/v2/core/chains/legacyevm" "github.com/smartcontractkit/chainlink/v2/core/chains/evm/logpoller" @@ -27,44 +29,63 @@ type ChainReaderService interface { } type chainReader struct { - lggr logger.Logger - lp logpoller.LogPoller - codec commontypes.RemoteCodec - client evmclient.Client + lggr logger.Logger + lp logpoller.LogPoller + codec commontypes.RemoteCodec + client evmclient.Client + contractID common.Address + events map[string]common.Hash + commonservices.StateMachine } // NewChainReaderService is a constructor for ChainReader, returns nil if there is any error -func NewChainReaderService(lggr logger.Logger, lp logpoller.LogPoller, chain legacyevm.Chain, config types.ChainReaderConfig) (ChainReaderService, error) { - +func NewChainReaderService(lggr logger.Logger, lp logpoller.LogPoller, contractID common.Address, chain legacyevm.Chain, config types.ChainReaderConfig) (ChainReaderService, error) { parsed := &parsedTypes{ encoderDefs: map[string]*codecEntry{}, decoderDefs: map[string]*codecEntry{}, } - if err := addTypes(config.ChainContractReaders, parsed); err != nil { + events, err := addTypes(config.ChainContractReaders, parsed) + if err != nil { return nil, err } c, err := parsed.toCodec() return &chainReader{ - lggr: lggr.Named("ChainReader"), - lp: lp, - codec: c, - client: chain.Client(), + lggr: lggr.Named("ChainReader"), + lp: lp, + codec: c, + client: chain.Client(), + contractID: contractID, + events: events, }, err } func (cr *chainReader) Name() string { return cr.lggr.Name() } -func (cr *chainReader) initialize() error { - // Initialize chain reader, start cache polling loop, etc. - return nil -} - var _ commontypes.TypeProvider = &chainReader{} func (cr *chainReader) GetLatestValue(ctx context.Context, bc commontypes.BoundContract, method string, params any, returnVal any) error { + if hash, ok := cr.events[method]; ok { + return cr.getLatestValueFromLogPoller(ctx, bc, method, hash, returnVal) + } + return cr.getLatestValueFromContract(ctx, bc, method, params, returnVal) +} + +func (cr *chainReader) getLatestValueFromLogPoller(ctx context.Context, bc commontypes.BoundContract, method string, hash common.Hash, returnVal any) error { + contractAddr := common.HexToAddress(bc.Address) + log, err := cr.lp.LatestLogByEventSigWithConfs(hash, contractAddr, logpoller.Finalized) + if err != nil { + if strings.Contains(err.Error(), "not found") { + return fmt.Errorf("%w: %w", commontypes.ErrNotFound, err) + } + return fmt.Errorf("%w: %w", commontypes.ErrInternal, err) + } + return cr.codec.Decode(ctx, log.Data, returnVal, wrapItemType(method, false)) +} + +func (cr *chainReader) getLatestValueFromContract(ctx context.Context, bc commontypes.BoundContract, method string, params any, returnVal any) error { data, err := cr.codec.Encode(ctx, params, wrapItemType(method, true)) if err != nil { return err @@ -86,13 +107,23 @@ func (cr *chainReader) GetLatestValue(ctx context.Context, bc commontypes.BoundC return cr.codec.Decode(ctx, output, returnVal, wrapItemType(method, false)) } -func (cr *chainReader) Start(ctx context.Context) error { - if err := cr.initialize(); err != nil { - return fmt.Errorf("Failed to initialize ChainReader: %w", err) - } +func (cr *chainReader) Start(_ context.Context) error { + return cr.StartOnce("ChainReader", func() error { + for name, eventId := range cr.events { + if err := cr.lp.RegisterFilter(logpoller.Filter{ + Name: name, + EventSigs: evmtypes.HashArray{eventId}, + Addresses: evmtypes.AddressArray{cr.contractID}, + }); err != nil { + return fmt.Errorf("%w: %w", commontypes.ErrInternal, err) + } + } + return nil + }) +} +func (cr *chainReader) Close() error { return nil } -func (cr *chainReader) Close() error { return nil } func (cr *chainReader) Ready() error { return nil } func (cr *chainReader) HealthReport() map[string]error { @@ -103,13 +134,13 @@ func (cr *chainReader) CreateType(itemType string, forEncoding bool) (any, error return cr.codec.CreateType(wrapItemType(itemType, forEncoding), forEncoding) } -func addEventTypes(name string, contractABI abi.ABI, chainReaderDefinition types.ChainReaderDefinition, parsed *parsedTypes) error { +func addEventTypes(name string, contractABI abi.ABI, chainReaderDefinition types.ChainReaderDefinition, parsed *parsedTypes) (common.Hash, error) { event, methodExists := contractABI.Events[chainReaderDefinition.ChainSpecificName] if !methodExists { - return fmt.Errorf("method: %s doesn't exist", chainReaderDefinition.ChainSpecificName) + return common.Hash{}, fmt.Errorf("method: %s doesn't exist", chainReaderDefinition.ChainSpecificName) } - return addDecoderDef(name, event.Inputs, parsed, chainReaderDefinition) + return event.ID, addDecoderDef(name, event.Inputs, parsed, chainReaderDefinition) } func addMethods(name string, abi abi.ABI, chainReaderDefinition types.ChainReaderDefinition, parsed *parsedTypes) error { @@ -153,11 +184,12 @@ func addDecoderDef(name string, outputs abi.Arguments, parsed *parsedTypes, def return output.Init() } -func addTypes(chainContractReaders map[string]types.ChainContractReader, parsed *parsedTypes) error { +func addTypes(chainContractReaders map[string]types.ChainContractReader, parsed *parsedTypes) (map[string]common.Hash, error) { + events := map[string]common.Hash{} for contractName, chainContractReader := range chainContractReaders { contractAbi, err := abi.JSON(strings.NewReader(chainContractReader.ContractABI)) if err != nil { - return err + return nil, err } for chainReadingDefinitionName, chainReaderDefinition := range chainContractReader.ChainReaderDefinitions { @@ -165,17 +197,20 @@ func addTypes(chainContractReaders map[string]types.ChainContractReader, parsed case types.Method: err = addMethods(chainReadingDefinitionName, contractAbi, chainReaderDefinition, parsed) case types.Event: - err = addEventTypes(chainReadingDefinitionName, contractAbi, chainReaderDefinition, parsed) + var hash common.Hash + hash, err = addEventTypes(chainReadingDefinitionName, contractAbi, chainReaderDefinition, parsed) + events[chainReadingDefinitionName] = hash default: - return fmt.Errorf("invalid chain reader definition read type: %d", chainReaderDefinition.ReadType) + return nil, fmt.Errorf("invalid chain reader definition read type: %d", chainReaderDefinition.ReadType) } + if err != nil { - return errors.Wrap(err, fmt.Sprintf("invalid chain reader config for contract: %q chain reading definition: %q", contractName, chainReadingDefinitionName)) + return nil, errors.Wrap(err, fmt.Sprintf("invalid chain reader config for contract: %q chain reading definition: %q", contractName, chainReadingDefinitionName)) } } } - return nil + return events, nil } func wrapItemType(itemType string, isParams bool) string { diff --git a/core/services/relay/evm/chain_reader_test.go b/core/services/relay/evm/chain_reader_test.go index e3c99cf4170..0dd5183c08a 100644 --- a/core/services/relay/evm/chain_reader_test.go +++ b/core/services/relay/evm/chain_reader_test.go @@ -8,9 +8,11 @@ import ( "math" "math/big" "testing" + "time" "github.com/ethereum/go-ethereum/accounts/abi/bind" "github.com/ethereum/go-ethereum/accounts/abi/bind/backends" + "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/common/hexutil" "github.com/ethereum/go-ethereum/core" evmtypes "github.com/ethereum/go-ethereum/core/types" @@ -24,8 +26,10 @@ import ( . "github.com/smartcontractkit/chainlink-common/pkg/types/interfacetests" //nolint common practice to import test mods with . "github.com/smartcontractkit/chainlink/v2/core/chains/evm/client" - mocklogpoller "github.com/smartcontractkit/chainlink/v2/core/chains/evm/logpoller/mocks" + "github.com/smartcontractkit/chainlink/v2/core/chains/evm/logpoller" "github.com/smartcontractkit/chainlink/v2/core/chains/legacyevm/mocks" + "github.com/smartcontractkit/chainlink/v2/core/internal/testutils" + "github.com/smartcontractkit/chainlink/v2/core/internal/testutils/pgtest" "github.com/smartcontractkit/chainlink/v2/core/logger" "github.com/smartcontractkit/chainlink/v2/core/services/relay/evm" "github.com/smartcontractkit/chainlink/v2/core/services/relay/evm/testfiles" @@ -48,18 +52,24 @@ type chainReaderInterfaceTester struct { sim *backends.SimulatedBackend pk *ecdsa.PrivateKey evmTest *testfiles.Testfiles + cr evm.ChainReaderService } -func (it *chainReaderInterfaceTester) Setup(t *testing.T) { +func (it *chainReaderInterfaceTester) Setup(ctx context.Context, t *testing.T) { + t.Cleanup(func() { + it.address = "" + require.NoError(t, it.cr.Close()) + it.cr = nil + }) + // can re-use the same chain for tests, just make new contract for each test if it.chain != nil { + it.deployNewContract(ctx, t) return } - t.Cleanup(func() { it.address = "" }) it.chain = &mocks.Chain{} it.setupChainNoClient(t) - it.chain.On("LogPoller").Return(logger.NullLogger) testStruct := CreateTestStruct(0, it) @@ -77,6 +87,10 @@ func (it *chainReaderInterfaceTester) Setup(t *testing.T) { MethodReturningUint64Slice: { ChainSpecificName: "GetSliceValue", }, + EventName: { + ChainSpecificName: "Triggered", + ReadType: types.Event, + }, MethodReturningSeenStruct: { ChainSpecificName: returnSeenName, InputModifications: codec.ModifiersConfig{ @@ -97,6 +111,7 @@ func (it *chainReaderInterfaceTester) Setup(t *testing.T) { }, } it.chain.On("Client").Return(client.NewSimulatedBackendClient(t, it.sim, big.NewInt(1337))) + it.deployNewContract(ctx, t) } func (it *chainReaderInterfaceTester) Name() string { @@ -110,15 +125,25 @@ func (it *chainReaderInterfaceTester) GetAccountBytes(i int) []byte { return account } -func (it *chainReaderInterfaceTester) GetChainReader(t *testing.T) clcommontypes.ChainReader { - cr, err := evm.NewChainReaderService(logger.NullLogger, mocklogpoller.NewLogPoller(t), it.chain, it.chainConfig) +func (it *chainReaderInterfaceTester) GetChainReader(ctx context.Context, t *testing.T) clcommontypes.ChainReader { + if it.cr != nil { + return it.cr + } + + addr := common.HexToAddress(it.address) + lggr := logger.NullLogger + db := pgtest.NewSqlxDB(t) + lp := logpoller.NewLogPoller(logpoller.NewORM(testutils.SimulatedChainID, db, lggr, pgtest.NewQConfig(true)), it.chain.Client(), lggr, time.Millisecond, false, 0, 1, 1, 10000) + require.NoError(t, lp.Start(ctx)) + it.chain.On("LogPoller").Return(lp) + cr, err := evm.NewChainReaderService(lggr, lp, addr, it.chain, it.chainConfig) require.NoError(t, err) + require.NoError(t, cr.Start(ctx)) + it.cr = cr return cr } -func (it *chainReaderInterfaceTester) GetPrimitiveContract(ctx context.Context, t *testing.T) clcommontypes.BoundContract { - // Since most tests don't use the contract, it's set up lazily to save time - it.deployNewContract(ctx, t) +func (it *chainReaderInterfaceTester) GetPrimitiveContract(_ context.Context, t *testing.T) clcommontypes.BoundContract { return clcommontypes.BoundContract{ Address: it.address, Name: MethodReturningUint64, @@ -142,10 +167,29 @@ func (it *chainReaderInterfaceTester) GetSliceContract(ctx context.Context, t *t } func (it *chainReaderInterfaceTester) SetLatestValue(ctx context.Context, t *testing.T, testStruct *TestStruct) clcommontypes.BoundContract { + it.sendTxWithTestStruct(ctx, t, testStruct, (*testfiles.TestfilesTransactor).AddTestStruct) + return clcommontypes.BoundContract{ + Address: it.address, + Name: MethodTakingLatestParamsReturningTestStruct, + } +} + +func (it *chainReaderInterfaceTester) TriggerEvent(ctx context.Context, t *testing.T, testStruct *TestStruct) clcommontypes.BoundContract { + it.sendTxWithTestStruct(ctx, t, testStruct, (*testfiles.TestfilesTransactor).TriggerEvent) + return clcommontypes.BoundContract{ + Address: it.address, + Name: EventName, + } +} + +type testStructFn = func(*testfiles.TestfilesTransactor, *bind.TransactOpts, int32, string, uint8, [32]uint8, [32]byte, [][32]byte, *big.Int, testfiles.MidLevelTestStruct) (*evmtypes.Transaction, error) + +func (it *chainReaderInterfaceTester) sendTxWithTestStruct(ctx context.Context, t *testing.T, testStruct *TestStruct, fn testStructFn) { // Since most tests don't use the contract, it's set up lazily to save time it.deployNewContract(ctx, t) - tx, err := it.evmTest.AddTestStruct( + tx, err := fn( + &it.evmTest.TestfilesTransactor, it.auth, testStruct.Field, testStruct.DifferentField, @@ -160,10 +204,6 @@ func (it *chainReaderInterfaceTester) SetLatestValue(ctx context.Context, t *tes it.sim.Commit() it.incNonce() it.awaitTx(ctx, t, tx) - return clcommontypes.BoundContract{ - Address: it.address, - Name: MethodTakingLatestParamsReturningTestStruct, - } } func convertOracleIDs(oracleIDs [32]commontypes.OracleID) [32]byte { diff --git a/core/services/relay/evm/codec_test.go b/core/services/relay/evm/codec_test.go index dd1977eb39c..bb4ee98a44b 100644 --- a/core/services/relay/evm/codec_test.go +++ b/core/services/relay/evm/codec_test.go @@ -1,6 +1,7 @@ package evm_test import ( + "context" "encoding/json" "testing" @@ -49,7 +50,7 @@ func TestCodec(t *testing.T) { type codecInterfaceTester struct{} -func (it *codecInterfaceTester) Setup(_ *testing.T) {} +func (it *codecInterfaceTester) Setup(_ context.Context, _ *testing.T) {} func (it *codecInterfaceTester) GetAccountBytes(i int) []byte { account := []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2} diff --git a/core/services/relay/evm/evm.go b/core/services/relay/evm/evm.go index d1061c6b415..d139d250d08 100644 --- a/core/services/relay/evm/evm.go +++ b/core/services/relay/evm/evm.go @@ -506,6 +506,7 @@ func (r *Relayer) NewMedianProvider(rargs commontypes.RelayArgs, pargs commontyp if !common.IsHexAddress(relayOpts.ContractID) { return nil, fmt.Errorf("invalid contractID %s, expected hex address", relayOpts.ContractID) } + contractID := common.HexToAddress(relayOpts.ContractID) configWatcher, err := newConfigProvider(lggr, r.chain, relayOpts, r.eventBroadcaster) if err != nil { @@ -533,7 +534,7 @@ func (r *Relayer) NewMedianProvider(rargs commontypes.RelayArgs, pargs commontyp // allow fallback until chain reader is default and median contract is removed, but still log just in case var chainReaderService commontypes.ChainReader if relayConfig.ChainReader != nil { - if chainReaderService, err = NewChainReaderService(lggr, r.chain.LogPoller(), r.chain, *relayConfig.ChainReader); err != nil { + if chainReaderService, err = NewChainReaderService(lggr, r.chain.LogPoller(), contractID, r.chain, *relayConfig.ChainReader); err != nil { return nil, err } } else { diff --git a/core/services/relay/evm/testfiles/chain_reader_test_contract.sol b/core/services/relay/evm/testfiles/chain_reader_test_contract.sol index 58d4006a1ad..fee62f1beac 100644 --- a/core/services/relay/evm/testfiles/chain_reader_test_contract.sol +++ b/core/services/relay/evm/testfiles/chain_reader_test_contract.sol @@ -23,6 +23,16 @@ struct InnerTestStruct { } contract LatestValueHolder { + event Triggered( + int32 field, + string differentField, + uint8 oracleId, + uint8[32] oracleIds, + bytes32 account, + bytes32[] accounts, + int192 bigField, + MidLevelTestStruct nestedStruct); + TestStruct[] private seen; uint64[] private arr; @@ -69,4 +79,15 @@ contract LatestValueHolder { function GetSliceValue() public view returns (uint64[] memory) { return arr; } + + function TriggerEvent(int32 field, + string calldata differentField, + uint8 oracleId, + uint8[32] calldata oracleIds, + bytes32 account, + bytes32[] calldata accounts, + int192 bigField, + MidLevelTestStruct calldata nestedStruct) public { + emit Triggered(field, differentField, oracleId, oracleIds, account, accounts, bigField, nestedStruct); + } } \ No newline at end of file diff --git a/core/services/relay/evm/testfiles/chain_reader_test_contract_gen.abi b/core/services/relay/evm/testfiles/chain_reader_test_contract_gen.abi index e16fa1803e8..12d4bd4368c 100644 --- a/core/services/relay/evm/testfiles/chain_reader_test_contract_gen.abi +++ b/core/services/relay/evm/testfiles/chain_reader_test_contract_gen.abi @@ -1 +1 @@ -[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"int32","name":"field","type":"int32"},{"internalType":"string","name":"differentField","type":"string"},{"internalType":"uint8","name":"oracleId","type":"uint8"},{"internalType":"uint8[32]","name":"oracleIds","type":"uint8[32]"},{"internalType":"bytes32","name":"account","type":"bytes32"},{"internalType":"bytes32[]","name":"accounts","type":"bytes32[]"},{"internalType":"int192","name":"bigField","type":"int192"},{"components":[{"internalType":"bytes2","name":"FixedBytes","type":"bytes2"},{"components":[{"internalType":"int64","name":"I","type":"int64"},{"internalType":"string","name":"S","type":"string"}],"internalType":"struct InnerTestStruct","name":"Inner","type":"tuple"}],"internalType":"struct MidLevelTestStruct","name":"nestedStruct","type":"tuple"}],"name":"AddTestStruct","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"i","type":"uint256"}],"name":"GetElementAtIndex","outputs":[{"components":[{"internalType":"int32","name":"Field","type":"int32"},{"internalType":"string","name":"DifferentField","type":"string"},{"internalType":"uint8","name":"OracleId","type":"uint8"},{"internalType":"uint8[32]","name":"OracleIds","type":"uint8[32]"},{"internalType":"bytes32","name":"Account","type":"bytes32"},{"internalType":"bytes32[]","name":"Accounts","type":"bytes32[]"},{"internalType":"int192","name":"BigField","type":"int192"},{"components":[{"internalType":"bytes2","name":"FixedBytes","type":"bytes2"},{"components":[{"internalType":"int64","name":"I","type":"int64"},{"internalType":"string","name":"S","type":"string"}],"internalType":"struct InnerTestStruct","name":"Inner","type":"tuple"}],"internalType":"struct MidLevelTestStruct","name":"NestedStruct","type":"tuple"}],"internalType":"struct TestStruct","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"GetPrimitiveValue","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"GetSliceValue","outputs":[{"internalType":"uint64[]","name":"","type":"uint64[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"int32","name":"field","type":"int32"},{"internalType":"string","name":"differentField","type":"string"},{"internalType":"uint8","name":"oracleId","type":"uint8"},{"internalType":"uint8[32]","name":"oracleIds","type":"uint8[32]"},{"internalType":"bytes32","name":"account","type":"bytes32"},{"internalType":"bytes32[]","name":"accounts","type":"bytes32[]"},{"internalType":"int192","name":"bigField","type":"int192"},{"components":[{"internalType":"bytes2","name":"FixedBytes","type":"bytes2"},{"components":[{"internalType":"int64","name":"I","type":"int64"},{"internalType":"string","name":"S","type":"string"}],"internalType":"struct InnerTestStruct","name":"Inner","type":"tuple"}],"internalType":"struct MidLevelTestStruct","name":"nestedStruct","type":"tuple"}],"name":"ReturnSeen","outputs":[{"components":[{"internalType":"int32","name":"Field","type":"int32"},{"internalType":"string","name":"DifferentField","type":"string"},{"internalType":"uint8","name":"OracleId","type":"uint8"},{"internalType":"uint8[32]","name":"OracleIds","type":"uint8[32]"},{"internalType":"bytes32","name":"Account","type":"bytes32"},{"internalType":"bytes32[]","name":"Accounts","type":"bytes32[]"},{"internalType":"int192","name":"BigField","type":"int192"},{"components":[{"internalType":"bytes2","name":"FixedBytes","type":"bytes2"},{"components":[{"internalType":"int64","name":"I","type":"int64"},{"internalType":"string","name":"S","type":"string"}],"internalType":"struct InnerTestStruct","name":"Inner","type":"tuple"}],"internalType":"struct MidLevelTestStruct","name":"NestedStruct","type":"tuple"}],"internalType":"struct TestStruct","name":"","type":"tuple"}],"stateMutability":"pure","type":"function"}] \ No newline at end of file +[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"int32","name":"field","type":"int32"},{"indexed":false,"internalType":"string","name":"differentField","type":"string"},{"indexed":false,"internalType":"uint8","name":"oracleId","type":"uint8"},{"indexed":false,"internalType":"uint8[32]","name":"oracleIds","type":"uint8[32]"},{"indexed":false,"internalType":"bytes32","name":"account","type":"bytes32"},{"indexed":false,"internalType":"bytes32[]","name":"accounts","type":"bytes32[]"},{"indexed":false,"internalType":"int192","name":"bigField","type":"int192"},{"components":[{"internalType":"bytes2","name":"FixedBytes","type":"bytes2"},{"components":[{"internalType":"int64","name":"I","type":"int64"},{"internalType":"string","name":"S","type":"string"}],"internalType":"struct InnerTestStruct","name":"Inner","type":"tuple"}],"indexed":false,"internalType":"struct MidLevelTestStruct","name":"nestedStruct","type":"tuple"}],"name":"Triggered","type":"event"},{"inputs":[{"internalType":"int32","name":"field","type":"int32"},{"internalType":"string","name":"differentField","type":"string"},{"internalType":"uint8","name":"oracleId","type":"uint8"},{"internalType":"uint8[32]","name":"oracleIds","type":"uint8[32]"},{"internalType":"bytes32","name":"account","type":"bytes32"},{"internalType":"bytes32[]","name":"accounts","type":"bytes32[]"},{"internalType":"int192","name":"bigField","type":"int192"},{"components":[{"internalType":"bytes2","name":"FixedBytes","type":"bytes2"},{"components":[{"internalType":"int64","name":"I","type":"int64"},{"internalType":"string","name":"S","type":"string"}],"internalType":"struct InnerTestStruct","name":"Inner","type":"tuple"}],"internalType":"struct MidLevelTestStruct","name":"nestedStruct","type":"tuple"}],"name":"AddTestStruct","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"i","type":"uint256"}],"name":"GetElementAtIndex","outputs":[{"components":[{"internalType":"int32","name":"Field","type":"int32"},{"internalType":"string","name":"DifferentField","type":"string"},{"internalType":"uint8","name":"OracleId","type":"uint8"},{"internalType":"uint8[32]","name":"OracleIds","type":"uint8[32]"},{"internalType":"bytes32","name":"Account","type":"bytes32"},{"internalType":"bytes32[]","name":"Accounts","type":"bytes32[]"},{"internalType":"int192","name":"BigField","type":"int192"},{"components":[{"internalType":"bytes2","name":"FixedBytes","type":"bytes2"},{"components":[{"internalType":"int64","name":"I","type":"int64"},{"internalType":"string","name":"S","type":"string"}],"internalType":"struct InnerTestStruct","name":"Inner","type":"tuple"}],"internalType":"struct MidLevelTestStruct","name":"NestedStruct","type":"tuple"}],"internalType":"struct TestStruct","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"GetPrimitiveValue","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"GetSliceValue","outputs":[{"internalType":"uint64[]","name":"","type":"uint64[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"int32","name":"field","type":"int32"},{"internalType":"string","name":"differentField","type":"string"},{"internalType":"uint8","name":"oracleId","type":"uint8"},{"internalType":"uint8[32]","name":"oracleIds","type":"uint8[32]"},{"internalType":"bytes32","name":"account","type":"bytes32"},{"internalType":"bytes32[]","name":"accounts","type":"bytes32[]"},{"internalType":"int192","name":"bigField","type":"int192"},{"components":[{"internalType":"bytes2","name":"FixedBytes","type":"bytes2"},{"components":[{"internalType":"int64","name":"I","type":"int64"},{"internalType":"string","name":"S","type":"string"}],"internalType":"struct InnerTestStruct","name":"Inner","type":"tuple"}],"internalType":"struct MidLevelTestStruct","name":"nestedStruct","type":"tuple"}],"name":"ReturnSeen","outputs":[{"components":[{"internalType":"int32","name":"Field","type":"int32"},{"internalType":"string","name":"DifferentField","type":"string"},{"internalType":"uint8","name":"OracleId","type":"uint8"},{"internalType":"uint8[32]","name":"OracleIds","type":"uint8[32]"},{"internalType":"bytes32","name":"Account","type":"bytes32"},{"internalType":"bytes32[]","name":"Accounts","type":"bytes32[]"},{"internalType":"int192","name":"BigField","type":"int192"},{"components":[{"internalType":"bytes2","name":"FixedBytes","type":"bytes2"},{"components":[{"internalType":"int64","name":"I","type":"int64"},{"internalType":"string","name":"S","type":"string"}],"internalType":"struct InnerTestStruct","name":"Inner","type":"tuple"}],"internalType":"struct MidLevelTestStruct","name":"NestedStruct","type":"tuple"}],"internalType":"struct TestStruct","name":"","type":"tuple"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"int32","name":"field","type":"int32"},{"internalType":"string","name":"differentField","type":"string"},{"internalType":"uint8","name":"oracleId","type":"uint8"},{"internalType":"uint8[32]","name":"oracleIds","type":"uint8[32]"},{"internalType":"bytes32","name":"account","type":"bytes32"},{"internalType":"bytes32[]","name":"accounts","type":"bytes32[]"},{"internalType":"int192","name":"bigField","type":"int192"},{"components":[{"internalType":"bytes2","name":"FixedBytes","type":"bytes2"},{"components":[{"internalType":"int64","name":"I","type":"int64"},{"internalType":"string","name":"S","type":"string"}],"internalType":"struct InnerTestStruct","name":"Inner","type":"tuple"}],"internalType":"struct MidLevelTestStruct","name":"nestedStruct","type":"tuple"}],"name":"TriggerEvent","outputs":[],"stateMutability":"nonpayable","type":"function"}] \ No newline at end of file diff --git a/core/services/relay/evm/testfiles/chain_reader_test_contract_gen.bin b/core/services/relay/evm/testfiles/chain_reader_test_contract_gen.bin index 8cb80c9d82e..8cd1c9903e0 100644 --- a/core/services/relay/evm/testfiles/chain_reader_test_contract_gen.bin +++ b/core/services/relay/evm/testfiles/chain_reader_test_contract_gen.bin @@ -1 +1 @@ -608060405234801561001057600080fd5b50600180548082018255600082905260048082047fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6908101805460086003958616810261010090810a8088026001600160401b0391820219909416939093179093558654808801909755848704909301805496909516909202900a918202910219909216919091179055610f5c806100a96000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80637dd6af5b1461005c5780639ca04f6714610071578063b95ad4111461009a578063bdb37c90146100ad578063da8e7a82146100c2575b600080fd5b61006f61006a366004610a30565b6100d1565b005b61008461007f366004610b1b565b610300565b6040516100919190610c80565b60405180910390f35b6100846100a8366004610a30565b6105b0565b6100b56106a1565b6040516100919190610c32565b60405160038152602001610091565b60006040518061010001604052808c60030b81526020018b8b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509082525060ff8a166020808301919091526040805161040081810183529190930192918b918390839080828437600092019190915250505081526020808201899052604080518883028181018401835289825291909301929189918991829190850190849080828437600092019190915250505090825250601785900b60208201526040016101ab84610dc1565b905281546001818101845560009384526020938490208351600a90930201805460039390930b63ffffffff1663ffffffff19909316929092178255838301518051939492936102029392850192919091019061072d565b50604082015160028201805460ff191660ff909216919091179055606082015161023290600383019060206107b1565b506080820151600482015560a0820151805161025891600584019160209091019061083f565b5060c082015160068201805460179290920b6001600160c01b03166001600160c01b031990921691909117905560e082015180516007808401805460f09390931c61ffff1990931692909217825560208084015180516008870180549190940b67ffffffffffffffff1667ffffffffffffffff199091161783558082015180519193926102ed9260098901929091019061072d565b5050505050505050505050505050505050565b610308610879565b6000610315600184610d9c565b8154811061032557610325610efa565b90600052602060002090600a0201604051806101000160405290816000820160009054906101000a900460030b60030b60030b815260200160018201805461036c90610ec5565b80601f016020809104026020016040519081016040528092919081815260200182805461039890610ec5565b80156103e55780601f106103ba576101008083540402835291602001916103e5565b820191906000526020600020905b8154815290600101906020018083116103c857829003601f168201915b5050509183525050600282015460ff166020808301919091526040805161040081018083529190930192916003850191826000855b825461010083900a900460ff1681526020600192830181810494850194909303909202910180841161041a5790505050505050815260200160048201548152602001600582018054806020026020016040519081016040528092919081815260200182805480156104aa57602002820191906000526020600020905b815481526020019060010190808311610496575b50505091835250506006820154601790810b810b900b6020808301919091526040805180820182526007808601805460f01b6001600160f01b031916835283518085018552600888018054840b840b90930b8152600988018054959097019693959194868301949193928401919061052190610ec5565b80601f016020809104026020016040519081016040528092919081815260200182805461054d90610ec5565b801561059a5780601f1061056f5761010080835404028352916020019161059a565b820191906000526020600020905b81548152906001019060200180831161057d57829003601f168201915b5050509190925250505090525090525092915050565b6105b8610879565b6040518061010001604052808c60030b81526020018b8b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509082525060ff8a166020808301919091526040805161040081810183529190930192918b918390839080828437600092019190915250505081526020808201899052604080518883028181018401835289825291909301929189918991829190850190849080828437600092019190915250505090825250601785900b602082015260400161069084610dc1565b90529b9a5050505050505050505050565b6060600180548060200260200160405190810160405280929190818152602001828054801561072357602002820191906000526020600020906000905b82829054906101000a900467ffffffffffffffff1667ffffffffffffffff16815260200190600801906020826007010492830192600103820291508084116106de5790505b5050505050905090565b82805461073990610ec5565b90600052602060002090601f01602090048101928261075b57600085556107a1565b82601f1061077457805160ff19168380011785556107a1565b828001600101855582156107a1579182015b828111156107a1578251825591602001919060010190610786565b506107ad9291506108c8565b5090565b6001830191839082156107a15791602002820160005b8382111561080557835183826101000a81548160ff021916908360ff16021790555092602001926001016020816000010492830192600103026107c7565b80156108325782816101000a81549060ff0219169055600101602081600001049283019260010302610805565b50506107ad9291506108c8565b8280548282559060005260206000209081019282156107a157916020028201828111156107a1578251825591602001919060010190610786565b60408051610100810182526000808252606060208301819052928201529081016108a16108dd565b81526000602082018190526060604083018190528201526080016108c36108fc565b905290565b5b808211156107ad57600081556001016108c9565b6040518061040001604052806020906020820280368337509192915050565b604051806040016040528060006001600160f01b03191681526020016108c36040518060400160405280600060070b8152602001606081525090565b60008083601f84011261094a57600080fd5b50813567ffffffffffffffff81111561096257600080fd5b6020830191508360208260051b850101111561097d57600080fd5b9250929050565b80610400810183101561099657600080fd5b92915050565b8035601781900b81146109ae57600080fd5b919050565b8035600381900b81146109ae57600080fd5b60008083601f8401126109d757600080fd5b50813567ffffffffffffffff8111156109ef57600080fd5b60208301915083602082850101111561097d57600080fd5b600060408284031215610a1957600080fd5b50919050565b803560ff811681146109ae57600080fd5b6000806000806000806000806000806104e08b8d031215610a5057600080fd5b610a598b6109b3565b995060208b013567ffffffffffffffff80821115610a7657600080fd5b610a828e838f016109c5565b909b509950899150610a9660408e01610a1f565b9850610aa58e60608f01610984565b97506104608d013596506104808d0135915080821115610ac457600080fd5b610ad08e838f01610938565b9096509450849150610ae56104a08e0161099c565b93506104c08d0135915080821115610afc57600080fd5b50610b098d828e01610a07565b9150509295989b9194979a5092959850565b600060208284031215610b2d57600080fd5b5035919050565b600081518084526020808501945080840160005b83811015610b6457815187529582019590820190600101610b48565b509495945050505050565b8060005b6020808210610b825750610b99565b825160ff1685529384019390910190600101610b73565b50505050565b6000815180845260005b81811015610bc557602081850181015186830182015201610ba9565b81811115610bd7576000602083870101525b50601f01601f19169290920160200192915050565b61ffff60f01b81511682526000602082015160406020850152805160070b60408501526020810151905060406060850152610c2a6080850182610b9f565b949350505050565b6020808252825182820181905260009190848201906040850190845b81811015610c7457835167ffffffffffffffff1683529284019291840191600101610c4e565b50909695505050505050565b60208152610c9460208201835160030b9052565b600060208301516104e0806040850152610cb2610500850183610b9f565b91506040850151610cc8606086018260ff169052565b506060850151610cdb6080860182610b6f565b50608085015161048085015260a0850151601f1980868503016104a0870152610d048483610b34565b935060c08701519150610d1d6104c087018360170b9052565b60e0870151915080868503018387015250610d388382610bec565b9695505050505050565b6040805190810167ffffffffffffffff81118282101715610d6557610d65610f10565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715610d9457610d94610f10565b604052919050565b600082821015610dbc57634e487b7160e01b600052601160045260246000fd5b500390565b600060408236031215610dd357600080fd5b610ddb610d42565b82356001600160f01b031981168114610df357600080fd5b815260208381013567ffffffffffffffff80821115610e1157600080fd5b818601915060408236031215610e2657600080fd5b610e2e610d42565b82358060070b8114610e3f57600080fd5b81528284013582811115610e5257600080fd5b929092019136601f840112610e6657600080fd5b823582811115610e7857610e78610f10565b610e8a601f8201601f19168601610d6b565b92508083523685828601011115610ea057600080fd5b8085850186850137600090830185015280840191909152918301919091525092915050565b600181811c90821680610ed957607f821691505b60208210811415610a1957634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fdfea26469706673582212203e9087524a5a63426d26593011ef69ba9a517930f68ed2747aed8804859d3ed064736f6c63430008060033 \ No newline at end of file +608060405234801561001057600080fd5b50600180548082018255600082905260048082047fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6908101805460086003958616810261010090810a8088026001600160401b0391820219909416939093179093558654808801909755848704909301805496909516909202900a91820291021990921691909117905561118e806100a96000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c80637dd6af5b146100675780639ca04f671461007c578063b95ad411146100a5578063bdb37c90146100b8578063da8e7a82146100cd578063e669831d146100dc575b600080fd5b61007a610075366004610acd565b6100ef565b005b61008f61008a366004610bb8565b61031e565b60405161009c9190610ed3565b60405180910390f35b61008f6100b3366004610acd565b6105ce565b6100c06106bf565b60405161009c9190610dd7565b6040516003815260200161009c565b61007a6100ea366004610acd565b61074b565b60006040518061010001604052808c60030b81526020018b8b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509082525060ff8a166020808301919091526040805161040081810183529190930192918b918390839080828437600092019190915250505081526020808201899052604080518883028181018401835289825291909301929189918991829190850190849080828437600092019190915250505090825250601785900b60208201526040016101c98461100a565b905281546001818101845560009384526020938490208351600a90930201805460039390930b63ffffffff1663ffffffff1990931692909217825583830151805193949293610220939285019291909101906107a0565b50604082015160028201805460ff191660ff90921691909117905560608201516102509060038301906020610824565b506080820151600482015560a082015180516102769160058401916020909101906108b2565b5060c082015160068201805460179290920b6001600160c01b03166001600160c01b031990921691909117905560e082015180516007808401805460f09390931c61ffff1990931692909217825560208084015180516008870180549190940b67ffffffffffffffff1667ffffffffffffffff1990911617835580820151805191939261030b926009890192909101906107a0565b5050505050505050505050505050505050565b6103266108ec565b6000610333600184610fe5565b815481106103435761034361112c565b90600052602060002090600a0201604051806101000160405290816000820160009054906101000a900460030b60030b60030b815260200160018201805461038a906110f7565b80601f01602080910402602001604051908101604052809291908181526020018280546103b6906110f7565b80156104035780601f106103d857610100808354040283529160200191610403565b820191906000526020600020905b8154815290600101906020018083116103e657829003601f168201915b5050509183525050600282015460ff166020808301919091526040805161040081018083529190930192916003850191826000855b825461010083900a900460ff168152602060019283018181049485019490930390920291018084116104385790505050505050815260200160048201548152602001600582018054806020026020016040519081016040528092919081815260200182805480156104c857602002820191906000526020600020905b8154815260200190600101908083116104b4575b50505091835250506006820154601790810b810b900b6020808301919091526040805180820182526007808601805460f01b6001600160f01b031916835283518085018552600888018054840b840b90930b8152600988018054959097019693959194868301949193928401919061053f906110f7565b80601f016020809104026020016040519081016040528092919081815260200182805461056b906110f7565b80156105b85780601f1061058d576101008083540402835291602001916105b8565b820191906000526020600020905b81548152906001019060200180831161059b57829003601f168201915b5050509190925250505090525090525092915050565b6105d66108ec565b6040518061010001604052808c60030b81526020018b8b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509082525060ff8a166020808301919091526040805161040081810183529190930192918b918390839080828437600092019190915250505081526020808201899052604080518883028181018401835289825291909301929189918991829190850190849080828437600092019190915250505090825250601785900b60208201526040016106ae8461100a565b90529b9a5050505050505050505050565b6060600180548060200260200160405190810160405280929190818152602001828054801561074157602002820191906000526020600020906000905b82829054906101000a900467ffffffffffffffff1667ffffffffffffffff16815260200190600801906020826007010492830192600103820291508084116106fc5790505b5050505050905090565b7f7d2abe6109e46b893ac1835c9287d6ad5c5ccf3d0254d2ca72225873795e0f538a8a8a8a8a8a8a8a8a8a60405161078c9a99989796959493929190610e25565b60405180910390a150505050505050505050565b8280546107ac906110f7565b90600052602060002090601f0160209004810192826107ce5760008555610814565b82601f106107e757805160ff1916838001178555610814565b82800160010185558215610814579182015b828111156108145782518255916020019190600101906107f9565b5061082092915061093b565b5090565b6001830191839082156108145791602002820160005b8382111561087857835183826101000a81548160ff021916908360ff160217905550926020019260010160208160000104928301926001030261083a565b80156108a55782816101000a81549060ff0219169055600101602081600001049283019260010302610878565b505061082092915061093b565b82805482825590600052602060002090810192821561081457916020028201828111156108145782518255916020019190600101906107f9565b6040805161010081018252600080825260606020830181905292820152908101610914610950565b815260006020820181905260606040830181905282015260800161093661096f565b905290565b5b80821115610820576000815560010161093c565b6040518061040001604052806020906020820280368337509192915050565b604051806040016040528060006001600160f01b03191681526020016109366040518060400160405280600060070b8152602001606081525090565b60008083601f8401126109bd57600080fd5b50813567ffffffffffffffff8111156109d557600080fd5b6020830191508360208260051b85010111156109f057600080fd5b9250929050565b806104008101831015610a0957600080fd5b92915050565b80356001600160f01b031981168114610a2757600080fd5b919050565b8035601781900b8114610a2757600080fd5b8035600381900b8114610a2757600080fd5b8035600781900b8114610a2757600080fd5b60008083601f840112610a7457600080fd5b50813567ffffffffffffffff811115610a8c57600080fd5b6020830191508360208285010111156109f057600080fd5b600060408284031215610ab657600080fd5b50919050565b803560ff81168114610a2757600080fd5b6000806000806000806000806000806104e08b8d031215610aed57600080fd5b610af68b610a3e565b995060208b013567ffffffffffffffff80821115610b1357600080fd5b610b1f8e838f01610a62565b909b509950899150610b3360408e01610abc565b9850610b428e60608f016109f7565b97506104608d013596506104808d0135915080821115610b6157600080fd5b610b6d8e838f016109ab565b9096509450849150610b826104a08e01610a2c565b93506104c08d0135915080821115610b9957600080fd5b50610ba68d828e01610aa4565b9150509295989b9194979a5092959850565b600060208284031215610bca57600080fd5b5035919050565b81835260006001600160fb1b03831115610bea57600080fd5b8260051b8083602087013760009401602001938452509192915050565b600081518084526020808501945080840160005b83811015610c3757815187529582019590820190600101610c1b565b509495945050505050565b8060005b6020808210610c555750610c6c565b825160ff1685529384019390910190600101610c46565b50505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000815180845260005b81811015610cc157602081850181015186830182015201610ca5565b81811115610cd3576000602083870101525b50601f01601f19169290920160200192915050565b6001600160f01b0319610cfa82610a0f565b16825260006020820135603e19833603018112610d1657600080fd5b604060208501528201610d2881610a50565b60070b60408501526020810135601e19823603018112610d4757600080fd5b8101803567ffffffffffffffff811115610d6057600080fd5b803603831315610d6f57600080fd5b60406060870152610d87608087018260208501610c72565b9695505050505050565b61ffff60f01b81511682526000602082015160406020850152805160070b60408501526020810151905060406060850152610dcf6080850182610c9b565b949350505050565b6020808252825182820181905260009190848201906040850190845b81811015610e1957835167ffffffffffffffff1683529284019291840191600101610df3565b50909695505050505050565b60006104e08c60030b835260208181850152610e448285018d8f610c72565b915060ff808c166040860152606085018b60005b84811015610e7d5783610e6a83610abc565b1683529184019190840190600101610e58565b505050505087610460840152828103610480840152610e9d818789610bd1565b9050610eaf6104a084018660170b9052565b8281036104c0840152610ec28185610ce8565b9d9c50505050505050505050505050565b60208152610ee760208201835160030b9052565b600060208301516104e0806040850152610f05610500850183610c9b565b91506040850151610f1b606086018260ff169052565b506060850151610f2e6080860182610c42565b50608085015161048085015260a0850151601f1980868503016104a0870152610f578483610c07565b935060c08701519150610f706104c087018360170b9052565b60e0870151915080868503018387015250610d878382610d91565b6040805190810167ffffffffffffffff81118282101715610fae57610fae611142565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715610fdd57610fdd611142565b604052919050565b60008282101561100557634e487b7160e01b600052601160045260246000fd5b500390565b60006040823603121561101c57600080fd5b611024610f8b565b61102d83610a0f565b815260208084013567ffffffffffffffff8082111561104b57600080fd5b81860191506040823603121561106057600080fd5b611068610f8b565b61107183610a50565b8152838301358281111561108457600080fd5b929092019136601f84011261109857600080fd5b8235828111156110aa576110aa611142565b6110bc601f8201601f19168601610fb4565b925080835236858286010111156110d257600080fd5b8085850186850137600090830185015280840191909152918301919091525092915050565b600181811c9082168061110b57607f821691505b60208210811415610ab657634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fdfea2646970667358221220dc7c8830d1691fb07419d1e88774f8489193b9b32a6a2406f298335883e9593b64736f6c63430008060033 \ No newline at end of file diff --git a/core/services/relay/evm/testfiles/chain_reader_test_contract_gen.go b/core/services/relay/evm/testfiles/chain_reader_test_contract_gen.go index d2b173c6a6e..da4f540d3c5 100644 --- a/core/services/relay/evm/testfiles/chain_reader_test_contract_gen.go +++ b/core/services/relay/evm/testfiles/chain_reader_test_contract_gen.go @@ -55,8 +55,8 @@ type TestStruct struct { // TestfilesMetaData contains all meta data concerning the Testfiles contract. var TestfilesMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"int32\",\"name\":\"field\",\"type\":\"int32\"},{\"internalType\":\"string\",\"name\":\"differentField\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"oracleId\",\"type\":\"uint8\"},{\"internalType\":\"uint8[32]\",\"name\":\"oracleIds\",\"type\":\"uint8[32]\"},{\"internalType\":\"bytes32\",\"name\":\"account\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[]\",\"name\":\"accounts\",\"type\":\"bytes32[]\"},{\"internalType\":\"int192\",\"name\":\"bigField\",\"type\":\"int192\"},{\"components\":[{\"internalType\":\"bytes2\",\"name\":\"FixedBytes\",\"type\":\"bytes2\"},{\"components\":[{\"internalType\":\"int64\",\"name\":\"I\",\"type\":\"int64\"},{\"internalType\":\"string\",\"name\":\"S\",\"type\":\"string\"}],\"internalType\":\"structInnerTestStruct\",\"name\":\"Inner\",\"type\":\"tuple\"}],\"internalType\":\"structMidLevelTestStruct\",\"name\":\"nestedStruct\",\"type\":\"tuple\"}],\"name\":\"AddTestStruct\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"}],\"name\":\"GetElementAtIndex\",\"outputs\":[{\"components\":[{\"internalType\":\"int32\",\"name\":\"Field\",\"type\":\"int32\"},{\"internalType\":\"string\",\"name\":\"DifferentField\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"OracleId\",\"type\":\"uint8\"},{\"internalType\":\"uint8[32]\",\"name\":\"OracleIds\",\"type\":\"uint8[32]\"},{\"internalType\":\"bytes32\",\"name\":\"Account\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[]\",\"name\":\"Accounts\",\"type\":\"bytes32[]\"},{\"internalType\":\"int192\",\"name\":\"BigField\",\"type\":\"int192\"},{\"components\":[{\"internalType\":\"bytes2\",\"name\":\"FixedBytes\",\"type\":\"bytes2\"},{\"components\":[{\"internalType\":\"int64\",\"name\":\"I\",\"type\":\"int64\"},{\"internalType\":\"string\",\"name\":\"S\",\"type\":\"string\"}],\"internalType\":\"structInnerTestStruct\",\"name\":\"Inner\",\"type\":\"tuple\"}],\"internalType\":\"structMidLevelTestStruct\",\"name\":\"NestedStruct\",\"type\":\"tuple\"}],\"internalType\":\"structTestStruct\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GetPrimitiveValue\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GetSliceValue\",\"outputs\":[{\"internalType\":\"uint64[]\",\"name\":\"\",\"type\":\"uint64[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int32\",\"name\":\"field\",\"type\":\"int32\"},{\"internalType\":\"string\",\"name\":\"differentField\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"oracleId\",\"type\":\"uint8\"},{\"internalType\":\"uint8[32]\",\"name\":\"oracleIds\",\"type\":\"uint8[32]\"},{\"internalType\":\"bytes32\",\"name\":\"account\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[]\",\"name\":\"accounts\",\"type\":\"bytes32[]\"},{\"internalType\":\"int192\",\"name\":\"bigField\",\"type\":\"int192\"},{\"components\":[{\"internalType\":\"bytes2\",\"name\":\"FixedBytes\",\"type\":\"bytes2\"},{\"components\":[{\"internalType\":\"int64\",\"name\":\"I\",\"type\":\"int64\"},{\"internalType\":\"string\",\"name\":\"S\",\"type\":\"string\"}],\"internalType\":\"structInnerTestStruct\",\"name\":\"Inner\",\"type\":\"tuple\"}],\"internalType\":\"structMidLevelTestStruct\",\"name\":\"nestedStruct\",\"type\":\"tuple\"}],\"name\":\"ReturnSeen\",\"outputs\":[{\"components\":[{\"internalType\":\"int32\",\"name\":\"Field\",\"type\":\"int32\"},{\"internalType\":\"string\",\"name\":\"DifferentField\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"OracleId\",\"type\":\"uint8\"},{\"internalType\":\"uint8[32]\",\"name\":\"OracleIds\",\"type\":\"uint8[32]\"},{\"internalType\":\"bytes32\",\"name\":\"Account\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[]\",\"name\":\"Accounts\",\"type\":\"bytes32[]\"},{\"internalType\":\"int192\",\"name\":\"BigField\",\"type\":\"int192\"},{\"components\":[{\"internalType\":\"bytes2\",\"name\":\"FixedBytes\",\"type\":\"bytes2\"},{\"components\":[{\"internalType\":\"int64\",\"name\":\"I\",\"type\":\"int64\"},{\"internalType\":\"string\",\"name\":\"S\",\"type\":\"string\"}],\"internalType\":\"structInnerTestStruct\",\"name\":\"Inner\",\"type\":\"tuple\"}],\"internalType\":\"structMidLevelTestStruct\",\"name\":\"NestedStruct\",\"type\":\"tuple\"}],\"internalType\":\"structTestStruct\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}]", - Bin: "0x608060405234801561001057600080fd5b50600180548082018255600082905260048082047fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6908101805460086003958616810261010090810a8088026001600160401b0391820219909416939093179093558654808801909755848704909301805496909516909202900a918202910219909216919091179055610f5c806100a96000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80637dd6af5b1461005c5780639ca04f6714610071578063b95ad4111461009a578063bdb37c90146100ad578063da8e7a82146100c2575b600080fd5b61006f61006a366004610a30565b6100d1565b005b61008461007f366004610b1b565b610300565b6040516100919190610c80565b60405180910390f35b6100846100a8366004610a30565b6105b0565b6100b56106a1565b6040516100919190610c32565b60405160038152602001610091565b60006040518061010001604052808c60030b81526020018b8b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509082525060ff8a166020808301919091526040805161040081810183529190930192918b918390839080828437600092019190915250505081526020808201899052604080518883028181018401835289825291909301929189918991829190850190849080828437600092019190915250505090825250601785900b60208201526040016101ab84610dc1565b905281546001818101845560009384526020938490208351600a90930201805460039390930b63ffffffff1663ffffffff19909316929092178255838301518051939492936102029392850192919091019061072d565b50604082015160028201805460ff191660ff909216919091179055606082015161023290600383019060206107b1565b506080820151600482015560a0820151805161025891600584019160209091019061083f565b5060c082015160068201805460179290920b6001600160c01b03166001600160c01b031990921691909117905560e082015180516007808401805460f09390931c61ffff1990931692909217825560208084015180516008870180549190940b67ffffffffffffffff1667ffffffffffffffff199091161783558082015180519193926102ed9260098901929091019061072d565b5050505050505050505050505050505050565b610308610879565b6000610315600184610d9c565b8154811061032557610325610efa565b90600052602060002090600a0201604051806101000160405290816000820160009054906101000a900460030b60030b60030b815260200160018201805461036c90610ec5565b80601f016020809104026020016040519081016040528092919081815260200182805461039890610ec5565b80156103e55780601f106103ba576101008083540402835291602001916103e5565b820191906000526020600020905b8154815290600101906020018083116103c857829003601f168201915b5050509183525050600282015460ff166020808301919091526040805161040081018083529190930192916003850191826000855b825461010083900a900460ff1681526020600192830181810494850194909303909202910180841161041a5790505050505050815260200160048201548152602001600582018054806020026020016040519081016040528092919081815260200182805480156104aa57602002820191906000526020600020905b815481526020019060010190808311610496575b50505091835250506006820154601790810b810b900b6020808301919091526040805180820182526007808601805460f01b6001600160f01b031916835283518085018552600888018054840b840b90930b8152600988018054959097019693959194868301949193928401919061052190610ec5565b80601f016020809104026020016040519081016040528092919081815260200182805461054d90610ec5565b801561059a5780601f1061056f5761010080835404028352916020019161059a565b820191906000526020600020905b81548152906001019060200180831161057d57829003601f168201915b5050509190925250505090525090525092915050565b6105b8610879565b6040518061010001604052808c60030b81526020018b8b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509082525060ff8a166020808301919091526040805161040081810183529190930192918b918390839080828437600092019190915250505081526020808201899052604080518883028181018401835289825291909301929189918991829190850190849080828437600092019190915250505090825250601785900b602082015260400161069084610dc1565b90529b9a5050505050505050505050565b6060600180548060200260200160405190810160405280929190818152602001828054801561072357602002820191906000526020600020906000905b82829054906101000a900467ffffffffffffffff1667ffffffffffffffff16815260200190600801906020826007010492830192600103820291508084116106de5790505b5050505050905090565b82805461073990610ec5565b90600052602060002090601f01602090048101928261075b57600085556107a1565b82601f1061077457805160ff19168380011785556107a1565b828001600101855582156107a1579182015b828111156107a1578251825591602001919060010190610786565b506107ad9291506108c8565b5090565b6001830191839082156107a15791602002820160005b8382111561080557835183826101000a81548160ff021916908360ff16021790555092602001926001016020816000010492830192600103026107c7565b80156108325782816101000a81549060ff0219169055600101602081600001049283019260010302610805565b50506107ad9291506108c8565b8280548282559060005260206000209081019282156107a157916020028201828111156107a1578251825591602001919060010190610786565b60408051610100810182526000808252606060208301819052928201529081016108a16108dd565b81526000602082018190526060604083018190528201526080016108c36108fc565b905290565b5b808211156107ad57600081556001016108c9565b6040518061040001604052806020906020820280368337509192915050565b604051806040016040528060006001600160f01b03191681526020016108c36040518060400160405280600060070b8152602001606081525090565b60008083601f84011261094a57600080fd5b50813567ffffffffffffffff81111561096257600080fd5b6020830191508360208260051b850101111561097d57600080fd5b9250929050565b80610400810183101561099657600080fd5b92915050565b8035601781900b81146109ae57600080fd5b919050565b8035600381900b81146109ae57600080fd5b60008083601f8401126109d757600080fd5b50813567ffffffffffffffff8111156109ef57600080fd5b60208301915083602082850101111561097d57600080fd5b600060408284031215610a1957600080fd5b50919050565b803560ff811681146109ae57600080fd5b6000806000806000806000806000806104e08b8d031215610a5057600080fd5b610a598b6109b3565b995060208b013567ffffffffffffffff80821115610a7657600080fd5b610a828e838f016109c5565b909b509950899150610a9660408e01610a1f565b9850610aa58e60608f01610984565b97506104608d013596506104808d0135915080821115610ac457600080fd5b610ad08e838f01610938565b9096509450849150610ae56104a08e0161099c565b93506104c08d0135915080821115610afc57600080fd5b50610b098d828e01610a07565b9150509295989b9194979a5092959850565b600060208284031215610b2d57600080fd5b5035919050565b600081518084526020808501945080840160005b83811015610b6457815187529582019590820190600101610b48565b509495945050505050565b8060005b6020808210610b825750610b99565b825160ff1685529384019390910190600101610b73565b50505050565b6000815180845260005b81811015610bc557602081850181015186830182015201610ba9565b81811115610bd7576000602083870101525b50601f01601f19169290920160200192915050565b61ffff60f01b81511682526000602082015160406020850152805160070b60408501526020810151905060406060850152610c2a6080850182610b9f565b949350505050565b6020808252825182820181905260009190848201906040850190845b81811015610c7457835167ffffffffffffffff1683529284019291840191600101610c4e565b50909695505050505050565b60208152610c9460208201835160030b9052565b600060208301516104e0806040850152610cb2610500850183610b9f565b91506040850151610cc8606086018260ff169052565b506060850151610cdb6080860182610b6f565b50608085015161048085015260a0850151601f1980868503016104a0870152610d048483610b34565b935060c08701519150610d1d6104c087018360170b9052565b60e0870151915080868503018387015250610d388382610bec565b9695505050505050565b6040805190810167ffffffffffffffff81118282101715610d6557610d65610f10565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715610d9457610d94610f10565b604052919050565b600082821015610dbc57634e487b7160e01b600052601160045260246000fd5b500390565b600060408236031215610dd357600080fd5b610ddb610d42565b82356001600160f01b031981168114610df357600080fd5b815260208381013567ffffffffffffffff80821115610e1157600080fd5b818601915060408236031215610e2657600080fd5b610e2e610d42565b82358060070b8114610e3f57600080fd5b81528284013582811115610e5257600080fd5b929092019136601f840112610e6657600080fd5b823582811115610e7857610e78610f10565b610e8a601f8201601f19168601610d6b565b92508083523685828601011115610ea057600080fd5b8085850186850137600090830185015280840191909152918301919091525092915050565b600181811c90821680610ed957607f821691505b60208210811415610a1957634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fdfea26469706673582212203e9087524a5a63426d26593011ef69ba9a517930f68ed2747aed8804859d3ed064736f6c63430008060033", + ABI: "[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"int32\",\"name\":\"field\",\"type\":\"int32\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"differentField\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"oracleId\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint8[32]\",\"name\":\"oracleIds\",\"type\":\"uint8[32]\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"account\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32[]\",\"name\":\"accounts\",\"type\":\"bytes32[]\"},{\"indexed\":false,\"internalType\":\"int192\",\"name\":\"bigField\",\"type\":\"int192\"},{\"components\":[{\"internalType\":\"bytes2\",\"name\":\"FixedBytes\",\"type\":\"bytes2\"},{\"components\":[{\"internalType\":\"int64\",\"name\":\"I\",\"type\":\"int64\"},{\"internalType\":\"string\",\"name\":\"S\",\"type\":\"string\"}],\"internalType\":\"structInnerTestStruct\",\"name\":\"Inner\",\"type\":\"tuple\"}],\"indexed\":false,\"internalType\":\"structMidLevelTestStruct\",\"name\":\"nestedStruct\",\"type\":\"tuple\"}],\"name\":\"Triggered\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"int32\",\"name\":\"field\",\"type\":\"int32\"},{\"internalType\":\"string\",\"name\":\"differentField\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"oracleId\",\"type\":\"uint8\"},{\"internalType\":\"uint8[32]\",\"name\":\"oracleIds\",\"type\":\"uint8[32]\"},{\"internalType\":\"bytes32\",\"name\":\"account\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[]\",\"name\":\"accounts\",\"type\":\"bytes32[]\"},{\"internalType\":\"int192\",\"name\":\"bigField\",\"type\":\"int192\"},{\"components\":[{\"internalType\":\"bytes2\",\"name\":\"FixedBytes\",\"type\":\"bytes2\"},{\"components\":[{\"internalType\":\"int64\",\"name\":\"I\",\"type\":\"int64\"},{\"internalType\":\"string\",\"name\":\"S\",\"type\":\"string\"}],\"internalType\":\"structInnerTestStruct\",\"name\":\"Inner\",\"type\":\"tuple\"}],\"internalType\":\"structMidLevelTestStruct\",\"name\":\"nestedStruct\",\"type\":\"tuple\"}],\"name\":\"AddTestStruct\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"i\",\"type\":\"uint256\"}],\"name\":\"GetElementAtIndex\",\"outputs\":[{\"components\":[{\"internalType\":\"int32\",\"name\":\"Field\",\"type\":\"int32\"},{\"internalType\":\"string\",\"name\":\"DifferentField\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"OracleId\",\"type\":\"uint8\"},{\"internalType\":\"uint8[32]\",\"name\":\"OracleIds\",\"type\":\"uint8[32]\"},{\"internalType\":\"bytes32\",\"name\":\"Account\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[]\",\"name\":\"Accounts\",\"type\":\"bytes32[]\"},{\"internalType\":\"int192\",\"name\":\"BigField\",\"type\":\"int192\"},{\"components\":[{\"internalType\":\"bytes2\",\"name\":\"FixedBytes\",\"type\":\"bytes2\"},{\"components\":[{\"internalType\":\"int64\",\"name\":\"I\",\"type\":\"int64\"},{\"internalType\":\"string\",\"name\":\"S\",\"type\":\"string\"}],\"internalType\":\"structInnerTestStruct\",\"name\":\"Inner\",\"type\":\"tuple\"}],\"internalType\":\"structMidLevelTestStruct\",\"name\":\"NestedStruct\",\"type\":\"tuple\"}],\"internalType\":\"structTestStruct\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GetPrimitiveValue\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"GetSliceValue\",\"outputs\":[{\"internalType\":\"uint64[]\",\"name\":\"\",\"type\":\"uint64[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int32\",\"name\":\"field\",\"type\":\"int32\"},{\"internalType\":\"string\",\"name\":\"differentField\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"oracleId\",\"type\":\"uint8\"},{\"internalType\":\"uint8[32]\",\"name\":\"oracleIds\",\"type\":\"uint8[32]\"},{\"internalType\":\"bytes32\",\"name\":\"account\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[]\",\"name\":\"accounts\",\"type\":\"bytes32[]\"},{\"internalType\":\"int192\",\"name\":\"bigField\",\"type\":\"int192\"},{\"components\":[{\"internalType\":\"bytes2\",\"name\":\"FixedBytes\",\"type\":\"bytes2\"},{\"components\":[{\"internalType\":\"int64\",\"name\":\"I\",\"type\":\"int64\"},{\"internalType\":\"string\",\"name\":\"S\",\"type\":\"string\"}],\"internalType\":\"structInnerTestStruct\",\"name\":\"Inner\",\"type\":\"tuple\"}],\"internalType\":\"structMidLevelTestStruct\",\"name\":\"nestedStruct\",\"type\":\"tuple\"}],\"name\":\"ReturnSeen\",\"outputs\":[{\"components\":[{\"internalType\":\"int32\",\"name\":\"Field\",\"type\":\"int32\"},{\"internalType\":\"string\",\"name\":\"DifferentField\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"OracleId\",\"type\":\"uint8\"},{\"internalType\":\"uint8[32]\",\"name\":\"OracleIds\",\"type\":\"uint8[32]\"},{\"internalType\":\"bytes32\",\"name\":\"Account\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[]\",\"name\":\"Accounts\",\"type\":\"bytes32[]\"},{\"internalType\":\"int192\",\"name\":\"BigField\",\"type\":\"int192\"},{\"components\":[{\"internalType\":\"bytes2\",\"name\":\"FixedBytes\",\"type\":\"bytes2\"},{\"components\":[{\"internalType\":\"int64\",\"name\":\"I\",\"type\":\"int64\"},{\"internalType\":\"string\",\"name\":\"S\",\"type\":\"string\"}],\"internalType\":\"structInnerTestStruct\",\"name\":\"Inner\",\"type\":\"tuple\"}],\"internalType\":\"structMidLevelTestStruct\",\"name\":\"NestedStruct\",\"type\":\"tuple\"}],\"internalType\":\"structTestStruct\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"int32\",\"name\":\"field\",\"type\":\"int32\"},{\"internalType\":\"string\",\"name\":\"differentField\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"oracleId\",\"type\":\"uint8\"},{\"internalType\":\"uint8[32]\",\"name\":\"oracleIds\",\"type\":\"uint8[32]\"},{\"internalType\":\"bytes32\",\"name\":\"account\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[]\",\"name\":\"accounts\",\"type\":\"bytes32[]\"},{\"internalType\":\"int192\",\"name\":\"bigField\",\"type\":\"int192\"},{\"components\":[{\"internalType\":\"bytes2\",\"name\":\"FixedBytes\",\"type\":\"bytes2\"},{\"components\":[{\"internalType\":\"int64\",\"name\":\"I\",\"type\":\"int64\"},{\"internalType\":\"string\",\"name\":\"S\",\"type\":\"string\"}],\"internalType\":\"structInnerTestStruct\",\"name\":\"Inner\",\"type\":\"tuple\"}],\"internalType\":\"structMidLevelTestStruct\",\"name\":\"nestedStruct\",\"type\":\"tuple\"}],\"name\":\"TriggerEvent\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", + Bin: "0x608060405234801561001057600080fd5b50600180548082018255600082905260048082047fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6908101805460086003958616810261010090810a8088026001600160401b0391820219909416939093179093558654808801909755848704909301805496909516909202900a91820291021990921691909117905561118e806100a96000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c80637dd6af5b146100675780639ca04f671461007c578063b95ad411146100a5578063bdb37c90146100b8578063da8e7a82146100cd578063e669831d146100dc575b600080fd5b61007a610075366004610acd565b6100ef565b005b61008f61008a366004610bb8565b61031e565b60405161009c9190610ed3565b60405180910390f35b61008f6100b3366004610acd565b6105ce565b6100c06106bf565b60405161009c9190610dd7565b6040516003815260200161009c565b61007a6100ea366004610acd565b61074b565b60006040518061010001604052808c60030b81526020018b8b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509082525060ff8a166020808301919091526040805161040081810183529190930192918b918390839080828437600092019190915250505081526020808201899052604080518883028181018401835289825291909301929189918991829190850190849080828437600092019190915250505090825250601785900b60208201526040016101c98461100a565b905281546001818101845560009384526020938490208351600a90930201805460039390930b63ffffffff1663ffffffff1990931692909217825583830151805193949293610220939285019291909101906107a0565b50604082015160028201805460ff191660ff90921691909117905560608201516102509060038301906020610824565b506080820151600482015560a082015180516102769160058401916020909101906108b2565b5060c082015160068201805460179290920b6001600160c01b03166001600160c01b031990921691909117905560e082015180516007808401805460f09390931c61ffff1990931692909217825560208084015180516008870180549190940b67ffffffffffffffff1667ffffffffffffffff1990911617835580820151805191939261030b926009890192909101906107a0565b5050505050505050505050505050505050565b6103266108ec565b6000610333600184610fe5565b815481106103435761034361112c565b90600052602060002090600a0201604051806101000160405290816000820160009054906101000a900460030b60030b60030b815260200160018201805461038a906110f7565b80601f01602080910402602001604051908101604052809291908181526020018280546103b6906110f7565b80156104035780601f106103d857610100808354040283529160200191610403565b820191906000526020600020905b8154815290600101906020018083116103e657829003601f168201915b5050509183525050600282015460ff166020808301919091526040805161040081018083529190930192916003850191826000855b825461010083900a900460ff168152602060019283018181049485019490930390920291018084116104385790505050505050815260200160048201548152602001600582018054806020026020016040519081016040528092919081815260200182805480156104c857602002820191906000526020600020905b8154815260200190600101908083116104b4575b50505091835250506006820154601790810b810b900b6020808301919091526040805180820182526007808601805460f01b6001600160f01b031916835283518085018552600888018054840b840b90930b8152600988018054959097019693959194868301949193928401919061053f906110f7565b80601f016020809104026020016040519081016040528092919081815260200182805461056b906110f7565b80156105b85780601f1061058d576101008083540402835291602001916105b8565b820191906000526020600020905b81548152906001019060200180831161059b57829003601f168201915b5050509190925250505090525090525092915050565b6105d66108ec565b6040518061010001604052808c60030b81526020018b8b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050509082525060ff8a166020808301919091526040805161040081810183529190930192918b918390839080828437600092019190915250505081526020808201899052604080518883028181018401835289825291909301929189918991829190850190849080828437600092019190915250505090825250601785900b60208201526040016106ae8461100a565b90529b9a5050505050505050505050565b6060600180548060200260200160405190810160405280929190818152602001828054801561074157602002820191906000526020600020906000905b82829054906101000a900467ffffffffffffffff1667ffffffffffffffff16815260200190600801906020826007010492830192600103820291508084116106fc5790505b5050505050905090565b7f7d2abe6109e46b893ac1835c9287d6ad5c5ccf3d0254d2ca72225873795e0f538a8a8a8a8a8a8a8a8a8a60405161078c9a99989796959493929190610e25565b60405180910390a150505050505050505050565b8280546107ac906110f7565b90600052602060002090601f0160209004810192826107ce5760008555610814565b82601f106107e757805160ff1916838001178555610814565b82800160010185558215610814579182015b828111156108145782518255916020019190600101906107f9565b5061082092915061093b565b5090565b6001830191839082156108145791602002820160005b8382111561087857835183826101000a81548160ff021916908360ff160217905550926020019260010160208160000104928301926001030261083a565b80156108a55782816101000a81549060ff0219169055600101602081600001049283019260010302610878565b505061082092915061093b565b82805482825590600052602060002090810192821561081457916020028201828111156108145782518255916020019190600101906107f9565b6040805161010081018252600080825260606020830181905292820152908101610914610950565b815260006020820181905260606040830181905282015260800161093661096f565b905290565b5b80821115610820576000815560010161093c565b6040518061040001604052806020906020820280368337509192915050565b604051806040016040528060006001600160f01b03191681526020016109366040518060400160405280600060070b8152602001606081525090565b60008083601f8401126109bd57600080fd5b50813567ffffffffffffffff8111156109d557600080fd5b6020830191508360208260051b85010111156109f057600080fd5b9250929050565b806104008101831015610a0957600080fd5b92915050565b80356001600160f01b031981168114610a2757600080fd5b919050565b8035601781900b8114610a2757600080fd5b8035600381900b8114610a2757600080fd5b8035600781900b8114610a2757600080fd5b60008083601f840112610a7457600080fd5b50813567ffffffffffffffff811115610a8c57600080fd5b6020830191508360208285010111156109f057600080fd5b600060408284031215610ab657600080fd5b50919050565b803560ff81168114610a2757600080fd5b6000806000806000806000806000806104e08b8d031215610aed57600080fd5b610af68b610a3e565b995060208b013567ffffffffffffffff80821115610b1357600080fd5b610b1f8e838f01610a62565b909b509950899150610b3360408e01610abc565b9850610b428e60608f016109f7565b97506104608d013596506104808d0135915080821115610b6157600080fd5b610b6d8e838f016109ab565b9096509450849150610b826104a08e01610a2c565b93506104c08d0135915080821115610b9957600080fd5b50610ba68d828e01610aa4565b9150509295989b9194979a5092959850565b600060208284031215610bca57600080fd5b5035919050565b81835260006001600160fb1b03831115610bea57600080fd5b8260051b8083602087013760009401602001938452509192915050565b600081518084526020808501945080840160005b83811015610c3757815187529582019590820190600101610c1b565b509495945050505050565b8060005b6020808210610c555750610c6c565b825160ff1685529384019390910190600101610c46565b50505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6000815180845260005b81811015610cc157602081850181015186830182015201610ca5565b81811115610cd3576000602083870101525b50601f01601f19169290920160200192915050565b6001600160f01b0319610cfa82610a0f565b16825260006020820135603e19833603018112610d1657600080fd5b604060208501528201610d2881610a50565b60070b60408501526020810135601e19823603018112610d4757600080fd5b8101803567ffffffffffffffff811115610d6057600080fd5b803603831315610d6f57600080fd5b60406060870152610d87608087018260208501610c72565b9695505050505050565b61ffff60f01b81511682526000602082015160406020850152805160070b60408501526020810151905060406060850152610dcf6080850182610c9b565b949350505050565b6020808252825182820181905260009190848201906040850190845b81811015610e1957835167ffffffffffffffff1683529284019291840191600101610df3565b50909695505050505050565b60006104e08c60030b835260208181850152610e448285018d8f610c72565b915060ff808c166040860152606085018b60005b84811015610e7d5783610e6a83610abc565b1683529184019190840190600101610e58565b505050505087610460840152828103610480840152610e9d818789610bd1565b9050610eaf6104a084018660170b9052565b8281036104c0840152610ec28185610ce8565b9d9c50505050505050505050505050565b60208152610ee760208201835160030b9052565b600060208301516104e0806040850152610f05610500850183610c9b565b91506040850151610f1b606086018260ff169052565b506060850151610f2e6080860182610c42565b50608085015161048085015260a0850151601f1980868503016104a0870152610f578483610c07565b935060c08701519150610f706104c087018360170b9052565b60e0870151915080868503018387015250610d878382610d91565b6040805190810167ffffffffffffffff81118282101715610fae57610fae611142565b60405290565b604051601f8201601f1916810167ffffffffffffffff81118282101715610fdd57610fdd611142565b604052919050565b60008282101561100557634e487b7160e01b600052601160045260246000fd5b500390565b60006040823603121561101c57600080fd5b611024610f8b565b61102d83610a0f565b815260208084013567ffffffffffffffff8082111561104b57600080fd5b81860191506040823603121561106057600080fd5b611068610f8b565b61107183610a50565b8152838301358281111561108457600080fd5b929092019136601f84011261109857600080fd5b8235828111156110aa576110aa611142565b6110bc601f8201601f19168601610fb4565b925080835236858286010111156110d257600080fd5b8085850186850137600090830185015280840191909152918301919091525092915050565b600181811c9082168061110b57607f821691505b60208210811415610ab657634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fdfea2646970667358221220dc7c8830d1691fb07419d1e88774f8489193b9b32a6a2406f298335883e9593b64736f6c63430008060033", } // TestfilesABI is the input ABI used to generate the binding from. @@ -370,3 +370,165 @@ func (_Testfiles *TestfilesSession) AddTestStruct(field int32, differentField st func (_Testfiles *TestfilesTransactorSession) AddTestStruct(field int32, differentField string, oracleId uint8, oracleIds [32]uint8, account [32]byte, accounts [][32]byte, bigField *big.Int, nestedStruct MidLevelTestStruct) (*types.Transaction, error) { return _Testfiles.Contract.AddTestStruct(&_Testfiles.TransactOpts, field, differentField, oracleId, oracleIds, account, accounts, bigField, nestedStruct) } + +// TriggerEvent is a paid mutator transaction binding the contract method 0xe669831d. +// +// Solidity: function TriggerEvent(int32 field, string differentField, uint8 oracleId, uint8[32] oracleIds, bytes32 account, bytes32[] accounts, int192 bigField, (bytes2,(int64,string)) nestedStruct) returns() +func (_Testfiles *TestfilesTransactor) TriggerEvent(opts *bind.TransactOpts, field int32, differentField string, oracleId uint8, oracleIds [32]uint8, account [32]byte, accounts [][32]byte, bigField *big.Int, nestedStruct MidLevelTestStruct) (*types.Transaction, error) { + return _Testfiles.contract.Transact(opts, "TriggerEvent", field, differentField, oracleId, oracleIds, account, accounts, bigField, nestedStruct) +} + +// TriggerEvent is a paid mutator transaction binding the contract method 0xe669831d. +// +// Solidity: function TriggerEvent(int32 field, string differentField, uint8 oracleId, uint8[32] oracleIds, bytes32 account, bytes32[] accounts, int192 bigField, (bytes2,(int64,string)) nestedStruct) returns() +func (_Testfiles *TestfilesSession) TriggerEvent(field int32, differentField string, oracleId uint8, oracleIds [32]uint8, account [32]byte, accounts [][32]byte, bigField *big.Int, nestedStruct MidLevelTestStruct) (*types.Transaction, error) { + return _Testfiles.Contract.TriggerEvent(&_Testfiles.TransactOpts, field, differentField, oracleId, oracleIds, account, accounts, bigField, nestedStruct) +} + +// TriggerEvent is a paid mutator transaction binding the contract method 0xe669831d. +// +// Solidity: function TriggerEvent(int32 field, string differentField, uint8 oracleId, uint8[32] oracleIds, bytes32 account, bytes32[] accounts, int192 bigField, (bytes2,(int64,string)) nestedStruct) returns() +func (_Testfiles *TestfilesTransactorSession) TriggerEvent(field int32, differentField string, oracleId uint8, oracleIds [32]uint8, account [32]byte, accounts [][32]byte, bigField *big.Int, nestedStruct MidLevelTestStruct) (*types.Transaction, error) { + return _Testfiles.Contract.TriggerEvent(&_Testfiles.TransactOpts, field, differentField, oracleId, oracleIds, account, accounts, bigField, nestedStruct) +} + +// TestfilesTriggeredIterator is returned from FilterTriggered and is used to iterate over the raw logs and unpacked data for Triggered events raised by the Testfiles contract. +type TestfilesTriggeredIterator struct { + Event *TestfilesTriggered // Event containing the contract specifics and raw log + + contract *bind.BoundContract // Generic contract to use for unpacking event data + event string // Event name to use for unpacking event data + + logs chan types.Log // Log channel receiving the found contract events + sub ethereum.Subscription // Subscription for errors, completion and termination + done bool // Whether the subscription completed delivering logs + fail error // Occurred error to stop iteration +} + +// Next advances the iterator to the subsequent event, returning whether there +// are any more events found. In case of a retrieval or parsing error, false is +// returned and Error() can be queried for the exact failure. +func (it *TestfilesTriggeredIterator) Next() bool { + // If the iterator failed, stop iterating + if it.fail != nil { + return false + } + // If the iterator completed, deliver directly whatever's available + if it.done { + select { + case log := <-it.logs: + it.Event = new(TestfilesTriggered) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + // Iterator still in progress, wait for either a data or an error event + select { + case log := <-it.logs: + it.Event = new(TestfilesTriggered) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +// Error returns any retrieval or parsing error occurred during filtering. +func (it *TestfilesTriggeredIterator) Error() error { + return it.fail +} + +// Close terminates the iteration process, releasing any pending underlying +// resources. +func (it *TestfilesTriggeredIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +// TestfilesTriggered represents a Triggered event raised by the Testfiles contract. +type TestfilesTriggered struct { + Field int32 + DifferentField string + OracleId uint8 + OracleIds [32]uint8 + Account [32]byte + Accounts [][32]byte + BigField *big.Int + NestedStruct MidLevelTestStruct + Raw types.Log // Blockchain specific contextual infos +} + +// FilterTriggered is a free log retrieval operation binding the contract event 0x7d2abe6109e46b893ac1835c9287d6ad5c5ccf3d0254d2ca72225873795e0f53. +// +// Solidity: event Triggered(int32 field, string differentField, uint8 oracleId, uint8[32] oracleIds, bytes32 account, bytes32[] accounts, int192 bigField, (bytes2,(int64,string)) nestedStruct) +func (_Testfiles *TestfilesFilterer) FilterTriggered(opts *bind.FilterOpts) (*TestfilesTriggeredIterator, error) { + + logs, sub, err := _Testfiles.contract.FilterLogs(opts, "Triggered") + if err != nil { + return nil, err + } + return &TestfilesTriggeredIterator{contract: _Testfiles.contract, event: "Triggered", logs: logs, sub: sub}, nil +} + +// WatchTriggered is a free log subscription operation binding the contract event 0x7d2abe6109e46b893ac1835c9287d6ad5c5ccf3d0254d2ca72225873795e0f53. +// +// Solidity: event Triggered(int32 field, string differentField, uint8 oracleId, uint8[32] oracleIds, bytes32 account, bytes32[] accounts, int192 bigField, (bytes2,(int64,string)) nestedStruct) +func (_Testfiles *TestfilesFilterer) WatchTriggered(opts *bind.WatchOpts, sink chan<- *TestfilesTriggered) (event.Subscription, error) { + + logs, sub, err := _Testfiles.contract.WatchLogs(opts, "Triggered") + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + // New log arrived, parse the event and forward to the user + event := new(TestfilesTriggered) + if err := _Testfiles.contract.UnpackLog(event, "Triggered", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +// ParseTriggered is a log parse operation binding the contract event 0x7d2abe6109e46b893ac1835c9287d6ad5c5ccf3d0254d2ca72225873795e0f53. +// +// Solidity: event Triggered(int32 field, string differentField, uint8 oracleId, uint8[32] oracleIds, bytes32 account, bytes32[] accounts, int192 bigField, (bytes2,(int64,string)) nestedStruct) +func (_Testfiles *TestfilesFilterer) ParseTriggered(log types.Log) (*TestfilesTriggered, error) { + event := new(TestfilesTriggered) + if err := _Testfiles.contract.UnpackLog(event, "Triggered", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} diff --git a/go.mod b/go.mod index 561ea91ed80..f83a095f2a8 100644 --- a/go.mod +++ b/go.mod @@ -66,7 +66,7 @@ require ( github.com/shopspring/decimal v1.3.1 github.com/smartcontractkit/caigo v0.0.0-20230621050857-b29a4ca8c704 github.com/smartcontractkit/chainlink-automation v1.0.0-alpha.0.0.20231120164534-d4cab696c459 - github.com/smartcontractkit/chainlink-common v0.1.7-0.20231206153113-f86b0b21496d + github.com/smartcontractkit/chainlink-common v0.1.7-0.20231208012003-888e7dbdb9c6 github.com/smartcontractkit/chainlink-cosmos v0.4.1-0.20231128204301-ee4297eff679 github.com/smartcontractkit/chainlink-data-streams v0.0.0-20231204152908-a6e3fe8ff2a1 github.com/smartcontractkit/chainlink-feeds v0.0.0-20231127231053-2232d3a6766d diff --git a/go.sum b/go.sum index 46d54a50a93..ddb8a245d68 100644 --- a/go.sum +++ b/go.sum @@ -1217,8 +1217,8 @@ github.com/smartcontractkit/caigo v0.0.0-20230621050857-b29a4ca8c704 h1:T3lFWumv github.com/smartcontractkit/caigo v0.0.0-20230621050857-b29a4ca8c704/go.mod h1:2QuJdEouTWjh5BDy5o/vgGXQtR4Gz8yH1IYB5eT7u4M= github.com/smartcontractkit/chainlink-automation v1.0.0-alpha.0.0.20231120164534-d4cab696c459 h1:hJhuShYv9eUQxHJQdOmyEymVmApOrICrQdOY7kKQ5Io= github.com/smartcontractkit/chainlink-automation v1.0.0-alpha.0.0.20231120164534-d4cab696c459/go.mod h1:INSchkV3ntyDdlZKGWA030MPDpp6pbeuiRkRKYFCm2k= -github.com/smartcontractkit/chainlink-common v0.1.7-0.20231206153113-f86b0b21496d h1:ibnzqA27rmFXJvBKQhx1D/tg7X0Oe9tPsWNhi+GQ3sM= -github.com/smartcontractkit/chainlink-common v0.1.7-0.20231206153113-f86b0b21496d/go.mod h1:IdlfCN9rUs8Q/hrOYe8McNBIwEOHEsi0jilb3Cw77xs= +github.com/smartcontractkit/chainlink-common v0.1.7-0.20231208012003-888e7dbdb9c6 h1:Vqi/po+LG3J47USCh83vvjutn2KX8nr7PsU9q4qHt2o= +github.com/smartcontractkit/chainlink-common v0.1.7-0.20231208012003-888e7dbdb9c6/go.mod h1:IdlfCN9rUs8Q/hrOYe8McNBIwEOHEsi0jilb3Cw77xs= github.com/smartcontractkit/chainlink-cosmos v0.4.1-0.20231128204301-ee4297eff679 h1:iu1pNbUoSDTrp+7BUtfTygZ2C0f5C2ZOBQhIoJjp+S0= github.com/smartcontractkit/chainlink-cosmos v0.4.1-0.20231128204301-ee4297eff679/go.mod h1:2Jx7bTEk4ujFQdsZpZq3A0BydvaVPs6mX8clUfxHOEM= github.com/smartcontractkit/chainlink-data-streams v0.0.0-20231204152908-a6e3fe8ff2a1 h1:xYqRgZO0nMSO8CBCMR0r3WA+LZ4kNL8a6bnbyk/oBtQ= diff --git a/integration-tests/go.mod b/integration-tests/go.mod index 583d1592c71..2541b60bc99 100644 --- a/integration-tests/go.mod +++ b/integration-tests/go.mod @@ -24,7 +24,7 @@ require ( github.com/segmentio/ksuid v1.0.4 github.com/slack-go/slack v0.12.2 github.com/smartcontractkit/chainlink-automation v1.0.1 - github.com/smartcontractkit/chainlink-common v0.1.7-0.20231206153113-f86b0b21496d + github.com/smartcontractkit/chainlink-common v0.1.7-0.20231208012003-888e7dbdb9c6 github.com/smartcontractkit/chainlink-testing-framework v1.20.0 github.com/smartcontractkit/chainlink-vrf v0.0.0-20231120191722-fef03814f868 github.com/smartcontractkit/chainlink/v2 v2.0.0-00010101000000-000000000000 diff --git a/integration-tests/go.sum b/integration-tests/go.sum index e3be6249d42..df5dbc86cac 100644 --- a/integration-tests/go.sum +++ b/integration-tests/go.sum @@ -1507,8 +1507,8 @@ github.com/smartcontractkit/caigo v0.0.0-20230621050857-b29a4ca8c704 h1:T3lFWumv github.com/smartcontractkit/caigo v0.0.0-20230621050857-b29a4ca8c704/go.mod h1:2QuJdEouTWjh5BDy5o/vgGXQtR4Gz8yH1IYB5eT7u4M= github.com/smartcontractkit/chainlink-automation v1.0.1 h1:vVjBFq2Zsz21kPy1Pb0wpjF9zrbJX+zjXphDeeR4XZk= github.com/smartcontractkit/chainlink-automation v1.0.1/go.mod h1:INSchkV3ntyDdlZKGWA030MPDpp6pbeuiRkRKYFCm2k= -github.com/smartcontractkit/chainlink-common v0.1.7-0.20231206153113-f86b0b21496d h1:ibnzqA27rmFXJvBKQhx1D/tg7X0Oe9tPsWNhi+GQ3sM= -github.com/smartcontractkit/chainlink-common v0.1.7-0.20231206153113-f86b0b21496d/go.mod h1:IdlfCN9rUs8Q/hrOYe8McNBIwEOHEsi0jilb3Cw77xs= +github.com/smartcontractkit/chainlink-common v0.1.7-0.20231208012003-888e7dbdb9c6 h1:Vqi/po+LG3J47USCh83vvjutn2KX8nr7PsU9q4qHt2o= +github.com/smartcontractkit/chainlink-common v0.1.7-0.20231208012003-888e7dbdb9c6/go.mod h1:IdlfCN9rUs8Q/hrOYe8McNBIwEOHEsi0jilb3Cw77xs= github.com/smartcontractkit/chainlink-cosmos v0.4.1-0.20231128204301-ee4297eff679 h1:iu1pNbUoSDTrp+7BUtfTygZ2C0f5C2ZOBQhIoJjp+S0= github.com/smartcontractkit/chainlink-cosmos v0.4.1-0.20231128204301-ee4297eff679/go.mod h1:2Jx7bTEk4ujFQdsZpZq3A0BydvaVPs6mX8clUfxHOEM= github.com/smartcontractkit/chainlink-data-streams v0.0.0-20231204152908-a6e3fe8ff2a1 h1:xYqRgZO0nMSO8CBCMR0r3WA+LZ4kNL8a6bnbyk/oBtQ=