From 14733d4407514747277b64515b73fcf0c4bf4695 Mon Sep 17 00:00:00 2001 From: Philip Su Date: Thu, 10 Nov 2022 10:18:49 -0800 Subject: [PATCH 01/10] Remove height from match result key --- x/dex/keeper/asset_list.go | 6 +- x/dex/keeper/contract.go | 8 +- x/dex/keeper/epoch.go | 4 +- x/dex/keeper/keeper.go | 12 +-- x/dex/keeper/long_book.go | 12 +-- x/dex/keeper/match_result.go | 21 ++--- x/dex/keeper/order_placement.go | 4 +- x/dex/keeper/pair.go | 8 +- x/dex/keeper/price.go | 8 +- x/dex/keeper/query/grpc_query_match_result.go | 2 +- x/dex/keeper/short_book.go | 12 +-- x/dex/keeper/tick.go | 8 +- x/dex/keeper/trigger_book.go | 10 +- x/dex/migrations/v9_to_v10.go | 53 +++++++++++ x/dex/migrations/v9_to_v10_test.go | 91 +++++++++++++++++++ x/dex/module.go | 5 +- x/dex/module_test.go | 14 +-- 17 files changed, 209 insertions(+), 69 deletions(-) create mode 100644 x/dex/migrations/v9_to_v10.go create mode 100644 x/dex/migrations/v9_to_v10_test.go diff --git a/x/dex/keeper/asset_list.go b/x/dex/keeper/asset_list.go index 3ae416e386..84292bb228 100644 --- a/x/dex/keeper/asset_list.go +++ b/x/dex/keeper/asset_list.go @@ -6,7 +6,7 @@ import ( ) func (k Keeper) SetAssetMetadata(ctx sdk.Context, assetMetadata types.AssetMetadata) { - store := ctx.KVStore(k.storeKey) + store := ctx.KVStore(k.StoreKey) // We only allow one asset per base denom for now // Even if asset exists already, overwrite the store with new metadata b := k.Cdc.MustMarshal(&assetMetadata) @@ -15,7 +15,7 @@ func (k Keeper) SetAssetMetadata(ctx sdk.Context, assetMetadata types.AssetMetad } func (k Keeper) GetAssetMetadataByDenom(ctx sdk.Context, assetDenom string) (val types.AssetMetadata, found bool) { - store := ctx.KVStore(k.storeKey) + store := ctx.KVStore(k.StoreKey) b := store.Get(types.AssetListPrefix(assetDenom)) if b == nil { return types.AssetMetadata{}, false @@ -26,7 +26,7 @@ func (k Keeper) GetAssetMetadataByDenom(ctx sdk.Context, assetDenom string) (val } func (k Keeper) GetAllAssetMetadata(ctx sdk.Context) []types.AssetMetadata { - store := ctx.KVStore(k.storeKey) + store := ctx.KVStore(k.StoreKey) iterator := sdk.KVStorePrefixIterator(store, types.KeyPrefix(types.AssetListKey)) list := []types.AssetMetadata{} diff --git a/x/dex/keeper/contract.go b/x/dex/keeper/contract.go index 752380aa3b..47a37d3154 100644 --- a/x/dex/keeper/contract.go +++ b/x/dex/keeper/contract.go @@ -13,7 +13,7 @@ const ContractPrefixKey = "x-wasm-contract" func (k Keeper) SetContract(ctx sdk.Context, contract *types.ContractInfoV2) error { store := prefix.NewStore( - ctx.KVStore(k.storeKey), + ctx.KVStore(k.StoreKey), []byte(ContractPrefixKey), ) bz, err := contract.Marshal() @@ -27,7 +27,7 @@ func (k Keeper) SetContract(ctx sdk.Context, contract *types.ContractInfoV2) err func (k Keeper) DeleteContract(ctx sdk.Context, contractAddr string) { store := prefix.NewStore( - ctx.KVStore(k.storeKey), + ctx.KVStore(k.StoreKey), []byte(ContractPrefixKey), ) key := contractKey(contractAddr) @@ -36,7 +36,7 @@ func (k Keeper) DeleteContract(ctx sdk.Context, contractAddr string) { func (k Keeper) GetContract(ctx sdk.Context, contractAddr string) (types.ContractInfoV2, error) { store := prefix.NewStore( - ctx.KVStore(k.storeKey), + ctx.KVStore(k.StoreKey), []byte(ContractPrefixKey), ) key := contractKey(contractAddr) @@ -51,7 +51,7 @@ func (k Keeper) GetContract(ctx sdk.Context, contractAddr string) (types.Contrac } func (k Keeper) GetAllContractInfo(ctx sdk.Context) []types.ContractInfoV2 { - store := prefix.NewStore(ctx.KVStore(k.storeKey), []byte(ContractPrefixKey)) + store := prefix.NewStore(ctx.KVStore(k.StoreKey), []byte(ContractPrefixKey)) iterator := sdk.KVStorePrefixIterator(store, []byte{}) defer iterator.Close() diff --git a/x/dex/keeper/epoch.go b/x/dex/keeper/epoch.go index 33f8012af4..7a04d61385 100644 --- a/x/dex/keeper/epoch.go +++ b/x/dex/keeper/epoch.go @@ -10,7 +10,7 @@ import ( const EpochKey = "epoch" func (k Keeper) SetEpoch(ctx sdk.Context, epoch uint64) { - store := ctx.KVStore(k.storeKey) + store := ctx.KVStore(k.StoreKey) bz := make([]byte, 8) binary.BigEndian.PutUint64(bz, epoch) store.Set([]byte(EpochKey), bz) @@ -18,7 +18,7 @@ func (k Keeper) SetEpoch(ctx sdk.Context, epoch uint64) { } func (k Keeper) IsNewEpoch(ctx sdk.Context) (bool, uint64) { - store := ctx.KVStore(k.storeKey) + store := ctx.KVStore(k.StoreKey) b := store.Get([]byte(EpochKey)) lastEpoch := binary.BigEndian.Uint64(b) currentEpoch := k.EpochKeeper.GetEpoch(ctx).CurrentEpoch diff --git a/x/dex/keeper/keeper.go b/x/dex/keeper/keeper.go index 6c854e98a5..47470b13a5 100644 --- a/x/dex/keeper/keeper.go +++ b/x/dex/keeper/keeper.go @@ -19,9 +19,9 @@ import ( type ( Keeper struct { - Cdc codec.BinaryCodec - storeKey sdk.StoreKey - memKey sdk.StoreKey + Cdc codec.BinaryCodec + StoreKey sdk.StoreKey + memKey sdk.StoreKey Paramstore paramtypes.Subspace AccountKeeper authkeeper.AccountKeeper EpochKeeper epochkeeper.Keeper @@ -43,7 +43,7 @@ func NewPlainKeeper( } return &Keeper{ Cdc: cdc, - storeKey: storeKey, + StoreKey: storeKey, memKey: memKey, Paramstore: ps, MemState: dexcache.NewMemState(), @@ -65,7 +65,7 @@ func NewKeeper( } return &Keeper{ Cdc: cdc, - storeKey: storeKey, + StoreKey: storeKey, memKey: memKey, Paramstore: ps, EpochKeeper: epochKeeper, @@ -80,7 +80,7 @@ func (k Keeper) Logger(ctx sdk.Context) log.Logger { } func (k Keeper) GetStoreKey() sdk.StoreKey { - return k.storeKey + return k.StoreKey } func (k *Keeper) SetWasmKeeper(wasmKeeper *wasm.Keeper) { diff --git a/x/dex/keeper/long_book.go b/x/dex/keeper/long_book.go index 971248faa4..153895a5b9 100644 --- a/x/dex/keeper/long_book.go +++ b/x/dex/keeper/long_book.go @@ -10,7 +10,7 @@ import ( // SetLongBook set a specific longBook in the store func (k Keeper) SetLongBook(ctx sdk.Context, contractAddr string, longBook types.LongBook) { store := prefix.NewStore( - ctx.KVStore(k.storeKey), + ctx.KVStore(k.StoreKey), types.OrderBookPrefix( true, contractAddr, longBook.Entry.PriceDenom, longBook.Entry.AssetDenom, ), @@ -21,7 +21,7 @@ func (k Keeper) SetLongBook(ctx sdk.Context, contractAddr string, longBook types func (k Keeper) GetLongBookByPrice(ctx sdk.Context, contractAddr string, price sdk.Dec, priceDenom string, assetDenom string) (val types.LongBook, found bool) { store := prefix.NewStore( - ctx.KVStore(k.storeKey), + ctx.KVStore(k.StoreKey), types.OrderBookPrefix( true, contractAddr, priceDenom, assetDenom, ), @@ -36,7 +36,7 @@ func (k Keeper) GetLongBookByPrice(ctx sdk.Context, contractAddr string, price s func (k Keeper) RemoveLongBookByPrice(ctx sdk.Context, contractAddr string, price sdk.Dec, priceDenom string, assetDenom string) { store := prefix.NewStore( - ctx.KVStore(k.storeKey), + ctx.KVStore(k.StoreKey), types.OrderBookPrefix( true, contractAddr, priceDenom, assetDenom, ), @@ -46,7 +46,7 @@ func (k Keeper) RemoveLongBookByPrice(ctx sdk.Context, contractAddr string, pric // GetAllLongBook returns all longBook func (k Keeper) GetAllLongBook(ctx sdk.Context, contractAddr string) (list []types.LongBook) { - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.ContractKeyPrefix(types.LongBookKey, contractAddr)) + store := prefix.NewStore(ctx.KVStore(k.StoreKey), types.ContractKeyPrefix(types.LongBookKey, contractAddr)) iterator := sdk.KVStorePrefixIterator(store, []byte{}) defer iterator.Close() @@ -61,7 +61,7 @@ func (k Keeper) GetAllLongBook(ctx sdk.Context, contractAddr string) (list []typ } func (k Keeper) GetAllLongBookForPair(ctx sdk.Context, contractAddr string, priceDenom string, assetDenom string) (list []types.OrderBookEntry) { - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.OrderBookPrefix(true, contractAddr, priceDenom, assetDenom)) + store := prefix.NewStore(ctx.KVStore(k.StoreKey), types.OrderBookPrefix(true, contractAddr, priceDenom, assetDenom)) iterator := sdk.KVStorePrefixIterator(store, []byte{}) defer iterator.Close() @@ -76,7 +76,7 @@ func (k Keeper) GetAllLongBookForPair(ctx sdk.Context, contractAddr string, pric } func (k Keeper) GetAllLongBookForPairPaginated(ctx sdk.Context, contractAddr string, priceDenom string, assetDenom string, page *query.PageRequest) (list []types.LongBook, pageRes *query.PageResponse, err error) { - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.OrderBookPrefix(true, contractAddr, priceDenom, assetDenom)) + store := prefix.NewStore(ctx.KVStore(k.StoreKey), types.OrderBookPrefix(true, contractAddr, priceDenom, assetDenom)) pageRes, err = query.Paginate(store, page, func(key []byte, value []byte) error { var longBook types.LongBook diff --git a/x/dex/keeper/match_result.go b/x/dex/keeper/match_result.go index 12fe1032d1..2b81787d17 100644 --- a/x/dex/keeper/match_result.go +++ b/x/dex/keeper/match_result.go @@ -1,16 +1,16 @@ package keeper import ( - "encoding/binary" - "github.com/cosmos/cosmos-sdk/store/prefix" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/sei-protocol/sei-chain/x/dex/types" ) +const MatchResultKey = "match-result" + func (k Keeper) SetMatchResult(ctx sdk.Context, contractAddr string, result *types.MatchResult) { store := prefix.NewStore( - ctx.KVStore(k.storeKey), + ctx.KVStore(k.StoreKey), types.MatchResultPrefix(contractAddr), ) height := ctx.BlockHeight() @@ -20,22 +20,15 @@ func (k Keeper) SetMatchResult(ctx sdk.Context, contractAddr string, result *typ if err != nil { panic(err) } - key := make([]byte, 8) - binary.BigEndian.PutUint64(key, uint64(height)) - store.Set(key, bz) + store.Set([]byte(MatchResultKey), bz) } -func (k Keeper) GetMatchResultState(ctx sdk.Context, contractAddr string, height int64) (*types.MatchResult, bool) { +func (k Keeper) GetMatchResultState(ctx sdk.Context, contractAddr string) (*types.MatchResult, bool) { store := prefix.NewStore( - ctx.KVStore(k.storeKey), + ctx.KVStore(k.StoreKey), types.MatchResultPrefix(contractAddr), ) - key := make([]byte, 8) - binary.BigEndian.PutUint64(key, uint64(height)) - if !store.Has(key) { - return nil, false - } - bz := store.Get(key) + bz := store.Get([]byte(MatchResultKey)) result := types.MatchResult{} if err := result.Unmarshal(bz); err != nil { panic(err) diff --git a/x/dex/keeper/order_placement.go b/x/dex/keeper/order_placement.go index 3dab2f3880..7f3c7f2f61 100644 --- a/x/dex/keeper/order_placement.go +++ b/x/dex/keeper/order_placement.go @@ -9,7 +9,7 @@ import ( ) func (k Keeper) GetNextOrderID(ctx sdk.Context, contractAddr string) uint64 { - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.NextOrderIDPrefix(contractAddr)) + store := prefix.NewStore(ctx.KVStore(k.StoreKey), types.NextOrderIDPrefix(contractAddr)) byteKey := types.KeyPrefix(types.NextOrderIDKey) bz := store.Get(byteKey) if bz == nil { @@ -19,7 +19,7 @@ func (k Keeper) GetNextOrderID(ctx sdk.Context, contractAddr string) uint64 { } func (k Keeper) SetNextOrderID(ctx sdk.Context, contractAddr string, nextID uint64) { - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.NextOrderIDPrefix(contractAddr)) + store := prefix.NewStore(ctx.KVStore(k.StoreKey), types.NextOrderIDPrefix(contractAddr)) byteKey := types.KeyPrefix(types.NextOrderIDKey) bz := make([]byte, 8) binary.BigEndian.PutUint64(bz, nextID) diff --git a/x/dex/keeper/pair.go b/x/dex/keeper/pair.go index c44e7a8d3e..0ee9ff7960 100644 --- a/x/dex/keeper/pair.go +++ b/x/dex/keeper/pair.go @@ -10,7 +10,7 @@ import ( func (k Keeper) SetPairCount(ctx sdk.Context, contractAddr string, count uint64) { store := prefix.NewStore( - ctx.KVStore(k.storeKey), + ctx.KVStore(k.StoreKey), types.RegisteredPairCountPrefix(), ) countBytes := make([]byte, 8) @@ -20,7 +20,7 @@ func (k Keeper) SetPairCount(ctx sdk.Context, contractAddr string, count uint64) func (k Keeper) GetPairCount(ctx sdk.Context, contractAddr string) uint64 { store := prefix.NewStore( - ctx.KVStore(k.storeKey), + ctx.KVStore(k.StoreKey), types.RegisteredPairCountPrefix(), ) cnt := store.Get(types.KeyPrefix(contractAddr)) @@ -38,7 +38,7 @@ func (k Keeper) AddRegisteredPair(ctx sdk.Context, contractAddr string, pair typ } } oldPairCnt := k.GetPairCount(ctx, contractAddr) - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.RegisteredPairPrefix(contractAddr)) + store := prefix.NewStore(ctx.KVStore(k.StoreKey), types.RegisteredPairPrefix(contractAddr)) keyBytes := make([]byte, 8) binary.BigEndian.PutUint64(keyBytes, oldPairCnt) store.Set(keyBytes, k.Cdc.MustMarshal(&pair)) @@ -48,7 +48,7 @@ func (k Keeper) AddRegisteredPair(ctx sdk.Context, contractAddr string, pair typ } func (k Keeper) GetAllRegisteredPairs(ctx sdk.Context, contractAddr string) []types.Pair { - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.RegisteredPairPrefix(contractAddr)) + store := prefix.NewStore(ctx.KVStore(k.StoreKey), types.RegisteredPairPrefix(contractAddr)) iterator := sdk.KVStorePrefixIterator(store, []byte{}) list := []types.Pair{} diff --git a/x/dex/keeper/price.go b/x/dex/keeper/price.go index bf44cbba61..3a29433698 100644 --- a/x/dex/keeper/price.go +++ b/x/dex/keeper/price.go @@ -10,13 +10,13 @@ import ( ) func (k Keeper) SetPriceState(ctx sdk.Context, price types.Price, contractAddr string) { - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.PricePrefix(contractAddr, price.Pair.PriceDenom, price.Pair.AssetDenom)) + store := prefix.NewStore(ctx.KVStore(k.StoreKey), types.PricePrefix(contractAddr, price.Pair.PriceDenom, price.Pair.AssetDenom)) b := k.Cdc.MustMarshal(&price) store.Set(GetKeyForTs(price.SnapshotTimestampInSeconds), b) } func (k Keeper) DeletePriceStateBefore(ctx sdk.Context, contractAddr string, timestamp uint64, pair types.Pair) { - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.PricePrefix(contractAddr, pair.PriceDenom, pair.AssetDenom)) + store := prefix.NewStore(ctx.KVStore(k.StoreKey), types.PricePrefix(contractAddr, pair.PriceDenom, pair.AssetDenom)) iterator := sdk.KVStorePrefixIterator(store, []byte{}) defer iterator.Close() @@ -34,7 +34,7 @@ func (k Keeper) DeletePriceStateBefore(ctx sdk.Context, contractAddr string, tim } func (k Keeper) GetPriceState(ctx sdk.Context, contractAddr string, timestamp uint64, pair types.Pair) (types.Price, bool) { - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.PricePrefix(contractAddr, pair.PriceDenom, pair.AssetDenom)) + store := prefix.NewStore(ctx.KVStore(k.StoreKey), types.PricePrefix(contractAddr, pair.PriceDenom, pair.AssetDenom)) res := types.Price{} key := GetKeyForTs(timestamp) if !store.Has(key) { @@ -47,7 +47,7 @@ func (k Keeper) GetPriceState(ctx sdk.Context, contractAddr string, timestamp ui } func (k Keeper) GetAllPrices(ctx sdk.Context, contractAddr string, pair types.Pair) (list []*types.Price) { - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.PricePrefix(contractAddr, pair.PriceDenom, pair.AssetDenom)) + store := prefix.NewStore(ctx.KVStore(k.StoreKey), types.PricePrefix(contractAddr, pair.PriceDenom, pair.AssetDenom)) iterator := sdk.KVStorePrefixIterator(store, []byte{}) defer iterator.Close() diff --git a/x/dex/keeper/query/grpc_query_match_result.go b/x/dex/keeper/query/grpc_query_match_result.go index 0a75329ab5..95226904e6 100644 --- a/x/dex/keeper/query/grpc_query_match_result.go +++ b/x/dex/keeper/query/grpc_query_match_result.go @@ -15,7 +15,7 @@ func (k KeeperWrapper) GetMatchResult(c context.Context, req *types.QueryGetMatc } ctx := sdk.UnwrapSDKContext(c) - result, found := k.GetMatchResultState(ctx, req.ContractAddr, req.Height) + result, found := k.GetMatchResultState(ctx, req.ContractAddr) if !found { return nil, status.Error(codes.NotFound, "result not found") } diff --git a/x/dex/keeper/short_book.go b/x/dex/keeper/short_book.go index 9a449b1ef8..eb50af3bef 100644 --- a/x/dex/keeper/short_book.go +++ b/x/dex/keeper/short_book.go @@ -9,13 +9,13 @@ import ( // SetShortBook set a specific shortBook in the store func (k Keeper) SetShortBook(ctx sdk.Context, contractAddr string, shortBook types.ShortBook) { - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.OrderBookPrefix(false, contractAddr, shortBook.Entry.PriceDenom, shortBook.Entry.AssetDenom)) + store := prefix.NewStore(ctx.KVStore(k.StoreKey), types.OrderBookPrefix(false, contractAddr, shortBook.Entry.PriceDenom, shortBook.Entry.AssetDenom)) b := k.Cdc.MustMarshal(&shortBook) store.Set(GetKeyForShortBook(shortBook), b) } func (k Keeper) GetShortBookByPrice(ctx sdk.Context, contractAddr string, price sdk.Dec, priceDenom string, assetDenom string) (val types.ShortBook, found bool) { - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.OrderBookPrefix(false, contractAddr, priceDenom, assetDenom)) + store := prefix.NewStore(ctx.KVStore(k.StoreKey), types.OrderBookPrefix(false, contractAddr, priceDenom, assetDenom)) b := store.Get(GetKeyForPrice(price)) if b == nil { return val, false @@ -25,13 +25,13 @@ func (k Keeper) GetShortBookByPrice(ctx sdk.Context, contractAddr string, price } func (k Keeper) RemoveShortBookByPrice(ctx sdk.Context, contractAddr string, price sdk.Dec, priceDenom string, assetDenom string) { - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.OrderBookPrefix(false, contractAddr, priceDenom, assetDenom)) + store := prefix.NewStore(ctx.KVStore(k.StoreKey), types.OrderBookPrefix(false, contractAddr, priceDenom, assetDenom)) store.Delete(GetKeyForPrice(price)) } // GetAllShortBook returns all shortBook func (k Keeper) GetAllShortBook(ctx sdk.Context, contractAddr string) (list []types.ShortBook) { - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.ContractKeyPrefix(types.ShortBookKey, contractAddr)) + store := prefix.NewStore(ctx.KVStore(k.StoreKey), types.ContractKeyPrefix(types.ShortBookKey, contractAddr)) iterator := sdk.KVStorePrefixIterator(store, []byte{}) defer iterator.Close() @@ -46,7 +46,7 @@ func (k Keeper) GetAllShortBook(ctx sdk.Context, contractAddr string) (list []ty } func (k Keeper) GetAllShortBookForPair(ctx sdk.Context, contractAddr string, priceDenom string, assetDenom string) (list []types.OrderBookEntry) { - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.OrderBookPrefix(false, contractAddr, priceDenom, assetDenom)) + store := prefix.NewStore(ctx.KVStore(k.StoreKey), types.OrderBookPrefix(false, contractAddr, priceDenom, assetDenom)) iterator := sdk.KVStorePrefixIterator(store, []byte{}) defer iterator.Close() @@ -61,7 +61,7 @@ func (k Keeper) GetAllShortBookForPair(ctx sdk.Context, contractAddr string, pri } func (k Keeper) GetAllShortBookForPairPaginated(ctx sdk.Context, contractAddr string, priceDenom string, assetDenom string, page *query.PageRequest) (list []types.ShortBook, pageRes *query.PageResponse, err error) { - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.OrderBookPrefix(false, contractAddr, priceDenom, assetDenom)) + store := prefix.NewStore(ctx.KVStore(k.StoreKey), types.OrderBookPrefix(false, contractAddr, priceDenom, assetDenom)) pageRes, err = query.Paginate(store, page, func(key []byte, value []byte) error { var shortBook types.ShortBook diff --git a/x/dex/keeper/tick.go b/x/dex/keeper/tick.go index 18256b2335..899e79658a 100644 --- a/x/dex/keeper/tick.go +++ b/x/dex/keeper/tick.go @@ -11,7 +11,7 @@ const defaultAddr = "default" // contract_addr, pair -> tick size func (k Keeper) SetTickSizeForPair(ctx sdk.Context, contractAddr string, pair types.Pair, ticksize sdk.Dec) { - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.TickSizeKeyPrefix(contractAddr)) + store := prefix.NewStore(ctx.KVStore(k.StoreKey), types.TickSizeKeyPrefix(contractAddr)) bytes, err := ticksize.Marshal() if err != nil { panic(err) @@ -20,7 +20,7 @@ func (k Keeper) SetTickSizeForPair(ctx sdk.Context, contractAddr string, pair ty } func (k Keeper) SetDefaultTickSizeForPair(ctx sdk.Context, pair types.Pair, ticksize sdk.Dec) { - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.TickSizeKeyPrefix(defaultAddr)) + store := prefix.NewStore(ctx.KVStore(k.StoreKey), types.TickSizeKeyPrefix(defaultAddr)) bytes, err := ticksize.Marshal() if err != nil { panic(err) @@ -29,7 +29,7 @@ func (k Keeper) SetDefaultTickSizeForPair(ctx sdk.Context, pair types.Pair, tick } func (k Keeper) GetTickSizeForPair(ctx sdk.Context, contractAddr string, pair types.Pair) (sdk.Dec, bool) { - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.TickSizeKeyPrefix(contractAddr)) + store := prefix.NewStore(ctx.KVStore(k.StoreKey), types.TickSizeKeyPrefix(contractAddr)) b := store.Get(types.PairPrefix(pair.PriceDenom, pair.AssetDenom)) if b == nil { return sdk.ZeroDec(), false @@ -43,7 +43,7 @@ func (k Keeper) GetTickSizeForPair(ctx sdk.Context, contractAddr string, pair ty } func (k Keeper) GetDefaultTickSizeForPair(ctx sdk.Context, pair types.Pair) (sdk.Dec, bool) { - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.TickSizeKeyPrefix(defaultAddr)) + store := prefix.NewStore(ctx.KVStore(k.StoreKey), types.TickSizeKeyPrefix(defaultAddr)) b := store.Get(types.PairPrefix(pair.PriceDenom, pair.AssetDenom)) if b == nil { return sdk.ZeroDec(), false diff --git a/x/dex/keeper/trigger_book.go b/x/dex/keeper/trigger_book.go index f54b81adfc..fee58550b1 100644 --- a/x/dex/keeper/trigger_book.go +++ b/x/dex/keeper/trigger_book.go @@ -9,19 +9,19 @@ import ( ) func (k Keeper) SetTriggeredOrder(ctx sdk.Context, contractAddr string, order types.Order, priceDenom string, assetDenom string) { - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.TriggerOrderBookPrefix(contractAddr, priceDenom, assetDenom)) + store := prefix.NewStore(ctx.KVStore(k.StoreKey), types.TriggerOrderBookPrefix(contractAddr, priceDenom, assetDenom)) b := k.Cdc.MustMarshal(&order) store.Set(GetKeyForOrderID(order.Id), b) } func (k Keeper) RemoveTriggeredOrder(ctx sdk.Context, contractAddr string, orderID uint64, priceDenom string, assetDenom string) { - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.TriggerOrderBookPrefix(contractAddr, priceDenom, assetDenom)) + store := prefix.NewStore(ctx.KVStore(k.StoreKey), types.TriggerOrderBookPrefix(contractAddr, priceDenom, assetDenom)) store.Delete(GetKeyForOrderID(orderID)) } func (k Keeper) GetTriggeredOrderByID(ctx sdk.Context, contractAddr string, orderID uint64, priceDenom string, assetDenom string) (val types.Order, found bool) { - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.TriggerOrderBookPrefix(contractAddr, priceDenom, assetDenom)) + store := prefix.NewStore(ctx.KVStore(k.StoreKey), types.TriggerOrderBookPrefix(contractAddr, priceDenom, assetDenom)) b := store.Get(GetKeyForOrderID(orderID)) if b == nil { return val, false @@ -31,7 +31,7 @@ func (k Keeper) GetTriggeredOrderByID(ctx sdk.Context, contractAddr string, orde } func (k Keeper) GetAllTriggeredOrdersForPair(ctx sdk.Context, contractAddr string, priceDenom string, assetDenom string) (list []types.Order) { - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.TriggerOrderBookPrefix(contractAddr, priceDenom, assetDenom)) + store := prefix.NewStore(ctx.KVStore(k.StoreKey), types.TriggerOrderBookPrefix(contractAddr, priceDenom, assetDenom)) iterator := sdk.KVStorePrefixIterator(store, []byte{}) defer iterator.Close() @@ -46,7 +46,7 @@ func (k Keeper) GetAllTriggeredOrdersForPair(ctx sdk.Context, contractAddr strin } func (k Keeper) GetAllTriggeredOrders(ctx sdk.Context, contractAddr string) (list []types.Order) { - store := prefix.NewStore(ctx.KVStore(k.storeKey), types.ContractKeyPrefix(types.TriggerBookKey, contractAddr)) + store := prefix.NewStore(ctx.KVStore(k.StoreKey), types.ContractKeyPrefix(types.TriggerBookKey, contractAddr)) iterator := sdk.KVStorePrefixIterator(store, []byte{}) defer iterator.Close() diff --git a/x/dex/migrations/v9_to_v10.go b/x/dex/migrations/v9_to_v10.go new file mode 100644 index 0000000000..24f547cfa3 --- /dev/null +++ b/x/dex/migrations/v9_to_v10.go @@ -0,0 +1,53 @@ +package migrations + +import ( + "encoding/binary" + "fmt" + "github.com/cosmos/cosmos-sdk/store/prefix" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/sei-protocol/sei-chain/x/dex/keeper" + "github.com/sei-protocol/sei-chain/x/dex/types" +) + +func V9ToV10(ctx sdk.Context, dexkeeper keeper.Keeper) error { + allContractInfo := dexkeeper.GetAllContractInfo(ctx) + for _, contractInfo := range allContractInfo { + + store := prefix.NewStore( + ctx.KVStore(dexkeeper.StoreKey), + types.MatchResultPrefix(contractInfo.ContractAddr), + ) + prevHeight := ctx.BlockHeight() - 1 + // Get latest match result + key := make([]byte, 8) + binary.BigEndian.PutUint64(key, uint64(prevHeight)) + if !store.Has(key) { + panic(fmt.Sprintf("Match result key not found for height %d", prevHeight)) + } + bz := store.Get(key) + result := types.MatchResult{} + if err := result.Unmarshal(bz); err != nil { + panic(err) + } + dexkeeper.SetMatchResult(ctx, contractInfo.ContractAddr, &result) + + // Now, remove all older ones + for i := int64(0); i <= prevHeight; i++ { + key := make([]byte, 8) + binary.BigEndian.PutUint64(key, uint64(i)) + store.Delete(key) + } + + //for i := height - 10; i < height; i++ { + // key := make([]byte, 8) + // binary.BigEndian.PutUint64(key, uint64(i)) + // if !store.Has(key) { + // fmt.Printf("No key at height %d\n", i) + // return nil + // } else { + // fmt.Printf("Has key at height %d\n", i) + // } + //} + } + return nil +} diff --git a/x/dex/migrations/v9_to_v10_test.go b/x/dex/migrations/v9_to_v10_test.go new file mode 100644 index 0000000000..4e38b72ea8 --- /dev/null +++ b/x/dex/migrations/v9_to_v10_test.go @@ -0,0 +1,91 @@ +package migrations_test + +import ( + "encoding/binary" + "github.com/sei-protocol/sei-chain/x/dex/migrations" + "testing" + + "github.com/cosmos/cosmos-sdk/store/prefix" + keepertest "github.com/sei-protocol/sei-chain/testutil/keeper" + "github.com/sei-protocol/sei-chain/x/dex/keeper" + "github.com/sei-protocol/sei-chain/x/dex/types" + "github.com/stretchr/testify/require" +) + +func TestMigrate9to10(t *testing.T) { + dexkeeper, ctx := keepertest.DexKeeper(t) + // write old contract + store := prefix.NewStore( + ctx.KVStore(dexkeeper.GetStoreKey()), + []byte(keeper.ContractPrefixKey), + ) + contract := types.ContractInfo{ + CodeId: 1, + ContractAddr: keepertest.TestContract, + NeedOrderMatching: true, + } + contractBytes, _ := contract.Marshal() + store.Set([]byte(contract.ContractAddr), contractBytes) + + // write old match results format + store = prefix.NewStore( + ctx.KVStore(dexkeeper.GetStoreKey()), + types.MatchResultPrefix(keepertest.TestContract), + ) + order1 := []*types.Order{{ + Id: 1, + }} + order2 := []*types.Order{{ + Id: 2, + }} + matchResult1 := types.MatchResult{ + Height: int64(1), + ContractAddr: keepertest.TestContract, + Orders: order1, + } + matchResult2 := types.MatchResult{ + Height: int64(2), + ContractAddr: keepertest.TestContract, + Orders: order2, + } + // Insert old match results format to blockHeights 1, 2 + // That is: - + height := 1 + bz, err := matchResult1.Marshal() + if err != nil { + panic(err) + } + key := make([]byte, 8) + binary.BigEndian.PutUint64(key, uint64(height)) + store.Set(key, bz) + + height = 2 + bz, err = matchResult2.Marshal() + if err != nil { + panic(err) + } + key = make([]byte, 8) + binary.BigEndian.PutUint64(key, uint64(height)) + store.Set(key, bz) + + ctx = ctx.WithBlockHeight(3) + + // Perform migration + err = migrations.V9ToV10(ctx, *dexkeeper) + require.NoError(t, err) + + // We expect that everything is under the new format: + matchResult, found := dexkeeper.GetMatchResultState(ctx, keepertest.TestContract) + require.True(t, found) + require.Equal(t, types.MatchResult{Height: 3, ContractAddr: keepertest.TestContract, Orders: order2}, *matchResult) + // All previous - should be purged + for i := 0; i < 2; i++ { + store := prefix.NewStore( + ctx.KVStore(dexkeeper.GetStoreKey()), + types.MatchResultPrefix(keepertest.TestContract), + ) + key := make([]byte, 8) + binary.BigEndian.PutUint64(key, uint64(i)) + require.False(t, store.Has(key)) + } +} diff --git a/x/dex/module.go b/x/dex/module.go index 586d87e450..ebd9b002c5 100644 --- a/x/dex/module.go +++ b/x/dex/module.go @@ -184,6 +184,9 @@ func (am AppModule) RegisterServices(cfg module.Configurator) { _ = cfg.RegisterMigration(types.ModuleName, 8, func(ctx sdk.Context) error { return migrations.V8ToV9(ctx, am.keeper) }) + _ = cfg.RegisterMigration(types.ModuleName, 9, func(ctx sdk.Context) error { + return migrations.V9ToV10(ctx, am.keeper) + }) } // RegisterInvariants registers the capability module's invariants. @@ -208,7 +211,7 @@ func (am AppModule) ExportGenesis(ctx sdk.Context, cdc codec.JSONCodec) json.Raw } // ConsensusVersion implements ConsensusVersion. -func (AppModule) ConsensusVersion() uint64 { return 9 } +func (AppModule) ConsensusVersion() uint64 { return 10 } func (am AppModule) getAllContractInfo(ctx sdk.Context) []types.ContractInfoV2 { return am.keeper.GetAllContractInfo(ctx) diff --git a/x/dex/module_test.go b/x/dex/module_test.go index b96402e574..2306a4f235 100644 --- a/x/dex/module_test.go +++ b/x/dex/module_test.go @@ -145,7 +145,7 @@ func TestEndBlockMarketOrder(t *testing.T) { _, found = dexkeeper.GetLongBookByPrice(ctx, contractAddr.String(), sdk.MustNewDecFromStr("1"), pair.PriceDenom, pair.AssetDenom) require.True(t, found) - matchResults, _ := dexkeeper.GetMatchResultState(ctx, contractAddr.String(), 2) + matchResults, _ := dexkeeper.GetMatchResultState(ctx, contractAddr.String()) require.Equal(t, 1, len(matchResults.Orders)) require.Equal(t, 2, len(matchResults.Settlements)) @@ -168,7 +168,7 @@ func TestEndBlockMarketOrder(t *testing.T) { ctx = ctx.WithBlockHeight(3) testApp.EndBlocker(ctx, abci.RequestEndBlock{}) - matchResults, _ = dexkeeper.GetMatchResultState(ctx, contractAddr.String(), 3) + matchResults, _ = dexkeeper.GetMatchResultState(ctx, contractAddr.String()) require.Equal(t, 1, len(matchResults.Orders)) require.Equal(t, 0, len(matchResults.Settlements)) } @@ -305,7 +305,7 @@ func TestEndBlockLimitOrder(t *testing.T) { _, found = dexkeeper.GetLongBookByPrice(ctx, contractAddr.String(), sdk.MustNewDecFromStr("3"), pair.PriceDenom, pair.AssetDenom) require.False(t, found) - matchResults, _ := dexkeeper.GetMatchResultState(ctx, contractAddr.String(), 2) + matchResults, _ := dexkeeper.GetMatchResultState(ctx, contractAddr.String()) require.Equal(t, 2, len(matchResults.Orders)) require.Equal(t, 4, len(matchResults.Settlements)) @@ -335,7 +335,7 @@ func TestEndBlockLimitOrder(t *testing.T) { _, found = dexkeeper.GetShortBookByPrice(ctx, contractAddr.String(), sdk.MustNewDecFromStr("3"), pair.PriceDenom, pair.AssetDenom) require.False(t, found) - matchResults, _ = dexkeeper.GetMatchResultState(ctx, contractAddr.String(), 3) + matchResults, _ = dexkeeper.GetMatchResultState(ctx, contractAddr.String()) require.Equal(t, 1, len(matchResults.Orders)) require.Equal(t, 2, len(matchResults.Settlements)) } @@ -366,7 +366,7 @@ func TestEndBlockRollback(t *testing.T) { ctx = ctx.WithBlockHeight(1) testApp.EndBlocker(ctx, abci.RequestEndBlock{}) // No state change should've been persisted - _, found := dexkeeper.GetMatchResultState(ctx, keepertest.TestContract, 2) + _, found := dexkeeper.GetMatchResultState(ctx, keepertest.TestContract) require.False(t, found) } @@ -444,10 +444,10 @@ func TestEndBlockPartialRollback(t *testing.T) { ctx = ctx.WithBlockHeight(1) testApp.EndBlocker(ctx, abci.RequestEndBlock{}) // No state change should've been persisted for bad contract - _, found := dexkeeper.GetMatchResultState(ctx, keepertest.TestContract, 1) + _, found := dexkeeper.GetMatchResultState(ctx, keepertest.TestContract) require.False(t, found) // state change should've been persisted for good contract - matchResult, _ := dexkeeper.GetMatchResultState(ctx, contractAddr.String(), 1) + matchResult, _ := dexkeeper.GetMatchResultState(ctx, contractAddr.String()) require.Equal(t, 1, len(matchResult.Orders)) _, found = dexkeeper.GetLongBookByPrice(ctx, contractAddr.String(), sdk.MustNewDecFromStr("0.0001"), pair.PriceDenom, pair.AssetDenom) require.True(t, found) From b29a3d415abe3e195ede25ad61f295c0297fd7d7 Mon Sep 17 00:00:00 2001 From: Philip Su Date: Thu, 10 Nov 2022 10:27:34 -0800 Subject: [PATCH 02/10] Rm comments --- x/dex/migrations/v9_to_v10.go | 11 ----------- x/dex/migrations/v9_to_v10_test.go | 4 ++-- 2 files changed, 2 insertions(+), 13 deletions(-) diff --git a/x/dex/migrations/v9_to_v10.go b/x/dex/migrations/v9_to_v10.go index 24f547cfa3..d7c5db4922 100644 --- a/x/dex/migrations/v9_to_v10.go +++ b/x/dex/migrations/v9_to_v10.go @@ -37,17 +37,6 @@ func V9ToV10(ctx sdk.Context, dexkeeper keeper.Keeper) error { binary.BigEndian.PutUint64(key, uint64(i)) store.Delete(key) } - - //for i := height - 10; i < height; i++ { - // key := make([]byte, 8) - // binary.BigEndian.PutUint64(key, uint64(i)) - // if !store.Has(key) { - // fmt.Printf("No key at height %d\n", i) - // return nil - // } else { - // fmt.Printf("Has key at height %d\n", i) - // } - //} } return nil } diff --git a/x/dex/migrations/v9_to_v10_test.go b/x/dex/migrations/v9_to_v10_test.go index 4e38b72ea8..2e0d3f660a 100644 --- a/x/dex/migrations/v9_to_v10_test.go +++ b/x/dex/migrations/v9_to_v10_test.go @@ -49,7 +49,7 @@ func TestMigrate9to10(t *testing.T) { Orders: order2, } // Insert old match results format to blockHeights 1, 2 - // That is: - + // That is: matchResultsPrefix- height := 1 bz, err := matchResult1.Marshal() if err != nil { @@ -74,7 +74,7 @@ func TestMigrate9to10(t *testing.T) { err = migrations.V9ToV10(ctx, *dexkeeper) require.NoError(t, err) - // We expect that everything is under the new format: + // We expect that everything is under the new format: matchResultsPrefix-matchResultsKey matchResult, found := dexkeeper.GetMatchResultState(ctx, keepertest.TestContract) require.True(t, found) require.Equal(t, types.MatchResult{Height: 3, ContractAddr: keepertest.TestContract, Orders: order2}, *matchResult) From e1546131a3ba01aca049e15e4631b5c277136cd0 Mon Sep 17 00:00:00 2001 From: Philip Su Date: Thu, 10 Nov 2022 14:38:22 -0800 Subject: [PATCH 03/10] Add check --- x/dex/migrations/v9_to_v10.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/x/dex/migrations/v9_to_v10.go b/x/dex/migrations/v9_to_v10.go index d7c5db4922..fd68942d3a 100644 --- a/x/dex/migrations/v9_to_v10.go +++ b/x/dex/migrations/v9_to_v10.go @@ -35,7 +35,9 @@ func V9ToV10(ctx sdk.Context, dexkeeper keeper.Keeper) error { for i := int64(0); i <= prevHeight; i++ { key := make([]byte, 8) binary.BigEndian.PutUint64(key, uint64(i)) - store.Delete(key) + if store.Has(key) { + store.Delete(key) + } } } return nil From dadf7deee6cc224f9d38cf3e9c4bc50eddd643fe Mon Sep 17 00:00:00 2001 From: Philip Su Date: Thu, 10 Nov 2022 15:35:11 -0800 Subject: [PATCH 04/10] Use iterator --- x/dex/migrations/v9_to_v10.go | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/x/dex/migrations/v9_to_v10.go b/x/dex/migrations/v9_to_v10.go index fd68942d3a..6fd5ce5e0a 100644 --- a/x/dex/migrations/v9_to_v10.go +++ b/x/dex/migrations/v9_to_v10.go @@ -32,12 +32,10 @@ func V9ToV10(ctx sdk.Context, dexkeeper keeper.Keeper) error { dexkeeper.SetMatchResult(ctx, contractInfo.ContractAddr, &result) // Now, remove all older ones - for i := int64(0); i <= prevHeight; i++ { - key := make([]byte, 8) - binary.BigEndian.PutUint64(key, uint64(i)) - if store.Has(key) { - store.Delete(key) - } + iterator := sdk.KVStorePrefixIterator(ctx.KVStore(dexkeeper.StoreKey), types.MatchResultPrefix(contractInfo.ContractAddr)) + defer iterator.Close() + for ; iterator.Valid(); iterator.Next() { + store.Delete(iterator.Key()) } } return nil From 7f97b95f37acd38c5378ae1e3b0e92e9ac9c9ae1 Mon Sep 17 00:00:00 2001 From: Philip Su Date: Thu, 10 Nov 2022 15:37:28 -0800 Subject: [PATCH 05/10] rev --- x/dex/migrations/v9_to_v10.go | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/x/dex/migrations/v9_to_v10.go b/x/dex/migrations/v9_to_v10.go index 6fd5ce5e0a..fd68942d3a 100644 --- a/x/dex/migrations/v9_to_v10.go +++ b/x/dex/migrations/v9_to_v10.go @@ -32,10 +32,12 @@ func V9ToV10(ctx sdk.Context, dexkeeper keeper.Keeper) error { dexkeeper.SetMatchResult(ctx, contractInfo.ContractAddr, &result) // Now, remove all older ones - iterator := sdk.KVStorePrefixIterator(ctx.KVStore(dexkeeper.StoreKey), types.MatchResultPrefix(contractInfo.ContractAddr)) - defer iterator.Close() - for ; iterator.Valid(); iterator.Next() { - store.Delete(iterator.Key()) + for i := int64(0); i <= prevHeight; i++ { + key := make([]byte, 8) + binary.BigEndian.PutUint64(key, uint64(i)) + if store.Has(key) { + store.Delete(key) + } } } return nil From d1c2c60248bd456f235875960bddec8b736c5adf Mon Sep 17 00:00:00 2001 From: Philip Su Date: Thu, 10 Nov 2022 15:38:10 -0800 Subject: [PATCH 06/10] gofump --- x/dex/keeper/keeper.go | 6 +++--- x/dex/migrations/v9_to_v10.go | 1 + 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/x/dex/keeper/keeper.go b/x/dex/keeper/keeper.go index 47470b13a5..8ed5d5dcfb 100644 --- a/x/dex/keeper/keeper.go +++ b/x/dex/keeper/keeper.go @@ -19,9 +19,9 @@ import ( type ( Keeper struct { - Cdc codec.BinaryCodec - StoreKey sdk.StoreKey - memKey sdk.StoreKey + Cdc codec.BinaryCodec + StoreKey sdk.StoreKey + memKey sdk.StoreKey Paramstore paramtypes.Subspace AccountKeeper authkeeper.AccountKeeper EpochKeeper epochkeeper.Keeper diff --git a/x/dex/migrations/v9_to_v10.go b/x/dex/migrations/v9_to_v10.go index fd68942d3a..51724948fe 100644 --- a/x/dex/migrations/v9_to_v10.go +++ b/x/dex/migrations/v9_to_v10.go @@ -3,6 +3,7 @@ package migrations import ( "encoding/binary" "fmt" + "github.com/cosmos/cosmos-sdk/store/prefix" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/sei-protocol/sei-chain/x/dex/keeper" From c44116dd8c52502745bb9e1f2205829afc4e2b02 Mon Sep 17 00:00:00 2001 From: Philip Su Date: Fri, 11 Nov 2022 16:05:49 -0800 Subject: [PATCH 07/10] Fix tests --- x/dex/module_test.go | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/x/dex/module_test.go b/x/dex/module_test.go index 2306a4f235..720d6102c3 100644 --- a/x/dex/module_test.go +++ b/x/dex/module_test.go @@ -366,8 +366,8 @@ func TestEndBlockRollback(t *testing.T) { ctx = ctx.WithBlockHeight(1) testApp.EndBlocker(ctx, abci.RequestEndBlock{}) // No state change should've been persisted - _, found := dexkeeper.GetMatchResultState(ctx, keepertest.TestContract) - require.False(t, found) + matchResult, _ := dexkeeper.GetMatchResultState(ctx, keepertest.TestContract) + require.Equal(t, &types.MatchResult{}, matchResult) } func TestEndBlockPartialRollback(t *testing.T) { @@ -444,12 +444,12 @@ func TestEndBlockPartialRollback(t *testing.T) { ctx = ctx.WithBlockHeight(1) testApp.EndBlocker(ctx, abci.RequestEndBlock{}) // No state change should've been persisted for bad contract - _, found := dexkeeper.GetMatchResultState(ctx, keepertest.TestContract) - require.False(t, found) + matchResult, _ := dexkeeper.GetMatchResultState(ctx, keepertest.TestContract) + require.Equal(t, &types.MatchResult{}, matchResult) // state change should've been persisted for good contract - matchResult, _ := dexkeeper.GetMatchResultState(ctx, contractAddr.String()) + matchResult, _ = dexkeeper.GetMatchResultState(ctx, contractAddr.String()) require.Equal(t, 1, len(matchResult.Orders)) - _, found = dexkeeper.GetLongBookByPrice(ctx, contractAddr.String(), sdk.MustNewDecFromStr("0.0001"), pair.PriceDenom, pair.AssetDenom) + _, found := dexkeeper.GetLongBookByPrice(ctx, contractAddr.String(), sdk.MustNewDecFromStr("0.0001"), pair.PriceDenom, pair.AssetDenom) require.True(t, found) } From bb1cfa7ea9721ef014f49e3a305997a5e7ff08fd Mon Sep 17 00:00:00 2001 From: Philip Su Date: Mon, 14 Nov 2022 08:26:15 -0800 Subject: [PATCH 08/10] revert migration --- x/dex/keeper/asset_list.go | 6 +- x/dex/keeper/contract.go | 8 +-- x/dex/keeper/epoch.go | 4 +- x/dex/keeper/keeper.go | 12 ++-- x/dex/keeper/long_book.go | 12 ++-- x/dex/keeper/match_result.go | 4 +- x/dex/keeper/order_placement.go | 4 +- x/dex/keeper/pair.go | 8 +-- x/dex/keeper/price.go | 8 +-- x/dex/keeper/short_book.go | 12 ++-- x/dex/keeper/tick.go | 8 +-- x/dex/keeper/trigger_book.go | 10 ++-- x/dex/migrations/v9_to_v10.go | 45 --------------- x/dex/migrations/v9_to_v10_test.go | 91 ------------------------------ x/dex/module.go | 2 +- 15 files changed, 49 insertions(+), 185 deletions(-) delete mode 100644 x/dex/migrations/v9_to_v10.go delete mode 100644 x/dex/migrations/v9_to_v10_test.go diff --git a/x/dex/keeper/asset_list.go b/x/dex/keeper/asset_list.go index 84292bb228..3ae416e386 100644 --- a/x/dex/keeper/asset_list.go +++ b/x/dex/keeper/asset_list.go @@ -6,7 +6,7 @@ import ( ) func (k Keeper) SetAssetMetadata(ctx sdk.Context, assetMetadata types.AssetMetadata) { - store := ctx.KVStore(k.StoreKey) + store := ctx.KVStore(k.storeKey) // We only allow one asset per base denom for now // Even if asset exists already, overwrite the store with new metadata b := k.Cdc.MustMarshal(&assetMetadata) @@ -15,7 +15,7 @@ func (k Keeper) SetAssetMetadata(ctx sdk.Context, assetMetadata types.AssetMetad } func (k Keeper) GetAssetMetadataByDenom(ctx sdk.Context, assetDenom string) (val types.AssetMetadata, found bool) { - store := ctx.KVStore(k.StoreKey) + store := ctx.KVStore(k.storeKey) b := store.Get(types.AssetListPrefix(assetDenom)) if b == nil { return types.AssetMetadata{}, false @@ -26,7 +26,7 @@ func (k Keeper) GetAssetMetadataByDenom(ctx sdk.Context, assetDenom string) (val } func (k Keeper) GetAllAssetMetadata(ctx sdk.Context) []types.AssetMetadata { - store := ctx.KVStore(k.StoreKey) + store := ctx.KVStore(k.storeKey) iterator := sdk.KVStorePrefixIterator(store, types.KeyPrefix(types.AssetListKey)) list := []types.AssetMetadata{} diff --git a/x/dex/keeper/contract.go b/x/dex/keeper/contract.go index 47a37d3154..752380aa3b 100644 --- a/x/dex/keeper/contract.go +++ b/x/dex/keeper/contract.go @@ -13,7 +13,7 @@ const ContractPrefixKey = "x-wasm-contract" func (k Keeper) SetContract(ctx sdk.Context, contract *types.ContractInfoV2) error { store := prefix.NewStore( - ctx.KVStore(k.StoreKey), + ctx.KVStore(k.storeKey), []byte(ContractPrefixKey), ) bz, err := contract.Marshal() @@ -27,7 +27,7 @@ func (k Keeper) SetContract(ctx sdk.Context, contract *types.ContractInfoV2) err func (k Keeper) DeleteContract(ctx sdk.Context, contractAddr string) { store := prefix.NewStore( - ctx.KVStore(k.StoreKey), + ctx.KVStore(k.storeKey), []byte(ContractPrefixKey), ) key := contractKey(contractAddr) @@ -36,7 +36,7 @@ func (k Keeper) DeleteContract(ctx sdk.Context, contractAddr string) { func (k Keeper) GetContract(ctx sdk.Context, contractAddr string) (types.ContractInfoV2, error) { store := prefix.NewStore( - ctx.KVStore(k.StoreKey), + ctx.KVStore(k.storeKey), []byte(ContractPrefixKey), ) key := contractKey(contractAddr) @@ -51,7 +51,7 @@ func (k Keeper) GetContract(ctx sdk.Context, contractAddr string) (types.Contrac } func (k Keeper) GetAllContractInfo(ctx sdk.Context) []types.ContractInfoV2 { - store := prefix.NewStore(ctx.KVStore(k.StoreKey), []byte(ContractPrefixKey)) + store := prefix.NewStore(ctx.KVStore(k.storeKey), []byte(ContractPrefixKey)) iterator := sdk.KVStorePrefixIterator(store, []byte{}) defer iterator.Close() diff --git a/x/dex/keeper/epoch.go b/x/dex/keeper/epoch.go index 7a04d61385..33f8012af4 100644 --- a/x/dex/keeper/epoch.go +++ b/x/dex/keeper/epoch.go @@ -10,7 +10,7 @@ import ( const EpochKey = "epoch" func (k Keeper) SetEpoch(ctx sdk.Context, epoch uint64) { - store := ctx.KVStore(k.StoreKey) + store := ctx.KVStore(k.storeKey) bz := make([]byte, 8) binary.BigEndian.PutUint64(bz, epoch) store.Set([]byte(EpochKey), bz) @@ -18,7 +18,7 @@ func (k Keeper) SetEpoch(ctx sdk.Context, epoch uint64) { } func (k Keeper) IsNewEpoch(ctx sdk.Context) (bool, uint64) { - store := ctx.KVStore(k.StoreKey) + store := ctx.KVStore(k.storeKey) b := store.Get([]byte(EpochKey)) lastEpoch := binary.BigEndian.Uint64(b) currentEpoch := k.EpochKeeper.GetEpoch(ctx).CurrentEpoch diff --git a/x/dex/keeper/keeper.go b/x/dex/keeper/keeper.go index 8ed5d5dcfb..4e98795523 100644 --- a/x/dex/keeper/keeper.go +++ b/x/dex/keeper/keeper.go @@ -19,9 +19,9 @@ import ( type ( Keeper struct { - Cdc codec.BinaryCodec - StoreKey sdk.StoreKey - memKey sdk.StoreKey + Cdc codec.BinaryCodec + storeKey sdk.StoreKey + memKey sdk.StoreKey Paramstore paramtypes.Subspace AccountKeeper authkeeper.AccountKeeper EpochKeeper epochkeeper.Keeper @@ -43,7 +43,7 @@ func NewPlainKeeper( } return &Keeper{ Cdc: cdc, - StoreKey: storeKey, + storeKey: storeKey, memKey: memKey, Paramstore: ps, MemState: dexcache.NewMemState(), @@ -65,7 +65,7 @@ func NewKeeper( } return &Keeper{ Cdc: cdc, - StoreKey: storeKey, + storeKey: storeKey, memKey: memKey, Paramstore: ps, EpochKeeper: epochKeeper, @@ -80,7 +80,7 @@ func (k Keeper) Logger(ctx sdk.Context) log.Logger { } func (k Keeper) GetStoreKey() sdk.StoreKey { - return k.StoreKey + return k.storeKey } func (k *Keeper) SetWasmKeeper(wasmKeeper *wasm.Keeper) { diff --git a/x/dex/keeper/long_book.go b/x/dex/keeper/long_book.go index 153895a5b9..971248faa4 100644 --- a/x/dex/keeper/long_book.go +++ b/x/dex/keeper/long_book.go @@ -10,7 +10,7 @@ import ( // SetLongBook set a specific longBook in the store func (k Keeper) SetLongBook(ctx sdk.Context, contractAddr string, longBook types.LongBook) { store := prefix.NewStore( - ctx.KVStore(k.StoreKey), + ctx.KVStore(k.storeKey), types.OrderBookPrefix( true, contractAddr, longBook.Entry.PriceDenom, longBook.Entry.AssetDenom, ), @@ -21,7 +21,7 @@ func (k Keeper) SetLongBook(ctx sdk.Context, contractAddr string, longBook types func (k Keeper) GetLongBookByPrice(ctx sdk.Context, contractAddr string, price sdk.Dec, priceDenom string, assetDenom string) (val types.LongBook, found bool) { store := prefix.NewStore( - ctx.KVStore(k.StoreKey), + ctx.KVStore(k.storeKey), types.OrderBookPrefix( true, contractAddr, priceDenom, assetDenom, ), @@ -36,7 +36,7 @@ func (k Keeper) GetLongBookByPrice(ctx sdk.Context, contractAddr string, price s func (k Keeper) RemoveLongBookByPrice(ctx sdk.Context, contractAddr string, price sdk.Dec, priceDenom string, assetDenom string) { store := prefix.NewStore( - ctx.KVStore(k.StoreKey), + ctx.KVStore(k.storeKey), types.OrderBookPrefix( true, contractAddr, priceDenom, assetDenom, ), @@ -46,7 +46,7 @@ func (k Keeper) RemoveLongBookByPrice(ctx sdk.Context, contractAddr string, pric // GetAllLongBook returns all longBook func (k Keeper) GetAllLongBook(ctx sdk.Context, contractAddr string) (list []types.LongBook) { - store := prefix.NewStore(ctx.KVStore(k.StoreKey), types.ContractKeyPrefix(types.LongBookKey, contractAddr)) + store := prefix.NewStore(ctx.KVStore(k.storeKey), types.ContractKeyPrefix(types.LongBookKey, contractAddr)) iterator := sdk.KVStorePrefixIterator(store, []byte{}) defer iterator.Close() @@ -61,7 +61,7 @@ func (k Keeper) GetAllLongBook(ctx sdk.Context, contractAddr string) (list []typ } func (k Keeper) GetAllLongBookForPair(ctx sdk.Context, contractAddr string, priceDenom string, assetDenom string) (list []types.OrderBookEntry) { - store := prefix.NewStore(ctx.KVStore(k.StoreKey), types.OrderBookPrefix(true, contractAddr, priceDenom, assetDenom)) + store := prefix.NewStore(ctx.KVStore(k.storeKey), types.OrderBookPrefix(true, contractAddr, priceDenom, assetDenom)) iterator := sdk.KVStorePrefixIterator(store, []byte{}) defer iterator.Close() @@ -76,7 +76,7 @@ func (k Keeper) GetAllLongBookForPair(ctx sdk.Context, contractAddr string, pric } func (k Keeper) GetAllLongBookForPairPaginated(ctx sdk.Context, contractAddr string, priceDenom string, assetDenom string, page *query.PageRequest) (list []types.LongBook, pageRes *query.PageResponse, err error) { - store := prefix.NewStore(ctx.KVStore(k.StoreKey), types.OrderBookPrefix(true, contractAddr, priceDenom, assetDenom)) + store := prefix.NewStore(ctx.KVStore(k.storeKey), types.OrderBookPrefix(true, contractAddr, priceDenom, assetDenom)) pageRes, err = query.Paginate(store, page, func(key []byte, value []byte) error { var longBook types.LongBook diff --git a/x/dex/keeper/match_result.go b/x/dex/keeper/match_result.go index 2b81787d17..ca15ef12eb 100644 --- a/x/dex/keeper/match_result.go +++ b/x/dex/keeper/match_result.go @@ -10,7 +10,7 @@ const MatchResultKey = "match-result" func (k Keeper) SetMatchResult(ctx sdk.Context, contractAddr string, result *types.MatchResult) { store := prefix.NewStore( - ctx.KVStore(k.StoreKey), + ctx.KVStore(k.storeKey), types.MatchResultPrefix(contractAddr), ) height := ctx.BlockHeight() @@ -25,7 +25,7 @@ func (k Keeper) SetMatchResult(ctx sdk.Context, contractAddr string, result *typ func (k Keeper) GetMatchResultState(ctx sdk.Context, contractAddr string) (*types.MatchResult, bool) { store := prefix.NewStore( - ctx.KVStore(k.StoreKey), + ctx.KVStore(k.storeKey), types.MatchResultPrefix(contractAddr), ) bz := store.Get([]byte(MatchResultKey)) diff --git a/x/dex/keeper/order_placement.go b/x/dex/keeper/order_placement.go index 7f3c7f2f61..3dab2f3880 100644 --- a/x/dex/keeper/order_placement.go +++ b/x/dex/keeper/order_placement.go @@ -9,7 +9,7 @@ import ( ) func (k Keeper) GetNextOrderID(ctx sdk.Context, contractAddr string) uint64 { - store := prefix.NewStore(ctx.KVStore(k.StoreKey), types.NextOrderIDPrefix(contractAddr)) + store := prefix.NewStore(ctx.KVStore(k.storeKey), types.NextOrderIDPrefix(contractAddr)) byteKey := types.KeyPrefix(types.NextOrderIDKey) bz := store.Get(byteKey) if bz == nil { @@ -19,7 +19,7 @@ func (k Keeper) GetNextOrderID(ctx sdk.Context, contractAddr string) uint64 { } func (k Keeper) SetNextOrderID(ctx sdk.Context, contractAddr string, nextID uint64) { - store := prefix.NewStore(ctx.KVStore(k.StoreKey), types.NextOrderIDPrefix(contractAddr)) + store := prefix.NewStore(ctx.KVStore(k.storeKey), types.NextOrderIDPrefix(contractAddr)) byteKey := types.KeyPrefix(types.NextOrderIDKey) bz := make([]byte, 8) binary.BigEndian.PutUint64(bz, nextID) diff --git a/x/dex/keeper/pair.go b/x/dex/keeper/pair.go index 0ee9ff7960..c44e7a8d3e 100644 --- a/x/dex/keeper/pair.go +++ b/x/dex/keeper/pair.go @@ -10,7 +10,7 @@ import ( func (k Keeper) SetPairCount(ctx sdk.Context, contractAddr string, count uint64) { store := prefix.NewStore( - ctx.KVStore(k.StoreKey), + ctx.KVStore(k.storeKey), types.RegisteredPairCountPrefix(), ) countBytes := make([]byte, 8) @@ -20,7 +20,7 @@ func (k Keeper) SetPairCount(ctx sdk.Context, contractAddr string, count uint64) func (k Keeper) GetPairCount(ctx sdk.Context, contractAddr string) uint64 { store := prefix.NewStore( - ctx.KVStore(k.StoreKey), + ctx.KVStore(k.storeKey), types.RegisteredPairCountPrefix(), ) cnt := store.Get(types.KeyPrefix(contractAddr)) @@ -38,7 +38,7 @@ func (k Keeper) AddRegisteredPair(ctx sdk.Context, contractAddr string, pair typ } } oldPairCnt := k.GetPairCount(ctx, contractAddr) - store := prefix.NewStore(ctx.KVStore(k.StoreKey), types.RegisteredPairPrefix(contractAddr)) + store := prefix.NewStore(ctx.KVStore(k.storeKey), types.RegisteredPairPrefix(contractAddr)) keyBytes := make([]byte, 8) binary.BigEndian.PutUint64(keyBytes, oldPairCnt) store.Set(keyBytes, k.Cdc.MustMarshal(&pair)) @@ -48,7 +48,7 @@ func (k Keeper) AddRegisteredPair(ctx sdk.Context, contractAddr string, pair typ } func (k Keeper) GetAllRegisteredPairs(ctx sdk.Context, contractAddr string) []types.Pair { - store := prefix.NewStore(ctx.KVStore(k.StoreKey), types.RegisteredPairPrefix(contractAddr)) + store := prefix.NewStore(ctx.KVStore(k.storeKey), types.RegisteredPairPrefix(contractAddr)) iterator := sdk.KVStorePrefixIterator(store, []byte{}) list := []types.Pair{} diff --git a/x/dex/keeper/price.go b/x/dex/keeper/price.go index 3a29433698..bf44cbba61 100644 --- a/x/dex/keeper/price.go +++ b/x/dex/keeper/price.go @@ -10,13 +10,13 @@ import ( ) func (k Keeper) SetPriceState(ctx sdk.Context, price types.Price, contractAddr string) { - store := prefix.NewStore(ctx.KVStore(k.StoreKey), types.PricePrefix(contractAddr, price.Pair.PriceDenom, price.Pair.AssetDenom)) + store := prefix.NewStore(ctx.KVStore(k.storeKey), types.PricePrefix(contractAddr, price.Pair.PriceDenom, price.Pair.AssetDenom)) b := k.Cdc.MustMarshal(&price) store.Set(GetKeyForTs(price.SnapshotTimestampInSeconds), b) } func (k Keeper) DeletePriceStateBefore(ctx sdk.Context, contractAddr string, timestamp uint64, pair types.Pair) { - store := prefix.NewStore(ctx.KVStore(k.StoreKey), types.PricePrefix(contractAddr, pair.PriceDenom, pair.AssetDenom)) + store := prefix.NewStore(ctx.KVStore(k.storeKey), types.PricePrefix(contractAddr, pair.PriceDenom, pair.AssetDenom)) iterator := sdk.KVStorePrefixIterator(store, []byte{}) defer iterator.Close() @@ -34,7 +34,7 @@ func (k Keeper) DeletePriceStateBefore(ctx sdk.Context, contractAddr string, tim } func (k Keeper) GetPriceState(ctx sdk.Context, contractAddr string, timestamp uint64, pair types.Pair) (types.Price, bool) { - store := prefix.NewStore(ctx.KVStore(k.StoreKey), types.PricePrefix(contractAddr, pair.PriceDenom, pair.AssetDenom)) + store := prefix.NewStore(ctx.KVStore(k.storeKey), types.PricePrefix(contractAddr, pair.PriceDenom, pair.AssetDenom)) res := types.Price{} key := GetKeyForTs(timestamp) if !store.Has(key) { @@ -47,7 +47,7 @@ func (k Keeper) GetPriceState(ctx sdk.Context, contractAddr string, timestamp ui } func (k Keeper) GetAllPrices(ctx sdk.Context, contractAddr string, pair types.Pair) (list []*types.Price) { - store := prefix.NewStore(ctx.KVStore(k.StoreKey), types.PricePrefix(contractAddr, pair.PriceDenom, pair.AssetDenom)) + store := prefix.NewStore(ctx.KVStore(k.storeKey), types.PricePrefix(contractAddr, pair.PriceDenom, pair.AssetDenom)) iterator := sdk.KVStorePrefixIterator(store, []byte{}) defer iterator.Close() diff --git a/x/dex/keeper/short_book.go b/x/dex/keeper/short_book.go index eb50af3bef..9a449b1ef8 100644 --- a/x/dex/keeper/short_book.go +++ b/x/dex/keeper/short_book.go @@ -9,13 +9,13 @@ import ( // SetShortBook set a specific shortBook in the store func (k Keeper) SetShortBook(ctx sdk.Context, contractAddr string, shortBook types.ShortBook) { - store := prefix.NewStore(ctx.KVStore(k.StoreKey), types.OrderBookPrefix(false, contractAddr, shortBook.Entry.PriceDenom, shortBook.Entry.AssetDenom)) + store := prefix.NewStore(ctx.KVStore(k.storeKey), types.OrderBookPrefix(false, contractAddr, shortBook.Entry.PriceDenom, shortBook.Entry.AssetDenom)) b := k.Cdc.MustMarshal(&shortBook) store.Set(GetKeyForShortBook(shortBook), b) } func (k Keeper) GetShortBookByPrice(ctx sdk.Context, contractAddr string, price sdk.Dec, priceDenom string, assetDenom string) (val types.ShortBook, found bool) { - store := prefix.NewStore(ctx.KVStore(k.StoreKey), types.OrderBookPrefix(false, contractAddr, priceDenom, assetDenom)) + store := prefix.NewStore(ctx.KVStore(k.storeKey), types.OrderBookPrefix(false, contractAddr, priceDenom, assetDenom)) b := store.Get(GetKeyForPrice(price)) if b == nil { return val, false @@ -25,13 +25,13 @@ func (k Keeper) GetShortBookByPrice(ctx sdk.Context, contractAddr string, price } func (k Keeper) RemoveShortBookByPrice(ctx sdk.Context, contractAddr string, price sdk.Dec, priceDenom string, assetDenom string) { - store := prefix.NewStore(ctx.KVStore(k.StoreKey), types.OrderBookPrefix(false, contractAddr, priceDenom, assetDenom)) + store := prefix.NewStore(ctx.KVStore(k.storeKey), types.OrderBookPrefix(false, contractAddr, priceDenom, assetDenom)) store.Delete(GetKeyForPrice(price)) } // GetAllShortBook returns all shortBook func (k Keeper) GetAllShortBook(ctx sdk.Context, contractAddr string) (list []types.ShortBook) { - store := prefix.NewStore(ctx.KVStore(k.StoreKey), types.ContractKeyPrefix(types.ShortBookKey, contractAddr)) + store := prefix.NewStore(ctx.KVStore(k.storeKey), types.ContractKeyPrefix(types.ShortBookKey, contractAddr)) iterator := sdk.KVStorePrefixIterator(store, []byte{}) defer iterator.Close() @@ -46,7 +46,7 @@ func (k Keeper) GetAllShortBook(ctx sdk.Context, contractAddr string) (list []ty } func (k Keeper) GetAllShortBookForPair(ctx sdk.Context, contractAddr string, priceDenom string, assetDenom string) (list []types.OrderBookEntry) { - store := prefix.NewStore(ctx.KVStore(k.StoreKey), types.OrderBookPrefix(false, contractAddr, priceDenom, assetDenom)) + store := prefix.NewStore(ctx.KVStore(k.storeKey), types.OrderBookPrefix(false, contractAddr, priceDenom, assetDenom)) iterator := sdk.KVStorePrefixIterator(store, []byte{}) defer iterator.Close() @@ -61,7 +61,7 @@ func (k Keeper) GetAllShortBookForPair(ctx sdk.Context, contractAddr string, pri } func (k Keeper) GetAllShortBookForPairPaginated(ctx sdk.Context, contractAddr string, priceDenom string, assetDenom string, page *query.PageRequest) (list []types.ShortBook, pageRes *query.PageResponse, err error) { - store := prefix.NewStore(ctx.KVStore(k.StoreKey), types.OrderBookPrefix(false, contractAddr, priceDenom, assetDenom)) + store := prefix.NewStore(ctx.KVStore(k.storeKey), types.OrderBookPrefix(false, contractAddr, priceDenom, assetDenom)) pageRes, err = query.Paginate(store, page, func(key []byte, value []byte) error { var shortBook types.ShortBook diff --git a/x/dex/keeper/tick.go b/x/dex/keeper/tick.go index 899e79658a..18256b2335 100644 --- a/x/dex/keeper/tick.go +++ b/x/dex/keeper/tick.go @@ -11,7 +11,7 @@ const defaultAddr = "default" // contract_addr, pair -> tick size func (k Keeper) SetTickSizeForPair(ctx sdk.Context, contractAddr string, pair types.Pair, ticksize sdk.Dec) { - store := prefix.NewStore(ctx.KVStore(k.StoreKey), types.TickSizeKeyPrefix(contractAddr)) + store := prefix.NewStore(ctx.KVStore(k.storeKey), types.TickSizeKeyPrefix(contractAddr)) bytes, err := ticksize.Marshal() if err != nil { panic(err) @@ -20,7 +20,7 @@ func (k Keeper) SetTickSizeForPair(ctx sdk.Context, contractAddr string, pair ty } func (k Keeper) SetDefaultTickSizeForPair(ctx sdk.Context, pair types.Pair, ticksize sdk.Dec) { - store := prefix.NewStore(ctx.KVStore(k.StoreKey), types.TickSizeKeyPrefix(defaultAddr)) + store := prefix.NewStore(ctx.KVStore(k.storeKey), types.TickSizeKeyPrefix(defaultAddr)) bytes, err := ticksize.Marshal() if err != nil { panic(err) @@ -29,7 +29,7 @@ func (k Keeper) SetDefaultTickSizeForPair(ctx sdk.Context, pair types.Pair, tick } func (k Keeper) GetTickSizeForPair(ctx sdk.Context, contractAddr string, pair types.Pair) (sdk.Dec, bool) { - store := prefix.NewStore(ctx.KVStore(k.StoreKey), types.TickSizeKeyPrefix(contractAddr)) + store := prefix.NewStore(ctx.KVStore(k.storeKey), types.TickSizeKeyPrefix(contractAddr)) b := store.Get(types.PairPrefix(pair.PriceDenom, pair.AssetDenom)) if b == nil { return sdk.ZeroDec(), false @@ -43,7 +43,7 @@ func (k Keeper) GetTickSizeForPair(ctx sdk.Context, contractAddr string, pair ty } func (k Keeper) GetDefaultTickSizeForPair(ctx sdk.Context, pair types.Pair) (sdk.Dec, bool) { - store := prefix.NewStore(ctx.KVStore(k.StoreKey), types.TickSizeKeyPrefix(defaultAddr)) + store := prefix.NewStore(ctx.KVStore(k.storeKey), types.TickSizeKeyPrefix(defaultAddr)) b := store.Get(types.PairPrefix(pair.PriceDenom, pair.AssetDenom)) if b == nil { return sdk.ZeroDec(), false diff --git a/x/dex/keeper/trigger_book.go b/x/dex/keeper/trigger_book.go index fee58550b1..f54b81adfc 100644 --- a/x/dex/keeper/trigger_book.go +++ b/x/dex/keeper/trigger_book.go @@ -9,19 +9,19 @@ import ( ) func (k Keeper) SetTriggeredOrder(ctx sdk.Context, contractAddr string, order types.Order, priceDenom string, assetDenom string) { - store := prefix.NewStore(ctx.KVStore(k.StoreKey), types.TriggerOrderBookPrefix(contractAddr, priceDenom, assetDenom)) + store := prefix.NewStore(ctx.KVStore(k.storeKey), types.TriggerOrderBookPrefix(contractAddr, priceDenom, assetDenom)) b := k.Cdc.MustMarshal(&order) store.Set(GetKeyForOrderID(order.Id), b) } func (k Keeper) RemoveTriggeredOrder(ctx sdk.Context, contractAddr string, orderID uint64, priceDenom string, assetDenom string) { - store := prefix.NewStore(ctx.KVStore(k.StoreKey), types.TriggerOrderBookPrefix(contractAddr, priceDenom, assetDenom)) + store := prefix.NewStore(ctx.KVStore(k.storeKey), types.TriggerOrderBookPrefix(contractAddr, priceDenom, assetDenom)) store.Delete(GetKeyForOrderID(orderID)) } func (k Keeper) GetTriggeredOrderByID(ctx sdk.Context, contractAddr string, orderID uint64, priceDenom string, assetDenom string) (val types.Order, found bool) { - store := prefix.NewStore(ctx.KVStore(k.StoreKey), types.TriggerOrderBookPrefix(contractAddr, priceDenom, assetDenom)) + store := prefix.NewStore(ctx.KVStore(k.storeKey), types.TriggerOrderBookPrefix(contractAddr, priceDenom, assetDenom)) b := store.Get(GetKeyForOrderID(orderID)) if b == nil { return val, false @@ -31,7 +31,7 @@ func (k Keeper) GetTriggeredOrderByID(ctx sdk.Context, contractAddr string, orde } func (k Keeper) GetAllTriggeredOrdersForPair(ctx sdk.Context, contractAddr string, priceDenom string, assetDenom string) (list []types.Order) { - store := prefix.NewStore(ctx.KVStore(k.StoreKey), types.TriggerOrderBookPrefix(contractAddr, priceDenom, assetDenom)) + store := prefix.NewStore(ctx.KVStore(k.storeKey), types.TriggerOrderBookPrefix(contractAddr, priceDenom, assetDenom)) iterator := sdk.KVStorePrefixIterator(store, []byte{}) defer iterator.Close() @@ -46,7 +46,7 @@ func (k Keeper) GetAllTriggeredOrdersForPair(ctx sdk.Context, contractAddr strin } func (k Keeper) GetAllTriggeredOrders(ctx sdk.Context, contractAddr string) (list []types.Order) { - store := prefix.NewStore(ctx.KVStore(k.StoreKey), types.ContractKeyPrefix(types.TriggerBookKey, contractAddr)) + store := prefix.NewStore(ctx.KVStore(k.storeKey), types.ContractKeyPrefix(types.TriggerBookKey, contractAddr)) iterator := sdk.KVStorePrefixIterator(store, []byte{}) defer iterator.Close() diff --git a/x/dex/migrations/v9_to_v10.go b/x/dex/migrations/v9_to_v10.go deleted file mode 100644 index 51724948fe..0000000000 --- a/x/dex/migrations/v9_to_v10.go +++ /dev/null @@ -1,45 +0,0 @@ -package migrations - -import ( - "encoding/binary" - "fmt" - - "github.com/cosmos/cosmos-sdk/store/prefix" - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/sei-protocol/sei-chain/x/dex/keeper" - "github.com/sei-protocol/sei-chain/x/dex/types" -) - -func V9ToV10(ctx sdk.Context, dexkeeper keeper.Keeper) error { - allContractInfo := dexkeeper.GetAllContractInfo(ctx) - for _, contractInfo := range allContractInfo { - - store := prefix.NewStore( - ctx.KVStore(dexkeeper.StoreKey), - types.MatchResultPrefix(contractInfo.ContractAddr), - ) - prevHeight := ctx.BlockHeight() - 1 - // Get latest match result - key := make([]byte, 8) - binary.BigEndian.PutUint64(key, uint64(prevHeight)) - if !store.Has(key) { - panic(fmt.Sprintf("Match result key not found for height %d", prevHeight)) - } - bz := store.Get(key) - result := types.MatchResult{} - if err := result.Unmarshal(bz); err != nil { - panic(err) - } - dexkeeper.SetMatchResult(ctx, contractInfo.ContractAddr, &result) - - // Now, remove all older ones - for i := int64(0); i <= prevHeight; i++ { - key := make([]byte, 8) - binary.BigEndian.PutUint64(key, uint64(i)) - if store.Has(key) { - store.Delete(key) - } - } - } - return nil -} diff --git a/x/dex/migrations/v9_to_v10_test.go b/x/dex/migrations/v9_to_v10_test.go deleted file mode 100644 index 2e0d3f660a..0000000000 --- a/x/dex/migrations/v9_to_v10_test.go +++ /dev/null @@ -1,91 +0,0 @@ -package migrations_test - -import ( - "encoding/binary" - "github.com/sei-protocol/sei-chain/x/dex/migrations" - "testing" - - "github.com/cosmos/cosmos-sdk/store/prefix" - keepertest "github.com/sei-protocol/sei-chain/testutil/keeper" - "github.com/sei-protocol/sei-chain/x/dex/keeper" - "github.com/sei-protocol/sei-chain/x/dex/types" - "github.com/stretchr/testify/require" -) - -func TestMigrate9to10(t *testing.T) { - dexkeeper, ctx := keepertest.DexKeeper(t) - // write old contract - store := prefix.NewStore( - ctx.KVStore(dexkeeper.GetStoreKey()), - []byte(keeper.ContractPrefixKey), - ) - contract := types.ContractInfo{ - CodeId: 1, - ContractAddr: keepertest.TestContract, - NeedOrderMatching: true, - } - contractBytes, _ := contract.Marshal() - store.Set([]byte(contract.ContractAddr), contractBytes) - - // write old match results format - store = prefix.NewStore( - ctx.KVStore(dexkeeper.GetStoreKey()), - types.MatchResultPrefix(keepertest.TestContract), - ) - order1 := []*types.Order{{ - Id: 1, - }} - order2 := []*types.Order{{ - Id: 2, - }} - matchResult1 := types.MatchResult{ - Height: int64(1), - ContractAddr: keepertest.TestContract, - Orders: order1, - } - matchResult2 := types.MatchResult{ - Height: int64(2), - ContractAddr: keepertest.TestContract, - Orders: order2, - } - // Insert old match results format to blockHeights 1, 2 - // That is: matchResultsPrefix- - height := 1 - bz, err := matchResult1.Marshal() - if err != nil { - panic(err) - } - key := make([]byte, 8) - binary.BigEndian.PutUint64(key, uint64(height)) - store.Set(key, bz) - - height = 2 - bz, err = matchResult2.Marshal() - if err != nil { - panic(err) - } - key = make([]byte, 8) - binary.BigEndian.PutUint64(key, uint64(height)) - store.Set(key, bz) - - ctx = ctx.WithBlockHeight(3) - - // Perform migration - err = migrations.V9ToV10(ctx, *dexkeeper) - require.NoError(t, err) - - // We expect that everything is under the new format: matchResultsPrefix-matchResultsKey - matchResult, found := dexkeeper.GetMatchResultState(ctx, keepertest.TestContract) - require.True(t, found) - require.Equal(t, types.MatchResult{Height: 3, ContractAddr: keepertest.TestContract, Orders: order2}, *matchResult) - // All previous - should be purged - for i := 0; i < 2; i++ { - store := prefix.NewStore( - ctx.KVStore(dexkeeper.GetStoreKey()), - types.MatchResultPrefix(keepertest.TestContract), - ) - key := make([]byte, 8) - binary.BigEndian.PutUint64(key, uint64(i)) - require.False(t, store.Has(key)) - } -} diff --git a/x/dex/module.go b/x/dex/module.go index ebd9b002c5..7fea936231 100644 --- a/x/dex/module.go +++ b/x/dex/module.go @@ -211,7 +211,7 @@ func (am AppModule) ExportGenesis(ctx sdk.Context, cdc codec.JSONCodec) json.Raw } // ConsensusVersion implements ConsensusVersion. -func (AppModule) ConsensusVersion() uint64 { return 10 } +func (AppModule) ConsensusVersion() uint64 { return 9 } func (am AppModule) getAllContractInfo(ctx sdk.Context) []types.ContractInfoV2 { return am.keeper.GetAllContractInfo(ctx) From 6ddf4c32151c78362d8fa187a8fa1c738e6c8a10 Mon Sep 17 00:00:00 2001 From: Philip Su Date: Mon, 14 Nov 2022 08:27:03 -0800 Subject: [PATCH 09/10] revert migration --- x/dex/module.go | 3 --- 1 file changed, 3 deletions(-) diff --git a/x/dex/module.go b/x/dex/module.go index 7fea936231..586d87e450 100644 --- a/x/dex/module.go +++ b/x/dex/module.go @@ -184,9 +184,6 @@ func (am AppModule) RegisterServices(cfg module.Configurator) { _ = cfg.RegisterMigration(types.ModuleName, 8, func(ctx sdk.Context) error { return migrations.V8ToV9(ctx, am.keeper) }) - _ = cfg.RegisterMigration(types.ModuleName, 9, func(ctx sdk.Context) error { - return migrations.V9ToV10(ctx, am.keeper) - }) } // RegisterInvariants registers the capability module's invariants. From d3d827cb484db93fdf530707f4dec14731da49a9 Mon Sep 17 00:00:00 2001 From: Philip Su Date: Mon, 14 Nov 2022 15:02:43 -0800 Subject: [PATCH 10/10] gofmt --- x/dex/keeper/keeper.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/x/dex/keeper/keeper.go b/x/dex/keeper/keeper.go index 4e98795523..6c854e98a5 100644 --- a/x/dex/keeper/keeper.go +++ b/x/dex/keeper/keeper.go @@ -19,9 +19,9 @@ import ( type ( Keeper struct { - Cdc codec.BinaryCodec - storeKey sdk.StoreKey - memKey sdk.StoreKey + Cdc codec.BinaryCodec + storeKey sdk.StoreKey + memKey sdk.StoreKey Paramstore paramtypes.Subspace AccountKeeper authkeeper.AccountKeeper EpochKeeper epochkeeper.Keeper