Skip to content

Commit

Permalink
Merge pull request #172 from smartcontractkit/starknet-rpc
Browse files Browse the repository at this point in the history
  • Loading branch information
archseer committed Jun 22, 2023
2 parents 2be4027 + 3a6e201 commit 7ce4847
Show file tree
Hide file tree
Showing 44 changed files with 474 additions and 902 deletions.
2 changes: 1 addition & 1 deletion contracts/requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@ ecdsa
fastecdsa
sympy
cairo-lang>=0.11.1.1
starknet-devnet>=0.5.2
starknet-devnet>=0.5.3
2 changes: 1 addition & 1 deletion integration-tests/common/common.go
Original file line number Diff line number Diff line change
Expand Up @@ -237,7 +237,7 @@ func (c *Common) CreateJobsForContract(cc *ChainlinkClient, observationSource st

func (c *Common) Default(t *testing.T) {
c.K8Config = &environment.Config{NamespacePrefix: "chainlink-ocr-starknet", TTL: c.TTL, Test: t}
starknetUrl := fmt.Sprintf("http://%s:%d", serviceKeyL2, 5000)
starknetUrl := fmt.Sprintf("http://%s:%d/rpc", serviceKeyL2, 5000)
if c.Testnet {
starknetUrl = c.L2RPCUrl
}
Expand Down
17 changes: 11 additions & 6 deletions integration-tests/common/test_common.go
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,12 @@ func (testState *Test) DeployCluster() {
var err error
testState.Cc.NKeys, testState.Cc.ChainlinkNodes, err = testState.Common.CreateKeys(testState.Common.Env)
require.NoError(testState.T, err, "Creating chains and keys should not fail")
testState.Starknet, err = starknet.NewClient(testState.Common.ChainId, testState.Common.L2RPCUrl, lggr, &rpcRequestTimeout)
baseURL := testState.Common.L2RPCUrl
if !testState.Common.Testnet { // devnet!
// chainlink starknet client needs the RPC API url which is at /rpc on devnet
baseURL += "/rpc"
}
testState.Starknet, err = starknet.NewClient(testState.Common.ChainId, baseURL, lggr, &rpcRequestTimeout)
require.NoError(testState.T, err, "Creating starknet client should not fail")
testState.OCR2Client, err = ocr2.NewClient(testState.Starknet, lggr)
require.NoError(testState.T, err, "Creating ocr2 client should not fail")
Expand Down Expand Up @@ -272,13 +277,13 @@ func (testState *Test) ValidateRounds(rounds int, isSoak bool) error {

// validate balance in aggregator
resLINK, errLINK := testState.Starknet.CallContract(ctx, starknet.CallOps{
ContractAddress: caigotypes.HexToHash(testState.LinkTokenAddr),
ContractAddress: caigotypes.StrToFelt(testState.LinkTokenAddr),
Selector: "balance_of",
Calldata: []string{caigotypes.HexToBN(testState.OCRAddr).String()},
Calldata: []string{testState.OCRAddr},
})
require.NoError(testState.T, errLINK, "Reader balance from LINK contract should not fail")
resAgg, errAgg := testState.Starknet.CallContract(ctx, starknet.CallOps{
ContractAddress: caigotypes.HexToHash(testState.OCRAddr),
ContractAddress: caigotypes.StrToFelt(testState.OCRAddr),
Selector: "link_available_for_payment",
})
require.NoError(testState.T, errAgg, "Reader balance from LINK contract should not fail")
Expand All @@ -294,7 +299,7 @@ func (testState *Test) ValidateRounds(rounds int, isSoak bool) error {

for start := time.Now(); time.Since(start) < testState.Common.TestDuration; {
l.Info().Msg(fmt.Sprintf("Elapsed time: %s, Round wait: %s ", time.Since(start), testState.Common.TestDuration))
res, err := testState.OCR2Client.LatestTransmissionDetails(ctx, caigotypes.HexToHash(testState.OCRAddr))
res, err := testState.OCR2Client.LatestTransmissionDetails(ctx, caigotypes.StrToFelt(testState.OCRAddr))
require.NoError(testState.T, err, "Failed to get latest transmission details")
// end condition: enough rounds have occurred
if !isSoak && increasing >= rounds && positive {
Expand Down Expand Up @@ -372,7 +377,7 @@ func (testState *Test) ValidateRounds(rounds int, isSoak bool) error {
// Test proxy reading
// TODO: would be good to test proxy switching underlying feeds
roundDataRaw, err := testState.Starknet.CallContract(ctx, starknet.CallOps{
ContractAddress: caigotypes.HexToHash(testState.ProxyAddr),
ContractAddress: caigotypes.StrToFelt(testState.ProxyAddr),
Selector: "latest_round_data",
})
if !isSoak {
Expand Down
2 changes: 1 addition & 1 deletion integration-tests/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ go 1.20
require (
github.com/rs/zerolog v1.29.1
github.com/satori/go.uuid v1.2.1-0.20181028125025-b2ce2384e17b
github.com/smartcontractkit/caigo v0.0.0-20230530082629-53a5a4bdb25e
github.com/smartcontractkit/caigo v0.0.0-20230621050857-b29a4ca8c704
github.com/smartcontractkit/chainlink-env v0.32.8
github.com/smartcontractkit/chainlink-relay v0.1.7-0.20230606234201-cca3103bf8a6
github.com/smartcontractkit/chainlink-starknet/ops v0.0.0-20230329050701-40e3b18bb026
Expand Down
4 changes: 2 additions & 2 deletions integration-tests/go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -1327,8 +1327,8 @@ 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-20230530082629-53a5a4bdb25e h1:XY8DncHICYQ1WDVpoXM7Tv3tztNHa1/DctDlSmqgU10=
github.com/smartcontractkit/caigo v0.0.0-20230530082629-53a5a4bdb25e/go.mod h1:2QuJdEouTWjh5BDy5o/vgGXQtR4Gz8yH1IYB5eT7u4M=
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/chainlink-cosmos v0.4.1-0.20230525203711-20bed74ac906 h1:u7Lw7oqLEjADlJPJQnzlCLNSbj038QttaKY0lCa3V78=
github.com/smartcontractkit/chainlink-env v0.32.8 h1:0YCtqgo91m2Iu9QeoSIwPYRY0y+KPmPMP5V0OYiEXAU=
github.com/smartcontractkit/chainlink-env v0.32.8/go.mod h1:9c0Czq4a6wZKY20BcoAlK29DnejQIiLo/MwKYtSFnHk=
Expand Down
2 changes: 1 addition & 1 deletion monitoring/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ go 1.20

require (
github.com/prometheus/client_golang v1.15.0
github.com/smartcontractkit/caigo v0.0.0-20230530082629-53a5a4bdb25e
github.com/smartcontractkit/caigo v0.0.0-20230621050857-b29a4ca8c704
github.com/smartcontractkit/chainlink-relay v0.1.7-0.20230606234201-cca3103bf8a6
github.com/smartcontractkit/chainlink-starknet/relayer v0.0.0-20230508053614-9f2fd5fd4ff1
github.com/smartcontractkit/libocr v0.0.0-20230606215712-82b910bef5c1
Expand Down
4 changes: 2 additions & 2 deletions monitoring/go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -295,8 +295,8 @@ github.com/santhosh-tekuri/jsonschema/v5 v5.1.1 h1:lEOLY2vyGIqKWUI9nzsOJRV3mb3WC
github.com/santhosh-tekuri/jsonschema/v5 v5.1.1/go.mod h1:FKdcjfQW6rpZSnxxUvEA5H/cDPdvJ/SZJQLWWXWGrZ0=
github.com/shirou/gopsutil v3.21.11+incompatible h1:+1+c1VGhc88SSonWP6foOcLhvnKlUeu/erjjvaPEYiI=
github.com/shirou/gopsutil v3.21.11+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA=
github.com/smartcontractkit/caigo v0.0.0-20230530082629-53a5a4bdb25e h1:XY8DncHICYQ1WDVpoXM7Tv3tztNHa1/DctDlSmqgU10=
github.com/smartcontractkit/caigo v0.0.0-20230530082629-53a5a4bdb25e/go.mod h1:2QuJdEouTWjh5BDy5o/vgGXQtR4Gz8yH1IYB5eT7u4M=
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/chainlink-relay v0.1.7-0.20230606234201-cca3103bf8a6 h1:dQG7RYxvMk9b/oJZ7sPDdm8oloFnH+YO6qLvto4Y7Nc=
github.com/smartcontractkit/chainlink-relay v0.1.7-0.20230606234201-cca3103bf8a6/go.mod h1:MfZBUifutkv3aK7abyw5YmTJbqt8iFwcQDFikrxC/uI=
github.com/smartcontractkit/libocr v0.0.0-20230606215712-82b910bef5c1 h1:caG9BWjnCxN/HPBA5ltDGadDraZAsjGIct4S8lh8D5c=
Expand Down
18 changes: 8 additions & 10 deletions monitoring/pkg/monitoring/source_envelope.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,8 @@ func (s *envelopeSourceFactory) NewSource(
return nil, fmt.Errorf("expected feedConfig to be of type StarknetFeedConfig not %T", feedConfig)
}
return &envelopeSource{
caigotypes.HexToHash(feedConfig.GetContractAddress()),
caigotypes.HexToHash(starknetChainConfig.GetLinkTokenAddress()),
caigotypes.StrToFelt(feedConfig.GetContractAddress()),
caigotypes.StrToFelt(starknetChainConfig.GetLinkTokenAddress()),
s.ocr2Reader,
}, nil
}
Expand All @@ -48,8 +48,8 @@ func (s *envelopeSourceFactory) GetType() string {
}

type envelopeSource struct {
contractAddress caigotypes.Hash
linkTokenAddress caigotypes.Hash
contractAddress caigotypes.Felt
linkTokenAddress caigotypes.Felt
ocr2Reader ocr2.OCR2Reader
}

Expand All @@ -68,9 +68,7 @@ func (s *envelopeSource) Fetch(ctx context.Context) (interface{}, error) {
return
}
envelope.BlockNumber = latestRoundData.BlockNumber
if newTransmissionEvent.Transmitter != nil {
envelope.Transmitter = types.Account(newTransmissionEvent.Transmitter.String())
}
envelope.Transmitter = types.Account(newTransmissionEvent.Transmitter.String())
envelope.AggregatorRoundID = latestRoundData.RoundID
envelope.ConfigDigest = newTransmissionEvent.ConfigDigest
envelope.Epoch = newTransmissionEvent.Epoch
Expand Down Expand Up @@ -117,7 +115,7 @@ func (s *envelopeSource) Fetch(ctx context.Context) (interface{}, error) {
return envelope, envelopeErr
}

func (s *envelopeSource) fetchLatestNewTransmissionEvent(ctx context.Context, contractAddress caigotypes.Hash) (
func (s *envelopeSource) fetchLatestNewTransmissionEvent(ctx context.Context, contractAddress caigotypes.Felt) (
latestRound ocr2.RoundData,
transmission ocr2.NewTransmissionEvent,
err error,
Expand All @@ -143,7 +141,7 @@ func (s *envelopeSource) fetchLatestNewTransmissionEvent(ctx context.Context, co
return latestRound, transmission, fmt.Errorf("no new_trasmission event found to correspond with the round id %d in block %d", latestRound.RoundID, latestRound.BlockNumber)
}

func (s *envelopeSource) fetchContractConfig(ctx context.Context, contractAddress caigotypes.Hash) (config ocr2.ContractConfig, err error) {
func (s *envelopeSource) fetchContractConfig(ctx context.Context, contractAddress caigotypes.Felt) (config ocr2.ContractConfig, err error) {
configDetails, err := s.ocr2Reader.LatestConfigDetails(ctx, contractAddress)
if err != nil {
return config, fmt.Errorf("couldn't fetch latest config details for contract '%s': %w", contractAddress, err)
Expand All @@ -157,7 +155,7 @@ func (s *envelopeSource) fetchContractConfig(ctx context.Context, contractAddres

var zeroBigInt = big.NewInt(0)

func (s *envelopeSource) fetchLinkBalance(ctx context.Context, linkTokenAddress, contractAddress caigotypes.Hash) (*big.Int, error) {
func (s *envelopeSource) fetchLinkBalance(ctx context.Context, linkTokenAddress, contractAddress caigotypes.Felt) (*big.Int, error) {
results, err := s.ocr2Reader.BaseReader().CallContract(ctx, starknet.CallOps{
ContractAddress: linkTokenAddress,
Selector: "balanceOf",
Expand Down
2 changes: 1 addition & 1 deletion ops/charts/devnet/templates/deployment.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ spec:
{{- else }}
- name: cairo-build
mountPath: /cairo-build
image: "{{ .Values.repository | default "shardlabs/starknet-devnet"}}:{{ .Values.tag | default "0.5.2"}}"
image: "{{ .Values.repository | default "shardlabs/starknet-devnet"}}:{{ .Values.tag | default "0.5.3"}}"
args: ["--sierra-compiler-path", "/cairo-build/bin/starknet-sierra-compile", "--lite-mode", "--port", {{ .Values.service.internalPort | quote}}, "--seed", {{ .Values.seed | quote}}]
{{- end }}
imagePullPolicy: IfNotPresent
Expand Down
2 changes: 1 addition & 1 deletion ops/devnet/devnet.go
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ func (devnet *StarknetDevnetClient) AutoLoadState(client *ocr2.Client, ocrAddres
return
case <-t.C:
log.Debug().Msg("Checking for devnet OCR contract errors")
_, err := client.LatestTransmissionDetails(devnet.ctx, caigotypes.HexToHash(ocrAddress))
_, err := client.LatestTransmissionDetails(devnet.ctx, caigotypes.StrToFelt(ocrAddress))
if err != nil && strings.Contains(err.Error(), "is not deployed") {
_, err = devnet.client.R().SetBody(map[string]any{
"path": devnet.dumpPath,
Expand Down
2 changes: 1 addition & 1 deletion ops/devnet/environment.go
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ func defaultProps() map[string]any {
"starknet-dev": map[string]any{
"image": map[string]any{
"image": "shardlabs/starknet-devnet",
"version": "v0.5.2",
"version": "v0.5.3",
},
"resources": map[string]any{
"requests": map[string]any{
Expand Down
2 changes: 1 addition & 1 deletion ops/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ go 1.20
require (
github.com/go-resty/resty/v2 v2.7.0
github.com/rs/zerolog v1.29.1
github.com/smartcontractkit/caigo v0.0.0-20230530082629-53a5a4bdb25e
github.com/smartcontractkit/caigo v0.0.0-20230621050857-b29a4ca8c704
github.com/smartcontractkit/chainlink-env v0.3.29
github.com/smartcontractkit/chainlink-starknet/relayer v0.0.0-20230530233948-90c8af98011e
github.com/smartcontractkit/chainlink-testing-framework v1.11.5
Expand Down
4 changes: 2 additions & 2 deletions ops/go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -390,8 +390,8 @@ github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQD
github.com/sergi/go-diff v1.2.0 h1:XU+rvMAioB0UC3q1MFrIQy4Vo5/4VsRDQQXHsEya6xQ=
github.com/shirou/gopsutil v3.21.11+incompatible h1:+1+c1VGhc88SSonWP6foOcLhvnKlUeu/erjjvaPEYiI=
github.com/shirou/gopsutil v3.21.11+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA=
github.com/smartcontractkit/caigo v0.0.0-20230530082629-53a5a4bdb25e h1:XY8DncHICYQ1WDVpoXM7Tv3tztNHa1/DctDlSmqgU10=
github.com/smartcontractkit/caigo v0.0.0-20230530082629-53a5a4bdb25e/go.mod h1:2QuJdEouTWjh5BDy5o/vgGXQtR4Gz8yH1IYB5eT7u4M=
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/chainlink-env v0.3.29 h1:hcIw/BeuB0wKiiE3umAUNBZzWkHO24XF3OW9xSrlMbI=
github.com/smartcontractkit/chainlink-env v0.3.29/go.mod h1:9c0Czq4a6wZKY20BcoAlK29DnejQIiLo/MwKYtSFnHk=
github.com/smartcontractkit/chainlink-relay v0.1.7-0.20230606234201-cca3103bf8a6 h1:dQG7RYxvMk9b/oJZ7sPDdm8oloFnH+YO6qLvto4Y7Nc=
Expand Down
4 changes: 2 additions & 2 deletions ops/scripts/devnet-hardhat.sh
Original file line number Diff line number Diff line change
Expand Up @@ -31,10 +31,10 @@ echo "Checking CPU structure..."
if [[ $cpu_struct == *"arm"* ]]
then
echo "Starting arm devnet container..."
container_version="0.5.2-arm"
container_version="0.5.3-arm"
else
echo "Starting i386 devnet container..."
container_version="0.5.2"
container_version="0.5.3"
fi

echo "Starting starknet-devnet: ${startup_args}"
Expand Down
27 changes: 6 additions & 21 deletions relayer/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -4,63 +4,48 @@ go 1.20

require (
github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1
github.com/ethereum/go-ethereum v1.11.5
github.com/pkg/errors v0.9.1
github.com/smartcontractkit/caigo v0.0.0-20230530082629-53a5a4bdb25e
github.com/smartcontractkit/chainlink-relay v0.1.7-0.20230606234201-cca3103bf8a6
github.com/smartcontractkit/libocr v0.0.0-20230606215712-82b910bef5c1
github.com/stretchr/testify v1.8.4
github.com/smartcontractkit/caigo v0.0.0-20230621050857-b29a4ca8c704
github.com/smartcontractkit/chainlink-relay v0.1.7-0.20230605232729-e0a00f8c6545
github.com/smartcontractkit/libocr v0.0.0-20230525150148-a75f6e244bb3
github.com/stretchr/testify v1.8.3
go.uber.org/zap v1.24.0
golang.org/x/exp v0.0.0-20230425010034-47ecfdc1ba53
)

require (
github.com/benbjohnson/clock v1.3.0 // indirect
github.com/beorn7/perks v1.0.1 // indirect
github.com/btcsuite/btcd/btcec/v2 v2.2.1 // indirect
github.com/cespare/xxhash/v2 v2.2.0 // indirect
github.com/davecgh/go-spew v1.1.1 // indirect
github.com/deckarep/golang-set/v2 v2.1.0 // indirect
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.1.0 // indirect
github.com/ethereum/go-ethereum v1.11.5 // indirect
github.com/fatih/color v1.13.0 // indirect
github.com/fatih/color v1.7.0 // indirect
github.com/fsnotify/fsnotify v1.6.0 // indirect
github.com/go-logr/logr v1.2.4 // indirect
github.com/go-logr/stdr v1.2.2 // indirect
github.com/go-ole/go-ole v1.2.6 // indirect
github.com/go-stack/stack v1.8.1 // indirect
github.com/gogo/protobuf v1.3.3 // indirect
github.com/golang/protobuf v1.5.3 // indirect
github.com/google/go-querystring v1.1.0 // indirect
github.com/google/uuid v1.3.0 // indirect
github.com/gorilla/websocket v1.5.0 // indirect
github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.0.0-rc.0 // indirect
github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.0.0-rc.3 // indirect
github.com/hashicorp/go-hclog v0.14.1 // indirect
github.com/hashicorp/go-plugin v1.4.10 // indirect
github.com/hashicorp/yamux v0.0.0-20180604194846-3520598351bb // indirect
github.com/holiman/uint256 v1.2.2-0.20230321075855-87b91420868c // indirect
github.com/jpillora/backoff v1.0.0 // indirect
github.com/mattn/go-colorable v0.1.13 // indirect
github.com/mattn/go-isatty v0.0.16 // indirect
github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect
github.com/mitchellh/go-testing-interface v1.14.1 // indirect
github.com/mr-tron/base58 v1.2.0 // indirect
github.com/oklog/run v1.0.0 // indirect
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
github.com/prometheus/client_golang v1.15.0 // indirect
github.com/prometheus/client_model v0.3.0 // indirect
github.com/prometheus/common v0.42.0 // indirect
github.com/prometheus/procfs v0.9.0 // indirect
github.com/shirou/gopsutil v3.21.11+incompatible // indirect
github.com/stretchr/objx v0.5.0 // indirect
github.com/tklauser/go-sysconf v0.3.10 // indirect
github.com/tklauser/numcpus v0.5.0 // indirect
github.com/yusufpapurcu/wmi v1.2.2 // indirect
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.42.0 // indirect
go.opentelemetry.io/otel v1.16.0 // indirect
go.opentelemetry.io/otel/metric v1.16.0 // indirect
go.opentelemetry.io/otel/sdk v1.16.0 // indirect
go.opentelemetry.io/otel/trace v1.16.0 // indirect
go.uber.org/atomic v1.10.0 // indirect
go.uber.org/multierr v1.11.0 // indirect
golang.org/x/crypto v0.9.0 // indirect
Expand Down
Loading

0 comments on commit 7ce4847

Please sign in to comment.