Skip to content

Commit

Permalink
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
update slinky version + minor fixes
Browse files Browse the repository at this point in the history
nivasan1 committed Feb 23, 2024
1 parent 8894aaf commit f623ca8
Showing 15 changed files with 370 additions and 380 deletions.
9 changes: 8 additions & 1 deletion protocol/Dockerfile
Original file line number Diff line number Diff line change
@@ -63,7 +63,8 @@ RUN apk add --no-cache bash

COPY --from=builder /dydxprotocol/build/dydxprotocold /bin/dydxprotocold
COPY --from=builder /slinky/build/oracle /bin/slinky
COPY --from=builder /slinky/config/local/oracle.toml /etc/oracle.toml
COPY --from=builder /slinky/config/local/oracle.json /etc/oracle.json
COPY --from=builder /slinky/config/local/market.json /etc/market.json

ENV HOME /dydxprotocol
WORKDIR $HOME
@@ -80,5 +81,11 @@ EXPOSE 9090
EXPOSE 8080
# oracle metrics
EXPOSE 8010
# tendermint prometheus metrics
EXPOSE 26660
# tendermint profiler endpoint
EXPOSE 6060
# oracle app-side metrics
EXPOSE 26661

ENTRYPOINT ["dydxprotocold"]
2 changes: 1 addition & 1 deletion protocol/app/app.go
Original file line number Diff line number Diff line change
@@ -1471,7 +1471,7 @@ func (app *App) initOracle(appOpts servertypes.AppOptions, pricesTxDecoder proce
slinkyVoteExtensionsHandler := ve.NewVoteExtensionHandler(
app.Logger(),
app.oracleClient,
time.Second,
cfg.ClientTimeout,
currencypair.NewDefaultCurrencyPairStrategy(app.PricesKeeper),
compression.NewCompressionVoteExtensionCodec(
compression.NewDefaultVoteExtensionCodec(),
8 changes: 4 additions & 4 deletions protocol/app/prepare/prepare_proposal_test.go
Original file line number Diff line number Diff line change
@@ -27,7 +27,7 @@ import (
strategymock "github.com/skip-mev/slinky/abci/strategies/currencypair/mocks"
slinkytestutils "github.com/skip-mev/slinky/abci/testutils"
vetypes "github.com/skip-mev/slinky/abci/ve/types"
oracletypes "github.com/skip-mev/slinky/x/oracle/types"
slinkytypes "github.com/skip-mev/slinky/pkg/types"
"github.com/stretchr/testify/mock"
"github.com/stretchr/testify/require"
"math/big"
@@ -583,8 +583,8 @@ func TestSlinkyPrepareProposalHandler(t *testing.T) {
extCommitBz, err := extCommitCodec.Encode(extCommit)
require.NoError(t, err)

mogBtc := oracletypes.NewCurrencyPair("MOG", "BTC")
tiaPepe := oracletypes.NewCurrencyPair("TIA", "PEPE")
mogBtc := slinkytypes.NewCurrencyPair("MOG", "BTC")
tiaPepe := slinkytypes.NewCurrencyPair("TIA", "PEPE")

aggMock.On("AggregateOracleVotes", ctx, []aggregator.Vote{
{
@@ -595,7 +595,7 @@ func TestSlinkyPrepareProposalHandler(t *testing.T) {
ConsAddress: validator2,
OracleVoteExtension: validator2ve,
},
}).Return(map[oracletypes.CurrencyPair]*big.Int{
}).Return(map[slinkytypes.CurrencyPair]*big.Int{
mogBtc: big.NewInt(100),
tiaPepe: big.NewInt(99),
}, nil)
Original file line number Diff line number Diff line change
@@ -11,7 +11,7 @@ import (
strategymock "github.com/skip-mev/slinky/abci/strategies/currencypair/mocks"
"github.com/skip-mev/slinky/abci/testutils"
vetypes "github.com/skip-mev/slinky/abci/ve/types"
oracletypes "github.com/skip-mev/slinky/x/oracle/types"
slinkytypes "github.com/skip-mev/slinky/pkg/types"
"github.com/stretchr/testify/suite"
"math/big"
"testing"
@@ -140,14 +140,14 @@ func (suite *SlinkyPriceUpdateGeneratorSuite) TestCurrencyPairConversionFails()
}
suite.veCodec.On("Decode", voteExtensionBz).Return(ve, nil)

mogBtc := oracletypes.NewCurrencyPair("MOG", "BTC")
mogBtc := slinkytypes.NewCurrencyPair("MOG", "BTC")
// expect an error from the vote-extension aggregator
suite.va.On("AggregateOracleVotes", ctx, []aggregator.Vote{
{
ConsAddress: sdk.ConsAddress(validator),
OracleVoteExtension: ve,
},
}).Return(map[oracletypes.CurrencyPair]*big.Int{
}).Return(map[slinkytypes.CurrencyPair]*big.Int{
mogBtc: big.NewInt(1),
}, nil)

@@ -191,15 +191,15 @@ func (suite *SlinkyPriceUpdateGeneratorSuite) TestValidMarketPriceUpdate() {
}
suite.veCodec.On("Decode", voteExtensionBz).Return(ve, nil)

mogBtc := oracletypes.NewCurrencyPair("MOG", "BTC")
pepeEth := oracletypes.NewCurrencyPair("PEPE", "ETH")
mogBtc := slinkytypes.NewCurrencyPair("MOG", "BTC")
pepeEth := slinkytypes.NewCurrencyPair("PEPE", "ETH")
// expect an error from the vote-extension aggregator
suite.va.On("AggregateOracleVotes", ctx, []aggregator.Vote{
{
ConsAddress: sdk.ConsAddress(validator),
OracleVoteExtension: ve,
},
}).Return(map[oracletypes.CurrencyPair]*big.Int{
}).Return(map[slinkytypes.CurrencyPair]*big.Int{
mogBtc: big.NewInt(1),
pepeEth: big.NewInt(2),
}, nil)
2 changes: 1 addition & 1 deletion protocol/app/process/market_prices.go
Original file line number Diff line number Diff line change
@@ -63,7 +63,7 @@ func (umpt *UpdateMarketPricesTx) Validate() error {
return getValidateBasicError(umpt.msg, err)
}

if err := umpt.pricesKeeper.PerformStatefulPriceUpdateValidation(umpt.ctx, umpt.msg, true); err != nil {
if err := umpt.pricesKeeper.PerformStatefulPriceUpdateValidation(umpt.ctx, umpt.msg, false); err != nil {
return err
}

30 changes: 18 additions & 12 deletions protocol/go.mod
Original file line number Diff line number Diff line change
@@ -34,8 +34,8 @@ require (
github.com/vektra/mockery/v2 v2.42.0
github.com/zyedidia/generic v1.0.0
golang.org/x/exp v0.0.0-20240103183307-be819d1f06fc
google.golang.org/genproto v0.0.0-20231211222908-989df2bf70f3 // indirect
google.golang.org/grpc v1.61.1
google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80 // indirect
google.golang.org/grpc v1.62.0
gopkg.in/DataDog/dd-trace-go.v1 v1.48.0
gopkg.in/typ.v4 v4.1.0
)
@@ -66,21 +66,21 @@ require (
github.com/pelletier/go-toml v1.9.5
github.com/rs/zerolog v1.32.0
github.com/shopspring/decimal v1.3.1
github.com/skip-mev/slinky v0.2.1-0.20240221163805-44b958a75ccd
github.com/skip-mev/slinky v0.2.1-0.20240222230743-6f4ae849150c
github.com/spf13/viper v1.18.2
go.uber.org/zap v1.26.0
google.golang.org/genproto/googleapis/api v0.0.0-20231212172506-995d672761c0
go.uber.org/zap v1.27.0
google.golang.org/genproto/googleapis/api v0.0.0-20240123012728-ef4313101c80
google.golang.org/protobuf v1.32.0
)

require (
4d63.com/gocheckcompilerdirectives v1.2.1 // indirect
4d63.com/gochecknoglobals v0.2.1 // indirect
cloud.google.com/go v0.110.10 // indirect
cloud.google.com/go v0.112.0 // indirect
cloud.google.com/go/compute v1.23.3 // indirect
cloud.google.com/go/compute/metadata v0.2.3 // indirect
cloud.google.com/go/iam v1.1.5 // indirect
cloud.google.com/go/storage v1.35.1 // indirect
cloud.google.com/go/storage v1.36.0 // indirect
cosmossdk.io/collections v0.4.0 // indirect
cosmossdk.io/depinject v1.0.0-alpha.4 // indirect
filippo.io/edwards25519 v1.0.0 // indirect
@@ -184,6 +184,8 @@ require (
github.com/go-critic/go-critic v0.11.1 // indirect
github.com/go-kit/kit v0.13.0 // indirect
github.com/go-logfmt/logfmt v0.6.0 // indirect
github.com/go-logr/logr v1.3.0 // indirect
github.com/go-logr/stdr v1.2.2 // indirect
github.com/go-ole/go-ole v1.2.6 // indirect
github.com/go-playground/locales v0.14.1 // indirect
github.com/go-playground/universal-translator v0.18.1 // indirect
@@ -268,7 +270,7 @@ require (
github.com/kisielk/errcheck v1.7.0 // indirect
github.com/kisielk/gotool v1.0.0 // indirect
github.com/kkHAIKE/contextcheck v1.1.4 // indirect
github.com/klauspost/compress v1.17.6 // indirect
github.com/klauspost/compress v1.17.7 // indirect
github.com/kr/pretty v0.3.1 // indirect
github.com/kr/text v0.2.0 // indirect
github.com/kulti/thelper v0.6.3 // indirect
@@ -384,22 +386,26 @@ require (
go-simpler.org/sloglint v0.4.0 // indirect
go.etcd.io/bbolt v1.3.8 // indirect
go.opencensus.io v0.24.0 // indirect
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.46.1 // indirect
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1 // indirect
go.opentelemetry.io/otel v1.21.0 // indirect
go.opentelemetry.io/otel/metric v1.21.0 // indirect
go.opentelemetry.io/otel/trace v1.21.0 // indirect
go.uber.org/multierr v1.11.0 // indirect
golang.org/x/crypto v0.19.0 // indirect
golang.org/x/exp/typeparams v0.0.0-20231219180239-dc181d75b848 // indirect
golang.org/x/mod v0.15.0 // indirect
golang.org/x/net v0.21.0 // indirect
golang.org/x/oauth2 v0.15.0 // indirect
golang.org/x/oauth2 v0.16.0 // indirect
golang.org/x/sync v0.6.0 // indirect
golang.org/x/sys v0.17.0 // indirect
golang.org/x/term v0.17.0 // indirect
golang.org/x/text v0.14.0 // indirect
golang.org/x/time v0.5.0 // indirect
golang.org/x/tools v0.18.0 // indirect
golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect
google.golang.org/api v0.153.0 // indirect
google.golang.org/api v0.155.0 // indirect
google.golang.org/appengine v1.6.8 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20231212172506-995d672761c0 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80 // indirect
gopkg.in/ini.v1 v1.67.0 // indirect
gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
69 changes: 45 additions & 24 deletions protocol/go.sum

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion protocol/go.work
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
go 1.22
toolchain go1.22.0

use ./testing/petri
use .
356 changes: 117 additions & 239 deletions protocol/go.work.sum

Large diffs are not rendered by default.

14 changes: 12 additions & 2 deletions protocol/testing/petri/config.go
Original file line number Diff line number Diff line change
@@ -24,9 +24,13 @@ const (
prefix = "dydx"
homeDir = "/petri-test"
appConfigPath = "config/app.toml"
oracleConfigPath = "oracle.toml"
cometConfigPath = "config/config.toml"
oracleConfigPath = "oracle.json"
marketConfigPath = "market.json"
oraclePort = "8080"
oracleMetricsPort = "8010"
appOracleMetricsPort = "26661"
cometProfilerPort = "6060"
envProviderType = "PETRI_LOAD_TEST_PROVIDER_TYPE"
envDigitalOceanAPIKey = "PETRI_LOAD_TEST_DIGITAL_OCEAN_API_KEY"
digitalOceanProviderType = "digitalocean"
@@ -63,7 +67,13 @@ func GetChainConfig() (petritypes.ChainConfig, error) {
UID: "1000",
GID: "1000",
},
SidecarArgs: []string{"slinky", "--oracle-config-path", "/etc/oracle.toml", "-host", "0.0.0.0", "-port", "8080"},
SidecarArgs: []string{
"slinky",
"--oracle-config-path", fmt.Sprintf("/etc/%s", oracleConfigPath),
"--market-config-path", fmt.Sprintf("/etc/%s", marketConfigPath),
"-host", "0.0.0.0",
"-port", "8080",
},
GasPrices: "0dv4tnt",
GasAdjustment: 1.5,
Bech32Prefix: prefix,
34 changes: 20 additions & 14 deletions protocol/testing/petri/go.mod
Original file line number Diff line number Diff line change
@@ -13,7 +13,7 @@ replace (
// Use dYdX fork of CometBFT
github.com/cometbft/cometbft => github.com/dydxprotocol/cometbft v0.38.3-0.20231204185009-5e6c4b6d67b8
// Use dYdX fork of Cosmos SDK
github.com/cosmos/cosmos-sdk => github.com/dydxprotocol/cosmos-sdk v0.50.4-0.20240126201553-f1da3a9865bb
github.com/cosmos/cosmos-sdk => github.com/dydxprotocol/cosmos-sdk v0.50.4-0.20240214225126-ba76b79cd4cf
)

replace (
@@ -40,20 +40,19 @@ require (
github.com/cosmos/ibc-go/v8 v8.0.0
github.com/dydxprotocol/v4-chain/protocol v0.0.0-00010101000000-000000000000
github.com/informalsystems/tm-load-test v1.3.0
github.com/pelletier/go-toml v1.9.5
github.com/skip-mev/petri/core/v2 v2.0.0-20240221203801-0baae3f8b6ef
github.com/skip-mev/petri/cosmos/v2 v2.0.0-20240221203801-0baae3f8b6ef
github.com/skip-mev/slinky v0.2.1-0.20240221163805-44b958a75ccd
github.com/skip-mev/slinky v0.2.1-0.20240222230743-6f4ae849150c
github.com/stretchr/testify v1.8.4
go.uber.org/zap v1.26.0
go.uber.org/zap v1.27.0
)

require (
cloud.google.com/go v0.110.10 // indirect
cloud.google.com/go v0.112.0 // indirect
cloud.google.com/go/compute v1.23.3 // indirect
cloud.google.com/go/compute/metadata v0.2.3 // indirect
cloud.google.com/go/iam v1.1.5 // indirect
cloud.google.com/go/storage v1.35.1 // indirect
cloud.google.com/go/storage v1.36.0 // indirect
cosmossdk.io/api v0.7.3 // indirect
cosmossdk.io/client/v2 v2.0.0-beta.1 // indirect
cosmossdk.io/collections v0.4.0 // indirect
@@ -140,6 +139,8 @@ require (
github.com/go-kit/kit v0.13.0 // indirect
github.com/go-kit/log v0.2.1 // indirect
github.com/go-logfmt/logfmt v0.6.0 // indirect
github.com/go-logr/logr v1.3.0 // indirect
github.com/go-logr/stdr v1.2.2 // indirect
github.com/go-ole/go-ole v1.2.6 // indirect
github.com/go-playground/locales v0.14.1 // indirect
github.com/go-playground/universal-translator v0.18.1 // indirect
@@ -197,7 +198,7 @@ require (
github.com/jcmturner/rpc/v2 v2.0.3 // indirect
github.com/jmespath/go-jmespath v0.4.0 // indirect
github.com/jmhodges/levigo v1.0.0 // indirect
github.com/klauspost/compress v1.17.6 // indirect
github.com/klauspost/compress v1.17.7 // indirect
github.com/kr/fs v0.1.0 // indirect
github.com/kr/pretty v0.3.1 // indirect
github.com/kr/text v0.2.0 // indirect
@@ -220,6 +221,7 @@ require (
github.com/oklog/run v1.1.0 // indirect
github.com/opencontainers/go-digest v1.0.0 // indirect
github.com/opencontainers/image-spec v1.1.0-rc2 // indirect
github.com/pelletier/go-toml v1.9.5 // indirect
github.com/pelletier/go-toml/v2 v2.1.1 // indirect
github.com/petermattis/goid v0.0.0-20230904192822-1876fd5063bc // indirect
github.com/pierrec/lz4/v4 v4.1.17 // indirect
@@ -263,25 +265,29 @@ require (
github.com/zyedidia/generic v1.0.0 // indirect
go.etcd.io/bbolt v1.3.8 // indirect
go.opencensus.io v0.24.0 // indirect
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.46.1 // indirect
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1 // indirect
go.opentelemetry.io/otel v1.21.0 // indirect
go.opentelemetry.io/otel/metric v1.21.0 // indirect
go.opentelemetry.io/otel/trace v1.21.0 // indirect
go.uber.org/multierr v1.11.0 // indirect
golang.org/x/crypto v0.19.0 // indirect
golang.org/x/exp v0.0.0-20240103183307-be819d1f06fc // indirect
golang.org/x/mod v0.15.0 // indirect
golang.org/x/net v0.21.0 // indirect
golang.org/x/oauth2 v0.15.0 // indirect
golang.org/x/oauth2 v0.16.0 // indirect
golang.org/x/sync v0.6.0 // indirect
golang.org/x/sys v0.17.0 // indirect
golang.org/x/term v0.17.0 // indirect
golang.org/x/text v0.14.0 // indirect
golang.org/x/time v0.5.0 // indirect
golang.org/x/tools v0.18.0 // indirect
golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2 // indirect
google.golang.org/api v0.153.0 // indirect
google.golang.org/api v0.155.0 // indirect
google.golang.org/appengine v1.6.8 // indirect
google.golang.org/genproto v0.0.0-20231211222908-989df2bf70f3 // indirect
google.golang.org/genproto/googleapis/api v0.0.0-20231212172506-995d672761c0 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20231212172506-995d672761c0 // indirect
google.golang.org/grpc v1.61.1 // indirect
google.golang.org/genproto v0.0.0-20240123012728-ef4313101c80 // indirect
google.golang.org/genproto/googleapis/api v0.0.0-20240123012728-ef4313101c80 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20240123012728-ef4313101c80 // indirect
google.golang.org/grpc v1.62.0 // indirect
google.golang.org/protobuf v1.32.0 // indirect
gopkg.in/DataDog/dd-trace-go.v1 v1.48.0 // indirect
gopkg.in/ini.v1 v1.67.0 // indirect
75 changes: 49 additions & 26 deletions protocol/testing/petri/go.sum

Large diffs are not rendered by default.

110 changes: 74 additions & 36 deletions protocol/testing/petri/suite.go
Original file line number Diff line number Diff line change
@@ -2,22 +2,24 @@ package petri

import (
"bytes"
"time"
"context"
"fmt"
"encoding/json"
"fmt"
"os"
"strings"
"text/template"
"time"

tmloadtest "github.com/informalsystems/tm-load-test/pkg/loadtest"
"github.com/pelletier/go-toml"
petritypes "github.com/skip-mev/petri/core/v2/types"
"github.com/skip-mev/petri/cosmos/v2/cosmosutil"
"github.com/skip-mev/petri/cosmos/v2/loadtest"
"github.com/stretchr/testify/suite"
"go.uber.org/zap"

"os/signal"
"syscall"

evidencemodule "cosmossdk.io/x/evidence"
feegrantmodule "cosmossdk.io/x/feegrant/module"
"cosmossdk.io/x/upgrade"
@@ -63,10 +65,9 @@ import (
"github.com/skip-mev/petri/core/v2/provider"
petrinode "github.com/skip-mev/petri/cosmos/v2/node"
oracleconfig "github.com/skip-mev/slinky/oracle/config"
slinkytypes "github.com/skip-mev/slinky/pkg/types"
"github.com/skip-mev/slinky/providers/websockets/gate"
oracletypes "github.com/skip-mev/slinky/x/oracle/types"
"os/signal"
"syscall"
mmtypes "github.com/skip-mev/slinky/x/marketmap/types"
)

const (
@@ -117,7 +118,7 @@ func (s *SlinkyIntegrationSuite) SetupSuite() {
}
}

func updateOracleConfig(oracle *provider.Task, cps []oracletypes.CurrencyPair) error {
func updateOracleConfig(oracle *provider.Task, cps []slinkytypes.CurrencyPair) error {
// get the current config
ctx := context.Background()
cfgBz, err := oracle.ReadFile(ctx, oracleConfigPath)
@@ -126,61 +127,83 @@ func updateOracleConfig(oracle *provider.Task, cps []oracletypes.CurrencyPair) e
}

// unmarshal into config
var cfg oracleconfig.OracleConfig
if err := toml.Unmarshal(cfgBz, &cfg); err != nil {
var oracleCfg oracleconfig.OracleConfig
if err := json.Unmarshal(cfgBz, &oracleCfg); err != nil {
return err
}

cfg.Metrics = oracleconfig.MetricsConfig{
oracleCfg.Metrics = oracleconfig.MetricsConfig{
Enabled: true,
PrometheusServerAddress: fmt.Sprintf("%s:%s", "0.0.0.0", oracleMetricsPort),
}
cfg.Production = true
cfg.UpdateInterval = 1 * time.Second
cfg.MaxPriceAge = 2 * time.Minute
oracleCfg.Production = true
oracleCfg.UpdateInterval = 1 * time.Second
oracleCfg.MaxPriceAge = 2 * time.Minute

// update config for coingecko API
cfg.Providers = []oracleconfig.ProviderConfig{
oracleCfg.Providers = []oracleconfig.ProviderConfig{
{
Name: gate.Name,
WebSocket: gate.DefaultWebSocketConfig,
Market: oracleconfig.MarketConfig{
Name: gate.Name,
CurrencyPairToMarketConfigs: make(map[string]oracleconfig.CurrencyPairMarketConfig),
},
},
}

bz, err := json.Marshal(oracleCfg)
if err != nil {
return err
}

if err := oracle.WriteFile(ctx, oracleConfigPath, bz); err != nil {
return err
}

marketConfig := mmtypes.MarketMap{
Tickers: make(map[string]mmtypes.Ticker), // map of cp.String() -> Ticker
Paths: make(map[string]mmtypes.Paths), // map of cp.String() -> []Path
Providers: make(map[string]mmtypes.Providers), // map of cp.String() -> []Provider
}

// set the market-config in accordance with the given base/quote pairs
for _, cp := range cps {
cfg.Providers[0].Market.CurrencyPairToMarketConfigs[cp.String()] = oracleconfig.CurrencyPairMarketConfig{
Ticker: fmt.Sprintf("%s_%s", cp.Base, cp.Quote),
// create the ticker
marketConfig.Tickers[cp.String()] = mmtypes.Ticker{
CurrencyPair: cp,
MinProviderCount: 1,
Decimals: 8,
}

cfg.Market.Feeds[cp.String()] = oracleconfig.FeedConfig{
CurrencyPair: cp,
// create the paths
marketConfig.Paths[cp.String()] = mmtypes.Paths{
Paths: []mmtypes.Path{
{
Operations: []mmtypes.Operation{
{
CurrencyPair: cp,
},
},
},
},
}

cfg.Market.AggregatedFeeds[cp.String()] = oracleconfig.AggregateFeedConfig{
CurrencyPair: cp,
Conversions: []oracleconfig.Conversions{
// create the ticker config per provider
marketConfig.Providers[cp.String()] = mmtypes.Providers{
Providers: []mmtypes.ProviderConfig{
{
{
CurrencyPair: cp,
},
Name: gate.Name,
OffChainTicker: fmt.Sprintf("%s_%s", cp.Base, cp.Quote),
},
},
}
}

bz, err := toml.Marshal(cfg)
bz, err = json.Marshal(marketConfig)
if err != nil {
return err
}

if err := oracle.WriteFile(ctx, oracleConfigPath, bz); err != nil {
if err := oracle.WriteFile(ctx, marketConfigPath, bz); err != nil {
return err
}
}

// restart oracle
if err := oracle.Stop(ctx, true); err != nil {
@@ -200,6 +223,9 @@ func updateOracleConfigOnNode(node *petrinode.Node) error {

cfg.Oracle.OracleAddress = fmt.Sprintf("%s:%s", oracleHost, oraclePort)
cfg.MinGasPrices = fmt.Sprintf("0%s", denom)
cfg.Oracle.ClientTimeout = 10 * time.Second
cfg.Oracle.MetricsEnabled = true
cfg.Oracle.PrometheusServerAddress = fmt.Sprintf("%s:%s", "0.0.0.0", appOracleMetricsPort)

// create oracle template
tmpl, err := template.New("oracle").Parse(templateStr)
@@ -218,6 +244,18 @@ func updateOracleConfigOnNode(node *petrinode.Node) error {
return err
}

// update comet config
if err := node.ModifyTomlConfigFile(context.Background(), cometConfigPath, petrinode.Toml{
"rpc": petrinode.Toml{
"pprof_laddr": fmt.Sprintf("%s:%s", "0.0.0.0", cometProfilerPort),
},
"instrumentation": petrinode.Toml{
"prometheus": true,
},
}); err != nil {
return err
}

// restart the node
if err := node.Task.Stop(context.Background(), true); err != nil {
return err
@@ -277,7 +315,7 @@ func (s *SlinkyIntegrationSuite) TestSlinkyUnderLoad() {
endpoints = append(endpoints, fmt.Sprintf("%s/websocket", url))
}

cfg := tmloadtest.Config{
_ = tmloadtest.Config{
ClientFactory: "slinky",
Connections: 1,
Endpoints: endpoints,
@@ -289,8 +327,8 @@ func (s *SlinkyIntegrationSuite) TestSlinkyUnderLoad() {
BroadcastTxMethod: "async",
EndpointSelectMethod: "supplied",
}
err = tmloadtest.ExecuteStandalone(cfg)
s.Require().NoError(err)
// err = tmloadtest.ExecuteStandalone(cfg)
// s.Require().NoError(err)
}

func getModuleBasics() module.BasicManager {
@@ -354,14 +392,14 @@ func (s *SlinkyIntegrationSuite) genMsg(senderAddress []byte) ([]sdk.Msg, petrit
}, nil
}

func getAllCurrencyPairs() ([]oracletypes.CurrencyPair, error) {
func getAllCurrencyPairs() ([]slinkytypes.CurrencyPair, error) {
// read the json fixture for all currency-pairs to report for
file, err := os.ReadFile(marketsPath)
if err != nil {
return nil, err
}

var pairs []oracletypes.CurrencyPair
var pairs []slinkytypes.CurrencyPair
err = json.Unmarshal(file, &pairs)
if err != nil {
return nil, err
13 changes: 7 additions & 6 deletions protocol/x/prices/keeper/slinky_adapter.go
Original file line number Diff line number Diff line change
@@ -4,6 +4,7 @@ import (
"cosmossdk.io/math"
"fmt"
sdk "github.com/cosmos/cosmos-sdk/types"
slinkytypes "github.com/skip-mev/slinky/pkg/types"
oracletypes "github.com/skip-mev/slinky/x/oracle/types"
"strings"
)
@@ -16,7 +17,7 @@ import (
* store for converting to and from Slinky's on chain price data.
*/

func (k Keeper) GetCurrencyPairFromID(ctx sdk.Context, id uint64) (cp oracletypes.CurrencyPair, found bool) {
func (k Keeper) GetCurrencyPairFromID(ctx sdk.Context, id uint64) (cp slinkytypes.CurrencyPair, found bool) {
mp, found := k.GetMarketParam(ctx, uint32(id))
if !found {
return cp, false
@@ -29,7 +30,7 @@ func (k Keeper) GetCurrencyPairFromID(ctx sdk.Context, id uint64) (cp oracletype
return cp, true
}

func (k Keeper) GetIDForCurrencyPair(ctx sdk.Context, cp oracletypes.CurrencyPair) (uint64, bool) {
func (k Keeper) GetIDForCurrencyPair(ctx sdk.Context, cp slinkytypes.CurrencyPair) (uint64, bool) {
mps := k.GetAllMarketParams(ctx)
for _, mp := range mps {
mpCp, err := MarketPairToCurrencyPair(mp.Pair)
@@ -44,7 +45,7 @@ func (k Keeper) GetIDForCurrencyPair(ctx sdk.Context, cp oracletypes.CurrencyPai
return 0, false
}

func (k Keeper) GetPriceForCurrencyPair(ctx sdk.Context, cp oracletypes.CurrencyPair) (oracletypes.QuotePrice, error) {
func (k Keeper) GetPriceForCurrencyPair(ctx sdk.Context, cp slinkytypes.CurrencyPair) (oracletypes.QuotePrice, error) {
id, found := k.GetIDForCurrencyPair(ctx, cp)
if !found {
return oracletypes.QuotePrice{}, fmt.Errorf("currency pair %s not found", cp.String())
@@ -58,12 +59,12 @@ func (k Keeper) GetPriceForCurrencyPair(ctx sdk.Context, cp oracletypes.Currency
}, nil
}

func MarketPairToCurrencyPair(marketPair string) (oracletypes.CurrencyPair, error) {
func MarketPairToCurrencyPair(marketPair string) (slinkytypes.CurrencyPair, error) {
split := strings.Split(marketPair, "-")
if len(split) != 2 {
return oracletypes.CurrencyPair{}, fmt.Errorf("incorrectly formatted CurrencyPair: %s", marketPair)
return slinkytypes.CurrencyPair{}, fmt.Errorf("incorrectly formatted CurrencyPair: %s", marketPair)
}
cp := oracletypes.CurrencyPair{
cp := slinkytypes.CurrencyPair{
Base: strings.ToUpper(split[0]),
Quote: strings.ToUpper(split[1]),
}
14 changes: 7 additions & 7 deletions protocol/x/prices/keeper/slinky_adapter_test.go
Original file line number Diff line number Diff line change
@@ -4,7 +4,7 @@ import (
"fmt"
"testing"

oracletypes "github.com/skip-mev/slinky/x/oracle/types"
slinkytypes "github.com/skip-mev/slinky/pkg/types"
"github.com/stretchr/testify/require"

"github.com/dydxprotocol/v4-chain/protocol/testutil/constants"
@@ -39,15 +39,15 @@ func TestIDForCurrencyPair(t *testing.T) {
marketParams := keeper.GetAllMarketParams(ctx)
require.Equal(t, len(marketParams), marketNumber)
for i := 0; i < marketNumber; i++ {
pair := oracletypes.CurrencyPair{
pair := slinkytypes.CurrencyPair{
Base: fmt.Sprint(i),
Quote: fmt.Sprint(i),
}
id, found := keeper.GetIDForCurrencyPair(ctx, pair)
require.True(t, found)
require.Equal(t, uint64(i), id)
}
_, found := keeper.GetIDForCurrencyPair(ctx, oracletypes.CurrencyPair{
_, found := keeper.GetIDForCurrencyPair(ctx, slinkytypes.CurrencyPair{
Base: fmt.Sprint(marketNumber + 1),
Quote: fmt.Sprint(marketNumber + 1),
})
@@ -63,15 +63,15 @@ func TestGetPriceForCurrencyPair(t *testing.T) {
marketParams := keeper.GetAllMarketParams(ctx)
require.Equal(t, len(marketParams), marketNumber)
for i := 0; i < marketNumber; i++ {
pair := oracletypes.CurrencyPair{
pair := slinkytypes.CurrencyPair{
Base: fmt.Sprint(i),
Quote: fmt.Sprint(i),
}
price, err := keeper.GetPriceForCurrencyPair(ctx, pair)
require.NoError(t, err)
require.Equal(t, items[i].Price.Price, price.Price.Uint64())
}
_, err := keeper.GetPriceForCurrencyPair(ctx, oracletypes.CurrencyPair{
_, err := keeper.GetPriceForCurrencyPair(ctx, slinkytypes.CurrencyPair{
Base: fmt.Sprint(marketNumber + 1),
Quote: fmt.Sprint(marketNumber + 1),
})
@@ -97,10 +97,10 @@ func TestBadMarketData(t *testing.T) {
_, found := keeper.GetCurrencyPairFromID(ctx, uint64(0))
require.False(t, found)

_, found = keeper.GetIDForCurrencyPair(ctx, oracletypes.CurrencyPair{})
_, found = keeper.GetIDForCurrencyPair(ctx, slinkytypes.CurrencyPair{})
require.False(t, found)

_, err = keeper.GetPriceForCurrencyPair(ctx, oracletypes.CurrencyPair{})
_, err = keeper.GetPriceForCurrencyPair(ctx, slinkytypes.CurrencyPair{})
require.Error(t, err)
}

0 comments on commit f623ca8

Please sign in to comment.