From 1e2a394b1d88f1f4b252c8229f8e4c5dce63cd1d Mon Sep 17 00:00:00 2001 From: Teddy Ding Date: Thu, 21 Mar 2024 23:33:02 -0400 Subject: [PATCH] fix liquidation config e2e --- protocol/testutil/constants/perpetuals.go | 13 +++++++ .../clob/e2e/liquidation_deleveraging_test.go | 36 +++++++++---------- protocol/x/perpetuals/genesis.go | 18 +++------- 3 files changed, 36 insertions(+), 31 deletions(-) diff --git a/protocol/testutil/constants/perpetuals.go b/protocol/testutil/constants/perpetuals.go index 1d4a9f06d3..3c6db1e6fa 100644 --- a/protocol/testutil/constants/perpetuals.go +++ b/protocol/testutil/constants/perpetuals.go @@ -264,6 +264,19 @@ var ( FundingIndex: dtypes.ZeroInt(), OpenInterest: dtypes.ZeroInt(), } + BtcUsd_20PercentInitial_10PercentMaintenance_OpenInterest1 = perptypes.Perpetual{ + Params: perptypes.PerpetualParams{ + Id: 0, + Ticker: "BTC-USD 20/10 margin requirements", + MarketId: uint32(0), + AtomicResolution: int32(-8), + DefaultFundingPpm: int32(0), + LiquidityTier: uint32(3), + MarketType: perptypes.PerpetualMarketType_PERPETUAL_MARKET_TYPE_CROSS, + }, + FundingIndex: dtypes.ZeroInt(), + OpenInterest: dtypes.NewInt(100_000_000), + } BtcUsd_20PercentInitial_10PercentMaintenance_25mmLowerCap_50mmUpperCap = perptypes.Perpetual{ Params: perptypes.PerpetualParams{ Id: 0, diff --git a/protocol/x/clob/e2e/liquidation_deleveraging_test.go b/protocol/x/clob/e2e/liquidation_deleveraging_test.go index 167ff50fd8..0e4103c111 100644 --- a/protocol/x/clob/e2e/liquidation_deleveraging_test.go +++ b/protocol/x/clob/e2e/liquidation_deleveraging_test.go @@ -65,7 +65,7 @@ func TestLiquidationConfig(t *testing.T) { liquidityTiers: constants.LiquidityTiers, perpetuals: []perptypes.Perpetual{ - constants.BtcUsd_20PercentInitial_10PercentMaintenance, + constants.BtcUsd_20PercentInitial_10PercentMaintenance_OpenInterest1, }, clobPairs: []clobtypes.ClobPair{constants.ClobPair_Btc}, @@ -115,7 +115,7 @@ func TestLiquidationConfig(t *testing.T) { liquidityTiers: constants.LiquidityTiers, perpetuals: []perptypes.Perpetual{ - constants.BtcUsd_20PercentInitial_10PercentMaintenance, + constants.BtcUsd_20PercentInitial_10PercentMaintenance_OpenInterest1, }, clobPairs: []clobtypes.ClobPair{constants.ClobPair_Btc}, @@ -163,7 +163,7 @@ func TestLiquidationConfig(t *testing.T) { liquidityTiers: constants.LiquidityTiers, perpetuals: []perptypes.Perpetual{ - constants.BtcUsd_20PercentInitial_10PercentMaintenance, + constants.BtcUsd_20PercentInitial_10PercentMaintenance_OpenInterest1, }, clobPairs: []clobtypes.ClobPair{constants.ClobPair_Btc}, @@ -225,7 +225,7 @@ func TestLiquidationConfig(t *testing.T) { liquidityTiers: constants.LiquidityTiers, perpetuals: []perptypes.Perpetual{ - constants.BtcUsd_20PercentInitial_10PercentMaintenance, + constants.BtcUsd_20PercentInitial_10PercentMaintenance_OpenInterest1, }, clobPairs: []clobtypes.ClobPair{constants.ClobPair_Btc}, @@ -287,7 +287,7 @@ func TestLiquidationConfig(t *testing.T) { liquidityTiers: constants.LiquidityTiers, perpetuals: []perptypes.Perpetual{ - constants.BtcUsd_20PercentInitial_10PercentMaintenance, + constants.BtcUsd_20PercentInitial_10PercentMaintenance_OpenInterest1, }, clobPairs: []clobtypes.ClobPair{constants.ClobPair_Btc}, @@ -353,7 +353,7 @@ func TestLiquidationConfig(t *testing.T) { liquidityTiers: constants.LiquidityTiers, perpetuals: []perptypes.Perpetual{ - constants.BtcUsd_20PercentInitial_10PercentMaintenance, + constants.BtcUsd_20PercentInitial_10PercentMaintenance_OpenInterest1, }, clobPairs: []clobtypes.ClobPair{constants.ClobPair_Btc}, @@ -425,7 +425,7 @@ func TestLiquidationConfig(t *testing.T) { liquidityTiers: constants.LiquidityTiers, perpetuals: []perptypes.Perpetual{ - constants.BtcUsd_20PercentInitial_10PercentMaintenance, + constants.BtcUsd_20PercentInitial_10PercentMaintenance_OpenInterest1, }, clobPairs: []clobtypes.ClobPair{constants.ClobPair_Btc}, @@ -498,7 +498,7 @@ func TestLiquidationConfig(t *testing.T) { liquidityTiers: constants.LiquidityTiers, perpetuals: []perptypes.Perpetual{ - constants.BtcUsd_20PercentInitial_10PercentMaintenance, + constants.BtcUsd_20PercentInitial_10PercentMaintenance_OpenInterest1, }, clobPairs: []clobtypes.ClobPair{constants.ClobPair_Btc}, @@ -670,7 +670,7 @@ func TestPlacePerpetualLiquidation_Deleveraging(t *testing.T) { liquidityTiers: constants.LiquidityTiers, perpetuals: []perptypes.Perpetual{ - constants.BtcUsd_20PercentInitial_10PercentMaintenance, + constants.BtcUsd_20PercentInitial_10PercentMaintenance_OpenInterest1, }, clobPairs: []clobtypes.ClobPair{constants.ClobPair_Btc}, @@ -712,7 +712,7 @@ func TestPlacePerpetualLiquidation_Deleveraging(t *testing.T) { liquidityTiers: constants.LiquidityTiers, perpetuals: []perptypes.Perpetual{ - constants.BtcUsd_20PercentInitial_10PercentMaintenance, + constants.BtcUsd_20PercentInitial_10PercentMaintenance_OpenInterest1, }, clobPairs: []clobtypes.ClobPair{constants.ClobPair_Btc}, @@ -771,7 +771,7 @@ func TestPlacePerpetualLiquidation_Deleveraging(t *testing.T) { liquidityTiers: constants.LiquidityTiers, perpetuals: []perptypes.Perpetual{ - constants.BtcUsd_20PercentInitial_10PercentMaintenance, + constants.BtcUsd_20PercentInitial_10PercentMaintenance_OpenInterest1, }, clobPairs: []clobtypes.ClobPair{constants.ClobPair_Btc}, @@ -812,7 +812,7 @@ func TestPlacePerpetualLiquidation_Deleveraging(t *testing.T) { liquidityTiers: constants.LiquidityTiers, perpetuals: []perptypes.Perpetual{ - constants.BtcUsd_20PercentInitial_10PercentMaintenance, + constants.BtcUsd_20PercentInitial_10PercentMaintenance_OpenInterest1, }, clobPairs: []clobtypes.ClobPair{constants.ClobPair_Btc}, @@ -869,7 +869,7 @@ func TestPlacePerpetualLiquidation_Deleveraging(t *testing.T) { liquidityTiers: constants.LiquidityTiers, perpetuals: []perptypes.Perpetual{ - constants.BtcUsd_20PercentInitial_10PercentMaintenance, + constants.BtcUsd_20PercentInitial_10PercentMaintenance_OpenInterest1, }, clobPairs: []clobtypes.ClobPair{constants.ClobPair_Btc}, @@ -901,7 +901,7 @@ func TestPlacePerpetualLiquidation_Deleveraging(t *testing.T) { liquidityTiers: constants.LiquidityTiers, perpetuals: []perptypes.Perpetual{ - constants.BtcUsd_20PercentInitial_10PercentMaintenance, + constants.BtcUsd_20PercentInitial_10PercentMaintenance_OpenInterest1, }, clobPairs: []clobtypes.ClobPair{constants.ClobPair_Btc}, @@ -957,7 +957,7 @@ func TestPlacePerpetualLiquidation_Deleveraging(t *testing.T) { liquidityTiers: constants.LiquidityTiers, perpetuals: []perptypes.Perpetual{ - constants.BtcUsd_20PercentInitial_10PercentMaintenance, + constants.BtcUsd_20PercentInitial_10PercentMaintenance_OpenInterest1, }, clobPairs: []clobtypes.ClobPair{constants.ClobPair_Btc}, @@ -1022,7 +1022,7 @@ func TestPlacePerpetualLiquidation_Deleveraging(t *testing.T) { liquidityTiers: constants.LiquidityTiers, perpetuals: []perptypes.Perpetual{ - constants.BtcUsd_20PercentInitial_10PercentMaintenance, + constants.BtcUsd_20PercentInitial_10PercentMaintenance_OpenInterest1, }, clobPairs: []clobtypes.ClobPair{constants.ClobPair_Btc}, @@ -1056,7 +1056,7 @@ func TestPlacePerpetualLiquidation_Deleveraging(t *testing.T) { liquidationConfig: constants.LiquidationsConfig_FillablePrice_Max_Smmr, liquidityTiers: constants.LiquidityTiers, perpetuals: []perptypes.Perpetual{ - constants.BtcUsd_20PercentInitial_10PercentMaintenance, + constants.BtcUsd_20PercentInitial_10PercentMaintenance_OpenInterest1, }, clobPairs: []clobtypes.ClobPair{constants.ClobPair_Btc_Final_Settlement}, @@ -1085,7 +1085,7 @@ func TestPlacePerpetualLiquidation_Deleveraging(t *testing.T) { liquidationConfig: constants.LiquidationsConfig_FillablePrice_Max_Smmr, liquidityTiers: constants.LiquidityTiers, perpetuals: []perptypes.Perpetual{ - constants.BtcUsd_20PercentInitial_10PercentMaintenance, + constants.BtcUsd_20PercentInitial_10PercentMaintenance_OpenInterest1, }, clobPairs: []clobtypes.ClobPair{constants.ClobPair_Btc_Final_Settlement}, diff --git a/protocol/x/perpetuals/genesis.go b/protocol/x/perpetuals/genesis.go index db9650d916..7c9b9d7e59 100644 --- a/protocol/x/perpetuals/genesis.go +++ b/protocol/x/perpetuals/genesis.go @@ -35,22 +35,14 @@ func InitGenesis(ctx sdk.Context, k keeper.Keeper, genState types.GenesisState) } } - // Create all the perpetuals. + // Initialize all the perpetuals. + // Instead of calling `CreatePerpetual`, we call `SetPerpetual` directly to + // to allow initializing non-zero open interest/funding index at genesis. for _, elem := range genState.Perpetuals { - _, err := k.CreatePerpetual( + k.SetPerpetual( ctx, - elem.Params.Id, - elem.Params.Ticker, - elem.Params.MarketId, - elem.Params.AtomicResolution, - elem.Params.DefaultFundingPpm, - elem.Params.LiquidityTier, - elem.Params.MarketType, + elem, ) - - if err != nil { - panic(err) - } } }