From 330489d488eca505523b7bdaba6f142a7e5763cd Mon Sep 17 00:00:00 2001 From: Jay Yu <103467857+jayy04@users.noreply.github.com> Date: Mon, 3 Jun 2024 13:30:00 -0400 Subject: [PATCH 1/9] Add v6.0.0 upgrade handler --- protocol/app/upgrades.go | 16 ++++++---------- protocol/app/upgrades/v6.0.0/constants.go | 13 +++++++++++++ protocol/app/upgrades/v6.0.0/upgrade.go | 20 ++++++++++++++++++++ 3 files changed, 39 insertions(+), 10 deletions(-) create mode 100644 protocol/app/upgrades/v6.0.0/constants.go create mode 100644 protocol/app/upgrades/v6.0.0/upgrade.go diff --git a/protocol/app/upgrades.go b/protocol/app/upgrades.go index 5f3522879c..da110db9b8 100644 --- a/protocol/app/upgrades.go +++ b/protocol/app/upgrades.go @@ -3,7 +3,7 @@ package app import ( "fmt" - v5_0_0 "github.com/dydxprotocol/v4-chain/protocol/app/upgrades/v5.0.0" + v6_0_0 "github.com/dydxprotocol/v4-chain/protocol/app/upgrades/v6.0.0" upgradetypes "cosmossdk.io/x/upgrade/types" sdk "github.com/cosmos/cosmos-sdk/types" @@ -14,7 +14,7 @@ var ( // `Upgrades` defines the upgrade handlers and store loaders for the application. // New upgrades should be added to this slice after they are implemented. Upgrades = []upgrades.Upgrade{ - v5_0_0.Upgrade, + v6_0_0.Upgrade, } Forks = []upgrades.Fork{} ) @@ -22,19 +22,15 @@ var ( // setupUpgradeHandlers registers the upgrade handlers to perform custom upgrade // logic and state migrations for software upgrades. func (app *App) setupUpgradeHandlers() { - if app.UpgradeKeeper.HasHandler(v5_0_0.UpgradeName) { - panic(fmt.Sprintf("Cannot register duplicate upgrade handler '%s'", v5_0_0.UpgradeName)) + if app.UpgradeKeeper.HasHandler(v6_0_0.UpgradeName) { + panic(fmt.Sprintf("Cannot register duplicate upgrade handler '%s'", v6_0_0.UpgradeName)) } app.UpgradeKeeper.SetUpgradeHandler( - v5_0_0.UpgradeName, - v5_0_0.CreateUpgradeHandler( + v6_0_0.UpgradeName, + v6_0_0.CreateUpgradeHandler( app.ModuleManager, app.configurator, - app.PerpetualsKeeper, app.ClobKeeper, - app.SubaccountsKeeper, - app.ConsensusParamsKeeper, - app.VaultKeeper, ), ) } diff --git a/protocol/app/upgrades/v6.0.0/constants.go b/protocol/app/upgrades/v6.0.0/constants.go new file mode 100644 index 0000000000..9300e032da --- /dev/null +++ b/protocol/app/upgrades/v6.0.0/constants.go @@ -0,0 +1,13 @@ +package v_5_0_0 + +import ( + "github.com/dydxprotocol/v4-chain/protocol/app/upgrades" +) + +const ( + UpgradeName = "v6.0.0" +) + +var Upgrade = upgrades.Upgrade{ + UpgradeName: UpgradeName, +} diff --git a/protocol/app/upgrades/v6.0.0/upgrade.go b/protocol/app/upgrades/v6.0.0/upgrade.go new file mode 100644 index 0000000000..a49521895d --- /dev/null +++ b/protocol/app/upgrades/v6.0.0/upgrade.go @@ -0,0 +1,20 @@ +package v_5_0_0 + +import ( + "context" + + clobtypes "github.com/dydxprotocol/v4-chain/protocol/x/clob/types" + + upgradetypes "cosmossdk.io/x/upgrade/types" + "github.com/cosmos/cosmos-sdk/types/module" +) + +func CreateUpgradeHandler( + mm *module.Manager, + configurator module.Configurator, + clobKeeper clobtypes.ClobKeeper, +) upgradetypes.UpgradeHandler { + return func(ctx context.Context, plan upgradetypes.Plan, vm module.VersionMap) (module.VersionMap, error) { + return mm.RunMigrations(ctx, configurator, vm) + } +} From bff8a161794e2f60348b7c219c71cace4902cdaf Mon Sep 17 00:00:00 2001 From: Jay Yu <103467857+jayy04@users.noreply.github.com> Date: Mon, 3 Jun 2024 13:31:24 -0400 Subject: [PATCH 2/9] update package name --- protocol/app/upgrades/v6.0.0/constants.go | 2 +- protocol/app/upgrades/v6.0.0/upgrade.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/protocol/app/upgrades/v6.0.0/constants.go b/protocol/app/upgrades/v6.0.0/constants.go index 9300e032da..197eafa2be 100644 --- a/protocol/app/upgrades/v6.0.0/constants.go +++ b/protocol/app/upgrades/v6.0.0/constants.go @@ -1,4 +1,4 @@ -package v_5_0_0 +package v_6_0_0 import ( "github.com/dydxprotocol/v4-chain/protocol/app/upgrades" diff --git a/protocol/app/upgrades/v6.0.0/upgrade.go b/protocol/app/upgrades/v6.0.0/upgrade.go index a49521895d..ff8448f473 100644 --- a/protocol/app/upgrades/v6.0.0/upgrade.go +++ b/protocol/app/upgrades/v6.0.0/upgrade.go @@ -1,4 +1,4 @@ -package v_5_0_0 +package v_6_0_0 import ( "context" From 781d3eabd53674c2cce045bde1d9ca0c2c69006f Mon Sep 17 00:00:00 2001 From: Jay Yu <103467857+jayy04@users.noreply.github.com> Date: Tue, 4 Jun 2024 09:43:00 -0400 Subject: [PATCH 3/9] fix container test --- protocol/testing/containertest/testnet.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/protocol/testing/containertest/testnet.go b/protocol/testing/containertest/testnet.go index 8e036476c3..192c7bdb01 100644 --- a/protocol/testing/containertest/testnet.go +++ b/protocol/testing/containertest/testnet.go @@ -25,7 +25,7 @@ const persistentPeers = "17e5e45691f0d01449c84fd4ae87279578cdd7ec@testnet-local- const resourceLifetimeSecs = 600 // The version of that we're upgrading to (aka the current commit) -const UpgradeToVersion = "v5.0.0" +const UpgradeToVersion = "v6.0.0" func monikers() map[string]string { return map[string]string{ From c562a722f31dfac8d5f371690d69df66d2eee71d Mon Sep 17 00:00:00 2001 From: Jay Yu <103467857+jayy04@users.noreply.github.com> Date: Tue, 4 Jun 2024 10:26:51 -0400 Subject: [PATCH 4/9] move upgrade container test --- .../upgrades/v5.0.0/upgrade_container_test.go | 362 ------------------ .../upgrades/v6.0.0/upgrade_container_test.go | 187 +++++++++ 2 files changed, 187 insertions(+), 362 deletions(-) delete mode 100644 protocol/app/upgrades/v5.0.0/upgrade_container_test.go create mode 100644 protocol/app/upgrades/v6.0.0/upgrade_container_test.go diff --git a/protocol/app/upgrades/v5.0.0/upgrade_container_test.go b/protocol/app/upgrades/v5.0.0/upgrade_container_test.go deleted file mode 100644 index 065f40701d..0000000000 --- a/protocol/app/upgrades/v5.0.0/upgrade_container_test.go +++ /dev/null @@ -1,362 +0,0 @@ -//go:build all || container_test - -package v_5_0_0_test - -import ( - "testing" - - consensus "github.com/cosmos/cosmos-sdk/x/consensus/types" - "github.com/cosmos/gogoproto/proto" - v_5_0_0 "github.com/dydxprotocol/v4-chain/protocol/app/upgrades/v5.0.0" - "github.com/dydxprotocol/v4-chain/protocol/dtypes" - "github.com/dydxprotocol/v4-chain/protocol/testing/containertest" - "github.com/dydxprotocol/v4-chain/protocol/testutil/constants" - clobtypes "github.com/dydxprotocol/v4-chain/protocol/x/clob/types" - perpetuals "github.com/dydxprotocol/v4-chain/protocol/x/perpetuals/types" - satypes "github.com/dydxprotocol/v4-chain/protocol/x/subaccounts/types" - vaulttypes "github.com/dydxprotocol/v4-chain/protocol/x/vault/types" - "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/require" -) - -const ( - AliceBobBTCQuantums = 1_000_000 - CarlDaveBTCQuantums = 2_000_000 - CarlDaveETHQuantums = 4_000_000 -) - -func TestStateUpgrade(t *testing.T) { - testnet, err := containertest.NewTestnetWithPreupgradeGenesis() - require.NoError(t, err, "failed to create testnet - is docker daemon running?") - err = testnet.Start() - require.NoError(t, err) - defer testnet.MustCleanUp() - node := testnet.Nodes["alice"] - nodeAddress := constants.AliceAccAddress.String() - - preUpgradeSetups(node, t) - preUpgradeChecks(node, t) - - err = containertest.UpgradeTestnet(nodeAddress, t, node, v_5_0_0.UpgradeName) - require.NoError(t, err) - - postUpgradeChecks(node, t) -} - -func preUpgradeSetups(node *containertest.Node, t *testing.T) { - placeOrders(node, t) -} - -func preUpgradeChecks(node *containertest.Node, t *testing.T) { - preUpgradeCheckPerpetualMarketType(node, t) - preUpgradeCheckVoteExtensions(node, t) - // Add test for your upgrade handler logic below -} - -func postUpgradeChecks(node *containertest.Node, t *testing.T) { - postUpgradecheckPerpetualMarketType(node, t) - postUpgradeCheckLiquidityTiers(node, t) - postUpgradePerpetualOIs(node, t) - postUpgradeCheckVoteExtensions(node, t) - postUpgradeCheckVaultParams(node, t) - // Add test for your upgrade handler logic below -} - -func preUpgradeCheckVoteExtensions(node *containertest.Node, t *testing.T) { - consensusParams := &consensus.QueryParamsResponse{} - resp, err := containertest.Query( - node, - consensus.NewQueryClient, - consensus.QueryClient.Params, - &consensus.QueryParamsRequest{}, - ) - require.NoError(t, err) - err = proto.UnmarshalText(resp.String(), consensusParams) - require.NoError(t, err) - assert.Equal(t, int64(0), consensusParams.Params.Abci.VoteExtensionsEnableHeight) -} - -func placeOrders(node *containertest.Node, t *testing.T) { - require.NoError(t, containertest.BroadcastTx( - node, - &clobtypes.MsgPlaceOrder{ - Order: clobtypes.Order{ - OrderId: clobtypes.OrderId{ - ClientId: 0, - SubaccountId: satypes.SubaccountId{ - Owner: constants.AliceAccAddress.String(), - Number: 0, - }, - ClobPairId: 0, - }, - Side: clobtypes.Order_SIDE_BUY, - Quantums: AliceBobBTCQuantums, - Subticks: 5_000_000, - GoodTilOneof: &clobtypes.Order_GoodTilBlock{ - GoodTilBlock: 20, - }, - }, - }, - constants.AliceAccAddress.String(), - )) - require.NoError(t, containertest.BroadcastTx( - node, - &clobtypes.MsgPlaceOrder{ - Order: clobtypes.Order{ - OrderId: clobtypes.OrderId{ - ClientId: 0, - SubaccountId: satypes.SubaccountId{ - Owner: constants.BobAccAddress.String(), - Number: 0, - }, - ClobPairId: 0, - }, - Side: clobtypes.Order_SIDE_SELL, - Quantums: AliceBobBTCQuantums, - Subticks: 5_000_000, - GoodTilOneof: &clobtypes.Order_GoodTilBlock{ - GoodTilBlock: 20, - }, - }, - }, - constants.BobAccAddress.String(), - )) - require.NoError(t, containertest.BroadcastTx( - node, - &clobtypes.MsgPlaceOrder{ - Order: clobtypes.Order{ - OrderId: clobtypes.OrderId{ - ClientId: 0, - SubaccountId: satypes.SubaccountId{ - Owner: constants.CarlAccAddress.String(), - Number: 0, - }, - ClobPairId: 0, - }, - Side: clobtypes.Order_SIDE_BUY, - Quantums: CarlDaveBTCQuantums, - Subticks: 5_000_000, - GoodTilOneof: &clobtypes.Order_GoodTilBlock{ - GoodTilBlock: 20, - }, - }, - }, - constants.CarlAccAddress.String(), - )) - require.NoError(t, containertest.BroadcastTx( - node, - &clobtypes.MsgPlaceOrder{ - Order: clobtypes.Order{ - OrderId: clobtypes.OrderId{ - ClientId: 0, - SubaccountId: satypes.SubaccountId{ - Owner: constants.DaveAccAddress.String(), - Number: 0, - }, - ClobPairId: 0, - }, - Side: clobtypes.Order_SIDE_SELL, - Quantums: CarlDaveBTCQuantums, - Subticks: 5_000_000, - GoodTilOneof: &clobtypes.Order_GoodTilBlock{ - GoodTilBlock: 20, - }, - }, - }, - constants.DaveAccAddress.String(), - )) - require.NoError(t, containertest.BroadcastTx( - node, - &clobtypes.MsgPlaceOrder{ - Order: clobtypes.Order{ - OrderId: clobtypes.OrderId{ - ClientId: 0, - SubaccountId: satypes.SubaccountId{ - Owner: constants.CarlAccAddress.String(), - Number: 0, - }, - ClobPairId: 1, - }, - Side: clobtypes.Order_SIDE_BUY, - Quantums: CarlDaveETHQuantums, - Subticks: 5_000_000, - GoodTilOneof: &clobtypes.Order_GoodTilBlock{ - GoodTilBlock: 20, - }, - }, - }, - constants.CarlAccAddress.String(), - )) - require.NoError(t, containertest.BroadcastTx( - node, - &clobtypes.MsgPlaceOrder{ - Order: clobtypes.Order{ - OrderId: clobtypes.OrderId{ - ClientId: 0, - SubaccountId: satypes.SubaccountId{ - Owner: constants.DaveAccAddress.String(), - Number: 0, - }, - ClobPairId: 1, - }, - Side: clobtypes.Order_SIDE_SELL, - Quantums: CarlDaveETHQuantums, - Subticks: 5_000_000, - GoodTilOneof: &clobtypes.Order_GoodTilBlock{ - GoodTilBlock: 20, - }, - }, - }, - constants.DaveAccAddress.String(), - )) - err := node.Wait(2) - require.NoError(t, err) -} - -func preUpgradeCheckPerpetualMarketType(node *containertest.Node, t *testing.T) { - perpetualsList := &perpetuals.QueryAllPerpetualsResponse{} - resp, err := containertest.Query( - node, - perpetuals.NewQueryClient, - perpetuals.QueryClient.AllPerpetuals, - &perpetuals.QueryAllPerpetualsRequest{}, - ) - require.NoError(t, err) - err = proto.UnmarshalText(resp.String(), perpetualsList) - require.NoError(t, err) - for _, perpetual := range perpetualsList.Perpetual { - assert.Equal(t, perpetuals.PerpetualMarketType_PERPETUAL_MARKET_TYPE_UNSPECIFIED, perpetual.Params.MarketType) - } -} - -func postUpgradeCheckVoteExtensions(node *containertest.Node, t *testing.T) { - consensusParams := &consensus.QueryParamsResponse{} - resp, err := containertest.Query( - node, - consensus.NewQueryClient, - consensus.QueryClient.Params, - &consensus.QueryParamsRequest{}, - ) - require.NoError(t, err) - err = proto.UnmarshalText(resp.String(), consensusParams) - require.NoError(t, err) - // testnet_utils.go::UpgradeTesnet has a Plan for upgrading on height 10 - assert.Equal(t, int64(10)+v_5_0_0.VEEnableHeightDelta, consensusParams.Params.Abci.VoteExtensionsEnableHeight) -} - -func postUpgradecheckPerpetualMarketType(node *containertest.Node, t *testing.T) { - perpetualsList := &perpetuals.QueryAllPerpetualsResponse{} - resp, err := containertest.Query( - node, - perpetuals.NewQueryClient, - perpetuals.QueryClient.AllPerpetuals, - &perpetuals.QueryAllPerpetualsRequest{}, - ) - require.NoError(t, err) - err = proto.UnmarshalText(resp.String(), perpetualsList) - require.NoError(t, err) - for _, perpetual := range perpetualsList.Perpetual { - assert.Equal(t, perpetuals.PerpetualMarketType_PERPETUAL_MARKET_TYPE_CROSS, perpetual.Params.MarketType) - } -} - -func postUpgradePerpetualOIs(node *containertest.Node, t *testing.T) { - resp, err := containertest.Query( - node, - perpetuals.NewQueryClient, - perpetuals.QueryClient.AllPerpetuals, - &perpetuals.QueryAllPerpetualsRequest{}, - ) - require.NoError(t, err) - - allPerpsResp := &perpetuals.QueryAllPerpetualsResponse{} - err = proto.UnmarshalText(resp.String(), allPerpsResp) - require.NoError(t, err) - - for _, perp := range allPerpsResp.Perpetual { - expectedOI := 0 - if perp.Params.Id == 0 { - expectedOI = AliceBobBTCQuantums + CarlDaveBTCQuantums - } else if perp.Params.Id == 1 { - expectedOI = CarlDaveETHQuantums - } - assert.Equalf(t, - dtypes.NewInt(int64(expectedOI)), - perp.OpenInterest, - "expected: %v, got: %v", - dtypes.NewInt(int64(expectedOI)), - perp.OpenInterest, - ) - } -} - -func postUpgradeCheckLiquidityTiers(node *containertest.Node, t *testing.T) { - resp, err := containertest.Query( - node, - perpetuals.NewQueryClient, - perpetuals.QueryClient.AllLiquidityTiers, - &perpetuals.QueryAllLiquidityTiersRequest{}, - ) - require.NoError(t, err) - - liquidityTiersResponse := &perpetuals.QueryAllLiquidityTiersResponse{} - err = proto.UnmarshalText(resp.String(), liquidityTiersResponse) - require.NoError(t, err) - - assert.Equal(t, 4, len(liquidityTiersResponse.LiquidityTiers)) - assert.Equal(t, perpetuals.LiquidityTier{ - Id: 0, - Name: "Large-Cap", - InitialMarginPpm: 50_000, - MaintenanceFractionPpm: 600_000, - ImpactNotional: 10_000_000_000, - OpenInterestLowerCap: uint64(0), - OpenInterestUpperCap: uint64(0), - }, liquidityTiersResponse.LiquidityTiers[0]) - - assert.Equal(t, perpetuals.LiquidityTier{ - Id: 1, - Name: "Mid-Cap", - InitialMarginPpm: 100_000, - MaintenanceFractionPpm: 500_000, - ImpactNotional: 5_000_000_000, - OpenInterestLowerCap: uint64(20_000_000_000_000), - OpenInterestUpperCap: uint64(50_000_000_000_000), - }, liquidityTiersResponse.LiquidityTiers[1]) - - assert.Equal(t, perpetuals.LiquidityTier{ - Id: 2, - Name: "Long-Tail", - InitialMarginPpm: 200_000, - MaintenanceFractionPpm: 500_000, - ImpactNotional: 2_500_000_000, - OpenInterestLowerCap: uint64(5_000_000_000_000), - OpenInterestUpperCap: uint64(10_000_000_000_000), - }, liquidityTiersResponse.LiquidityTiers[2]) - - assert.Equal(t, perpetuals.LiquidityTier{ - Id: 3, - Name: "Safety", - InitialMarginPpm: 1_000_000, - MaintenanceFractionPpm: 200_000, - ImpactNotional: 2_500_000_000, - OpenInterestLowerCap: uint64(2_000_000_000_000), - OpenInterestUpperCap: uint64(5_000_000_000_000), - }, liquidityTiersResponse.LiquidityTiers[3]) -} - -func postUpgradeCheckVaultParams(node *containertest.Node, t *testing.T) { - resp, err := containertest.Query( - node, - vaulttypes.NewQueryClient, - vaulttypes.QueryClient.Params, - &vaulttypes.QueryParamsRequest{}, - ) - require.NoError(t, err) - - paramsResponse := &vaulttypes.QueryParamsResponse{} - err = proto.UnmarshalText(resp.String(), paramsResponse) - require.NoError(t, err) - - assert.Equal(t, vaulttypes.DefaultParams(), paramsResponse.Params) -} diff --git a/protocol/app/upgrades/v6.0.0/upgrade_container_test.go b/protocol/app/upgrades/v6.0.0/upgrade_container_test.go new file mode 100644 index 0000000000..49caef9c01 --- /dev/null +++ b/protocol/app/upgrades/v6.0.0/upgrade_container_test.go @@ -0,0 +1,187 @@ +//go:build all || container_test + +package v_6_0_0_test + +import ( + "testing" + + v_6_0_0 "github.com/dydxprotocol/v4-chain/protocol/app/upgrades/v6.0.0" + "github.com/dydxprotocol/v4-chain/protocol/testing/containertest" + "github.com/dydxprotocol/v4-chain/protocol/testutil/constants" + clobtypes "github.com/dydxprotocol/v4-chain/protocol/x/clob/types" + satypes "github.com/dydxprotocol/v4-chain/protocol/x/subaccounts/types" + "github.com/stretchr/testify/require" +) + +const ( + AliceBobBTCQuantums = 1_000_000 + CarlDaveBTCQuantums = 2_000_000 + CarlDaveETHQuantums = 4_000_000 +) + +func TestStateUpgrade(t *testing.T) { + testnet, err := containertest.NewTestnetWithPreupgradeGenesis() + require.NoError(t, err, "failed to create testnet - is docker daemon running?") + err = testnet.Start() + require.NoError(t, err) + defer testnet.MustCleanUp() + node := testnet.Nodes["alice"] + nodeAddress := constants.AliceAccAddress.String() + + preUpgradeSetups(node, t) + preUpgradeChecks(node, t) + + err = containertest.UpgradeTestnet(nodeAddress, t, node, v_6_0_0.UpgradeName) + require.NoError(t, err) + + postUpgradeChecks(node, t) +} + +func preUpgradeSetups(node *containertest.Node, t *testing.T) { + placeOrders(node, t) +} + +func preUpgradeChecks(node *containertest.Node, t *testing.T) { + // Add test for your upgrade handler logic below +} + +func postUpgradeChecks(node *containertest.Node, t *testing.T) { + // Add test for your upgrade handler logic below +} + +func placeOrders(node *containertest.Node, t *testing.T) { + require.NoError(t, containertest.BroadcastTx( + node, + &clobtypes.MsgPlaceOrder{ + Order: clobtypes.Order{ + OrderId: clobtypes.OrderId{ + ClientId: 0, + SubaccountId: satypes.SubaccountId{ + Owner: constants.AliceAccAddress.String(), + Number: 0, + }, + ClobPairId: 0, + }, + Side: clobtypes.Order_SIDE_BUY, + Quantums: AliceBobBTCQuantums, + Subticks: 5_000_000, + GoodTilOneof: &clobtypes.Order_GoodTilBlock{ + GoodTilBlock: 20, + }, + }, + }, + constants.AliceAccAddress.String(), + )) + require.NoError(t, containertest.BroadcastTx( + node, + &clobtypes.MsgPlaceOrder{ + Order: clobtypes.Order{ + OrderId: clobtypes.OrderId{ + ClientId: 0, + SubaccountId: satypes.SubaccountId{ + Owner: constants.BobAccAddress.String(), + Number: 0, + }, + ClobPairId: 0, + }, + Side: clobtypes.Order_SIDE_SELL, + Quantums: AliceBobBTCQuantums, + Subticks: 5_000_000, + GoodTilOneof: &clobtypes.Order_GoodTilBlock{ + GoodTilBlock: 20, + }, + }, + }, + constants.BobAccAddress.String(), + )) + require.NoError(t, containertest.BroadcastTx( + node, + &clobtypes.MsgPlaceOrder{ + Order: clobtypes.Order{ + OrderId: clobtypes.OrderId{ + ClientId: 0, + SubaccountId: satypes.SubaccountId{ + Owner: constants.CarlAccAddress.String(), + Number: 0, + }, + ClobPairId: 0, + }, + Side: clobtypes.Order_SIDE_BUY, + Quantums: CarlDaveBTCQuantums, + Subticks: 5_000_000, + GoodTilOneof: &clobtypes.Order_GoodTilBlock{ + GoodTilBlock: 20, + }, + }, + }, + constants.CarlAccAddress.String(), + )) + require.NoError(t, containertest.BroadcastTx( + node, + &clobtypes.MsgPlaceOrder{ + Order: clobtypes.Order{ + OrderId: clobtypes.OrderId{ + ClientId: 0, + SubaccountId: satypes.SubaccountId{ + Owner: constants.DaveAccAddress.String(), + Number: 0, + }, + ClobPairId: 0, + }, + Side: clobtypes.Order_SIDE_SELL, + Quantums: CarlDaveBTCQuantums, + Subticks: 5_000_000, + GoodTilOneof: &clobtypes.Order_GoodTilBlock{ + GoodTilBlock: 20, + }, + }, + }, + constants.DaveAccAddress.String(), + )) + require.NoError(t, containertest.BroadcastTx( + node, + &clobtypes.MsgPlaceOrder{ + Order: clobtypes.Order{ + OrderId: clobtypes.OrderId{ + ClientId: 0, + SubaccountId: satypes.SubaccountId{ + Owner: constants.CarlAccAddress.String(), + Number: 0, + }, + ClobPairId: 1, + }, + Side: clobtypes.Order_SIDE_BUY, + Quantums: CarlDaveETHQuantums, + Subticks: 5_000_000, + GoodTilOneof: &clobtypes.Order_GoodTilBlock{ + GoodTilBlock: 20, + }, + }, + }, + constants.CarlAccAddress.String(), + )) + require.NoError(t, containertest.BroadcastTx( + node, + &clobtypes.MsgPlaceOrder{ + Order: clobtypes.Order{ + OrderId: clobtypes.OrderId{ + ClientId: 0, + SubaccountId: satypes.SubaccountId{ + Owner: constants.DaveAccAddress.String(), + Number: 0, + }, + ClobPairId: 1, + }, + Side: clobtypes.Order_SIDE_SELL, + Quantums: CarlDaveETHQuantums, + Subticks: 5_000_000, + GoodTilOneof: &clobtypes.Order_GoodTilBlock{ + GoodTilBlock: 20, + }, + }, + }, + constants.DaveAccAddress.String(), + )) + err := node.Wait(2) + require.NoError(t, err) +} From 4845da2ebc86615f2eb5a3474639d11e6462422b Mon Sep 17 00:00:00 2001 From: Jay Yu <103467857+jayy04@users.noreply.github.com> Date: Wed, 5 Jun 2024 10:28:45 -0400 Subject: [PATCH 5/9] update version --- protocol/testing/containertest/containertest.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/protocol/testing/containertest/containertest.sh b/protocol/testing/containertest/containertest.sh index d64459628a..6f04efe3e8 100755 --- a/protocol/testing/containertest/containertest.sh +++ b/protocol/testing/containertest/containertest.sh @@ -7,7 +7,7 @@ set -eo pipefail source "./genesis.sh" CHAIN_ID="localdydxprotocol" -PREUPGRADE_VERSION="v4.1.0" +PREUPGRADE_VERSION="v5.0.0" # Define mnemonics for all validators. MNEMONICS=( From d0abf579a5087ddf873b5f75c183192e1417dfd3 Mon Sep 17 00:00:00 2001 From: Jay Yu <103467857+jayy04@users.noreply.github.com> Date: Wed, 5 Jun 2024 12:48:08 -0400 Subject: [PATCH 6/9] add errors --- protocol/testing/containertest/testnet.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/protocol/testing/containertest/testnet.go b/protocol/testing/containertest/testnet.go index 192c7bdb01..c38e2f9d35 100644 --- a/protocol/testing/containertest/testnet.go +++ b/protocol/testing/containertest/testnet.go @@ -118,7 +118,11 @@ func (t *Testnet) initialize() (err error) { if err := t.pool.Retry(func() error { return node.WaitUntilBlockHeight(2) }); err != nil { - return fmt.Errorf("could not connect to node: %s", moniker) + return fmt.Errorf( + "could not connect to node: %s, %+v", + moniker, + err, + ) } } return nil From f1a523af3e689b46c9fd8b855a025aca510b91bd Mon Sep 17 00:00:00 2001 From: Jay Yu <103467857+jayy04@users.noreply.github.com> Date: Wed, 5 Jun 2024 14:14:47 -0400 Subject: [PATCH 7/9] update pre upgrade genesis --- .../testing/containertest/preupgrade_genesis.json | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/protocol/testing/containertest/preupgrade_genesis.json b/protocol/testing/containertest/preupgrade_genesis.json index df7a3768ec..a8b520d7f5 100644 --- a/protocol/testing/containertest/preupgrade_genesis.json +++ b/protocol/testing/containertest/preupgrade_genesis.json @@ -2212,6 +2212,17 @@ "total_escrowed": [] }, "upgrade": {}, + "vault": { + "params": { + "activation_threshold_quote_quantums": "1000000000", + "layers": 2, + "order_expiration_seconds": 2, + "order_size_pct_ppm": 100000, + "skew_factor_ppm": 2000000, + "spread_buffer_ppm": 1500, + "spread_min_ppm": 10000 + } + }, "vest": { "vest_entries": [ { From 2701cbe424f83ddc153da33bea8a2f19019dc875 Mon Sep 17 00:00:00 2001 From: Jay Yu <103467857+jayy04@users.noreply.github.com> Date: Wed, 5 Jun 2024 14:30:15 -0400 Subject: [PATCH 8/9] fix lint --- protocol/testing/containertest/testnet.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/protocol/testing/containertest/testnet.go b/protocol/testing/containertest/testnet.go index c38e2f9d35..4d83280c56 100644 --- a/protocol/testing/containertest/testnet.go +++ b/protocol/testing/containertest/testnet.go @@ -119,7 +119,7 @@ func (t *Testnet) initialize() (err error) { return node.WaitUntilBlockHeight(2) }); err != nil { return fmt.Errorf( - "could not connect to node: %s, %+v", + "could not connect to node: %s, %w", moniker, err, ) From c04118ad6c053e64f159f9feec4453b37a5f90ca Mon Sep 17 00:00:00 2001 From: Jay Yu <103467857+jayy04@users.noreply.github.com> Date: Wed, 5 Jun 2024 15:34:32 -0400 Subject: [PATCH 9/9] add new pre upgrade genesis --- .../containertest/preupgrade_genesis.json | 1410 +++++++++-------- 1 file changed, 751 insertions(+), 659 deletions(-) diff --git a/protocol/testing/containertest/preupgrade_genesis.json b/protocol/testing/containertest/preupgrade_genesis.json index a8b520d7f5..25c240d5a4 100644 --- a/protocol/testing/containertest/preupgrade_genesis.json +++ b/protocol/testing/containertest/preupgrade_genesis.json @@ -1,6 +1,6 @@ { "app_name": "dydxprotocold", - "app_version": "4.0.0-rc3", + "app_version": "5.0.1", "genesis_time": "2023-01-01T00:00:00Z", "chain_id": "localdydxprotocol", "initial_height": 1, @@ -9,13 +9,13 @@ "assets": { "assets": [ { - "atomic_resolution": -6, + "id": 0, + "symbol": "USDC", "denom": "ibc/8E27BA2D5493AF5636760E354E46004562C46AB7EC0CC4C1CA14E9E20E2545B5", "denom_exponent": "-6", "has_market": false, - "id": 0, "market_id": 0, - "symbol": "USDC" + "atomic_resolution": -6 } ] }, @@ -202,24 +202,24 @@ } }, "bridge": { - "acknowledged_event_info": { - "eth_block_height": 4322136, - "next_id": 5 - }, "event_params": { "denom": "adv4tnt", - "eth_address": "0xf75012c350e4ad55be2048bd67ce6e03b20de82d", - "eth_chain_id": 11155111 + "eth_chain_id": 11155111, + "eth_address": "0xf75012c350e4ad55be2048bd67ce6e03b20de82d" }, "propose_params": { "max_bridges_per_block": 10, "propose_delay_duration": "60s", - "skip_if_block_delayed_by_duration": "5s", - "skip_rate_ppm": 800000 + "skip_rate_ppm": 800000, + "skip_if_block_delayed_by_duration": "5s" }, "safety_params": { - "delay_blocks": 86400, - "is_disabled": false + "is_disabled": false, + "delay_blocks": 30 + }, + "acknowledged_event_info": { + "next_id": 5, + "eth_block_height": 4322136 } }, "capability": { @@ -227,362 +227,383 @@ "owners": [] }, "clob": { - "block_rate_limit_config": { - "max_short_term_order_cancellations_per_n_blocks": [ - { - "limit": 200, - "num_blocks": 1 - } - ], - "max_short_term_orders_per_n_blocks": [ - { - "limit": 200, - "num_blocks": 1 - } - ], - "max_stateful_orders_per_n_blocks": [ - { - "limit": 2, - "num_blocks": 1 - }, - { - "limit": 20, - "num_blocks": 100 - } - ] - }, "clob_pairs": [ { "id": 0, + "status": "STATUS_ACTIVE", "perpetual_clob_metadata": { "perpetual_id": 0 }, - "quantum_conversion_exponent": -9, - "status": "STATUS_ACTIVE", "step_base_quantums": 1000000, - "subticks_per_tick": 100000 + "subticks_per_tick": 100000, + "quantum_conversion_exponent": -9 }, { "id": 1, + "status": "STATUS_ACTIVE", "perpetual_clob_metadata": { "perpetual_id": 1 }, - "quantum_conversion_exponent": -9, - "status": "STATUS_ACTIVE", "step_base_quantums": 1000000, - "subticks_per_tick": 100000 + "subticks_per_tick": 100000, + "quantum_conversion_exponent": -9 }, { "id": 2, + "status": "STATUS_ACTIVE", "perpetual_clob_metadata": { "perpetual_id": 2 }, - "quantum_conversion_exponent": -9, - "status": "STATUS_ACTIVE", "step_base_quantums": 1000000, - "subticks_per_tick": 1000000 + "subticks_per_tick": 1000000, + "quantum_conversion_exponent": -9 }, { "id": 3, + "status": "STATUS_ACTIVE", "perpetual_clob_metadata": { "perpetual_id": 3 }, - "quantum_conversion_exponent": -9, - "status": "STATUS_ACTIVE", "step_base_quantums": 1000000, - "subticks_per_tick": 1000000 + "subticks_per_tick": 1000000, + "quantum_conversion_exponent": -9 }, { "id": 4, + "status": "STATUS_ACTIVE", "perpetual_clob_metadata": { "perpetual_id": 4 }, - "quantum_conversion_exponent": -9, - "status": "STATUS_ACTIVE", "step_base_quantums": 1000000, - "subticks_per_tick": 1000000 + "subticks_per_tick": 1000000, + "quantum_conversion_exponent": -9 }, { "id": 5, + "status": "STATUS_ACTIVE", "perpetual_clob_metadata": { "perpetual_id": 5 }, - "quantum_conversion_exponent": -9, - "status": "STATUS_ACTIVE", "step_base_quantums": 1000000, - "subticks_per_tick": 1000000 + "subticks_per_tick": 1000000, + "quantum_conversion_exponent": -9 }, { "id": 6, + "status": "STATUS_ACTIVE", "perpetual_clob_metadata": { "perpetual_id": 6 }, - "quantum_conversion_exponent": -9, - "status": "STATUS_ACTIVE", "step_base_quantums": 1000000, - "subticks_per_tick": 1000000 + "subticks_per_tick": 1000000, + "quantum_conversion_exponent": -9 }, { "id": 7, + "status": "STATUS_ACTIVE", "perpetual_clob_metadata": { "perpetual_id": 7 }, - "quantum_conversion_exponent": -9, - "status": "STATUS_ACTIVE", "step_base_quantums": 1000000, - "subticks_per_tick": 1000000 + "subticks_per_tick": 1000000, + "quantum_conversion_exponent": -9 }, { "id": 8, + "status": "STATUS_ACTIVE", "perpetual_clob_metadata": { "perpetual_id": 8 }, - "quantum_conversion_exponent": -9, - "status": "STATUS_ACTIVE", "step_base_quantums": 1000000, - "subticks_per_tick": 1000000 + "subticks_per_tick": 1000000, + "quantum_conversion_exponent": -9 }, { "id": 9, + "status": "STATUS_ACTIVE", "perpetual_clob_metadata": { "perpetual_id": 9 }, - "quantum_conversion_exponent": -9, - "status": "STATUS_ACTIVE", "step_base_quantums": 1000000, - "subticks_per_tick": 1000000 + "subticks_per_tick": 1000000, + "quantum_conversion_exponent": -9 }, { "id": 10, + "status": "STATUS_ACTIVE", "perpetual_clob_metadata": { "perpetual_id": 10 }, - "quantum_conversion_exponent": -9, - "status": "STATUS_ACTIVE", "step_base_quantums": 1000000, - "subticks_per_tick": 1000000 + "subticks_per_tick": 1000000, + "quantum_conversion_exponent": -9 }, { "id": 11, + "status": "STATUS_ACTIVE", "perpetual_clob_metadata": { "perpetual_id": 11 }, - "quantum_conversion_exponent": -9, - "status": "STATUS_ACTIVE", "step_base_quantums": 1000000, - "subticks_per_tick": 1000000 + "subticks_per_tick": 1000000, + "quantum_conversion_exponent": -9 }, { "id": 12, + "status": "STATUS_ACTIVE", "perpetual_clob_metadata": { "perpetual_id": 12 }, - "quantum_conversion_exponent": -9, - "status": "STATUS_ACTIVE", "step_base_quantums": 1000000, - "subticks_per_tick": 1000000 + "subticks_per_tick": 1000000, + "quantum_conversion_exponent": -9 }, { "id": 13, + "status": "STATUS_ACTIVE", "perpetual_clob_metadata": { "perpetual_id": 13 }, - "quantum_conversion_exponent": -9, - "status": "STATUS_ACTIVE", "step_base_quantums": 1000000, - "subticks_per_tick": 1000000 + "subticks_per_tick": 1000000, + "quantum_conversion_exponent": -9 }, { "id": 14, + "status": "STATUS_ACTIVE", "perpetual_clob_metadata": { "perpetual_id": 14 }, - "quantum_conversion_exponent": -9, - "status": "STATUS_ACTIVE", "step_base_quantums": 1000000, - "subticks_per_tick": 1000000 + "subticks_per_tick": 1000000, + "quantum_conversion_exponent": -9 }, { "id": 15, + "status": "STATUS_ACTIVE", "perpetual_clob_metadata": { "perpetual_id": 15 }, - "quantum_conversion_exponent": -9, - "status": "STATUS_ACTIVE", "step_base_quantums": 1000000, - "subticks_per_tick": 1000000 + "subticks_per_tick": 1000000, + "quantum_conversion_exponent": -9 }, { "id": 16, + "status": "STATUS_ACTIVE", "perpetual_clob_metadata": { "perpetual_id": 16 }, - "quantum_conversion_exponent": -9, - "status": "STATUS_ACTIVE", "step_base_quantums": 1000000, - "subticks_per_tick": 1000000 + "subticks_per_tick": 1000000, + "quantum_conversion_exponent": -9 }, { "id": 17, + "status": "STATUS_ACTIVE", "perpetual_clob_metadata": { "perpetual_id": 17 }, - "quantum_conversion_exponent": -9, - "status": "STATUS_ACTIVE", "step_base_quantums": 1000000, - "subticks_per_tick": 1000000 + "subticks_per_tick": 1000000, + "quantum_conversion_exponent": -9 }, { "id": 18, + "status": "STATUS_ACTIVE", "perpetual_clob_metadata": { "perpetual_id": 18 }, - "quantum_conversion_exponent": -9, - "status": "STATUS_ACTIVE", "step_base_quantums": 1000000, - "subticks_per_tick": 1000000 + "subticks_per_tick": 1000000, + "quantum_conversion_exponent": -9 }, { "id": 19, + "status": "STATUS_ACTIVE", "perpetual_clob_metadata": { "perpetual_id": 19 }, - "quantum_conversion_exponent": -9, - "status": "STATUS_ACTIVE", "step_base_quantums": 1000000, - "subticks_per_tick": 1000000 + "subticks_per_tick": 1000000, + "quantum_conversion_exponent": -9 }, { "id": 20, + "status": "STATUS_ACTIVE", "perpetual_clob_metadata": { "perpetual_id": 20 }, - "quantum_conversion_exponent": -9, - "status": "STATUS_ACTIVE", "step_base_quantums": 1000000, - "subticks_per_tick": 1000000 + "subticks_per_tick": 1000000, + "quantum_conversion_exponent": -9 }, { "id": 21, + "status": "STATUS_ACTIVE", "perpetual_clob_metadata": { "perpetual_id": 21 }, - "quantum_conversion_exponent": -9, - "status": "STATUS_ACTIVE", "step_base_quantums": 1000000, - "subticks_per_tick": 1000000 + "subticks_per_tick": 1000000, + "quantum_conversion_exponent": -9 }, { "id": 22, + "status": "STATUS_ACTIVE", "perpetual_clob_metadata": { "perpetual_id": 22 }, - "quantum_conversion_exponent": -9, - "status": "STATUS_ACTIVE", "step_base_quantums": 1000000, - "subticks_per_tick": 1000000 + "subticks_per_tick": 1000000, + "quantum_conversion_exponent": -9 }, { "id": 23, + "status": "STATUS_ACTIVE", "perpetual_clob_metadata": { "perpetual_id": 23 }, - "quantum_conversion_exponent": -9, - "status": "STATUS_ACTIVE", "step_base_quantums": 1000000, - "subticks_per_tick": 1000000 + "subticks_per_tick": 1000000, + "quantum_conversion_exponent": -9 }, { "id": 24, + "status": "STATUS_ACTIVE", "perpetual_clob_metadata": { "perpetual_id": 24 }, - "quantum_conversion_exponent": -9, - "status": "STATUS_ACTIVE", "step_base_quantums": 1000000, - "subticks_per_tick": 1000000 + "subticks_per_tick": 1000000, + "quantum_conversion_exponent": -9 }, { "id": 25, + "status": "STATUS_ACTIVE", "perpetual_clob_metadata": { "perpetual_id": 25 }, - "quantum_conversion_exponent": -9, - "status": "STATUS_ACTIVE", "step_base_quantums": 1000000, - "subticks_per_tick": 1000000 + "subticks_per_tick": 1000000, + "quantum_conversion_exponent": -9 }, { "id": 26, + "status": "STATUS_ACTIVE", "perpetual_clob_metadata": { "perpetual_id": 26 }, - "quantum_conversion_exponent": -9, - "status": "STATUS_ACTIVE", "step_base_quantums": 1000000, - "subticks_per_tick": 1000000 + "subticks_per_tick": 1000000, + "quantum_conversion_exponent": -9 }, { "id": 27, + "status": "STATUS_ACTIVE", "perpetual_clob_metadata": { "perpetual_id": 27 }, - "quantum_conversion_exponent": -9, - "status": "STATUS_ACTIVE", "step_base_quantums": 1000000, - "subticks_per_tick": 1000000 + "subticks_per_tick": 1000000, + "quantum_conversion_exponent": -9 }, { "id": 28, + "status": "STATUS_ACTIVE", "perpetual_clob_metadata": { "perpetual_id": 28 }, - "quantum_conversion_exponent": -9, - "status": "STATUS_ACTIVE", "step_base_quantums": 1000000, - "subticks_per_tick": 1000000 + "subticks_per_tick": 1000000, + "quantum_conversion_exponent": -9 }, { "id": 29, + "status": "STATUS_ACTIVE", "perpetual_clob_metadata": { "perpetual_id": 29 }, - "quantum_conversion_exponent": -9, - "status": "STATUS_ACTIVE", "step_base_quantums": 1000000, - "subticks_per_tick": 1000000 + "subticks_per_tick": 1000000, + "quantum_conversion_exponent": -9 }, { "id": 30, + "status": "STATUS_ACTIVE", "perpetual_clob_metadata": { "perpetual_id": 30 }, - "quantum_conversion_exponent": -9, - "status": "STATUS_ACTIVE", "step_base_quantums": 1000000, - "subticks_per_tick": 1000000 + "subticks_per_tick": 1000000, + "quantum_conversion_exponent": -9 }, { "id": 31, + "status": "STATUS_ACTIVE", "perpetual_clob_metadata": { "perpetual_id": 31 }, - "quantum_conversion_exponent": -9, - "status": "STATUS_ACTIVE", "step_base_quantums": 1000000, - "subticks_per_tick": 1000000 + "subticks_per_tick": 1000000, + "quantum_conversion_exponent": -9 }, { "id": 32, + "status": "STATUS_ACTIVE", "perpetual_clob_metadata": { "perpetual_id": 32 }, - "quantum_conversion_exponent": -9, + "step_base_quantums": 1000000, + "subticks_per_tick": 1000000, + "quantum_conversion_exponent": -9 + }, + { + "id": 33, "status": "STATUS_ACTIVE", + "perpetual_clob_metadata": { + "perpetual_id": 33 + }, "step_base_quantums": 1000000, - "subticks_per_tick": 1000000 + "subticks_per_tick": 100, + "quantum_conversion_exponent": -8 } ], + "liquidations_config": { + "max_liquidation_fee_ppm": 15000, + "position_block_limits": { + "min_position_notional_liquidated": 1000000000, + "max_position_portion_liquidated_ppm": 100000 + }, + "subaccount_block_limits": { + "max_notional_liquidated": 100000000000, + "max_quantums_insurance_lost": 1000000000000 + }, + "fillable_price_config": { + "bankruptcy_adjustment_ppm": 1000000, + "spread_to_maintenance_margin_ratio_ppm": 1500000 + } + }, + "block_rate_limit_config": { + "max_short_term_orders_per_n_blocks": [], + "max_stateful_orders_per_n_blocks": [ + { + "limit": 2, + "num_blocks": 1 + }, + { + "limit": 20, + "num_blocks": 100 + } + ], + "max_short_term_order_cancellations_per_n_blocks": [], + "max_short_term_orders_and_cancels_per_n_blocks": [ + { + "limit": 400, + "num_blocks": 1 + } + ] + }, "equity_tier_limit_config": { "short_term_order_equity_tiers": [ { @@ -636,33 +657,18 @@ "usd_tnc_required": "100000000000" } ] - }, - "liquidations_config": { - "fillable_price_config": { - "bankruptcy_adjustment_ppm": 1000000, - "spread_to_maintenance_margin_ratio_ppm": 1500000 - }, - "max_liquidation_fee_ppm": 15000, - "position_block_limits": { - "max_position_portion_liquidated_ppm": 100000, - "min_position_notional_liquidated": 1000000000 - }, - "subaccount_block_limits": { - "max_notional_liquidated": 100000000000, - "max_quantums_insurance_lost": 1000000000000 - } } }, + "consensus": null, "crisis": { "constant_fee": { - "amount": "1000", - "denom": "adv4tnt" + "denom": "adv4tnt", + "amount": "1000" } }, "delaymsg": { "delayed_messages": [ { - "block_height": 378000, "id": 0, "msg": { "@type": "/dydxprotocol.feetiers.MsgUpdatePerpetualFeeParams", @@ -670,131 +676,132 @@ "params": { "tiers": [ { + "name": "1", "absolute_volume_requirement": "0", - "maker_fee_ppm": 100, + "total_volume_share_requirement_ppm": 0, "maker_volume_share_requirement_ppm": 0, - "name": "1", - "taker_fee_ppm": 500, - "total_volume_share_requirement_ppm": 0 + "maker_fee_ppm": 100, + "taker_fee_ppm": 500 }, { + "name": "2", "absolute_volume_requirement": "1000000000000", - "maker_fee_ppm": 100, + "total_volume_share_requirement_ppm": 0, "maker_volume_share_requirement_ppm": 0, - "name": "2", - "taker_fee_ppm": 450, - "total_volume_share_requirement_ppm": 0 + "maker_fee_ppm": 100, + "taker_fee_ppm": 450 }, { + "name": "3", "absolute_volume_requirement": "5000000000000", - "maker_fee_ppm": 50, + "total_volume_share_requirement_ppm": 0, "maker_volume_share_requirement_ppm": 0, - "name": "3", - "taker_fee_ppm": 400, - "total_volume_share_requirement_ppm": 0 + "maker_fee_ppm": 50, + "taker_fee_ppm": 400 }, { + "name": "4", "absolute_volume_requirement": "25000000000000", - "maker_fee_ppm": 0, + "total_volume_share_requirement_ppm": 0, "maker_volume_share_requirement_ppm": 0, - "name": "4", - "taker_fee_ppm": 350, - "total_volume_share_requirement_ppm": 0 + "maker_fee_ppm": 0, + "taker_fee_ppm": 350 }, { + "name": "5", "absolute_volume_requirement": "125000000000000", - "maker_fee_ppm": 0, + "total_volume_share_requirement_ppm": 0, "maker_volume_share_requirement_ppm": 0, - "name": "5", - "taker_fee_ppm": 300, - "total_volume_share_requirement_ppm": 0 + "maker_fee_ppm": 0, + "taker_fee_ppm": 300 }, { + "name": "6", "absolute_volume_requirement": "125000000000000", - "maker_fee_ppm": -50, + "total_volume_share_requirement_ppm": 5000, "maker_volume_share_requirement_ppm": 0, - "name": "6", - "taker_fee_ppm": 250, - "total_volume_share_requirement_ppm": 5000 + "maker_fee_ppm": -50, + "taker_fee_ppm": 250 }, { + "name": "7", "absolute_volume_requirement": "125000000000000", - "maker_fee_ppm": -70, + "total_volume_share_requirement_ppm": 5000, "maker_volume_share_requirement_ppm": 10000, - "name": "7", - "taker_fee_ppm": 250, - "total_volume_share_requirement_ppm": 5000 + "maker_fee_ppm": -70, + "taker_fee_ppm": 250 }, { + "name": "8", "absolute_volume_requirement": "125000000000000", - "maker_fee_ppm": -90, + "total_volume_share_requirement_ppm": 5000, "maker_volume_share_requirement_ppm": 20000, - "name": "8", - "taker_fee_ppm": 250, - "total_volume_share_requirement_ppm": 5000 + "maker_fee_ppm": -90, + "taker_fee_ppm": 250 }, { + "name": "9", "absolute_volume_requirement": "125000000000000", - "maker_fee_ppm": -110, + "total_volume_share_requirement_ppm": 5000, "maker_volume_share_requirement_ppm": 40000, - "name": "9", - "taker_fee_ppm": 250, - "total_volume_share_requirement_ppm": 5000 + "maker_fee_ppm": -110, + "taker_fee_ppm": 250 } ] } - } + }, + "block_height": 378000 } ], "next_delayed_message_id": 1 }, "distribution": { - "delegator_starting_infos": [], - "delegator_withdraw_infos": [], - "fee_pool": { - "community_pool": [] - }, - "outstanding_rewards": [], "params": { + "community_tax": "0.020000000000000000", "base_proposer_reward": "0.000000000000000000", "bonus_proposer_reward": "0.000000000000000000", - "community_tax": "0.020000000000000000", "withdraw_addr_enabled": true }, + "fee_pool": { + "community_pool": [] + }, + "delegator_withdraw_infos": [], "previous_proposer": "", + "outstanding_rewards": [], "validator_accumulated_commissions": [], - "validator_current_rewards": [], "validator_historical_rewards": [], + "validator_current_rewards": [], + "delegator_starting_infos": [], "validator_slash_events": [] }, "epochs": { "epoch_info_list": [ { + "name": "funding-sample", + "next_tick": 30, + "duration": 60, "current_epoch": 0, "current_epoch_start_block": 0, - "duration": 60, - "fast_forward_next_tick": true, "is_initialized": false, - "name": "funding-sample", - "next_tick": 30 + "fast_forward_next_tick": true }, { + "name": "funding-tick", + "next_tick": 0, + "duration": 3600, "current_epoch": 0, "current_epoch_start_block": 0, - "duration": 3600, - "fast_forward_next_tick": true, "is_initialized": false, - "name": "funding-tick", - "next_tick": 0 + "fast_forward_next_tick": true }, { + "name": "stats-epoch", + "next_tick": 0, + "duration": 3600, "current_epoch": 0, "current_epoch_start_block": 0, - "duration": 3600, - "fast_forward_next_tick": true, "is_initialized": false, - "name": "stats-epoch", - "next_tick": 0 + "fast_forward_next_tick": true } ] }, @@ -808,76 +815,76 @@ "params": { "tiers": [ { + "name": "1", "absolute_volume_requirement": "0", - "maker_fee_ppm": -110, + "total_volume_share_requirement_ppm": 0, "maker_volume_share_requirement_ppm": 0, - "name": "1", - "taker_fee_ppm": 500, - "total_volume_share_requirement_ppm": 0 + "maker_fee_ppm": -110, + "taker_fee_ppm": 500 }, { + "name": "2", "absolute_volume_requirement": "1000000000000", - "maker_fee_ppm": -110, + "total_volume_share_requirement_ppm": 0, "maker_volume_share_requirement_ppm": 0, - "name": "2", - "taker_fee_ppm": 450, - "total_volume_share_requirement_ppm": 0 + "maker_fee_ppm": -110, + "taker_fee_ppm": 450 }, { + "name": "3", "absolute_volume_requirement": "5000000000000", - "maker_fee_ppm": -110, + "total_volume_share_requirement_ppm": 0, "maker_volume_share_requirement_ppm": 0, - "name": "3", - "taker_fee_ppm": 400, - "total_volume_share_requirement_ppm": 0 + "maker_fee_ppm": -110, + "taker_fee_ppm": 400 }, { + "name": "4", "absolute_volume_requirement": "25000000000000", - "maker_fee_ppm": -110, + "total_volume_share_requirement_ppm": 0, "maker_volume_share_requirement_ppm": 0, - "name": "4", - "taker_fee_ppm": 350, - "total_volume_share_requirement_ppm": 0 + "maker_fee_ppm": -110, + "taker_fee_ppm": 350 }, { + "name": "5", "absolute_volume_requirement": "125000000000000", - "maker_fee_ppm": -110, + "total_volume_share_requirement_ppm": 0, "maker_volume_share_requirement_ppm": 0, - "name": "5", - "taker_fee_ppm": 300, - "total_volume_share_requirement_ppm": 0 + "maker_fee_ppm": -110, + "taker_fee_ppm": 300 }, { + "name": "6", "absolute_volume_requirement": "125000000000000", - "maker_fee_ppm": -110, + "total_volume_share_requirement_ppm": 5000, "maker_volume_share_requirement_ppm": 0, - "name": "6", - "taker_fee_ppm": 250, - "total_volume_share_requirement_ppm": 5000 + "maker_fee_ppm": -110, + "taker_fee_ppm": 250 }, { + "name": "7", "absolute_volume_requirement": "125000000000000", - "maker_fee_ppm": -110, + "total_volume_share_requirement_ppm": 5000, "maker_volume_share_requirement_ppm": 10000, - "name": "7", - "taker_fee_ppm": 250, - "total_volume_share_requirement_ppm": 5000 + "maker_fee_ppm": -110, + "taker_fee_ppm": 250 }, { + "name": "8", "absolute_volume_requirement": "125000000000000", - "maker_fee_ppm": -110, + "total_volume_share_requirement_ppm": 5000, "maker_volume_share_requirement_ppm": 20000, - "name": "8", - "taker_fee_ppm": 250, - "total_volume_share_requirement_ppm": 5000 + "maker_fee_ppm": -110, + "taker_fee_ppm": 250 }, { + "name": "9", "absolute_volume_requirement": "125000000000000", - "maker_fee_ppm": -110, + "total_volume_share_requirement_ppm": 5000, "maker_volume_share_requirement_ppm": 40000, - "name": "9", - "taker_fee_ppm": 250, - "total_volume_share_requirement_ppm": 5000 + "maker_fee_ppm": -110, + "taker_fee_ppm": 250 } ] } @@ -902,7 +909,7 @@ "max_change_rate": "0.010000000000000000" }, "min_self_delegation": "1", - "delegator_address": "dydx199tqg4wdlnu4qjlxchpd7seg454937hjrknju4", + "delegator_address": "", "validator_address": "dydxvaloper199tqg4wdlnu4qjlxchpd7seg454937hjxg9yhy", "pubkey": { "@type": "/cosmos.crypto.ed25519.PubKey", @@ -914,7 +921,7 @@ } } ], - "memo": "17e5e45691f0d01449c84fd4ae87279578cdd7ec@172.17.0.2:26656", + "memo": "17e5e45691f0d01449c84fd4ae87279578cdd7ec@172.17.0.3:26656", "timeout_height": "0", "extension_options": [], "non_critical_extension_options": [] @@ -943,7 +950,7 @@ "tip": null }, "signatures": [ - "OPf+X9U5GJwJOeTpBgW4HBpEP9PEivbMoUzy3WZiriMEghRJLuP3LGVpp4ePr8tEBoEEDFFu11ThiiyzjcmxIQ==" + "POWeH0CNzrc8Xm6uyf6/zd+b5MsJKktrwwql36ZxfF1AnKiibA/L4V8xUKy4IBMR0czFNC2XTm5rKpV2Qu6/Ow==" ] }, { @@ -964,7 +971,7 @@ "max_change_rate": "0.010000000000000000" }, "min_self_delegation": "1", - "delegator_address": "dydx1fjg6zp6vv8t9wvy4lps03r5l4g7tkjw9wvmh70", + "delegator_address": "", "validator_address": "dydxvaloper1fjg6zp6vv8t9wvy4lps03r5l4g7tkjw9tjdp47", "pubkey": { "@type": "/cosmos.crypto.ed25519.PubKey", @@ -976,7 +983,7 @@ } } ], - "memo": "47539956aaa8e624e0f1d926040e54908ad0eb44@172.17.0.2:26656", + "memo": "47539956aaa8e624e0f1d926040e54908ad0eb44@172.17.0.3:26656", "timeout_height": "0", "extension_options": [], "non_critical_extension_options": [] @@ -1005,7 +1012,7 @@ "tip": null }, "signatures": [ - "IWmBNPto7CR7GE5Qc/Vce6uRJvgmxAifUfnqsuk/9bU0a/efjPl9wCVqXoV4tBN5h8YUJTwtU7Ll2Lwiq7z9ew==" + "WbfHBen6+atbFg4xNs3IfAQ0dWZGaseAqQQQ3TPRVSkOcPHQQtcJsYoFDB+/l+bVdL3RosrIE5BWba4NfSaUDQ==" ] }, { @@ -1026,7 +1033,7 @@ "max_change_rate": "0.010000000000000000" }, "min_self_delegation": "1", - "delegator_address": "dydx1wau5mja7j7zdavtfq9lu7ejef05hm6ffenlcsn", + "delegator_address": "", "validator_address": "dydxvaloper1wau5mja7j7zdavtfq9lu7ejef05hm6ffudfwmz", "pubkey": { "@type": "/cosmos.crypto.ed25519.PubKey", @@ -1038,7 +1045,7 @@ } } ], - "memo": "5882428984d83b03d0c907c1f0af343534987052@172.17.0.2:26656", + "memo": "5882428984d83b03d0c907c1f0af343534987052@172.17.0.3:26656", "timeout_height": "0", "extension_options": [], "non_critical_extension_options": [] @@ -1067,7 +1074,7 @@ "tip": null }, "signatures": [ - "PbkEltEhqvhavA99UFdnI1IoRPw/8mKAR/Wif4zNRDwCPs19Yu0GitohSQVAxJGs3xK9whKmGIJoQQd8cYQz+Q==" + "vgwRg79LG2qXD7a2bTQ3Vdh/W014BNN7iFIVPo/kL4F0uPPkj1jXBuwMTu0ZGKhyRs2WkD2xu85jDxTvxwbWsA==" ] }, { @@ -1088,7 +1095,7 @@ "max_change_rate": "0.010000000000000000" }, "min_self_delegation": "1", - "delegator_address": "dydx10fx7sy6ywd5senxae9dwytf8jxek3t2gcen2vs", + "delegator_address": "", "validator_address": "dydxvaloper10fx7sy6ywd5senxae9dwytf8jxek3t2ga89u8p", "pubkey": { "@type": "/cosmos.crypto.ed25519.PubKey", @@ -1100,7 +1107,7 @@ } } ], - "memo": "b69182310be02559483e42c77b7b104352713166@172.17.0.2:26656", + "memo": "b69182310be02559483e42c77b7b104352713166@172.17.0.3:26656", "timeout_height": "0", "extension_options": [], "non_critical_extension_options": [] @@ -1129,92 +1136,97 @@ "tip": null }, "signatures": [ - "Hoo2es537f4zoxDFfrIbhPPBvWIiWudssh34cdidg7NnckC8bl8o+cWsdRP8BO/JkwT67Tn7vQXV+RHU6H5opw==" + "5wgtDLRGpZJxPzc1Lnz1+vjeKRUZRfUyh98kwmzeB5AAshjDq9f98msfCJY6CMvtIuA1+euusLUZri8HEvQ4BA==" ] } ] }, "gov": { - "constitution": "", + "starting_proposal_id": "1", "deposits": [], + "votes": [], + "proposals": [], + "deposit_params": null, + "voting_params": null, + "tally_params": null, "params": { - "burn_proposal_deposit_prevote": false, - "burn_vote_quorum": false, - "burn_vote_veto": true, - "expedited_min_deposit": [ - { - "amount": "50000000", - "denom": "adv4tnt" - } - ], - "expedited_threshold": "0.75000", - "expedited_voting_period": "60s", - "max_deposit_period": "300s", "min_deposit": [ { - "amount": "10000000", - "denom": "adv4tnt" + "denom": "adv4tnt", + "amount": "10000000" } ], - "min_deposit_ratio": "0.010000000000000000", - "min_initial_deposit_ratio": "0.20000", - "proposal_cancel_dest": "", - "proposal_cancel_ratio": "1", + "max_deposit_period": "300s", + "voting_period": "300s", "quorum": "0.334000000000000000", "threshold": "0.500000000000000000", "veto_threshold": "0.334000000000000000", - "voting_period": "300s" + "min_initial_deposit_ratio": "0.20000", + "proposal_cancel_ratio": "1", + "proposal_cancel_dest": "", + "expedited_voting_period": "60s", + "expedited_threshold": "0.75000", + "expedited_min_deposit": [ + { + "denom": "adv4tnt", + "amount": "50000000" + } + ], + "burn_vote_quorum": false, + "burn_proposal_deposit_prevote": false, + "burn_vote_veto": true, + "min_deposit_ratio": "0.010000000000000000" }, - "proposals": [], - "starting_proposal_id": "1", - "votes": [] + "constitution": "" }, "govplus": {}, "ibc": { - "channel_genesis": { - "ack_sequences": [], - "acknowledgements": [], - "channels": [], - "commitments": [], - "next_channel_sequence": "0", - "receipts": [], - "recv_sequences": [], - "send_sequences": [] - }, "client_genesis": { "clients": [], "clients_consensus": [], "clients_metadata": [], - "create_localhost": false, - "next_client_sequence": "0", "params": { "allowed_clients": [ "07-tendermint" ] - } + }, + "create_localhost": false, + "next_client_sequence": "0" }, "connection_genesis": { - "client_connection_paths": [], "connections": [], + "client_connection_paths": [], "next_connection_sequence": "0", "params": { "max_expected_time_per_block": "30000000000" } + }, + "channel_genesis": { + "channels": [], + "acknowledgements": [], + "commitments": [], + "receipts": [], + "send_sequences": [], + "recv_sequences": [], + "ack_sequences": [], + "next_channel_sequence": "0" } }, "interchainaccounts": { "controller_genesis_state": { "active_channels": [], "interchain_accounts": [], + "ports": [], "params": { "controller_enabled": false - }, - "ports": [] + } }, "host_genesis_state": { "active_channels": [], "interchain_accounts": [], + "port": "icahost", "params": { + "host_enabled": true, "allow_messages": [ "/ibc.applications.transfer.v1.MsgTransfer", "/cosmos.bank.v1beta1.MsgSend", @@ -1226,843 +1238,923 @@ "/cosmos.distribution.v1beta1.MsgWithdrawDelegatorReward", "/cosmos.distribution.v1beta1.MsgFundCommunityPool", "/cosmos.gov.v1.MsgVote" - ], - "host_enabled": true - }, - "port": "icahost" + ] + } } }, + "params": null, "perpetuals": { - "liquidity_tiers": [ - { - "base_position_notional": 1000000000000, - "id": 0, - "impact_notional": 10000000000, - "initial_margin_ppm": 50000, - "maintenance_fraction_ppm": 600000, - "name": "Large-Cap" - }, - { - "base_position_notional": 250000000000, - "id": 1, - "impact_notional": 5000000000, - "initial_margin_ppm": 100000, - "maintenance_fraction_ppm": 500000, - "name": "Mid-Cap" - }, - { - "base_position_notional": 100000000000, - "id": 2, - "impact_notional": 2500000000, - "initial_margin_ppm": 200000, - "maintenance_fraction_ppm": 500000, - "name": "Long-Tail" - }, - { - "base_position_notional": 1000000000, - "id": 3, - "impact_notional": 2500000000, - "initial_margin_ppm": 1000000, - "maintenance_fraction_ppm": 200000, - "name": "Safety" - } - ], - "params": { - "funding_rate_clamp_factor_ppm": 6000000, - "min_num_votes_per_sample": 15, - "premium_vote_clamp_factor_ppm": 60000000 - }, "perpetuals": [ { "params": { + "ticker": "BTC-USD", + "id": 0, + "market_id": 0, "atomic_resolution": -10, "default_funding_ppm": 0, - "id": 0, "liquidity_tier": 0, - "market_id": 0, - "ticker": "BTC-USD" + "market_type": 1 } }, { "params": { + "ticker": "ETH-USD", + "id": 1, + "market_id": 1, "atomic_resolution": -9, "default_funding_ppm": 0, - "id": 1, "liquidity_tier": 0, - "market_id": 1, - "ticker": "ETH-USD" + "market_type": 1 } }, { "params": { + "ticker": "LINK-USD", + "id": 2, + "market_id": 2, "atomic_resolution": -6, "default_funding_ppm": 0, - "id": 2, "liquidity_tier": 1, - "market_id": 2, - "ticker": "LINK-USD" + "market_type": 1 } }, { "params": { + "ticker": "MATIC-USD", + "id": 3, + "market_id": 3, "atomic_resolution": -5, "default_funding_ppm": 0, - "id": 3, "liquidity_tier": 1, - "market_id": 3, - "ticker": "MATIC-USD" + "market_type": 1 } }, { "params": { + "ticker": "CRV-USD", + "id": 4, + "market_id": 4, "atomic_resolution": -5, "default_funding_ppm": 0, - "id": 4, "liquidity_tier": 1, - "market_id": 4, - "ticker": "CRV-USD" + "market_type": 1 } }, { "params": { + "ticker": "SOL-USD", + "id": 5, + "market_id": 5, "atomic_resolution": -7, "default_funding_ppm": 0, - "id": 5, "liquidity_tier": 1, - "market_id": 5, - "ticker": "SOL-USD" + "market_type": 1 } }, { "params": { + "ticker": "ADA-USD", + "id": 6, + "market_id": 6, "atomic_resolution": -5, "default_funding_ppm": 0, - "id": 6, "liquidity_tier": 1, - "market_id": 6, - "ticker": "ADA-USD" + "market_type": 1 } }, { "params": { + "ticker": "AVAX-USD", + "id": 7, + "market_id": 7, "atomic_resolution": -7, "default_funding_ppm": 0, - "id": 7, "liquidity_tier": 1, - "market_id": 7, - "ticker": "AVAX-USD" + "market_type": 1 } }, { "params": { + "ticker": "FIL-USD", + "id": 8, + "market_id": 8, "atomic_resolution": -6, "default_funding_ppm": 0, - "id": 8, "liquidity_tier": 1, - "market_id": 8, - "ticker": "FIL-USD" + "market_type": 1 } }, { "params": { + "ticker": "LTC-USD", + "id": 9, + "market_id": 9, "atomic_resolution": -7, "default_funding_ppm": 0, - "id": 9, "liquidity_tier": 1, - "market_id": 9, - "ticker": "LTC-USD" + "market_type": 1 } }, { "params": { + "ticker": "DOGE-USD", + "id": 10, + "market_id": 10, "atomic_resolution": -4, "default_funding_ppm": 0, - "id": 10, "liquidity_tier": 1, - "market_id": 10, - "ticker": "DOGE-USD" + "market_type": 1 } }, { "params": { + "ticker": "ATOM-USD", + "id": 11, + "market_id": 11, "atomic_resolution": -6, "default_funding_ppm": 0, - "id": 11, "liquidity_tier": 1, - "market_id": 11, - "ticker": "ATOM-USD" + "market_type": 1 } }, { "params": { + "ticker": "DOT-USD", + "id": 12, + "market_id": 12, "atomic_resolution": -6, "default_funding_ppm": 0, - "id": 12, "liquidity_tier": 1, - "market_id": 12, - "ticker": "DOT-USD" + "market_type": 1 } }, { "params": { + "ticker": "UNI-USD", + "id": 13, + "market_id": 13, "atomic_resolution": -6, "default_funding_ppm": 0, - "id": 13, "liquidity_tier": 1, - "market_id": 13, - "ticker": "UNI-USD" + "market_type": 1 } }, { "params": { + "ticker": "BCH-USD", + "id": 14, + "market_id": 14, "atomic_resolution": -8, "default_funding_ppm": 0, - "id": 14, "liquidity_tier": 1, - "market_id": 14, - "ticker": "BCH-USD" + "market_type": 1 } }, { "params": { + "ticker": "TRX-USD", + "id": 15, + "market_id": 15, "atomic_resolution": -4, "default_funding_ppm": 0, - "id": 15, "liquidity_tier": 1, - "market_id": 15, - "ticker": "TRX-USD" + "market_type": 1 } }, { "params": { + "ticker": "NEAR-USD", + "id": 16, + "market_id": 16, "atomic_resolution": -6, "default_funding_ppm": 0, - "id": 16, "liquidity_tier": 1, - "market_id": 16, - "ticker": "NEAR-USD" + "market_type": 1 } }, { "params": { + "ticker": "MKR-USD", + "id": 17, + "market_id": 17, "atomic_resolution": -9, "default_funding_ppm": 0, - "id": 17, "liquidity_tier": 2, - "market_id": 17, - "ticker": "MKR-USD" + "market_type": 1 } }, { "params": { + "ticker": "XLM-USD", + "id": 18, + "market_id": 18, "atomic_resolution": -5, "default_funding_ppm": 0, - "id": 18, "liquidity_tier": 1, - "market_id": 18, - "ticker": "XLM-USD" + "market_type": 1 } }, { "params": { + "ticker": "ETC-USD", + "id": 19, + "market_id": 19, "atomic_resolution": -7, "default_funding_ppm": 0, - "id": 19, "liquidity_tier": 1, - "market_id": 19, - "ticker": "ETC-USD" + "market_type": 1 } }, { "params": { + "ticker": "COMP-USD", + "id": 20, + "market_id": 20, "atomic_resolution": -7, "default_funding_ppm": 0, - "id": 20, "liquidity_tier": 2, - "market_id": 20, - "ticker": "COMP-USD" + "market_type": 1 } }, { "params": { + "ticker": "WLD-USD", + "id": 21, + "market_id": 21, "atomic_resolution": -6, "default_funding_ppm": 0, - "id": 21, "liquidity_tier": 1, - "market_id": 21, - "ticker": "WLD-USD" + "market_type": 1 } }, { "params": { + "ticker": "APE-USD", + "id": 22, + "market_id": 22, "atomic_resolution": -6, "default_funding_ppm": 0, - "id": 22, "liquidity_tier": 2, - "market_id": 22, - "ticker": "APE-USD" + "market_type": 1 } }, { "params": { + "ticker": "APT-USD", + "id": 23, + "market_id": 23, "atomic_resolution": -6, "default_funding_ppm": 0, - "id": 23, "liquidity_tier": 1, - "market_id": 23, - "ticker": "APT-USD" + "market_type": 1 } }, { "params": { + "ticker": "ARB-USD", + "id": 24, + "market_id": 24, "atomic_resolution": -6, "default_funding_ppm": 0, - "id": 24, "liquidity_tier": 1, - "market_id": 24, - "ticker": "ARB-USD" + "market_type": 1 } }, { "params": { + "ticker": "BLUR-USD", + "id": 25, + "market_id": 25, "atomic_resolution": -5, "default_funding_ppm": 0, - "id": 25, "liquidity_tier": 2, - "market_id": 25, - "ticker": "BLUR-USD" + "market_type": 1 } }, { "params": { + "ticker": "LDO-USD", + "id": 26, + "market_id": 26, "atomic_resolution": -6, "default_funding_ppm": 0, - "id": 26, "liquidity_tier": 2, - "market_id": 26, - "ticker": "LDO-USD" + "market_type": 1 } }, { "params": { + "ticker": "OP-USD", + "id": 27, + "market_id": 27, "atomic_resolution": -6, "default_funding_ppm": 0, - "id": 27, "liquidity_tier": 1, - "market_id": 27, - "ticker": "OP-USD" + "market_type": 1 } }, { "params": { + "ticker": "PEPE-USD", + "id": 28, + "market_id": 28, "atomic_resolution": 1, "default_funding_ppm": 0, - "id": 28, "liquidity_tier": 1, - "market_id": 28, - "ticker": "PEPE-USD" + "market_type": 1 } }, { "params": { + "ticker": "SEI-USD", + "id": 29, + "market_id": 29, "atomic_resolution": -5, "default_funding_ppm": 0, - "id": 29, "liquidity_tier": 2, - "market_id": 29, - "ticker": "SEI-USD" + "market_type": 1 } }, { "params": { + "ticker": "SHIB-USD", + "id": 30, + "market_id": 30, "atomic_resolution": 0, "default_funding_ppm": 0, - "id": 30, "liquidity_tier": 1, - "market_id": 30, - "ticker": "SHIB-USD" + "market_type": 1 } }, { "params": { + "ticker": "SUI-USD", + "id": 31, + "market_id": 31, "atomic_resolution": -5, "default_funding_ppm": 0, - "id": 31, "liquidity_tier": 1, - "market_id": 31, - "ticker": "SUI-USD" + "market_type": 1 } }, { "params": { + "ticker": "XRP-USD", + "id": 32, + "market_id": 32, "atomic_resolution": -5, "default_funding_ppm": 0, - "id": 32, "liquidity_tier": 1, - "market_id": 32, - "ticker": "XRP-USD" + "market_type": 1 + } + }, + { + "params": { + "ticker": "TEST-USD", + "id": 33, + "market_id": 33, + "atomic_resolution": -10, + "default_funding_ppm": 0, + "liquidity_tier": 4, + "market_type": 1 } } - ] + ], + "liquidity_tiers": [ + { + "id": 0, + "name": "Large-Cap", + "initial_margin_ppm": 50000, + "maintenance_fraction_ppm": 600000, + "base_position_notional": 1000000000000, + "impact_notional": 10000000000, + "open_interest_lower_cap": 0, + "open_interest_upper_cap": 0 + }, + { + "id": 1, + "name": "Mid-Cap", + "initial_margin_ppm": 100000, + "maintenance_fraction_ppm": 500000, + "base_position_notional": 250000000000, + "impact_notional": 5000000000, + "open_interest_lower_cap": 20000000000000, + "open_interest_upper_cap": 50000000000000 + }, + { + "id": 2, + "name": "Long-Tail", + "initial_margin_ppm": 200000, + "maintenance_fraction_ppm": 500000, + "base_position_notional": 100000000000, + "impact_notional": 2500000000, + "open_interest_lower_cap": 5000000000000, + "open_interest_upper_cap": 10000000000000 + }, + { + "id": 3, + "name": "Safety", + "initial_margin_ppm": 1000000, + "maintenance_fraction_ppm": 200000, + "base_position_notional": 1000000000, + "impact_notional": 2500000000, + "open_interest_lower_cap": 2000000000000, + "open_interest_upper_cap": 5000000000000 + }, + { + "id": 4, + "name": "test-usd-100x-liq-tier-linear", + "initial_margin_ppm": 10007, + "maintenance_fraction_ppm": 500009, + "base_position_notional": 1000000000039, + "impact_notional": 50000000000 + }, + { + "id": 5, + "name": "test-usd-100x-liq-tier-nonlinear", + "initial_margin_ppm": 10007, + "maintenance_fraction_ppm": 500009, + "base_position_notional": 100000007, + "impact_notional": 50000000000 + } + ], + "params": { + "funding_rate_clamp_factor_ppm": 6000000, + "premium_vote_clamp_factor_ppm": 60000000, + "min_num_votes_per_sample": 15 + } }, "prices": { "market_params": [ { - "exchange_config_json": "{\"exchanges\":[{\"exchangeName\":\"Binance\",\"ticker\":\"BTCUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Bybit\",\"ticker\":\"BTCUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"CoinbasePro\",\"ticker\":\"BTC-USD\"},{\"exchangeName\":\"Huobi\",\"ticker\":\"btcusdt\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Kraken\",\"ticker\":\"XXBTZUSD\"},{\"exchangeName\":\"Kucoin\",\"ticker\":\"BTC-USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Mexc\",\"ticker\":\"BTC_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Okx\",\"ticker\":\"BTC-USDT\",\"adjustByMarket\":\"USDT-USD\"}]}", - "exponent": -5, + "pair": "BTC-USD", "id": 0, + "exponent": -5, "min_exchanges": 3, "min_price_change_ppm": 1000, - "pair": "BTC-USD" + "exchange_config_json": "{\"exchanges\":[{\"exchangeName\":\"Binance\",\"ticker\":\"BTCUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Bybit\",\"ticker\":\"BTCUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"CoinbasePro\",\"ticker\":\"BTC-USD\"},{\"exchangeName\":\"Huobi\",\"ticker\":\"btcusdt\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Kraken\",\"ticker\":\"XXBTZUSD\"},{\"exchangeName\":\"Kucoin\",\"ticker\":\"BTC-USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Mexc\",\"ticker\":\"BTC_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Okx\",\"ticker\":\"BTC-USDT\",\"adjustByMarket\":\"USDT-USD\"}]}" }, { - "exchange_config_json": "{\"exchanges\":[{\"exchangeName\":\"Binance\",\"ticker\":\"ETHUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Bybit\",\"ticker\":\"ETHUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"CoinbasePro\",\"ticker\":\"ETH-USD\"},{\"exchangeName\":\"Huobi\",\"ticker\":\"ethusdt\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Kraken\",\"ticker\":\"XETHZUSD\"},{\"exchangeName\":\"Kucoin\",\"ticker\":\"ETH-USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Mexc\",\"ticker\":\"ETH_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Okx\",\"ticker\":\"ETH-USDT\",\"adjustByMarket\":\"USDT-USD\"}]}", - "exponent": -6, + "pair": "ETH-USD", "id": 1, + "exponent": -6, "min_exchanges": 3, "min_price_change_ppm": 1000, - "pair": "ETH-USD" + "exchange_config_json": "{\"exchanges\":[{\"exchangeName\":\"Binance\",\"ticker\":\"ETHUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Bybit\",\"ticker\":\"ETHUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"CoinbasePro\",\"ticker\":\"ETH-USD\"},{\"exchangeName\":\"Huobi\",\"ticker\":\"ethusdt\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Kraken\",\"ticker\":\"XETHZUSD\"},{\"exchangeName\":\"Kucoin\",\"ticker\":\"ETH-USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Mexc\",\"ticker\":\"ETH_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Okx\",\"ticker\":\"ETH-USDT\",\"adjustByMarket\":\"USDT-USD\"}]}" }, { - "exchange_config_json": "{\"exchanges\":[{\"exchangeName\":\"Binance\",\"ticker\":\"LINKUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Bybit\",\"ticker\":\"LINKUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"CoinbasePro\",\"ticker\":\"LINK-USD\"},{\"exchangeName\":\"Kraken\",\"ticker\":\"LINKUSD\"},{\"exchangeName\":\"Kucoin\",\"ticker\":\"LINK-USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Mexc\",\"ticker\":\"LINK_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Okx\",\"ticker\":\"LINK-USDT\",\"adjustByMarket\":\"USDT-USD\"}]}", - "exponent": -9, + "pair": "LINK-USD", "id": 2, + "exponent": -9, "min_exchanges": 3, "min_price_change_ppm": 2500, - "pair": "LINK-USD" + "exchange_config_json": "{\"exchanges\":[{\"exchangeName\":\"Binance\",\"ticker\":\"LINKUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Bybit\",\"ticker\":\"LINKUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"CoinbasePro\",\"ticker\":\"LINK-USD\"},{\"exchangeName\":\"Kraken\",\"ticker\":\"LINKUSD\"},{\"exchangeName\":\"Kucoin\",\"ticker\":\"LINK-USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Mexc\",\"ticker\":\"LINK_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Okx\",\"ticker\":\"LINK-USDT\",\"adjustByMarket\":\"USDT-USD\"}]}" }, { - "exchange_config_json": "{\"exchanges\":[{\"exchangeName\":\"Binance\",\"ticker\":\"MATICUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Bybit\",\"ticker\":\"MATICUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"CoinbasePro\",\"ticker\":\"MATIC-USD\"},{\"exchangeName\":\"Gate\",\"ticker\":\"MATIC_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Huobi\",\"ticker\":\"maticusdt\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Kraken\",\"ticker\":\"MATICUSD\"},{\"exchangeName\":\"Kucoin\",\"ticker\":\"MATIC-USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Mexc\",\"ticker\":\"MATIC_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Okx\",\"ticker\":\"MATIC-USDT\",\"adjustByMarket\":\"USDT-USD\"}]}", - "exponent": -10, + "pair": "MATIC-USD", "id": 3, + "exponent": -10, "min_exchanges": 3, "min_price_change_ppm": 2500, - "pair": "MATIC-USD" + "exchange_config_json": "{\"exchanges\":[{\"exchangeName\":\"Binance\",\"ticker\":\"MATICUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Bybit\",\"ticker\":\"MATICUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"CoinbasePro\",\"ticker\":\"MATIC-USD\"},{\"exchangeName\":\"Gate\",\"ticker\":\"MATIC_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Huobi\",\"ticker\":\"maticusdt\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Kraken\",\"ticker\":\"MATICUSD\"},{\"exchangeName\":\"Kucoin\",\"ticker\":\"MATIC-USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Mexc\",\"ticker\":\"MATIC_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Okx\",\"ticker\":\"MATIC-USDT\",\"adjustByMarket\":\"USDT-USD\"}]}" }, { - "exchange_config_json": "{\"exchanges\":[{\"exchangeName\":\"Binance\",\"ticker\":\"CRVUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"CoinbasePro\",\"ticker\":\"CRV-USD\"},{\"exchangeName\":\"Gate\",\"ticker\":\"CRV_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Kraken\",\"ticker\":\"CRVUSD\"},{\"exchangeName\":\"Kucoin\",\"ticker\":\"CRV-USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Mexc\",\"ticker\":\"CRV_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Okx\",\"ticker\":\"CRV-USDT\",\"adjustByMarket\":\"USDT-USD\"}]}", - "exponent": -10, + "pair": "CRV-USD", "id": 4, + "exponent": -10, "min_exchanges": 3, "min_price_change_ppm": 2500, - "pair": "CRV-USD" + "exchange_config_json": "{\"exchanges\":[{\"exchangeName\":\"Binance\",\"ticker\":\"CRVUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"CoinbasePro\",\"ticker\":\"CRV-USD\"},{\"exchangeName\":\"Gate\",\"ticker\":\"CRV_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Kraken\",\"ticker\":\"CRVUSD\"},{\"exchangeName\":\"Kucoin\",\"ticker\":\"CRV-USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Mexc\",\"ticker\":\"CRV_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Okx\",\"ticker\":\"CRV-USDT\",\"adjustByMarket\":\"USDT-USD\"}]}" }, { - "exchange_config_json": "{\"exchanges\":[{\"exchangeName\":\"Binance\",\"ticker\":\"SOLUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Bybit\",\"ticker\":\"SOLUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"CoinbasePro\",\"ticker\":\"SOL-USD\"},{\"exchangeName\":\"Huobi\",\"ticker\":\"solusdt\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Kraken\",\"ticker\":\"SOLUSD\"},{\"exchangeName\":\"Kucoin\",\"ticker\":\"SOL-USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Mexc\",\"ticker\":\"SOL_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Okx\",\"ticker\":\"SOL-USDT\",\"adjustByMarket\":\"USDT-USD\"}]}", - "exponent": -8, + "pair": "SOL-USD", "id": 5, + "exponent": -8, "min_exchanges": 3, "min_price_change_ppm": 2500, - "pair": "SOL-USD" + "exchange_config_json": "{\"exchanges\":[{\"exchangeName\":\"Binance\",\"ticker\":\"SOLUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Bybit\",\"ticker\":\"SOLUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"CoinbasePro\",\"ticker\":\"SOL-USD\"},{\"exchangeName\":\"Huobi\",\"ticker\":\"solusdt\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Kraken\",\"ticker\":\"SOLUSD\"},{\"exchangeName\":\"Kucoin\",\"ticker\":\"SOL-USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Mexc\",\"ticker\":\"SOL_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Okx\",\"ticker\":\"SOL-USDT\",\"adjustByMarket\":\"USDT-USD\"}]}" }, { - "exchange_config_json": "{\"exchanges\":[{\"exchangeName\":\"Binance\",\"ticker\":\"ADAUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Bybit\",\"ticker\":\"ADAUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"CoinbasePro\",\"ticker\":\"ADA-USD\"},{\"exchangeName\":\"Gate\",\"ticker\":\"ADA_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Huobi\",\"ticker\":\"adausdt\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Kraken\",\"ticker\":\"ADAUSD\"},{\"exchangeName\":\"Kucoin\",\"ticker\":\"ADA-USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Mexc\",\"ticker\":\"ADA_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Okx\",\"ticker\":\"ADA-USDT\",\"adjustByMarket\":\"USDT-USD\"}]}", - "exponent": -10, + "pair": "ADA-USD", "id": 6, + "exponent": -10, "min_exchanges": 3, "min_price_change_ppm": 2500, - "pair": "ADA-USD" + "exchange_config_json": "{\"exchanges\":[{\"exchangeName\":\"Binance\",\"ticker\":\"ADAUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Bybit\",\"ticker\":\"ADAUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"CoinbasePro\",\"ticker\":\"ADA-USD\"},{\"exchangeName\":\"Gate\",\"ticker\":\"ADA_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Huobi\",\"ticker\":\"adausdt\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Kraken\",\"ticker\":\"ADAUSD\"},{\"exchangeName\":\"Kucoin\",\"ticker\":\"ADA-USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Mexc\",\"ticker\":\"ADA_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Okx\",\"ticker\":\"ADA-USDT\",\"adjustByMarket\":\"USDT-USD\"}]}" }, { - "exchange_config_json": "{\"exchanges\":[{\"exchangeName\":\"Binance\",\"ticker\":\"AVAXUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Bybit\",\"ticker\":\"AVAXUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"CoinbasePro\",\"ticker\":\"AVAX-USD\"},{\"exchangeName\":\"Gate\",\"ticker\":\"AVAX_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Huobi\",\"ticker\":\"avaxusdt\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Kraken\",\"ticker\":\"AVAXUSD\"},{\"exchangeName\":\"Kucoin\",\"ticker\":\"AVAX-USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Okx\",\"ticker\":\"AVAX-USDT\",\"adjustByMarket\":\"USDT-USD\"}]}", - "exponent": -8, + "pair": "AVAX-USD", "id": 7, + "exponent": -8, "min_exchanges": 3, "min_price_change_ppm": 2500, - "pair": "AVAX-USD" + "exchange_config_json": "{\"exchanges\":[{\"exchangeName\":\"Binance\",\"ticker\":\"AVAXUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Bybit\",\"ticker\":\"AVAXUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"CoinbasePro\",\"ticker\":\"AVAX-USD\"},{\"exchangeName\":\"Gate\",\"ticker\":\"AVAX_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Huobi\",\"ticker\":\"avaxusdt\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Kraken\",\"ticker\":\"AVAXUSD\"},{\"exchangeName\":\"Kucoin\",\"ticker\":\"AVAX-USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Okx\",\"ticker\":\"AVAX-USDT\",\"adjustByMarket\":\"USDT-USD\"}]}" }, { - "exchange_config_json": "{\"exchanges\":[{\"exchangeName\":\"Binance\",\"ticker\":\"FILUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"CoinbasePro\",\"ticker\":\"FIL-USD\"},{\"exchangeName\":\"Gate\",\"ticker\":\"FIL_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Huobi\",\"ticker\":\"filusdt\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Kraken\",\"ticker\":\"FILUSD\"},{\"exchangeName\":\"Mexc\",\"ticker\":\"FIL_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Okx\",\"ticker\":\"FIL-USDT\",\"adjustByMarket\":\"USDT-USD\"}]}", - "exponent": -9, + "pair": "FIL-USD", "id": 8, + "exponent": -9, "min_exchanges": 3, "min_price_change_ppm": 2500, - "pair": "FIL-USD" + "exchange_config_json": "{\"exchanges\":[{\"exchangeName\":\"Binance\",\"ticker\":\"FILUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"CoinbasePro\",\"ticker\":\"FIL-USD\"},{\"exchangeName\":\"Gate\",\"ticker\":\"FIL_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Huobi\",\"ticker\":\"filusdt\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Kraken\",\"ticker\":\"FILUSD\"},{\"exchangeName\":\"Mexc\",\"ticker\":\"FIL_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Okx\",\"ticker\":\"FIL-USDT\",\"adjustByMarket\":\"USDT-USD\"}]}" }, { - "exchange_config_json": "{\"exchanges\":[{\"exchangeName\":\"Binance\",\"ticker\":\"LTCUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Bybit\",\"ticker\":\"LTCUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"CoinbasePro\",\"ticker\":\"LTC-USD\"},{\"exchangeName\":\"Huobi\",\"ticker\":\"ltcusdt\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Kraken\",\"ticker\":\"XLTCZUSD\"},{\"exchangeName\":\"Kucoin\",\"ticker\":\"LTC-USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Mexc\",\"ticker\":\"LTC_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Okx\",\"ticker\":\"LTC-USDT\",\"adjustByMarket\":\"USDT-USD\"}]}", - "exponent": -8, + "pair": "LTC-USD", "id": 9, + "exponent": -8, "min_exchanges": 3, "min_price_change_ppm": 2500, - "pair": "LTC-USD" + "exchange_config_json": "{\"exchanges\":[{\"exchangeName\":\"Binance\",\"ticker\":\"LTCUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Bybit\",\"ticker\":\"LTCUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"CoinbasePro\",\"ticker\":\"LTC-USD\"},{\"exchangeName\":\"Huobi\",\"ticker\":\"ltcusdt\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Kraken\",\"ticker\":\"XLTCZUSD\"},{\"exchangeName\":\"Kucoin\",\"ticker\":\"LTC-USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Mexc\",\"ticker\":\"LTC_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Okx\",\"ticker\":\"LTC-USDT\",\"adjustByMarket\":\"USDT-USD\"}]}" }, { - "exchange_config_json": "{\"exchanges\":[{\"exchangeName\":\"Binance\",\"ticker\":\"DOGEUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Bybit\",\"ticker\":\"DOGEUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"CoinbasePro\",\"ticker\":\"DOGE-USD\"},{\"exchangeName\":\"Gate\",\"ticker\":\"DOGE_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Huobi\",\"ticker\":\"dogeusdt\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Kraken\",\"ticker\":\"XDGUSD\"},{\"exchangeName\":\"Kucoin\",\"ticker\":\"DOGE-USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Mexc\",\"ticker\":\"DOGE_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Okx\",\"ticker\":\"DOGE-USDT\",\"adjustByMarket\":\"USDT-USD\"}]}", - "exponent": -11, + "pair": "DOGE-USD", "id": 10, + "exponent": -11, "min_exchanges": 3, "min_price_change_ppm": 2500, - "pair": "DOGE-USD" + "exchange_config_json": "{\"exchanges\":[{\"exchangeName\":\"Binance\",\"ticker\":\"DOGEUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Bybit\",\"ticker\":\"DOGEUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"CoinbasePro\",\"ticker\":\"DOGE-USD\"},{\"exchangeName\":\"Gate\",\"ticker\":\"DOGE_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Huobi\",\"ticker\":\"dogeusdt\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Kraken\",\"ticker\":\"XDGUSD\"},{\"exchangeName\":\"Kucoin\",\"ticker\":\"DOGE-USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Mexc\",\"ticker\":\"DOGE_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Okx\",\"ticker\":\"DOGE-USDT\",\"adjustByMarket\":\"USDT-USD\"}]}" }, { - "exchange_config_json": "{\"exchanges\":[{\"exchangeName\":\"Binance\",\"ticker\":\"ATOMUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Bybit\",\"ticker\":\"ATOMUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"CoinbasePro\",\"ticker\":\"ATOM-USD\"},{\"exchangeName\":\"Gate\",\"ticker\":\"ATOM_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Kraken\",\"ticker\":\"ATOMUSD\"},{\"exchangeName\":\"Kucoin\",\"ticker\":\"ATOM-USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Mexc\",\"ticker\":\"ATOM_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Okx\",\"ticker\":\"ATOM-USDT\",\"adjustByMarket\":\"USDT-USD\"}]}", - "exponent": -9, + "pair": "ATOM-USD", "id": 11, + "exponent": -9, "min_exchanges": 3, "min_price_change_ppm": 2500, - "pair": "ATOM-USD" + "exchange_config_json": "{\"exchanges\":[{\"exchangeName\":\"Binance\",\"ticker\":\"ATOMUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Bybit\",\"ticker\":\"ATOMUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"CoinbasePro\",\"ticker\":\"ATOM-USD\"},{\"exchangeName\":\"Gate\",\"ticker\":\"ATOM_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Kraken\",\"ticker\":\"ATOMUSD\"},{\"exchangeName\":\"Kucoin\",\"ticker\":\"ATOM-USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Mexc\",\"ticker\":\"ATOM_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Okx\",\"ticker\":\"ATOM-USDT\",\"adjustByMarket\":\"USDT-USD\"}]}" }, { - "exchange_config_json": "{\"exchanges\":[{\"exchangeName\":\"Binance\",\"ticker\":\"DOTUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Bybit\",\"ticker\":\"DOTUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"CoinbasePro\",\"ticker\":\"DOT-USD\"},{\"exchangeName\":\"Gate\",\"ticker\":\"DOT_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Kraken\",\"ticker\":\"DOTUSD\"},{\"exchangeName\":\"Kucoin\",\"ticker\":\"DOT-USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Mexc\",\"ticker\":\"DOT_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Okx\",\"ticker\":\"DOT-USDT\",\"adjustByMarket\":\"USDT-USD\"}]}", - "exponent": -9, + "pair": "DOT-USD", "id": 12, + "exponent": -9, "min_exchanges": 3, "min_price_change_ppm": 2500, - "pair": "DOT-USD" + "exchange_config_json": "{\"exchanges\":[{\"exchangeName\":\"Binance\",\"ticker\":\"DOTUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Bybit\",\"ticker\":\"DOTUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"CoinbasePro\",\"ticker\":\"DOT-USD\"},{\"exchangeName\":\"Gate\",\"ticker\":\"DOT_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Kraken\",\"ticker\":\"DOTUSD\"},{\"exchangeName\":\"Kucoin\",\"ticker\":\"DOT-USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Mexc\",\"ticker\":\"DOT_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Okx\",\"ticker\":\"DOT-USDT\",\"adjustByMarket\":\"USDT-USD\"}]}" }, { - "exchange_config_json": "{\"exchanges\":[{\"exchangeName\":\"Binance\",\"ticker\":\"UNIUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Bybit\",\"ticker\":\"UNIUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"CoinbasePro\",\"ticker\":\"UNI-USD\"},{\"exchangeName\":\"Gate\",\"ticker\":\"UNI_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Kraken\",\"ticker\":\"UNIUSD\"},{\"exchangeName\":\"Kucoin\",\"ticker\":\"UNI-USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Okx\",\"ticker\":\"UNI-USDT\",\"adjustByMarket\":\"USDT-USD\"}]}", - "exponent": -9, + "pair": "UNI-USD", "id": 13, + "exponent": -9, "min_exchanges": 3, "min_price_change_ppm": 2500, - "pair": "UNI-USD" + "exchange_config_json": "{\"exchanges\":[{\"exchangeName\":\"Binance\",\"ticker\":\"UNIUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Bybit\",\"ticker\":\"UNIUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"CoinbasePro\",\"ticker\":\"UNI-USD\"},{\"exchangeName\":\"Gate\",\"ticker\":\"UNI_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Kraken\",\"ticker\":\"UNIUSD\"},{\"exchangeName\":\"Kucoin\",\"ticker\":\"UNI-USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Okx\",\"ticker\":\"UNI-USDT\",\"adjustByMarket\":\"USDT-USD\"}]}" }, { - "exchange_config_json": "{\"exchanges\":[{\"exchangeName\":\"Binance\",\"ticker\":\"BCHUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Bybit\",\"ticker\":\"BCHUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"CoinbasePro\",\"ticker\":\"BCH-USD\"},{\"exchangeName\":\"Gate\",\"ticker\":\"BCH_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Huobi\",\"ticker\":\"bchusdt\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Kraken\",\"ticker\":\"BCHUSD\"},{\"exchangeName\":\"Kucoin\",\"ticker\":\"BCH-USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Mexc\",\"ticker\":\"BCH_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Okx\",\"ticker\":\"BCH-USDT\",\"adjustByMarket\":\"USDT-USD\"}]}", - "exponent": -7, + "pair": "BCH-USD", "id": 14, + "exponent": -7, "min_exchanges": 3, "min_price_change_ppm": 2500, - "pair": "BCH-USD" + "exchange_config_json": "{\"exchanges\":[{\"exchangeName\":\"Binance\",\"ticker\":\"BCHUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Bybit\",\"ticker\":\"BCHUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"CoinbasePro\",\"ticker\":\"BCH-USD\"},{\"exchangeName\":\"Gate\",\"ticker\":\"BCH_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Huobi\",\"ticker\":\"bchusdt\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Kraken\",\"ticker\":\"BCHUSD\"},{\"exchangeName\":\"Kucoin\",\"ticker\":\"BCH-USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Mexc\",\"ticker\":\"BCH_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Okx\",\"ticker\":\"BCH-USDT\",\"adjustByMarket\":\"USDT-USD\"}]}" }, { - "exchange_config_json": "{\"exchanges\":[{\"exchangeName\":\"Binance\",\"ticker\":\"TRXUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Bybit\",\"ticker\":\"TRXUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Gate\",\"ticker\":\"TRX_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Huobi\",\"ticker\":\"trxusdt\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Kraken\",\"ticker\":\"TRXUSD\"},{\"exchangeName\":\"Kucoin\",\"ticker\":\"TRX-USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Mexc\",\"ticker\":\"TRX_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Okx\",\"ticker\":\"TRX-USDT\",\"adjustByMarket\":\"USDT-USD\"}]}", - "exponent": -11, + "pair": "TRX-USD", "id": 15, + "exponent": -11, "min_exchanges": 3, "min_price_change_ppm": 2500, - "pair": "TRX-USD" + "exchange_config_json": "{\"exchanges\":[{\"exchangeName\":\"Binance\",\"ticker\":\"TRXUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Bybit\",\"ticker\":\"TRXUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Gate\",\"ticker\":\"TRX_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Huobi\",\"ticker\":\"trxusdt\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Kraken\",\"ticker\":\"TRXUSD\"},{\"exchangeName\":\"Kucoin\",\"ticker\":\"TRX-USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Mexc\",\"ticker\":\"TRX_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Okx\",\"ticker\":\"TRX-USDT\",\"adjustByMarket\":\"USDT-USD\"}]}" }, { - "exchange_config_json": "{\"exchanges\":[{\"exchangeName\":\"Binance\",\"ticker\":\"NEARUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"CoinbasePro\",\"ticker\":\"NEAR-USD\"},{\"exchangeName\":\"Gate\",\"ticker\":\"NEAR_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Huobi\",\"ticker\":\"nearusdt\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Kucoin\",\"ticker\":\"NEAR-USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Mexc\",\"ticker\":\"NEAR_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Okx\",\"ticker\":\"NEAR-USDT\",\"adjustByMarket\":\"USDT-USD\"}]}", - "exponent": -9, + "pair": "NEAR-USD", "id": 16, + "exponent": -9, "min_exchanges": 3, "min_price_change_ppm": 2500, - "pair": "NEAR-USD" + "exchange_config_json": "{\"exchanges\":[{\"exchangeName\":\"Binance\",\"ticker\":\"NEARUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"CoinbasePro\",\"ticker\":\"NEAR-USD\"},{\"exchangeName\":\"Gate\",\"ticker\":\"NEAR_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Huobi\",\"ticker\":\"nearusdt\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Kucoin\",\"ticker\":\"NEAR-USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Mexc\",\"ticker\":\"NEAR_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Okx\",\"ticker\":\"NEAR-USDT\",\"adjustByMarket\":\"USDT-USD\"}]}" }, { - "exchange_config_json": "{\"exchanges\":[{\"exchangeName\":\"Binance\",\"ticker\":\"MKRUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"CoinbasePro\",\"ticker\":\"MKR-USD\"},{\"exchangeName\":\"Kraken\",\"ticker\":\"MKRUSD\"},{\"exchangeName\":\"Kucoin\",\"ticker\":\"MKR-USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Mexc\",\"ticker\":\"MKR_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Okx\",\"ticker\":\"MKR-USDT\",\"adjustByMarket\":\"USDT-USD\"}]}", - "exponent": -6, + "pair": "MKR-USD", "id": 17, + "exponent": -6, "min_exchanges": 3, "min_price_change_ppm": 4000, - "pair": "MKR-USD" + "exchange_config_json": "{\"exchanges\":[{\"exchangeName\":\"Binance\",\"ticker\":\"MKRUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"CoinbasePro\",\"ticker\":\"MKR-USD\"},{\"exchangeName\":\"Kraken\",\"ticker\":\"MKRUSD\"},{\"exchangeName\":\"Kucoin\",\"ticker\":\"MKR-USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Mexc\",\"ticker\":\"MKR_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Okx\",\"ticker\":\"MKR-USDT\",\"adjustByMarket\":\"USDT-USD\"}]}" }, { - "exchange_config_json": "{\"exchanges\":[{\"exchangeName\":\"Binance\",\"ticker\":\"XLMUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Bybit\",\"ticker\":\"XLMUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"CoinbasePro\",\"ticker\":\"XLM-USD\"},{\"exchangeName\":\"Kraken\",\"ticker\":\"XXLMZUSD\"},{\"exchangeName\":\"Kucoin\",\"ticker\":\"XLM-USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Mexc\",\"ticker\":\"XLM_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Okx\",\"ticker\":\"XLM-USDT\",\"adjustByMarket\":\"USDT-USD\"}]}", - "exponent": -10, + "pair": "XLM-USD", "id": 18, + "exponent": -10, "min_exchanges": 3, "min_price_change_ppm": 2500, - "pair": "XLM-USD" + "exchange_config_json": "{\"exchanges\":[{\"exchangeName\":\"Binance\",\"ticker\":\"XLMUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Bybit\",\"ticker\":\"XLMUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"CoinbasePro\",\"ticker\":\"XLM-USD\"},{\"exchangeName\":\"Kraken\",\"ticker\":\"XXLMZUSD\"},{\"exchangeName\":\"Kucoin\",\"ticker\":\"XLM-USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Mexc\",\"ticker\":\"XLM_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Okx\",\"ticker\":\"XLM-USDT\",\"adjustByMarket\":\"USDT-USD\"}]}" }, { - "exchange_config_json": "{\"exchanges\":[{\"exchangeName\":\"Binance\",\"ticker\":\"ETCUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"CoinbasePro\",\"ticker\":\"ETC-USD\"},{\"exchangeName\":\"Gate\",\"ticker\":\"ETC_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Huobi\",\"ticker\":\"etcusdt\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Kucoin\",\"ticker\":\"ETC-USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Mexc\",\"ticker\":\"ETC_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Okx\",\"ticker\":\"ETC-USDT\",\"adjustByMarket\":\"USDT-USD\"}]}", - "exponent": -8, + "pair": "ETC-USD", "id": 19, + "exponent": -8, "min_exchanges": 3, "min_price_change_ppm": 2500, - "pair": "ETC-USD" + "exchange_config_json": "{\"exchanges\":[{\"exchangeName\":\"Binance\",\"ticker\":\"ETCUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"CoinbasePro\",\"ticker\":\"ETC-USD\"},{\"exchangeName\":\"Gate\",\"ticker\":\"ETC_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Huobi\",\"ticker\":\"etcusdt\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Kucoin\",\"ticker\":\"ETC-USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Mexc\",\"ticker\":\"ETC_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Okx\",\"ticker\":\"ETC-USDT\",\"adjustByMarket\":\"USDT-USD\"}]}" }, { - "exchange_config_json": "{\"exchanges\":[{\"exchangeName\":\"Binance\",\"ticker\":\"COMPUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"CoinbasePro\",\"ticker\":\"COMP-USD\"},{\"exchangeName\":\"Gate\",\"ticker\":\"COMP_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Kraken\",\"ticker\":\"COMPUSD\"},{\"exchangeName\":\"Mexc\",\"ticker\":\"COMP_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Okx\",\"ticker\":\"COMP-USDT\",\"adjustByMarket\":\"USDT-USD\"}]}", - "exponent": -8, + "pair": "COMP-USD", "id": 20, + "exponent": -8, "min_exchanges": 3, "min_price_change_ppm": 4000, - "pair": "COMP-USD" + "exchange_config_json": "{\"exchanges\":[{\"exchangeName\":\"Binance\",\"ticker\":\"COMPUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"CoinbasePro\",\"ticker\":\"COMP-USD\"},{\"exchangeName\":\"Gate\",\"ticker\":\"COMP_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Kraken\",\"ticker\":\"COMPUSD\"},{\"exchangeName\":\"Mexc\",\"ticker\":\"COMP_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Okx\",\"ticker\":\"COMP-USDT\",\"adjustByMarket\":\"USDT-USD\"}]}" }, { - "exchange_config_json": "{\"exchanges\":[{\"exchangeName\":\"Binance\",\"ticker\":\"WLDUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Bybit\",\"ticker\":\"WLDUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Gate\",\"ticker\":\"WLD_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Huobi\",\"ticker\":\"wldusdt\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Kucoin\",\"ticker\":\"WLD-USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Mexc\",\"ticker\":\"WLD_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Okx\",\"ticker\":\"WLD-USDT\",\"adjustByMarket\":\"USDT-USD\"}]}", - "exponent": -9, + "pair": "WLD-USD", "id": 21, + "exponent": -9, "min_exchanges": 3, "min_price_change_ppm": 2500, - "pair": "WLD-USD" + "exchange_config_json": "{\"exchanges\":[{\"exchangeName\":\"Binance\",\"ticker\":\"WLDUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Bybit\",\"ticker\":\"WLDUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Gate\",\"ticker\":\"WLD_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Huobi\",\"ticker\":\"wldusdt\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Kucoin\",\"ticker\":\"WLD-USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Mexc\",\"ticker\":\"WLD_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Okx\",\"ticker\":\"WLD-USDT\",\"adjustByMarket\":\"USDT-USD\"}]}" }, { - "exchange_config_json": "{\"exchanges\":[{\"exchangeName\":\"Binance\",\"ticker\":\"APEUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"CoinbasePro\",\"ticker\":\"APE-USD\"},{\"exchangeName\":\"Gate\",\"ticker\":\"APE_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Kraken\",\"ticker\":\"APEUSD\"},{\"exchangeName\":\"Kucoin\",\"ticker\":\"APE-USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Mexc\",\"ticker\":\"APE_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Okx\",\"ticker\":\"APE-USDT\",\"adjustByMarket\":\"USDT-USD\"}]}", - "exponent": -9, + "pair": "APE-USD", "id": 22, + "exponent": -9, "min_exchanges": 3, "min_price_change_ppm": 4000, - "pair": "APE-USD" + "exchange_config_json": "{\"exchanges\":[{\"exchangeName\":\"Binance\",\"ticker\":\"APEUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"CoinbasePro\",\"ticker\":\"APE-USD\"},{\"exchangeName\":\"Gate\",\"ticker\":\"APE_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Kraken\",\"ticker\":\"APEUSD\"},{\"exchangeName\":\"Kucoin\",\"ticker\":\"APE-USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Mexc\",\"ticker\":\"APE_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Okx\",\"ticker\":\"APE-USDT\",\"adjustByMarket\":\"USDT-USD\"}]}" }, { - "exchange_config_json": "{\"exchanges\":[{\"exchangeName\":\"Binance\",\"ticker\":\"APTUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Bybit\",\"ticker\":\"APTUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"CoinbasePro\",\"ticker\":\"APT-USD\"},{\"exchangeName\":\"Gate\",\"ticker\":\"APT_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Huobi\",\"ticker\":\"aptusdt\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Kucoin\",\"ticker\":\"APT-USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Mexc\",\"ticker\":\"APT_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Okx\",\"ticker\":\"APT-USDT\",\"adjustByMarket\":\"USDT-USD\"}]}", - "exponent": -9, + "pair": "APT-USD", "id": 23, + "exponent": -9, "min_exchanges": 3, "min_price_change_ppm": 2500, - "pair": "APT-USD" + "exchange_config_json": "{\"exchanges\":[{\"exchangeName\":\"Binance\",\"ticker\":\"APTUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Bybit\",\"ticker\":\"APTUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"CoinbasePro\",\"ticker\":\"APT-USD\"},{\"exchangeName\":\"Gate\",\"ticker\":\"APT_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Huobi\",\"ticker\":\"aptusdt\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Kucoin\",\"ticker\":\"APT-USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Mexc\",\"ticker\":\"APT_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Okx\",\"ticker\":\"APT-USDT\",\"adjustByMarket\":\"USDT-USD\"}]}" }, { - "exchange_config_json": "{\"exchanges\":[{\"exchangeName\":\"Binance\",\"ticker\":\"ARBUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Bybit\",\"ticker\":\"ARBUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"CoinbasePro\",\"ticker\":\"ARB-USD\"},{\"exchangeName\":\"Gate\",\"ticker\":\"ARB_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Huobi\",\"ticker\":\"arbusdt\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Kucoin\",\"ticker\":\"ARB-USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Mexc\",\"ticker\":\"ARB_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Okx\",\"ticker\":\"ARB-USDT\",\"adjustByMarket\":\"USDT-USD\"}]}", - "exponent": -9, + "pair": "ARB-USD", "id": 24, + "exponent": -9, "min_exchanges": 3, "min_price_change_ppm": 2500, - "pair": "ARB-USD" + "exchange_config_json": "{\"exchanges\":[{\"exchangeName\":\"Binance\",\"ticker\":\"ARBUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Bybit\",\"ticker\":\"ARBUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"CoinbasePro\",\"ticker\":\"ARB-USD\"},{\"exchangeName\":\"Gate\",\"ticker\":\"ARB_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Huobi\",\"ticker\":\"arbusdt\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Kucoin\",\"ticker\":\"ARB-USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Mexc\",\"ticker\":\"ARB_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Okx\",\"ticker\":\"ARB-USDT\",\"adjustByMarket\":\"USDT-USD\"}]}" }, { - "exchange_config_json": "{\"exchanges\":[{\"exchangeName\":\"CoinbasePro\",\"ticker\":\"BLUR-USD\"},{\"exchangeName\":\"Gate\",\"ticker\":\"BLUR_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Kraken\",\"ticker\":\"BLURUSD\"},{\"exchangeName\":\"Kucoin\",\"ticker\":\"BLUR-USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Mexc\",\"ticker\":\"BLUR_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Okx\",\"ticker\":\"BLUR-USDT\",\"adjustByMarket\":\"USDT-USD\"}]}", - "exponent": -10, + "pair": "BLUR-USD", "id": 25, + "exponent": -10, "min_exchanges": 3, "min_price_change_ppm": 4000, - "pair": "BLUR-USD" + "exchange_config_json": "{\"exchanges\":[{\"exchangeName\":\"CoinbasePro\",\"ticker\":\"BLUR-USD\"},{\"exchangeName\":\"Gate\",\"ticker\":\"BLUR_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Kraken\",\"ticker\":\"BLURUSD\"},{\"exchangeName\":\"Kucoin\",\"ticker\":\"BLUR-USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Mexc\",\"ticker\":\"BLUR_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Okx\",\"ticker\":\"BLUR-USDT\",\"adjustByMarket\":\"USDT-USD\"}]}" }, { - "exchange_config_json": "{\"exchanges\":[{\"exchangeName\":\"Binance\",\"ticker\":\"LDOUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"CoinbasePro\",\"ticker\":\"LDO-USD\"},{\"exchangeName\":\"Kraken\",\"ticker\":\"LDOUSD\"},{\"exchangeName\":\"Kucoin\",\"ticker\":\"LDO-USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Mexc\",\"ticker\":\"LDO_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Okx\",\"ticker\":\"LDO-USDT\",\"adjustByMarket\":\"USDT-USD\"}]}", - "exponent": -9, + "pair": "LDO-USD", "id": 26, + "exponent": -9, "min_exchanges": 3, "min_price_change_ppm": 4000, - "pair": "LDO-USD" + "exchange_config_json": "{\"exchanges\":[{\"exchangeName\":\"Binance\",\"ticker\":\"LDOUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"CoinbasePro\",\"ticker\":\"LDO-USD\"},{\"exchangeName\":\"Kraken\",\"ticker\":\"LDOUSD\"},{\"exchangeName\":\"Kucoin\",\"ticker\":\"LDO-USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Mexc\",\"ticker\":\"LDO_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Okx\",\"ticker\":\"LDO-USDT\",\"adjustByMarket\":\"USDT-USD\"}]}" }, { - "exchange_config_json": "{\"exchanges\":[{\"exchangeName\":\"Binance\",\"ticker\":\"OPUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"CoinbasePro\",\"ticker\":\"OP-USD\"},{\"exchangeName\":\"Gate\",\"ticker\":\"OP_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Kucoin\",\"ticker\":\"OP-USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Mexc\",\"ticker\":\"OP_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Okx\",\"ticker\":\"OP-USDT\",\"adjustByMarket\":\"USDT-USD\"}]}", - "exponent": -9, + "pair": "OP-USD", "id": 27, + "exponent": -9, "min_exchanges": 3, "min_price_change_ppm": 2500, - "pair": "OP-USD" + "exchange_config_json": "{\"exchanges\":[{\"exchangeName\":\"Binance\",\"ticker\":\"OPUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"CoinbasePro\",\"ticker\":\"OP-USD\"},{\"exchangeName\":\"Gate\",\"ticker\":\"OP_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Kucoin\",\"ticker\":\"OP-USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Mexc\",\"ticker\":\"OP_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Okx\",\"ticker\":\"OP-USDT\",\"adjustByMarket\":\"USDT-USD\"}]}" }, { - "exchange_config_json": "{\"exchanges\":[{\"exchangeName\":\"Binance\",\"ticker\":\"PEPEUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Bybit\",\"ticker\":\"PEPEUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Gate\",\"ticker\":\"PEPE_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Kraken\",\"ticker\":\"PEPEUSD\"},{\"exchangeName\":\"Kucoin\",\"ticker\":\"PEPE-USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Mexc\",\"ticker\":\"PEPE_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Okx\",\"ticker\":\"PEPE-USDT\",\"adjustByMarket\":\"USDT-USD\"}]}", - "exponent": -16, + "pair": "PEPE-USD", "id": 28, + "exponent": -16, "min_exchanges": 3, "min_price_change_ppm": 2500, - "pair": "PEPE-USD" + "exchange_config_json": "{\"exchanges\":[{\"exchangeName\":\"Binance\",\"ticker\":\"PEPEUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Bybit\",\"ticker\":\"PEPEUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Gate\",\"ticker\":\"PEPE_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Kraken\",\"ticker\":\"PEPEUSD\"},{\"exchangeName\":\"Kucoin\",\"ticker\":\"PEPE-USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Mexc\",\"ticker\":\"PEPE_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Okx\",\"ticker\":\"PEPE-USDT\",\"adjustByMarket\":\"USDT-USD\"}]}" }, { - "exchange_config_json": "{\"exchanges\":[{\"exchangeName\":\"Binance\",\"ticker\":\"SEIUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Bybit\",\"ticker\":\"SEIUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"CoinbasePro\",\"ticker\":\"SEI-USD\"},{\"exchangeName\":\"Gate\",\"ticker\":\"SEI_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Huobi\",\"ticker\":\"seiusdt\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Kucoin\",\"ticker\":\"SEI-USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Mexc\",\"ticker\":\"SEI_USDT\",\"adjustByMarket\":\"USDT-USD\"}]}", - "exponent": -10, + "pair": "SEI-USD", "id": 29, + "exponent": -10, "min_exchanges": 3, "min_price_change_ppm": 4000, - "pair": "SEI-USD" + "exchange_config_json": "{\"exchanges\":[{\"exchangeName\":\"Binance\",\"ticker\":\"SEIUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Bybit\",\"ticker\":\"SEIUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"CoinbasePro\",\"ticker\":\"SEI-USD\"},{\"exchangeName\":\"Gate\",\"ticker\":\"SEI_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Huobi\",\"ticker\":\"seiusdt\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Kucoin\",\"ticker\":\"SEI-USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Mexc\",\"ticker\":\"SEI_USDT\",\"adjustByMarket\":\"USDT-USD\"}]}" }, { - "exchange_config_json": "{\"exchanges\":[{\"exchangeName\":\"Binance\",\"ticker\":\"SHIBUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Bybit\",\"ticker\":\"SHIBUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"CoinbasePro\",\"ticker\":\"SHIB-USD\"},{\"exchangeName\":\"Gate\",\"ticker\":\"SHIB_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Kraken\",\"ticker\":\"SHIBUSD\"},{\"exchangeName\":\"Kucoin\",\"ticker\":\"SHIB-USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Mexc\",\"ticker\":\"SHIB_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Okx\",\"ticker\":\"SHIB-USDT\",\"adjustByMarket\":\"USDT-USD\"}]}", - "exponent": -15, + "pair": "SHIB-USD", "id": 30, + "exponent": -15, "min_exchanges": 3, "min_price_change_ppm": 2500, - "pair": "SHIB-USD" + "exchange_config_json": "{\"exchanges\":[{\"exchangeName\":\"Binance\",\"ticker\":\"SHIBUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Bybit\",\"ticker\":\"SHIBUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"CoinbasePro\",\"ticker\":\"SHIB-USD\"},{\"exchangeName\":\"Gate\",\"ticker\":\"SHIB_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Kraken\",\"ticker\":\"SHIBUSD\"},{\"exchangeName\":\"Kucoin\",\"ticker\":\"SHIB-USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Mexc\",\"ticker\":\"SHIB_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Okx\",\"ticker\":\"SHIB-USDT\",\"adjustByMarket\":\"USDT-USD\"}]}" }, { - "exchange_config_json": "{\"exchanges\":[{\"exchangeName\":\"Binance\",\"ticker\":\"SUIUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Bybit\",\"ticker\":\"SUIUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"CoinbasePro\",\"ticker\":\"SUI-USD\"},{\"exchangeName\":\"Gate\",\"ticker\":\"SUI_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Huobi\",\"ticker\":\"suiusdt\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Kucoin\",\"ticker\":\"SUI-USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Mexc\",\"ticker\":\"SUI_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Okx\",\"ticker\":\"SUI-USDT\",\"adjustByMarket\":\"USDT-USD\"}]}", - "exponent": -10, + "pair": "SUI-USD", "id": 31, + "exponent": -10, "min_exchanges": 3, "min_price_change_ppm": 2500, - "pair": "SUI-USD" + "exchange_config_json": "{\"exchanges\":[{\"exchangeName\":\"Binance\",\"ticker\":\"SUIUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Bybit\",\"ticker\":\"SUIUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"CoinbasePro\",\"ticker\":\"SUI-USD\"},{\"exchangeName\":\"Gate\",\"ticker\":\"SUI_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Huobi\",\"ticker\":\"suiusdt\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Kucoin\",\"ticker\":\"SUI-USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Mexc\",\"ticker\":\"SUI_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Okx\",\"ticker\":\"SUI-USDT\",\"adjustByMarket\":\"USDT-USD\"}]}" }, { - "exchange_config_json": "{\"exchanges\":[{\"exchangeName\":\"Binance\",\"ticker\":\"XRPUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Bybit\",\"ticker\":\"XRPUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"CoinbasePro\",\"ticker\":\"XRP-USD\"},{\"exchangeName\":\"Gate\",\"ticker\":\"XRP_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Huobi\",\"ticker\":\"xrpusdt\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Kraken\",\"ticker\":\"XXRPZUSD\"},{\"exchangeName\":\"Kucoin\",\"ticker\":\"XRP-USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Mexc\",\"ticker\":\"XRP_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Okx\",\"ticker\":\"XRP-USDT\",\"adjustByMarket\":\"USDT-USD\"}]}", - "exponent": -10, + "pair": "XRP-USD", "id": 32, + "exponent": -10, "min_exchanges": 3, "min_price_change_ppm": 2500, - "pair": "XRP-USD" + "exchange_config_json": "{\"exchanges\":[{\"exchangeName\":\"Binance\",\"ticker\":\"XRPUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Bybit\",\"ticker\":\"XRPUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"CoinbasePro\",\"ticker\":\"XRP-USD\"},{\"exchangeName\":\"Gate\",\"ticker\":\"XRP_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Huobi\",\"ticker\":\"xrpusdt\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Kraken\",\"ticker\":\"XXRPZUSD\"},{\"exchangeName\":\"Kucoin\",\"ticker\":\"XRP-USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Mexc\",\"ticker\":\"XRP_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Okx\",\"ticker\":\"XRP-USDT\",\"adjustByMarket\":\"USDT-USD\"}]}" }, { - "exchange_config_json": "{\"exchanges\":[{\"exchangeName\":\"Binance\",\"ticker\":\"USDCUSDT\",\"invert\":true},{\"exchangeName\":\"Bybit\",\"ticker\":\"USDCUSDT\",\"invert\":true},{\"exchangeName\":\"CoinbasePro\",\"ticker\":\"USDT-USD\"},{\"exchangeName\":\"Huobi\",\"ticker\":\"ethusdt\",\"adjustByMarket\":\"ETH-USD\",\"invert\":true},{\"exchangeName\":\"Kraken\",\"ticker\":\"USDTZUSD\"},{\"exchangeName\":\"Kucoin\",\"ticker\":\"BTC-USDT\",\"adjustByMarket\":\"BTC-USD\",\"invert\":true},{\"exchangeName\":\"Okx\",\"ticker\":\"USDC-USDT\",\"invert\":true}]}", - "exponent": -9, + "pair": "USDT-USD", "id": 1000000, + "exponent": -9, "min_exchanges": 3, "min_price_change_ppm": 1000, - "pair": "USDT-USD" + "exchange_config_json": "{\"exchanges\":[{\"exchangeName\":\"Binance\",\"ticker\":\"USDCUSDT\",\"invert\":true},{\"exchangeName\":\"Bybit\",\"ticker\":\"USDCUSDT\",\"invert\":true},{\"exchangeName\":\"CoinbasePro\",\"ticker\":\"USDT-USD\"},{\"exchangeName\":\"Huobi\",\"ticker\":\"ethusdt\",\"adjustByMarket\":\"ETH-USD\",\"invert\":true},{\"exchangeName\":\"Kraken\",\"ticker\":\"USDTZUSD\"},{\"exchangeName\":\"Kucoin\",\"ticker\":\"BTC-USDT\",\"adjustByMarket\":\"BTC-USD\",\"invert\":true},{\"exchangeName\":\"Okx\",\"ticker\":\"USDC-USDT\",\"invert\":true}]}" }, { - "exchange_config_json": "{\"exchanges\":[{\"exchangeName\":\"Binance\",\"ticker\":\"DYDXUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Bybit\",\"ticker\":\"DYDXUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Gate\",\"ticker\":\"DYDX_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Kucoin\",\"ticker\":\"DYDX-USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Mexc\",\"ticker\":\"DYDX_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Okx\",\"ticker\":\"DYDX-USDT\",\"adjustByMarket\":\"USDT-USD\"}]}", - "exponent": -9, + "pair": "DYDX-USD", "id": 1000001, + "exponent": -9, "min_exchanges": 3, "min_price_change_ppm": 2500, - "pair": "DYDX-USD" + "exchange_config_json": "{\"exchanges\":[{\"exchangeName\":\"Binance\",\"ticker\":\"DYDXUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Bybit\",\"ticker\":\"DYDXUSDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Gate\",\"ticker\":\"DYDX_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Kucoin\",\"ticker\":\"DYDX-USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Mexc\",\"ticker\":\"DYDX_USDT\",\"adjustByMarket\":\"USDT-USD\"},{\"exchangeName\":\"Okx\",\"ticker\":\"DYDX-USDT\",\"adjustByMarket\":\"USDT-USD\"}]}" + }, + { + "pair": "TEST-USD", + "id": 33, + "exponent": -5, + "min_exchanges": 1, + "min_price_change_ppm": 250, + "exchange_config_json": "{\"exchanges\":[{\"exchangeName\":\"TestVolatileExchange\",\"ticker\":\"TEST-USD\"}]}" } ], "market_prices": [ { - "exponent": -5, "id": 0, + "exponent": -5, "price": 2868819524 }, { - "exponent": -6, "id": 1, + "exponent": -6, "price": 1811985252 }, { - "exponent": -9, "id": 2, + "exponent": -9, "price": 7204646989 }, { - "exponent": -10, "id": 3, + "exponent": -10, "price": 6665746387 }, { - "exponent": -10, "id": 4, + "exponent": -10, "price": 6029316660 }, { - "exponent": -8, "id": 5, + "exponent": -8, "price": 2350695125 }, { - "exponent": -10, "id": 6, + "exponent": -10, "price": 2918831290 }, { - "exponent": -8, "id": 7, + "exponent": -8, "price": 1223293720 }, { - "exponent": -9, "id": 8, + "exponent": -9, "price": 4050336602 }, { - "exponent": -8, "id": 9, + "exponent": -8, "price": 8193604950 }, { - "exponent": -11, "id": 10, + "exponent": -11, "price": 7320836895 }, { - "exponent": -9, "id": 11, + "exponent": -9, "price": 8433494428 }, { - "exponent": -9, "id": 12, + "exponent": -9, "price": 4937186533 }, { - "exponent": -9, "id": 13, + "exponent": -9, "price": 5852293356 }, { - "exponent": -7, "id": 14, + "exponent": -7, "price": 2255676327 }, { - "exponent": -11, "id": 15, + "exponent": -11, "price": 7795369902 }, { - "exponent": -9, "id": 16, + "exponent": -9, "price": 1312325536 }, { - "exponent": -6, "id": 17, + "exponent": -6, "price": 1199517382 }, { - "exponent": -10, "id": 18, + "exponent": -10, "price": 1398578933 }, { - "exponent": -8, "id": 19, + "exponent": -8, "price": 1741060746 }, { - "exponent": -8, "id": 20, + "exponent": -8, "price": 5717635307 }, { - "exponent": -9, "id": 21, + "exponent": -9, "price": 1943019371 }, { - "exponent": -9, "id": 22, + "exponent": -9, "price": 1842365656 }, { - "exponent": -9, "id": 23, + "exponent": -9, "price": 6787621897 }, { - "exponent": -9, "id": 24, + "exponent": -9, "price": 1127629325 }, { - "exponent": -10, "id": 25, + "exponent": -10, "price": 2779565892 }, { - "exponent": -9, "id": 26, + "exponent": -9, "price": 1855061997 }, { - "exponent": -9, "id": 27, + "exponent": -9, "price": 1562218603 }, { - "exponent": -16, "id": 28, + "exponent": -16, "price": 2481900353 }, { - "exponent": -10, "id": 29, + "exponent": -10, "price": 1686998025 }, { - "exponent": -15, "id": 30, + "exponent": -15, "price": 8895882688 }, { - "exponent": -10, "id": 31, + "exponent": -10, "price": 5896318772 }, { - "exponent": -10, "id": 32, + "exponent": -10, "price": 6327613800 }, { - "exponent": -9, "id": 1000000, + "exponent": -9, "price": 1000000000 }, { - "exponent": -9, "id": 1000001, + "exponent": -9, "price": 2050000000 + }, + { + "id": 33, + "exponent": -5, + "price": 10000000 } ] }, @@ -2072,14 +2164,14 @@ "denom": "ibc/8E27BA2D5493AF5636760E354E46004562C46AB7EC0CC4C1CA14E9E20E2545B5", "limiters": [ { + "period": "3600s", "baseline_minimum": "1000000000000", - "baseline_tvl_ppm": 10000, - "period": "3600s" + "baseline_tvl_ppm": 10000 }, { + "period": "86400s", "baseline_minimum": "10000000000000", - "baseline_tvl_ppm": 100000, - "period": "86400s" + "baseline_tvl_ppm": 100000 } ] } @@ -2087,41 +2179,41 @@ }, "rewards": { "params": { + "treasury_account": "rewards_treasury", "denom": "adv4tnt", "denom_exponent": -18, - "fee_multiplier_ppm": 990000, "market_id": 11, - "treasury_account": "rewards_treasury" + "fee_multiplier_ppm": 990000 } }, "sending": {}, "slashing": { - "missed_blocks": [], "params": { - "downtime_jail_duration": "60s", - "min_signed_per_window": "0.050000000000000000", "signed_blocks_window": "3000", + "min_signed_per_window": "0.050000000000000000", + "downtime_jail_duration": "60s", "slash_fraction_double_sign": "0.000000000000000000", "slash_fraction_downtime": "0.000000000000000000" }, - "signing_infos": [] + "signing_infos": [], + "missed_blocks": [] }, "staking": { - "delegations": [], - "exported": false, - "last_total_power": "0", - "last_validator_powers": [], "params": { - "bond_denom": "adv4tnt", - "historical_entries": 10000, - "max_entries": 7, + "unbonding_time": "1814400s", "max_validators": 100, - "min_commission_rate": "0.000000000000000000", - "unbonding_time": "1814400s" + "max_entries": 7, + "historical_entries": 10000, + "bond_denom": "adv4tnt", + "min_commission_rate": "0.000000000000000000" }, - "redelegations": [], + "last_total_power": "0", + "last_validator_powers": [], + "validators": [], + "delegations": [], "unbonding_delegations": [], - "validators": [] + "redelegations": [], + "exported": false }, "stats": { "params": { @@ -2131,113 +2223,113 @@ "subaccounts": { "subaccounts": [ { + "id": { + "owner": "dydx199tqg4wdlnu4qjlxchpd7seg454937hjrknju4", + "number": 0 + }, + "margin_enabled": true, "asset_positions": [ { "asset_id": 0, - "index": 0, - "quantums": "100000000000000000" + "quantums": "100000000000000000", + "index": 0 } - ], - "id": { - "number": 0, - "owner": "dydx199tqg4wdlnu4qjlxchpd7seg454937hjrknju4" - }, - "margin_enabled": true + ] }, { + "id": { + "owner": "dydx10fx7sy6ywd5senxae9dwytf8jxek3t2gcen2vs", + "number": 0 + }, + "margin_enabled": true, "asset_positions": [ { "asset_id": 0, - "index": 0, - "quantums": "100000000000000000" + "quantums": "100000000000000000", + "index": 0 } - ], - "id": { - "number": 0, - "owner": "dydx10fx7sy6ywd5senxae9dwytf8jxek3t2gcen2vs" - }, - "margin_enabled": true + ] }, { + "id": { + "owner": "dydx1fjg6zp6vv8t9wvy4lps03r5l4g7tkjw9wvmh70", + "number": 0 + }, + "margin_enabled": true, "asset_positions": [ { "asset_id": 0, - "index": 0, - "quantums": "100000000000000000" + "quantums": "100000000000000000", + "index": 0 } - ], - "id": { - "number": 0, - "owner": "dydx1fjg6zp6vv8t9wvy4lps03r5l4g7tkjw9wvmh70" - }, - "margin_enabled": true + ] }, { + "id": { + "owner": "dydx1wau5mja7j7zdavtfq9lu7ejef05hm6ffenlcsn", + "number": 0 + }, + "margin_enabled": true, "asset_positions": [ { "asset_id": 0, - "index": 0, - "quantums": "100000000000000000" + "quantums": "100000000000000000", + "index": 0 } - ], - "id": { - "number": 0, - "owner": "dydx1wau5mja7j7zdavtfq9lu7ejef05hm6ffenlcsn" - }, - "margin_enabled": true + ] }, { + "id": { + "owner": "dydx1nzuttarf5k2j0nug5yzhr6p74t9avehn9hlh8m", + "number": 0 + }, + "margin_enabled": true, "asset_positions": [ { "asset_id": 0, - "index": 0, - "quantums": "900000000000000000" + "quantums": "900000000000000000", + "index": 0 } - ], - "id": { - "number": 0, - "owner": "dydx1nzuttarf5k2j0nug5yzhr6p74t9avehn9hlh8m" - }, - "margin_enabled": true + ] } ] }, "transfer": { + "port_id": "transfer", "denom_traces": [], "params": { - "receive_enabled": true, - "send_enabled": true + "send_enabled": true, + "receive_enabled": true }, - "port_id": "transfer", "total_escrowed": [] }, "upgrade": {}, "vault": { "params": { - "activation_threshold_quote_quantums": "1000000000", "layers": 2, - "order_expiration_seconds": 2, - "order_size_pct_ppm": 100000, - "skew_factor_ppm": 2000000, + "spread_min_ppm": 10000, "spread_buffer_ppm": 1500, - "spread_min_ppm": 10000 + "skew_factor_ppm": 2000000, + "order_size_pct_ppm": 100000, + "order_expiration_seconds": 2, + "activation_threshold_quote_quantums": "1000000000" } }, "vest": { "vest_entries": [ { + "vester_account": "community_vester", + "treasury_account": "community_treasury", "denom": "adv4tnt", - "end_time": "2025-01-01T00:00:00Z", "start_time": "2023-01-01T00:00:00Z", - "treasury_account": "community_treasury", - "vester_account": "community_vester" + "end_time": "2025-01-01T00:00:00Z" }, { + "vester_account": "rewards_vester", + "treasury_account": "rewards_treasury", "denom": "adv4tnt", - "end_time": "2025-01-01T00:00:00Z", "start_time": "2023-01-01T00:00:00Z", - "treasury_account": "rewards_treasury", - "vester_account": "rewards_vester" + "end_time": "2025-01-01T00:00:00Z" } ] } @@ -2245,7 +2337,7 @@ "consensus": { "params": { "block": { - "max_bytes": "22020096", + "max_bytes": "4194304", "max_gas": "-1" }, "evidence": { @@ -2262,8 +2354,8 @@ "app": "0" }, "abci": { - "vote_extensions_enable_height": "0" + "vote_extensions_enable_height": "1" } } } -} \ No newline at end of file +}