diff --git a/.changeset/silly-weeks-serve.md b/.changeset/silly-weeks-serve.md new file mode 100644 index 00000000000..0f7386e69fe --- /dev/null +++ b/.changeset/silly-weeks-serve.md @@ -0,0 +1,5 @@ +--- +"chainlink": patch +--- + +update starknet relayer to fix nonce issue. introduces optional api-key for starknet toml config. diff --git a/core/cmd/shell_test.go b/core/cmd/shell_test.go index f265d5f4787..d57cfe1f645 100644 --- a/core/cmd/shell_test.go +++ b/core/cmd/shell_test.go @@ -17,6 +17,7 @@ import ( "github.com/stretchr/testify/require" "github.com/urfave/cli" + commoncfg "github.com/smartcontractkit/chainlink-common/pkg/config" "github.com/smartcontractkit/chainlink-solana/pkg/solana" solcfg "github.com/smartcontractkit/chainlink-solana/pkg/solana/config" "github.com/smartcontractkit/chainlink-starknet/relayer/pkg/chainlink/config" @@ -474,22 +475,25 @@ func TestSetupStarkNetRelayer(t *testing.T) { tConfig := configtest.NewGeneralConfig(t, func(c *chainlink.Config, s *chainlink.Secrets) { c.Starknet = stkcfg.TOMLConfigs{ &stkcfg.TOMLConfig{ - ChainID: ptr[string]("starknet-id-1"), - Enabled: ptr(true), - Chain: stkcfg.Chain{}, - Nodes: []*config.Node{}, + ChainID: ptr[string]("starknet-id-1"), + Enabled: ptr(true), + Chain: stkcfg.Chain{}, + Nodes: []*config.Node{}, + FeederURL: commoncfg.MustParseURL("https://feeder.url"), }, &stkcfg.TOMLConfig{ - ChainID: ptr[string]("starknet-id-2"), - Enabled: ptr(true), - Chain: stkcfg.Chain{}, - Nodes: []*config.Node{}, + ChainID: ptr[string]("starknet-id-2"), + Enabled: ptr(true), + Chain: stkcfg.Chain{}, + Nodes: []*config.Node{}, + FeederURL: commoncfg.MustParseURL("https://feeder.url"), }, &stkcfg.TOMLConfig{ - ChainID: ptr[string]("disabled-starknet-id-1"), - Enabled: ptr(false), - Chain: stkcfg.Chain{}, - Nodes: []*config.Node{}, + ChainID: ptr[string]("disabled-starknet-id-1"), + Enabled: ptr(false), + Chain: stkcfg.Chain{}, + Nodes: []*config.Node{}, + FeederURL: commoncfg.MustParseURL("https://feeder.url"), }, } }) @@ -497,10 +501,11 @@ func TestSetupStarkNetRelayer(t *testing.T) { t2Config := configtest.NewGeneralConfig(t, func(c *chainlink.Config, s *chainlink.Secrets) { c.Starknet = stkcfg.TOMLConfigs{ &stkcfg.TOMLConfig{ - ChainID: ptr[string]("starknet-id-3"), - Enabled: ptr(true), - Chain: stkcfg.Chain{}, - Nodes: []*config.Node{}, + ChainID: ptr[string]("starknet-id-3"), + Enabled: ptr(true), + Chain: stkcfg.Chain{}, + Nodes: []*config.Node{}, + FeederURL: commoncfg.MustParseURL("https://feeder.url"), }, } }) @@ -534,16 +539,18 @@ func TestSetupStarkNetRelayer(t *testing.T) { duplicateConfig := configtest.NewGeneralConfig(t, func(c *chainlink.Config, s *chainlink.Secrets) { c.Starknet = stkcfg.TOMLConfigs{ &stkcfg.TOMLConfig{ - ChainID: ptr[string]("dupe"), - Enabled: ptr(true), - Chain: stkcfg.Chain{}, - Nodes: []*config.Node{}, + ChainID: ptr[string]("dupe"), + Enabled: ptr(true), + Chain: stkcfg.Chain{}, + Nodes: []*config.Node{}, + FeederURL: commoncfg.MustParseURL("https://feeder.url"), }, &stkcfg.TOMLConfig{ - ChainID: ptr[string]("dupe"), - Enabled: ptr(true), - Chain: stkcfg.Chain{}, - Nodes: []*config.Node{}, + ChainID: ptr[string]("dupe"), + Enabled: ptr(true), + Chain: stkcfg.Chain{}, + Nodes: []*config.Node{}, + FeederURL: commoncfg.MustParseURL("https://feeder.url"), }, } }) diff --git a/core/config/docs/chains-starknet.toml b/core/config/docs/chains-starknet.toml index 8694290a7d6..4ea2647a72d 100644 --- a/core/config/docs/chains-starknet.toml +++ b/core/config/docs/chains-starknet.toml @@ -1,6 +1,8 @@ [[Starknet]] # ChainID is the Starknet chain ID. ChainID = 'foobar' # Example +# FeederURL is required to get tx metadata (that the RPC can't) +FeederURL = 'http://feeder.url' # Example # Enabled enables this chain. Enabled = true # Default # OCR2CachePollPeriod is the rate to poll for the OCR2 state cache. @@ -19,3 +21,5 @@ ConfirmationPoll = '5s' # Default Name = 'primary' # Example # URL is the base HTTP(S) endpoint for this node. URL = 'http://stark.node' # Example +# APIKey Header is optional and only required for Nethermind RPCs +APIKey = 'key' # Example diff --git a/core/scripts/go.mod b/core/scripts/go.mod index 23a1c2eebbc..8d45a4f908a 100644 --- a/core/scripts/go.mod +++ b/core/scripts/go.mod @@ -52,6 +52,8 @@ require ( github.com/Depado/ginprom v1.8.0 // indirect github.com/Masterminds/semver/v3 v3.2.1 // indirect github.com/Microsoft/go-winio v0.6.1 // indirect + github.com/NethermindEth/juno v0.3.1 // indirect + github.com/NethermindEth/starknet.go v0.6.1-0.20231218140327-915109ab5bc1 // indirect github.com/VictoriaMetrics/fastcache v1.12.1 // indirect github.com/XSAM/otelsql v0.27.0 // indirect github.com/armon/go-metrics v0.4.1 // indirect @@ -152,7 +154,6 @@ require ( github.com/golang/protobuf v1.5.4 // indirect github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb // indirect github.com/google/btree v1.1.2 // indirect - github.com/google/go-querystring v1.1.0 // indirect github.com/google/go-tpm v0.9.0 // indirect github.com/google/gofuzz v1.2.0 // indirect github.com/google/pprof v0.0.0-20231023181126-ff6d637d2a7b // indirect @@ -254,13 +255,12 @@ require ( github.com/shirou/gopsutil v3.21.11+incompatible // indirect github.com/shirou/gopsutil/v3 v3.23.11 // indirect github.com/sirupsen/logrus v1.9.3 // indirect - github.com/smartcontractkit/caigo v0.0.0-20230621050857-b29a4ca8c704 // indirect github.com/smartcontractkit/chain-selectors v1.0.10 // indirect github.com/smartcontractkit/chainlink-cosmos v0.4.1-0.20240213120401-01a23955f9f8 // indirect github.com/smartcontractkit/chainlink-data-streams v0.0.0-20240220203239-09be0ea34540 // indirect github.com/smartcontractkit/chainlink-feeds v0.0.0-20240119021347-3c541a78cdb8 // indirect github.com/smartcontractkit/chainlink-solana v1.0.3-0.20240216142700-c5869534c19e // indirect - github.com/smartcontractkit/chainlink-starknet/relayer v0.0.1-beta-test.0.20240213121419-1272736c2ac0 // indirect + github.com/smartcontractkit/chainlink-starknet/relayer v0.0.1-beta-test.0.20240325075535-0f7eb05ee595 // indirect github.com/smartcontractkit/tdh2/go/ocr2/decryptionplugin v0.0.0-20230906073235-9e478e5e19f1 // indirect github.com/smartcontractkit/tdh2/go/tdh2 v0.0.0-20230906073235-9e478e5e19f1 // indirect github.com/smartcontractkit/wsrpc v0.7.2 // indirect @@ -275,6 +275,7 @@ require ( github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c // indirect github.com/tendermint/go-amino v0.16.0 // indirect github.com/teris-io/shortid v0.0.0-20201117134242-e59966efd125 // indirect + github.com/test-go/testify v1.1.4 // indirect github.com/theodesp/go-heaps v0.0.0-20190520121037-88e35354fe0a // indirect github.com/tidwall/btree v1.6.0 // indirect github.com/tidwall/gjson v1.17.0 // indirect diff --git a/core/scripts/go.sum b/core/scripts/go.sum index 54f788ab200..cef666fea63 100644 --- a/core/scripts/go.sum +++ b/core/scripts/go.sum @@ -108,6 +108,10 @@ github.com/Masterminds/semver/v3 v3.2.1 h1:RN9w6+7QoMeJVGyfmbcgs28Br8cvmnucEXnY0 github.com/Masterminds/semver/v3 v3.2.1/go.mod h1:qvl/7zhW3nngYb5+80sSMF+FG2BjYrf8m9wsX0PNOMQ= github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= +github.com/NethermindEth/juno v0.3.1 h1:AW72LiAm9gqUeCVJWvepnZcTnpU4Vkl0KzPMxS+42FA= +github.com/NethermindEth/juno v0.3.1/go.mod h1:SGbTpgGaCsxhFsKOid7Ylnz//WZ8swtILk+NbHGsk/Q= +github.com/NethermindEth/starknet.go v0.6.1-0.20231218140327-915109ab5bc1 h1:9SBvy3eZut1X+wEyAFqfb7ADGj8IQw7ZnlkMwz0YOTY= +github.com/NethermindEth/starknet.go v0.6.1-0.20231218140327-915109ab5bc1/go.mod h1:V6qrbi1+fTDCftETIT1grBXIf+TvWP/4Aois1a9EF1E= github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 h1:TngWCqHvy9oXAN6lEVMRuU21PR1EtLVZJmdB18Gu3Rw= github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5/go.mod h1:lmUJ/7eu/Q8D7ML55dXQrVaamCz2vxCfdQBasLZfHKk= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= @@ -603,8 +607,6 @@ github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeN github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= -github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8= -github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU= github.com/google/go-tpm v0.9.0 h1:sQF6YqWMi+SCXpsmS3fd21oPy/vSddwZry4JnmltHVk= github.com/google/go-tpm v0.9.0/go.mod h1:FkNVkc6C+IsvDI9Jw1OveJmxGZUUaKxtrpOS47QWKfU= github.com/google/gofuzz v0.0.0-20170612174753-24818f796faf/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= @@ -1181,8 +1183,6 @@ github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMB github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= -github.com/smartcontractkit/caigo v0.0.0-20230621050857-b29a4ca8c704 h1:T3lFWumvbfM1u/etVq42Afwq/jtNSBSOA8n5jntnNPo= -github.com/smartcontractkit/caigo v0.0.0-20230621050857-b29a4ca8c704/go.mod h1:2QuJdEouTWjh5BDy5o/vgGXQtR4Gz8yH1IYB5eT7u4M= github.com/smartcontractkit/chain-selectors v1.0.10 h1:t9kJeE6B6G+hKD0GYR4kGJSCqR1LNS7aI3jT0V+xGrg= github.com/smartcontractkit/chain-selectors v1.0.10/go.mod h1:d4Hi+E1zqjy9HqMkjBE5q1vcG9VGgxf5VxiRHfzi2kE= github.com/smartcontractkit/chainlink-automation v1.0.2-0.20240311111125-22812a072c35 h1:GNhRKD3izyzAoGMXDvVUAwEuzz4Atdj3U3RH7eak5Is= @@ -1197,8 +1197,8 @@ github.com/smartcontractkit/chainlink-feeds v0.0.0-20240119021347-3c541a78cdb8 h github.com/smartcontractkit/chainlink-feeds v0.0.0-20240119021347-3c541a78cdb8/go.mod h1:vy1L7NybTy2F/Yv7BOh+oZBa1MACD6gzd1+DkcSkfp8= github.com/smartcontractkit/chainlink-solana v1.0.3-0.20240216142700-c5869534c19e h1:k8HS3GsAFZnxXIW3141VsQP2+EL1XrTtOi/HDt7sdBE= github.com/smartcontractkit/chainlink-solana v1.0.3-0.20240216142700-c5869534c19e/go.mod h1:JiykN+8W5TA4UD2ClrzQCVvcH3NcyLEVv7RwY0busrw= -github.com/smartcontractkit/chainlink-starknet/relayer v0.0.1-beta-test.0.20240213121419-1272736c2ac0 h1:7m9PVtccb8/pvKTXMaGuyceFno1icRyC2SFH7KG7+70= -github.com/smartcontractkit/chainlink-starknet/relayer v0.0.1-beta-test.0.20240213121419-1272736c2ac0/go.mod h1:SZ899lZYQ0maUulWbZg+SWqabHQ1wTbyk3jT8wJfyo8= +github.com/smartcontractkit/chainlink-starknet/relayer v0.0.1-beta-test.0.20240325075535-0f7eb05ee595 h1:y6ks0HsSOhPUueOmTcoxDQ50RCS1XINlRDTemZyHjFw= +github.com/smartcontractkit/chainlink-starknet/relayer v0.0.1-beta-test.0.20240325075535-0f7eb05ee595/go.mod h1:vV6WfnVIbK5Q1JsIru4YcTG0T1uRpLJm6t2BgCnCSsg= github.com/smartcontractkit/chainlink-vrf v0.0.0-20231120191722-fef03814f868 h1:FFdvEzlYwcuVHkdZ8YnZR/XomeMGbz5E2F2HZI3I3w8= github.com/smartcontractkit/chainlink-vrf v0.0.0-20231120191722-fef03814f868/go.mod h1:Kn1Hape05UzFZ7bOUnm3GVsHzP0TNrVmpfXYNHdqGGs= github.com/smartcontractkit/go-plugin v0.0.0-20240208201424-b3b91517de16 h1:TFe+FvzxClblt6qRfqEhUfa4kFQx5UobuoFGO2W4mMo= diff --git a/core/services/chainlink/config_test.go b/core/services/chainlink/config_test.go index ad5c7e8c33d..27e5c9317fa 100644 --- a/core/services/chainlink/config_test.go +++ b/core/services/chainlink/config_test.go @@ -186,8 +186,9 @@ var ( Chain: stkcfg.Chain{ ConfirmationPoll: commoncfg.MustNewDuration(time.Hour), }, + FeederURL: commoncfg.MustParseURL("http://feeder.url"), Nodes: []*stkcfg.Node{ - {Name: ptr("primary"), URL: commoncfg.MustParseURL("http://stark.node")}, + {Name: ptr("primary"), URL: commoncfg.MustParseURL("http://stark.node"), APIKey: ptr("key")}, }, }, }, @@ -654,8 +655,9 @@ func TestConfig_Marshal(t *testing.T) { TxTimeout: commoncfg.MustNewDuration(13 * time.Second), ConfirmationPoll: commoncfg.MustNewDuration(42 * time.Second), }, + FeederURL: commoncfg.MustParseURL("http://feeder.url"), Nodes: []*stkcfg.Node{ - {Name: ptr("primary"), URL: commoncfg.MustParseURL("http://stark.node")}, + {Name: ptr("primary"), URL: commoncfg.MustParseURL("http://stark.node"), APIKey: ptr("key")}, }, }, } @@ -1110,6 +1112,7 @@ URL = 'http://solana.bar' `}, {"Starknet", Config{Starknet: full.Starknet}, `[[Starknet]] ChainID = 'foobar' +FeederURL = 'http://feeder.url' Enabled = true OCR2CachePollPeriod = '6h0m0s' OCR2CacheTTL = '3m0s' @@ -1120,6 +1123,7 @@ ConfirmationPoll = '42s' [[Starknet.Nodes]] Name = 'primary' URL = 'http://stark.node' +APIKey = 'key' `}, {"Mercury", Config{Core: toml.Core{Mercury: full.Mercury}}, `[Mercury] [Mercury.Cache] @@ -1142,6 +1146,7 @@ CertFile = '/path/to/cert.pem' require.NoError(t, config.DecodeTOML(strings.NewReader(s), &got)) ts, err := got.TOMLString() + require.NoError(t, err) assert.Equal(t, tt.config, got, diff.Diff(s, ts)) }) @@ -1547,6 +1552,7 @@ func TestConfig_SetFrom(t *testing.T) { require.NoError(t, c.SetFrom(&f)) } ts, err := c.TOMLString() + require.NoError(t, err) assert.Equal(t, tt.exp, ts) }) diff --git a/core/services/chainlink/relayer_chain_interoperators_test.go b/core/services/chainlink/relayer_chain_interoperators_test.go index 4cb6f57f8ba..c90811de768 100644 --- a/core/services/chainlink/relayer_chain_interoperators_test.go +++ b/core/services/chainlink/relayer_chain_interoperators_test.go @@ -100,32 +100,38 @@ func TestCoreRelayerChainInteroperators(t *testing.T) { c.Starknet = stkcfg.TOMLConfigs{ &stkcfg.TOMLConfig{ - ChainID: &starknetChainID1, - Enabled: ptr(true), - Chain: stkcfg.Chain{}, + ChainID: &starknetChainID1, + Enabled: ptr(true), + Chain: stkcfg.Chain{}, + FeederURL: commonconfig.MustParseURL("http://feeder.url"), Nodes: []*stkcfg.Node{ { - Name: ptr("starknet chain 1 node 1"), - URL: ((*commonconfig.URL)(commonconfig.MustParseURL("http://localhost:8547").URL())), + Name: ptr("starknet chain 1 node 1"), + URL: ((*commonconfig.URL)(commonconfig.MustParseURL("http://localhost:8547").URL())), + APIKey: ptr("key"), }, { - Name: ptr("starknet chain 1 node 2"), - URL: ((*commonconfig.URL)(commonconfig.MustParseURL("http://localhost:8548").URL())), + Name: ptr("starknet chain 1 node 2"), + URL: ((*commonconfig.URL)(commonconfig.MustParseURL("http://localhost:8548").URL())), + APIKey: ptr("key"), }, { - Name: ptr("starknet chain 1 node 3"), - URL: ((*commonconfig.URL)(commonconfig.MustParseURL("http://localhost:8549").URL())), + Name: ptr("starknet chain 1 node 3"), + URL: ((*commonconfig.URL)(commonconfig.MustParseURL("http://localhost:8549").URL())), + APIKey: ptr("key"), }, }, }, &stkcfg.TOMLConfig{ - ChainID: &starknetChainID2, - Enabled: ptr(true), - Chain: stkcfg.Chain{}, + ChainID: &starknetChainID2, + Enabled: ptr(true), + Chain: stkcfg.Chain{}, + FeederURL: commonconfig.MustParseURL("http://feeder.url"), Nodes: []*stkcfg.Node{ { - Name: ptr("starknet chain 2 node 1"), - URL: ((*commonconfig.URL)(commonconfig.MustParseURL("http://localhost:3547").URL())), + Name: ptr("starknet chain 2 node 1"), + URL: ((*commonconfig.URL)(commonconfig.MustParseURL("http://localhost:3547").URL())), + APIKey: ptr("key"), }, }, }, diff --git a/core/services/chainlink/testdata/config-full.toml b/core/services/chainlink/testdata/config-full.toml index 087a7e971fc..76c4aa0cade 100644 --- a/core/services/chainlink/testdata/config-full.toml +++ b/core/services/chainlink/testdata/config-full.toml @@ -431,6 +431,7 @@ URL = 'http://solana.bar' [[Starknet]] ChainID = 'foobar' +FeederURL = 'http://feeder.url' Enabled = true OCR2CachePollPeriod = '6h0m0s' OCR2CacheTTL = '3m0s' @@ -441,3 +442,4 @@ ConfirmationPoll = '42s' [[Starknet.Nodes]] Name = 'primary' URL = 'http://stark.node' +APIKey = 'key' diff --git a/core/services/chainlink/testdata/config-invalid.toml b/core/services/chainlink/testdata/config-invalid.toml index d11cd48d6ef..7d1ed17c3c2 100644 --- a/core/services/chainlink/testdata/config-invalid.toml +++ b/core/services/chainlink/testdata/config-invalid.toml @@ -132,10 +132,12 @@ Name = 'bar' [[Starknet.Nodes]] Name = 'primary' URL = 'http://stark.node' +APIKey = 'key' [[Starknet.Nodes]] Name = 'primary' URL = 'http://second.stark.node' +APIKey = 'key' [[Starknet]] diff --git a/core/services/chainlink/testdata/config-multi-chain-effective.toml b/core/services/chainlink/testdata/config-multi-chain-effective.toml index 046ff28be22..67cd1770d97 100644 --- a/core/services/chainlink/testdata/config-multi-chain-effective.toml +++ b/core/services/chainlink/testdata/config-multi-chain-effective.toml @@ -589,6 +589,7 @@ URL = 'http://testnet.solana.com' [[Starknet]] ChainID = 'foobar' +FeederURL = 'http://feeder.url' OCR2CachePollPeriod = '5s' OCR2CacheTTL = '1m0s' RequestTimeout = '10s' @@ -598,3 +599,4 @@ ConfirmationPoll = '1h0m0s' [[Starknet.Nodes]] Name = 'primary' URL = 'http://stark.node' +APIKey = 'key' diff --git a/core/services/chainlink/testdata/config-multi-chain.toml b/core/services/chainlink/testdata/config-multi-chain.toml index 53425dd1afe..e45255a4373 100644 --- a/core/services/chainlink/testdata/config-multi-chain.toml +++ b/core/services/chainlink/testdata/config-multi-chain.toml @@ -103,8 +103,10 @@ URL = 'http://testnet.solana.com' [[Starknet]] ChainID = 'foobar' +FeederURL = 'http://feeder.url' ConfirmationPoll = '1h0m0s' [[Starknet.Nodes]] Name = 'primary' URL = 'http://stark.node' +APIKey = 'key' diff --git a/core/services/keystore/keys/starkkey/key.go b/core/services/keystore/keys/starkkey/key.go index 62d9e077073..7723d4ce4fb 100644 --- a/core/services/keystore/keys/starkkey/key.go +++ b/core/services/keystore/keys/starkkey/key.go @@ -6,8 +6,8 @@ import ( "io" "math/big" - "github.com/smartcontractkit/caigo" - caigotypes "github.com/smartcontractkit/caigo/types" + "github.com/NethermindEth/juno/core/felt" + "github.com/NethermindEth/starknet.go/curve" ) // Raw represents the Stark private key @@ -19,7 +19,7 @@ func (raw Raw) Key() Key { var err error k.priv = new(big.Int).SetBytes(raw) - k.pub.X, k.pub.Y, err = caigo.Curve.PrivateToPoint(k.priv) + k.pub.X, k.pub.Y, err = curve.Curve.PrivateToPoint(k.priv) if err != nil { panic(err) // key not generated } @@ -75,7 +75,7 @@ func (key Key) ID() string { // it is the X component of the ECDSA pubkey and used in the deployment of the account contract // this func is used in exporting it via CLI and API func (key Key) StarkKeyStr() string { - return caigotypes.BigToFelt(key.pub.X).String() + return new(felt.Felt).SetBytes(key.pub.X.Bytes()).String() } // Raw from private key diff --git a/core/services/keystore/keys/starkkey/ocr2key.go b/core/services/keystore/keys/starkkey/ocr2key.go index 417687b62a6..41e0db7de8e 100644 --- a/core/services/keystore/keys/starkkey/ocr2key.go +++ b/core/services/keystore/keys/starkkey/ocr2key.go @@ -7,8 +7,8 @@ import ( "github.com/pkg/errors" - "github.com/smartcontractkit/caigo" - caigotypes "github.com/smartcontractkit/caigo/types" + "github.com/NethermindEth/juno/core/felt" + "github.com/NethermindEth/starknet.go/curve" "github.com/smartcontractkit/libocr/offchainreporting2plus/chains/evmutil" "github.com/smartcontractkit/libocr/offchainreporting2plus/types" ) @@ -26,7 +26,8 @@ func NewOCR2Key(material io.Reader) (*OCR2Key, error) { } func (sk *OCR2Key) PublicKey() types.OnchainPublicKey { - return caigotypes.BigToFelt(sk.pub.X).Bytes() + ans := new(felt.Felt).SetBytes(sk.pub.X.Bytes()).Bytes() + return ans[:] } func ReportToSigData(reportCtx types.ReportContext, report types.Report) (*big.Int, error) { @@ -46,7 +47,7 @@ func ReportToSigData(reportCtx types.ReportContext, report types.Report) (*big.I dataArray = append(dataArray, new(big.Int).SetBytes(splitReport[i])) } - hash, err := caigo.Curve.ComputeHashOnElements(dataArray) + hash, err := curve.Curve.ComputeHashOnElements(dataArray) if err != nil { return &big.Int{}, err } @@ -58,14 +59,14 @@ func (sk *OCR2Key) Sign(reportCtx types.ReportContext, report types.Report) ([]b if err != nil { return []byte{}, err } - r, s, err := caigo.Curve.Sign(hash, sk.priv) + r, s, err := curve.Curve.Sign(hash, sk.priv) if err != nil { return []byte{}, err } // enforce s <= N/2 to prevent signature malleability - if s.Cmp(new(big.Int).Rsh(caigo.Curve.N, 1)) > 0 { - s.Sub(caigo.Curve.N, s) + if s.Cmp(new(big.Int).Rsh(curve.Curve.N, 1)) > 0 { + s.Sub(curve.Curve.N, s) } // encoding: public key (32 bytes) + r (32 bytes) + s (32 bytes) @@ -97,7 +98,7 @@ func (sk *OCR2Key) Verify(publicKey types.OnchainPublicKey, reportCtx types.Repo // convert OnchainPublicKey (starkkey) into ecdsa public keys (prepend 2 or 3 to indicate +/- Y coord) var keys [2]PublicKey keys[0].X = new(big.Int).SetBytes(publicKey) - keys[0].Y = caigo.Curve.GetYCoordinate(keys[0].X) + keys[0].Y = curve.Curve.GetYCoordinate(keys[0].X) // When there is no point with the provided x-coordinate, the GetYCoordinate function returns the nil value. if keys[0].Y == nil { @@ -116,11 +117,11 @@ func (sk *OCR2Key) Verify(publicKey types.OnchainPublicKey, reportCtx types.Repo s := new(big.Int).SetBytes(signature[64:]) // Only allow canonical signatures to avoid signature malleability. Verify s <= N/2 - if s.Cmp(new(big.Int).Rsh(caigo.Curve.N, 1)) == 1 { + if s.Cmp(new(big.Int).Rsh(curve.Curve.N, 1)) == 1 { return false } - return caigo.Curve.Verify(hash, r, s, keys[0].X, keys[0].Y) || caigo.Curve.Verify(hash, r, s, keys[1].X, keys[1].Y) + return curve.Curve.Verify(hash, r, s, keys[0].X, keys[0].Y) || curve.Curve.Verify(hash, r, s, keys[1].X, keys[1].Y) } func (sk *OCR2Key) Verify3(publicKey types.OnchainPublicKey, cd types.ConfigDigest, seqNr uint64, r types.Report, signature []byte) bool { diff --git a/core/services/keystore/keys/starkkey/ocr2key_test.go b/core/services/keystore/keys/starkkey/ocr2key_test.go index e2d20258463..69436e5ce7f 100644 --- a/core/services/keystore/keys/starkkey/ocr2key_test.go +++ b/core/services/keystore/keys/starkkey/ocr2key_test.go @@ -6,7 +6,7 @@ import ( "math/big" "testing" - caigotypes "github.com/smartcontractkit/caigo/types" + "github.com/NethermindEth/juno/core/felt" ocrtypes "github.com/smartcontractkit/libocr/offchainreporting2plus/types" "github.com/stretchr/testify/assert" @@ -34,13 +34,15 @@ import ( func TestStarknetKeyring_TestVector(t *testing.T) { var kr1 OCR2Key bigKey, _ := new(big.Int).SetString("2137244795266879235401249500471353867704187908407744160927664772020405449078", 10) - feltKey := caigotypes.BigToFelt(bigKey) - err := kr1.Unmarshal(feltKey.Bytes()) + feltKey, err := new(felt.Felt).SetString(bigKey.String()) + require.NoError(t, err) + bytesKey := feltKey.Bytes() + err = kr1.Unmarshal(bytesKey[:]) require.NoError(t, err) // kr2, err := NewOCR2Key(cryptorand.Reader) // require.NoError(t, err) - bytes, err := caigotypes.HexToBytes("0x004acf99cb25a4803916f086440c661295b105a485efdc649ac4de9536da25b") + bytes, err := hex.DecodeString("0004acf99cb25a4803916f086440c661295b105a485efdc649ac4de9536da25b") require.NoError(t, err) configDigest, err := ocrtypes.BytesToConfigDigest(bytes) require.NoError(t, err) @@ -58,44 +60,51 @@ func TestStarknetKeyring_TestVector(t *testing.T) { } var report []byte - report = append(report, caigotypes.BigToFelt(big.NewInt(1)).Bytes()...) - report = append(report, caigotypes.StrToFelt("0x00010203000000000000000000000000000000000000000000000000000000").Bytes()...) - report = append(report, caigotypes.BigToFelt(big.NewInt(4)).Bytes()...) - report = append(report, caigotypes.BigToFelt(big.NewInt(99)).Bytes()...) - report = append(report, caigotypes.BigToFelt(big.NewInt(99)).Bytes()...) - report = append(report, caigotypes.BigToFelt(big.NewInt(99)).Bytes()...) - report = append(report, caigotypes.BigToFelt(big.NewInt(99)).Bytes()...) - report = append(report, caigotypes.BigToFelt(big.NewInt(1)).Bytes()...) + b1 := new(felt.Felt).SetUint64(1).Bytes() + report = append(report, b1[:]...) + b2Bytes, err := hex.DecodeString("00010203000000000000000000000000000000000000000000000000000000") + require.NoError(t, err) + b2 := new(felt.Felt).SetBytes(b2Bytes).Bytes() + report = append(report, b2[:]...) + b3 := new(felt.Felt).SetUint64(4).Bytes() + report = append(report, b3[:]...) + b4 := new(felt.Felt).SetUint64(99).Bytes() + report = append(report, b4[:]...) + report = append(report, b4[:]...) + report = append(report, b4[:]...) + report = append(report, b4[:]...) + report = append(report, b1[:]...) // check that report hash matches expected msg, err := ReportToSigData(ctx, report) require.NoError(t, err) - expected, err := caigotypes.HexToBytes("0x1332a8dabaabef63b03438ca50760cb9f5c0292cbf015b2395e50e6157df4e3") + expected, err := new(felt.Felt).SetString("0x1332a8dabaabef63b03438ca50760cb9f5c0292cbf015b2395e50e6157df4e3") + expectedBytes := expected.Bytes() require.NoError(t, err) - assert.Equal(t, expected, msg.Bytes()) + assert.Equal(t, expectedBytes[:], msg.Bytes()) // check that signature matches expected sig, err := kr1.Sign(ctx, report) require.NoError(t, err) - pub := caigotypes.BytesToFelt(sig[0:32]) - r := caigotypes.BytesToFelt(sig[32:64]) - s := caigotypes.BytesToFelt(sig[64:]) + pub := new(felt.Felt).SetBytes(sig[0:32]) + r := new(felt.Felt).SetBytes(sig[32:64]) + s := new(felt.Felt).SetBytes(sig[64:]) bigPubExpected, _ := new(big.Int).SetString("1118148281956858477519852250235501663092798578871088714409528077622994994907", 10) - feltPubExpected := caigotypes.BigToFelt(bigPubExpected) + feltPubExpected := new(felt.Felt).SetBytes(bigPubExpected.Bytes()) assert.Equal(t, feltPubExpected, pub) bigRExpected, _ := new(big.Int).SetString("2898571078985034687500959842265381508927681132188252715370774777831313601543", 10) - feltRExpected := caigotypes.BigToFelt(bigRExpected) + feltRExpected := new(felt.Felt).SetBytes(bigRExpected.Bytes()) assert.Equal(t, feltRExpected, r) // test for malleability otherS, _ := new(big.Int).SetString("1930849708769648077928186998643944706551011476358007177069185543644456022504", 10) bigSExpected, _ := new(big.Int).SetString("1687653079896483135769135784451125398975732275358080312084893914240056843079", 10) - feltSExpected := caigotypes.BigToFelt(bigSExpected) + feltSExpected := new(felt.Felt).SetBytes(bigSExpected.Bytes()) assert.NotEqual(t, otherS, s, "signature not in canonical form") assert.Equal(t, feltSExpected, s) } diff --git a/core/services/keystore/keys/starkkey/utils.go b/core/services/keystore/keys/starkkey/utils.go index 19ba54799d3..d8706ba9dbc 100644 --- a/core/services/keystore/keys/starkkey/utils.go +++ b/core/services/keystore/keys/starkkey/utils.go @@ -6,7 +6,7 @@ import ( "io" "math/big" - "github.com/smartcontractkit/caigo" + "github.com/NethermindEth/starknet.go/curve" ) // constants @@ -14,23 +14,24 @@ var ( byteLen = 32 ) -// reimplements parts of https://github.com/smartcontractkit/caigo/blob/main/utils.go#L85 +// reimplements parts of +// https://github.com/NethermindEth/starknet.go/blob/0bdaab716ce24a521304744a8fbd8e01800c241d/curve/curve.go#L702 // generate the PK as a pseudo-random number in the interval [1, CurveOrder - 1] // using io.Reader, and Key struct func GenerateKey(material io.Reader) (k Key, err error) { - max := new(big.Int).Sub(caigo.Curve.N, big.NewInt(1)) + max := new(big.Int).Sub(curve.Curve.N, big.NewInt(1)) k.priv, err = rand.Int(material, max) if err != nil { return k, err } - k.pub.X, k.pub.Y, err = caigo.Curve.PrivateToPoint(k.priv) + k.pub.X, k.pub.Y, err = curve.Curve.PrivateToPoint(k.priv) if err != nil { return k, err } - if !caigo.Curve.IsOnCurve(k.pub.X, k.pub.Y) { + if !curve.Curve.IsOnCurve(k.pub.X, k.pub.Y) { return k, fmt.Errorf("key gen is not on stark curve") } diff --git a/core/services/keystore/starknet.go b/core/services/keystore/starknet.go index 251c74d0e00..6b6afa987c6 100644 --- a/core/services/keystore/starknet.go +++ b/core/services/keystore/starknet.go @@ -7,7 +7,7 @@ import ( "github.com/pkg/errors" - "github.com/smartcontractkit/caigo" + "github.com/NethermindEth/starknet.go/curve" "github.com/smartcontractkit/chainlink-common/pkg/loop" adapters "github.com/smartcontractkit/chainlink-common/pkg/loop/adapters/starknet" @@ -179,7 +179,7 @@ func (lk *StarknetLooppSigner) Sign(ctx context.Context, id string, hash []byte) } starkHash := new(big.Int).SetBytes(hash) - x, y, err := caigo.Curve.Sign(starkHash, k.ToPrivKey()) + x, y, err := curve.Curve.Sign(starkHash, k.ToPrivKey()) if err != nil { return nil, fmt.Errorf("error signing data with curve: %w", err) } diff --git a/core/services/keystore/starknet_test.go b/core/services/keystore/starknet_test.go index a007b01f120..43624a4159e 100644 --- a/core/services/keystore/starknet_test.go +++ b/core/services/keystore/starknet_test.go @@ -9,7 +9,7 @@ import ( "github.com/stretchr/testify/mock" "github.com/stretchr/testify/require" - "github.com/smartcontractkit/caigo" + "github.com/NethermindEth/starknet.go/curve" "github.com/smartcontractkit/chainlink-common/pkg/utils" "github.com/smartcontractkit/chainlink/v2/core/internal/cltest" @@ -138,15 +138,15 @@ func TestStarknetSigner(t *testing.T) { adapter := starktxm.NewKeystoreAdapter(lk) baseKs.On("Get", starknetSenderAddr).Return(starkKey, nil) - hash, err := caigo.Curve.PedersenHash([]*big.Int{big.NewInt(42)}) + hash, err := curve.Curve.PedersenHash([]*big.Int{big.NewInt(42)}) require.NoError(t, err) r, s, err := adapter.Sign(testutils.Context(t), starknetSenderAddr, hash) require.NoError(t, err) require.NotNil(t, r) require.NotNil(t, s) - pubx, puby, err := caigo.Curve.PrivateToPoint(starkKey.ToPrivKey()) + pubx, puby, err := curve.Curve.PrivateToPoint(starkKey.ToPrivKey()) require.NoError(t, err) - require.True(t, caigo.Curve.Verify(hash, r, s, pubx, puby)) + require.True(t, curve.Curve.Verify(hash, r, s, pubx, puby)) }) } diff --git a/core/web/resolver/testdata/config-full.toml b/core/web/resolver/testdata/config-full.toml index 068931099ca..4eb2fce6c47 100644 --- a/core/web/resolver/testdata/config-full.toml +++ b/core/web/resolver/testdata/config-full.toml @@ -430,6 +430,7 @@ URL = 'http://solana.bar' [[Starknet]] ChainID = 'foobar' +FeederURL = 'http://feeder.url' Enabled = true OCR2CachePollPeriod = '6h0m0s' OCR2CacheTTL = '3m0s' @@ -440,3 +441,4 @@ ConfirmationPoll = '42s' [[Starknet.Nodes]] Name = 'primary' URL = 'http://stark.node' +APIKey = 'key' diff --git a/core/web/resolver/testdata/config-multi-chain-effective.toml b/core/web/resolver/testdata/config-multi-chain-effective.toml index 046ff28be22..67cd1770d97 100644 --- a/core/web/resolver/testdata/config-multi-chain-effective.toml +++ b/core/web/resolver/testdata/config-multi-chain-effective.toml @@ -589,6 +589,7 @@ URL = 'http://testnet.solana.com' [[Starknet]] ChainID = 'foobar' +FeederURL = 'http://feeder.url' OCR2CachePollPeriod = '5s' OCR2CacheTTL = '1m0s' RequestTimeout = '10s' @@ -598,3 +599,4 @@ ConfirmationPoll = '1h0m0s' [[Starknet.Nodes]] Name = 'primary' URL = 'http://stark.node' +APIKey = 'key' diff --git a/core/web/resolver/testdata/config-multi-chain.toml b/core/web/resolver/testdata/config-multi-chain.toml index 543fb3156bd..7180471ca2a 100644 --- a/core/web/resolver/testdata/config-multi-chain.toml +++ b/core/web/resolver/testdata/config-multi-chain.toml @@ -107,8 +107,10 @@ URL = 'http://testnet.solana.com' [[Starknet]] ChainID = 'foobar' +FeederURL = 'http://feeder.url' ConfirmationPoll = '1h0m0s' [[Starknet.Nodes]] Name = 'primary' URL = 'http://stark.node' +APIKey = 'key' diff --git a/docs/CONFIG.md b/docs/CONFIG.md index 84f60207b37..9e385acd750 100644 --- a/docs/CONFIG.md +++ b/docs/CONFIG.md @@ -7384,6 +7384,7 @@ URL is the HTTP(S) endpoint for this node. ```toml [[Starknet]] ChainID = 'foobar' # Example +FeederURL = 'http://feeder.url' # Example Enabled = true # Default OCR2CachePollPeriod = '5s' # Default OCR2CacheTTL = '1m' # Default @@ -7399,6 +7400,12 @@ ChainID = 'foobar' # Example ``` ChainID is the Starknet chain ID. +### FeederURL +```toml +FeederURL = 'http://feeder.url' # Example +``` +FeederURL is required to get tx metadata (that the RPC can't) + ### Enabled ```toml Enabled = true # Default @@ -7440,6 +7447,7 @@ ConfirmationPoll is how often to confirmer checks for tx inclusion on chain. [[Starknet.Nodes]] Name = 'primary' # Example URL = 'http://stark.node' # Example +APIKey = 'key' # Example ``` @@ -7455,3 +7463,9 @@ URL = 'http://stark.node' # Example ``` URL is the base HTTP(S) endpoint for this node. +### APIKey +```toml +APIKey = 'key' # Example +``` +APIKey Header is optional and only required for Nethermind RPCs + diff --git a/go.md b/go.md index 497f87d77b5..dd17f5207bd 100644 --- a/go.md +++ b/go.md @@ -20,8 +20,6 @@ flowchart LR classDef outline stroke-dasharray:6,fill:none; class chains,products outline - chainlink/v2 --> caigo - click caigo href "https://github.com/smartcontractkit/caigo" chainlink/v2 --> chain-selectors click chain-selectors href "https://github.com/smartcontractkit/chain-selectors" chainlink/v2 --> chainlink-automation @@ -60,7 +58,6 @@ flowchart LR chainlink-feeds --> libocr chainlink-solana --> chainlink-common chainlink-solana --> libocr - chainlink-starknet/relayer --> caigo chainlink-starknet/relayer --> chainlink-common chainlink-starknet/relayer --> libocr chainlink-vrf --> libocr diff --git a/go.mod b/go.mod index b70d0ff6c9e..2df9c7ea4f0 100644 --- a/go.mod +++ b/go.mod @@ -6,6 +6,8 @@ require ( github.com/Depado/ginprom v1.8.0 github.com/Masterminds/semver/v3 v3.2.1 github.com/Masterminds/sprig/v3 v3.2.3 + github.com/NethermindEth/juno v0.3.1 + github.com/NethermindEth/starknet.go v0.6.1-0.20231218140327-915109ab5bc1 github.com/XSAM/otelsql v0.27.0 github.com/avast/retry-go/v4 v4.5.1 github.com/btcsuite/btcd/btcec/v2 v2.3.2 @@ -68,7 +70,6 @@ require ( github.com/scylladb/go-reflectx v1.0.1 github.com/shirou/gopsutil/v3 v3.23.11 github.com/shopspring/decimal v1.3.1 - github.com/smartcontractkit/caigo v0.0.0-20230621050857-b29a4ca8c704 github.com/smartcontractkit/chain-selectors v1.0.10 github.com/smartcontractkit/chainlink-automation v1.0.2-0.20240311111125-22812a072c35 github.com/smartcontractkit/chainlink-common v0.1.7-0.20240324144450-2bc22a6738ac @@ -76,7 +77,7 @@ require ( github.com/smartcontractkit/chainlink-data-streams v0.0.0-20240220203239-09be0ea34540 github.com/smartcontractkit/chainlink-feeds v0.0.0-20240119021347-3c541a78cdb8 github.com/smartcontractkit/chainlink-solana v1.0.3-0.20240216142700-c5869534c19e - github.com/smartcontractkit/chainlink-starknet/relayer v0.0.1-beta-test.0.20240213121419-1272736c2ac0 + github.com/smartcontractkit/chainlink-starknet/relayer v0.0.1-beta-test.0.20240325075535-0f7eb05ee595 github.com/smartcontractkit/chainlink-vrf v0.0.0-20231120191722-fef03814f868 github.com/smartcontractkit/libocr v0.0.0-20240326191951-2bbe9382d052 github.com/smartcontractkit/tdh2/go/ocr2/decryptionplugin v0.0.0-20230906073235-9e478e5e19f1 @@ -216,7 +217,6 @@ require ( github.com/golang/snappy v0.0.5-0.20220116011046-fa5810519dcb // indirect github.com/google/btree v1.1.2 // indirect github.com/google/go-cmp v0.6.0 - github.com/google/go-querystring v1.1.0 // indirect github.com/google/go-tpm v0.9.0 // indirect github.com/google/gofuzz v1.2.0 // indirect github.com/gorilla/context v1.1.1 // indirect @@ -303,6 +303,7 @@ require ( github.com/tecbot/gorocksdb v0.0.0-20191217155057-f0fad39f321c // indirect github.com/tendermint/go-amino v0.16.0 // indirect github.com/teris-io/shortid v0.0.0-20201117134242-e59966efd125 // indirect + github.com/test-go/testify v1.1.4 // indirect github.com/tidwall/btree v1.6.0 // indirect github.com/tidwall/match v1.1.1 // indirect github.com/tidwall/pretty v1.2.0 // indirect diff --git a/go.sum b/go.sum index fc3f6f2232e..8fb3d4c26d4 100644 --- a/go.sum +++ b/go.sum @@ -113,6 +113,10 @@ github.com/Masterminds/sprig/v3 v3.2.3 h1:eL2fZNezLomi0uOLqjQoN6BfsDD+fyLtgbJMAj github.com/Masterminds/sprig/v3 v3.2.3/go.mod h1:rXcFaZ2zZbLRJv/xSysmlgIM1u11eBaRMhvYXJNkGuM= github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migciow= github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= +github.com/NethermindEth/juno v0.3.1 h1:AW72LiAm9gqUeCVJWvepnZcTnpU4Vkl0KzPMxS+42FA= +github.com/NethermindEth/juno v0.3.1/go.mod h1:SGbTpgGaCsxhFsKOid7Ylnz//WZ8swtILk+NbHGsk/Q= +github.com/NethermindEth/starknet.go v0.6.1-0.20231218140327-915109ab5bc1 h1:9SBvy3eZut1X+wEyAFqfb7ADGj8IQw7ZnlkMwz0YOTY= +github.com/NethermindEth/starknet.go v0.6.1-0.20231218140327-915109ab5bc1/go.mod h1:V6qrbi1+fTDCftETIT1grBXIf+TvWP/4Aois1a9EF1E= github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 h1:TngWCqHvy9oXAN6lEVMRuU21PR1EtLVZJmdB18Gu3Rw= github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5/go.mod h1:lmUJ/7eu/Q8D7ML55dXQrVaamCz2vxCfdQBasLZfHKk= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= @@ -593,8 +597,6 @@ github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeN github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= -github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8= -github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU= github.com/google/go-tpm v0.9.0 h1:sQF6YqWMi+SCXpsmS3fd21oPy/vSddwZry4JnmltHVk= github.com/google/go-tpm v0.9.0/go.mod h1:FkNVkc6C+IsvDI9Jw1OveJmxGZUUaKxtrpOS47QWKfU= github.com/google/gofuzz v0.0.0-20170612174753-24818f796faf/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= @@ -1176,8 +1178,6 @@ github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMB github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= -github.com/smartcontractkit/caigo v0.0.0-20230621050857-b29a4ca8c704 h1:T3lFWumvbfM1u/etVq42Afwq/jtNSBSOA8n5jntnNPo= -github.com/smartcontractkit/caigo v0.0.0-20230621050857-b29a4ca8c704/go.mod h1:2QuJdEouTWjh5BDy5o/vgGXQtR4Gz8yH1IYB5eT7u4M= github.com/smartcontractkit/chain-selectors v1.0.10 h1:t9kJeE6B6G+hKD0GYR4kGJSCqR1LNS7aI3jT0V+xGrg= github.com/smartcontractkit/chain-selectors v1.0.10/go.mod h1:d4Hi+E1zqjy9HqMkjBE5q1vcG9VGgxf5VxiRHfzi2kE= github.com/smartcontractkit/chainlink-automation v1.0.2-0.20240311111125-22812a072c35 h1:GNhRKD3izyzAoGMXDvVUAwEuzz4Atdj3U3RH7eak5Is= @@ -1192,8 +1192,8 @@ github.com/smartcontractkit/chainlink-feeds v0.0.0-20240119021347-3c541a78cdb8 h github.com/smartcontractkit/chainlink-feeds v0.0.0-20240119021347-3c541a78cdb8/go.mod h1:vy1L7NybTy2F/Yv7BOh+oZBa1MACD6gzd1+DkcSkfp8= github.com/smartcontractkit/chainlink-solana v1.0.3-0.20240216142700-c5869534c19e h1:k8HS3GsAFZnxXIW3141VsQP2+EL1XrTtOi/HDt7sdBE= github.com/smartcontractkit/chainlink-solana v1.0.3-0.20240216142700-c5869534c19e/go.mod h1:JiykN+8W5TA4UD2ClrzQCVvcH3NcyLEVv7RwY0busrw= -github.com/smartcontractkit/chainlink-starknet/relayer v0.0.1-beta-test.0.20240213121419-1272736c2ac0 h1:7m9PVtccb8/pvKTXMaGuyceFno1icRyC2SFH7KG7+70= -github.com/smartcontractkit/chainlink-starknet/relayer v0.0.1-beta-test.0.20240213121419-1272736c2ac0/go.mod h1:SZ899lZYQ0maUulWbZg+SWqabHQ1wTbyk3jT8wJfyo8= +github.com/smartcontractkit/chainlink-starknet/relayer v0.0.1-beta-test.0.20240325075535-0f7eb05ee595 h1:y6ks0HsSOhPUueOmTcoxDQ50RCS1XINlRDTemZyHjFw= +github.com/smartcontractkit/chainlink-starknet/relayer v0.0.1-beta-test.0.20240325075535-0f7eb05ee595/go.mod h1:vV6WfnVIbK5Q1JsIru4YcTG0T1uRpLJm6t2BgCnCSsg= github.com/smartcontractkit/chainlink-vrf v0.0.0-20231120191722-fef03814f868 h1:FFdvEzlYwcuVHkdZ8YnZR/XomeMGbz5E2F2HZI3I3w8= github.com/smartcontractkit/chainlink-vrf v0.0.0-20231120191722-fef03814f868/go.mod h1:Kn1Hape05UzFZ7bOUnm3GVsHzP0TNrVmpfXYNHdqGGs= github.com/smartcontractkit/go-plugin v0.0.0-20240208201424-b3b91517de16 h1:TFe+FvzxClblt6qRfqEhUfa4kFQx5UobuoFGO2W4mMo= diff --git a/integration-tests/go.mod b/integration-tests/go.mod index f5a20ec63f7..eb50ce3cf56 100644 --- a/integration-tests/go.mod +++ b/integration-tests/go.mod @@ -81,6 +81,8 @@ require ( github.com/Masterminds/sprig/v3 v3.2.3 // indirect github.com/Microsoft/go-winio v0.6.1 // indirect github.com/Microsoft/hcsshim v0.11.4 // indirect + github.com/NethermindEth/juno v0.3.1 // indirect + github.com/NethermindEth/starknet.go v0.6.1-0.20231218140327-915109ab5bc1 // indirect github.com/VictoriaMetrics/fastcache v1.12.1 // indirect github.com/XSAM/otelsql v0.27.0 // indirect github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137 // indirect @@ -376,13 +378,12 @@ require ( github.com/shoenig/go-m1cpu v0.1.6 // indirect github.com/shopspring/decimal v1.3.1 // indirect github.com/sirupsen/logrus v1.9.3 // indirect - github.com/smartcontractkit/caigo v0.0.0-20230621050857-b29a4ca8c704 // indirect github.com/smartcontractkit/chain-selectors v1.0.10 // indirect github.com/smartcontractkit/chainlink-cosmos v0.4.1-0.20240213120401-01a23955f9f8 // indirect github.com/smartcontractkit/chainlink-data-streams v0.0.0-20240220203239-09be0ea34540 // indirect github.com/smartcontractkit/chainlink-feeds v0.0.0-20240119021347-3c541a78cdb8 // indirect github.com/smartcontractkit/chainlink-solana v1.0.3-0.20240216142700-c5869534c19e // indirect - github.com/smartcontractkit/chainlink-starknet/relayer v0.0.1-beta-test.0.20240213121419-1272736c2ac0 // indirect + github.com/smartcontractkit/chainlink-starknet/relayer v0.0.1-beta-test.0.20240325075535-0f7eb05ee595 // indirect github.com/smartcontractkit/tdh2/go/ocr2/decryptionplugin v0.0.0-20230906073235-9e478e5e19f1 // indirect github.com/smartcontractkit/tdh2/go/tdh2 v0.0.0-20230906073235-9e478e5e19f1 // indirect github.com/smartcontractkit/wsrpc v0.7.2 // indirect diff --git a/integration-tests/go.sum b/integration-tests/go.sum index 09f4e0ce1af..c9bc06ae756 100644 --- a/integration-tests/go.sum +++ b/integration-tests/go.sum @@ -148,6 +148,10 @@ github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migc github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= github.com/Microsoft/hcsshim v0.11.4 h1:68vKo2VN8DE9AdN4tnkWnmdhqdbpUFM8OF3Airm7fz8= github.com/Microsoft/hcsshim v0.11.4/go.mod h1:smjE4dvqPX9Zldna+t5FG3rnoHhaB7QYxPRqGcpAD9w= +github.com/NethermindEth/juno v0.3.1 h1:AW72LiAm9gqUeCVJWvepnZcTnpU4Vkl0KzPMxS+42FA= +github.com/NethermindEth/juno v0.3.1/go.mod h1:SGbTpgGaCsxhFsKOid7Ylnz//WZ8swtILk+NbHGsk/Q= +github.com/NethermindEth/starknet.go v0.6.1-0.20231218140327-915109ab5bc1 h1:9SBvy3eZut1X+wEyAFqfb7ADGj8IQw7ZnlkMwz0YOTY= +github.com/NethermindEth/starknet.go v0.6.1-0.20231218140327-915109ab5bc1/go.mod h1:V6qrbi1+fTDCftETIT1grBXIf+TvWP/4Aois1a9EF1E= github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 h1:TngWCqHvy9oXAN6lEVMRuU21PR1EtLVZJmdB18Gu3Rw= github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5/go.mod h1:lmUJ/7eu/Q8D7ML55dXQrVaamCz2vxCfdQBasLZfHKk= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= @@ -1517,8 +1521,6 @@ github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/slack-go/slack v0.12.2 h1:x3OppyMyGIbbiyFhsBmpf9pwkUzMhthJMRNmNlA4LaQ= github.com/slack-go/slack v0.12.2/go.mod h1:hlGi5oXA+Gt+yWTPP0plCdRKmjsDxecdHxYQdlMQKOw= -github.com/smartcontractkit/caigo v0.0.0-20230621050857-b29a4ca8c704 h1:T3lFWumvbfM1u/etVq42Afwq/jtNSBSOA8n5jntnNPo= -github.com/smartcontractkit/caigo v0.0.0-20230621050857-b29a4ca8c704/go.mod h1:2QuJdEouTWjh5BDy5o/vgGXQtR4Gz8yH1IYB5eT7u4M= github.com/smartcontractkit/chain-selectors v1.0.10 h1:t9kJeE6B6G+hKD0GYR4kGJSCqR1LNS7aI3jT0V+xGrg= github.com/smartcontractkit/chain-selectors v1.0.10/go.mod h1:d4Hi+E1zqjy9HqMkjBE5q1vcG9VGgxf5VxiRHfzi2kE= github.com/smartcontractkit/chainlink-automation v1.0.2-0.20240311111125-22812a072c35 h1:GNhRKD3izyzAoGMXDvVUAwEuzz4Atdj3U3RH7eak5Is= @@ -1533,8 +1535,8 @@ github.com/smartcontractkit/chainlink-feeds v0.0.0-20240119021347-3c541a78cdb8 h github.com/smartcontractkit/chainlink-feeds v0.0.0-20240119021347-3c541a78cdb8/go.mod h1:vy1L7NybTy2F/Yv7BOh+oZBa1MACD6gzd1+DkcSkfp8= github.com/smartcontractkit/chainlink-solana v1.0.3-0.20240216142700-c5869534c19e h1:k8HS3GsAFZnxXIW3141VsQP2+EL1XrTtOi/HDt7sdBE= github.com/smartcontractkit/chainlink-solana v1.0.3-0.20240216142700-c5869534c19e/go.mod h1:JiykN+8W5TA4UD2ClrzQCVvcH3NcyLEVv7RwY0busrw= -github.com/smartcontractkit/chainlink-starknet/relayer v0.0.1-beta-test.0.20240213121419-1272736c2ac0 h1:7m9PVtccb8/pvKTXMaGuyceFno1icRyC2SFH7KG7+70= -github.com/smartcontractkit/chainlink-starknet/relayer v0.0.1-beta-test.0.20240213121419-1272736c2ac0/go.mod h1:SZ899lZYQ0maUulWbZg+SWqabHQ1wTbyk3jT8wJfyo8= +github.com/smartcontractkit/chainlink-starknet/relayer v0.0.1-beta-test.0.20240325075535-0f7eb05ee595 h1:y6ks0HsSOhPUueOmTcoxDQ50RCS1XINlRDTemZyHjFw= +github.com/smartcontractkit/chainlink-starknet/relayer v0.0.1-beta-test.0.20240325075535-0f7eb05ee595/go.mod h1:vV6WfnVIbK5Q1JsIru4YcTG0T1uRpLJm6t2BgCnCSsg= github.com/smartcontractkit/chainlink-testing-framework v1.27.6 h1:w+VS+w4N2HVA0TgJx+0KkXlW0p+Y0gOxgykaQwuHyYI= github.com/smartcontractkit/chainlink-testing-framework v1.27.6/go.mod h1:jN+HgXbriq6fKRlIqLw9F3I81aYImV6kBJkIfz0mdIA= github.com/smartcontractkit/chainlink-vrf v0.0.0-20231120191722-fef03814f868 h1:FFdvEzlYwcuVHkdZ8YnZR/XomeMGbz5E2F2HZI3I3w8= diff --git a/integration-tests/load/go.mod b/integration-tests/load/go.mod index 3f6ca2a2a93..4a179b8069f 100644 --- a/integration-tests/load/go.mod +++ b/integration-tests/load/go.mod @@ -58,6 +58,8 @@ require ( github.com/Masterminds/sprig/v3 v3.2.3 // indirect github.com/Microsoft/go-winio v0.6.1 // indirect github.com/Microsoft/hcsshim v0.11.4 // indirect + github.com/NethermindEth/juno v0.3.1 // indirect + github.com/NethermindEth/starknet.go v0.6.1-0.20231218140327-915109ab5bc1 // indirect github.com/VictoriaMetrics/fastcache v1.12.1 // indirect github.com/XSAM/otelsql v0.27.0 // indirect github.com/alecthomas/units v0.0.0-20211218093645-b94a6e3cc137 // indirect @@ -364,13 +366,12 @@ require ( github.com/shoenig/go-m1cpu v0.1.6 // indirect github.com/shopspring/decimal v1.3.1 // indirect github.com/sirupsen/logrus v1.9.3 // indirect - github.com/smartcontractkit/caigo v0.0.0-20230621050857-b29a4ca8c704 // indirect github.com/smartcontractkit/chain-selectors v1.0.10 // indirect github.com/smartcontractkit/chainlink-cosmos v0.4.1-0.20240213120401-01a23955f9f8 // indirect github.com/smartcontractkit/chainlink-data-streams v0.0.0-20240220203239-09be0ea34540 // indirect github.com/smartcontractkit/chainlink-feeds v0.0.0-20240119021347-3c541a78cdb8 // indirect github.com/smartcontractkit/chainlink-solana v1.0.3-0.20240216142700-c5869534c19e // indirect - github.com/smartcontractkit/chainlink-starknet/relayer v0.0.1-beta-test.0.20240213121419-1272736c2ac0 // indirect + github.com/smartcontractkit/chainlink-starknet/relayer v0.0.1-beta-test.0.20240325075535-0f7eb05ee595 // indirect github.com/smartcontractkit/chainlink-testing-framework/grafana v0.0.0-20240227164431-18a7065e23ea // indirect github.com/smartcontractkit/chainlink-vrf v0.0.0-20231120191722-fef03814f868 // indirect github.com/smartcontractkit/tdh2/go/ocr2/decryptionplugin v0.0.0-20230906073235-9e478e5e19f1 // indirect diff --git a/integration-tests/load/go.sum b/integration-tests/load/go.sum index 2c338ce87be..0cd1be2e344 100644 --- a/integration-tests/load/go.sum +++ b/integration-tests/load/go.sum @@ -148,6 +148,10 @@ github.com/Microsoft/go-winio v0.6.1 h1:9/kr64B9VUZrLm5YYwbGtUJnMgqWVOdUAXu6Migc github.com/Microsoft/go-winio v0.6.1/go.mod h1:LRdKpFKfdobln8UmuiYcKPot9D2v6svN5+sAH+4kjUM= github.com/Microsoft/hcsshim v0.11.4 h1:68vKo2VN8DE9AdN4tnkWnmdhqdbpUFM8OF3Airm7fz8= github.com/Microsoft/hcsshim v0.11.4/go.mod h1:smjE4dvqPX9Zldna+t5FG3rnoHhaB7QYxPRqGcpAD9w= +github.com/NethermindEth/juno v0.3.1 h1:AW72LiAm9gqUeCVJWvepnZcTnpU4Vkl0KzPMxS+42FA= +github.com/NethermindEth/juno v0.3.1/go.mod h1:SGbTpgGaCsxhFsKOid7Ylnz//WZ8swtILk+NbHGsk/Q= +github.com/NethermindEth/starknet.go v0.6.1-0.20231218140327-915109ab5bc1 h1:9SBvy3eZut1X+wEyAFqfb7ADGj8IQw7ZnlkMwz0YOTY= +github.com/NethermindEth/starknet.go v0.6.1-0.20231218140327-915109ab5bc1/go.mod h1:V6qrbi1+fTDCftETIT1grBXIf+TvWP/4Aois1a9EF1E= github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5 h1:TngWCqHvy9oXAN6lEVMRuU21PR1EtLVZJmdB18Gu3Rw= github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5/go.mod h1:lmUJ/7eu/Q8D7ML55dXQrVaamCz2vxCfdQBasLZfHKk= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= @@ -1500,8 +1504,6 @@ github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/slack-go/slack v0.12.2 h1:x3OppyMyGIbbiyFhsBmpf9pwkUzMhthJMRNmNlA4LaQ= github.com/slack-go/slack v0.12.2/go.mod h1:hlGi5oXA+Gt+yWTPP0plCdRKmjsDxecdHxYQdlMQKOw= -github.com/smartcontractkit/caigo v0.0.0-20230621050857-b29a4ca8c704 h1:T3lFWumvbfM1u/etVq42Afwq/jtNSBSOA8n5jntnNPo= -github.com/smartcontractkit/caigo v0.0.0-20230621050857-b29a4ca8c704/go.mod h1:2QuJdEouTWjh5BDy5o/vgGXQtR4Gz8yH1IYB5eT7u4M= github.com/smartcontractkit/chain-selectors v1.0.10 h1:t9kJeE6B6G+hKD0GYR4kGJSCqR1LNS7aI3jT0V+xGrg= github.com/smartcontractkit/chain-selectors v1.0.10/go.mod h1:d4Hi+E1zqjy9HqMkjBE5q1vcG9VGgxf5VxiRHfzi2kE= github.com/smartcontractkit/chainlink-automation v1.0.2-0.20240311111125-22812a072c35 h1:GNhRKD3izyzAoGMXDvVUAwEuzz4Atdj3U3RH7eak5Is= @@ -1516,8 +1518,8 @@ github.com/smartcontractkit/chainlink-feeds v0.0.0-20240119021347-3c541a78cdb8 h github.com/smartcontractkit/chainlink-feeds v0.0.0-20240119021347-3c541a78cdb8/go.mod h1:vy1L7NybTy2F/Yv7BOh+oZBa1MACD6gzd1+DkcSkfp8= github.com/smartcontractkit/chainlink-solana v1.0.3-0.20240216142700-c5869534c19e h1:k8HS3GsAFZnxXIW3141VsQP2+EL1XrTtOi/HDt7sdBE= github.com/smartcontractkit/chainlink-solana v1.0.3-0.20240216142700-c5869534c19e/go.mod h1:JiykN+8W5TA4UD2ClrzQCVvcH3NcyLEVv7RwY0busrw= -github.com/smartcontractkit/chainlink-starknet/relayer v0.0.1-beta-test.0.20240213121419-1272736c2ac0 h1:7m9PVtccb8/pvKTXMaGuyceFno1icRyC2SFH7KG7+70= -github.com/smartcontractkit/chainlink-starknet/relayer v0.0.1-beta-test.0.20240213121419-1272736c2ac0/go.mod h1:SZ899lZYQ0maUulWbZg+SWqabHQ1wTbyk3jT8wJfyo8= +github.com/smartcontractkit/chainlink-starknet/relayer v0.0.1-beta-test.0.20240325075535-0f7eb05ee595 h1:y6ks0HsSOhPUueOmTcoxDQ50RCS1XINlRDTemZyHjFw= +github.com/smartcontractkit/chainlink-starknet/relayer v0.0.1-beta-test.0.20240325075535-0f7eb05ee595/go.mod h1:vV6WfnVIbK5Q1JsIru4YcTG0T1uRpLJm6t2BgCnCSsg= github.com/smartcontractkit/chainlink-testing-framework v1.27.6 h1:w+VS+w4N2HVA0TgJx+0KkXlW0p+Y0gOxgykaQwuHyYI= github.com/smartcontractkit/chainlink-testing-framework v1.27.6/go.mod h1:jN+HgXbriq6fKRlIqLw9F3I81aYImV6kBJkIfz0mdIA= github.com/smartcontractkit/chainlink-testing-framework/grafana v0.0.0-20240227164431-18a7065e23ea h1:ZdLmNAfKRjH8AYUvjiiDGUgiWQfq/7iNpxyTkvjx/ko=