diff --git a/.golangci.yml b/.golangci.yml index b8301e1ae..ed019d9bf 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -28,10 +28,11 @@ linters: - bodyclose - deadcode - depguard - - dogsled + # - dogsled #- dupl - errcheck - - funlen + #- funlen + - forcetypeassert #- gochecknoglobals #- gochecknoinits #- gocognit @@ -58,7 +59,7 @@ linters: - nakedret #- nestif #- nolintlint - - prealloc + #- prealloc - rowserrcheck - scopelint - staticcheck @@ -67,7 +68,7 @@ linters: - testpackage - typecheck - unconvert - - unparam + #- unparam - unused - varcheck - whitespace diff --git a/Makefile b/Makefile index f3e85faf2..9401fd2a5 100644 --- a/Makefile +++ b/Makefile @@ -93,6 +93,20 @@ endif all: install test +go-mod-cache: go.sum + @echo "--> Download go modules to local cache" + @go mod download + +go.sum: go.mod + @echo "--> Ensure dependencies have not been modified" + @go mod verify + +clean: + rm -rf $(CURDIR)/artifacts/ + +distclean: clean + rm -rf vendor/ + install: go.sum go install -mod=readonly $(BUILD_FLAGS) ./cmd/comdex diff --git a/app/app.go b/app/app.go index 4c7447d1b..d9614764a 100644 --- a/app/app.go +++ b/app/app.go @@ -2,10 +2,12 @@ package app import ( "fmt" + "net/http" + "sort" + icacontrollertypes "github.com/cosmos/ibc-go/v3/modules/apps/27-interchain-accounts/controller/types" "github.com/gorilla/mux" "github.com/rakyll/statik/fs" - "net/http" ica "github.com/cosmos/ibc-go/v3/modules/apps/27-interchain-accounts" icahost "github.com/cosmos/ibc-go/v3/modules/apps/27-interchain-accounts/host" @@ -192,10 +194,10 @@ func GetGovProposalHandlers() []govclient.ProposalHandler { proposalHandlers := []govclient.ProposalHandler{ bandoraclemoduleclient.AddFetchPriceHandler, lendclient.AddLendPairsHandler, - lendclient.UpdateLendPairsHandler, lendclient.AddPoolHandler, lendclient.AddAssetToPairHandler, lendclient.AddAssetRatesStatsHandler, + lendclient.AddAuctionParamsHandler, paramsclient.ProposalHandler, distrclient.ProposalHandler, upgradeclient.ProposalHandler, @@ -551,7 +553,7 @@ func New( &app.MarketKeeper, ) - app.LendKeeper = *lendkeeper.NewKeeper( + app.LendKeeper = lendkeeper.NewKeeper( app.cdc, app.keys[lendtypes.StoreKey], app.keys[lendtypes.StoreKey], @@ -562,7 +564,7 @@ func New( &app.MarketKeeper, ) - app.EsmKeeper = *esmkeeper.NewKeeper( + app.EsmKeeper = esmkeeper.NewKeeper( app.cdc, app.keys[esmtypes.StoreKey], app.keys[esmtypes.StoreKey], @@ -613,7 +615,7 @@ func New( app.IbcKeeper.ChannelKeeper, ) - app.MarketKeeper = *marketkeeper.NewKeeper( + app.MarketKeeper = marketkeeper.NewKeeper( app.cdc, app.keys[markettypes.StoreKey], app.GetSubspace(markettypes.ModuleName), @@ -622,7 +624,7 @@ func New( &app.BandoracleKeeper, ) - app.LiquidationKeeper = *liquidationkeeper.NewKeeper( + app.LiquidationKeeper = liquidationkeeper.NewKeeper( app.cdc, keys[liquidationtypes.StoreKey], keys[liquidationtypes.MemStoreKey], @@ -637,7 +639,7 @@ func New( &app.LendKeeper, ) - app.AuctionKeeper = *auctionkeeper.NewKeeper( + app.AuctionKeeper = auctionkeeper.NewKeeper( app.cdc, keys[auctiontypes.StoreKey], keys[auctiontypes.MemStoreKey], @@ -654,7 +656,7 @@ func New( &app.LendKeeper, ) - app.CollectorKeeper = *collectorkeeper.NewKeeper( + app.CollectorKeeper = collectorkeeper.NewKeeper( app.cdc, app.keys[collectortypes.StoreKey], app.keys[collectortypes.MemStoreKey], @@ -699,7 +701,7 @@ func New( &app.Rewardskeeper, ) - app.Rewardskeeper = *rewardskeeper.NewKeeper( + app.Rewardskeeper = rewardskeeper.NewKeeper( app.cdc, app.keys[rewardstypes.StoreKey], app.keys[rewardstypes.MemStoreKey], @@ -995,7 +997,13 @@ func (a *App) LoadHeight(height int64) error { // ModuleAccountAddrs returns all the app's module account addresses. func (a *App) ModuleAccountAddrs() map[string]bool { accounts := make(map[string]bool) + + names := make([]string, 0) for name := range a.ModuleAccountsPermissions() { + names = append(names, name) + } + sort.Strings(names) + for _, name := range names { accounts[authtypes.NewModuleAddress(name).String()] = true } diff --git a/app/wasm/bindings/msg.go b/app/wasm/bindings/msg.go index 8aed91cdf..b70ca99b1 100644 --- a/app/wasm/bindings/msg.go +++ b/app/wasm/bindings/msg.go @@ -71,6 +71,7 @@ type MsgSetAuctionMappingForApp struct { AssetIDs []uint64 `json:"asset_id"` IsSurplusAuctions []bool `json:"is_surplus_auction"` IsDebtAuctions []bool `json:"is_debt_auction"` + IsDistributor []bool `json:"is_distributor"` AssetOutOraclePrices []bool `json:"asset_out_oracle_price"` AssetOutPrices []uint64 `json:"asset_out_price"` } diff --git a/app/wasm/message_plugin.go b/app/wasm/message_plugin.go index 088b4fe86..9c0173e31 100644 --- a/app/wasm/message_plugin.go +++ b/app/wasm/message_plugin.go @@ -125,8 +125,7 @@ func WhiteListAsset(lockerKeeper lockerkeeper.Keeper, ctx sdk.Context, contractA AppId: whiteListAsset.AppID, AssetId: whiteListAsset.AssetID, } - msgServer := lockerkeeper.NewMsgServer(lockerKeeper) - _, err := msgServer.MsgAddWhiteListedAsset(sdk.WrapSDKContext(ctx), &msg) + _, err := lockerKeeper.AddWhiteListedAsset(sdk.WrapSDKContext(ctx), &msg) if err != nil { return err @@ -150,8 +149,7 @@ func WhitelistAppIDLockerRewards(rewardsKeeper rewardskeeper.Keeper, ctx sdk.Con AppMappingId: whiteListAsset.AppID, AssetId: whiteListAsset.AssetIDs, } - msgServer := rewardskeeper.NewMsgServerImpl(rewardsKeeper) - _, err := msgServer.Whitelist(sdk.WrapSDKContext(ctx), &msg) + _, err := rewardsKeeper.Whitelist(sdk.WrapSDKContext(ctx), &msg) if err != nil { return err @@ -175,8 +173,7 @@ func WhitelistAppIDVaultInterest(rewardsKeeper rewardskeeper.Keeper, ctx sdk.Con From: contractAddr, AppMappingId: whiteListAsset.AppID, } - msgServer := rewardskeeper.NewMsgServerImpl(rewardsKeeper) - _, err := msgServer.WhitelistAppVault(sdk.WrapSDKContext(ctx), &msg) + _, err := rewardsKeeper.WhitelistAppVault(sdk.WrapSDKContext(ctx), &msg) if err != nil { return err diff --git a/app/wasm/test/helpers_test.go b/app/wasm/test/helpers_test.go new file mode 100644 index 000000000..830ea7b54 --- /dev/null +++ b/app/wasm/test/helpers_test.go @@ -0,0 +1,226 @@ +package wasm + +import ( + "fmt" + "testing" + "time" + + "github.com/comdex-official/comdex/app/wasm/bindings" + assetTypes "github.com/comdex-official/comdex/x/asset/types" + tokenmintTypes "github.com/comdex-official/comdex/x/tokenmint/types" + + "github.com/stretchr/testify/require" + + "github.com/cosmos/cosmos-sdk/simapp" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/tendermint/tendermint/crypto" + "github.com/tendermint/tendermint/crypto/ed25519" + tmproto "github.com/tendermint/tendermint/proto/tendermint/types" + + "github.com/comdex-official/comdex/app" + "github.com/comdex-official/comdex/x/tokenmint/keeper" +) + +func SetupCustomApp() (*app.App, *sdk.Context) { + comdex, ctx := CreateTestInput() + return comdex, ctx +} + +func CreateTestInput() (*app.App, *sdk.Context) { + comdex := app.Setup(false) + ctx := comdex.BaseApp.NewContext(false, tmproto.Header{Height: 1, ChainID: "comdex-1", Time: time.Now().UTC()}) + return comdex, &ctx +} + +func FundAccount(t *testing.T, ctx sdk.Context, comdex *app.App, acct sdk.AccAddress) { + err := simapp.FundAccount(comdex.BankKeeper, ctx, acct, sdk.NewCoins( + sdk.NewCoin("ucmdx", sdk.NewInt(10000000000)), + )) + require.NoError(t, err) +} + +// we need to make this deterministic (same every test run), as content might affect gas costs +func keyPubAddr() (crypto.PrivKey, crypto.PubKey, sdk.AccAddress) { + key := ed25519.GenPrivKey() + pub := key.PubKey() + addr := sdk.AccAddress(pub.Address()) + return key, pub, addr +} + +func RandomAccountAddress() sdk.AccAddress { + _, _, addr := keyPubAddr() + return addr +} + +func RandomBech32AccountAddress() string { + return RandomAccountAddress().String() +} + +func AddAppAsset(app *app.App, ctx1 sdk.Context) { + assetKeeper, ctx := &app.AssetKeeper, &ctx1 + userAddress := "cosmos1q7q90qsl9g0gl2zz0njxwv2a649yqrtyxtnv3v" + genesisSupply := sdk.NewIntFromUint64(9000000) + msg1 := assetTypes.AppData{ + Name: "cswap", + ShortName: "cswap", + MinGovDeposit: sdk.NewIntFromUint64(10000000), + GovTimeInSeconds: 900, + GenesisToken: []assetTypes.MintGenesisToken{ + { + 3, + genesisSupply, + true, + userAddress, + }, + }, + } + _ = assetKeeper.AddAppRecords(*ctx, msg1) + + msg2 := assetTypes.Asset{Name: "CMDX", + Denom: "ucmdx", + Decimals: 1000000, + IsOnChain: true} + _ = assetKeeper.AddAssetRecords(*ctx, msg2) + + msg3 := assetTypes.Asset{Name: "CMST", + Denom: "ucmst", + Decimals: 1000000, + IsOnChain: true} + _ = assetKeeper.AddAssetRecords(*ctx, msg3) + + msg4 := assetTypes.Asset{Name: "HARBOR", + Denom: "uharbor", + Decimals: 1000000, + IsOnChain: true} + _ = assetKeeper.AddAssetRecords(*ctx, msg4) + +} + +func AddPair(app *app.App, ctx1 sdk.Context) { + AddAppAsset(app, ctx1) + assetKeeper, ctx := &app.AssetKeeper, &ctx1 + for _, tc := range []struct { + name string + pair assetTypes.Pair + symbol1 string + symbol2 string + isErrorExpectedForPair bool + pairID uint64 + }{ + {"Add Pair 1: cmdx cmst", + assetTypes.Pair{ + AssetIn: 1, + AssetOut: 2, + }, + "ucmdx", + "ucmst", + false, + 1, + }, + } { + _ = assetKeeper.AddPairsRecords(*ctx, tc.pair) + } +} + +func AddCollectorLookuptable(app *app.App, ctx1 sdk.Context) { + AddAppAsset(app, ctx1) + collectorKeeper, ctx := &app.CollectorKeeper, &ctx1 + for _, tc := range []struct { + name string + msg bindings.MsgSetCollectorLookupTable + }{ + {"Wasm Add MsgSetCollectorLookupTable AppID 1 CollectorAssetID 2", + bindings.MsgSetCollectorLookupTable{ + AppID: 1, + CollectorAssetID: 2, + SecondaryAssetID: 3, + SurplusThreshold: 10000000, + DebtThreshold: 5000000, + LockerSavingRate: sdk.MustNewDecFromStr("0.1"), + LotSize: 2000000, + BidFactor: sdk.MustNewDecFromStr("0.01"), + DebtLotSize: 2000000, + }, + }, + } { + _ = collectorKeeper.WasmSetCollectorLookupTable(*ctx, &tc.msg) + } +} + +func AddExtendedPairVault(app *app.App, ctx1 sdk.Context) { + AddAppAsset(app, ctx1) + assetKeeper, ctx := &app.AssetKeeper, &ctx1 + for _, tc := range []struct { + name string + msg bindings.MsgAddExtendedPairsVault + }{ + {"Add Extended Pair Vault : cmdx cmst", + + bindings.MsgAddExtendedPairsVault{ + AppID: 1, + PairID: 1, + StabilityFee: sdk.MustNewDecFromStr("0.01"), + ClosingFee: sdk.MustNewDecFromStr("0"), + LiquidationPenalty: sdk.MustNewDecFromStr("0.12"), + DrawDownFee: sdk.MustNewDecFromStr("0.01"), + IsVaultActive: true, + DebtCeiling: 1000000000000, + DebtFloor: 1000000, + IsStableMintVault: false, + MinCr: sdk.MustNewDecFromStr("1.5"), + PairName: "CMDX-A", + AssetOutOraclePrice: true, + AssetOutPrice: 1000000, + MinUsdValueLeft: 1000000, + }, + }, + } { + _ = assetKeeper.WasmAddExtendedPairsVaultRecords(*ctx, &tc.msg) + } +} + +func WhitelistAppIDLiquidation(app *app.App, ctx1 sdk.Context) { + AddAppAsset(app, ctx1) + liquidationKeeper, ctx := &app.LiquidationKeeper, &ctx1 + for _, tc := range []struct { + name string + msg bindings.MsgWhitelistAppIDLiquidation + }{ + {"Whitelist AppID Liquidation", + + bindings.MsgWhitelistAppIDLiquidation{ + AppID: 1, + }, + }, + } { + _ = liquidationKeeper.WasmWhitelistAppIDLiquidation(*ctx, tc.msg.AppID) + } +} + +func MsgMintNewTokens(app *app.App, ctx1 sdk.Context) { + AddAppAsset(app, ctx1) + userAddress := "cosmos1q7q90qsl9g0gl2zz0njxwv2a649yqrtyxtnv3v" + tokenmintKeeper, ctx := &app.TokenmintKeeper, &ctx1 + wctx := sdk.WrapSDKContext(*ctx) + + server := keeper.NewMsgServer(*tokenmintKeeper) + for _, tc := range []struct { + name string + msg tokenmintTypes.MsgMintNewTokensRequest + expectedError bool + }{ + { + "Mint New Tokens : App ID : 1, Asset ID : 3", + tokenmintTypes.MsgMintNewTokensRequest{ + From: userAddress, + AppId: 1, + AssetId: 3, + }, + false, + }, + } { + _, err := server.MsgMintNewTokens(wctx, &tc.msg) + fmt.Println(err) + } + +} diff --git a/app/wasm/test/messages_test.go b/app/wasm/test/messages_test.go new file mode 100644 index 000000000..471f89d20 --- /dev/null +++ b/app/wasm/test/messages_test.go @@ -0,0 +1,468 @@ +package wasm + +import ( + "github.com/comdex-official/comdex/app/wasm" + "github.com/comdex-official/comdex/app/wasm/bindings" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/stretchr/testify/require" + "testing" +) + +func TestWhitelistAssetLocker(t *testing.T) { + actor := RandomAccountAddress() + comdex, ctx := SetupCustomApp() + AddAppAsset(comdex, *ctx) + querier := wasm.NewQueryPlugin(&comdex.AssetKeeper, + &comdex.LockerKeeper, + &comdex.TokenmintKeeper, + &comdex.Rewardskeeper, + &comdex.CollectorKeeper, + &comdex.LiquidationKeeper, + &comdex.EsmKeeper) + for _, tc := range []struct { + name string + msg *bindings.MsgWhiteListAssetLocker + isErrorExpected bool + }{ + { + name: "Add Whitelist Asset Locker", + msg: &bindings.MsgWhiteListAssetLocker{ + AppID: 1, + AssetID: 1, + }, + isErrorExpected: false, + }, + } { + t.Run(tc.name, func(t *testing.T) { + found, _ := querier.WhiteListedAssetQueryCheck(*ctx, tc.msg.AppID, tc.msg.AssetID) + require.True(t, found) + err := wasm.WhiteListAsset(comdex.LockerKeeper, *ctx, actor.String(), tc.msg) + if tc.isErrorExpected { + require.Error(t, err) + } else { + require.NoError(t, err) + found, _ := querier.WhiteListedAssetQueryCheck(*ctx, tc.msg.AppID, tc.msg.AssetID) + require.False(t, found) + } + }) + } +} + +func TestAddMsgAddExtendedPairsVault(t *testing.T) { + actor := RandomAccountAddress() + comdex, ctx := SetupCustomApp() + AddPair(comdex, *ctx) + querier := wasm.NewQueryPlugin(&comdex.AssetKeeper, + &comdex.LockerKeeper, + &comdex.TokenmintKeeper, + &comdex.Rewardskeeper, + &comdex.CollectorKeeper, + &comdex.LiquidationKeeper, + &comdex.EsmKeeper) + for _, tc := range []struct { + name string + msg *bindings.MsgAddExtendedPairsVault + isErrorExpected bool + }{ + { + name: "Add Extended Pair Vaultr", + msg: &bindings.MsgAddExtendedPairsVault{ + AppID: 1, + PairID: 1, + StabilityFee: sdk.MustNewDecFromStr("0.01"), + ClosingFee: sdk.MustNewDecFromStr("0"), + LiquidationPenalty: sdk.MustNewDecFromStr("0.12"), + DrawDownFee: sdk.MustNewDecFromStr("0.01"), + IsVaultActive: true, + DebtCeiling: 1000000000000, + DebtFloor: 1000000, + IsStableMintVault: false, + MinCr: sdk.MustNewDecFromStr("1.5"), + PairName: "CMDX-B", + AssetOutOraclePrice: true, + AssetOutPrice: 1000000, + MinUsdValueLeft: 1000000000000, + }, + isErrorExpected: false, + }, + } { + t.Run(tc.name, func(t *testing.T) { + found, _ := querier.ExtendedPairsVaultRecordsQueryCheck(*ctx, tc.msg.AppID, tc.msg.PairID, tc.msg.StabilityFee, tc.msg.ClosingFee, tc.msg.DrawDownFee, tc.msg.DebtCeiling, tc.msg.DebtFloor, tc.msg.PairName) + + require.True(t, found) + err := wasm.MsgAddExtendedPairsVault(comdex.AssetKeeper, *ctx, actor, tc.msg) + if tc.isErrorExpected { + require.Error(t, err) + } else { + require.NoError(t, err) + found, _ := querier.ExtendedPairsVaultRecordsQueryCheck(*ctx, tc.msg.AppID, tc.msg.PairID, tc.msg.StabilityFee, tc.msg.ClosingFee, tc.msg.DrawDownFee, tc.msg.DebtCeiling, tc.msg.DebtFloor, tc.msg.PairName) + require.False(t, found) + } + }) + } +} + +func TestMsgSetCollectorLookupTable(t *testing.T) { + actor := RandomAccountAddress() + comdex, ctx := SetupCustomApp() + AddPair(comdex, *ctx) + querier := wasm.NewQueryPlugin(&comdex.AssetKeeper, + &comdex.LockerKeeper, + &comdex.TokenmintKeeper, + &comdex.Rewardskeeper, + &comdex.CollectorKeeper, + &comdex.LiquidationKeeper, + &comdex.EsmKeeper) + for _, tc := range []struct { + name string + msg *bindings.MsgSetCollectorLookupTable + isErrorExpected bool + }{ + { + name: "Add Collector Lookup Table", + msg: &bindings.MsgSetCollectorLookupTable{ + AppID: 1, + CollectorAssetID: 2, + SecondaryAssetID: 3, + SurplusThreshold: 10000000, + DebtThreshold: 5000000, + LockerSavingRate: sdk.MustNewDecFromStr("0.1"), + LotSize: 2000000, + BidFactor: sdk.MustNewDecFromStr("0.01"), + DebtLotSize: 2000000, + }, + isErrorExpected: false, + }, + } { + t.Run(tc.name, func(t *testing.T) { + found, _ := querier.CollectorLookupTableQueryCheck(*ctx, tc.msg.AppID, tc.msg.CollectorAssetID, tc.msg.SecondaryAssetID) + + require.True(t, found) + err := wasm.MsgSetCollectorLookupTable(comdex.CollectorKeeper, *ctx, actor, tc.msg) + if tc.isErrorExpected { + require.Error(t, err) + } else { + require.NoError(t, err) + found, _ := querier.CollectorLookupTableQueryCheck(*ctx, tc.msg.AppID, tc.msg.CollectorAssetID, tc.msg.SecondaryAssetID) + require.False(t, found) + } + }) + } +} + +func TestMsgSetAuctionMappingForApp(t *testing.T) { + actor := RandomAccountAddress() + comdex, ctx := SetupCustomApp() + AddPair(comdex, *ctx) + querier := wasm.NewQueryPlugin(&comdex.AssetKeeper, + &comdex.LockerKeeper, + &comdex.TokenmintKeeper, + &comdex.Rewardskeeper, + &comdex.CollectorKeeper, + &comdex.LiquidationKeeper, + &comdex.EsmKeeper) + for _, tc := range []struct { + name string + msg *bindings.MsgSetAuctionMappingForApp + isErrorExpected bool + }{ + { + name: "Add Collector Lookup Table", + msg: &bindings.MsgSetAuctionMappingForApp{ + AppID: 1, + AssetIDs: []uint64{2}, + IsSurplusAuctions: []bool{true}, + IsDebtAuctions: []bool{false}, + IsDistributor: []bool{false}, + AssetOutOraclePrices: []bool{false}, + AssetOutPrices: []uint64{1000000}, + }, + isErrorExpected: false, + }, + } { + t.Run(tc.name, func(t *testing.T) { + found, _ := querier.AuctionMappingForAppQueryCheck(*ctx, tc.msg.AppID) + + require.True(t, found) + err := wasm.MsgSetAuctionMappingForApp(comdex.CollectorKeeper, *ctx, actor, tc.msg) + if tc.isErrorExpected { + require.Error(t, err) + } else { + require.NoError(t, err) + found, _ := querier.AuctionMappingForAppQueryCheck(*ctx, tc.msg.AppID) + require.True(t, found) + } + }) + } +} + +func TestMsgUpdateCollectorLookupTable(t *testing.T) { + actor := RandomAccountAddress() + comdex, ctx := SetupCustomApp() + AddPair(comdex, *ctx) + AddCollectorLookuptable(comdex, *ctx) + querier := wasm.NewQueryPlugin(&comdex.AssetKeeper, + &comdex.LockerKeeper, + &comdex.TokenmintKeeper, + &comdex.Rewardskeeper, + &comdex.CollectorKeeper, + &comdex.LiquidationKeeper, + &comdex.EsmKeeper) + for _, tc := range []struct { + name string + msg *bindings.MsgUpdateCollectorLookupTable + isErrorExpected bool + }{ + { + name: "Add Collector Lookup Table", + msg: &bindings.MsgUpdateCollectorLookupTable{ + AppID: 1, + AssetID: 2, + SurplusThreshold: 9999, + DebtThreshold: 99, + LSR: sdk.MustNewDecFromStr("0.001"), + LotSize: 100, + BidFactor: sdk.MustNewDecFromStr("0.00001"), + DebtLotSize: 300, + }, + isErrorExpected: false, + }, + } { + t.Run(tc.name, func(t *testing.T) { + found, _ := querier.UpdateCollectorLookupTableQueryCheck(*ctx, tc.msg.AppID, tc.msg.AssetID) + + require.True(t, found) + err := wasm.MsgUpdateCollectorLookupTable(comdex.CollectorKeeper, *ctx, actor, tc.msg) + if tc.isErrorExpected { + require.Error(t, err) + } else { + require.NoError(t, err) + found, _ := querier.UpdateCollectorLookupTableQueryCheck(*ctx, tc.msg.AppID, tc.msg.AssetID) + require.True(t, found) + } + }) + } +} + +func TestMsgUpdatePairsVault(t *testing.T) { + actor := RandomAccountAddress() + comdex, ctx := SetupCustomApp() + AddPair(comdex, *ctx) + AddExtendedPairVault(comdex, *ctx) + querier := wasm.NewQueryPlugin(&comdex.AssetKeeper, + &comdex.LockerKeeper, + &comdex.TokenmintKeeper, + &comdex.Rewardskeeper, + &comdex.CollectorKeeper, + &comdex.LiquidationKeeper, + &comdex.EsmKeeper) + for _, tc := range []struct { + name string + msg *bindings.MsgUpdatePairsVault + isErrorExpected bool + }{ + { + name: "Add Collector Lookup Table", + msg: &bindings.MsgUpdatePairsVault{ + AppID: 1, + ExtPairID: 1, + StabilityFee: sdk.MustNewDecFromStr("0.4"), + ClosingFee: sdk.MustNewDecFromStr("233.23"), + LiquidationPenalty: sdk.MustNewDecFromStr("0.56"), + DrawDownFee: sdk.MustNewDecFromStr("0.29"), + DebtCeiling: 1000000000, + DebtFloor: 1000, + MinCr: sdk.MustNewDecFromStr("1.8"), + MinUsdValueLeft: 100000000, + }, + isErrorExpected: false, + }, + } { + t.Run(tc.name, func(t *testing.T) { + found, _ := querier.UpdatePairsVaultQueryCheck(*ctx, tc.msg.AppID, tc.msg.ExtPairID) + + require.True(t, found) + err := wasm.MsgUpdatePairsVault(comdex.AssetKeeper, *ctx, actor, tc.msg) + if tc.isErrorExpected { + require.Error(t, err) + } else { + require.NoError(t, err) + found, _ := querier.UpdatePairsVaultQueryCheck(*ctx, tc.msg.AppID, tc.msg.ExtPairID) + require.True(t, found) + } + }) + } +} + +//func MsgWhitelistAppIDLiquidation(liquidationKeeper liquidationkeeper.Keeper, ctx sdk.Context, contractAddr sdk.AccAddress, +// a *bindings.MsgWhitelistAppIDLiquidation) + +func TestMsgWhitelistAppIDLiquidation(t *testing.T) { + actor := RandomAccountAddress() + comdex, ctx := SetupCustomApp() + AddPair(comdex, *ctx) + querier := wasm.NewQueryPlugin(&comdex.AssetKeeper, + &comdex.LockerKeeper, + &comdex.TokenmintKeeper, + &comdex.Rewardskeeper, + &comdex.CollectorKeeper, + &comdex.LiquidationKeeper, + &comdex.EsmKeeper) + for _, tc := range []struct { + name string + msg *bindings.MsgWhitelistAppIDLiquidation + isErrorExpected bool + }{ + { + name: "Add Collector Lookup Table", + msg: &bindings.MsgWhitelistAppIDLiquidation{ + AppID: 1, + }, + isErrorExpected: false, + }, + } { + t.Run(tc.name, func(t *testing.T) { + found, _ := querier.WasmWhitelistAppIDLiquidationQueryCheck(*ctx, tc.msg.AppID) + + require.True(t, found) + err := wasm.MsgWhitelistAppIDLiquidation(comdex.LiquidationKeeper, *ctx, actor, tc.msg) + if tc.isErrorExpected { + require.Error(t, err) + } else { + require.NoError(t, err) + found, _ := querier.WasmWhitelistAppIDLiquidationQueryCheck(*ctx, tc.msg.AppID) + require.False(t, found) + } + }) + } +} + +//func MsgRemoveWhitelistAppIDLiquidation(liquidationKeeper liquidationkeeper.Keeper, ctx sdk.Context, contractAddr sdk.AccAddress, +// a *bindings.MsgRemoveWhitelistAppIDLiquidation) + +func TestMsgRemoveWhitelistAppIDLiquidation(t *testing.T) { + actor := RandomAccountAddress() + comdex, ctx := SetupCustomApp() + AddPair(comdex, *ctx) + WhitelistAppIDLiquidation(comdex, *ctx) + querier := wasm.NewQueryPlugin(&comdex.AssetKeeper, + &comdex.LockerKeeper, + &comdex.TokenmintKeeper, + &comdex.Rewardskeeper, + &comdex.CollectorKeeper, + &comdex.LiquidationKeeper, + &comdex.EsmKeeper) + for _, tc := range []struct { + name string + msg *bindings.MsgRemoveWhitelistAppIDLiquidation + isErrorExpected bool + }{ + { + name: "Add Collector Lookup Table", + msg: &bindings.MsgRemoveWhitelistAppIDLiquidation{ + AppID: 1, + }, + isErrorExpected: false, + }, + } { + t.Run(tc.name, func(t *testing.T) { + found, _ := querier.WasmRemoveWhitelistAppIDLiquidationQueryCheck(*ctx, tc.msg.AppID) + + require.True(t, found) + err := wasm.MsgRemoveWhitelistAppIDLiquidation(comdex.LiquidationKeeper, *ctx, actor, tc.msg) + if tc.isErrorExpected { + require.Error(t, err) + } else { + require.NoError(t, err) + found, _ := querier.WasmRemoveWhitelistAppIDLiquidationQueryCheck(*ctx, tc.msg.AppID) + require.False(t, found) + } + }) + } +} + +func TestMsgAddAuctionParams(t *testing.T) { + actor := RandomAccountAddress() + comdex, ctx := SetupCustomApp() + AddPair(comdex, *ctx) + querier := wasm.NewQueryPlugin(&comdex.AssetKeeper, + &comdex.LockerKeeper, + &comdex.TokenmintKeeper, + &comdex.Rewardskeeper, + &comdex.CollectorKeeper, + &comdex.LiquidationKeeper, + &comdex.EsmKeeper) + for _, tc := range []struct { + name string + msg *bindings.MsgAddAuctionParams + isErrorExpected bool + }{ + { + name: "Add Auction Params", + msg: &bindings.MsgAddAuctionParams{ + AppID: 1, + AuctionDurationSeconds: 300, + Buffer: sdk.MustNewDecFromStr("1.2"), + Cusp: sdk.MustNewDecFromStr("0.6"), + Step: 1, + PriceFunctionType: 1, + SurplusID: 1, + DebtID: 2, + DutchID: 3, + BidDurationSeconds: 300, + }, + isErrorExpected: false, + }, + } { + t.Run(tc.name, func(t *testing.T) { + found, _ := querier.AuctionMappingForAppQueryCheck(*ctx, tc.msg.AppID) + + require.True(t, found) + err := wasm.MsgAddAuctionParams(comdex.AuctionKeeper, *ctx, actor, tc.msg) + if tc.isErrorExpected { + require.Error(t, err) + } else { + require.NoError(t, err) + found, _ := querier.AuctionMappingForAppQueryCheck(*ctx, tc.msg.AppID) + require.True(t, found) + } + }) + } +} + +//func MsgBurnGovTokensForApp(tokenMintKeeper tokenmintkeeper.Keeper, ctx sdk.Context, contractAddr sdk.AccAddress, +// a *bindings.MsgBurnGovTokensForApp) + +func TestMsgBurnGovTokensForApp(t *testing.T) { + actor := RandomAccountAddress() + userAddress := "cosmos1q7q90qsl9g0gl2zz0njxwv2a649yqrtyxtnv3v" + addr, _ := sdk.AccAddressFromBech32(userAddress) + comdex, ctx := SetupCustomApp() + MsgMintNewTokens(comdex, *ctx) + + for _, tc := range []struct { + name string + msg *bindings.MsgBurnGovTokensForApp + isErrorExpected bool + }{ + { + name: "Add Auction Params", + msg: &bindings.MsgBurnGovTokensForApp{ + + AppID: 1, + From: addr, + Amount: sdk.NewCoin("uharbor", sdk.NewInt(100)), + }, + isErrorExpected: false, + }, + } { + t.Run(tc.name, func(t *testing.T) { + err := wasm.MsgBurnGovTokensForApp(comdex.TokenmintKeeper, *ctx, actor, tc.msg) + if tc.isErrorExpected { + require.Error(t, err) + } else { + require.NoError(t, err) + } + }) + } +} diff --git a/go.mod b/go.mod index fbbec7bbf..599de2898 100644 --- a/go.mod +++ b/go.mod @@ -26,7 +26,7 @@ require ( ) require ( - github.com/golangci/golangci-lint v1.46.2 + github.com/golangci/golangci-lint v1.47.2 github.com/rakyll/statik v0.1.7 github.com/spf13/pflag v1.0.5 gopkg.in/yaml.v2 v2.4.0 @@ -37,13 +37,13 @@ require ( 4d63.com/gochecknoglobals v0.1.0 // indirect filippo.io/edwards25519 v1.0.0-beta.2 // indirect github.com/99designs/keyring v1.1.6 // indirect - github.com/Antonboom/errname v0.1.6 // indirect + github.com/Antonboom/errname v0.1.7 // indirect github.com/Antonboom/nilnil v0.1.1 // indirect github.com/BurntSushi/toml v1.1.0 // indirect github.com/ChainSafe/go-schnorrkel v0.0.0-20200405005733-88cbf1b4c40d // indirect github.com/DataDog/zstd v1.4.5 // indirect github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24 // indirect - github.com/GaijinEntertainment/go-exhaustruct/v2 v2.1.0 // indirect + github.com/GaijinEntertainment/go-exhaustruct/v2 v2.2.0 // indirect github.com/KyleBanks/depth v1.2.1 // indirect github.com/Masterminds/semver v1.5.0 // indirect github.com/OpenPeeDeeP/depguard v1.1.0 // indirect @@ -51,6 +51,7 @@ require ( github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 // indirect github.com/Workiva/go-datastructures v1.0.53 // indirect github.com/alexkohler/prealloc v1.0.0 // indirect + github.com/alingse/asasalint v0.0.10 // indirect github.com/armon/go-metrics v0.3.10 // indirect github.com/ashanbrown/forbidigo v1.3.0 // indirect github.com/ashanbrown/makezero v1.1.1 // indirect @@ -75,7 +76,7 @@ require ( github.com/cosmos/iavl v0.17.3 // indirect github.com/cosmos/ledger-cosmos-go v0.11.1 // indirect github.com/cosmos/ledger-go v0.9.2 // indirect - github.com/daixiang0/gci v0.3.3 // indirect + github.com/daixiang0/gci v0.4.3 // indirect github.com/danieljoos/wincred v1.0.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/denis-tingaikin/go-header v0.4.3 // indirect @@ -90,9 +91,9 @@ require ( github.com/fatih/color v1.13.0 // indirect github.com/fatih/structtag v1.2.0 // indirect github.com/felixge/httpsnoop v1.0.1 // indirect - github.com/firefart/nonamedreturns v1.0.1 // indirect + github.com/firefart/nonamedreturns v1.0.4 // indirect github.com/fsnotify/fsnotify v1.5.4 // indirect - github.com/fzipp/gocyclo v0.5.1 // indirect + github.com/fzipp/gocyclo v0.6.0 // indirect github.com/go-critic/go-critic v0.6.3 // indirect github.com/go-kit/kit v0.12.0 // indirect github.com/go-kit/log v0.2.0 // indirect @@ -141,7 +142,7 @@ require ( github.com/hashicorp/errwrap v1.0.0 // indirect github.com/hashicorp/go-immutable-radix v1.3.1 // indirect github.com/hashicorp/go-multierror v1.1.1 // indirect - github.com/hashicorp/go-version v1.4.0 // indirect + github.com/hashicorp/go-version v1.6.0 // indirect github.com/hashicorp/golang-lru v0.5.4 // indirect github.com/hashicorp/hcl v1.0.0 // indirect github.com/hdevalence/ed25519consensus v0.0.0-20210204194344-59a8610d2b87 // indirect @@ -155,21 +156,21 @@ require ( github.com/josharian/intern v1.0.0 // indirect github.com/julz/importas v0.1.0 // indirect github.com/keybase/go-keychain v0.0.0-20190712205309-48d3d31d256d // indirect - github.com/kisielk/errcheck v1.6.0 // indirect + github.com/kisielk/errcheck v1.6.1 // indirect github.com/kisielk/gotool v1.0.0 // indirect github.com/klauspost/compress v1.13.6 // indirect - github.com/kulti/thelper v0.6.2 // indirect - github.com/kunwardeep/paralleltest v1.0.3 // indirect + github.com/kulti/thelper v0.6.3 // indirect + github.com/kunwardeep/paralleltest v1.0.6 // indirect github.com/kyoh86/exportloopref v0.1.8 // indirect github.com/ldez/gomoddirectives v0.2.3 // indirect github.com/ldez/tagliatelle v0.3.1 // indirect github.com/leonklingele/grouper v1.1.0 // indirect - github.com/lib/pq v1.10.4 // indirect + github.com/lib/pq v1.10.6 // indirect github.com/libp2p/go-buffer-pool v0.0.2 // indirect github.com/lufeee/execinquery v1.2.1 // indirect github.com/magiconair/properties v1.8.6 // indirect github.com/mailru/easyjson v0.7.6 // indirect - github.com/maratori/testpackage v1.0.1 // indirect + github.com/maratori/testpackage v1.1.0 // indirect github.com/matoous/godox v0.0.0-20210227103229-6504466cf951 // indirect github.com/mattn/go-colorable v0.1.12 // indirect github.com/mattn/go-isatty v0.0.14 // indirect @@ -185,11 +186,11 @@ require ( github.com/mtibben/percent v0.2.1 // indirect github.com/nakabonne/nestif v0.3.1 // indirect github.com/nbutton23/zxcvbn-go v0.0.0-20210217022336-fa2cb2858354 // indirect - github.com/nishanths/exhaustive v0.7.11 // indirect + github.com/nishanths/exhaustive v0.8.1 // indirect github.com/nishanths/predeclared v0.2.2 // indirect github.com/olekukonko/tablewriter v0.0.5 // indirect github.com/pelletier/go-toml v1.9.5 // indirect - github.com/pelletier/go-toml/v2 v2.0.1 // indirect + github.com/pelletier/go-toml/v2 v2.0.2 // indirect github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5 // indirect github.com/phayes/checkstyle v0.0.0-20170904204023-bfd46e6a821d // indirect github.com/pmezard/go-difflib v1.0.0 // indirect @@ -209,11 +210,12 @@ require ( github.com/ryanrolds/sqlclosecheck v0.3.0 // indirect github.com/sanposhiho/wastedassign/v2 v2.0.6 // indirect github.com/sasha-s/go-deadlock v0.2.1-0.20190427202633-1595213edefa // indirect - github.com/securego/gosec/v2 v2.11.0 // indirect + github.com/securego/gosec/v2 v2.12.0 // indirect github.com/shazow/go-diff v0.0.0-20160112020656-b6b7b6733b8c // indirect github.com/sirupsen/logrus v1.8.1 // indirect github.com/sivchari/containedctx v1.0.2 // indirect - github.com/sivchari/tenv v1.5.0 // indirect + github.com/sivchari/nosnakecase v1.5.0 // indirect + github.com/sivchari/tenv v1.7.0 // indirect github.com/sonatard/noctx v0.0.1 // indirect github.com/sourcegraph/go-diff v0.6.1 // indirect github.com/spf13/afero v1.8.2 // indirect @@ -222,7 +224,7 @@ require ( github.com/ssgreg/nlreturn/v2 v2.2.1 // indirect github.com/stbenjam/no-sprintf-host-port v0.1.1 // indirect github.com/stretchr/objx v0.4.0 // indirect - github.com/subosito/gotenv v1.3.0 // indirect + github.com/subosito/gotenv v1.4.0 // indirect github.com/sylvia7788/contextcheck v1.0.4 // indirect github.com/syndtr/goleveldb v1.0.1-0.20200815110645-5c35d600f0ca // indirect github.com/tdakkota/asciicheck v0.1.1 // indirect @@ -231,31 +233,34 @@ require ( github.com/tendermint/go-amino v0.16.0 // indirect github.com/tetafro/godot v1.4.11 // indirect github.com/timakin/bodyclose v0.0.0-20210704033933-f49887972144 // indirect - github.com/tomarrell/wrapcheck/v2 v2.6.1 // indirect + github.com/tomarrell/wrapcheck/v2 v2.6.2 // indirect github.com/tommy-muehle/go-mnd/v2 v2.5.0 // indirect github.com/ultraware/funlen v0.0.3 // indirect github.com/ultraware/whitespace v0.0.5 // indirect - github.com/uudashr/gocognit v1.0.5 // indirect + github.com/uudashr/gocognit v1.0.6 // indirect github.com/yagipy/maintidx v1.0.0 // indirect github.com/yeya24/promlinter v0.2.0 // indirect github.com/zondax/hid v0.9.0 // indirect - gitlab.com/bosi/decorder v0.2.1 // indirect + gitlab.com/bosi/decorder v0.2.2 // indirect go.etcd.io/bbolt v1.3.6 // indirect - golang.org/x/crypto v0.0.0-20220411220226-7b82a4e95df4 // indirect - golang.org/x/exp/typeparams v0.0.0-20220218215828-6cf2b201936e // indirect + go.uber.org/atomic v1.9.0 // indirect + go.uber.org/multierr v1.7.0 // indirect + go.uber.org/zap v1.19.1 // indirect + golang.org/x/crypto v0.0.0-20220525230936-793ad666bf5e // indirect + golang.org/x/exp/typeparams v0.0.0-20220613132600-b0d781184e0d // indirect golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 // indirect golang.org/x/net v0.0.0-20220520000938-2e3eb7b945c2 // indirect golang.org/x/sync v0.0.0-20210220032951-036812b2e83c // indirect golang.org/x/sys v0.0.0-20220708085239-5a0f0661e09d // indirect golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 // indirect golang.org/x/text v0.3.7 // indirect - golang.org/x/tools v0.1.11 // indirect - gopkg.in/ini.v1 v1.66.4 // indirect + golang.org/x/tools v0.1.12-0.20220628192153-7743d1d949f1 // indirect + gopkg.in/ini.v1 v1.66.6 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - honnef.co/go/tools v0.3.1 // indirect + honnef.co/go/tools v0.3.2 // indirect mvdan.cc/interfacer v0.0.0-20180901003855-c20040233aed // indirect mvdan.cc/lint v0.0.0-20170908181259-adc824a0674b // indirect - mvdan.cc/unparam v0.0.0-20211214103731-d0ef000c54e5 // indirect + mvdan.cc/unparam v0.0.0-20220706161116-678bad134442 // indirect nhooyr.io/websocket v1.8.6 // indirect ) diff --git a/go.sum b/go.sum index 9ae3e642c..06d06b9db 100644 --- a/go.sum +++ b/go.sum @@ -32,16 +32,12 @@ cloud.google.com/go v0.93.3/go.mod h1:8utlLll2EF5XMAV15woO4lSbWQlk8rer9aLOfLh7+Y cloud.google.com/go v0.94.1/go.mod h1:qAlAugsXlC+JWO+Bke5vCtc9ONxjQT3drlTTnAplMW4= cloud.google.com/go v0.97.0/go.mod h1:GF7l59pYBVlXQIBLx3a761cZ41F9bBH3JUlihCt2Udc= cloud.google.com/go v0.99.0/go.mod h1:w0Xx2nLzqWJPuozYQX+hFfCSI8WioryfRDzkoI/Y2ZA= -cloud.google.com/go v0.100.2/go.mod h1:4Xra9TjzAeYHrl5+oeLlzbM2k3mjVhZh4UqTZ//w99A= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= -cloud.google.com/go/compute v0.1.0/go.mod h1:GAesmwr110a34z04OlxYkATPBEfVhkymfTBXtfbBFow= -cloud.google.com/go/compute v1.3.0/go.mod h1:cCZiE1NHEtai4wiufUhW8I8S1JKkAnhnQJWM7YD99wM= -cloud.google.com/go/compute v1.5.0/go.mod h1:9SMHyhJlzhlkJqrPAc839t2BZFTSk6Jdj6mkzQJeu0M= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk= @@ -64,8 +60,8 @@ filippo.io/edwards25519 v1.0.0-beta.2 h1:/BZRNzm8N4K4eWfK28dL4yescorxtO7YG1yun8f filippo.io/edwards25519 v1.0.0-beta.2/go.mod h1:X+pm78QAUPtFLi1z9PYIlS/bdDnvbCOGKtZ+ACWEf7o= github.com/99designs/keyring v1.1.6 h1:kVDC2uCgVwecxCk+9zoCt2uEL6dt+dfVzMvGgnVcIuM= github.com/99designs/keyring v1.1.6/go.mod h1:16e0ds7LGQQcT59QqkTg72Hh5ShM51Byv5PEmW6uoRU= -github.com/Antonboom/errname v0.1.6 h1:LzIJZlyLOCSu51o3/t2n9Ck7PcoP9wdbrdaW6J8fX24= -github.com/Antonboom/errname v0.1.6/go.mod h1:7lz79JAnuoMNDAWE9MeeIr1/c/VpSUWatBv2FH9NYpI= +github.com/Antonboom/errname v0.1.7 h1:mBBDKvEYwPl4WFFNwec1CZO096G6vzK9vvDQzAwkako= +github.com/Antonboom/errname v0.1.7/go.mod h1:g0ONh16msHIPgJSGsecu1G/dcF2hlYR/0SddnIAGavU= github.com/Antonboom/nilnil v0.1.1 h1:PHhrh5ANKFWRBh7TdYmyyq2gyT2lotnvFvvFbylF81Q= github.com/Antonboom/nilnil v0.1.1/go.mod h1:L1jBqoWM7AOeTD+tSquifKSesRHs4ZdaxvZR+xdJEaI= github.com/Azure/azure-pipeline-go v0.2.1/go.mod h1:UGSo8XybXnIGZ3epmeBw7Jdz+HiUVpqIlpz/HKHylF4= @@ -104,8 +100,8 @@ github.com/DataDog/zstd v1.4.5 h1:EndNeuB0l9syBZhut0wns3gV1hL8zX8LIu6ZiVHWLIQ= github.com/DataDog/zstd v1.4.5/go.mod h1:1jcaCB/ufaK+sKp1NBhlGmpz41jOoPQ35bpF36t7BBo= github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24 h1:sHglBQTwgx+rWPdisA5ynNEsoARbiCBOyGcJM4/OzsM= github.com/Djarvur/go-err113 v0.0.0-20210108212216-aea10b59be24/go.mod h1:4UJr5HIiMZrwgkSPdsjy2uOQExX/WEILpIrO9UPGuXs= -github.com/GaijinEntertainment/go-exhaustruct/v2 v2.1.0 h1:LAPPhJ4KR5Z8aKVZF5S48csJkxL5RMKmE/98fMs1u5M= -github.com/GaijinEntertainment/go-exhaustruct/v2 v2.1.0/go.mod h1:LGOGuvEgCfCQsy3JF2tRmpGDpzA53iZfyGEWSPwQ6/4= +github.com/GaijinEntertainment/go-exhaustruct/v2 v2.2.0 h1:V9xVvhKbLt7unNEGAruK1xXglyc668Pq3Xx0MNTNqpo= +github.com/GaijinEntertainment/go-exhaustruct/v2 v2.2.0/go.mod h1:n/vLeA7V+QY84iYAGwMkkUUp9ooeuftMEvaDrSVch+Q= github.com/HdrHistogram/hdrhistogram-go v1.1.0/go.mod h1:yDgFjdqOqDEKOvasDdhWNXYg9BVp4O+o5f6V/ehm6Oo= github.com/HdrHistogram/hdrhistogram-go v1.1.2/go.mod h1:yDgFjdqOqDEKOvasDdhWNXYg9BVp4O+o5f6V/ehm6Oo= github.com/Knetic/govaluate v3.0.1-0.20171022003610-9aa49832a739+incompatible/go.mod h1:r7JcOSlj0wfOMncg0iLm8Leh48TZaKVeNIfJntJ2wa0= @@ -154,6 +150,8 @@ github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRF github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= github.com/alexkohler/prealloc v1.0.0 h1:Hbq0/3fJPQhNkN0dR95AVrr6R7tou91y0uHG5pOcUuw= github.com/alexkohler/prealloc v1.0.0/go.mod h1:VetnK3dIgFBBKmg0YnD9F9x6Icjd+9cvfHR56wJVlKE= +github.com/alingse/asasalint v0.0.10 h1:qqGPDTV0ff0tWHN/nnIlSdjlU/EwRPaUY4SfpE1rnms= +github.com/alingse/asasalint v0.0.10/go.mod h1:nCaoMhw7a9kSJObvQyVzNTPBDbNpdocqrSP7t/cW5+I= github.com/allegro/bigcache v1.2.1-0.20190218064605-e24eb225f156/go.mod h1:Cb/ax3seSYIx7SuZdm2G2xzfwmv3TPSk2ucNfQESPXM= github.com/antihax/optional v0.0.0-20180407024304-ca021399b1a6/go.mod h1:V8iCPQYkqmusNa815XgQio277wI47sdRh1dUOLdyC6Q= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= @@ -187,6 +185,7 @@ github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.8.1/go.mod h1:CM+19rL1+4dFWnO github.com/aws/smithy-go v1.8.0/go.mod h1:SObp3lf9smib00L/v3U2eAKG8FyQ7iLrJnQiAmR5n+E= github.com/bandprotocol/bandchain-packet v0.0.3 h1:Mo2xVmjOSfc//0z1lskNkxrkpcxeU2nIwfHb2rHFLLg= github.com/bandprotocol/bandchain-packet v0.0.3/go.mod h1:6mU33VjEShPvWYoTIQywRPxyS+HXcgnm0e7mlJwiTnQ= +github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8= github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= @@ -320,8 +319,8 @@ github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46t github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/cyphar/filepath-securejoin v0.2.2/go.mod h1:FpkQEhXnPnOthhzymB7CGsFk2G9VLXONKD9G7QGMM+4= -github.com/daixiang0/gci v0.3.3 h1:55xJKH7Gl9Vk6oQ1cMkwrDWjAkT1D+D1G9kNmRcAIY4= -github.com/daixiang0/gci v0.3.3/go.mod h1:1Xr2bxnQbDxCqqulUOv8qpGqkgRw9RSCGGjEC2LjF8o= +github.com/daixiang0/gci v0.4.3 h1:wf7x0xRjQqTlA2dzHTI0A/xPyp7VcBatBG9nwGatwbQ= +github.com/daixiang0/gci v0.4.3/go.mod h1:EpVfrztufwVgQRXjnX4zuNinEpLj5OmMjtu/+MB0V0c= github.com/danieljoos/wincred v1.0.2 h1:zf4bhty2iLuwgjgpraD2E9UbvO+fe54XXGJbOwe23fU= github.com/danieljoos/wincred v1.0.2/go.mod h1:SnuYRW9lp1oJrZX/dXJqr0cPK5gYXqx3EJbmjhLdK9U= github.com/davecgh/go-spew v0.0.0-20161028175848-04cdfd42973b/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -394,8 +393,8 @@ github.com/fatih/structtag v1.2.0 h1:/OdNE99OxoI/PqaW/SuSK9uxxT3f/tcSZgon/ssNSx4 github.com/fatih/structtag v1.2.0/go.mod h1:mBJUNpUnHmRKrKlQQlmCrh5PuhftFbNv8Ys4/aAZl94= github.com/felixge/httpsnoop v1.0.1 h1:lvB5Jl89CsZtGIWuTcDM1E/vkVs49/Ml7JJe07l8SPQ= github.com/felixge/httpsnoop v1.0.1/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= -github.com/firefart/nonamedreturns v1.0.1 h1:fSvcq6ZpK/uBAgJEGMvzErlzyM4NELLqqdTofVjVNag= -github.com/firefart/nonamedreturns v1.0.1/go.mod h1:D3dpIBojGGNh5UfElmwPu73SwDCm+VKhHYqwlNOk2uQ= +github.com/firefart/nonamedreturns v1.0.4 h1:abzI1p7mAEPYuR4A+VLKn4eNDOycjYo2phmY9sfv40Y= +github.com/firefart/nonamedreturns v1.0.4/go.mod h1:TDhe/tjI1BXo48CmYbUduTV7BdIga8MAO/xbKdcVsGI= github.com/fjl/memsize v0.0.0-20180418122429-ca190fb6ffbc/go.mod h1:VvhXpOYNQvB+uIk2RvXzuaQtkQJzzIx6lSBe1xv7hi0= github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= @@ -411,8 +410,8 @@ github.com/fsnotify/fsnotify v1.5.1/go.mod h1:T3375wBYaZdLLcVNkcVbzGHY7f1l/uK5T5 github.com/fsnotify/fsnotify v1.5.4 h1:jRbGcIw6P2Meqdwuo0H1p6JVLbL5DHKAKlYndzMwVZI= github.com/fsnotify/fsnotify v1.5.4/go.mod h1:OVB6XrOHzAwXMpEM7uPOzcehqUV2UqJxmVXmkdnm1bU= github.com/fullstorydev/grpcurl v1.6.0/go.mod h1:ZQ+ayqbKMJNhzLmbpCiurTVlaK2M/3nqZCxaQ2Ze/sM= -github.com/fzipp/gocyclo v0.5.1 h1:L66amyuYogbxl0j2U+vGqJXusPF2IkduvXLnYD5TFgw= -github.com/fzipp/gocyclo v0.5.1/go.mod h1:rXPyn8fnlpa0R2csP/31uerbiVBugk5whMdlyaLkLoA= +github.com/fzipp/gocyclo v0.6.0 h1:lsblElZG7d3ALtGMx9fmxeTKZaLLpU8mET09yN4BBLo= +github.com/fzipp/gocyclo v0.6.0/go.mod h1:rXPyn8fnlpa0R2csP/31uerbiVBugk5whMdlyaLkLoA= github.com/gballet/go-libpcsclite v0.0.0-20190607065134-2772fd86a8ff/go.mod h1:x7DCsMOv1taUwEWCzT4cmDeAkigA5/QCwUodaVOe8Ww= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE= @@ -551,8 +550,8 @@ github.com/golangci/go-misc v0.0.0-20220329215616-d24fe342adfe h1:6RGUuS7EGotKx6 github.com/golangci/go-misc v0.0.0-20220329215616-d24fe342adfe/go.mod h1:gjqyPShc/m8pEMpk0a3SeagVb0kaqvhscv+i9jI5ZhQ= github.com/golangci/gofmt v0.0.0-20190930125516-244bba706f1a h1:iR3fYXUjHCR97qWS8ch1y9zPNsgXThGwjKPrYfqMPks= github.com/golangci/gofmt v0.0.0-20190930125516-244bba706f1a/go.mod h1:9qCChq59u/eW8im404Q2WWTrnBUQKjpNYKMbU4M7EFU= -github.com/golangci/golangci-lint v1.46.2 h1:o90t/Xa6dhJbvy8Bz2RpzUXqrkigp19DLStMolTZbyo= -github.com/golangci/golangci-lint v1.46.2/go.mod h1:3DkdHnxn9eoTTrpT2gB0TEv8KSziuoqe9FitgQLHvAY= +github.com/golangci/golangci-lint v1.47.2 h1:qvMDVv49Hrx3PSEXZ0bD/yhwSbhsOihQjFYCKieegIw= +github.com/golangci/golangci-lint v1.47.2/go.mod h1:lpS2pjBZtRyXewUcOY7yUL3K4KfpoWz072yRN8AuhHg= github.com/golangci/lint-1 v0.0.0-20191013205115-297bf364a8e0 h1:MfyDlzVjl1hoaPzPD4Gpb/QgoRfSBR0jdhwGyAWwMSA= github.com/golangci/lint-1 v0.0.0-20191013205115-297bf364a8e0/go.mod h1:66R6K6P6VWk9I95jvqGxkqJxVWGFy9XlDwLwVz1RCFg= github.com/golangci/maligned v0.0.0-20180506175553-b1d89398deca h1:kNY3/svz5T29MYHubXix4aDDuE3RWHkPvopM/EDv/MA= @@ -580,7 +579,6 @@ github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= github.com/google/go-cmp v0.5.8 h1:e6P7q2lk1O+qJJb4BtCQXlK8vWEO8V1ZeuEdJNOqZyg= github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/gofuzz v0.0.0-20170612174753-24818f796faf/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI= @@ -622,10 +620,8 @@ github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+ github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= github.com/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0= github.com/googleapis/gax-go/v2 v2.1.1/go.mod h1:hddJymUZASv3XPyGkUpKj8pPO47Rmb0eJc8R6ouapiM= -github.com/googleapis/gax-go/v2 v2.2.0/go.mod h1:as02EH8zWkzwUoLbBaFeQ+arQaj/OthfcblKl4IGNaM= -github.com/googleapis/gax-go/v2 v2.3.0/go.mod h1:b8LNqSzNabLiUpXKkY7HAR5jr6bIT99EXz9pXxye9YM= github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= -github.com/gookit/color v1.5.0/go.mod h1:43aQb+Zerm/BWh2GnrgOQm7ffz7tvQXEKV6BFMl7wAo= +github.com/gookit/color v1.5.1/go.mod h1:wZFzea4X8qN6vHOSP2apMb4/+w/orMznEzYsIHPaqKM= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gordonklaus/ineffassign v0.0.0-20200309095847-7953dde2c7bf/go.mod h1:cuNKsD1zp2v6XfE/orVX2QE1LC+i254ceGcVeDT3pTU= github.com/gordonklaus/ineffassign v0.0.0-20210914165742-4cc7213b9bc8 h1:PVRE9d4AQKmbelZ7emNig1+NT27DUmKZn5qXxfio54U= @@ -699,7 +695,6 @@ github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/S github.com/hashicorp/go-hclog v0.12.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= github.com/hashicorp/go-hclog v0.16.2/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= github.com/hashicorp/go-hclog v1.0.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= -github.com/hashicorp/go-hclog v1.2.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= github.com/hashicorp/go-immutable-radix v1.3.1 h1:DKHmCUm2hRBK510BaiZlwvpD40f8bJFeZnpfm2KLowc= github.com/hashicorp/go-immutable-radix v1.3.1/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= @@ -718,8 +713,8 @@ github.com/hashicorp/go-uuid v1.0.1 h1:fv1ep09latC32wFoVwnqcnKJGnMSdBanPczbHAYm1 github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/go-version v1.2.1/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= -github.com/hashicorp/go-version v1.4.0 h1:aAQzgqIrRKRa7w75CKpbBxYsmUoPjzVm1W59ca1L0J4= -github.com/hashicorp/go-version v1.4.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/go-version v1.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mOkIeek= +github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= @@ -737,7 +732,6 @@ github.com/hashicorp/memberlist v0.3.0/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOn github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= github.com/hashicorp/serf v0.9.5/go.mod h1:UWDWwZeL5cuWDJdl0C6wrvrUwEqtQ4ZKBKKENpqIUyk= github.com/hashicorp/serf v0.9.6/go.mod h1:TXZNMjZQijwlDvp+r0b63xZ45H7JmCmgg4gpTwn9UV4= -github.com/hashicorp/serf v0.9.7/go.mod h1:TXZNMjZQijwlDvp+r0b63xZ45H7JmCmgg4gpTwn9UV4= github.com/hdevalence/ed25519consensus v0.0.0-20210204194344-59a8610d2b87 h1:uUjLpLt6bVvZ72SQc/B4dXcPBw4Vgd7soowdRl52qEM= github.com/hdevalence/ed25519consensus v0.0.0-20210204194344-59a8610d2b87/go.mod h1:XGsKKeXxeRr95aEOgipvluMPlgjr7dGlk9ZTWOjcUcg= github.com/hexops/gotextdiff v1.0.3 h1:gitA9+qJrrTCsiCl7+kh75nPqQt1cx4ZkudSTLoUqJM= @@ -811,8 +805,8 @@ github.com/karalabe/usb v0.0.0-20190919080040-51dc0efba356/go.mod h1:Od972xHfMJo github.com/keybase/go-keychain v0.0.0-20190712205309-48d3d31d256d h1:Z+RDyXzjKE0i2sTjZ/b1uxiGtPhFy34Ou/Tk0qwN0kM= github.com/keybase/go-keychain v0.0.0-20190712205309-48d3d31d256d/go.mod h1:JJNrCn9otv/2QP4D7SMJBgaleKpOf66PnW6F5WGNRIc= github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= -github.com/kisielk/errcheck v1.6.0 h1:YTDO4pNy7AUN/021p+JGHycQyYNIyMoenM1YDVK6RlY= -github.com/kisielk/errcheck v1.6.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= +github.com/kisielk/errcheck v1.6.1 h1:cErYo+J4SmEjdXZrVXGwLJCE2sB06s23LpkcyWNrT+s= +github.com/kisielk/errcheck v1.6.1/go.mod h1:nXw/i/MfnvRHqXa7XXmQMUB0oNFGuBrNI8d8NLy0LPw= github.com/kisielk/gotool v1.0.0 h1:AV2c/EiW3KqPNT9ZKl07ehoAGi4C5/01Cfbblndcapg= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/kkdai/bstream v0.0.0-20161212061736-f391b8402d23/go.mod h1:J+Gs4SYgM6CZQHDETBtE9HaSEkGmuNXF86RwHhHUvq4= @@ -835,10 +829,10 @@ github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/kulti/thelper v0.6.2 h1:K4xulKkwOCnT1CDms6Ex3uG1dvSMUUQe9zxgYQgbRXs= -github.com/kulti/thelper v0.6.2/go.mod h1:DsqKShOvP40epevkFrvIwkCMNYxMeTNjdWL4dqWHZ6I= -github.com/kunwardeep/paralleltest v1.0.3 h1:UdKIkImEAXjR1chUWLn+PNXqWUGs//7tzMeWuP7NhmI= -github.com/kunwardeep/paralleltest v1.0.3/go.mod h1:vLydzomDFpk7yu5UX02RmP0H8QfRPOV/oFhWN85Mjb4= +github.com/kulti/thelper v0.6.3 h1:ElhKf+AlItIu+xGnI990no4cE2+XaSu1ULymV2Yulxs= +github.com/kulti/thelper v0.6.3/go.mod h1:DsqKShOvP40epevkFrvIwkCMNYxMeTNjdWL4dqWHZ6I= +github.com/kunwardeep/paralleltest v1.0.6 h1:FCKYMF1OF2+RveWlABsdnmsvJrei5aoyZoaGS+Ugg8g= +github.com/kunwardeep/paralleltest v1.0.6/go.mod h1:Y0Y0XISdZM5IKm3TREQMZ6iteqn1YuwCsJO/0kL9Zes= github.com/kylelemons/godebug v1.1.0/go.mod h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw= github.com/kyoh86/exportloopref v0.1.8 h1:5Ry/at+eFdkX9Vsdw3qU4YkvGtzuVfzT4X7S77LoN/M= github.com/kyoh86/exportloopref v0.1.8/go.mod h1:1tUcJeiioIs7VWe5gcOObrux3lb66+sBqGZrRkMwPgg= @@ -855,8 +849,9 @@ github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.8.0/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/lib/pq v1.9.0/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= -github.com/lib/pq v1.10.4 h1:SO9z7FRPzA03QhHKJrH5BXA6HU1rS4V2nIVrrNC1iYk= github.com/lib/pq v1.10.4/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= +github.com/lib/pq v1.10.6 h1:jbk+ZieJ0D7EVGJYpL9QTz7/YW6UHbmdnZWYyK5cdBs= +github.com/lib/pq v1.10.6/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/libp2p/go-buffer-pool v0.0.2 h1:QNK2iAFa8gjAe1SPz6mHSMuCcjs+X1wlHzeOSqcmlfs= github.com/libp2p/go-buffer-pool v0.0.2/go.mod h1:MvaB6xw5vOrDl8rYZGLFdKAuk/hRoRZd1Vi32+RXyFM= github.com/lightstep/lightstep-tracer-common/golang/gogo v0.0.0-20190605223551-bc2310a04743/go.mod h1:qklhhLq1aX+mtWk9cPHPzaBjWImj5ULL6C7HFJtXQMM= @@ -874,8 +869,8 @@ github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.7.6 h1:8yTIVnZgCoiM1TgqoeTl+LfU5Jg6/xL3QhGQnimLYnA= github.com/mailru/easyjson v0.7.6/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= -github.com/maratori/testpackage v1.0.1 h1:QtJ5ZjqapShm0w5DosRjg0PRlSdAdlx+W6cCKoALdbQ= -github.com/maratori/testpackage v1.0.1/go.mod h1:ddKdw+XG0Phzhx8BFDTKgpWP4i7MpApTE5fXSKAqwDU= +github.com/maratori/testpackage v1.1.0 h1:GJY4wlzQhuBusMF1oahQCBtUV/AQ/k69IZ68vxaac2Q= +github.com/maratori/testpackage v1.1.0/go.mod h1:PeAhzU8qkCwdGEMTEupsHJNlQu2gZopMC6RjbhmHeDc= github.com/matoous/godox v0.0.0-20210227103229-6504466cf951 h1:pWxk9e//NbPwfxat7RXkts09K+dEBJWakUWwICVqYbA= github.com/matoous/godox v0.0.0-20210227103229-6504466cf951/go.mod h1:1BELzlh859Sh1c6+90blK8lbYy0kwQf1bYlBhBysy1s= github.com/matryer/is v1.4.0 h1:sosSmIWwkYITGrxZ25ULNDeKiMNzFSr4V/eqBQP0PeE= @@ -991,8 +986,8 @@ github.com/nbutton23/zxcvbn-go v0.0.0-20210217022336-fa2cb2858354/go.mod h1:KSVJ github.com/neilotoole/errgroup v0.1.5/go.mod h1:Q2nLGf+594h0CLBs/Mbg6qOr7GtqDK7C2S41udRnToE= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e h1:fD57ERR4JtEqsWbfPhv4DMiApHyliiK5xCTNVSPiaAs= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= -github.com/nishanths/exhaustive v0.7.11 h1:xV/WU3Vdwh5BUH4N06JNUznb6d5zhRPOnlgCrpNYNKA= -github.com/nishanths/exhaustive v0.7.11/go.mod h1:gX+MP7DWMKJmNa1HfMozK+u04hQd3na9i0hyqf3/dOI= +github.com/nishanths/exhaustive v0.8.1 h1:0QKNascWv9qIHY7zRoZSxeRr6kuk5aAT3YXLTiDmjTo= +github.com/nishanths/exhaustive v0.8.1/go.mod h1:qj+zJJUgJ76tR92+25+03oYUhzF4R7/2Wk7fGTfCHmg= github.com/nishanths/predeclared v0.0.0-20190419143655-18a43bb90ffc/go.mod h1:62PewwiQTlm/7Rj+cxVYqZvDIUc+JjZq6GHAC1fsObQ= github.com/nishanths/predeclared v0.0.0-20200524104333-86fad755b4d3/go.mod h1:nt3d53pc1VYcphSCIaYAJtnPYnr3Zyn8fMq2wvPGPso= github.com/nishanths/predeclared v0.2.2 h1:V2EPdZPliZymNAn79T8RkNApBjMmVKh5XRpLm/w98Vk= @@ -1017,17 +1012,17 @@ github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9k github.com/onsi/ginkgo v1.16.2/go.mod h1:CObGmKUOKaSC0RjmoAK7tKyn4Azo5P2IWuoMnvwxz1E= github.com/onsi/ginkgo v1.16.4 h1:29JGrr5oVBm5ulCWet69zQkzWipVXIol6ygQUe/EzNc= github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= -github.com/onsi/ginkgo/v2 v2.0.0/go.mod h1:vw5CSIxN1JObi/U8gcbwft7ZxR2dgaR70JSE3/PpL4c= -github.com/onsi/ginkgo/v2 v2.1.3 h1:e/3Cwtogj0HA+25nMP1jCMDIf8RtRYbGwGGuBIFztkc= github.com/onsi/ginkgo/v2 v2.1.3/go.mod h1:vw5CSIxN1JObi/U8gcbwft7ZxR2dgaR70JSE3/PpL4c= +github.com/onsi/ginkgo/v2 v2.1.4 h1:GNapqRSid3zijZ9H77KrgVG4/8KqiyRsxcSxe+7ApXY= +github.com/onsi/ginkgo/v2 v2.1.4/go.mod h1:um6tUpWM/cxCK3/FK8BXqEiUMUwRgSM4JXG47RKZmLU= github.com/onsi/gomega v1.4.1/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= github.com/onsi/gomega v1.13.0/go.mod h1:lRk9szgn8TxENtWd0Tp4c3wjlRfMTMH27I+3Je41yGY= github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= -github.com/onsi/gomega v1.18.1 h1:M1GfJqGRrBrrGGsbxzV5dqM2U2ApXefZCQpkukxYRLE= -github.com/onsi/gomega v1.18.1/go.mod h1:0q+aL8jAiMXy9hbwj2mr5GziHiwhAIQpFmmtT5hitRs= +github.com/onsi/gomega v1.19.0 h1:4ieX6qQjPP/BfC3mpsAtIGGlxTWPeA3Inl/7DtXw1tw= +github.com/onsi/gomega v1.19.0/go.mod h1:LY+I3pBVzYsTBU1AnDwOSxaYi9WoWiqgwooUqq9yPro= github.com/op/go-logging v0.0.0-20160315200505-970db520ece7/go.mod h1:HzydrMdWErDVzsI23lYNej1Htcns9BCg93Dk0bBINWk= github.com/opencontainers/go-digest v1.0.0-rc1/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= @@ -1072,10 +1067,8 @@ github.com/pelletier/go-toml v1.9.3/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCko github.com/pelletier/go-toml v1.9.4/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8= github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= -github.com/pelletier/go-toml/v2 v2.0.0-beta.8/go.mod h1:r9LEWfGN8R5k0VXJ+0BkIe7MYkRdwZOjgMj2KwnJFUo= -github.com/pelletier/go-toml/v2 v2.0.0/go.mod h1:r9LEWfGN8R5k0VXJ+0BkIe7MYkRdwZOjgMj2KwnJFUo= -github.com/pelletier/go-toml/v2 v2.0.1 h1:8e3L2cCQzLFi2CR4g7vGFuFxX7Jl1kKX8gW+iV0GUKU= -github.com/pelletier/go-toml/v2 v2.0.1/go.mod h1:r9LEWfGN8R5k0VXJ+0BkIe7MYkRdwZOjgMj2KwnJFUo= +github.com/pelletier/go-toml/v2 v2.0.2 h1:+jQXlF3scKIcSEKkdHzXhCTDLPFi5r1wnK6yPS+49Gw= +github.com/pelletier/go-toml/v2 v2.0.2/go.mod h1:MovirKjgVRESsAvNZlAjtFwV867yGuwRkXbG66OzopI= github.com/performancecopilot/speed v3.0.0+incompatible/go.mod h1:/CLtqpZ5gBg1M9iaPbIdPPGyKcA8hKdoy6hAWba7Yac= github.com/performancecopilot/speed/v4 v4.0.0/go.mod h1:qxrSyuDGrTOWfV+uKRFhfxw6h/4HXRGUiZiufxo49BM= github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= @@ -1089,7 +1082,6 @@ github.com/pierrec/lz4 v1.0.2-0.20190131084431-473cd7ce01a1/go.mod h1:3/3N9NVKO0 github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= github.com/pkg/browser v0.0.0-20180916011732-0a3d74bf9ce4/go.mod h1:4OwLy04Bl9Ef3GJJCoec+30X3LQs/0/m4HFRt/2LUSA= github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e h1:aoZm08cpOy4WuID//EZDgcC4zIxODThtZNPirFr42+A= -github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= @@ -1178,7 +1170,6 @@ github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6So github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.8.1 h1:geMPLpDpQOgVyCg5z5GoRwLHepNdb71NXb67XFkP+Eg= -github.com/rogpeppe/go-internal v1.8.1/go.mod h1:JeRgkft04UBgHMgCIwADu4Pn6Mtm5d4nPKWu0nJ5d+o= github.com/rs/cors v0.0.0-20160617231935-a62a804a8a00/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= github.com/rs/cors v1.7.0/go.mod h1:gFx+x8UowdsKA9AchylcLynDq+nNFfI8FkUZdN/jGCU= github.com/rs/cors v1.8.2 h1:KCooALfAYGs415Cwu5ABvv9n9509fSiG5SQJn/AQo4U= @@ -1198,7 +1189,6 @@ github.com/ryanrolds/sqlclosecheck v0.3.0 h1:AZx+Bixh8zdUBxUA1NxbxVAS78vTPq4rCb8 github.com/ryanrolds/sqlclosecheck v0.3.0/go.mod h1:1gREqxyTGR3lVtpngyFo3hZAgk0KCtEdgEkHwDbigdA= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/sagikazarmark/crypt v0.4.0/go.mod h1:ALv2SRj7GxYV4HO9elxH9nS6M9gW+xDNxqmyJ6RfDFM= -github.com/sagikazarmark/crypt v0.5.0/go.mod h1:l+nzl7KWh51rpzp2h7t4MZWyiEWdhNpOAnclKvg+mdA= github.com/samuel/go-zookeeper v0.0.0-20190923202752-2cc03de413da/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E= github.com/sanposhiho/wastedassign/v2 v2.0.6 h1:+6/hQIHKNJAUixEj6EmOngGIisyeI+T3335lYTyxRoA= github.com/sanposhiho/wastedassign/v2 v2.0.6/go.mod h1:KyZ0MWTwxxBmfwn33zh3k1dmsbF2ud9pAAGfoLfjhtI= @@ -1207,8 +1197,8 @@ github.com/sasha-s/go-deadlock v0.2.1-0.20190427202633-1595213edefa h1:0U2s5loxr github.com/sasha-s/go-deadlock v0.2.1-0.20190427202633-1595213edefa/go.mod h1:F73l+cr82YSh10GxyRI6qZiCgK64VaZjwesgfQ1/iLM= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= github.com/seccomp/libseccomp-golang v0.9.1/go.mod h1:GbW5+tmTXfcxTToHLXlScSlAvWlF4P2Ca7zGrPiEpWo= -github.com/securego/gosec/v2 v2.11.0 h1:+PDkpzR41OI2jrw1q6AdXZCbsNGNGT7pQjal0H0cArI= -github.com/securego/gosec/v2 v2.11.0/go.mod h1:SX8bptShuG8reGC0XS09+a4H2BoWSJi+fscA+Pulbpo= +github.com/securego/gosec/v2 v2.12.0 h1:CQWdW7ATFpvLSohMVsajscfyHJ5rsGmEXmsNcsDNmAg= +github.com/securego/gosec/v2 v2.12.0/go.mod h1:iTpT+eKTw59bSgklBHlSnH5O2tNygHMDxfvMubA4i7I= github.com/segmentio/fasthash v1.0.3/go.mod h1:waKX8l2N8yckOgmSsXJi7x1ZfdKZ4x7KRMzBtS3oedY= github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= github.com/shazow/go-diff v0.0.0-20160112020656-b6b7b6733b8c h1:W65qqJCIOVP4jpqPQ0YvHYKwcMEMVWIzWC5iNQQfBTU= @@ -1227,8 +1217,10 @@ github.com/sirupsen/logrus v1.8.1 h1:dJKuHgqk1NNQlqoA6BTlM1Wf9DOH3NBjQyu0h9+AZZE github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/sivchari/containedctx v1.0.2 h1:0hLQKpgC53OVF1VT7CeoFHk9YKstur1XOgfYIc1yrHI= github.com/sivchari/containedctx v1.0.2/go.mod h1:PwZOeqm4/DLoJOqMSIJs3aKqXRX4YO+uXww087KZ7Bw= -github.com/sivchari/tenv v1.5.0 h1:wxW0mFpKI6DIb3s6m1jCDYvkWXCskrimXMuGd0K/kSQ= -github.com/sivchari/tenv v1.5.0/go.mod h1:64yStXKSOxDfX47NlhVwND4dHwfZDdbp2Lyl018Icvg= +github.com/sivchari/nosnakecase v1.5.0 h1:ZBvAu1H3uteN0KQ0IsLpIFOwYgPEhKLyv2ahrVkub6M= +github.com/sivchari/nosnakecase v1.5.0/go.mod h1:CwDzrzPea40/GB6uynrNLiorAlgFRvRbFSgJx2Gs+QY= +github.com/sivchari/tenv v1.7.0 h1:d4laZMBK6jpe5PWepxlV9S+LC0yXqvYHiq8E6ceoVVE= +github.com/sivchari/tenv v1.7.0/go.mod h1:64yStXKSOxDfX47NlhVwND4dHwfZDdbp2Lyl018Icvg= github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc= github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA= github.com/snikch/goodman v0.0.0-20171125024755-10e37e294daa/go.mod h1:oJyF+mSPHbB5mVY2iO9KV3pTt/QbIkGaO8gQ2WrDbP4= @@ -1272,7 +1264,6 @@ github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5q github.com/spf13/viper v1.7.1/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= github.com/spf13/viper v1.8.0/go.mod h1:o0Pch8wJ9BVSWGQMbra6iw0oQ5oktSIBaujf1rJH9Ns= github.com/spf13/viper v1.10.1/go.mod h1:IGlFPqhNAPKRxohIzWpI5QEy4kuI7tcl5WvR+8qy1rU= -github.com/spf13/viper v1.11.0/go.mod h1:djo0X/bA5+tYVoCn+C7cAYJGcVn/qYLFTG8gdUsX7Zk= github.com/spf13/viper v1.12.0 h1:CZ7eSOd3kZoaYDLbXnmzgQI5RlciuXBMA+18HwHRfZQ= github.com/spf13/viper v1.12.0/go.mod h1:b6COn30jlNxbm/V2IqWiNWkJ+vZNiMNksliPCiuKtSI= github.com/ssgreg/nlreturn/v2 v2.2.1 h1:X4XDI7jstt3ySqGU86YGAURbxw3oTDPK9sPEi6YEwQ0= @@ -1301,11 +1292,12 @@ github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5 github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.2/go.mod h1:R6va5+xMeoiuVRoj+gSkQ7d3FALtqAAGI1FQKckRals= github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= -github.com/subosito/gotenv v1.3.0 h1:mjC+YW8QpAdXibNi+vNWgzmgBH4+5l5dCXv8cNysBLI= -github.com/subosito/gotenv v1.3.0/go.mod h1:YzJjq/33h7nrwdY+iHMhEOEEbW0ovIz0tB6t6PwAXzs= +github.com/subosito/gotenv v1.4.0 h1:yAzM1+SmVcz5R4tXGsNMu1jUl2aOJXoiWUCEwwnGrvs= +github.com/subosito/gotenv v1.4.0/go.mod h1:mZd6rFysKEcUhUHXJk0C/08wAgyDBFuwEYL7vWWGaGo= github.com/swaggo/swag v1.7.4 h1:up+ixy8yOqJKiFcuhMgkuYuF4xnevuhnFAXXF8OSfNg= github.com/swaggo/swag v1.7.4/go.mod h1:zD8h6h4SPv7t3l+4BKdRquqW1ASWjKZgT6Qv9z3kNqI= github.com/sylvia7788/contextcheck v1.0.4 h1:MsiVqROAdr0efZc/fOCt0c235qm9XJqHtWwM+2h2B04= @@ -1352,8 +1344,8 @@ github.com/tinylib/msgp v1.1.5/go.mod h1:eQsjooMTnV42mHu917E26IogZ2930nFyBQdofk1 github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= github.com/tmc/grpc-websocket-proxy v0.0.0-20200427203606-3cfed13b9966/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= -github.com/tomarrell/wrapcheck/v2 v2.6.1 h1:Cf4a/iwuMp9s7kKrh74GTgijRVim0wEpKjgAsT7Wctw= -github.com/tomarrell/wrapcheck/v2 v2.6.1/go.mod h1:Eo+Opt6pyMW1b6cNllOcDSSoHO0aTJ+iF6BfCUbHltA= +github.com/tomarrell/wrapcheck/v2 v2.6.2 h1:3dI6YNcrJTQ/CJQ6M/DUkc0gnqYSIk6o0rChn9E/D0M= +github.com/tomarrell/wrapcheck/v2 v2.6.2/go.mod h1:ao7l5p0aOlUNJKI0qVwB4Yjlqutd0IvAB9Rdwyilxvg= github.com/tomasen/realip v0.0.0-20180522021738-f0c99a92ddce/go.mod h1:o8v6yHRoik09Xen7gje4m9ERNah1d1PPsVq1VEx9vE4= github.com/tommy-muehle/go-mnd/v2 v2.5.0 h1:iAj0a8e6+dXSL7Liq0aXPox36FiN1dBbjA6lt9fl65s= github.com/tommy-muehle/go-mnd/v2 v2.5.0/go.mod h1:WsUAkMJMYww6l/ufffCD3m+P7LEvr8TnZn9lwVDlgzw= @@ -1375,8 +1367,8 @@ github.com/ultraware/whitespace v0.0.5/go.mod h1:aVMh/gQve5Maj9hQ/hg+F75lr/X5A89 github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA= github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= github.com/urfave/cli/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/XcUArI= -github.com/uudashr/gocognit v1.0.5 h1:rrSex7oHr3/pPLQ0xoWq108XMU8s678FJcQ+aSfOHa4= -github.com/uudashr/gocognit v1.0.5/go.mod h1:wgYz0mitoKOTysqxTDMOUXg+Jb5SvtihkfmugIZYpEA= +github.com/uudashr/gocognit v1.0.6 h1:2Cgi6MweCsdB6kpcVQp7EW4U23iBFQWfTXiWlyp842Y= +github.com/uudashr/gocognit v1.0.6/go.mod h1:nAIUuVBnYU7pcninia3BHOvQkpQCeO76Uscky5BOwcY= github.com/viki-org/dnscache v0.0.0-20130720023526-c70c1f23c5d8/go.mod h1:dniwbG03GafCjFohMDmz6Zc6oCuiqgH6tGNyXTkHzXE= github.com/vishvananda/netlink v1.1.0/go.mod h1:cTgwzPIzzgDAYoQrMm0EdrjRUBkTqKYppBueQtXaqoE= github.com/vishvananda/netns v0.0.0-20191106174202-0a2b9b5464df/go.mod h1:JP3t17pCcGlemwknint6hfoeCVQrEMVwxRLRjXpq+BU= @@ -1403,8 +1395,8 @@ github.com/yuin/goldmark v1.4.0/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1 github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/zondax/hid v0.9.0 h1:eiT3P6vNxAEVxXMw66eZUAAnU2zD33JBkfG/EnfAKl8= github.com/zondax/hid v0.9.0/go.mod h1:l5wttcP0jwtdLjqjMMWFVEE7d1zO0jvSPA9OPZxWpEM= -gitlab.com/bosi/decorder v0.2.1 h1:ehqZe8hI4w7O4b1vgsDZw1YU1PE7iJXrQWFMsocbQ1w= -gitlab.com/bosi/decorder v0.2.1/go.mod h1:6C/nhLSbF6qZbYD8bRmISBwc6vcWdNsiIBkRvjJFrH0= +gitlab.com/bosi/decorder v0.2.2 h1:LRfb3lP6mZWjUzpMOCLTVjcnl/SqZWBWmKNqQvMocQs= +gitlab.com/bosi/decorder v0.2.2/go.mod h1:9K1RB5+VPNQYtXtTDAzd2OEftsZb1oV0IrJrzChSdGE= go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/bbolt v1.3.3/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.etcd.io/bbolt v1.3.4/go.mod h1:G5EMThwa9y8QZGBClrRx5EY+Yw9kAhnjy3bSjsnlVTQ= @@ -1415,13 +1407,10 @@ go.etcd.io/etcd v0.0.0-20191023171146-3cf2f69b5738/go.mod h1:dnLIgRNXwCJa5e+c6mI go.etcd.io/etcd v0.0.0-20200513171258-e048e166ab9c/go.mod h1:xCI7ZzBfRuGgBXyXO6yfWfDmlWd35khcWpUa4L0xI/k= go.etcd.io/etcd/api/v3 v3.5.0/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs= go.etcd.io/etcd/api/v3 v3.5.1/go.mod h1:cbVKeC6lCfl7j/8jBhAK6aIYO9XOjdptoxU/nLQcPvs= -go.etcd.io/etcd/api/v3 v3.5.2/go.mod h1:5GB2vv4A4AOn3yk7MftYGHkUfGtDHnEraIjym4dYz5A= go.etcd.io/etcd/client/pkg/v3 v3.5.0/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= go.etcd.io/etcd/client/pkg/v3 v3.5.1/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= -go.etcd.io/etcd/client/pkg/v3 v3.5.2/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= go.etcd.io/etcd/client/v2 v2.305.0/go.mod h1:h9puh54ZTgAKtEbut2oe9P4L/oqKCVB6xsXlzd7alYQ= go.etcd.io/etcd/client/v2 v2.305.1/go.mod h1:pMEacxZW7o8pg4CrFE7pquyCJJzZvkvdD2RibOCCCGs= -go.etcd.io/etcd/client/v2 v2.305.2/go.mod h1:2D7ZejHVMIfog1221iLSYlQRzrtECw3kz4I4VAQm3qI= go.etcd.io/etcd/client/v3 v3.5.0/go.mod h1:AIKXXVX/DQXtfTEqBryiLTUXwON+GuvO6Z7lLS/oTh0= go.mozilla.org/mozlog v0.0.0-20170222151521-4bb13139d403/go.mod h1:jHoPAGnDrCy6kaI2tAze5Prf0Nr0w/oNkROt2lw3n3o= go.opencensus.io v0.20.1/go.mod h1:6WKK9ahsWS3RSO+PY9ZHZUfv2irvY6gN279GOPZjmmk= @@ -1438,17 +1427,21 @@ go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= +go.uber.org/atomic v1.9.0 h1:ECmE8Bn/WFTYwEW/bpKD3M8VtR/zQVbavAoalC1PYyE= go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= +go.uber.org/goleak v1.1.11-0.20210813005559-691160354723 h1:sHOAIxRGBp443oHZIPB+HsUGaksVCXVQENPxwTfQdH4= go.uber.org/goleak v1.1.11-0.20210813005559-691160354723/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= go.uber.org/multierr v1.4.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= +go.uber.org/multierr v1.7.0 h1:zaiO/rmgFjbmCXdSYJWQcdvOCsthmdaHfr3Gm2Kx4Ec= go.uber.org/multierr v1.7.0/go.mod h1:7EAYxJLBy9rStEaz58O2t4Uvip6FSURkq8/ppBp95ak= go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= +go.uber.org/zap v1.19.1 h1:ue41HOKd1vGURxrmeKIgELGb3jPW9DMUDGtsinblHwI= go.uber.org/zap v1.19.1/go.mod h1:j3DNczoxDZroyBnOT1L/Q79cfUMGZxlv/9dzN7SM1rI= golang.org/x/crypto v0.0.0-20170930174604-9419663f5a44/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20180501155221-613d6eafa307/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= @@ -1482,9 +1475,8 @@ golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5y golang.org/x/crypto v0.0.0-20210915214749-c084706c2272/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= -golang.org/x/crypto v0.0.0-20220313003712-b769efc7c000/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.0.0-20220411220226-7b82a4e95df4 h1:kUhD7nTDoI3fVd9G4ORWrbV5NY0liEs/Jg2pv5f+bBA= -golang.org/x/crypto v0.0.0-20220411220226-7b82a4e95df4/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.0.0-20220525230936-793ad666bf5e h1:T8NU3HyQ8ClP4SEE+KbFlg6n0NhuTsN4MyznaarGsZM= +golang.org/x/crypto v0.0.0-20220525230936-793ad666bf5e/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -1500,8 +1492,8 @@ golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u0 golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= golang.org/x/exp v0.0.0-20200331195152-e8c3332aa8e5/go.mod h1:4M0jN8W1tt0AVLNr8HDosyJCDCDuyL9N9+3m7wDWgKw= -golang.org/x/exp/typeparams v0.0.0-20220218215828-6cf2b201936e h1:qyrTQ++p1afMkO4DPEeLGq/3oTsdlvdH4vqZUBWzUKM= -golang.org/x/exp/typeparams v0.0.0-20220218215828-6cf2b201936e/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= +golang.org/x/exp/typeparams v0.0.0-20220613132600-b0d781184e0d h1:+W8Qf4iJtMGKkyAygcKohjxTk4JPsL9DpzApJ22m5Ic= +golang.org/x/exp/typeparams v0.0.0-20220613132600-b0d781184e0d/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk= golang.org/x/image v0.0.0-20180708004352-c73c2afc3b81/go.mod h1:ux5Hcp/YLpHSI86hEcLt0YII63i6oz57MZXIpbrjZUs= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= @@ -1599,10 +1591,7 @@ golang.org/x/net v0.0.0-20210917221730-978cfadd31cf/go.mod h1:9nx3DQGgdP8bBQD5qx golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20211208012354-db4efeb81f4b/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220325170049-de3da57026de/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.0.0-20220412020605-290c469a71a5/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220520000938-2e3eb7b945c2 h1:NWy5+hlRbC7HK+PmcXVUmW1IMyFce7to56IUvhUFm7Y= golang.org/x/net v0.0.0-20220520000938-2e3eb7b945c2/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= @@ -1623,9 +1612,6 @@ golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20211005180243-6b3c2da341f1/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= -golang.org/x/oauth2 v0.0.0-20220309155454-6242fa91716a/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= -golang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -1740,15 +1726,12 @@ golang.org/x/sys v0.0.0-20211105183446-c75c47738b0c/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211205182925-97ca703d548d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211210111614-af8b64212486/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20211213223007-03aa0b5f6827/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220227234510-4e6760a101f9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220319134239-a9b59b0215f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220328115105-d36c6a25d886/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220422013727-9388b58f7150/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220702020025-31831981b65f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220708085239-5a0f0661e09d h1:/m5NbqQelATgoSPVC2Z23sR4kVNokFwDDyWh/3rGY+I= golang.org/x/sys v0.0.0-20220708085239-5a0f0661e09d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= @@ -1825,7 +1808,6 @@ golang.org/x/tools v0.0.0-20200324003944-a576cf524670/go.mod h1:Sl4aGygMT6LrqrWc golang.org/x/tools v0.0.0-20200329025819-fd4102a86c65/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= golang.org/x/tools v0.0.0-20200414032229-332987a829c3/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20200422022333-3d57cf2e726e/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200426102838-f3a5411a4c3b/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= @@ -1869,17 +1851,16 @@ golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.7/go.mod h1:LGqMHiF4EqQNHR1JncWGqT5BVaXmza+X+BDGol+dOxo= -golang.org/x/tools v0.1.8/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU= golang.org/x/tools v0.1.9-0.20211228192929-ee1ca4ffc4da/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU= golang.org/x/tools v0.1.9/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU= golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E= -golang.org/x/tools v0.1.11 h1:loJ25fNOEhSXfHrpoGj91eCUThwdNX6u24rO1xnNteY= golang.org/x/tools v0.1.11/go.mod h1:SgwaegtQh8clINPpECJMqnxLv9I09HLqnW3RMqW0CA4= +golang.org/x/tools v0.1.12-0.20220628192153-7743d1d949f1 h1:NHLFZ56qCjD+0hYY3kE5Wl40Z7q4Gn9Ln/7YU0lsGko= +golang.org/x/tools v0.1.12-0.20220628192153-7743d1d949f1/go.mod h1:SgwaegtQh8clINPpECJMqnxLv9I09HLqnW3RMqW0CA4= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gonum.org/v1/gonum v0.0.0-20180816165407-929014505bf4/go.mod h1:Y+Yx5eoAFn32cQvJDxZx5Dpnq+c3wtXuadVZAcxbbBo= gonum.org/v1/gonum v0.8.2/go.mod h1:oe/vMfY3deqTw+1EZJhuvEW2iwGF1bW9wwu7XCu0+v0= gonum.org/v1/netlib v0.0.0-20190313105609-8cb42192e0e0/go.mod h1:wa6Ws7BG/ESfp6dHfk7C6KdzKA7wR7u/rKwOGE66zvw= @@ -1919,10 +1900,6 @@ google.golang.org/api v0.57.0/go.mod h1:dVPlbZyBo2/OjBpmvNdpn2GRm6rPy75jyU7bmhdr google.golang.org/api v0.59.0/go.mod h1:sT2boj7M9YJxZzgeZqXogmhfmRWDtPzT31xkieUbuZU= google.golang.org/api v0.61.0/go.mod h1:xQRti5UdCmoCEqFxcz93fTl338AVqDgyaDRuOZ3hg9I= google.golang.org/api v0.63.0/go.mod h1:gs4ij2ffTRXwuzzgJl/56BdwJaA194ijkfn++9tDuPo= -google.golang.org/api v0.67.0/go.mod h1:ShHKP8E60yPsKNw/w8w+VYaj9H6buA5UqDp8dhbQZ6g= -google.golang.org/api v0.70.0/go.mod h1:Bs4ZM2HGifEvXwd50TtW70ovgJffJYw2oRCOFU/SkfA= -google.golang.org/api v0.71.0/go.mod h1:4PyU6e6JogV1f9eA4voyrTY2batOLdgZ5qZ5HOCc4j8= -google.golang.org/api v0.74.0/go.mod h1:ZpfMZOVRMywNyvJFeqL9HRWBgAuRfSjJFpe9QtRRyDs= google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= @@ -2007,15 +1984,6 @@ google.golang.org/genproto v0.0.0-20211028162531-8db9c33dc351/go.mod h1:5CzLGKJ6 google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20211206160659-862468c7d6e0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20211221195035-429b39de9b1c/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20220126215142-9970aeb2e350/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20220207164111-0872dc986b00/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= -google.golang.org/genproto v0.0.0-20220218161850-94dd64e39d7c/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= -google.golang.org/genproto v0.0.0-20220222213610-43724f9ea8cf/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= -google.golang.org/genproto v0.0.0-20220304144024-325a89244dc8/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= -google.golang.org/genproto v0.0.0-20220310185008-1973136f34c6/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= -google.golang.org/genproto v0.0.0-20220324131243-acbaeb5b85eb/go.mod h1:hAL49I2IFola2sVEjAn7MEwsja0xp51I0tlGAf9hz4E= -google.golang.org/genproto v0.0.0-20220407144326-9054f6ed7bac/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= google.golang.org/genproto v0.0.0-20220519153652-3a47de7e79bd h1:e0TwkXOdbnH/1x5rc5MZ/VYyiZ4v+RdVfrGMqEwT68I= google.golang.org/genproto v0.0.0-20220519153652-3a47de7e79bd/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= google.golang.org/grpc v1.33.2 h1:EQyQC3sa8M+p6Ulc8yy9SWSS2GVwyRc83gAbG8lrl4o= @@ -2053,8 +2021,8 @@ gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.62.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/ini.v1 v1.66.2/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= -gopkg.in/ini.v1 v1.66.4 h1:SsAcf+mM7mRZo2nJNGt8mZCjG8ZRaNGMURJw7BsIST4= -gopkg.in/ini.v1 v1.66.4/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/ini.v1 v1.66.6 h1:LATuAqN/shcYAOkv3wl2L4rkaKqkcgTBQjOyYDvcPKI= +gopkg.in/ini.v1 v1.66.6/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce/go.mod h1:5AcXVHNjg+BDxry382+8OKon8SEWiKktQR07RKPsv1c= gopkg.in/olebedev/go-duktape.v3 v3.0.0-20200619000410-60c24ae608a6/go.mod h1:uAJfkITjFhyEEuUfm7bsmCZRbW5WRq8s9EY8HZ6hCns= gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= @@ -2086,16 +2054,16 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -honnef.co/go/tools v0.3.1 h1:1kJlrWJLkaGXgcaeosRXViwviqjI7nkBvU2+sZW0AYc= -honnef.co/go/tools v0.3.1/go.mod h1:vlRD9XErLMGT+mDuofSr0mMMquscM/1nQqtRSsh6m70= +honnef.co/go/tools v0.3.2 h1:ytYb4rOqyp1TSa2EPvNVwtPQJctSELKaMyLfqNP4+34= +honnef.co/go/tools v0.3.2/go.mod h1:jzwdWgg7Jdq75wlfblQxO4neNaFFSvgc1tD5Wv8U0Yw= mvdan.cc/gofumpt v0.3.1 h1:avhhrOmv0IuvQVK7fvwV91oFSGAk5/6Po8GXTzICeu8= mvdan.cc/gofumpt v0.3.1/go.mod h1:w3ymliuxvzVx8DAutBnVyDqYb1Niy/yCJt/lk821YCE= mvdan.cc/interfacer v0.0.0-20180901003855-c20040233aed h1:WX1yoOaKQfddO/mLzdV4wptyWgoH/6hwLs7QHTixo0I= mvdan.cc/interfacer v0.0.0-20180901003855-c20040233aed/go.mod h1:Xkxe497xwlCKkIaQYRfC7CSLworTXY9RMqwhhCm+8Nc= mvdan.cc/lint v0.0.0-20170908181259-adc824a0674b h1:DxJ5nJdkhDlLok9K6qO+5290kphDJbHOQO1DFFFTeBo= mvdan.cc/lint v0.0.0-20170908181259-adc824a0674b/go.mod h1:2odslEg/xrtNQqCYg2/jCoyKnw3vv5biOc3JnIcYfL4= -mvdan.cc/unparam v0.0.0-20211214103731-d0ef000c54e5 h1:Jh3LAeMt1eGpxomyu3jVkmVZWW2MxZ1qIIV2TZ/nRio= -mvdan.cc/unparam v0.0.0-20211214103731-d0ef000c54e5/go.mod h1:b8RRCBm0eeiWR8cfN88xeq2G5SG3VKGO+5UPWi5FSOY= +mvdan.cc/unparam v0.0.0-20220706161116-678bad134442 h1:seuXWbRB1qPrS3NQnHmFKLJLtskWyueeIzmLXghMGgk= +mvdan.cc/unparam v0.0.0-20220706161116-678bad134442/go.mod h1:F/Cxw/6mVrNKqrR2YjFf5CaW0Bw4RL8RfbEf4GRggJk= nhooyr.io/websocket v1.8.6 h1:s+C3xAMLwGmlI31Nyn/eAehUlZPwfYZu2JXM621Q5/k= nhooyr.io/websocket v1.8.6/go.mod h1:B70DZP8IakI65RVQ51MsWP/8jndNma26DVA/nFSCgW0= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= diff --git a/proto/comdex/asset/v1beta1/app.proto b/proto/comdex/asset/v1beta1/app.proto index 6d1259b03..66ee92d1a 100644 --- a/proto/comdex/asset/v1beta1/app.proto +++ b/proto/comdex/asset/v1beta1/app.proto @@ -22,7 +22,8 @@ message AppData { message MintGenesisToken { uint64 asset_id = 1 [ (gogoproto.moretags) = "yaml:\"asset_id\"" ]; - string genesis_supply = 2[(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int"]; + string genesis_supply = 2[(gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", + (gogoproto.nullable) = false]; bool is_gov_token = 3 [ (gogoproto.moretags) = "yaml:\"is_gov_token\"" ]; string recipient = 4 [ (gogoproto.moretags) = "yaml:\"recipient\"" ]; } diff --git a/proto/comdex/asset/v1beta1/events.proto b/proto/comdex/asset/v1beta1/events.proto index c7e06bf35..96ea7f2ff 100644 --- a/proto/comdex/asset/v1beta1/events.proto +++ b/proto/comdex/asset/v1beta1/events.proto @@ -1,10 +1,7 @@ syntax = "proto3"; package comdex.asset.v1beta1; -// import "gogoproto/gogo.proto"; option go_package = "github.com/comdex-official/comdex/x/asset/types"; -// option (gogoproto.equal_all) = false; -// option (gogoproto.goproto_getters_all) = false; message EventAddPair { uint64 id = 1; } diff --git a/proto/comdex/asset/v1beta1/genesis.proto b/proto/comdex/asset/v1beta1/genesis.proto index c56e63290..492ccbdd2 100644 --- a/proto/comdex/asset/v1beta1/genesis.proto +++ b/proto/comdex/asset/v1beta1/genesis.proto @@ -4,6 +4,8 @@ package comdex.asset.v1beta1; import "gogoproto/gogo.proto"; import "comdex/asset/v1beta1/asset.proto"; import "comdex/asset/v1beta1/pair.proto"; +import "comdex/asset/v1beta1/app.proto"; +import "comdex/asset/v1beta1/extendedPairVault.proto"; import "comdex/asset/v1beta1/params.proto"; option go_package = "github.com/comdex-official/comdex/x/asset/types"; @@ -15,9 +17,13 @@ message GenesisState { (gogoproto.moretags) = "yaml:\"assets\"", (gogoproto.nullable) = false ]; - repeated Pair pairs = 3 + repeated Pair pairs = 2 [ (gogoproto.moretags) = "yaml:\"pairs\"", (gogoproto.nullable) = false ]; - Params params = 4 [ + repeated AppData appData = 3 + [ (gogoproto.moretags) = "yaml:\"appData\"", (gogoproto.nullable) = false ]; + repeated ExtendedPairVault extendedPairVault = 4 + [ (gogoproto.moretags) = "yaml:\"extendedPairVault\"", (gogoproto.nullable) = false ]; + Params params = 5 [ (gogoproto.moretags) = "yaml:\"params\"", (gogoproto.nullable) = false ]; diff --git a/proto/comdex/asset/v1beta1/gov.proto b/proto/comdex/asset/v1beta1/gov.proto index ccc963fe7..7406d170d 100644 --- a/proto/comdex/asset/v1beta1/gov.proto +++ b/proto/comdex/asset/v1beta1/gov.proto @@ -13,7 +13,7 @@ option (gogoproto.goproto_getters_all) = false; message AddAssetsProposal { string title = 1 [(gogoproto.moretags) = "yaml:\"title\""]; string description = 2 [(gogoproto.moretags) = "yaml:\"description\""]; - repeated Asset assets = 3 [(gogoproto.nullable) = false]; + Asset assets = 3 [(gogoproto.nullable) = false]; } message UpdateAssetProposal { @@ -25,13 +25,13 @@ message UpdateAssetProposal { message AddPairsProposal { string title = 1 [(gogoproto.moretags) = "yaml:\"title\""]; string description = 2 [(gogoproto.moretags) = "yaml:\"description\""]; - repeated Pair pairs = 3 [(gogoproto.nullable) = false]; + Pair pairs = 3 [(gogoproto.nullable) = false]; } message AddAppProposal { string title = 1 [(gogoproto.moretags) = "yaml:\"title\""]; string description = 2 [(gogoproto.moretags) = "yaml:\"description\""]; - repeated AppData app = 3 [(gogoproto.nullable) = false]; + AppData app = 3 [(gogoproto.nullable) = false]; } message UpdateGovTimeInAppProposal { @@ -43,5 +43,5 @@ message UpdateGovTimeInAppProposal { message AddAssetInAppProposal { string title = 1 [(gogoproto.moretags) = "yaml:\"title\""]; string description = 2 [(gogoproto.moretags) = "yaml:\"description\""]; - repeated AppData app = 3 [(gogoproto.nullable) = false]; + AppData app = 3 [(gogoproto.nullable) = false]; } \ No newline at end of file diff --git a/proto/comdex/auction/v1beta1/genesis.proto b/proto/comdex/auction/v1beta1/genesis.proto index ed95533ad..a13242c64 100644 --- a/proto/comdex/auction/v1beta1/genesis.proto +++ b/proto/comdex/auction/v1beta1/genesis.proto @@ -3,9 +3,21 @@ package comdex.auction.v1beta1; import "gogoproto/gogo.proto"; import "comdex/auction/v1beta1/params.proto"; +import "comdex/auction/v1beta1/auction.proto"; +import "comdex/auction/v1beta1/biddings.proto"; option go_package = "github.com/comdex-official/comdex/x/auction/types"; message GenesisState { - Params params = 1 [(gogoproto.nullable) = false]; + repeated SurplusAuction surplusAuction = 1 + [ (gogoproto.moretags) = "yaml:\"surplusAuction\"", (gogoproto.nullable) = false ]; + repeated DebtAuction debtAuction = 2 + [ (gogoproto.moretags) = "yaml:\"debtAuction\"", (gogoproto.nullable) = false ]; + repeated DutchAuction dutchAuction = 3 + [ (gogoproto.moretags) = "yaml:\"dutchAuction\"", (gogoproto.nullable) = false ]; + repeated ProtocolStatistics protocolStatistics = 4 + [ (gogoproto.moretags) = "yaml:\"protocolStatistics\"", (gogoproto.nullable) = false ]; + repeated AuctionParams auctionParams = 5 + [ (gogoproto.moretags) = "yaml:\"auctionParams\"", (gogoproto.nullable) = false ]; + Params params = 6 [(gogoproto.nullable) = false]; } diff --git a/proto/comdex/collector/v1beta1/collector.proto b/proto/comdex/collector/v1beta1/collector.proto index 387d17331..d4b356dd5 100644 --- a/proto/comdex/collector/v1beta1/collector.proto +++ b/proto/comdex/collector/v1beta1/collector.proto @@ -24,7 +24,7 @@ message CollectorData { (gogoproto.moretags) = "yaml:\"collected_opening_fee\"", (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int" ]; - string liquidation_rewards_collected = 5 [ + string liquidation_rewards_collected = 4 [ (gogoproto.nullable) = false, (gogoproto.moretags) = "yaml:\"liquidation_rewards_collected\"", (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int" @@ -110,8 +110,9 @@ message AssetIdToAuctionLookupTable { uint64 asset_id = 1 [(gogoproto.moretags) = "yaml:\"asset_id\""]; bool is_surplus_auction = 2 [(gogoproto.moretags) = "yaml:\"is_surplus_auction\""]; bool is_debt_auction = 3 [(gogoproto.moretags) = "yaml:\"is_debt_auction\""]; - bool is_auction_active = 4 [(gogoproto.moretags) = "yaml:\"is_auction_active\""]; - bool asset_out_oracle_price = 5 [ (gogoproto.moretags) = "yaml:\"asset_out_oracle_price\"" ]; - uint64 asset_out_price = 6 [ + bool is_distributor = 4 [(gogoproto.moretags) = "yaml:\"is_distributor\""]; + bool is_auction_active = 5 [(gogoproto.moretags) = "yaml:\"is_auction_active\""]; + bool asset_out_oracle_price = 6 [ (gogoproto.moretags) = "yaml:\"asset_out_oracle_price\"" ]; + uint64 asset_out_price = 7 [ (gogoproto.moretags) = "yaml:\"asset_out_price\"" ]; } \ No newline at end of file diff --git a/proto/comdex/collector/v1beta1/genesis.proto b/proto/comdex/collector/v1beta1/genesis.proto index cde554992..658b16c9d 100644 --- a/proto/comdex/collector/v1beta1/genesis.proto +++ b/proto/comdex/collector/v1beta1/genesis.proto @@ -3,12 +3,23 @@ package comdex.collector.v1beta1; import "gogoproto/gogo.proto"; import "comdex/collector/v1beta1/params.proto"; +import "comdex/collector/v1beta1/collector.proto"; // this line is used by starport scaffolding # genesis/proto/import option go_package = "github.com/comdex-official/comdex/x/collector/types"; // GenesisState defines the collector module's genesis state. message GenesisState { - Params params = 1 [(gogoproto.nullable) = false]; + repeated NetFeeCollectedData netFeeCollectedData = 1 + [ (gogoproto.moretags) = "yaml:\"netFeeCollectedData\"", (gogoproto.nullable) = false ]; + repeated AppIdToAssetCollectorMapping appIdToAssetCollectorMapping = 2 + [ (gogoproto.moretags) = "yaml:\"appIdToAssetCollectorMapping\"", (gogoproto.nullable) = false ]; + repeated CollectorLookup collectorLookup = 3 + [ (gogoproto.moretags) = "yaml:\"collectorLookupTable\"", (gogoproto.nullable) = false ]; + repeated CollectorAuctionLookupTable collectorAuctionLookupTable = 4 + [ (gogoproto.moretags) = "yaml:\"collectorAuctionLookupTable\"", (gogoproto.nullable) = false ]; + repeated AppToDenomsMapping appToDenomsMapping = 5 + [ (gogoproto.moretags) = "yaml:\"appToDenomsMapping\"", (gogoproto.nullable) = false ]; + Params params = 6 [(gogoproto.nullable) = false]; // this line is used by starport scaffolding # genesis/proto/state } diff --git a/proto/comdex/esm/v1beta1/genesis.proto b/proto/comdex/esm/v1beta1/genesis.proto index d0e63e148..5d3487d50 100644 --- a/proto/comdex/esm/v1beta1/genesis.proto +++ b/proto/comdex/esm/v1beta1/genesis.proto @@ -3,9 +3,28 @@ package comdex.esm.v1beta1; import "gogoproto/gogo.proto"; import "comdex/esm/v1beta1/params.proto"; +import "comdex/esm/v1beta1/esm.proto"; option go_package = "github.com/comdex-official/comdex/x/esm/types"; message GenesisState { - Params params = 1 [(gogoproto.nullable) = false]; + repeated ESMTriggerParams eSMTriggerParams = 1 + [ (gogoproto.moretags) = "yaml:\"eSMTriggerParams\"", (gogoproto.nullable) = false ]; + repeated CurrentDepositStats currentDepositStats = 2 + [ (gogoproto.moretags) = "yaml:\"currentDepositStats\"", (gogoproto.nullable) = false ]; + repeated ESMStatus eSMStatus = 3 + [ (gogoproto.moretags) = "yaml:\"eSMStatus\"", (gogoproto.nullable) = false ]; + repeated KillSwitchParams killSwitchParams = 4 + [ (gogoproto.moretags) = "yaml:\"killSwitchParams\"", (gogoproto.nullable) = false ]; + repeated UsersDepositMapping usersDepositMapping = 5 + [ (gogoproto.moretags) = "yaml:\"usersDepositMapping\"", (gogoproto.nullable) = false ]; + repeated ESMMarketPrice eSMMarketPrice = 6 + [ (gogoproto.moretags) = "yaml:\"eSMMarketPrice\"", (gogoproto.nullable) = false ]; + repeated DataAfterCoolOff dataAfterCoolOff = 7 + [ (gogoproto.moretags) = "yaml:\"dataAfterCoolOff\"", (gogoproto.nullable) = false ]; + repeated AssetToAmountValue assetToAmountValue = 8 + [ (gogoproto.moretags) = "yaml:\"assetToAmountValue\"", (gogoproto.nullable) = false ]; + repeated AppToAmountValue appToAmountValue = 9 + [ (gogoproto.moretags) = "yaml:\"appToAmountValue\"", (gogoproto.nullable) = false ]; + Params params = 10 [(gogoproto.nullable) = false]; } diff --git a/proto/comdex/esm/v1beta1/params.proto b/proto/comdex/esm/v1beta1/params.proto index 4c89ecca9..0db08ce7c 100644 --- a/proto/comdex/esm/v1beta1/params.proto +++ b/proto/comdex/esm/v1beta1/params.proto @@ -5,4 +5,6 @@ import "gogoproto/gogo.proto"; option go_package = "github.com/comdex-official/comdex/x/esm/types"; -message Params {} \ No newline at end of file +message Params { + repeated string admin = 1 [ (gogoproto.moretags) = "yaml:\"admin\"" ]; +} \ No newline at end of file diff --git a/proto/comdex/esm/v1beta1/query.proto b/proto/comdex/esm/v1beta1/query.proto index b923bdd29..217fef8b9 100644 --- a/proto/comdex/esm/v1beta1/query.proto +++ b/proto/comdex/esm/v1beta1/query.proto @@ -54,6 +54,15 @@ message QueryUsersDepositMappingResponse { [(gogoproto.nullable) = false, (gogoproto.moretags) = "yaml:\"user_deposit_mapping\""]; } +message QueryDataAfterCoolOffRequest { + uint64 id = 1; +} + +message QueryDataAfterCoolOffResponse { + DataAfterCoolOff dataAfterCoolOff = 1 + [(gogoproto.nullable) = false, (gogoproto.moretags) = "yaml:\"data_after_cool_off\""]; +} + service Query { rpc Params(QueryParamsRequest) returns (QueryParamsResponse) { option (google.api.http).get = "/comdex/v1beta1/esm/params"; @@ -74,4 +83,8 @@ service Query { rpc QueryUsersDepositMapping(QueryUsersDepositMappingRequest) returns (QueryUsersDepositMappingResponse) { option (google.api.http).get = "/comdex/esm/v1beta1/user_deposit_mapping/{id}/{depositor}"; } + + rpc QueryDataAfterCoolOff(QueryDataAfterCoolOffRequest) returns (QueryDataAfterCoolOffResponse) { + option (google.api.http).get = "/comdex/esm/v1beta1/data_after_cool_off/{id}"; + } } \ No newline at end of file diff --git a/proto/comdex/lend/v1beta1/genesis.proto b/proto/comdex/lend/v1beta1/genesis.proto index 84e516fce..ca66c4b72 100644 --- a/proto/comdex/lend/v1beta1/genesis.proto +++ b/proto/comdex/lend/v1beta1/genesis.proto @@ -2,6 +2,7 @@ syntax = "proto3"; package comdex.lend.v1beta1; import "gogoproto/gogo.proto"; +import "comdex/lend/v1beta1/lend.proto"; import "comdex/lend/v1beta1/params.proto"; // this line is used by starport scaffolding # genesis/proto/import @@ -9,6 +10,44 @@ option go_package = "github.com/comdex-official/comdex/x/lend/types"; // GenesisState defines the lend module's genesis state. message GenesisState { - Params params = 1 [(gogoproto.nullable) = false]; + repeated BorrowAsset borrowAsset = 1 + [ (gogoproto.moretags) = "yaml:\"borrowAsset\"", (gogoproto.nullable) = false ]; + repeated UserBorrowIdMapping userBorrowIdMapping = 2 + [ (gogoproto.moretags) = "yaml:\"userBorrowIdMapping\"", (gogoproto.nullable) = false ]; + repeated BorrowIdByOwnerAndPoolMapping borrowIdByOwnerAndPoolMapping = 3 + [ (gogoproto.moretags) = "yaml:\"borrowIdByOwnerAndPoolMapping\"", (gogoproto.nullable) = false ]; + BorrowMapping borrowMapping = 4 + [ (gogoproto.moretags) = "yaml:\"borrowMapping\"", (gogoproto.nullable) = false ]; + repeated LendAsset lendAsset = 5 + [ (gogoproto.moretags) = "yaml:\"lendAsset\"", (gogoproto.nullable) = false ]; + repeated Pool pool = 6 + [ (gogoproto.moretags) = "yaml:\"pool\"", (gogoproto.nullable) = false ]; + repeated AssetToPairMapping assetToPairMapping = 7 + [ (gogoproto.moretags) = "yaml:\"assetToPairMapping\"", (gogoproto.nullable) = false ]; + repeated UserLendIdMapping userLendIdMapping = 8 + [ (gogoproto.moretags) = "yaml:\"userLendIdMapping\"", (gogoproto.nullable) = false ]; + repeated LendIdByOwnerAndPoolMapping lendIdByOwnerAndPoolMapping = 9 + [ (gogoproto.moretags) = "yaml:\"lendIdByOwnerAndPoolMapping\"", (gogoproto.nullable) = false ]; + repeated LendIdToBorrowIdMapping lendIdToBorrowIdMapping = 10 + [ (gogoproto.moretags) = "yaml:\"lendIdToBorrowIdMapping\"", (gogoproto.nullable) = false ]; + repeated AssetStats assetStats = 11 + [ (gogoproto.moretags) = "yaml:\"assetStats\"", (gogoproto.nullable) = false ]; + LendMapping lendMapping = 12 + [ (gogoproto.moretags) = "yaml:\"lendMapping\"", (gogoproto.nullable) = false ]; + DepositStats userDepositStats = 13 + [ (gogoproto.moretags) = "yaml:\"userDepositStats\"", (gogoproto.nullable) = false ]; + DepositStats reserveDepositStats = 14 + [ (gogoproto.moretags) = "yaml:\"reserveDepositStats\"", (gogoproto.nullable) = false ]; + DepositStats buyBackDepositStats = 15 + [ (gogoproto.moretags) = "yaml:\"buyBackDepositStats\"", (gogoproto.nullable) = false ]; + DepositStats borrowDepositStats = 16 + [ (gogoproto.moretags) = "yaml:\"borrowDepositStats\"", (gogoproto.nullable) = false ]; + repeated Extended_Pair extended_Pair = 17 + [ (gogoproto.moretags) = "yaml:\"extended_Pair\"", (gogoproto.nullable) = false ]; + repeated AssetRatesStats assetRatesStats = 18 + [ (gogoproto.moretags) = "yaml:\"assetRatesStats\"", (gogoproto.nullable) = false ]; + repeated AuctionParams auctionParams = 19 + [ (gogoproto.moretags) = "yaml:\"auctionParams\"", (gogoproto.nullable) = false ]; + Params params = 20 [(gogoproto.nullable) = false]; // this line is used by starport scaffolding # genesis/proto/state } diff --git a/proto/comdex/lend/v1beta1/gov.proto b/proto/comdex/lend/v1beta1/gov.proto index ffb6b794e..80f091e48 100644 --- a/proto/comdex/lend/v1beta1/gov.proto +++ b/proto/comdex/lend/v1beta1/gov.proto @@ -10,13 +10,7 @@ option go_package = "github.com/comdex-official/comdex/x/lend/types"; message LendPairsProposal { string title = 1 [(gogoproto.moretags) = "yaml:\"title\""]; string description = 2 [(gogoproto.moretags) = "yaml:\"description\""]; - repeated Extended_Pair pairs = 3 [(gogoproto.nullable) = false]; -} - -message UpdatePairProposal { - string title = 1 [(gogoproto.moretags) = "yaml:\"title\""]; - string description = 2 [(gogoproto.moretags) = "yaml:\"description\""]; - Extended_Pair pair = 3 [(gogoproto.nullable) = false]; + Extended_Pair pairs = 3 [(gogoproto.nullable) = false]; } message AddPoolsProposal { @@ -34,5 +28,11 @@ message AddAssetToPairProposal { message AddAssetRatesStats { string title = 1 [(gogoproto.moretags) = "yaml:\"title\""]; string description = 2 [(gogoproto.moretags) = "yaml:\"description\""]; - repeated AssetRatesStats AssetRatesStats = 3 [(gogoproto.nullable) = false]; + AssetRatesStats AssetRatesStats = 3 [(gogoproto.nullable) = false]; +} + +message AddAuctionParamsProposal { + string title = 1 [(gogoproto.moretags) = "yaml:\"title\""]; + string description = 2 [(gogoproto.moretags) = "yaml:\"description\""]; + AuctionParams AuctionParams = 3 [(gogoproto.nullable) = false]; } diff --git a/proto/comdex/lend/v1beta1/lend.proto b/proto/comdex/lend/v1beta1/lend.proto index 4ce3b6619..c3109c787 100644 --- a/proto/comdex/lend/v1beta1/lend.proto +++ b/proto/comdex/lend/v1beta1/lend.proto @@ -12,12 +12,12 @@ message LendAsset { [(gogoproto.customname) = "ID", (gogoproto.moretags) = "yaml:\"lending_id\""]; uint64 asset_id = 2 [ - (gogoproto.customname) = "AssetId", + (gogoproto.customname) = "AssetID", (gogoproto.moretags) = "yaml:\"asset_id\"" ]; uint64 pool_id = 3 [ - (gogoproto.customname) = "PoolId", + (gogoproto.customname) = "PoolID", (gogoproto.moretags) = "yaml:\"pool_id\"" ]; @@ -52,8 +52,14 @@ message LendAsset { (gogoproto.moretags) = "yaml:\"reward_accumulated\"", (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int" ]; + uint64 app_id = 10 - [(gogoproto.customname) = "AppId", (gogoproto.moretags) = "yaml:\"app_id\""]; + [(gogoproto.customname) = "AppID", (gogoproto.moretags) = "yaml:\"app_id\""]; + + string cpool_name = 11 [ + (gogoproto.customname) = "CPoolName", + (gogoproto.moretags) = "yaml:\"cpool_name\"" + ]; } message BorrowAsset { @@ -117,11 +123,16 @@ message BorrowAsset { (gogoproto.moretags) = "yaml:\"interest_accumulated\"", (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int" ]; + + string cpool_name = 12 [ + (gogoproto.customname) = "CPoolName", + (gogoproto.moretags) = "yaml:\"cpool_name\"" + ]; } message Pool { uint64 pool_id = 1 [ - (gogoproto.customname) = "PoolId", + (gogoproto.customname) = "PoolID", (gogoproto.moretags) = "yaml:\"pool_id\"" ]; @@ -136,16 +147,25 @@ message Pool { ]; uint64 first_bridged_asset_id = 4 [ - (gogoproto.customname) = "FirstBridgedAssetId", + (gogoproto.customname) = "FirstBridgedAssetID", (gogoproto.moretags) = "yaml:\"first_bridged_asset_id\"" ]; uint64 second_bridged_asset_id = 5 [ - (gogoproto.customname) = "SecondBridgedAssetId", + (gogoproto.customname) = "SecondBridgedAssetID", (gogoproto.moretags) = "yaml:\"second_bridged_asset_id\"" ]; - repeated AssetDataPoolMapping asset_data = 6 [ + string cpool_name = 6 [ + (gogoproto.customname) = "CPoolName", + (gogoproto.moretags) = "yaml:\"cpool_name\"" + ]; + + uint64 reserve_funds = 7 [ + (gogoproto.moretags) = "yaml:\"reserve_funds\"" + ]; + + repeated AssetDataPoolMapping asset_data = 8 [ (gogoproto.nullable) = false, (gogoproto.customname) = "AssetData", (gogoproto.moretags) = "yaml:\"asset_data\"" @@ -155,7 +175,7 @@ message Pool { message AssetDataPoolMapping{ uint64 asset_id = 1 [ - (gogoproto.customname) = "AssetId", + (gogoproto.customname) = "AssetID", (gogoproto.moretags) = "yaml:\"asset_id\"" ]; bool is_bridged = 2 [ @@ -172,7 +192,7 @@ message Extended_Pair { ]; uint64 asset_out_pool_id = 5 [ - (gogoproto.customname) = "AssetOutPoolId", + (gogoproto.customname) = "AssetOutPoolID", (gogoproto.moretags) = "yaml:\"asset_out_pool_id\"" ]; @@ -182,15 +202,15 @@ message Extended_Pair { message AssetToPairMapping{ uint64 asset_id = 1 [ - (gogoproto.customname) = "AssetId", + (gogoproto.customname) = "AssetID", (gogoproto.moretags) = "yaml:\"asset_id\"" ]; uint64 pool_id = 2 [ - (gogoproto.customname) = "PoolId", + (gogoproto.customname) = "PoolID", (gogoproto.moretags) = "yaml:\"pool_id\"" ]; repeated uint64 pair_id = 3 [ - (gogoproto.customname) = "PairId", + (gogoproto.customname) = "PairID", (gogoproto.moretags) = "yaml:\"pair_id\"" ]; } @@ -198,7 +218,7 @@ message AssetToPairMapping{ message UserLendIdMapping{ string owner = 1 [(gogoproto.moretags) = "yaml:\"owner\""]; repeated uint64 lend_ids = 2 [ - (gogoproto.customname) = "LendIds", + (gogoproto.customname) = "LendIDs", (gogoproto.moretags) = "yaml:\"lend_ids\"" ]; } @@ -206,11 +226,11 @@ message UserLendIdMapping{ message LendIdByOwnerAndPoolMapping{ string owner = 1 [(gogoproto.moretags) = "yaml:\"owner\""]; uint64 pool_id = 2 [ - (gogoproto.customname) = "PoolId", + (gogoproto.customname) = "PoolID", (gogoproto.moretags) = "yaml:\"pool_id\"" ]; repeated uint64 lendIds = 3 [ - (gogoproto.customname) = "LendIds", + (gogoproto.customname) = "LendIDs", (gogoproto.moretags) = "yaml:\"lend_ids\"" ]; } @@ -218,11 +238,11 @@ message LendIdByOwnerAndPoolMapping{ message BorrowIdByOwnerAndPoolMapping{ string owner = 1 [(gogoproto.moretags) = "yaml:\"owner\""]; uint64 pool_id = 2 [ - (gogoproto.customname) = "PoolId", + (gogoproto.customname) = "PoolID", (gogoproto.moretags) = "yaml:\"pool_id\"" ]; repeated uint64 borrowIds = 3 [ - (gogoproto.customname) = "BorrowIds", + (gogoproto.customname) = "BorrowIDs", (gogoproto.moretags) = "yaml:\"borrow_ids\"" ]; } @@ -230,7 +250,7 @@ message BorrowIdByOwnerAndPoolMapping{ message UserBorrowIdMapping{ string owner = 1 [(gogoproto.moretags) = "yaml:\"owner\""]; repeated uint64 borrow_ids = 2 [ - (gogoproto.customname) = "BorrowIds", + (gogoproto.customname) = "BorrowIDs", (gogoproto.moretags) = "yaml:\"borrow_ids\"" ]; } @@ -248,12 +268,12 @@ message LendIdToBorrowIdMapping{ message AssetStats{ uint64 pool_id = 1 [ - (gogoproto.customname) = "PoolId", + (gogoproto.customname) = "PoolID", (gogoproto.moretags) = "yaml:\"pool_id\"" ]; uint64 asset_id = 2 [ - (gogoproto.customname) = "AssetId", + (gogoproto.customname) = "AssetID", (gogoproto.moretags) = "yaml:\"asset_id\"" ]; @@ -302,7 +322,7 @@ message AssetStats{ message AssetRatesStats{ uint64 asset_id = 1 [ - (gogoproto.customname) = "AssetId", + (gogoproto.customname) = "AssetID", (gogoproto.moretags) = "yaml:\"asset_id\"" ]; string u_optimal = 2 [ @@ -358,13 +378,18 @@ message AssetRatesStats{ (gogoproto.nullable) = false, (gogoproto.moretags) = "yaml:\"liquidation_penalty\"" ]; - string reserve_factor = 13 [ + string liquidation_bonus = 13 [ + (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", + (gogoproto.nullable) = false, + (gogoproto.moretags) = "yaml:\"liquidation_bonus\"" + ]; + string reserve_factor = 14 [ (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", (gogoproto.nullable) = false, (gogoproto.moretags) = "yaml:\"reserve_factor\"" ]; - uint64 c_asset_id = 14 [ - (gogoproto.customname) = "CAssetId", + uint64 c_asset_id = 15 [ + (gogoproto.customname) = "CAssetID", (gogoproto.moretags) = "yaml:\"c_asset_id\"" ]; @@ -372,28 +397,28 @@ message AssetRatesStats{ message LendMapping{ repeated uint64 lend_ids = 1 [ - (gogoproto.customname) = "LendIds", + (gogoproto.customname) = "LendIDs", (gogoproto.moretags) = "yaml:\"lend_ids\"" ]; } message BorrowMapping{ repeated uint64 borrow_ids = 1 [ - (gogoproto.customname) = "BorrowIds", + (gogoproto.customname) = "BorrowIDs", (gogoproto.moretags) = "yaml:\"borrow_ids\"" ]; } message StableBorrowMapping{ repeated uint64 stable_borrow_ids = 1 [ - (gogoproto.customname) = "StableBorrowIds", + (gogoproto.customname) = "StableBorrowIDs", (gogoproto.moretags) = "yaml:\"stable_borrow_ids\"" ]; } message ModuleBalance{ uint64 pool_id = 1 [ - (gogoproto.customname) = "PoolId", + (gogoproto.customname) = "PoolID", (gogoproto.moretags) = "yaml:\"pool_id\"" ]; repeated ModuleBalanceStats module_balance_stats = 2[ @@ -404,7 +429,7 @@ message ModuleBalance{ message ModuleBalanceStats{ uint64 asset_id = 1 [ - (gogoproto.customname) = "AssetId", + (gogoproto.customname) = "AssetID", (gogoproto.moretags) = "yaml:\"asset_id\"" ]; cosmos.base.v1beta1.Coin balance = 2 [ @@ -416,7 +441,7 @@ message ModuleBalanceStats{ message BalanceStats{ uint64 asset_id = 1 [ - (gogoproto.customname) = "AssetId", + (gogoproto.customname) = "AssetID", (gogoproto.moretags) = "yaml:\"asset_id\"" ]; string amount = 2 [ @@ -431,4 +456,37 @@ message DepositStats{ (gogoproto.nullable) = false, (gogoproto.moretags) = "yaml:\"balance_stats\"" ]; +} + +message AuctionParams{ + uint64 app_id = 1 [ + (gogoproto.moretags) = "yaml:\"app_id\"" + ]; + uint64 auction_duration_seconds = 2 [ + (gogoproto.moretags) = "yaml:\"auction_duration_seconds\"" + ]; + string buffer = 3 [ + (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", + (gogoproto.nullable) = false, + (gogoproto.moretags) = "yaml:\"buffer\"" + ]; + string cusp = 4 [ + (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Dec", + (gogoproto.nullable) = false, + (gogoproto.moretags) = "yaml:\"cusp\"" + ]; + string step = 5 [ + (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", + (gogoproto.nullable) = false, + (gogoproto.moretags) = "yaml:\"step\"" + ]; + uint64 price_function_type = 6 [ + (gogoproto.moretags) = "yaml:\"price_function_type\"" + ]; + uint64 dutch_id = 7 [ + (gogoproto.moretags) = "yaml:\"dutch_id\"" + ]; + uint64 bid_duration_seconds = 8 [ + (gogoproto.moretags) = "yaml:\"bid_duration_seconds\"" + ]; } \ No newline at end of file diff --git a/proto/comdex/lend/v1beta1/query.proto b/proto/comdex/lend/v1beta1/query.proto index fc793f0bf..89e4b3fd9 100644 --- a/proto/comdex/lend/v1beta1/query.proto +++ b/proto/comdex/lend/v1beta1/query.proto @@ -274,6 +274,15 @@ message QueryBorrowStatsResponse { (gogoproto.moretags) = "yaml:\"borrow_stats\""]; } +message QueryAuctionParamRequest { + uint64 app_id = 1; +} + +message QueryAuctionParamResponse { + AuctionParams auctionParams = 1 + [ (gogoproto.nullable) = false, (gogoproto.moretags) = "yaml:\"auction_params\"" ]; +} + service Query { rpc QueryLends(QueryLendsRequest) returns (QueryLendsResponse) { option (google.api.http).get = "/comdex/lend/v1beta1/lends"; @@ -364,5 +373,9 @@ service Query { rpc QueryBorrowStats(QueryBorrowStatsRequest) returns (QueryBorrowStatsResponse) { option (google.api.http).get = "/comdex/lend/v1beta1/borrow_stats"; } + + rpc QueryAuctionParams(QueryAuctionParamRequest) returns (QueryAuctionParamResponse) { + option (google.api.http).get = "/comdex/lend/v1beta1/auctionparams/{app_id}"; + } } diff --git a/proto/comdex/lend/v1beta1/tx.proto b/proto/comdex/lend/v1beta1/tx.proto index 4ad188a20..0e5df7d7e 100644 --- a/proto/comdex/lend/v1beta1/tx.proto +++ b/proto/comdex/lend/v1beta1/tx.proto @@ -30,6 +30,8 @@ service Msg { rpc CloseBorrow(MsgCloseBorrow) returns (MsgCloseBorrowResponse); + rpc BorrowAlternate(MsgBorrowAlternate) returns (MsgBorrowAlternateResponse); + // FundModuleAccounts funds an existing module account rpc FundModuleAccounts(MsgFundModuleAccounts) returns (MsgFundModuleAccountsResponse); } @@ -91,6 +93,16 @@ message MsgCloseBorrow { uint64 borrow_id = 2; } +message MsgBorrowAlternate { + string lender = 1; + uint64 asset_id = 2; + uint64 pool_id = 3; + cosmos.base.v1beta1.Coin amount_in = 4 [(gogoproto.nullable) = false]; + uint64 pair_id = 5; + bool is_stable_borrow = 6; + cosmos.base.v1beta1.Coin amount_out = 7 [(gogoproto.nullable) = false]; + uint64 app_id = 8; +} message MsgFundModuleAccounts { string moduleName = 1; @@ -117,4 +129,6 @@ message MsgDrawResponse {} message MsgCloseBorrowResponse {} +message MsgBorrowAlternateResponse {} + message MsgFundModuleAccountsResponse {} \ No newline at end of file diff --git a/proto/comdex/liquidation/v1beta1/genesis.proto b/proto/comdex/liquidation/v1beta1/genesis.proto index 1a49e4b80..d5a4c3a4e 100644 --- a/proto/comdex/liquidation/v1beta1/genesis.proto +++ b/proto/comdex/liquidation/v1beta1/genesis.proto @@ -3,9 +3,16 @@ package comdex.liquidation.v1beta1; import "gogoproto/gogo.proto"; import "comdex/liquidation/v1beta1/params.proto"; +import "comdex/liquidation/v1beta1/locked_vault.proto"; option go_package = "github.com/comdex-official/comdex/x/liquidation/types"; message GenesisState { - Params params = 1 [(gogoproto.nullable) = false]; + repeated LockedVault lockedVault = 1 + [ (gogoproto.moretags) = "yaml:\"lockedVault\"", (gogoproto.nullable) = false ]; + repeated LockedVaultToAppMapping lockedVaultToAppMapping = 2 + [ (gogoproto.moretags) = "yaml:\"lockedVaultToAppMapping\"", (gogoproto.nullable) = false ]; + WhitelistedAppIds whitelistedAppIds = 3 + [ (gogoproto.moretags) = "yaml:\"whitelistedAppIds\"", (gogoproto.nullable) = false ]; + Params params = 4 [(gogoproto.nullable) = false]; } diff --git a/proto/comdex/liquidity/v1beta1/genesis.proto b/proto/comdex/liquidity/v1beta1/genesis.proto index 89e9d2ac3..d97ea1234 100644 --- a/proto/comdex/liquidity/v1beta1/genesis.proto +++ b/proto/comdex/liquidity/v1beta1/genesis.proto @@ -3,11 +3,39 @@ package comdex.liquidity.v1beta1; import "gogoproto/gogo.proto"; import "comdex/liquidity/v1beta1/params.proto"; +import "comdex/liquidity/v1beta1/liquidity.proto"; option go_package = "github.com/comdex-official/comdex/x/liquidity/types"; option (gogoproto.goproto_getters_all) = false; + +message AppGenesisState { + uint64 app_id = 1; + + GenericParams generic_params = 2 [(gogoproto.nullable) = false]; + + uint64 last_pair_id = 3; + + uint64 last_pool_id = 4; + + repeated Pair pairs = 5 [(gogoproto.nullable) = false]; + + repeated Pool pools = 6 [(gogoproto.nullable) = false]; + + repeated DepositRequest deposit_requests = 7 [(gogoproto.nullable) = false]; + + repeated WithdrawRequest withdraw_requests = 8 [(gogoproto.nullable) = false]; + + repeated Order orders = 9 [(gogoproto.nullable) = false]; + + repeated ActiveFarmer active_farmers = 10 [(gogoproto.nullable) = false]; + + repeated QueuedFarmer queued_farmers = 11 [(gogoproto.nullable) = false]; +} + + // GenesisState defines the liquidity module's genesis state. message GenesisState { Params params = 1 [(gogoproto.nullable) = false]; + repeated AppGenesisState app_genesis_state = 2 [(gogoproto.nullable) = false]; } diff --git a/proto/comdex/liquidity/v1beta1/liquidity.proto b/proto/comdex/liquidity/v1beta1/liquidity.proto index 5ba7e893d..fa466b55d 100644 --- a/proto/comdex/liquidity/v1beta1/liquidity.proto +++ b/proto/comdex/liquidity/v1beta1/liquidity.proto @@ -213,31 +213,34 @@ enum AddressType { ADDRESS_TYPE_20_BYTES = 1 [(gogoproto.enumvalue_customname) = "AddressType20Bytes"]; } -// DATA COLLECTION FOR REWARD CALCULATIONS +// FARMING STRUCTURES - QUEUE AND ACTIVE -message DepositsMade { - repeated cosmos.base.v1beta1.Coin coins = 1 [ +message ActiveFarmer { + uint64 app_id = 1; + uint64 pool_id = 2; + string farmer = 3; + cosmos.base.v1beta1.Coin farmed_pool_coin = 4 [ (gogoproto.nullable) = false, (gogoproto.casttype) = "github.com/cosmos/cosmos-sdk/types.Coin" ]; } -message QueuedLiquidityProvider { - string address = 1; - repeated cosmos.base.v1beta1.Coin supply_provided = 2; - google.protobuf.Timestamp created_at = 3 [ + +message QueuedCoin { + cosmos.base.v1beta1.Coin farmed_pool_coin = 1 [ + (gogoproto.nullable) = false, + (gogoproto.casttype) = "github.com/cosmos/cosmos-sdk/types.Coin" + ]; + google.protobuf.Timestamp created_at = 2 [ (gogoproto.stdtime) = true, (gogoproto.nullable) = false, (gogoproto.moretags) = "yaml:\"created_at\"" ]; } -message PoolLiquidityProvidersData { - uint64 pool_id = 1; - repeated uint64 bonded_lock_ids = 2 [ - (gogoproto.moretags) = "yaml:\"bonded_lock_ids\"" - ]; - map liquidity_providers = 3; - repeated QueuedLiquidityProvider queued_liquidity_providers = 4; - uint64 app_id = 5; - } \ No newline at end of file +message QueuedFarmer { + uint64 app_id = 1; + uint64 pool_id = 2; + string farmer = 3; + repeated QueuedCoin queud_coins = 4; +} \ No newline at end of file diff --git a/proto/comdex/liquidity/v1beta1/query.proto b/proto/comdex/liquidity/v1beta1/query.proto index 04a814109..1810d0f78 100644 --- a/proto/comdex/liquidity/v1beta1/query.proto +++ b/proto/comdex/liquidity/v1beta1/query.proto @@ -211,11 +211,11 @@ message PoolResponse { uint64 app_id = 8; } -// QuerySoftLockRequest is request type for the Query/SoftLock RPC method. -message QuerySoftLockRequest { - uint64 pool_id = 1; - string depositor = 2; - uint64 app_id = 3; +// QueryFarmerRequest is request type for the Query/Farmer RPC method. +message QueryFarmerRequest { + uint64 app_id = 1; + uint64 pool_id = 2; + string farmer = 3; } message QueuedPoolCoin { @@ -231,8 +231,8 @@ message QueuedPoolCoin { } -// QuerySoftLockResponse is response type for the Query/SoftLock RPC method. -message QuerySoftLockResponse { +// QueryFarmerResponse is response type for the Query/Farmer RPC method. +message QueryFarmerResponse { cosmos.base.v1beta1.Coin active_pool_coin = 1 [ (gogoproto.castrepeated) = "github.com/cosmos/cosmos-sdk/types.Coin", (gogoproto.nullable) = false @@ -240,7 +240,6 @@ message QuerySoftLockResponse { repeated QueuedPoolCoin queued_pool_coin = 2 [ (gogoproto.nullable) = false ]; - } // QueryDeserializePoolCoinRequest is request type for the Query/DeserializePoolCoin RPC method. @@ -386,9 +385,9 @@ service Query { option (google.api.http).get = "/comdex/liquidity/v1beta1/orders/{app_id}/{orderer}"; } - // SoftLock returns deposited poolcoin for farming . - rpc SoftLock(QuerySoftLockRequest) returns (QuerySoftLockResponse) { - option (google.api.http).get = "/comdex/liquidity/v1beta1/softlock/{app_id}/{pool_id}/{depositor}"; + // Farmer returns deposited poolcoin for farming . + rpc Farmer(QueryFarmerRequest) returns (QueryFarmerResponse) { + option (google.api.http).get = "/comdex/liquidity/v1beta1/farmer/{app_id}/{pool_id}/{farmer}"; } // DeserializePoolCoin splits poolcoin into the actual provided pool assets . @@ -401,7 +400,7 @@ service Query { option (google.api.http).get = "/comdex/liquidity/v1beta1/pool_incentives/{app_id}"; } - // FarmedPoolCoin returns the total coin in the soft-lock. + // FarmedPoolCoin returns the total farmed pool coins. rpc FarmedPoolCoin(QueryFarmedPoolCoinRequest) returns (QueryFarmedPoolCoinResponse) { option (google.api.http).get = "/comdex/liquidity/v1beta1/farmed_coin/{app_id}/{pool_id}"; } diff --git a/proto/comdex/liquidity/v1beta1/tx.proto b/proto/comdex/liquidity/v1beta1/tx.proto index 1c7604dd8..7e9e1d1ff 100644 --- a/proto/comdex/liquidity/v1beta1/tx.proto +++ b/proto/comdex/liquidity/v1beta1/tx.proto @@ -35,11 +35,11 @@ service Msg { // CancelAllOrders defines a method for cancelling all orders rpc CancelAllOrders(MsgCancelAllOrders) returns (MsgCancelAllOrdersResponse); - // TokensSoftLock defines a method to soft lock the token, for incentivization - rpc TokensSoftLock(MsgTokensSoftLock) returns (MsgTokensSoftLockResponse); + // MsgFarm defines a method to farm the pool token, for incentivization + rpc Farm(MsgFarm) returns (MsgFarmResponse); - // TokensSoftUnlock defines a method to unlock the soft locked token, for incentivization - rpc TokensSoftUnlock(MsgTokensSoftUnlock) returns (MsgTokensSoftUnlockResponse); + // Unfarm defines a method to unfarm the farmed pool token + rpc Unfarm(MsgUnfarm) returns (MsgUnfarmResponse); } @@ -204,45 +204,32 @@ message MsgCancelAllOrders { // MsgCancelAllOrdersResponse defines the Msg/CancelAllOrders response type. message MsgCancelAllOrdersResponse {} - -// MsgTokensSoftLock defines a SDK message for soft locking coins (i.e without bonding) for incentivisation. -message MsgTokensSoftLock { - option (gogoproto.goproto_getters) = false; - - // depositor defines the bech32-encoded address of the farmer - string depositor = 1; +// MsgFarm defines a SDK message for farming coins (i.e without bonding) for incentivisation. +message MsgFarm { + uint64 app_id = 1; uint64 pool_id = 2; - - // soft_lock_coin specifies coins to stake - cosmos.base.v1beta1.Coin soft_lock_coin = 3 [ - (gogoproto.moretags) = "yaml:\"soft_lock_coin\"", + string farmer = 3; + cosmos.base.v1beta1.Coin farming_pool_coin = 4 [ + (gogoproto.moretags) = "yaml:\"farming_pool_coin\"", (gogoproto.casttype) = "github.com/cosmos/cosmos-sdk/types.Coin", (gogoproto.nullable) = false ]; - - uint64 app_id = 4; } -// MsgTokensSoftLockResponse defines the Msg/MsgTokensSoftLockResponse response type. -message MsgTokensSoftLockResponse {} +// MsgFarmResponse defines the Msg/MsgFarmResponse response type. +message MsgFarmResponse {} -// MsgTokensSoftUnlock defines a SDK message for performing unlocking of the soft locked coins -message MsgTokensSoftUnlock { - option (gogoproto.goproto_getters) = false; - - // depositor defines the bech32-encoded address of the farmer - string depositor = 1; +// MsgUnfarm defines a SDK message for performing unfarm of the farmed coins +message MsgUnfarm { + uint64 app_id = 1; uint64 pool_id = 2; - - // soft_unlock_coin specifies coins to stake - cosmos.base.v1beta1.Coin soft_unlock_coin = 3 [ - (gogoproto.moretags) = "yaml:\"soft_unlock_coin\"", + string farmer = 3; + cosmos.base.v1beta1.Coin unfarming_pool_coin = 4 [ + (gogoproto.moretags) = "yaml:\"unfarming_pool_coin\"", (gogoproto.casttype) = "github.com/cosmos/cosmos-sdk/types.Coin", (gogoproto.nullable) = false ]; - - uint64 app_id = 4; } -// MsgTokensSoftUnlockResponse defines the Msg/MsgTokensSoftUnlockResponse response type. -message MsgTokensSoftUnlockResponse {} \ No newline at end of file +// MsgUnfarmResponse defines the Msg/MsgUnfarmResponse response type. +message MsgUnfarmResponse {} \ No newline at end of file diff --git a/proto/comdex/locker/v1beta1/genesis.proto b/proto/comdex/locker/v1beta1/genesis.proto index 8333b5408..4b84c9d6d 100644 --- a/proto/comdex/locker/v1beta1/genesis.proto +++ b/proto/comdex/locker/v1beta1/genesis.proto @@ -2,6 +2,7 @@ syntax = "proto3"; package comdex.locker.v1beta1; import "gogoproto/gogo.proto"; +import "comdex/locker/v1beta1/locker.proto"; import "comdex/locker/v1beta1/params.proto"; option go_package = "github.com/comdex-official/comdex/x/locker/types"; @@ -9,10 +10,26 @@ option (gogoproto.equal_all) = false; option (gogoproto.goproto_getters_all) = false; message GenesisState { - // repeated Locker lockers = 1 [ - // (gogoproto.customname) = "Lockers", - // (gogoproto.moretags) = "yaml:\"lockers\"", - // (gogoproto.nullable) = false - // ]; - Params params = 1 [(gogoproto.nullable) = false]; + repeated Locker lockers = 1 [ + (gogoproto.customname) = "Lockers", + (gogoproto.moretags) = "yaml:\"lockers\"", + (gogoproto.nullable) = false + ]; + repeated LockerProductAssetMapping lockerProductAssetMapping = 2 [ + (gogoproto.moretags) = "yaml:\"lockerProductAssetMapping\"", + (gogoproto.nullable) = false + ]; + repeated LockerTotalRewardsByAssetAppWise lockerTotalRewardsByAssetAppWise = 3 [ + (gogoproto.moretags) = "yaml:\"lockerTotalRewardsByAssetAppWise\"", + (gogoproto.nullable) = false + ]; + repeated LockerLookupTable lockerLookupTable = 4 [ + (gogoproto.moretags) = "yaml:\"lockerLookupTable\"", + (gogoproto.nullable) = false + ]; + repeated UserLockerAssetMapping userLockerAssetMapping = 5 [ + (gogoproto.moretags) = "yaml:\"userLockerAssetMapping\"", + (gogoproto.nullable) = false + ]; + Params params = 6 [(gogoproto.nullable) = false]; } diff --git a/proto/comdex/locker/v1beta1/locker.proto b/proto/comdex/locker/v1beta1/locker.proto index 19af41e4d..04bb693f7 100644 --- a/proto/comdex/locker/v1beta1/locker.proto +++ b/proto/comdex/locker/v1beta1/locker.proto @@ -14,12 +14,7 @@ message Locker { ]; string depositor = 2 [ (gogoproto.moretags) = "yaml:\"depositor\"" - ]; - // string deposited_amount = 3 [ - // (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", - // (gogoproto.moretags) = "yaml:\"deposited_amount\"", - // (gogoproto.nullable) = false - // ]; + ]; string returns_accumulated = 3 [ (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", @@ -142,10 +137,3 @@ message LockerTotalRewardsByAssetAppWise { (gogoproto.customtype) = "github.com/cosmos/cosmos-sdk/types.Int", (gogoproto.nullable) = false]; } - -// message LockerStatistics { - -// map locked_assets = 2 [ -// (gogoproto.moretags) = "yaml:\"locked_assets\"" -// ]; -// } \ No newline at end of file diff --git a/proto/comdex/locker/v1beta1/tx.proto b/proto/comdex/locker/v1beta1/tx.proto index 5c27d92b4..b81780760 100644 --- a/proto/comdex/locker/v1beta1/tx.proto +++ b/proto/comdex/locker/v1beta1/tx.proto @@ -10,8 +10,6 @@ option (gogoproto.goproto_getters_all) = false; //For CLI Command & Proposals service Msg { - - rpc MsgAddWhiteListedAsset(MsgAddWhiteListedAssetRequest) returns (MsgAddWhiteListedAssetResponse); rpc MsgCreateLocker(MsgCreateLockerRequest) returns (MsgCreateLockerResponse); rpc MsgDepositAsset(MsgDepositAssetRequest) returns (MsgDepositAssetResponse); rpc MsgWithdrawAsset(MsgWithdrawAssetRequest) returns (MsgWithdrawAssetResponse); diff --git a/proto/comdex/market/v1beta1/gov.proto b/proto/comdex/market/v1beta1/gov.proto index 3c0d2b5e2..a0c85724d 100644 --- a/proto/comdex/market/v1beta1/gov.proto +++ b/proto/comdex/market/v1beta1/gov.proto @@ -7,8 +7,3 @@ option go_package = "github.com/comdex-official/comdex/x/market/types"; option (gogoproto.equal_all) = false; option (gogoproto.goproto_getters_all) = false; -message UpdateAdminProposal { - string title = 1 [ (gogoproto.moretags) = "yaml:\"title\"" ]; - string description = 2 [ (gogoproto.moretags) = "yaml:\"description\"" ]; - string address = 3 [ (gogoproto.moretags) = "yaml:\"address\"" ]; -} diff --git a/proto/comdex/market/v1beta1/tx.proto b/proto/comdex/market/v1beta1/tx.proto deleted file mode 100644 index da287374d..000000000 --- a/proto/comdex/market/v1beta1/tx.proto +++ /dev/null @@ -1,48 +0,0 @@ -syntax = "proto3"; -package comdex.market.v1beta1; - -import "gogoproto/gogo.proto"; - -option go_package = "github.com/comdex-official/comdex/x/market/types"; -option (gogoproto.equal_all) = false; -option (gogoproto.goproto_getters_all) = false; - -message MsgAddMarketRequest { - string from = 1 [ (gogoproto.moretags) = "yaml:\"from\"" ]; - string symbol = 2 [ (gogoproto.moretags) = "yaml:\"symbol\"" ]; - uint64 script_id = 3 [ - (gogoproto.customname) = "ScriptID", - (gogoproto.moretags) = "yaml:\"script_id\"" - ]; - uint64 id = 4; - uint64 rates = 5; -} - -message MsgAddMarketResponse {} - -message MsgUpdateMarketRequest { - string from = 1 [ (gogoproto.moretags) = "yaml:\"from\"" ]; - string symbol = 2 [ (gogoproto.moretags) = "yaml:\"symbol\"" ]; - uint64 script_id = 3 [ - (gogoproto.customname) = "ScriptID", - (gogoproto.moretags) = "yaml:\"script_id\"" - ]; - uint64 rates = 4; -} - -message MsgUpdateMarketResponse {} - -message MsgRemoveMarketForAssetRequest { - string from = 1 [ (gogoproto.moretags) = "yaml:\"from\"" ]; - uint64 id = 2; - string symbol = 3 [ (gogoproto.moretags) = "yaml:\"symbol\"" ]; -} - -message MsgRemoveMarketForAssetResponse {} - -service Msg { - rpc MsgAddMarket(MsgAddMarketRequest) returns (MsgAddMarketResponse); - rpc MsgUpdateMarket(MsgUpdateMarketRequest) returns (MsgUpdateMarketResponse); - rpc MsgRemoveMarketForAsset(MsgRemoveMarketForAssetRequest) - returns (MsgRemoveMarketForAssetResponse); -} diff --git a/proto/comdex/rewards/v1beta1/tx.proto b/proto/comdex/rewards/v1beta1/tx.proto index 295b72f5c..b78f33d66 100644 --- a/proto/comdex/rewards/v1beta1/tx.proto +++ b/proto/comdex/rewards/v1beta1/tx.proto @@ -11,10 +11,6 @@ option go_package = "github.com/comdex-official/comdex/x/rewards/types"; service Msg { rpc CreateGauge(MsgCreateGauge) returns (MsgCreateGaugeResponse); - rpc Whitelist(WhitelistAsset) returns (MsgWhitelistAssetResponse); - rpc RemoveWhitelist(RemoveWhitelistAsset) returns (MsgRemoveWhitelistAssetResponse); - rpc WhitelistAppVault(WhitelistAppIdVault) returns (MsgWhitelistAppIdVaultResponse); - rpc RemoveWhitelistAppVault(RemoveWhitelistAppIdVault) returns (MsgRemoveWhitelistAppIdVaultResponse); rpc ExternalRewardsLockers(ActivateExternalRewardsLockers) returns (ActivateExternalRewardsLockersResponse); rpc ExternalRewardsVault(ActivateExternalRewardsVault) returns (ActivateExternalRewardsVaultResponse); } diff --git a/proto/comdex/tokenmint/v1beta1/genesis.proto b/proto/comdex/tokenmint/v1beta1/genesis.proto index 14b1269c6..ec3bc6833 100644 --- a/proto/comdex/tokenmint/v1beta1/genesis.proto +++ b/proto/comdex/tokenmint/v1beta1/genesis.proto @@ -2,6 +2,7 @@ syntax = "proto3"; package comdex.tokenmint.v1beta1; import "gogoproto/gogo.proto"; +import "comdex/tokenmint/v1beta1/mint.proto"; import "comdex/tokenmint/v1beta1/params.proto"; // this line is used by starport scaffolding # genesis/proto/import @@ -9,6 +10,8 @@ option go_package = "github.com/comdex-official/comdex/x/tokenmint/types"; // GenesisState defines the tokenmint module's genesis state. message GenesisState { - Params params = 1 [(gogoproto.nullable) = false]; + repeated TokenMint tokenMint = 1 + [ (gogoproto.moretags) = "yaml:\"tokenMint\"", (gogoproto.nullable) = false ]; + Params params = 2 [(gogoproto.nullable) = false]; // this line is used by starport scaffolding # genesis/proto/state } diff --git a/proto/comdex/vault/v1beta1/genesis.proto b/proto/comdex/vault/v1beta1/genesis.proto index 1607e7b5c..0cd690326 100644 --- a/proto/comdex/vault/v1beta1/genesis.proto +++ b/proto/comdex/vault/v1beta1/genesis.proto @@ -14,4 +14,16 @@ message GenesisState { (gogoproto.moretags) = "yaml:\"vaults\"", (gogoproto.nullable) = false ]; + repeated StableMintVault stableMintVault = 2 [ + (gogoproto.moretags) = "yaml:\"stableMintVault\"", + (gogoproto.nullable) = false + ]; + repeated AppExtendedPairVaultMapping appExtendedPairVaultMapping = 3 [ + (gogoproto.moretags) = "yaml:\"appExtendedPairVaultMapping\"", + (gogoproto.nullable) = false + ]; + repeated UserVaultAssetMapping userVaultAssetMapping = 4 [ + (gogoproto.moretags) = "yaml:\"userVaultAssetMapping\"", + (gogoproto.nullable) = false + ]; } diff --git a/proto/comdex/vault/v1beta1/vault.proto b/proto/comdex/vault/v1beta1/vault.proto index 1d3ebb6df..b9d4802ee 100644 --- a/proto/comdex/vault/v1beta1/vault.proto +++ b/proto/comdex/vault/v1beta1/vault.proto @@ -151,14 +151,3 @@ message PairStatisticData { (gogoproto.customname) = "ExtendedPairVaultID", (gogoproto.moretags) = "yaml:\"extended_pair_vault_id\""]; } - - - - -//StableMintVault will use the Lookup table of the vault itself for consistency - - -// front end needs to know which all extended pairs have reached the the debt ceiling- write a query command. -//Collateral Locked ExtendedPair Vault Wise -//Collateral Locked Product Wise -//Collateral Locked Across all Projects \ No newline at end of file diff --git a/types/utils.go b/types/utils.go index 71fe8f6d8..901fc2a71 100644 --- a/types/utils.go +++ b/types/utils.go @@ -1,8 +1,12 @@ package types import ( + "errors" + "fmt" "math/big" "math/rand" + "runtime" + "runtime/debug" "strings" "time" @@ -30,9 +34,9 @@ func (m StrIntMap) AddOrSet(key string, value sdk.Int) { // DateRangesOverlap returns true if two date ranges overlap each other. // End time is exclusive and start time is inclusive. -func DateRangesOverlap(startTimeA, endTimeA, startTimeB, endTimeB time.Time) bool { - return startTimeA.Before(endTimeB) && endTimeA.After(startTimeB) -} +// func DateRangesOverlap(startTimeA, endTimeA, startTimeB, endTimeB time.Time) bool { +// return startTimeA.Before(endTimeB) && endTimeA.After(startTimeB) +// } // DateRangeIncludes returns true if the target date included on the start, end time range. // End time is exclusive and start time is inclusive. @@ -150,3 +154,42 @@ func IsOverflow(r interface{}) bool { } return false } + +// This function lets you run the function f. In case of panic recovery is done +// if error occurs it is logged into the logger. +// further modifications can me made to avoid any state changes in case if error is returned by f - +// eg, revert state change if error returned by f else work as normal +func ApplyFuncIfNoError(ctx sdk.Context, f func(ctx sdk.Context) error) (err error) { + // Add a panic safeguard + defer func() { + if recoveryError := recover(); recoveryError != nil { + PrintPanicRecoveryError(ctx, recoveryError) + err = errors.New("panic occurred during execution") + } + }() + err = f(ctx) + if err != nil { + ctx.Logger().Error(err.Error()) + } + return err +} + +// PrintPanicRecoveryError error logs the recoveryError, along with the stacktrace, if it can be parsed. +// If not emits them to stdout. +func PrintPanicRecoveryError(ctx sdk.Context, recoveryError interface{}) { + errStackTrace := string(debug.Stack()) + switch e := recoveryError.(type) { + case string: + ctx.Logger().Error("Recovering from (string) panic: " + e) + case runtime.Error: + ctx.Logger().Error("recovered (runtime.Error) panic: " + e.Error()) + case error: + ctx.Logger().Error("recovered (error) panic: " + e.Error()) + default: + ctx.Logger().Error("recovered (default) panic. Could not capture logs in ctx, see stdout") + fmt.Println("Recovering from panic ", recoveryError) + debug.PrintStack() + return + } + ctx.Logger().Error("stack trace: " + errStackTrace) +} diff --git a/types/utils_test.go b/types/utils_test.go index 21fcc95a3..f110576ad 100644 --- a/types/utils_test.go +++ b/types/utils_test.go @@ -122,8 +122,8 @@ func TestDateRangesOverlap(t *testing.T) { } for _, tc := range testCases { t.Run(tc.name, func(t *testing.T) { - require.Equal(t, tc.expectedResult, types.DateRangesOverlap(tc.startTimeA, tc.endTimeA, tc.startTimeB, tc.endTimeB)) - require.Equal(t, tc.expectedResult, types.DateRangesOverlap(tc.startTimeB, tc.endTimeB, tc.startTimeA, tc.endTimeA)) + //require.Equal(t, tc.expectedResult, types.DateRangesOverlap(tc.startTimeA, tc.endTimeA, tc.startTimeB, tc.endTimeB)) + //require.Equal(t, tc.expectedResult, types.DateRangesOverlap(tc.startTimeB, tc.endTimeB, tc.startTimeA, tc.endTimeA)) }) } } diff --git a/x/asset/abci.go b/x/asset/abci.go index 441c4c698..c3f2b8b11 100644 --- a/x/asset/abci.go +++ b/x/asset/abci.go @@ -1,9 +1,14 @@ package asset import ( + utils "github.com/comdex-official/comdex/types" "github.com/comdex-official/comdex/x/asset/keeper" sdk "github.com/cosmos/cosmos-sdk/types" abci "github.com/tendermint/tendermint/abci/types" ) -func BeginBlocker(ctx sdk.Context, _ abci.RequestBeginBlock, k keeper.Keeper) {} +func BeginBlocker(ctx sdk.Context, _ abci.RequestBeginBlock, k keeper.Keeper) { + _ = utils.ApplyFuncIfNoError(ctx, func(ctx sdk.Context) error { + return nil + }) +} diff --git a/x/asset/client/cli/tx.go b/x/asset/client/cli/tx.go index 230be3aec..062582006 100644 --- a/x/asset/client/cli/tx.go +++ b/x/asset/client/cli/tx.go @@ -24,13 +24,13 @@ func NewCmdSubmitAddAssetsProposal() *cobra.Command { Long: `Must provide path to a add assets in JSON file (--add-assets) describing the asset in app to be created Sample json content { - "name" :"ATOM,CMDX,CMST,OSMO,cATOM,cCMDX,cCMST,cOSMO,HARBOR", - "denom" :"uatom,ucmdx,ucmst,uosmo,ucatom,uccmdx,uccmst,ucosmo,uharbor", - "decimals" :"1000000,1000000,1000000,1000000,1000000,1000000,1000000,1000000,1000000", - "is_on_chain" :"0,0,0,0,0,0,0,0,1", - "asset_oracle_price" :"1,1,0,1,0,0,0,0,0", + "name" :"ATOM", + "denom" :"uatom", + "decimals" :"1000000", + "is_on_chain" :"0", + "asset_oracle_price" :"1", "title" :"Add assets for applications to be deployed on comdex testnet", - "description" :"This proposal it to add following assets ATOM,CMDX,CMST,OSMO,cATOM,cCMDX,cCMST,cOSMO,HARBOR to be then used on harbor, commodo and cswap apps", + "description" :"This proposal it to add following assets ATOM to be then used on harbor, commodo and cswap apps", "deposit" :"1000000000ucmdx" }`, RunE: func(cmd *cobra.Command, args []string) error { @@ -63,43 +63,33 @@ func NewCreateAssets(clientCtx client.Context, txf tx.Factory, fs *flag.FlagSet) return txf, nil, fmt.Errorf("failed to parse assetsMapping: %w", err) } - names, err := ParseStringFromString(assetsMapping.Name, ",") - if err != nil { - return txf, nil, err - } - denoms, err := ParseStringFromString(assetsMapping.Denom, ",") - if err != nil { - return txf, nil, err - } + names := assetsMapping.Name + + denoms := assetsMapping.Denom - decimals, err := ParseInt64SliceFromString(assetsMapping.Decimals, ",") + decimals, err := strconv.ParseInt(assetsMapping.Decimals, 10, 64) if err != nil { return txf, nil, err } - isOnChain, err := ParseStringFromString(assetsMapping.IsOnChain, ",") + isOnChain := ParseBoolFromString(assetsMapping.IsOnChain) if err != nil { return txf, nil, err } - assetOraclePrice, err := ParseStringFromString(assetsMapping.AssetOraclePrice, ",") + assetOraclePrice := ParseBoolFromString(assetsMapping.AssetOraclePrice) if err != nil { return txf, nil, err } from := clientCtx.GetFromAddress() - var assets []types.Asset - for i := range names { - newIsOnChain := ParseBoolFromString(isOnChain[i]) - newAssetOraclePrice := ParseBoolFromString(assetOraclePrice[i]) - assets = append(assets, types.Asset{ - Name: names[i], - Denom: denoms[i], - Decimals: decimals[i], - IsOnChain: newIsOnChain, - IsOraclePriceRequired: newAssetOraclePrice, - }) + assets := types.Asset{ + Name: names, + Denom: denoms, + Decimals: decimals, + IsOnChain: isOnChain, + IsOraclePriceRequired: assetOraclePrice, } deposit, err := sdk.ParseCoinsNormalized(assetsMapping.Deposit) @@ -218,22 +208,19 @@ func NewCmdSubmitAddPairsProposal() *cobra.Command { return err } - assetIn, err := ParseUint64SliceFromString(args[0], ",") + assetIn, err := strconv.ParseUint(args[0], 10, 64) if err != nil { return err } - assetOut, err := ParseUint64SliceFromString(args[1], ",") + assetOut, err := strconv.ParseUint(args[1], 10, 64) if err != nil { return err } - var pairs []types.Pair - for i := range assetIn { - pairs = append(pairs, types.Pair{ - AssetIn: assetIn[i], - AssetOut: assetOut[i], - }) + pairs := types.Pair{ + AssetIn: assetIn, + AssetOut: assetOut, } title, err := cmd.Flags().GetString(cli.FlagTitle) @@ -315,7 +302,7 @@ func NewCmdSubmitAddAppProposal() *cobra.Command { from := clientCtx.GetFromAddress() - var aMap []types.AppData + var aMap types.AppData var bMap []types.MintGenesisToken newMinGovDeposit, ok := sdk.NewIntFromString(minGovDeposit) @@ -325,13 +312,13 @@ func NewCmdSubmitAddAppProposal() *cobra.Command { if !ok { return types.ErrorInvalidMinGovSupply } - aMap = append(aMap, types.AppData{ + aMap = types.AppData{ Name: name, ShortName: shortName, MinGovDeposit: newMinGovDeposit, GovTimeInSeconds: govTimeIn.Seconds(), GenesisToken: bMap, - }) + } depositStr, err := cmd.Flags().GetString(cli.FlagDeposit) if err != nil { @@ -488,19 +475,18 @@ func NewCreateAssetInAppMsg(clientCtx client.Context, txf tx.Factory, fs *flag.F return txf, nil, err } - assetIDs, err := ParseUint64SliceFromString(assetMapping.AssetID, ",") + assetIDs, err := strconv.ParseUint(assetMapping.AssetID, 10, 64) if err != nil { return txf, nil, err } - genesisSupply, err := ParseStringFromString(assetMapping.GenesisSupply, ",") - if err != nil { - return txf, nil, err - } - isGovToken, err := ParseStringFromString(assetMapping.IsGovToken, ",") + + genesisSupply := assetMapping.GenesisSupply + + isGovToken := ParseBoolFromString(assetMapping.IsGovToken) if err != nil { return txf, nil, err } - recipient, err := ParseStringFromString(assetMapping.Recipient, ",") + recipient := assetMapping.Recipient if err != nil { return txf, nil, err } @@ -513,31 +499,28 @@ func NewCreateAssetInAppMsg(clientCtx client.Context, txf tx.Factory, fs *flag.F return txf, nil, types.ErrorProposalDescriptionMissing } - var aMap []types.AppData var bMap []types.MintGenesisToken - for i := range assetIDs { - newIsGovToken := ParseBoolFromString(isGovToken[i]) - newGenesisSupply, ok := sdk.NewIntFromString(genesisSupply[i]) - address, err := sdk.AccAddressFromBech32(recipient[i]) - if err != nil { - panic(err) - } - if !ok { - return txf, nil, types.ErrorInvalidGenesisSupply - } - var cmap types.MintGenesisToken - - cmap.AssetId = assetIDs[i] - cmap.GenesisSupply = &newGenesisSupply - cmap.IsGovToken = newIsGovToken - cmap.Recipient = address.String() - - bMap = append(bMap, cmap) + newGenesisSupply, ok := sdk.NewIntFromString(genesisSupply) + if !ok { + return txf, nil, types.ErrorInvalidGenesisSupply + } + address, err := sdk.AccAddressFromBech32(recipient) + if err != nil { + panic(err) } - aMap = append(aMap, types.AppData{ + var cmap types.MintGenesisToken + + cmap.AssetId = assetIDs + cmap.GenesisSupply = newGenesisSupply + cmap.IsGovToken = isGovToken + cmap.Recipient = address.String() + + bMap = append(bMap, cmap) + + aMap := types.AppData{ Id: appID, GenesisToken: bMap, - }) + } deposit, err := sdk.ParseCoinsNormalized(assetMapping.Deposit) if err != nil { diff --git a/x/asset/client/rest/tx.go b/x/asset/client/rest/tx.go index 05b615882..751d95de0 100644 --- a/x/asset/client/rest/tx.go +++ b/x/asset/client/rest/tx.go @@ -14,11 +14,11 @@ import ( ) type AddNewAssetsRequest struct { - BaseReq rest.BaseReq `json:"base_req" yaml:"base_req"` - Title string `json:"title" yaml:"title"` - Description string `json:"description" yaml:"description"` - Deposit sdk.Coins `json:"deposit" yaml:"deposit"` - Asset []types.Asset `json:"assets" yaml:"assets"` + BaseReq rest.BaseReq `json:"base_req" yaml:"base_req"` + Title string `json:"title" yaml:"title"` + Description string `json:"description" yaml:"description"` + Deposit sdk.Coins `json:"deposit" yaml:"deposit"` + Asset types.Asset `json:"assets" yaml:"assets"` } type UpdateNewAssetRequest struct{} diff --git a/x/asset/genesis.go b/x/asset/genesis.go index e53cdff3c..4ad6b4f09 100644 --- a/x/asset/genesis.go +++ b/x/asset/genesis.go @@ -9,8 +9,10 @@ import ( func InitGenesis(ctx sdk.Context, k keeper.Keeper, state *types.GenesisState) { var ( - assetID uint64 = 0 - pairID uint64 = 0 + assetID uint64 = 0 + pairID uint64 = 0 + appID uint64 = 0 + extendedPairID uint64 = 0 ) k.SetParams(ctx, state.Params) @@ -31,14 +33,36 @@ func InitGenesis(ctx sdk.Context, k keeper.Keeper, state *types.GenesisState) { k.SetPair(ctx, item) } + for _, item := range state.AppData { + if item.Id > appID { + appID = item.Id + } + + k.SetApp(ctx, item) + } + + for _, item := range state.ExtendedPairVault { + if item.Id > appID { + extendedPairID = item.Id + } + + k.SetPairsVault(ctx, item) + } + k.SetAssetID(ctx, assetID) k.SetPairID(ctx, pairID) + k.SetAppID(ctx, appID) + k.SetPairsVaultID(ctx, extendedPairID) } func ExportGenesis(ctx sdk.Context, k keeper.Keeper) *types.GenesisState { + apps, _ := k.GetApps(ctx) + pairVaults, _ := k.GetPairsVaults(ctx) return types.NewGenesisState( k.GetAssets(ctx), k.GetPairs(ctx), + apps, + pairVaults, k.GetParams(), ) } diff --git a/x/asset/keeper/app.go b/x/asset/keeper/app.go index 702214f98..9f03714e1 100644 --- a/x/asset/keeper/app.go +++ b/x/asset/keeper/app.go @@ -5,9 +5,10 @@ import ( protobuftypes "github.com/gogo/protobuf/types" "github.com/comdex-official/comdex/x/asset/types" + "regexp" ) -func (k *Keeper) GetAppID(ctx sdk.Context) uint64 { +func (k Keeper) GetAppID(ctx sdk.Context) uint64 { var ( store = k.Store(ctx) key = types.AppIDKey @@ -24,7 +25,7 @@ func (k *Keeper) GetAppID(ctx sdk.Context) uint64 { return id.GetValue() } -func (k *Keeper) SetAppID(ctx sdk.Context, id uint64) { +func (k Keeper) SetAppID(ctx sdk.Context, id uint64) { var ( store = k.Store(ctx) key = types.AppIDKey @@ -38,7 +39,7 @@ func (k *Keeper) SetAppID(ctx sdk.Context, id uint64) { store.Set(key, value) } -func (k *Keeper) SetApp(ctx sdk.Context, app types.AppData) { +func (k Keeper) SetApp(ctx sdk.Context, app types.AppData) { var ( store = k.Store(ctx) key = types.AppKey(app.Id) @@ -48,7 +49,7 @@ func (k *Keeper) SetApp(ctx sdk.Context, app types.AppData) { store.Set(key, value) } -func (k *Keeper) GetApp(ctx sdk.Context, id uint64) (app types.AppData, found bool) { +func (k Keeper) GetApp(ctx sdk.Context, id uint64) (app types.AppData, found bool) { var ( store = k.Store(ctx) key = types.AppKey(id) @@ -62,7 +63,7 @@ func (k *Keeper) GetApp(ctx sdk.Context, id uint64) (app types.AppData, found bo k.cdc.MustUnmarshal(value, &app) return app, true } -func (k *Keeper) GetAppWasmQuery(ctx sdk.Context, id uint64) (int64, int64, uint64, error) { +func (k Keeper) GetAppWasmQuery(ctx sdk.Context, id uint64) (int64, int64, uint64, error) { appData, _ := k.GetApp(ctx, id) minGovDeposit := appData.MinGovDeposit.Int64() var assetID uint64 @@ -76,7 +77,7 @@ func (k *Keeper) GetAppWasmQuery(ctx sdk.Context, id uint64) (int64, int64, uint return minGovDeposit, govTimeInSeconds, assetID, nil } -func (k *Keeper) GetApps(ctx sdk.Context) (apps []types.AppData, found bool) { +func (k Keeper) GetApps(ctx sdk.Context) (apps []types.AppData, found bool) { var ( store = k.Store(ctx) iter = sdk.KVStorePrefixIterator(store, types.AppKeyPrefix) @@ -101,7 +102,7 @@ func (k *Keeper) GetApps(ctx sdk.Context) (apps []types.AppData, found bool) { return apps, true } -func (k *Keeper) GetMintGenesisTokenData(ctx sdk.Context, appID, assetID uint64) (mintData types.MintGenesisToken, found bool) { +func (k Keeper) GetMintGenesisTokenData(ctx sdk.Context, appID, assetID uint64) (mintData types.MintGenesisToken, found bool) { appsData, _ := k.GetApp(ctx, appID) for _, data := range appsData.GenesisToken { @@ -112,7 +113,7 @@ func (k *Keeper) GetMintGenesisTokenData(ctx sdk.Context, appID, assetID uint64) return mintData, false } -func (k *Keeper) CheckIfAssetIsAddedToAppMapping(ctx sdk.Context, assetID uint64) bool { +func (k Keeper) CheckIfAssetIsAddedToAppMapping(ctx sdk.Context, assetID uint64) bool { apps, _ := k.GetApps(ctx) for _, data := range apps { for _, inData := range data.GenesisToken { @@ -124,7 +125,7 @@ func (k *Keeper) CheckIfAssetIsAddedToAppMapping(ctx sdk.Context, assetID uint64 return true } -func (k *Keeper) SetAppForShortName(ctx sdk.Context, shortName string, id uint64) { +func (k Keeper) SetAppForShortName(ctx sdk.Context, shortName string, id uint64) { var ( store = k.Store(ctx) key = types.AssetForShortNameKey(shortName) @@ -137,7 +138,7 @@ func (k *Keeper) SetAppForShortName(ctx sdk.Context, shortName string, id uint64 store.Set(key, value) } -func (k *Keeper) SetAppForName(ctx sdk.Context, Name string, id uint64) { +func (k Keeper) SetAppForName(ctx sdk.Context, Name string, id uint64) { var ( store = k.Store(ctx) key = types.AssetForNameKey(Name) @@ -151,7 +152,7 @@ func (k *Keeper) SetAppForName(ctx sdk.Context, Name string, id uint64) { store.Set(key, value) } -func (k *Keeper) HasAppForShortName(ctx sdk.Context, shortName string) bool { +func (k Keeper) HasAppForShortName(ctx sdk.Context, shortName string) bool { var ( store = k.Store(ctx) key = types.AssetForShortNameKey(shortName) @@ -160,7 +161,7 @@ func (k *Keeper) HasAppForShortName(ctx sdk.Context, shortName string) bool { return store.Has(key) } -func (k *Keeper) HasAppForName(ctx sdk.Context, Name string) bool { +func (k Keeper) HasAppForName(ctx sdk.Context, Name string) bool { var ( store = k.Store(ctx) key = types.AssetForNameKey(Name) @@ -169,7 +170,7 @@ func (k *Keeper) HasAppForName(ctx sdk.Context, Name string) bool { return store.Has(key) } -func (k *Keeper) SetGenesisTokenForApp(ctx sdk.Context, appID uint64, assetID uint64) { +func (k Keeper) SetGenesisTokenForApp(ctx sdk.Context, appID uint64, assetID uint64) { var ( store = k.Store(ctx) key = types.GenesisForApp(appID) @@ -183,7 +184,7 @@ func (k *Keeper) SetGenesisTokenForApp(ctx sdk.Context, appID uint64, assetID ui store.Set(key, value) } -func (k *Keeper) GetGenesisTokenForApp(ctx sdk.Context, appID uint64) uint64 { +func (k Keeper) GetGenesisTokenForApp(ctx sdk.Context, appID uint64) uint64 { var ( store = k.Store(ctx) key = types.GenesisForApp(appID) @@ -200,37 +201,48 @@ func (k *Keeper) GetGenesisTokenForApp(ctx sdk.Context, appID uint64) uint64 { return id.GetValue() } -func (k *Keeper) AddAppRecords(ctx sdk.Context, records ...types.AppData) error { - for _, msg := range records { - if k.HasAppForShortName(ctx, msg.ShortName) { - return types.ErrorDuplicateApp - } - if k.HasAppForName(ctx, msg.Name) { - return types.ErrorDuplicateApp - } +func (k Keeper) AddAppRecords(ctx sdk.Context, msg types.AppData) error { + if k.HasAppForShortName(ctx, msg.ShortName) { + return types.ErrorDuplicateApp + } + if k.HasAppForName(ctx, msg.Name) { + return types.ErrorDuplicateApp + } + var IsLetter = regexp.MustCompile(`^[a-z]+$`).MatchString - var ( - id = k.GetAppID(ctx) - app = types.AppData{ - Id: id + 1, - Name: msg.Name, - ShortName: msg.ShortName, - MinGovDeposit: msg.MinGovDeposit, - GovTimeInSeconds: msg.GovTimeInSeconds, - GenesisToken: msg.GenesisToken, - } - ) + if !IsLetter(msg.ShortName) || len(msg.ShortName) > 6 { + return types.ErrorShortNameDidNotMeetCriterion + } + + if !IsLetter(msg.Name) || len(msg.Name) > 10 { + return types.ErrorNameDidNotMeetCriterion + } - k.SetAppID(ctx, app.Id) - k.SetApp(ctx, app) - k.SetAppForShortName(ctx, app.ShortName, app.Id) - k.SetAppForName(ctx, app.Name, app.Id) + if msg.MinGovDeposit.LT(sdk.ZeroInt()) || msg.GovTimeInSeconds < 0 { + return types.ErrorValueCantBeNegative } + var ( + id = k.GetAppID(ctx) + app = types.AppData{ + Id: id + 1, + Name: msg.Name, + ShortName: msg.ShortName, + MinGovDeposit: msg.MinGovDeposit, + GovTimeInSeconds: msg.GovTimeInSeconds, + GenesisToken: msg.GenesisToken, + } + ) + + k.SetAppID(ctx, app.Id) + k.SetApp(ctx, app) + k.SetAppForShortName(ctx, app.ShortName, app.Id) + k.SetAppForName(ctx, app.Name, app.Id) + return nil } -func (k *Keeper) UpdateGovTimeInApp(ctx sdk.Context, msg types.AppAndGovTime) error { +func (k Keeper) UpdateGovTimeInApp(ctx sdk.Context, msg types.AppAndGovTime) error { appDetails, found := k.GetApp(ctx, msg.AppId) if !found { return types.ErrorAssetDoesNotExist @@ -241,51 +253,45 @@ func (k *Keeper) UpdateGovTimeInApp(ctx sdk.Context, msg types.AppAndGovTime) er return nil } -func (k *Keeper) AddAssetInAppRecords(ctx sdk.Context, records ...types.AppData) error { - for _, msg := range records { - appdata, found := k.GetApp(ctx, msg.Id) +func (k Keeper) AddAssetInAppRecords(ctx sdk.Context, msg types.AppData) error { + appdata, found := k.GetApp(ctx, msg.Id) + if !found { + return types.AppIdsDoesntExist + } + + for _, data := range msg.GenesisToken { + assetData, found := k.GetAsset(ctx, data.AssetId) if !found { - return types.AppIdsDoesntExist + return types.ErrorAssetDoesNotExist + } + if !assetData.IsOnChain { + return types.ErrorAssetIsOffChain + } + _, err := sdk.AccAddressFromBech32(data.Recipient) + if err != nil { + return types.ErrorInvalidFrom + } + if data.GenesisSupply.LT(sdk.ZeroInt()) { + return types.ErrorInvalidGenesisSupply + } + hasAsset := k.GetGenesisTokenForApp(ctx, msg.Id) + if hasAsset != 0 && data.IsGovToken { + return types.ErrorGenesisTokenExistForApp } - // var mintGenesis []types.MintGenesisToken - - for _, data := range msg.GenesisToken { - assetData, found := k.GetAsset(ctx, data.AssetId) - if !found { - return types.ErrorAssetDoesNotExist - } - if !assetData.IsOnChain { - return types.ErrorAssetIsOffChain - } - hasAsset := k.GetGenesisTokenForApp(ctx, msg.Id) - if hasAsset != 0 && data.IsGovToken { - return types.ErrorGenesisTokenExistForApp - } - if data.IsGovToken && appdata.MinGovDeposit.Equal(sdk.ZeroInt()) { - return types.ErrorMinGovDepositIsZero - } + if data.IsGovToken && appdata.MinGovDeposit.Equal(sdk.ZeroInt()) { + return types.ErrorMinGovDepositIsZero + } - checkFound := k.CheckIfAssetIsAddedToAppMapping(ctx, data.AssetId) - if !checkFound { - return types.ErrorAssetAlreadyExistingApp - } - if hasAsset == 0 && data.IsGovToken { - k.SetGenesisTokenForApp(ctx, msg.Id, data.AssetId) - } - appdata.GenesisToken = append(appdata.GenesisToken, data) + checkFound := k.CheckIfAssetIsAddedToAppMapping(ctx, data.AssetId) + if !checkFound { + return types.ErrorAssetAlreadyExistingApp } - var ( - app = types.AppData{ - Id: msg.Id, - Name: appdata.Name, - ShortName: appdata.ShortName, - MinGovDeposit: appdata.MinGovDeposit, - GovTimeInSeconds: appdata.GovTimeInSeconds, - GenesisToken: appdata.GenesisToken, - } - ) - k.SetApp(ctx, app) + if hasAsset == 0 && data.IsGovToken { + k.SetGenesisTokenForApp(ctx, msg.Id, data.AssetId) + } + appdata.GenesisToken = append(appdata.GenesisToken, data) } + k.SetApp(ctx, appdata) return nil } diff --git a/x/asset/keeper/asset.go b/x/asset/keeper/asset.go index eff9b17d8..35aa928b1 100644 --- a/x/asset/keeper/asset.go +++ b/x/asset/keeper/asset.go @@ -7,7 +7,7 @@ import ( "github.com/comdex-official/comdex/x/asset/types" ) -func (k *Keeper) SetAssetID(ctx sdk.Context, id uint64) { +func (k Keeper) SetAssetID(ctx sdk.Context, id uint64) { var ( store = k.Store(ctx) key = types.AssetIDKey @@ -21,7 +21,7 @@ func (k *Keeper) SetAssetID(ctx sdk.Context, id uint64) { store.Set(key, value) } -func (k *Keeper) GetAssetID(ctx sdk.Context) uint64 { +func (k Keeper) GetAssetID(ctx sdk.Context) uint64 { var ( store = k.Store(ctx) key = types.AssetIDKey @@ -38,7 +38,7 @@ func (k *Keeper) GetAssetID(ctx sdk.Context) uint64 { return id.GetValue() } -func (k *Keeper) SetAsset(ctx sdk.Context, asset types.Asset) { +func (k Keeper) SetAsset(ctx sdk.Context, asset types.Asset) { var ( store = k.Store(ctx) key = types.AssetKey(asset.Id) @@ -48,7 +48,7 @@ func (k *Keeper) SetAsset(ctx sdk.Context, asset types.Asset) { store.Set(key, value) } -func (k *Keeper) HasAsset(ctx sdk.Context, id uint64) bool { +func (k Keeper) HasAsset(ctx sdk.Context, id uint64) bool { var ( store = k.Store(ctx) key = types.AssetKey(id) @@ -57,7 +57,7 @@ func (k *Keeper) HasAsset(ctx sdk.Context, id uint64) bool { return store.Has(key) } -func (k *Keeper) GetAsset(ctx sdk.Context, id uint64) (asset types.Asset, found bool) { +func (k Keeper) GetAsset(ctx sdk.Context, id uint64) (asset types.Asset, found bool) { var ( store = k.Store(ctx) key = types.AssetKey(id) @@ -72,12 +72,12 @@ func (k *Keeper) GetAsset(ctx sdk.Context, id uint64) (asset types.Asset, found return asset, true } -func (k *Keeper) GetAssetDenom(ctx sdk.Context, id uint64) string { +func (k Keeper) GetAssetDenom(ctx sdk.Context, id uint64) string { asset, _ := k.GetAsset(ctx, id) return asset.Denom } -func (k *Keeper) GetAssets(ctx sdk.Context) (assets []types.Asset) { +func (k Keeper) GetAssets(ctx sdk.Context) (assets []types.Asset) { var ( store = k.Store(ctx) iter = sdk.KVStorePrefixIterator(store, types.AssetKeyPrefix) @@ -99,7 +99,7 @@ func (k *Keeper) GetAssets(ctx sdk.Context) (assets []types.Asset) { return assets } -func (k *Keeper) SetAssetForDenom(ctx sdk.Context, denom string, id uint64) { +func (k Keeper) SetAssetForDenom(ctx sdk.Context, denom string, id uint64) { var ( store = k.Store(ctx) key = types.AssetForDenomKey(denom) @@ -113,7 +113,7 @@ func (k *Keeper) SetAssetForDenom(ctx sdk.Context, denom string, id uint64) { store.Set(key, value) } -func (k *Keeper) HasAssetForDenom(ctx sdk.Context, denom string) bool { +func (k Keeper) HasAssetForDenom(ctx sdk.Context, denom string) bool { var ( store = k.Store(ctx) key = types.AssetForDenomKey(denom) @@ -122,7 +122,7 @@ func (k *Keeper) HasAssetForDenom(ctx sdk.Context, denom string) bool { return store.Has(key) } -func (k *Keeper) GetAssetForDenom(ctx sdk.Context, denom string) (asset types.Asset, found bool) { +func (k Keeper) GetAssetForDenom(ctx sdk.Context, denom string) (asset types.Asset, found bool) { var ( store = k.Store(ctx) key = types.AssetForDenomKey(denom) @@ -139,7 +139,7 @@ func (k *Keeper) GetAssetForDenom(ctx sdk.Context, denom string) (asset types.As return k.GetAsset(ctx, id.GetValue()) } -func (k *Keeper) DeleteAssetForDenom(ctx sdk.Context, denom string) { +func (k Keeper) DeleteAssetForDenom(ctx sdk.Context, denom string) { var ( store = k.Store(ctx) key = types.AssetForDenomKey(denom) @@ -148,7 +148,7 @@ func (k *Keeper) DeleteAssetForDenom(ctx sdk.Context, denom string) { store.Delete(key) } -func (k *Keeper) GetPriceForAsset(ctx sdk.Context, id uint64) (uint64, bool) { +func (k Keeper) GetPriceForAsset(ctx sdk.Context, id uint64) (uint64, bool) { market, found := k.oracle.GetMarketForAsset(ctx, id) if !found { return 0, false @@ -157,36 +157,34 @@ func (k *Keeper) GetPriceForAsset(ctx sdk.Context, id uint64) (uint64, bool) { return k.oracle.GetPriceForMarket(ctx, market.Symbol) } -func (k *Keeper) AddAssetRecords(ctx sdk.Context, records ...types.Asset) error { - for _, msg := range records { - if k.HasAssetForDenom(ctx, msg.Denom) { - return types.ErrorDuplicateAsset - } - - var ( - id = k.GetAssetID(ctx) - asset = types.Asset{ - Id: id + 1, - Name: msg.Name, - Denom: msg.Denom, - Decimals: msg.Decimals, - IsOnChain: msg.IsOnChain, - IsOraclePriceRequired: msg.IsOraclePriceRequired, - } - ) +func (k Keeper) AddAssetRecords(ctx sdk.Context, msg types.Asset) error { + if k.HasAssetForDenom(ctx, msg.Denom) { + return types.ErrorDuplicateAsset + } - k.SetAssetID(ctx, asset.Id) - k.SetAsset(ctx, asset) - k.SetAssetForDenom(ctx, asset.Denom, asset.Id) - if msg.IsOraclePriceRequired { - k.SetAssetForOracle(ctx, asset) + var ( + id = k.GetAssetID(ctx) + asset = types.Asset{ + Id: id + 1, + Name: msg.Name, + Denom: msg.Denom, + Decimals: msg.Decimals, + IsOnChain: msg.IsOnChain, + IsOraclePriceRequired: msg.IsOraclePriceRequired, } + ) + + k.SetAssetID(ctx, asset.Id) + k.SetAsset(ctx, asset) + k.SetAssetForDenom(ctx, asset.Denom, asset.Id) + if msg.IsOraclePriceRequired { + k.SetAssetForOracle(ctx, asset) } return nil } -func (k *Keeper) UpdateAssetRecords(ctx sdk.Context, msg types.Asset) error { +func (k Keeper) UpdateAssetRecords(ctx sdk.Context, msg types.Asset) error { asset, found := k.GetAsset(ctx, msg.Id) if !found { return types.ErrorAssetDoesNotExist @@ -200,9 +198,8 @@ func (k *Keeper) UpdateAssetRecords(ctx sdk.Context, msg types.Asset) error { return types.ErrorDuplicateAsset } - asset.Denom = msg.Denom - k.DeleteAssetForDenom(ctx, asset.Denom) + asset.Denom = msg.Denom k.SetAssetForDenom(ctx, asset.Denom, asset.Id) } if msg.Decimals >= 0 { @@ -213,40 +210,41 @@ func (k *Keeper) UpdateAssetRecords(ctx sdk.Context, msg types.Asset) error { return nil } -func (k *Keeper) AddPairsRecords(ctx sdk.Context, records ...types.Pair) error { - for _, msg := range records { - if !k.HasAsset(ctx, msg.AssetIn) { - return types.ErrorAssetDoesNotExist - } - if !k.HasAsset(ctx, msg.AssetOut) { - return types.ErrorAssetDoesNotExist - } - if msg.AssetIn == msg.AssetOut { - return types.ErrorDuplicateAsset +func (k Keeper) AddPairsRecords(ctx sdk.Context, msg types.Pair) error { + if !k.HasAsset(ctx, msg.AssetIn) { + return types.ErrorAssetDoesNotExist + } + if !k.HasAsset(ctx, msg.AssetOut) { + return types.ErrorAssetDoesNotExist + } + if msg.AssetIn == msg.AssetOut { + return types.ErrorDuplicateAsset + } + pairs := k.GetPairs(ctx) + for _, data := range pairs { + if data.AssetIn == msg.AssetIn && data.AssetOut == msg.AssetOut { + return types.ErrorDuplicatePair + } else if (data.AssetIn == msg.AssetOut) && (data.AssetOut == msg.AssetIn) { + return types.ErrorReversePairAlreadyExist } - pairs := k.GetPairs(ctx) - for _, data := range pairs { - if data.AssetIn == msg.AssetIn && data.AssetOut == msg.AssetOut { - return types.ErrorDuplicatePair - } + } + + var ( + id = k.GetPairID(ctx) + pair = types.Pair{ + Id: id + 1, + AssetIn: msg.AssetIn, + AssetOut: msg.AssetOut, } + ) - var ( - id = k.GetPairID(ctx) - pair = types.Pair{ - Id: id + 1, - AssetIn: msg.AssetIn, - AssetOut: msg.AssetOut, - } - ) + k.SetPairID(ctx, pair.Id) + k.SetPair(ctx, pair) - k.SetPairID(ctx, pair.Id) - k.SetPair(ctx, pair) - } return nil } -func (k *Keeper) SetAssetForOracle(ctx sdk.Context, asset types.Asset) { +func (k Keeper) SetAssetForOracle(ctx sdk.Context, asset types.Asset) { var ( store = k.Store(ctx) key = types.AssetForOracleKey(asset.Id) @@ -256,7 +254,7 @@ func (k *Keeper) SetAssetForOracle(ctx sdk.Context, asset types.Asset) { store.Set(key, value) } -func (k *Keeper) GetAssetsForOracle(ctx sdk.Context) (assets []types.Asset) { +func (k Keeper) GetAssetsForOracle(ctx sdk.Context) (assets []types.Asset) { var ( store = k.Store(ctx) iter = sdk.KVStorePrefixIterator(store, types.AssetForOracleKeyPrefix) diff --git a/x/asset/keeper/asset_test.go b/x/asset/keeper/asset_test.go index 7496ede52..df050461d 100644 --- a/x/asset/keeper/asset_test.go +++ b/x/asset/keeper/asset_test.go @@ -37,13 +37,13 @@ func (s *KeeperTestSuite) TestAddApp() { GenesisToken: []assetTypes.MintGenesisToken{ { 3, - &genesisSupply, + genesisSupply, true, userAddress1, }, { 2, - &genesisSupply, + genesisSupply, true, userAddress1, }, @@ -62,7 +62,7 @@ func (s *KeeperTestSuite) TestAddApp() { GenesisToken: []assetTypes.MintGenesisToken{ { 3, - &genesisSupply, + genesisSupply, true, userAddress1, }, @@ -81,7 +81,7 @@ func (s *KeeperTestSuite) TestAddApp() { GenesisToken: []assetTypes.MintGenesisToken{ { 3, - &genesisSupply, + genesisSupply, true, userAddress1, }, @@ -94,13 +94,13 @@ func (s *KeeperTestSuite) TestAddApp() { "Add App commodo commodo", assetTypes.AppData{ Name: "commodo", - ShortName: "commodo", + ShortName: "comdo", MinGovDeposit: sdk.NewIntFromUint64(10000000), GovTimeInSeconds: 900, GenesisToken: []assetTypes.MintGenesisToken{ { 3, - &genesisSupply, + genesisSupply, true, userAddress1, }, @@ -368,17 +368,7 @@ func (s *KeeperTestSuite) TestAddPair() { true, 1, }, - {"Add Pair 2 : cmst cmdx", - assetTypes.Pair{ - AssetIn: 2, - AssetOut: 1, - }, - "ucmst", - "ucmdx", - false, - 2, - }, - {"Add Pair 3 : cmst harbor", + {"Add Pair 2 : cmst harbor", assetTypes.Pair{ AssetIn: 2, AssetOut: 3, @@ -386,7 +376,7 @@ func (s *KeeperTestSuite) TestAddPair() { "ucmst", "uharbor", false, - 3, + 2, }, } { s.Run(tc.name, func() { @@ -623,7 +613,7 @@ func (s *KeeperTestSuite) TestQueryPairsAndExtendedPairVaults() { server := keeper.NewQueryServer(*assetKeeper) res, err := server.QueryPairs(sdk.WrapSDKContext(*ctx), &assetTypes.QueryPairsRequest{}) s.Require().NoError(err) - s.Require().Equal(len(res.PairsInfo), 3) + s.Require().Equal(len(res.PairsInfo), 2) } func (s *KeeperTestSuite) TestQueryExtendedPairVaults() { @@ -660,7 +650,7 @@ func (s *KeeperTestSuite) TestAddAssetInAppRecords() { GenesisToken: []assetTypes.MintGenesisToken{ { 4, - &genesisSupply, + genesisSupply, true, userAddress1, }, @@ -675,13 +665,13 @@ func (s *KeeperTestSuite) TestAddAssetInAppRecords() { assetTypes.AppData{ Id: 2, Name: "commodo", - ShortName: "commodo", + ShortName: "comdo", MinGovDeposit: sdk.NewIntFromUint64(10000000), GovTimeInSeconds: 900, GenesisToken: []assetTypes.MintGenesisToken{ { 2, - &genesisSupply, + genesisSupply, true, userAddress1, }, @@ -696,13 +686,13 @@ func (s *KeeperTestSuite) TestAddAssetInAppRecords() { assetTypes.AppData{ Id: 2, Name: "commodo", - ShortName: "commodo", + ShortName: "comdo", MinGovDeposit: sdk.NewIntFromUint64(10000000), GovTimeInSeconds: 900, GenesisToken: []assetTypes.MintGenesisToken{ { 4, - &genesisSupply, + genesisSupply, true, userAddress1, }, diff --git a/x/asset/keeper/gov.go b/x/asset/keeper/gov.go index 6ce070715..89a629508 100644 --- a/x/asset/keeper/gov.go +++ b/x/asset/keeper/gov.go @@ -6,7 +6,7 @@ import ( ) func (k Keeper) HandleProposalAddAsset(ctx sdk.Context, p *types.AddAssetsProposal) error { - return k.AddAssetRecords(ctx, p.Assets...) + return k.AddAssetRecords(ctx, p.Assets) } func (k Keeper) HandleProposalUpdateAsset(ctx sdk.Context, p *types.UpdateAssetProposal) error { @@ -14,7 +14,7 @@ func (k Keeper) HandleProposalUpdateAsset(ctx sdk.Context, p *types.UpdateAssetP } func (k Keeper) HandleProposalAddPairs(ctx sdk.Context, p *types.AddPairsProposal) error { - return k.AddPairsRecords(ctx, p.Pairs...) + return k.AddPairsRecords(ctx, p.Pairs) } func (k Keeper) HandleUpdateGovTimeInApp(ctx sdk.Context, p *types.UpdateGovTimeInAppProposal) error { @@ -22,9 +22,9 @@ func (k Keeper) HandleUpdateGovTimeInApp(ctx sdk.Context, p *types.UpdateGovTime } func (k Keeper) HandleAddAppRecords(ctx sdk.Context, p *types.AddAppProposal) error { - return k.AddAppRecords(ctx, p.App...) + return k.AddAppRecords(ctx, p.App) } func (k Keeper) HandleAddAssetInAppRecords(ctx sdk.Context, p *types.AddAssetInAppProposal) error { - return k.AddAssetInAppRecords(ctx, p.App...) + return k.AddAssetInAppRecords(ctx, p.App) } diff --git a/x/asset/keeper/keeper.go b/x/asset/keeper/keeper.go index 190d81d3b..2deeea344 100644 --- a/x/asset/keeper/keeper.go +++ b/x/asset/keeper/keeper.go @@ -29,6 +29,6 @@ func NewKeeper(cdc codec.BinaryCodec, key sdk.StoreKey, params paramstypes.Subsp } } -func (k *Keeper) Store(ctx sdk.Context) sdk.KVStore { +func (k Keeper) Store(ctx sdk.Context) sdk.KVStore { return ctx.KVStore(k.key) } diff --git a/x/asset/keeper/pair.go b/x/asset/keeper/pair.go index 182884984..866ea88b0 100644 --- a/x/asset/keeper/pair.go +++ b/x/asset/keeper/pair.go @@ -7,7 +7,7 @@ import ( "github.com/comdex-official/comdex/x/asset/types" ) -func (k *Keeper) SetPairID(ctx sdk.Context, id uint64) { +func (k Keeper) SetPairID(ctx sdk.Context, id uint64) { var ( store = k.Store(ctx) key = types.PairIDKey @@ -21,7 +21,7 @@ func (k *Keeper) SetPairID(ctx sdk.Context, id uint64) { store.Set(key, value) } -func (k *Keeper) GetPairID(ctx sdk.Context) uint64 { +func (k Keeper) GetPairID(ctx sdk.Context) uint64 { var ( store = k.Store(ctx) key = types.PairIDKey @@ -38,7 +38,7 @@ func (k *Keeper) GetPairID(ctx sdk.Context) uint64 { return count.GetValue() } -func (k *Keeper) SetPair(ctx sdk.Context, pair types.Pair) { +func (k Keeper) SetPair(ctx sdk.Context, pair types.Pair) { var ( store = k.Store(ctx) key = types.PairKey(pair.Id) @@ -48,7 +48,7 @@ func (k *Keeper) SetPair(ctx sdk.Context, pair types.Pair) { store.Set(key, value) } -func (k *Keeper) GetPair(ctx sdk.Context, id uint64) (pair types.Pair, found bool) { +func (k Keeper) GetPair(ctx sdk.Context, id uint64) (pair types.Pair, found bool) { var ( store = k.Store(ctx) key = types.PairKey(id) @@ -63,7 +63,7 @@ func (k *Keeper) GetPair(ctx sdk.Context, id uint64) (pair types.Pair, found boo return pair, true } -func (k *Keeper) GetPairs(ctx sdk.Context) (pairs []types.Pair) { +func (k Keeper) GetPairs(ctx sdk.Context) (pairs []types.Pair) { var ( store = k.Store(ctx) iter = sdk.KVStorePrefixIterator(store, types.PairKeyPrefix) @@ -85,7 +85,7 @@ func (k *Keeper) GetPairs(ctx sdk.Context) (pairs []types.Pair) { return pairs } -func (k *Keeper) NewAddPair(ctx sdk.Context, msg *types.MsgAddPairRequest) (*types.MsgAddPairResponse, error) { +func (k Keeper) NewAddPair(ctx sdk.Context, msg *types.MsgAddPairRequest) (*types.MsgAddPairResponse, error) { if !k.HasAsset(ctx, msg.AssetIn) { return nil, types.ErrorAssetDoesNotExist } diff --git a/x/asset/keeper/pairs_vault.go b/x/asset/keeper/pairs_vault.go index b71dab355..e49c6450a 100644 --- a/x/asset/keeper/pairs_vault.go +++ b/x/asset/keeper/pairs_vault.go @@ -8,7 +8,7 @@ import ( "github.com/comdex-official/comdex/x/asset/types" ) -func (k *Keeper) GetPairsVaultID(ctx sdk.Context) uint64 { +func (k Keeper) GetPairsVaultID(ctx sdk.Context) uint64 { var ( store = k.Store(ctx) key = types.PairsVaultIDKey @@ -25,7 +25,7 @@ func (k *Keeper) GetPairsVaultID(ctx sdk.Context) uint64 { return id.GetValue() } -func (k *Keeper) SetPairsVaultID(ctx sdk.Context, id uint64) { +func (k Keeper) SetPairsVaultID(ctx sdk.Context, id uint64) { var ( store = k.Store(ctx) key = types.PairsVaultIDKey @@ -39,7 +39,7 @@ func (k *Keeper) SetPairsVaultID(ctx sdk.Context, id uint64) { store.Set(key, value) } -func (k *Keeper) SetPairsVault(ctx sdk.Context, app types.ExtendedPairVault) { +func (k Keeper) SetPairsVault(ctx sdk.Context, app types.ExtendedPairVault) { var ( store = k.Store(ctx) key = types.PairsKey(app.Id) @@ -49,7 +49,7 @@ func (k *Keeper) SetPairsVault(ctx sdk.Context, app types.ExtendedPairVault) { store.Set(key, value) } -func (k *Keeper) GetPairsVault(ctx sdk.Context, id uint64) (pairs types.ExtendedPairVault, found bool) { +func (k Keeper) GetPairsVault(ctx sdk.Context, id uint64) (pairs types.ExtendedPairVault, found bool) { var ( store = k.Store(ctx) key = types.PairsKey(id) @@ -64,7 +64,7 @@ func (k *Keeper) GetPairsVault(ctx sdk.Context, id uint64) (pairs types.Extended return pairs, true } -func (k *Keeper) GetPairsVaults(ctx sdk.Context) (apps []types.ExtendedPairVault, found bool) { +func (k Keeper) GetPairsVaults(ctx sdk.Context) (apps []types.ExtendedPairVault, found bool) { var ( store = k.Store(ctx) iter = sdk.KVStorePrefixIterator(store, types.PairsVaultKeyPrefix) @@ -89,7 +89,7 @@ func (k *Keeper) GetPairsVaults(ctx sdk.Context) (apps []types.ExtendedPairVault return apps, true } -func (k *Keeper) WasmAddExtendedPairsVaultRecords(ctx sdk.Context, pairVaultBinding *bindings.MsgAddExtendedPairsVault) error { +func (k Keeper) WasmAddExtendedPairsVaultRecords(ctx sdk.Context, pairVaultBinding *bindings.MsgAddExtendedPairsVault) error { DebtCeiling := sdk.NewInt(int64(pairVaultBinding.DebtCeiling)) DebtFloor := sdk.NewInt(int64(pairVaultBinding.DebtFloor)) @@ -150,7 +150,7 @@ func (k *Keeper) WasmAddExtendedPairsVaultRecords(ctx sdk.Context, pairVaultBind return nil } -func (k *Keeper) WasmAddExtendedPairsVaultRecordsQuery(ctx sdk.Context, appID, pairID uint64, StabilityFee, ClosingFee, DrawDownFee sdk.Dec, debtCeiling, debtFloor uint64, PairName string) (bool, string) { +func (k Keeper) WasmAddExtendedPairsVaultRecordsQuery(ctx sdk.Context, appID, pairID uint64, StabilityFee, ClosingFee, DrawDownFee sdk.Dec, debtCeiling, debtFloor uint64, PairName string) (bool, string) { DebtCeiling := sdk.NewInt(int64(debtCeiling)) DebtFloor := sdk.NewInt(int64(debtFloor)) @@ -187,7 +187,7 @@ func (k *Keeper) WasmAddExtendedPairsVaultRecordsQuery(ctx sdk.Context, appID, p return true, "" } -func (k *Keeper) WasmUpdatePairsVault(ctx sdk.Context, updatePairVault *bindings.MsgUpdatePairsVault) error { +func (k Keeper) WasmUpdatePairsVault(ctx sdk.Context, updatePairVault *bindings.MsgUpdatePairsVault) error { var ExtPairVaultData types.ExtendedPairVault pairVaults, found := k.GetPairsVaults(ctx) if !found { @@ -224,7 +224,7 @@ func (k *Keeper) WasmUpdatePairsVault(ctx sdk.Context, updatePairVault *bindings return nil } -func (k *Keeper) WasmUpdatePairsVaultQuery(ctx sdk.Context, appID, exPairID uint64) (bool, string) { +func (k Keeper) WasmUpdatePairsVaultQuery(ctx sdk.Context, appID, exPairID uint64) (bool, string) { pairVaults, found := k.GetPairsVaults(ctx) if !found { return false, types.ErrorPairDoesNotExist.Error() diff --git a/x/asset/keeper/params.go b/x/asset/keeper/params.go index 74a52f11b..0697872ce 100644 --- a/x/asset/keeper/params.go +++ b/x/asset/keeper/params.go @@ -6,10 +6,10 @@ import ( "github.com/comdex-official/comdex/x/asset/types" ) -func (k *Keeper) SetParams(ctx sdk.Context, params types.Params) { +func (k Keeper) SetParams(ctx sdk.Context, params types.Params) { k.params.SetParamSet(ctx, ¶ms) } -func (k *Keeper) GetParams() types.Params { +func (k Keeper) GetParams() types.Params { return types.NewParams() } diff --git a/x/asset/keeper/query_server.go b/x/asset/keeper/query_server.go index 5c6258720..dd7b413b9 100644 --- a/x/asset/keeper/query_server.go +++ b/x/asset/keeper/query_server.go @@ -13,7 +13,7 @@ import ( ) var ( - _ types.QueryServer = (*QueryServer)(nil) + _ types.QueryServer = QueryServer{} ) type QueryServer struct { @@ -26,7 +26,7 @@ func NewQueryServer(k Keeper) types.QueryServer { } } -func (q *QueryServer) QueryAssets(c context.Context, req *types.QueryAssetsRequest) (*types.QueryAssetsResponse, error) { +func (q QueryServer) QueryAssets(c context.Context, req *types.QueryAssetsRequest) (*types.QueryAssetsResponse, error) { if req == nil { return nil, status.Error(codes.InvalidArgument, "request cannot be empty") } @@ -63,7 +63,7 @@ func (q *QueryServer) QueryAssets(c context.Context, req *types.QueryAssetsReque }, nil } -func (q *QueryServer) QueryAsset(c context.Context, req *types.QueryAssetRequest) (*types.QueryAssetResponse, error) { +func (q QueryServer) QueryAsset(c context.Context, req *types.QueryAssetRequest) (*types.QueryAssetResponse, error) { if req == nil { return nil, status.Error(codes.InvalidArgument, "request cannot be empty") } @@ -82,7 +82,7 @@ func (q *QueryServer) QueryAsset(c context.Context, req *types.QueryAssetRequest }, nil } -func (q *QueryServer) QueryPairs(c context.Context, req *types.QueryPairsRequest) (*types.QueryPairsResponse, error) { +func (q QueryServer) QueryPairs(c context.Context, req *types.QueryPairsRequest) (*types.QueryPairsResponse, error) { if req == nil { return nil, status.Error(codes.InvalidArgument, "request cannot be empty") } @@ -137,7 +137,7 @@ func (q *QueryServer) QueryPairs(c context.Context, req *types.QueryPairsRequest }, nil } -func (q *QueryServer) QueryPair(c context.Context, req *types.QueryPairRequest) (*types.QueryPairResponse, error) { +func (q QueryServer) QueryPair(c context.Context, req *types.QueryPairRequest) (*types.QueryPairResponse, error) { if req == nil { return nil, status.Error(codes.InvalidArgument, "request cannot be empty") } @@ -172,7 +172,7 @@ func (q *QueryServer) QueryPair(c context.Context, req *types.QueryPairRequest) }, nil } -func (q *QueryServer) QueryApps(c context.Context, _ *types.QueryAppsRequest) (*types.QueryAppsResponse, error) { +func (q QueryServer) QueryApps(c context.Context, _ *types.QueryAppsRequest) (*types.QueryAppsResponse, error) { var ( ctx = sdk.UnwrapSDKContext(c) apps, found = q.GetApps(ctx) @@ -186,7 +186,7 @@ func (q *QueryServer) QueryApps(c context.Context, _ *types.QueryAppsRequest) (* }, nil } -func (q *QueryServer) QueryApp(c context.Context, req *types.QueryAppRequest) (*types.QueryAppResponse, error) { +func (q QueryServer) QueryApp(c context.Context, req *types.QueryAppRequest) (*types.QueryAppResponse, error) { var ( ctx = sdk.UnwrapSDKContext(c) app, found = q.GetApp(ctx, req.Id) @@ -200,7 +200,7 @@ func (q *QueryServer) QueryApp(c context.Context, req *types.QueryAppRequest) (* }, nil } -func (q *QueryServer) QueryExtendedPairVault(c context.Context, req *types.QueryExtendedPairVaultRequest) (*types.QueryExtendedPairVaultResponse, error) { +func (q QueryServer) QueryExtendedPairVault(c context.Context, req *types.QueryExtendedPairVaultRequest) (*types.QueryExtendedPairVaultResponse, error) { var ( ctx = sdk.UnwrapSDKContext(c) pair, found = q.GetPairsVault(ctx, req.Id) @@ -214,7 +214,7 @@ func (q *QueryServer) QueryExtendedPairVault(c context.Context, req *types.Query }, nil } -func (q *QueryServer) QueryAllExtendedPairVaults(c context.Context, _ *types.QueryAllExtendedPairVaultsRequest) (*types.QueryAllExtendedPairVaultsResponse, error) { +func (q QueryServer) QueryAllExtendedPairVaults(c context.Context, _ *types.QueryAllExtendedPairVaultsRequest) (*types.QueryAllExtendedPairVaultsResponse, error) { var ( ctx = sdk.UnwrapSDKContext(c) pairVaults, found = q.GetPairsVaults(ctx) @@ -228,7 +228,7 @@ func (q *QueryServer) QueryAllExtendedPairVaults(c context.Context, _ *types.Que }, nil } -func (q *QueryServer) QueryAllExtendedPairVaultsByApp(c context.Context, req *types.QueryAllExtendedPairVaultsByAppRequest) (*types.QueryAllExtendedPairVaultsByAppResponse, error) { +func (q QueryServer) QueryAllExtendedPairVaultsByApp(c context.Context, req *types.QueryAllExtendedPairVaultsByAppRequest) (*types.QueryAllExtendedPairVaultsByAppResponse, error) { var ( ctx = sdk.UnwrapSDKContext(c) pairVaults, found = q.GetPairsVaults(ctx) @@ -248,7 +248,7 @@ func (q *QueryServer) QueryAllExtendedPairVaultsByApp(c context.Context, req *ty }, nil } -func (q *QueryServer) QueryAllExtendedPairStableVaultsIDByApp(c context.Context, req *types.QueryAllExtendedPairStableVaultsIDByAppRequest) (*types.QueryAllExtendedPairStableVaultsIDByAppResponse, error) { +func (q QueryServer) QueryAllExtendedPairStableVaultsIDByApp(c context.Context, req *types.QueryAllExtendedPairStableVaultsIDByAppRequest) (*types.QueryAllExtendedPairStableVaultsIDByAppResponse, error) { var ( ctx = sdk.UnwrapSDKContext(c) pairVaults, found = q.GetPairsVaults(ctx) @@ -268,7 +268,7 @@ func (q *QueryServer) QueryAllExtendedPairStableVaultsIDByApp(c context.Context, }, nil } -func (q *QueryServer) QueryGovTokenByApp(c context.Context, req *types.QueryGovTokenByAppRequest) (*types.QueryGovTokenByAppResponse, error) { +func (q QueryServer) QueryGovTokenByApp(c context.Context, req *types.QueryGovTokenByAppRequest) (*types.QueryGovTokenByAppResponse, error) { var ( ctx = sdk.UnwrapSDKContext(c) assetID uint64 @@ -288,7 +288,7 @@ func (q *QueryServer) QueryGovTokenByApp(c context.Context, req *types.QueryGovT }, nil } -func (q *QueryServer) QueryAllExtendedPairStableVaultsByApp(c context.Context, req *types.QueryAllExtendedPairStableVaultsByAppRequest) (*types.QueryAllExtendedPairStableVaultsByAppResponse, error) { +func (q QueryServer) QueryAllExtendedPairStableVaultsByApp(c context.Context, req *types.QueryAllExtendedPairStableVaultsByAppRequest) (*types.QueryAllExtendedPairStableVaultsByAppResponse, error) { var ( ctx = sdk.UnwrapSDKContext(c) pairVaults, found = q.GetPairsVaults(ctx) diff --git a/x/asset/types/app.pb.go b/x/asset/types/app.pb.go index b7e382a66..8dda8d33d 100644 --- a/x/asset/types/app.pb.go +++ b/x/asset/types/app.pb.go @@ -68,10 +68,10 @@ func (m *AppData) XXX_DiscardUnknown() { var xxx_messageInfo_AppData proto.InternalMessageInfo type MintGenesisToken struct { - AssetId uint64 `protobuf:"varint,1,opt,name=asset_id,json=assetId,proto3" json:"asset_id,omitempty" yaml:"asset_id"` - GenesisSupply *github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,2,opt,name=genesis_supply,json=genesisSupply,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"genesis_supply,omitempty"` - IsGovToken bool `protobuf:"varint,3,opt,name=is_gov_token,json=isGovToken,proto3" json:"is_gov_token,omitempty" yaml:"is_gov_token"` - Recipient string `protobuf:"bytes,4,opt,name=recipient,proto3" json:"recipient,omitempty" yaml:"recipient"` + AssetId uint64 `protobuf:"varint,1,opt,name=asset_id,json=assetId,proto3" json:"asset_id,omitempty" yaml:"asset_id"` + GenesisSupply github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,2,opt,name=genesis_supply,json=genesisSupply,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"genesis_supply"` + IsGovToken bool `protobuf:"varint,3,opt,name=is_gov_token,json=isGovToken,proto3" json:"is_gov_token,omitempty" yaml:"is_gov_token"` + Recipient string `protobuf:"bytes,4,opt,name=recipient,proto3" json:"recipient,omitempty" yaml:"recipient"` } func (m *MintGenesisToken) Reset() { *m = MintGenesisToken{} } @@ -154,43 +154,43 @@ func init() { func init() { proto.RegisterFile("comdex/asset/v1beta1/app.proto", fileDescriptor_1372b4734b6486fd) } var fileDescriptor_1372b4734b6486fd = []byte{ - // 563 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x53, 0x41, 0x6f, 0xd3, 0x3e, - 0x1c, 0x4d, 0xba, 0xad, 0x5b, 0xbd, 0x75, 0xed, 0xd2, 0xfe, 0xff, 0x54, 0x13, 0x4a, 0x2a, 0x23, - 0x4d, 0x15, 0xd2, 0x12, 0x6d, 0x70, 0x81, 0x5b, 0xa3, 0x49, 0xa5, 0x87, 0x21, 0x2d, 0xdb, 0x89, - 0x4b, 0x94, 0x26, 0x5e, 0x66, 0xad, 0xb1, 0xad, 0xda, 0xab, 0xe8, 0x9d, 0x03, 0x47, 0x3e, 0x02, - 0x47, 0x3e, 0x4a, 0x8f, 0x3b, 0x22, 0x0e, 0x11, 0xb4, 0xdf, 0x20, 0x9f, 0x00, 0xc5, 0x4e, 0x68, - 0x99, 0x86, 0x84, 0x38, 0xc5, 0xfe, 0xbd, 0xf7, 0x7b, 0x3f, 0xfb, 0xbd, 0x18, 0x98, 0x21, 0x4d, - 0x22, 0xf4, 0xde, 0x09, 0x38, 0x47, 0xc2, 0x99, 0x9e, 0x8c, 0x90, 0x08, 0x4e, 0x9c, 0x80, 0x31, - 0x9b, 0x4d, 0xa8, 0xa0, 0x46, 0x5b, 0xe1, 0xb6, 0xc4, 0xed, 0x02, 0x3f, 0x6c, 0xc7, 0x34, 0xa6, - 0x92, 0xe0, 0xe4, 0x2b, 0xc5, 0x85, 0x9f, 0x37, 0xc0, 0x76, 0x9f, 0xb1, 0xb3, 0x40, 0x04, 0xc6, - 0x3e, 0xa8, 0xe0, 0xa8, 0xa3, 0x77, 0xf5, 0xde, 0xa6, 0x57, 0xc1, 0x91, 0xf1, 0x0c, 0x6c, 0x92, - 0x20, 0x41, 0x9d, 0x4a, 0x57, 0xef, 0xd5, 0xdc, 0x46, 0x96, 0x5a, 0xbb, 0xb3, 0x20, 0x19, 0xbf, - 0x86, 0x79, 0x15, 0x7a, 0x12, 0x34, 0x5e, 0x02, 0xc0, 0x6f, 0xe8, 0x44, 0xf8, 0x92, 0xba, 0x21, - 0xa9, 0xff, 0x65, 0xa9, 0x75, 0xa0, 0xa8, 0x2b, 0x0c, 0x7a, 0x35, 0xb9, 0x79, 0x9b, 0x77, 0x31, - 0xd0, 0x48, 0x30, 0xf1, 0x63, 0x3a, 0xf5, 0x23, 0xc4, 0x28, 0xc7, 0xa2, 0xb3, 0x29, 0x5b, 0xdf, - 0xcc, 0x53, 0x4b, 0xfb, 0x96, 0x5a, 0x47, 0x31, 0x16, 0x37, 0x77, 0x23, 0x3b, 0xa4, 0x89, 0x13, - 0x52, 0x9e, 0x50, 0x5e, 0x7c, 0x8e, 0x79, 0x74, 0xeb, 0x88, 0x19, 0x43, 0xdc, 0x1e, 0x12, 0x91, - 0xa5, 0xd6, 0xff, 0x6a, 0xd0, 0x03, 0x39, 0xe8, 0xd5, 0x13, 0x4c, 0x06, 0x74, 0x7a, 0xa6, 0xf6, - 0xc6, 0x39, 0x68, 0xe5, 0xb0, 0xc0, 0x09, 0xf2, 0x31, 0xf1, 0x39, 0x0a, 0x29, 0x89, 0x78, 0x67, - 0xab, 0xab, 0xf7, 0x74, 0xd7, 0xcc, 0x52, 0xeb, 0x50, 0xe9, 0x3c, 0x42, 0x82, 0x5e, 0x33, 0xa6, - 0xd3, 0x2b, 0x9c, 0xa0, 0x21, 0xb9, 0x54, 0x25, 0x03, 0x83, 0x7a, 0x8c, 0x08, 0xe2, 0x98, 0xfb, - 0x82, 0xde, 0x22, 0xd2, 0xa9, 0x76, 0x37, 0x7a, 0xbb, 0xa7, 0x47, 0xf6, 0x63, 0xde, 0xdb, 0xe7, - 0x98, 0x88, 0x81, 0xa2, 0x5f, 0xe5, 0x6c, 0xf7, 0x69, 0x7e, 0xcd, 0x2c, 0xb5, 0xda, 0xc5, 0xd0, - 0x75, 0x29, 0xe8, 0xed, 0xc5, 0x6b, 0x5c, 0xf8, 0xa1, 0x02, 0x9a, 0x0f, 0x05, 0x0c, 0x1b, 0xec, - 0xc8, 0x11, 0x7e, 0x99, 0x98, 0xdb, 0xca, 0x52, 0xab, 0xa1, 0xe4, 0x4a, 0x04, 0x7a, 0xdb, 0x72, - 0x39, 0x8c, 0x8c, 0x0b, 0xb0, 0x5f, 0x0e, 0xe1, 0x77, 0x8c, 0x8d, 0x67, 0x45, 0xaa, 0xcf, 0xff, - 0xde, 0x6b, 0xaf, 0xbc, 0xf1, 0xa5, 0x14, 0x30, 0x5e, 0x81, 0x3d, 0xcc, 0xa5, 0xe7, 0xca, 0x81, - 0x3c, 0xfb, 0x1d, 0xf7, 0x49, 0x96, 0x5a, 0x2d, 0x75, 0x8c, 0x75, 0x14, 0x7a, 0x00, 0xf3, 0x01, - 0x9d, 0xaa, 0xd3, 0x9f, 0x82, 0xda, 0x04, 0x85, 0x98, 0x61, 0x44, 0xca, 0xe0, 0xdb, 0x59, 0x6a, - 0x35, 0x55, 0xdf, 0x2f, 0x08, 0x7a, 0x2b, 0x1a, 0xfc, 0xa8, 0x83, 0x7a, 0x9f, 0xb1, 0x3e, 0x89, - 0x06, 0x2a, 0x0c, 0xa3, 0x07, 0xaa, 0x01, 0x63, 0x2b, 0x07, 0x0e, 0xb2, 0xd4, 0xaa, 0x17, 0x0e, - 0xc8, 0x3a, 0xf4, 0xb6, 0x02, 0xc6, 0x86, 0xd1, 0x9f, 0xc2, 0xaf, 0xfc, 0x5b, 0xf8, 0xee, 0xc5, - 0xfc, 0x87, 0xa9, 0x7d, 0x59, 0x98, 0xda, 0x7c, 0x61, 0xea, 0xf7, 0x0b, 0x53, 0xff, 0xbe, 0x30, - 0xf5, 0x4f, 0x4b, 0x53, 0xbb, 0x5f, 0x9a, 0xda, 0xd7, 0xa5, 0xa9, 0xbd, 0x73, 0x7e, 0xb3, 0x34, - 0xff, 0x23, 0x8e, 0xe9, 0xf5, 0x35, 0x0e, 0x71, 0x30, 0x2e, 0xf6, 0x4e, 0xf9, 0x7e, 0xa5, 0xbf, - 0xa3, 0xaa, 0x7c, 0x8e, 0x2f, 0x7e, 0x06, 0x00, 0x00, 0xff, 0xff, 0x68, 0x55, 0x23, 0xa4, 0xdc, - 0x03, 0x00, 0x00, + // 561 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x53, 0xc1, 0x6e, 0xd3, 0x40, + 0x10, 0xb5, 0xd3, 0x36, 0x6d, 0xb6, 0x4d, 0x93, 0x3a, 0x01, 0xa2, 0x0a, 0xd9, 0xd1, 0x22, 0x55, + 0xb9, 0xd4, 0x56, 0x0b, 0x17, 0xb8, 0xc5, 0xaa, 0x14, 0x72, 0x28, 0x12, 0x6e, 0xb9, 0x70, 0xb1, + 0x1c, 0x7b, 0xeb, 0xae, 0x1a, 0xef, 0xae, 0xb2, 0xdb, 0x88, 0xfc, 0x41, 0x8f, 0x7c, 0x02, 0x47, + 0x3e, 0x25, 0xc7, 0x1e, 0x11, 0x07, 0x0b, 0x92, 0x3f, 0xf0, 0x17, 0x20, 0xef, 0xda, 0x24, 0x54, + 0xe5, 0x00, 0x27, 0xef, 0xce, 0x7b, 0xf3, 0xc6, 0xf3, 0x66, 0x16, 0x98, 0x21, 0x4d, 0x22, 0xf4, + 0xc9, 0x09, 0x38, 0x47, 0xc2, 0x99, 0x9e, 0x8c, 0x90, 0x08, 0x4e, 0x9c, 0x80, 0x31, 0x9b, 0x4d, + 0xa8, 0xa0, 0x46, 0x5b, 0xe1, 0xb6, 0xc4, 0xed, 0x02, 0x3f, 0x6c, 0xc7, 0x34, 0xa6, 0x92, 0xe0, + 0xe4, 0x27, 0xc5, 0x85, 0x5f, 0x36, 0xc0, 0x76, 0x9f, 0xb1, 0xb3, 0x40, 0x04, 0xc6, 0x3e, 0xa8, + 0xe0, 0xa8, 0xa3, 0x77, 0xf5, 0xde, 0xa6, 0x57, 0xc1, 0x91, 0xf1, 0x02, 0x6c, 0x92, 0x20, 0x41, + 0x9d, 0x4a, 0x57, 0xef, 0xd5, 0xdc, 0x46, 0x96, 0x5a, 0xbb, 0xb3, 0x20, 0x19, 0xbf, 0x81, 0x79, + 0x14, 0x7a, 0x12, 0x34, 0x5e, 0x01, 0xc0, 0xaf, 0xe9, 0x44, 0xf8, 0x92, 0xba, 0x21, 0xa9, 0x4f, + 0xb2, 0xd4, 0x3a, 0x50, 0xd4, 0x15, 0x06, 0xbd, 0x9a, 0xbc, 0xbc, 0xcb, 0xb3, 0x18, 0x68, 0x24, + 0x98, 0xf8, 0x31, 0x9d, 0xfa, 0x11, 0x62, 0x94, 0x63, 0xd1, 0xd9, 0x94, 0xa9, 0x6f, 0xe7, 0xa9, + 0xa5, 0x7d, 0x4f, 0xad, 0xa3, 0x18, 0x8b, 0xeb, 0xdb, 0x91, 0x1d, 0xd2, 0xc4, 0x09, 0x29, 0x4f, + 0x28, 0x2f, 0x3e, 0xc7, 0x3c, 0xba, 0x71, 0xc4, 0x8c, 0x21, 0x6e, 0x0f, 0x89, 0xc8, 0x52, 0xeb, + 0xa9, 0x2a, 0xf4, 0x40, 0x0e, 0x7a, 0xf5, 0x04, 0x93, 0x01, 0x9d, 0x9e, 0xa9, 0xbb, 0x71, 0x0e, + 0x5a, 0x39, 0x2c, 0x70, 0x82, 0x7c, 0x4c, 0x7c, 0x8e, 0x42, 0x4a, 0x22, 0xde, 0xd9, 0xea, 0xea, + 0x3d, 0xdd, 0x35, 0xb3, 0xd4, 0x3a, 0x54, 0x3a, 0x8f, 0x90, 0xa0, 0xd7, 0x8c, 0xe9, 0xf4, 0x12, + 0x27, 0x68, 0x48, 0x2e, 0x54, 0xc8, 0xc0, 0xa0, 0x1e, 0x23, 0x82, 0x38, 0xe6, 0xbe, 0xa0, 0x37, + 0x88, 0x74, 0xaa, 0xdd, 0x8d, 0xde, 0xee, 0xe9, 0x91, 0xfd, 0x98, 0xf7, 0xf6, 0x39, 0x26, 0x62, + 0xa0, 0xe8, 0x97, 0x39, 0xdb, 0x7d, 0x9e, 0xb7, 0x99, 0xa5, 0x56, 0xbb, 0x28, 0xba, 0x2e, 0x05, + 0xbd, 0xbd, 0x78, 0x8d, 0x0b, 0xef, 0x2a, 0xa0, 0xf9, 0x50, 0xc0, 0xb0, 0xc1, 0x8e, 0x2c, 0xe1, + 0x97, 0x13, 0x73, 0x5b, 0x59, 0x6a, 0x35, 0x94, 0x5c, 0x89, 0x40, 0x6f, 0x5b, 0x1e, 0x87, 0x91, + 0xf1, 0x01, 0xec, 0x97, 0x45, 0xf8, 0x2d, 0x63, 0xe3, 0x59, 0x31, 0x55, 0xfb, 0xdf, 0xfc, 0xf6, + 0xca, 0xae, 0x2f, 0xa4, 0x88, 0xf1, 0x1a, 0xec, 0x61, 0x2e, 0x7d, 0x57, 0x2e, 0xe4, 0xf3, 0xdf, + 0x71, 0x9f, 0x65, 0xa9, 0xd5, 0x52, 0xbf, 0xb2, 0x8e, 0x42, 0x0f, 0x60, 0x3e, 0xa0, 0x53, 0xd5, + 0xc1, 0x29, 0xa8, 0x4d, 0x50, 0x88, 0x19, 0x46, 0xa4, 0x1c, 0x7e, 0x3b, 0x4b, 0xad, 0xa6, 0xca, + 0xfb, 0x0d, 0x41, 0x6f, 0x45, 0x83, 0x77, 0x3a, 0xa8, 0xf7, 0x19, 0xeb, 0x93, 0x68, 0xa0, 0x06, + 0x62, 0xf4, 0x40, 0x35, 0x60, 0x6c, 0xe5, 0xc2, 0x41, 0x96, 0x5a, 0xf5, 0xc2, 0x05, 0x19, 0x87, + 0xde, 0x56, 0xc0, 0xd8, 0x30, 0xfa, 0xdb, 0x02, 0x54, 0xfe, 0x6f, 0x01, 0xdc, 0xf7, 0xf3, 0x9f, + 0xa6, 0xf6, 0x75, 0x61, 0x6a, 0xf3, 0x85, 0xa9, 0xdf, 0x2f, 0x4c, 0xfd, 0xc7, 0xc2, 0xd4, 0x3f, + 0x2f, 0x4d, 0xed, 0x7e, 0x69, 0x6a, 0xdf, 0x96, 0xa6, 0xf6, 0xd1, 0xf9, 0xc3, 0xd2, 0x7c, 0x2b, + 0x8e, 0xe9, 0xd5, 0x15, 0x0e, 0x71, 0x30, 0x2e, 0xee, 0x4e, 0xf9, 0x86, 0xa5, 0xbf, 0xa3, 0xaa, + 0x7c, 0x92, 0x2f, 0x7f, 0x05, 0x00, 0x00, 0xff, 0xff, 0x5b, 0x24, 0x02, 0x69, 0xe0, 0x03, 0x00, + 0x00, } func (m *AppData) Marshal() (dAtA []byte, err error) { @@ -302,18 +302,16 @@ func (m *MintGenesisToken) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x18 } - if m.GenesisSupply != nil { - { - size := m.GenesisSupply.Size() - i -= size - if _, err := m.GenesisSupply.MarshalTo(dAtA[i:]); err != nil { - return 0, err - } - i = encodeVarintApp(dAtA, i, uint64(size)) + { + size := m.GenesisSupply.Size() + i -= size + if _, err := m.GenesisSupply.MarshalTo(dAtA[i:]); err != nil { + return 0, err } - i-- - dAtA[i] = 0x12 + i = encodeVarintApp(dAtA, i, uint64(size)) } + i-- + dAtA[i] = 0x12 if m.AssetId != 0 { i = encodeVarintApp(dAtA, i, uint64(m.AssetId)) i-- @@ -407,10 +405,8 @@ func (m *MintGenesisToken) Size() (n int) { if m.AssetId != 0 { n += 1 + sovApp(uint64(m.AssetId)) } - if m.GenesisSupply != nil { - l = m.GenesisSupply.Size() - n += 1 + l + sovApp(uint64(l)) - } + l = m.GenesisSupply.Size() + n += 1 + l + sovApp(uint64(l)) if m.IsGovToken { n += 2 } @@ -732,8 +728,6 @@ func (m *MintGenesisToken) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - var v github_com_cosmos_cosmos_sdk_types.Int - m.GenesisSupply = &v if err := m.GenesisSupply.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } diff --git a/x/asset/types/asset.go b/x/asset/types/asset.go index cf343f568..ae096d5a7 100644 --- a/x/asset/types/asset.go +++ b/x/asset/types/asset.go @@ -12,18 +12,12 @@ const ( ) func (m *Asset) Validate() error { - // if m.Id == 0 { - // return fmt.Errorf("id cannot be zero") - // } if m.Name == "" { return fmt.Errorf("name cannot be empty") } if len(m.Name) > MaxAssetNameLength { return fmt.Errorf("name length cannot be greater than %d", MaxAssetNameLength) } - if m.Denom == "" { - return fmt.Errorf("denom cannot be empty") - } if err := sdk.ValidateDenom(m.Denom); err != nil { return errors.Wrapf(err, "invalid denom %s", m.Denom) } diff --git a/x/asset/types/errors.go b/x/asset/types/errors.go index 58d3293f5..0245cd925 100644 --- a/x/asset/types/errors.go +++ b/x/asset/types/errors.go @@ -5,10 +5,11 @@ import ( ) var ( - ErrorInvalidDecimals = errors.Register(ModuleName, 101, "invalid decimals") - ErrorInvalidDenom = errors.Register(ModuleName, 102, "invalid denom") - ErrorInvalidFrom = errors.Register(ModuleName, 103, "invalid from") - ErrorInvalidID = errors.Register(ModuleName, 104, "invalid id") + ErrorInvalidDecimals = errors.Register(ModuleName, 101, "invalid decimals") + ErrorInvalidDenom = errors.Register(ModuleName, 102, "invalid denom") + ErrorInvalidFrom = errors.Register(ModuleName, 103, "invalid from") + ErrorInvalidRecipient = errors.Register(ModuleName, 104, "invalid recipient address") + ErrorInvalidID = errors.Register(ModuleName, 105, "invalid id") ErrorInvalidName = errors.Register(ModuleName, 106, "invalid name") ErrorInvalidGenesisSupply = errors.Register(ModuleName, 109, "invalid Genesis Supply") @@ -30,6 +31,10 @@ var ( ErrorFeeShouldNotBeGTOne = errors.Register(ModuleName, 215, "Fee Should Not Be Greater than One and less than zero") ErrorExtendedPairDoesNotExistForTheApp = errors.Register(ModuleName, 216, "extended pair does not exist for the app") ErrorMinGovDepositIsZero = errors.Register(ModuleName, 217, "min gov deposit is zero") + ErrorShortNameDidNotMeetCriterion = errors.Register(ModuleName, 218, "App ShortName did't meet the criterion") + ErrorNameDidNotMeetCriterion = errors.Register(ModuleName, 219, "App Name did't meet the criterion") + ErrorReversePairAlreadyExist = errors.Register(ModuleName, 220, "Reverse pair already exists") + ErrorValueCantBeNegative = errors.Register(ModuleName, 221, "Value can't be negative") ) var ( diff --git a/x/asset/types/genesis.go b/x/asset/types/genesis.go index 0e6fc5d0f..6eb3f160d 100644 --- a/x/asset/types/genesis.go +++ b/x/asset/types/genesis.go @@ -1,10 +1,12 @@ package types -func NewGenesisState(assets []Asset, pairs []Pair, params Params) *GenesisState { +func NewGenesisState(assets []Asset, pairs []Pair, appData []AppData, extendedPairVault []ExtendedPairVault, params Params) *GenesisState { return &GenesisState{ - Assets: assets, - Pairs: pairs, - Params: params, + Assets: assets, + Pairs: pairs, + AppData: appData, + ExtendedPairVault: extendedPairVault, + Params: params, } } @@ -12,6 +14,8 @@ func DefaultGenesisState() *GenesisState { return NewGenesisState( []Asset{}, []Pair{}, + []AppData{}, + []ExtendedPairVault{}, DefaultParams(), ) } diff --git a/x/asset/types/genesis.pb.go b/x/asset/types/genesis.pb.go index bd32f120d..3490746b6 100644 --- a/x/asset/types/genesis.pb.go +++ b/x/asset/types/genesis.pb.go @@ -24,9 +24,11 @@ var _ = math.Inf const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package type GenesisState struct { - Assets []Asset `protobuf:"bytes,1,rep,name=assets,proto3" json:"assets" yaml:"assets"` - Pairs []Pair `protobuf:"bytes,3,rep,name=pairs,proto3" json:"pairs" yaml:"pairs"` - Params Params `protobuf:"bytes,4,opt,name=params,proto3" json:"params" yaml:"params"` + Assets []Asset `protobuf:"bytes,1,rep,name=assets,proto3" json:"assets" yaml:"assets"` + Pairs []Pair `protobuf:"bytes,2,rep,name=pairs,proto3" json:"pairs" yaml:"pairs"` + AppData []AppData `protobuf:"bytes,3,rep,name=appData,proto3" json:"appData" yaml:"appData"` + ExtendedPairVault []ExtendedPairVault `protobuf:"bytes,4,rep,name=extendedPairVault,proto3" json:"extendedPairVault" yaml:"extendedPairVault"` + Params Params `protobuf:"bytes,5,opt,name=params,proto3" json:"params" yaml:"params"` } func (m *GenesisState) Reset() { *m = GenesisState{} } @@ -71,26 +73,32 @@ func init() { } var fileDescriptor_13a69a7476a1f579 = []byte{ - // 300 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x52, 0x4a, 0xce, 0xcf, 0x4d, - 0x49, 0xad, 0xd0, 0x4f, 0x2c, 0x2e, 0x4e, 0x2d, 0xd1, 0x2f, 0x33, 0x4c, 0x4a, 0x2d, 0x49, 0x34, - 0xd4, 0x4f, 0x4f, 0xcd, 0x4b, 0x2d, 0xce, 0x2c, 0xd6, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, - 0x81, 0xa8, 0xd1, 0x03, 0xab, 0xd1, 0x83, 0xaa, 0x91, 0x12, 0x49, 0xcf, 0x4f, 0xcf, 0x07, 0x2b, - 0xd0, 0x07, 0xb1, 0x20, 0x6a, 0xa5, 0x14, 0xb0, 0x9a, 0x07, 0xd1, 0x09, 0x51, 0x21, 0x8f, 0x55, - 0x45, 0x41, 0x62, 0x66, 0x11, 0x54, 0x81, 0x22, 0x0e, 0x05, 0x45, 0x89, 0xb9, 0x50, 0x17, 0x29, - 0xbd, 0x67, 0xe4, 0xe2, 0x71, 0x87, 0xb8, 0x31, 0xb8, 0x24, 0xb1, 0x24, 0x55, 0xc8, 0x8b, 0x8b, - 0x0d, 0xac, 0xbc, 0x58, 0x82, 0x51, 0x81, 0x59, 0x83, 0xdb, 0x48, 0x5a, 0x0f, 0x9b, 0x9b, 0xf5, - 0x1c, 0x41, 0x3c, 0x27, 0xd1, 0x13, 0xf7, 0xe4, 0x19, 0x3e, 0xdd, 0x93, 0xe7, 0xad, 0x4c, 0xcc, - 0xcd, 0xb1, 0x52, 0x82, 0x68, 0x54, 0x0a, 0x82, 0x9a, 0x20, 0xe4, 0xc6, 0xc5, 0x0a, 0x72, 0x4d, - 0xb1, 0x04, 0x33, 0xd8, 0x28, 0x29, 0xec, 0x46, 0x05, 0x24, 0x66, 0x16, 0x39, 0x89, 0x40, 0x4d, - 0xe2, 0x81, 0x98, 0x04, 0xd6, 0xa6, 0x14, 0x04, 0xd1, 0x2e, 0xe4, 0xcd, 0xc5, 0x06, 0x71, 0xb4, - 0x04, 0x8b, 0x02, 0xa3, 0x06, 0xb7, 0x91, 0x0c, 0x2e, 0x83, 0x40, 0x6a, 0xd0, 0x1d, 0x05, 0xd1, - 0xa9, 0x14, 0x04, 0x35, 0xc2, 0x29, 0xf0, 0xc4, 0x43, 0x39, 0x86, 0x15, 0x8f, 0xe4, 0x18, 0x4e, - 0x3c, 0x92, 0x63, 0xbc, 0xf0, 0x48, 0x8e, 0xf1, 0xc1, 0x23, 0x39, 0xc6, 0x09, 0x8f, 0xe5, 0x18, - 0x2e, 0x3c, 0x96, 0x63, 0xb8, 0xf1, 0x58, 0x8e, 0x21, 0x4a, 0x3f, 0x3d, 0xb3, 0x24, 0xa3, 0x34, - 0x09, 0x64, 0x89, 0x3e, 0xc4, 0x22, 0xdd, 0xfc, 0xb4, 0xb4, 0xcc, 0xe4, 0xcc, 0xc4, 0x1c, 0x28, - 0x5f, 0x1f, 0x16, 0xa6, 0x25, 0x95, 0x05, 0xa9, 0xc5, 0x49, 0x6c, 0xe0, 0xb0, 0x34, 0x06, 0x04, - 0x00, 0x00, 0xff, 0xff, 0xa8, 0x50, 0x95, 0x69, 0x03, 0x02, 0x00, 0x00, + // 388 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x92, 0xcf, 0x4e, 0xea, 0x40, + 0x14, 0x87, 0xdb, 0xcb, 0x85, 0x9b, 0x14, 0xee, 0x4d, 0x6e, 0x83, 0xa6, 0x41, 0x1d, 0xea, 0x6c, + 0x64, 0xa1, 0x6d, 0xc0, 0x9d, 0x3b, 0x1b, 0xff, 0x24, 0xba, 0x50, 0x6b, 0xe2, 0xc2, 0xdd, 0x00, + 0x43, 0x6d, 0x02, 0x74, 0xd2, 0x19, 0x14, 0xde, 0xc2, 0xc7, 0xf0, 0x15, 0x7c, 0x03, 0x96, 0x2c, + 0x5d, 0x11, 0x2d, 0x6f, 0xe0, 0x13, 0x98, 0xce, 0x19, 0x36, 0x30, 0xec, 0x3a, 0x9d, 0xef, 0x7c, + 0xbf, 0x73, 0x4e, 0xc6, 0xc2, 0x9d, 0x64, 0xd0, 0xa5, 0x63, 0x9f, 0x70, 0x4e, 0x85, 0xff, 0xdc, + 0x6c, 0x53, 0x41, 0x9a, 0x7e, 0x44, 0x87, 0x94, 0xc7, 0xdc, 0x63, 0x69, 0x22, 0x12, 0xbb, 0x0a, + 0x8c, 0x27, 0x19, 0x4f, 0x31, 0xb5, 0x6a, 0x94, 0x44, 0x89, 0x04, 0xfc, 0xfc, 0x0b, 0xd8, 0x9a, + 0xab, 0xf5, 0x41, 0x25, 0x10, 0x75, 0x2d, 0xc1, 0x48, 0x9c, 0x2a, 0x00, 0xe9, 0x15, 0x8c, 0xa9, + 0xfb, 0x43, 0xed, 0x3d, 0x1d, 0x0b, 0x3a, 0xec, 0xd2, 0xee, 0x2d, 0x89, 0xd3, 0x07, 0x32, 0xea, + 0x2f, 0xe3, 0xf6, 0x37, 0xc4, 0xa5, 0x64, 0xa0, 0xe6, 0xc3, 0xef, 0x05, 0xab, 0x72, 0x09, 0x13, + 0xdf, 0x0b, 0x22, 0xa8, 0x7d, 0x65, 0x95, 0x24, 0xce, 0x1d, 0xd3, 0x2d, 0x34, 0xca, 0xad, 0x1d, + 0x4f, 0xb7, 0x01, 0xef, 0x34, 0x3f, 0x05, 0x5b, 0xd3, 0x79, 0xdd, 0xf8, 0x9e, 0xd7, 0xff, 0x4e, + 0xc8, 0xa0, 0x7f, 0x82, 0xa1, 0x10, 0x87, 0xca, 0x60, 0x5f, 0x58, 0xc5, 0x7c, 0x36, 0xee, 0xfc, + 0x92, 0xaa, 0x9a, 0x5e, 0x95, 0x77, 0x1d, 0x54, 0x95, 0xa9, 0x02, 0x26, 0x59, 0x86, 0x43, 0x28, + 0xb7, 0x6f, 0xac, 0x3f, 0x84, 0xb1, 0x33, 0x22, 0x88, 0x53, 0x90, 0xa6, 0xbd, 0x0d, 0x4d, 0x01, + 0x14, 0x6c, 0x2b, 0xd9, 0x3f, 0xd5, 0x16, 0xfc, 0xc6, 0xe1, 0xd2, 0x62, 0xbf, 0x58, 0xff, 0xd7, + 0x76, 0xe6, 0xfc, 0x96, 0xea, 0x03, 0xbd, 0xfa, 0x7c, 0x15, 0x0f, 0x5c, 0x15, 0xe2, 0x40, 0xc8, + 0x9a, 0x0f, 0x87, 0xeb, 0x19, 0xf6, 0xb5, 0x55, 0x82, 0xf5, 0x3b, 0x45, 0xd7, 0x6c, 0x94, 0x5b, + 0xbb, 0x9b, 0x56, 0x92, 0x33, 0xab, 0xeb, 0x85, 0x4a, 0x1c, 0x2a, 0x45, 0x70, 0x37, 0xfd, 0x42, + 0xc6, 0x5b, 0x86, 0x8c, 0x69, 0x86, 0xcc, 0x59, 0x86, 0xcc, 0xcf, 0x0c, 0x99, 0xaf, 0x0b, 0x64, + 0xcc, 0x16, 0xc8, 0xf8, 0x58, 0x20, 0xe3, 0xd1, 0x8f, 0x62, 0xf1, 0x34, 0x6a, 0xe7, 0x21, 0x3e, + 0x04, 0x1d, 0x25, 0xbd, 0x5e, 0xdc, 0x89, 0x49, 0x5f, 0x9d, 0xfd, 0xe5, 0xeb, 0x10, 0x13, 0x46, + 0x79, 0xbb, 0x24, 0x5f, 0xc5, 0xf1, 0x4f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xd1, 0x6f, 0x99, 0x1f, + 0x1b, 0x03, 0x00, 0x00, } func (m *GenesisState) Marshal() (dAtA []byte, err error) { @@ -122,7 +130,35 @@ func (m *GenesisState) MarshalToSizedBuffer(dAtA []byte) (int, error) { i = encodeVarintGenesis(dAtA, i, uint64(size)) } i-- - dAtA[i] = 0x22 + dAtA[i] = 0x2a + if len(m.ExtendedPairVault) > 0 { + for iNdEx := len(m.ExtendedPairVault) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.ExtendedPairVault[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + } + } + if len(m.AppData) > 0 { + for iNdEx := len(m.AppData) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.AppData[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + } if len(m.Pairs) > 0 { for iNdEx := len(m.Pairs) - 1; iNdEx >= 0; iNdEx-- { { @@ -134,7 +170,7 @@ func (m *GenesisState) MarshalToSizedBuffer(dAtA []byte) (int, error) { i = encodeVarintGenesis(dAtA, i, uint64(size)) } i-- - dAtA[i] = 0x1a + dAtA[i] = 0x12 } } if len(m.Assets) > 0 { @@ -183,6 +219,18 @@ func (m *GenesisState) Size() (n int) { n += 1 + l + sovGenesis(uint64(l)) } } + if len(m.AppData) > 0 { + for _, e := range m.AppData { + l = e.Size() + n += 1 + l + sovGenesis(uint64(l)) + } + } + if len(m.ExtendedPairVault) > 0 { + for _, e := range m.ExtendedPairVault { + l = e.Size() + n += 1 + l + sovGenesis(uint64(l)) + } + } l = m.Params.Size() n += 1 + l + sovGenesis(uint64(l)) return n @@ -257,7 +305,7 @@ func (m *GenesisState) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex - case 3: + case 2: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Pairs", wireType) } @@ -291,7 +339,75 @@ func (m *GenesisState) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AppData", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.AppData = append(m.AppData, AppData{}) + if err := m.AppData[len(m.AppData)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ExtendedPairVault", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ExtendedPairVault = append(m.ExtendedPairVault, ExtendedPairVault{}) + if err := m.ExtendedPairVault[len(m.ExtendedPairVault)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Params", wireType) } diff --git a/x/asset/types/gov.go b/x/asset/types/gov.go index cd329f72b..b5f6a12e9 100644 --- a/x/asset/types/gov.go +++ b/x/asset/types/gov.go @@ -42,7 +42,7 @@ var ( _ govtypes.Content = &AddAssetInAppProposal{} ) -func NewAddAssetsProposal(title, description string, assets []Asset) govtypes.Content { +func NewAddAssetsProposal(title, description string, assets Asset) govtypes.Content { return &AddAssetsProposal{ Title: title, Description: description, @@ -65,14 +65,9 @@ func (p *AddAssetsProposal) ValidateBasic() error { if err != nil { return err } - if len(p.Assets) == 0 { - return ErrorEmptyProposalAssets - } - for _, asset := range p.Assets { - if err := asset.Validate(); err != nil { - return err - } + if err := p.Assets.Validate(); err != nil { + return err } return nil @@ -112,7 +107,7 @@ func (p *UpdateAssetProposal) ValidateBasic() error { return nil } -func NewAddPairsProposal(title, description string, pairs []Pair) govtypes.Content { +func NewAddPairsProposal(title, description string, pairs Pair) govtypes.Content { return &AddPairsProposal{ Title: title, Description: description, @@ -136,20 +131,15 @@ func (p *AddPairsProposal) ValidateBasic() error { if err != nil { return err } - if len(p.Pairs) == 0 { - return ErrorEmptyProposalAssets - } - for _, pair := range p.Pairs { - if err := pair.Validate(); err != nil { - return err - } + if err := p.Pairs.Validate(); err != nil { + return err } return nil } -func NewAddAppProposal(title, description string, amap []AppData) govtypes.Content { +func NewAddAppProposal(title, description string, amap AppData) govtypes.Content { return &AddAppProposal{ Title: title, Description: description, @@ -174,9 +164,6 @@ func (p *AddAppProposal) ValidateBasic() error { if err != nil { return err } - if len(p.App) == 0 { - return ErrorEmptyProposalAssets - } return nil } @@ -212,7 +199,7 @@ func (p *UpdateGovTimeInAppProposal) ValidateBasic() error { return nil } -func NewAddAssetInAppProposal(title, description string, amap []AppData) govtypes.Content { +func NewAddAssetInAppProposal(title, description string, amap AppData) govtypes.Content { return &AddAssetInAppProposal{ Title: title, Description: description, @@ -237,9 +224,6 @@ func (p *AddAssetInAppProposal) ValidateBasic() error { if err != nil { return err } - if len(p.App) == 0 { - return ErrorEmptyProposalAssets - } return nil } diff --git a/x/asset/types/gov.pb.go b/x/asset/types/gov.pb.go index 43948825b..d703527d3 100644 --- a/x/asset/types/gov.pb.go +++ b/x/asset/types/gov.pb.go @@ -24,9 +24,9 @@ var _ = math.Inf const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package type AddAssetsProposal struct { - Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty" yaml:"title"` - Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty" yaml:"description"` - Assets []Asset `protobuf:"bytes,3,rep,name=assets,proto3" json:"assets"` + Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty" yaml:"title"` + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty" yaml:"description"` + Assets Asset `protobuf:"bytes,3,opt,name=assets,proto3" json:"assets"` } func (m *AddAssetsProposal) Reset() { *m = AddAssetsProposal{} } @@ -104,7 +104,7 @@ var xxx_messageInfo_UpdateAssetProposal proto.InternalMessageInfo type AddPairsProposal struct { Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty" yaml:"title"` Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty" yaml:"description"` - Pairs []Pair `protobuf:"bytes,3,rep,name=pairs,proto3" json:"pairs"` + Pairs Pair `protobuf:"bytes,3,opt,name=pairs,proto3" json:"pairs"` } func (m *AddPairsProposal) Reset() { *m = AddPairsProposal{} } @@ -141,9 +141,9 @@ func (m *AddPairsProposal) XXX_DiscardUnknown() { var xxx_messageInfo_AddPairsProposal proto.InternalMessageInfo type AddAppProposal struct { - Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty" yaml:"title"` - Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty" yaml:"description"` - App []AppData `protobuf:"bytes,3,rep,name=app,proto3" json:"app"` + Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty" yaml:"title"` + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty" yaml:"description"` + App AppData `protobuf:"bytes,3,opt,name=app,proto3" json:"app"` } func (m *AddAppProposal) Reset() { *m = AddAppProposal{} } @@ -219,9 +219,9 @@ func (m *UpdateGovTimeInAppProposal) XXX_DiscardUnknown() { var xxx_messageInfo_UpdateGovTimeInAppProposal proto.InternalMessageInfo type AddAssetInAppProposal struct { - Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty" yaml:"title"` - Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty" yaml:"description"` - App []AppData `protobuf:"bytes,3,rep,name=app,proto3" json:"app"` + Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty" yaml:"title"` + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty" yaml:"description"` + App AppData `protobuf:"bytes,3,opt,name=app,proto3" json:"app"` } func (m *AddAssetInAppProposal) Reset() { *m = AddAssetInAppProposal{} } @@ -269,34 +269,34 @@ func init() { func init() { proto.RegisterFile("comdex/asset/v1beta1/gov.proto", fileDescriptor_31c5aab0360b917f) } var fileDescriptor_31c5aab0360b917f = []byte{ - // 432 bytes of a gzipped FileDescriptorProto + // 430 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x94, 0xcd, 0xaa, 0xd3, 0x40, - 0x14, 0xc7, 0x33, 0xc6, 0x5e, 0x71, 0xae, 0xc8, 0x35, 0x56, 0x09, 0x11, 0x27, 0x21, 0x82, 0x74, - 0x63, 0x42, 0x15, 0x3f, 0x77, 0xa9, 0x82, 0xb8, 0xab, 0x45, 0x37, 0xee, 0xa6, 0x9d, 0x69, 0x1c, - 0x48, 0x3b, 0x43, 0x32, 0x16, 0xfb, 0x16, 0x3e, 0x86, 0x82, 0x0b, 0xdf, 0xc1, 0x4d, 0x97, 0x5d, - 0xba, 0x2a, 0x9a, 0xbe, 0x41, 0x9f, 0x40, 0xe6, 0x23, 0xd0, 0x45, 0x0a, 0xe2, 0x22, 0xbb, 0x36, - 0xff, 0xdf, 0x39, 0xf9, 0xcd, 0xe1, 0x64, 0x20, 0x9a, 0xf1, 0x05, 0xa1, 0x9f, 0x53, 0x5c, 0x55, - 0x54, 0xa6, 0xab, 0xe1, 0x94, 0x4a, 0x3c, 0x4c, 0x73, 0xbe, 0x4a, 0x44, 0xc9, 0x25, 0xf7, 0xfa, - 0x26, 0x4f, 0x74, 0x9e, 0xd8, 0x3c, 0xe8, 0xe7, 0x3c, 0xe7, 0x1a, 0x48, 0xd5, 0x2f, 0xc3, 0x06, - 0x51, 0x6b, 0x2f, 0x53, 0x69, 0x88, 0xb0, 0x95, 0x10, 0x98, 0x95, 0x16, 0x68, 0xd7, 0xc1, 0x42, - 0x98, 0x3c, 0xfe, 0x01, 0xe0, 0x8d, 0x8c, 0x90, 0x4c, 0xc5, 0xd5, 0xb8, 0xe4, 0x82, 0x57, 0xb8, - 0xf0, 0xee, 0xc3, 0x9e, 0x64, 0xb2, 0xa0, 0x3e, 0x88, 0xc0, 0xe0, 0xea, 0xe8, 0xe2, 0xb0, 0x0b, - 0xaf, 0xad, 0xf1, 0xa2, 0x78, 0x11, 0xeb, 0xc7, 0xf1, 0xc4, 0xc4, 0xde, 0x33, 0x78, 0x4e, 0x68, - 0x35, 0x2b, 0x99, 0x90, 0x8c, 0x2f, 0xfd, 0x4b, 0x9a, 0xbe, 0x7d, 0xd8, 0x85, 0x9e, 0xa1, 0x8f, - 0xc2, 0x78, 0x72, 0x8c, 0x7a, 0xcf, 0xe1, 0x99, 0x56, 0xaa, 0x7c, 0x37, 0x72, 0x07, 0xe7, 0x0f, - 0xef, 0x24, 0x6d, 0x73, 0x49, 0xb4, 0xd7, 0xe8, 0xf2, 0x66, 0x17, 0x3a, 0x13, 0x5b, 0xa0, 0x94, - 0x6f, 0xbe, 0x17, 0x04, 0x4b, 0xaa, 0xd3, 0x0e, 0xa5, 0x9f, 0xc2, 0x9e, 0x76, 0xf0, 0xdd, 0x08, - 0xfc, 0x9b, 0xb3, 0xe1, 0xe3, 0xef, 0x00, 0x5e, 0x64, 0x84, 0x8c, 0x31, 0x2b, 0xbb, 0x1c, 0xf2, - 0x13, 0xd8, 0x53, 0xab, 0xd0, 0xcc, 0x38, 0x68, 0xf7, 0x55, 0x56, 0x8d, 0xae, 0xc6, 0xe3, 0x6f, - 0x00, 0x5e, 0x57, 0x4b, 0x21, 0x44, 0x87, 0xb2, 0x8f, 0xa1, 0x8b, 0x85, 0xb0, 0xaa, 0x77, 0x4f, - 0x8c, 0x56, 0x88, 0x57, 0x58, 0x62, 0x6b, 0xab, 0xf8, 0xf8, 0x27, 0x80, 0x81, 0xd9, 0x86, 0xd7, - 0x7c, 0xf5, 0x8e, 0x2d, 0xe8, 0x9b, 0x65, 0xb7, 0xde, 0x2f, 0xe1, 0x95, 0xdc, 0xbc, 0xd9, 0xae, - 0xc5, 0xbd, 0x93, 0xee, 0xd9, 0x92, 0x58, 0x49, 0x7b, 0x82, 0xa6, 0x52, 0xed, 0xf4, 0xad, 0xe6, - 0x33, 0xec, 0xfa, 0x00, 0xff, 0x37, 0xf8, 0xd1, 0xdb, 0xcd, 0x1f, 0xe4, 0x7c, 0xad, 0x91, 0xb3, - 0xa9, 0x11, 0xd8, 0xd6, 0x08, 0xfc, 0xae, 0x11, 0xf8, 0xb2, 0x47, 0xce, 0x76, 0x8f, 0x9c, 0x5f, - 0x7b, 0xe4, 0x7c, 0x48, 0x73, 0x26, 0x3f, 0x7e, 0x9a, 0xaa, 0x8e, 0xa9, 0xe9, 0xfa, 0x80, 0xcf, - 0xe7, 0x6c, 0xc6, 0x70, 0x61, 0xff, 0xa7, 0xcd, 0xc5, 0x24, 0xd7, 0x82, 0x56, 0xd3, 0x33, 0x7d, - 0x27, 0x3d, 0xfa, 0x1b, 0x00, 0x00, 0xff, 0xff, 0x38, 0x33, 0x5f, 0xac, 0x44, 0x05, 0x00, 0x00, + 0x14, 0xc7, 0x33, 0xd6, 0x56, 0x9c, 0x8a, 0xd4, 0x58, 0xa5, 0x44, 0x9c, 0x94, 0x08, 0xd2, 0x8d, + 0x09, 0x55, 0xfc, 0xdc, 0xa5, 0x0a, 0xe2, 0xae, 0x16, 0xdd, 0xb8, 0x9b, 0x76, 0xa6, 0x71, 0x20, + 0xed, 0x0c, 0xc9, 0x58, 0xec, 0x5b, 0xf8, 0x18, 0x0a, 0x2e, 0x7c, 0x07, 0x37, 0x5d, 0x76, 0x79, + 0x57, 0xe5, 0xde, 0xf4, 0x0d, 0xfa, 0x04, 0x97, 0xf9, 0x08, 0x74, 0x91, 0xc2, 0xe5, 0x2e, 0xb2, + 0x6b, 0xf3, 0xff, 0x9d, 0x93, 0xdf, 0x1c, 0x4e, 0x06, 0xa2, 0x19, 0x5f, 0x10, 0xfa, 0x33, 0xc2, + 0x79, 0x4e, 0x65, 0xb4, 0x1a, 0x4e, 0xa9, 0xc4, 0xc3, 0x28, 0xe1, 0xab, 0x50, 0x64, 0x5c, 0x72, + 0xb7, 0x6b, 0xf2, 0x50, 0xe7, 0xa1, 0xcd, 0xbd, 0x6e, 0xc2, 0x13, 0xae, 0x81, 0x48, 0xfd, 0x32, + 0xac, 0xd7, 0xaf, 0xec, 0x65, 0x2a, 0x0d, 0xe1, 0x57, 0x12, 0x02, 0xb3, 0xcc, 0x02, 0xd5, 0x3a, + 0x58, 0x08, 0x93, 0x07, 0xff, 0x00, 0xbc, 0x17, 0x13, 0x12, 0xab, 0x38, 0x1f, 0x67, 0x5c, 0xf0, + 0x1c, 0xa7, 0xee, 0x53, 0xd8, 0x94, 0x4c, 0xa6, 0xb4, 0x07, 0xfa, 0x60, 0x70, 0x7b, 0xd4, 0x39, + 0xec, 0xfc, 0x3b, 0x6b, 0xbc, 0x48, 0xdf, 0x05, 0xfa, 0x71, 0x30, 0x31, 0xb1, 0xfb, 0x06, 0xb6, + 0x09, 0xcd, 0x67, 0x19, 0x13, 0x92, 0xf1, 0x65, 0xef, 0x86, 0xa6, 0x1f, 0x1e, 0x76, 0xbe, 0x6b, + 0xe8, 0xa3, 0x30, 0x98, 0x1c, 0xa3, 0xee, 0x5b, 0xd8, 0xd2, 0x4a, 0x79, 0xaf, 0xd1, 0x07, 0x83, + 0xf6, 0xf3, 0x47, 0x61, 0xd5, 0x5c, 0x42, 0xed, 0x35, 0xba, 0xb9, 0xd9, 0xf9, 0xce, 0xc4, 0x16, + 0x28, 0xe5, 0xfb, 0x5f, 0x05, 0xc1, 0x92, 0xea, 0xb4, 0x46, 0xe9, 0xd7, 0xb0, 0xa9, 0x1d, 0xae, + 0xee, 0x6c, 0xf8, 0xe0, 0x2f, 0x80, 0x9d, 0x98, 0x90, 0x31, 0x66, 0x59, 0x9d, 0x43, 0x7e, 0x05, + 0x9b, 0x6a, 0x15, 0xca, 0x19, 0x7b, 0xd5, 0xbe, 0xca, 0xaa, 0xd4, 0xd5, 0x78, 0xf0, 0x07, 0xc0, + 0xbb, 0x6a, 0x29, 0x84, 0xa8, 0x51, 0xf6, 0x25, 0x6c, 0x60, 0x21, 0xac, 0xea, 0xe3, 0x13, 0xa3, + 0x15, 0xe2, 0x03, 0x96, 0xd8, 0xda, 0x2a, 0x3e, 0xf8, 0x0f, 0xa0, 0x67, 0xb6, 0xe1, 0x23, 0x5f, + 0x7d, 0x61, 0x0b, 0xfa, 0x69, 0x59, 0xaf, 0xf7, 0x7b, 0x78, 0x2b, 0x31, 0x6f, 0xb6, 0xee, 0x4f, + 0x4e, 0xba, 0xc7, 0x4b, 0x62, 0x25, 0xed, 0x09, 0xca, 0x4a, 0xb5, 0xd3, 0x0f, 0xca, 0xcf, 0xb0, + 0xee, 0x03, 0x5c, 0x6f, 0xf0, 0xa3, 0xcf, 0x9b, 0x0b, 0xe4, 0xfc, 0x2e, 0x90, 0xb3, 0x29, 0x10, + 0xd8, 0x16, 0x08, 0x9c, 0x17, 0x08, 0xfc, 0xda, 0x23, 0x67, 0xbb, 0x47, 0xce, 0xd9, 0x1e, 0x39, + 0xdf, 0xa2, 0x84, 0xc9, 0xef, 0x3f, 0xa6, 0xaa, 0x63, 0x64, 0xba, 0x3e, 0xe3, 0xf3, 0x39, 0x9b, + 0x31, 0x9c, 0xda, 0xff, 0x51, 0x79, 0x31, 0xc9, 0xb5, 0xa0, 0xf9, 0xb4, 0xa5, 0xef, 0xa4, 0x17, + 0x97, 0x01, 0x00, 0x00, 0xff, 0xff, 0x32, 0xd8, 0x45, 0xef, 0x44, 0x05, 0x00, 0x00, } func (m *AddAssetsProposal) Marshal() (dAtA []byte, err error) { @@ -319,20 +319,16 @@ func (m *AddAssetsProposal) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l - if len(m.Assets) > 0 { - for iNdEx := len(m.Assets) - 1; iNdEx >= 0; iNdEx-- { - { - size, err := m.Assets[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGov(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x1a + { + size, err := m.Assets.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err } + i -= size + i = encodeVarintGov(dAtA, i, uint64(size)) } + i-- + dAtA[i] = 0x1a if len(m.Description) > 0 { i -= len(m.Description) copy(dAtA[i:], m.Description) @@ -417,20 +413,16 @@ func (m *AddPairsProposal) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l - if len(m.Pairs) > 0 { - for iNdEx := len(m.Pairs) - 1; iNdEx >= 0; iNdEx-- { - { - size, err := m.Pairs[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGov(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x1a + { + size, err := m.Pairs.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err } + i -= size + i = encodeVarintGov(dAtA, i, uint64(size)) } + i-- + dAtA[i] = 0x1a if len(m.Description) > 0 { i -= len(m.Description) copy(dAtA[i:], m.Description) @@ -468,20 +460,16 @@ func (m *AddAppProposal) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l - if len(m.App) > 0 { - for iNdEx := len(m.App) - 1; iNdEx >= 0; iNdEx-- { - { - size, err := m.App[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGov(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x1a + { + size, err := m.App.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err } + i -= size + i = encodeVarintGov(dAtA, i, uint64(size)) } + i-- + dAtA[i] = 0x1a if len(m.Description) > 0 { i -= len(m.Description) copy(dAtA[i:], m.Description) @@ -566,20 +554,16 @@ func (m *AddAssetInAppProposal) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l - if len(m.App) > 0 { - for iNdEx := len(m.App) - 1; iNdEx >= 0; iNdEx-- { - { - size, err := m.App[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGov(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x1a + { + size, err := m.App.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err } + i -= size + i = encodeVarintGov(dAtA, i, uint64(size)) } + i-- + dAtA[i] = 0x1a if len(m.Description) > 0 { i -= len(m.Description) copy(dAtA[i:], m.Description) @@ -622,12 +606,8 @@ func (m *AddAssetsProposal) Size() (n int) { if l > 0 { n += 1 + l + sovGov(uint64(l)) } - if len(m.Assets) > 0 { - for _, e := range m.Assets { - l = e.Size() - n += 1 + l + sovGov(uint64(l)) - } - } + l = m.Assets.Size() + n += 1 + l + sovGov(uint64(l)) return n } @@ -664,12 +644,8 @@ func (m *AddPairsProposal) Size() (n int) { if l > 0 { n += 1 + l + sovGov(uint64(l)) } - if len(m.Pairs) > 0 { - for _, e := range m.Pairs { - l = e.Size() - n += 1 + l + sovGov(uint64(l)) - } - } + l = m.Pairs.Size() + n += 1 + l + sovGov(uint64(l)) return n } @@ -687,12 +663,8 @@ func (m *AddAppProposal) Size() (n int) { if l > 0 { n += 1 + l + sovGov(uint64(l)) } - if len(m.App) > 0 { - for _, e := range m.App { - l = e.Size() - n += 1 + l + sovGov(uint64(l)) - } - } + l = m.App.Size() + n += 1 + l + sovGov(uint64(l)) return n } @@ -729,12 +701,8 @@ func (m *AddAssetInAppProposal) Size() (n int) { if l > 0 { n += 1 + l + sovGov(uint64(l)) } - if len(m.App) > 0 { - for _, e := range m.App { - l = e.Size() - n += 1 + l + sovGov(uint64(l)) - } - } + l = m.App.Size() + n += 1 + l + sovGov(uint64(l)) return n } @@ -866,8 +834,7 @@ func (m *AddAssetsProposal) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Assets = append(m.Assets, Asset{}) - if err := m.Assets[len(m.Assets)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.Assets.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -1161,8 +1128,7 @@ func (m *AddPairsProposal) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Pairs = append(m.Pairs, Pair{}) - if err := m.Pairs[len(m.Pairs)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.Pairs.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -1309,8 +1275,7 @@ func (m *AddAppProposal) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.App = append(m.App, AppData{}) - if err := m.App[len(m.App)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.App.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -1604,8 +1569,7 @@ func (m *AddAssetInAppProposal) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.App = append(m.App, AppData{}) - if err := m.App[len(m.App)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.App.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex diff --git a/x/asset/types/pair.go b/x/asset/types/pair.go index 65f3f57e2..532e1e88e 100644 --- a/x/asset/types/pair.go +++ b/x/asset/types/pair.go @@ -5,9 +5,6 @@ import ( ) func (m *Pair) Validate() error { - // if m.Id == 0 { - // return fmt.Errorf("id cannot be zero") - // } if m.AssetIn == 0 { return fmt.Errorf("asset_in cannot be zero") } diff --git a/x/auction/abci.go b/x/auction/abci.go index 3631b0a42..a25272622 100644 --- a/x/auction/abci.go +++ b/x/auction/abci.go @@ -1,33 +1,74 @@ package auction import ( + utils "github.com/comdex-official/comdex/types" "github.com/comdex-official/comdex/x/auction/keeper" + "github.com/comdex-official/comdex/x/auction/types" + "github.com/cosmos/cosmos-sdk/telemetry" sdk "github.com/cosmos/cosmos-sdk/types" ) func BeginBlocker(ctx sdk.Context, k keeper.Keeper) { - err1 := k.SurplusActivator(ctx) - if err1 != nil { - return - } - err2 := k.DebtActivator(ctx) - if err2 != nil { - return - } - err3 := k.DutchActivator(ctx) - if err3 != nil { - return - } - err4 := k.RestartDutch(ctx) - if err4 != nil { - return - } - err5 := k.LendDutchActivator(ctx) - if err5 != nil { - return - } - err6 := k.RestartLendDutch(ctx) - if err6 != nil { - return - } + + defer telemetry.ModuleMeasureSince(types.ModuleName, ctx.BlockTime(), telemetry.MetricKeyBeginBlocker) + + _ = utils.ApplyFuncIfNoError(ctx, func(ctx sdk.Context) error { + auctionMapData, auctionMappingFound := k.GetAllAuctionMappingForApp(ctx) + if auctionMappingFound { + for _, data := range auctionMapData { + for _, inData := range data.AssetIdToAuctionLookup { + killSwitchParams, _ := k.GetKillSwitchData(ctx, data.AppId) + esmStatus, found := k.GetESMStatus(ctx, data.AppId) + status := false + if found { + status = esmStatus.Status + } + err1 := k.SurplusActivator(ctx, data, inData, killSwitchParams, status) + if err1 != nil { + ctx.Logger().Error("error in surplus activator") + } + err2 := k.DebtActivator(ctx, data, inData, killSwitchParams, status) + if err2 != nil { + ctx.Logger().Error("error in debt activator") + } + err3 := k.DistributorActivator(ctx, data, inData, killSwitchParams, status) + if err3 != nil { + ctx.Logger().Error("error in distributor activator") + } + + } + } + } + + lockedVaults := k.GetLockedVaults(ctx) + + if len(lockedVaults) > 0 { + err3 := k.DutchActivator(ctx, lockedVaults) + if err3 != nil { + ctx.Logger().Error("error in dutch activator") + } + + err5 := k.LendDutchActivator(ctx, lockedVaults) + if err5 != nil { + ctx.Logger().Error("error in lend dutch activator") + } + } + + apps, appsFound := k.GetApps(ctx) + + if appsFound { + for _, app := range apps { + err4 := k.RestartDutch(ctx, app.Id) + if err4 != nil { + ctx.Logger().Error("error in restart dutch activator") + } + + err6 := k.RestartLendDutch(ctx, app.Id) + if err6 != nil { + ctx.Logger().Error("error in restart lend dutch activator") + } + } + } + return nil + }) } diff --git a/x/auction/expected/keeper.go b/x/auction/expected/keeper.go index de38ac2d7..1323f7f9e 100644 --- a/x/auction/expected/keeper.go +++ b/x/auction/expected/keeper.go @@ -37,7 +37,6 @@ type LiquidationKeeper interface { SetLockedVault(ctx sdk.Context, lockedVault liquidationtypes.LockedVault) DeleteLockedVault(ctx sdk.Context, id uint64) CreateLockedVaultHistory(ctx sdk.Context, lockedVault liquidationtypes.LockedVault) error - //UpdateAssetQuantitiesInLockedVault(ctx sdk.Context, collateral_auction auctiontypes.CollateralAuction, amountIn sdk.Int, assetIn assettypes.Asset, amountOut sdk.Int, assetOut assettypes.Asset) error } type AssetKeeper interface { @@ -100,4 +99,8 @@ type LendKeeper interface { UpdateBorrowIdsMapping(ctx sdk.Context, borrowID uint64, isInsert bool) error CreteNewBorrow(ctx sdk.Context, liqBorrow liquidationtypes.LockedVault) GetPool(ctx sdk.Context, id uint64) (pool lendtypes.Pool, found bool) + GetAddAuctionParamsData(ctx sdk.Context, appID uint64) (auctionParams lendtypes.AuctionParams, found bool) + GetReserveDepositStats(ctx sdk.Context) (depositStats lendtypes.DepositStats, found bool) + ModuleBalance(ctx sdk.Context, moduleName string, denom string) sdk.Int + UpdateReserveBalances(ctx sdk.Context, assetID uint64, moduleName string, payment sdk.Coin, inc bool) error } diff --git a/x/auction/genesis.go b/x/auction/genesis.go index 80eea8b18..3dc8b40e5 100644 --- a/x/auction/genesis.go +++ b/x/auction/genesis.go @@ -6,19 +6,49 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" ) -// InitGenesis initializes the capability module's state from a provided genesis. -// state. -func InitGenesis(ctx sdk.Context, k keeper.Keeper, genState types.GenesisState) { - // this line is used by starport scaffolding # genesis/module/init. - k.SetParams(ctx, genState.Params) +func InitGenesis(ctx sdk.Context, k keeper.Keeper, state *types.GenesisState) { + + k.SetParams(ctx, state.Params) + + for _, item := range state.SurplusAuction { + err := k.SetSurplusAuction(ctx, item) + if err != nil { + return + } + } + + for _, item := range state.DebtAuction { + err := k.SetDebtAuction(ctx, item) + if err != nil { + return + } + } + + for _, item := range state.DutchAuction { + err := k.SetDutchAuction(ctx, item) + if err != nil { + return + } + } + + for _, item := range state.ProtocolStatistics { + k.SetProtocolStatistics(ctx, item.AppId, item.AssetId, sdk.Int(item.Loss)) + } + + for _, item := range state.AuctionParams { + k.SetAuctionParams(ctx, item) + } + } -// ExportGenesis returns the capability module's exported genesis. func ExportGenesis(ctx sdk.Context, k keeper.Keeper) *types.GenesisState { - genesis := types.DefaultGenesis() - genesis.Params = k.GetParams(ctx) - - // this line is used by starport scaffolding # genesis/module/export. - return genesis + return types.NewGenesisState( + k.GetAllSurplusAuctions(ctx), + k.GetAllDebtAuctions(ctx), + k.GetAllDutchAuctions(ctx), + k.GetAllProtocolStat(ctx), + k.GetAllAuctionParams(ctx), + k.GetParams(ctx), + ) } diff --git a/x/auction/keeper/alias.go b/x/auction/keeper/alias.go index 189085170..fe2524f0b 100644 --- a/x/auction/keeper/alias.go +++ b/x/auction/keeper/alias.go @@ -2,6 +2,7 @@ package keeper import ( assettypes "github.com/comdex-official/comdex/x/asset/types" + auctiontypes "github.com/comdex-official/comdex/x/auction/types" "github.com/comdex-official/comdex/x/collector/types" esmtypes "github.com/comdex-official/comdex/x/esm/types" lendtypes "github.com/comdex-official/comdex/x/lend/types" @@ -11,151 +12,155 @@ import ( authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" ) -func (k *Keeper) GetModuleAccount(ctx sdk.Context, name string) authtypes.ModuleAccountI { +func (k Keeper) GetModuleAccount(ctx sdk.Context, name string) authtypes.ModuleAccountI { return k.account.GetModuleAccount(ctx, name) } -func (k *Keeper) GetModuleAddress(_ sdk.Context, name string) sdk.AccAddress { +func (k Keeper) GetModuleAddress(_ sdk.Context, name string) sdk.AccAddress { return k.account.GetModuleAddress(name) } -func (k *Keeper) GetBalance(ctx sdk.Context, addr sdk.AccAddress, denom string) sdk.Coin { +func (k Keeper) GetBalance(ctx sdk.Context, addr sdk.AccAddress, denom string) sdk.Coin { return k.bank.GetBalance(ctx, addr, denom) } -func (k *Keeper) MintCoins(ctx sdk.Context, name string, coin sdk.Coin) error { +func (k Keeper) BurnCoins(ctx sdk.Context, name string, coin sdk.Coin) error { if coin.IsZero() { - return nil + return auctiontypes.BurnCoinValueInCloseAuctionIsZero } - return k.bank.MintCoins(ctx, name, sdk.NewCoins(coin)) + return k.bank.BurnCoins(ctx, name, sdk.NewCoins(coin)) } -func (k *Keeper) BurnCoins(ctx sdk.Context, name string, coin sdk.Coin) error { +func (k Keeper) SendCoinsFromModuleToModule(ctx sdk.Context, senderModule string, recipientModule string, coin sdk.Coins) error { if coin.IsZero() { - return nil + return auctiontypes.SendCoinsFromModuleToModuleInAuctionIsZero } - return k.bank.BurnCoins(ctx, name, sdk.NewCoins(coin)) + return k.bank.SendCoinsFromModuleToModule(ctx, senderModule, recipientModule, coin) } +func (k Keeper) SendCoinsFromModuleToAccount(ctx sdk.Context, senderModule string, recipientAddr sdk.AccAddress, coin sdk.Coins) error { + if coin.IsZero() { + return auctiontypes.SendCoinsFromModuleToAccountInAuctionIsZero + } -func (k *Keeper) SendCoinsFromModuleToModule(ctx sdk.Context, senderModule string, recipientModule string, amt sdk.Coins) error { - return k.bank.SendCoinsFromModuleToModule(ctx, senderModule, recipientModule, amt) + return k.bank.SendCoinsFromModuleToAccount(ctx, senderModule, recipientAddr, coin) } -func (k *Keeper) SendCoinsFromModuleToAccount(ctx sdk.Context, senderModule string, recipientAddr sdk.AccAddress, amt sdk.Coins) error { - return k.bank.SendCoinsFromModuleToAccount(ctx, senderModule, recipientAddr, amt) -} -func (k *Keeper) SendCoinsFromAccountToModule(ctx sdk.Context, senderAddr sdk.AccAddress, recipientModule string, amt sdk.Coins) error { - return k.bank.SendCoinsFromAccountToModule(ctx, senderAddr, recipientModule, amt) +func (k Keeper) SendCoinsFromAccountToModule(ctx sdk.Context, senderAddr sdk.AccAddress, recipientModule string, coin sdk.Coins) error { + if coin.IsZero() { + return auctiontypes.SendCoinsFromAccountToModuleInAuctionIsZero + } + + return k.bank.SendCoinsFromAccountToModule(ctx, senderAddr, recipientModule, coin) } -func (k *Keeper) GetPriceForAsset(ctx sdk.Context, id uint64) (uint64, bool) { +func (k Keeper) GetPriceForAsset(ctx sdk.Context, id uint64) (uint64, bool) { return k.market.GetPriceForAsset(ctx, id) } -func (k *Keeper) GetLockedVaults(ctx sdk.Context) (lockedVaults []liquidationtypes.LockedVault) { +func (k Keeper) GetLockedVaults(ctx sdk.Context) (lockedVaults []liquidationtypes.LockedVault) { return k.liquidation.GetLockedVaults(ctx) } -func (k *Keeper) GetPair(ctx sdk.Context, id uint64) (assettypes.Pair, bool) { +func (k Keeper) GetPair(ctx sdk.Context, id uint64) (assettypes.Pair, bool) { return k.asset.GetPair(ctx, id) } -func (k *Keeper) GetAsset(ctx sdk.Context, id uint64) (assettypes.Asset, bool) { +func (k Keeper) GetAsset(ctx sdk.Context, id uint64) (assettypes.Asset, bool) { return k.asset.GetAsset(ctx, id) } -func (k *Keeper) SetFlagIsAuctionInProgress(ctx sdk.Context, id uint64, flag bool) error { +func (k Keeper) SetFlagIsAuctionInProgress(ctx sdk.Context, id uint64, flag bool) error { return k.liquidation.SetFlagIsAuctionInProgress(ctx, id, flag) } -func (k *Keeper) SetFlagIsAuctionComplete(ctx sdk.Context, id uint64, flag bool) error { +func (k Keeper) SetFlagIsAuctionComplete(ctx sdk.Context, id uint64, flag bool) error { return k.liquidation.SetFlagIsAuctionComplete(ctx, id, flag) } -func (k *Keeper) GetAppidToAssetCollectorMapping(ctx sdk.Context, appID uint64) (appAssetCollectorData types.AppIdToAssetCollectorMapping, found bool) { +func (k Keeper) GetAppidToAssetCollectorMapping(ctx sdk.Context, appID uint64) (appAssetCollectorData types.AppIdToAssetCollectorMapping, found bool) { return k.collector.GetAppidToAssetCollectorMapping(ctx, appID) } -func (k *Keeper) UpdateCollector(ctx sdk.Context, appID, assetID uint64, CollectedStabilityFee, CollectedClosingFee, CollectedOpeningFee, LiquidationRewardsCollected sdk.Int) error { +func (k Keeper) UpdateCollector(ctx sdk.Context, appID, assetID uint64, CollectedStabilityFee, CollectedClosingFee, CollectedOpeningFee, LiquidationRewardsCollected sdk.Int) error { return k.collector.UpdateCollector(ctx, appID, assetID, CollectedStabilityFee, CollectedClosingFee, CollectedOpeningFee, LiquidationRewardsCollected) } -func (k *Keeper) SetCollectorLookupTable(ctx sdk.Context, records ...types.CollectorLookupTable) error { +func (k Keeper) SetCollectorLookupTable(ctx sdk.Context, records ...types.CollectorLookupTable) error { return k.collector.SetCollectorLookupTable(ctx, records...) } -func (k *Keeper) GetCollectorLookupTable(ctx sdk.Context, appID uint64) (collectorLookup types.CollectorLookup, found bool) { +func (k Keeper) GetCollectorLookupTable(ctx sdk.Context, appID uint64) (collectorLookup types.CollectorLookup, found bool) { return k.collector.GetCollectorLookupTable(ctx, appID) } -func (k *Keeper) GetNetFeeCollectedData(ctx sdk.Context, appID uint64) (netFeeData types.NetFeeCollectedData, found bool) { +func (k Keeper) GetNetFeeCollectedData(ctx sdk.Context, appID uint64) (netFeeData types.NetFeeCollectedData, found bool) { return k.collector.GetNetFeeCollectedData(ctx, appID) } -func (k *Keeper) GetApps(ctx sdk.Context) (apps []assettypes.AppData, found bool) { +func (k Keeper) GetApps(ctx sdk.Context) (apps []assettypes.AppData, found bool) { return k.asset.GetApps(ctx) } -func (k *Keeper) GetApp(ctx sdk.Context, id uint64) (app assettypes.AppData, found bool) { +func (k Keeper) GetApp(ctx sdk.Context, id uint64) (app assettypes.AppData, found bool) { return k.asset.GetApp(ctx, id) } -func (k *Keeper) MintNewTokensForApp(ctx sdk.Context, appMappingID uint64, assetID uint64, address string, amount sdk.Int) error { +func (k Keeper) MintNewTokensForApp(ctx sdk.Context, appMappingID uint64, assetID uint64, address string, amount sdk.Int) error { return k.tokenMint.MintNewTokensForApp(ctx, appMappingID, assetID, address, amount) } -func (k *Keeper) BurnTokensForApp(ctx sdk.Context, appMappingID uint64, assetID uint64, amount sdk.Int) error { +func (k Keeper) BurnTokensForApp(ctx sdk.Context, appMappingID uint64, assetID uint64, amount sdk.Int) error { return k.tokenMint.BurnTokensForApp(ctx, appMappingID, assetID, amount) } -func (k *Keeper) GetAmountFromCollector(ctx sdk.Context, appID, assetID uint64, amount sdk.Int) (sdk.Int, error) { +func (k Keeper) GetAmountFromCollector(ctx sdk.Context, appID, assetID uint64, amount sdk.Int) (sdk.Int, error) { return k.collector.GetAmountFromCollector(ctx, appID, assetID, amount) } -func (k *Keeper) SetNetFeeCollectedData(ctx sdk.Context, appID, assetID uint64, fee sdk.Int) error { +func (k Keeper) SetNetFeeCollectedData(ctx sdk.Context, appID, assetID uint64, fee sdk.Int) error { return k.collector.SetNetFeeCollectedData(ctx, appID, assetID, fee) } -func (k *Keeper) GetLockedVault(ctx sdk.Context, id uint64) (lockedVault liquidationtypes.LockedVault, found bool) { +func (k Keeper) GetLockedVault(ctx sdk.Context, id uint64) (lockedVault liquidationtypes.LockedVault, found bool) { return k.liquidation.GetLockedVault(ctx, id) } -func (k *Keeper) SetLockedVault(ctx sdk.Context, lockedVault liquidationtypes.LockedVault) { +func (k Keeper) SetLockedVault(ctx sdk.Context, lockedVault liquidationtypes.LockedVault) { k.liquidation.SetLockedVault(ctx, lockedVault) } -func (k *Keeper) GetPairsVault(ctx sdk.Context, id uint64) (pairs assettypes.ExtendedPairVault, found bool) { +func (k Keeper) GetPairsVault(ctx sdk.Context, id uint64) (pairs assettypes.ExtendedPairVault, found bool) { return k.asset.GetPairsVault(ctx, id) } -func (k *Keeper) GetAppExtendedPairVaultMapping(ctx sdk.Context, appMappingID uint64) (appExtendedPairVaultData vaulttypes.AppExtendedPairVaultMapping, found bool) { +func (k Keeper) GetAppExtendedPairVaultMapping(ctx sdk.Context, appMappingID uint64) (appExtendedPairVaultData vaulttypes.AppExtendedPairVaultMapping, found bool) { return k.vault.GetAppExtendedPairVaultMapping(ctx, appMappingID) } -func (k *Keeper) SetAppExtendedPairVaultMapping(ctx sdk.Context, appExtendedPairVaultData vaulttypes.AppExtendedPairVaultMapping) error { +func (k Keeper) SetAppExtendedPairVaultMapping(ctx sdk.Context, appExtendedPairVaultData vaulttypes.AppExtendedPairVaultMapping) error { return k.vault.SetAppExtendedPairVaultMapping(ctx, appExtendedPairVaultData) } -func (k *Keeper) GetAuctionMappingForApp(ctx sdk.Context, appID uint64) (collectorAuctionLookupTable types.CollectorAuctionLookupTable, found bool) { +func (k Keeper) GetAuctionMappingForApp(ctx sdk.Context, appID uint64) (collectorAuctionLookupTable types.CollectorAuctionLookupTable, found bool) { return k.collector.GetAuctionMappingForApp(ctx, appID) } -func (k *Keeper) SetAuctionMappingForApp(ctx sdk.Context, records ...types.CollectorAuctionLookupTable) error { +func (k Keeper) SetAuctionMappingForApp(ctx sdk.Context, records ...types.CollectorAuctionLookupTable) error { return k.collector.SetAuctionMappingForApp(ctx, records...) } -func (k *Keeper) UpdateTokenMintedAmountLockerMapping(ctx sdk.Context, vaultLookupData vaulttypes.AppExtendedPairVaultMapping, extendedPairID uint64, amount sdk.Int, changeType bool) { +func (k Keeper) UpdateTokenMintedAmountLockerMapping(ctx sdk.Context, vaultLookupData vaulttypes.AppExtendedPairVaultMapping, extendedPairID uint64, amount sdk.Int, changeType bool) { k.vault.UpdateTokenMintedAmountLockerMapping(ctx, vaultLookupData, extendedPairID, amount, changeType) } -func (k *Keeper) UpdateCollateralLockedAmountLockerMapping(ctx sdk.Context, vaultLookupData vaulttypes.AppExtendedPairVaultMapping, extendedPairID uint64, amount sdk.Int, changeType bool) { +func (k Keeper) UpdateCollateralLockedAmountLockerMapping(ctx sdk.Context, vaultLookupData vaulttypes.AppExtendedPairVaultMapping, extendedPairID uint64, amount sdk.Int, changeType bool) { k.vault.UpdateCollateralLockedAmountLockerMapping(ctx, vaultLookupData, extendedPairID, amount, changeType) } -func (k *Keeper) GetAllAuctionMappingForApp(ctx sdk.Context) (collectorAuctionLookupTable []types.CollectorAuctionLookupTable, found bool) { +func (k Keeper) GetAllAuctionMappingForApp(ctx sdk.Context) (collectorAuctionLookupTable []types.CollectorAuctionLookupTable, found bool) { return k.collector.GetAllAuctionMappingForApp(ctx) } -func (k *Keeper) DeleteLockedVault(ctx sdk.Context, id uint64) { +func (k Keeper) DeleteLockedVault(ctx sdk.Context, id uint64) { k.liquidation.DeleteLockedVault(ctx, id) } -func (k *Keeper) UpdateUserVaultExtendedPairMapping(ctx sdk.Context, extendedPairID uint64, userAddress string, appMappingID uint64) { +func (k Keeper) UpdateUserVaultExtendedPairMapping(ctx sdk.Context, extendedPairID uint64, userAddress string, appMappingID uint64) { k.vault.UpdateUserVaultExtendedPairMapping(ctx, extendedPairID, userAddress, appMappingID) } @@ -163,86 +168,102 @@ func (k Keeper) CreateLockedVaultHistory(ctx sdk.Context, lockedVault liquidatio return k.liquidation.CreateLockedVaultHistory(ctx, lockedVault) } -func (k *Keeper) GetKillSwitchData(ctx sdk.Context, app_id uint64) (esmtypes.KillSwitchParams, bool) { +func (k Keeper) GetKillSwitchData(ctx sdk.Context, app_id uint64) (esmtypes.KillSwitchParams, bool) { return k.esm.GetKillSwitchData(ctx, app_id) } -func (k *Keeper) GetESMStatus(ctx sdk.Context, id uint64) (esmtypes.ESMStatus, bool) { +func (k Keeper) GetESMStatus(ctx sdk.Context, id uint64) (esmtypes.ESMStatus, bool) { return k.esm.GetESMStatus(ctx, id) } -func (k *Keeper) CreateNewVault(ctx sdk.Context, From string, AppId uint64, ExtendedPairVaultID uint64, AmountIn sdk.Int, AmountOut sdk.Int) error { +func (k Keeper) CreateNewVault(ctx sdk.Context, From string, AppId uint64, ExtendedPairVaultID uint64, AmountIn sdk.Int, AmountOut sdk.Int) error { return k.vault.CreateNewVault(ctx, From, AppId, ExtendedPairVaultID, AmountIn, AmountOut) } -func (k *Keeper) GetUserVaultExtendedPairMapping(ctx sdk.Context, address string) (userVaultAssetData vaulttypes.UserVaultAssetMapping, found bool) { +func (k Keeper) GetUserVaultExtendedPairMapping(ctx sdk.Context, address string) (userVaultAssetData vaulttypes.UserVaultAssetMapping, found bool) { return k.vault.GetUserVaultExtendedPairMapping(ctx, address) } -func (k *Keeper) CheckUserAppToExtendedPairMapping(ctx sdk.Context, userVaultAssetData vaulttypes.UserVaultAssetMapping, extendedPairVaultID uint64, appMappingID uint64) (vaultID string, found bool) { +func (k Keeper) CheckUserAppToExtendedPairMapping(ctx sdk.Context, userVaultAssetData vaulttypes.UserVaultAssetMapping, extendedPairVaultID uint64, appMappingID uint64) (vaultID string, found bool) { return k.vault.CheckUserAppToExtendedPairMapping(ctx, userVaultAssetData, extendedPairVaultID, appMappingID) } -func (k *Keeper) SetVault(ctx sdk.Context, vault vaulttypes.Vault) { +func (k Keeper) SetVault(ctx sdk.Context, vault vaulttypes.Vault) { k.vault.SetVault(ctx, vault) } -func (k *Keeper) GetVault(ctx sdk.Context, id string) (vault vaulttypes.Vault, found bool) { +func (k Keeper) GetVault(ctx sdk.Context, id string) (vault vaulttypes.Vault, found bool) { return k.vault.GetVault(ctx, id) } -func (k *Keeper) GetBorrows(ctx sdk.Context) (userBorrows lendtypes.BorrowMapping, found bool) { +func (k Keeper) GetBorrows(ctx sdk.Context) (userBorrows lendtypes.BorrowMapping, found bool) { return k.lend.GetBorrows(ctx) } -func (k *Keeper) GetBorrow(ctx sdk.Context, id uint64) (borrow lendtypes.BorrowAsset, found bool) { +func (k Keeper) GetBorrow(ctx sdk.Context, id uint64) (borrow lendtypes.BorrowAsset, found bool) { return k.lend.GetBorrow(ctx, id) } -func (k *Keeper) GetLendPair(ctx sdk.Context, id uint64) (pair lendtypes.Extended_Pair, found bool) { +func (k Keeper) GetLendPair(ctx sdk.Context, id uint64) (pair lendtypes.Extended_Pair, found bool) { return k.lend.GetLendPair(ctx, id) } -func (k *Keeper) GetAssetRatesStats(ctx sdk.Context, assetID uint64) (assetRatesStats lendtypes.AssetRatesStats, found bool) { +func (k Keeper) GetAssetRatesStats(ctx sdk.Context, assetID uint64) (assetRatesStats lendtypes.AssetRatesStats, found bool) { return k.lend.GetAssetRatesStats(ctx, assetID) } -func (k *Keeper) VerifyCollaterlizationRatio(ctx sdk.Context, amountIn sdk.Int, assetIn assettypes.Asset, amountOut sdk.Int, assetOut assettypes.Asset, liquidationThreshold sdk.Dec) error { +func (k Keeper) VerifyCollaterlizationRatio(ctx sdk.Context, amountIn sdk.Int, assetIn assettypes.Asset, amountOut sdk.Int, assetOut assettypes.Asset, liquidationThreshold sdk.Dec) error { return k.lend.VerifyCollaterlizationRatio(ctx, amountIn, assetIn, amountOut, assetOut, liquidationThreshold) } -func (k *Keeper) CalculateLendCollaterlizationRatio(ctx sdk.Context, amountIn sdk.Int, assetIn assettypes.Asset, amountOut sdk.Int, assetOut assettypes.Asset) (sdk.Dec, error) { +func (k Keeper) CalculateLendCollaterlizationRatio(ctx sdk.Context, amountIn sdk.Int, assetIn assettypes.Asset, amountOut sdk.Int, assetOut assettypes.Asset) (sdk.Dec, error) { return k.lend.CalculateCollaterlizationRatio(ctx, amountIn, assetIn, amountOut, assetOut) } -func (k *Keeper) GetLend(ctx sdk.Context, id uint64) (lend lendtypes.LendAsset, found bool) { +func (k Keeper) GetLend(ctx sdk.Context, id uint64) (lend lendtypes.LendAsset, found bool) { return k.lend.GetLend(ctx, id) } -func (k *Keeper) DeleteBorrow(ctx sdk.Context, id uint64) { +func (k Keeper) DeleteBorrow(ctx sdk.Context, id uint64) { k.lend.DeleteBorrow(ctx, id) } -func (k *Keeper) DeleteBorrowForAddressByPair(ctx sdk.Context, address sdk.AccAddress, pairID uint64) { +func (k Keeper) DeleteBorrowForAddressByPair(ctx sdk.Context, address sdk.AccAddress, pairID uint64) { k.lend.DeleteBorrowForAddressByPair(ctx, address, pairID) } -func (k *Keeper) UpdateUserBorrowIDMapping(ctx sdk.Context, borrowOwner string, borrowID uint64, isInsert bool) error { +func (k Keeper) UpdateUserBorrowIDMapping(ctx sdk.Context, borrowOwner string, borrowID uint64, isInsert bool) error { return k.lend.UpdateUserBorrowIDMapping(ctx, borrowOwner, borrowID, isInsert) } -func (k *Keeper) UpdateBorrowIDByOwnerAndPoolMapping(ctx sdk.Context, borrowOwner string, borrowID uint64, poolID uint64, isInsert bool) error { +func (k Keeper) UpdateBorrowIDByOwnerAndPoolMapping(ctx sdk.Context, borrowOwner string, borrowID uint64, poolID uint64, isInsert bool) error { return k.lend.UpdateBorrowIDByOwnerAndPoolMapping(ctx, borrowOwner, borrowID, poolID, isInsert) } -func (k *Keeper) UpdateBorrowIdsMapping(ctx sdk.Context, borrowID uint64, isInsert bool) error { +func (k Keeper) UpdateBorrowIdsMapping(ctx sdk.Context, borrowID uint64, isInsert bool) error { return k.lend.UpdateBorrowIdsMapping(ctx, borrowID, isInsert) } -func (k *Keeper) CreteNewBorrow(ctx sdk.Context, liqBorrow liquidationtypes.LockedVault) { +func (k Keeper) CreteNewBorrow(ctx sdk.Context, liqBorrow liquidationtypes.LockedVault) { k.lend.CreteNewBorrow(ctx, liqBorrow) } -func (k *Keeper) GetPool(ctx sdk.Context, id uint64) (pool lendtypes.Pool, found bool) { +func (k Keeper) GetPool(ctx sdk.Context, id uint64) (pool lendtypes.Pool, found bool) { return k.lend.GetPool(ctx, id) } + +func (k Keeper) GetAddAuctionParamsData(ctx sdk.Context, appID uint64) (auctionParams lendtypes.AuctionParams, found bool) { + return k.lend.GetAddAuctionParamsData(ctx, appID) +} + +func (k Keeper) GetReserveDepositStats(ctx sdk.Context) (depositStats lendtypes.DepositStats, found bool) { + return k.lend.GetReserveDepositStats(ctx) +} + +func (k Keeper) ModuleBalance(ctx sdk.Context, moduleName string, denom string) sdk.Int { + return k.lend.ModuleBalance(ctx, moduleName, denom) +} + +func (k Keeper) UpdateReserveBalances(ctx sdk.Context, assetID uint64, moduleName string, payment sdk.Coin, inc bool) error { + return k.lend.UpdateReserveBalances(ctx, assetID, moduleName, payment, inc) +} diff --git a/x/auction/keeper/debt.go b/x/auction/keeper/debt.go index a3d65dd89..6b87f4c49 100644 --- a/x/auction/keeper/debt.go +++ b/x/auction/keeper/debt.go @@ -1,6 +1,7 @@ package keeper import ( + esmtypes "github.com/comdex-official/comdex/x/esm/types" "time" auctiontypes "github.com/comdex-official/comdex/x/auction/types" @@ -9,34 +10,20 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" ) -func (k Keeper) DebtActivator(ctx sdk.Context) error { - auctionMapData, found := k.GetAllAuctionMappingForApp(ctx) - if !found { - return nil +func (k Keeper) DebtActivator(ctx sdk.Context, data collectortypes.CollectorAuctionLookupTable, + inData collectortypes.AssetIdToAuctionLookupTable, killSwitchParams esmtypes.KillSwitchParams, status bool) error { + if inData.IsDebtAuction && !inData.IsAuctionActive && !killSwitchParams.BreakerEnable && !status { + err := k.CreateDebtAuction(ctx, data.AppId, inData.AssetId) + if err != nil { + return err + } } - for _, data := range auctionMapData { - for _, inData := range data.AssetIdToAuctionLookup { - klwsParams, _ := k.GetKillSwitchData(ctx, data.AppId) - esmStatus, found := k.GetESMStatus(ctx, data.AppId) - status := false - if found { - status = esmStatus.Status - } - if inData.IsDebtAuction && !inData.IsAuctionActive && !klwsParams.BreakerEnable && !status { - err := k.CreateDebtAuction(ctx, data.AppId, inData.AssetId) - if err != nil { - return err - } - } - if inData.IsDebtAuction && inData.IsAuctionActive { - err := k.DebtAuctionClose(ctx, data.AppId, status) - if err != nil { - return err - } - } + if inData.IsDebtAuction && inData.IsAuctionActive { + err := k.DebtAuctionClose(ctx, data.AppId, status) + if err != nil { + return err } } - return nil } diff --git a/x/auction/keeper/debt_test.go b/x/auction/keeper/debt_test.go index 9c529c21c..6042739f3 100644 --- a/x/auction/keeper/debt_test.go +++ b/x/auction/keeper/debt_test.go @@ -1,6 +1,7 @@ package keeper_test import ( + "github.com/comdex-official/comdex/x/auction" "time" "github.com/comdex-official/comdex/app/wasm/bindings" @@ -13,7 +14,7 @@ import ( const advanceSeconds = 21601 -func (s *KeeperTestSuite) WasmSetCollectorLookupTableAndAuctionControl() { +func (s *KeeperTestSuite) WasmSetCollectorLookupTableAndAuctionControlForSurplus() { //userAddress := "cosmos1q7q90qsl9g0gl2zz0njxwv2a649yqrtyxtnv3v" collectorKeeper, ctx := &s.collectorKeeper, &s.ctx @@ -62,7 +63,81 @@ func (s *KeeperTestSuite) WasmSetCollectorLookupTableAndAuctionControl() { AppID: 1, AssetIDs: []uint64{2}, IsSurplusAuctions: []bool{true}, + IsDebtAuctions: []bool{false}, + IsDistributor: []bool{false}, + AssetOutOraclePrices: []bool{false}, + AssetOutPrices: []uint64{1000000}, + }, + }, + } { + s.Run(tc.name, func() { + err := collectorKeeper.WasmSetAuctionMappingForApp(*ctx, &tc.msg) + s.Require().NoError(err) + result1, found := collectorKeeper.GetAuctionMappingForApp(*ctx, tc.msg.AppID) + s.Require().True(found) + s.Require().Equal(result1.AssetIdToAuctionLookup[index].AssetId, tc.msg.AssetIDs[0]) + s.Require().Equal(result1.AssetIdToAuctionLookup[index].IsSurplusAuction, tc.msg.IsSurplusAuctions[0]) + s.Require().Equal(result1.AssetIdToAuctionLookup[index].IsDebtAuction, tc.msg.IsDebtAuctions[0]) + s.Require().Equal(result1.AssetIdToAuctionLookup[index].IsDistributor, tc.msg.IsDistributor[0]) + s.Require().Equal(result1.AssetIdToAuctionLookup[index].IsAuctionActive, false) + s.Require().Equal(result1.AssetIdToAuctionLookup[index].AssetOutOraclePrice, tc.msg.AssetOutOraclePrices[0]) + s.Require().Equal(result1.AssetIdToAuctionLookup[index].AssetOutPrice, tc.msg.AssetOutPrices[0]) + }) + } + +} + +func (s *KeeperTestSuite) WasmSetCollectorLookupTableAndAuctionControlForDebt() { + //userAddress := "cosmos1q7q90qsl9g0gl2zz0njxwv2a649yqrtyxtnv3v" + collectorKeeper, ctx := &s.collectorKeeper, &s.ctx + + for index, tc := range []struct { + name string + msg bindings.MsgSetCollectorLookupTable + }{ + {"Wasm Add MsgSetCollectorLookupTable AppID 1 CollectorAssetID 2", + bindings.MsgSetCollectorLookupTable{ + AppID: 1, + CollectorAssetID: 2, + SecondaryAssetID: 3, + SurplusThreshold: 10000000, + DebtThreshold: 5000000, + LockerSavingRate: sdk.MustNewDecFromStr("0.1"), + LotSize: 200000, + BidFactor: sdk.MustNewDecFromStr("0.01"), + DebtLotSize: 2000000, + }, + }, + } { + s.Run(tc.name, func() { + err := collectorKeeper.WasmSetCollectorLookupTable(*ctx, &tc.msg) + s.Require().NoError(err) + result, found := collectorKeeper.GetCollectorLookupTable(*ctx, tc.msg.AppID) + s.Require().True(found) + s.Require().Equal(result.AssetRateInfo[index].AppId, tc.msg.AppID) + s.Require().Equal(result.AssetRateInfo[index].CollectorAssetId, tc.msg.CollectorAssetID) + s.Require().Equal(result.AssetRateInfo[index].SecondaryAssetId, tc.msg.SecondaryAssetID) + s.Require().Equal(result.AssetRateInfo[index].SurplusThreshold, tc.msg.SurplusThreshold) + s.Require().Equal(result.AssetRateInfo[index].DebtThreshold, tc.msg.DebtThreshold) + s.Require().Equal(result.AssetRateInfo[index].LockerSavingRate, tc.msg.LockerSavingRate) + s.Require().Equal(result.AssetRateInfo[index].LotSize, tc.msg.LotSize) + s.Require().Equal(result.AssetRateInfo[index].BidFactor, tc.msg.BidFactor) + s.Require().Equal(result.AssetRateInfo[index].DebtLotSize, tc.msg.DebtLotSize) + }) + } + //s.AddAuctionParams() + for index, tc := range []struct { + name string + msg bindings.MsgSetAuctionMappingForApp + }{ + { + "Wasm Add Auction Control AppID 1 AssetID 2", + bindings.MsgSetAuctionMappingForApp{ + AppID: 1, + AssetIDs: []uint64{2}, + IsSurplusAuctions: []bool{false}, IsDebtAuctions: []bool{true}, + IsDistributor: []bool{false}, AssetOutOraclePrices: []bool{false}, AssetOutPrices: []uint64{1000000}, }, @@ -76,6 +151,7 @@ func (s *KeeperTestSuite) WasmSetCollectorLookupTableAndAuctionControl() { s.Require().Equal(result1.AssetIdToAuctionLookup[index].AssetId, tc.msg.AssetIDs[0]) s.Require().Equal(result1.AssetIdToAuctionLookup[index].IsSurplusAuction, tc.msg.IsSurplusAuctions[0]) s.Require().Equal(result1.AssetIdToAuctionLookup[index].IsDebtAuction, tc.msg.IsDebtAuctions[0]) + s.Require().Equal(result1.AssetIdToAuctionLookup[index].IsDistributor, tc.msg.IsDistributor[0]) s.Require().Equal(result1.AssetIdToAuctionLookup[index].IsAuctionActive, false) s.Require().Equal(result1.AssetIdToAuctionLookup[index].AssetOutOraclePrice, tc.msg.AssetOutOraclePrices[0]) s.Require().Equal(result1.AssetIdToAuctionLookup[index].AssetOutPrice, tc.msg.AssetOutPrices[0]) @@ -88,20 +164,20 @@ func (s *KeeperTestSuite) TestDebtActivatorBetweenThreshholdAndLotsize() { s.AddAppAsset() s.AddPairAndExtendedPairVault1() s.AddAuctionParams() - s.WasmSetCollectorLookupTableAndAuctionControl() + s.WasmSetCollectorLookupTableAndAuctionControlForDebt() s.WasmUpdateCollectorLookupTable(30000, 20500, 800, 501) s.LiquidateVaults1() k, ctx := &s.keeper, &s.ctx - err := k.DebtActivator(*ctx) - s.Require().NoError(err) + auction.BeginBlocker(*ctx, s.keeper) + //s.Require().NoError(err) appId := uint64(1) auctionMappingId := uint64(2) auctionId := uint64(1) - _, err = k.GetDebtAuction(*ctx, appId, auctionMappingId, auctionId) + _, err := k.GetDebtAuction(*ctx, appId, auctionMappingId, auctionId) s.Require().Error(err) } @@ -112,13 +188,12 @@ func (s *KeeperTestSuite) TestDebtActivator() { s.AddAppAsset() s.AddPairAndExtendedPairVault1() s.AddAuctionParams() - s.WasmSetCollectorLookupTableAndAuctionControl() + s.WasmSetCollectorLookupTableAndAuctionControlForDebt() s.LiquidateVaults1() k, collectorKeeper, ctx := &s.keeper, &s.collectorKeeper, &s.ctx - err := k.DebtActivator(*ctx) - s.Require().NoError(err) + auction.BeginBlocker(*ctx, s.keeper) appId := uint64(1) auctionMappingId := uint64(2) @@ -148,7 +223,7 @@ func (s *KeeperTestSuite) TestDebtActivator() { //Test restart debt auction s.advanceseconds(301) - err = k.DebtActivator(*ctx) + auction.BeginBlocker(*ctx, s.keeper) s.Require().NoError(err) debtAuction1, err := k.GetDebtAuction(*ctx, appId, auctionMappingId, auctionId) s.Require().NoError(err) @@ -378,20 +453,20 @@ func (s *KeeperTestSuite) TestCloseDebtAuction() { beforeHarborBalance, err := s.getBalance(winnerAddress, "uharbor") s.Require().NoError(err) - auction, err := k.GetDebtAuction(*ctx, appID, auctionMappingID, auctionID) + debtAuction, err := k.GetDebtAuction(*ctx, appID, auctionMappingID, auctionID) s.Require().NoError(err) s.advanceseconds(int64(tc.seconds)) - err = k.DebtActivator(*ctx) + auction.BeginBlocker(*ctx, s.keeper) s.Require().NoError(err) afterHarborBalance, err := s.getBalance(winnerAddress, "uharbor") //s.Require().NoError(err) //s.Require().Equal(beforeHarborBalance.Add(auction.ExpectedMintedToken), afterHarborBalance) if tc.isErrorExpected { - s.Require().NotEqual(beforeHarborBalance.Add(auction.ExpectedMintedToken), afterHarborBalance) + s.Require().NotEqual(beforeHarborBalance.Add(debtAuction.ExpectedMintedToken), afterHarborBalance) } else { - s.Require().Equal(beforeHarborBalance.Add(auction.ExpectedMintedToken), afterHarborBalance) + s.Require().Equal(beforeHarborBalance.Add(debtAuction.ExpectedMintedToken), afterHarborBalance) } }) } diff --git a/x/auction/keeper/distributor.go b/x/auction/keeper/distributor.go new file mode 100644 index 000000000..d08316afe --- /dev/null +++ b/x/auction/keeper/distributor.go @@ -0,0 +1,18 @@ +package keeper + +import ( + esmtypes "github.com/comdex-official/comdex/x/esm/types" + + collectortypes "github.com/comdex-official/comdex/x/collector/types" + sdk "github.com/cosmos/cosmos-sdk/types" +) + +func (k Keeper) DistributorActivator(ctx sdk.Context, data collectortypes.CollectorAuctionLookupTable, + inData collectortypes.AssetIdToAuctionLookupTable, killSwitchParams esmtypes.KillSwitchParams, status bool) error { + if !inData.IsSurplusAuction && !inData.IsAuctionActive && !killSwitchParams.BreakerEnable && !status { + // to do + // reduce coin from collector + // send coin to contract + } + return nil +} diff --git a/x/auction/keeper/dutch.go b/x/auction/keeper/dutch.go index d5753676b..e326a4e41 100644 --- a/x/auction/keeper/dutch.go +++ b/x/auction/keeper/dutch.go @@ -1,7 +1,7 @@ package keeper import ( - assettypes "github.com/comdex-official/comdex/x/asset/types" + liquidationtypes "github.com/comdex-official/comdex/x/liquidation/types" "time" vaulttypes "github.com/comdex-official/comdex/x/vault/types" @@ -12,50 +12,37 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" ) -func (k Keeper) DutchActivator(ctx sdk.Context) error { - lockedVaults := k.GetLockedVaults(ctx) - if len(lockedVaults) == 0 { - return auctiontypes.ErrorInvalidLockedVault - } +func (k Keeper) DutchActivator(ctx sdk.Context, lockedVaults []liquidationtypes.LockedVault) error { for _, lockedVault := range lockedVaults { if lockedVault.Kind == nil { if !lockedVault.IsAuctionInProgress { extendedPair, found := k.GetPairsVault(ctx, lockedVault.ExtendedPairId) if !found { - return auctiontypes.ErrorInvalidPair - } - pair, found := k.GetPair(ctx, extendedPair.PairId) - if !found { - return auctiontypes.ErrorInvalidPair - } - assetIn, found := k.GetAsset(ctx, pair.AssetIn) - if !found { - return auctiontypes.ErrorAssetNotFound + ctx.Logger().Error(auctiontypes.ErrorInvalidPair.Error(), lockedVault.LockedVaultId) + continue } + pair, _ := k.GetPair(ctx, extendedPair.PairId) + + assetIn, _ := k.GetAsset(ctx, pair.AssetIn) + + assetOut, _ := k.GetAsset(ctx, pair.AssetOut) - assetOut, found := k.GetAsset(ctx, pair.AssetOut) - if !found { - return auctiontypes.ErrorAssetNotFound - } assetInPrice, found := k.GetPriceForAsset(ctx, assetIn.Id) if !found { - return auctiontypes.ErrorPrices + ctx.Logger().Error(auctiontypes.ErrorPrices.Error(), lockedVault.LockedVaultId) + continue } //assetInPrice is the collateral price ////Here collateral to be auctioned is received in ucollateral*uusd so inorder to get back amount we divide with uusd of assetIn outflowToken := sdk.NewCoin(assetIn.Denom, lockedVault.CollateralToBeAuctioned.Quo(sdk.NewDecFromInt(sdk.NewIntFromUint64(assetInPrice))).TruncateInt()) inflowToken := sdk.NewCoin(assetOut.Denom, sdk.ZeroInt()) - extendedPairID := lockedVault.ExtendedPairId - ExtendedPairVault, found := k.GetPairsVault(ctx, extendedPairID) - if !found { - return auctiontypes.ErrorInvalidExtendedPairVault - } - liquidationPenalty := ExtendedPairVault.LiquidationPenalty + liquidationPenalty := extendedPair.LiquidationPenalty err1 := k.StartDutchAuction(ctx, outflowToken, inflowToken, lockedVault.AppId, assetOut.Id, assetIn.Id, lockedVault.LockedVaultId, lockedVault.Owner, liquidationPenalty) if err1 != nil { - return err1 + ctx.Logger().Error(auctiontypes.ErrorInStartDutchAuction.Error(), lockedVault.LockedVaultId) + continue } } } @@ -560,14 +547,14 @@ func (k Keeper) RestartDutchAuctions(ctx sdk.Context, appID uint64) error { k.DeleteLockedVault(ctx, lockedVault.LockedVaultId) } else { - outFlowTokenCurrentPrice, found := k.GetPriceForAsset(ctx, dutchAuction.AssetOutId) + OutFlowTokenCurrentPrice, found := k.GetPriceForAsset(ctx, dutchAuction.AssetOutId) if !found { return auctiontypes.ErrorPrices } timeNow := ctx.BlockTime() dutchAuction.StartTime = timeNow dutchAuction.EndTime = timeNow.Add(time.Second * time.Duration(auctionParams.AuctionDurationSeconds)) - outFlowTokenInitialPrice := k.getOutflowTokenInitialPrice(sdk.NewIntFromUint64(outFlowTokenCurrentPrice), auctionParams.Buffer) + outFlowTokenInitialPrice := k.getOutflowTokenInitialPrice(sdk.NewIntFromUint64(OutFlowTokenCurrentPrice), auctionParams.Buffer) outFlowTokenEndPrice := k.getOutflowTokenEndPrice(outFlowTokenInitialPrice, auctionParams.Cusp) dutchAuction.OutflowTokenInitialPrice = outFlowTokenInitialPrice dutchAuction.OutflowTokenEndPrice = outFlowTokenEndPrice @@ -605,17 +592,10 @@ func (k Keeper) UpdateProtocolData(ctx sdk.Context, auction auctiontypes.DutchAu return nil } -func (k Keeper) RestartDutch(ctx sdk.Context) error { - appIds, found := k.GetApps(ctx) - if !found { - return assettypes.AppIdsDoesntExist - } - for _, appId := range appIds { - - err := k.RestartDutchAuctions(ctx, appId.Id) - if err != nil { - return err - } +func (k Keeper) RestartDutch(ctx sdk.Context, appID uint64) error { + err := k.RestartDutchAuctions(ctx, appID) + if err != nil { + return err } return nil } diff --git a/x/auction/keeper/dutch_lend.go b/x/auction/keeper/dutch_lend.go index 0e8b6ee98..cc4f261c3 100644 --- a/x/auction/keeper/dutch_lend.go +++ b/x/auction/keeper/dutch_lend.go @@ -1,8 +1,8 @@ package keeper import ( - assettypes "github.com/comdex-official/comdex/x/asset/types" lendtypes "github.com/comdex-official/comdex/x/lend/types" + liquidationtypes "github.com/comdex-official/comdex/x/liquidation/types" sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" "time" @@ -10,11 +10,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" ) -func (k Keeper) LendDutchActivator(ctx sdk.Context) error { - lockedVaults := k.GetLockedVaults(ctx) - if len(lockedVaults) == 0 { - return auctiontypes.ErrorInvalidLockedVault - } +func (k Keeper) LendDutchActivator(ctx sdk.Context, lockedVaults []liquidationtypes.LockedVault) error { for _, lockedVault := range lockedVaults { if lockedVault.Kind != nil { if !lockedVault.IsAuctionInProgress { @@ -22,33 +18,36 @@ func (k Keeper) LendDutchActivator(ctx sdk.Context) error { if !found { return auctiontypes.ErrorInvalidPair } - assetIn, found := k.GetAsset(ctx, extendedPair.AssetIn) - if !found { - return auctiontypes.ErrorAssetNotFound - } + assetIn, _ := k.GetAsset(ctx, extendedPair.AssetIn) + + assetOut, _ := k.GetAsset(ctx, extendedPair.AssetOut) - assetOut, found := k.GetAsset(ctx, extendedPair.AssetOut) - if !found { - return auctiontypes.ErrorAssetNotFound - } assetInPrice, found := k.GetPriceForAsset(ctx, assetIn.Id) if !found { - return auctiontypes.ErrorPrices + ctx.Logger().Error(auctiontypes.ErrorPrices.Error(), lockedVault.LockedVaultId) + continue } //assetInPrice is the collateral price ////Here collateral to be auctioned is received in ucollateral*uusd so inorder to get back amount we divide with uusd of assetIn - outflowToken := sdk.NewCoin(assetIn.Denom, lockedVault.CollateralToBeAuctioned.Quo(sdk.NewDecFromInt(sdk.NewIntFromUint64(assetInPrice))).TruncateInt()) + AssetInPrice := sdk.NewDecFromInt(sdk.NewIntFromUint64(assetInPrice)) + if AssetInPrice.Equal(sdk.ZeroDec()) { + ctx.Logger().Error(auctiontypes.ErrorPrices.Error(), lockedVault.LockedVaultId) + continue + } + outflowToken := sdk.NewCoin(assetIn.Denom, lockedVault.CollateralToBeAuctioned.Quo(AssetInPrice).TruncateInt()) inflowToken := sdk.NewCoin(assetOut.Denom, sdk.ZeroInt()) AssetRatesStats, found := k.GetAssetRatesStats(ctx, extendedPair.AssetIn) if !found { - return lendtypes.ErrAssetStatsNotFound + ctx.Logger().Error(auctiontypes.ErrorAssetRates.Error(), lockedVault.LockedVaultId) + continue } liquidationPenalty := AssetRatesStats.LiquidationPenalty err1 := k.StartLendDutchAuction(ctx, outflowToken, inflowToken, lockedVault.AppId, assetOut.Id, assetIn.Id, lockedVault.LockedVaultId, lockedVault.Owner, liquidationPenalty) if err1 != nil { - return err1 + ctx.Logger().Error(auctiontypes.ErrorInStartDutchAuction.Error(), lockedVault.LockedVaultId) + continue } } } @@ -83,14 +82,14 @@ func (k Keeper) StartLendDutchAuction( return auctiontypes.ErrorPrices } - auctionParams, found := k.GetAuctionParams(ctx, appID) + auctionParams, found := k.GetAddAuctionParamsData(ctx, appID) if !found { return auctiontypes.ErrorInvalidAuctionParams } BorrowMetaData := lockedVault.GetBorrowMetaData() LendPos, _ := k.GetLend(ctx, BorrowMetaData.LendingId) - pool, _ := k.GetPool(ctx, LendPos.PoolId) + pool, _ := k.GetPool(ctx, LendPos.PoolID) err := k.SendCoinsFromModuleToModule(ctx, pool.ModuleName, auctiontypes.ModuleName, sdk.NewCoins(outFlowToken)) if err != nil { return err @@ -150,7 +149,7 @@ func (k Keeper) StartLendDutchAuction( return nil } -func (k Keeper) PlaceLendDutchAuctionBid(ctx sdk.Context, appID, auctionMappingID, auctionID uint64, bidder sdk.AccAddress, bid sdk.Coin, _ sdk.Dec) error { +func (k Keeper) PlaceLendDutchAuctionBid(ctx sdk.Context, appID, auctionMappingID, auctionID uint64, bidder sdk.AccAddress, bid sdk.Coin, max sdk.Dec) error { auction, err := k.GetDutchLendAuction(ctx, appID, auctionMappingID, auctionID) if err != nil { return sdkerrors.Wrapf(sdkerrors.ErrNotFound, "auction id %d not found", auctionID) @@ -162,6 +161,13 @@ func (k Keeper) PlaceLendDutchAuctionBid(ctx sdk.Context, appID, auctionMappingI return sdkerrors.Wrapf(sdkerrors.ErrNotFound, "bid amount can't be greater than collateral available") } + max = k.GetUUSDFromUSD(ctx, max) + + //Here OutflowToken current price is in uusd and max is in uusd + if max.LT(auction.OutflowTokenCurrentPrice.Ceil()) { + return auctiontypes.ErrorInvalidDutchPrice + } + // slice tells amount of collateral user should be given //using ceil as we need extract more from users outFlowTokenCurrentPrice := auction.OutflowTokenCurrentPrice.Ceil().TruncateInt() @@ -248,7 +254,7 @@ func (k Keeper) PlaceLendDutchAuctionBid(ctx sdk.Context, appID, auctionMappingI //send left overcollateral to vault owner as target cmst reached and also total := auction.OutflowTokenCurrentAmount - err := k.SendCoinsFromModuleToAccount(ctx, auctiontypes.ModuleName, sdk.AccAddress(lockedVault.Owner), sdk.NewCoins(total)) + err = k.SendCoinsFromModuleToAccount(ctx, auctiontypes.ModuleName, sdk.AccAddress(lockedVault.Owner), sdk.NewCoins(total)) if err != nil { return err } @@ -268,11 +274,21 @@ func (k Keeper) PlaceLendDutchAuctionBid(ctx sdk.Context, appID, auctionMappingI // take requiredAmount from reserve-pool requiredAmount := auction.InflowTokenTargetAmount.Sub(auction.InflowTokenCurrentAmount) - err := k.SendCoinsFromModuleToModule(ctx, lendtypes.ModuleName, auctiontypes.ModuleName, sdk.NewCoins(requiredAmount)) + //get reserve balance if the requiredAmount is available in the reserves or not + modBal := k.ModuleBalance(ctx, lendtypes.ModuleName, requiredAmount.Denom) + if modBal.LT(requiredAmount.Amount) { + return sdkerrors.Wrapf(sdkerrors.ErrInsufficientFunds, "Reserve pool having insufficient balance for this bid") + } + + // reduce the qty from reserve pool + pairID := lockedVault.ExtendedPairId + lendPair, _ := k.GetLendPair(ctx, pairID) + inFlowTokenAssetID := lendPair.AssetOut + + err = k.UpdateReserveBalances(ctx, inFlowTokenAssetID, lendtypes.ModuleName, requiredAmount, false) if err != nil { return err } - err = k.SetDutchLendAuction(ctx, auction) if err != nil { return err @@ -362,7 +378,12 @@ func (k Keeper) CloseDutchLendAuction( penaltyCoin := sdk.NewCoin(dutchAuction.InflowTokenCurrentAmount.Denom, sdk.ZeroInt()) // send penalty - err := k.SendCoinsFromModuleToModule(ctx, auctiontypes.ModuleName, lendtypes.ModuleName, sdk.NewCoins(penaltyCoin)) + + pairID := lockedVault.ExtendedPairId + lendPair, _ := k.GetLendPair(ctx, pairID) + inFlowTokenAssetID := lendPair.AssetOut + + err := k.UpdateReserveBalances(ctx, inFlowTokenAssetID, auctiontypes.ModuleName, penaltyCoin, true) if err != nil { return err } @@ -406,7 +427,7 @@ func (k Keeper) CloseDutchLendAuction( func (k Keeper) RestartDutchLendAuctions(ctx sdk.Context, appID uint64) error { dutchAuctions := k.GetDutchLendAuctions(ctx, appID) - auctionParams, found := k.GetAuctionParams(ctx, appID) + auctionParams, found := k.GetAddAuctionParamsData(ctx, appID) if !found { return nil } @@ -435,19 +456,19 @@ func (k Keeper) RestartDutchLendAuctions(ctx sdk.Context, appID uint64) error { } //check if auction need to be restarted if ctx.BlockTime().After(dutchAuction.EndTime) { - outFlowTokenCurrentPrice, found := k.GetPriceForAsset(ctx, dutchAuction.AssetOutId) + OutFlowTokenCurrentPrice, found := k.GetPriceForAsset(ctx, dutchAuction.AssetOutId) if !found { return auctiontypes.ErrorPrices } timeNow := ctx.BlockTime() dutchAuction.StartTime = timeNow dutchAuction.EndTime = timeNow.Add(time.Second * time.Duration(auctionParams.AuctionDurationSeconds)) - outFlowTokenInitialPrice := k.getOutflowTokenInitialPrice(sdk.NewIntFromUint64(outFlowTokenCurrentPrice), auctionParams.Buffer) + outFlowTokenInitialPrice := k.getOutflowTokenInitialPrice(sdk.NewIntFromUint64(OutFlowTokenCurrentPrice), auctionParams.Buffer) outFlowTokenEndPrice := k.getOutflowTokenEndPrice(outFlowTokenInitialPrice, auctionParams.Cusp) dutchAuction.OutflowTokenInitialPrice = outFlowTokenInitialPrice dutchAuction.OutflowTokenEndPrice = outFlowTokenEndPrice dutchAuction.OutflowTokenCurrentPrice = outFlowTokenInitialPrice - err := k.SetDutchLendAuction(ctx, dutchAuction) + err = k.SetDutchLendAuction(ctx, dutchAuction) if err != nil { return err } @@ -458,17 +479,10 @@ func (k Keeper) RestartDutchLendAuctions(ctx sdk.Context, appID uint64) error { return nil } -func (k Keeper) RestartLendDutch(ctx sdk.Context) error { - appIds, found := k.GetApps(ctx) - if !found { - return assettypes.AppIdsDoesntExist - } - for _, appId := range appIds { - - err := k.RestartDutchLendAuctions(ctx, appId.Id) - if err != nil { - return err - } +func (k Keeper) RestartLendDutch(ctx sdk.Context, appID uint64) error { + err := k.RestartDutchLendAuctions(ctx, appID) + if err != nil { + return err } return nil } diff --git a/x/auction/keeper/dutch_test.go b/x/auction/keeper/dutch_test.go index 4ab3d39ed..35fd9291c 100644 --- a/x/auction/keeper/dutch_test.go +++ b/x/auction/keeper/dutch_test.go @@ -3,6 +3,7 @@ package keeper_test import ( "github.com/comdex-official/comdex/app/wasm/bindings" assetTypes "github.com/comdex-official/comdex/x/asset/types" + "github.com/comdex-official/comdex/x/auction" auctionKeeper "github.com/comdex-official/comdex/x/auction/keeper" auctionTypes "github.com/comdex-official/comdex/x/auction/types" liquidationTypes "github.com/comdex-official/comdex/x/liquidation/types" @@ -157,7 +158,7 @@ func (s *KeeperTestSuite) AddAppAsset() { s.Require().NoError(err) genesisSupply := sdk.NewIntFromUint64(1000000) assetKeeper, ctx := &s.assetKeeper, &s.ctx - msg1 := []assetTypes.AppData{{ + msg1 := assetTypes.AppData{ Name: "cswap", ShortName: "cswap", MinGovDeposit: sdk.NewIntFromUint64(10000000), @@ -165,34 +166,33 @@ func (s *KeeperTestSuite) AddAppAsset() { GenesisToken: []assetTypes.MintGenesisToken{ { 3, - &genesisSupply, + genesisSupply, true, userAddress1, }, { 2, - &genesisSupply, + genesisSupply, true, userAddress1, }, }, - }, - { - Name: "commodo", - ShortName: "commodo", - MinGovDeposit: sdk.NewIntFromUint64(10000000), - GovTimeInSeconds: 900, - GenesisToken: []assetTypes.MintGenesisToken{ - { - 3, - &genesisSupply, - true, - userAddress1, - }, - }, - }, } - err = assetKeeper.AddAppRecords(*ctx, msg1...) + // { + // Name: "commodo", + // ShortName: "commodo", + // MinGovDeposit: sdk.NewIntFromUint64(10000000), + // GovTimeInSeconds: 900, + // GenesisToken: []assetTypes.MintGenesisToken{ + // { + // 3, + // genesisSupply, + // true, + // userAddress1, + // }, + // }, + // }, + err = assetKeeper.AddAppRecords(*ctx, msg1) s.Require().NoError(err) for index, tc := range []struct { @@ -307,42 +307,42 @@ func (s *KeeperTestSuite) TestDutchActivator() { s.AddAuctionParams() k, liquidationKeeper, ctx := &s.keeper, &s.liquidationKeeper, &s.ctx - err = k.DutchActivator(*ctx) - s.Require().NoError(err) + auction.BeginBlocker(*ctx, s.keeper) + /*s.Require().NoError(err) err = k.RestartDutch(*ctx) - s.Require().NoError(err) + s.Require().NoError(err)*/ appId := uint64(1) auctionMappingId := uint64(3) auctionId := uint64(1) - auction, err := k.GetDutchAuction(*ctx, appId, auctionMappingId, auctionId) + dutchAuction, err := k.GetDutchAuction(*ctx, appId, auctionMappingId, auctionId) s.Require().NoError(err) lockedVault, found := liquidationKeeper.GetLockedVault(*ctx, 1) s.Require().True(found) - s.Require().Equal(auction.AppId, lockedVault.AppId) - s.Require().Equal(auction.AuctionId, auctionId) - s.Require().Equal(auction.AuctionMappingId, auctionMappingId) - s.Require().Equal(auction.OutflowTokenInitAmount.Amount, lockedVault.AmountIn) - s.Require().Equal(auction.OutflowTokenCurrentAmount.Amount, lockedVault.AmountIn) - s.Require().Equal(auction.InflowTokenCurrentAmount.Amount, sdk.ZeroInt()) + s.Require().Equal(dutchAuction.AppId, lockedVault.AppId) + s.Require().Equal(dutchAuction.AuctionId, auctionId) + s.Require().Equal(dutchAuction.AuctionMappingId, auctionMappingId) + s.Require().Equal(dutchAuction.OutflowTokenInitAmount.Amount, lockedVault.AmountIn) + s.Require().Equal(dutchAuction.OutflowTokenCurrentAmount.Amount, lockedVault.AmountIn) + s.Require().Equal(dutchAuction.InflowTokenCurrentAmount.Amount, sdk.ZeroInt()) inFlowTokenTargetAmount := lockedVault.AmountOut - mulfactor := inFlowTokenTargetAmount.ToDec().Mul(auction.LiquidationPenalty) + mulfactor := inFlowTokenTargetAmount.ToDec().Mul(dutchAuction.LiquidationPenalty) inFlowTokenTargetAmount = inFlowTokenTargetAmount.Add(mulfactor.TruncateInt()) - s.Require().Equal(auction.InflowTokenTargetAmount.Amount, inFlowTokenTargetAmount) + s.Require().Equal(dutchAuction.InflowTokenTargetAmount.Amount, inFlowTokenTargetAmount) - s.Require().Equal(auction.VaultOwner, addr1) - s.Require().Equal(auction.AuctionStatus, auctionTypes.AuctionStartNoBids) + s.Require().Equal(dutchAuction.VaultOwner, addr1) + s.Require().Equal(dutchAuction.AuctionStatus, auctionTypes.AuctionStartNoBids) - assetOutPrice, found := s.marketKeeper.GetPriceForAsset(*ctx, auction.AssetOutId) + assetOutPrice, found := s.marketKeeper.GetPriceForAsset(*ctx, dutchAuction.AssetOutId) s.Require().True(found) - assetInPrice, found := s.marketKeeper.GetPriceForAsset(*ctx, auction.AssetInId) + assetInPrice, found := s.marketKeeper.GetPriceForAsset(*ctx, dutchAuction.AssetInId) s.Require().True(found) - s.Require().Equal(auction.OutflowTokenCurrentPrice, sdk.NewDecFromInt(sdk.NewIntFromUint64(assetOutPrice)).Mul(sdk.MustNewDecFromStr("1.2"))) - s.Require().Equal(auction.OutflowTokenEndPrice, auction.OutflowTokenInitialPrice.Mul(sdk.MustNewDecFromStr("0.6"))) - s.Require().Equal(auction.InflowTokenCurrentPrice, sdk.NewDecFromInt(sdk.NewIntFromUint64(assetInPrice))) + s.Require().Equal(dutchAuction.OutflowTokenCurrentPrice, sdk.NewDecFromInt(sdk.NewIntFromUint64(assetOutPrice)).Mul(sdk.MustNewDecFromStr("1.2"))) + s.Require().Equal(dutchAuction.OutflowTokenEndPrice, dutchAuction.OutflowTokenInitialPrice.Mul(sdk.MustNewDecFromStr("0.6"))) + s.Require().Equal(dutchAuction.InflowTokenCurrentPrice, sdk.NewDecFromInt(sdk.NewIntFromUint64(assetInPrice))) } func (s *KeeperTestSuite) TestDutchBid() { @@ -431,10 +431,10 @@ func (s *KeeperTestSuite) TestDutchBid() { s.Run(tc.name, func() { s.advanceseconds(tc.advanceSeconds) - err := k.DutchActivator(*ctx) - s.Require().NoError(err) + auction.BeginBlocker(*ctx, s.keeper) + /*s.Require().NoError(err) err = k.RestartDutch(*ctx) - s.Require().NoError(err) + s.Require().NoError(err)*/ beforeAuction, err := k.GetDutchAuction(*ctx, appID, auctionMappingID, auctionID) s.Require().NoError(err) beforeCmdxBalance, err := s.getBalance(userAddress1, "ucmdx") @@ -446,11 +446,11 @@ func (s *KeeperTestSuite) TestDutchBid() { _, err = server.MsgPlaceDutchBid(sdk.WrapSDKContext(*ctx), &tc.msg) if tc.isErrorExpected { s.advanceseconds(301 - tc.advanceSeconds) - err1 := k.DutchActivator(*ctx) - s.Require().NoError(err1) + auction.BeginBlocker(*ctx, s.keeper) + /*s.Require().NoError(err1) err2 := k.RestartDutch(*ctx) s.Require().NoError(err2) - s.Require().Error(err) + s.Require().Error(err)*/ } else { s.Require().NoError(err) @@ -544,12 +544,12 @@ func (s *KeeperTestSuite) TestCloseDutchAuctionWithProtocolLoss() { s.Require().NoError(err) s.advanceseconds(250) - err1 := k.DutchActivator(*ctx) - s.Require().NoError(err1) + auction.BeginBlocker(*ctx, s.keeper) + /*s.Require().NoError(err1) err = k.RestartDutch(*ctx) - s.Require().NoError(err) + s.Require().NoError(err)*/ - err1 = k.FundModule(*ctx, "auction", "ucmst", 10000000) + err1 := k.FundModule(*ctx, "auction", "ucmst", 10000000) s.Require().NoError(err1) err = k.SendCoinsFromModuleToModule(*ctx, "auction", "collector", sdk.NewCoins(sdk.NewCoin("ucmst", sdk.NewInt(10000000)))) s.Require().NoError(err) @@ -595,31 +595,31 @@ func (s *KeeperTestSuite) TestRestartDutchAuction() { appId := uint64(1) auctionMappingId := uint64(3) auctionId := uint64(1) - auction, err := k.GetDutchAuction(*ctx, appId, auctionMappingId, auctionId) + dutchAuction, err := k.GetDutchAuction(*ctx, appId, auctionMappingId, auctionId) s.Require().NoError(err) //exact the auction duration s.advanceseconds(300) - startPrice := auction.OutflowTokenCurrentPrice - err = k.DutchActivator(*ctx) - s.Require().NoError(err) + startPrice := dutchAuction.OutflowTokenCurrentPrice + auction.BeginBlocker(*ctx, s.keeper) + /*s.Require().NoError(err) err = k.RestartDutch(*ctx) - s.Require().NoError(err) + s.Require().NoError(err)*/ - auction, err = k.GetDutchAuction(*ctx, appId, auctionMappingId, auctionId) + dutchAuction, err = k.GetDutchAuction(*ctx, appId, auctionMappingId, auctionId) s.Require().NoError(err) - s.Require().Equal(auction.OutflowTokenCurrentPrice, startPrice.Mul(sdk.MustNewDecFromStr("0.6"))) + s.Require().Equal(dutchAuction.OutflowTokenCurrentPrice, startPrice.Mul(sdk.MustNewDecFromStr("0.6"))) //full the auction duration RESTART s.advanceseconds(1) beforeAuction, err := k.GetDutchAuction(*ctx, appId, auctionMappingId, auctionId) s.Require().NoError(err) - err = k.DutchActivator(*ctx) + auction.BeginBlocker(*ctx, s.keeper) s.Require().NoError(err) - err = k.RestartDutch(*ctx) + auction.BeginBlocker(*ctx, s.keeper) s.Require().NoError(err) afterAuction, err := k.GetDutchAuction(*ctx, appId, auctionMappingId, auctionId) @@ -646,14 +646,14 @@ func (s *KeeperTestSuite) TestRestartDutchAuction() { //half the auction duration s.advanceseconds(150) - err = k.DutchActivator(*ctx) - s.Require().NoError(err) + auction.BeginBlocker(*ctx, s.keeper) + /*s.Require().NoError(err) err = k.RestartDutch(*ctx) - s.Require().NoError(err) + s.Require().NoError(err)*/ - auction, err = k.GetDutchAuction(*ctx, appId, auctionMappingId, auctionId) + dutchAuction, err = k.GetDutchAuction(*ctx, appId, auctionMappingId, auctionId) s.Require().NoError(err) - s.Require().Equal(auction.OutflowTokenCurrentPrice, startPrice.Mul(sdk.MustNewDecFromStr("0.8"))) + s.Require().Equal(dutchAuction.OutflowTokenCurrentPrice, startPrice.Mul(sdk.MustNewDecFromStr("0.8"))) } diff --git a/x/auction/keeper/keeper.go b/x/auction/keeper/keeper.go index 523c8224e..bade216b5 100644 --- a/x/auction/keeper/keeper.go +++ b/x/auction/keeper/keeper.go @@ -46,13 +46,13 @@ func NewKeeper( tokenMintKeeper expected.TokenMintKeeper, esm expected.EsmKeeper, lend expected.LendKeeper, -) *Keeper { +) Keeper { // set KeyTable if it has not already been set if !ps.HasKeyTable() { ps = ps.WithKeyTable(types.ParamKeyTable()) } - return &Keeper{ + return Keeper{ cdc: cdc, storeKey: storeKey, @@ -75,6 +75,6 @@ func (k Keeper) Logger(ctx sdk.Context) log.Logger { return ctx.Logger().With("module", fmt.Sprintf("x/%s", types.ModuleName)) } -func (k *Keeper) Store(ctx sdk.Context) sdk.KVStore { +func (k Keeper) Store(ctx sdk.Context) sdk.KVStore { return ctx.KVStore(k.storeKey) } diff --git a/x/auction/keeper/msg_server.go b/x/auction/keeper/msg_server.go index b5f7931cb..adf49cb0a 100644 --- a/x/auction/keeper/msg_server.go +++ b/x/auction/keeper/msg_server.go @@ -27,6 +27,7 @@ func (k msgServer) MsgPlaceSurplusBid(goCtx context.Context, msg *types.MsgPlace if err != nil { return nil, err } + ctx.GasMeter().ConsumeGas(types.SurplusBidGas, "SurplusBidGas") return &types.MsgPlaceSurplusBidResponse{}, nil } @@ -40,6 +41,7 @@ func (k msgServer) MsgPlaceDebtBid(goCtx context.Context, msg *types.MsgPlaceDeb if err != nil { return nil, err } + ctx.GasMeter().ConsumeGas(types.DebtBidGas, "DebtBidGas") return &types.MsgPlaceDebtBidResponse{}, nil } @@ -53,6 +55,7 @@ func (k msgServer) MsgPlaceDutchBid(goCtx context.Context, msg *types.MsgPlaceDu if err != nil { return nil, err } + ctx.GasMeter().ConsumeGas(types.DutchBidGas, "DutchBidGas") return &types.MsgPlaceDutchBidResponse{}, nil } @@ -66,5 +69,6 @@ func (k msgServer) MsgPlaceDutchLendBid(goCtx context.Context, msg *types.MsgPla if err != nil { return nil, err } + ctx.GasMeter().ConsumeGas(types.DutchLendBidGas, "DutchLendBidGas") return &types.MsgPlaceDutchLendBidResponse{}, nil } diff --git a/x/auction/keeper/query_server.go b/x/auction/keeper/query_server.go index 244aaa12c..ac1abdea6 100644 --- a/x/auction/keeper/query_server.go +++ b/x/auction/keeper/query_server.go @@ -11,7 +11,7 @@ import ( "google.golang.org/grpc/status" ) -var _ types.QueryServer = (*QueryServer)(nil) +var _ types.QueryServer = QueryServer{} type QueryServer struct { Keeper @@ -23,7 +23,7 @@ func NewQueryServer(k Keeper) types.QueryServer { } } -func (q *QueryServer) QueryParams(c context.Context, _ *types.QueryParamsRequest) (*types.QueryParamsResponse, error) { +func (q QueryServer) QueryParams(c context.Context, _ *types.QueryParamsRequest) (*types.QueryParamsResponse, error) { var ( ctx = sdk.UnwrapSDKContext(c) params = q.GetParams(ctx) @@ -34,7 +34,7 @@ func (q *QueryServer) QueryParams(c context.Context, _ *types.QueryParamsRequest }, nil } -func (q *QueryServer) QuerySurplusAuction(c context.Context, req *types.QuerySurplusAuctionRequest) (res *types.QuerySurplusAuctionResponse, err error) { +func (q QueryServer) QuerySurplusAuction(c context.Context, req *types.QuerySurplusAuctionRequest) (res *types.QuerySurplusAuctionResponse, err error) { if req == nil { return nil, status.Error(codes.InvalidArgument, "request cannot be empty") } @@ -57,7 +57,7 @@ func (q *QueryServer) QuerySurplusAuction(c context.Context, req *types.QuerySur }, nil } -func (q *QueryServer) QuerySurplusAuctions(c context.Context, req *types.QuerySurplusAuctionsRequest) (*types.QuerySurplusAuctionsResponse, error) { +func (q QueryServer) QuerySurplusAuctions(c context.Context, req *types.QuerySurplusAuctionsRequest) (*types.QuerySurplusAuctionsResponse, error) { if req == nil { return nil, status.Error(codes.InvalidArgument, "request cannot be empty") } @@ -99,7 +99,7 @@ func (q *QueryServer) QuerySurplusAuctions(c context.Context, req *types.QuerySu }, nil } -func (q *QueryServer) QuerySurplusBiddings(c context.Context, req *types.QuerySurplusBiddingsRequest) (res *types.QuerySurplusBiddingsResponse, err error) { +func (q QueryServer) QuerySurplusBiddings(c context.Context, req *types.QuerySurplusBiddingsRequest) (res *types.QuerySurplusBiddingsResponse, err error) { if req == nil { return nil, status.Error(codes.InvalidArgument, "request cannot be empty") } @@ -119,7 +119,7 @@ func (q *QueryServer) QuerySurplusBiddings(c context.Context, req *types.QuerySu Biddings: item, }, nil } -func (q *QueryServer) QueryDebtAuction(c context.Context, req *types.QueryDebtAuctionRequest) (res *types.QueryDebtAuctionResponse, err error) { +func (q QueryServer) QueryDebtAuction(c context.Context, req *types.QueryDebtAuctionRequest) (res *types.QueryDebtAuctionResponse, err error) { if req == nil { return nil, status.Error(codes.InvalidArgument, "request cannot be empty") } @@ -141,7 +141,7 @@ func (q *QueryServer) QueryDebtAuction(c context.Context, req *types.QueryDebtAu Auction: item, }, nil } -func (q *QueryServer) QueryDebtAuctions(c context.Context, req *types.QueryDebtAuctionsRequest) (*types.QueryDebtAuctionsResponse, error) { +func (q QueryServer) QueryDebtAuctions(c context.Context, req *types.QueryDebtAuctionsRequest) (*types.QueryDebtAuctionsResponse, error) { if req == nil { return nil, status.Error(codes.InvalidArgument, "request cannot be empty") } @@ -184,7 +184,7 @@ func (q *QueryServer) QueryDebtAuctions(c context.Context, req *types.QueryDebtA }, nil } -func (q *QueryServer) QueryDebtBiddings(c context.Context, req *types.QueryDebtBiddingsRequest) (*types.QueryDebtBiddingsResponse, error) { +func (q QueryServer) QueryDebtBiddings(c context.Context, req *types.QueryDebtBiddingsRequest) (*types.QueryDebtBiddingsResponse, error) { if req == nil { return nil, status.Error(codes.InvalidArgument, "request cannot be empty") } @@ -205,7 +205,7 @@ func (q *QueryServer) QueryDebtBiddings(c context.Context, req *types.QueryDebtB }, nil } -func (q *QueryServer) QueryDutchAuction(c context.Context, req *types.QueryDutchAuctionRequest) (res *types.QueryDutchAuctionResponse, err error) { +func (q QueryServer) QueryDutchAuction(c context.Context, req *types.QueryDutchAuctionRequest) (res *types.QueryDutchAuctionResponse, err error) { if req == nil { return nil, status.Error(codes.InvalidArgument, "request cannot be empty") } @@ -225,7 +225,7 @@ func (q *QueryServer) QueryDutchAuction(c context.Context, req *types.QueryDutch }, nil } -func (q *QueryServer) QueryDutchAuctions(c context.Context, req *types.QueryDutchAuctionsRequest) (*types.QueryDutchAuctionsResponse, error) { +func (q QueryServer) QueryDutchAuctions(c context.Context, req *types.QueryDutchAuctionsRequest) (*types.QueryDutchAuctionsResponse, error) { if req == nil { return nil, status.Error(codes.InvalidArgument, "request cannot be empty") } @@ -267,7 +267,7 @@ func (q *QueryServer) QueryDutchAuctions(c context.Context, req *types.QueryDutc }, nil } -func (q *QueryServer) QueryDutchBiddings(c context.Context, req *types.QueryDutchBiddingsRequest) (*types.QueryDutchBiddingsResponse, error) { +func (q QueryServer) QueryDutchBiddings(c context.Context, req *types.QueryDutchBiddingsRequest) (*types.QueryDutchBiddingsResponse, error) { if req == nil { return nil, status.Error(codes.InvalidArgument, "request cannot be empty") } @@ -288,7 +288,7 @@ func (q *QueryServer) QueryDutchBiddings(c context.Context, req *types.QueryDutc }, nil } -func (q *QueryServer) QueryBiddingsForAuction(c context.Context, req *types.QueryDutchBiddingsRequest) (*types.QueryDutchBiddingsResponse, error) { +func (q QueryServer) QueryBiddingsForAuction(c context.Context, req *types.QueryDutchBiddingsRequest) (*types.QueryDutchBiddingsResponse, error) { if req == nil { return nil, status.Error(codes.InvalidArgument, "request cannot be empty") } @@ -309,7 +309,7 @@ func (q *QueryServer) QueryBiddingsForAuction(c context.Context, req *types.Quer }, nil } -func (q *QueryServer) QueryProtocolStatistics(c context.Context, req *types.QueryProtocolStatisticsRequest) (*types.QueryProtocolStatisticsResponse, error) { +func (q QueryServer) QueryProtocolStatistics(c context.Context, req *types.QueryProtocolStatisticsRequest) (*types.QueryProtocolStatisticsResponse, error) { if req == nil { return nil, status.Error(codes.InvalidArgument, "request cannot be empty") } @@ -349,7 +349,7 @@ func (q *QueryServer) QueryProtocolStatistics(c context.Context, req *types.Quer }, nil } -func (q *QueryServer) QueryAuctionParams(c context.Context, req *types.QueryAuctionParamRequest) (*types.QueryAuctionParamResponse, error) { +func (q QueryServer) QueryAuctionParams(c context.Context, req *types.QueryAuctionParamRequest) (*types.QueryAuctionParamResponse, error) { if req == nil { return nil, status.Error(codes.InvalidArgument, "request cannot be empty") } @@ -368,7 +368,7 @@ func (q *QueryServer) QueryAuctionParams(c context.Context, req *types.QueryAuct }, nil } -func (q *QueryServer) QueryDutchLendAuction(c context.Context, req *types.QueryDutchLendAuctionRequest) (*types.QueryDutchLendAuctionResponse, error) { +func (q QueryServer) QueryDutchLendAuction(c context.Context, req *types.QueryDutchLendAuctionRequest) (*types.QueryDutchLendAuctionResponse, error) { if req == nil { return nil, status.Error(codes.InvalidArgument, "request cannot be empty") } @@ -388,7 +388,7 @@ func (q *QueryServer) QueryDutchLendAuction(c context.Context, req *types.QueryD }, nil } -func (q *QueryServer) QueryDutchLendAuctions(c context.Context, req *types.QueryDutchLendAuctionsRequest) (*types.QueryDutchLendAuctionsResponse, error) { +func (q QueryServer) QueryDutchLendAuctions(c context.Context, req *types.QueryDutchLendAuctionsRequest) (*types.QueryDutchLendAuctionsResponse, error) { if req == nil { return nil, status.Error(codes.InvalidArgument, "request cannot be empty") } @@ -430,7 +430,7 @@ func (q *QueryServer) QueryDutchLendAuctions(c context.Context, req *types.Query }, nil } -func (q *QueryServer) QueryDutchLendBiddings(c context.Context, req *types.QueryDutchLendBiddingsRequest) (*types.QueryDutchLendBiddingsResponse, error) { +func (q QueryServer) QueryDutchLendBiddings(c context.Context, req *types.QueryDutchLendBiddingsRequest) (*types.QueryDutchLendBiddingsResponse, error) { if req == nil { return nil, status.Error(codes.InvalidArgument, "request cannot be empty") } @@ -440,9 +440,9 @@ func (q *QueryServer) QueryDutchLendBiddings(c context.Context, req *types.Query item []types.DutchBiddings ) if req.History { - item = q.GetHistoryDutchUserBiddings(ctx, req.Bidder, req.AppId) + item = q.GetHistoryDutchLendUserBiddings(ctx, req.Bidder, req.AppId) } else { - item = q.GetDutchUserBiddings(ctx, req.Bidder, req.AppId) + item = q.GetDutchLendUserBiddings(ctx, req.Bidder, req.AppId) } return &types.QueryDutchLendBiddingsResponse{ diff --git a/x/auction/keeper/store.go b/x/auction/keeper/store.go index 253a439a8..b3aa47e62 100644 --- a/x/auction/keeper/store.go +++ b/x/auction/keeper/store.go @@ -9,7 +9,7 @@ import ( //Generic for all auctions. -func (k *Keeper) SetProtocolStatistics(ctx sdk.Context, appID, assetID uint64, amount sdk.Int) { +func (k Keeper) SetProtocolStatistics(ctx sdk.Context, appID, assetID uint64, amount sdk.Int) { var ( store = k.Store(ctx) key = auctiontypes.ProtocolStatisticsKey(appID, assetID) @@ -29,7 +29,7 @@ func (k *Keeper) SetProtocolStatistics(ctx sdk.Context, appID, assetID uint64, a } } -func (k *Keeper) GetProtocolStat(ctx sdk.Context, appID, assetID uint64) (stats auctiontypes.ProtocolStatistics, found bool) { +func (k Keeper) GetProtocolStat(ctx sdk.Context, appID, assetID uint64) (stats auctiontypes.ProtocolStatistics, found bool) { var ( store = k.Store(ctx) key = auctiontypes.ProtocolStatisticsKey(appID, assetID) @@ -42,7 +42,28 @@ func (k *Keeper) GetProtocolStat(ctx sdk.Context, appID, assetID uint64) (stats return stats, true } -func (k *Keeper) GetAuctionID(ctx sdk.Context) uint64 { +func (k Keeper) GetAllProtocolStat(ctx sdk.Context) (protocolStatistics []auctiontypes.ProtocolStatistics) { + var ( + store = k.Store(ctx) + iter = sdk.KVStorePrefixIterator(store, auctiontypes.ProtocolStatisticsPrefixKey) + ) + + defer func(iter sdk.Iterator) { + err := iter.Close() + if err != nil { + return + } + }(iter) + + for ; iter.Valid(); iter.Next() { + var auction auctiontypes.ProtocolStatistics + k.cdc.MustUnmarshal(iter.Value(), &auction) + protocolStatistics = append(protocolStatistics, auction) + } + return protocolStatistics +} + +func (k Keeper) GetAuctionID(ctx sdk.Context) uint64 { var ( store = k.Store(ctx) key = auctiontypes.AuctionIDKey @@ -57,7 +78,7 @@ func (k *Keeper) GetAuctionID(ctx sdk.Context) uint64 { return id.GetValue() } -func (k *Keeper) SetAuctionID(ctx sdk.Context, id uint64) { +func (k Keeper) SetAuctionID(ctx sdk.Context, id uint64) { var ( store = k.Store(ctx) key = auctiontypes.AuctionIDKey @@ -71,7 +92,7 @@ func (k *Keeper) SetAuctionID(ctx sdk.Context, id uint64) { store.Set(key, value) } -func (k *Keeper) GetUserBiddingID(ctx sdk.Context) uint64 { +func (k Keeper) GetUserBiddingID(ctx sdk.Context) uint64 { var ( store = k.Store(ctx) key = auctiontypes.UserBiddingsIDKey @@ -86,7 +107,7 @@ func (k *Keeper) GetUserBiddingID(ctx sdk.Context) uint64 { return id.GetValue() } -func (k *Keeper) SetUserBiddingID(ctx sdk.Context, id uint64) { +func (k Keeper) SetUserBiddingID(ctx sdk.Context, id uint64) { var ( store = k.Store(ctx) key = auctiontypes.UserBiddingsIDKey @@ -100,7 +121,7 @@ func (k *Keeper) SetUserBiddingID(ctx sdk.Context, id uint64) { store.Set(key, value) } -func (k *Keeper) GetAuctionType(ctx sdk.Context, auctionTypeID uint64, appID uint64) (string, error) { +func (k Keeper) GetAuctionType(ctx sdk.Context, auctionTypeID uint64, appID uint64) (string, error) { params, found := k.GetAuctionParams(ctx, appID) if !found { @@ -117,7 +138,21 @@ func (k *Keeper) GetAuctionType(ctx sdk.Context, auctionTypeID uint64, appID uin return "", sdkerrors.Wrapf(sdkerrors.ErrNotFound, "auction mapping id %d not found", auctionTypeID) } -func (k *Keeper) GetAllAuctions(ctx sdk.Context) (auctions []auctiontypes.SurplusAuction) { +func (k Keeper) GetLendAuctionType(ctx sdk.Context, auctionTypeID uint64, appID uint64) (string, error) { + params, found := k.GetAddAuctionParamsData(ctx, appID) + + if !found { + return "", auctiontypes.ErrorInvalidAuctionParams + } + + if auctionTypeID == params.DutchId { + return auctiontypes.DutchString, nil + } + + return "", sdkerrors.Wrapf(sdkerrors.ErrNotFound, "auction mapping id %d not found", auctionTypeID) +} + +func (k Keeper) GetAllAuctions(ctx sdk.Context) (auctions []auctiontypes.SurplusAuction) { var ( store = k.Store(ctx) iter = sdk.KVStorePrefixIterator(store, auctiontypes.AuctionKeyPrefix) @@ -139,9 +174,20 @@ func (k *Keeper) GetAllAuctions(ctx sdk.Context) (auctions []auctiontypes.Surplu return auctions } +func (k Keeper) GetAllSurplusAuctions(ctx sdk.Context) (surplusAuction []auctiontypes.SurplusAuction) { + + apps, _ := k.GetApps(ctx) + + for _, item := range apps { + auction := k.GetSurplusAuctions(ctx, item.Id) + surplusAuction = append(surplusAuction, auction...) + } + return surplusAuction +} + //SURPLUS -func (k *Keeper) SetSurplusAuction(ctx sdk.Context, auction auctiontypes.SurplusAuction) error { +func (k Keeper) SetSurplusAuction(ctx sdk.Context, auction auctiontypes.SurplusAuction) error { auctionType, err := k.GetAuctionType(ctx, auction.AuctionMappingId, auction.AppId) if err != nil { return err @@ -155,7 +201,7 @@ func (k *Keeper) SetSurplusAuction(ctx sdk.Context, auction auctiontypes.Surplus return nil } -func (k *Keeper) SetHistorySurplusAuction(ctx sdk.Context, auction auctiontypes.SurplusAuction) error { +func (k Keeper) SetHistorySurplusAuction(ctx sdk.Context, auction auctiontypes.SurplusAuction) error { auctionType, err := k.GetAuctionType(ctx, auction.AuctionMappingId, auction.AppId) if err != nil { return err @@ -169,7 +215,7 @@ func (k *Keeper) SetHistorySurplusAuction(ctx sdk.Context, auction auctiontypes. return nil } -func (k *Keeper) DeleteSurplusAuction(ctx sdk.Context, auction auctiontypes.SurplusAuction) error { +func (k Keeper) DeleteSurplusAuction(ctx sdk.Context, auction auctiontypes.SurplusAuction) error { auctionType, err := k.GetAuctionType(ctx, auction.AuctionMappingId, auction.AppId) if err != nil { return err @@ -182,7 +228,7 @@ func (k *Keeper) DeleteSurplusAuction(ctx sdk.Context, auction auctiontypes.Surp return nil } -func (k *Keeper) GetSurplusAuction(ctx sdk.Context, appID, auctionMappingID, auctionID uint64) (auction auctiontypes.SurplusAuction, err error) { +func (k Keeper) GetSurplusAuction(ctx sdk.Context, appID, auctionMappingID, auctionID uint64) (auction auctiontypes.SurplusAuction, err error) { auctionType, err := k.GetAuctionType(ctx, auctionMappingID, appID) if err != nil { return auction, err @@ -200,7 +246,7 @@ func (k *Keeper) GetSurplusAuction(ctx sdk.Context, appID, auctionMappingID, auc return auction, nil } -func (k *Keeper) GetHistorySurplusAuction(ctx sdk.Context, appID, auctionMappingID, auctionID uint64) (auction auctiontypes.SurplusAuction, err error) { +func (k Keeper) GetHistorySurplusAuction(ctx sdk.Context, appID, auctionMappingID, auctionID uint64) (auction auctiontypes.SurplusAuction, err error) { auctionType, err := k.GetAuctionType(ctx, auctionMappingID, appID) if err != nil { return auction, err @@ -218,7 +264,7 @@ func (k *Keeper) GetHistorySurplusAuction(ctx sdk.Context, appID, auctionMapping return auction, nil } -func (k *Keeper) GetSurplusAuctions(ctx sdk.Context, appID uint64) (auctions []auctiontypes.SurplusAuction) { +func (k Keeper) GetSurplusAuctions(ctx sdk.Context, appID uint64) (auctions []auctiontypes.SurplusAuction) { var ( store = k.Store(ctx) key = auctiontypes.AuctionTypeKey(appID, auctiontypes.SurplusString) @@ -241,7 +287,7 @@ func (k *Keeper) GetSurplusAuctions(ctx sdk.Context, appID uint64) (auctions []a return auctions } -func (k *Keeper) GetHistorySurplusAuctions(ctx sdk.Context, appID uint64) (auctions []auctiontypes.SurplusAuction) { +func (k Keeper) GetHistorySurplusAuctions(ctx sdk.Context, appID uint64) (auctions []auctiontypes.SurplusAuction) { var ( store = k.Store(ctx) key = auctiontypes.HistoryAuctionTypeKey(appID, auctiontypes.SurplusString) @@ -264,7 +310,7 @@ func (k *Keeper) GetHistorySurplusAuctions(ctx sdk.Context, appID uint64) (aucti return auctions } -func (k *Keeper) SetSurplusUserBidding(ctx sdk.Context, userBiddings auctiontypes.SurplusBiddings) error { +func (k Keeper) SetSurplusUserBidding(ctx sdk.Context, userBiddings auctiontypes.SurplusBiddings) error { auctionType, err := k.GetAuctionType(ctx, userBiddings.AuctionMappingId, userBiddings.AppId) if err != nil { return err @@ -278,7 +324,7 @@ func (k *Keeper) SetSurplusUserBidding(ctx sdk.Context, userBiddings auctiontype return nil } -func (k *Keeper) SetHistorySurplusUserBidding(ctx sdk.Context, userBiddings auctiontypes.SurplusBiddings) error { +func (k Keeper) SetHistorySurplusUserBidding(ctx sdk.Context, userBiddings auctiontypes.SurplusBiddings) error { auctionType, err := k.GetAuctionType(ctx, userBiddings.AuctionMappingId, userBiddings.AppId) if err != nil { return err @@ -292,7 +338,7 @@ func (k *Keeper) SetHistorySurplusUserBidding(ctx sdk.Context, userBiddings auct return nil } -func (k *Keeper) DeleteSurplusUserBidding(ctx sdk.Context, userBiddings auctiontypes.SurplusBiddings) error { +func (k Keeper) DeleteSurplusUserBidding(ctx sdk.Context, userBiddings auctiontypes.SurplusBiddings) error { auctionType, err := k.GetAuctionType(ctx, userBiddings.AuctionMappingId, userBiddings.AppId) if err != nil { return err @@ -305,7 +351,7 @@ func (k *Keeper) DeleteSurplusUserBidding(ctx sdk.Context, userBiddings auctiont return nil } -func (k *Keeper) GetSurplusUserBidding(ctx sdk.Context, bidder string, appID, biddingID uint64) (userBidding auctiontypes.SurplusBiddings, err error) { +func (k Keeper) GetSurplusUserBidding(ctx sdk.Context, bidder string, appID, biddingID uint64) (userBidding auctiontypes.SurplusBiddings, err error) { var ( store = k.Store(ctx) key = auctiontypes.UserKey(bidder, appID, auctiontypes.SurplusString, biddingID) @@ -320,7 +366,7 @@ func (k *Keeper) GetSurplusUserBidding(ctx sdk.Context, bidder string, appID, bi return userBidding, nil } -func (k *Keeper) GetHistorySurplusUserBidding(ctx sdk.Context, bidder string, appID, biddingID uint64) (userBidding auctiontypes.SurplusBiddings, err error) { +func (k Keeper) GetHistorySurplusUserBidding(ctx sdk.Context, bidder string, appID, biddingID uint64) (userBidding auctiontypes.SurplusBiddings, err error) { var ( store = k.Store(ctx) key = auctiontypes.HistoryUserKey(bidder, appID, auctiontypes.SurplusString, biddingID) @@ -335,7 +381,7 @@ func (k *Keeper) GetHistorySurplusUserBidding(ctx sdk.Context, bidder string, ap return userBidding, nil } -func (k *Keeper) GetSurplusUserBiddings(ctx sdk.Context, bidder string, appID uint64) (userBiddings []auctiontypes.SurplusBiddings) { +func (k Keeper) GetSurplusUserBiddings(ctx sdk.Context, bidder string, appID uint64) (userBiddings []auctiontypes.SurplusBiddings) { var ( store = k.Store(ctx) key = auctiontypes.UserAuctionTypeKey(bidder, appID, auctiontypes.SurplusString) @@ -358,7 +404,28 @@ func (k *Keeper) GetSurplusUserBiddings(ctx sdk.Context, bidder string, appID ui return userBiddings } -func (k *Keeper) GetHistorySurplusUserBiddings(ctx sdk.Context, bidder string, appID uint64) (userBiddings []auctiontypes.SurplusBiddings) { +func (k Keeper) GetAllSurplusUserBiddings(ctx sdk.Context) (surplusBiddings []auctiontypes.SurplusBiddings) { + var ( + store = k.Store(ctx) + iter = sdk.KVStorePrefixIterator(store, auctiontypes.UserKeyPrefix) + ) + + defer func(iter sdk.Iterator) { + err := iter.Close() + if err != nil { + return + } + }(iter) + + for ; iter.Valid(); iter.Next() { + var auction auctiontypes.SurplusBiddings + k.cdc.MustUnmarshal(iter.Value(), &auction) + surplusBiddings = append(surplusBiddings, auction) + } + return surplusBiddings +} + +func (k Keeper) GetHistorySurplusUserBiddings(ctx sdk.Context, bidder string, appID uint64) (userBiddings []auctiontypes.SurplusBiddings) { var ( store = k.Store(ctx) key = auctiontypes.HistoryUserAuctionTypeKey(bidder, appID, auctiontypes.SurplusString) @@ -383,7 +450,7 @@ func (k *Keeper) GetHistorySurplusUserBiddings(ctx sdk.Context, bidder string, a //DEBT -func (k *Keeper) SetDebtAuction(ctx sdk.Context, auction auctiontypes.DebtAuction) error { +func (k Keeper) SetDebtAuction(ctx sdk.Context, auction auctiontypes.DebtAuction) error { auctionType, err := k.GetAuctionType(ctx, auction.AuctionMappingId, auction.AppId) if err != nil { return err @@ -397,7 +464,7 @@ func (k *Keeper) SetDebtAuction(ctx sdk.Context, auction auctiontypes.DebtAuctio return nil } -func (k *Keeper) SetHistoryDebtAuction(ctx sdk.Context, auction auctiontypes.DebtAuction) error { +func (k Keeper) SetHistoryDebtAuction(ctx sdk.Context, auction auctiontypes.DebtAuction) error { auctionType, err := k.GetAuctionType(ctx, auction.AuctionMappingId, auction.AppId) if err != nil { return err @@ -411,7 +478,7 @@ func (k *Keeper) SetHistoryDebtAuction(ctx sdk.Context, auction auctiontypes.Deb return nil } -func (k *Keeper) DeleteDebtAuction(ctx sdk.Context, auction auctiontypes.DebtAuction) error { +func (k Keeper) DeleteDebtAuction(ctx sdk.Context, auction auctiontypes.DebtAuction) error { auctionType, err := k.GetAuctionType(ctx, auction.AuctionMappingId, auction.AppId) if err != nil { return err @@ -424,7 +491,7 @@ func (k *Keeper) DeleteDebtAuction(ctx sdk.Context, auction auctiontypes.DebtAuc return nil } -func (k *Keeper) GetDebtAuction(ctx sdk.Context, appID, auctionMappingID, auctionID uint64) (auction auctiontypes.DebtAuction, err error) { +func (k Keeper) GetDebtAuction(ctx sdk.Context, appID, auctionMappingID, auctionID uint64) (auction auctiontypes.DebtAuction, err error) { auctionType, err := k.GetAuctionType(ctx, auctionMappingID, appID) if err != nil { return auction, err @@ -441,7 +508,7 @@ func (k *Keeper) GetDebtAuction(ctx sdk.Context, appID, auctionMappingID, auctio return auction, nil } -func (k *Keeper) GetHistoryDebtAuction(ctx sdk.Context, appID, auctionMappingID, auctionID uint64) (auction auctiontypes.DebtAuction, err error) { +func (k Keeper) GetHistoryDebtAuction(ctx sdk.Context, appID, auctionMappingID, auctionID uint64) (auction auctiontypes.DebtAuction, err error) { auctionType, err := k.GetAuctionType(ctx, auctionMappingID, appID) if err != nil { return auction, err @@ -458,7 +525,7 @@ func (k *Keeper) GetHistoryDebtAuction(ctx sdk.Context, appID, auctionMappingID, return auction, nil } -func (k *Keeper) GetDebtAuctions(ctx sdk.Context, appID uint64) (auctions []auctiontypes.DebtAuction) { +func (k Keeper) GetDebtAuctions(ctx sdk.Context, appID uint64) (auctions []auctiontypes.DebtAuction) { var ( store = k.Store(ctx) key = auctiontypes.AuctionTypeKey(appID, auctiontypes.DebtString) @@ -481,7 +548,18 @@ func (k *Keeper) GetDebtAuctions(ctx sdk.Context, appID uint64) (auctions []auct return auctions } -func (k *Keeper) GetHistoryDebtAuctions(ctx sdk.Context, appID uint64) (auctions []auctiontypes.DebtAuction) { +func (k Keeper) GetAllDebtAuctions(ctx sdk.Context) (debtAuction []auctiontypes.DebtAuction) { + + apps, _ := k.GetApps(ctx) + + for _, item := range apps { + auction := k.GetDebtAuctions(ctx, item.Id) + debtAuction = append(debtAuction, auction...) + } + return debtAuction +} + +func (k Keeper) GetHistoryDebtAuctions(ctx sdk.Context, appID uint64) (auctions []auctiontypes.DebtAuction) { var ( store = k.Store(ctx) key = auctiontypes.HistoryAuctionTypeKey(appID, auctiontypes.DebtString) @@ -504,7 +582,7 @@ func (k *Keeper) GetHistoryDebtAuctions(ctx sdk.Context, appID uint64) (auctions return auctions } -func (k *Keeper) SetDebtUserBidding(ctx sdk.Context, userBiddings auctiontypes.DebtBiddings) error { +func (k Keeper) SetDebtUserBidding(ctx sdk.Context, userBiddings auctiontypes.DebtBiddings) error { auctionType, err := k.GetAuctionType(ctx, userBiddings.AuctionMappingId, userBiddings.AppId) if err != nil { return err @@ -518,7 +596,7 @@ func (k *Keeper) SetDebtUserBidding(ctx sdk.Context, userBiddings auctiontypes.D return nil } -func (k *Keeper) SetHistoryDebtUserBidding(ctx sdk.Context, userBiddings auctiontypes.DebtBiddings) error { +func (k Keeper) SetHistoryDebtUserBidding(ctx sdk.Context, userBiddings auctiontypes.DebtBiddings) error { auctionType, err := k.GetAuctionType(ctx, userBiddings.AuctionMappingId, userBiddings.AppId) if err != nil { return err @@ -532,7 +610,7 @@ func (k *Keeper) SetHistoryDebtUserBidding(ctx sdk.Context, userBiddings auction return nil } -func (k *Keeper) DeleteDebtUserBidding(ctx sdk.Context, userBiddings auctiontypes.DebtBiddings) error { +func (k Keeper) DeleteDebtUserBidding(ctx sdk.Context, userBiddings auctiontypes.DebtBiddings) error { auctionType, err := k.GetAuctionType(ctx, userBiddings.AuctionMappingId, userBiddings.AppId) if err != nil { return err @@ -545,7 +623,7 @@ func (k *Keeper) DeleteDebtUserBidding(ctx sdk.Context, userBiddings auctiontype return nil } -func (k *Keeper) GetDebtUserBidding(ctx sdk.Context, bidder string, appID, biddingID uint64) (userBidding auctiontypes.DebtBiddings, err error) { +func (k Keeper) GetDebtUserBidding(ctx sdk.Context, bidder string, appID, biddingID uint64) (userBidding auctiontypes.DebtBiddings, err error) { var ( store = k.Store(ctx) key = auctiontypes.UserKey(bidder, appID, auctiontypes.DebtString, biddingID) @@ -558,7 +636,28 @@ func (k *Keeper) GetDebtUserBidding(ctx sdk.Context, bidder string, appID, biddi return userBidding, nil } -func (k *Keeper) GetHistoryDebtUserBidding(ctx sdk.Context, bidder string, appID, biddingID uint64) (userBidding auctiontypes.DebtBiddings, err error) { +func (k Keeper) GetAllDebtUserBidding(ctx sdk.Context) (debtBiddings []auctiontypes.DebtBiddings) { + var ( + store = k.Store(ctx) + iter = sdk.KVStorePrefixIterator(store, auctiontypes.UserKeyPrefix) + ) + + defer func(iter sdk.Iterator) { + err := iter.Close() + if err != nil { + return + } + }(iter) + + for ; iter.Valid(); iter.Next() { + var auction auctiontypes.DebtBiddings + k.cdc.MustUnmarshal(iter.Value(), &auction) + debtBiddings = append(debtBiddings, auction) + } + return debtBiddings +} + +func (k Keeper) GetHistoryDebtUserBidding(ctx sdk.Context, bidder string, appID, biddingID uint64) (userBidding auctiontypes.DebtBiddings, err error) { var ( store = k.Store(ctx) key = auctiontypes.HistoryUserKey(bidder, appID, auctiontypes.DebtString, biddingID) @@ -571,7 +670,7 @@ func (k *Keeper) GetHistoryDebtUserBidding(ctx sdk.Context, bidder string, appID return userBidding, nil } -func (k *Keeper) GetDebtUserBiddings(ctx sdk.Context, bidder string, appID uint64) (userBiddings []auctiontypes.DebtBiddings) { +func (k Keeper) GetDebtUserBiddings(ctx sdk.Context, bidder string, appID uint64) (userBiddings []auctiontypes.DebtBiddings) { var ( store = k.Store(ctx) key = auctiontypes.UserAuctionTypeKey(bidder, appID, auctiontypes.DebtString) @@ -594,7 +693,7 @@ func (k *Keeper) GetDebtUserBiddings(ctx sdk.Context, bidder string, appID uint6 return userBiddings } -func (k *Keeper) GetHistoryDebtUserBiddings(ctx sdk.Context, bidder string, appID uint64) (userBiddings []auctiontypes.DebtBiddings) { +func (k Keeper) GetHistoryDebtUserBiddings(ctx sdk.Context, bidder string, appID uint64) (userBiddings []auctiontypes.DebtBiddings) { var ( store = k.Store(ctx) key = auctiontypes.HistoryUserAuctionTypeKey(bidder, appID, auctiontypes.DebtString) @@ -619,7 +718,7 @@ func (k *Keeper) GetHistoryDebtUserBiddings(ctx sdk.Context, bidder string, appI //DUTCH -func (k *Keeper) SetDutchAuction(ctx sdk.Context, auction auctiontypes.DutchAuction) error { +func (k Keeper) SetDutchAuction(ctx sdk.Context, auction auctiontypes.DutchAuction) error { auctionType, err := k.GetAuctionType(ctx, auction.AuctionMappingId, auction.AppId) if err != nil { return err @@ -634,7 +733,7 @@ func (k *Keeper) SetDutchAuction(ctx sdk.Context, auction auctiontypes.DutchAuct return nil } -func (k *Keeper) SetHistoryDutchAuction(ctx sdk.Context, auction auctiontypes.DutchAuction) error { +func (k Keeper) SetHistoryDutchAuction(ctx sdk.Context, auction auctiontypes.DutchAuction) error { auctionType, err := k.GetAuctionType(ctx, auction.AuctionMappingId, auction.AppId) if err != nil { return err @@ -648,7 +747,7 @@ func (k *Keeper) SetHistoryDutchAuction(ctx sdk.Context, auction auctiontypes.Du return nil } -func (k *Keeper) DeleteDutchAuction(ctx sdk.Context, auction auctiontypes.DutchAuction) error { +func (k Keeper) DeleteDutchAuction(ctx sdk.Context, auction auctiontypes.DutchAuction) error { auctionType, err := k.GetAuctionType(ctx, auction.AuctionMappingId, auction.AppId) if err != nil { return err @@ -661,7 +760,7 @@ func (k *Keeper) DeleteDutchAuction(ctx sdk.Context, auction auctiontypes.DutchA return nil } -func (k *Keeper) GetDutchAuction(ctx sdk.Context, appID, auctionMappingID, auctionID uint64) (auction auctiontypes.DutchAuction, err error) { +func (k Keeper) GetDutchAuction(ctx sdk.Context, appID, auctionMappingID, auctionID uint64) (auction auctiontypes.DutchAuction, err error) { auctionType, err := k.GetAuctionType(ctx, auctionMappingID, appID) if err != nil { return auction, err @@ -680,7 +779,7 @@ func (k *Keeper) GetDutchAuction(ctx sdk.Context, appID, auctionMappingID, aucti return auction, nil } -func (k *Keeper) GetHistoryDutchAuction(ctx sdk.Context, appID, auctionMappingID, auctionID uint64) (auction auctiontypes.DutchAuction, err error) { +func (k Keeper) GetHistoryDutchAuction(ctx sdk.Context, appID, auctionMappingID, auctionID uint64) (auction auctiontypes.DutchAuction, err error) { auctionType, err := k.GetAuctionType(ctx, auctionMappingID, appID) if err != nil { return auction, err @@ -698,7 +797,7 @@ func (k *Keeper) GetHistoryDutchAuction(ctx sdk.Context, appID, auctionMappingID return auction, nil } -func (k *Keeper) GetDutchAuctions(ctx sdk.Context, appID uint64) (auctions []auctiontypes.DutchAuction) { +func (k Keeper) GetDutchAuctions(ctx sdk.Context, appID uint64) (auctions []auctiontypes.DutchAuction) { var ( store = k.Store(ctx) key = auctiontypes.AuctionTypeKey(appID, auctiontypes.DutchString) @@ -721,7 +820,17 @@ func (k *Keeper) GetDutchAuctions(ctx sdk.Context, appID uint64) (auctions []auc return auctions } -func (k *Keeper) GetHistoryDutchAuctions(ctx sdk.Context, appID uint64) (auctions []auctiontypes.DutchAuction) { +func (k Keeper) GetAllDutchAuctions(ctx sdk.Context) (dutchAuction []auctiontypes.DutchAuction) { + apps, _ := k.GetApps(ctx) + + for _, item := range apps { + auction := k.GetDutchAuctions(ctx, item.Id) + dutchAuction = append(dutchAuction, auction...) + } + return dutchAuction +} + +func (k Keeper) GetHistoryDutchAuctions(ctx sdk.Context, appID uint64) (auctions []auctiontypes.DutchAuction) { var ( store = k.Store(ctx) key = auctiontypes.HistoryAuctionTypeKey(appID, auctiontypes.DutchString) @@ -744,7 +853,7 @@ func (k *Keeper) GetHistoryDutchAuctions(ctx sdk.Context, appID uint64) (auction return auctions } -func (k *Keeper) SetDutchUserBidding(ctx sdk.Context, userBiddings auctiontypes.DutchBiddings) error { +func (k Keeper) SetDutchUserBidding(ctx sdk.Context, userBiddings auctiontypes.DutchBiddings) error { auctionType, err := k.GetAuctionType(ctx, userBiddings.AuctionMappingId, userBiddings.AppId) if err != nil { return err @@ -758,7 +867,7 @@ func (k *Keeper) SetDutchUserBidding(ctx sdk.Context, userBiddings auctiontypes. return nil } -func (k *Keeper) SetHistoryDutchUserBidding(ctx sdk.Context, userBiddings auctiontypes.DutchBiddings) error { +func (k Keeper) SetHistoryDutchUserBidding(ctx sdk.Context, userBiddings auctiontypes.DutchBiddings) error { auctionType, err := k.GetAuctionType(ctx, userBiddings.AuctionMappingId, userBiddings.AppId) if err != nil { return err @@ -772,7 +881,7 @@ func (k *Keeper) SetHistoryDutchUserBidding(ctx sdk.Context, userBiddings auctio return nil } -func (k *Keeper) DeleteDutchUserBidding(ctx sdk.Context, userBiddings auctiontypes.DutchBiddings) error { +func (k Keeper) DeleteDutchUserBidding(ctx sdk.Context, userBiddings auctiontypes.DutchBiddings) error { auctionType, err := k.GetAuctionType(ctx, userBiddings.AuctionMappingId, userBiddings.AppId) if err != nil { return err @@ -785,7 +894,7 @@ func (k *Keeper) DeleteDutchUserBidding(ctx sdk.Context, userBiddings auctiontyp return nil } -func (k *Keeper) GetDutchUserBidding(ctx sdk.Context, bidder string, appID, biddingID uint64) (userBidding auctiontypes.DutchBiddings, err error) { +func (k Keeper) GetDutchUserBidding(ctx sdk.Context, bidder string, appID, biddingID uint64) (userBidding auctiontypes.DutchBiddings, err error) { var ( store = k.Store(ctx) key = auctiontypes.UserKey(bidder, appID, auctiontypes.DutchString, biddingID) @@ -801,7 +910,7 @@ func (k *Keeper) GetDutchUserBidding(ctx sdk.Context, bidder string, appID, bidd return userBidding, nil } -func (k *Keeper) GetHistoryDutchUserBidding(ctx sdk.Context, bidder string, appID, biddingID uint64) (userBidding auctiontypes.DutchBiddings, err error) { +func (k Keeper) GetHistoryDutchUserBidding(ctx sdk.Context, bidder string, appID, biddingID uint64) (userBidding auctiontypes.DutchBiddings, err error) { var ( store = k.Store(ctx) key = auctiontypes.HistoryUserKey(bidder, appID, auctiontypes.DutchString, biddingID) @@ -817,7 +926,7 @@ func (k *Keeper) GetHistoryDutchUserBidding(ctx sdk.Context, bidder string, appI return userBidding, nil } -func (k *Keeper) GetDutchUserBiddings(ctx sdk.Context, bidder string, appID uint64) (userBiddings []auctiontypes.DutchBiddings) { +func (k Keeper) GetDutchUserBiddings(ctx sdk.Context, bidder string, appID uint64) (userBiddings []auctiontypes.DutchBiddings) { var ( store = k.Store(ctx) key = auctiontypes.UserAuctionTypeKey(bidder, appID, auctiontypes.DutchString) @@ -840,7 +949,28 @@ func (k *Keeper) GetDutchUserBiddings(ctx sdk.Context, bidder string, appID uint return userBiddings } -func (k *Keeper) GetHistoryDutchUserBiddings(ctx sdk.Context, bidder string, appID uint64) (userBiddings []auctiontypes.DutchBiddings) { +func (k Keeper) GetAllDutchUserBiddings(ctx sdk.Context) (dutchBiddings []auctiontypes.DutchBiddings) { + var ( + store = k.Store(ctx) + iter = sdk.KVStorePrefixIterator(store, auctiontypes.UserKeyPrefix) + ) + + defer func(iter sdk.Iterator) { + err := iter.Close() + if err != nil { + return + } + }(iter) + + for ; iter.Valid(); iter.Next() { + var auction auctiontypes.DutchBiddings + k.cdc.MustUnmarshal(iter.Value(), &auction) + dutchBiddings = append(dutchBiddings, auction) + } + return dutchBiddings +} + +func (k Keeper) GetHistoryDutchUserBiddings(ctx sdk.Context, bidder string, appID uint64) (userBiddings []auctiontypes.DutchBiddings) { var ( store = k.Store(ctx) key = auctiontypes.HistoryUserAuctionTypeKey(bidder, appID, auctiontypes.DutchString) @@ -863,7 +993,7 @@ func (k *Keeper) GetHistoryDutchUserBiddings(ctx sdk.Context, bidder string, app return userBiddings } -func (k *Keeper) SetAuctionParams(ctx sdk.Context, auctionParams auctiontypes.AuctionParams) { +func (k Keeper) SetAuctionParams(ctx sdk.Context, auctionParams auctiontypes.AuctionParams) { var ( store = k.Store(ctx) key = auctiontypes.AuctionParamsKey(auctionParams.AppId) @@ -873,7 +1003,7 @@ func (k *Keeper) SetAuctionParams(ctx sdk.Context, auctionParams auctiontypes.Au store.Set(key, value) } -func (k *Keeper) GetAuctionParams(ctx sdk.Context, AppID uint64) (asset auctiontypes.AuctionParams, found bool) { +func (k Keeper) GetAuctionParams(ctx sdk.Context, AppID uint64) (asset auctiontypes.AuctionParams, found bool) { key := auctiontypes.AuctionParamsKey(AppID) var ( @@ -890,7 +1020,28 @@ func (k *Keeper) GetAuctionParams(ctx sdk.Context, AppID uint64) (asset auctiont return asset, true } -func (k *Keeper) GetLendAuctionID(ctx sdk.Context) uint64 { +func (k Keeper) GetAllAuctionParams(ctx sdk.Context) (auctionParams []auctiontypes.AuctionParams) { + var ( + store = k.Store(ctx) + iter = sdk.KVStorePrefixIterator(store, auctiontypes.AuctionParamsKeyPrefix) + ) + + defer func(iter sdk.Iterator) { + err := iter.Close() + if err != nil { + return + } + }(iter) + + for ; iter.Valid(); iter.Next() { + var auction auctiontypes.AuctionParams + k.cdc.MustUnmarshal(iter.Value(), &auction) + auctionParams = append(auctionParams, auction) + } + return auctionParams +} + +func (k Keeper) GetLendAuctionID(ctx sdk.Context) uint64 { var ( store = k.Store(ctx) key = auctiontypes.LendAuctionIDKey @@ -905,7 +1056,7 @@ func (k *Keeper) GetLendAuctionID(ctx sdk.Context) uint64 { return id.GetValue() } -func (k *Keeper) SetLendAuctionID(ctx sdk.Context, id uint64) { +func (k Keeper) SetLendAuctionID(ctx sdk.Context, id uint64) { var ( store = k.Store(ctx) key = auctiontypes.LendAuctionIDKey @@ -919,8 +1070,8 @@ func (k *Keeper) SetLendAuctionID(ctx sdk.Context, id uint64) { store.Set(key, value) } -func (k *Keeper) SetDutchLendAuction(ctx sdk.Context, auction auctiontypes.DutchAuction) error { - auctionType, err := k.GetAuctionType(ctx, auction.AuctionMappingId, auction.AppId) +func (k Keeper) SetDutchLendAuction(ctx sdk.Context, auction auctiontypes.DutchAuction) error { + auctionType, err := k.GetLendAuctionType(ctx, auction.AuctionMappingId, auction.AppId) if err != nil { return err } @@ -934,8 +1085,8 @@ func (k *Keeper) SetDutchLendAuction(ctx sdk.Context, auction auctiontypes.Dutch return nil } -func (k *Keeper) SetHistoryDutchLendAuction(ctx sdk.Context, auction auctiontypes.DutchAuction) error { - auctionType, err := k.GetAuctionType(ctx, auction.AuctionMappingId, auction.AppId) +func (k Keeper) SetHistoryDutchLendAuction(ctx sdk.Context, auction auctiontypes.DutchAuction) error { + auctionType, err := k.GetLendAuctionType(ctx, auction.AuctionMappingId, auction.AppId) if err != nil { return err } @@ -948,8 +1099,8 @@ func (k *Keeper) SetHistoryDutchLendAuction(ctx sdk.Context, auction auctiontype return nil } -func (k *Keeper) DeleteDutchLendAuction(ctx sdk.Context, auction auctiontypes.DutchAuction) error { - auctionType, err := k.GetAuctionType(ctx, auction.AuctionMappingId, auction.AppId) +func (k Keeper) DeleteDutchLendAuction(ctx sdk.Context, auction auctiontypes.DutchAuction) error { + auctionType, err := k.GetLendAuctionType(ctx, auction.AuctionMappingId, auction.AppId) if err != nil { return err } @@ -961,8 +1112,8 @@ func (k *Keeper) DeleteDutchLendAuction(ctx sdk.Context, auction auctiontypes.Du return nil } -func (k *Keeper) GetDutchLendAuction(ctx sdk.Context, appID, auctionMappingID, auctionID uint64) (auction auctiontypes.DutchAuction, err error) { - auctionType, err := k.GetAuctionType(ctx, auctionMappingID, appID) +func (k Keeper) GetDutchLendAuction(ctx sdk.Context, appID, auctionMappingID, auctionID uint64) (auction auctiontypes.DutchAuction, err error) { + auctionType, err := k.GetLendAuctionType(ctx, auctionMappingID, appID) if err != nil { return auction, err } @@ -980,8 +1131,8 @@ func (k *Keeper) GetDutchLendAuction(ctx sdk.Context, appID, auctionMappingID, a return auction, nil } -func (k *Keeper) GetHistoryDutchLendAuction(ctx sdk.Context, appID, auctionMappingID, auctionID uint64) (auction auctiontypes.DutchAuction, err error) { - auctionType, err := k.GetAuctionType(ctx, auctionMappingID, appID) +func (k Keeper) GetHistoryDutchLendAuction(ctx sdk.Context, appID, auctionMappingID, auctionID uint64) (auction auctiontypes.DutchAuction, err error) { + auctionType, err := k.GetLendAuctionType(ctx, auctionMappingID, appID) if err != nil { return auction, err } @@ -998,7 +1149,7 @@ func (k *Keeper) GetHistoryDutchLendAuction(ctx sdk.Context, appID, auctionMappi return auction, nil } -func (k *Keeper) GetDutchLendAuctions(ctx sdk.Context, appID uint64) (auctions []auctiontypes.DutchAuction) { +func (k Keeper) GetDutchLendAuctions(ctx sdk.Context, appID uint64) (auctions []auctiontypes.DutchAuction) { var ( store = k.Store(ctx) key = auctiontypes.LendAuctionTypeKey(appID, auctiontypes.DutchString) @@ -1021,7 +1172,7 @@ func (k *Keeper) GetDutchLendAuctions(ctx sdk.Context, appID uint64) (auctions [ return auctions } -func (k *Keeper) GetHistoryDutchLendAuctions(ctx sdk.Context, appID uint64) (auctions []auctiontypes.DutchAuction) { +func (k Keeper) GetHistoryDutchLendAuctions(ctx sdk.Context, appID uint64) (auctions []auctiontypes.DutchAuction) { var ( store = k.Store(ctx) key = auctiontypes.HistoryLendAuctionTypeKey(appID, auctiontypes.DutchString) @@ -1044,8 +1195,8 @@ func (k *Keeper) GetHistoryDutchLendAuctions(ctx sdk.Context, appID uint64) (auc return auctions } -func (k *Keeper) SetDutchUserLendBidding(ctx sdk.Context, userBiddings auctiontypes.DutchBiddings) error { - auctionType, err := k.GetAuctionType(ctx, userBiddings.AuctionMappingId, userBiddings.AppId) +func (k Keeper) SetDutchUserLendBidding(ctx sdk.Context, userBiddings auctiontypes.DutchBiddings) error { + auctionType, err := k.GetLendAuctionType(ctx, userBiddings.AuctionMappingId, userBiddings.AppId) if err != nil { return err } @@ -1058,8 +1209,8 @@ func (k *Keeper) SetDutchUserLendBidding(ctx sdk.Context, userBiddings auctionty return nil } -func (k *Keeper) SetHistoryDutchUserLendBidding(ctx sdk.Context, userBiddings auctiontypes.DutchBiddings) error { - auctionType, err := k.GetAuctionType(ctx, userBiddings.AuctionMappingId, userBiddings.AppId) +func (k Keeper) SetHistoryDutchUserLendBidding(ctx sdk.Context, userBiddings auctiontypes.DutchBiddings) error { + auctionType, err := k.GetLendAuctionType(ctx, userBiddings.AuctionMappingId, userBiddings.AppId) if err != nil { return err } @@ -1072,8 +1223,8 @@ func (k *Keeper) SetHistoryDutchUserLendBidding(ctx sdk.Context, userBiddings au return nil } -func (k *Keeper) DeleteDutchLendUserBidding(ctx sdk.Context, userBiddings auctiontypes.DutchBiddings) error { - auctionType, err := k.GetAuctionType(ctx, userBiddings.AuctionMappingId, userBiddings.AppId) +func (k Keeper) DeleteDutchLendUserBidding(ctx sdk.Context, userBiddings auctiontypes.DutchBiddings) error { + auctionType, err := k.GetLendAuctionType(ctx, userBiddings.AuctionMappingId, userBiddings.AppId) if err != nil { return err } @@ -1085,7 +1236,7 @@ func (k *Keeper) DeleteDutchLendUserBidding(ctx sdk.Context, userBiddings auctio return nil } -func (k *Keeper) GetDutchLendUserBidding(ctx sdk.Context, bidder string, appID, biddingID uint64) (userBidding auctiontypes.DutchBiddings, err error) { +func (k Keeper) GetDutchLendUserBidding(ctx sdk.Context, bidder string, appID, biddingID uint64) (userBidding auctiontypes.DutchBiddings, err error) { var ( store = k.Store(ctx) key = auctiontypes.LendUserKey(bidder, appID, auctiontypes.DutchString, biddingID) @@ -1101,7 +1252,7 @@ func (k *Keeper) GetDutchLendUserBidding(ctx sdk.Context, bidder string, appID, return userBidding, nil } -func (k *Keeper) GetHistoryDutchLendUserBidding(ctx sdk.Context, bidder string, appID, biddingID uint64) (userBidding auctiontypes.DutchBiddings, err error) { +func (k Keeper) GetHistoryDutchLendUserBidding(ctx sdk.Context, bidder string, appID, biddingID uint64) (userBidding auctiontypes.DutchBiddings, err error) { var ( store = k.Store(ctx) key = auctiontypes.HistoryLendUserKey(bidder, appID, auctiontypes.DutchString, biddingID) @@ -1117,7 +1268,7 @@ func (k *Keeper) GetHistoryDutchLendUserBidding(ctx sdk.Context, bidder string, return userBidding, nil } -func (k *Keeper) GetDutchLendUserBiddings(ctx sdk.Context, bidder string, appID uint64) (userBiddings []auctiontypes.DutchBiddings) { +func (k Keeper) GetDutchLendUserBiddings(ctx sdk.Context, bidder string, appID uint64) (userBiddings []auctiontypes.DutchBiddings) { var ( store = k.Store(ctx) key = auctiontypes.LendUserAuctionTypeKey(bidder, appID, auctiontypes.DutchString) @@ -1140,7 +1291,7 @@ func (k *Keeper) GetDutchLendUserBiddings(ctx sdk.Context, bidder string, appID return userBiddings } -func (k *Keeper) GetHistoryDutchLendUserBiddings(ctx sdk.Context, bidder string, appID uint64) (userBiddings []auctiontypes.DutchBiddings) { +func (k Keeper) GetHistoryDutchLendUserBiddings(ctx sdk.Context, bidder string, appID uint64) (userBiddings []auctiontypes.DutchBiddings) { var ( store = k.Store(ctx) key = auctiontypes.HistoryLendUserAuctionTypeKey(bidder, appID, auctiontypes.DutchString) diff --git a/x/auction/keeper/surplus.go b/x/auction/keeper/surplus.go index 74d5e75c8..70bbcd193 100644 --- a/x/auction/keeper/surplus.go +++ b/x/auction/keeper/surplus.go @@ -1,6 +1,7 @@ package keeper import ( + esmtypes "github.com/comdex-official/comdex/x/esm/types" "time" auctiontypes "github.com/comdex-official/comdex/x/auction/types" @@ -10,34 +11,21 @@ import ( sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" ) -func (k Keeper) SurplusActivator(ctx sdk.Context) error { - auctionMapData, found := k.GetAllAuctionMappingForApp(ctx) - if !found { - return nil +func (k Keeper) SurplusActivator(ctx sdk.Context, data collectortypes.CollectorAuctionLookupTable, + inData collectortypes.AssetIdToAuctionLookupTable, killSwitchParams esmtypes.KillSwitchParams, status bool) error { + + if inData.IsSurplusAuction && !inData.IsAuctionActive && !killSwitchParams.BreakerEnable && !status { + err := k.CreateSurplusAuction(ctx, data.AppId, inData.AssetId) + if err != nil { + return err + } } - for _, data := range auctionMapData { - for _, inData := range data.AssetIdToAuctionLookup { - klwsParams, _ := k.GetKillSwitchData(ctx, data.AppId) - esmStatus, found := k.GetESMStatus(ctx, data.AppId) - status := false - if found { - status = esmStatus.Status - } - if inData.IsSurplusAuction && !inData.IsAuctionActive && !klwsParams.BreakerEnable && !status { - err := k.CreateSurplusAuction(ctx, data.AppId, inData.AssetId) - if err != nil { - return err - } - } - if inData.IsSurplusAuction && inData.IsAuctionActive { - err := k.SurplusAuctionClose(ctx, data.AppId, status) - if err != nil { - return err - } - } + if inData.IsSurplusAuction && inData.IsAuctionActive { + err := k.SurplusAuctionClose(ctx, data.AppId, status) + if err != nil { + return err } } - return nil } diff --git a/x/auction/keeper/surplus_test.go b/x/auction/keeper/surplus_test.go index 0ce733ead..743483e79 100644 --- a/x/auction/keeper/surplus_test.go +++ b/x/auction/keeper/surplus_test.go @@ -1,6 +1,7 @@ package keeper_test import ( + "github.com/comdex-official/comdex/x/auction" "time" "github.com/comdex-official/comdex/app/wasm/bindings" @@ -32,20 +33,21 @@ func (s *KeeperTestSuite) TestSurplusActivatorBetweenThreshholdAndLotsize() { s.AddAppAsset() s.AddPairAndExtendedPairVault1() s.AddAuctionParams() - s.WasmSetCollectorLookupTableAndAuctionControl() + s.WasmSetCollectorLookupTableAndAuctionControlForSurplus() s.WasmUpdateCollectorLookupTable(19500, 1000, 501, 300) s.LiquidateVaults1() k, ctx := &s.keeper, &s.ctx - err := k.SurplusActivator(*ctx) - s.Require().NoError(err) + auction.BeginBlocker(*ctx, s.keeper) + //err := k.SurplusActivator(*ctx) + //s.Require().NoError(err) appId := uint64(1) auctionMappingId := uint64(1) auctionId := uint64(1) - _, err = k.GetSurplusAuction(*ctx, appId, auctionMappingId, auctionId) + _, err := k.GetSurplusAuction(*ctx, appId, auctionMappingId, auctionId) s.Require().Error(err) } func (s *KeeperTestSuite) TestSurplusActivator() { @@ -53,14 +55,14 @@ func (s *KeeperTestSuite) TestSurplusActivator() { s.AddAppAsset() s.AddPairAndExtendedPairVault1() s.AddAuctionParams() - s.WasmSetCollectorLookupTableAndAuctionControl() + s.WasmSetCollectorLookupTableAndAuctionControlForSurplus() s.WasmUpdateCollectorLookupTable(1000, 19800, 100, 300) s.LiquidateVaults1() k, collectorKeeper, ctx := &s.keeper, &s.collectorKeeper, &s.ctx - err := k.SurplusActivator(*ctx) - s.Require().NoError(err) + auction.BeginBlocker(*ctx, s.keeper) + //s.Require().NoError(err) appId := uint64(1) auctionMappingId := uint64(1) @@ -90,7 +92,7 @@ func (s *KeeperTestSuite) TestSurplusActivator() { //Test restart surplus auction s.advanceseconds(301) - err = k.SurplusActivator(*ctx) + auction.BeginBlocker(*ctx, s.keeper) s.Require().NoError(err) surplusAuction1, err := k.GetSurplusAuction(*ctx, appId, auctionMappingId, auctionId) s.Require().NoError(err) @@ -300,21 +302,21 @@ func (s *KeeperTestSuite) TestCloseSurplusAuction() { beforeCmstBalance, err := s.getBalance(winnerAddress, "ucmst") s.Require().NoError(err) - auction, err := k.GetSurplusAuction(*ctx, appID, auctionMappingID, auctionID) + surplusAuction, err := k.GetSurplusAuction(*ctx, appID, auctionMappingID, auctionID) s.Require().NoError(err) s.advanceseconds(int64(tc.seconds)) - err = k.SurplusActivator(*ctx) + auction.BeginBlocker(*ctx, s.keeper) s.Require().NoError(err) afterCmstBalance, err := s.getBalance(winnerAddress, "ucmst") //s.Require().NoError(err) //s.Require().Equal(beforeHarborBalance.Add(auction.ExpectedMintedToken), afterHarborBalance) if tc.isErrorExpected { - s.Require().NotEqual(beforeCmstBalance.Add(auction.SellToken), afterCmstBalance) + s.Require().NotEqual(beforeCmstBalance.Add(surplusAuction.SellToken), afterCmstBalance) } else { - s.Require().Equal(beforeCmstBalance.Add(auction.SellToken), afterCmstBalance) + s.Require().Equal(beforeCmstBalance.Add(surplusAuction.SellToken), afterCmstBalance) } }) } diff --git a/x/auction/module.go b/x/auction/module.go index c84bec482..a3392d502 100644 --- a/x/auction/module.go +++ b/x/auction/module.go @@ -59,7 +59,7 @@ func (a AppModuleBasic) RegisterInterfaces(reg cdctypes.InterfaceRegistry) { // DefaultGenesis returns the capability module's default genesis state. func (AppModuleBasic) DefaultGenesis(cdc codec.JSONCodec) json.RawMessage { - return cdc.MustMarshalJSON(types.DefaultGenesis()) + return cdc.MustMarshalJSON(types.DefaultGenesisState()) } // ValidateGenesis performs genesis state validation for the capability module. @@ -152,7 +152,7 @@ func (am AppModule) InitGenesis(ctx sdk.Context, cdc codec.JSONCodec, gs json.Ra // Initialize global index to index in genesis state cdc.MustUnmarshalJSON(gs, &genState) - InitGenesis(ctx, am.keeper, genState) + InitGenesis(ctx, am.keeper, &genState) return []abci.ValidatorUpdate{} } diff --git a/x/auction/types/errors.go b/x/auction/types/errors.go index f4d9f083f..5fa04cc18 100644 --- a/x/auction/types/errors.go +++ b/x/auction/types/errors.go @@ -18,17 +18,23 @@ var ( ErrorInvalidDebtMintedDenom = sdkerrors.Register(ModuleName, 113, "given asset type is not accepted for debt auction user mint token") ErrorInvalidDutchPrice = sdkerrors.Register(ModuleName, 119, "user max price cannot be less than collateral token price") - ErrorPrices = sdkerrors.Register(ModuleName, 122, "unable to get fetches prices for asset from oracle") - ErrorVaultNotFound = sdkerrors.Register(ModuleName, 123, "vault not found for given id") - ErrorInvalidLockedVault = sdkerrors.Register(ModuleName, 125, "locked vault not found for given id") - ErrorUnableToMakeFlagsFalse = sdkerrors.Register(ModuleName, 127, "Unable To Make Flags False after auction closed") - ErrorUnableToSetNetFees = sdkerrors.Register(ModuleName, 128, "Unable To set net fees collected after auction closed") - ErrorInvalidPair = sdkerrors.Register(ModuleName, 130, "pair not found for extended pair id") - ErrorAssetNotFound = sdkerrors.Register(ModuleName, 131, "asset not found for given id") - ErrorInvalidExtendedPairVault = sdkerrors.Register(ModuleName, 132, "extended pair vault not found for given id") - ErrorInvalidAuctionParams = sdkerrors.Register(ModuleName, 136, "auction params not found for given app id") + ErrorPrices = sdkerrors.Register(ModuleName, 122, "unable to get fetches prices for asset from oracle") + ErrorVaultNotFound = sdkerrors.Register(ModuleName, 123, "vault not found for given id") + ErrorInvalidLockedVault = sdkerrors.Register(ModuleName, 125, "locked vault not found for given id") + ErrorUnableToMakeFlagsFalse = sdkerrors.Register(ModuleName, 127, "Unable To Make Flags False after auction closed") + ErrorUnableToSetNetFees = sdkerrors.Register(ModuleName, 128, "Unable To set net fees collected after auction closed") + ErrorInvalidPair = sdkerrors.Register(ModuleName, 130, "pair not found for extended pair id") + ErrorAssetNotFound = sdkerrors.Register(ModuleName, 131, "asset not found for given id") + ErrorInvalidExtendedPairVault = sdkerrors.Register(ModuleName, 132, "extended pair vault not found for given id") + ErrorInvalidAuctionParams = sdkerrors.Register(ModuleName, 136, "auction params not found for given app id") + BurnCoinValueInCloseAuctionIsZero = sdkerrors.Register(ModuleName, 137, "Burn Coin value in close auction is zero") + SendCoinsFromModuleToModuleInAuctionIsZero = sdkerrors.Register(ModuleName, 138, "Coin value in module to module transfer in auction is zero") + SendCoinsFromModuleToAccountInAuctionIsZero = sdkerrors.Register(ModuleName, 139, "Coin value in module to account transfer in auction is zero") + SendCoinsFromAccountToModuleInAuctionIsZero = sdkerrors.Register(ModuleName, 140, "Coin value in account to module transfer in auction is zero") ) var ( - ErrorUnknownMsgType = sdkerrors.Register(ModuleName, 301, "unknown message type") + ErrorUnknownMsgType = sdkerrors.Register(ModuleName, 301, "unknown message type") + ErrorInStartDutchAuction = sdkerrors.Register(ModuleName, 302, "error in start dutch auction for locked vault id") + ErrorAssetRates = sdkerrors.Register(ModuleName, 303, "error in asset rates") ) diff --git a/x/auction/types/genesis.go b/x/auction/types/genesis.go index 24a660790..e08f2569d 100644 --- a/x/auction/types/genesis.go +++ b/x/auction/types/genesis.go @@ -1,20 +1,27 @@ package types -// DefaultIndex is the default capability global index. -const DefaultIndex uint64 = 1 - -// DefaultGenesis returns the default Capability genesis state. -func DefaultGenesis() *GenesisState { +func NewGenesisState(surplusAuction []SurplusAuction, debtAuction []DebtAuction, dutchAuction []DutchAuction, protocolStatistics []ProtocolStatistics, auctionParams []AuctionParams, params Params) *GenesisState { return &GenesisState{ - // this line is used by starport scaffolding # genesis/types/default. - Params: DefaultParams(), + SurplusAuction: surplusAuction, + DebtAuction: debtAuction, + DutchAuction: dutchAuction, + ProtocolStatistics: protocolStatistics, + AuctionParams: auctionParams, + Params: params, } } -// Validate performs basic genesis state validation returning an error upon any -// failure. -func (gs GenesisState) Validate() error { - // this line is used by starport scaffolding # genesis/types/validate. +func DefaultGenesisState() *GenesisState { + return NewGenesisState( + []SurplusAuction{}, + []DebtAuction{}, + []DutchAuction{}, + []ProtocolStatistics{}, + []AuctionParams{}, + DefaultParams(), + ) +} - return gs.Params.Validate() +func (m *GenesisState) Validate() error { + return nil } diff --git a/x/auction/types/genesis.pb.go b/x/auction/types/genesis.pb.go index dc9237d69..d18c6b927 100644 --- a/x/auction/types/genesis.pb.go +++ b/x/auction/types/genesis.pb.go @@ -24,7 +24,12 @@ var _ = math.Inf const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package type GenesisState struct { - Params Params `protobuf:"bytes,1,opt,name=params,proto3" json:"params"` + SurplusAuction []SurplusAuction `protobuf:"bytes,1,rep,name=surplusAuction,proto3" json:"surplusAuction" yaml:"surplusAuction"` + DebtAuction []DebtAuction `protobuf:"bytes,2,rep,name=debtAuction,proto3" json:"debtAuction" yaml:"debtAuction"` + DutchAuction []DutchAuction `protobuf:"bytes,3,rep,name=dutchAuction,proto3" json:"dutchAuction" yaml:"dutchAuction"` + ProtocolStatistics []ProtocolStatistics `protobuf:"bytes,4,rep,name=protocolStatistics,proto3" json:"protocolStatistics" yaml:"protocolStatistics"` + AuctionParams []AuctionParams `protobuf:"bytes,5,rep,name=auctionParams,proto3" json:"auctionParams" yaml:"auctionParams"` + Params Params `protobuf:"bytes,6,opt,name=params,proto3" json:"params"` } func (m *GenesisState) Reset() { *m = GenesisState{} } @@ -60,6 +65,41 @@ func (m *GenesisState) XXX_DiscardUnknown() { var xxx_messageInfo_GenesisState proto.InternalMessageInfo +func (m *GenesisState) GetSurplusAuction() []SurplusAuction { + if m != nil { + return m.SurplusAuction + } + return nil +} + +func (m *GenesisState) GetDebtAuction() []DebtAuction { + if m != nil { + return m.DebtAuction + } + return nil +} + +func (m *GenesisState) GetDutchAuction() []DutchAuction { + if m != nil { + return m.DutchAuction + } + return nil +} + +func (m *GenesisState) GetProtocolStatistics() []ProtocolStatistics { + if m != nil { + return m.ProtocolStatistics + } + return nil +} + +func (m *GenesisState) GetAuctionParams() []AuctionParams { + if m != nil { + return m.AuctionParams + } + return nil +} + func (m *GenesisState) GetParams() Params { if m != nil { return m.Params @@ -76,20 +116,33 @@ func init() { } var fileDescriptor_49088f171dd3086d = []byte{ - // 204 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x52, 0x49, 0xce, 0xcf, 0x4d, - 0x49, 0xad, 0xd0, 0x4f, 0x2c, 0x4d, 0x2e, 0xc9, 0xcc, 0xcf, 0xd3, 0x2f, 0x33, 0x4c, 0x4a, 0x2d, - 0x49, 0x34, 0xd4, 0x4f, 0x4f, 0xcd, 0x4b, 0x2d, 0xce, 0x2c, 0xd6, 0x2b, 0x28, 0xca, 0x2f, 0xc9, - 0x17, 0x12, 0x83, 0xa8, 0xd2, 0x83, 0xaa, 0xd2, 0x83, 0xaa, 0x92, 0x12, 0x49, 0xcf, 0x4f, 0xcf, - 0x07, 0x2b, 0xd1, 0x07, 0xb1, 0x20, 0xaa, 0xa5, 0x94, 0x71, 0x98, 0x59, 0x90, 0x58, 0x94, 0x98, - 0x0b, 0x35, 0x52, 0xc9, 0x87, 0x8b, 0xc7, 0x1d, 0x62, 0x47, 0x70, 0x49, 0x62, 0x49, 0xaa, 0x90, - 0x0d, 0x17, 0x1b, 0x44, 0x5e, 0x82, 0x51, 0x81, 0x51, 0x83, 0xdb, 0x48, 0x4e, 0x0f, 0xbb, 0x9d, - 0x7a, 0x01, 0x60, 0x55, 0x4e, 0x2c, 0x27, 0xee, 0xc9, 0x33, 0x04, 0x41, 0xf5, 0x38, 0x79, 0x9f, - 0x78, 0x24, 0xc7, 0x78, 0xe1, 0x91, 0x1c, 0xe3, 0x83, 0x47, 0x72, 0x8c, 0x13, 0x1e, 0xcb, 0x31, - 0x5c, 0x78, 0x2c, 0xc7, 0x70, 0xe3, 0xb1, 0x1c, 0x43, 0x94, 0x61, 0x7a, 0x66, 0x49, 0x46, 0x69, - 0x12, 0xc8, 0x34, 0x7d, 0x88, 0x89, 0xba, 0xf9, 0x69, 0x69, 0x99, 0xc9, 0x99, 0x89, 0x39, 0x50, - 0xbe, 0x3e, 0xc2, 0xa5, 0x25, 0x95, 0x05, 0xa9, 0xc5, 0x49, 0x6c, 0x60, 0x17, 0x1a, 0x03, 0x02, - 0x00, 0x00, 0xff, 0xff, 0x2c, 0x4c, 0x05, 0x92, 0x1c, 0x01, 0x00, 0x00, + // 403 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x92, 0x31, 0xcf, 0xd2, 0x40, + 0x18, 0x80, 0x5b, 0x41, 0x86, 0x03, 0x1d, 0x4e, 0x34, 0xb5, 0x6a, 0xc1, 0x02, 0x86, 0x98, 0xd8, + 0x06, 0xdc, 0x8c, 0x0b, 0x8d, 0x89, 0x83, 0x0b, 0x29, 0x9b, 0xdb, 0xb5, 0x3d, 0xca, 0x25, 0x2d, + 0xd7, 0xd0, 0xab, 0x91, 0xc1, 0xff, 0xe0, 0xcf, 0x62, 0x64, 0x74, 0x22, 0x06, 0x7e, 0xc0, 0x97, + 0x7c, 0xbf, 0xe0, 0x4b, 0xef, 0x8e, 0xd0, 0x7e, 0x70, 0x5b, 0x9b, 0x3e, 0xf7, 0x3c, 0xbd, 0x37, + 0x2f, 0x18, 0x86, 0x34, 0x8d, 0xf0, 0x6f, 0x17, 0x15, 0x21, 0x23, 0x74, 0xed, 0xfe, 0x9a, 0x04, + 0x98, 0xa1, 0x89, 0x1b, 0xe3, 0x35, 0xce, 0x49, 0xee, 0x64, 0x1b, 0xca, 0x28, 0x7c, 0x25, 0x28, + 0x47, 0x52, 0x8e, 0xa4, 0xcc, 0x6e, 0x4c, 0x63, 0xca, 0x11, 0xb7, 0x7c, 0x12, 0xb4, 0x39, 0x50, + 0x38, 0x33, 0xb4, 0x41, 0xa9, 0x54, 0x9a, 0xaa, 0xf0, 0x39, 0x21, 0xa8, 0x91, 0x82, 0x0a, 0x48, + 0x14, 0x91, 0x75, 0x2c, 0x65, 0xf6, 0x5d, 0x13, 0x74, 0xbe, 0x8b, 0x3f, 0x5e, 0x30, 0xc4, 0x30, + 0x4c, 0xc1, 0xf3, 0xbc, 0xd8, 0x64, 0x49, 0x91, 0xcf, 0xc4, 0x49, 0x43, 0xef, 0x37, 0xc6, 0xed, + 0xe9, 0x07, 0xe7, 0xf6, 0x4d, 0x9c, 0x45, 0x8d, 0xf6, 0xde, 0xed, 0x0e, 0x3d, 0xed, 0xfe, 0xd0, + 0x7b, 0xb9, 0x45, 0x69, 0xf2, 0xc5, 0xae, 0xbb, 0x6c, 0xff, 0x91, 0x1c, 0x22, 0xd0, 0x8e, 0x70, + 0xc0, 0xce, 0xad, 0x27, 0xbc, 0x35, 0x50, 0xb5, 0xbe, 0x5d, 0x50, 0xcf, 0x94, 0x21, 0x28, 0x42, + 0x15, 0x8b, 0xed, 0x57, 0x9d, 0x10, 0x83, 0x4e, 0x54, 0xb0, 0x70, 0x75, 0x6e, 0x34, 0x78, 0x63, + 0xa8, 0x6c, 0x54, 0x58, 0xef, 0x8d, 0x8c, 0xbc, 0x90, 0x91, 0xca, 0x37, 0xdb, 0xaf, 0x69, 0xe1, + 0x1f, 0x00, 0xf9, 0x48, 0x43, 0x9a, 0x94, 0x93, 0x24, 0x39, 0x23, 0x61, 0x6e, 0x34, 0x79, 0xec, + 0xa3, 0x2a, 0x36, 0xbf, 0x3a, 0xe1, 0xbd, 0x97, 0xc9, 0xd7, 0x22, 0x79, 0xed, 0xb4, 0xfd, 0x1b, + 0x21, 0x48, 0xc0, 0x33, 0x29, 0x9f, 0xf3, 0x65, 0x31, 0x9e, 0xf2, 0xf2, 0x48, 0x55, 0x9e, 0x55, + 0x61, 0xef, 0xad, 0x8c, 0x76, 0x45, 0xb4, 0x66, 0xb2, 0xfd, 0xba, 0x19, 0x7e, 0x05, 0x2d, 0xb1, + 0x90, 0x46, 0xab, 0xaf, 0x8f, 0xdb, 0x53, 0x4b, 0x79, 0x3b, 0x21, 0x6f, 0x96, 0x72, 0x5f, 0x9e, + 0xf1, 0x7e, 0xec, 0x8e, 0x96, 0xbe, 0x3f, 0x5a, 0xfa, 0xff, 0xa3, 0xa5, 0xff, 0x3d, 0x59, 0xda, + 0xfe, 0x64, 0x69, 0xff, 0x4e, 0x96, 0xf6, 0x73, 0x12, 0x13, 0xb6, 0x2a, 0x82, 0xd2, 0xe6, 0x0a, + 0xe3, 0x27, 0xba, 0x5c, 0x92, 0x90, 0xa0, 0x44, 0xbe, 0xbb, 0x97, 0x7d, 0x66, 0xdb, 0x0c, 0xe7, + 0x41, 0x8b, 0x4f, 0xe2, 0xf3, 0x43, 0x00, 0x00, 0x00, 0xff, 0xff, 0x2d, 0x9a, 0x13, 0x71, 0x8d, + 0x03, 0x00, 0x00, } func (m *GenesisState) Marshal() (dAtA []byte, err error) { @@ -121,7 +174,77 @@ func (m *GenesisState) MarshalToSizedBuffer(dAtA []byte) (int, error) { i = encodeVarintGenesis(dAtA, i, uint64(size)) } i-- - dAtA[i] = 0xa + dAtA[i] = 0x32 + if len(m.AuctionParams) > 0 { + for iNdEx := len(m.AuctionParams) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.AuctionParams[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x2a + } + } + if len(m.ProtocolStatistics) > 0 { + for iNdEx := len(m.ProtocolStatistics) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.ProtocolStatistics[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + } + } + if len(m.DutchAuction) > 0 { + for iNdEx := len(m.DutchAuction) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.DutchAuction[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + } + if len(m.DebtAuction) > 0 { + for iNdEx := len(m.DebtAuction) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.DebtAuction[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + } + if len(m.SurplusAuction) > 0 { + for iNdEx := len(m.SurplusAuction) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.SurplusAuction[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + } return len(dAtA) - i, nil } @@ -142,6 +265,36 @@ func (m *GenesisState) Size() (n int) { } var l int _ = l + if len(m.SurplusAuction) > 0 { + for _, e := range m.SurplusAuction { + l = e.Size() + n += 1 + l + sovGenesis(uint64(l)) + } + } + if len(m.DebtAuction) > 0 { + for _, e := range m.DebtAuction { + l = e.Size() + n += 1 + l + sovGenesis(uint64(l)) + } + } + if len(m.DutchAuction) > 0 { + for _, e := range m.DutchAuction { + l = e.Size() + n += 1 + l + sovGenesis(uint64(l)) + } + } + if len(m.ProtocolStatistics) > 0 { + for _, e := range m.ProtocolStatistics { + l = e.Size() + n += 1 + l + sovGenesis(uint64(l)) + } + } + if len(m.AuctionParams) > 0 { + for _, e := range m.AuctionParams { + l = e.Size() + n += 1 + l + sovGenesis(uint64(l)) + } + } l = m.Params.Size() n += 1 + l + sovGenesis(uint64(l)) return n @@ -183,6 +336,176 @@ func (m *GenesisState) Unmarshal(dAtA []byte) error { } switch fieldNum { case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SurplusAuction", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.SurplusAuction = append(m.SurplusAuction, SurplusAuction{}) + if err := m.SurplusAuction[len(m.SurplusAuction)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DebtAuction", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.DebtAuction = append(m.DebtAuction, DebtAuction{}) + if err := m.DebtAuction[len(m.DebtAuction)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DutchAuction", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.DutchAuction = append(m.DutchAuction, DutchAuction{}) + if err := m.DutchAuction[len(m.DutchAuction)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ProtocolStatistics", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ProtocolStatistics = append(m.ProtocolStatistics, ProtocolStatistics{}) + if err := m.ProtocolStatistics[len(m.ProtocolStatistics)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AuctionParams", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.AuctionParams = append(m.AuctionParams, AuctionParams{}) + if err := m.AuctionParams[len(m.AuctionParams)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 6: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Params", wireType) } diff --git a/x/auction/types/params.go b/x/auction/types/params.go index 0c838d30c..32f01d2af 100644 --- a/x/auction/types/params.go +++ b/x/auction/types/params.go @@ -1,11 +1,19 @@ package types import ( + sdk "github.com/cosmos/cosmos-sdk/types" paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" ) var _ paramtypes.ParamSet = (*Params)(nil) +const ( + DutchBidGas = sdk.Gas(71183) + DebtBidGas = sdk.Gas(57580) + DutchLendBidGas = sdk.Gas(71183) + SurplusBidGas = sdk.Gas(57580) +) + // ParamKeyTable the param key table for launch module. func ParamKeyTable() paramtypes.KeyTable { return paramtypes.NewKeyTable().RegisterParamSet(&Params{}) diff --git a/x/bandoracle/abci.go b/x/bandoracle/abci.go index ff473c695..5b779f664 100644 --- a/x/bandoracle/abci.go +++ b/x/bandoracle/abci.go @@ -1,27 +1,36 @@ package bandoracle import ( + utils "github.com/comdex-official/comdex/types" "github.com/comdex-official/comdex/x/bandoracle/keeper" + "github.com/comdex-official/comdex/x/bandoracle/types" + "github.com/cosmos/cosmos-sdk/telemetry" sdk "github.com/cosmos/cosmos-sdk/types" abci "github.com/tendermint/tendermint/abci/types" ) func BeginBlocker(ctx sdk.Context, _ abci.RequestBeginBlock, k keeper.Keeper) { - block := k.GetLastBlockHeight(ctx) - if block != 0 { - if ctx.BlockHeight()%20 == 0 { - req := k.GetTempFetchPriceID(ctx) - res := k.OraclePriceValidationByRequestID(ctx, req) - k.SetOracleValidationResult(ctx, res) - } - if ctx.BlockHeight()%20-1 == 0 && ctx.BlockHeight() > block+11 { - id := k.GetLastFetchPriceID(ctx) - k.SetTempFetchPriceID(ctx, id) - msg := k.GetFetchPriceMsg(ctx) - _, err := k.FetchPrice(ctx, msg) - if err != nil { - return + + defer telemetry.ModuleMeasureSince(types.ModuleName, ctx.BlockTime(), telemetry.MetricKeyBeginBlocker) + + _ = utils.ApplyFuncIfNoError(ctx, func(ctx sdk.Context) error { + block := k.GetLastBlockHeight(ctx) + if block != types.Int64Zero { + if ctx.BlockHeight()%types.Int64Twenty == types.Int64Zero { + req := k.GetTempFetchPriceID(ctx) + res := k.OraclePriceValidationByRequestID(ctx, req) + k.SetOracleValidationResult(ctx, res) + } + if ctx.BlockHeight()%types.Int64Twenty-types.Int64One == types.Int64Zero && ctx.BlockHeight() > block+types.Int64Eleven { + id := k.GetLastFetchPriceID(ctx) + k.SetTempFetchPriceID(ctx, id) + msg := k.GetFetchPriceMsg(ctx) + _, err := k.FetchPrice(ctx, msg) + if err != nil { + return err + } } } - } + return nil + }) } diff --git a/x/bandoracle/keeper/alias.go b/x/bandoracle/keeper/alias.go index 7e88b716d..45a3fcc37 100644 --- a/x/bandoracle/keeper/alias.go +++ b/x/bandoracle/keeper/alias.go @@ -5,6 +5,6 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" ) -func (k *Keeper) GetAssetsForOracle(ctx sdk.Context) (assets []types.Asset) { +func (k Keeper) GetAssetsForOracle(ctx sdk.Context) (assets []types.Asset) { return k.assetKeeper.GetAssetsForOracle(ctx) } diff --git a/x/bandoracle/keeper/oracle.go b/x/bandoracle/keeper/oracle.go index 1cac7a133..dd7e216fd 100644 --- a/x/bandoracle/keeper/oracle.go +++ b/x/bandoracle/keeper/oracle.go @@ -102,7 +102,7 @@ func (k Keeper) FetchPrice(ctx sdk.Context, msg types.MsgFetchPriceData) (*types return &types.MsgFetchPriceDataResponse{}, nil } -func (k *Keeper) SetFetchPriceMsg(ctx sdk.Context, msg types.MsgFetchPriceData) { +func (k Keeper) SetFetchPriceMsg(ctx sdk.Context, msg types.MsgFetchPriceData) { var ( store = ctx.KVStore(k.storeKey) key = types.MsgDataKey @@ -123,7 +123,7 @@ func (k *Keeper) SetFetchPriceMsg(ctx sdk.Context, msg types.MsgFetchPriceData) store.Set(key, value) } -func (k *Keeper) GetFetchPriceMsg(ctx sdk.Context) types.MsgFetchPriceData { +func (k Keeper) GetFetchPriceMsg(ctx sdk.Context) types.MsgFetchPriceData { var ( store = ctx.KVStore(k.storeKey) key = types.MsgDataKey diff --git a/x/bandoracle/module_ibc.go b/x/bandoracle/module_ibc.go index 334e52d43..7822340aa 100644 --- a/x/bandoracle/module_ibc.go +++ b/x/bandoracle/module_ibc.go @@ -175,8 +175,6 @@ func (im IBCModule) OnAcknowledgementPacket( return sdkerrors.Wrapf(sdkerrors.ErrUnknownRequest, "cannot unmarshal packet data: %s", err.Error()) } - var eventType string - // Dispatch packet switch packet := modulePacketData.Packet.(type) { // this line is used by starport scaffolding # ibc/packet/module/ack @@ -185,32 +183,36 @@ func (im IBCModule) OnAcknowledgementPacket( return sdkerrors.Wrap(sdkerrors.ErrUnknownRequest, errMsg) } - ctx.EventManager().EmitEvent( //nolint:govet - sdk.NewEvent( - eventType, - sdk.NewAttribute(sdk.AttributeKeyModule, types.ModuleName), - sdk.NewAttribute(types.AttributeKeyAck, fmt.Sprintf("%v", ack)), - ), - ) - - switch resp := ack.Response.(type) { - case *channeltypes.Acknowledgement_Result: - ctx.EventManager().EmitEvent( - sdk.NewEvent( - eventType, - sdk.NewAttribute(types.AttributeKeyAckSuccess, string(resp.Result)), - ), - ) - case *channeltypes.Acknowledgement_Error: - ctx.EventManager().EmitEvent( - sdk.NewEvent( - eventType, - sdk.NewAttribute(types.AttributeKeyAckError, resp.Error), - ), - ) - } - - return nil + // Undo comments for event emitters after updating switch statements + + // var eventType string + + // ctx.EventManager().EmitEvent( //nolint:govet + // sdk.NewEvent( + // eventType, + // sdk.NewAttribute(sdk.AttributeKeyModule, types.ModuleName), + // sdk.NewAttribute(types.AttributeKeyAck, fmt.Sprintf("%v", ack)), + // ), + // ) + + // switch resp := ack.Response.(type) { + // case *channeltypes.Acknowledgement_Result: + // ctx.EventManager().EmitEvent( + // sdk.NewEvent( + // eventType, + // sdk.NewAttribute(types.AttributeKeyAckSuccess, string(resp.Result)), + // ), + // ) + // case *channeltypes.Acknowledgement_Error: + // ctx.EventManager().EmitEvent( + // sdk.NewEvent( + // eventType, + // sdk.NewAttribute(types.AttributeKeyAckError, resp.Error), + // ), + // ) + // } + + // return nil } // OnTimeoutPacket implements the IBCModule interface. diff --git a/x/bandoracle/types/params.go b/x/bandoracle/types/params.go index 252757b1b..77bff3522 100644 --- a/x/bandoracle/types/params.go +++ b/x/bandoracle/types/params.go @@ -6,6 +6,14 @@ import ( var _ paramtypes.ParamSet = (*Params)(nil) +const ( + Int64Twenty = int64(20) + Int64TwentyOne = int64(21) + Int64One = int64(1) + Int64Zero = int64(0) + Int64Eleven = int64(11) +) + // ParamKeyTable the param key table for launch module. func ParamKeyTable() paramtypes.KeyTable { return paramtypes.NewKeyTable().RegisterParamSet(&Params{}) diff --git a/x/collector/genesis.go b/x/collector/genesis.go index ce4feb81d..386e46e85 100644 --- a/x/collector/genesis.go +++ b/x/collector/genesis.go @@ -6,19 +6,49 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" ) -// InitGenesis initializes the capability module's state from a provided genesis -// state. -func InitGenesis(ctx sdk.Context, k keeper.Keeper, genState types.GenesisState) { - // this line is used by starport scaffolding # genesis/module/init - k.SetParams(ctx, genState.Params) -} +func InitGenesis(ctx sdk.Context, k keeper.Keeper, state *types.GenesisState) { + k.SetParams(ctx, state.Params) -// ExportGenesis returns the capability module's exported genesis. -func ExportGenesis(ctx sdk.Context, k keeper.Keeper) *types.GenesisState { - genesis := types.DefaultGenesis() - genesis.Params = k.GetParams(ctx) + for _, item := range state.NetFeeCollectedData { + for _, initem := range item.AssetIdToFeeCollected { + err := k.SetNetFeeCollectedData(ctx, item.AppId, initem.AssetId, initem.NetFeesCollected) + if err != nil { + return + } + } + } + + for _, item := range state.AppIdToAssetCollectorMapping { + k.SetAppidToAssetCollectorMapping(ctx, item) + } + + for _, item := range state.CollectorLookup { + err := k.SetCollectorLookupTable(ctx, item.AssetRateInfo...) + if err != nil { + return + } + } - // this line is used by starport scaffolding # genesis/module/export + for _, item := range state.CollectorAuctionLookupTable { + err := k.SetAuctionMappingForApp(ctx, item) + if err != nil { + return + } + } - return genesis + for _, item := range state.AppToDenomsMapping { + k.SetAppToDenomsMapping(ctx, item.AppId, item) + } +} + +func ExportGenesis(ctx sdk.Context, k keeper.Keeper) *types.GenesisState { + collectorAuctionLookupTable, _ := k.GetAllAuctionMappingForApp(ctx) + return types.NewGenesisState( + k.GetAllNetFeeCollectedData(ctx), + k.GetAllAppidToAssetCollectorMapping(ctx), + k.GetAllCollectorLookupTable(ctx), + collectorAuctionLookupTable, + k.GetAllAppToDenomsMapping(ctx), + k.GetParams(ctx), + ) } diff --git a/x/collector/genesis_test.go b/x/collector/genesis_test.go index f7e16760f..3563c8708 100644 --- a/x/collector/genesis_test.go +++ b/x/collector/genesis_test.go @@ -19,7 +19,7 @@ func TestGenesis(t *testing.T) { } k := comdexApp.CollectorKeeper - collector.InitGenesis(ctx, k, genesisState) + collector.InitGenesis(ctx, k, &genesisState) got := collector.ExportGenesis(ctx, k) require.NotNil(t, got) diff --git a/x/collector/keeper/alias.go b/x/collector/keeper/alias.go index 4c3617b17..2a6c6cda3 100644 --- a/x/collector/keeper/alias.go +++ b/x/collector/keeper/alias.go @@ -5,38 +5,39 @@ import ( "github.com/comdex-official/comdex/x/asset/types" auctiontypes "github.com/comdex-official/comdex/x/auction/types" + collectortypes "github.com/comdex-official/comdex/x/collector/types" ) -func (k *Keeper) HasAssetForDenom(ctx sdk.Context, id string) bool { +func (k Keeper) HasAssetForDenom(ctx sdk.Context, id string) bool { return k.asset.HasAssetForDenom(ctx, id) } -func (k *Keeper) HasAsset(ctx sdk.Context, id uint64) bool { +func (k Keeper) HasAsset(ctx sdk.Context, id uint64) bool { return k.asset.HasAsset(ctx, id) } -func (k *Keeper) GetAssetForDenom(ctx sdk.Context, id string) (types.Asset, bool) { +func (k Keeper) GetAssetForDenom(ctx sdk.Context, id string) (types.Asset, bool) { return k.asset.GetAssetForDenom(ctx, id) } -func (k *Keeper) GetApp(ctx sdk.Context, id uint64) (types.AppData, bool) { +func (k Keeper) GetApp(ctx sdk.Context, id uint64) (types.AppData, bool) { return k.asset.GetApp(ctx, id) } -func (k *Keeper) GetAsset(ctx sdk.Context, id uint64) (types.Asset, bool) { +func (k Keeper) GetAsset(ctx sdk.Context, id uint64) (types.Asset, bool) { return k.asset.GetAsset(ctx, id) } -func (k *Keeper) SendCoinFromModuleToModule(ctx sdk.Context, senderModule, recipientModule string, coin sdk.Coins) error { +func (k Keeper) SendCoinFromModuleToModule(ctx sdk.Context, senderModule, recipientModule string, coin sdk.Coins) error { if coin.IsZero() { - return nil + return collectortypes.SendCoinFromModuleToModuleIsZero } return k.bank.SendCoinsFromModuleToModule(ctx, senderModule, recipientModule, coin) } -func (k *Keeper) GetMintGenesisTokenData(ctx sdk.Context, appID, assetID uint64) (mintData types.MintGenesisToken, found bool) { +func (k Keeper) GetMintGenesisTokenData(ctx sdk.Context, appID, assetID uint64) (mintData types.MintGenesisToken, found bool) { return k.asset.GetMintGenesisTokenData(ctx, appID, assetID) } -func (k *Keeper) GetAuctionParams(ctx sdk.Context, AppID uint64) (asset auctiontypes.AuctionParams, found bool) { +func (k Keeper) GetAuctionParams(ctx sdk.Context, AppID uint64) (asset auctiontypes.AuctionParams, found bool) { return k.auction.GetAuctionParams(ctx, AppID) } diff --git a/x/collector/keeper/collector.go b/x/collector/keeper/collector.go index 0dd38d58b..3239af20a 100644 --- a/x/collector/keeper/collector.go +++ b/x/collector/keeper/collector.go @@ -8,12 +8,15 @@ import ( ) // GetAmountFromCollector returns amount from the collector. -func (k *Keeper) GetAmountFromCollector(ctx sdk.Context, appID, assetID uint64, amount sdk.Int) (sdk.Int, error) { +func (k Keeper) GetAmountFromCollector(ctx sdk.Context, appID, assetID uint64, amount sdk.Int) (sdk.Int, error) { netFeeData, found := k.GetNetFeeCollectedData(ctx, appID) var returnedFee sdk.Int if !found { return returnedFee, types.ErrorDataDoesNotExists } + if amount.IsNegative() { + return returnedFee, types.ErrorAmountCanNotBeNegative + } for _, data := range netFeeData.AssetIdToFeeCollected { if data.AssetId == assetID { @@ -25,7 +28,7 @@ func (k *Keeper) GetAmountFromCollector(ctx sdk.Context, appID, assetID uint64, if err != nil { return returnedFee, err } - err = k.DecreaseNetFeeCollectedData(ctx, appID, assetID, amount) + err = k.DecreaseNetFeeCollectedData(ctx, appID, assetID, amount, netFeeData) if err != nil { return sdk.Int{}, err } @@ -35,14 +38,7 @@ func (k *Keeper) GetAmountFromCollector(ctx sdk.Context, appID, assetID uint64, return returnedFee, nil } -func (k *Keeper) DecreaseNetFeeCollectedData(ctx sdk.Context, appID, assetID uint64, amount sdk.Int) error { - if amount.IsNegative() { - return types.ErrorAmountCanNotBeNegative - } - collectorData, found := k.GetNetFeeCollectedData(ctx, appID) - if !found { - return types.ErrorDataDoesNotExists - } +func (k Keeper) DecreaseNetFeeCollectedData(ctx sdk.Context, appID, assetID uint64, amount sdk.Int, collectorData types.NetFeeCollectedData) error { var netCollected types.NetFeeCollectedData var assetCollected types.AssetIdToFeeCollected netCollected.AppId = appID @@ -55,10 +51,11 @@ func (k *Keeper) DecreaseNetFeeCollectedData(ctx sdk.Context, appID, assetID uin if netCollectedFee.IsNegative() { return types.ErrorNetFeesCanNotBeNegative } + assetCollected.NetFeesCollected = netCollectedFee + netCollected.AssetIdToFeeCollected = append(netCollected.AssetIdToFeeCollected, assetCollected) } } - assetCollected.NetFeesCollected = netCollectedFee - netCollected.AssetIdToFeeCollected = append(netCollected.AssetIdToFeeCollected, assetCollected) + var ( store = ctx.KVStore(k.storeKey) key = types.NetFeeCollectedDataKey(appID) @@ -71,7 +68,7 @@ func (k *Keeper) DecreaseNetFeeCollectedData(ctx sdk.Context, appID, assetID uin } // UpdateCollector update collector store. -func (k *Keeper) UpdateCollector(ctx sdk.Context, appID, assetID uint64, collectedStabilityFee, collectedClosingFee, collectedOpeningFee, liquidationRewardsCollected sdk.Int) error { +func (k Keeper) UpdateCollector(ctx sdk.Context, appID, assetID uint64, collectedStabilityFee, collectedClosingFee, collectedOpeningFee, liquidationRewardsCollected sdk.Int) error { if !k.HasAsset(ctx, assetID) { return types.ErrorAssetDoesNotExist } @@ -136,7 +133,6 @@ func (k *Keeper) UpdateCollector(ctx sdk.Context, appID, assetID uint64, collect } if check == 0 { - collectorNewData := collectorData var assetIDCollect types.AssetIdCollectorMapping assetIDCollect.AssetId = assetID var newCollector types.CollectorData @@ -147,9 +143,9 @@ func (k *Keeper) UpdateCollector(ctx sdk.Context, appID, assetID uint64, collect newCollector.LiquidationRewardsCollected = liquidationRewardsCollected assetIDCollect.Collector = newCollector - collectorNewData.AssetCollector = append(collectorNewData.AssetCollector, assetIDCollect) + collectorData.AssetCollector = append(collectorData.AssetCollector, assetIDCollect) - k.SetAppidToAssetCollectorMapping(ctx, collectorNewData) + k.SetAppidToAssetCollectorMapping(ctx, collectorData) err := k.SetNetFeeCollectedData(ctx, appID, assetID, newCollector.CollectedClosingFee. Add(newCollector.CollectedOpeningFee). @@ -164,7 +160,7 @@ func (k *Keeper) UpdateCollector(ctx sdk.Context, appID, assetID uint64, collect } // SetAppidToAssetCollectorMapping update collector with app_id and asset. -func (k *Keeper) SetAppidToAssetCollectorMapping(ctx sdk.Context, appAssetCollectorData types.AppIdToAssetCollectorMapping) { +func (k Keeper) SetAppidToAssetCollectorMapping(ctx sdk.Context, appAssetCollectorData types.AppIdToAssetCollectorMapping) { var ( store = ctx.KVStore(k.storeKey) key = types.AppidToAssetCollectorMappingKey(appAssetCollectorData.AppId) @@ -174,7 +170,7 @@ func (k *Keeper) SetAppidToAssetCollectorMapping(ctx sdk.Context, appAssetCollec } // GetAppidToAssetCollectorMapping returns app_id to asset mapping for collector. -func (k *Keeper) GetAppidToAssetCollectorMapping(ctx sdk.Context, appID uint64) (appAssetCollectorData types.AppIdToAssetCollectorMapping, found bool) { +func (k Keeper) GetAppidToAssetCollectorMapping(ctx sdk.Context, appID uint64) (appAssetCollectorData types.AppIdToAssetCollectorMapping, found bool) { var ( store = ctx.KVStore(k.storeKey) key = types.AppidToAssetCollectorMappingKey(appID) @@ -189,8 +185,29 @@ func (k *Keeper) GetAppidToAssetCollectorMapping(ctx sdk.Context, appID uint64) return appAssetCollectorData, true } +func (k Keeper) GetAllAppidToAssetCollectorMapping(ctx sdk.Context) (appIdToAssetCollectorMapping []types.AppIdToAssetCollectorMapping) { + var ( + store = ctx.KVStore(k.storeKey) + iter = sdk.KVStorePrefixIterator(store, types.AppIDToAssetCollectorMappingPrefix) + ) + + defer func(iter sdk.Iterator) { + err := iter.Close() + if err != nil { + return + } + }(iter) + + for ; iter.Valid(); iter.Next() { + var fee types.AppIdToAssetCollectorMapping + k.cdc.MustUnmarshal(iter.Value(), &fee) + appIdToAssetCollectorMapping = append(appIdToAssetCollectorMapping, fee) + } + return appIdToAssetCollectorMapping +} + // GetCollectorDataForAppIDAssetID returns app_id to asset mapping for collector. -func (k *Keeper) GetCollectorDataForAppIDAssetID(ctx sdk.Context, appID uint64, assetID uint64) (collectorData types.CollectorData, found bool) { +func (k Keeper) GetCollectorDataForAppIDAssetID(ctx sdk.Context, appID uint64, assetID uint64) (collectorData types.CollectorData, found bool) { var ( store = ctx.KVStore(k.storeKey) key = types.AppidToAssetCollectorMappingKey(appID) @@ -212,7 +229,7 @@ func (k *Keeper) GetCollectorDataForAppIDAssetID(ctx sdk.Context, appID uint64, } // SetCollectorLookupTable updates the collector lookup store. -func (k *Keeper) SetCollectorLookupTable(ctx sdk.Context, records ...types.CollectorLookupTable) error { +func (k Keeper) SetCollectorLookupTable(ctx sdk.Context, records ...types.CollectorLookupTable) error { for _, msg := range records { if !k.HasAsset(ctx, msg.CollectorAssetId) { return types.ErrorAssetDoesNotExist @@ -262,7 +279,6 @@ func (k *Keeper) SetCollectorLookupTable(ctx sdk.Context, records ...types.Colle DebtLotSize: msg.DebtLotSize, } accmLookup, _ := k.GetCollectorLookupTable(ctx, msg.AppId) - accmLookup.AppId = msg.AppId accmLookup.AssetRateInfo = append(accmLookup.AssetRateInfo, Collector) var ( @@ -276,7 +292,7 @@ func (k *Keeper) SetCollectorLookupTable(ctx sdk.Context, records ...types.Colle return nil } -func (k *Keeper) SetCollectorLookupTableForWasm(ctx sdk.Context, records ...types.CollectorLookupTable) error { +func (k Keeper) SetCollectorLookupTableForWasm(ctx sdk.Context, records ...types.CollectorLookupTable) error { for _, msg := range records { accmLookup, _ := k.GetCollectorLookupTable(ctx, msg.AppId) accmLookup.AppId = msg.AppId @@ -303,7 +319,7 @@ func (k *Keeper) SetCollectorLookupTableForWasm(ctx sdk.Context, records ...type } // GetCollectorLookupTable returns collector lookup table. -func (k *Keeper) GetCollectorLookupTable(ctx sdk.Context, appID uint64) (collectorLookup types.CollectorLookup, found bool) { +func (k Keeper) GetCollectorLookupTable(ctx sdk.Context, appID uint64) (collectorLookup types.CollectorLookup, found bool) { var ( store = ctx.KVStore(k.storeKey) key = types.CollectorLookupTableMappingKey(appID) @@ -318,8 +334,29 @@ func (k *Keeper) GetCollectorLookupTable(ctx sdk.Context, appID uint64) (collect return collectorLookup, true } +func (k Keeper) GetAllCollectorLookupTable(ctx sdk.Context) (collectorLookup []types.CollectorLookup) { + var ( + store = ctx.KVStore(k.storeKey) + iter = sdk.KVStorePrefixIterator(store, types.AddCollectorLookupKey) + ) + + defer func(iter sdk.Iterator) { + err := iter.Close() + if err != nil { + return + } + }(iter) + + for ; iter.Valid(); iter.Next() { + var fee types.CollectorLookup + k.cdc.MustUnmarshal(iter.Value(), &fee) + collectorLookup = append(collectorLookup, fee) + } + return collectorLookup +} + // GetCollectorLookupByAsset return collector lookup data queried on asset. -func (k *Keeper) GetCollectorLookupByAsset(ctx sdk.Context, appID, assetID uint64) (collectorLookupTable types.CollectorLookupTable, found bool) { +func (k Keeper) GetCollectorLookupByAsset(ctx sdk.Context, appID, assetID uint64) (collectorLookupTable types.CollectorLookupTable, found bool) { collectorLookup, found := k.GetCollectorLookupTable(ctx, appID) if !found { return collectorLookupTable, false @@ -335,7 +372,7 @@ func (k *Keeper) GetCollectorLookupByAsset(ctx sdk.Context, appID, assetID uint6 } // SetAppToDenomsMapping set denoms for appId in Collector LookupTable. -func (k *Keeper) SetAppToDenomsMapping(ctx sdk.Context, appID uint64, appToDenom types.AppToDenomsMapping) { +func (k Keeper) SetAppToDenomsMapping(ctx sdk.Context, appID uint64, appToDenom types.AppToDenomsMapping) { var ( store = ctx.KVStore(k.storeKey) key = types.CollectorForDenomKey(appID) @@ -346,7 +383,7 @@ func (k *Keeper) SetAppToDenomsMapping(ctx sdk.Context, appID uint64, appToDenom } // GetAppToDenomsMapping get denoms for appId in Collector LookupTable. -func (k *Keeper) GetAppToDenomsMapping(ctx sdk.Context, appID uint64) (appToDenom types.AppToDenomsMapping, found bool) { +func (k Keeper) GetAppToDenomsMapping(ctx sdk.Context, appID uint64) (appToDenom types.AppToDenomsMapping, found bool) { var ( store = ctx.KVStore(k.storeKey) key = types.CollectorForDenomKey(appID) @@ -362,8 +399,29 @@ func (k *Keeper) GetAppToDenomsMapping(ctx sdk.Context, appID uint64) (appToDeno return appToDenom, true } +func (k Keeper) GetAllAppToDenomsMapping(ctx sdk.Context) (appToDenomsMapping []types.AppToDenomsMapping) { + var ( + store = ctx.KVStore(k.storeKey) + iter = sdk.KVStorePrefixIterator(store, types.CollectorForDenomKeyPrefix) + ) + + defer func(iter sdk.Iterator) { + err := iter.Close() + if err != nil { + return + } + }(iter) + + for ; iter.Valid(); iter.Next() { + var fee types.AppToDenomsMapping + k.cdc.MustUnmarshal(iter.Value(), &fee) + appToDenomsMapping = append(appToDenomsMapping, fee) + } + return appToDenomsMapping +} + // SetAuctionMappingForApp sets auction map data for app/product. -func (k *Keeper) SetAuctionMappingForApp(ctx sdk.Context, records ...types.CollectorAuctionLookupTable) error { +func (k Keeper) SetAuctionMappingForApp(ctx sdk.Context, records ...types.CollectorAuctionLookupTable) error { for _, msg := range records { _, found := k.GetApp(ctx, msg.AppId) @@ -389,6 +447,12 @@ func (k *Keeper) SetAuctionMappingForApp(ctx sdk.Context, records ...types.Colle if !found { return types.ErrorAssetDoesNotExist } + if data.IsSurplusAuction && data.IsDistributor { + return types.ErrorSurplusDistributerCantbeTrue + } + if data.IsSurplusAuction && data.IsDebtAuction { + return types.ErrorSurplusDebtrCantbeTrueSameTime + } duplicate, index := k.DuplicateCheck(ctx, msg.AppId, data.AssetId) if duplicate { assetIDToAuctionLookups = append(assetIDToAuctionLookups[:index], assetIDToAuctionLookups[index+1:]...) @@ -396,6 +460,7 @@ func (k *Keeper) SetAuctionMappingForApp(ctx sdk.Context, records ...types.Colle assetToAuctionUpdate.AssetId = data.AssetId assetToAuctionUpdate.IsSurplusAuction = data.IsSurplusAuction assetToAuctionUpdate.IsDebtAuction = data.IsDebtAuction + assetToAuctionUpdate.IsDistributor = data.IsDistributor assetToAuctionUpdate.IsAuctionActive = data.IsAuctionActive assetToAuctionUpdate.AssetOutOraclePrice = data.AssetOutOraclePrice assetToAuctionUpdate.AssetOutPrice = data.AssetOutPrice @@ -407,6 +472,7 @@ func (k *Keeper) SetAuctionMappingForApp(ctx sdk.Context, records ...types.Colle AssetId: data.AssetId, IsSurplusAuction: data.IsSurplusAuction, IsDebtAuction: data.IsDebtAuction, + IsDistributor: data.IsDistributor, IsAuctionActive: data.IsAuctionActive, AssetOutOraclePrice: data.AssetOutOraclePrice, AssetOutPrice: data.AssetOutPrice, @@ -425,15 +491,14 @@ func (k *Keeper) SetAuctionMappingForApp(ctx sdk.Context, records ...types.Colle return nil } -func (k *Keeper) DuplicateCheck(ctx sdk.Context, appId, assetId uint64) (found bool, index int) { - result, found := k.GetAuctionMappingForApp(ctx, appId) +func (k Keeper) DuplicateCheck(ctx sdk.Context, appID, assetID uint64) (found bool, index int) { + result, found := k.GetAuctionMappingForApp(ctx, appID) if !found { return false, 0 - } else { - for i, data := range result.AssetIdToAuctionLookup { - if data.AssetId == assetId { - return true, i - } + } + for i, data := range result.AssetIdToAuctionLookup { + if data.AssetId == assetID { + return true, i } } @@ -441,7 +506,7 @@ func (k *Keeper) DuplicateCheck(ctx sdk.Context, appId, assetId uint64) (found b } // GetAuctionMappingForApp gets auction map data for app/product. -func (k *Keeper) GetAuctionMappingForApp(ctx sdk.Context, appID uint64) (collectorAuctionLookupTable types.CollectorAuctionLookupTable, found bool) { +func (k Keeper) GetAuctionMappingForApp(ctx sdk.Context, appID uint64) (collectorAuctionLookupTable types.CollectorAuctionLookupTable, found bool) { var ( store = ctx.KVStore(k.storeKey) key = types.AppIDToAuctionMappingKey(appID) @@ -456,7 +521,7 @@ func (k *Keeper) GetAuctionMappingForApp(ctx sdk.Context, appID uint64) (collect return collectorAuctionLookupTable, true } -func (k *Keeper) GetAllAuctionMappingForApp(ctx sdk.Context) (collectorAuctionLookupTable []types.CollectorAuctionLookupTable, found bool) { +func (k Keeper) GetAllAuctionMappingForApp(ctx sdk.Context) (collectorAuctionLookupTable []types.CollectorAuctionLookupTable, found bool) { var ( store = ctx.KVStore(k.storeKey) iter = sdk.KVStorePrefixIterator(store, types.AppIDToAuctionMappingPrefix) @@ -481,7 +546,7 @@ func (k *Keeper) GetAllAuctionMappingForApp(ctx sdk.Context) (collectorAuctionLo return collectorAuctionLookupTable, true } -func (k *Keeper) SetNetFeeCollectedData(ctx sdk.Context, appID, assetID uint64, fee sdk.Int) error { +func (k Keeper) SetNetFeeCollectedData(ctx sdk.Context, appID, assetID uint64, fee sdk.Int) error { if fee.IsNegative() { return types.ErrorNetFeesCanNotBeNegative } @@ -532,7 +597,7 @@ func (k *Keeper) SetNetFeeCollectedData(ctx sdk.Context, appID, assetID uint64, } // GetNetFeeCollectedData sets net fees collected. -func (k *Keeper) GetNetFeeCollectedData(ctx sdk.Context, appID uint64) (netFeeData types.NetFeeCollectedData, found bool) { +func (k Keeper) GetNetFeeCollectedData(ctx sdk.Context, appID uint64) (netFeeData types.NetFeeCollectedData, found bool) { var ( store = ctx.KVStore(k.storeKey) key = types.NetFeeCollectedDataKey(appID) @@ -547,7 +612,28 @@ func (k *Keeper) GetNetFeeCollectedData(ctx sdk.Context, appID uint64) (netFeeDa return netFeeData, true } -func (k *Keeper) WasmSetCollectorLookupTable(ctx sdk.Context, collectorBindings *bindings.MsgSetCollectorLookupTable) error { +func (k Keeper) GetAllNetFeeCollectedData(ctx sdk.Context) (netFeeCollectedData []types.NetFeeCollectedData) { + var ( + store = ctx.KVStore(k.storeKey) + iter = sdk.KVStorePrefixIterator(store, types.NetFeeCollectedDataPrefix) + ) + + defer func(iter sdk.Iterator) { + err := iter.Close() + if err != nil { + return + } + }(iter) + + for ; iter.Valid(); iter.Next() { + var fee types.NetFeeCollectedData + k.cdc.MustUnmarshal(iter.Value(), &fee) + netFeeCollectedData = append(netFeeCollectedData, fee) + } + return netFeeCollectedData +} + +func (k Keeper) WasmSetCollectorLookupTable(ctx sdk.Context, collectorBindings *bindings.MsgSetCollectorLookupTable) error { if !k.HasAsset(ctx, collectorBindings.CollectorAssetID) { return types.ErrorAssetDoesNotExist } @@ -605,7 +691,7 @@ func (k *Keeper) WasmSetCollectorLookupTable(ctx sdk.Context, collectorBindings return nil } -func (k *Keeper) WasmSetCollectorLookupTableQuery(ctx sdk.Context, appID, collectorAssetID, secondaryAssetID uint64) (bool, string) { +func (k Keeper) WasmSetCollectorLookupTableQuery(ctx sdk.Context, appID, collectorAssetID, secondaryAssetID uint64) (bool, string) { if !k.HasAsset(ctx, collectorAssetID) { return false, types.ErrorAssetDoesNotExist.Error() } @@ -631,7 +717,7 @@ func (k *Keeper) WasmSetCollectorLookupTableQuery(ctx sdk.Context, appID, collec return true, "" } -func (k *Keeper) WasmSetAuctionMappingForApp(ctx sdk.Context, auctionMappingBinding *bindings.MsgSetAuctionMappingForApp) error { +func (k Keeper) WasmSetAuctionMappingForApp(ctx sdk.Context, auctionMappingBinding *bindings.MsgSetAuctionMappingForApp) error { result1, found := k.GetAuctionMappingForApp(ctx, auctionMappingBinding.AppID) var collectorAuctionLookup types.CollectorAuctionLookupTable var assetIDToAuctionLookups []types.AssetIdToAuctionLookupTable @@ -640,6 +726,12 @@ func (k *Keeper) WasmSetAuctionMappingForApp(ctx sdk.Context, auctionMappingBind assetIDToAuctionLookups = result1.AssetIdToAuctionLookup } for i := range auctionMappingBinding.AssetIDs { + if auctionMappingBinding.IsSurplusAuctions[i] && auctionMappingBinding.IsDistributor[i] { + return types.ErrorSurplusDistributerCantbeTrue + } + if auctionMappingBinding.IsSurplusAuctions[i] && auctionMappingBinding.IsDebtAuctions[i] { + return types.ErrorSurplusDebtrCantbeTrueSameTime + } duplicate, index := k.DuplicateCheck(ctx, auctionMappingBinding.AppID, auctionMappingBinding.AssetIDs[i]) if duplicate { assetIDToAuctionLookups = append(assetIDToAuctionLookups[:index], assetIDToAuctionLookups[index+1:]...) @@ -647,6 +739,7 @@ func (k *Keeper) WasmSetAuctionMappingForApp(ctx sdk.Context, auctionMappingBind assetToAuctionUpdate.AssetId = auctionMappingBinding.AssetIDs[i] assetToAuctionUpdate.IsSurplusAuction = auctionMappingBinding.IsSurplusAuctions[i] assetToAuctionUpdate.IsDebtAuction = auctionMappingBinding.IsDebtAuctions[i] + assetToAuctionUpdate.IsDistributor = auctionMappingBinding.IsDistributor[i] assetToAuctionUpdate.IsAuctionActive = false assetToAuctionUpdate.AssetOutOraclePrice = auctionMappingBinding.AssetOutOraclePrices[i] assetToAuctionUpdate.AssetOutPrice = auctionMappingBinding.AssetOutPrices[i] @@ -654,12 +747,13 @@ func (k *Keeper) WasmSetAuctionMappingForApp(ctx sdk.Context, auctionMappingBind continue } assetIDToAuctionLookup := types.AssetIdToAuctionLookupTable{ - AssetId: auctionMappingBinding.AssetIDs[i], - IsSurplusAuction: auctionMappingBinding.IsSurplusAuctions[i], - IsDebtAuction: auctionMappingBinding.IsDebtAuctions[i], - IsAuctionActive: false, - AssetOutOraclePrice: auctionMappingBinding.AssetOutOraclePrices[i], - AssetOutPrice: auctionMappingBinding.AssetOutPrices[i], + AssetId: auctionMappingBinding.AssetIDs[i], + IsSurplusAuction: auctionMappingBinding.IsSurplusAuctions[i], + IsDebtAuction: auctionMappingBinding.IsDebtAuctions[i], + IsDistributor: auctionMappingBinding.IsDistributor[i], + IsAuctionActive: false, + AssetOutOraclePrice: auctionMappingBinding.AssetOutOraclePrices[i], + AssetOutPrice: auctionMappingBinding.AssetOutPrices[i], } assetIDToAuctionLookups = append(assetIDToAuctionLookups, assetIDToAuctionLookup) } @@ -675,13 +769,13 @@ func (k *Keeper) WasmSetAuctionMappingForApp(ctx sdk.Context, auctionMappingBind return nil } -func (k *Keeper) WasmSetAuctionMappingForAppQuery(ctx sdk.Context, appID uint64) (bool, string) { +func (k Keeper) WasmSetAuctionMappingForAppQuery(ctx sdk.Context, appID uint64) (bool, string) { _, _ = k.GetAppidToAssetCollectorMapping(ctx, appID) return true, "" } -func (k *Keeper) WasmUpdateCollectorLookupTable(ctx sdk.Context, updateColBinding *bindings.MsgUpdateCollectorLookupTable) error { +func (k Keeper) WasmUpdateCollectorLookupTable(ctx sdk.Context, updateColBinding *bindings.MsgUpdateCollectorLookupTable) error { var Collector types.CollectorLookupTable accmLookup, _ := k.GetCollectorLookupTable(ctx, updateColBinding.AppID) @@ -705,7 +799,7 @@ func (k *Keeper) WasmUpdateCollectorLookupTable(ctx sdk.Context, updateColBindin return nil } -func (k *Keeper) WasmUpdateCollectorLookupTableQuery(ctx sdk.Context, appID, assetID uint64) (bool, string) { +func (k Keeper) WasmUpdateCollectorLookupTableQuery(ctx sdk.Context, appID, assetID uint64) (bool, string) { _, found := k.GetCollectorLookupByAsset(ctx, appID, assetID) if !found { return false, types.ErrorDataDoesNotExists.Error() diff --git a/x/collector/keeper/collector_test.go b/x/collector/keeper/collector_test.go index faf63d652..b51b14527 100644 --- a/x/collector/keeper/collector_test.go +++ b/x/collector/keeper/collector_test.go @@ -12,7 +12,7 @@ func (s *KeeperTestSuite) AddAppAsset() { userAddress := "cosmos1q7q90qsl9g0gl2zz0njxwv2a649yqrtyxtnv3v" genesisSupply := sdk.NewIntFromUint64(1000000) assetKeeper, ctx := &s.assetKeeper, &s.ctx - msg1 := []assetTypes.AppData{{ + msg1 := assetTypes.AppData{ Name: "cswap", ShortName: "cswap", MinGovDeposit: sdk.NewIntFromUint64(10000000), @@ -20,49 +20,54 @@ func (s *KeeperTestSuite) AddAppAsset() { GenesisToken: []assetTypes.MintGenesisToken{ { 3, - &genesisSupply, + genesisSupply, true, userAddress, }, { 2, - &genesisSupply, + genesisSupply, true, userAddress, }, }, - }, - { - Name: "commodo", - ShortName: "commodo", - MinGovDeposit: sdk.NewIntFromUint64(10000000), - GovTimeInSeconds: 900, - GenesisToken: []assetTypes.MintGenesisToken{ - { - 3, - &genesisSupply, - true, - userAddress, - }, - }, - }, } - err := assetKeeper.AddAppRecords(*ctx, msg1...) + // { + // Name: "commodo", + // ShortName: "commodo", + // MinGovDeposit: sdk.NewIntFromUint64(10000000), + // GovTimeInSeconds: 900, + // GenesisToken: []assetTypes.MintGenesisToken{ + // { + // 3, + // genesisSupply, + // true, + // userAddress, + // }, + // }, + // }, + err := assetKeeper.AddAppRecords(*ctx, msg1) s.Require().NoError(err) - msg2 := []assetTypes.Asset{ - {Name: "CMDX", - Denom: "ucmdx", - Decimals: 1000000, - IsOnChain: true}, {Name: "CMST", - Denom: "ucmst", - Decimals: 1000000, - IsOnChain: true}, {Name: "HARBOR", - Denom: "uharbor", - Decimals: 1000000, - IsOnChain: true}, - } - err = assetKeeper.AddAssetRecords(*ctx, msg2...) + msg2 := assetTypes.Asset{ + Name: "CMDX", + Denom: "ucmdx", + Decimals: 1000000, + IsOnChain: true} + err = assetKeeper.AddAssetRecords(*ctx, msg2) + + msg3 := assetTypes.Asset{Name: "CMST", + Denom: "ucmst", + Decimals: 1000000, + IsOnChain: true} + err = assetKeeper.AddAssetRecords(*ctx, msg3) + + msg4 := assetTypes.Asset{Name: "HARBOR", + Denom: "uharbor", + Decimals: 1000000, + IsOnChain: true} + err = assetKeeper.AddAssetRecords(*ctx, msg4) + s.Require().NoError(err) } @@ -184,7 +189,8 @@ func (s *KeeperTestSuite) TestWasmSetCollectorLookupTableAndAuctionControl() { AppID: 1, AssetIDs: []uint64{2}, IsSurplusAuctions: []bool{true}, - IsDebtAuctions: []bool{true}, + IsDebtAuctions: []bool{false}, + IsDistributor: []bool{false}, AssetOutOraclePrices: []bool{false}, AssetOutPrices: []uint64{1000000}, }, @@ -196,6 +202,7 @@ func (s *KeeperTestSuite) TestWasmSetCollectorLookupTableAndAuctionControl() { AssetIDs: []uint64{3}, IsSurplusAuctions: []bool{true}, IsDebtAuctions: []bool{false}, + IsDistributor: []bool{false}, AssetOutOraclePrices: []bool{false}, AssetOutPrices: []uint64{100000}, }, @@ -209,6 +216,7 @@ func (s *KeeperTestSuite) TestWasmSetCollectorLookupTableAndAuctionControl() { s.Require().Equal(result1.AssetIdToAuctionLookup[index].AssetId, tc.msg.AssetIDs[0]) s.Require().Equal(result1.AssetIdToAuctionLookup[index].IsSurplusAuction, tc.msg.IsSurplusAuctions[0]) s.Require().Equal(result1.AssetIdToAuctionLookup[index].IsDebtAuction, tc.msg.IsDebtAuctions[0]) + s.Require().Equal(result1.AssetIdToAuctionLookup[index].IsDistributor, tc.msg.IsDistributor[0]) s.Require().Equal(result1.AssetIdToAuctionLookup[index].IsAuctionActive, false) s.Require().Equal(result1.AssetIdToAuctionLookup[index].AssetOutOraclePrice, tc.msg.AssetOutOraclePrices[0]) s.Require().Equal(result1.AssetIdToAuctionLookup[index].AssetOutPrice, tc.msg.AssetOutPrices[0]) @@ -332,7 +340,7 @@ func (s *KeeperTestSuite) TestDecreaseNetFeesCollected() { s.Run(tc.name, func() { netFeesData1, found := collectorKeeper.GetNetFeeCollectedData(*ctx, tc.appID) s.Require().True(found) - err := collectorKeeper.DecreaseNetFeeCollectedData(*ctx, tc.appID, tc.assetID, tc.fee) + err := collectorKeeper.DecreaseNetFeeCollectedData(*ctx, tc.appID, tc.assetID, tc.fee, netFeesData1) if tc.errorExpected { s.Require().Error(err) } else { diff --git a/x/collector/keeper/grpc_query.go b/x/collector/keeper/grpc_query.go index f0741a159..ddbd017e5 100644 --- a/x/collector/keeper/grpc_query.go +++ b/x/collector/keeper/grpc_query.go @@ -10,7 +10,7 @@ import ( ) var ( - _ types.QueryServer = (*QueryServer)(nil) + _ types.QueryServer = QueryServer{} ) type QueryServer struct { @@ -23,7 +23,7 @@ func NewQueryServer(k Keeper) types.QueryServer { } } -func (q *QueryServer) QueryCollectorLookupByApp(c context.Context, req *types.QueryCollectorLookupByAppRequest) (*types.QueryCollectorLookupByAppResponse, error) { +func (q QueryServer) QueryCollectorLookupByApp(c context.Context, req *types.QueryCollectorLookupByAppRequest) (*types.QueryCollectorLookupByAppResponse, error) { if req == nil { return nil, status.Error(codes.InvalidArgument, "request cannot be empty") } @@ -45,7 +45,7 @@ func (q *QueryServer) QueryCollectorLookupByApp(c context.Context, req *types.Qu }, nil } -func (q *QueryServer) QueryCollectorLookupByAppAndAsset(c context.Context, req *types.QueryCollectorLookupByAppAndAssetRequest) (*types.QueryCollectorLookupByAppAndAssetResponse, error) { +func (q QueryServer) QueryCollectorLookupByAppAndAsset(c context.Context, req *types.QueryCollectorLookupByAppAndAssetRequest) (*types.QueryCollectorLookupByAppAndAssetResponse, error) { if req == nil { return nil, status.Error(codes.InvalidArgument, "request cannot be empty") } @@ -67,7 +67,7 @@ func (q *QueryServer) QueryCollectorLookupByAppAndAsset(c context.Context, req * }, nil } -func (q *QueryServer) QueryCollectorDataByAppAndAsset(c context.Context, req *types.QueryCollectorDataByAppAndAssetRequest) (*types.QueryCollectorDataByAppAndAssetResponse, error) { +func (q QueryServer) QueryCollectorDataByAppAndAsset(c context.Context, req *types.QueryCollectorDataByAppAndAssetRequest) (*types.QueryCollectorDataByAppAndAssetResponse, error) { if req == nil { return nil, status.Error(codes.InvalidArgument, "request cannot be empty") } @@ -95,7 +95,7 @@ func (q *QueryServer) QueryCollectorDataByAppAndAsset(c context.Context, req *ty }, nil } -func (q *QueryServer) QueryAuctionMappingForAppAndAsset(c context.Context, req *types.QueryAuctionMappingForAppAndAssetRequest) (*types.QueryAuctionMappingForAppAndAssetResponse, error) { +func (q QueryServer) QueryAuctionMappingForAppAndAsset(c context.Context, req *types.QueryAuctionMappingForAppAndAssetRequest) (*types.QueryAuctionMappingForAppAndAssetResponse, error) { if req == nil { return nil, status.Error(codes.InvalidArgument, "request cannot be empty") } @@ -124,7 +124,7 @@ func (q *QueryServer) QueryAuctionMappingForAppAndAsset(c context.Context, req * }, nil } -func (q *QueryServer) QueryNetFeeCollectedForAppAndAsset(c context.Context, req *types.QueryNetFeeCollectedForAppAndAssetRequest) (*types.QueryNetFeeCollectedForAppAndAssetResponse, error) { +func (q QueryServer) QueryNetFeeCollectedForAppAndAsset(c context.Context, req *types.QueryNetFeeCollectedForAppAndAssetRequest) (*types.QueryNetFeeCollectedForAppAndAssetResponse, error) { if req == nil { return nil, status.Error(codes.InvalidArgument, "request cannot be empty") } diff --git a/x/collector/keeper/keeper.go b/x/collector/keeper/keeper.go index df5f7cec6..6d09ac1f6 100644 --- a/x/collector/keeper/keeper.go +++ b/x/collector/keeper/keeper.go @@ -33,13 +33,13 @@ func NewKeeper( ps paramtypes.Subspace, bank expected.BankKeeper, -) *Keeper { +) Keeper { // set KeyTable if it has not already been set if !ps.HasKeyTable() { ps = ps.WithKeyTable(types.ParamKeyTable()) } - return &Keeper{ + return Keeper{ cdc: cdc, storeKey: storeKey, diff --git a/x/collector/module.go b/x/collector/module.go index 3199e662e..5ec968d96 100644 --- a/x/collector/module.go +++ b/x/collector/module.go @@ -55,7 +55,7 @@ func (a AppModuleBasic) RegisterInterfaces(reg cdctypes.InterfaceRegistry) { // DefaultGenesis returns the capability module's default genesis state. func (AppModuleBasic) DefaultGenesis(cdc codec.JSONCodec) json.RawMessage { - return cdc.MustMarshalJSON(types.DefaultGenesis()) + return cdc.MustMarshalJSON(types.DefaultGenesisState()) } // ValidateGenesis performs genesis state validation for the capability module. @@ -148,7 +148,7 @@ func (am AppModule) InitGenesis(ctx sdk.Context, cdc codec.JSONCodec, gs json.Ra // Initialize global index to index in genesis state cdc.MustUnmarshalJSON(gs, &genState) - InitGenesis(ctx, am.keeper, genState) + InitGenesis(ctx, am.keeper, &genState) return []abci.ValidatorUpdate{} } diff --git a/x/collector/types/collector.pb.go b/x/collector/types/collector.pb.go index 7b8ed7400..c86d88684 100644 --- a/x/collector/types/collector.pb.go +++ b/x/collector/types/collector.pb.go @@ -28,7 +28,7 @@ type CollectorData struct { CollectedStabilityFee github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,1,opt,name=collected_stability_fee,json=collectedStabilityFee,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"collected_stability_fee" yaml:"collected_stability_fee"` CollectedClosingFee github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,2,opt,name=collected_closing_fee,json=collectedClosingFee,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"collected_closing_fee" yaml:"collected_closing_fee"` CollectedOpeningFee github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,3,opt,name=collected_opening_fee,json=collectedOpeningFee,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"collected_opening_fee" yaml:"collected_opening_fee"` - LiquidationRewardsCollected github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,5,opt,name=liquidation_rewards_collected,json=liquidationRewardsCollected,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"liquidation_rewards_collected" yaml:"liquidation_rewards_collected"` + LiquidationRewardsCollected github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,4,opt,name=liquidation_rewards_collected,json=liquidationRewardsCollected,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"liquidation_rewards_collected" yaml:"liquidation_rewards_collected"` } func (m *CollectorData) Reset() { *m = CollectorData{} } @@ -520,9 +520,10 @@ type AssetIdToAuctionLookupTable struct { AssetId uint64 `protobuf:"varint,1,opt,name=asset_id,json=assetId,proto3" json:"asset_id,omitempty" yaml:"asset_id"` IsSurplusAuction bool `protobuf:"varint,2,opt,name=is_surplus_auction,json=isSurplusAuction,proto3" json:"is_surplus_auction,omitempty" yaml:"is_surplus_auction"` IsDebtAuction bool `protobuf:"varint,3,opt,name=is_debt_auction,json=isDebtAuction,proto3" json:"is_debt_auction,omitempty" yaml:"is_debt_auction"` - IsAuctionActive bool `protobuf:"varint,4,opt,name=is_auction_active,json=isAuctionActive,proto3" json:"is_auction_active,omitempty" yaml:"is_auction_active"` - AssetOutOraclePrice bool `protobuf:"varint,5,opt,name=asset_out_oracle_price,json=assetOutOraclePrice,proto3" json:"asset_out_oracle_price,omitempty" yaml:"asset_out_oracle_price"` - AssetOutPrice uint64 `protobuf:"varint,6,opt,name=asset_out_price,json=assetOutPrice,proto3" json:"asset_out_price,omitempty" yaml:"asset_out_price"` + IsDistributor bool `protobuf:"varint,4,opt,name=is_distributor,json=isDistributor,proto3" json:"is_distributor,omitempty" yaml:"is_distributor"` + IsAuctionActive bool `protobuf:"varint,5,opt,name=is_auction_active,json=isAuctionActive,proto3" json:"is_auction_active,omitempty" yaml:"is_auction_active"` + AssetOutOraclePrice bool `protobuf:"varint,6,opt,name=asset_out_oracle_price,json=assetOutOraclePrice,proto3" json:"asset_out_oracle_price,omitempty" yaml:"asset_out_oracle_price"` + AssetOutPrice uint64 `protobuf:"varint,7,opt,name=asset_out_price,json=assetOutPrice,proto3" json:"asset_out_price,omitempty" yaml:"asset_out_price"` } func (m *AssetIdToAuctionLookupTable) Reset() { *m = AssetIdToAuctionLookupTable{} } @@ -579,6 +580,13 @@ func (m *AssetIdToAuctionLookupTable) GetIsDebtAuction() bool { return false } +func (m *AssetIdToAuctionLookupTable) GetIsDistributor() bool { + if m != nil { + return m.IsDistributor + } + return false +} + func (m *AssetIdToAuctionLookupTable) GetIsAuctionActive() bool { if m != nil { return m.IsAuctionActive @@ -618,76 +626,77 @@ func init() { } var fileDescriptor_f18765a8dff2a43b = []byte{ - // 1100 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x57, 0x4d, 0x4f, 0xdc, 0xc6, - 0x1b, 0xc7, 0xbc, 0x2e, 0x83, 0x08, 0x8b, 0x81, 0x64, 0xc3, 0xcb, 0x2e, 0x19, 0xfd, 0xf5, 0xef, - 0xf6, 0x90, 0x5d, 0x91, 0xa8, 0x97, 0xaa, 0x87, 0xb2, 0x20, 0x54, 0x44, 0x12, 0xa2, 0x01, 0xe5, - 0xd0, 0xcb, 0x68, 0x6c, 0x0f, 0x30, 0xc2, 0x78, 0x1c, 0xcf, 0x2c, 0xed, 0x72, 0xec, 0xa9, 0xb7, - 0xf6, 0x58, 0xf5, 0x23, 0xf4, 0xda, 0x7e, 0x81, 0x56, 0x39, 0xe4, 0x98, 0xde, 0xaa, 0x1e, 0xac, - 0x0a, 0xbe, 0xc1, 0x7e, 0x82, 0x6a, 0xc6, 0xf6, 0xd8, 0xbb, 0x0b, 0x69, 0x5c, 0xf5, 0xb4, 0xeb, - 0xdf, 0xf3, 0xcc, 0xef, 0xf9, 0xcd, 0xf3, 0x66, 0x19, 0x34, 0x5d, 0x7e, 0xe1, 0xd1, 0xaf, 0xdb, - 0x2e, 0xf7, 0x7d, 0xea, 0x4a, 0x1e, 0xb5, 0x2f, 0xb7, 0x1c, 0x2a, 0xc9, 0x56, 0x8e, 0xb4, 0xc2, - 0x88, 0x4b, 0x6e, 0xd7, 0x12, 0xcf, 0x56, 0x8e, 0xa7, 0x9e, 0xab, 0xcb, 0xa7, 0xfc, 0x94, 0x6b, - 0xa7, 0xb6, 0xfa, 0x97, 0xf8, 0xc3, 0x5f, 0x27, 0xc1, 0xfc, 0x4e, 0xe6, 0xbb, 0x4b, 0x24, 0xb1, - 0xbf, 0xb5, 0xc0, 0x83, 0xf4, 0x34, 0xf5, 0xb0, 0x90, 0xc4, 0x61, 0x3e, 0x93, 0x3d, 0x7c, 0x42, - 0x69, 0xcd, 0xda, 0xb4, 0x9a, 0xb3, 0x9d, 0x97, 0x6f, 0xe3, 0xc6, 0xd8, 0x9f, 0x71, 0xe3, 0xff, - 0xa7, 0x4c, 0x9e, 0x75, 0x9d, 0x96, 0xcb, 0x2f, 0xda, 0x2e, 0x17, 0x17, 0x5c, 0xa4, 0x3f, 0x8f, - 0x85, 0x77, 0xde, 0x96, 0xbd, 0x90, 0x8a, 0xd6, 0x7e, 0x20, 0xfb, 0x71, 0xa3, 0xde, 0x23, 0x17, - 0xfe, 0xa7, 0xf0, 0x0e, 0x5a, 0x88, 0x56, 0x8c, 0xe5, 0x28, 0x33, 0xec, 0x51, 0x6a, 0x7f, 0x63, - 0x81, 0xdc, 0x82, 0x5d, 0x9f, 0x0b, 0x16, 0x9c, 0x6a, 0x21, 0xe3, 0x5a, 0xc8, 0x8b, 0xd2, 0x42, - 0xd6, 0x87, 0x85, 0x14, 0x48, 0x21, 0x5a, 0x32, 0xf8, 0x4e, 0x02, 0x8f, 0x8a, 0xe0, 0x21, 0x0d, - 0x32, 0x11, 0x13, 0xff, 0x95, 0x88, 0x02, 0x69, 0x51, 0xc4, 0x61, 0x02, 0x2b, 0x11, 0x3f, 0x5a, - 0x60, 0xc3, 0x67, 0xaf, 0xbb, 0xcc, 0x23, 0x92, 0xf1, 0x00, 0x47, 0xf4, 0x2b, 0x12, 0x79, 0x02, - 0x1b, 0xdf, 0xda, 0x94, 0x16, 0xf3, 0xaa, 0xb4, 0x98, 0xff, 0x25, 0x62, 0xde, 0x4b, 0x0e, 0xd1, - 0x5a, 0xc1, 0x8e, 0x12, 0xf3, 0x8e, 0xb1, 0xfe, 0x6e, 0x81, 0xa5, 0x17, 0x54, 0xee, 0x51, 0x6a, - 0x30, 0xdd, 0x49, 0x4d, 0x30, 0x4d, 0xc2, 0x10, 0x33, 0x4f, 0xf7, 0xcd, 0x64, 0x67, 0xb1, 0x1f, - 0x37, 0xe6, 0x93, 0x70, 0x09, 0x0e, 0xd1, 0x14, 0x09, 0xc3, 0x7d, 0xcf, 0xfe, 0xce, 0x02, 0x2b, - 0x44, 0x08, 0x2a, 0xf7, 0xbd, 0x63, 0x5e, 0xe4, 0xa9, 0x8d, 0x6f, 0x4e, 0x34, 0xe7, 0x9e, 0xb4, - 0x5b, 0x77, 0xb5, 0x75, 0x6b, 0xfb, 0xb6, 0x63, 0x9d, 0xa6, 0xca, 0x43, 0x3f, 0x6e, 0x6c, 0xa6, - 0xe1, 0x94, 0x13, 0x66, 0x1e, 0x96, 0x5c, 0x25, 0xb9, 0x78, 0xb3, 0xdb, 0xe3, 0xc2, 0xdf, 0x2c, - 0xb0, 0x72, 0x2b, 0xb5, 0xdd, 0x02, 0x95, 0x8c, 0x2e, 0xbd, 0xd7, 0x52, 0x3f, 0x6e, 0x2c, 0x0c, - 0x06, 0x82, 0x68, 0x26, 0xe5, 0xb5, 0x7b, 0xc0, 0x0e, 0xa8, 0x54, 0x61, 0x8b, 0xe5, 0x4a, 0x1a, - 0xf8, 0xa0, 0x74, 0xb9, 0x1e, 0x26, 0x71, 0x46, 0x19, 0x21, 0xaa, 0x06, 0xba, 0x06, 0x85, 0xc2, - 0xbc, 0xb1, 0xc0, 0xfa, 0xb6, 0x4a, 0xf0, 0x31, 0xd7, 0x77, 0x31, 0x83, 0xfe, 0x9c, 0x84, 0x21, - 0x0b, 0x4e, 0x4b, 0x54, 0xe8, 0x0a, 0x2c, 0x24, 0x77, 0x33, 0x15, 0x48, 0x4b, 0xb3, 0xf5, 0x8f, - 0xa5, 0x19, 0x8e, 0xda, 0xa9, 0xa7, 0xc5, 0xb9, 0x5f, 0xcc, 0x99, 0x39, 0x0e, 0xd1, 0x3d, 0x32, - 0x20, 0x16, 0xfe, 0x64, 0x81, 0x07, 0x77, 0x70, 0x95, 0xae, 0x06, 0x06, 0xb3, 0xc5, 0x1b, 0x58, - 0xcd, 0xb9, 0x27, 0x1f, 0xdd, 0x7d, 0x83, 0x81, 0xcd, 0xd8, 0xa9, 0xa5, 0xba, 0xab, 0x03, 0xf3, - 0xab, 0x14, 0xe7, 0x9c, 0xf0, 0x97, 0x29, 0xb0, 0x6c, 0x8e, 0x3d, 0xe3, 0xfc, 0xbc, 0x1b, 0x1e, - 0x13, 0xc7, 0xa7, 0x25, 0x72, 0x7d, 0x00, 0x6c, 0xc3, 0x87, 0xcd, 0xed, 0xc6, 0xf5, 0xa9, 0x8d, - 0xbc, 0x07, 0x46, 0x7d, 0x20, 0xaa, 0x1a, 0x30, 0x4d, 0x98, 0x22, 0x13, 0xd4, 0xe5, 0x81, 0x47, - 0xa2, 0x5e, 0x4e, 0x36, 0x31, 0x4c, 0x36, 0xea, 0x03, 0x51, 0xd5, 0x80, 0x19, 0xd9, 0x3e, 0x58, - 0x14, 0xdd, 0x28, 0xf4, 0xbb, 0x02, 0xcb, 0xb3, 0x88, 0x8a, 0x33, 0xee, 0x7b, 0xb5, 0x49, 0xcd, - 0xb5, 0xde, 0x8f, 0x1b, 0xb5, 0x94, 0x6b, 0xd8, 0x45, 0x51, 0x25, 0xd8, 0x71, 0x06, 0xd9, 0x9f, - 0x83, 0x7b, 0x1e, 0x75, 0x64, 0x81, 0x67, 0x4a, 0xf3, 0x3c, 0xec, 0xc7, 0x8d, 0x95, 0x84, 0x67, - 0xd0, 0x0e, 0xd1, 0xbc, 0x02, 0x72, 0x86, 0x1e, 0xb0, 0x7d, 0xee, 0x9e, 0xd3, 0x08, 0x0b, 0x72, - 0xa9, 0xd6, 0x67, 0x44, 0x24, 0xad, 0x4d, 0x97, 0x1e, 0xac, 0x5d, 0xea, 0xe6, 0x79, 0x18, 0x65, - 0x84, 0xa8, 0x9a, 0x80, 0x47, 0x1a, 0x43, 0x44, 0x52, 0xd5, 0x75, 0x3e, 0x97, 0x58, 0xb0, 0x2b, - 0x5a, 0x9b, 0x19, 0xee, 0xba, 0xcc, 0x02, 0xd1, 0x8c, 0xcf, 0xe5, 0x11, 0xbb, 0xa2, 0xb6, 0x03, - 0x80, 0xc3, 0x3c, 0x7c, 0x42, 0x74, 0xdb, 0x55, 0xb4, 0xc4, 0x9d, 0xd2, 0x12, 0x17, 0x13, 0xfe, - 0x9c, 0x09, 0xa2, 0x59, 0x87, 0x79, 0x7b, 0xfa, 0xbf, 0xfd, 0x19, 0xd0, 0xf9, 0xc1, 0x46, 0xd8, - 0xac, 0x16, 0x56, 0xeb, 0xc7, 0x8d, 0xe5, 0x42, 0x3e, 0x73, 0x75, 0x73, 0xea, 0xf9, 0x59, 0xa2, - 0x10, 0xfe, 0x6c, 0x81, 0x85, 0xa1, 0xb6, 0x2d, 0xd1, 0xb1, 0x97, 0xd9, 0x76, 0x50, 0x09, 0xc3, - 0x2c, 0x38, 0xe1, 0xe9, 0x76, 0x68, 0x7d, 0xc0, 0x6c, 0x15, 0x86, 0xe4, 0xf6, 0xd5, 0x60, 0x48, - 0x21, 0x9a, 0xd7, 0x88, 0xaa, 0xc1, 0xbe, 0x7a, 0x7e, 0x0d, 0xec, 0xed, 0x30, 0x3c, 0xe6, 0xbb, - 0x34, 0xe0, 0x17, 0xa2, 0xfc, 0x56, 0xdb, 0x02, 0xb3, 0x59, 0xbb, 0x0b, 0xad, 0x78, 0xb2, 0xb3, - 0x9c, 0x0f, 0xb8, 0x31, 0x41, 0x54, 0x49, 0xf7, 0x87, 0x80, 0xd7, 0x16, 0x58, 0x33, 0xd2, 0xb7, - 0xbb, 0xae, 0x7a, 0x23, 0xfe, 0xbb, 0x31, 0xff, 0xc1, 0x02, 0xf7, 0xcd, 0xcb, 0x67, 0x80, 0x29, - 0x4d, 0xde, 0x27, 0x1f, 0xf0, 0xd6, 0x1b, 0x55, 0xd0, 0xf9, 0x38, 0xcd, 0xe1, 0xa3, 0xd1, 0x77, - 0x1f, 0x49, 0xbc, 0xb1, 0xaf, 0xdd, 0x21, 0xba, 0x23, 0x3e, 0x7c, 0x33, 0x01, 0xd6, 0xde, 0x13, - 0xa2, 0xf4, 0xd6, 0x3d, 0x00, 0x36, 0x13, 0x38, 0xdb, 0x0b, 0xa9, 0x0a, 0xbd, 0xd1, 0x2a, 0xc5, - 0x25, 0x34, 0xea, 0x03, 0x51, 0x95, 0x89, 0xa3, 0x04, 0x4b, 0x75, 0xd8, 0x1d, 0xb0, 0xc0, 0x04, - 0xd6, 0xcd, 0x9c, 0x31, 0x4d, 0x68, 0xa6, 0xd5, 0xbc, 0x71, 0x86, 0x1c, 0x20, 0x9a, 0x67, 0x62, - 0x97, 0x3a, 0x32, 0xe3, 0xf8, 0x02, 0x2c, 0x32, 0x13, 0x04, 0x13, 0x57, 0xb2, 0x4b, 0xaa, 0x17, - 0x59, 0xa5, 0xb8, 0xc8, 0x46, 0x5c, 0x20, 0x5a, 0x60, 0x99, 0x8e, 0x6d, 0x8d, 0xd8, 0xaf, 0xd2, - 0x22, 0x62, 0xde, 0x95, 0x98, 0x47, 0xc4, 0xf5, 0x29, 0x0e, 0x23, 0xe6, 0x52, 0xbd, 0xcf, 0x2a, - 0x9d, 0x47, 0xfd, 0xb8, 0xb1, 0x51, 0x4c, 0xcc, 0xb0, 0x1f, 0x44, 0x4b, 0xda, 0x70, 0xd8, 0x95, - 0x87, 0x1a, 0x7e, 0xa9, 0x50, 0x75, 0xcb, 0xdc, 0x3f, 0x21, 0x9c, 0xd6, 0x99, 0x5e, 0x1d, 0x1e, - 0x0f, 0xe3, 0x90, 0x8d, 0xc7, 0x61, 0x57, 0x6a, 0x8e, 0xce, 0xf3, 0xb7, 0xd7, 0x75, 0xeb, 0xdd, - 0x75, 0xdd, 0xfa, 0xeb, 0xba, 0x6e, 0x7d, 0x7f, 0x53, 0x1f, 0x7b, 0x77, 0x53, 0x1f, 0xfb, 0xe3, - 0xa6, 0x3e, 0xf6, 0xe5, 0xd3, 0x81, 0xa5, 0xa3, 0x9a, 0xec, 0x31, 0x3f, 0x39, 0x61, 0x2e, 0x23, - 0x7e, 0xfa, 0xdc, 0x2e, 0x7e, 0x6d, 0xe8, 0x2d, 0xe4, 0x4c, 0xeb, 0x4f, 0x86, 0xa7, 0x7f, 0x07, - 0x00, 0x00, 0xff, 0xff, 0x1d, 0x88, 0x4e, 0xea, 0x8e, 0x0c, 0x00, 0x00, + // 1120 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x57, 0x4d, 0x4f, 0x1b, 0x47, + 0x18, 0x66, 0xc1, 0x80, 0x19, 0x04, 0x98, 0x05, 0x12, 0x87, 0x0f, 0x9b, 0x8c, 0xaa, 0xd6, 0x3d, + 0xc4, 0x16, 0x89, 0x7a, 0xa9, 0x7a, 0x08, 0x0b, 0x42, 0x45, 0x24, 0x21, 0x1a, 0x50, 0x0e, 0xbd, + 0x8c, 0x66, 0x77, 0x07, 0x18, 0xb1, 0x78, 0x36, 0x3b, 0x63, 0x5a, 0x73, 0xec, 0xa1, 0xea, 0xad, + 0x3d, 0x56, 0xfd, 0x09, 0xbd, 0xb6, 0x7f, 0xa0, 0x55, 0x0f, 0x39, 0xa6, 0xb7, 0xaa, 0x07, 0xab, + 0x82, 0x7f, 0xe0, 0x5f, 0x50, 0xcd, 0xcc, 0x7e, 0xd9, 0x86, 0x34, 0x5b, 0xf5, 0x04, 0xfb, 0xbe, + 0xcf, 0x3e, 0xf3, 0xcc, 0xfb, 0xf1, 0xac, 0x0c, 0x1a, 0x1e, 0xbf, 0xf0, 0xe9, 0x57, 0x2d, 0x8f, + 0x07, 0x01, 0xf5, 0x24, 0x8f, 0x5a, 0x97, 0x5b, 0x2e, 0x95, 0x64, 0x2b, 0x8b, 0x34, 0xc3, 0x88, + 0x4b, 0x6e, 0x57, 0x0d, 0xb2, 0x99, 0xc5, 0x63, 0xe4, 0xea, 0xf2, 0x29, 0x3f, 0xe5, 0x1a, 0xd4, + 0x52, 0xff, 0x19, 0x3c, 0xfc, 0xb5, 0x04, 0xe6, 0x76, 0x12, 0xec, 0x2e, 0x91, 0xc4, 0xfe, 0xd6, + 0x02, 0xf7, 0xe3, 0xb7, 0xa9, 0x8f, 0x85, 0x24, 0x2e, 0x0b, 0x98, 0xec, 0xe2, 0x13, 0x4a, 0xab, + 0xd6, 0xa6, 0xd5, 0x98, 0x71, 0x5e, 0xbe, 0xe9, 0xd5, 0xc7, 0xfe, 0xea, 0xd5, 0x3f, 0x3c, 0x65, + 0xf2, 0xac, 0xe3, 0x36, 0x3d, 0x7e, 0xd1, 0xf2, 0xb8, 0xb8, 0xe0, 0x22, 0xfe, 0xf3, 0x48, 0xf8, + 0xe7, 0x2d, 0xd9, 0x0d, 0xa9, 0x68, 0xee, 0xb7, 0x65, 0xbf, 0x57, 0xaf, 0x75, 0xc9, 0x45, 0xf0, + 0x29, 0xbc, 0x83, 0x16, 0xa2, 0x95, 0x34, 0x73, 0x94, 0x24, 0xf6, 0x28, 0xb5, 0xbf, 0xb6, 0x40, + 0x96, 0xc1, 0x5e, 0xc0, 0x05, 0x6b, 0x9f, 0x6a, 0x21, 0xe3, 0x5a, 0xc8, 0x8b, 0xc2, 0x42, 0xd6, + 0x87, 0x85, 0xe4, 0x48, 0x21, 0x5a, 0x4a, 0xe3, 0x3b, 0x26, 0x3c, 0x2a, 0x82, 0x87, 0xb4, 0x9d, + 0x88, 0x98, 0xf8, 0xbf, 0x44, 0xe4, 0x48, 0xf3, 0x22, 0x0e, 0x4d, 0x58, 0x89, 0xf8, 0xd1, 0x02, + 0x1b, 0x01, 0x7b, 0xdd, 0x61, 0x3e, 0x91, 0x8c, 0xb7, 0x71, 0x44, 0xbf, 0x24, 0x91, 0x2f, 0x70, + 0x8a, 0xad, 0x96, 0xb4, 0x98, 0x57, 0x85, 0xc5, 0x7c, 0x60, 0xc4, 0xbc, 0x93, 0x1c, 0xa2, 0xb5, + 0x5c, 0x1e, 0x99, 0xf4, 0x4e, 0x9a, 0xfd, 0xc3, 0x02, 0x4b, 0x2f, 0xa8, 0xdc, 0xa3, 0x34, 0x8d, + 0xe9, 0x49, 0x6a, 0x80, 0x29, 0x12, 0x86, 0x98, 0xf9, 0x7a, 0x6e, 0x4a, 0xce, 0x62, 0xbf, 0x57, + 0x9f, 0x33, 0xc7, 0x99, 0x38, 0x44, 0x93, 0x24, 0x0c, 0xf7, 0x7d, 0xfb, 0x3b, 0x0b, 0xac, 0x10, + 0x21, 0xa8, 0xdc, 0xf7, 0x8f, 0x79, 0x9e, 0xa7, 0x3a, 0xbe, 0x39, 0xd1, 0x98, 0x7d, 0xdc, 0x6a, + 0xde, 0x35, 0xd6, 0xcd, 0xed, 0xdb, 0x5e, 0x73, 0x1a, 0xaa, 0x0e, 0xfd, 0x5e, 0x7d, 0x33, 0x3e, + 0x4e, 0x81, 0x30, 0xf3, 0xb1, 0xe4, 0xaa, 0xc8, 0xf9, 0x9b, 0xdd, 0x7e, 0x2e, 0xfc, 0xcd, 0x02, + 0x2b, 0xb7, 0x52, 0xdb, 0x4d, 0x50, 0x4e, 0xe8, 0xe2, 0x7b, 0x2d, 0xf5, 0x7b, 0xf5, 0x85, 0xc1, + 0x83, 0x20, 0x9a, 0x8e, 0x79, 0xed, 0x2e, 0xb0, 0xdb, 0x54, 0xaa, 0x63, 0xf3, 0xed, 0x32, 0x03, + 0x7c, 0x50, 0xb8, 0x5d, 0x0f, 0xcc, 0x39, 0xa3, 0x8c, 0x10, 0x55, 0xda, 0xba, 0x07, 0xb9, 0xc6, + 0xfc, 0x6e, 0x81, 0xf5, 0x6d, 0x55, 0xe0, 0x63, 0xae, 0xef, 0x92, 0x2e, 0xfa, 0x73, 0x12, 0x86, + 0xac, 0x7d, 0x5a, 0xa0, 0x43, 0x57, 0x60, 0xc1, 0xdc, 0x2d, 0xed, 0x40, 0xdc, 0x9a, 0xad, 0x7f, + 0x6d, 0xcd, 0xf0, 0xa9, 0x4e, 0x2d, 0x6e, 0xce, 0xbd, 0x7c, 0xcd, 0xd2, 0xd7, 0x21, 0x9a, 0x27, + 0x03, 0x62, 0xe1, 0x4f, 0x16, 0xb8, 0x7f, 0x07, 0x57, 0xe1, 0x6e, 0x60, 0x30, 0x93, 0xbf, 0x81, + 0xd5, 0x98, 0x7d, 0xfc, 0xd1, 0xdd, 0x37, 0x18, 0x70, 0x46, 0xa7, 0x1a, 0xeb, 0xae, 0x0c, 0xec, + 0xaf, 0x52, 0x9c, 0x71, 0xc2, 0x5f, 0x26, 0xc1, 0x72, 0xfa, 0xda, 0x33, 0xce, 0xcf, 0x3b, 0xe1, + 0x31, 0x71, 0x03, 0x5a, 0xa0, 0xd6, 0x07, 0xc0, 0x4e, 0xf9, 0x70, 0x7a, 0xbb, 0x71, 0xfd, 0xd6, + 0x46, 0x36, 0x03, 0xa3, 0x18, 0x88, 0x2a, 0x69, 0x30, 0x2e, 0x98, 0x22, 0x13, 0xd4, 0xe3, 0x6d, + 0x9f, 0x44, 0xdd, 0x8c, 0x6c, 0x62, 0x98, 0x6c, 0x14, 0x03, 0x51, 0x25, 0x0d, 0x26, 0x64, 0xfb, + 0x60, 0x51, 0x74, 0xa2, 0x30, 0xe8, 0x08, 0x2c, 0xcf, 0x22, 0x2a, 0xce, 0x78, 0x60, 0x9c, 0xa7, + 0xe4, 0xac, 0xf7, 0x7b, 0xf5, 0x6a, 0xcc, 0x35, 0x0c, 0x51, 0x54, 0x26, 0x76, 0x9c, 0x84, 0xec, + 0xa7, 0x60, 0xde, 0xa7, 0xae, 0xcc, 0xf1, 0x4c, 0x6a, 0x9e, 0x07, 0xfd, 0x5e, 0x7d, 0xc5, 0xf0, + 0x0c, 0xe6, 0x21, 0x9a, 0x53, 0x81, 0x8c, 0xa1, 0x0b, 0xec, 0x80, 0x7b, 0xe7, 0x34, 0xc2, 0x82, + 0x5c, 0x2a, 0xfb, 0x8c, 0x88, 0xa4, 0xd5, 0xa9, 0xc2, 0x8b, 0xb5, 0x4b, 0xbd, 0xac, 0x0e, 0xa3, + 0x8c, 0x10, 0x55, 0x4c, 0xf0, 0x48, 0xc7, 0x10, 0x91, 0x54, 0x4d, 0x5d, 0xc0, 0x25, 0x16, 0xec, + 0x8a, 0x56, 0xa7, 0x87, 0xa7, 0x2e, 0xc9, 0x40, 0x34, 0x1d, 0x70, 0x79, 0xc4, 0xae, 0xa8, 0xed, + 0x02, 0xe0, 0x32, 0x1f, 0x9f, 0x10, 0x3d, 0x76, 0x65, 0x2d, 0x71, 0xa7, 0xb0, 0xc4, 0x45, 0xc3, + 0x9f, 0x31, 0x41, 0x34, 0xe3, 0x32, 0x7f, 0x4f, 0xff, 0x6f, 0x7f, 0x06, 0x74, 0x7d, 0x70, 0x2a, + 0x6c, 0x46, 0x0b, 0xab, 0xf6, 0x7b, 0xf5, 0xe5, 0x5c, 0x3d, 0x33, 0x75, 0xb3, 0xea, 0xf9, 0x99, + 0x51, 0x08, 0x7f, 0xb6, 0xc0, 0xc2, 0xd0, 0xd8, 0x16, 0x98, 0xd8, 0xcb, 0xc4, 0x1d, 0x54, 0xc1, + 0x30, 0x6b, 0x9f, 0xf0, 0xd8, 0x1d, 0x9a, 0xef, 0xb1, 0x5b, 0xb9, 0x25, 0xb9, 0xdd, 0x1a, 0x52, + 0x52, 0x88, 0xe6, 0x74, 0x44, 0xf5, 0x60, 0x5f, 0x3d, 0xbf, 0x06, 0xf6, 0x76, 0x18, 0x1e, 0xf3, + 0x5d, 0xda, 0xe6, 0x17, 0xa2, 0xb8, 0xab, 0x6d, 0x81, 0x99, 0x64, 0xdc, 0x85, 0x56, 0x5c, 0x72, + 0x96, 0xb3, 0x05, 0x4f, 0x53, 0x10, 0x95, 0x63, 0xff, 0x10, 0xf0, 0xda, 0x02, 0x6b, 0xa9, 0xf4, + 0xed, 0x8e, 0xa7, 0xbe, 0x88, 0xff, 0x6d, 0xcd, 0x7f, 0xb0, 0xc0, 0xbd, 0xf4, 0xe3, 0x33, 0xc0, + 0x14, 0x17, 0xef, 0x93, 0xf7, 0xf8, 0xea, 0x8d, 0x2a, 0x70, 0x3e, 0x8e, 0x6b, 0xf8, 0x70, 0xf4, + 0xdb, 0x47, 0x0c, 0x1a, 0x07, 0x1a, 0x0e, 0xd1, 0x1d, 0xe7, 0xc3, 0x6f, 0x4a, 0x60, 0xed, 0x1d, + 0x47, 0x14, 0x76, 0xdd, 0x03, 0x60, 0x33, 0x81, 0x13, 0x5f, 0x88, 0x55, 0x68, 0x47, 0x2b, 0xe7, + 0x4d, 0x68, 0x14, 0x03, 0x51, 0x85, 0x89, 0x23, 0x13, 0x8b, 0x75, 0xd8, 0x0e, 0x58, 0x60, 0x02, + 0xeb, 0x61, 0x4e, 0x98, 0x26, 0x34, 0xd3, 0x6a, 0x36, 0x38, 0x43, 0x00, 0x88, 0xe6, 0x98, 0xd8, + 0xa5, 0xae, 0x4c, 0x38, 0x9e, 0x82, 0x79, 0x05, 0x61, 0x42, 0x46, 0xcc, 0xed, 0xa8, 0xa5, 0x2c, + 0x69, 0x8a, 0x9c, 0xfb, 0x0c, 0xe6, 0x0d, 0x43, 0xf6, 0x6c, 0x7f, 0x0e, 0x16, 0x59, 0x2a, 0x13, + 0x13, 0x4f, 0xb2, 0x4b, 0xaa, 0x2d, 0xac, 0x9c, 0xb7, 0xc2, 0x11, 0x08, 0x44, 0x0b, 0x2c, 0xb9, + 0xc9, 0xb6, 0x8e, 0xd8, 0xaf, 0xe2, 0x31, 0xc0, 0xbc, 0x23, 0x31, 0x8f, 0x88, 0x17, 0x50, 0x1c, + 0x46, 0xcc, 0x33, 0x5e, 0x56, 0x76, 0x1e, 0xf6, 0x7b, 0xf5, 0x8d, 0x7c, 0x69, 0x87, 0x71, 0x10, + 0x2d, 0xe9, 0xc4, 0x61, 0x47, 0x1e, 0xea, 0xf0, 0x4b, 0x15, 0x55, 0x75, 0xca, 0xf0, 0x86, 0xd0, + 0x78, 0xd5, 0xea, 0xf0, 0x82, 0xa5, 0x80, 0x64, 0xc1, 0x0e, 0x3b, 0x52, 0x73, 0x38, 0xcf, 0xdf, + 0x5c, 0xd7, 0xac, 0xb7, 0xd7, 0x35, 0xeb, 0xef, 0xeb, 0x9a, 0xf5, 0xfd, 0x4d, 0x6d, 0xec, 0xed, + 0x4d, 0x6d, 0xec, 0xcf, 0x9b, 0xda, 0xd8, 0x17, 0x4f, 0x06, 0x6c, 0x4b, 0x8d, 0xe9, 0x23, 0x7e, + 0x72, 0xc2, 0x3c, 0x46, 0x82, 0xf8, 0xb9, 0x95, 0xff, 0xbd, 0xa2, 0x7d, 0xcc, 0x9d, 0xd2, 0x3f, + 0x3a, 0x9e, 0xfc, 0x13, 0x00, 0x00, 0xff, 0xff, 0x7d, 0x52, 0xa8, 0x53, 0xd0, 0x0c, 0x00, 0x00, } func (m *CollectorData) Marshal() (dAtA []byte, err error) { @@ -719,7 +728,7 @@ func (m *CollectorData) MarshalToSizedBuffer(dAtA []byte) (int, error) { i = encodeVarintCollector(dAtA, i, uint64(size)) } i-- - dAtA[i] = 0x2a + dAtA[i] = 0x22 { size := m.CollectedOpeningFee.Size() i -= size @@ -1144,7 +1153,7 @@ func (m *AssetIdToAuctionLookupTable) MarshalToSizedBuffer(dAtA []byte) (int, er if m.AssetOutPrice != 0 { i = encodeVarintCollector(dAtA, i, uint64(m.AssetOutPrice)) i-- - dAtA[i] = 0x30 + dAtA[i] = 0x38 } if m.AssetOutOraclePrice { i-- @@ -1154,7 +1163,7 @@ func (m *AssetIdToAuctionLookupTable) MarshalToSizedBuffer(dAtA []byte) (int, er dAtA[i] = 0 } i-- - dAtA[i] = 0x28 + dAtA[i] = 0x30 } if m.IsAuctionActive { i-- @@ -1164,6 +1173,16 @@ func (m *AssetIdToAuctionLookupTable) MarshalToSizedBuffer(dAtA []byte) (int, er dAtA[i] = 0 } i-- + dAtA[i] = 0x28 + } + if m.IsDistributor { + i-- + if m.IsDistributor { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- dAtA[i] = 0x20 } if m.IsDebtAuction { @@ -1390,6 +1409,9 @@ func (m *AssetIdToAuctionLookupTable) Size() (n int) { if m.IsDebtAuction { n += 2 } + if m.IsDistributor { + n += 2 + } if m.IsAuctionActive { n += 2 } @@ -1539,7 +1561,7 @@ func (m *CollectorData) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex - case 5: + case 4: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field LiquidationRewardsCollected", wireType) } @@ -2696,6 +2718,26 @@ func (m *AssetIdToAuctionLookupTable) Unmarshal(dAtA []byte) error { } m.IsDebtAuction = bool(v != 0) case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field IsDistributor", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowCollector + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.IsDistributor = bool(v != 0) + case 5: if wireType != 0 { return fmt.Errorf("proto: wrong wireType = %d for field IsAuctionActive", wireType) } @@ -2715,7 +2757,7 @@ func (m *AssetIdToAuctionLookupTable) Unmarshal(dAtA []byte) error { } } m.IsAuctionActive = bool(v != 0) - case 5: + case 6: if wireType != 0 { return fmt.Errorf("proto: wrong wireType = %d for field AssetOutOraclePrice", wireType) } @@ -2735,7 +2777,7 @@ func (m *AssetIdToAuctionLookupTable) Unmarshal(dAtA []byte) error { } } m.AssetOutOraclePrice = bool(v != 0) - case 6: + case 7: if wireType != 0 { return fmt.Errorf("proto: wrong wireType = %d for field AssetOutPrice", wireType) } diff --git a/x/collector/types/errors.go b/x/collector/types/errors.go index 2f52a5cf1..642fa2296 100644 --- a/x/collector/types/errors.go +++ b/x/collector/types/errors.go @@ -18,4 +18,7 @@ var ( ErrorAuctionParamsNotSet = sdkerrors.Register(ModuleName, 410, "Auction Params Not Set") ErrorAmountCanNotBeNegative = sdkerrors.Register(ModuleName, 411, "amount cannot be negative") ErrorNetFeesCanNotBeNegative = sdkerrors.Register(ModuleName, 412, "NetFees cannot be negative") + SendCoinFromModuleToModuleIsZero = sdkerrors.Register(ModuleName, 413, "Send coin from module to module is zero") + ErrorSurplusDistributerCantbeTrue = sdkerrors.Register(ModuleName, 414, "Surplus and distributer can't be true at same time") + ErrorSurplusDebtrCantbeTrueSameTime = sdkerrors.Register(ModuleName, 415, "Surplus and debt can't be true at same time") ) diff --git a/x/collector/types/genesis.go b/x/collector/types/genesis.go index 080b57552..b4c78fdfa 100644 --- a/x/collector/types/genesis.go +++ b/x/collector/types/genesis.go @@ -1,20 +1,27 @@ package types -// DefaultIndex is the default capability global index. -const DefaultIndex uint64 = 1 - -// DefaultGenesis returns the default Capability genesis state. -func DefaultGenesis() *GenesisState { +func NewGenesisState(netFeeCollectedData []NetFeeCollectedData, appIdToAssetCollectorMapping []AppIdToAssetCollectorMapping, collectorLookup []CollectorLookup, collectorAuctionLookupTable []CollectorAuctionLookupTable, appToDenomsMapping []AppToDenomsMapping, params Params) *GenesisState { return &GenesisState{ - // this line is used by starport scaffolding # genesis/types/default - Params: DefaultParams(), + NetFeeCollectedData: netFeeCollectedData, + AppIdToAssetCollectorMapping: appIdToAssetCollectorMapping, + CollectorLookup: collectorLookup, + CollectorAuctionLookupTable: collectorAuctionLookupTable, + AppToDenomsMapping: appToDenomsMapping, + Params: params, } } -// Validate performs basic genesis state validation returning an error upon any -// failure. -func (gs GenesisState) Validate() error { - // this line is used by starport scaffolding # genesis/types/validate +func DefaultGenesisState() *GenesisState { + return NewGenesisState( + []NetFeeCollectedData{}, + []AppIdToAssetCollectorMapping{}, + []CollectorLookup{}, + []CollectorAuctionLookupTable{}, + []AppToDenomsMapping{}, + DefaultParams(), + ) +} - return gs.Params.Validate() +func (m *GenesisState) Validate() error { + return nil } diff --git a/x/collector/types/genesis.pb.go b/x/collector/types/genesis.pb.go index 127d33976..dd00bd970 100644 --- a/x/collector/types/genesis.pb.go +++ b/x/collector/types/genesis.pb.go @@ -25,7 +25,12 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package // GenesisState defines the collector module's genesis state. type GenesisState struct { - Params Params `protobuf:"bytes,1,opt,name=params,proto3" json:"params"` + NetFeeCollectedData []NetFeeCollectedData `protobuf:"bytes,1,rep,name=netFeeCollectedData,proto3" json:"netFeeCollectedData" yaml:"netFeeCollectedData"` + AppIdToAssetCollectorMapping []AppIdToAssetCollectorMapping `protobuf:"bytes,2,rep,name=appIdToAssetCollectorMapping,proto3" json:"appIdToAssetCollectorMapping" yaml:"appIdToAssetCollectorMapping"` + CollectorLookup []CollectorLookup `protobuf:"bytes,3,rep,name=collectorLookup,proto3" json:"collectorLookup" yaml:"collectorLookupTable"` + CollectorAuctionLookupTable []CollectorAuctionLookupTable `protobuf:"bytes,4,rep,name=collectorAuctionLookupTable,proto3" json:"collectorAuctionLookupTable" yaml:"collectorAuctionLookupTable"` + AppToDenomsMapping []AppToDenomsMapping `protobuf:"bytes,5,rep,name=appToDenomsMapping,proto3" json:"appToDenomsMapping" yaml:"appToDenomsMapping"` + Params Params `protobuf:"bytes,6,opt,name=params,proto3" json:"params"` } func (m *GenesisState) Reset() { *m = GenesisState{} } @@ -61,6 +66,41 @@ func (m *GenesisState) XXX_DiscardUnknown() { var xxx_messageInfo_GenesisState proto.InternalMessageInfo +func (m *GenesisState) GetNetFeeCollectedData() []NetFeeCollectedData { + if m != nil { + return m.NetFeeCollectedData + } + return nil +} + +func (m *GenesisState) GetAppIdToAssetCollectorMapping() []AppIdToAssetCollectorMapping { + if m != nil { + return m.AppIdToAssetCollectorMapping + } + return nil +} + +func (m *GenesisState) GetCollectorLookup() []CollectorLookup { + if m != nil { + return m.CollectorLookup + } + return nil +} + +func (m *GenesisState) GetCollectorAuctionLookupTable() []CollectorAuctionLookupTable { + if m != nil { + return m.CollectorAuctionLookupTable + } + return nil +} + +func (m *GenesisState) GetAppToDenomsMapping() []AppToDenomsMapping { + if m != nil { + return m.AppToDenomsMapping + } + return nil +} + func (m *GenesisState) GetParams() Params { if m != nil { return m.Params @@ -77,20 +117,35 @@ func init() { } var fileDescriptor_d9c64c6e27d30ab8 = []byte{ - // 206 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x52, 0x4b, 0xce, 0xcf, 0x4d, - 0x49, 0xad, 0xd0, 0x4f, 0xce, 0xcf, 0xc9, 0x49, 0x4d, 0x2e, 0xc9, 0x2f, 0xd2, 0x2f, 0x33, 0x4c, - 0x4a, 0x2d, 0x49, 0x34, 0xd4, 0x4f, 0x4f, 0xcd, 0x4b, 0x2d, 0xce, 0x2c, 0xd6, 0x2b, 0x28, 0xca, - 0x2f, 0xc9, 0x17, 0x92, 0x80, 0xa8, 0xd3, 0x83, 0xab, 0xd3, 0x83, 0xaa, 0x93, 0x12, 0x49, 0xcf, - 0x4f, 0xcf, 0x07, 0x2b, 0xd2, 0x07, 0xb1, 0x20, 0xea, 0xa5, 0x54, 0x71, 0x9a, 0x5b, 0x90, 0x58, - 0x94, 0x98, 0x0b, 0x35, 0x56, 0xc9, 0x8f, 0x8b, 0xc7, 0x1d, 0x62, 0x4f, 0x70, 0x49, 0x62, 0x49, - 0xaa, 0x90, 0x1d, 0x17, 0x1b, 0x44, 0x5e, 0x82, 0x51, 0x81, 0x51, 0x83, 0xdb, 0x48, 0x41, 0x0f, - 0x97, 0xbd, 0x7a, 0x01, 0x60, 0x75, 0x4e, 0x2c, 0x27, 0xee, 0xc9, 0x33, 0x04, 0x41, 0x75, 0x39, - 0xf9, 0x9e, 0x78, 0x24, 0xc7, 0x78, 0xe1, 0x91, 0x1c, 0xe3, 0x83, 0x47, 0x72, 0x8c, 0x13, 0x1e, - 0xcb, 0x31, 0x5c, 0x78, 0x2c, 0xc7, 0x70, 0xe3, 0xb1, 0x1c, 0x43, 0x94, 0x71, 0x7a, 0x66, 0x49, - 0x46, 0x69, 0x12, 0xc8, 0x3c, 0x7d, 0x88, 0x99, 0xba, 0xf9, 0x69, 0x69, 0x99, 0xc9, 0x99, 0x89, - 0x39, 0x50, 0xbe, 0x3e, 0xb2, 0x6b, 0x4b, 0x2a, 0x0b, 0x52, 0x8b, 0x93, 0xd8, 0xc0, 0xae, 0x34, - 0x06, 0x04, 0x00, 0x00, 0xff, 0xff, 0x4c, 0x17, 0x44, 0x17, 0x26, 0x01, 0x00, 0x00, + // 444 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x93, 0xcf, 0x8a, 0xd3, 0x40, + 0x1c, 0xc7, 0x33, 0xee, 0x9a, 0xc3, 0xac, 0x20, 0x8c, 0x1e, 0x62, 0x56, 0xb2, 0x75, 0x16, 0xa5, + 0xfe, 0xd9, 0x84, 0xdd, 0x45, 0x0f, 0x1e, 0x84, 0xa6, 0x8b, 0x22, 0xb8, 0x22, 0xb1, 0x27, 0x6f, + 0x93, 0x74, 0x1a, 0x83, 0x49, 0x66, 0x68, 0xa6, 0xd2, 0x9e, 0x3c, 0xf8, 0x02, 0xbe, 0x81, 0x07, + 0x0f, 0xbe, 0x4a, 0x8f, 0x3d, 0x7a, 0x2a, 0xd2, 0xbe, 0x81, 0x4f, 0x20, 0x9d, 0x99, 0xc6, 0x9a, + 0x36, 0x61, 0x6f, 0x6d, 0xf8, 0x7c, 0xbf, 0xdf, 0x0f, 0x0c, 0x3f, 0xf8, 0x20, 0x62, 0x59, 0x9f, + 0x8e, 0xbd, 0x88, 0xa5, 0x29, 0x8d, 0x04, 0x1b, 0x7a, 0x9f, 0x4f, 0x43, 0x2a, 0xc8, 0xa9, 0x17, + 0xd3, 0x9c, 0x16, 0x49, 0xe1, 0xf2, 0x21, 0x13, 0x0c, 0x59, 0x8a, 0x73, 0x4b, 0xce, 0xd5, 0x9c, + 0x7d, 0x3b, 0x66, 0x31, 0x93, 0x90, 0xb7, 0xfa, 0xa5, 0x78, 0xfb, 0x7e, 0x6d, 0x2f, 0x27, 0x43, + 0x92, 0xe9, 0x5a, 0xbb, 0x5d, 0x8b, 0xfd, 0x1b, 0x92, 0x24, 0xfe, 0x6e, 0xc2, 0x1b, 0xaf, 0x94, + 0xd2, 0x7b, 0x41, 0x04, 0x45, 0x5f, 0x01, 0xbc, 0x95, 0x53, 0xf1, 0x92, 0xd2, 0xae, 0x42, 0x69, + 0xff, 0x82, 0x08, 0x62, 0x81, 0xd6, 0x5e, 0xfb, 0xe0, 0xec, 0xc4, 0xad, 0x13, 0x76, 0xdf, 0x6e, + 0x87, 0x7c, 0x3c, 0x9d, 0x1f, 0x19, 0x7f, 0xe6, 0x47, 0xf6, 0x84, 0x64, 0xe9, 0x73, 0xbc, 0xa3, + 0x17, 0x07, 0xbb, 0xd6, 0xd0, 0x4f, 0x00, 0xef, 0x12, 0xce, 0x5f, 0xf7, 0x7b, 0xac, 0x53, 0x14, + 0x54, 0x74, 0xd7, 0x73, 0x97, 0x84, 0xf3, 0x24, 0x8f, 0xad, 0x6b, 0x52, 0xe7, 0x59, 0xbd, 0x4e, + 0xa7, 0x21, 0xed, 0x3f, 0xd6, 0x5e, 0xc7, 0xca, 0xab, 0x69, 0x09, 0x07, 0x8d, 0x22, 0x68, 0x0c, + 0x6f, 0x96, 0xe3, 0x6f, 0x18, 0xfb, 0x34, 0xe2, 0xd6, 0x9e, 0x74, 0x7b, 0x58, 0xef, 0xd6, 0xfd, + 0x3f, 0xe0, 0x1f, 0x6b, 0x9d, 0x43, 0xa5, 0x53, 0xe9, 0xeb, 0x91, 0x30, 0xa5, 0x38, 0xa8, 0xce, + 0xa0, 0x1f, 0x00, 0x1e, 0x96, 0xdf, 0x3a, 0xa3, 0x48, 0x24, 0x2c, 0xdf, 0x48, 0x58, 0xfb, 0x52, + 0xe3, 0xe9, 0x15, 0x34, 0xb6, 0xc3, 0xfe, 0x23, 0xad, 0x84, 0x2b, 0x4a, 0xdb, 0x28, 0x0e, 0x9a, + 0x2c, 0xd0, 0x17, 0x88, 0x08, 0xe7, 0x3d, 0x76, 0x41, 0x73, 0x96, 0x15, 0xeb, 0xe7, 0xbb, 0x2e, + 0xdd, 0x9e, 0x34, 0x3e, 0x5f, 0x25, 0xe3, 0xdf, 0xd3, 0x4a, 0x77, 0xca, 0x47, 0xab, 0x10, 0x38, + 0xd8, 0x31, 0x85, 0x5e, 0x40, 0x53, 0xdd, 0x86, 0x65, 0xb6, 0x40, 0xfb, 0xe0, 0xac, 0x55, 0x3f, + 0xfa, 0x4e, 0x72, 0xfe, 0xfe, 0x6a, 0x28, 0xd0, 0x29, 0xff, 0x72, 0xba, 0x70, 0xc0, 0x6c, 0xe1, + 0x80, 0xdf, 0x0b, 0x07, 0x7c, 0x5b, 0x3a, 0xc6, 0x6c, 0xe9, 0x18, 0xbf, 0x96, 0x8e, 0xf1, 0xe1, + 0x3c, 0x4e, 0xc4, 0xc7, 0x51, 0xb8, 0xea, 0xf3, 0x54, 0xe7, 0x09, 0x1b, 0x0c, 0x92, 0x28, 0x21, + 0xa9, 0xfe, 0xef, 0x6d, 0x9e, 0xa0, 0x98, 0x70, 0x5a, 0x84, 0xa6, 0xbc, 0xbb, 0xf3, 0xbf, 0x01, + 0x00, 0x00, 0xff, 0xff, 0x30, 0x85, 0x49, 0x42, 0x22, 0x04, 0x00, 0x00, } func (m *GenesisState) Marshal() (dAtA []byte, err error) { @@ -122,7 +177,77 @@ func (m *GenesisState) MarshalToSizedBuffer(dAtA []byte) (int, error) { i = encodeVarintGenesis(dAtA, i, uint64(size)) } i-- - dAtA[i] = 0xa + dAtA[i] = 0x32 + if len(m.AppToDenomsMapping) > 0 { + for iNdEx := len(m.AppToDenomsMapping) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.AppToDenomsMapping[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x2a + } + } + if len(m.CollectorAuctionLookupTable) > 0 { + for iNdEx := len(m.CollectorAuctionLookupTable) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.CollectorAuctionLookupTable[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + } + } + if len(m.CollectorLookup) > 0 { + for iNdEx := len(m.CollectorLookup) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.CollectorLookup[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + } + if len(m.AppIdToAssetCollectorMapping) > 0 { + for iNdEx := len(m.AppIdToAssetCollectorMapping) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.AppIdToAssetCollectorMapping[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + } + if len(m.NetFeeCollectedData) > 0 { + for iNdEx := len(m.NetFeeCollectedData) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.NetFeeCollectedData[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + } return len(dAtA) - i, nil } @@ -143,6 +268,36 @@ func (m *GenesisState) Size() (n int) { } var l int _ = l + if len(m.NetFeeCollectedData) > 0 { + for _, e := range m.NetFeeCollectedData { + l = e.Size() + n += 1 + l + sovGenesis(uint64(l)) + } + } + if len(m.AppIdToAssetCollectorMapping) > 0 { + for _, e := range m.AppIdToAssetCollectorMapping { + l = e.Size() + n += 1 + l + sovGenesis(uint64(l)) + } + } + if len(m.CollectorLookup) > 0 { + for _, e := range m.CollectorLookup { + l = e.Size() + n += 1 + l + sovGenesis(uint64(l)) + } + } + if len(m.CollectorAuctionLookupTable) > 0 { + for _, e := range m.CollectorAuctionLookupTable { + l = e.Size() + n += 1 + l + sovGenesis(uint64(l)) + } + } + if len(m.AppToDenomsMapping) > 0 { + for _, e := range m.AppToDenomsMapping { + l = e.Size() + n += 1 + l + sovGenesis(uint64(l)) + } + } l = m.Params.Size() n += 1 + l + sovGenesis(uint64(l)) return n @@ -184,6 +339,176 @@ func (m *GenesisState) Unmarshal(dAtA []byte) error { } switch fieldNum { case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field NetFeeCollectedData", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.NetFeeCollectedData = append(m.NetFeeCollectedData, NetFeeCollectedData{}) + if err := m.NetFeeCollectedData[len(m.NetFeeCollectedData)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AppIdToAssetCollectorMapping", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.AppIdToAssetCollectorMapping = append(m.AppIdToAssetCollectorMapping, AppIdToAssetCollectorMapping{}) + if err := m.AppIdToAssetCollectorMapping[len(m.AppIdToAssetCollectorMapping)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CollectorLookup", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.CollectorLookup = append(m.CollectorLookup, CollectorLookup{}) + if err := m.CollectorLookup[len(m.CollectorLookup)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CollectorAuctionLookupTable", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.CollectorAuctionLookupTable = append(m.CollectorAuctionLookupTable, CollectorAuctionLookupTable{}) + if err := m.CollectorAuctionLookupTable[len(m.CollectorAuctionLookupTable)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AppToDenomsMapping", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.AppToDenomsMapping = append(m.AppToDenomsMapping, AppToDenomsMapping{}) + if err := m.AppToDenomsMapping[len(m.AppToDenomsMapping)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 6: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Params", wireType) } diff --git a/x/collector/types/genesis_test.go b/x/collector/types/genesis_test.go index 7dd627b32..1aaf9e542 100644 --- a/x/collector/types/genesis_test.go +++ b/x/collector/types/genesis_test.go @@ -15,7 +15,7 @@ func TestGenesisState_Validate(t *testing.T) { }{ { desc: "default is valid", - genState: types.DefaultGenesis(), + genState: types.DefaultGenesisState(), valid: true, }, { diff --git a/x/esm/abci.go b/x/esm/abci.go index 700f6ad47..dfaf8681b 100644 --- a/x/esm/abci.go +++ b/x/esm/abci.go @@ -1,58 +1,67 @@ package esm import ( + utils "github.com/comdex-official/comdex/types" + assettypes "github.com/comdex-official/comdex/x/asset/types" "github.com/comdex-official/comdex/x/esm/keeper" "github.com/comdex-official/comdex/x/esm/types" + "github.com/cosmos/cosmos-sdk/telemetry" sdk "github.com/cosmos/cosmos-sdk/types" abci "github.com/tendermint/tendermint/abci/types" ) func BeginBlocker(ctx sdk.Context, _ abci.RequestBeginBlock, k keeper.Keeper) { - apps, found := k.GetApps(ctx) - if !found { - return - } - for _, v := range apps { - esmStatus, found := k.GetESMStatus(ctx, v.Id) + + defer telemetry.ModuleMeasureSince(types.ModuleName, ctx.BlockTime(), telemetry.MetricKeyBeginBlocker) + + _ = utils.ApplyFuncIfNoError(ctx, func(ctx sdk.Context) error { + apps, found := k.GetApps(ctx) if !found { - return + return assettypes.AppIdsDoesntExist } - if ctx.BlockTime().After(esmStatus.EndTime) && esmStatus.Status && !esmStatus.VaultRedemptionStatus{ - err := k.SetUpCollateralRedemptionForVault(ctx, esmStatus.AppId) - if err != nil { - return + for _, v := range apps { + esmStatus, found := k.GetESMStatus(ctx, v.Id) + if !found { + continue } - } - if ctx.BlockTime().After(esmStatus.EndTime) && esmStatus.Status && !esmStatus.StableVaultRedemptionStatus{ - err := k.SetUpCollateralRedemptionForStableVault(ctx, esmStatus.AppId) - if err != nil { - return - } - } - esmMarket, found := k.GetESMMarketForAsset(ctx, v.Id) - if found { - return - } - if !esmMarket.IsPriceSet && esmStatus.Status { - assets := k.GetAssetsForOracle(ctx) - var markets []types.Market - for _, a := range assets { - price, found := k.GetPriceForAsset(ctx, a.Id) - if !found { - return + if ctx.BlockTime().After(esmStatus.EndTime) && esmStatus.Status && !esmStatus.VaultRedemptionStatus { + err := k.SetUpCollateralRedemptionForVault(ctx, esmStatus.AppId) + if err != nil { + continue } - market := types.Market{ - AssetID: a.Id, - Rates: price, + } + if ctx.BlockTime().After(esmStatus.EndTime) && esmStatus.Status && !esmStatus.StableVaultRedemptionStatus { + err := k.SetUpCollateralRedemptionForStableVault(ctx, esmStatus.AppId) + if err != nil { + continue } - markets = append(markets, market) } - em := types.ESMMarketPrice{ - AppId: v.Id, - IsPriceSet: true, - Market: markets, + esmMarket, found := k.GetESMMarketForAsset(ctx, v.Id) + if found { + continue + } + if !esmMarket.IsPriceSet && esmStatus.Status { + assets := k.GetAssetsForOracle(ctx) + var markets []types.Market + for _, a := range assets { + price, found := k.GetPriceForAsset(ctx, a.Id) + if !found { + continue + } + market := types.Market{ + AssetID: a.Id, + Rates: price, + } + markets = append(markets, market) + } + em := types.ESMMarketPrice{ + AppId: v.Id, + IsPriceSet: true, + Market: markets, + } + k.SetESMMarketForAsset(ctx, em) } - k.SetESMMarketForAsset(ctx, em) } - } + return nil + }) } diff --git a/x/esm/client/cli/query.go b/x/esm/client/cli/query.go index 9ebdc4b44..f195e88c1 100644 --- a/x/esm/client/cli/query.go +++ b/x/esm/client/cli/query.go @@ -34,6 +34,7 @@ func GetQueryCmd(queryRoute string) *cobra.Command { queryESMStatus(), queryCurrentDepositStats(), queryUsersDepositMapping(), + queryDataAfterCoolOff(), ) return cmd @@ -188,3 +189,40 @@ func queryUsersDepositMapping() *cobra.Command { return cmd } + +func queryDataAfterCoolOff() *cobra.Command { + cmd := &cobra.Command{ + Use: "data_after_cool_off [app-id]", + Short: "Query data after cool off period for esm", + Args: cobra.ExactArgs(1), + RunE: func(cmd *cobra.Command, args []string) error { + ctx, err := client.GetClientQueryContext(cmd) + if err != nil { + return err + } + + id, err := strconv.ParseUint(args[0], 10, 64) + if err != nil { + return err + } + + queryClient := types.NewQueryClient(ctx) + + res, err := queryClient.QueryDataAfterCoolOff( + context.Background(), + &types.QueryDataAfterCoolOffRequest{ + Id: id, + }, + ) + if err != nil { + return err + } + + return ctx.PrintProto(res) + }, + } + + flags.AddQueryFlagsToCmd(cmd) + + return cmd +} diff --git a/x/esm/expected/keeper.go b/x/esm/expected/keeper.go index 3595a3490..62f3f14a5 100644 --- a/x/esm/expected/keeper.go +++ b/x/esm/expected/keeper.go @@ -2,8 +2,8 @@ package expected import ( assettypes "github.com/comdex-official/comdex/x/asset/types" - vaulttypes "github.com/comdex-official/comdex/x/vault/types" collectortypes "github.com/comdex-official/comdex/x/collector/types" + vaulttypes "github.com/comdex-official/comdex/x/vault/types" sdk "github.com/cosmos/cosmos-sdk/types" ) diff --git a/x/esm/genesis.go b/x/esm/genesis.go index 6205938be..7083433a9 100644 --- a/x/esm/genesis.go +++ b/x/esm/genesis.go @@ -6,19 +6,62 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" ) -// InitGenesis initializes the capability module's state from a provided genesis -// state. -func InitGenesis(ctx sdk.Context, k keeper.Keeper, genState types.GenesisState) { - // this line is used by starport scaffolding # genesis/module/init - k.SetParams(ctx, genState.Params) +func InitGenesis(ctx sdk.Context, k keeper.Keeper, state *types.GenesisState) { + + k.SetParams(ctx, state.Params) + + for _, item := range state.ESMTriggerParams { + k.SetESMTriggerParams(ctx, item) + } + + for _, item := range state.CurrentDepositStats { + k.SetCurrentDepositStats(ctx, item) + } + + for _, item := range state.ESMStatus { + k.SetESMStatus(ctx, item) + } + + for _, item := range state.KillSwitchParams { + err := k.SetKillSwitchData(ctx, item) + if err != nil { + return + } + } + + for _, item := range state.UsersDepositMapping { + k.SetUserDepositByApp(ctx, item) + } + + for _, item := range state.ESMMarketPrice { + k.SetESMMarketForAsset(ctx, item) + } + + for _, item := range state.DataAfterCoolOff { + k.SetDataAfterCoolOff(ctx, item) + } + + for _, item := range state.AssetToAmountValue { + k.SetAssetToAmountValue(ctx, item) + } + + for _, item := range state.AppToAmountValue { + k.SetAppToAmtValue(ctx, item) + } } -// ExportGenesis returns the capability module's exported genesis. func ExportGenesis(ctx sdk.Context, k keeper.Keeper) *types.GenesisState { - genesis := types.DefaultGenesis() - genesis.Params = k.GetParams(ctx) - - // this line is used by starport scaffolding # genesis/module/export - return genesis + return types.NewGenesisState( + k.GetAllESMTriggerParams(ctx), + k.GetAllCurrentDepositStats(ctx), + k.GetAllESMStatus(ctx), + k.GetAllKillSwitchData(ctx), + k.GetAllUserDepositByApp(ctx), + k.GetAllESMMarketForAsset(ctx), + k.GetAllDataAfterCoolOff(ctx), + k.GetAllAssetToAmountValue(ctx), + k.GetAllAppToAmtValue(ctx), + k.GetParams(ctx), + ) } diff --git a/x/esm/keeper/alias.go b/x/esm/keeper/alias.go index 075b5061a..2f2524165 100644 --- a/x/esm/keeper/alias.go +++ b/x/esm/keeper/alias.go @@ -2,63 +2,63 @@ package keeper import ( assettypes "github.com/comdex-official/comdex/x/asset/types" - vaulttypes "github.com/comdex-official/comdex/x/vault/types" collectortypes "github.com/comdex-official/comdex/x/collector/types" + vaulttypes "github.com/comdex-official/comdex/x/vault/types" sdk "github.com/cosmos/cosmos-sdk/types" ) -func (k *Keeper) GetApp(ctx sdk.Context, id uint64) (app assettypes.AppData, found bool) { +func (k Keeper) GetApp(ctx sdk.Context, id uint64) (app assettypes.AppData, found bool) { return k.asset.GetApp(ctx, id) } -func (k *Keeper) GetAsset(ctx sdk.Context, id uint64) (assettypes.Asset, bool) { +func (k Keeper) GetAsset(ctx sdk.Context, id uint64) (assettypes.Asset, bool) { return k.asset.GetAsset(ctx, id) } -func (k *Keeper) GetApps(ctx sdk.Context) (apps []assettypes.AppData, found bool) { +func (k Keeper) GetApps(ctx sdk.Context) (apps []assettypes.AppData, found bool) { return k.asset.GetApps(ctx) } -func (k *Keeper) GetAssetsForOracle(ctx sdk.Context) (assets []assettypes.Asset) { +func (k Keeper) GetAssetsForOracle(ctx sdk.Context) (assets []assettypes.Asset) { return k.asset.GetAssetsForOracle(ctx) } -func (k *Keeper) GetPriceForAsset(ctx sdk.Context, id uint64) (uint64, bool) { +func (k Keeper) GetPriceForAsset(ctx sdk.Context, id uint64) (uint64, bool) { return k.market.GetPriceForAsset(ctx, id) } -func (k *Keeper) GetPair(ctx sdk.Context, id uint64) (assettypes.Pair, bool) { +func (k Keeper) GetPair(ctx sdk.Context, id uint64) (assettypes.Pair, bool) { return k.asset.GetPair(ctx, id) } -func (k *Keeper) GetPairsVault(ctx sdk.Context, id uint64) (pairs assettypes.ExtendedPairVault, found bool) { +func (k Keeper) GetPairsVault(ctx sdk.Context, id uint64) (pairs assettypes.ExtendedPairVault, found bool) { return k.asset.GetPairsVault(ctx, id) } -func (k *Keeper) DeleteVault(ctx sdk.Context, id string) { +func (k Keeper) DeleteVault(ctx sdk.Context, id string) { k.vault.DeleteVault(ctx, id) } -func (k *Keeper) DeleteAddressFromAppExtendedPairVaultMapping(ctx sdk.Context, extendedPairID uint64, userVaultID string, appMappingID uint64) { +func (k Keeper) DeleteAddressFromAppExtendedPairVaultMapping(ctx sdk.Context, extendedPairID uint64, userVaultID string, appMappingID uint64) { k.vault.DeleteAddressFromAppExtendedPairVaultMapping(ctx, extendedPairID, userVaultID, appMappingID) } -func (k *Keeper) BurnTokensForApp(ctx sdk.Context, appMappingID uint64, assetID uint64, amount sdk.Int) error { +func (k Keeper) BurnTokensForApp(ctx sdk.Context, appMappingID uint64, assetID uint64, amount sdk.Int) error { return k.tokenmint.BurnTokensForApp(ctx, appMappingID, assetID, amount) } -func (k *Keeper) GetVaults(ctx sdk.Context) (vaults []vaulttypes.Vault) { +func (k Keeper) GetVaults(ctx sdk.Context) (vaults []vaulttypes.Vault) { return k.vault.GetVaults(ctx) } -func (k *Keeper) GetStableMintVaults(ctx sdk.Context) (stableVaults []vaulttypes.StableMintVault) { +func (k Keeper) GetStableMintVaults(ctx sdk.Context) (stableVaults []vaulttypes.StableMintVault) { return k.vault.GetStableMintVaults(ctx) } -func (k *Keeper) GetAssetForDenom(ctx sdk.Context, denom string) (asset assettypes.Asset, found bool) { +func (k Keeper) GetAssetForDenom(ctx sdk.Context, denom string) (asset assettypes.Asset, found bool) { return k.asset.GetAssetForDenom(ctx, denom) } -func (k *Keeper) GetNetFeeCollectedData(ctx sdk.Context, appID uint64) (netFeeData collectortypes.NetFeeCollectedData, found bool) { +func (k Keeper) GetNetFeeCollectedData(ctx sdk.Context, appID uint64) (netFeeData collectortypes.NetFeeCollectedData, found bool) { return k.collector.GetNetFeeCollectedData(ctx, appID) } diff --git a/x/esm/keeper/esm.go b/x/esm/keeper/esm.go index ea29b6da5..b41c41646 100644 --- a/x/esm/keeper/esm.go +++ b/x/esm/keeper/esm.go @@ -5,11 +5,10 @@ import ( assettypes "github.com/comdex-official/comdex/x/asset/types" "github.com/comdex-official/comdex/x/esm/types" vaulttypes "github.com/comdex-official/comdex/x/vault/types" - esmtypes "github.com/comdex-official/comdex/x/esm/types" sdk "github.com/cosmos/cosmos-sdk/types" ) -func (k *Keeper) AddESMTriggerParamsRecords(ctx sdk.Context, record types.ESMTriggerParams) error { +func (k Keeper) AddESMTriggerParamsRecords(ctx sdk.Context, record types.ESMTriggerParams) error { _, found := k.GetESMTriggerParams(ctx, record.AppId) if found { return types.ErrorDuplicateESMTriggerParams @@ -28,7 +27,7 @@ func (k *Keeper) AddESMTriggerParamsRecords(ctx sdk.Context, record types.ESMTri return nil } -func (k *Keeper) SetESMTriggerParams(ctx sdk.Context, esmTriggerParams types.ESMTriggerParams) { +func (k Keeper) SetESMTriggerParams(ctx sdk.Context, esmTriggerParams types.ESMTriggerParams) { var ( store = k.Store(ctx) key = types.ESMTriggerParamsKey(esmTriggerParams.AppId) @@ -38,7 +37,7 @@ func (k *Keeper) SetESMTriggerParams(ctx sdk.Context, esmTriggerParams types.ESM store.Set(key, value) } -func (k *Keeper) GetESMTriggerParams(ctx sdk.Context, id uint64) (esmTriggerParams types.ESMTriggerParams, found bool) { +func (k Keeper) GetESMTriggerParams(ctx sdk.Context, id uint64) (esmTriggerParams types.ESMTriggerParams, found bool) { var ( store = k.Store(ctx) key = types.ESMTriggerParamsKey(id) @@ -52,7 +51,28 @@ func (k *Keeper) GetESMTriggerParams(ctx sdk.Context, id uint64) (esmTriggerPara return esmTriggerParams, true } -func (k *Keeper) SetCurrentDepositStats(ctx sdk.Context, depositStats types.CurrentDepositStats) { +func (k Keeper) GetAllESMTriggerParams(ctx sdk.Context) (eSMTriggerParams []types.ESMTriggerParams) { + var ( + store = k.Store(ctx) + iter = sdk.KVStorePrefixIterator(store, types.ESMTriggerParamsKeyPrefix) + ) + + defer func(iter sdk.Iterator) { + err := iter.Close() + if err != nil { + return + } + }(iter) + + for ; iter.Valid(); iter.Next() { + var esm types.ESMTriggerParams + k.cdc.MustUnmarshal(iter.Value(), &esm) + eSMTriggerParams = append(eSMTriggerParams, esm) + } + return eSMTriggerParams +} + +func (k Keeper) SetCurrentDepositStats(ctx sdk.Context, depositStats types.CurrentDepositStats) { var ( store = k.Store(ctx) key = types.CurrentDepositStatsKey(depositStats.AppId) @@ -62,7 +82,7 @@ func (k *Keeper) SetCurrentDepositStats(ctx sdk.Context, depositStats types.Curr store.Set(key, value) } -func (k *Keeper) GetCurrentDepositStats(ctx sdk.Context, id uint64) (depositStats types.CurrentDepositStats, found bool) { +func (k Keeper) GetCurrentDepositStats(ctx sdk.Context, id uint64) (depositStats types.CurrentDepositStats, found bool) { var ( store = k.Store(ctx) key = types.CurrentDepositStatsKey(id) @@ -77,7 +97,28 @@ func (k *Keeper) GetCurrentDepositStats(ctx sdk.Context, id uint64) (depositStat return depositStats, true } -func (k *Keeper) SetESMStatus(ctx sdk.Context, esmStatus types.ESMStatus) { +func (k Keeper) GetAllCurrentDepositStats(ctx sdk.Context) (currentDepositStats []types.CurrentDepositStats) { + var ( + store = k.Store(ctx) + iter = sdk.KVStorePrefixIterator(store, types.CurrentDepositStatsPrefix) + ) + + defer func(iter sdk.Iterator) { + err := iter.Close() + if err != nil { + return + } + }(iter) + + for ; iter.Valid(); iter.Next() { + var esm types.CurrentDepositStats + k.cdc.MustUnmarshal(iter.Value(), &esm) + currentDepositStats = append(currentDepositStats, esm) + } + return currentDepositStats +} + +func (k Keeper) SetESMStatus(ctx sdk.Context, esmStatus types.ESMStatus) { var ( store = k.Store(ctx) key = types.ESMStatusKey(esmStatus.AppId) @@ -87,7 +128,7 @@ func (k *Keeper) SetESMStatus(ctx sdk.Context, esmStatus types.ESMStatus) { store.Set(key, value) } -func (k *Keeper) GetESMStatus(ctx sdk.Context, id uint64) (esmStatus types.ESMStatus, found bool) { +func (k Keeper) GetESMStatus(ctx sdk.Context, id uint64) (esmStatus types.ESMStatus, found bool) { var ( store = k.Store(ctx) key = types.ESMStatusKey(id) @@ -102,7 +143,28 @@ func (k *Keeper) GetESMStatus(ctx sdk.Context, id uint64) (esmStatus types.ESMSt return esmStatus, true } -func (k *Keeper) GetUserDepositByApp(ctx sdk.Context, address string, appID uint64) (userDeposits types.UsersDepositMapping, found bool) { +func (k Keeper) GetAllESMStatus(ctx sdk.Context) (eSMStatus []types.ESMStatus) { + var ( + store = k.Store(ctx) + iter = sdk.KVStorePrefixIterator(store, types.ESMStatusPrefix) + ) + + defer func(iter sdk.Iterator) { + err := iter.Close() + if err != nil { + return + } + }(iter) + + for ; iter.Valid(); iter.Next() { + var esm types.ESMStatus + k.cdc.MustUnmarshal(iter.Value(), &esm) + eSMStatus = append(eSMStatus, esm) + } + return eSMStatus +} + +func (k Keeper) GetUserDepositByApp(ctx sdk.Context, address string, appID uint64) (userDeposits types.UsersDepositMapping, found bool) { var ( store = k.Store(ctx) key = types.UserDepositByAppKey(address, appID) @@ -116,7 +178,7 @@ func (k *Keeper) GetUserDepositByApp(ctx sdk.Context, address string, appID uint return userDeposits, true } -func (k *Keeper) SetUserDepositByApp(ctx sdk.Context, userDeposits types.UsersDepositMapping) { +func (k Keeper) SetUserDepositByApp(ctx sdk.Context, userDeposits types.UsersDepositMapping) { var ( store = k.Store(ctx) key = types.UserDepositByAppKey(userDeposits.Depositor, userDeposits.AppId) @@ -125,7 +187,28 @@ func (k *Keeper) SetUserDepositByApp(ctx sdk.Context, userDeposits types.UsersDe store.Set(key, value) } -func (k *Keeper) SetESMMarketForAsset(ctx sdk.Context, esmMarket types.ESMMarketPrice) { +func (k Keeper) GetAllUserDepositByApp(ctx sdk.Context) (usersDepositMapping []types.UsersDepositMapping) { + var ( + store = k.Store(ctx) + iter = sdk.KVStorePrefixIterator(store, types.UserDepositByAppPrefix) + ) + + defer func(iter sdk.Iterator) { + err := iter.Close() + if err != nil { + return + } + }(iter) + + for ; iter.Valid(); iter.Next() { + var esm types.UsersDepositMapping + k.cdc.MustUnmarshal(iter.Value(), &esm) + usersDepositMapping = append(usersDepositMapping, esm) + } + return usersDepositMapping +} + +func (k Keeper) SetESMMarketForAsset(ctx sdk.Context, esmMarket types.ESMMarketPrice) { var ( store = k.Store(ctx) key = types.ESMSPriceKey(esmMarket.AppId) @@ -135,7 +218,7 @@ func (k *Keeper) SetESMMarketForAsset(ctx sdk.Context, esmMarket types.ESMMarket store.Set(key, value) } -func (k *Keeper) GetESMMarketForAsset(ctx sdk.Context, id uint64) (esmMarket types.ESMMarketPrice, found bool) { +func (k Keeper) GetESMMarketForAsset(ctx sdk.Context, id uint64) (esmMarket types.ESMMarketPrice, found bool) { var ( store = k.Store(ctx) key = types.ESMSPriceKey(id) @@ -150,10 +233,31 @@ func (k *Keeper) GetESMMarketForAsset(ctx sdk.Context, id uint64) (esmMarket typ return esmMarket, true } -func (k *Keeper) AddESMTriggerParamsForApp(ctx sdk.Context, addESMTriggerParams *bindings.MsgAddESMTriggerParams) error { +func (k Keeper) GetAllESMMarketForAsset(ctx sdk.Context) (eSMMarketPrice []types.ESMMarketPrice) { + var ( + store = k.Store(ctx) + iter = sdk.KVStorePrefixIterator(store, types.ESMPricePrefix) + ) + + defer func(iter sdk.Iterator) { + err := iter.Close() + if err != nil { + return + } + }(iter) + + for ; iter.Valid(); iter.Next() { + var esm types.ESMMarketPrice + k.cdc.MustUnmarshal(iter.Value(), &esm) + eSMMarketPrice = append(eSMMarketPrice, esm) + } + return eSMMarketPrice +} + +func (k Keeper) AddESMTriggerParamsForApp(ctx sdk.Context, addESMTriggerParams *bindings.MsgAddESMTriggerParams) error { - var debtRates[] types.DebtAssetsRates - for i := range addESMTriggerParams.AssetID{ + var debtRates []types.DebtAssetsRates + for i := range addESMTriggerParams.AssetID { var debtRate types.DebtAssetsRates debtRate.AssetID = addESMTriggerParams.AssetID[i] debtRate.Rates = addESMTriggerParams.Rates[i] @@ -180,7 +284,7 @@ func (k Keeper) WasmAddESMTriggerParamsQuery(ctx sdk.Context, appID uint64) (boo return true, "" } -func (k *Keeper) SetDataAfterCoolOff(ctx sdk.Context, esmDataAfterCoolOff types.DataAfterCoolOff) { +func (k Keeper) SetDataAfterCoolOff(ctx sdk.Context, esmDataAfterCoolOff types.DataAfterCoolOff) { var ( store = k.Store(ctx) key = types.ESMDataAfterCoolOff(esmDataAfterCoolOff.AppId) @@ -190,7 +294,7 @@ func (k *Keeper) SetDataAfterCoolOff(ctx sdk.Context, esmDataAfterCoolOff types. store.Set(key, value) } -func (k *Keeper) GetDataAfterCoolOff(ctx sdk.Context, id uint64) (esmDataAfterCoolOff types.DataAfterCoolOff, found bool) { +func (k Keeper) GetDataAfterCoolOff(ctx sdk.Context, id uint64) (esmDataAfterCoolOff types.DataAfterCoolOff, found bool) { var ( store = k.Store(ctx) key = types.ESMDataAfterCoolOff(id) @@ -204,7 +308,28 @@ func (k *Keeper) GetDataAfterCoolOff(ctx sdk.Context, id uint64) (esmDataAfterCo return esmDataAfterCoolOff, true } -func (k *Keeper) SetUpCollateralRedemptionForVault(ctx sdk.Context, appId uint64) error { +func (k Keeper) GetAllDataAfterCoolOff(ctx sdk.Context) (dataAfterCoolOff []types.DataAfterCoolOff) { + var ( + store = k.Store(ctx) + iter = sdk.KVStorePrefixIterator(store, types.ESMDataAfterCoolOffPrefix) + ) + + defer func(iter sdk.Iterator) { + err := iter.Close() + if err != nil { + return + } + }(iter) + + for ; iter.Valid(); iter.Next() { + var esm types.DataAfterCoolOff + k.cdc.MustUnmarshal(iter.Value(), &esm) + dataAfterCoolOff = append(dataAfterCoolOff, esm) + } + return dataAfterCoolOff +} + +func (k Keeper) SetUpCollateralRedemptionForVault(ctx sdk.Context, appId uint64) error { totalVaults := k.GetVaults(ctx) for _, data := range totalVaults { if data.AppId == appId { @@ -253,7 +378,7 @@ func (k *Keeper) SetUpCollateralRedemptionForVault(ctx sdk.Context, appId uint64 if err != nil { return err } - coolOffData.CollateralAsset = append(coolOffData.CollateralAsset[:i],coolOffData.CollateralAsset[i+1:]...) + coolOffData.CollateralAsset = append(coolOffData.CollateralAsset[:i], coolOffData.CollateralAsset[i+1:]...) coolOffData.CollateralAsset = append(coolOffData.CollateralAsset, indata) break } @@ -276,7 +401,7 @@ func (k *Keeper) SetUpCollateralRedemptionForVault(ctx sdk.Context, appId uint64 if indata.AssetID == assetOutData.Id { count++ indata.Amount = indata.Amount.Add(data.AmountOut) - coolOffData.DebtAsset = append(coolOffData.DebtAsset[:i],coolOffData.DebtAsset[i+1:]...) + coolOffData.DebtAsset = append(coolOffData.DebtAsset[:i], coolOffData.DebtAsset[i+1:]...) coolOffData.DebtAsset = append(coolOffData.DebtAsset, indata) break } @@ -296,7 +421,7 @@ func (k *Keeper) SetUpCollateralRedemptionForVault(ctx sdk.Context, appId uint64 k.DeleteAddressFromAppExtendedPairVaultMapping(ctx, data.ExtendedPairVaultID, data.Id, data.AppId) esmStatus, found := k.GetESMStatus(ctx, data.AppId) if !found { - return esmtypes.ErrESMParamsNotFound + return types.ErrESMParamsNotFound } esmStatus.VaultRedemptionStatus = true k.SetESMStatus(ctx, esmStatus) @@ -305,7 +430,7 @@ func (k *Keeper) SetUpCollateralRedemptionForVault(ctx sdk.Context, appId uint64 return nil } -func (k *Keeper) SetUpCollateralRedemptionForStableVault(ctx sdk.Context, appId uint64) error { +func (k Keeper) SetUpCollateralRedemptionForStableVault(ctx sdk.Context, appId uint64) error { totalStableVaults := k.GetStableMintVaults(ctx) for _, data := range totalStableVaults { if data.AppId == appId { @@ -354,7 +479,7 @@ func (k *Keeper) SetUpCollateralRedemptionForStableVault(ctx sdk.Context, appId if err != nil { return err } - coolOffData.CollateralAsset = append(coolOffData.CollateralAsset[:i],coolOffData.CollateralAsset[i+1:]...) + coolOffData.CollateralAsset = append(coolOffData.CollateralAsset[:i], coolOffData.CollateralAsset[i+1:]...) coolOffData.CollateralAsset = append(coolOffData.CollateralAsset, indata) break } @@ -377,7 +502,7 @@ func (k *Keeper) SetUpCollateralRedemptionForStableVault(ctx sdk.Context, appId if indata.AssetID == assetOutData.Id { count++ indata.Amount = indata.Amount.Add(data.AmountOut) - coolOffData.DebtAsset = append(coolOffData.DebtAsset[:i],coolOffData.DebtAsset[i+1:]...) + coolOffData.DebtAsset = append(coolOffData.DebtAsset[:i], coolOffData.DebtAsset[i+1:]...) coolOffData.DebtAsset = append(coolOffData.DebtAsset, indata) break } @@ -397,31 +522,30 @@ func (k *Keeper) SetUpCollateralRedemptionForStableVault(ctx sdk.Context, appId k.DeleteAddressFromAppExtendedPairVaultMapping(ctx, data.ExtendedPairVaultID, data.Id, data.AppId) esmStatus, found := k.GetESMStatus(ctx, data.AppId) if !found { - return esmtypes.ErrESMParamsNotFound + return types.ErrESMParamsNotFound } esmStatus.StableVaultRedemptionStatus = true k.SetESMStatus(ctx, esmStatus) } } - netFee, found := k.GetNetFeeCollectedData(ctx, appId) + netFee, _ := k.GetNetFeeCollectedData(ctx, appId) coolOffData, found := k.GetDataAfterCoolOff(ctx, appId) - if !found{ + if !found { return nil - }else { - for _, data := range netFee.AssetIdToFeeCollected{ - for _, indata := range coolOffData.DebtAsset{ - if data.AssetId == indata.AssetID{ - indata.Amount = indata.Amount.Sub(data.NetFeesCollected) - coolOffData.DebtAsset = append(coolOffData.DebtAsset, indata) - } + } + for _, data := range netFee.AssetIdToFeeCollected { + for _, indata := range coolOffData.DebtAsset { + if data.AssetId == indata.AssetID { + indata.Amount = indata.Amount.Sub(data.NetFeesCollected) + coolOffData.DebtAsset = append(coolOffData.DebtAsset, indata) } } - k.SetDataAfterCoolOff(ctx, coolOffData) } + k.SetDataAfterCoolOff(ctx, coolOffData) return nil } -func (k *Keeper) SetAssetToAmountValue(ctx sdk.Context, assetToAmountValue types.AssetToAmountValue) { +func (k Keeper) SetAssetToAmountValue(ctx sdk.Context, assetToAmountValue types.AssetToAmountValue) { var ( store = k.Store(ctx) key = types.AssetToAmountValueKey(assetToAmountValue.AppId, assetToAmountValue.AssetID) @@ -431,7 +555,7 @@ func (k *Keeper) SetAssetToAmountValue(ctx sdk.Context, assetToAmountValue types store.Set(key, value) } -func (k *Keeper) GetAssetToAmountValue(ctx sdk.Context, appID, assetID uint64) (assetToAmountValue types.AssetToAmountValue, found bool) { +func (k Keeper) GetAssetToAmountValue(ctx sdk.Context, appID, assetID uint64) (assetToAmountValue types.AssetToAmountValue, found bool) { var ( store = k.Store(ctx) key = types.AssetToAmountValueKey(appID, assetID) @@ -446,7 +570,28 @@ func (k *Keeper) GetAssetToAmountValue(ctx sdk.Context, appID, assetID uint64) ( return assetToAmountValue, true } -func (k *Keeper) SetAppToAmtValue(ctx sdk.Context, appToAmt types.AppToAmountValue) { +func (k Keeper) GetAllAssetToAmountValue(ctx sdk.Context) (assetToAmountValue []types.AssetToAmountValue) { + var ( + store = k.Store(ctx) + iter = sdk.KVStorePrefixIterator(store, types.AssetToAmountValueKeyPrefix) + ) + + defer func(iter sdk.Iterator) { + err := iter.Close() + if err != nil { + return + } + }(iter) + + for ; iter.Valid(); iter.Next() { + var esm types.AssetToAmountValue + k.cdc.MustUnmarshal(iter.Value(), &esm) + assetToAmountValue = append(assetToAmountValue, esm) + } + return assetToAmountValue +} + +func (k Keeper) SetAppToAmtValue(ctx sdk.Context, appToAmt types.AppToAmountValue) { var ( store = k.Store(ctx) key = types.AppToAmountValueKey(appToAmt.AppId) @@ -456,7 +601,7 @@ func (k *Keeper) SetAppToAmtValue(ctx sdk.Context, appToAmt types.AppToAmountVal store.Set(key, value) } -func (k *Keeper) GetAppToAmtValue(ctx sdk.Context, id uint64) (appToAmt types.AppToAmountValue, found bool) { +func (k Keeper) GetAppToAmtValue(ctx sdk.Context, id uint64) (appToAmt types.AppToAmountValue, found bool) { var ( store = k.Store(ctx) key = types.AppToAmountValueKey(id) @@ -470,3 +615,24 @@ func (k *Keeper) GetAppToAmtValue(ctx sdk.Context, id uint64) (appToAmt types.Ap k.cdc.MustUnmarshal(value, &appToAmt) return appToAmt, true } + +func (k Keeper) GetAllAppToAmtValue(ctx sdk.Context) (appToAmountValue []types.AppToAmountValue) { + var ( + store = k.Store(ctx) + iter = sdk.KVStorePrefixIterator(store, types.AppToAmountValueKeyPrefix) + ) + + defer func(iter sdk.Iterator) { + err := iter.Close() + if err != nil { + return + } + }(iter) + + for ; iter.Valid(); iter.Next() { + var esm types.AppToAmountValue + k.cdc.MustUnmarshal(iter.Value(), &esm) + appToAmountValue = append(appToAmountValue, esm) + } + return appToAmountValue +} diff --git a/x/esm/keeper/grpc_query.go b/x/esm/keeper/grpc_query.go index f31a52b84..48a142c07 100644 --- a/x/esm/keeper/grpc_query.go +++ b/x/esm/keeper/grpc_query.go @@ -9,7 +9,7 @@ import ( ) var ( - _ types.QueryServer = (*queryServer)(nil) + _ types.QueryServer = queryServer{} ) type queryServer struct { @@ -97,3 +97,22 @@ func (q queryServer) QueryUsersDepositMapping(c context.Context, req *types.Quer UsersDepositMapping: item, }, nil } + +func (q queryServer) QueryDataAfterCoolOff(c context.Context, req *types.QueryDataAfterCoolOffRequest) (*types.QueryDataAfterCoolOffResponse, error) { + if req == nil { + return nil, status.Error(codes.InvalidArgument, "request cannot be empty") + } + + var ( + ctx = sdk.UnwrapSDKContext(c) + ) + + item, found := q.GetDataAfterCoolOff(ctx, req.Id) + if !found { + return &types.QueryDataAfterCoolOffResponse{}, nil + } + + return &types.QueryDataAfterCoolOffResponse{ + DataAfterCoolOff: item, + }, nil +} diff --git a/x/esm/keeper/keeper.go b/x/esm/keeper/keeper.go index 82a4cea8d..cd76128be 100644 --- a/x/esm/keeper/keeper.go +++ b/x/esm/keeper/keeper.go @@ -42,13 +42,13 @@ func NewKeeper( tokenmint expected.Tokenmint, collector expected.Collector, -) *Keeper { +) Keeper { // set KeyTable if it has not already been set if !ps.HasKeyTable() { ps = ps.WithKeyTable(types.ParamKeyTable()) } - return &Keeper{ + return Keeper{ cdc: cdc, storeKey: storeKey, @@ -67,7 +67,7 @@ func (k Keeper) Logger(ctx sdk.Context) log.Logger { return ctx.Logger().With("module", fmt.Sprintf("x/%s", types.ModuleName)) } -func (k *Keeper) Store(ctx sdk.Context) sdk.KVStore { +func (k Keeper) Store(ctx sdk.Context) sdk.KVStore { return ctx.KVStore(k.storeKey) } @@ -200,7 +200,7 @@ func (k Keeper) CalculateCollateral(ctx sdk.Context, appId uint64, amount sdk.Co } } esmData, _ := k.GetESMTriggerParams(ctx, appId) - for _, data := range esmData.AssetsRates{ + for _, data := range esmData.AssetsRates { if assetInID.Id == data.AssetID { assetInPrice = data.Rates break @@ -246,16 +246,16 @@ func (k Keeper) CalculateCollateral(ctx sdk.Context, appId uint64, amount sdk.Co return err } a.Amount = a.Amount.Sub(collateralTokens.Amount) - esmDataAfterCoolOff.CollateralAsset = append(esmDataAfterCoolOff.CollateralAsset[:index],esmDataAfterCoolOff.CollateralAsset[index+1:]...) + esmDataAfterCoolOff.CollateralAsset = append(esmDataAfterCoolOff.CollateralAsset[:index], esmDataAfterCoolOff.CollateralAsset[index+1:]...) esmDataAfterCoolOff.CollateralAsset = append(esmDataAfterCoolOff.CollateralAsset[:index+1], esmDataAfterCoolOff.CollateralAsset[index:]...) esmDataAfterCoolOff.CollateralAsset[index] = a k.SetDataAfterCoolOff(ctx, esmDataAfterCoolOff) } for i, b := range esmDataAfterCoolOff.DebtAsset { - if b.AssetID == assetInID.Id{ + if b.AssetID == assetInID.Id { b.Amount = b.Amount.Sub(amount.Amount) - esmDataAfterCoolOff.DebtAsset = append(esmDataAfterCoolOff.DebtAsset[:i],esmDataAfterCoolOff.DebtAsset[i+1:]...) + esmDataAfterCoolOff.DebtAsset = append(esmDataAfterCoolOff.DebtAsset[:i], esmDataAfterCoolOff.DebtAsset[i+1:]...) esmDataAfterCoolOff.DebtAsset = append(esmDataAfterCoolOff.DebtAsset, b) k.SetDataAfterCoolOff(ctx, esmDataAfterCoolOff) } diff --git a/x/esm/keeper/klsw.go b/x/esm/keeper/klsw.go index 1c09eccff..d5449bb2f 100644 --- a/x/esm/keeper/klsw.go +++ b/x/esm/keeper/klsw.go @@ -6,7 +6,7 @@ import ( "github.com/comdex-official/comdex/x/esm/types" ) -func (k *Keeper) SetKillSwitchData(ctx sdk.Context, switchParams types.KillSwitchParams) error { +func (k Keeper) SetKillSwitchData(ctx sdk.Context, switchParams types.KillSwitchParams) error { var ( store = ctx.KVStore(k.storeKey) key = types.KillSwitchData(switchParams.AppId) @@ -22,10 +22,10 @@ func (k *Keeper) SetKillSwitchData(ctx sdk.Context, switchParams types.KillSwitc return nil } -func (k *Keeper) GetKillSwitchData(ctx sdk.Context, app_id uint64) (switchParams types.KillSwitchParams, found bool) { +func (k Keeper) GetKillSwitchData(ctx sdk.Context, appID uint64) (switchParams types.KillSwitchParams, found bool) { var ( store = ctx.KVStore(k.storeKey) - key = types.KillSwitchData(app_id) + key = types.KillSwitchData(appID) value = store.Get(key) ) @@ -38,9 +38,30 @@ func (k *Keeper) GetKillSwitchData(ctx sdk.Context, app_id uint64) (switchParams return switchParams, true } -func (k *Keeper) Admin(ctx sdk.Context, from string) bool { - var from_address = []string{"comdex1gvcsuex523fcwuzcpaqys99r70hajf8ffg6322", "comdex1mska4sk59e7t23r2vv3mvzljujxf9j08frl2tg", ""} - for _, addr := range from_address { +func (k Keeper) GetAllKillSwitchData(ctx sdk.Context) (killSwitchParams []types.KillSwitchParams) { + var ( + store = k.Store(ctx) + iter = sdk.KVStorePrefixIterator(store, types.KillSwitchDataKey) + ) + + defer func(iter sdk.Iterator) { + err := iter.Close() + if err != nil { + return + } + }(iter) + + for ; iter.Valid(); iter.Next() { + var esm types.KillSwitchParams + k.cdc.MustUnmarshal(iter.Value(), &esm) + killSwitchParams = append(killSwitchParams, esm) + } + return killSwitchParams +} + +func (k Keeper) Admin(ctx sdk.Context, from string) bool { + var fromAddress = k.AdminParam(ctx) + for _, addr := range fromAddress { if addr == from { return true } diff --git a/x/esm/keeper/msg_server.go b/x/esm/keeper/msg_server.go index 221462904..72f583f9f 100644 --- a/x/esm/keeper/msg_server.go +++ b/x/esm/keeper/msg_server.go @@ -29,6 +29,7 @@ func (m msgServer) DepositESM(goCtx context.Context, deposit *types.MsgDepositES if err := m.keeper.DepositESM(ctx, deposit.Depositor, appID, deposit.Amount); err != nil { return nil, err } + ctx.GasMeter().ConsumeGas(types.DepositESMGas, "DepositESMGas") return &types.MsgDepositESMResponse{}, nil } @@ -40,6 +41,7 @@ func (m msgServer) ExecuteESM(goCtx context.Context, execute *types.MsgExecuteES if err := m.keeper.ExecuteESM(ctx, execute.Depositor, appID); err != nil { return nil, err } + ctx.GasMeter().ConsumeGas(types.ExecuteESMGas, "ExecuteESMGas") return &types.MsgExecuteESMResponse{}, nil } @@ -53,6 +55,7 @@ func (k msgServer) MsgKillSwitch(c context.Context, msg *types.MsgKillRequest) ( if err := k.keeper.SetKillSwitchData(ctx, *msg.KillSwitchParams); err != nil { return nil, err } + ctx.GasMeter().ConsumeGas(types.MsgKillSwitchGas, "MsgKillSwitchGas") return &types.MsgKillResponse{}, nil } @@ -65,7 +68,7 @@ func (k msgServer) MsgCollateralRedemption(c context.Context, req *types.MsgColl status = esmStatus.Status } - if ctx.BlockTime().Before(esmStatus.EndTime) || status { + if ctx.BlockTime().Before(esmStatus.EndTime) && status { return nil, types.ErrCoolOffPeriodRemains } if ctx.BlockTime().After(esmStatus.EndTime) && status { @@ -86,5 +89,7 @@ func (k msgServer) MsgCollateralRedemption(c context.Context, req *types.MsgColl } } + ctx.GasMeter().ConsumeGas(types.MsgCollateralRedemptionGas, "MsgCollateralRedemptionGas") + return nil, nil } diff --git a/x/esm/keeper/params.go b/x/esm/keeper/params.go index 9cdf5c975..0da7100ac 100644 --- a/x/esm/keeper/params.go +++ b/x/esm/keeper/params.go @@ -7,10 +7,17 @@ import ( // GetParams get all parameters as types.Params func (k Keeper) GetParams(ctx sdk.Context) types.Params { - return types.NewParams() + return types.NewParams( + k.AdminParam(ctx), + ) } // SetParams set the params func (k Keeper) SetParams(ctx sdk.Context, params types.Params) { k.paramstore.SetParamSet(ctx, ¶ms) } + +func (k Keeper) AdminParam(ctx sdk.Context) (s []string) { + k.paramstore.Get(ctx, types.KeyAdmin, &s) + return +} diff --git a/x/esm/module.go b/x/esm/module.go index 31015f68e..18d0d95ac 100644 --- a/x/esm/module.go +++ b/x/esm/module.go @@ -59,7 +59,7 @@ func (a AppModuleBasic) RegisterInterfaces(reg cdctypes.InterfaceRegistry) { // DefaultGenesis returns the capability module's default genesis state. func (AppModuleBasic) DefaultGenesis(cdc codec.JSONCodec) json.RawMessage { - return cdc.MustMarshalJSON(types.DefaultGenesis()) + return cdc.MustMarshalJSON(types.DefaultGenesisState()) } // ValidateGenesis performs genesis state validation for the capability module. @@ -152,7 +152,7 @@ func (am AppModule) InitGenesis(ctx sdk.Context, cdc codec.JSONCodec, gs json.Ra // Initialize global index to index in genesis state cdc.MustUnmarshalJSON(gs, &genState) - InitGenesis(ctx, am.keeper, genState) + InitGenesis(ctx, am.keeper, &genState) return []abci.ValidatorUpdate{} } diff --git a/x/esm/types/genesis.go b/x/esm/types/genesis.go index 8df94bae2..5aef57546 100644 --- a/x/esm/types/genesis.go +++ b/x/esm/types/genesis.go @@ -1,24 +1,35 @@ package types -import ( -// this line is used by starport scaffolding # genesis/types/import -) - -// DefaultIndex is the default capability global index -const DefaultIndex uint64 = 1 - -// DefaultGenesis returns the default Capability genesis state -func DefaultGenesis() *GenesisState { +func NewGenesisState(eSMTriggerParams []ESMTriggerParams, currentDepositStats []CurrentDepositStats, eSMStatus []ESMStatus, killSwitchParams []KillSwitchParams, usersDepositMapping []UsersDepositMapping, eSMMarketPrice []ESMMarketPrice, dataAfterCoolOff []DataAfterCoolOff, assetToAmountValue []AssetToAmountValue, appToAmountValue []AppToAmountValue, params Params) *GenesisState { return &GenesisState{ - // this line is used by starport scaffolding # genesis/types/default - Params: DefaultParams(), + ESMTriggerParams: eSMTriggerParams, + CurrentDepositStats: currentDepositStats, + ESMStatus: eSMStatus, + KillSwitchParams: killSwitchParams, + UsersDepositMapping: usersDepositMapping, + ESMMarketPrice: eSMMarketPrice, + DataAfterCoolOff: dataAfterCoolOff, + AssetToAmountValue: assetToAmountValue, + AppToAmountValue: appToAmountValue, + Params: params, } } -// Validate performs basic genesis state validation returning an error upon any -// failure. -func (gs GenesisState) Validate() error { - // this line is used by starport scaffolding # genesis/types/validate +func DefaultGenesisState() *GenesisState { + return NewGenesisState( + []ESMTriggerParams{}, + []CurrentDepositStats{}, + []ESMStatus{}, + []KillSwitchParams{}, + []UsersDepositMapping{}, + []ESMMarketPrice{}, + []DataAfterCoolOff{}, + []AssetToAmountValue{}, + []AppToAmountValue{}, + DefaultParams(), + ) +} - return gs.Params.Validate() +func (m *GenesisState) Validate() error { + return nil } diff --git a/x/esm/types/genesis.pb.go b/x/esm/types/genesis.pb.go index 5a1ca891d..644e6fab1 100644 --- a/x/esm/types/genesis.pb.go +++ b/x/esm/types/genesis.pb.go @@ -24,7 +24,16 @@ var _ = math.Inf const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package type GenesisState struct { - Params Params `protobuf:"bytes,1,opt,name=params,proto3" json:"params"` + ESMTriggerParams []ESMTriggerParams `protobuf:"bytes,1,rep,name=eSMTriggerParams,proto3" json:"eSMTriggerParams" yaml:"eSMTriggerParams"` + CurrentDepositStats []CurrentDepositStats `protobuf:"bytes,2,rep,name=currentDepositStats,proto3" json:"currentDepositStats" yaml:"currentDepositStats"` + ESMStatus []ESMStatus `protobuf:"bytes,3,rep,name=eSMStatus,proto3" json:"eSMStatus" yaml:"eSMStatus"` + KillSwitchParams []KillSwitchParams `protobuf:"bytes,4,rep,name=killSwitchParams,proto3" json:"killSwitchParams" yaml:"killSwitchParams"` + UsersDepositMapping []UsersDepositMapping `protobuf:"bytes,5,rep,name=usersDepositMapping,proto3" json:"usersDepositMapping" yaml:"usersDepositMapping"` + ESMMarketPrice []ESMMarketPrice `protobuf:"bytes,6,rep,name=eSMMarketPrice,proto3" json:"eSMMarketPrice" yaml:"eSMMarketPrice"` + DataAfterCoolOff []DataAfterCoolOff `protobuf:"bytes,7,rep,name=dataAfterCoolOff,proto3" json:"dataAfterCoolOff" yaml:"dataAfterCoolOff"` + AssetToAmountValue []AssetToAmountValue `protobuf:"bytes,8,rep,name=assetToAmountValue,proto3" json:"assetToAmountValue" yaml:"assetToAmountValue"` + AppToAmountValue []AppToAmountValue `protobuf:"bytes,9,rep,name=appToAmountValue,proto3" json:"appToAmountValue" yaml:"appToAmountValue"` + Params Params `protobuf:"bytes,10,opt,name=params,proto3" json:"params"` } func (m *GenesisState) Reset() { *m = GenesisState{} } @@ -60,6 +69,69 @@ func (m *GenesisState) XXX_DiscardUnknown() { var xxx_messageInfo_GenesisState proto.InternalMessageInfo +func (m *GenesisState) GetESMTriggerParams() []ESMTriggerParams { + if m != nil { + return m.ESMTriggerParams + } + return nil +} + +func (m *GenesisState) GetCurrentDepositStats() []CurrentDepositStats { + if m != nil { + return m.CurrentDepositStats + } + return nil +} + +func (m *GenesisState) GetESMStatus() []ESMStatus { + if m != nil { + return m.ESMStatus + } + return nil +} + +func (m *GenesisState) GetKillSwitchParams() []KillSwitchParams { + if m != nil { + return m.KillSwitchParams + } + return nil +} + +func (m *GenesisState) GetUsersDepositMapping() []UsersDepositMapping { + if m != nil { + return m.UsersDepositMapping + } + return nil +} + +func (m *GenesisState) GetESMMarketPrice() []ESMMarketPrice { + if m != nil { + return m.ESMMarketPrice + } + return nil +} + +func (m *GenesisState) GetDataAfterCoolOff() []DataAfterCoolOff { + if m != nil { + return m.DataAfterCoolOff + } + return nil +} + +func (m *GenesisState) GetAssetToAmountValue() []AssetToAmountValue { + if m != nil { + return m.AssetToAmountValue + } + return nil +} + +func (m *GenesisState) GetAppToAmountValue() []AppToAmountValue { + if m != nil { + return m.AppToAmountValue + } + return nil +} + func (m *GenesisState) GetParams() Params { if m != nil { return m.Params @@ -74,20 +146,40 @@ func init() { func init() { proto.RegisterFile("comdex/esm/v1beta1/genesis.proto", fileDescriptor_f3931030e3b9ea8a) } var fileDescriptor_f3931030e3b9ea8a = []byte{ - // 201 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x52, 0x48, 0xce, 0xcf, 0x4d, - 0x49, 0xad, 0xd0, 0x4f, 0x2d, 0xce, 0xd5, 0x2f, 0x33, 0x4c, 0x4a, 0x2d, 0x49, 0x34, 0xd4, 0x4f, - 0x4f, 0xcd, 0x4b, 0x2d, 0xce, 0x2c, 0xd6, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, 0x82, 0xa8, - 0xd0, 0x4b, 0x2d, 0xce, 0xd5, 0x83, 0xaa, 0x90, 0x12, 0x49, 0xcf, 0x4f, 0xcf, 0x07, 0x4b, 0xeb, - 0x83, 0x58, 0x10, 0x95, 0x52, 0xf2, 0x58, 0xcc, 0x2a, 0x48, 0x2c, 0x4a, 0xcc, 0x85, 0x1a, 0xa5, - 0xe4, 0xc1, 0xc5, 0xe3, 0x0e, 0x31, 0x3b, 0xb8, 0x24, 0xb1, 0x24, 0x55, 0xc8, 0x82, 0x8b, 0x0d, - 0x22, 0x2f, 0xc1, 0xa8, 0xc0, 0xa8, 0xc1, 0x6d, 0x24, 0xa5, 0x87, 0x69, 0x97, 0x5e, 0x00, 0x58, - 0x85, 0x13, 0xcb, 0x89, 0x7b, 0xf2, 0x0c, 0x41, 0x50, 0xf5, 0x4e, 0xee, 0x27, 0x1e, 0xc9, 0x31, - 0x5e, 0x78, 0x24, 0xc7, 0xf8, 0xe0, 0x91, 0x1c, 0xe3, 0x84, 0xc7, 0x72, 0x0c, 0x17, 0x1e, 0xcb, - 0x31, 0xdc, 0x78, 0x2c, 0xc7, 0x10, 0xa5, 0x9b, 0x9e, 0x59, 0x92, 0x51, 0x9a, 0x04, 0x32, 0x49, - 0x1f, 0x62, 0x9a, 0x6e, 0x7e, 0x5a, 0x5a, 0x66, 0x72, 0x66, 0x62, 0x0e, 0x94, 0xaf, 0x0f, 0x71, - 0x61, 0x49, 0x65, 0x41, 0x6a, 0x71, 0x12, 0x1b, 0xd8, 0x65, 0xc6, 0x80, 0x00, 0x00, 0x00, 0xff, - 0xff, 0xa5, 0xf9, 0x58, 0xac, 0x08, 0x01, 0x00, 0x00, + // 517 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x94, 0xc1, 0x6e, 0xd3, 0x30, + 0x18, 0xc7, 0x5b, 0x36, 0xc6, 0x96, 0x21, 0x34, 0x05, 0x10, 0xa1, 0x62, 0x69, 0xb1, 0x10, 0xec, + 0xb2, 0x46, 0x1b, 0x17, 0xc4, 0xad, 0xd9, 0xd0, 0x0e, 0xa8, 0x62, 0x72, 0x37, 0x0e, 0xdc, 0xdc, + 0xec, 0x4b, 0x66, 0x2d, 0xa9, 0x83, 0xed, 0x00, 0x3d, 0xf0, 0x0e, 0x3c, 0xd6, 0x6e, 0xec, 0xc8, + 0x69, 0x42, 0xed, 0x1b, 0xf0, 0x04, 0xc8, 0xb1, 0x35, 0x86, 0xe3, 0xdc, 0x1c, 0x7d, 0x7f, 0xfd, + 0x7e, 0xfe, 0xfe, 0x8a, 0xec, 0x0d, 0x12, 0x56, 0x9c, 0xc1, 0xb7, 0x08, 0x44, 0x11, 0x7d, 0xd9, + 0x9b, 0x82, 0x24, 0x7b, 0x51, 0x06, 0x33, 0x10, 0x54, 0x0c, 0x4b, 0xce, 0x24, 0xf3, 0x7d, 0x9d, + 0x18, 0x82, 0x28, 0x86, 0x26, 0xd1, 0x7b, 0x94, 0xb1, 0x8c, 0xd5, 0xe3, 0x48, 0x9d, 0x74, 0xb2, + 0xd7, 0x77, 0xb0, 0x4a, 0xc2, 0x49, 0x61, 0x50, 0xbd, 0x67, 0x8e, 0x80, 0xc2, 0xd6, 0x53, 0xf4, + 0x73, 0xdd, 0xbb, 0x7f, 0xa4, 0xd5, 0x13, 0x49, 0x24, 0xf8, 0x9f, 0xbd, 0x2d, 0x98, 0x8c, 0x4f, + 0x38, 0xcd, 0x32, 0xe0, 0xc7, 0x35, 0x28, 0xe8, 0x0e, 0x56, 0x76, 0x36, 0xf7, 0x5f, 0x0c, 0x9b, + 0x97, 0x1a, 0xbe, 0xb3, 0xb2, 0x71, 0xff, 0xf2, 0xba, 0xdf, 0xf9, 0x73, 0xdd, 0x7f, 0x32, 0x27, + 0x45, 0xfe, 0x16, 0xd9, 0x2c, 0x84, 0x1b, 0x78, 0xff, 0xbb, 0xf7, 0x30, 0xa9, 0x38, 0x87, 0x99, + 0x3c, 0x84, 0x92, 0x09, 0x2a, 0xd5, 0x4d, 0x44, 0x70, 0xa7, 0xb6, 0xbe, 0x72, 0x59, 0x0f, 0x9a, + 0xf1, 0x18, 0x19, 0x71, 0x4f, 0x8b, 0x1d, 0x44, 0x84, 0x5d, 0x1e, 0xff, 0xd4, 0xdb, 0x80, 0xc9, + 0x58, 0x9d, 0x2b, 0x11, 0xac, 0xd4, 0xd2, 0xed, 0x96, 0x55, 0x75, 0x28, 0x0e, 0x8c, 0x6a, 0xeb, + 0x66, 0x47, 0x3d, 0x40, 0xf8, 0x1f, 0x49, 0x15, 0x79, 0x41, 0xf3, 0x7c, 0xf2, 0x95, 0xca, 0xe4, + 0xdc, 0x14, 0xb9, 0xda, 0x5e, 0xe4, 0x7b, 0x2b, 0x6b, 0x17, 0x69, 0xb3, 0x10, 0x6e, 0xe0, 0x55, + 0x91, 0x95, 0x00, 0x2e, 0xcc, 0x7a, 0x63, 0x52, 0x96, 0x74, 0x96, 0x05, 0x77, 0xdb, 0x8b, 0x3c, + 0x6d, 0xc6, 0xed, 0x22, 0x1d, 0x44, 0x84, 0x5d, 0x1e, 0x9f, 0x7a, 0x0f, 0x60, 0x32, 0x1e, 0x13, + 0x7e, 0x01, 0xf2, 0x98, 0xd3, 0x04, 0x82, 0xb5, 0xda, 0x8c, 0x5a, 0xda, 0xbc, 0x95, 0x8c, 0xb7, + 0x8d, 0xf4, 0xf1, 0x4d, 0xa5, 0xb7, 0xa6, 0x08, 0x5b, 0x60, 0x55, 0xee, 0x19, 0x91, 0x64, 0x94, + 0x4a, 0xe0, 0x07, 0x8c, 0xe5, 0x1f, 0xd2, 0x34, 0xb8, 0xd7, 0x5e, 0xee, 0xa1, 0x95, 0xb5, 0xcb, + 0xb5, 0x59, 0x08, 0x37, 0xf0, 0xfe, 0xdc, 0xf3, 0x89, 0x10, 0x20, 0x4f, 0xd8, 0xa8, 0x60, 0xd5, + 0x4c, 0x7e, 0x24, 0x79, 0x05, 0xc1, 0x7a, 0x2d, 0x7d, 0xe9, 0x92, 0x8e, 0x1a, 0xe9, 0xf8, 0xb9, + 0xd1, 0x3e, 0xd5, 0xda, 0x26, 0x0f, 0x61, 0x87, 0x44, 0x6d, 0x4b, 0xca, 0xf2, 0x7f, 0xf1, 0x46, + 0xfb, 0xb6, 0x23, 0x2b, 0x6b, 0x6f, 0x6b, 0xb3, 0x10, 0x6e, 0xe0, 0xfd, 0x37, 0xde, 0x9a, 0x7e, + 0x45, 0x02, 0x6f, 0xd0, 0xdd, 0xd9, 0xdc, 0xef, 0xb9, 0x44, 0xe6, 0x4f, 0x5d, 0x55, 0x78, 0x6c, + 0xf2, 0xf1, 0xd1, 0xe5, 0x22, 0xec, 0x5e, 0x2d, 0xc2, 0xee, 0xef, 0x45, 0xd8, 0xfd, 0xb1, 0x0c, + 0x3b, 0x57, 0xcb, 0xb0, 0xf3, 0x6b, 0x19, 0x76, 0x3e, 0xed, 0x66, 0x54, 0x9e, 0x57, 0x53, 0x45, + 0x8a, 0x34, 0x6d, 0x97, 0xa5, 0x29, 0x4d, 0x28, 0xc9, 0xcd, 0x77, 0xa4, 0x9f, 0x29, 0x39, 0x2f, + 0x41, 0x4c, 0xd7, 0xea, 0x17, 0xea, 0xf5, 0xdf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x15, 0x45, 0x9a, + 0xfe, 0x2e, 0x05, 0x00, 0x00, } func (m *GenesisState) Marshal() (dAtA []byte, err error) { @@ -119,7 +211,133 @@ func (m *GenesisState) MarshalToSizedBuffer(dAtA []byte) (int, error) { i = encodeVarintGenesis(dAtA, i, uint64(size)) } i-- - dAtA[i] = 0xa + dAtA[i] = 0x52 + if len(m.AppToAmountValue) > 0 { + for iNdEx := len(m.AppToAmountValue) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.AppToAmountValue[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x4a + } + } + if len(m.AssetToAmountValue) > 0 { + for iNdEx := len(m.AssetToAmountValue) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.AssetToAmountValue[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x42 + } + } + if len(m.DataAfterCoolOff) > 0 { + for iNdEx := len(m.DataAfterCoolOff) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.DataAfterCoolOff[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x3a + } + } + if len(m.ESMMarketPrice) > 0 { + for iNdEx := len(m.ESMMarketPrice) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.ESMMarketPrice[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x32 + } + } + if len(m.UsersDepositMapping) > 0 { + for iNdEx := len(m.UsersDepositMapping) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.UsersDepositMapping[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x2a + } + } + if len(m.KillSwitchParams) > 0 { + for iNdEx := len(m.KillSwitchParams) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.KillSwitchParams[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + } + } + if len(m.ESMStatus) > 0 { + for iNdEx := len(m.ESMStatus) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.ESMStatus[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + } + if len(m.CurrentDepositStats) > 0 { + for iNdEx := len(m.CurrentDepositStats) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.CurrentDepositStats[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + } + if len(m.ESMTriggerParams) > 0 { + for iNdEx := len(m.ESMTriggerParams) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.ESMTriggerParams[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + } return len(dAtA) - i, nil } @@ -140,6 +358,60 @@ func (m *GenesisState) Size() (n int) { } var l int _ = l + if len(m.ESMTriggerParams) > 0 { + for _, e := range m.ESMTriggerParams { + l = e.Size() + n += 1 + l + sovGenesis(uint64(l)) + } + } + if len(m.CurrentDepositStats) > 0 { + for _, e := range m.CurrentDepositStats { + l = e.Size() + n += 1 + l + sovGenesis(uint64(l)) + } + } + if len(m.ESMStatus) > 0 { + for _, e := range m.ESMStatus { + l = e.Size() + n += 1 + l + sovGenesis(uint64(l)) + } + } + if len(m.KillSwitchParams) > 0 { + for _, e := range m.KillSwitchParams { + l = e.Size() + n += 1 + l + sovGenesis(uint64(l)) + } + } + if len(m.UsersDepositMapping) > 0 { + for _, e := range m.UsersDepositMapping { + l = e.Size() + n += 1 + l + sovGenesis(uint64(l)) + } + } + if len(m.ESMMarketPrice) > 0 { + for _, e := range m.ESMMarketPrice { + l = e.Size() + n += 1 + l + sovGenesis(uint64(l)) + } + } + if len(m.DataAfterCoolOff) > 0 { + for _, e := range m.DataAfterCoolOff { + l = e.Size() + n += 1 + l + sovGenesis(uint64(l)) + } + } + if len(m.AssetToAmountValue) > 0 { + for _, e := range m.AssetToAmountValue { + l = e.Size() + n += 1 + l + sovGenesis(uint64(l)) + } + } + if len(m.AppToAmountValue) > 0 { + for _, e := range m.AppToAmountValue { + l = e.Size() + n += 1 + l + sovGenesis(uint64(l)) + } + } l = m.Params.Size() n += 1 + l + sovGenesis(uint64(l)) return n @@ -181,6 +453,312 @@ func (m *GenesisState) Unmarshal(dAtA []byte) error { } switch fieldNum { case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ESMTriggerParams", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ESMTriggerParams = append(m.ESMTriggerParams, ESMTriggerParams{}) + if err := m.ESMTriggerParams[len(m.ESMTriggerParams)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CurrentDepositStats", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.CurrentDepositStats = append(m.CurrentDepositStats, CurrentDepositStats{}) + if err := m.CurrentDepositStats[len(m.CurrentDepositStats)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ESMStatus", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ESMStatus = append(m.ESMStatus, ESMStatus{}) + if err := m.ESMStatus[len(m.ESMStatus)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field KillSwitchParams", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.KillSwitchParams = append(m.KillSwitchParams, KillSwitchParams{}) + if err := m.KillSwitchParams[len(m.KillSwitchParams)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field UsersDepositMapping", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.UsersDepositMapping = append(m.UsersDepositMapping, UsersDepositMapping{}) + if err := m.UsersDepositMapping[len(m.UsersDepositMapping)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ESMMarketPrice", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ESMMarketPrice = append(m.ESMMarketPrice, ESMMarketPrice{}) + if err := m.ESMMarketPrice[len(m.ESMMarketPrice)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DataAfterCoolOff", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.DataAfterCoolOff = append(m.DataAfterCoolOff, DataAfterCoolOff{}) + if err := m.DataAfterCoolOff[len(m.DataAfterCoolOff)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 8: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AssetToAmountValue", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.AssetToAmountValue = append(m.AssetToAmountValue, AssetToAmountValue{}) + if err := m.AssetToAmountValue[len(m.AssetToAmountValue)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 9: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AppToAmountValue", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.AppToAmountValue = append(m.AppToAmountValue, AppToAmountValue{}) + if err := m.AppToAmountValue[len(m.AppToAmountValue)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 10: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Params", wireType) } diff --git a/x/esm/types/keys.go b/x/esm/types/keys.go index 60b7fd0c4..f10527f0b 100644 --- a/x/esm/types/keys.go +++ b/x/esm/types/keys.go @@ -47,8 +47,8 @@ func ESMStatusKey(id uint64) []byte { return append(ESMStatusPrefix, sdk.Uint64ToBigEndian(id)...) } -func KillSwitchData(appId uint64) []byte { - return append(KillSwitchDataKey, sdk.Uint64ToBigEndian(appId)...) +func KillSwitchData(appID uint64) []byte { + return append(KillSwitchDataKey, sdk.Uint64ToBigEndian(appID)...) } func UserDepositByAppKey(owner string, id uint64) []byte { diff --git a/x/esm/types/params.go b/x/esm/types/params.go index 7a9ebfb7b..17e79e9ca 100644 --- a/x/esm/types/params.go +++ b/x/esm/types/params.go @@ -1,30 +1,68 @@ package types import ( + "fmt" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/types/errors" paramstypes "github.com/cosmos/cosmos-sdk/x/params/types" ) var ( _ paramstypes.ParamSet = (*Params)(nil) + + KeyAdmin = []byte("admin") + DefaultAdmin = []string{"comdex1gvcsuex523fcwuzcpaqys99r70hajf8ffg6322", "comdex1lanra8mnwsxkzjnewtzgrynudxucr7tlfe4xnn"} +) + +const ( + DepositESMGas = sdk.Gas(66329) + ExecuteESMGas = sdk.Gas(53554) + MsgKillSwitchGas = sdk.Gas(76473) + MsgCollateralRedemptionGas = sdk.Gas(87559) ) -func NewParams() Params { - return Params{} +func NewParams(admin []string) Params { + return Params{ + Admin: admin, + } } func DefaultParams() Params { - return NewParams() + return NewParams(DefaultAdmin) } func ParamKeyTable() paramstypes.KeyTable { return paramstypes.NewKeyTable().RegisterParamSet(&Params{}) } -func (m *Params) ParamSetPairs() paramstypes.ParamSetPairs { - return paramstypes.ParamSetPairs{} +func (k Params) ParamSetPairs() paramstypes.ParamSetPairs { + return paramstypes.ParamSetPairs{ + paramstypes.NewParamSetPair( + KeyAdmin, + k.Admin, + validateAdmin, + ), + } +} + +func (k Params) Validate() error { + if len(k.Admin) == 0 { + return fmt.Errorf("admin cannot be empty") + } + for _, addr := range k.Admin { + if _, err := sdk.AccAddressFromBech32(addr); err != nil { + return errors.Wrapf(err, "invalid admin %s", addr) + } + } + + return nil } -func (m *Params) Validate() error { +func validateAdmin(v interface{}) error { + + if v == "" { + return fmt.Errorf("admin cannot be empty") + } return nil } diff --git a/x/esm/types/params.pb.go b/x/esm/types/params.pb.go index cc478f04e..eeee7469d 100644 --- a/x/esm/types/params.pb.go +++ b/x/esm/types/params.pb.go @@ -24,6 +24,7 @@ var _ = math.Inf const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package type Params struct { + Admin []string `protobuf:"bytes,1,rep,name=admin,proto3" json:"admin,omitempty" yaml:"admin"` } func (m *Params) Reset() { *m = Params{} } @@ -59,6 +60,13 @@ func (m *Params) XXX_DiscardUnknown() { var xxx_messageInfo_Params proto.InternalMessageInfo +func (m *Params) GetAdmin() []string { + if m != nil { + return m.Admin + } + return nil +} + func init() { proto.RegisterType((*Params)(nil), "comdex.esm.v1beta1.Params") } @@ -66,17 +74,19 @@ func init() { func init() { proto.RegisterFile("comdex/esm/v1beta1/params.proto", fileDescriptor_83f4c329765fd9ce) } var fileDescriptor_83f4c329765fd9ce = []byte{ - // 154 bytes of a gzipped FileDescriptorProto + // 188 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x4f, 0xce, 0xcf, 0x4d, 0x49, 0xad, 0xd0, 0x4f, 0x2d, 0xce, 0xd5, 0x2f, 0x33, 0x4c, 0x4a, 0x2d, 0x49, 0x34, 0xd4, 0x2f, 0x48, 0x2c, 0x4a, 0xcc, 0x2d, 0xd6, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, 0x82, 0x28, 0xd0, 0x4b, 0x2d, 0xce, 0xd5, 0x83, 0x2a, 0x90, 0x12, 0x49, 0xcf, 0x4f, 0xcf, 0x07, 0x4b, 0xeb, 0x83, - 0x58, 0x10, 0x95, 0x4a, 0x1c, 0x5c, 0x6c, 0x01, 0x60, 0x9d, 0x4e, 0xee, 0x27, 0x1e, 0xc9, 0x31, - 0x5e, 0x78, 0x24, 0xc7, 0xf8, 0xe0, 0x91, 0x1c, 0xe3, 0x84, 0xc7, 0x72, 0x0c, 0x17, 0x1e, 0xcb, - 0x31, 0xdc, 0x78, 0x2c, 0xc7, 0x10, 0xa5, 0x9b, 0x9e, 0x59, 0x92, 0x51, 0x9a, 0xa4, 0x97, 0x9c, - 0x9f, 0xab, 0x0f, 0x31, 0x58, 0x37, 0x3f, 0x2d, 0x2d, 0x33, 0x39, 0x33, 0x31, 0x07, 0xca, 0xd7, - 0x87, 0xb8, 0xa5, 0xa4, 0xb2, 0x20, 0xb5, 0x38, 0x89, 0x0d, 0x6c, 0xb2, 0x31, 0x20, 0x00, 0x00, - 0xff, 0xff, 0x9f, 0x6a, 0xee, 0xb1, 0xa6, 0x00, 0x00, 0x00, + 0x58, 0x10, 0x95, 0x4a, 0x06, 0x5c, 0x6c, 0x01, 0x60, 0x9d, 0x42, 0x6a, 0x5c, 0xac, 0x89, 0x29, + 0xb9, 0x99, 0x79, 0x12, 0x8c, 0x0a, 0xcc, 0x1a, 0x9c, 0x4e, 0x02, 0x9f, 0xee, 0xc9, 0xf3, 0x54, + 0x26, 0xe6, 0xe6, 0x58, 0x29, 0x81, 0x85, 0x95, 0x82, 0x20, 0xd2, 0x4e, 0xee, 0x27, 0x1e, 0xc9, + 0x31, 0x5e, 0x78, 0x24, 0xc7, 0xf8, 0xe0, 0x91, 0x1c, 0xe3, 0x84, 0xc7, 0x72, 0x0c, 0x17, 0x1e, + 0xcb, 0x31, 0xdc, 0x78, 0x2c, 0xc7, 0x10, 0xa5, 0x9b, 0x9e, 0x59, 0x92, 0x51, 0x9a, 0xa4, 0x97, + 0x9c, 0x9f, 0xab, 0x0f, 0x71, 0x80, 0x6e, 0x7e, 0x5a, 0x5a, 0x66, 0x72, 0x66, 0x62, 0x0e, 0x94, + 0xaf, 0x0f, 0x71, 0x73, 0x49, 0x65, 0x41, 0x6a, 0x71, 0x12, 0x1b, 0xd8, 0x05, 0xc6, 0x80, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x95, 0x6f, 0x06, 0x16, 0xce, 0x00, 0x00, 0x00, } func (m *Params) Marshal() (dAtA []byte, err error) { @@ -99,6 +109,15 @@ func (m *Params) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if len(m.Admin) > 0 { + for iNdEx := len(m.Admin) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.Admin[iNdEx]) + copy(dAtA[i:], m.Admin[iNdEx]) + i = encodeVarintParams(dAtA, i, uint64(len(m.Admin[iNdEx]))) + i-- + dAtA[i] = 0xa + } + } return len(dAtA) - i, nil } @@ -119,6 +138,12 @@ func (m *Params) Size() (n int) { } var l int _ = l + if len(m.Admin) > 0 { + for _, s := range m.Admin { + l = len(s) + n += 1 + l + sovParams(uint64(l)) + } + } return n } @@ -157,6 +182,38 @@ func (m *Params) Unmarshal(dAtA []byte) error { return fmt.Errorf("proto: Params: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Admin", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowParams + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthParams + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthParams + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Admin = append(m.Admin, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipParams(dAtA[iNdEx:]) diff --git a/x/esm/types/query.pb.go b/x/esm/types/query.pb.go index fa2e715e9..0bdeb2ac1 100644 --- a/x/esm/types/query.pb.go +++ b/x/esm/types/query.pb.go @@ -470,6 +470,94 @@ func (m *QueryUsersDepositMappingResponse) GetUsersDepositMapping() UsersDeposit return UsersDepositMapping{} } +type QueryDataAfterCoolOffRequest struct { + Id uint64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"` +} + +func (m *QueryDataAfterCoolOffRequest) Reset() { *m = QueryDataAfterCoolOffRequest{} } +func (m *QueryDataAfterCoolOffRequest) String() string { return proto.CompactTextString(m) } +func (*QueryDataAfterCoolOffRequest) ProtoMessage() {} +func (*QueryDataAfterCoolOffRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_ce2498af68083759, []int{10} +} +func (m *QueryDataAfterCoolOffRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryDataAfterCoolOffRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryDataAfterCoolOffRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *QueryDataAfterCoolOffRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryDataAfterCoolOffRequest.Merge(m, src) +} +func (m *QueryDataAfterCoolOffRequest) XXX_Size() int { + return m.Size() +} +func (m *QueryDataAfterCoolOffRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QueryDataAfterCoolOffRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryDataAfterCoolOffRequest proto.InternalMessageInfo + +func (m *QueryDataAfterCoolOffRequest) GetId() uint64 { + if m != nil { + return m.Id + } + return 0 +} + +type QueryDataAfterCoolOffResponse struct { + DataAfterCoolOff DataAfterCoolOff `protobuf:"bytes,1,opt,name=dataAfterCoolOff,proto3" json:"dataAfterCoolOff" yaml:"data_after_cool_off"` +} + +func (m *QueryDataAfterCoolOffResponse) Reset() { *m = QueryDataAfterCoolOffResponse{} } +func (m *QueryDataAfterCoolOffResponse) String() string { return proto.CompactTextString(m) } +func (*QueryDataAfterCoolOffResponse) ProtoMessage() {} +func (*QueryDataAfterCoolOffResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_ce2498af68083759, []int{11} +} +func (m *QueryDataAfterCoolOffResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryDataAfterCoolOffResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryDataAfterCoolOffResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *QueryDataAfterCoolOffResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryDataAfterCoolOffResponse.Merge(m, src) +} +func (m *QueryDataAfterCoolOffResponse) XXX_Size() int { + return m.Size() +} +func (m *QueryDataAfterCoolOffResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryDataAfterCoolOffResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryDataAfterCoolOffResponse proto.InternalMessageInfo + +func (m *QueryDataAfterCoolOffResponse) GetDataAfterCoolOff() DataAfterCoolOff { + if m != nil { + return m.DataAfterCoolOff + } + return DataAfterCoolOff{} +} + func init() { proto.RegisterType((*QueryParamsRequest)(nil), "comdex.esm.v1beta1.QueryParamsRequest") proto.RegisterType((*QueryParamsResponse)(nil), "comdex.esm.v1beta1.QueryParamsResponse") @@ -481,57 +569,65 @@ func init() { proto.RegisterType((*QueryCurrentDepositStatsResponse)(nil), "comdex.esm.v1beta1.QueryCurrentDepositStatsResponse") proto.RegisterType((*QueryUsersDepositMappingRequest)(nil), "comdex.esm.v1beta1.QueryUsersDepositMappingRequest") proto.RegisterType((*QueryUsersDepositMappingResponse)(nil), "comdex.esm.v1beta1.QueryUsersDepositMappingResponse") + proto.RegisterType((*QueryDataAfterCoolOffRequest)(nil), "comdex.esm.v1beta1.QueryDataAfterCoolOffRequest") + proto.RegisterType((*QueryDataAfterCoolOffResponse)(nil), "comdex.esm.v1beta1.QueryDataAfterCoolOffResponse") } func init() { proto.RegisterFile("comdex/esm/v1beta1/query.proto", fileDescriptor_ce2498af68083759) } var fileDescriptor_ce2498af68083759 = []byte{ - // 713 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x95, 0xdf, 0x4e, 0xd4, 0x4c, - 0x18, 0xc6, 0xb7, 0x1b, 0xbe, 0x4d, 0x98, 0x2f, 0x21, 0x38, 0xa0, 0x81, 0xba, 0x74, 0x71, 0x40, - 0x41, 0x08, 0x2d, 0x0b, 0xc6, 0xf8, 0xe7, 0xc8, 0xaa, 0xf1, 0x88, 0xa8, 0x45, 0x3d, 0xf0, 0x84, - 0x74, 0x77, 0x87, 0xda, 0x84, 0x76, 0x4a, 0xa7, 0x6b, 0x24, 0x04, 0x4d, 0xbc, 0x02, 0x13, 0xb9, - 0x02, 0xbd, 0x02, 0x2f, 0xc0, 0x73, 0x0e, 0x49, 0x3c, 0xf1, 0xc0, 0x10, 0x03, 0x5e, 0x01, 0x57, - 0x60, 0x3a, 0xf3, 0xee, 0xae, 0x65, 0x67, 0x56, 0x39, 0x23, 0xfb, 0x3e, 0xf3, 0x3c, 0xbf, 0x77, - 0xd2, 0x67, 0x40, 0x56, 0x93, 0x45, 0x2d, 0xfa, 0xc6, 0xa1, 0x3c, 0x72, 0x5e, 0xd7, 0x1b, 0x34, - 0xf3, 0xeb, 0xce, 0x76, 0x9b, 0xa6, 0x3b, 0x76, 0x92, 0xb2, 0x8c, 0x61, 0x2c, 0xe7, 0x36, 0xe5, - 0x91, 0x0d, 0x73, 0x73, 0x3c, 0x60, 0x01, 0x13, 0x63, 0x27, 0xff, 0x4b, 0x2a, 0xcd, 0x6a, 0xc0, - 0x58, 0xb0, 0x45, 0x1d, 0x3f, 0x09, 0x1d, 0x3f, 0x8e, 0x59, 0xe6, 0x67, 0x21, 0x8b, 0x39, 0x4c, - 0x17, 0x9a, 0x8c, 0x47, 0x8c, 0x3b, 0x0d, 0x9f, 0x53, 0x19, 0xd0, 0x8d, 0x4b, 0xfc, 0x20, 0x8c, - 0x85, 0x18, 0xb4, 0x35, 0x05, 0x53, 0xe2, 0xa7, 0x7e, 0xd4, 0x31, 0xab, 0x2a, 0x04, 0x39, 0xa0, - 0x98, 0x92, 0x71, 0x84, 0x9f, 0xe6, 0x01, 0x4f, 0xc4, 0x11, 0x8f, 0x6e, 0xb7, 0x29, 0xcf, 0xc8, - 0x63, 0x34, 0x56, 0xf8, 0x95, 0x27, 0x2c, 0xe6, 0x14, 0xdf, 0x42, 0x15, 0x69, 0x3d, 0x61, 0x4c, - 0x1b, 0xf3, 0xff, 0xaf, 0x98, 0x76, 0xff, 0xc2, 0xb6, 0x3c, 0xe3, 0x0e, 0x1d, 0x1c, 0xd5, 0x4a, - 0x1e, 0xe8, 0x89, 0x8d, 0xaa, 0xc2, 0xf0, 0xe1, 0xfa, 0xda, 0xb3, 0x34, 0x0c, 0x02, 0x9a, 0x16, - 0x02, 0xf1, 0x08, 0x2a, 0x87, 0x2d, 0xe1, 0x3a, 0xe4, 0x95, 0xc3, 0x16, 0xd9, 0x37, 0xd0, 0x94, - 0xe6, 0x00, 0xb0, 0x70, 0x34, 0x4a, 0x79, 0x54, 0x98, 0x01, 0xd5, 0xac, 0x8a, 0xea, 0xac, 0x8f, - 0x7b, 0x25, 0xe7, 0x3b, 0x3d, 0xaa, 0x4d, 0xee, 0xf8, 0xd1, 0xd6, 0x1d, 0x42, 0x79, 0xb4, 0x91, - 0x49, 0xc1, 0x06, 0x30, 0x7b, 0x7d, 0x01, 0x64, 0x0e, 0x5d, 0xec, 0x50, 0xad, 0x67, 0x7e, 0xd6, - 0xd6, 0xf2, 0x27, 0xe8, 0xd2, 0x59, 0x21, 0x70, 0xbf, 0x40, 0xc3, 0x94, 0x47, 0xf2, 0x47, 0x00, - 0x9e, 0xd2, 0x00, 0x4b, 0x91, 0x3b, 0x09, 0xa4, 0x17, 0x7a, 0xa4, 0x5c, 0x4c, 0x88, 0xd7, 0xb3, - 0x22, 0x75, 0x54, 0x13, 0x89, 0xf7, 0xdb, 0x69, 0x4a, 0xe3, 0xec, 0x01, 0x4d, 0x18, 0x0f, 0xb3, - 0x7c, 0xa8, 0x85, 0xfc, 0x6c, 0xa0, 0x69, 0xfd, 0x19, 0xe0, 0x7d, 0x87, 0xc6, 0x9a, 0xfd, 0x63, - 0x20, 0x9f, 0x53, 0x91, 0x2b, 0xdc, 0xdc, 0x59, 0xd8, 0xa1, 0x2a, 0x77, 0x00, 0xc7, 0x8d, 0x96, - 0xd4, 0x88, 0x7d, 0x38, 0xf1, 0x54, 0x49, 0x84, 0xc2, 0x62, 0xcf, 0x39, 0x4d, 0x39, 0x4c, 0xd6, - 0xfc, 0x24, 0x09, 0xe3, 0x40, 0xb3, 0x18, 0x5e, 0x41, 0xc3, 0xe0, 0xcc, 0xd2, 0x89, 0xf2, 0xb4, - 0x31, 0x3f, 0xec, 0x8e, 0x9f, 0x1e, 0xd5, 0x46, 0x65, 0x78, 0x77, 0x44, 0xbc, 0x9e, 0x8c, 0x7c, - 0xea, 0x5c, 0x86, 0x32, 0x07, 0x2e, 0xe3, 0x2d, 0x1a, 0x6b, 0xf7, 0x8f, 0x07, 0x5d, 0x86, 0xc2, - 0xcd, 0x9d, 0x81, 0xcb, 0xb8, 0x2c, 0x79, 0x72, 0xc7, 0xee, 0x4d, 0x44, 0x52, 0x43, 0x3c, 0x55, - 0xd0, 0xca, 0x8f, 0x0a, 0xfa, 0x4f, 0x40, 0xe2, 0x3d, 0x54, 0x91, 0xdf, 0x24, 0xbe, 0xa6, 0x8a, - 0xed, 0xef, 0xb4, 0x39, 0xf7, 0x57, 0x9d, 0x5c, 0x92, 0x90, 0xf7, 0xdf, 0x7e, 0x7d, 0x2c, 0x57, - 0xb1, 0xe9, 0xc0, 0xcb, 0xf1, 0xc7, 0xab, 0x01, 0x4f, 0x0b, 0xfe, 0x62, 0xf4, 0x9a, 0x50, 0xa8, - 0x08, 0x5e, 0xd6, 0xc6, 0x68, 0xba, 0x6f, 0xd6, 0xcf, 0x71, 0x02, 0x10, 0x57, 0x05, 0xe2, 0x12, - 0x5e, 0x74, 0xd4, 0x8f, 0xdb, 0x99, 0x2a, 0x3b, 0xbb, 0x61, 0x6b, 0x0f, 0xef, 0x1b, 0x68, 0xa4, - 0x58, 0x4a, 0x7c, 0x7d, 0x50, 0x74, 0xa1, 0xe1, 0xe6, 0xc2, 0xbf, 0x48, 0x01, 0x6f, 0x51, 0xe0, - 0x5d, 0xc5, 0x33, 0x3a, 0x3c, 0xd9, 0x5f, 0x89, 0xf5, 0xd5, 0x40, 0x13, 0xba, 0x16, 0xe2, 0x55, - 0x6d, 0xaa, 0xbe, 0xe7, 0xe6, 0x8d, 0xf3, 0x1d, 0x02, 0xe8, 0x9b, 0x02, 0x7a, 0x19, 0xdb, 0x2a, - 0x68, 0x65, 0x61, 0x25, 0xff, 0x41, 0x87, 0x5f, 0xf1, 0xa9, 0x0f, 0xe0, 0xd7, 0xd7, 0x79, 0x00, - 0xff, 0x80, 0x6e, 0x92, 0x7b, 0x82, 0xff, 0x2e, 0xbe, 0xad, 0xe2, 0x57, 0x75, 0x4c, 0xe0, 0x3b, - 0xbb, 0xdd, 0x27, 0x60, 0xcf, 0x7d, 0x74, 0x70, 0x6c, 0x19, 0x87, 0xc7, 0x96, 0xf1, 0xf3, 0xd8, - 0x32, 0x3e, 0x9c, 0x58, 0xa5, 0xc3, 0x13, 0xab, 0xf4, 0xfd, 0xc4, 0x2a, 0xbd, 0x5c, 0x0a, 0xc2, - 0xec, 0x55, 0xbb, 0x91, 0x83, 0x81, 0xfd, 0x12, 0xdb, 0xdc, 0x0c, 0x9b, 0xa1, 0xbf, 0xd5, 0x89, - 0x93, 0x81, 0xd9, 0x4e, 0x42, 0x79, 0xa3, 0x22, 0xfe, 0xb9, 0xae, 0xfe, 0x0e, 0x00, 0x00, 0xff, - 0xff, 0x28, 0x39, 0x98, 0x41, 0x31, 0x08, 0x00, 0x00, + // 806 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x96, 0xc1, 0x4e, 0x1b, 0x47, + 0x18, 0xc7, 0xbd, 0x16, 0x45, 0x65, 0x2a, 0x21, 0x3a, 0xd0, 0x0a, 0xb6, 0xc6, 0xa6, 0x03, 0x2d, + 0x14, 0xca, 0x2e, 0x06, 0x54, 0xb5, 0xcd, 0x89, 0x85, 0x28, 0x27, 0x44, 0xb2, 0x24, 0x39, 0xe4, + 0x62, 0x8d, 0xed, 0xf1, 0x66, 0x25, 0xaf, 0x67, 0xd9, 0x19, 0x47, 0x41, 0x88, 0x44, 0xca, 0x13, + 0x24, 0x0a, 0x79, 0x81, 0xe4, 0x09, 0x92, 0x7b, 0xee, 0x1c, 0x91, 0x72, 0xc9, 0x09, 0x45, 0x90, + 0x27, 0xe0, 0x09, 0xa2, 0x9d, 0x19, 0xdb, 0xb1, 0x3d, 0xb3, 0x09, 0x37, 0xb4, 0xdf, 0x7f, 0xbe, + 0xff, 0xef, 0x1b, 0xe6, 0xfb, 0xcb, 0xa0, 0x58, 0xa3, 0x51, 0x9d, 0x3c, 0x76, 0x09, 0x8b, 0xdc, + 0x47, 0xe5, 0x2a, 0xe1, 0xb8, 0xec, 0x1e, 0xb4, 0x49, 0x72, 0xe8, 0xc4, 0x09, 0xe5, 0x14, 0x42, + 0x59, 0x77, 0x08, 0x8b, 0x1c, 0x55, 0xb7, 0xa7, 0x02, 0x1a, 0x50, 0x51, 0x76, 0xd3, 0xbf, 0xa4, + 0xd2, 0x2e, 0x04, 0x94, 0x06, 0x4d, 0xe2, 0xe2, 0x38, 0x74, 0x71, 0xab, 0x45, 0x39, 0xe6, 0x21, + 0x6d, 0x31, 0x55, 0x5d, 0xae, 0x51, 0x16, 0x51, 0xe6, 0x56, 0x31, 0x23, 0xd2, 0xa0, 0x6b, 0x17, + 0xe3, 0x20, 0x6c, 0x09, 0xb1, 0xd2, 0x96, 0x34, 0x4c, 0x31, 0x4e, 0x70, 0xd4, 0x69, 0x56, 0xd0, + 0x08, 0x52, 0x40, 0x51, 0x45, 0x53, 0x00, 0xde, 0x49, 0x0d, 0x6e, 0x8b, 0x23, 0x3e, 0x39, 0x68, + 0x13, 0xc6, 0xd1, 0x1e, 0x98, 0xec, 0xfb, 0xca, 0x62, 0xda, 0x62, 0x04, 0xfe, 0x0b, 0x46, 0x65, + 0xeb, 0x69, 0x6b, 0xce, 0x5a, 0xfa, 0x69, 0xdd, 0x76, 0x86, 0x07, 0x76, 0xe4, 0x19, 0x6f, 0xe4, + 0xf4, 0xbc, 0x94, 0xf3, 0x95, 0x1e, 0x39, 0xa0, 0x20, 0x1a, 0xde, 0xdc, 0xdf, 0xbd, 0x9b, 0x84, + 0x41, 0x40, 0x92, 0x3e, 0x43, 0x38, 0x0e, 0xf2, 0x61, 0x5d, 0x74, 0x1d, 0xf1, 0xf3, 0x61, 0x1d, + 0x9d, 0x58, 0x60, 0xd6, 0x70, 0x40, 0xb1, 0x30, 0x30, 0x41, 0x58, 0xd4, 0x57, 0x53, 0x54, 0x0b, + 0x3a, 0xaa, 0xc1, 0x3e, 0xde, 0xef, 0x29, 0xdf, 0xd5, 0x79, 0x69, 0xe6, 0x10, 0x47, 0xcd, 0xff, + 0x11, 0x61, 0x51, 0x85, 0x4b, 0x41, 0x45, 0x31, 0xfb, 0x43, 0x06, 0x68, 0x11, 0xfc, 0xd2, 0xa1, + 0xda, 0xe7, 0x98, 0xb7, 0x8d, 0xfc, 0x31, 0xf8, 0x75, 0x50, 0xa8, 0xb8, 0xef, 0x83, 0x31, 0xc2, + 0x22, 0xf9, 0x51, 0x01, 0xcf, 0x1a, 0x80, 0xa5, 0xc8, 0x9b, 0x51, 0xa4, 0x3f, 0xf7, 0x48, 0x99, + 0xa8, 0x20, 0xbf, 0xd7, 0x0a, 0x95, 0x41, 0x49, 0x38, 0x6e, 0xb7, 0x93, 0x84, 0xb4, 0xf8, 0x0e, + 0x89, 0x29, 0x0b, 0x79, 0x5a, 0x34, 0x42, 0xbe, 0xb1, 0xc0, 0x9c, 0xf9, 0x8c, 0xe2, 0x7d, 0x0a, + 0x26, 0x6b, 0xc3, 0x65, 0x45, 0xbe, 0xa8, 0x23, 0xd7, 0x74, 0xf3, 0x16, 0xd4, 0x0c, 0x05, 0x39, + 0x83, 0xea, 0x58, 0xa9, 0x4b, 0x8d, 0x98, 0x87, 0x21, 0x5f, 0xe7, 0x84, 0x88, 0x1a, 0xec, 0x1e, + 0x23, 0x09, 0x53, 0x95, 0x5d, 0x1c, 0xc7, 0x61, 0x2b, 0x30, 0x0c, 0x06, 0xd7, 0xc1, 0x98, 0xea, + 0x4c, 0x93, 0xe9, 0xfc, 0x9c, 0xb5, 0x34, 0xe6, 0x4d, 0x5d, 0x9d, 0x97, 0x26, 0xa4, 0x79, 0xb7, + 0x84, 0xfc, 0x9e, 0x0c, 0xbd, 0xee, 0x5c, 0x86, 0xd6, 0x47, 0x5d, 0xc6, 0x13, 0x30, 0xd9, 0x1e, + 0x2e, 0x67, 0x5d, 0x86, 0xa6, 0x9b, 0x37, 0xaf, 0x2e, 0xe3, 0x37, 0xc9, 0x93, 0x76, 0xec, 0xde, + 0x44, 0x24, 0x35, 0xc8, 0xd7, 0x19, 0x75, 0xd7, 0x68, 0x07, 0x73, 0xbc, 0xd5, 0xe0, 0x24, 0xd9, + 0xa6, 0xb4, 0xb9, 0xd7, 0x68, 0x98, 0xfe, 0xc3, 0xaf, 0x3a, 0x6b, 0x34, 0x7c, 0x40, 0x4d, 0xc4, + 0xc1, 0x44, 0x7d, 0xa0, 0x96, 0xb5, 0x46, 0x83, 0x7d, 0x3c, 0xa4, 0x66, 0xb1, 0xd5, 0xdd, 0x62, + 0x8e, 0x2b, 0x38, 0x15, 0x54, 0x6a, 0x94, 0x36, 0x2b, 0xb4, 0xd1, 0x40, 0xfe, 0x90, 0xc3, 0xfa, + 0x8b, 0x1f, 0xc1, 0x0f, 0x82, 0x0b, 0x1e, 0x83, 0x51, 0xb9, 0x5b, 0xf0, 0x4f, 0x9d, 0xdf, 0x70, + 0x36, 0xd9, 0x8b, 0xdf, 0xd4, 0xc9, 0xd1, 0x10, 0x7a, 0xf6, 0xe1, 0xf3, 0xcb, 0x7c, 0x01, 0xda, + 0xae, 0x4a, 0xc0, 0xaf, 0xd2, 0x4f, 0x45, 0x24, 0x7c, 0x6b, 0xf5, 0x36, 0xba, 0x6f, 0xd5, 0xe1, + 0x9a, 0xd1, 0xc6, 0x90, 0x61, 0x76, 0xf9, 0x1a, 0x27, 0x14, 0xe2, 0x86, 0x40, 0x5c, 0x85, 0x2b, + 0xae, 0x3e, 0xa4, 0x07, 0x22, 0xc9, 0x3d, 0x0a, 0xeb, 0xc7, 0xf0, 0xc4, 0x02, 0xe3, 0xfd, 0xe1, + 0x02, 0xff, 0xca, 0xb2, 0xee, 0x4b, 0x2a, 0x7b, 0xf9, 0x7b, 0xa4, 0x0a, 0x6f, 0x45, 0xe0, 0xfd, + 0x01, 0xe7, 0x4d, 0x78, 0x32, 0x87, 0x24, 0xd6, 0x7b, 0x0b, 0x4c, 0x9b, 0xd2, 0x04, 0x6e, 0x18, + 0x5d, 0xcd, 0x79, 0x65, 0x6f, 0x5e, 0xef, 0x90, 0x82, 0xfe, 0x47, 0x40, 0xaf, 0x41, 0x47, 0x07, + 0xad, 0x0d, 0x1e, 0xc9, 0x7f, 0xda, 0xe1, 0xd7, 0xac, 0x6c, 0x06, 0xbf, 0x39, 0x96, 0x32, 0xf8, + 0x33, 0x32, 0x06, 0x6d, 0x09, 0xfe, 0x1b, 0xf0, 0x3f, 0x1d, 0xbf, 0x2e, 0x2b, 0x04, 0xbe, 0x7b, + 0xd4, 0x8d, 0xb2, 0x63, 0xf8, 0xae, 0xf3, 0xaa, 0x07, 0xd7, 0x35, 0xe3, 0x55, 0x1b, 0x22, 0x25, + 0xe3, 0x55, 0x9b, 0x32, 0x05, 0x6d, 0x8a, 0x09, 0x1c, 0xf8, 0xb7, 0x6e, 0x02, 0x4d, 0x42, 0x88, + 0x01, 0xbc, 0x5b, 0xa7, 0x17, 0x45, 0xeb, 0xec, 0xa2, 0x68, 0x7d, 0xba, 0x28, 0x5a, 0xcf, 0x2f, + 0x8b, 0xb9, 0xb3, 0xcb, 0x62, 0xee, 0xe3, 0x65, 0x31, 0xf7, 0x60, 0x35, 0x08, 0xf9, 0xc3, 0x76, + 0x35, 0x05, 0x51, 0x1d, 0x57, 0x69, 0xa3, 0x11, 0xd6, 0x42, 0xdc, 0xec, 0x38, 0x48, 0x0f, 0x7e, + 0x18, 0x13, 0x56, 0x1d, 0x15, 0xbf, 0x6c, 0x36, 0xbe, 0x04, 0x00, 0x00, 0xff, 0xff, 0xf5, 0xae, + 0x9a, 0x87, 0xae, 0x09, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -551,6 +647,7 @@ type QueryClient interface { QueryESMStatus(ctx context.Context, in *QueryESMStatusRequest, opts ...grpc.CallOption) (*QueryESMStatusResponse, error) QueryCurrentDepositStats(ctx context.Context, in *QueryCurrentDepositStatsRequest, opts ...grpc.CallOption) (*QueryCurrentDepositStatsResponse, error) QueryUsersDepositMapping(ctx context.Context, in *QueryUsersDepositMappingRequest, opts ...grpc.CallOption) (*QueryUsersDepositMappingResponse, error) + QueryDataAfterCoolOff(ctx context.Context, in *QueryDataAfterCoolOffRequest, opts ...grpc.CallOption) (*QueryDataAfterCoolOffResponse, error) } type queryClient struct { @@ -606,6 +703,15 @@ func (c *queryClient) QueryUsersDepositMapping(ctx context.Context, in *QueryUse return out, nil } +func (c *queryClient) QueryDataAfterCoolOff(ctx context.Context, in *QueryDataAfterCoolOffRequest, opts ...grpc.CallOption) (*QueryDataAfterCoolOffResponse, error) { + out := new(QueryDataAfterCoolOffResponse) + err := c.cc.Invoke(ctx, "/comdex.esm.v1beta1.Query/QueryDataAfterCoolOff", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // QueryServer is the server API for Query service. type QueryServer interface { Params(context.Context, *QueryParamsRequest) (*QueryParamsResponse, error) @@ -613,6 +719,7 @@ type QueryServer interface { QueryESMStatus(context.Context, *QueryESMStatusRequest) (*QueryESMStatusResponse, error) QueryCurrentDepositStats(context.Context, *QueryCurrentDepositStatsRequest) (*QueryCurrentDepositStatsResponse, error) QueryUsersDepositMapping(context.Context, *QueryUsersDepositMappingRequest) (*QueryUsersDepositMappingResponse, error) + QueryDataAfterCoolOff(context.Context, *QueryDataAfterCoolOffRequest) (*QueryDataAfterCoolOffResponse, error) } // UnimplementedQueryServer can be embedded to have forward compatible implementations. @@ -634,6 +741,9 @@ func (*UnimplementedQueryServer) QueryCurrentDepositStats(ctx context.Context, r func (*UnimplementedQueryServer) QueryUsersDepositMapping(ctx context.Context, req *QueryUsersDepositMappingRequest) (*QueryUsersDepositMappingResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method QueryUsersDepositMapping not implemented") } +func (*UnimplementedQueryServer) QueryDataAfterCoolOff(ctx context.Context, req *QueryDataAfterCoolOffRequest) (*QueryDataAfterCoolOffResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method QueryDataAfterCoolOff not implemented") +} func RegisterQueryServer(s grpc1.Server, srv QueryServer) { s.RegisterService(&_Query_serviceDesc, srv) @@ -729,6 +839,24 @@ func _Query_QueryUsersDepositMapping_Handler(srv interface{}, ctx context.Contex return interceptor(ctx, in, info, handler) } +func _Query_QueryDataAfterCoolOff_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryDataAfterCoolOffRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).QueryDataAfterCoolOff(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/comdex.esm.v1beta1.Query/QueryDataAfterCoolOff", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).QueryDataAfterCoolOff(ctx, req.(*QueryDataAfterCoolOffRequest)) + } + return interceptor(ctx, in, info, handler) +} + var _Query_serviceDesc = grpc.ServiceDesc{ ServiceName: "comdex.esm.v1beta1.Query", HandlerType: (*QueryServer)(nil), @@ -753,6 +881,10 @@ var _Query_serviceDesc = grpc.ServiceDesc{ MethodName: "QueryUsersDepositMapping", Handler: _Query_QueryUsersDepositMapping_Handler, }, + { + MethodName: "QueryDataAfterCoolOff", + Handler: _Query_QueryDataAfterCoolOff_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "comdex/esm/v1beta1/query.proto", @@ -1065,6 +1197,67 @@ func (m *QueryUsersDepositMappingResponse) MarshalToSizedBuffer(dAtA []byte) (in return len(dAtA) - i, nil } +func (m *QueryDataAfterCoolOffRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryDataAfterCoolOffRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryDataAfterCoolOffRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.Id != 0 { + i = encodeVarintQuery(dAtA, i, uint64(m.Id)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func (m *QueryDataAfterCoolOffResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryDataAfterCoolOffResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryDataAfterCoolOffResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size, err := m.DataAfterCoolOff.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + func encodeVarintQuery(dAtA []byte, offset int, v uint64) int { offset -= sovQuery(v) base := offset @@ -1192,6 +1385,29 @@ func (m *QueryUsersDepositMappingResponse) Size() (n int) { return n } +func (m *QueryDataAfterCoolOffRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Id != 0 { + n += 1 + sovQuery(uint64(m.Id)) + } + return n +} + +func (m *QueryDataAfterCoolOffResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.DataAfterCoolOff.Size() + n += 1 + l + sovQuery(uint64(l)) + return n +} + func sovQuery(x uint64) (n int) { return (math_bits.Len64(x|1) + 6) / 7 } @@ -1971,6 +2187,158 @@ func (m *QueryUsersDepositMappingResponse) Unmarshal(dAtA []byte) error { } return nil } +func (m *QueryDataAfterCoolOffRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryDataAfterCoolOffRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryDataAfterCoolOffRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) + } + m.Id = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Id |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryDataAfterCoolOffResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryDataAfterCoolOffResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryDataAfterCoolOffResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DataAfterCoolOff", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.DataAfterCoolOff.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func skipQuery(dAtA []byte) (n int, err error) { l := len(dAtA) iNdEx := 0 diff --git a/x/esm/types/query.pb.gw.go b/x/esm/types/query.pb.gw.go index c8578f6ca..efc318ed1 100644 --- a/x/esm/types/query.pb.gw.go +++ b/x/esm/types/query.pb.gw.go @@ -289,6 +289,60 @@ func local_request_Query_QueryUsersDepositMapping_0(ctx context.Context, marshal } +func request_Query_QueryDataAfterCoolOff_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryDataAfterCoolOffRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") + } + + protoReq.Id, err = runtime.Uint64(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err) + } + + msg, err := client.QueryDataAfterCoolOff(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Query_QueryDataAfterCoolOff_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryDataAfterCoolOffRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") + } + + protoReq.Id, err = runtime.Uint64(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err) + } + + msg, err := server.QueryDataAfterCoolOff(ctx, &protoReq) + return msg, metadata, err + +} + // RegisterQueryHandlerServer registers the http handlers for service Query to "mux". // UnaryRPC :call QueryServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. @@ -410,6 +464,29 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv }) + mux.Handle("GET", pattern_Query_QueryDataAfterCoolOff_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_Query_QueryDataAfterCoolOff_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_QueryDataAfterCoolOff_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + return nil } @@ -551,6 +628,26 @@ func RegisterQueryHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie }) + mux.Handle("GET", pattern_Query_QueryDataAfterCoolOff_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_Query_QueryDataAfterCoolOff_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_QueryDataAfterCoolOff_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + return nil } @@ -564,6 +661,8 @@ var ( pattern_Query_QueryCurrentDepositStats_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"comdex", "esm", "v1beta1", "current_deposit_stats", "id"}, "", runtime.AssumeColonVerbOpt(false))) pattern_Query_QueryUsersDepositMapping_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5}, []string{"comdex", "esm", "v1beta1", "user_deposit_mapping", "id", "depositor"}, "", runtime.AssumeColonVerbOpt(false))) + + pattern_Query_QueryDataAfterCoolOff_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"comdex", "esm", "v1beta1", "data_after_cool_off", "id"}, "", runtime.AssumeColonVerbOpt(false))) ) var ( @@ -576,4 +675,6 @@ var ( forward_Query_QueryCurrentDepositStats_0 = runtime.ForwardResponseMessage forward_Query_QueryUsersDepositMapping_0 = runtime.ForwardResponseMessage + + forward_Query_QueryDataAfterCoolOff_0 = runtime.ForwardResponseMessage ) diff --git a/x/lend/abci.go b/x/lend/abci.go index b320fd082..afed62cb8 100644 --- a/x/lend/abci.go +++ b/x/lend/abci.go @@ -1,26 +1,35 @@ package lend import ( + utils "github.com/comdex-official/comdex/types" "github.com/comdex-official/comdex/x/lend/keeper" + "github.com/comdex-official/comdex/x/lend/types" + "github.com/cosmos/cosmos-sdk/telemetry" sdk "github.com/cosmos/cosmos-sdk/types" abci "github.com/tendermint/tendermint/abci/types" ) func BeginBlocker(ctx sdk.Context, _ abci.RequestBeginBlock, k keeper.Keeper) { - err := k.IterateLends(ctx) - if err != nil { - return - } - err = k.IterateBorrows(ctx) - if err != nil { - return - } - err = k.RebalanceStableRates(ctx) - if err != nil { - return - } - err = k.SetLastInterestTime(ctx, ctx.BlockTime().Unix()) - if err != nil { - return - } + + defer telemetry.ModuleMeasureSince(types.ModuleName, ctx.BlockTime(), telemetry.MetricKeyBeginBlocker) + + _ = utils.ApplyFuncIfNoError(ctx, func(ctx sdk.Context) error { + err := k.IterateLends(ctx) + if err != nil { + ctx.Logger().Error("error in Iterate Lends") + } + err = k.IterateBorrows(ctx) + if err != nil { + ctx.Logger().Error("error in Iterate Borrows") + } + err = k.ReBalanceStableRates(ctx) + if err != nil { + ctx.Logger().Error("error in ReBalance Stable Rates") + } + err = k.SetLastInterestTime(ctx, ctx.BlockTime().Unix()) + if err != nil { + ctx.Logger().Error("error in SetLastInterestTime") + } + return nil + }) } diff --git a/x/lend/client/cli/flags.go b/x/lend/client/cli/flags.go index 4a428761e..a9715f20a 100644 --- a/x/lend/client/cli/flags.go +++ b/x/lend/client/cli/flags.go @@ -10,20 +10,11 @@ const ( FlagNewLendPairFile = "add-lend-pair-file" FlagAddLendPoolFile = "add-lend-pool-file" FlagAddAssetRatesStatsFile = "add-asset-rates-stats-file" + FlagSetAuctionParamsFile = "add-auction-params-file" ) -func ParseStringFromString(s string, separator string) ([]string, error) { - var parsedStrings []string - for _, s := range strings.Split(s, separator) { - s = strings.TrimSpace(s) - - parsedStrings = append(parsedStrings, s) - } - return parsedStrings, nil -} - func ParseUint64SliceFromString(s string, separator string) ([]uint64, error) { - var parsedInts []uint64 + var parsedInt []uint64 for _, s := range strings.Split(s, separator) { s = strings.TrimSpace(s) @@ -31,9 +22,9 @@ func ParseUint64SliceFromString(s string, separator string) ([]uint64, error) { if err != nil { return []uint64{}, err } - parsedInts = append(parsedInts, parsed) + parsedInt = append(parsedInt, parsed) } - return parsedInts, nil + return parsedInt, nil } func ParseBoolFromString(s uint64) bool { @@ -66,14 +57,22 @@ func FlagSetAddAssetRatesStatsMapping() *flag.FlagSet { return fs } +func FlagSetAuctionParams() *flag.FlagSet { + fs := flag.NewFlagSet("", flag.ContinueOnError) + + fs.String(FlagSetAuctionParamsFile, "", "add auction params json file path") + return fs +} + type addNewLendPairsInputs struct { - AssetIn string `json:"asset_in"` - AssetOut string `json:"asset_out"` - IsInterPool string `json:"is_inter_pool"` - AssetOutPoolID string `json:"asset_out_pool_id"` - Title string - Description string - Deposit string + AssetIn string `json:"asset_in"` + AssetOut string `json:"asset_out"` + IsInterPool string `json:"is_inter_pool"` + AssetOutPoolID string `json:"asset_out_pool_id"` + MinUSDValueLeft string `json:"min_usd_value_left"` + Title string + Description string + Deposit string } type addLendPoolInputs struct { @@ -83,6 +82,8 @@ type addLendPoolInputs struct { SecondBridgedAssetID string `json:"second_bridged_asset_id"` AssetID string `json:"asset_id"` IsBridgedAsset string `json:"is_bridged_asset"` + CPoolName string `json:"c_pool_name"` + ReserveFunds string `json:"reserve_funds"` Title string Description string Deposit string @@ -101,9 +102,24 @@ type addAssetRatesStatsInputs struct { LTV string `json:"ltv"` LiquidationThreshold string `json:"liquidation_threshold"` LiquidationPenalty string `json:"liquidation_penalty"` + LiquidationBonus string `json:"liquidation_bonus"` ReserveFactor string `json:"reserve_factor"` CAssetID string `json:"c_asset_id"` Title string Description string Deposit string } + +type addNewAuctionParamsInputs struct { + AppID string `json:"app_id"` + AuctionDurationSeconds string `json:"auction_duration_seconds"` + Buffer string `json:"buffer"` + Cusp string `json:"cusp"` + Step string `json:"step"` + PriceFunctionType string `json:"price_function_type"` + DutchId string `json:"dutch_id"` + BidDurationSeconds string `json:"bid_duration_seconds"` + Title string + Description string + Deposit string +} diff --git a/x/lend/client/cli/parse.go b/x/lend/client/cli/parse.go index 25666dccc..46c9ae206 100644 --- a/x/lend/client/cli/parse.go +++ b/x/lend/client/cli/parse.go @@ -11,6 +11,7 @@ import ( type XAddNewLendPairsInputs addNewLendPairsInputs type XAddLendPoolInputs addLendPoolInputs type XAddAssetRatesStatsInputs addAssetRatesStatsInputs +type XSetAuctionParamsInputs addNewAuctionParamsInputs type XAddNewLendPairsInputsExceptions struct { XAddNewLendPairsInputs @@ -26,6 +27,11 @@ type XAddAssetRatesStatsInputsExceptions struct { Other *string // Other won't raise an error } +type XSetAuctionParamsInputsExceptions struct { + XSetAuctionParamsInputs + Other *string // Other won't raise an error +} + // UnmarshalJSON should error if there are fields unexpected. func (release *addNewLendPairsInputs) UnmarshalJSON(data []byte) error { var addNewLendPairsParamsE XAddNewLendPairsInputsExceptions @@ -67,6 +73,20 @@ func (release *addAssetRatesStatsInputs) UnmarshalJSON(data []byte) error { return nil } +// UnmarshalJSON should error if there are fields unexpected. +func (release *addNewAuctionParamsInputs) UnmarshalJSON(data []byte) error { + var setAuctionParamsE XSetAuctionParamsInputsExceptions + dec := json.NewDecoder(bytes.NewReader(data)) + dec.DisallowUnknownFields() // Force + + if err := dec.Decode(&setAuctionParamsE); err != nil { + return err + } + + *release = addNewAuctionParamsInputs(setAuctionParamsE.XSetAuctionParamsInputs) + return nil +} + func parseAddNewLendPairsFlags(fs *pflag.FlagSet) (*addNewLendPairsInputs, error) { addLendPairsParams := &addNewLendPairsInputs{} addLendPairsParamsFile, _ := fs.GetString(FlagNewLendPairFile) @@ -132,3 +152,25 @@ func parseAssetRateStatsFlags(fs *pflag.FlagSet) (*addAssetRatesStatsInputs, err return addAssetRatesStats, nil } + +func parseAuctionPramsFlags(fs *pflag.FlagSet) (*addNewAuctionParamsInputs, error) { + addNewAuctionParams := &addNewAuctionParamsInputs{} + addNewAuctionParamsFile, _ := fs.GetString(FlagSetAuctionParamsFile) + + if addNewAuctionParamsFile == "" { + return nil, fmt.Errorf("must pass in a add auction params json using the --%s flag", FlagSetAuctionParamsFile) + } + + contents, err := ioutil.ReadFile(addNewAuctionParamsFile) //nolint:gosec + if err != nil { + return nil, err + } + + // make exception if unknown field exists + err = addNewAuctionParams.UnmarshalJSON(contents) + if err != nil { + return nil, err + } + + return addNewAuctionParams, nil +} diff --git a/x/lend/client/cli/query.go b/x/lend/client/cli/query.go index 2729a697d..9c1685539 100644 --- a/x/lend/client/cli/query.go +++ b/x/lend/client/cli/query.go @@ -47,6 +47,7 @@ func GetQueryCmd() *cobra.Command { queryReserveDepositStats(), queryBuyBackDepositStats(), queryBorrowStats(), + queryAuctionParams(), ) return cmd @@ -846,3 +847,40 @@ func queryBorrowStats() *cobra.Command { return cmd } + +func queryAuctionParams() *cobra.Command { + cmd := &cobra.Command{ + Use: "auction-params [id]", + Short: "Query auction-params", + Args: cobra.ExactArgs(1), + RunE: func(cmd *cobra.Command, args []string) error { + ctx, err := client.GetClientQueryContext(cmd) + if err != nil { + return err + } + + id, err := strconv.ParseUint(args[0], 10, 64) + if err != nil { + return err + } + + queryClient := types.NewQueryClient(ctx) + + res, err := queryClient.QueryAuctionParams( + context.Background(), + &types.QueryAuctionParamRequest{ + AppId: id, + }, + ) + if err != nil { + return err + } + + return ctx.PrintProto(res) + }, + } + + flags.AddQueryFlagsToCmd(cmd) + + return cmd +} diff --git a/x/lend/client/cli/tx.go b/x/lend/client/cli/tx.go index 5d3f595ef..2ff787b14 100644 --- a/x/lend/client/cli/tx.go +++ b/x/lend/client/cli/tx.go @@ -35,6 +35,7 @@ func GetTxCmd() *cobra.Command { txRepayAsset(), //including functionality of both repaying and closing position txDepositBorrowAsset(), txCloseBorrowAsset(), + txBorrowAssetAlternate(), txFundModuleAccounts(), ) @@ -43,7 +44,7 @@ func GetTxCmd() *cobra.Command { func txLend() *cobra.Command { cmd := &cobra.Command{ - Use: "lend [Asset_Id] [Amount] [Pool_Id] [App_Id]", + Use: "lend [asset-id] [amount] [pool-id] [app-id]", Short: "lend a whitelisted asset", Args: cobra.ExactArgs(4), RunE: func(cmd *cobra.Command, args []string) error { @@ -84,7 +85,7 @@ func txLend() *cobra.Command { func txWithdraw() *cobra.Command { cmd := &cobra.Command{ - Use: "withdraw [lendId] [Amount]", + Use: "withdraw [lend-id] [amount]", Short: "withdraw lent asset", Args: cobra.ExactArgs(2), RunE: func(cmd *cobra.Command, args []string) error { @@ -115,7 +116,7 @@ func txWithdraw() *cobra.Command { func txDeposit() *cobra.Command { cmd := &cobra.Command{ - Use: "deposit [lendId] [Amount]", + Use: "deposit [lend-id] [amount]", Short: "deposit into a lent position", Args: cobra.ExactArgs(2), RunE: func(cmd *cobra.Command, args []string) error { @@ -146,7 +147,7 @@ func txDeposit() *cobra.Command { func txCloseLend() *cobra.Command { cmd := &cobra.Command{ - Use: "close-lend [lendId]", + Use: "close-lend [lend-id]", Short: "close a lent position", Args: cobra.ExactArgs(1), RunE: func(cmd *cobra.Command, args []string) error { @@ -336,6 +337,64 @@ func txCloseBorrowAsset() *cobra.Command { return cmd } +func txBorrowAssetAlternate() *cobra.Command { + cmd := &cobra.Command{ + Use: "borrow-alternate [asset-id] [pool-id] [amount-in] [pair-id] [is-stable-borrow] [amount-out] [app-id]", + Short: "directly borrow from a whitelisted asset", + Args: cobra.ExactArgs(7), + RunE: func(cmd *cobra.Command, args []string) error { + ctx, err := client.GetClientTxContext(cmd) + if err != nil { + return err + } + + assetID, err := strconv.ParseUint(args[0], 10, 64) + if err != nil { + return err + } + + poolID, err := strconv.ParseUint(args[1], 10, 64) + if err != nil { + return err + } + + amountIn, err := sdk.ParseCoinNormalized(args[2]) + if err != nil { + return err + } + + pairID, err := strconv.ParseUint(args[3], 10, 64) + if err != nil { + return err + } + + stableBorrow, err := strconv.ParseUint(args[4], 10, 64) + if err != nil { + return err + } + + isStableBorrow := ParseBoolFromString(stableBorrow) + + amountOut, err := sdk.ParseCoinNormalized(args[5]) + if err != nil { + return err + } + + appId, err := strconv.ParseUint(args[6], 10, 64) + if err != nil { + return err + } + + msg := types.NewMsgBorrowAlternate(ctx.GetFromAddress().String(), assetID, poolID, amountIn, pairID, isStableBorrow, amountOut, appId) + + return tx.GenerateOrBroadcastTxCLI(ctx, cmd.Flags(), msg) + }, + } + + flags.AddTxFlagsToCmd(cmd) + return cmd +} + func txFundModuleAccounts() *cobra.Command { cmd := &cobra.Command{ Use: "fund-module [module-name] [asset_id] [amount]", @@ -404,35 +463,38 @@ func NewCreateNewLendPairs(clientCtx client.Context, txf tx.Factory, fs *flag.Fl return txf, nil, fmt.Errorf("failed to parse add lend pairs : %w", err) } - assetIn, err := ParseUint64SliceFromString(newLendPairs.AssetIn, ",") + assetIn, err := strconv.ParseUint(newLendPairs.AssetIn, 10, 64) if err != nil { return txf, nil, err } - assetOut, err := ParseUint64SliceFromString(newLendPairs.AssetOut, ",") + assetOut, err := strconv.ParseUint(newLendPairs.AssetOut, 10, 64) if err != nil { return txf, nil, err } - isInterPool, err := ParseUint64SliceFromString(newLendPairs.IsInterPool, ",") + isInterPool, err := strconv.ParseUint(newLendPairs.IsInterPool, 10, 64) if err != nil { return txf, nil, err } - assetOutPoolID, err := ParseUint64SliceFromString(newLendPairs.AssetOutPoolID, ",") + assetOutPoolID, err := strconv.ParseUint(newLendPairs.AssetOutPoolID, 10, 64) if err != nil { return txf, nil, err } - var pairs []types.Extended_Pair - for i := range assetIn { - interPool := ParseBoolFromString(isInterPool[i]) - pairs = append(pairs, types.Extended_Pair{ - AssetIn: assetIn[i], - AssetOut: assetOut[i], - IsInterPool: interPool, - AssetOutPoolId: assetOutPoolID[i], - }) + minUSDValueLeft, err := strconv.ParseUint(newLendPairs.MinUSDValueLeft, 10, 64) + if err != nil { + return txf, nil, err + } + + interPool := ParseBoolFromString(isInterPool) + pairs := types.Extended_Pair{ + AssetIn: assetIn, + AssetOut: assetOut, + IsInterPool: interPool, + AssetOutPoolID: assetOutPoolID, + MinUsdValueLeft: minUSDValueLeft, } from := clientCtx.GetFromAddress() @@ -455,72 +517,6 @@ func NewCreateNewLendPairs(clientCtx client.Context, txf tx.Factory, fs *flag.Fl return txf, msg, nil } -func CmdUpdateLendPairProposal() *cobra.Command { - cmd := &cobra.Command{ - Use: "update-lend-pair [len_pair_id]", - Short: "Update a lend asset pair", - Args: cobra.ExactArgs(1), - RunE: func(cmd *cobra.Command, args []string) error { - clientCtx, err := client.GetClientTxContext(cmd) - if err != nil { - return err - } - - id, err := strconv.ParseUint(args[0], 10, 64) - if err != nil { - return err - } - - pair := types.Extended_Pair{ - Id: id, - } - - title, err := cmd.Flags().GetString(cli.FlagTitle) - if err != nil { - return err - } - - description, err := cmd.Flags().GetString(cli.FlagDescription) - if err != nil { - return err - } - - from := clientCtx.GetFromAddress() - - depositStr, err := cmd.Flags().GetString(cli.FlagDeposit) - if err != nil { - return err - } - deposit, err := sdk.ParseCoinsNormalized(depositStr) - if err != nil { - return err - } - - content := types.NewUpdateLendPairProposal(title, description, pair) - - msg, err := govtypes.NewMsgSubmitProposal(content, deposit, from) - if err != nil { - return err - } - - if err = msg.ValidateBasic(); err != nil { - return err - } - - return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) - }, - } - - cmd.Flags().String(cli.FlagTitle, "", "title of proposal") - cmd.Flags().String(cli.FlagDescription, "", "description of proposal") - cmd.Flags().String(cli.FlagDeposit, "", "deposit of proposal") - - _ = cmd.MarkFlagRequired(cli.FlagTitle) - _ = cmd.MarkFlagRequired(cli.FlagDescription) - - return cmd -} - func CmdAddPoolProposal() *cobra.Command { cmd := &cobra.Command{ Use: "add-lend-pool [flag] ", @@ -555,6 +551,7 @@ func NewCreateLendPool(clientCtx client.Context, txf tx.Factory, fs *flag.FlagSe } moduleName := newLendPool.ModuleName + cPoolName := newLendPool.CPoolName mainAssetID, err := strconv.ParseUint(newLendPool.MainAssetID, 10, 64) if err != nil { @@ -571,6 +568,11 @@ func NewCreateLendPool(clientCtx client.Context, txf tx.Factory, fs *flag.FlagSe return txf, nil, err } + reserveFunds, err := strconv.ParseUint(newLendPool.ReserveFunds, 10, 64) + if err != nil { + return txf, nil, err + } + assetID, err := ParseUint64SliceFromString(newLendPool.AssetID, ",") if err != nil { return txf, nil, err @@ -586,15 +588,17 @@ func NewCreateLendPool(clientCtx client.Context, txf tx.Factory, fs *flag.FlagSe for i := range assetID { bridged := ParseBoolFromString(isBridgedAsset[i]) assetData = append(assetData, types.AssetDataPoolMapping{ - AssetId: assetID[i], + AssetID: assetID[i], IsBridged: bridged, }) } pool = types.Pool{ ModuleName: moduleName, MainAssetId: mainAssetID, - FirstBridgedAssetId: firstBridgedAssetID, - SecondBridgedAssetId: secondBridgedAssetID, + FirstBridgedAssetID: firstBridgedAssetID, + SecondBridgedAssetID: secondBridgedAssetID, + CPoolName: cPoolName, + ReserveFunds: reserveFunds, AssetData: assetData, } @@ -647,9 +651,9 @@ func CmdAddAssetToPairProposal() *cobra.Command { pairIDs = append(pairIDs, rawPairID[i]) } assetToPairMapping := types.AssetToPairMapping{ - AssetId: assetID, - PoolId: poolID, - PairId: pairIDs, + AssetID: assetID, + PoolID: poolID, + PairID: pairIDs, } title, err := cmd.Flags().GetString(cli.FlagTitle) @@ -730,106 +734,177 @@ func NewCreateAssetRatesStats(clientCtx client.Context, txf tx.Factory, fs *flag return txf, nil, fmt.Errorf("failed to parse asset rates stats : %w", err) } - assetID, err := ParseUint64SliceFromString(assetRatesStatsInput.AssetID, ",") + assetID, err := strconv.ParseUint(assetRatesStatsInput.AssetID, 10, 64) if err != nil { return txf, nil, err } - uOptimal, err := ParseStringFromString(assetRatesStatsInput.UOptimal, ",") + uOptimal := assetRatesStatsInput.UOptimal + + base := assetRatesStatsInput.Base + + slope1 := assetRatesStatsInput.Slope1 + + slope2 := assetRatesStatsInput.Slope2 + + enableStableBorrow, err := strconv.ParseUint(assetRatesStatsInput.EnableStableBorrow, 10, 64) if err != nil { return txf, nil, err } - base, err := ParseStringFromString(assetRatesStatsInput.Base, ",") + stableBase := assetRatesStatsInput.StableBase + + stableSlope1 := assetRatesStatsInput.StableSlope1 + + stableSlope2 := assetRatesStatsInput.StableSlope2 + + ltv := assetRatesStatsInput.LTV + + liquidationThreshold := assetRatesStatsInput.LiquidationThreshold + + liquidationPenalty := assetRatesStatsInput.LiquidationPenalty + + liquidationBonus := assetRatesStatsInput.LiquidationPenalty + + reserveFactor := assetRatesStatsInput.ReserveFactor + + cAssetID, err := strconv.ParseUint(assetRatesStatsInput.CAssetID, 10, 64) if err != nil { return txf, nil, err } - slope1, err := ParseStringFromString(assetRatesStatsInput.Slope1, ",") - if err != nil { - return txf, nil, err + + newUOptimal, _ := sdk.NewDecFromStr(uOptimal) + newBase, _ := sdk.NewDecFromStr(base) + newSlope1, _ := sdk.NewDecFromStr(slope1) + newSlope2, _ := sdk.NewDecFromStr(slope2) + newEnableStableBorrow := ParseBoolFromString(enableStableBorrow) + newStableBase, _ := sdk.NewDecFromStr(stableBase) + newStableSlope1, _ := sdk.NewDecFromStr(stableSlope1) + newStableSlope2, _ := sdk.NewDecFromStr(stableSlope2) + newLTV, _ := sdk.NewDecFromStr(ltv) + newLiquidationThreshold, _ := sdk.NewDecFromStr(liquidationThreshold) + newLiquidationPenalty, _ := sdk.NewDecFromStr(liquidationPenalty) + newLiquidationBonus, _ := sdk.NewDecFromStr(liquidationBonus) + newReserveFactor, _ := sdk.NewDecFromStr(reserveFactor) + + assetRatesStats := types.AssetRatesStats{ + AssetID: assetID, + UOptimal: newUOptimal, + Base: newBase, + Slope1: newSlope1, + Slope2: newSlope2, + EnableStableBorrow: newEnableStableBorrow, + StableBase: newStableBase, + StableSlope1: newStableSlope1, + StableSlope2: newStableSlope2, + Ltv: newLTV, + LiquidationThreshold: newLiquidationThreshold, + LiquidationPenalty: newLiquidationPenalty, + LiquidationBonus: newLiquidationBonus, + ReserveFactor: newReserveFactor, + CAssetID: cAssetID, } - slope2, err := ParseStringFromString(assetRatesStatsInput.Slope2, ",") + + from := clientCtx.GetFromAddress() + + deposit, err := sdk.ParseCoinsNormalized(assetRatesStatsInput.Deposit) if err != nil { return txf, nil, err } - enableStableBorrow, err := ParseUint64SliceFromString(assetRatesStatsInput.EnableStableBorrow, ",") + + content := types.NewAddAssetRatesStats(assetRatesStatsInput.Title, assetRatesStatsInput.Description, assetRatesStats) + + msg, err := govtypes.NewMsgSubmitProposal(content, deposit, from) if err != nil { return txf, nil, err } - stableBase, err := ParseStringFromString(assetRatesStatsInput.StableBase, ",") - if err != nil { + + if err = msg.ValidateBasic(); err != nil { return txf, nil, err } - stableSlope1, err := ParseStringFromString(assetRatesStatsInput.StableSlope1, ",") - if err != nil { - return txf, nil, err + + return txf, msg, nil +} + +func CmdAddNewAuctionParamsProposal() *cobra.Command { + cmd := &cobra.Command{ + Use: "add-auction-params [flags]", + Short: "Add auction params", + Args: cobra.ExactArgs(0), + RunE: func(cmd *cobra.Command, args []string) error { + clientCtx, err := client.GetClientTxContext(cmd) + if err != nil { + return err + } + txf := tx.NewFactoryCLI(clientCtx, cmd.Flags()).WithTxConfig(clientCtx.TxConfig).WithAccountRetriever(clientCtx.AccountRetriever) + + txf, msg, err := NewAddAuctionParams(clientCtx, txf, cmd.Flags()) + if err != nil { + return err + } + + return tx.GenerateOrBroadcastTxWithFactory(clientCtx, txf, msg) + }, } - stableSlope2, err := ParseStringFromString(assetRatesStatsInput.StableSlope2, ",") + + cmd.Flags().AddFlagSet(FlagSetAuctionParams()) + cmd.Flags().String(cli.FlagProposal, "", "Proposal file path (if this path is given, other proposal flags are ignored)") + return cmd +} + +func NewAddAuctionParams(clientCtx client.Context, txf tx.Factory, fs *flag.FlagSet) (tx.Factory, sdk.Msg, error) { + auctionParamsInput, err := parseAuctionPramsFlags(fs) + if err != nil { - return txf, nil, err + return txf, nil, fmt.Errorf("failed to parse auction params : %w", err) } - ltv, err := ParseStringFromString(assetRatesStatsInput.LTV, ",") + + appID, err := strconv.ParseUint(auctionParamsInput.AppID, 10, 64) if err != nil { return txf, nil, err } - liquidationThreshold, err := ParseStringFromString(assetRatesStatsInput.LiquidationThreshold, ",") + + auctionDurationSeconds, err := strconv.ParseUint(auctionParamsInput.AuctionDurationSeconds, 10, 64) if err != nil { return txf, nil, err } - liquidationPenalty, err := ParseStringFromString(assetRatesStatsInput.LiquidationPenalty, ",") + buffer, _ := sdk.NewDecFromStr(auctionParamsInput.Buffer) + + cusp, _ := sdk.NewDecFromStr(auctionParamsInput.Cusp) + + step, _ := sdk.NewIntFromString(auctionParamsInput.Step) + + priceFunctionType, err := strconv.ParseUint(auctionParamsInput.PriceFunctionType, 10, 64) if err != nil { return txf, nil, err } - reserveFactor, err := ParseStringFromString(assetRatesStatsInput.ReserveFactor, ",") + dutchId, err := strconv.ParseUint(auctionParamsInput.DutchId, 10, 64) if err != nil { return txf, nil, err } - cAssetID, err := ParseUint64SliceFromString(assetRatesStatsInput.CAssetID, ",") + bidDurationSeconds, err := strconv.ParseUint(auctionParamsInput.BidDurationSeconds, 10, 64) if err != nil { return txf, nil, err } - var assetRatesStats []types.AssetRatesStats - for i := range assetID { - newUOptimal, _ := sdk.NewDecFromStr(uOptimal[i]) - newBase, _ := sdk.NewDecFromStr(base[i]) - newSlope1, _ := sdk.NewDecFromStr(slope1[i]) - newSlope2, _ := sdk.NewDecFromStr(slope2[i]) - newEnableStableBorrow := ParseBoolFromString(enableStableBorrow[i]) - newStableBase, _ := sdk.NewDecFromStr(stableBase[i]) - newStableSlope1, _ := sdk.NewDecFromStr(stableSlope1[i]) - newStableSlope2, _ := sdk.NewDecFromStr(stableSlope2[i]) - newLTV, _ := sdk.NewDecFromStr(ltv[i]) - newLiquidationThreshold, _ := sdk.NewDecFromStr(liquidationThreshold[i]) - newLiquidationPenalty, _ := sdk.NewDecFromStr(liquidationPenalty[i]) - newReserveFactor, _ := sdk.NewDecFromStr(reserveFactor[i]) - - assetRatesStats = append(assetRatesStats, types.AssetRatesStats{ - AssetId: assetID[i], - UOptimal: newUOptimal, - Base: newBase, - Slope1: newSlope1, - Slope2: newSlope2, - EnableStableBorrow: newEnableStableBorrow, - StableBase: newStableBase, - StableSlope1: newStableSlope1, - StableSlope2: newStableSlope2, - Ltv: newLTV, - LiquidationThreshold: newLiquidationThreshold, - LiquidationPenalty: newLiquidationPenalty, - ReserveFactor: newReserveFactor, - CAssetId: cAssetID[i], - }, - ) + auctionParams := types.AuctionParams{ + AppId: appID, + AuctionDurationSeconds: auctionDurationSeconds, + Buffer: buffer, + Cusp: cusp, + Step: step, + PriceFunctionType: priceFunctionType, + DutchId: dutchId, + BidDurationSeconds: bidDurationSeconds, } from := clientCtx.GetFromAddress() - deposit, err := sdk.ParseCoinsNormalized(assetRatesStatsInput.Deposit) + deposit, err := sdk.ParseCoinsNormalized(auctionParamsInput.Deposit) if err != nil { return txf, nil, err } - content := types.NewAddAssetRatesStats(assetRatesStatsInput.Title, assetRatesStatsInput.Description, assetRatesStats) + content := types.NewAddAuctionParams(auctionParamsInput.Title, auctionParamsInput.Description, auctionParams) msg, err := govtypes.NewMsgSubmitProposal(content, deposit, from) if err != nil { diff --git a/x/lend/client/proposal_handler.go b/x/lend/client/proposal_handler.go index 449c35602..80859f49e 100644 --- a/x/lend/client/proposal_handler.go +++ b/x/lend/client/proposal_handler.go @@ -8,8 +8,8 @@ import ( var ( AddLendPairsHandler = govclient.NewProposalHandler(cli.CmdAddNewLendPairsProposal, rest.AddNewPairsProposalRESTHandler) - UpdateLendPairsHandler = govclient.NewProposalHandler(cli.CmdUpdateLendPairProposal, rest.UpdateNewPairsProposalRESTHandler) AddPoolHandler = govclient.NewProposalHandler(cli.CmdAddPoolProposal, rest.AddPoolProposalRESTHandler) AddAssetToPairHandler = govclient.NewProposalHandler(cli.CmdAddAssetToPairProposal, rest.AddAssetToPairProposalRESTHandler) AddAssetRatesStatsHandler = govclient.NewProposalHandler(cli.CmdAddNewAssetRatesStatsProposal, rest.AddWNewAssetRatesStatsProposalRESTHandler) + AddAuctionParamsHandler = govclient.NewProposalHandler(cli.CmdAddNewAuctionParamsProposal, rest.AddNewAuctionParamsProposalRESTHandler) ) diff --git a/x/lend/client/rest/tx.go b/x/lend/client/rest/tx.go index 5fd31714c..51707de24 100644 --- a/x/lend/client/rest/tx.go +++ b/x/lend/client/rest/tx.go @@ -23,6 +23,7 @@ type UpdateNewPairRequest struct{} type AddPoolRequest struct{} type AddAssetToPairRequest struct{} type AddAssetRatesStatsRequest struct{} +type AddAuctionParamsRequest struct{} func AddNewPairsProposalRESTHandler(clientCtx client.Context) govrest.ProposalRESTHandler { return govrest.ProposalRESTHandler{ @@ -59,6 +60,13 @@ func AddWNewAssetRatesStatsProposalRESTHandler(clientCtx client.Context) govrest } } +func AddNewAuctionParamsProposalRESTHandler(clientCtx client.Context) govrest.ProposalRESTHandler { + return govrest.ProposalRESTHandler{ + SubRoute: "add-auction-params", + Handler: AddAuctionParamsRESTHandler(clientCtx), + } +} + func AddNewPairsRESTHandler(clientCtx client.Context) http.HandlerFunc { return func(w http.ResponseWriter, r *http.Request) { var req AddNewPairsRequest @@ -108,3 +116,13 @@ func AddAssetRatesStatsRESTHandler(clientCtx client.Context) http.HandlerFunc { } } } + +func AddAuctionParamsRESTHandler(clientCtx client.Context) http.HandlerFunc { + return func(w http.ResponseWriter, r *http.Request) { + var req AddAuctionParamsRequest + + if !rest.ReadRESTReq(w, r, clientCtx.LegacyAmino, &req) { + return + } + } +} diff --git a/x/lend/expected/keeper.go b/x/lend/expected/keeper.go index 77bf74235..c712738a2 100644 --- a/x/lend/expected/keeper.go +++ b/x/lend/expected/keeper.go @@ -35,4 +35,5 @@ type BandOracleKeeper interface { type AssetKeeper interface { GetAsset(ctx sdk.Context, id uint64) (assettypes.Asset, bool) + GetApp(ctx sdk.Context, id uint64) (assettypes.AppData, bool) } diff --git a/x/lend/genesis.go b/x/lend/genesis.go index 03945e582..69b5a2053 100644 --- a/x/lend/genesis.go +++ b/x/lend/genesis.go @@ -6,19 +6,106 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" ) -// InitGenesis initializes the capability module's state from a provided genesis. -// state. -func InitGenesis(ctx sdk.Context, k keeper.Keeper, genState types.GenesisState) { - // this line is used by starport scaffolding # genesis/module/init. - k.SetParams(ctx, genState.Params) -} +func InitGenesis(ctx sdk.Context, k keeper.Keeper, state *types.GenesisState) { -// ExportGenesis returns the capability module's exported genesis. -func ExportGenesis(ctx sdk.Context, k keeper.Keeper) *types.GenesisState { - genesis := types.DefaultGenesis() - genesis.Params = k.GetParams(ctx) + k.SetParams(ctx, state.Params) + + for _, item := range state.BorrowAsset { + k.SetBorrow(ctx, item) + } + + for _, item := range state.UserBorrowIdMapping { + k.SetUserBorrows(ctx, item) + } + + for _, item := range state.BorrowIdByOwnerAndPoolMapping { + k.SetBorrowIDByOwnerAndPool(ctx, item) + } + + k.SetBorrows(ctx, state.BorrowMapping) + + for _, item := range state.LendAsset { + k.SetLend(ctx, item) + } + + for _, item := range state.Pool { + k.SetPool(ctx, item) + } + + for _, item := range state.AssetToPairMapping { + k.SetAssetToPair(ctx, item) + } + + for _, item := range state.UserLendIdMapping { + k.SetUserLends(ctx, item) + } + + for _, item := range state.LendIdByOwnerAndPoolMapping { + k.SetLendIDByOwnerAndPool(ctx, item) + } + + for _, item := range state.LendIdToBorrowIdMapping { + k.SetLendIDToBorrowIDMapping(ctx, item) + } - // this line is used by starport scaffolding # genesis/module/export. + for _, item := range state.AssetStats { + k.SetAssetStatsByPoolIDAndAssetID(ctx, item) + } - return genesis + k.SetLends(ctx, state.LendMapping) + + k.SetUserDepositStats(ctx, state.UserDepositStats) + + k.SetReserveDepositStats(ctx, state.ReserveDepositStats) + + k.SetBuyBackDepositStats(ctx, state.BuyBackDepositStats) + + k.SetBorrowStats(ctx, state.BorrowDepositStats) + + for _, item := range state.Extended_Pair { + k.SetLendPair(ctx, item) + } + + for _, item := range state.AssetRatesStats { + k.SetAssetRatesStats(ctx, item) + } + + for _, item := range state.AuctionParams { + err := k.AddAuctionParamsData(ctx, item) + if err != nil { + return + } + } + +} + +func ExportGenesis(ctx sdk.Context, k keeper.Keeper) *types.GenesisState { + borrowMap, _ := k.GetBorrows(ctx) + lends, _ := k.GetLends(ctx) + userDeposit, _ := k.GetUserDepositStats(ctx) + reserveDeposit, _ := k.GetReserveDepositStats(ctx) + buyBackDeposir, _ := k.GetBuyBackDepositStats(ctx) + borrowDeposit, _ := k.GetBorrowStats(ctx) + return types.NewGenesisState( + k.GetAllBorrow(ctx), + k.GetAllUserBorrows(ctx), + k.GetAllBorrowIDByOwnerAndPool(ctx), + borrowMap, + k.GetAllLend(ctx), + k.GetPools(ctx), + k.GetAllAssetToPair(ctx), + k.GetAllUserLends(ctx), + k.GetAllLendIDByOwnerAndPool(ctx), + k.GetAllLendIDToBorrowIDMapping(ctx), + k.GetAllAssetStatsByPoolIDAndAssetID(ctx), + lends, + userDeposit, + reserveDeposit, + buyBackDeposir, + borrowDeposit, + k.GetLendPairs(ctx), + k.GetAllAssetRatesStats(ctx), + k.GetAllAddAuctionParamsData(ctx), + k.GetParams(ctx), + ) } diff --git a/x/lend/handler.go b/x/lend/handler.go index 03ffd5667..11ee1a548 100644 --- a/x/lend/handler.go +++ b/x/lend/handler.go @@ -55,6 +55,10 @@ func NewHandler(k keeper.Keeper) sdk.Handler { res, err := server.Repay(sdk.WrapSDKContext(ctx), msg) return sdk.WrapServiceResult(ctx, res, err) + case *types.MsgBorrowAlternate: + res, err := server.BorrowAlternate(sdk.WrapSDKContext(ctx), msg) + return sdk.WrapServiceResult(ctx, res, err) + case *types.MsgFundModuleAccounts: res, err := server.FundModuleAccounts(sdk.WrapSDKContext(ctx), msg) return sdk.WrapServiceResult(ctx, res, err) @@ -71,14 +75,14 @@ func NewLendHandler(k keeper.Keeper) govtypes.Handler { switch c := content.(type) { case *types.LendPairsProposal: return handleAddWhitelistedPairsProposal(ctx, k, c) - case *types.UpdatePairProposal: - return handleUpdateWhitelistedPairProposal(ctx, k, c) case *types.AddPoolsProposal: return handleAddPoolProposal(ctx, k, c) case *types.AddAssetToPairProposal: return handleAddAssetToPairProposal(ctx, k, c) case *types.AddAssetRatesStats: return handleAddAssetRatesStatsProposal(ctx, k, c) + case *types.AddAuctionParamsProposal: + return HandleAddAuctionParamsProposal(ctx, k, c) default: return errors.Wrapf(types.ErrorUnknownProposalType, "%T", c) @@ -90,10 +94,6 @@ func handleAddWhitelistedPairsProposal(ctx sdk.Context, k keeper.Keeper, p *type return k.HandleAddWhitelistedPairsRecords(ctx, p) } -func handleUpdateWhitelistedPairProposal(ctx sdk.Context, k keeper.Keeper, p *types.UpdatePairProposal) error { - return k.HandleUpdateWhitelistedPairRecords(ctx, p) -} - func handleAddPoolProposal(ctx sdk.Context, k keeper.Keeper, p *types.AddPoolsProposal) error { return k.HandleAddPoolRecords(ctx, p) } @@ -105,3 +105,7 @@ func handleAddAssetToPairProposal(ctx sdk.Context, k keeper.Keeper, p *types.Add func handleAddAssetRatesStatsProposal(ctx sdk.Context, k keeper.Keeper, p *types.AddAssetRatesStats) error { return k.HandleAddAssetRatesStatsRecords(ctx, p) } + +func HandleAddAuctionParamsProposal(ctx sdk.Context, k keeper.Keeper, p *types.AddAuctionParamsProposal) error { + return k.HandleAddAuctionParamsRecords(ctx, p) +} diff --git a/x/lend/keeper/alias.go b/x/lend/keeper/alias.go index 0fdc25737..a8e86d418 100644 --- a/x/lend/keeper/alias.go +++ b/x/lend/keeper/alias.go @@ -2,64 +2,69 @@ package keeper import ( assettypes "github.com/comdex-official/comdex/x/asset/types" + lendtypes "github.com/comdex-official/comdex/x/lend/types" sdk "github.com/cosmos/cosmos-sdk/types" ) -func (k *Keeper) BurnCoin(ctx sdk.Context, name string, coin sdk.Coin) error { +func (k Keeper) BurnCoin(ctx sdk.Context, name string, coin sdk.Coin) error { if coin.IsZero() { - return nil + return lendtypes.BurnCoinValueInLendIsZero } return k.bank.BurnCoins(ctx, name, sdk.NewCoins(coin)) } -func (k *Keeper) MintCoin(ctx sdk.Context, name string, coin sdk.Coin) error { +func (k Keeper) MintCoin(ctx sdk.Context, name string, coin sdk.Coin) error { if coin.IsZero() { - return nil + return lendtypes.MintCoinValueInLendIsZero } return k.bank.MintCoins(ctx, name, sdk.NewCoins(coin)) } -func (k *Keeper) SendCoinFromAccountToModule(ctx sdk.Context, address sdk.AccAddress, name string, coin sdk.Coin) error { +func (k Keeper) SendCoinFromAccountToModule(ctx sdk.Context, address sdk.AccAddress, name string, coin sdk.Coin) error { if coin.IsZero() { - return nil + return lendtypes.SendCoinsFromAccountToModuleInLendIsZero } return k.bank.SendCoinsFromAccountToModule(ctx, address, name, sdk.NewCoins(coin)) } -func (k *Keeper) SendCoinFromModuleToAccount(ctx sdk.Context, name string, address sdk.AccAddress, coin sdk.Coin) error { +func (k Keeper) SendCoinFromModuleToAccount(ctx sdk.Context, name string, address sdk.AccAddress, coin sdk.Coin) error { if coin.IsZero() { - return nil + return lendtypes.SendCoinsFromModuleToAccountInLendIsZero } return k.bank.SendCoinsFromModuleToAccount(ctx, name, address, sdk.NewCoins(coin)) } -func (k *Keeper) SpendableCoins(ctx sdk.Context, address sdk.AccAddress) sdk.Coins { +func (k Keeper) SpendableCoins(ctx sdk.Context, address sdk.AccAddress) sdk.Coins { return k.bank.SpendableCoins(ctx, address) } -func (k *Keeper) GetModuleAddress(name string) sdk.AccAddress { +func (k Keeper) GetModuleAddress(name string) sdk.AccAddress { return k.account.GetModuleAddress(name) } -func (k *Keeper) GetAllBalances(ctx sdk.Context, addr sdk.AccAddress) sdk.Coins { +func (k Keeper) GetAllBalances(ctx sdk.Context, addr sdk.AccAddress) sdk.Coins { return k.bank.GetAllBalances(ctx, addr) } -func (k *Keeper) GetAsset(ctx sdk.Context, id uint64) (assettypes.Asset, bool) { - return k.asset.GetAsset(ctx, id) +func (k Keeper) GetAsset(ctx sdk.Context, ID uint64) (assettypes.Asset, bool) { + return k.asset.GetAsset(ctx, ID) } -func (k *Keeper) GetPriceForAsset(ctx sdk.Context, id uint64) (uint64, bool) { - return k.market.GetPriceForAsset(ctx, id) +func (k Keeper) GetPriceForAsset(ctx sdk.Context, ID uint64) (uint64, bool) { + return k.market.GetPriceForAsset(ctx, ID) } -func (k *Keeper) SendCoinFromModuleToModule(ctx sdk.Context, senderModule, recipientModule string, coin sdk.Coins) error { +func (k Keeper) SendCoinFromModuleToModule(ctx sdk.Context, senderModule, recipientModule string, coin sdk.Coins) error { if coin.IsZero() { - return nil + return lendtypes.SendCoinsFromModuleToModuleInLendIsZero } return k.bank.SendCoinsFromModuleToModule(ctx, senderModule, recipientModule, coin) } + +func (k Keeper) GetApp(ctx sdk.Context, id uint64) (assettypes.AppData, bool) { + return k.asset.GetApp(ctx, id) +} diff --git a/x/lend/keeper/borrow.go b/x/lend/keeper/borrow.go index 78a1c68a2..7f6538003 100644 --- a/x/lend/keeper/borrow.go +++ b/x/lend/keeper/borrow.go @@ -6,20 +6,20 @@ import ( protobuftypes "github.com/gogo/protobuf/types" ) -func (k *Keeper) SetUserBorrowIDHistory(ctx sdk.Context, id uint64) { +func (k Keeper) SetUserBorrowIDHistory(ctx sdk.Context, ID uint64) { var ( store = k.Store(ctx) key = types.BorrowHistoryIDPrefix value = k.cdc.MustMarshal( &protobuftypes.UInt64Value{ - Value: id, + Value: ID, }, ) ) store.Set(key, value) } -func (k *Keeper) GetUserBorrowIDHistory(ctx sdk.Context) uint64 { +func (k Keeper) GetUserBorrowIDHistory(ctx sdk.Context) uint64 { var ( store = k.Store(ctx) key = types.BorrowHistoryIDPrefix @@ -30,13 +30,13 @@ func (k *Keeper) GetUserBorrowIDHistory(ctx sdk.Context) uint64 { return 0 } - var id protobuftypes.UInt64Value - k.cdc.MustUnmarshal(value, &id) + var ID protobuftypes.UInt64Value + k.cdc.MustUnmarshal(value, &ID) - return id.GetValue() + return ID.GetValue() } -func (k *Keeper) SetBorrow(ctx sdk.Context, borrow types.BorrowAsset) { +func (k Keeper) SetBorrow(ctx sdk.Context, borrow types.BorrowAsset) { var ( store = k.Store(ctx) key = types.BorrowUserKey(borrow.ID) @@ -46,10 +46,10 @@ func (k *Keeper) SetBorrow(ctx sdk.Context, borrow types.BorrowAsset) { store.Set(key, value) } -func (k *Keeper) GetBorrow(ctx sdk.Context, id uint64) (borrow types.BorrowAsset, found bool) { +func (k Keeper) GetBorrow(ctx sdk.Context, ID uint64) (borrow types.BorrowAsset, found bool) { var ( store = k.Store(ctx) - key = types.BorrowUserKey(id) + key = types.BorrowUserKey(ID) value = store.Get(key) ) @@ -61,22 +61,43 @@ func (k *Keeper) GetBorrow(ctx sdk.Context, id uint64) (borrow types.BorrowAsset return borrow, true } -func (k *Keeper) DeleteBorrow(ctx sdk.Context, id uint64) { +func (k Keeper) GetAllBorrow(ctx sdk.Context) (borrowAsset []types.BorrowAsset) { var ( store = k.Store(ctx) - key = types.BorrowUserKey(id) + iter = sdk.KVStorePrefixIterator(store, types.BorrowPairKeyPrefix) + ) + + defer func(iter sdk.Iterator) { + err := iter.Close() + if err != nil { + return + } + }(iter) + + for ; iter.Valid(); iter.Next() { + var asset types.BorrowAsset + k.cdc.MustUnmarshal(iter.Value(), &asset) + borrowAsset = append(borrowAsset, asset) + } + return borrowAsset +} + +func (k Keeper) DeleteBorrow(ctx sdk.Context, ID uint64) { + var ( + store = k.Store(ctx) + key = types.BorrowUserKey(ID) ) store.Delete(key) } -func (k *Keeper) SetBorrowForAddressByPair(ctx sdk.Context, address sdk.AccAddress, pairID, id uint64) { +func (k Keeper) SetBorrowForAddressByPair(ctx sdk.Context, address sdk.AccAddress, pairID, ID uint64) { var ( store = k.Store(ctx) key = types.BorrowForAddressByPair(address, pairID) value = k.cdc.MustMarshal( &protobuftypes.UInt64Value{ - Value: id, + Value: ID, }, ) ) @@ -84,7 +105,7 @@ func (k *Keeper) SetBorrowForAddressByPair(ctx sdk.Context, address sdk.AccAddre store.Set(key, value) } -func (k *Keeper) HasBorrowForAddressByPair(ctx sdk.Context, address sdk.AccAddress, pairID uint64) bool { +func (k Keeper) HasBorrowForAddressByPair(ctx sdk.Context, address sdk.AccAddress, pairID uint64) bool { var ( store = k.Store(ctx) key = types.BorrowForAddressByPair(address, pairID) @@ -93,7 +114,7 @@ func (k *Keeper) HasBorrowForAddressByPair(ctx sdk.Context, address sdk.AccAddre return store.Has(key) } -func (k *Keeper) DeleteBorrowForAddressByPair(ctx sdk.Context, address sdk.AccAddress, pairID uint64) { +func (k Keeper) DeleteBorrowForAddressByPair(ctx sdk.Context, address sdk.AccAddress, pairID uint64) { var ( store = k.Store(ctx) key = types.BorrowForAddressByPair(address, pairID) @@ -102,39 +123,39 @@ func (k *Keeper) DeleteBorrowForAddressByPair(ctx sdk.Context, address sdk.AccAd store.Delete(key) } -func (k *Keeper) UpdateUserBorrowIDMapping( +func (k Keeper) UpdateUserBorrowIDMapping( ctx sdk.Context, lendOwner string, borrowID uint64, isInsert bool, ) error { - userVaults, found := k.GetUserBorrows(ctx, lendOwner) + userBorrows, found := k.GetUserBorrows(ctx, lendOwner) if !found && isInsert { - userVaults = types.UserBorrowIdMapping{ + userBorrows = types.UserBorrowIdMapping{ Owner: lendOwner, - BorrowIds: nil, + BorrowIDs: nil, } } else if !found && !isInsert { return types.ErrorLendOwnerNotFound } if isInsert { - userVaults.BorrowIds = append(userVaults.BorrowIds, borrowID) + userBorrows.BorrowIDs = append(userBorrows.BorrowIDs, borrowID) } else { - for index, id := range userVaults.BorrowIds { + for index, id := range userBorrows.BorrowIDs { if id == borrowID { - userVaults.BorrowIds = append(userVaults.BorrowIds[:index], userVaults.BorrowIds[index+1:]...) + userBorrows.BorrowIDs = append(userBorrows.BorrowIDs[:index], userBorrows.BorrowIDs[index+1:]...) break } } } - k.SetUserBorrows(ctx, userVaults) + k.SetUserBorrows(ctx, userBorrows) return nil } -func (k *Keeper) GetUserBorrows(ctx sdk.Context, address string) (userBorrows types.UserBorrowIdMapping, found bool) { +func (k Keeper) GetUserBorrows(ctx sdk.Context, address string) (userBorrows types.UserBorrowIdMapping, found bool) { var ( store = k.Store(ctx) key = types.UserBorrowsForAddressKey(address) @@ -148,16 +169,37 @@ func (k *Keeper) GetUserBorrows(ctx sdk.Context, address string) (userBorrows ty return userBorrows, true } -func (k *Keeper) UserBorrows(ctx sdk.Context, address string) (userBorrows []types.BorrowAsset, found bool) { +func (k Keeper) GetAllUserBorrows(ctx sdk.Context) (userBorrowIdMapping []types.UserBorrowIdMapping) { + var ( + store = k.Store(ctx) + iter = sdk.KVStorePrefixIterator(store, types.UserBorrowsForAddressKeyPrefix) + ) + + defer func(iter sdk.Iterator) { + err := iter.Close() + if err != nil { + return + } + }(iter) + + for ; iter.Valid(); iter.Next() { + var asset types.UserBorrowIdMapping + k.cdc.MustUnmarshal(iter.Value(), &asset) + userBorrowIdMapping = append(userBorrowIdMapping, asset) + } + return userBorrowIdMapping +} + +func (k Keeper) UserBorrows(ctx sdk.Context, address string) (userBorrows []types.BorrowAsset, found bool) { userBorrowID, _ := k.GetUserBorrows(ctx, address) - for _, v := range userBorrowID.BorrowIds { + for _, v := range userBorrowID.BorrowIDs { userBorrow, _ := k.GetBorrow(ctx, v) userBorrows = append(userBorrows, userBorrow) } return userBorrows, true } -func (k *Keeper) SetUserBorrows(ctx sdk.Context, userBorrows types.UserBorrowIdMapping) { +func (k Keeper) SetUserBorrows(ctx sdk.Context, userBorrows types.UserBorrowIdMapping) { var ( store = k.Store(ctx) key = types.UserBorrowsForAddressKey(userBorrows.Owner) @@ -166,41 +208,41 @@ func (k *Keeper) SetUserBorrows(ctx sdk.Context, userBorrows types.UserBorrowIdM store.Set(key, value) } -func (k *Keeper) UpdateBorrowIDByOwnerAndPoolMapping( +func (k Keeper) UpdateBorrowIDByOwnerAndPoolMapping( ctx sdk.Context, borrowOwner string, borrowID uint64, poolID uint64, isInsert bool, ) error { - userLends, found := k.GetBorrowIDByOwnerAndPool(ctx, borrowOwner, poolID) + userBorrows, found := k.GetBorrowIDByOwnerAndPool(ctx, borrowOwner, poolID) if !found && isInsert { - userLends = types.BorrowIdByOwnerAndPoolMapping{ + userBorrows = types.BorrowIdByOwnerAndPoolMapping{ Owner: borrowOwner, - PoolId: poolID, - BorrowIds: nil, + PoolID: poolID, + BorrowIDs: nil, } } else if !found && !isInsert { return types.ErrorLendOwnerNotFound } if isInsert { - userLends.BorrowIds = append(userLends.BorrowIds, borrowID) + userBorrows.BorrowIDs = append(userBorrows.BorrowIDs, borrowID) } else { - for index, id := range userLends.BorrowIds { + for index, id := range userBorrows.BorrowIDs { if id == borrowID { - userLends.BorrowIds = append(userLends.BorrowIds[:index], userLends.BorrowIds[index+1:]...) + userBorrows.BorrowIDs = append(userBorrows.BorrowIDs[:index], userBorrows.BorrowIDs[index+1:]...) break } } } - k.SetBorrowIDByOwnerAndPool(ctx, userLends) + k.SetBorrowIDByOwnerAndPool(ctx, userBorrows) return nil } -func (k *Keeper) GetBorrowIDByOwnerAndPool(ctx sdk.Context, address string, poolID uint64) (userBorrows types.BorrowIdByOwnerAndPoolMapping, found bool) { +func (k Keeper) GetBorrowIDByOwnerAndPool(ctx sdk.Context, address string, poolID uint64) (userBorrows types.BorrowIdByOwnerAndPoolMapping, found bool) { var ( store = k.Store(ctx) key = types.BorrowByUserAndPoolKey(address, poolID) @@ -214,55 +256,76 @@ func (k *Keeper) GetBorrowIDByOwnerAndPool(ctx sdk.Context, address string, pool return userBorrows, true } -func (k *Keeper) BorrowIDByOwnerAndPool(ctx sdk.Context, address string, poolID uint64) (userBorrows []types.BorrowAsset, found bool) { +func (k Keeper) GetAllBorrowIDByOwnerAndPool(ctx sdk.Context) (borrowIdByOwnerAndPoolMapping []types.BorrowIdByOwnerAndPoolMapping) { + var ( + store = k.Store(ctx) + iter = sdk.KVStorePrefixIterator(store, types.BorrowByUserAndPoolPrefix) + ) + + defer func(iter sdk.Iterator) { + err := iter.Close() + if err != nil { + return + } + }(iter) + + for ; iter.Valid(); iter.Next() { + var asset types.BorrowIdByOwnerAndPoolMapping + k.cdc.MustUnmarshal(iter.Value(), &asset) + borrowIdByOwnerAndPoolMapping = append(borrowIdByOwnerAndPoolMapping, asset) + } + return borrowIdByOwnerAndPoolMapping +} + +func (k Keeper) BorrowIDByOwnerAndPool(ctx sdk.Context, address string, poolID uint64) (userBorrows []types.BorrowAsset, found bool) { userLendID, _ := k.GetBorrowIDByOwnerAndPool(ctx, address, poolID) - for _, v := range userLendID.BorrowIds { + for _, v := range userLendID.BorrowIDs { userBorrow, _ := k.GetBorrow(ctx, v) userBorrows = append(userBorrows, userBorrow) } return userBorrows, true } -func (k *Keeper) SetBorrowIDByOwnerAndPool(ctx sdk.Context, userBorrows types.BorrowIdByOwnerAndPoolMapping) { +func (k Keeper) SetBorrowIDByOwnerAndPool(ctx sdk.Context, userBorrows types.BorrowIdByOwnerAndPoolMapping) { var ( store = k.Store(ctx) - key = types.BorrowByUserAndPoolKey(userBorrows.Owner, userBorrows.PoolId) + key = types.BorrowByUserAndPoolKey(userBorrows.Owner, userBorrows.PoolID) value = k.cdc.MustMarshal(&userBorrows) ) store.Set(key, value) } -func (k *Keeper) UpdateBorrowIdsMapping( +func (k Keeper) UpdateBorrowIdsMapping( ctx sdk.Context, borrowID uint64, isInsert bool, ) error { - userVaults, found := k.GetBorrows(ctx) + userBorrows, found := k.GetBorrows(ctx) if !found && isInsert { - userVaults = types.BorrowMapping{ - BorrowIds: nil, + userBorrows = types.BorrowMapping{ + BorrowIDs: nil, } } else if !found && !isInsert { return types.ErrorLendOwnerNotFound } if isInsert { - userVaults.BorrowIds = append(userVaults.BorrowIds, borrowID) + userBorrows.BorrowIDs = append(userBorrows.BorrowIDs, borrowID) } else { - for index, id := range userVaults.BorrowIds { + for index, id := range userBorrows.BorrowIDs { if id == borrowID { - userVaults.BorrowIds = append(userVaults.BorrowIds[:index], userVaults.BorrowIds[index+1:]...) + userBorrows.BorrowIDs = append(userBorrows.BorrowIDs[:index], userBorrows.BorrowIDs[index+1:]...) break } } } - k.SetBorrows(ctx, userVaults) + k.SetBorrows(ctx, userBorrows) return nil } -func (k *Keeper) GetBorrows(ctx sdk.Context) (userBorrows types.BorrowMapping, found bool) { +func (k Keeper) GetBorrows(ctx sdk.Context) (userBorrows types.BorrowMapping, found bool) { var ( store = k.Store(ctx) key = types.BorrowsKey @@ -276,7 +339,7 @@ func (k *Keeper) GetBorrows(ctx sdk.Context) (userBorrows types.BorrowMapping, f return userBorrows, true } -func (k *Keeper) SetBorrows(ctx sdk.Context, userBorrows types.BorrowMapping) { +func (k Keeper) SetBorrows(ctx sdk.Context, userBorrows types.BorrowMapping) { var ( store = k.Store(ctx) key = types.BorrowsKey @@ -284,56 +347,3 @@ func (k *Keeper) SetBorrows(ctx sdk.Context, userBorrows types.BorrowMapping) { ) store.Set(key, value) } - -//func (k *Keeper) UpdateStableBorrowIdsMapping( -// ctx sdk.Context, -// borrowID uint64, -// isInsert bool, -//) error { -// userVaults, found := k.GetStableBorrows(ctx) -// -// if !found && isInsert { -// userVaults = types.StableBorrowMapping{ -// StableBorrowIds: nil, -// } -// } else if !found && !isInsert { -// return types.ErrorLendOwnerNotFound -// } -// -// if isInsert { -// userVaults.StableBorrowIds = append(userVaults.StableBorrowIds, borrowID) -// } else { -// for index, id := range userVaults.StableBorrowIds { -// if id == borrowID { -// userVaults.StableBorrowIds = append(userVaults.StableBorrowIds[:index], userVaults.StableBorrowIds[index+1:]...) -// break -// } -// } -// } -// -// k.SetStableBorrows(ctx, userVaults) -// return nil -//} -// -//func (k *Keeper) GetStableBorrows(ctx sdk.Context) (userBorrows types.StableBorrowMapping, found bool) { -// var ( -// store = k.Store(ctx) -// key = types.StableBorrowsKey -// value = store.Get(key) -// ) -// if value == nil { -// return userBorrows, false -// } -// k.cdc.MustUnmarshal(value, &userBorrows) -// -// return userBorrows, true -//} -// -//func (k *Keeper) SetStableBorrows(ctx sdk.Context, userBorrows types.StableBorrowMapping) { -// var ( -// store = k.Store(ctx) -// key = types.StableBorrowsKey -// value = k.cdc.MustMarshal(&userBorrows) -// ) -// store.Set(key, value) -//} diff --git a/x/lend/keeper/funds.go b/x/lend/keeper/funds.go index f16a8523a..3b3459b3c 100644 --- a/x/lend/keeper/funds.go +++ b/x/lend/keeper/funds.go @@ -5,22 +5,153 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" ) -func (k Keeper) GetReserveFunds(ctx sdk.Context, denom string) sdk.Int { - store := ctx.KVStore(k.storeKey) - key := types.ReserveFundsKey(denom) - amount := sdk.ZeroInt() +func (k Keeper) GetReserveFunds(_ sdk.Context, pool types.Pool) sdk.Int { + return sdk.NewInt(int64(pool.ReserveFunds)) +} + +func (k Keeper) UpdateReserveBalances(ctx sdk.Context, assetID uint64, moduleName string, payment sdk.Coin, inc bool) error { + newAmount := payment.Amount.Quo(sdk.NewIntFromUint64(types.Uint64Two)) + buyBackStats, _ := k.GetBuyBackDepositStats(ctx) + reserveStats, _ := k.GetReserveDepositStats(ctx) + var reserveBalanceStats []types.BalanceStats - if bz := store.Get(key); bz != nil { - err := amount.Unmarshal(bz) - if err != nil { - panic(err) + var balanceStats []types.BalanceStats + if inc { + for _, v := range buyBackStats.BalanceStats { + if v.AssetID == assetID { + v.Amount = v.Amount.Add(newAmount) + } + balanceStats = append(balanceStats, v) + newDepositStats := types.DepositStats{BalanceStats: balanceStats} + k.SetBuyBackDepositStats(ctx, newDepositStats) + + } + for _, v := range reserveStats.BalanceStats { + if v.AssetID == assetID { + v.Amount = v.Amount.Add(newAmount) + } + reserveBalanceStats = append(reserveBalanceStats, v) + newUserDepositStats := types.DepositStats{BalanceStats: reserveBalanceStats} + k.SetReserveDepositStats(ctx, newUserDepositStats) + } + if err := k.bank.SendCoinsFromModuleToModule(ctx, moduleName, types.ModuleName, sdk.NewCoins(payment)); err != nil { + return err + } + } else { + for _, v := range buyBackStats.BalanceStats { + if v.AssetID == assetID { + v.Amount = v.Amount.Sub(newAmount) + } + balanceStats = append(balanceStats, v) + newDepositStats := types.DepositStats{BalanceStats: balanceStats} + k.SetBuyBackDepositStats(ctx, newDepositStats) + } + for _, v := range reserveStats.BalanceStats { + if v.AssetID == assetID { + v.Amount = v.Amount.Sub(newAmount) + } + reserveBalanceStats = append(reserveBalanceStats, v) + newUserDepositStats := types.DepositStats{BalanceStats: reserveBalanceStats} + k.SetReserveDepositStats(ctx, newUserDepositStats) + } + if err := k.bank.SendCoinsFromModuleToModule(ctx, types.ModuleName, moduleName, sdk.NewCoins(payment)); err != nil { + return err } } + return nil +} + +func (k Keeper) UpdateLendStats(ctx sdk.Context, AssetID, PoolID uint64, amount sdk.Int, inc bool) { + assetStats, _ := k.GetAssetStatsByPoolIDAndAssetID(ctx, AssetID, PoolID) + depositStats, _ := k.GetDepositStats(ctx) + userDepositStats, _ := k.GetUserDepositStats(ctx) + var balanceStats []types.BalanceStats + var userBalanceStats []types.BalanceStats - if amount.IsNegative() { - panic("negative reserve amount detected") + if inc { + + assetStats.TotalLend = assetStats.TotalLend.Add(amount) + k.SetAssetStatsByPoolIDAndAssetID(ctx, assetStats) + + for _, v := range depositStats.BalanceStats { + if v.AssetID == AssetID { + v.Amount = v.Amount.Add(amount) + } + balanceStats = append(balanceStats, v) + newDepositStats := types.DepositStats{BalanceStats: balanceStats} + k.SetDepositStats(ctx, newDepositStats) + } + for _, v := range userDepositStats.BalanceStats { + if v.AssetID == AssetID { + v.Amount = v.Amount.Add(amount) + } + userBalanceStats = append(userBalanceStats, v) + newUserDepositStats := types.DepositStats{BalanceStats: userBalanceStats} + k.SetUserDepositStats(ctx, newUserDepositStats) + } + } else { + assetStats.TotalLend = assetStats.TotalLend.Sub(amount) + k.SetAssetStatsByPoolIDAndAssetID(ctx, assetStats) + for _, v := range depositStats.BalanceStats { + if v.AssetID == AssetID { + v.Amount = v.Amount.Sub(amount) + } + balanceStats = append(balanceStats, v) + newDepositStats := types.DepositStats{BalanceStats: balanceStats} + k.SetDepositStats(ctx, newDepositStats) + } + for _, v := range userDepositStats.BalanceStats { + if v.AssetID == AssetID { + v.Amount = v.Amount.Sub(amount) + } + userBalanceStats = append(userBalanceStats, v) + newUserDepositStats := types.DepositStats{BalanceStats: userBalanceStats} + k.SetUserDepositStats(ctx, newUserDepositStats) + } } +} + +func (k Keeper) UpdateBorrowStats(ctx sdk.Context, pair types.Extended_Pair, borrowPos types.BorrowAsset, amount sdk.Int, inc bool) { + if inc { + borrowStats, _ := k.GetBorrowStats(ctx) + var userBalanceStats []types.BalanceStats + for _, v := range borrowStats.BalanceStats { + if v.AssetID == pair.AssetOut { + v.Amount = v.Amount.Add(amount) + } + userBalanceStats = append(userBalanceStats, v) + newUserDepositStats := types.DepositStats{BalanceStats: userBalanceStats} + k.SetBorrowStats(ctx, newUserDepositStats) + } - //return amount - return sdk.NewInt(0) + assetStats, _ := k.GetAssetStatsByPoolIDAndAssetID(ctx, pair.AssetOut, pair.AssetOutPoolID) + if borrowPos.IsStableBorrow { + assetStats.TotalStableBorrowed = assetStats.TotalStableBorrowed.Add(amount) + k.SetAssetStatsByPoolIDAndAssetID(ctx, assetStats) + } else { + assetStats.TotalBorrowed = assetStats.TotalBorrowed.Add(amount) + k.SetAssetStatsByPoolIDAndAssetID(ctx, assetStats) + } + + } else { + borrowStats, _ := k.GetBorrowStats(ctx) + var userBalanceStats []types.BalanceStats + for _, v := range borrowStats.BalanceStats { + if v.AssetID == pair.AssetOut { + v.Amount = v.Amount.Sub(amount) + } + userBalanceStats = append(userBalanceStats, v) + newUserDepositStats := types.DepositStats{BalanceStats: userBalanceStats} + k.SetBorrowStats(ctx, newUserDepositStats) + } + + assetStats, _ := k.GetAssetStatsByPoolIDAndAssetID(ctx, pair.AssetOut, pair.AssetOutPoolID) + if borrowPos.IsStableBorrow { + assetStats.TotalStableBorrowed = assetStats.TotalStableBorrowed.Sub(amount) + k.SetAssetStatsByPoolIDAndAssetID(ctx, assetStats) + } else { + assetStats.TotalBorrowed = assetStats.TotalBorrowed.Sub(amount) + k.SetAssetStatsByPoolIDAndAssetID(ctx, assetStats) + } + } } diff --git a/x/lend/keeper/gov.go b/x/lend/keeper/gov.go index e0fc7cc7a..0b16a1ae2 100644 --- a/x/lend/keeper/gov.go +++ b/x/lend/keeper/gov.go @@ -6,11 +6,7 @@ import ( ) func (k Keeper) HandleAddWhitelistedPairsRecords(ctx sdk.Context, p *types.LendPairsProposal) error { - return k.AddLendPairsRecords(ctx, p.Pairs...) -} - -func (k Keeper) HandleUpdateWhitelistedPairRecords(ctx sdk.Context, p *types.UpdatePairProposal) error { - return k.UpdateLendPairRecords(ctx, p.Pair) + return k.AddLendPairsRecords(ctx, p.Pairs) } func (k Keeper) HandleAddPoolRecords(ctx sdk.Context, p *types.AddPoolsProposal) error { @@ -22,5 +18,9 @@ func (k Keeper) HandleAddAssetToPairRecords(ctx sdk.Context, p *types.AddAssetTo } func (k Keeper) HandleAddAssetRatesStatsRecords(ctx sdk.Context, p *types.AddAssetRatesStats) error { - return k.AddAssetRatesStats(ctx, p.AssetRatesStats...) + return k.AddAssetRatesStats(ctx, p.AssetRatesStats) +} + +func (k Keeper) HandleAddAuctionParamsRecords(ctx sdk.Context, p *types.AddAuctionParamsProposal) error { + return k.AddAuctionParamsData(ctx, p.AuctionParams) } diff --git a/x/lend/keeper/grpc_query.go b/x/lend/keeper/grpc_query.go index a64b9115f..68697b808 100644 --- a/x/lend/keeper/grpc_query.go +++ b/x/lend/keeper/grpc_query.go @@ -11,20 +11,20 @@ import ( ) var ( - _ types.QueryServer = (*queryServer)(nil) + _ types.QueryServer = QueryServer{} ) -type queryServer struct { +type QueryServer struct { Keeper } func NewQueryServer(k Keeper) types.QueryServer { - return &queryServer{ + return &QueryServer{ Keeper: k, } } -func (q queryServer) QueryLends(c context.Context, req *types.QueryLendsRequest) (*types.QueryLendsResponse, error) { +func (q QueryServer) QueryLends(c context.Context, req *types.QueryLendsRequest) (*types.QueryLendsResponse, error) { if req == nil { return nil, status.Error(codes.InvalidArgument, "request cannot be empty") } @@ -61,7 +61,7 @@ func (q queryServer) QueryLends(c context.Context, req *types.QueryLendsRequest) }, nil } -func (q queryServer) QueryLend(c context.Context, req *types.QueryLendRequest) (*types.QueryLendResponse, error) { +func (q QueryServer) QueryLend(c context.Context, req *types.QueryLendRequest) (*types.QueryLendResponse, error) { if req == nil { return nil, status.Error(codes.InvalidArgument, "request cannot be empty") } @@ -80,7 +80,7 @@ func (q queryServer) QueryLend(c context.Context, req *types.QueryLendRequest) ( }, nil } -func (q queryServer) QueryAllLendByOwner(c context.Context, req *types.QueryAllLendByOwnerRequest) (*types.QueryAllLendByOwnerResponse, error) { +func (q QueryServer) QueryAllLendByOwner(c context.Context, req *types.QueryAllLendByOwnerRequest) (*types.QueryAllLendByOwnerResponse, error) { if req == nil { return nil, status.Error(codes.InvalidArgument, "request cannot be empty") } @@ -105,7 +105,7 @@ func (q queryServer) QueryAllLendByOwner(c context.Context, req *types.QueryAllL }, nil } -func (q queryServer) QueryAllLendByOwnerAndPool(c context.Context, req *types.QueryAllLendByOwnerAndPoolRequest) (*types.QueryAllLendByOwnerAndPoolResponse, error) { +func (q QueryServer) QueryAllLendByOwnerAndPool(c context.Context, req *types.QueryAllLendByOwnerAndPoolRequest) (*types.QueryAllLendByOwnerAndPoolResponse, error) { if req == nil { return nil, status.Error(codes.InvalidArgument, "request cannot be empty") } @@ -130,7 +130,7 @@ func (q queryServer) QueryAllLendByOwnerAndPool(c context.Context, req *types.Qu }, nil } -func (q queryServer) QueryAllBorrowByOwnerAndPool(c context.Context, req *types.QueryAllBorrowByOwnerAndPoolRequest) (*types.QueryAllBorrowByOwnerAndPoolResponse, error) { +func (q QueryServer) QueryAllBorrowByOwnerAndPool(c context.Context, req *types.QueryAllBorrowByOwnerAndPoolRequest) (*types.QueryAllBorrowByOwnerAndPoolResponse, error) { if req == nil { return nil, status.Error(codes.InvalidArgument, "request cannot be empty") } @@ -155,7 +155,7 @@ func (q queryServer) QueryAllBorrowByOwnerAndPool(c context.Context, req *types. }, nil } -func (q queryServer) QueryPairs(c context.Context, req *types.QueryPairsRequest) (*types.QueryPairsResponse, error) { +func (q QueryServer) QueryPairs(c context.Context, req *types.QueryPairsRequest) (*types.QueryPairsResponse, error) { if req == nil { return nil, status.Error(codes.InvalidArgument, "request cannot be empty") } @@ -192,7 +192,7 @@ func (q queryServer) QueryPairs(c context.Context, req *types.QueryPairsRequest) }, nil } -func (q queryServer) QueryPair(c context.Context, req *types.QueryPairRequest) (*types.QueryPairResponse, error) { +func (q QueryServer) QueryPair(c context.Context, req *types.QueryPairRequest) (*types.QueryPairResponse, error) { if req == nil { return nil, status.Error(codes.InvalidArgument, "request cannot be empty") } @@ -211,7 +211,7 @@ func (q queryServer) QueryPair(c context.Context, req *types.QueryPairRequest) ( }, nil } -func (q queryServer) QueryPools(c context.Context, req *types.QueryPoolsRequest) (*types.QueryPoolsResponse, error) { +func (q QueryServer) QueryPools(c context.Context, req *types.QueryPoolsRequest) (*types.QueryPoolsResponse, error) { if req == nil { return nil, status.Error(codes.InvalidArgument, "request cannot be empty") } @@ -248,7 +248,7 @@ func (q queryServer) QueryPools(c context.Context, req *types.QueryPoolsRequest) }, nil } -func (q queryServer) QueryPool(c context.Context, req *types.QueryPoolRequest) (*types.QueryPoolResponse, error) { +func (q QueryServer) QueryPool(c context.Context, req *types.QueryPoolRequest) (*types.QueryPoolResponse, error) { if req == nil { return nil, status.Error(codes.InvalidArgument, "request cannot be empty") } @@ -267,7 +267,7 @@ func (q queryServer) QueryPool(c context.Context, req *types.QueryPoolRequest) ( }, nil } -func (q queryServer) QueryAssetToPairMappings(c context.Context, req *types.QueryAssetToPairMappingsRequest) (*types.QueryAssetToPairMappingsResponse, error) { +func (q QueryServer) QueryAssetToPairMappings(c context.Context, req *types.QueryAssetToPairMappingsRequest) (*types.QueryAssetToPairMappingsResponse, error) { if req == nil { return nil, status.Error(codes.InvalidArgument, "request cannot be empty") } @@ -304,7 +304,7 @@ func (q queryServer) QueryAssetToPairMappings(c context.Context, req *types.Quer }, nil } -func (q queryServer) QueryAssetToPairMapping(c context.Context, req *types.QueryAssetToPairMappingRequest) (*types.QueryAssetToPairMappingResponse, error) { +func (q QueryServer) QueryAssetToPairMapping(c context.Context, req *types.QueryAssetToPairMappingRequest) (*types.QueryAssetToPairMappingResponse, error) { if req == nil { return nil, status.Error(codes.InvalidArgument, "request cannot be empty") } @@ -323,7 +323,7 @@ func (q queryServer) QueryAssetToPairMapping(c context.Context, req *types.Query }, nil } -func (q queryServer) QueryBorrows(c context.Context, req *types.QueryBorrowsRequest) (*types.QueryBorrowsResponse, error) { +func (q QueryServer) QueryBorrows(c context.Context, req *types.QueryBorrowsRequest) (*types.QueryBorrowsResponse, error) { if req == nil { return nil, status.Error(codes.InvalidArgument, "request cannot be empty") } @@ -360,7 +360,7 @@ func (q queryServer) QueryBorrows(c context.Context, req *types.QueryBorrowsRequ }, nil } -func (q queryServer) QueryBorrow(c context.Context, req *types.QueryBorrowRequest) (*types.QueryBorrowResponse, error) { +func (q QueryServer) QueryBorrow(c context.Context, req *types.QueryBorrowRequest) (*types.QueryBorrowResponse, error) { if req == nil { return nil, status.Error(codes.InvalidArgument, "request cannot be empty") } @@ -379,7 +379,7 @@ func (q queryServer) QueryBorrow(c context.Context, req *types.QueryBorrowReques }, nil } -func (q queryServer) QueryAllBorrowByOwner(c context.Context, req *types.QueryAllBorrowByOwnerRequest) (*types.QueryAllBorrowByOwnerResponse, error) { +func (q QueryServer) QueryAllBorrowByOwner(c context.Context, req *types.QueryAllBorrowByOwnerRequest) (*types.QueryAllBorrowByOwnerResponse, error) { if req == nil { return nil, status.Error(codes.InvalidArgument, "request cannot be empty") } @@ -404,7 +404,7 @@ func (q queryServer) QueryAllBorrowByOwner(c context.Context, req *types.QueryAl }, nil } -func (q queryServer) QueryAssetRatesStats(c context.Context, req *types.QueryAssetRatesStatsRequest) (*types.QueryAssetRatesStatsResponse, error) { +func (q QueryServer) QueryAssetRatesStats(c context.Context, req *types.QueryAssetRatesStatsRequest) (*types.QueryAssetRatesStatsResponse, error) { if req == nil { return nil, status.Error(codes.InvalidArgument, "request cannot be empty") } @@ -441,7 +441,7 @@ func (q queryServer) QueryAssetRatesStats(c context.Context, req *types.QueryAss }, nil } -func (q queryServer) QueryAssetRatesStat(c context.Context, req *types.QueryAssetRatesStatRequest) (*types.QueryAssetRatesStatResponse, error) { +func (q QueryServer) QueryAssetRatesStat(c context.Context, req *types.QueryAssetRatesStatRequest) (*types.QueryAssetRatesStatResponse, error) { if req == nil { return nil, status.Error(codes.InvalidArgument, "request cannot be empty") } @@ -460,7 +460,7 @@ func (q queryServer) QueryAssetRatesStat(c context.Context, req *types.QueryAsse }, nil } -func (q queryServer) QueryAssetStats(c context.Context, req *types.QueryAssetStatsRequest) (*types.QueryAssetStatsResponse, error) { +func (q QueryServer) QueryAssetStats(c context.Context, req *types.QueryAssetStatsRequest) (*types.QueryAssetStatsResponse, error) { if req == nil { return nil, status.Error(codes.InvalidArgument, "request cannot be empty") } @@ -476,7 +476,7 @@ func (q queryServer) QueryAssetStats(c context.Context, req *types.QueryAssetSta }, nil } -func (q queryServer) QueryModuleBalance(c context.Context, req *types.QueryModuleBalanceRequest) (*types.QueryModuleBalanceResponse, error) { +func (q QueryServer) QueryModuleBalance(c context.Context, req *types.QueryModuleBalanceRequest) (*types.QueryModuleBalanceResponse, error) { if req == nil { return nil, status.Error(codes.InvalidArgument, "request cannot be empty") } @@ -492,7 +492,7 @@ func (q queryServer) QueryModuleBalance(c context.Context, req *types.QueryModul }, nil } -func (q queryServer) QueryDepositStats(c context.Context, req *types.QueryDepositStatsRequest) (*types.QueryDepositStatsResponse, error) { +func (q QueryServer) QueryDepositStats(c context.Context, req *types.QueryDepositStatsRequest) (*types.QueryDepositStatsResponse, error) { if req == nil { return nil, status.Error(codes.InvalidArgument, "request cannot be empty") } @@ -508,7 +508,7 @@ func (q queryServer) QueryDepositStats(c context.Context, req *types.QueryDeposi }, nil } -func (q queryServer) QueryUserDepositStats(c context.Context, req *types.QueryUserDepositStatsRequest) (*types.QueryUserDepositStatsResponse, error) { +func (q QueryServer) QueryUserDepositStats(c context.Context, req *types.QueryUserDepositStatsRequest) (*types.QueryUserDepositStatsResponse, error) { if req == nil { return nil, status.Error(codes.InvalidArgument, "request cannot be empty") } @@ -524,7 +524,7 @@ func (q queryServer) QueryUserDepositStats(c context.Context, req *types.QueryUs }, nil } -func (q queryServer) QueryReserveDepositStats(c context.Context, req *types.QueryReserveDepositStatsRequest) (*types.QueryReserveDepositStatsResponse, error) { +func (q QueryServer) QueryReserveDepositStats(c context.Context, req *types.QueryReserveDepositStatsRequest) (*types.QueryReserveDepositStatsResponse, error) { if req == nil { return nil, status.Error(codes.InvalidArgument, "request cannot be empty") } @@ -540,7 +540,7 @@ func (q queryServer) QueryReserveDepositStats(c context.Context, req *types.Quer }, nil } -func (q queryServer) QueryBuyBackDepositStats(c context.Context, req *types.QueryBuyBackDepositStatsRequest) (*types.QueryBuyBackDepositStatsResponse, error) { +func (q QueryServer) QueryBuyBackDepositStats(c context.Context, req *types.QueryBuyBackDepositStatsRequest) (*types.QueryBuyBackDepositStatsResponse, error) { if req == nil { return nil, status.Error(codes.InvalidArgument, "request cannot be empty") } @@ -556,7 +556,7 @@ func (q queryServer) QueryBuyBackDepositStats(c context.Context, req *types.Quer }, nil } -func (q queryServer) QueryBorrowStats(c context.Context, req *types.QueryBorrowStatsRequest) (*types.QueryBorrowStatsResponse, error) { +func (q QueryServer) QueryBorrowStats(c context.Context, req *types.QueryBorrowStatsRequest) (*types.QueryBorrowStatsResponse, error) { if req == nil { return nil, status.Error(codes.InvalidArgument, "request cannot be empty") } @@ -571,3 +571,22 @@ func (q queryServer) QueryBorrowStats(c context.Context, req *types.QueryBorrowS BorrowStats: borrowStatsData, }, nil } + +func (q QueryServer) QueryAuctionParams(c context.Context, req *types.QueryAuctionParamRequest) (*types.QueryAuctionParamResponse, error) { + if req == nil { + return nil, status.Error(codes.InvalidArgument, "request cannot be empty") + } + + var ( + ctx = sdk.UnwrapSDKContext(c) + ) + + item, found := q.GetAddAuctionParamsData(ctx, req.AppId) + if !found { + return nil, status.Errorf(codes.NotFound, "Auction Params not exist for id %d", req.AppId) + } + + return &types.QueryAuctionParamResponse{ + AuctionParams: item, + }, nil +} diff --git a/x/lend/keeper/iter.go b/x/lend/keeper/iter.go index 0ed7bc299..241b44080 100644 --- a/x/lend/keeper/iter.go +++ b/x/lend/keeper/iter.go @@ -10,9 +10,9 @@ import ( func (k Keeper) IterateLends(ctx sdk.Context) error { lends, _ := k.GetLends(ctx) - for _, v := range lends.LendIds { + for _, v := range lends.LendIDs { lend, _ := k.GetLend(ctx, v) - lendAPY, err := k.GetLendAPRByAssetIDAndPoolID(ctx, lend.PoolId, lend.AssetId) + lendAPY, err := k.GetLendAPRByAssetIDAndPoolID(ctx, lend.PoolID, lend.AssetID) if err != nil { return err } @@ -24,25 +24,26 @@ func (k Keeper) IterateLends(ctx sdk.Context) error { updatedLend := types.LendAsset{ ID: lend.ID, - AssetId: lend.AssetId, - PoolId: lend.PoolId, + AssetID: lend.AssetID, + PoolID: lend.PoolID, Owner: lend.Owner, AmountIn: lend.AmountIn, LendingTime: lend.LendingTime, UpdatedAmountIn: lend.UpdatedAmountIn.Add(interestPerBlock), AvailableToBorrow: lend.AvailableToBorrow.Add(interestPerBlock), Reward_Accumulated: lend.Reward_Accumulated.Add(interestPerBlock), - AppId: lend.AppId, + AppID: lend.AppID, + CPoolName: lend.CPoolName, } - pool, _ := k.GetPool(ctx, lend.PoolId) - asset, _ := k.GetAsset(ctx, lend.AssetId) + pool, _ := k.GetPool(ctx, lend.PoolID) + asset, _ := k.GetAsset(ctx, lend.AssetID) Amount := sdk.NewCoin(asset.Denom, interestPerBlock) - assetRatesStat, found := k.GetAssetRatesStats(ctx, lend.AssetId) + assetRatesStat, found := k.GetAssetRatesStats(ctx, lend.AssetID) if !found { - return sdkerrors.Wrap(types.ErrorAssetRatesStatsNotFound, strconv.FormatUint(lend.AssetId, 10)) + return sdkerrors.Wrap(types.ErrorAssetRatesStatsNotFound, strconv.FormatUint(lend.AssetID, 10)) } - cAsset, _ := k.GetAsset(ctx, assetRatesStat.CAssetId) + cAsset, _ := k.GetAsset(ctx, assetRatesStat.CAssetID) cToken := sdk.NewCoin(cAsset.Denom, Amount.Amount) if err != nil { return err @@ -60,11 +61,11 @@ func (k Keeper) IterateLends(ctx sdk.Context) error { func (k Keeper) IterateBorrows(ctx sdk.Context) error { borrows, _ := k.GetBorrows(ctx) - for _, v := range borrows.BorrowIds { + for _, v := range borrows.BorrowIDs { borrow, _ := k.GetBorrow(ctx, v) pair, _ := k.GetLendPair(ctx, borrow.PairID) - borrowAPY, _ := k.GetBorrowAPRByAssetID(ctx, pair.AssetOutPoolId, pair.AssetOut, borrow.IsStableBorrow) + borrowAPY, _ := k.GetBorrowAPRByAssetID(ctx, pair.AssetOutPoolID, pair.AssetOut, borrow.IsStableBorrow) interestPerBlock, err := k.CalculateRewards(ctx, borrow.AmountOut.Amount.String(), borrowAPY) if err != nil { return err @@ -83,7 +84,9 @@ func (k Keeper) IterateBorrows(ctx sdk.Context) error { StableBorrowRate: borrow.StableBorrowRate, UpdatedAmountOut: borrow.UpdatedAmountOut.Add(interestPerBlock), Interest_Accumulated: borrow.Interest_Accumulated.Add(interestPerBlock), + CPoolName: borrow.CPoolName, } + k.SetBorrow(ctx, updatedBorrow) } } @@ -95,11 +98,11 @@ func (k Keeper) CalculateRewards(ctx sdk.Context, amount string, rate sdk.Dec) ( currentTime := ctx.BlockTime().Unix() prevInterestTime := k.GetLastInterestTime(ctx) - if prevInterestTime == 0 { + if prevInterestTime == int64(types.Uint64Zero) { prevInterestTime = currentTime } secondsElapsed := currentTime - prevInterestTime - if secondsElapsed < 0 { + if secondsElapsed < int64(types.Uint64Zero) { return sdk.ZeroInt(), sdkerrors.Wrap(types.ErrNegativeTimeElapsed, fmt.Sprintf("%d seconds", secondsElapsed)) } @@ -112,17 +115,17 @@ func (k Keeper) CalculateRewards(ctx sdk.Context, amount string, rate sdk.Dec) ( return sdk.NewInt(int64(newAmount)), nil } -func (k Keeper) RebalanceStableRates(ctx sdk.Context) error { +func (k Keeper) ReBalanceStableRates(ctx sdk.Context) error { borrows, _ := k.GetBorrows(ctx) - for _, v := range borrows.BorrowIds { + for _, v := range borrows.BorrowIDs { borrowPos, _ := k.GetBorrow(ctx, v) if borrowPos.IsStableBorrow { pair, _ := k.GetLendPair(ctx, borrowPos.PairID) - assetStats, _ := k.UpdateAPR(ctx, pair.AssetOutPoolId, pair.AssetOut) - utilizationRatio, _ := k.GetUtilisationRatioByPoolIDAndAssetID(ctx, pair.AssetOutPoolId, pair.AssetOut) - perc1, _ := sdk.NewDecFromStr("0.2") - perc2, _ := sdk.NewDecFromStr("0.9") + assetStats, _ := k.UpdateAPR(ctx, pair.AssetOutPoolID, pair.AssetOut) + utilizationRatio, _ := k.GetUtilisationRatioByPoolIDAndAssetID(ctx, pair.AssetOutPoolID, pair.AssetOut) + perc1, _ := sdk.NewDecFromStr(types.Perc1) + perc2, _ := sdk.NewDecFromStr(types.Perc2) if borrowPos.StableBorrowRate.GTE(assetStats.StableBorrowApr.Add(perc1)) { borrowPos.StableBorrowRate = assetStats.StableBorrowApr k.SetBorrow(ctx, borrowPos) diff --git a/x/lend/keeper/keeper.go b/x/lend/keeper/keeper.go index e3e81d552..a3e739fa6 100644 --- a/x/lend/keeper/keeper.go +++ b/x/lend/keeper/keeper.go @@ -2,6 +2,7 @@ package keeper import ( "fmt" + assettypes "github.com/comdex-official/comdex/x/asset/types" "github.com/comdex-official/comdex/x/lend/expected" "github.com/comdex-official/comdex/x/lend/types" liquidationtypes "github.com/comdex-official/comdex/x/liquidation/types" @@ -37,13 +38,13 @@ func NewKeeper( asset expected.AssetKeeper, market expected.MarketKeeper, -) *Keeper { +) Keeper { // set KeyTable if it has not already been set if !ps.HasKeyTable() { ps = ps.WithKeyTable(types.ParamKeyTable()) } - return &Keeper{ + return Keeper{ cdc: cdc, storeKey: storeKey, @@ -66,7 +67,7 @@ func (k Keeper) ModuleBalance(ctx sdk.Context, moduleName string, denom string) func uint64InAssetData(a uint64, list []types.AssetDataPoolMapping) bool { for _, b := range list { - if b.AssetId == a { + if b.AssetID == a { return true } } @@ -74,14 +75,24 @@ func uint64InAssetData(a uint64, list []types.AssetDataPoolMapping) bool { } func (k Keeper) LendAsset(ctx sdk.Context, lenderAddr string, AssetID uint64, Amount sdk.Coin, PoolID, AppID uint64) error { - asset, _ := k.GetAsset(ctx, AssetID) - pool, _ := k.GetPool(ctx, PoolID) + asset, found := k.GetAsset(ctx, AssetID) + if !found { + return assettypes.ErrorAssetDoesNotExist + } + pool, found := k.GetPool(ctx, PoolID) + if !found { + return types.ErrPoolNotFound + } + _, found = k.GetApp(ctx, AppID) + if !found { + return types.ErrorAppMappingDoesNotExist + } if Amount.Denom != asset.Denom { return sdkerrors.Wrap(types.ErrBadOfferCoinAmount, Amount.Denom) } - found := uint64InAssetData(AssetID, pool.AssetData) + found = uint64InAssetData(AssetID, pool.AssetData) if !found { return sdkerrors.Wrap(types.ErrInvalidAssetIDForPool, strconv.FormatUint(AssetID, 10)) } @@ -98,7 +109,7 @@ func (k Keeper) LendAsset(ctx sdk.Context, lenderAddr string, AssetID uint64, Am if !found { return sdkerrors.Wrap(types.ErrorAssetRatesStatsNotFound, strconv.FormatUint(AssetID, 10)) } - cAsset, _ := k.GetAsset(ctx, assetRatesStat.CAssetId) + cAsset, _ := k.GetAsset(ctx, assetRatesStat.CAssetID) cToken := sdk.NewCoin(cAsset.Denom, Amount.Amount) if err := k.bank.SendCoinsFromAccountToModule(ctx, addr, pool.ModuleName, loanTokens); err != nil { @@ -116,62 +127,30 @@ func (k Keeper) LendAsset(ctx sdk.Context, lenderAddr string, AssetID uint64, Am return err } - ////////////////////////////////////////////// lendID := k.GetUserLendIDHistory(ctx) lendPos := types.LendAsset{ ID: lendID + 1, - AssetId: AssetID, - PoolId: PoolID, + AssetID: AssetID, + PoolID: PoolID, Owner: lenderAddr, AmountIn: Amount, LendingTime: ctx.BlockTime(), UpdatedAmountIn: Amount.Amount, AvailableToBorrow: Amount.Amount, Reward_Accumulated: sdk.ZeroInt(), - AppId: AppID, - } - assetStats, found := k.GetAssetStatsByPoolIDAndAssetID(ctx, AssetID, PoolID) - if !found { - assetStats.TotalLend = sdk.ZeroInt() - } - AssetStats := types.AssetStats{ - PoolId: PoolID, - AssetId: AssetID, - TotalLend: assetStats.TotalLend.Add(Amount.Amount), - } - - depositStats, _ := k.GetDepositStats(ctx) - userDepositStats, _ := k.GetUserDepositStats(ctx) - - var balanceStats []types.BalanceStats - for _, v := range depositStats.BalanceStats { - if v.AssetId == AssetID { - v.Amount = v.Amount.Add(Amount.Amount) - } - balanceStats = append(balanceStats, v) - newDepositStats := types.DepositStats{BalanceStats: balanceStats} - k.SetDepositStats(ctx, newDepositStats) + CPoolName: pool.CPoolName, + AppID: AppID, } - - for _, v := range userDepositStats.BalanceStats { - if v.AssetId == AssetID { - v.Amount = v.Amount.Add(Amount.Amount) - } - balanceStats = append(balanceStats, v) - newDepositStats := types.DepositStats{BalanceStats: balanceStats} - k.SetUserDepositStats(ctx, newDepositStats) - - } - k.SetAssetStatsByPoolIDAndAssetID(ctx, AssetStats) + k.UpdateLendStats(ctx, AssetID, PoolID, Amount.Amount, true) k.SetUserLendIDHistory(ctx, lendPos.ID) k.SetLend(ctx, lendPos) - k.SetLendForAddressByAsset(ctx, addr, lendPos.AssetId, lendPos.ID, lendPos.PoolId) + k.SetLendForAddressByAsset(ctx, addr, lendPos.AssetID, lendPos.ID, lendPos.PoolID) err = k.UpdateUserLendIDMapping(ctx, lenderAddr, lendPos.ID, true) if err != nil { return err } - err = k.UpdateLendIDByOwnerAndPoolMapping(ctx, lenderAddr, lendPos.ID, lendPos.PoolId, true) + err = k.UpdateLendIDByOwnerAndPoolMapping(ctx, lenderAddr, lendPos.ID, lendPos.PoolID, true) if err != nil { return err } @@ -192,18 +171,22 @@ func (k Keeper) WithdrawAsset(ctx sdk.Context, addr string, lendID uint64, withd if !found { return types.ErrLendNotFound } - getAsset, _ := k.GetAsset(ctx, lendPos.AssetId) - pool, _ := k.GetPool(ctx, lendPos.PoolId) + getAsset, _ := k.GetAsset(ctx, lendPos.AssetID) + pool, _ := k.GetPool(ctx, lendPos.PoolID) if lendPos.Owner != addr { return types.ErrLendAccessUnauthorised } + if withdrawal.Amount.GT(lendPos.AvailableToBorrow) { + return types.ErrWithdrawAmountLimitExceeds + } + if withdrawal.Denom != getAsset.Denom { return sdkerrors.Wrap(types.ErrBadOfferCoinAmount, withdrawal.Denom) } - reservedAmount := k.GetReserveFunds(ctx, withdrawal.Denom) + reservedAmount := k.GetReserveFunds(ctx, pool) availableAmount := k.ModuleBalance(ctx, pool.ModuleName, withdrawal.Denom) if withdrawal.Amount.GT(lendPos.AmountIn.Amount) { @@ -214,125 +197,71 @@ func (k Keeper) WithdrawAsset(ctx sdk.Context, addr string, lendID uint64, withd return sdkerrors.Wrap(types.ErrLendingPoolInsufficient, withdrawal.String()) } - assetRatesStat, found := k.GetAssetRatesStats(ctx, lendPos.AssetId) + assetRatesStat, found := k.GetAssetRatesStats(ctx, lendPos.AssetID) if !found { - return sdkerrors.Wrap(types.ErrorAssetRatesStatsNotFound, strconv.FormatUint(lendPos.AssetId, 10)) + return sdkerrors.Wrap(types.ErrorAssetRatesStatsNotFound, strconv.FormatUint(lendPos.AssetID, 10)) } - cAsset, _ := k.GetAsset(ctx, assetRatesStat.CAssetId) + cAsset, _ := k.GetAsset(ctx, assetRatesStat.CAssetID) cToken := sdk.NewCoin(cAsset.Denom, withdrawal.Amount) + cTokens := sdk.NewCoins(cToken) tokens := sdk.NewCoins(withdrawal) if err != nil { return err } - _, found = k.GetLendIDToBorrowIDMapping(ctx, lendID) - if !found { - if withdrawal.Amount.LT(lendPos.UpdatedAmountIn) { - if err := k.SendCoinFromAccountToModule(ctx, lenderAddr, pool.ModuleName, cToken); err != nil { - return err - } - - //burn c/Token - cTokens := sdk.NewCoins(cToken) - err = k.bank.BurnCoins(ctx, pool.ModuleName, cTokens) - if err != nil { - return err - } - - if err := k.bank.SendCoinsFromModuleToAccount(ctx, pool.ModuleName, lenderAddr, tokens); err != nil { - return err - } - - lendPos.AmountIn = lendPos.AmountIn.Sub(withdrawal) - lendPos.UpdatedAmountIn = lendPos.UpdatedAmountIn.Sub(withdrawal.Amount) - lendPos.AvailableToBorrow = lendPos.AvailableToBorrow.Sub(withdrawal.Amount) - assetStats, _ := k.GetAssetStatsByPoolIDAndAssetID(ctx, lendPos.AssetId, lendPos.PoolId) - assetStats.TotalLend = assetStats.TotalLend.Sub(withdrawal.Amount) - depositStats, _ := k.GetDepositStats(ctx) - userDepositStats, _ := k.GetUserDepositStats(ctx) - - var balanceStats []types.BalanceStats - for _, v := range depositStats.BalanceStats { - if v.AssetId == lendPos.AssetId { - v.Amount = v.Amount.Sub(withdrawal.Amount) - } - balanceStats = append(balanceStats, v) - newDepositStats := types.DepositStats{BalanceStats: balanceStats} - k.SetDepositStats(ctx, newDepositStats) - } + lendIDToBorrowIDMapping, _ := k.GetLendIDToBorrowIDMapping(ctx, lendID) + if lendIDToBorrowIDMapping.BorrowingID == nil && withdrawal.Amount.LT(lendPos.UpdatedAmountIn) { + if err = k.SendCoinFromAccountToModule(ctx, lenderAddr, pool.ModuleName, cToken); err != nil { + return err + } - for _, v := range userDepositStats.BalanceStats { - if v.AssetId == lendPos.AssetId { - v.Amount = v.Amount.Sub(withdrawal.Amount) - } - balanceStats = append(balanceStats, v) - newDepositStats := types.DepositStats{BalanceStats: balanceStats} - k.SetUserDepositStats(ctx, newDepositStats) + //burn c/Token + err = k.bank.BurnCoins(ctx, pool.ModuleName, cTokens) + if err != nil { + return err + } - } + if err = k.bank.SendCoinsFromModuleToAccount(ctx, pool.ModuleName, lenderAddr, tokens); err != nil { + return err + } - k.SetAssetStatsByPoolIDAndAssetID(ctx, assetStats) - k.SetLend(ctx, lendPos) + if withdrawal.Amount.LTE(lendPos.AmountIn.Amount) { + k.UpdateLendStats(ctx, lendPos.AssetID, lendPos.PoolID, withdrawal.Amount, false) } else { - return nil + k.UpdateLendStats(ctx, lendPos.AssetID, lendPos.PoolID, lendPos.AmountIn.Amount, false) } - } else { - if withdrawal.Amount.LT(lendPos.AvailableToBorrow) { - // add CR validation - // lend to borrow mapping - - if err := k.SendCoinFromAccountToModule(ctx, lenderAddr, pool.ModuleName, cToken); err != nil { - return err - } - - //burn c/Token - cTokens := sdk.NewCoins(cToken) - err = k.bank.BurnCoins(ctx, pool.ModuleName, cTokens) - if err != nil { - return err - } - - if err := k.bank.SendCoinsFromModuleToAccount(ctx, pool.ModuleName, lenderAddr, tokens); err != nil { - return err - } - - lendPos.AmountIn = lendPos.AmountIn.Sub(withdrawal) - lendPos.UpdatedAmountIn = lendPos.UpdatedAmountIn.Sub(withdrawal.Amount) - lendPos.AvailableToBorrow = lendPos.AvailableToBorrow.Sub(withdrawal.Amount) - assetStats, _ := k.GetAssetStatsByPoolIDAndAssetID(ctx, lendPos.AssetId, lendPos.PoolId) - assetStats.TotalLend = assetStats.TotalLend.Sub(withdrawal.Amount) - - depositStats, _ := k.GetDepositStats(ctx) - userDepositStats, _ := k.GetUserDepositStats(ctx) - - var balanceStats []types.BalanceStats - for _, v := range depositStats.BalanceStats { - if v.AssetId == lendPos.AssetId { - v.Amount = v.Amount.Sub(withdrawal.Amount) - } - balanceStats = append(balanceStats, v) - newDepositStats := types.DepositStats{BalanceStats: balanceStats} - k.SetDepositStats(ctx, newDepositStats) - } + lendPos.UpdatedAmountIn = lendPos.UpdatedAmountIn.Sub(withdrawal.Amount) + lendPos.AvailableToBorrow = lendPos.AvailableToBorrow.Sub(withdrawal.Amount) + k.SetLend(ctx, lendPos) - for _, v := range userDepositStats.BalanceStats { - if v.AssetId == lendPos.AssetId { - v.Amount = v.Amount.Sub(withdrawal.Amount) - } - balanceStats = append(balanceStats, v) - newDepositStats := types.DepositStats{BalanceStats: balanceStats} - k.SetUserDepositStats(ctx, newDepositStats) + } else if withdrawal.Amount.LT(lendPos.AvailableToBorrow) { + // add CR validation + // lend to borrow mapping + if err = k.SendCoinFromAccountToModule(ctx, lenderAddr, pool.ModuleName, cToken); err != nil { + return err + } + //burn c/Token + err = k.bank.BurnCoins(ctx, pool.ModuleName, cTokens) + if err != nil { + return err + } - } + if err = k.bank.SendCoinsFromModuleToAccount(ctx, pool.ModuleName, lenderAddr, tokens); err != nil { + return err + } - k.SetAssetStatsByPoolIDAndAssetID(ctx, assetStats) - k.SetLend(ctx, lendPos) + if withdrawal.Amount.LTE(lendPos.AmountIn.Amount) { + k.UpdateLendStats(ctx, lendPos.AssetID, lendPos.PoolID, withdrawal.Amount, false) } else { - return nil + k.UpdateLendStats(ctx, lendPos.AssetID, lendPos.PoolID, lendPos.AmountIn.Amount, false) } + lendPos.UpdatedAmountIn = lendPos.UpdatedAmountIn.Sub(withdrawal.Amount) + lendPos.AvailableToBorrow = lendPos.AvailableToBorrow.Sub(withdrawal.Amount) + k.SetLend(ctx, lendPos) + } else { + return types.ErrWithdrawAmountLimitExceeds } - return nil } @@ -347,18 +276,18 @@ func (k Keeper) DepositAsset(ctx sdk.Context, addr string, lendID uint64, deposi return types.ErrLendNotFound } - getAsset, _ := k.GetAsset(ctx, lendPos.AssetId) - pool, _ := k.GetPool(ctx, lendPos.PoolId) + getAsset, _ := k.GetAsset(ctx, lendPos.AssetID) + pool, _ := k.GetPool(ctx, lendPos.PoolID) if deposit.Denom != getAsset.Denom { return sdkerrors.Wrap(types.ErrBadOfferCoinAmount, deposit.Denom) } - assetRatesStat, found := k.GetAssetRatesStats(ctx, lendPos.AssetId) + assetRatesStat, found := k.GetAssetRatesStats(ctx, lendPos.AssetID) if !found { - return sdkerrors.Wrap(types.ErrorAssetRatesStatsNotFound, strconv.FormatUint(lendPos.AssetId, 10)) + return sdkerrors.Wrap(types.ErrorAssetRatesStatsNotFound, strconv.FormatUint(lendPos.AssetID, 10)) } - cAsset, _ := k.GetAsset(ctx, assetRatesStat.CAssetId) + cAsset, _ := k.GetAsset(ctx, assetRatesStat.CAssetID) cToken := sdk.NewCoin(cAsset.Denom, deposit.Amount) cTokens := sdk.NewCoins(cToken) @@ -367,7 +296,7 @@ func (k Keeper) DepositAsset(ctx sdk.Context, addr string, lendID uint64, deposi return err } - if err := k.bank.SendCoinsFromAccountToModule(ctx, lenderAddr, pool.ModuleName, sdk.NewCoins(deposit)); err != nil { + if err = k.bank.SendCoinsFromAccountToModule(ctx, lenderAddr, pool.ModuleName, sdk.NewCoins(deposit)); err != nil { return err } @@ -379,33 +308,8 @@ func (k Keeper) DepositAsset(ctx sdk.Context, addr string, lendID uint64, deposi lendPos.AmountIn = lendPos.AmountIn.Add(deposit) lendPos.UpdatedAmountIn = lendPos.UpdatedAmountIn.Add(deposit.Amount) lendPos.AvailableToBorrow = lendPos.AvailableToBorrow.Add(deposit.Amount) - assetStats, _ := k.GetAssetStatsByPoolIDAndAssetID(ctx, lendPos.AssetId, lendPos.PoolId) - assetStats.TotalLend = assetStats.TotalLend.Add(deposit.Amount) - - depositStats, _ := k.GetDepositStats(ctx) - userDepositStats, _ := k.GetUserDepositStats(ctx) - var balanceStats []types.BalanceStats - for _, v := range depositStats.BalanceStats { - if v.AssetId == lendPos.AssetId { - v.Amount = v.Amount.Add(deposit.Amount) - } - balanceStats = append(balanceStats, v) - newDepositStats := types.DepositStats{BalanceStats: balanceStats} - k.SetDepositStats(ctx, newDepositStats) - } - - for _, v := range userDepositStats.BalanceStats { - if v.AssetId == lendPos.AssetId { - v.Amount = v.Amount.Add(deposit.Amount) - } - balanceStats = append(balanceStats, v) - newDepositStats := types.DepositStats{BalanceStats: balanceStats} - k.SetUserDepositStats(ctx, newDepositStats) - - } - - k.SetAssetStatsByPoolIDAndAssetID(ctx, assetStats) + k.UpdateLendStats(ctx, lendPos.AssetID, lendPos.PoolID, deposit.Amount, true) k.SetLend(ctx, lendPos) return nil @@ -421,17 +325,17 @@ func (k Keeper) CloseLend(ctx sdk.Context, addr string, lendID uint64) error { if !found { return types.ErrLendNotFound } - pool, _ := k.GetPool(ctx, lendPos.PoolId) + pool, _ := k.GetPool(ctx, lendPos.PoolID) if lendPos.Owner != addr { return types.ErrLendAccessUnauthorised } - _, found = k.GetLendIDToBorrowIDMapping(ctx, lendID) - if found { + lendIDToBorrowIDMapping, _ := k.GetLendIDToBorrowIDMapping(ctx, lendID) + if lendIDToBorrowIDMapping.BorrowingID != nil { return types.ErrBorrowingPositionOpen } - reservedAmount := k.GetReserveFunds(ctx, lendPos.AmountIn.Denom) + reservedAmount := k.GetReserveFunds(ctx, pool) availableAmount := k.ModuleBalance(ctx, pool.ModuleName, lendPos.AmountIn.Denom) if lendPos.UpdatedAmountIn.GT(availableAmount.Sub(reservedAmount)) { @@ -439,14 +343,14 @@ func (k Keeper) CloseLend(ctx sdk.Context, addr string, lendID uint64) error { } tokens := sdk.NewCoins(sdk.NewCoin(lendPos.AmountIn.Denom, lendPos.UpdatedAmountIn)) - assetRatesStat, found := k.GetAssetRatesStats(ctx, lendPos.AssetId) + assetRatesStat, found := k.GetAssetRatesStats(ctx, lendPos.AssetID) if !found { - return sdkerrors.Wrap(types.ErrorAssetRatesStatsNotFound, strconv.FormatUint(lendPos.AssetId, 10)) + return sdkerrors.Wrap(types.ErrorAssetRatesStatsNotFound, strconv.FormatUint(lendPos.AssetID, 10)) } - cAsset, _ := k.GetAsset(ctx, assetRatesStat.CAssetId) + cAsset, _ := k.GetAsset(ctx, assetRatesStat.CAssetID) cToken := sdk.NewCoin(cAsset.Denom, lendPos.UpdatedAmountIn) - if err := k.SendCoinFromAccountToModule(ctx, lenderAddr, pool.ModuleName, cToken); err != nil { + if err = k.SendCoinFromAccountToModule(ctx, lenderAddr, pool.ModuleName, cToken); err != nil { return err } @@ -456,40 +360,18 @@ func (k Keeper) CloseLend(ctx sdk.Context, addr string, lendID uint64) error { return err } - if err := k.bank.SendCoinsFromModuleToAccount(ctx, pool.ModuleName, lenderAddr, tokens); err != nil { + if err = k.bank.SendCoinsFromModuleToAccount(ctx, pool.ModuleName, lenderAddr, tokens); err != nil { return err } - depositStats, _ := k.GetDepositStats(ctx) - userDepositStats, _ := k.GetUserDepositStats(ctx) - - var balanceStats []types.BalanceStats - for _, v := range depositStats.BalanceStats { - if v.AssetId == lendPos.AssetId { - v.Amount = v.Amount.Sub(lendPos.UpdatedAmountIn) - } - balanceStats = append(balanceStats, v) - newDepositStats := types.DepositStats{BalanceStats: balanceStats} - k.SetDepositStats(ctx, newDepositStats) - } - - for _, v := range userDepositStats.BalanceStats { - if v.AssetId == lendPos.AssetId { - v.Amount = v.Amount.Sub(lendPos.UpdatedAmountIn) - } - balanceStats = append(balanceStats, v) - newDepositStats := types.DepositStats{BalanceStats: balanceStats} - k.SetUserDepositStats(ctx, newDepositStats) - - } - - k.DeleteLendForAddressByAsset(ctx, lenderAddr, lendPos.AssetId, lendPos.PoolId) + k.UpdateLendStats(ctx, lendPos.AssetID, lendPos.PoolID, lendPos.AmountIn.Amount, true) + k.DeleteLendForAddressByAsset(ctx, lenderAddr, lendPos.AssetID, lendPos.PoolID) err = k.UpdateUserLendIDMapping(ctx, addr, lendPos.ID, false) if err != nil { return err } - err = k.UpdateLendIDByOwnerAndPoolMapping(ctx, addr, lendPos.ID, lendPos.PoolId, false) + err = k.UpdateLendIDByOwnerAndPoolMapping(ctx, addr, lendPos.ID, lendPos.PoolID, false) if err != nil { return err } @@ -497,9 +379,6 @@ func (k Keeper) CloseLend(ctx sdk.Context, addr string, lendID uint64) error { if err != nil { return err } - assetStats, _ := k.GetAssetStatsByPoolIDAndAssetID(ctx, lendPos.AssetId, lendPos.PoolId) - assetStats.TotalLend = assetStats.TotalLend.Sub(lendPos.UpdatedAmountIn) - k.SetAssetStatsByPoolIDAndAssetID(ctx, assetStats) k.DeleteLend(ctx, lendPos.ID) return nil } @@ -529,17 +408,29 @@ func (k Keeper) BorrowAsset(ctx sdk.Context, addr string, lendID, pairID uint64, if !found { return types.ErrorPairNotFound } - pairMapping, _ := k.GetAssetToPair(ctx, pair.AssetIn, lendPos.PoolId) - found = uint64InSlice(pairID, pairMapping.PairId) + pairMapping, _ := k.GetAssetToPair(ctx, pair.AssetIn, lendPos.PoolID) + found = uint64InSlice(pairID, pairMapping.PairID) if !found { return types.ErrorPairNotFound } //check cr ratio - assetIn, _ := k.GetAsset(ctx, lendPos.AssetId) - assetOut, _ := k.GetAsset(ctx, pair.AssetOut) - assetInRatesStats, _ := k.GetAssetRatesStats(ctx, pair.AssetIn) + assetIn, found := k.GetAsset(ctx, lendPos.AssetID) + if !found { + return assettypes.ErrorAssetDoesNotExist + } + assetOut, found := k.GetAsset(ctx, pair.AssetOut) + if !found { + return assettypes.ErrorAssetDoesNotExist + } + assetInRatesStats, found := k.GetAssetRatesStats(ctx, pair.AssetIn) + if !found { + return types.ErrAssetStatsNotFound + } - cAsset, _ := k.GetAsset(ctx, assetInRatesStats.CAssetId) + cAsset, found := k.GetAsset(ctx, assetInRatesStats.CAssetID) + if !found { + return assettypes.ErrorAssetDoesNotExist + } if AmountIn.Denom != cAsset.Denom { return types.ErrBadOfferCoinType } @@ -552,10 +443,15 @@ func (k Keeper) BorrowAsset(ctx sdk.Context, addr string, lendID, pairID uint64, return types.ErrAvailableToBorrowInsufficient } - AssetInPool, _ := k.GetPool(ctx, lendPos.PoolId) - AssetOutPool, _ := k.GetPool(ctx, pair.AssetOutPoolId) + AssetInPool, found := k.GetPool(ctx, lendPos.PoolID) + if !found { + return types.ErrPoolNotFound + } + AssetOutPool, found := k.GetPool(ctx, pair.AssetOutPoolID) + if !found { + return types.ErrPoolNotFound + } - //assetRatesStats, _ := k.GetAssetRatesStats(ctx, pair.AssetOut) if IsStableBorrow && !assetInRatesStats.EnableStableBorrow { return sdkerrors.Wrap(types.ErrStableBorrowDisabled, loan.String()) } @@ -566,37 +462,31 @@ func (k Keeper) BorrowAsset(ctx sdk.Context, addr string, lendID, pairID uint64, } borrowID := k.GetUserBorrowIDHistory(ctx) - if !pair.IsInterPool { - // check sufficient amt in pool to borrow - reservedAmount := k.GetReserveFunds(ctx, loan.Denom) - availableAmount := k.ModuleBalance(ctx, AssetOutPool.ModuleName, loan.Denom) - - if loan.Amount.GT(availableAmount.Sub(reservedAmount)) { - return sdkerrors.Wrap(types.ErrBorrowingPoolInsufficient, loan.String()) - } + reservedAmount := k.GetReserveFunds(ctx, AssetOutPool) + availableAmount := k.ModuleBalance(ctx, AssetOutPool.ModuleName, loan.Denom) + // check sufficient amt in pool to borrow + if loan.Amount.GT(availableAmount.Sub(reservedAmount)) { + return sdkerrors.Wrap(types.ErrBorrowingPoolInsufficient, loan.String()) + } + if !pair.IsInterPool { AmountOut := loan // take c/Tokens from the user - if err := k.SendCoinFromAccountToModule(ctx, lenderAddr, AssetInPool.ModuleName, AmountIn); err != nil { + if err = k.SendCoinFromAccountToModule(ctx, lenderAddr, AssetInPool.ModuleName, AmountIn); err != nil { return err } - if err := k.SendCoinFromModuleToAccount(ctx, AssetOutPool.ModuleName, lenderAddr, loan); err != nil { + if err = k.SendCoinFromModuleToAccount(ctx, AssetOutPool.ModuleName, lenderAddr, loan); err != nil { return err } var StableBorrowRate sdk.Dec - if assetInRatesStats.EnableStableBorrow { - if IsStableBorrow { - StableBorrowRate, err = k.GetBorrowAPRByAssetID(ctx, AssetOutPool.PoolId, pair.AssetOut, IsStableBorrow) - if err != nil { - return err - } - } else { - StableBorrowRate = sdk.ZeroDec() + if assetInRatesStats.EnableStableBorrow && IsStableBorrow { + StableBorrowRate, err = k.GetBorrowAPRByAssetID(ctx, AssetOutPool.PoolID, pair.AssetOut, IsStableBorrow) + if err != nil { + return err } } else { - IsStableBorrow = false StableBorrowRate = sdk.ZeroDec() } @@ -612,55 +502,15 @@ func (k Keeper) BorrowAsset(ctx sdk.Context, addr string, lendID, pairID uint64, BorrowingTime: ctx.BlockTime(), UpdatedAmountOut: AmountOut.Amount, Interest_Accumulated: sdk.ZeroInt(), + CPoolName: AssetOutPool.CPoolName, } - - assetStats, found := k.GetAssetStatsByPoolIDAndAssetID(ctx, pair.AssetOut, pair.AssetOutPoolId) - if !found { - assetStats.TotalBorrowed = sdk.ZeroInt() - } - if borrowPos.IsStableBorrow { - AssetStats := types.AssetStats{ - PoolId: pair.AssetOutPoolId, - AssetId: pair.AssetOut, - TotalStableBorrowed: assetStats.TotalStableBorrowed.Add(AmountOut.Amount), - } - k.SetAssetStatsByPoolIDAndAssetID(ctx, AssetStats) - } else { - AssetStats := types.AssetStats{ - PoolId: pair.AssetOutPoolId, - AssetId: pair.AssetOut, - TotalBorrowed: assetStats.TotalBorrowed.Add(AmountOut.Amount), - } - k.SetAssetStatsByPoolIDAndAssetID(ctx, AssetStats) - } - err := k.UpdateBorrowIdsMapping(ctx, borrowPos.ID, true) + k.UpdateBorrowStats(ctx, pair, borrowPos, AmountOut.Amount, true) + err = k.UpdateBorrowIdsMapping(ctx, borrowPos.ID, true) if err != nil { return err } lendPos.AvailableToBorrow = lendPos.AvailableToBorrow.Sub(AmountIn.Amount) k.SetLend(ctx, lendPos) - - depositStats, _ := k.GetDepositStats(ctx) - borrowStats, _ := k.GetBorrowStats(ctx) - var balanceStats []types.BalanceStats - for _, v := range depositStats.BalanceStats { - if v.AssetId == lendPos.AssetId { - v.Amount = v.Amount.Sub(loan.Amount) - } - balanceStats = append(balanceStats, v) - newDepositStats := types.DepositStats{BalanceStats: balanceStats} - k.SetDepositStats(ctx, newDepositStats) - } - - for _, v := range borrowStats.BalanceStats { - if v.AssetId == lendPos.AssetId { - v.Amount = v.Amount.Add(loan.Amount) - } - balanceStats = append(balanceStats, v) - newDepositStats := types.DepositStats{BalanceStats: balanceStats} - k.SetBorrowStats(ctx, newDepositStats) - } - k.SetUserBorrowIDHistory(ctx, borrowPos.ID) k.SetBorrow(ctx, borrowPos) k.SetBorrowForAddressByPair(ctx, lenderAddr, pairID, borrowPos.ID) @@ -668,7 +518,7 @@ func (k Keeper) BorrowAsset(ctx sdk.Context, addr string, lendID, pairID uint64, if err != nil { return err } - err = k.UpdateBorrowIDByOwnerAndPoolMapping(ctx, lendPos.Owner, borrowPos.ID, pair.AssetOutPoolId, true) + err = k.UpdateBorrowIDByOwnerAndPoolMapping(ctx, lendPos.Owner, borrowPos.ID, pair.AssetOutPoolID, true) if err != nil { return err } @@ -677,12 +527,6 @@ func (k Keeper) BorrowAsset(ctx sdk.Context, addr string, lendID, pairID uint64, return err } } else { - reservedAmount := k.GetReserveFunds(ctx, loan.Denom) - availableAmount := k.ModuleBalance(ctx, AssetOutPool.ModuleName, loan.Denom) - - if loan.Amount.GT(availableAmount.Sub(reservedAmount)) { - return sdkerrors.Wrap(types.ErrBorrowingPoolInsufficient, loan.String()) - } updatedAmtIn := AmountIn.Amount.ToDec().Mul(assetInRatesStats.Ltv) priceAssetIn, found := k.GetPriceForAsset(ctx, pair.AssetIn) if !found { @@ -690,56 +534,68 @@ func (k Keeper) BorrowAsset(ctx sdk.Context, addr string, lendID, pairID uint64, } amtIn := updatedAmtIn.TruncateInt().Mul(sdk.NewIntFromUint64(priceAssetIn)) - priceFirstBridgedAsset, _ := k.GetPriceForAsset(ctx, AssetInPool.FirstBridgedAssetId) - priceSecondBridgedAsset, found := k.GetPriceForAsset(ctx, AssetInPool.SecondBridgedAssetId) + priceFirstBridgedAsset, found := k.GetPriceForAsset(ctx, AssetInPool.FirstBridgedAssetID) if !found { return types.ErrorPriceDoesNotExist } - firstBridgedAsset, _ := k.GetAsset(ctx, AssetInPool.FirstBridgedAssetId) - secondBridgedAsset, _ := k.GetAsset(ctx, AssetInPool.SecondBridgedAssetId) - + priceSecondBridgedAsset, found := k.GetPriceForAsset(ctx, AssetInPool.SecondBridgedAssetID) + if !found { + return types.ErrorPriceDoesNotExist + } + firstBridgedAsset, found := k.GetAsset(ctx, AssetInPool.FirstBridgedAssetID) + if !found { + return assettypes.ErrorAssetDoesNotExist + } + secondBridgedAsset, found := k.GetAsset(ctx, AssetInPool.SecondBridgedAssetID) + if !found { + return assettypes.ErrorAssetDoesNotExist + } // qty of first and second bridged asset to be sent over different pool according to the borrow Pool + if priceFirstBridgedAsset == types.Uint64Zero || priceSecondBridgedAsset == types.Uint64Zero { + return types.ErrorPriceDoesNotExist + } + firstBridgedAssetQty := amtIn.Quo(sdk.NewIntFromUint64(priceFirstBridgedAsset)) firstBridgedAssetBal := k.ModuleBalance(ctx, AssetInPool.ModuleName, firstBridgedAsset.Denom) secondBridgedAssetQty := amtIn.Quo(sdk.NewIntFromUint64(priceSecondBridgedAsset)) secondBridgedAssetBal := k.ModuleBalance(ctx, AssetInPool.ModuleName, secondBridgedAsset.Denom) - firstBridgedAssetRatesStats, _ := k.GetAssetRatesStats(ctx, AssetInPool.FirstBridgedAssetId) - secondBridgedAssetRatesStats, _ := k.GetAssetRatesStats(ctx, AssetInPool.SecondBridgedAssetId) - + firstBridgedAssetRatesStats, found := k.GetAssetRatesStats(ctx, AssetInPool.FirstBridgedAssetID) + if !found { + return types.ErrAssetStatsNotFound + } + secondBridgedAssetRatesStats, found := k.GetAssetRatesStats(ctx, AssetInPool.SecondBridgedAssetID) + if !found { + return types.ErrAssetStatsNotFound + } if firstBridgedAssetQty.LT(firstBridgedAssetBal) { - err := k.VerifyCollaterlizationRatio(ctx, firstBridgedAssetQty, firstBridgedAsset, loan.Amount, assetOut, firstBridgedAssetRatesStats.Ltv) + err = k.VerifyCollaterlizationRatio(ctx, firstBridgedAssetQty, firstBridgedAsset, loan.Amount, assetOut, firstBridgedAssetRatesStats.Ltv) if err != nil { return err } // take c/Tokens from the user - if err := k.SendCoinFromAccountToModule(ctx, lenderAddr, AssetInPool.ModuleName, AmountIn); err != nil { + if err = k.SendCoinFromAccountToModule(ctx, lenderAddr, AssetInPool.ModuleName, AmountIn); err != nil { return err } bridgedAssetAmount := sdk.NewCoin(firstBridgedAsset.Denom, firstBridgedAssetQty) - if err := k.SendCoinFromModuleToModule(ctx, AssetInPool.ModuleName, AssetOutPool.ModuleName, sdk.NewCoins(bridgedAssetAmount)); err != nil { + if err = k.SendCoinFromModuleToModule(ctx, AssetInPool.ModuleName, AssetOutPool.ModuleName, sdk.NewCoins(bridgedAssetAmount)); err != nil { return err } - if err := k.SendCoinFromModuleToAccount(ctx, AssetOutPool.ModuleName, lenderAddr, loan); err != nil { + if err = k.SendCoinFromModuleToAccount(ctx, AssetOutPool.ModuleName, lenderAddr, loan); err != nil { return err } AmountOut := loan var StableBorrowRate sdk.Dec - if assetInRatesStats.EnableStableBorrow { - if IsStableBorrow { - StableBorrowRate, err = k.GetBorrowAPRByAssetID(ctx, AssetOutPool.PoolId, pair.AssetOut, IsStableBorrow) - if err != nil { - return err - } - } else { - StableBorrowRate = sdk.ZeroDec() + if assetInRatesStats.EnableStableBorrow && IsStableBorrow { + StableBorrowRate, err = k.GetBorrowAPRByAssetID(ctx, AssetOutPool.PoolID, pair.AssetOut, IsStableBorrow) + if err != nil { + return err } } else { - IsStableBorrow = false StableBorrowRate = sdk.ZeroDec() } @@ -755,48 +611,9 @@ func (k Keeper) BorrowAsset(ctx sdk.Context, addr string, lendID, pairID uint64, BorrowingTime: ctx.BlockTime(), UpdatedAmountOut: AmountOut.Amount, Interest_Accumulated: sdk.ZeroInt(), + CPoolName: AssetOutPool.CPoolName, } - - assetStats, found := k.GetAssetStatsByPoolIDAndAssetID(ctx, pair.AssetOut, pair.AssetOutPoolId) - if !found { - assetStats.TotalBorrowed = sdk.ZeroInt() - } - if borrowPos.StableBorrowRate.GT(sdk.ZeroDec()) { - AssetStats := types.AssetStats{ - PoolId: pair.AssetOutPoolId, - AssetId: pair.AssetOut, - TotalStableBorrowed: assetStats.TotalStableBorrowed.Add(AmountOut.Amount), - } - k.SetAssetStatsByPoolIDAndAssetID(ctx, AssetStats) - } else { - AssetStats := types.AssetStats{ - PoolId: pair.AssetOutPoolId, - AssetId: pair.AssetOut, - TotalBorrowed: assetStats.TotalBorrowed.Add(AmountOut.Amount), - } - k.SetAssetStatsByPoolIDAndAssetID(ctx, AssetStats) - } - - depositStats, _ := k.GetDepositStats(ctx) - borrowStats, _ := k.GetBorrowStats(ctx) - var balanceStats []types.BalanceStats - for _, v := range depositStats.BalanceStats { - if v.AssetId == lendPos.AssetId { - v.Amount = v.Amount.Sub(loan.Amount) - } - balanceStats = append(balanceStats, v) - newDepositStats := types.DepositStats{BalanceStats: balanceStats} - k.SetDepositStats(ctx, newDepositStats) - } - - for _, v := range borrowStats.BalanceStats { - if v.AssetId == lendPos.AssetId { - v.Amount = v.Amount.Add(loan.Amount) - } - balanceStats = append(balanceStats, v) - newDepositStats := types.DepositStats{BalanceStats: balanceStats} - k.SetBorrowStats(ctx, newDepositStats) - } + k.UpdateBorrowStats(ctx, pair, borrowPos, AmountOut.Amount, true) err = k.UpdateBorrowIdsMapping(ctx, borrowPos.ID, true) if err != nil { @@ -811,7 +628,7 @@ func (k Keeper) BorrowAsset(ctx sdk.Context, addr string, lendID, pairID uint64, if err != nil { return err } - err = k.UpdateBorrowIDByOwnerAndPoolMapping(ctx, lendPos.Owner, borrowPos.ID, pair.AssetOutPoolId, true) + err = k.UpdateBorrowIDByOwnerAndPoolMapping(ctx, lendPos.Owner, borrowPos.ID, pair.AssetOutPoolID, true) if err != nil { return err } @@ -820,38 +637,33 @@ func (k Keeper) BorrowAsset(ctx sdk.Context, addr string, lendID, pairID uint64, return err } } else if secondBridgedAssetQty.LT(secondBridgedAssetBal) { - err := k.VerifyCollaterlizationRatio(ctx, secondBridgedAssetQty, secondBridgedAsset, loan.Amount, assetOut, secondBridgedAssetRatesStats.Ltv) + err = k.VerifyCollaterlizationRatio(ctx, secondBridgedAssetQty, secondBridgedAsset, loan.Amount, assetOut, secondBridgedAssetRatesStats.Ltv) if err != nil { return err } // take c/Tokens from the user - if err := k.SendCoinFromAccountToModule(ctx, lenderAddr, AssetInPool.ModuleName, AmountIn); err != nil { + if err = k.SendCoinFromAccountToModule(ctx, lenderAddr, AssetInPool.ModuleName, AmountIn); err != nil { return err } bridgedAssetAmount := sdk.NewCoin(secondBridgedAsset.Denom, secondBridgedAssetQty) - if err := k.SendCoinFromModuleToModule(ctx, AssetInPool.ModuleName, AssetOutPool.ModuleName, sdk.NewCoins(bridgedAssetAmount)); err != nil { + if err = k.SendCoinFromModuleToModule(ctx, AssetInPool.ModuleName, AssetOutPool.ModuleName, sdk.NewCoins(bridgedAssetAmount)); err != nil { return err } - if err := k.SendCoinFromModuleToAccount(ctx, AssetOutPool.ModuleName, lenderAddr, loan); err != nil { + if err = k.SendCoinFromModuleToAccount(ctx, AssetOutPool.ModuleName, lenderAddr, loan); err != nil { return err } AmountOut := loan var StableBorrowRate sdk.Dec - if assetInRatesStats.EnableStableBorrow { - if IsStableBorrow { - StableBorrowRate, err = k.GetBorrowAPRByAssetID(ctx, AssetOutPool.PoolId, pair.AssetOut, IsStableBorrow) - if err != nil { - return err - } - } else { - StableBorrowRate = sdk.ZeroDec() + if assetInRatesStats.EnableStableBorrow && IsStableBorrow { + StableBorrowRate, err = k.GetBorrowAPRByAssetID(ctx, AssetOutPool.PoolID, pair.AssetOut, IsStableBorrow) + if err != nil { + return err } } else { - IsStableBorrow = false StableBorrowRate = sdk.ZeroDec() } @@ -867,49 +679,9 @@ func (k Keeper) BorrowAsset(ctx sdk.Context, addr string, lendID, pairID uint64, BorrowingTime: ctx.BlockTime(), UpdatedAmountOut: AmountOut.Amount, Interest_Accumulated: sdk.ZeroInt(), + CPoolName: AssetOutPool.CPoolName, } - - assetStats, found := k.GetAssetStatsByPoolIDAndAssetID(ctx, pair.AssetOut, pair.AssetOutPoolId) - if !found { - assetStats.TotalBorrowed = sdk.ZeroInt() - } - if borrowPos.IsStableBorrow { - AssetStats := types.AssetStats{ - PoolId: pair.AssetOutPoolId, - AssetId: pair.AssetOut, - TotalStableBorrowed: assetStats.TotalStableBorrowed.Add(AmountOut.Amount), - } - k.SetAssetStatsByPoolIDAndAssetID(ctx, AssetStats) - } else { - AssetStats := types.AssetStats{ - PoolId: pair.AssetOutPoolId, - AssetId: pair.AssetOut, - TotalBorrowed: assetStats.TotalBorrowed.Add(AmountOut.Amount), - } - k.SetAssetStatsByPoolIDAndAssetID(ctx, AssetStats) - } - - depositStats, _ := k.GetDepositStats(ctx) - borrowStats, _ := k.GetBorrowStats(ctx) - var balanceStats []types.BalanceStats - for _, v := range depositStats.BalanceStats { - if v.AssetId == lendPos.AssetId { - v.Amount = v.Amount.Sub(loan.Amount) - } - balanceStats = append(balanceStats, v) - newDepositStats := types.DepositStats{BalanceStats: balanceStats} - k.SetDepositStats(ctx, newDepositStats) - } - - for _, v := range borrowStats.BalanceStats { - if v.AssetId == lendPos.AssetId { - v.Amount = v.Amount.Add(loan.Amount) - } - balanceStats = append(balanceStats, v) - newDepositStats := types.DepositStats{BalanceStats: balanceStats} - k.SetBorrowStats(ctx, newDepositStats) - } - + k.UpdateBorrowStats(ctx, pair, borrowPos, AmountOut.Amount, true) err = k.UpdateBorrowIdsMapping(ctx, borrowPos.ID, true) if err != nil { return err @@ -923,7 +695,7 @@ func (k Keeper) BorrowAsset(ctx sdk.Context, addr string, lendID, pairID uint64, if err != nil { return err } - err = k.UpdateBorrowIDByOwnerAndPoolMapping(ctx, lendPos.Owner, borrowPos.ID, pair.AssetOutPoolId, true) + err = k.UpdateBorrowIDByOwnerAndPoolMapping(ctx, lendPos.Owner, borrowPos.ID, pair.AssetOutPoolID, true) if err != nil { return err } @@ -944,9 +716,18 @@ func (k Keeper) RepayAsset(ctx sdk.Context, borrowID uint64, borrowerAddr string return types.ErrBorrowNotFound } addr, _ := sdk.AccAddressFromBech32(borrowerAddr) - pair, _ := k.GetLendPair(ctx, borrowPos.PairID) - pool, _ := k.GetPool(ctx, pair.AssetOutPoolId) - lendPos, _ := k.GetLend(ctx, borrowPos.LendingID) + pair, found := k.GetLendPair(ctx, borrowPos.PairID) + if !found { + return types.ErrorPairNotFound + } + pool, found := k.GetPool(ctx, pair.AssetOutPoolID) + if !found { + return types.ErrPoolNotFound + } + lendPos, found := k.GetLend(ctx, borrowPos.LendingID) + if !found { + return types.ErrLendNotFound + } if lendPos.Owner != borrowerAddr { return types.ErrLendAccessUnauthorised } @@ -962,28 +743,6 @@ func (k Keeper) RepayAsset(ctx sdk.Context, borrowID uint64, borrowerAddr string } borrowPos.UpdatedAmountOut = borrowPos.UpdatedAmountOut.Sub(payment.Amount) borrowPos.Interest_Accumulated = borrowPos.Interest_Accumulated.Sub(payment.Amount) - - depositStats, _ := k.GetDepositStats(ctx) - borrowStats, _ := k.GetBorrowStats(ctx) - var balanceStats []types.BalanceStats - for _, v := range depositStats.BalanceStats { - if v.AssetId == lendPos.AssetId { - v.Amount = v.Amount.Add(payment.Amount) - } - balanceStats = append(balanceStats, v) - newDepositStats := types.DepositStats{BalanceStats: balanceStats} - k.SetDepositStats(ctx, newDepositStats) - } - - for _, v := range borrowStats.BalanceStats { - if v.AssetId == lendPos.AssetId { - v.Amount = v.Amount.Sub(payment.Amount) - } - balanceStats = append(balanceStats, v) - newDepositStats := types.DepositStats{BalanceStats: balanceStats} - k.SetBorrowStats(ctx, newDepositStats) - } - k.SetBorrow(ctx, borrowPos) } else { // sending repayment to moduleAcc from borrower @@ -991,36 +750,22 @@ func (k Keeper) RepayAsset(ctx sdk.Context, borrowID uint64, borrowerAddr string return err } borrowPos.UpdatedAmountOut = borrowPos.UpdatedAmountOut.Sub(payment.Amount) - borrowPos.AmountOut.Amount = borrowPos.AmountOut.Amount.Sub(payment.Amount).Add(borrowPos.Interest_Accumulated) + amountOut := borrowPos.AmountOut.Amount.Sub(payment.Amount).Add(borrowPos.Interest_Accumulated) + borrowPos.AmountOut.Amount = amountOut borrowPos.Interest_Accumulated = sdk.ZeroInt() - reserveRates, _ := k.GetReserveRate(ctx, pair.AssetOutPoolId, pair.AssetOut) - amtToReservePool := sdk.NewDec(int64(borrowPos.AmountOut.Amount.Uint64())).Mul(reserveRates) - amount := sdk.NewCoins(sdk.NewCoin(payment.Denom, sdk.NewInt(amtToReservePool.TruncateInt64()))) - if err := k.bank.SendCoinsFromModuleToModule(ctx, pool.ModuleName, types.ModuleName, amount); err != nil { - return err - } - - depositStats, _ := k.GetDepositStats(ctx) - borrowStats, _ := k.GetBorrowStats(ctx) - var balanceStats []types.BalanceStats - for _, v := range depositStats.BalanceStats { - if v.AssetId == lendPos.AssetId { - v.Amount = v.Amount.Add(payment.Amount) - } - balanceStats = append(balanceStats, v) - newDepositStats := types.DepositStats{BalanceStats: balanceStats} - k.SetDepositStats(ctx, newDepositStats) + reserveRates, err := k.GetReserveRate(ctx, pair.AssetOutPoolID, pair.AssetOut) + if err != nil { + return types.ErrReserveRatesNotFound } + amtToReservePool := sdk.NewDec(int64((payment.Amount).Sub(borrowPos.Interest_Accumulated).Uint64())).Mul(reserveRates) + amount := sdk.NewCoin(payment.Denom, sdk.NewInt(amtToReservePool.TruncateInt64())) - for _, v := range borrowStats.BalanceStats { - if v.AssetId == lendPos.AssetId { - v.Amount = v.Amount.Sub(payment.Amount) - } - balanceStats = append(balanceStats, v) - newDepositStats := types.DepositStats{BalanceStats: balanceStats} - k.SetBorrowStats(ctx, newDepositStats) + err = k.SetReserveBalances(ctx, pool.ModuleName, pair.AssetOut, amount) + if err != nil { + return err } + k.UpdateBorrowStats(ctx, pair, borrowPos, amountOut, false) k.SetBorrow(ctx, borrowPos) } } else { @@ -1045,33 +790,34 @@ func (k Keeper) DepositBorrowAsset(ctx sdk.Context, borrowID uint64, addr string if lendPos.Owner != addr { return types.ErrLendAccessUnauthorised } + assetRatesStat, found := k.GetAssetRatesStats(ctx, lendPos.AssetID) + if !found { + return sdkerrors.Wrap(types.ErrorAssetRatesStatsNotFound, strconv.FormatUint(lendPos.AssetID, 10)) + } + cAsset, found := k.GetAsset(ctx, assetRatesStat.CAssetID) + if !found { + return assettypes.ErrorAssetDoesNotExist + } + if AmountIn.Denom != cAsset.Denom { + return sdkerrors.Wrap(types.ErrBadOfferCoinAmount, AmountIn.Denom) + } if AmountIn.Amount.GT(lendPos.AvailableToBorrow) { return types.ErrAvailableToBorrowInsufficient } - - if k.HasBorrowForAddressByPair(ctx, lenderAddr, pairID) { - return types.ErrorDuplicateBorrow - } - pair, found := k.GetLendPair(ctx, pairID) if !found { return types.ErrorPairNotFound } - AssetInPool, _ := k.GetPool(ctx, lendPos.PoolId) - AssetOutPool, _ := k.GetPool(ctx, pair.AssetOutPoolId) + AssetInPool, found := k.GetPool(ctx, lendPos.PoolID) + if !found { + return types.ErrPoolNotFound + } + AssetOutPool, found := k.GetPool(ctx, pair.AssetOutPoolID) + if !found { + return types.ErrPoolNotFound + } if !pair.IsInterPool { - AmountIn := sdk.NewCoin(lendPos.AmountIn.Denom, AmountIn.Amount) - // take c/Tokens from the user - assetRatesStat, found := k.GetAssetRatesStats(ctx, lendPos.AssetId) - if !found { - return sdkerrors.Wrap(types.ErrorAssetRatesStatsNotFound, strconv.FormatUint(lendPos.AssetId, 10)) - } - cAsset, _ := k.GetAsset(ctx, assetRatesStat.CAssetId) - if AmountIn.Denom != cAsset.Denom { - return sdkerrors.Wrap(types.ErrBadOfferCoinAmount, AmountIn.Denom) - } - if err := k.SendCoinFromAccountToModule(ctx, lenderAddr, AssetInPool.ModuleName, AmountIn); err != nil { return err } @@ -1087,69 +833,63 @@ func (k Keeper) DepositBorrowAsset(ctx sdk.Context, borrowID uint64, addr string } amtIn := assetIn.Mul(sdk.NewIntFromUint64(priceAssetIn)) - priceFirstBridgedAsset, found := k.GetPriceForAsset(ctx, AssetInPool.FirstBridgedAssetId) + priceFirstBridgedAsset, found := k.GetPriceForAsset(ctx, AssetInPool.FirstBridgedAssetID) if !found { return types.ErrorPriceDoesNotExist } - priceSecondBridgedAsset, found := k.GetPriceForAsset(ctx, AssetInPool.SecondBridgedAssetId) + priceSecondBridgedAsset, found := k.GetPriceForAsset(ctx, AssetInPool.SecondBridgedAssetID) if !found { return types.ErrorPriceDoesNotExist } - firstBridgedAsset, _ := k.GetAsset(ctx, AssetInPool.FirstBridgedAssetId) - secondBridgedAsset, _ := k.GetAsset(ctx, AssetInPool.SecondBridgedAssetId) + firstBridgedAsset, found := k.GetAsset(ctx, AssetInPool.FirstBridgedAssetID) + if !found { + return assettypes.ErrorAssetDoesNotExist + } + secondBridgedAsset, found := k.GetAsset(ctx, AssetInPool.SecondBridgedAssetID) + if !found { + return assettypes.ErrorAssetDoesNotExist + } // qty of first and second bridged asset to be sent over different pool according to the borrow Pool - firstBridgedAssetQty := amtIn.Quo(sdk.NewIntFromUint64(priceFirstBridgedAsset)) + firstBridgedAssetq := amtIn.Quo(sdk.NewIntFromUint64(priceFirstBridgedAsset)) + firstBridgedAssetQty := firstBridgedAssetq.ToDec().Mul(assetRatesStat.Ltv) firstBridgedAssetBal := k.ModuleBalance(ctx, AssetInPool.ModuleName, firstBridgedAsset.Denom) - secondBridgedAssetQty := amtIn.Quo(sdk.NewIntFromUint64(priceSecondBridgedAsset)) + secondBridgedAssetq := amtIn.Quo(sdk.NewIntFromUint64(priceSecondBridgedAsset)) + secondBridgedAssetQty := secondBridgedAssetq.ToDec().Mul(assetRatesStat.Ltv) secondBridgedAssetBal := k.ModuleBalance(ctx, AssetInPool.ModuleName, secondBridgedAsset.Denom) - if firstBridgedAssetQty.LT(firstBridgedAssetBal) { // take c/Tokens from the user - assetRatesStat, found := k.GetAssetRatesStats(ctx, lendPos.AssetId) - if !found { - return sdkerrors.Wrap(types.ErrorAssetRatesStatsNotFound, strconv.FormatUint(lendPos.AssetId, 10)) - } - cAsset, _ := k.GetAsset(ctx, assetRatesStat.CAssetId) - if AmountIn.Denom != cAsset.Denom { - return sdkerrors.Wrap(types.ErrBadOfferCoinAmount, AmountIn.Denom) - } - + if borrowPos.BridgedAssetAmount.Denom == firstBridgedAsset.Denom && firstBridgedAssetQty.LT(firstBridgedAssetBal.ToDec()) { + // take c/Tokens from the user if err := k.SendCoinFromAccountToModule(ctx, lenderAddr, AssetInPool.ModuleName, AmountIn); err != nil { return err } - if err := k.SendCoinFromModuleToModule(ctx, AssetInPool.ModuleName, AssetOutPool.ModuleName, sdk.NewCoins(sdk.NewCoin(firstBridgedAsset.Denom, firstBridgedAssetQty))); err != nil { + if err := k.SendCoinFromModuleToModule(ctx, AssetInPool.ModuleName, AssetOutPool.ModuleName, sdk.NewCoins(sdk.NewCoin(firstBridgedAsset.Denom, firstBridgedAssetQty.TruncateInt()))); err != nil { return err } lendPos.AvailableToBorrow = lendPos.AvailableToBorrow.Sub(AmountIn.Amount) k.SetLend(ctx, lendPos) borrowPos.AmountIn = borrowPos.AmountIn.Add(AmountIn) + borrowPos.BridgedAssetAmount.Amount = borrowPos.BridgedAssetAmount.Amount.Add(firstBridgedAssetQty.TruncateInt()) k.SetBorrow(ctx, borrowPos) - } else if secondBridgedAssetQty.LT(secondBridgedAssetBal) { - // take c/Tokens from the user - assetRatesStat, found := k.GetAssetRatesStats(ctx, lendPos.AssetId) - if !found { - return sdkerrors.Wrap(types.ErrorAssetRatesStatsNotFound, strconv.FormatUint(lendPos.AssetId, 10)) - } - cAsset, _ := k.GetAsset(ctx, assetRatesStat.CAssetId) - if AmountIn.Denom != cAsset.Denom { - return sdkerrors.Wrap(types.ErrBadOfferCoinAmount, AmountIn.Denom) - } + } else if secondBridgedAssetQty.LT(secondBridgedAssetBal.ToDec()) { + // take c/Tokens from the user if err := k.SendCoinFromAccountToModule(ctx, lenderAddr, AssetInPool.ModuleName, AmountIn); err != nil { return err } - if err := k.SendCoinFromModuleToModule(ctx, AssetInPool.ModuleName, AssetOutPool.ModuleName, sdk.NewCoins(sdk.NewCoin(secondBridgedAsset.Denom, secondBridgedAssetQty))); err != nil { + if err := k.SendCoinFromModuleToModule(ctx, AssetInPool.ModuleName, AssetOutPool.ModuleName, sdk.NewCoins(sdk.NewCoin(secondBridgedAsset.Denom, secondBridgedAssetQty.TruncateInt()))); err != nil { return err } lendPos.AvailableToBorrow = lendPos.AvailableToBorrow.Sub(AmountIn.Amount) k.SetLend(ctx, lendPos) borrowPos.AmountIn = borrowPos.AmountIn.Add(AmountIn) + borrowPos.BridgedAssetAmount.Amount = borrowPos.BridgedAssetAmount.Amount.Add(secondBridgedAssetQty.TruncateInt()) k.SetBorrow(ctx, borrowPos) } else { - return types.ErrBorrowingPoolInsufficient + return types.ErrBridgeAssetQtyInsufficient } } return nil @@ -1161,51 +901,47 @@ func (k Keeper) DrawAsset(ctx sdk.Context, borrowID uint64, borrowerAddr string, return types.ErrBorrowNotFound } addr, _ := sdk.AccAddressFromBech32(borrowerAddr) - pair, _ := k.GetLendPair(ctx, borrowPos.PairID) - pool, _ := k.GetPool(ctx, pair.AssetOutPoolId) - lendPos, _ := k.GetLend(ctx, borrowPos.LendingID) + pair, found := k.GetLendPair(ctx, borrowPos.PairID) + if !found { + return types.ErrorPairNotFound + } + pool, found := k.GetPool(ctx, pair.AssetOutPoolID) + if !found { + return types.ErrPoolNotFound + } + lendPos, found := k.GetLend(ctx, borrowPos.LendingID) + if !found { + return types.ErrLendNotFound + } if lendPos.Owner != borrowerAddr { return types.ErrLendAccessUnauthorised } if borrowPos.AmountOut.Denom != amount.Denom { return types.ErrBadOfferCoinAmount } - assetIn, _ := k.GetAsset(ctx, lendPos.AssetId) - assetOut, _ := k.GetAsset(ctx, pair.AssetOut) - - assetRatesStats, _ := k.GetAssetRatesStats(ctx, pair.AssetIn) + assetIn, found := k.GetAsset(ctx, lendPos.AssetID) + if !found { + return assettypes.ErrorAssetDoesNotExist + } + assetOut, found := k.GetAsset(ctx, pair.AssetOut) + if !found { + return assettypes.ErrorAssetDoesNotExist + } + assetRatesStats, found := k.GetAssetRatesStats(ctx, pair.AssetIn) + if !found { + return types.ErrorAssetStatsNotFound + } err := k.VerifyCollaterlizationRatio(ctx, borrowPos.AmountIn.Amount, assetIn, borrowPos.UpdatedAmountOut.Add(amount.Amount), assetOut, assetRatesStats.Ltv) if err != nil { return err } - if err := k.SendCoinFromModuleToAccount(ctx, pool.ModuleName, addr, amount); err != nil { + if err = k.SendCoinFromModuleToAccount(ctx, pool.ModuleName, addr, amount); err != nil { return err } borrowPos.UpdatedAmountOut = borrowPos.UpdatedAmountOut.Add(amount.Amount) borrowPos.AmountOut = borrowPos.AmountOut.Add(amount) k.SetBorrow(ctx, borrowPos) - - depositStats, _ := k.GetDepositStats(ctx) - borrowStats, _ := k.GetBorrowStats(ctx) - var balanceStats []types.BalanceStats - for _, v := range depositStats.BalanceStats { - if v.AssetId == lendPos.AssetId { - v.Amount = v.Amount.Sub(amount.Amount) - } - balanceStats = append(balanceStats, v) - newDepositStats := types.DepositStats{BalanceStats: balanceStats} - k.SetDepositStats(ctx, newDepositStats) - } - - for _, v := range borrowStats.BalanceStats { - if v.AssetId == lendPos.AssetId { - v.Amount = v.Amount.Add(amount.Amount) - } - balanceStats = append(balanceStats, v) - newDepositStats := types.DepositStats{BalanceStats: balanceStats} - k.SetBorrowStats(ctx, newDepositStats) - } - + k.UpdateBorrowStats(ctx, pair, borrowPos, amount.Amount, true) return nil } @@ -1215,19 +951,35 @@ func (k Keeper) CloseBorrow(ctx sdk.Context, borrowerAddr string, borrowID uint6 return types.ErrBorrowNotFound } addr, _ := sdk.AccAddressFromBech32(borrowerAddr) - pair, _ := k.GetLendPair(ctx, borrowPos.PairID) - pool, _ := k.GetPool(ctx, pair.AssetOutPoolId) - lendPos, _ := k.GetLend(ctx, borrowPos.LendingID) - assetInPool, _ := k.GetPool(ctx, lendPos.PoolId) + pair, found := k.GetLendPair(ctx, borrowPos.PairID) + if !found { + return types.ErrorPairNotFound + } + pool, found := k.GetPool(ctx, pair.AssetOutPoolID) + if !found { + return types.ErrPoolNotFound + } + lendPos, found := k.GetLend(ctx, borrowPos.LendingID) + if !found { + return types.ErrLendNotFound + } + assetInPool, found := k.GetPool(ctx, lendPos.PoolID) + if !found { + return types.ErrPoolNotFound + } if lendPos.Owner != borrowerAddr { return types.ErrLendAccessUnauthorised } - assetOut, _ := k.GetAsset(ctx, pair.AssetOut) + assetOut, found := k.GetAsset(ctx, pair.AssetOut) + if !found { + return assettypes.ErrorAssetDoesNotExist + } lenderAddr, _ := sdk.AccAddressFromBech32(lendPos.Owner) - + if borrowPos.UpdatedAmountOut.LTE(sdk.ZeroInt()) { + return types.ErrInsufficientFunds + } amt := sdk.NewCoins(sdk.NewCoin(assetOut.Denom, borrowPos.UpdatedAmountOut)) - if err := k.bank.SendCoinsFromAccountToModule(ctx, addr, pool.ModuleName, amt); err != nil { return err } @@ -1235,18 +987,25 @@ func (k Keeper) CloseBorrow(ctx sdk.Context, borrowerAddr string, borrowID uint6 return err } - reserveRates, _ := k.GetReserveRate(ctx, pair.AssetOutPoolId, pair.AssetOut) + reserveRates, err := k.GetReserveRate(ctx, pair.AssetOutPoolID, pair.AssetOut) + if err != nil { + return types.ErrReserveRatesNotFound + } amtToReservePool := sdk.NewDec(int64(borrowPos.AmountOut.Amount.Uint64())).Mul(reserveRates) - amount := sdk.NewCoins(sdk.NewCoin(assetOut.Denom, sdk.NewInt(amtToReservePool.TruncateInt64()))) - if err := k.bank.SendCoinsFromModuleToModule(ctx, pool.ModuleName, types.ModuleName, amount); err != nil { + if sdk.NewInt(amtToReservePool.TruncateInt64()).LTE(sdk.ZeroInt()) { + return types.ErrReserveRatesNotFound + } + amount := sdk.NewCoin(assetOut.Denom, sdk.NewInt(amtToReservePool.TruncateInt64())) + err = k.SetReserveBalances(ctx, pool.ModuleName, pair.AssetOut, amount) + if err != nil { return err } - err := k.UpdateUserBorrowIDMapping(ctx, lendPos.Owner, borrowPos.ID, false) + err = k.UpdateUserBorrowIDMapping(ctx, lendPos.Owner, borrowPos.ID, false) if err != nil { return err } - err = k.UpdateBorrowIDByOwnerAndPoolMapping(ctx, lendPos.Owner, borrowPos.ID, pair.AssetOutPoolId, false) + err = k.UpdateBorrowIDByOwnerAndPoolMapping(ctx, lendPos.Owner, borrowPos.ID, pair.AssetOutPoolID, false) if err != nil { return err } @@ -1261,36 +1020,112 @@ func (k Keeper) CloseBorrow(ctx sdk.Context, borrowerAddr string, borrowID uint6 } if pair.IsInterPool { - if err := k.bank.SendCoinsFromModuleToModule(ctx, pool.ModuleName, assetInPool.ModuleName, sdk.NewCoins(borrowPos.BridgedAssetAmount)); err != nil { + if err = k.bank.SendCoinsFromModuleToModule(ctx, pool.ModuleName, assetInPool.ModuleName, sdk.NewCoins(borrowPos.BridgedAssetAmount)); err != nil { return err } } - depositStats, _ := k.GetDepositStats(ctx) - borrowStats, _ := k.GetBorrowStats(ctx) - var balanceStats []types.BalanceStats - for _, v := range depositStats.BalanceStats { - if v.AssetId == lendPos.AssetId { - v.Amount = v.Amount.Add(borrowPos.UpdatedAmountOut) - } - balanceStats = append(balanceStats, v) - newDepositStats := types.DepositStats{BalanceStats: balanceStats} - k.SetDepositStats(ctx, newDepositStats) + k.UpdateBorrowStats(ctx, pair, borrowPos, borrowPos.AmountOut.Amount, false) + + lendPos.AvailableToBorrow = lendPos.AvailableToBorrow.Add(borrowPos.AmountIn.Amount) + k.SetLend(ctx, lendPos) + k.DeleteBorrow(ctx, borrowID) + + return nil +} + +func (k Keeper) BorrowAlternate(ctx sdk.Context, lenderAddr string, AssetID, PoolID uint64, AmountIn sdk.Coin, PairID uint64, IsStableBorrow bool, AmountOut sdk.Coin, AppID uint64) error { + asset, found := k.GetAsset(ctx, AssetID) + if !found { + return assettypes.ErrorAssetDoesNotExist + } + pool, found := k.GetPool(ctx, PoolID) + if !found { + return types.ErrPoolNotFound + } + _, found = k.GetApp(ctx, AppID) + if !found { + return types.ErrorAppMappingDoesNotExist } - for _, v := range borrowStats.BalanceStats { - if v.AssetId == lendPos.AssetId { - v.Amount = v.Amount.Sub(borrowPos.UpdatedAmountOut) - } - balanceStats = append(balanceStats, v) - newDepositStats := types.DepositStats{BalanceStats: balanceStats} - k.SetBorrowStats(ctx, newDepositStats) + if AmountIn.Denom != asset.Denom { + return sdkerrors.Wrap(types.ErrBadOfferCoinAmount, AmountIn.Denom) } - lendPos.AvailableToBorrow = lendPos.AvailableToBorrow.Add(borrowPos.AmountIn.Amount) + found = uint64InAssetData(AssetID, pool.AssetData) + if !found { + return sdkerrors.Wrap(types.ErrInvalidAssetIDForPool, strconv.FormatUint(AssetID, 10)) + } + + addr, _ := sdk.AccAddressFromBech32(lenderAddr) + + if k.HasLendForAddressByAsset(ctx, addr, AssetID, PoolID) { + return types.ErrorDuplicateLend + } + + loanTokens := sdk.NewCoins(AmountIn) + + assetRatesStat, found := k.GetAssetRatesStats(ctx, AssetID) + if !found { + return sdkerrors.Wrap(types.ErrorAssetRatesStatsNotFound, strconv.FormatUint(AssetID, 10)) + } + cAsset, found := k.GetAsset(ctx, assetRatesStat.CAssetID) + if !found { + return assettypes.ErrorAssetDoesNotExist + } + cToken := sdk.NewCoin(cAsset.Denom, AmountIn.Amount) + + if err := k.bank.SendCoinsFromAccountToModule(ctx, addr, pool.ModuleName, loanTokens); err != nil { + return err + } + // mint c/Token and set new total cToken supply + + cTokens := sdk.NewCoins(cToken) + if err := k.bank.MintCoins(ctx, pool.ModuleName, cTokens); err != nil { + return err + } + + err := k.bank.SendCoinsFromModuleToAccount(ctx, pool.ModuleName, addr, cTokens) + if err != nil { + return err + } + + lendID := k.GetUserLendIDHistory(ctx) + + lendPos := types.LendAsset{ + ID: lendID + 1, + AssetID: AssetID, + PoolID: PoolID, + Owner: lenderAddr, + AmountIn: AmountIn, + LendingTime: ctx.BlockTime(), + UpdatedAmountIn: AmountIn.Amount, + AvailableToBorrow: AmountIn.Amount, + Reward_Accumulated: sdk.ZeroInt(), + CPoolName: pool.CPoolName, + AppID: AppID, + } + k.UpdateLendStats(ctx, AssetID, PoolID, AmountIn.Amount, true) + k.SetUserLendIDHistory(ctx, lendPos.ID) k.SetLend(ctx, lendPos) - k.DeleteBorrow(ctx, borrowID) + k.SetLendForAddressByAsset(ctx, addr, lendPos.AssetID, lendPos.ID, lendPos.PoolID) + err = k.UpdateUserLendIDMapping(ctx, lenderAddr, lendPos.ID, true) + if err != nil { + return err + } + err = k.UpdateLendIDByOwnerAndPoolMapping(ctx, lenderAddr, lendPos.ID, lendPos.PoolID, true) + if err != nil { + return err + } + err = k.UpdateLendIDsMapping(ctx, lendPos.ID, true) + if err != nil { + return err + } + err = k.BorrowAsset(ctx, lenderAddr, lendPos.ID, PairID, IsStableBorrow, cToken, AmountOut) + if err != nil { + return err + } return nil } @@ -1313,7 +1148,10 @@ func (k Keeper) FundModAcc(ctx sdk.Context, moduleName string, assetID uint64, l if !found { return sdkerrors.Wrap(types.ErrorAssetRatesStatsNotFound, strconv.FormatUint(assetID, 10)) } - cAsset, _ := k.GetAsset(ctx, assetRatesStat.CAssetId) + cAsset, found := k.GetAsset(ctx, assetRatesStat.CAssetID) + if !found { + return assettypes.ErrorAssetDoesNotExist + } cToken := sdk.NewCoin(cAsset.Denom, payment.Amount) err := k.MintCoin(ctx, moduleName, cToken) @@ -1323,7 +1161,7 @@ func (k Keeper) FundModAcc(ctx sdk.Context, moduleName string, assetID uint64, l depositStats, _ := k.GetDepositStats(ctx) var balanceStats []types.BalanceStats for _, v := range depositStats.BalanceStats { - if v.AssetId == assetID { + if v.AssetID == assetID { v.Amount = v.Amount.Add(payment.Amount) } balanceStats = append(balanceStats, v) @@ -1334,11 +1172,56 @@ func (k Keeper) FundModAcc(ctx sdk.Context, moduleName string, assetID uint64, l return nil } -func (k *Keeper) Store(ctx sdk.Context) sdk.KVStore { +func (k Keeper) SetReserveBalances(ctx sdk.Context, moduleName string, assetID uint64, payment sdk.Coin) error { + err := k.UpdateReserveBalances(ctx, assetID, moduleName, payment, true) + if err != nil { + return err + } + return nil +} + +func (k Keeper) Store(ctx sdk.Context) sdk.KVStore { return ctx.KVStore(k.storeKey) } func (k Keeper) CreteNewBorrow(ctx sdk.Context, liqBorrow liquidationtypes.LockedVault) { - //TODO: - // implement unlock borrow after auction + kind := liqBorrow.GetBorrowMetaData() + borrowID := k.GetUserBorrowIDHistory(ctx) + pair, _ := k.GetLendPair(ctx, liqBorrow.ExtendedPairId) + AssetOut, _ := k.GetAsset(ctx, pair.AssetOut) + AssetRatesStats, _ := k.GetAssetRatesStats(ctx, pair.AssetIn) + cAssetIn, _ := k.GetAsset(ctx, AssetRatesStats.CAssetID) + AssetOutPool, _ := k.GetPool(ctx, pair.AssetOutPoolID) + lendPos, _ := k.GetLend(ctx, kind.LendingId) + lendPair, _ := k.GetLendPair(ctx, liqBorrow.ExtendedPairId) + + borrowPos := types.BorrowAsset{ + ID: borrowID + 1, + LendingID: kind.LendingId, + PairID: liqBorrow.ExtendedPairId, + AmountIn: sdk.NewCoin(cAssetIn.Denom, liqBorrow.AmountIn), + AmountOut: sdk.NewCoin(AssetOut.Denom, liqBorrow.AmountOut), + BridgedAssetAmount: kind.BridgedAssetAmount, + IsStableBorrow: kind.IsStableBorrow, + StableBorrowRate: kind.StableBorrowRate, + BorrowingTime: ctx.BlockTime(), + UpdatedAmountOut: liqBorrow.AmountOut, + Interest_Accumulated: sdk.ZeroInt(), + CPoolName: AssetOutPool.CPoolName, + } + k.UpdateBorrowStats(ctx, pair, borrowPos, borrowPos.AmountOut.Amount, true) + k.SetBorrow(ctx, borrowPos) + k.SetUserBorrowIDHistory(ctx, borrowPos.ID) + err := k.UpdateUserBorrowIDMapping(ctx, lendPos.Owner, borrowPos.ID, true) + if err != nil { + return + } + err = k.UpdateBorrowIDByOwnerAndPoolMapping(ctx, lendPos.Owner, borrowPos.ID, lendPair.AssetOutPoolID, true) + if err != nil { + return + } + err = k.UpdateBorrowIdsMapping(ctx, borrowPos.ID, true) + if err != nil { + return + } } diff --git a/x/lend/keeper/keeper_test.go b/x/lend/keeper/keeper_test.go new file mode 100644 index 000000000..04c6fd556 --- /dev/null +++ b/x/lend/keeper/keeper_test.go @@ -0,0 +1,202 @@ +package keeper_test + +import ( + "encoding/binary" + assettypes "github.com/comdex-official/comdex/x/asset/types" + markettypes "github.com/comdex-official/comdex/x/market/types" + protobuftypes "github.com/gogo/protobuf/types" + "github.com/stretchr/testify/suite" + tmproto "github.com/tendermint/tendermint/proto/tendermint/types" + "testing" + + chain "github.com/comdex-official/comdex/app" + "github.com/comdex-official/comdex/x/lend/keeper" + "github.com/comdex-official/comdex/x/lend/types" + sdk "github.com/cosmos/cosmos-sdk/types" +) + +type KeeperTestSuite struct { + suite.Suite + + app *chain.App + ctx sdk.Context + keeper keeper.Keeper + querier keeper.QueryServer + msgServer types.MsgServer +} + +func TestKeeperTestSuite(t *testing.T) { + suite.Run(t, new(KeeperTestSuite)) +} + +func (s *KeeperTestSuite) SetupTest() { + s.app = chain.Setup(false) + s.ctx = s.app.BaseApp.NewContext(false, tmproto.Header{}) + s.keeper = s.app.LendKeeper + s.querier = keeper.QueryServer{Keeper: s.keeper} + s.msgServer = keeper.NewMsgServerImpl(s.keeper) +} + +func (s *KeeperTestSuite) getBalances(addr sdk.AccAddress) sdk.Coins { + return s.app.BankKeeper.GetAllBalances(s.ctx, addr) +} + +func (s *KeeperTestSuite) getBalance(addr sdk.AccAddress, denom string) sdk.Coin { + return s.app.BankKeeper.GetBalance(s.ctx, addr, denom) +} + +func (s *KeeperTestSuite) sendCoins(fromAddr, toAddr sdk.AccAddress, amt sdk.Coins) { + s.T().Helper() + err := s.app.BankKeeper.SendCoins(s.ctx, fromAddr, toAddr, amt) + s.Require().NoError(err) +} + +// Below are useful helpers to write test code easily. +func (s *KeeperTestSuite) addr(addrNum int) sdk.AccAddress { + addr := make(sdk.AccAddress, 20) + binary.PutVarint(addr, int64(addrNum)) + return addr +} + +func (s *KeeperTestSuite) fundAddr(addr sdk.AccAddress, amt sdk.Coins) { + s.T().Helper() + err := s.app.BankKeeper.MintCoins(s.ctx, types.ModuleName, amt) + s.Require().NoError(err) + err = s.app.BankKeeper.SendCoinsFromModuleToAccount(s.ctx, types.ModuleName, addr, amt) + s.Require().NoError(err) +} + +func newInt(i int64) sdk.Int { + return sdk.NewInt(i) +} + +func newDec(i string) sdk.Dec { + dec, _ := sdk.NewDecFromStr(i) + return dec +} + +func (s *KeeperTestSuite) SetOraclePrice(symbol string, price uint64) { + var ( + store = s.app.MarketKeeper.Store(s.ctx) + key = markettypes.PriceForMarketKey(symbol) + ) + value := s.app.AppCodec().MustMarshal( + &protobuftypes.UInt64Value{ + Value: price, + }, + ) + store.Set(key, value) +} + +func (s *KeeperTestSuite) CreateNewAsset(name, denom string, price uint64) uint64 { + err := s.app.AssetKeeper.AddAssetRecords(s.ctx, assettypes.Asset{ + Name: name, + Denom: denom, + Decimals: 1000000, + IsOnChain: true, + IsOraclePriceRequired: true, + }) + s.Require().NoError(err) + assets := s.app.AssetKeeper.GetAssets(s.ctx) + var assetID uint64 + for _, asset := range assets { + if asset.Denom == denom { + assetID = asset.Id + break + } + } + s.Require().NotZero(assetID) + + market := markettypes.Market{ + Symbol: name, + ScriptID: 12, + Rates: price, + } + s.app.MarketKeeper.SetMarket(s.ctx, market) + + exists := s.app.MarketKeeper.HasMarketForAsset(s.ctx, assetID) + s.Suite.Require().False(exists) + s.app.MarketKeeper.SetMarketForAsset(s.ctx, assetID, name) + exists = s.app.MarketKeeper.HasMarketForAsset(s.ctx, assetID) + s.Suite.Require().True(exists) + + s.SetOraclePrice(name, price) + + return assetID +} + +func (s *KeeperTestSuite) CreateNewPool(moduleName, cPoolName string, mainAssetID, firstBridgedAssetID, secondBridgedAssetID uint64, assetData []types.AssetDataPoolMapping) uint64 { + err := s.app.LendKeeper.AddPoolRecords(s.ctx, types.Pool{ + ModuleName: moduleName, + MainAssetId: mainAssetID, + FirstBridgedAssetID: firstBridgedAssetID, + SecondBridgedAssetID: secondBridgedAssetID, + CPoolName: cPoolName, + AssetData: assetData, + }) + s.Require().NoError(err) + + pools := s.app.LendKeeper.GetPools(s.ctx) + var poolID uint64 + for _, pool := range pools { + if pool.MainAssetId == mainAssetID { + poolID = pool.PoolID + break + } + } + s.Require().NotZero(poolID) + + return poolID +} + +func (s *KeeperTestSuite) AddAssetRatesStats(AssetID uint64, UOptimal, Base, Slope1, Slope2 sdk.Dec, EnableStableBorrow bool, StableBase, StableSlope1, StableSlope2, LTV, LiquidationThreshold, LiquidationPenalty, LiquidationBonus, ReserveFactor sdk.Dec, CAssetID uint64) uint64 { + err := s.app.LendKeeper.AddAssetRatesStats(s.ctx, types.AssetRatesStats{ + AssetID: AssetID, + UOptimal: UOptimal, + Base: Base, + Slope1: Slope1, + Slope2: Slope2, + EnableStableBorrow: EnableStableBorrow, + StableBase: StableBase, + StableSlope1: StableSlope1, + StableSlope2: StableSlope2, + Ltv: LTV, + LiquidationThreshold: LiquidationThreshold, + LiquidationPenalty: LiquidationPenalty, + LiquidationBonus: LiquidationBonus, + ReserveFactor: ReserveFactor, + CAssetID: CAssetID, + }) + s.Require().NoError(err) + return AssetID +} + +func (s *KeeperTestSuite) AddExtendedLendPair(AssetIn, AssetOut uint64, IsInterPool bool, AssetOutPoolID, MinUsdValueLeft uint64) uint64 { + err := s.app.LendKeeper.AddLendPairsRecords(s.ctx, types.Extended_Pair{ + AssetIn: AssetIn, + AssetOut: AssetOut, + IsInterPool: IsInterPool, + AssetOutPoolID: AssetOutPoolID, + MinUsdValueLeft: MinUsdValueLeft, + }) + s.Require().NoError(err) + pairs := s.app.LendKeeper.GetLendPairs(s.ctx) + var pairID uint64 + for _, pair := range pairs { + if pair.AssetIn == AssetIn && pair.AssetOut == AssetOut && pair.IsInterPool == IsInterPool { + pairID = pair.Id + break + } + } + s.Require().NotZero(pairID) + return pairID +} + +func (s *KeeperTestSuite) AddAssetToPair(AssetID, PoolID uint64, PairID []uint64) { + err := s.app.LendKeeper.AddAssetToPair(s.ctx, types.AssetToPairMapping{ + AssetID: AssetID, + PoolID: PoolID, + PairID: PairID, + }) + s.Require().NoError(err) +} diff --git a/x/lend/keeper/lend.go b/x/lend/keeper/lend.go index 18e255cfb..c63ed4ee4 100644 --- a/x/lend/keeper/lend.go +++ b/x/lend/keeper/lend.go @@ -6,7 +6,7 @@ import ( protobuftypes "github.com/gogo/protobuf/types" ) -func (k *Keeper) SetUserLendIDHistory(ctx sdk.Context, id uint64) { +func (k Keeper) SetUserLendIDHistory(ctx sdk.Context, id uint64) { var ( store = k.Store(ctx) key = types.LendHistoryIDPrefix @@ -19,7 +19,7 @@ func (k *Keeper) SetUserLendIDHistory(ctx sdk.Context, id uint64) { store.Set(key, value) } -func (k *Keeper) GetUserLendIDHistory(ctx sdk.Context) uint64 { +func (k Keeper) GetUserLendIDHistory(ctx sdk.Context) uint64 { var ( store = k.Store(ctx) key = types.LendHistoryIDPrefix @@ -36,7 +36,7 @@ func (k *Keeper) GetUserLendIDHistory(ctx sdk.Context) uint64 { return id.GetValue() } -func (k *Keeper) SetLend(ctx sdk.Context, lend types.LendAsset) { +func (k Keeper) SetLend(ctx sdk.Context, lend types.LendAsset) { var ( store = k.Store(ctx) key = types.LendUserKey(lend.ID) @@ -46,7 +46,7 @@ func (k *Keeper) SetLend(ctx sdk.Context, lend types.LendAsset) { store.Set(key, value) } -func (k *Keeper) GetLend(ctx sdk.Context, id uint64) (lend types.LendAsset, found bool) { +func (k Keeper) GetLend(ctx sdk.Context, id uint64) (lend types.LendAsset, found bool) { var ( store = k.Store(ctx) key = types.LendUserKey(id) @@ -61,7 +61,28 @@ func (k *Keeper) GetLend(ctx sdk.Context, id uint64) (lend types.LendAsset, foun return lend, true } -func (k *Keeper) DeleteLend(ctx sdk.Context, id uint64) { +func (k Keeper) GetAllLend(ctx sdk.Context) (lendAsset []types.LendAsset) { + var ( + store = k.Store(ctx) + iter = sdk.KVStorePrefixIterator(store, types.LendUserPrefix) + ) + + defer func(iter sdk.Iterator) { + err := iter.Close() + if err != nil { + return + } + }(iter) + + for ; iter.Valid(); iter.Next() { + var asset types.LendAsset + k.cdc.MustUnmarshal(iter.Value(), &asset) + lendAsset = append(lendAsset, asset) + } + return lendAsset +} + +func (k Keeper) DeleteLend(ctx sdk.Context, id uint64) { var ( store = k.Store(ctx) key = types.LendUserKey(id) @@ -70,7 +91,7 @@ func (k *Keeper) DeleteLend(ctx sdk.Context, id uint64) { store.Delete(key) } -func (k *Keeper) SetPoolID(ctx sdk.Context, id uint64) { +func (k Keeper) SetPoolID(ctx sdk.Context, id uint64) { var ( store = k.Store(ctx) key = types.PoolIDPrefix @@ -83,7 +104,7 @@ func (k *Keeper) SetPoolID(ctx sdk.Context, id uint64) { store.Set(key, value) } -func (k *Keeper) GetPoolID(ctx sdk.Context) uint64 { +func (k Keeper) GetPoolID(ctx sdk.Context) uint64 { var ( store = k.Store(ctx) key = types.PoolIDPrefix @@ -100,17 +121,17 @@ func (k *Keeper) GetPoolID(ctx sdk.Context) uint64 { return id.GetValue() } -func (k *Keeper) SetPool(ctx sdk.Context, pool types.Pool) { +func (k Keeper) SetPool(ctx sdk.Context, pool types.Pool) { var ( store = k.Store(ctx) - key = types.PoolKey(pool.PoolId) + key = types.PoolKey(pool.PoolID) value = k.cdc.MustMarshal(&pool) ) store.Set(key, value) } -func (k *Keeper) GetPool(ctx sdk.Context, id uint64) (pool types.Pool, found bool) { +func (k Keeper) GetPool(ctx sdk.Context, id uint64) (pool types.Pool, found bool) { var ( store = k.Store(ctx) key = types.PoolKey(id) @@ -125,17 +146,39 @@ func (k *Keeper) GetPool(ctx sdk.Context, id uint64) (pool types.Pool, found boo return pool, true } -func (k *Keeper) SetAssetToPair(ctx sdk.Context, assetToPair types.AssetToPairMapping) { +func (k Keeper) GetPools(ctx sdk.Context) (pools []types.Pool) { + var ( + store = k.Store(ctx) + iter = sdk.KVStorePrefixIterator(store, types.PoolKeyPrefix) + ) + + defer func(iter sdk.Iterator) { + err := iter.Close() + if err != nil { + return + } + }(iter) + + for ; iter.Valid(); iter.Next() { + var pool types.Pool + k.cdc.MustUnmarshal(iter.Value(), &pool) + pools = append(pools, pool) + } + + return pools +} + +func (k Keeper) SetAssetToPair(ctx sdk.Context, assetToPair types.AssetToPairMapping) { var ( store = k.Store(ctx) - key = types.AssetToPairMappingKey(assetToPair.AssetId, assetToPair.PoolId) + key = types.AssetToPairMappingKey(assetToPair.AssetID, assetToPair.PoolID) value = k.cdc.MustMarshal(&assetToPair) ) store.Set(key, value) } -func (k *Keeper) GetAssetToPair(ctx sdk.Context, assetID, poolID uint64) (assetToPair types.AssetToPairMapping, found bool) { +func (k Keeper) GetAssetToPair(ctx sdk.Context, assetID, poolID uint64) (assetToPair types.AssetToPairMapping, found bool) { var ( store = k.Store(ctx) key = types.AssetToPairMappingKey(assetID, poolID) @@ -150,7 +193,28 @@ func (k *Keeper) GetAssetToPair(ctx sdk.Context, assetID, poolID uint64) (assetT return assetToPair, true } -func (k *Keeper) SetLendForAddressByAsset(ctx sdk.Context, address sdk.AccAddress, assetID, id, poolID uint64) { +func (k Keeper) GetAllAssetToPair(ctx sdk.Context) (assetToPairMapping []types.AssetToPairMapping) { + var ( + store = k.Store(ctx) + iter = sdk.KVStorePrefixIterator(store, types.AssetToPairMappingKeyPrefix) + ) + + defer func(iter sdk.Iterator) { + err := iter.Close() + if err != nil { + return + } + }(iter) + + for ; iter.Valid(); iter.Next() { + var asset types.AssetToPairMapping + k.cdc.MustUnmarshal(iter.Value(), &asset) + assetToPairMapping = append(assetToPairMapping, asset) + } + return assetToPairMapping +} + +func (k Keeper) SetLendForAddressByAsset(ctx sdk.Context, address sdk.AccAddress, assetID, id, poolID uint64) { var ( store = k.Store(ctx) key = types.LendForAddressByAsset(address, assetID, poolID) @@ -164,7 +228,7 @@ func (k *Keeper) SetLendForAddressByAsset(ctx sdk.Context, address sdk.AccAddres store.Set(key, value) } -func (k *Keeper) HasLendForAddressByAsset(ctx sdk.Context, address sdk.AccAddress, assetID, poolID uint64) bool { +func (k Keeper) HasLendForAddressByAsset(ctx sdk.Context, address sdk.AccAddress, assetID, poolID uint64) bool { var ( store = k.Store(ctx) key = types.LendForAddressByAsset(address, assetID, poolID) @@ -173,7 +237,7 @@ func (k *Keeper) HasLendForAddressByAsset(ctx sdk.Context, address sdk.AccAddres return store.Has(key) } -func (k *Keeper) DeleteLendForAddressByAsset(ctx sdk.Context, address sdk.AccAddress, assetID, poolID uint64) { +func (k Keeper) DeleteLendForAddressByAsset(ctx sdk.Context, address sdk.AccAddress, assetID, poolID uint64) { var ( store = k.Store(ctx) key = types.LendForAddressByAsset(address, assetID, poolID) @@ -182,7 +246,7 @@ func (k *Keeper) DeleteLendForAddressByAsset(ctx sdk.Context, address sdk.AccAdd store.Delete(key) } -func (k *Keeper) UpdateUserLendIDMapping( +func (k Keeper) UpdateUserLendIDMapping( ctx sdk.Context, lendOwner string, lendID uint64, @@ -193,18 +257,18 @@ func (k *Keeper) UpdateUserLendIDMapping( if !found && isInsert { userVaults = types.UserLendIdMapping{ Owner: lendOwner, - LendIds: nil, + LendIDs: nil, } } else if !found && !isInsert { return types.ErrorLendOwnerNotFound } if isInsert { - userVaults.LendIds = append(userVaults.LendIds, lendID) + userVaults.LendIDs = append(userVaults.LendIDs, lendID) } else { - for index, id := range userVaults.LendIds { + for index, id := range userVaults.LendIDs { if id == lendID { - userVaults.LendIds = append(userVaults.LendIds[:index], userVaults.LendIds[index+1:]...) + userVaults.LendIDs = append(userVaults.LendIDs[:index], userVaults.LendIDs[index+1:]...) break } } @@ -214,7 +278,7 @@ func (k *Keeper) UpdateUserLendIDMapping( return nil } -func (k *Keeper) GetUserLends(ctx sdk.Context, address string) (userVaults types.UserLendIdMapping, found bool) { +func (k Keeper) GetUserLends(ctx sdk.Context, address string) (userVaults types.UserLendIdMapping, found bool) { var ( store = k.Store(ctx) key = types.UserLendsForAddressKey(address) @@ -228,16 +292,37 @@ func (k *Keeper) GetUserLends(ctx sdk.Context, address string) (userVaults types return userVaults, true } -func (k *Keeper) UserLends(ctx sdk.Context, address string) (userLends []types.LendAsset, found bool) { +func (k Keeper) GetAllUserLends(ctx sdk.Context) (userLendIdMapping []types.UserLendIdMapping) { + var ( + store = k.Store(ctx) + iter = sdk.KVStorePrefixIterator(store, types.UserLendsForAddressKeyPrefix) + ) + + defer func(iter sdk.Iterator) { + err := iter.Close() + if err != nil { + return + } + }(iter) + + for ; iter.Valid(); iter.Next() { + var asset types.UserLendIdMapping + k.cdc.MustUnmarshal(iter.Value(), &asset) + userLendIdMapping = append(userLendIdMapping, asset) + } + return userLendIdMapping +} + +func (k Keeper) UserLends(ctx sdk.Context, address string) (userLends []types.LendAsset, found bool) { userLendID, _ := k.GetUserLends(ctx, address) - for _, v := range userLendID.LendIds { + for _, v := range userLendID.LendIDs { userLend, _ := k.GetLend(ctx, v) userLends = append(userLends, userLend) } return userLends, true } -func (k *Keeper) SetUserLends(ctx sdk.Context, userVaults types.UserLendIdMapping) { +func (k Keeper) SetUserLends(ctx sdk.Context, userVaults types.UserLendIdMapping) { var ( store = k.Store(ctx) key = types.UserLendsForAddressKey(userVaults.Owner) @@ -246,7 +331,7 @@ func (k *Keeper) SetUserLends(ctx sdk.Context, userVaults types.UserLendIdMappin store.Set(key, value) } -func (k *Keeper) UpdateLendIDByOwnerAndPoolMapping( +func (k Keeper) UpdateLendIDByOwnerAndPoolMapping( ctx sdk.Context, lendOwner string, lendID uint64, @@ -258,19 +343,19 @@ func (k *Keeper) UpdateLendIDByOwnerAndPoolMapping( if !found && isInsert { userLends = types.LendIdByOwnerAndPoolMapping{ Owner: lendOwner, - PoolId: poolID, - LendIds: nil, + PoolID: poolID, + LendIDs: nil, } } else if !found && !isInsert { return types.ErrorLendOwnerNotFound } if isInsert { - userLends.LendIds = append(userLends.LendIds, lendID) + userLends.LendIDs = append(userLends.LendIDs, lendID) } else { - for index, id := range userLends.LendIds { + for index, id := range userLends.LendIDs { if id == lendID { - userLends.LendIds = append(userLends.LendIds[:index], userLends.LendIds[index+1:]...) + userLends.LendIDs = append(userLends.LendIDs[:index], userLends.LendIDs[index+1:]...) break } } @@ -280,7 +365,7 @@ func (k *Keeper) UpdateLendIDByOwnerAndPoolMapping( return nil } -func (k *Keeper) GetLendIDByOwnerAndPool(ctx sdk.Context, address string, poolID uint64) (userLends types.LendIdByOwnerAndPoolMapping, found bool) { +func (k Keeper) GetLendIDByOwnerAndPool(ctx sdk.Context, address string, poolID uint64) (userLends types.LendIdByOwnerAndPoolMapping, found bool) { var ( store = k.Store(ctx) key = types.LendByUserAndPoolKey(address, poolID) @@ -294,25 +379,46 @@ func (k *Keeper) GetLendIDByOwnerAndPool(ctx sdk.Context, address string, poolID return userLends, true } -func (k *Keeper) LendIDByOwnerAndPool(ctx sdk.Context, address string, poolID uint64) (userLends []types.LendAsset, found bool) { +func (k Keeper) GetAllLendIDByOwnerAndPool(ctx sdk.Context) (lendIdByOwnerAndPoolMapping []types.LendIdByOwnerAndPoolMapping) { + var ( + store = k.Store(ctx) + iter = sdk.KVStorePrefixIterator(store, types.LendByUserAndPoolPrefix) + ) + + defer func(iter sdk.Iterator) { + err := iter.Close() + if err != nil { + return + } + }(iter) + + for ; iter.Valid(); iter.Next() { + var asset types.LendIdByOwnerAndPoolMapping + k.cdc.MustUnmarshal(iter.Value(), &asset) + lendIdByOwnerAndPoolMapping = append(lendIdByOwnerAndPoolMapping, asset) + } + return lendIdByOwnerAndPoolMapping +} + +func (k Keeper) LendIDByOwnerAndPool(ctx sdk.Context, address string, poolID uint64) (userLends []types.LendAsset, found bool) { userLendID, _ := k.GetLendIDByOwnerAndPool(ctx, address, poolID) - for _, v := range userLendID.LendIds { + for _, v := range userLendID.LendIDs { userLend, _ := k.GetLend(ctx, v) userLends = append(userLends, userLend) } return userLends, true } -func (k *Keeper) SetLendIDByOwnerAndPool(ctx sdk.Context, userLends types.LendIdByOwnerAndPoolMapping) { +func (k Keeper) SetLendIDByOwnerAndPool(ctx sdk.Context, userLends types.LendIdByOwnerAndPoolMapping) { var ( store = k.Store(ctx) - key = types.LendByUserAndPoolKey(userLends.Owner, userLends.PoolId) + key = types.LendByUserAndPoolKey(userLends.Owner, userLends.PoolID) value = k.cdc.MustMarshal(&userLends) ) store.Set(key, value) } -func (k *Keeper) SetLendIDToBorrowIDMapping(ctx sdk.Context, lendIDToBorrowIDMapping types.LendIdToBorrowIdMapping) { +func (k Keeper) SetLendIDToBorrowIDMapping(ctx sdk.Context, lendIDToBorrowIDMapping types.LendIdToBorrowIdMapping) { var ( store = k.Store(ctx) key = types.LendIDToBorrowIDMappingKey(lendIDToBorrowIDMapping.LendingID) @@ -322,7 +428,7 @@ func (k *Keeper) SetLendIDToBorrowIDMapping(ctx sdk.Context, lendIDToBorrowIDMap store.Set(key, value) } -func (k *Keeper) UpdateLendIDToBorrowIDMapping( +func (k Keeper) UpdateLendIDToBorrowIDMapping( ctx sdk.Context, lendID uint64, borrowID uint64, @@ -354,7 +460,7 @@ func (k *Keeper) UpdateLendIDToBorrowIDMapping( return nil } -func (k *Keeper) GetLendIDToBorrowIDMapping(ctx sdk.Context, id uint64) (lendIDToBorrowIDMapping types.LendIdToBorrowIdMapping, found bool) { +func (k Keeper) GetLendIDToBorrowIDMapping(ctx sdk.Context, id uint64) (lendIDToBorrowIDMapping types.LendIdToBorrowIdMapping, found bool) { var ( store = k.Store(ctx) key = types.LendIDToBorrowIDMappingKey(id) @@ -369,7 +475,28 @@ func (k *Keeper) GetLendIDToBorrowIDMapping(ctx sdk.Context, id uint64) (lendIDT return lendIDToBorrowIDMapping, true } -func (k *Keeper) DeleteLendIDToBorrowIDMapping(ctx sdk.Context, lendingID uint64) { +func (k Keeper) GetAllLendIDToBorrowIDMapping(ctx sdk.Context) (lendIdToBorrowIdMapping []types.LendIdToBorrowIdMapping) { + var ( + store = k.Store(ctx) + iter = sdk.KVStorePrefixIterator(store, types.LendIDToBorrowIDMappingKeyPrefix) + ) + + defer func(iter sdk.Iterator) { + err := iter.Close() + if err != nil { + return + } + }(iter) + + for ; iter.Valid(); iter.Next() { + var asset types.LendIdToBorrowIdMapping + k.cdc.MustUnmarshal(iter.Value(), &asset) + lendIdToBorrowIdMapping = append(lendIdToBorrowIdMapping, asset) + } + return lendIdToBorrowIdMapping +} + +func (k Keeper) DeleteLendIDToBorrowIDMapping(ctx sdk.Context, lendingID uint64) { var ( store = k.Store(ctx) key = types.LendIDToBorrowIDMappingKey(lendingID) @@ -378,17 +505,17 @@ func (k *Keeper) DeleteLendIDToBorrowIDMapping(ctx sdk.Context, lendingID uint64 store.Delete(key) } -func (k *Keeper) SetAssetStatsByPoolIDAndAssetID(ctx sdk.Context, AssetStats types.AssetStats) { +func (k Keeper) SetAssetStatsByPoolIDAndAssetID(ctx sdk.Context, AssetStats types.AssetStats) { var ( store = k.Store(ctx) - key = types.SetAssetStatsByPoolIDAndAssetID(AssetStats.AssetId, AssetStats.PoolId) + key = types.SetAssetStatsByPoolIDAndAssetID(AssetStats.AssetID, AssetStats.PoolID) value = k.cdc.MustMarshal(&AssetStats) ) store.Set(key, value) } -func (k *Keeper) GetAssetStatsByPoolIDAndAssetID(ctx sdk.Context, assetID, poolID uint64) (AssetStats types.AssetStats, found bool) { +func (k Keeper) GetAssetStatsByPoolIDAndAssetID(ctx sdk.Context, assetID, poolID uint64) (AssetStats types.AssetStats, found bool) { var ( store = k.Store(ctx) key = types.SetAssetStatsByPoolIDAndAssetID(assetID, poolID) @@ -403,7 +530,28 @@ func (k *Keeper) GetAssetStatsByPoolIDAndAssetID(ctx sdk.Context, assetID, poolI return AssetStats, true } -func (k *Keeper) AssetStatsByPoolIDAndAssetID(ctx sdk.Context, assetID, poolID uint64) (AssetStats types.AssetStats, found bool) { +func (k Keeper) GetAllAssetStatsByPoolIDAndAssetID(ctx sdk.Context) (assetStats []types.AssetStats) { + var ( + store = k.Store(ctx) + iter = sdk.KVStorePrefixIterator(store, types.AssetStatsByPoolIDAndAssetIDKeyPrefix) + ) + + defer func(iter sdk.Iterator) { + err := iter.Close() + if err != nil { + return + } + }(iter) + + for ; iter.Valid(); iter.Next() { + var asset types.AssetStats + k.cdc.MustUnmarshal(iter.Value(), &asset) + assetStats = append(assetStats, asset) + } + return assetStats +} + +func (k Keeper) AssetStatsByPoolIDAndAssetID(ctx sdk.Context, assetID, poolID uint64) (AssetStats types.AssetStats, found bool) { AssetStats, found = k.UpdateAPR(ctx, poolID, assetID) if !found { return AssetStats, false @@ -411,7 +559,7 @@ func (k *Keeper) AssetStatsByPoolIDAndAssetID(ctx sdk.Context, assetID, poolID u return AssetStats, true } -func (k *Keeper) SetLastInterestTime(ctx sdk.Context, interestTime int64) error { +func (k Keeper) SetLastInterestTime(ctx sdk.Context, interestTime int64) error { store := ctx.KVStore(k.storeKey) timeKey := types.CreateLastInterestTimeKey() @@ -439,7 +587,7 @@ func (k Keeper) GetLastInterestTime(ctx sdk.Context) int64 { return val.Value } -func (k *Keeper) UpdateLendIDsMapping( +func (k Keeper) UpdateLendIDsMapping( ctx sdk.Context, lendID uint64, isInsert bool, @@ -448,18 +596,18 @@ func (k *Keeper) UpdateLendIDsMapping( if !found && isInsert { userVaults = types.LendMapping{ - LendIds: nil, + LendIDs: nil, } } else if !found && !isInsert { return types.ErrorLendOwnerNotFound } if isInsert { - userVaults.LendIds = append(userVaults.LendIds, lendID) + userVaults.LendIDs = append(userVaults.LendIDs, lendID) } else { - for index, id := range userVaults.LendIds { + for index, id := range userVaults.LendIDs { if id == lendID { - userVaults.LendIds = append(userVaults.LendIds[:index], userVaults.LendIds[index+1:]...) + userVaults.LendIDs = append(userVaults.LendIDs[:index], userVaults.LendIDs[index+1:]...) break } } @@ -469,7 +617,7 @@ func (k *Keeper) UpdateLendIDsMapping( return nil } -func (k *Keeper) GetLends(ctx sdk.Context) (userVaults types.LendMapping, found bool) { +func (k Keeper) GetLends(ctx sdk.Context) (userVaults types.LendMapping, found bool) { var ( store = k.Store(ctx) key = types.LendsKey @@ -483,7 +631,7 @@ func (k *Keeper) GetLends(ctx sdk.Context) (userVaults types.LendMapping, found return userVaults, true } -func (k *Keeper) SetLends(ctx sdk.Context, userLends types.LendMapping) { +func (k Keeper) SetLends(ctx sdk.Context, userLends types.LendMapping) { var ( store = k.Store(ctx) key = types.LendsKey @@ -492,26 +640,26 @@ func (k *Keeper) SetLends(ctx sdk.Context, userLends types.LendMapping) { store.Set(key, value) } -func (k *Keeper) GetModuleBalanceByPoolID(ctx sdk.Context, poolID uint64) (ModuleBalance types.ModuleBalance, found bool) { +func (k Keeper) GetModuleBalanceByPoolID(ctx sdk.Context, poolID uint64) (ModuleBalance types.ModuleBalance, found bool) { pool, found := k.GetPool(ctx, poolID) if !found { return ModuleBalance, false } for _, v := range pool.AssetData { - asset, _ := k.GetAsset(ctx, v.AssetId) + asset, _ := k.GetAsset(ctx, v.AssetID) balance := k.ModuleBalance(ctx, pool.ModuleName, asset.Denom) tokenBal := sdk.NewCoin(asset.Denom, balance) modBalStats := types.ModuleBalanceStats{ - AssetId: asset.Id, + AssetID: asset.Id, Balance: tokenBal, } - ModuleBalance.PoolId = poolID + ModuleBalance.PoolID = poolID ModuleBalance.ModuleBalanceStats = append(ModuleBalance.ModuleBalanceStats, modBalStats) } return ModuleBalance, true } -func (k *Keeper) SetUserDepositStats(ctx sdk.Context, depositStats types.DepositStats) { +func (k Keeper) SetUserDepositStats(ctx sdk.Context, depositStats types.DepositStats) { var ( store = k.Store(ctx) key = types.UserDepositStatsPrefix @@ -521,7 +669,7 @@ func (k *Keeper) SetUserDepositStats(ctx sdk.Context, depositStats types.Deposit store.Set(key, value) } -func (k *Keeper) GetUserDepositStats(ctx sdk.Context) (depositStats types.DepositStats, found bool) { +func (k Keeper) GetUserDepositStats(ctx sdk.Context) (depositStats types.DepositStats, found bool) { var ( store = k.Store(ctx) key = types.UserDepositStatsPrefix @@ -536,7 +684,7 @@ func (k *Keeper) GetUserDepositStats(ctx sdk.Context) (depositStats types.Deposi return depositStats, true } -func (k *Keeper) SetReserveDepositStats(ctx sdk.Context, depositStats types.DepositStats) { +func (k Keeper) SetReserveDepositStats(ctx sdk.Context, depositStats types.DepositStats) { var ( store = k.Store(ctx) key = types.ReserveDepositStatsPrefix @@ -546,7 +694,7 @@ func (k *Keeper) SetReserveDepositStats(ctx sdk.Context, depositStats types.Depo store.Set(key, value) } -func (k *Keeper) GetReserveDepositStats(ctx sdk.Context) (depositStats types.DepositStats, found bool) { +func (k Keeper) GetReserveDepositStats(ctx sdk.Context) (depositStats types.DepositStats, found bool) { var ( store = k.Store(ctx) key = types.ReserveDepositStatsPrefix @@ -561,7 +709,7 @@ func (k *Keeper) GetReserveDepositStats(ctx sdk.Context) (depositStats types.Dep return depositStats, true } -func (k *Keeper) SetBuyBackDepositStats(ctx sdk.Context, depositStats types.DepositStats) { +func (k Keeper) SetBuyBackDepositStats(ctx sdk.Context, depositStats types.DepositStats) { var ( store = k.Store(ctx) key = types.BuyBackDepositStatsPrefix @@ -571,7 +719,7 @@ func (k *Keeper) SetBuyBackDepositStats(ctx sdk.Context, depositStats types.Depo store.Set(key, value) } -func (k *Keeper) GetBuyBackDepositStats(ctx sdk.Context) (depositStats types.DepositStats, found bool) { +func (k Keeper) GetBuyBackDepositStats(ctx sdk.Context) (depositStats types.DepositStats, found bool) { var ( store = k.Store(ctx) key = types.BuyBackDepositStatsPrefix @@ -586,7 +734,7 @@ func (k *Keeper) GetBuyBackDepositStats(ctx sdk.Context) (depositStats types.Dep return depositStats, true } -func (k *Keeper) SetBorrowStats(ctx sdk.Context, borrowStats types.DepositStats) { +func (k Keeper) SetBorrowStats(ctx sdk.Context, borrowStats types.DepositStats) { var ( store = k.Store(ctx) key = types.BorrowStatsPrefix @@ -596,7 +744,7 @@ func (k *Keeper) SetBorrowStats(ctx sdk.Context, borrowStats types.DepositStats) store.Set(key, value) } -func (k *Keeper) GetBorrowStats(ctx sdk.Context) (borrowStats types.DepositStats, found bool) { +func (k Keeper) GetBorrowStats(ctx sdk.Context) (borrowStats types.DepositStats, found bool) { var ( store = k.Store(ctx) key = types.BorrowStatsPrefix diff --git a/x/lend/keeper/maths.go b/x/lend/keeper/maths.go index 34caae8e8..6d08f42b8 100644 --- a/x/lend/keeper/maths.go +++ b/x/lend/keeper/maths.go @@ -16,7 +16,7 @@ func (k Keeper) GetUtilisationRatioByPoolIDAndAssetID(ctx sdk.Context, poolID, a if moduleBalance.ToDec().IsZero() { return sdk.ZeroDec(), nil } - utilizationRatio := assetStats.TotalBorrowed.ToDec().Quo(moduleBalance.ToDec()) + utilizationRatio := assetStats.TotalBorrowed.ToDec().Quo(moduleBalance.ToDec().Add(assetStats.TotalBorrowed.ToDec())) return utilizationRatio, nil } @@ -82,6 +82,9 @@ func (k Keeper) GetAverageBorrowRate(ctx sdk.Context, poolID, assetID uint64) (a factor2 := assetStats.StableBorrowApr.Mul(sdk.Dec(assetStats.TotalStableBorrowed)) numerator := factor1.Add(factor2) denominator := sdk.Dec(assetStats.TotalStableBorrowed).Add(sdk.Dec(assetStats.TotalBorrowed)) + if denominator == sdk.ZeroDec() { + return sdk.Dec{}, types.ErrAverageBorrowRate + } averageBorrowRate = numerator.Quo(denominator) return averageBorrowRate, nil } @@ -115,14 +118,17 @@ func (k Keeper) GetReserveRate(ctx sdk.Context, poolID, assetID uint64) (reserve } func (k Keeper) UpdateAPR(ctx sdk.Context, poolID, assetID uint64) (AssetStats types.AssetStats, found bool) { - assetStats, _ := k.GetAssetStatsByPoolIDAndAssetID(ctx, assetID, poolID) + assetStats, found := k.GetAssetStatsByPoolIDAndAssetID(ctx, assetID, poolID) + if !found { + return assetStats, false + } lendAPR, _ := k.GetLendAPRByAssetIDAndPoolID(ctx, poolID, assetID) borrowAPR, _ := k.GetBorrowAPRByAssetID(ctx, poolID, assetID, false) stableBorrowAPR, _ := k.GetBorrowAPRByAssetID(ctx, poolID, assetID, true) currentUtilisationRatio, _ := k.GetUtilisationRatioByPoolIDAndAssetID(ctx, poolID, assetID) AssetStats = types.AssetStats{ - PoolId: assetStats.PoolId, - AssetId: assetStats.AssetId, + PoolID: assetStats.PoolID, + AssetID: assetStats.AssetID, TotalBorrowed: assetStats.TotalBorrowed, TotalStableBorrowed: assetStats.TotalStableBorrowed, TotalLend: assetStats.TotalLend, diff --git a/x/lend/keeper/msg_server.go b/x/lend/keeper/msg_server.go index 8ae185cd9..84377f920 100644 --- a/x/lend/keeper/msg_server.go +++ b/x/lend/keeper/msg_server.go @@ -25,18 +25,7 @@ func (m msgServer) Lend(goCtx context.Context, lend *types.MsgLend) (*types.MsgL return nil, err } - ctx.EventManager().EmitEvents(sdk.Events{ - sdk.NewEvent( - types.EventTypeLoanAsset, - sdk.NewAttribute(types.EventAttrLender, lend.Lender), - sdk.NewAttribute(sdk.AttributeKeyAmount, lend.Amount.String()), - ), - sdk.NewEvent( - sdk.EventTypeMessage, - sdk.NewAttribute(sdk.AttributeKeyModule, types.EventAttrModule), - sdk.NewAttribute(sdk.AttributeKeySender, lend.Lender), - ), - }) + ctx.GasMeter().ConsumeGas(types.LendGas, "LendGas") return &types.MsgLendResponse{}, nil } @@ -44,29 +33,13 @@ func (m msgServer) Lend(goCtx context.Context, lend *types.MsgLend) (*types.MsgL func (m msgServer) Withdraw(goCtx context.Context, withdraw *types.MsgWithdraw) (*types.MsgWithdrawResponse, error) { ctx := sdk.UnwrapSDKContext(goCtx) - lenderAddr, err := sdk.AccAddressFromBech32(withdraw.Lender) - if err != nil { - return nil, err - } - lendID := withdraw.LendId if err := m.keeper.WithdrawAsset(ctx, withdraw.Lender, lendID, withdraw.Amount); err != nil { return nil, err } - ctx.EventManager().EmitEvents(sdk.Events{ - sdk.NewEvent( - types.EventTypeWithdrawLoanedAsset, - sdk.NewAttribute(types.EventAttrLender, lenderAddr.String()), - sdk.NewAttribute(sdk.AttributeKeyAmount, withdraw.Amount.String()), - ), - sdk.NewEvent( - sdk.EventTypeMessage, - sdk.NewAttribute(sdk.AttributeKeyModule, types.EventAttrModule), - sdk.NewAttribute(sdk.AttributeKeySender, lenderAddr.String()), - ), - }) + ctx.GasMeter().ConsumeGas(types.WithdrawGas, "WithdrawGas") return &types.MsgWithdrawResponse{}, nil } @@ -74,29 +47,13 @@ func (m msgServer) Withdraw(goCtx context.Context, withdraw *types.MsgWithdraw) func (m msgServer) Deposit(goCtx context.Context, deposit *types.MsgDeposit) (*types.MsgDepositResponse, error) { ctx := sdk.UnwrapSDKContext(goCtx) - lenderAddr, err := sdk.AccAddressFromBech32(deposit.Lender) - if err != nil { - return nil, err - } - lendID := deposit.LendId if err := m.keeper.DepositAsset(ctx, deposit.Lender, lendID, deposit.Amount); err != nil { return nil, err } - ctx.EventManager().EmitEvents(sdk.Events{ - sdk.NewEvent( - types.EventTypeWithdrawLoanedAsset, - sdk.NewAttribute(types.EventAttrLender, lenderAddr.String()), - sdk.NewAttribute(sdk.AttributeKeyAmount, deposit.Amount.String()), - ), - sdk.NewEvent( - sdk.EventTypeMessage, - sdk.NewAttribute(sdk.AttributeKeyModule, types.EventAttrModule), - sdk.NewAttribute(sdk.AttributeKeySender, lenderAddr.String()), - ), - }) + ctx.GasMeter().ConsumeGas(types.DepositGas, "DepositGas") return &types.MsgDepositResponse{}, nil } @@ -104,28 +61,13 @@ func (m msgServer) Deposit(goCtx context.Context, deposit *types.MsgDeposit) (*t func (m msgServer) CloseLend(goCtx context.Context, lend *types.MsgCloseLend) (*types.MsgCloseLendResponse, error) { ctx := sdk.UnwrapSDKContext(goCtx) - lenderAddr, err := sdk.AccAddressFromBech32(lend.Lender) - if err != nil { - return nil, err - } - lendID := lend.LendId if err := m.keeper.CloseLend(ctx, lend.Lender, lendID); err != nil { return nil, err } - ctx.EventManager().EmitEvents(sdk.Events{ - sdk.NewEvent( - types.EventTypeWithdrawLoanedAsset, - sdk.NewAttribute(types.EventAttrLender, lenderAddr.String()), - ), - sdk.NewEvent( - sdk.EventTypeMessage, - sdk.NewAttribute(sdk.AttributeKeyModule, types.EventAttrModule), - sdk.NewAttribute(sdk.AttributeKeySender, lenderAddr.String()), - ), - }) + ctx.GasMeter().ConsumeGas(types.CloseLendGas, "CloseLendGas") return &types.MsgCloseLendResponse{}, nil } @@ -133,28 +75,11 @@ func (m msgServer) CloseLend(goCtx context.Context, lend *types.MsgCloseLend) (* func (m msgServer) Borrow(goCtx context.Context, borrow *types.MsgBorrow) (*types.MsgBorrowResponse, error) { ctx := sdk.UnwrapSDKContext(goCtx) - borrowerAddr, err := sdk.AccAddressFromBech32(borrow.Borrower) - if err != nil { - return nil, err - } - if err := m.keeper.BorrowAsset(ctx, borrow.Borrower, borrow.LendId, borrow.PairId, borrow.IsStableBorrow, borrow.AmountIn, borrow.AmountOut); err != nil { return nil, err } - ctx.EventManager().EmitEvents(sdk.Events{ - sdk.NewEvent( - types.EventTypeBorrowAsset, - sdk.NewAttribute(types.EventAttrBorrower, borrowerAddr.String()), - sdk.NewAttribute(sdk.AttributeKeyAmount, borrow.AmountIn.String()), - sdk.NewAttribute(sdk.AttributeKeyAmount, borrow.AmountOut.String()), - ), - sdk.NewEvent( - sdk.EventTypeMessage, - sdk.NewAttribute(sdk.AttributeKeyModule, types.EventAttrModule), - sdk.NewAttribute(sdk.AttributeKeySender, borrowerAddr.String()), - ), - }) + ctx.GasMeter().ConsumeGas(types.BorrowAssetGas, "BorrowAssetGas") return &types.MsgBorrowResponse{}, nil } @@ -162,27 +87,11 @@ func (m msgServer) Borrow(goCtx context.Context, borrow *types.MsgBorrow) (*type func (m msgServer) Repay(goCtx context.Context, repay *types.MsgRepay) (*types.MsgRepayResponse, error) { ctx := sdk.UnwrapSDKContext(goCtx) - borrowerAddr, err := sdk.AccAddressFromBech32(repay.Borrower) - if err != nil { - return nil, err - } - if err := m.keeper.RepayAsset(ctx, repay.BorrowId, repay.Borrower, repay.Amount); err != nil { return nil, err } - ctx.EventManager().EmitEvents(sdk.Events{ - sdk.NewEvent( - types.EventTypeRepayBorrowedAsset, - sdk.NewAttribute(types.EventAttrBorrower, borrowerAddr.String()), - sdk.NewAttribute(types.EventAttrAttempted, repay.Amount.String()), - ), - sdk.NewEvent( - sdk.EventTypeMessage, - sdk.NewAttribute(sdk.AttributeKeyModule, types.EventAttrModule), - sdk.NewAttribute(sdk.AttributeKeySender, borrowerAddr.String()), - ), - }) + ctx.GasMeter().ConsumeGas(types.RepayAssetGas, "RepayAssetGas") return &types.MsgRepayResponse{}, nil } @@ -190,27 +99,11 @@ func (m msgServer) Repay(goCtx context.Context, repay *types.MsgRepay) (*types.M func (m msgServer) DepositBorrow(goCtx context.Context, borrow *types.MsgDepositBorrow) (*types.MsgDepositBorrowResponse, error) { ctx := sdk.UnwrapSDKContext(goCtx) - borrowerAddr, err := sdk.AccAddressFromBech32(borrow.Borrower) - if err != nil { - return nil, err - } - if err := m.keeper.DepositBorrowAsset(ctx, borrow.BorrowId, borrow.Borrower, borrow.Amount); err != nil { return nil, err } - ctx.EventManager().EmitEvents(sdk.Events{ - sdk.NewEvent( - types.EventTypeRepayBorrowedAsset, - sdk.NewAttribute(types.EventAttrBorrower, borrowerAddr.String()), - sdk.NewAttribute(types.EventAttrAttempted, borrow.Amount.String()), - ), - sdk.NewEvent( - sdk.EventTypeMessage, - sdk.NewAttribute(sdk.AttributeKeyModule, types.EventAttrModule), - sdk.NewAttribute(sdk.AttributeKeySender, borrowerAddr.String()), - ), - }) + ctx.GasMeter().ConsumeGas(types.DepositBorrowAssetGas, "DepositBorrowAssetGas") return &types.MsgDepositBorrowResponse{}, nil } @@ -218,28 +111,12 @@ func (m msgServer) DepositBorrow(goCtx context.Context, borrow *types.MsgDeposit func (m msgServer) Draw(goCtx context.Context, draw *types.MsgDraw) (*types.MsgDrawResponse, error) { ctx := sdk.UnwrapSDKContext(goCtx) - borrowerAddr, err := sdk.AccAddressFromBech32(draw.Borrower) - if err != nil { - return nil, err - } - - err = m.keeper.DrawAsset(ctx, draw.BorrowId, draw.Borrower, draw.Amount) + err := m.keeper.DrawAsset(ctx, draw.BorrowId, draw.Borrower, draw.Amount) if err != nil { return nil, err } - ctx.EventManager().EmitEvents(sdk.Events{ - sdk.NewEvent( - types.EventTypeRepayBorrowedAsset, - sdk.NewAttribute(types.EventAttrBorrower, borrowerAddr.String()), - sdk.NewAttribute(types.EventAttrAttempted, draw.Amount.String()), - ), - sdk.NewEvent( - sdk.EventTypeMessage, - sdk.NewAttribute(sdk.AttributeKeyModule, types.EventAttrModule), - sdk.NewAttribute(sdk.AttributeKeySender, borrowerAddr.String()), - ), - }) + ctx.GasMeter().ConsumeGas(types.DrawAssetGas, "DrawAssetGas") return &types.MsgDrawResponse{}, nil } @@ -247,32 +124,29 @@ func (m msgServer) Draw(goCtx context.Context, draw *types.MsgDraw) (*types.MsgD func (m msgServer) CloseBorrow(goCtx context.Context, borrow *types.MsgCloseBorrow) (*types.MsgCloseBorrowResponse, error) { ctx := sdk.UnwrapSDKContext(goCtx) - lenderAddr, err := sdk.AccAddressFromBech32(borrow.Borrower) - if err != nil { - return nil, err - } - borrowID := borrow.BorrowId if err := m.keeper.CloseBorrow(ctx, borrow.Borrower, borrowID); err != nil { return nil, err } - ctx.EventManager().EmitEvents(sdk.Events{ - sdk.NewEvent( - types.EventTypeWithdrawLoanedAsset, - sdk.NewAttribute(types.EventAttrLender, lenderAddr.String()), - ), - sdk.NewEvent( - sdk.EventTypeMessage, - sdk.NewAttribute(sdk.AttributeKeyModule, types.EventAttrModule), - sdk.NewAttribute(sdk.AttributeKeySender, lenderAddr.String()), - ), - }) + ctx.GasMeter().ConsumeGas(types.CloseBorrowAssetGas, "CloseBorrowAssetGas") return &types.MsgCloseBorrowResponse{}, nil } +func (m msgServer) BorrowAlternate(goCtx context.Context, alternate *types.MsgBorrowAlternate) (*types.MsgBorrowAlternateResponse, error) { + ctx := sdk.UnwrapSDKContext(goCtx) + + if err := m.keeper.BorrowAlternate(ctx, alternate.Lender, alternate.AssetId, alternate.PoolId, alternate.AmountIn, alternate.PairId, alternate.IsStableBorrow, alternate.AmountOut, alternate.AppId); err != nil { + return nil, err + } + + ctx.GasMeter().ConsumeGas(types.BorrowAssetAlternateGas, "BorrowAssetAlternateGas") + + return &types.MsgBorrowAlternateResponse{}, nil +} + func (m msgServer) FundModuleAccounts(goCtx context.Context, accounts *types.MsgFundModuleAccounts) (*types.MsgFundModuleAccountsResponse, error) { ctx := sdk.UnwrapSDKContext(goCtx) @@ -285,18 +159,5 @@ func (m msgServer) FundModuleAccounts(goCtx context.Context, accounts *types.Msg return nil, err } - ctx.EventManager().EmitEvents(sdk.Events{ - sdk.NewEvent( - types.EventTypeLoanAsset, - sdk.NewAttribute(types.EventAttrLender, lenderAddr.String()), - sdk.NewAttribute(sdk.AttributeKeyAmount, accounts.Amount.String()), - ), - sdk.NewEvent( - sdk.EventTypeMessage, - sdk.NewAttribute(sdk.AttributeKeyModule, types.EventAttrModule), - sdk.NewAttribute(sdk.AttributeKeySender, lenderAddr.String()), - ), - }) - return &types.MsgFundModuleAccountsResponse{}, nil } diff --git a/x/lend/keeper/msg_server_test.go b/x/lend/keeper/msg_server_test.go new file mode 100644 index 000000000..37216a28c --- /dev/null +++ b/x/lend/keeper/msg_server_test.go @@ -0,0 +1,77 @@ +package keeper_test + +import "github.com/comdex-official/comdex/x/lend/types" + +func (s *KeeperTestSuite) Test() { + + //addr1 := s.addr(1) + //addr2 := s.addr(2) + + assetOneID := s.CreateNewAsset("ASSET1", "uasset1", 1000000) + assetTwoID := s.CreateNewAsset("ASSET2", "uasset2", 2000000) + assetThreeID := s.CreateNewAsset("ASSET3", "uasset3", 2000000) + assetFourID := s.CreateNewAsset("ASSET4", "uasset4", 2000000) + cAssetOneID := s.CreateNewAsset("CASSET1", "ucasset1", 1000000) + cAssetTwoID := s.CreateNewAsset("CASSET2", "ucasset2", 2000000) + cAssetThreeID := s.CreateNewAsset("CASSET3", "ucasset3", 2000000) + cAssetFourID := s.CreateNewAsset("CASSET4", "ucasset4", 2000000) + + var ( + assetDataPoolOne []types.AssetDataPoolMapping + assetDataPoolTwo []types.AssetDataPoolMapping + ) + assetDataPoolOneAssetOne := types.AssetDataPoolMapping{ + AssetID: assetOneID, + IsBridged: false, + } + assetDataPoolOneAssetTwo := types.AssetDataPoolMapping{ + AssetID: assetTwoID, + IsBridged: true, + } + assetDataPoolOneAssetThree := types.AssetDataPoolMapping{ + AssetID: assetThreeID, + IsBridged: true, + } + assetDataPoolTwoAssetFour := types.AssetDataPoolMapping{ + AssetID: assetFourID, + IsBridged: true, + } + + assetDataPoolOne = append(assetDataPoolOne, assetDataPoolOneAssetOne, assetDataPoolOneAssetTwo, assetDataPoolOneAssetThree) + assetDataPoolTwo = append(assetDataPoolOne, assetDataPoolTwoAssetFour, assetDataPoolOneAssetTwo, assetDataPoolOneAssetThree) + + poolOneID := s.CreateNewPool("cmdx", "CMDX-ATOM-CMST", assetOneID, assetTwoID, assetThreeID, assetDataPoolOne) + poolTwoID := s.CreateNewPool("osmo", "OSMO-ATOM-CMST", assetFourID, assetTwoID, assetThreeID, assetDataPoolTwo) + + s.AddAssetRatesStats(assetThreeID, newDec("0.8"), newDec("0.002"), newDec("0.06"), newDec("0.6"), true, newDec("0.04"), newDec("0.04"), newDec("0.06"), newDec("0.8"), newDec("0.85"), newDec("0.025"), newDec("0.025"), newDec("0.1"), cAssetThreeID) + s.AddAssetRatesStats(assetOneID, newDec("0.75"), newDec("0.002"), newDec("0.07"), newDec("1.25"), false, newDec("0.0"), newDec("0.0"), newDec("0.0"), newDec("0.7"), newDec("0.75"), newDec("0.05"), newDec("0.05"), newDec("0.2"), cAssetOneID) + s.AddAssetRatesStats(assetFourID, newDec("0.65"), newDec("0.002"), newDec("0.08"), newDec("1.5"), false, newDec("0.0"), newDec("0.0"), newDec("0.0"), newDec("0.6"), newDec("0.65"), newDec("0.05"), newDec("0.05"), newDec("0.2"), cAssetFourID) + s.AddAssetRatesStats(assetTwoID, newDec("0.5"), newDec("0.002"), newDec("0.08"), newDec("2.0"), false, newDec("0.0"), newDec("0.0"), newDec("0.0"), newDec("0.5"), newDec("0.55"), newDec("0.05"), newDec("0.05"), newDec("0.2"), cAssetTwoID) + + pairOneID := s.AddExtendedLendPair(assetTwoID, assetThreeID, false, poolOneID, 1000000) + pairTwoID := s.AddExtendedLendPair(assetTwoID, assetOneID, false, poolOneID, 1000000) + pairThreeID := s.AddExtendedLendPair(assetOneID, assetTwoID, false, poolOneID, 1000000) + pairFourID := s.AddExtendedLendPair(assetOneID, assetThreeID, false, poolOneID, 1000000) + pairFiveID := s.AddExtendedLendPair(assetThreeID, assetTwoID, false, poolOneID, 1000000) + pairSixID := s.AddExtendedLendPair(assetThreeID, assetOneID, false, poolOneID, 1000000) + pairSevenID := s.AddExtendedLendPair(assetFourID, assetThreeID, false, poolTwoID, 1000000) + pairEightID := s.AddExtendedLendPair(assetFourID, assetOneID, false, poolTwoID, 1000000) + pairNineID := s.AddExtendedLendPair(assetOneID, assetFourID, false, poolTwoID, 1000000) + pairTenID := s.AddExtendedLendPair(assetOneID, assetThreeID, false, poolTwoID, 1000000) + pairElevenID := s.AddExtendedLendPair(assetThreeID, assetFourID, false, poolTwoID, 1000000) + pairTwelveID := s.AddExtendedLendPair(assetThreeID, assetOneID, false, poolTwoID, 1000000) + pairThirteenID := s.AddExtendedLendPair(assetTwoID, assetFourID, true, poolTwoID, 1000000) + pairFourteenID := s.AddExtendedLendPair(assetThreeID, assetFourID, true, poolTwoID, 1000000) + pairFifteenID := s.AddExtendedLendPair(assetOneID, assetFourID, true, poolTwoID, 1000000) + pairSixteenID := s.AddExtendedLendPair(assetFourID, assetTwoID, true, poolOneID, 1000000) + pairSeventeenID := s.AddExtendedLendPair(assetThreeID, assetTwoID, true, poolOneID, 1000000) + pairEighteenID := s.AddExtendedLendPair(assetOneID, assetTwoID, true, poolOneID, 1000000) + + s.AddAssetToPair(assetOneID, poolOneID, []uint64{pairThreeID, pairFourID, pairFifteenID}) + s.AddAssetToPair(assetTwoID, poolOneID, []uint64{pairOneID, pairTwoID, pairThirteenID}) + s.AddAssetToPair(assetThreeID, poolOneID, []uint64{pairFiveID, pairSixID, pairFourteenID}) + s.AddAssetToPair(assetFourID, poolTwoID, []uint64{pairSevenID, pairEightID, pairSixteenID}) + s.AddAssetToPair(assetOneID, poolTwoID, []uint64{pairNineID, pairTenID, pairEighteenID}) + s.AddAssetToPair(assetThreeID, poolTwoID, []uint64{pairElevenID, pairTwelveID, pairSeventeenID}) + +} diff --git a/x/lend/keeper/pair.go b/x/lend/keeper/pair.go index 304b8145e..957798789 100644 --- a/x/lend/keeper/pair.go +++ b/x/lend/keeper/pair.go @@ -6,7 +6,7 @@ import ( protobuftypes "github.com/gogo/protobuf/types" ) -func (k *Keeper) AddLendPairsRecords(ctx sdk.Context, records ...types.Extended_Pair) error { +func (k Keeper) AddLendPairsRecords(ctx sdk.Context, records ...types.Extended_Pair) error { for _, msg := range records { _, found := k.GetLendPair(ctx, msg.Id) if found { @@ -20,7 +20,7 @@ func (k *Keeper) AddLendPairsRecords(ctx sdk.Context, records ...types.Extended_ AssetIn: msg.AssetIn, AssetOut: msg.AssetOut, IsInterPool: msg.IsInterPool, - AssetOutPoolId: msg.AssetOutPoolId, + AssetOutPoolID: msg.AssetOutPoolID, MinUsdValueLeft: msg.MinUsdValueLeft, } ) @@ -33,7 +33,7 @@ func (k *Keeper) AddLendPairsRecords(ctx sdk.Context, records ...types.Extended_ func (k Keeper) AddPoolRecords(ctx sdk.Context, pool types.Pool) error { for _, v := range pool.AssetData { - _, found := k.GetAsset(ctx, v.AssetId) + _, found := k.GetAsset(ctx, v.AssetID) if !found { return types.ErrorAssetDoesNotExist } @@ -47,7 +47,7 @@ func (k Keeper) AddPoolRecords(ctx sdk.Context, pool types.Pool) error { if !found { for _, v := range pool.AssetData { balanceStat := types.BalanceStats{ - AssetId: v.AssetId, + AssetID: v.AssetID, Amount: sdk.ZeroInt(), } balanceStats = append(balanceStats, balanceStat) @@ -57,17 +57,22 @@ func (k Keeper) AddPoolRecords(ctx sdk.Context, pool types.Pool) error { BuyBackDepositStats = types.DepositStats{BalanceStats: balanceStats} BorrowStats = types.DepositStats{BalanceStats: balanceStats} k.SetDepositStats(ctx, depositStats) - k.SetUserDepositStats(ctx, depositStats) - k.SetReserveDepositStats(ctx, depositStats) - k.SetBorrowStats(ctx, depositStats) + k.SetUserDepositStats(ctx, userDepositStats) + k.SetReserveDepositStats(ctx, ReserveDepositStats) + k.SetBuyBackDepositStats(ctx, BuyBackDepositStats) + k.SetBorrowStats(ctx, BorrowStats) } } else { balanceStat := types.BalanceStats{ - AssetId: pool.MainAssetId, + AssetID: pool.MainAssetId, Amount: sdk.ZeroInt(), } balanceStats = append(depositStats.BalanceStats, balanceStat) depositStats = types.DepositStats{BalanceStats: balanceStats} + userDepositStats = types.DepositStats{BalanceStats: balanceStats} + ReserveDepositStats = types.DepositStats{BalanceStats: balanceStats} + BuyBackDepositStats = types.DepositStats{BalanceStats: balanceStats} + BorrowStats = types.DepositStats{BalanceStats: balanceStats} k.SetDepositStats(ctx, depositStats) k.SetUserDepositStats(ctx, userDepositStats) k.SetReserveDepositStats(ctx, ReserveDepositStats) @@ -77,29 +82,42 @@ func (k Keeper) AddPoolRecords(ctx sdk.Context, pool types.Pool) error { poolID := k.GetPoolID(ctx) newPool := types.Pool{ - PoolId: poolID + 1, + PoolID: poolID + 1, ModuleName: pool.ModuleName, MainAssetId: pool.MainAssetId, - FirstBridgedAssetId: pool.FirstBridgedAssetId, - SecondBridgedAssetId: pool.SecondBridgedAssetId, + FirstBridgedAssetID: pool.FirstBridgedAssetID, + SecondBridgedAssetID: pool.SecondBridgedAssetID, + CPoolName: pool.CPoolName, + ReserveFunds: pool.ReserveFunds, AssetData: pool.AssetData, } + for _, v := range pool.AssetData { + var assetStats types.AssetStats + assetStats.PoolID = newPool.PoolID + assetStats.AssetID = v.AssetID + assetStats.TotalBorrowed = sdk.ZeroInt() + assetStats.TotalStableBorrowed = sdk.ZeroInt() + assetStats.TotalLend = sdk.ZeroInt() + k.SetAssetStatsByPoolIDAndAssetID(ctx, assetStats) + k.UpdateAPR(ctx, newPool.PoolID, v.AssetID) + } + k.SetPool(ctx, newPool) - k.SetPoolID(ctx, newPool.PoolId) + k.SetPoolID(ctx, newPool.PoolID) return nil } func (k Keeper) AddAssetToPair(ctx sdk.Context, assetToPair types.AssetToPairMapping) error { - _, found := k.GetAsset(ctx, assetToPair.AssetId) + _, found := k.GetAsset(ctx, assetToPair.AssetID) if !found { return types.ErrorAssetDoesNotExist } - _, found = k.GetPool(ctx, assetToPair.PoolId) + _, found = k.GetPool(ctx, assetToPair.PoolID) if !found { return types.ErrPoolNotFound } - for _, v := range assetToPair.PairId { - _, found := k.GetLendPair(ctx, v) + for _, v := range assetToPair.PairID { + _, found = k.GetLendPair(ctx, v) if !found { return types.ErrorPairDoesNotExist } @@ -109,17 +127,7 @@ func (k Keeper) AddAssetToPair(ctx sdk.Context, assetToPair types.AssetToPairMap return nil } -func (k *Keeper) UpdateLendPairRecords(ctx sdk.Context, msg types.Extended_Pair) error { - pair, found := k.GetLendPair(ctx, msg.Id) - if !found { - return types.ErrorPairDoesNotExist - } - - k.SetLendPair(ctx, pair) - return nil -} - -func (k *Keeper) SetLendPairID(ctx sdk.Context, id uint64) { +func (k Keeper) SetLendPairID(ctx sdk.Context, id uint64) { var ( store = k.Store(ctx) key = types.LendPairIDKey @@ -133,7 +141,7 @@ func (k *Keeper) SetLendPairID(ctx sdk.Context, id uint64) { store.Set(key, value) } -func (k *Keeper) SetLendPair(ctx sdk.Context, pair types.Extended_Pair) { +func (k Keeper) SetLendPair(ctx sdk.Context, pair types.Extended_Pair) { var ( store = k.Store(ctx) key = types.LendPairKey(pair.Id) @@ -143,7 +151,7 @@ func (k *Keeper) SetLendPair(ctx sdk.Context, pair types.Extended_Pair) { store.Set(key, value) } -func (k *Keeper) GetLendPair(ctx sdk.Context, id uint64) (pair types.Extended_Pair, found bool) { +func (k Keeper) GetLendPair(ctx sdk.Context, id uint64) (pair types.Extended_Pair, found bool) { var ( store = k.Store(ctx) key = types.LendPairKey(id) @@ -158,7 +166,29 @@ func (k *Keeper) GetLendPair(ctx sdk.Context, id uint64) (pair types.Extended_Pa return pair, true } -func (k *Keeper) GetLendPairID(ctx sdk.Context) uint64 { +func (k Keeper) GetLendPairs(ctx sdk.Context) (pairs []types.Extended_Pair) { + var ( + store = k.Store(ctx) + iter = sdk.KVStorePrefixIterator(store, types.LendPairKeyPrefix) + ) + + defer func(iter sdk.Iterator) { + err := iter.Close() + if err != nil { + return + } + }(iter) + + for ; iter.Valid(); iter.Next() { + var pair types.Extended_Pair + k.cdc.MustUnmarshal(iter.Value(), &pair) + pairs = append(pairs, pair) + } + + return pairs +} + +func (k Keeper) GetLendPairID(ctx sdk.Context) uint64 { var ( store = k.Store(ctx) key = types.LendPairIDKey @@ -175,16 +205,16 @@ func (k *Keeper) GetLendPairID(ctx sdk.Context) uint64 { return count.GetValue() } -func (k *Keeper) AddAssetRatesStats(ctx sdk.Context, records ...types.AssetRatesStats) error { +func (k Keeper) AddAssetRatesStats(ctx sdk.Context, records ...types.AssetRatesStats) error { for _, msg := range records { - _, found := k.GetAssetRatesStats(ctx, msg.AssetId) + _, found := k.GetAssetRatesStats(ctx, msg.AssetID) if found { return types.ErrorDuplicateAssetRatesStats } var ( assetRatesStats = types.AssetRatesStats{ - AssetId: msg.AssetId, + AssetID: msg.AssetID, UOptimal: msg.UOptimal, Base: msg.Base, Slope1: msg.Slope1, @@ -196,8 +226,9 @@ func (k *Keeper) AddAssetRatesStats(ctx sdk.Context, records ...types.AssetRates Ltv: msg.Ltv, LiquidationThreshold: msg.LiquidationThreshold, LiquidationPenalty: msg.LiquidationPenalty, + LiquidationBonus: msg.LiquidationBonus, ReserveFactor: msg.ReserveFactor, - CAssetId: msg.CAssetId, + CAssetID: msg.CAssetID, } ) @@ -206,17 +237,65 @@ func (k *Keeper) AddAssetRatesStats(ctx sdk.Context, records ...types.AssetRates return nil } -func (k *Keeper) SetAssetRatesStats(ctx sdk.Context, assetRatesStats types.AssetRatesStats) { +func (k Keeper) AddAuctionParamsData(ctx sdk.Context, param types.AuctionParams) error { + var ( + store = k.Store(ctx) + key = types.AuctionParamKey(param.AppId) + value = k.cdc.MustMarshal(¶m) + ) + + store.Set(key, value) + + return nil +} + +func (k Keeper) GetAddAuctionParamsData(ctx sdk.Context, appID uint64) (auctionParams types.AuctionParams, found bool) { var ( store = k.Store(ctx) - key = types.AssetRatesStatsKey(assetRatesStats.AssetId) + key = types.AuctionParamKey(appID) + value = store.Get(key) + ) + + if value == nil { + return auctionParams, false + } + + k.cdc.MustUnmarshal(value, &auctionParams) + return auctionParams, true +} + +func (k Keeper) GetAllAddAuctionParamsData(ctx sdk.Context) (auctionParams []types.AuctionParams) { + var ( + store = k.Store(ctx) + iter = sdk.KVStorePrefixIterator(store, types.AuctionParamPrefix) + ) + + defer func(iter sdk.Iterator) { + err := iter.Close() + if err != nil { + return + } + }(iter) + + for ; iter.Valid(); iter.Next() { + var asset types.AuctionParams + k.cdc.MustUnmarshal(iter.Value(), &asset) + auctionParams = append(auctionParams, asset) + } + return auctionParams +} + +func (k Keeper) SetAssetRatesStats(ctx sdk.Context, assetRatesStats types.AssetRatesStats) { + var ( + store = k.Store(ctx) + key = types.AssetRatesStatsKey(assetRatesStats.AssetID) value = k.cdc.MustMarshal(&assetRatesStats) ) store.Set(key, value) } -func (k *Keeper) GetAssetRatesStats(ctx sdk.Context, assetID uint64) (assetRatesStats types.AssetRatesStats, found bool) { +func (k Keeper) GetAssetRatesStats(ctx sdk.Context, assetID uint64) (assetRatesStats types.AssetRatesStats, found bool) { var ( store = k.Store(ctx) key = types.AssetRatesStatsKey(assetID) @@ -231,7 +310,28 @@ func (k *Keeper) GetAssetRatesStats(ctx sdk.Context, assetID uint64) (assetRates return assetRatesStats, true } -func (k *Keeper) SetDepositStats(ctx sdk.Context, depositStats types.DepositStats) { +func (k Keeper) GetAllAssetRatesStats(ctx sdk.Context) (assetRatesStats []types.AssetRatesStats) { + var ( + store = k.Store(ctx) + iter = sdk.KVStorePrefixIterator(store, types.AssetRatesStatsKeyPrefix) + ) + + defer func(iter sdk.Iterator) { + err := iter.Close() + if err != nil { + return + } + }(iter) + + for ; iter.Valid(); iter.Next() { + var asset types.AssetRatesStats + k.cdc.MustUnmarshal(iter.Value(), &asset) + assetRatesStats = append(assetRatesStats, asset) + } + return assetRatesStats +} + +func (k Keeper) SetDepositStats(ctx sdk.Context, depositStats types.DepositStats) { var ( store = k.Store(ctx) key = types.DepositStatsPrefix @@ -241,7 +341,7 @@ func (k *Keeper) SetDepositStats(ctx sdk.Context, depositStats types.DepositStat store.Set(key, value) } -func (k *Keeper) GetDepositStats(ctx sdk.Context) (depositStats types.DepositStats, found bool) { +func (k Keeper) GetDepositStats(ctx sdk.Context) (depositStats types.DepositStats, found bool) { var ( store = k.Store(ctx) key = types.DepositStatsPrefix diff --git a/x/lend/keeper/rates.go b/x/lend/keeper/rates.go index 052bc84ed..54ccd42f7 100644 --- a/x/lend/keeper/rates.go +++ b/x/lend/keeper/rates.go @@ -6,7 +6,7 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" ) -func (k *Keeper) VerifyCollaterlizationRatio( +func (k Keeper) VerifyCollaterlizationRatio( ctx sdk.Context, amountIn sdk.Int, assetIn assettypes.Asset, @@ -26,7 +26,7 @@ func (k *Keeper) VerifyCollaterlizationRatio( return nil } -func (k *Keeper) CalculateCollaterlizationRatio( +func (k Keeper) CalculateCollaterlizationRatio( ctx sdk.Context, amountIn sdk.Int, assetIn assettypes.Asset, diff --git a/x/lend/keeper/reserves.go b/x/lend/keeper/reserves.go deleted file mode 100644 index b55569d4a..000000000 --- a/x/lend/keeper/reserves.go +++ /dev/null @@ -1 +0,0 @@ -package keeper diff --git a/x/lend/module.go b/x/lend/module.go index 85010b76c..1226e6139 100644 --- a/x/lend/module.go +++ b/x/lend/module.go @@ -58,7 +58,7 @@ func (a AppModuleBasic) RegisterInterfaces(reg cdctypes.InterfaceRegistry) { // DefaultGenesis returns the capability module's default genesis state. func (AppModuleBasic) DefaultGenesis(cdc codec.JSONCodec) json.RawMessage { - return cdc.MustMarshalJSON(types.DefaultGenesis()) + return cdc.MustMarshalJSON(types.DefaultGenesisState()) } // ValidateGenesis performs genesis state validation for the capability module. @@ -150,7 +150,7 @@ func (am AppModule) InitGenesis(ctx sdk.Context, cdc codec.JSONCodec, gs json.Ra // Initialize global index to index in genesis state cdc.MustUnmarshalJSON(gs, &genState) - InitGenesis(ctx, am.keeper, genState) + InitGenesis(ctx, am.keeper, &genState) return []abci.ValidatorUpdate{} } diff --git a/x/lend/module_simulation.go b/x/lend/module_simulation.go index 5031f7e70..8b000356f 100644 --- a/x/lend/module_simulation.go +++ b/x/lend/module_simulation.go @@ -23,9 +23,7 @@ var ( _ = baseapp.Paramspace ) -const ( -// this line is used by starport scaffolding # simapp/module/const. -) +const () // GenerateGenesisState creates a randomized GenState of the module. func (AppModule) GenerateGenesisState(simState *module.SimulationState) { @@ -33,9 +31,7 @@ func (AppModule) GenerateGenesisState(simState *module.SimulationState) { for i, acc := range simState.Accounts { accs[i] = acc.Address.String() } - lendGenesis := types.GenesisState{ - // this line is used by starport scaffolding # simapp/module/genesisState. - } + lendGenesis := types.GenesisState{} simState.GenState[types.ModuleName] = simState.Cdc.MustMarshalJSON(&lendGenesis) } @@ -56,7 +52,5 @@ func (am AppModule) RegisterStoreDecoder(_ sdk.StoreDecoderRegistry) {} func (am AppModule) WeightedOperations(simState module.SimulationState) []simtypes.WeightedOperation { operations := make([]simtypes.WeightedOperation, 0) - // this line is used by starport scaffolding # simapp/module/operation. - return operations } diff --git a/x/lend/types/codec.go b/x/lend/types/codec.go index 2c5d31138..aef487b71 100644 --- a/x/lend/types/codec.go +++ b/x/lend/types/codec.go @@ -19,22 +19,23 @@ func RegisterCodec(cdc *codec.LegacyAmino) { cdc.RegisterConcrete(&MsgDraw{}, "comdex/lend/draw", nil) cdc.RegisterConcrete(&MsgCloseBorrow{}, "comdex/lend/close-borrow", nil) cdc.RegisterConcrete(&MsgRepay{}, "comdex/lend/repay", nil) + cdc.RegisterConcrete(&MsgBorrowAlternate{}, "comdex/lend/borrow-alternate", nil) cdc.RegisterConcrete(&MsgFundModuleAccounts{}, "comdex/lend/fund-module", nil) cdc.RegisterConcrete(&LendPairsProposal{}, "comdex/lend/add-lend-pairs", nil) - cdc.RegisterConcrete(&UpdatePairProposal{}, "comdex/lend/update-lend-pairs", nil) cdc.RegisterConcrete(&AddPoolsProposal{}, "comdex/lend/add-lend-pools", nil) cdc.RegisterConcrete(&AddAssetToPairProposal{}, "comdex/lend/add-asset-to-pair-mapping", nil) cdc.RegisterConcrete(&AddAssetRatesStats{}, "comdex/lend/add-asset-rates-stats", nil) + cdc.RegisterConcrete(&AddAuctionParamsProposal{}, "comdex/lend/add-auction-params", nil) } func RegisterInterfaces(registry cdctypes.InterfaceRegistry) { registry.RegisterImplementations( (*govtypes.Content)(nil), &LendPairsProposal{}, - &UpdatePairProposal{}, &AddPoolsProposal{}, &AddAssetToPairProposal{}, &AddAssetRatesStats{}, + &AddAuctionParamsProposal{}, ) registry.RegisterImplementations( (*sdk.Msg)(nil), @@ -47,6 +48,7 @@ func RegisterInterfaces(registry cdctypes.InterfaceRegistry) { &MsgDraw{}, &MsgCloseBorrow{}, &MsgRepay{}, + &MsgBorrowAlternate{}, &MsgFundModuleAccounts{}, ) diff --git a/x/lend/types/errors.go b/x/lend/types/errors.go index 1cd4474be..bf796783f 100644 --- a/x/lend/types/errors.go +++ b/x/lend/types/errors.go @@ -7,39 +7,51 @@ import ( ) var ( - ErrInvalidAsset = sdkerrors.Register(ModuleName, 1100, "invalid asset") - ErrLendingPoolInsufficient = sdkerrors.Register(ModuleName, 1103, "lending pool insufficient") - ErrInvalidRepayment = sdkerrors.Register(ModuleName, 1104, "invalid repayment") - ErrNegativeTimeElapsed = sdkerrors.Register(ModuleName, 1111, "negative time elapsed since last interest time") - ErrorUnknownProposalType = sdkerrors.Register(ModuleName, 1119, "unknown proposal type") - ErrorEmptyProposalAssets = sdkerrors.Register(ModuleName, 1120, "empty assets in proposal") - ErrorAssetDoesNotExist = sdkerrors.Register(ModuleName, 1121, "asset does not exist") - ErrorPairDoesNotExist = sdkerrors.Register(ModuleName, 1123, "pair does not exist") - ErrBadOfferCoinAmount = sdkerrors.Register(ModuleName, 1125, "invalid offer coin amount") - ErrorDuplicateLendPair = sdkerrors.Register(ModuleName, 1126, "Duplicate lend Pair") - ErrorDuplicateLend = sdkerrors.Register(ModuleName, 1127, "Duplicate lend Position") - ErrorLendOwnerNotFound = sdkerrors.Register(ModuleName, 1128, "Lend Owner not found") - ErrLendNotFound = sdkerrors.Register(ModuleName, 1129, "Lend Position not found") - ErrWithdrawalAmountExceeds = sdkerrors.Register(ModuleName, 1130, "Withdrawal Amount Exceeds") - ErrLendAccessUnauthorised = sdkerrors.Register(ModuleName, 1131, "Unauthorized user for the tx") - ErrorPairNotFound = sdkerrors.Register(ModuleName, 1132, "Pair Not Found") - ErrorInvalidCollateralizationRatio = sdkerrors.Register(ModuleName, 1133, "Error Invalid Collaterallization Ratio") - ErrorPriceInDoesNotExist = sdkerrors.Register(ModuleName, 1134, "Error Price In Does Not Exist") - ErrorPriceOutDoesNotExist = sdkerrors.Register(ModuleName, 1135, "Error Price Out Does Not Exist") - ErrorInvalidAmountIn = sdkerrors.Register(ModuleName, 1136, "Error Invalid Amount In") - ErrorInvalidAmountOut = sdkerrors.Register(ModuleName, 1137, "Error Invalid Amount Out") - ErrorDuplicateBorrow = sdkerrors.Register(ModuleName, 1138, "Duplicate borrow Position") - ErrBorrowingPoolInsufficient = sdkerrors.Register(ModuleName, 1139, "borrowing pool insufficient") - ErrBorrowNotFound = sdkerrors.Register(ModuleName, 1140, "Borrow Position not found") - ErrBorrowingPositionOpen = sdkerrors.Register(ModuleName, 1141, "borrowing position open") - ErrAssetStatsNotFound = sdkerrors.Register(ModuleName, 1142, "Asset Stats Not Found") - ErrorDuplicateAssetRatesStats = sdkerrors.Register(ModuleName, 1143, "Duplicate Asset Rates Stats") - ErrorAssetStatsNotFound = sdkerrors.Register(ModuleName, 1144, "Asset Stats Not Found") - ErrInvalidAssetIDForPool = sdkerrors.Register(ModuleName, 1145, "Asset Id not defined in the pool") - ErrorAssetRatesStatsNotFound = sdkerrors.Register(ModuleName, 1146, "Asset Rates Stats not found") - ErrPoolNotFound = sdkerrors.Register(ModuleName, 1147, "Pool Not Found") - ErrAvailableToBorrowInsufficient = sdkerrors.Register(ModuleName, 1148, "Available To Borrow Insufficient") - ErrStableBorrowDisabled = sdkerrors.Register(ModuleName, 1149, "Stable Borrow Rate Not Enabled for This Asset") - ErrorPriceDoesNotExist = sdkerrors.Register(ModuleName, 1150, "Price does not exist") - ErrBadOfferCoinType = sdkerrors.Register(ModuleName, 1151, "invalid offer coin Type") + ErrInvalidAsset = sdkerrors.Register(ModuleName, 1100, "invalid asset") + ErrLendingPoolInsufficient = sdkerrors.Register(ModuleName, 1103, "lending pool insufficient") + ErrInvalidRepayment = sdkerrors.Register(ModuleName, 1104, "invalid repayment") + ErrNegativeTimeElapsed = sdkerrors.Register(ModuleName, 1111, "negative time elapsed since last interest time") + ErrorUnknownProposalType = sdkerrors.Register(ModuleName, 1119, "unknown proposal type") + ErrorEmptyProposalAssets = sdkerrors.Register(ModuleName, 1120, "empty assets in proposal") + ErrorAssetDoesNotExist = sdkerrors.Register(ModuleName, 1121, "asset does not exist") + ErrorPairDoesNotExist = sdkerrors.Register(ModuleName, 1123, "pair does not exist") + ErrBadOfferCoinAmount = sdkerrors.Register(ModuleName, 1125, "invalid offer coin amount") + ErrorDuplicateLendPair = sdkerrors.Register(ModuleName, 1126, "Duplicate lend Pair") + ErrorDuplicateLend = sdkerrors.Register(ModuleName, 1127, "Duplicate lend Position") + ErrorLendOwnerNotFound = sdkerrors.Register(ModuleName, 1128, "Lend Owner not found") + ErrLendNotFound = sdkerrors.Register(ModuleName, 1129, "Lend Position not found") + ErrWithdrawalAmountExceeds = sdkerrors.Register(ModuleName, 1130, "Withdrawal Amount Exceeds") + ErrLendAccessUnauthorised = sdkerrors.Register(ModuleName, 1131, "Unauthorized user for the tx") + ErrorPairNotFound = sdkerrors.Register(ModuleName, 1132, "Pair Not Found") + ErrorInvalidCollateralizationRatio = sdkerrors.Register(ModuleName, 1133, "Error Invalid Collaterallization Ratio") + ErrorPriceInDoesNotExist = sdkerrors.Register(ModuleName, 1134, "Error Price In Does Not Exist") + ErrorPriceOutDoesNotExist = sdkerrors.Register(ModuleName, 1135, "Error Price Out Does Not Exist") + ErrorInvalidAmountIn = sdkerrors.Register(ModuleName, 1136, "Error Invalid Amount In") + ErrorInvalidAmountOut = sdkerrors.Register(ModuleName, 1137, "Error Invalid Amount Out") + ErrorDuplicateBorrow = sdkerrors.Register(ModuleName, 1138, "Duplicate borrow Position") + ErrBorrowingPoolInsufficient = sdkerrors.Register(ModuleName, 1139, "borrowing pool insufficient") + ErrBorrowNotFound = sdkerrors.Register(ModuleName, 1140, "Borrow Position not found") + ErrBorrowingPositionOpen = sdkerrors.Register(ModuleName, 1141, "borrowing position open") + ErrAssetStatsNotFound = sdkerrors.Register(ModuleName, 1142, "Asset Stats Not Found") + ErrorDuplicateAssetRatesStats = sdkerrors.Register(ModuleName, 1143, "Duplicate Asset Rates Stats") + ErrorAssetStatsNotFound = sdkerrors.Register(ModuleName, 1144, "Asset Stats Not Found") + ErrInvalidAssetIDForPool = sdkerrors.Register(ModuleName, 1145, "Asset Id not defined in the pool") + ErrorAssetRatesStatsNotFound = sdkerrors.Register(ModuleName, 1146, "Asset Rates Stats not found") + ErrPoolNotFound = sdkerrors.Register(ModuleName, 1147, "Pool Not Found") + ErrAvailableToBorrowInsufficient = sdkerrors.Register(ModuleName, 1148, "Available To Borrow Insufficient") + ErrStableBorrowDisabled = sdkerrors.Register(ModuleName, 1149, "Stable Borrow Rate Not Enabled for This Asset") + ErrorPriceDoesNotExist = sdkerrors.Register(ModuleName, 1150, "Price does not exist") + ErrBadOfferCoinType = sdkerrors.Register(ModuleName, 1151, "invalid offer coin Type") + ErrInvalidLengthCPoolName = sdkerrors.Register(ModuleName, 1152, "invalid length found during unmarshaling") + ErrReserveRatesNotFound = sdkerrors.Register(ModuleName, 1153, "Reserve Rates Not found") + ErrWithdrawAmountLimitExceeds = sdkerrors.Register(ModuleName, 1154, "Withdraw Amount Limit Exceeded") + ErrorAppMappingDoesNotExist = sdkerrors.Register(ModuleName, 1155, "App Mapping Id does not exists") + ErrBridgeAssetQtyInsufficient = sdkerrors.Register(ModuleName, 1156, "Bridge Asset Qty Insufficient") + BurnCoinValueInLendIsZero = sdkerrors.Register(ModuleName, 1157, "Burn Coin value in lend is zero") + MintCoinValueInLendIsZero = sdkerrors.Register(ModuleName, 1158, "Mint Coin value in lend is zero") + SendCoinsFromModuleToModuleInLendIsZero = sdkerrors.Register(ModuleName, 1159, "Coin value in module to module transfer in lend is zero") + SendCoinsFromModuleToAccountInLendIsZero = sdkerrors.Register(ModuleName, 1160, "Coin value in module to account transfer in lend is zero") + SendCoinsFromAccountToModuleInLendIsZero = sdkerrors.Register(ModuleName, 1161, "Coin value in account to module transfer in lend is zero") + ErrAverageBorrowRate = sdkerrors.Register(ModuleName, 1162, "Average Borrow Rate Error") + ErrInsufficientFunds = sdkerrors.Register(ModuleName, 1163, "Insufficient Funds") ) diff --git a/x/lend/types/events.go b/x/lend/types/events.go deleted file mode 100644 index dd6e568f2..000000000 --- a/x/lend/types/events.go +++ /dev/null @@ -1,13 +0,0 @@ -package types - -const ( - EventTypeLoanAsset = "loan_asset" - EventTypeWithdrawLoanedAsset = "withdraw_loaned_asset" - EventTypeBorrowAsset = "borrow_asset" - EventTypeRepayBorrowedAsset = "repay_borrowed_asset" - - EventAttrModule = ModuleName - EventAttrLender = "lender" - EventAttrBorrower = "borrower" - EventAttrAttempted = "attempted" -) diff --git a/x/lend/types/genesis.go b/x/lend/types/genesis.go index 61893ce2e..756842072 100644 --- a/x/lend/types/genesis.go +++ b/x/lend/types/genesis.go @@ -1,20 +1,55 @@ package types -// DefaultIndex is the default capability global index. -const DefaultIndex uint64 = 1 - -// DefaultGenesis returns the default Capability genesis state. -func DefaultGenesis() *GenesisState { +func NewGenesisState(borrowAsset []BorrowAsset, userBorrowIdMapping []UserBorrowIdMapping, borrowIdByOwnerAndPoolMapping []BorrowIdByOwnerAndPoolMapping, borrowMapping BorrowMapping, lendAsset []LendAsset, pool []Pool, assetToPairMapping []AssetToPairMapping, userLendIdMapping []UserLendIdMapping, lendIdByOwnerAndPoolMapping []LendIdByOwnerAndPoolMapping, lendIdToBorrowIdMapping []LendIdToBorrowIdMapping, assetStats []AssetStats, lendMapping LendMapping, userdepositStats DepositStats, reservedepositStats DepositStats, buybackdepositStats DepositStats, borrowdepositStats DepositStats, extended_Pair []Extended_Pair, assetRatesStats []AssetRatesStats, auctionParams []AuctionParams, params Params) *GenesisState { return &GenesisState{ - // this line is used by starport scaffolding # genesis/types/default. - Params: DefaultParams(), + BorrowAsset: borrowAsset, + UserBorrowIdMapping: userBorrowIdMapping, + BorrowIdByOwnerAndPoolMapping: borrowIdByOwnerAndPoolMapping, + BorrowMapping: borrowMapping, + LendAsset: lendAsset, + Pool: pool, + AssetToPairMapping: assetToPairMapping, + UserLendIdMapping: userLendIdMapping, + LendIdByOwnerAndPoolMapping: lendIdByOwnerAndPoolMapping, + LendIdToBorrowIdMapping: lendIdToBorrowIdMapping, + AssetStats: assetStats, + LendMapping: lendMapping, + UserDepositStats: userdepositStats, + ReserveDepositStats: reservedepositStats, + BuyBackDepositStats: buybackdepositStats, + BorrowDepositStats: borrowdepositStats, + Extended_Pair: extended_Pair, + AssetRatesStats: assetRatesStats, + AuctionParams: auctionParams, + Params: params, } } -// Validate performs basic genesis state validation returning an error upon any. -// failure. -func (gs GenesisState) Validate() error { - // this line is used by starport scaffolding # genesis/types/validate. +func DefaultGenesisState() *GenesisState { + return NewGenesisState( + []BorrowAsset{}, + []UserBorrowIdMapping{}, + []BorrowIdByOwnerAndPoolMapping{}, + BorrowMapping{}, + []LendAsset{}, + []Pool{}, + []AssetToPairMapping{}, + []UserLendIdMapping{}, + []LendIdByOwnerAndPoolMapping{}, + []LendIdToBorrowIdMapping{}, + []AssetStats{}, + LendMapping{}, + DepositStats{}, + DepositStats{}, + DepositStats{}, + DepositStats{}, + []Extended_Pair{}, + []AssetRatesStats{}, + []AuctionParams{}, + DefaultParams(), + ) +} - return gs.Params.Validate() +func (m *GenesisState) Validate() error { + return nil } diff --git a/x/lend/types/genesis.pb.go b/x/lend/types/genesis.pb.go index 64f22382e..095e225cd 100644 --- a/x/lend/types/genesis.pb.go +++ b/x/lend/types/genesis.pb.go @@ -25,7 +25,26 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package // GenesisState defines the lend module's genesis state. type GenesisState struct { - Params Params `protobuf:"bytes,1,opt,name=params,proto3" json:"params"` + BorrowAsset []BorrowAsset `protobuf:"bytes,1,rep,name=borrowAsset,proto3" json:"borrowAsset" yaml:"borrowAsset"` + UserBorrowIdMapping []UserBorrowIdMapping `protobuf:"bytes,2,rep,name=userBorrowIdMapping,proto3" json:"userBorrowIdMapping" yaml:"userBorrowIdMapping"` + BorrowIdByOwnerAndPoolMapping []BorrowIdByOwnerAndPoolMapping `protobuf:"bytes,3,rep,name=borrowIdByOwnerAndPoolMapping,proto3" json:"borrowIdByOwnerAndPoolMapping" yaml:"borrowIdByOwnerAndPoolMapping"` + BorrowMapping BorrowMapping `protobuf:"bytes,4,opt,name=borrowMapping,proto3" json:"borrowMapping" yaml:"borrowMapping"` + LendAsset []LendAsset `protobuf:"bytes,5,rep,name=lendAsset,proto3" json:"lendAsset" yaml:"lendAsset"` + Pool []Pool `protobuf:"bytes,6,rep,name=pool,proto3" json:"pool" yaml:"pool"` + AssetToPairMapping []AssetToPairMapping `protobuf:"bytes,7,rep,name=assetToPairMapping,proto3" json:"assetToPairMapping" yaml:"assetToPairMapping"` + UserLendIdMapping []UserLendIdMapping `protobuf:"bytes,8,rep,name=userLendIdMapping,proto3" json:"userLendIdMapping" yaml:"userLendIdMapping"` + LendIdByOwnerAndPoolMapping []LendIdByOwnerAndPoolMapping `protobuf:"bytes,9,rep,name=lendIdByOwnerAndPoolMapping,proto3" json:"lendIdByOwnerAndPoolMapping" yaml:"lendIdByOwnerAndPoolMapping"` + LendIdToBorrowIdMapping []LendIdToBorrowIdMapping `protobuf:"bytes,10,rep,name=lendIdToBorrowIdMapping,proto3" json:"lendIdToBorrowIdMapping" yaml:"lendIdToBorrowIdMapping"` + AssetStats []AssetStats `protobuf:"bytes,11,rep,name=assetStats,proto3" json:"assetStats" yaml:"assetStats"` + LendMapping LendMapping `protobuf:"bytes,12,opt,name=lendMapping,proto3" json:"lendMapping" yaml:"lendMapping"` + UserDepositStats DepositStats `protobuf:"bytes,13,opt,name=userDepositStats,proto3" json:"userDepositStats" yaml:"userDepositStats"` + ReserveDepositStats DepositStats `protobuf:"bytes,14,opt,name=reserveDepositStats,proto3" json:"reserveDepositStats" yaml:"reserveDepositStats"` + BuyBackDepositStats DepositStats `protobuf:"bytes,15,opt,name=buyBackDepositStats,proto3" json:"buyBackDepositStats" yaml:"buyBackDepositStats"` + BorrowDepositStats DepositStats `protobuf:"bytes,16,opt,name=borrowDepositStats,proto3" json:"borrowDepositStats" yaml:"borrowDepositStats"` + Extended_Pair []Extended_Pair `protobuf:"bytes,17,rep,name=extended_Pair,json=extendedPair,proto3" json:"extended_Pair" yaml:"extended_Pair"` + AssetRatesStats []AssetRatesStats `protobuf:"bytes,18,rep,name=assetRatesStats,proto3" json:"assetRatesStats" yaml:"assetRatesStats"` + AuctionParams []AuctionParams `protobuf:"bytes,19,rep,name=auctionParams,proto3" json:"auctionParams" yaml:"auctionParams"` + Params Params `protobuf:"bytes,20,opt,name=params,proto3" json:"params"` } func (m *GenesisState) Reset() { *m = GenesisState{} } @@ -61,6 +80,139 @@ func (m *GenesisState) XXX_DiscardUnknown() { var xxx_messageInfo_GenesisState proto.InternalMessageInfo +func (m *GenesisState) GetBorrowAsset() []BorrowAsset { + if m != nil { + return m.BorrowAsset + } + return nil +} + +func (m *GenesisState) GetUserBorrowIdMapping() []UserBorrowIdMapping { + if m != nil { + return m.UserBorrowIdMapping + } + return nil +} + +func (m *GenesisState) GetBorrowIdByOwnerAndPoolMapping() []BorrowIdByOwnerAndPoolMapping { + if m != nil { + return m.BorrowIdByOwnerAndPoolMapping + } + return nil +} + +func (m *GenesisState) GetBorrowMapping() BorrowMapping { + if m != nil { + return m.BorrowMapping + } + return BorrowMapping{} +} + +func (m *GenesisState) GetLendAsset() []LendAsset { + if m != nil { + return m.LendAsset + } + return nil +} + +func (m *GenesisState) GetPool() []Pool { + if m != nil { + return m.Pool + } + return nil +} + +func (m *GenesisState) GetAssetToPairMapping() []AssetToPairMapping { + if m != nil { + return m.AssetToPairMapping + } + return nil +} + +func (m *GenesisState) GetUserLendIdMapping() []UserLendIdMapping { + if m != nil { + return m.UserLendIdMapping + } + return nil +} + +func (m *GenesisState) GetLendIdByOwnerAndPoolMapping() []LendIdByOwnerAndPoolMapping { + if m != nil { + return m.LendIdByOwnerAndPoolMapping + } + return nil +} + +func (m *GenesisState) GetLendIdToBorrowIdMapping() []LendIdToBorrowIdMapping { + if m != nil { + return m.LendIdToBorrowIdMapping + } + return nil +} + +func (m *GenesisState) GetAssetStats() []AssetStats { + if m != nil { + return m.AssetStats + } + return nil +} + +func (m *GenesisState) GetLendMapping() LendMapping { + if m != nil { + return m.LendMapping + } + return LendMapping{} +} + +func (m *GenesisState) GetUserDepositStats() DepositStats { + if m != nil { + return m.UserDepositStats + } + return DepositStats{} +} + +func (m *GenesisState) GetReserveDepositStats() DepositStats { + if m != nil { + return m.ReserveDepositStats + } + return DepositStats{} +} + +func (m *GenesisState) GetBuyBackDepositStats() DepositStats { + if m != nil { + return m.BuyBackDepositStats + } + return DepositStats{} +} + +func (m *GenesisState) GetBorrowDepositStats() DepositStats { + if m != nil { + return m.BorrowDepositStats + } + return DepositStats{} +} + +func (m *GenesisState) GetExtended_Pair() []Extended_Pair { + if m != nil { + return m.Extended_Pair + } + return nil +} + +func (m *GenesisState) GetAssetRatesStats() []AssetRatesStats { + if m != nil { + return m.AssetRatesStats + } + return nil +} + +func (m *GenesisState) GetAuctionParams() []AuctionParams { + if m != nil { + return m.AuctionParams + } + return nil +} + func (m *GenesisState) GetParams() Params { if m != nil { return m.Params @@ -75,20 +227,57 @@ func init() { func init() { proto.RegisterFile("comdex/lend/v1beta1/genesis.proto", fileDescriptor_4df703d992154ae9) } var fileDescriptor_4df703d992154ae9 = []byte{ - // 201 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x52, 0x4c, 0xce, 0xcf, 0x4d, - 0x49, 0xad, 0xd0, 0xcf, 0x49, 0xcd, 0x4b, 0xd1, 0x2f, 0x33, 0x4c, 0x4a, 0x2d, 0x49, 0x34, 0xd4, - 0x4f, 0x4f, 0xcd, 0x4b, 0x2d, 0xce, 0x2c, 0xd6, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, 0x86, - 0x28, 0xd1, 0x03, 0x29, 0xd1, 0x83, 0x2a, 0x91, 0x12, 0x49, 0xcf, 0x4f, 0xcf, 0x07, 0xcb, 0xeb, - 0x83, 0x58, 0x10, 0xa5, 0x52, 0x0a, 0xd8, 0x4c, 0x2b, 0x48, 0x2c, 0x4a, 0xcc, 0x85, 0x1a, 0xa6, - 0xe4, 0xc9, 0xc5, 0xe3, 0x0e, 0x31, 0x3d, 0xb8, 0x24, 0xb1, 0x24, 0x55, 0xc8, 0x92, 0x8b, 0x0d, - 0x22, 0x2f, 0xc1, 0xa8, 0xc0, 0xa8, 0xc1, 0x6d, 0x24, 0xad, 0x87, 0xc5, 0x36, 0xbd, 0x00, 0xb0, - 0x12, 0x27, 0x96, 0x13, 0xf7, 0xe4, 0x19, 0x82, 0xa0, 0x1a, 0x9c, 0x3c, 0x4e, 0x3c, 0x92, 0x63, - 0xbc, 0xf0, 0x48, 0x8e, 0xf1, 0xc1, 0x23, 0x39, 0xc6, 0x09, 0x8f, 0xe5, 0x18, 0x2e, 0x3c, 0x96, - 0x63, 0xb8, 0xf1, 0x58, 0x8e, 0x21, 0x4a, 0x2f, 0x3d, 0xb3, 0x24, 0xa3, 0x34, 0x09, 0x64, 0x94, - 0x3e, 0xc4, 0x38, 0xdd, 0xfc, 0xb4, 0xb4, 0xcc, 0xe4, 0xcc, 0xc4, 0x1c, 0x28, 0x5f, 0x1f, 0xea, - 0xc6, 0x92, 0xca, 0x82, 0xd4, 0xe2, 0x24, 0x36, 0xb0, 0xdb, 0x8c, 0x01, 0x01, 0x00, 0x00, 0xff, - 0xff, 0xe6, 0x2d, 0x1e, 0x93, 0x0d, 0x01, 0x00, 0x00, + // 791 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x9c, 0x96, 0xdf, 0x4e, 0x13, 0x4d, + 0x18, 0xc6, 0xbb, 0x1f, 0x7c, 0x7c, 0x1f, 0x53, 0x10, 0x3a, 0x25, 0xb2, 0x14, 0xdd, 0x96, 0x09, + 0x41, 0x62, 0xb0, 0x15, 0x3c, 0xd2, 0xb3, 0x4e, 0x34, 0x6a, 0xa2, 0x91, 0x8c, 0xe8, 0x01, 0x07, + 0x9a, 0x6d, 0x3b, 0xd4, 0x8d, 0x65, 0xa7, 0xd9, 0xdd, 0x02, 0xf5, 0xc0, 0x4b, 0x30, 0x5e, 0x81, + 0x87, 0x5e, 0x0b, 0x67, 0x72, 0xe8, 0x11, 0x31, 0x70, 0x07, 0x5e, 0x81, 0x99, 0x3f, 0xcb, 0xce, + 0xee, 0xce, 0x36, 0xc4, 0xb3, 0x6e, 0xe7, 0x99, 0xdf, 0xf3, 0xbc, 0x9d, 0x77, 0xdf, 0x0e, 0x58, + 0xeb, 0xb2, 0xc3, 0x1e, 0x3d, 0x69, 0x0d, 0xa8, 0xdf, 0x6b, 0x1d, 0x6d, 0x77, 0x68, 0xe4, 0x6e, + 0xb7, 0xfa, 0xd4, 0xa7, 0xa1, 0x17, 0x36, 0x87, 0x01, 0x8b, 0x18, 0xac, 0x4a, 0x49, 0x93, 0x4b, + 0x9a, 0x4a, 0x52, 0x5b, 0xea, 0xb3, 0x3e, 0x13, 0xeb, 0x2d, 0xfe, 0x49, 0x4a, 0x6b, 0x8e, 0x89, + 0x26, 0xf6, 0xc9, 0xf5, 0x86, 0x69, 0x7d, 0xe8, 0x06, 0xee, 0xa1, 0x32, 0x43, 0x3f, 0x2a, 0x60, + 0xee, 0xa9, 0xb4, 0x7f, 0x1d, 0xb9, 0x11, 0x85, 0xef, 0x40, 0xb9, 0xc3, 0x82, 0x80, 0x1d, 0xb7, + 0xc3, 0x90, 0x46, 0xb6, 0xd5, 0x98, 0xda, 0x2c, 0xef, 0x34, 0x9a, 0x86, 0x4c, 0x4d, 0x9c, 0xe8, + 0x70, 0xed, 0xf4, 0xbc, 0x5e, 0xfa, 0x7d, 0x5e, 0x87, 0x63, 0xf7, 0x70, 0xf0, 0x08, 0x69, 0x08, + 0x44, 0x74, 0x20, 0xfc, 0x0c, 0xaa, 0xa3, 0x90, 0x06, 0x72, 0xef, 0xf3, 0xde, 0x4b, 0x77, 0x38, + 0xf4, 0xfc, 0xbe, 0xfd, 0x8f, 0xf0, 0xd9, 0x34, 0xfa, 0xbc, 0xc9, 0xeb, 0x31, 0x52, 0x7e, 0x35, + 0xe9, 0x67, 0x40, 0x22, 0x62, 0x32, 0x82, 0xdf, 0x2d, 0x70, 0xbb, 0xa3, 0xbe, 0xc3, 0xe3, 0x57, + 0xc7, 0x3e, 0x0d, 0xda, 0x7e, 0x6f, 0x97, 0xb1, 0x41, 0x1c, 0x65, 0x4a, 0x44, 0xd9, 0x99, 0x50, + 0x72, 0xc1, 0x4e, 0xbc, 0xa5, 0x42, 0xad, 0xeb, 0x3f, 0x42, 0x81, 0x18, 0x91, 0xc9, 0x31, 0xe0, + 0x01, 0x98, 0x97, 0x82, 0x38, 0xd7, 0x74, 0xc3, 0xda, 0x2c, 0xef, 0xa0, 0x09, 0xb9, 0xe2, 0x1c, + 0xb7, 0x54, 0x8e, 0x25, 0x3d, 0xc7, 0x95, 0x6f, 0x1a, 0x0b, 0xdf, 0x82, 0x59, 0x8e, 0x92, 0xc7, + 0xfd, 0xaf, 0xa8, 0xdd, 0x31, 0x7a, 0xbc, 0x88, 0x55, 0xd8, 0x56, 0xfc, 0x45, 0xc9, 0xbf, 0xda, + 0x8e, 0x48, 0x82, 0x82, 0x18, 0x4c, 0x0f, 0x19, 0x1b, 0xd8, 0x33, 0x02, 0xb9, 0x62, 0x44, 0xf2, + 0x7a, 0x71, 0x55, 0xd1, 0xca, 0x92, 0xc6, 0x37, 0x21, 0x22, 0xf6, 0xc2, 0x4f, 0x00, 0xba, 0x1c, + 0xb6, 0xc7, 0x76, 0x5d, 0x2f, 0x88, 0x7f, 0x88, 0xff, 0x04, 0xf1, 0x8e, 0x91, 0xd8, 0xce, 0xc9, + 0xf1, 0x9a, 0xe2, 0xaf, 0x48, 0x7e, 0x1e, 0x88, 0x88, 0xc1, 0x05, 0x1e, 0x81, 0x0a, 0xef, 0x1f, + 0x5e, 0x75, 0xd2, 0xa6, 0xff, 0x0b, 0xeb, 0x8d, 0xc2, 0x36, 0x4d, 0xa9, 0x71, 0x43, 0x39, 0xdb, + 0x49, 0x93, 0xa6, 0x04, 0x88, 0xe4, 0x2d, 0xe0, 0x37, 0x0b, 0xac, 0x0e, 0xc4, 0x37, 0xe6, 0xf6, + 0x9c, 0x15, 0x11, 0xee, 0x17, 0x1e, 0x51, 0x51, 0x73, 0xde, 0x55, 0x61, 0x50, 0x72, 0x68, 0x85, + 0xad, 0x39, 0x29, 0x00, 0xfc, 0x62, 0x81, 0x65, 0xb9, 0xbe, 0xc7, 0xb2, 0xaf, 0x31, 0x10, 0xe1, + 0xb6, 0x26, 0x84, 0xcb, 0xed, 0xc1, 0x1b, 0x2a, 0x98, 0xa3, 0x07, 0xcb, 0xc9, 0x10, 0x29, 0x32, + 0x85, 0xfb, 0x00, 0x88, 0xf3, 0xe3, 0x03, 0x2c, 0xb4, 0xcb, 0x22, 0x42, 0xbd, 0xb8, 0x3b, 0x84, + 0x0c, 0xaf, 0x28, 0xd7, 0x8a, 0xd6, 0x15, 0x62, 0x05, 0x11, 0x8d, 0xc6, 0xc7, 0x21, 0x27, 0xc4, + 0xf5, 0xcd, 0x89, 0x77, 0xb0, 0x51, 0x58, 0x5f, 0x5c, 0x53, 0x66, 0x1c, 0x6a, 0x08, 0x44, 0x74, + 0x20, 0xf4, 0xc1, 0x22, 0x6f, 0x81, 0xc7, 0x74, 0xc8, 0x42, 0x4f, 0x55, 0x30, 0x2f, 0x4c, 0xd6, + 0x8c, 0x26, 0xba, 0x10, 0xd7, 0x95, 0xcb, 0x72, 0xd2, 0x5f, 0xfa, 0x3a, 0x22, 0x39, 0x36, 0x3c, + 0x06, 0xd5, 0x80, 0x86, 0x34, 0x38, 0xa2, 0x29, 0xcb, 0x1b, 0xd7, 0xb5, 0xcc, 0xcc, 0x5d, 0x03, + 0x0b, 0x11, 0x93, 0x03, 0x37, 0xee, 0x8c, 0xc6, 0xd8, 0xed, 0x7e, 0x4c, 0x19, 0x2f, 0xfc, 0xa5, + 0xb1, 0x81, 0x85, 0x88, 0xc9, 0x01, 0x46, 0x00, 0xca, 0x81, 0x97, 0xf2, 0x5d, 0xbc, 0xae, 0x6f, + 0x66, 0x7a, 0xe4, 0x51, 0x88, 0x18, 0xf8, 0x90, 0x82, 0x79, 0x7a, 0x12, 0x51, 0xbf, 0x47, 0x7b, + 0xef, 0xf9, 0x54, 0xb1, 0x2b, 0xa2, 0x2d, 0xcd, 0xd3, 0xfb, 0x89, 0xae, 0xcc, 0x4e, 0xef, 0x14, + 0x06, 0x91, 0xb9, 0xf8, 0x99, 0x3f, 0x42, 0x1f, 0x2c, 0x88, 0x66, 0x25, 0x6e, 0x44, 0x43, 0x59, + 0x19, 0x14, 0x46, 0xeb, 0xc5, 0xfd, 0x9f, 0x68, 0xb1, 0xa3, 0xac, 0x6e, 0x6a, 0x2f, 0x41, 0xb2, + 0x8c, 0x48, 0x16, 0xce, 0xff, 0x94, 0xdc, 0x51, 0x37, 0xf2, 0x98, 0xbf, 0x2b, 0x6e, 0x11, 0x76, + 0x75, 0x42, 0x59, 0x6d, 0x5d, 0x99, 0x2d, 0x2b, 0x85, 0x41, 0x24, 0x8d, 0x85, 0x0f, 0xc1, 0x8c, + 0xbc, 0xa6, 0xd8, 0x4b, 0xe2, 0xa0, 0x56, 0xcd, 0x7f, 0x1f, 0x92, 0x3c, 0xcd, 0xc9, 0x44, 0x6d, + 0xc0, 0xcf, 0x4e, 0x2f, 0x1c, 0xeb, 0xec, 0xc2, 0xb1, 0x7e, 0x5d, 0x38, 0xd6, 0xd7, 0x4b, 0xa7, + 0x74, 0x76, 0xe9, 0x94, 0x7e, 0x5e, 0x3a, 0xa5, 0xfd, 0x66, 0xdf, 0x8b, 0x3e, 0x8c, 0x3a, 0x1c, + 0xd5, 0x92, 0xb8, 0x7b, 0xec, 0xe0, 0xc0, 0xeb, 0x7a, 0xee, 0x40, 0x3d, 0xb7, 0xd4, 0x55, 0x29, + 0x1a, 0x0f, 0x69, 0xd8, 0x99, 0x11, 0x57, 0xa4, 0x07, 0x7f, 0x02, 0x00, 0x00, 0xff, 0xff, 0xd5, + 0x70, 0x7a, 0xe4, 0xb4, 0x09, 0x00, 0x00, } func (m *GenesisState) Marshal() (dAtA []byte, err error) { @@ -120,7 +309,259 @@ func (m *GenesisState) MarshalToSizedBuffer(dAtA []byte) (int, error) { i = encodeVarintGenesis(dAtA, i, uint64(size)) } i-- - dAtA[i] = 0xa + dAtA[i] = 0x1 + i-- + dAtA[i] = 0xa2 + if len(m.AuctionParams) > 0 { + for iNdEx := len(m.AuctionParams) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.AuctionParams[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0x9a + } + } + if len(m.AssetRatesStats) > 0 { + for iNdEx := len(m.AssetRatesStats) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.AssetRatesStats[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0x92 + } + } + if len(m.Extended_Pair) > 0 { + for iNdEx := len(m.Extended_Pair) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Extended_Pair[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0x8a + } + } + { + size, err := m.BorrowDepositStats.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0x82 + { + size, err := m.BuyBackDepositStats.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x7a + { + size, err := m.ReserveDepositStats.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x72 + { + size, err := m.UserDepositStats.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x6a + { + size, err := m.LendMapping.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x62 + if len(m.AssetStats) > 0 { + for iNdEx := len(m.AssetStats) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.AssetStats[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x5a + } + } + if len(m.LendIdToBorrowIdMapping) > 0 { + for iNdEx := len(m.LendIdToBorrowIdMapping) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.LendIdToBorrowIdMapping[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x52 + } + } + if len(m.LendIdByOwnerAndPoolMapping) > 0 { + for iNdEx := len(m.LendIdByOwnerAndPoolMapping) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.LendIdByOwnerAndPoolMapping[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x4a + } + } + if len(m.UserLendIdMapping) > 0 { + for iNdEx := len(m.UserLendIdMapping) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.UserLendIdMapping[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x42 + } + } + if len(m.AssetToPairMapping) > 0 { + for iNdEx := len(m.AssetToPairMapping) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.AssetToPairMapping[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x3a + } + } + if len(m.Pool) > 0 { + for iNdEx := len(m.Pool) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Pool[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x32 + } + } + if len(m.LendAsset) > 0 { + for iNdEx := len(m.LendAsset) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.LendAsset[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x2a + } + } + { + size, err := m.BorrowMapping.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + if len(m.BorrowIdByOwnerAndPoolMapping) > 0 { + for iNdEx := len(m.BorrowIdByOwnerAndPoolMapping) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.BorrowIdByOwnerAndPoolMapping[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + } + if len(m.UserBorrowIdMapping) > 0 { + for iNdEx := len(m.UserBorrowIdMapping) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.UserBorrowIdMapping[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + } + if len(m.BorrowAsset) > 0 { + for iNdEx := len(m.BorrowAsset) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.BorrowAsset[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + } return len(dAtA) - i, nil } @@ -141,8 +582,98 @@ func (m *GenesisState) Size() (n int) { } var l int _ = l - l = m.Params.Size() + if len(m.BorrowAsset) > 0 { + for _, e := range m.BorrowAsset { + l = e.Size() + n += 1 + l + sovGenesis(uint64(l)) + } + } + if len(m.UserBorrowIdMapping) > 0 { + for _, e := range m.UserBorrowIdMapping { + l = e.Size() + n += 1 + l + sovGenesis(uint64(l)) + } + } + if len(m.BorrowIdByOwnerAndPoolMapping) > 0 { + for _, e := range m.BorrowIdByOwnerAndPoolMapping { + l = e.Size() + n += 1 + l + sovGenesis(uint64(l)) + } + } + l = m.BorrowMapping.Size() + n += 1 + l + sovGenesis(uint64(l)) + if len(m.LendAsset) > 0 { + for _, e := range m.LendAsset { + l = e.Size() + n += 1 + l + sovGenesis(uint64(l)) + } + } + if len(m.Pool) > 0 { + for _, e := range m.Pool { + l = e.Size() + n += 1 + l + sovGenesis(uint64(l)) + } + } + if len(m.AssetToPairMapping) > 0 { + for _, e := range m.AssetToPairMapping { + l = e.Size() + n += 1 + l + sovGenesis(uint64(l)) + } + } + if len(m.UserLendIdMapping) > 0 { + for _, e := range m.UserLendIdMapping { + l = e.Size() + n += 1 + l + sovGenesis(uint64(l)) + } + } + if len(m.LendIdByOwnerAndPoolMapping) > 0 { + for _, e := range m.LendIdByOwnerAndPoolMapping { + l = e.Size() + n += 1 + l + sovGenesis(uint64(l)) + } + } + if len(m.LendIdToBorrowIdMapping) > 0 { + for _, e := range m.LendIdToBorrowIdMapping { + l = e.Size() + n += 1 + l + sovGenesis(uint64(l)) + } + } + if len(m.AssetStats) > 0 { + for _, e := range m.AssetStats { + l = e.Size() + n += 1 + l + sovGenesis(uint64(l)) + } + } + l = m.LendMapping.Size() + n += 1 + l + sovGenesis(uint64(l)) + l = m.UserDepositStats.Size() + n += 1 + l + sovGenesis(uint64(l)) + l = m.ReserveDepositStats.Size() + n += 1 + l + sovGenesis(uint64(l)) + l = m.BuyBackDepositStats.Size() n += 1 + l + sovGenesis(uint64(l)) + l = m.BorrowDepositStats.Size() + n += 2 + l + sovGenesis(uint64(l)) + if len(m.Extended_Pair) > 0 { + for _, e := range m.Extended_Pair { + l = e.Size() + n += 2 + l + sovGenesis(uint64(l)) + } + } + if len(m.AssetRatesStats) > 0 { + for _, e := range m.AssetRatesStats { + l = e.Size() + n += 2 + l + sovGenesis(uint64(l)) + } + } + if len(m.AuctionParams) > 0 { + for _, e := range m.AuctionParams { + l = e.Size() + n += 2 + l + sovGenesis(uint64(l)) + } + } + l = m.Params.Size() + n += 2 + l + sovGenesis(uint64(l)) return n } @@ -182,6 +713,646 @@ func (m *GenesisState) Unmarshal(dAtA []byte) error { } switch fieldNum { case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field BorrowAsset", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.BorrowAsset = append(m.BorrowAsset, BorrowAsset{}) + if err := m.BorrowAsset[len(m.BorrowAsset)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field UserBorrowIdMapping", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.UserBorrowIdMapping = append(m.UserBorrowIdMapping, UserBorrowIdMapping{}) + if err := m.UserBorrowIdMapping[len(m.UserBorrowIdMapping)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field BorrowIdByOwnerAndPoolMapping", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.BorrowIdByOwnerAndPoolMapping = append(m.BorrowIdByOwnerAndPoolMapping, BorrowIdByOwnerAndPoolMapping{}) + if err := m.BorrowIdByOwnerAndPoolMapping[len(m.BorrowIdByOwnerAndPoolMapping)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field BorrowMapping", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.BorrowMapping.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LendAsset", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.LendAsset = append(m.LendAsset, LendAsset{}) + if err := m.LendAsset[len(m.LendAsset)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Pool", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Pool = append(m.Pool, Pool{}) + if err := m.Pool[len(m.Pool)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AssetToPairMapping", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.AssetToPairMapping = append(m.AssetToPairMapping, AssetToPairMapping{}) + if err := m.AssetToPairMapping[len(m.AssetToPairMapping)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 8: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field UserLendIdMapping", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.UserLendIdMapping = append(m.UserLendIdMapping, UserLendIdMapping{}) + if err := m.UserLendIdMapping[len(m.UserLendIdMapping)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 9: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LendIdByOwnerAndPoolMapping", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.LendIdByOwnerAndPoolMapping = append(m.LendIdByOwnerAndPoolMapping, LendIdByOwnerAndPoolMapping{}) + if err := m.LendIdByOwnerAndPoolMapping[len(m.LendIdByOwnerAndPoolMapping)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 10: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LendIdToBorrowIdMapping", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.LendIdToBorrowIdMapping = append(m.LendIdToBorrowIdMapping, LendIdToBorrowIdMapping{}) + if err := m.LendIdToBorrowIdMapping[len(m.LendIdToBorrowIdMapping)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 11: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AssetStats", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.AssetStats = append(m.AssetStats, AssetStats{}) + if err := m.AssetStats[len(m.AssetStats)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 12: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LendMapping", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.LendMapping.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 13: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field UserDepositStats", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.UserDepositStats.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 14: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ReserveDepositStats", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.ReserveDepositStats.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 15: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field BuyBackDepositStats", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.BuyBackDepositStats.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 16: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field BorrowDepositStats", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.BorrowDepositStats.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 17: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Extended_Pair", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Extended_Pair = append(m.Extended_Pair, Extended_Pair{}) + if err := m.Extended_Pair[len(m.Extended_Pair)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 18: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AssetRatesStats", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.AssetRatesStats = append(m.AssetRatesStats, AssetRatesStats{}) + if err := m.AssetRatesStats[len(m.AssetRatesStats)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 19: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AuctionParams", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.AuctionParams = append(m.AuctionParams, AuctionParams{}) + if err := m.AuctionParams[len(m.AuctionParams)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 20: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Params", wireType) } diff --git a/x/lend/types/genesis_test.go b/x/lend/types/genesis_test.go index a33f06f33..1b7e1f4fc 100644 --- a/x/lend/types/genesis_test.go +++ b/x/lend/types/genesis_test.go @@ -15,7 +15,7 @@ func TestGenesisState_Validate(t *testing.T) { }{ { desc: "default is valid", - genState: types.DefaultGenesis(), + genState: types.DefaultGenesisState(), valid: true, }, { diff --git a/x/lend/types/gov.go b/x/lend/types/gov.go index db261caea..6c15de33b 100644 --- a/x/lend/types/gov.go +++ b/x/lend/types/gov.go @@ -6,34 +6,34 @@ import ( var ( ProposalAddLendPairs = "ProposalAddLendPairs" - ProposalUpdateLendPair = "ProposalUpdateLendPair" ProposalAddPool = "ProposalAddPool" ProposalAddAssetToPair = "ProposalAddAssetToPair" ProposalAddAssetRatesStats = "ProposalAddAssetRatesStats" + ProposalAddAuctionParams = "ProposalAddAuctionParams" ) func init() { govtypes.RegisterProposalType(ProposalAddLendPairs) govtypes.RegisterProposalTypeCodec(&LendPairsProposal{}, "comdex/AddLendPairsProposal") - govtypes.RegisterProposalType(ProposalUpdateLendPair) - govtypes.RegisterProposalTypeCodec(&UpdatePairProposal{}, "comdex/UpdateLenddPairProposal") govtypes.RegisterProposalType(ProposalAddPool) govtypes.RegisterProposalTypeCodec(&AddPoolsProposal{}, "comdex/AddPoolsProposal") govtypes.RegisterProposalType(ProposalAddAssetToPair) govtypes.RegisterProposalTypeCodec(&AddAssetToPairProposal{}, "comdex/AddAssetToPairProposal") govtypes.RegisterProposalType(ProposalAddAssetRatesStats) govtypes.RegisterProposalTypeCodec(&AddAssetRatesStats{}, "comdex/AddAssetRatesStats") + govtypes.RegisterProposalType(ProposalAddAuctionParams) + govtypes.RegisterProposalTypeCodec(&AddAuctionParamsProposal{}, "comdex/AddAuctionParamsProposal") } var ( _ govtypes.Content = &LendPairsProposal{} - _ govtypes.Content = &UpdatePairProposal{} _ govtypes.Content = &AddPoolsProposal{} _ govtypes.Content = &AddAssetToPairProposal{} _ govtypes.Content = &AddAssetRatesStats{} + _ govtypes.Content = &AddAuctionParamsProposal{} ) -func NewAddLendPairsProposal(title, description string, pairs []Extended_Pair) govtypes.Content { +func NewAddLendPairsProposal(title, description string, pairs Extended_Pair) govtypes.Content { return &LendPairsProposal{ Title: title, Description: description, @@ -50,39 +50,8 @@ func (p *LendPairsProposal) ValidateBasic() error { if err != nil { return err } - if len(p.Pairs) == 0 { - return ErrorEmptyProposalAssets - } - - for _, pair := range p.Pairs { - if err := pair.Validate(); err != nil { - return err - } - } - - return nil -} - -func NewUpdateLendPairProposal(title, description string, pair Extended_Pair) govtypes.Content { - return &UpdatePairProposal{ - Title: title, - Description: description, - Pair: pair, - } -} - -func (p *UpdatePairProposal) ProposalRoute() string { return RouterKey } - -func (p *UpdatePairProposal) ProposalType() string { return ProposalUpdateLendPair } - -func (p *UpdatePairProposal) ValidateBasic() error { - err := govtypes.ValidateAbstract(p) - if err != nil { - return err - } - pair := p.Pair - if err := pair.Validate(); err != nil { + if err := p.Pairs.Validate(); err != nil { return err } @@ -149,7 +118,7 @@ func (p *AddAssetToPairProposal) ValidateBasic() error { return nil } -func NewAddAssetRatesStats(title, description string, AssetRatesStats []AssetRatesStats) govtypes.Content { +func NewAddAssetRatesStats(title, description string, AssetRatesStats AssetRatesStats) govtypes.Content { return &AddAssetRatesStats{ Title: title, Description: description, @@ -171,10 +140,33 @@ func (p *AddAssetRatesStats) ValidateBasic() error { return err } - for _, assetRatesStats := range p.AssetRatesStats { - if err := assetRatesStats.Validate(); err != nil { - return err - } + if err := p.AssetRatesStats.Validate(); err != nil { + return err + } + + return nil +} + +func NewAddAuctionParams(title, description string, AddAuctionParams AuctionParams) govtypes.Content { + return &AddAuctionParamsProposal{ + Title: title, + Description: description, + AuctionParams: AddAuctionParams, + } +} + +func (p *AddAuctionParamsProposal) ProposalRoute() string { + return RouterKey +} + +func (p *AddAuctionParamsProposal) ProposalType() string { + return ProposalAddAuctionParams +} + +func (p *AddAuctionParamsProposal) ValidateBasic() error { + err := govtypes.ValidateAbstract(p) + if err != nil { + return err } return nil diff --git a/x/lend/types/gov.pb.go b/x/lend/types/gov.pb.go index d87f7fced..fe09d5790 100644 --- a/x/lend/types/gov.pb.go +++ b/x/lend/types/gov.pb.go @@ -24,9 +24,9 @@ var _ = math.Inf const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package type LendPairsProposal struct { - Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty" yaml:"title"` - Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty" yaml:"description"` - Pairs []Extended_Pair `protobuf:"bytes,3,rep,name=pairs,proto3" json:"pairs"` + Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty" yaml:"title"` + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty" yaml:"description"` + Pairs Extended_Pair `protobuf:"bytes,3,opt,name=pairs,proto3" json:"pairs"` } func (m *LendPairsProposal) Reset() { *m = LendPairsProposal{} } @@ -76,70 +76,10 @@ func (m *LendPairsProposal) GetDescription() string { return "" } -func (m *LendPairsProposal) GetPairs() []Extended_Pair { +func (m *LendPairsProposal) GetPairs() Extended_Pair { if m != nil { return m.Pairs } - return nil -} - -type UpdatePairProposal struct { - Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty" yaml:"title"` - Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty" yaml:"description"` - Pair Extended_Pair `protobuf:"bytes,3,opt,name=pair,proto3" json:"pair"` -} - -func (m *UpdatePairProposal) Reset() { *m = UpdatePairProposal{} } -func (m *UpdatePairProposal) String() string { return proto.CompactTextString(m) } -func (*UpdatePairProposal) ProtoMessage() {} -func (*UpdatePairProposal) Descriptor() ([]byte, []int) { - return fileDescriptor_4c877ba3eefc3a22, []int{1} -} -func (m *UpdatePairProposal) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *UpdatePairProposal) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_UpdatePairProposal.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *UpdatePairProposal) XXX_Merge(src proto.Message) { - xxx_messageInfo_UpdatePairProposal.Merge(m, src) -} -func (m *UpdatePairProposal) XXX_Size() int { - return m.Size() -} -func (m *UpdatePairProposal) XXX_DiscardUnknown() { - xxx_messageInfo_UpdatePairProposal.DiscardUnknown(m) -} - -var xxx_messageInfo_UpdatePairProposal proto.InternalMessageInfo - -func (m *UpdatePairProposal) GetTitle() string { - if m != nil { - return m.Title - } - return "" -} - -func (m *UpdatePairProposal) GetDescription() string { - if m != nil { - return m.Description - } - return "" -} - -func (m *UpdatePairProposal) GetPair() Extended_Pair { - if m != nil { - return m.Pair - } return Extended_Pair{} } @@ -153,7 +93,7 @@ func (m *AddPoolsProposal) Reset() { *m = AddPoolsProposal{} } func (m *AddPoolsProposal) String() string { return proto.CompactTextString(m) } func (*AddPoolsProposal) ProtoMessage() {} func (*AddPoolsProposal) Descriptor() ([]byte, []int) { - return fileDescriptor_4c877ba3eefc3a22, []int{2} + return fileDescriptor_4c877ba3eefc3a22, []int{1} } func (m *AddPoolsProposal) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -213,7 +153,7 @@ func (m *AddAssetToPairProposal) Reset() { *m = AddAssetToPairProposal{} func (m *AddAssetToPairProposal) String() string { return proto.CompactTextString(m) } func (*AddAssetToPairProposal) ProtoMessage() {} func (*AddAssetToPairProposal) Descriptor() ([]byte, []int) { - return fileDescriptor_4c877ba3eefc3a22, []int{3} + return fileDescriptor_4c877ba3eefc3a22, []int{2} } func (m *AddAssetToPairProposal) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -264,16 +204,16 @@ func (m *AddAssetToPairProposal) GetAssetToPairMapping() AssetToPairMapping { } type AddAssetRatesStats struct { - Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty" yaml:"title"` - Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty" yaml:"description"` - AssetRatesStats []AssetRatesStats `protobuf:"bytes,3,rep,name=AssetRatesStats,proto3" json:"AssetRatesStats"` + Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty" yaml:"title"` + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty" yaml:"description"` + AssetRatesStats AssetRatesStats `protobuf:"bytes,3,opt,name=AssetRatesStats,proto3" json:"AssetRatesStats"` } func (m *AddAssetRatesStats) Reset() { *m = AddAssetRatesStats{} } func (m *AddAssetRatesStats) String() string { return proto.CompactTextString(m) } func (*AddAssetRatesStats) ProtoMessage() {} func (*AddAssetRatesStats) Descriptor() ([]byte, []int) { - return fileDescriptor_4c877ba3eefc3a22, []int{4} + return fileDescriptor_4c877ba3eefc3a22, []int{3} } func (m *AddAssetRatesStats) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -316,52 +256,112 @@ func (m *AddAssetRatesStats) GetDescription() string { return "" } -func (m *AddAssetRatesStats) GetAssetRatesStats() []AssetRatesStats { +func (m *AddAssetRatesStats) GetAssetRatesStats() AssetRatesStats { if m != nil { return m.AssetRatesStats } - return nil + return AssetRatesStats{} +} + +type AddAuctionParamsProposal struct { + Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty" yaml:"title"` + Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty" yaml:"description"` + AuctionParams AuctionParams `protobuf:"bytes,3,opt,name=AuctionParams,proto3" json:"AuctionParams"` +} + +func (m *AddAuctionParamsProposal) Reset() { *m = AddAuctionParamsProposal{} } +func (m *AddAuctionParamsProposal) String() string { return proto.CompactTextString(m) } +func (*AddAuctionParamsProposal) ProtoMessage() {} +func (*AddAuctionParamsProposal) Descriptor() ([]byte, []int) { + return fileDescriptor_4c877ba3eefc3a22, []int{4} +} +func (m *AddAuctionParamsProposal) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *AddAuctionParamsProposal) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_AddAuctionParamsProposal.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *AddAuctionParamsProposal) XXX_Merge(src proto.Message) { + xxx_messageInfo_AddAuctionParamsProposal.Merge(m, src) +} +func (m *AddAuctionParamsProposal) XXX_Size() int { + return m.Size() +} +func (m *AddAuctionParamsProposal) XXX_DiscardUnknown() { + xxx_messageInfo_AddAuctionParamsProposal.DiscardUnknown(m) +} + +var xxx_messageInfo_AddAuctionParamsProposal proto.InternalMessageInfo + +func (m *AddAuctionParamsProposal) GetTitle() string { + if m != nil { + return m.Title + } + return "" +} + +func (m *AddAuctionParamsProposal) GetDescription() string { + if m != nil { + return m.Description + } + return "" +} + +func (m *AddAuctionParamsProposal) GetAuctionParams() AuctionParams { + if m != nil { + return m.AuctionParams + } + return AuctionParams{} } func init() { proto.RegisterType((*LendPairsProposal)(nil), "comdex.lend.v1beta1.LendPairsProposal") - proto.RegisterType((*UpdatePairProposal)(nil), "comdex.lend.v1beta1.UpdatePairProposal") proto.RegisterType((*AddPoolsProposal)(nil), "comdex.lend.v1beta1.AddPoolsProposal") proto.RegisterType((*AddAssetToPairProposal)(nil), "comdex.lend.v1beta1.AddAssetToPairProposal") proto.RegisterType((*AddAssetRatesStats)(nil), "comdex.lend.v1beta1.AddAssetRatesStats") + proto.RegisterType((*AddAuctionParamsProposal)(nil), "comdex.lend.v1beta1.AddAuctionParamsProposal") } func init() { proto.RegisterFile("comdex/lend/v1beta1/gov.proto", fileDescriptor_4c877ba3eefc3a22) } var fileDescriptor_4c877ba3eefc3a22 = []byte{ - // 418 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x94, 0x41, 0xcb, 0x12, 0x41, - 0x1c, 0xc6, 0x77, 0x52, 0x83, 0xc6, 0x20, 0x9b, 0x42, 0x36, 0xa1, 0x55, 0x86, 0x28, 0x2f, 0xed, - 0x62, 0x5e, 0x22, 0x22, 0x50, 0x08, 0x3a, 0x14, 0xc8, 0x66, 0x97, 0x20, 0x62, 0x74, 0xc6, 0x6d, - 0x60, 0xdd, 0x19, 0x76, 0x26, 0xd1, 0x6f, 0xd1, 0xd7, 0xe8, 0x5e, 0xdf, 0xc1, 0x43, 0x07, 0x8f, - 0x75, 0x91, 0xd0, 0x6f, 0xe0, 0x27, 0x78, 0x99, 0xdd, 0x91, 0x57, 0x7c, 0xf7, 0x3d, 0xbc, 0x97, - 0xbd, 0x8d, 0x3e, 0xcf, 0xff, 0xff, 0xfc, 0x9e, 0x81, 0x1d, 0xf8, 0x78, 0x2a, 0xe6, 0x94, 0x2d, - 0x83, 0x98, 0x25, 0x34, 0x58, 0xf4, 0x26, 0x4c, 0x93, 0x5e, 0x10, 0x89, 0x85, 0x2f, 0x53, 0xa1, - 0x05, 0x7a, 0x90, 0xcb, 0xbe, 0x91, 0x7d, 0x2b, 0xb7, 0x1e, 0x46, 0x22, 0x12, 0x99, 0x1e, 0x98, - 0x53, 0x6e, 0x6d, 0x79, 0x45, 0x9b, 0xb2, 0xb9, 0x4c, 0xc7, 0xbf, 0x01, 0xbc, 0xff, 0x9e, 0x25, - 0x74, 0x44, 0x78, 0xaa, 0x46, 0xa9, 0x90, 0x42, 0x91, 0x18, 0x3d, 0x85, 0x35, 0xcd, 0x75, 0xcc, - 0x5c, 0xd0, 0x01, 0xdd, 0x3b, 0xc3, 0xc6, 0x61, 0xdb, 0xbe, 0xbb, 0x22, 0xf3, 0xf8, 0x15, 0xce, - 0xfe, 0xc6, 0x61, 0x2e, 0xa3, 0x97, 0xb0, 0x4e, 0x99, 0x9a, 0xa6, 0x5c, 0x6a, 0x2e, 0x12, 0xf7, - 0x56, 0xe6, 0x6e, 0x1e, 0xb6, 0x6d, 0x94, 0xbb, 0x4f, 0x44, 0x1c, 0x9e, 0x5a, 0xd1, 0x1b, 0x58, - 0x93, 0x26, 0xd2, 0xad, 0x74, 0x2a, 0xdd, 0xfa, 0x0b, 0xec, 0x17, 0x54, 0xf2, 0xdf, 0x2e, 0x35, - 0x4b, 0x28, 0xa3, 0x5f, 0x0d, 0xdd, 0xb0, 0xba, 0xde, 0xb6, 0x9d, 0x30, 0x1f, 0xc3, 0xbf, 0x00, - 0x44, 0x9f, 0x24, 0x25, 0x9a, 0x19, 0xad, 0x44, 0xf0, 0xd7, 0xb0, 0x6a, 0x08, 0xdc, 0x4a, 0x07, - 0xdc, 0x88, 0x3b, 0x9b, 0xc2, 0x3f, 0x01, 0x6c, 0x0c, 0x28, 0x1d, 0x09, 0x11, 0x97, 0x79, 0xdb, - 0x7d, 0x58, 0x35, 0x91, 0x16, 0xfa, 0x51, 0x21, 0xb4, 0x31, 0x1c, 0x59, 0xcd, 0x19, 0xff, 0x03, - 0xb0, 0x39, 0xa0, 0x74, 0xa0, 0x14, 0xd3, 0x63, 0x51, 0xf2, 0x35, 0x7f, 0x81, 0xe8, 0x24, 0xf8, - 0x03, 0x91, 0x92, 0x27, 0x91, 0xe5, 0x7f, 0x56, 0xc8, 0x7f, 0xd5, 0x6e, 0xdb, 0x14, 0x2c, 0xc2, - 0x7f, 0x00, 0x44, 0xc7, 0x6e, 0x21, 0xd1, 0x4c, 0x7d, 0xd4, 0x44, 0xab, 0x12, 0x7a, 0x8d, 0xe1, - 0xbd, 0xb3, 0x50, 0xfb, 0x05, 0x3c, 0xb9, 0xbe, 0xd4, 0xa5, 0xd7, 0x36, 0x3a, 0x5f, 0x31, 0x7c, - 0xb7, 0xde, 0x79, 0x60, 0xb3, 0xf3, 0xc0, 0xff, 0x9d, 0x07, 0x7e, 0xec, 0x3d, 0x67, 0xb3, 0xf7, - 0x9c, 0xbf, 0x7b, 0xcf, 0xf9, 0xec, 0x47, 0x5c, 0x7f, 0xfb, 0x3e, 0x31, 0xcb, 0x83, 0x3c, 0xe0, - 0xb9, 0x98, 0xcd, 0xf8, 0x94, 0x93, 0xd8, 0xfe, 0x0e, 0xec, 0xe3, 0xa0, 0x57, 0x92, 0xa9, 0xc9, - 0xed, 0xec, 0x59, 0xe8, 0x5f, 0x04, 0x00, 0x00, 0xff, 0xff, 0x08, 0x64, 0x19, 0xd6, 0x82, 0x04, - 0x00, 0x00, + // 424 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x94, 0xc1, 0x8a, 0xd3, 0x40, + 0x1c, 0xc6, 0x33, 0xda, 0x0a, 0x4e, 0x15, 0x6b, 0x94, 0x12, 0x0b, 0xa6, 0x65, 0x10, 0xed, 0xc5, + 0x84, 0xda, 0x8b, 0x78, 0x10, 0x5a, 0x10, 0x3c, 0xa8, 0x84, 0xd8, 0x93, 0x20, 0x32, 0xcd, 0x4c, + 0xe3, 0x40, 0x9a, 0x09, 0x99, 0x69, 0x69, 0xdf, 0x62, 0x5f, 0x63, 0x1f, 0x60, 0xdf, 0xa1, 0x87, + 0x3d, 0xf4, 0xb8, 0x7b, 0x29, 0x4b, 0xfb, 0x06, 0x7d, 0x82, 0x65, 0x92, 0x59, 0xb6, 0xed, 0x66, + 0xf7, 0x98, 0x5b, 0x92, 0xef, 0xfb, 0xff, 0xbf, 0xef, 0x07, 0x99, 0x81, 0x6f, 0x03, 0x3e, 0x21, + 0x74, 0xee, 0x46, 0x34, 0x26, 0xee, 0xac, 0x3b, 0xa2, 0x12, 0x77, 0xdd, 0x90, 0xcf, 0x9c, 0x24, + 0xe5, 0x92, 0x9b, 0xaf, 0x72, 0xd9, 0x51, 0xb2, 0xa3, 0xe5, 0xe6, 0xeb, 0x90, 0x87, 0x3c, 0xd3, + 0x5d, 0xf5, 0x94, 0x5b, 0x9b, 0x76, 0xd1, 0xa6, 0x6c, 0x2e, 0xd3, 0xd1, 0x19, 0x80, 0x2f, 0x7f, + 0xd0, 0x98, 0x78, 0x98, 0xa5, 0xc2, 0x4b, 0x79, 0xc2, 0x05, 0x8e, 0xcc, 0xf7, 0xb0, 0x2a, 0x99, + 0x8c, 0xa8, 0x05, 0xda, 0xa0, 0xf3, 0x74, 0x50, 0xdf, 0xad, 0x5b, 0xcf, 0x16, 0x78, 0x12, 0x7d, + 0x41, 0xd9, 0x67, 0xe4, 0xe7, 0xb2, 0xf9, 0x19, 0xd6, 0x08, 0x15, 0x41, 0xca, 0x12, 0xc9, 0x78, + 0x6c, 0x3d, 0xca, 0xdc, 0x8d, 0xdd, 0xba, 0x65, 0xe6, 0xee, 0x3d, 0x11, 0xf9, 0xfb, 0x56, 0xf3, + 0x2b, 0xac, 0x26, 0x2a, 0xd2, 0x7a, 0xdc, 0x06, 0x9d, 0xda, 0x27, 0xe4, 0x14, 0x20, 0x39, 0xdf, + 0xe6, 0x92, 0xc6, 0x84, 0x92, 0x7f, 0xaa, 0xdd, 0xa0, 0xb2, 0x5c, 0xb7, 0x0c, 0x3f, 0x1f, 0x43, + 0xa7, 0x00, 0xd6, 0xfb, 0x84, 0x78, 0x9c, 0x47, 0x65, 0xd6, 0xee, 0xc1, 0x8a, 0x8a, 0xd4, 0xad, + 0xdf, 0x14, 0xb6, 0x56, 0x06, 0x5d, 0x36, 0x33, 0xa3, 0x4b, 0x00, 0x1b, 0x7d, 0x42, 0xfa, 0x42, + 0x50, 0x39, 0xe4, 0x8a, 0xa5, 0xc4, 0xc6, 0x7f, 0xa1, 0xb9, 0x17, 0xfc, 0x13, 0x27, 0x09, 0x8b, + 0x43, 0xdd, 0xff, 0x43, 0x61, 0xff, 0xbb, 0x76, 0x4d, 0x53, 0xb0, 0x08, 0x9d, 0x03, 0x68, 0xde, + 0xb0, 0xf9, 0x58, 0x52, 0xf1, 0x5b, 0x62, 0x29, 0x4a, 0xe0, 0x1a, 0xc2, 0x17, 0x47, 0xa1, 0x1a, + 0xea, 0xdd, 0xfd, 0x50, 0xb7, 0x5e, 0x4d, 0x74, 0xbc, 0x42, 0xe1, 0x58, 0x0a, 0x67, 0x1a, 0xa8, + 0x10, 0x0f, 0xa7, 0x78, 0x52, 0xe6, 0xef, 0xf5, 0x0b, 0x3e, 0x3f, 0x88, 0x7e, 0xf0, 0x74, 0x1c, + 0x38, 0x35, 0xd0, 0xe1, 0xf8, 0xe0, 0xfb, 0x72, 0x63, 0x83, 0xd5, 0xc6, 0x06, 0x57, 0x1b, 0x1b, + 0x9c, 0x6c, 0x6d, 0x63, 0xb5, 0xb5, 0x8d, 0x8b, 0xad, 0x6d, 0xfc, 0x71, 0x42, 0x26, 0xff, 0x4f, + 0x47, 0x6a, 0xb1, 0x9b, 0x2f, 0xff, 0xc8, 0xc7, 0x63, 0x16, 0x30, 0x1c, 0xe9, 0x77, 0x57, 0x5f, + 0x1a, 0x72, 0x91, 0x50, 0x31, 0x7a, 0x92, 0x5d, 0x17, 0xbd, 0xeb, 0x00, 0x00, 0x00, 0xff, 0xff, + 0x2b, 0x07, 0x84, 0x86, 0x9a, 0x04, 0x00, 0x00, } func (m *LendPairsProposal) Marshal() (dAtA []byte, err error) { @@ -384,20 +384,16 @@ func (m *LendPairsProposal) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l - if len(m.Pairs) > 0 { - for iNdEx := len(m.Pairs) - 1; iNdEx >= 0; iNdEx-- { - { - size, err := m.Pairs[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGov(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x1a + { + size, err := m.Pairs.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err } + i -= size + i = encodeVarintGov(dAtA, i, uint64(size)) } + i-- + dAtA[i] = 0x1a if len(m.Description) > 0 { i -= len(m.Description) copy(dAtA[i:], m.Description) @@ -415,7 +411,7 @@ func (m *LendPairsProposal) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } -func (m *UpdatePairProposal) Marshal() (dAtA []byte, err error) { +func (m *AddPoolsProposal) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -425,18 +421,18 @@ func (m *UpdatePairProposal) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *UpdatePairProposal) MarshalTo(dAtA []byte) (int, error) { +func (m *AddPoolsProposal) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *UpdatePairProposal) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *AddPoolsProposal) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int _ = l { - size, err := m.Pair.MarshalToSizedBuffer(dAtA[:i]) + size, err := m.Pool.MarshalToSizedBuffer(dAtA[:i]) if err != nil { return 0, err } @@ -462,7 +458,7 @@ func (m *UpdatePairProposal) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } -func (m *AddPoolsProposal) Marshal() (dAtA []byte, err error) { +func (m *AddAssetToPairProposal) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -472,18 +468,18 @@ func (m *AddPoolsProposal) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *AddPoolsProposal) MarshalTo(dAtA []byte) (int, error) { +func (m *AddAssetToPairProposal) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *AddPoolsProposal) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *AddAssetToPairProposal) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int _ = l { - size, err := m.Pool.MarshalToSizedBuffer(dAtA[:i]) + size, err := m.AssetToPairMapping.MarshalToSizedBuffer(dAtA[:i]) if err != nil { return 0, err } @@ -509,7 +505,7 @@ func (m *AddPoolsProposal) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } -func (m *AddAssetToPairProposal) Marshal() (dAtA []byte, err error) { +func (m *AddAssetRatesStats) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -519,18 +515,18 @@ func (m *AddAssetToPairProposal) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *AddAssetToPairProposal) MarshalTo(dAtA []byte) (int, error) { +func (m *AddAssetRatesStats) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *AddAssetToPairProposal) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *AddAssetRatesStats) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int _ = l { - size, err := m.AssetToPairMapping.MarshalToSizedBuffer(dAtA[:i]) + size, err := m.AssetRatesStats.MarshalToSizedBuffer(dAtA[:i]) if err != nil { return 0, err } @@ -556,7 +552,7 @@ func (m *AddAssetToPairProposal) MarshalToSizedBuffer(dAtA []byte) (int, error) return len(dAtA) - i, nil } -func (m *AddAssetRatesStats) Marshal() (dAtA []byte, err error) { +func (m *AddAuctionParamsProposal) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -566,30 +562,26 @@ func (m *AddAssetRatesStats) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *AddAssetRatesStats) MarshalTo(dAtA []byte) (int, error) { +func (m *AddAuctionParamsProposal) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *AddAssetRatesStats) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *AddAuctionParamsProposal) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int _ = l - if len(m.AssetRatesStats) > 0 { - for iNdEx := len(m.AssetRatesStats) - 1; iNdEx >= 0; iNdEx-- { - { - size, err := m.AssetRatesStats[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintGov(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x1a + { + size, err := m.AuctionParams.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err } + i -= size + i = encodeVarintGov(dAtA, i, uint64(size)) } + i-- + dAtA[i] = 0x1a if len(m.Description) > 0 { i -= len(m.Description) copy(dAtA[i:], m.Description) @@ -632,16 +624,12 @@ func (m *LendPairsProposal) Size() (n int) { if l > 0 { n += 1 + l + sovGov(uint64(l)) } - if len(m.Pairs) > 0 { - for _, e := range m.Pairs { - l = e.Size() - n += 1 + l + sovGov(uint64(l)) - } - } + l = m.Pairs.Size() + n += 1 + l + sovGov(uint64(l)) return n } -func (m *UpdatePairProposal) Size() (n int) { +func (m *AddPoolsProposal) Size() (n int) { if m == nil { return 0 } @@ -655,12 +643,12 @@ func (m *UpdatePairProposal) Size() (n int) { if l > 0 { n += 1 + l + sovGov(uint64(l)) } - l = m.Pair.Size() + l = m.Pool.Size() n += 1 + l + sovGov(uint64(l)) return n } -func (m *AddPoolsProposal) Size() (n int) { +func (m *AddAssetToPairProposal) Size() (n int) { if m == nil { return 0 } @@ -674,12 +662,12 @@ func (m *AddPoolsProposal) Size() (n int) { if l > 0 { n += 1 + l + sovGov(uint64(l)) } - l = m.Pool.Size() + l = m.AssetToPairMapping.Size() n += 1 + l + sovGov(uint64(l)) return n } -func (m *AddAssetToPairProposal) Size() (n int) { +func (m *AddAssetRatesStats) Size() (n int) { if m == nil { return 0 } @@ -693,12 +681,12 @@ func (m *AddAssetToPairProposal) Size() (n int) { if l > 0 { n += 1 + l + sovGov(uint64(l)) } - l = m.AssetToPairMapping.Size() + l = m.AssetRatesStats.Size() n += 1 + l + sovGov(uint64(l)) return n } -func (m *AddAssetRatesStats) Size() (n int) { +func (m *AddAuctionParamsProposal) Size() (n int) { if m == nil { return 0 } @@ -712,12 +700,8 @@ func (m *AddAssetRatesStats) Size() (n int) { if l > 0 { n += 1 + l + sovGov(uint64(l)) } - if len(m.AssetRatesStats) > 0 { - for _, e := range m.AssetRatesStats { - l = e.Size() - n += 1 + l + sovGov(uint64(l)) - } - } + l = m.AuctionParams.Size() + n += 1 + l + sovGov(uint64(l)) return n } @@ -849,8 +833,7 @@ func (m *LendPairsProposal) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Pairs = append(m.Pairs, Extended_Pair{}) - if err := m.Pairs[len(m.Pairs)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.Pairs.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -875,7 +858,7 @@ func (m *LendPairsProposal) Unmarshal(dAtA []byte) error { } return nil } -func (m *UpdatePairProposal) Unmarshal(dAtA []byte) error { +func (m *AddPoolsProposal) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -898,10 +881,10 @@ func (m *UpdatePairProposal) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: UpdatePairProposal: wiretype end group for non-group") + return fmt.Errorf("proto: AddPoolsProposal: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: UpdatePairProposal: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: AddPoolsProposal: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -970,7 +953,7 @@ func (m *UpdatePairProposal) Unmarshal(dAtA []byte) error { iNdEx = postIndex case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Pair", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Pool", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -997,7 +980,7 @@ func (m *UpdatePairProposal) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.Pair.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.Pool.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -1022,7 +1005,7 @@ func (m *UpdatePairProposal) Unmarshal(dAtA []byte) error { } return nil } -func (m *AddPoolsProposal) Unmarshal(dAtA []byte) error { +func (m *AddAssetToPairProposal) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -1045,10 +1028,10 @@ func (m *AddPoolsProposal) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: AddPoolsProposal: wiretype end group for non-group") + return fmt.Errorf("proto: AddAssetToPairProposal: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: AddPoolsProposal: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: AddAssetToPairProposal: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -1117,7 +1100,7 @@ func (m *AddPoolsProposal) Unmarshal(dAtA []byte) error { iNdEx = postIndex case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Pool", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field AssetToPairMapping", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -1144,7 +1127,7 @@ func (m *AddPoolsProposal) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.Pool.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.AssetToPairMapping.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -1169,7 +1152,7 @@ func (m *AddPoolsProposal) Unmarshal(dAtA []byte) error { } return nil } -func (m *AddAssetToPairProposal) Unmarshal(dAtA []byte) error { +func (m *AddAssetRatesStats) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -1192,10 +1175,10 @@ func (m *AddAssetToPairProposal) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: AddAssetToPairProposal: wiretype end group for non-group") + return fmt.Errorf("proto: AddAssetRatesStats: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: AddAssetToPairProposal: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: AddAssetRatesStats: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -1264,7 +1247,7 @@ func (m *AddAssetToPairProposal) Unmarshal(dAtA []byte) error { iNdEx = postIndex case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AssetToPairMapping", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field AssetRatesStats", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -1291,7 +1274,7 @@ func (m *AddAssetToPairProposal) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.AssetToPairMapping.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.AssetRatesStats.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -1316,7 +1299,7 @@ func (m *AddAssetToPairProposal) Unmarshal(dAtA []byte) error { } return nil } -func (m *AddAssetRatesStats) Unmarshal(dAtA []byte) error { +func (m *AddAuctionParamsProposal) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -1339,10 +1322,10 @@ func (m *AddAssetRatesStats) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: AddAssetRatesStats: wiretype end group for non-group") + return fmt.Errorf("proto: AddAuctionParamsProposal: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: AddAssetRatesStats: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: AddAuctionParamsProposal: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: @@ -1411,7 +1394,7 @@ func (m *AddAssetRatesStats) Unmarshal(dAtA []byte) error { iNdEx = postIndex case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AssetRatesStats", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field AuctionParams", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -1438,8 +1421,7 @@ func (m *AddAssetRatesStats) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.AssetRatesStats = append(m.AssetRatesStats, AssetRatesStats{}) - if err := m.AssetRatesStats[len(m.AssetRatesStats)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.AuctionParams.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex diff --git a/x/lend/types/keys.go b/x/lend/types/keys.go index 8210385e6..04dd98152 100644 --- a/x/lend/types/keys.go +++ b/x/lend/types/keys.go @@ -29,6 +29,20 @@ const ( SecondsPerYear = 31557600 ) +var ( + TypeLendAssetRequest = ModuleName + ":lend" + TypeWithdrawAssetRequest = ModuleName + ":withdraw" + TypeBorrowAssetRequest = ModuleName + ":borrow" + TypeRepayAssetRequest = ModuleName + ":repay" + TypeFundModuleAccountRequest = ModuleName + ":fund-module" + TypeDepositAssetRequest = ModuleName + ":deposit" + TypeCloseLendAssetRequest = ModuleName + ":close-lend" + TypeCloseBorrowAssetRequest = ModuleName + ":close-borrow" + TypeDrawAssetRequest = ModuleName + ":draw" + TypeDepositBorrowdAssetRequest = ModuleName + ":deposit-borrow" + TypeBorrowAlternateAssetRequest = ModuleName + ":borrow-alternate" +) + var ( KeyPrefixReserveAmount = []byte{0x05} @@ -43,6 +57,7 @@ var ( LendsKey = []byte{0x32} BorrowsKey = []byte{0x33} BorrowStatsPrefix = []byte{0x40} + AuctionParamPrefix = []byte{0x41} AssetToPairMappingKeyPrefix = []byte{0x20} LendForAddressByAssetKeyPrefix = []byte{0x22} @@ -73,24 +88,28 @@ func CreateReserveAmountKeyNoDenom() []byte { return key } -func LendUserKey(id uint64) []byte { - return append(LendUserPrefix, sdk.Uint64ToBigEndian(id)...) +func LendUserKey(ID uint64) []byte { + return append(LendUserPrefix, sdk.Uint64ToBigEndian(ID)...) +} + +func PoolKey(ID uint64) []byte { + return append(PoolKeyPrefix, sdk.Uint64ToBigEndian(ID)...) } -func PoolKey(id uint64) []byte { - return append(PoolKeyPrefix, sdk.Uint64ToBigEndian(id)...) +func LendPairKey(ID uint64) []byte { + return append(LendPairKeyPrefix, sdk.Uint64ToBigEndian(ID)...) } -func LendPairKey(id uint64) []byte { - return append(LendPairKeyPrefix, sdk.Uint64ToBigEndian(id)...) +func AuctionParamKey(ID uint64) []byte { + return append(AuctionParamPrefix, sdk.Uint64ToBigEndian(ID)...) } -func AssetRatesStatsKey(id uint64) []byte { - return append(AssetRatesStatsKeyPrefix, sdk.Uint64ToBigEndian(id)...) +func AssetRatesStatsKey(ID uint64) []byte { + return append(AssetRatesStatsKeyPrefix, sdk.Uint64ToBigEndian(ID)...) } -func BorrowUserKey(id uint64) []byte { - return append(BorrowPairKeyPrefix, sdk.Uint64ToBigEndian(id)...) +func BorrowUserKey(ID uint64) []byte { + return append(BorrowPairKeyPrefix, sdk.Uint64ToBigEndian(ID)...) } func AssetToPairMappingKey(assetID, poolID uint64) []byte { @@ -122,8 +141,8 @@ func UserBorrowsForAddressKey(address string) []byte { return append(UserBorrowsForAddressKeyPrefix, address...) } -func LendIDToBorrowIDMappingKey(id uint64) []byte { - return append(LendIDToBorrowIDMappingKeyPrefix, sdk.Uint64ToBigEndian(id)...) +func LendIDToBorrowIDMappingKey(ID uint64) []byte { + return append(LendIDToBorrowIDMappingKeyPrefix, sdk.Uint64ToBigEndian(ID)...) } func SetAssetStatsByPoolIDAndAssetID(assetID, pairID uint64) []byte { @@ -137,10 +156,10 @@ func CreateLastInterestTimeKey() []byte { return key } -func LendByUserAndPoolKey(owner string, id uint64) []byte { - return append(append(LendByUserAndPoolPrefix, sdk.Uint64ToBigEndian(id)...), owner...) +func LendByUserAndPoolKey(owner string, ID uint64) []byte { + return append(append(LendByUserAndPoolPrefix, sdk.Uint64ToBigEndian(ID)...), owner...) } -func BorrowByUserAndPoolKey(owner string, id uint64) []byte { - return append(append(BorrowByUserAndPoolPrefix, sdk.Uint64ToBigEndian(id)...), owner...) +func BorrowByUserAndPoolKey(owner string, ID uint64) []byte { + return append(append(BorrowByUserAndPoolPrefix, sdk.Uint64ToBigEndian(ID)...), owner...) } diff --git a/x/lend/types/lend.pb.go b/x/lend/types/lend.pb.go index 98635dc93..6226dd63b 100644 --- a/x/lend/types/lend.pb.go +++ b/x/lend/types/lend.pb.go @@ -31,15 +31,16 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package type LendAsset struct { ID uint64 `protobuf:"varint,1,opt,name=lending_id,json=lendingId,proto3" json:"lending_id,omitempty" yaml:"lending_id"` - AssetId uint64 `protobuf:"varint,2,opt,name=asset_id,json=assetId,proto3" json:"asset_id,omitempty" yaml:"asset_id"` - PoolId uint64 `protobuf:"varint,3,opt,name=pool_id,json=poolId,proto3" json:"pool_id,omitempty" yaml:"pool_id"` + AssetID uint64 `protobuf:"varint,2,opt,name=asset_id,json=assetId,proto3" json:"asset_id,omitempty" yaml:"asset_id"` + PoolID uint64 `protobuf:"varint,3,opt,name=pool_id,json=poolId,proto3" json:"pool_id,omitempty" yaml:"pool_id"` Owner string `protobuf:"bytes,4,opt,name=owner,proto3" json:"owner,omitempty" yaml:"owner"` AmountIn github_com_cosmos_cosmos_sdk_types.Coin `protobuf:"bytes,5,opt,name=amount_in,json=amountIn,proto3,casttype=github.com/cosmos/cosmos-sdk/types.Coin" json:"amount_in" yaml:"amount_in"` LendingTime time.Time `protobuf:"bytes,6,opt,name=lending_time,json=lendingTime,proto3,stdtime" json:"lending_time" yaml:"lending_time"` UpdatedAmountIn github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,7,opt,name=updated_amount_in,json=updatedAmountIn,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"updated_amount_in" yaml:"updated_amount_in"` AvailableToBorrow github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,8,opt,name=available_to_borrow,json=availableToBorrow,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"available_to_borrow" yaml:"available_to_borrow"` Reward_Accumulated github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,9,opt,name=reward_Accumulated,json=rewardAccumulated,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"reward_Accumulated" yaml:"reward_accumulated"` - AppId uint64 `protobuf:"varint,10,opt,name=app_id,json=appId,proto3" json:"app_id,omitempty" yaml:"app_id"` + AppID uint64 `protobuf:"varint,10,opt,name=app_id,json=appId,proto3" json:"app_id,omitempty" yaml:"app_id"` + CPoolName string `protobuf:"bytes,11,opt,name=cpool_name,json=cpoolName,proto3" json:"cpool_name,omitempty" yaml:"cpool_name"` } func (m *LendAsset) Reset() { *m = LendAsset{} } @@ -82,16 +83,16 @@ func (m *LendAsset) GetID() uint64 { return 0 } -func (m *LendAsset) GetAssetId() uint64 { +func (m *LendAsset) GetAssetID() uint64 { if m != nil { - return m.AssetId + return m.AssetID } return 0 } -func (m *LendAsset) GetPoolId() uint64 { +func (m *LendAsset) GetPoolID() uint64 { if m != nil { - return m.PoolId + return m.PoolID } return 0 } @@ -117,13 +118,20 @@ func (m *LendAsset) GetLendingTime() time.Time { return time.Time{} } -func (m *LendAsset) GetAppId() uint64 { +func (m *LendAsset) GetAppID() uint64 { if m != nil { - return m.AppId + return m.AppID } return 0 } +func (m *LendAsset) GetCPoolName() string { + if m != nil { + return m.CPoolName + } + return "" +} + type BorrowAsset struct { ID uint64 `protobuf:"varint,1,opt,name=borrowing_id,json=borrowingId,proto3" json:"borrowing_id,omitempty" yaml:"borrowing_id"` LendingID uint64 `protobuf:"varint,2,opt,name=lending_id,json=lendingId,proto3" json:"lending_id,omitempty" yaml:"lending_id"` @@ -136,6 +144,7 @@ type BorrowAsset struct { StableBorrowRate github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,9,opt,name=stable_borrow_rate,json=stableBorrowRate,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"stable_borrow_rate" yaml:"stable_borrow_rate"` UpdatedAmountOut github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,10,opt,name=updated_amount_out,json=updatedAmountOut,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"updated_amount_out" yaml:"updated_amount_out"` Interest_Accumulated github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,11,opt,name=interest_Accumulated,json=interestAccumulated,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"interest_Accumulated" yaml:"interest_accumulated"` + CPoolName string `protobuf:"bytes,12,opt,name=cpool_name,json=cpoolName,proto3" json:"cpool_name,omitempty" yaml:"cpool_name"` } func (m *BorrowAsset) Reset() { *m = BorrowAsset{} } @@ -227,13 +236,22 @@ func (m *BorrowAsset) GetBorrowingTime() time.Time { return time.Time{} } +func (m *BorrowAsset) GetCPoolName() string { + if m != nil { + return m.CPoolName + } + return "" +} + type Pool struct { - PoolId uint64 `protobuf:"varint,1,opt,name=pool_id,json=poolId,proto3" json:"pool_id,omitempty" yaml:"pool_id"` + PoolID uint64 `protobuf:"varint,1,opt,name=pool_id,json=poolId,proto3" json:"pool_id,omitempty" yaml:"pool_id"` ModuleName string `protobuf:"bytes,2,opt,name=module_name,json=moduleName,proto3" json:"module_name,omitempty" yaml:"module_name"` MainAssetId uint64 `protobuf:"varint,3,opt,name=main_asset_id,json=mainAssetId,proto3" json:"main_asset_id,omitempty" yaml:"main_asset_id"` - FirstBridgedAssetId uint64 `protobuf:"varint,4,opt,name=first_bridged_asset_id,json=firstBridgedAssetId,proto3" json:"first_bridged_asset_id,omitempty" yaml:"first_bridged_asset_id"` - SecondBridgedAssetId uint64 `protobuf:"varint,5,opt,name=second_bridged_asset_id,json=secondBridgedAssetId,proto3" json:"second_bridged_asset_id,omitempty" yaml:"second_bridged_asset_id"` - AssetData []AssetDataPoolMapping `protobuf:"bytes,6,rep,name=asset_data,json=assetData,proto3" json:"asset_data" yaml:"asset_data"` + FirstBridgedAssetID uint64 `protobuf:"varint,4,opt,name=first_bridged_asset_id,json=firstBridgedAssetId,proto3" json:"first_bridged_asset_id,omitempty" yaml:"first_bridged_asset_id"` + SecondBridgedAssetID uint64 `protobuf:"varint,5,opt,name=second_bridged_asset_id,json=secondBridgedAssetId,proto3" json:"second_bridged_asset_id,omitempty" yaml:"second_bridged_asset_id"` + CPoolName string `protobuf:"bytes,6,opt,name=cpool_name,json=cpoolName,proto3" json:"cpool_name,omitempty" yaml:"cpool_name"` + ReserveFunds uint64 `protobuf:"varint,7,opt,name=reserve_funds,json=reserveFunds,proto3" json:"reserve_funds,omitempty" yaml:"reserve_funds"` + AssetData []AssetDataPoolMapping `protobuf:"bytes,8,rep,name=asset_data,json=assetData,proto3" json:"asset_data" yaml:"asset_data"` } func (m *Pool) Reset() { *m = Pool{} } @@ -269,9 +287,9 @@ func (m *Pool) XXX_DiscardUnknown() { var xxx_messageInfo_Pool proto.InternalMessageInfo -func (m *Pool) GetPoolId() uint64 { +func (m *Pool) GetPoolID() uint64 { if m != nil { - return m.PoolId + return m.PoolID } return 0 } @@ -290,16 +308,30 @@ func (m *Pool) GetMainAssetId() uint64 { return 0 } -func (m *Pool) GetFirstBridgedAssetId() uint64 { +func (m *Pool) GetFirstBridgedAssetID() uint64 { + if m != nil { + return m.FirstBridgedAssetID + } + return 0 +} + +func (m *Pool) GetSecondBridgedAssetID() uint64 { if m != nil { - return m.FirstBridgedAssetId + return m.SecondBridgedAssetID } return 0 } -func (m *Pool) GetSecondBridgedAssetId() uint64 { +func (m *Pool) GetCPoolName() string { if m != nil { - return m.SecondBridgedAssetId + return m.CPoolName + } + return "" +} + +func (m *Pool) GetReserveFunds() uint64 { + if m != nil { + return m.ReserveFunds } return 0 } @@ -312,7 +344,7 @@ func (m *Pool) GetAssetData() []AssetDataPoolMapping { } type AssetDataPoolMapping struct { - AssetId uint64 `protobuf:"varint,1,opt,name=asset_id,json=assetId,proto3" json:"asset_id,omitempty" yaml:"asset_id"` + AssetID uint64 `protobuf:"varint,1,opt,name=asset_id,json=assetId,proto3" json:"asset_id,omitempty" yaml:"asset_id"` IsBridged bool `protobuf:"varint,2,opt,name=is_bridged,json=isBridged,proto3" json:"is_bridged,omitempty" yaml:"is_bridged"` } @@ -349,9 +381,9 @@ func (m *AssetDataPoolMapping) XXX_DiscardUnknown() { var xxx_messageInfo_AssetDataPoolMapping proto.InternalMessageInfo -func (m *AssetDataPoolMapping) GetAssetId() uint64 { +func (m *AssetDataPoolMapping) GetAssetID() uint64 { if m != nil { - return m.AssetId + return m.AssetID } return 0 } @@ -368,7 +400,7 @@ type Extended_Pair struct { AssetIn uint64 `protobuf:"varint,2,opt,name=asset_in,json=assetIn,proto3" json:"asset_in,omitempty" yaml:"asset_in"` AssetOut uint64 `protobuf:"varint,3,opt,name=asset_out,json=assetOut,proto3" json:"asset_out,omitempty" yaml:"asset_out"` IsInterPool bool `protobuf:"varint,4,opt,name=is_inter_pool,json=isInterPool,proto3" json:"is_inter_pool,omitempty" yaml:"is_inter_pool"` - AssetOutPoolId uint64 `protobuf:"varint,5,opt,name=asset_out_pool_id,json=assetOutPoolId,proto3" json:"asset_out_pool_id,omitempty" yaml:"asset_out_pool_id"` + AssetOutPoolID uint64 `protobuf:"varint,5,opt,name=asset_out_pool_id,json=assetOutPoolId,proto3" json:"asset_out_pool_id,omitempty" yaml:"asset_out_pool_id"` MinUsdValueLeft uint64 `protobuf:"varint,6,opt,name=min_usd_value_left,json=minUsdValueLeft,proto3" json:"min_usd_value_left,omitempty" yaml:"min_usd_value_left"` } @@ -433,9 +465,9 @@ func (m *Extended_Pair) GetIsInterPool() bool { return false } -func (m *Extended_Pair) GetAssetOutPoolId() uint64 { +func (m *Extended_Pair) GetAssetOutPoolID() uint64 { if m != nil { - return m.AssetOutPoolId + return m.AssetOutPoolID } return 0 } @@ -448,9 +480,9 @@ func (m *Extended_Pair) GetMinUsdValueLeft() uint64 { } type AssetToPairMapping struct { - AssetId uint64 `protobuf:"varint,1,opt,name=asset_id,json=assetId,proto3" json:"asset_id,omitempty" yaml:"asset_id"` - PoolId uint64 `protobuf:"varint,2,opt,name=pool_id,json=poolId,proto3" json:"pool_id,omitempty" yaml:"pool_id"` - PairId []uint64 `protobuf:"varint,3,rep,packed,name=pair_id,json=pairId,proto3" json:"pair_id,omitempty" yaml:"pair_id"` + AssetID uint64 `protobuf:"varint,1,opt,name=asset_id,json=assetId,proto3" json:"asset_id,omitempty" yaml:"asset_id"` + PoolID uint64 `protobuf:"varint,2,opt,name=pool_id,json=poolId,proto3" json:"pool_id,omitempty" yaml:"pool_id"` + PairID []uint64 `protobuf:"varint,3,rep,packed,name=pair_id,json=pairId,proto3" json:"pair_id,omitempty" yaml:"pair_id"` } func (m *AssetToPairMapping) Reset() { *m = AssetToPairMapping{} } @@ -486,30 +518,30 @@ func (m *AssetToPairMapping) XXX_DiscardUnknown() { var xxx_messageInfo_AssetToPairMapping proto.InternalMessageInfo -func (m *AssetToPairMapping) GetAssetId() uint64 { +func (m *AssetToPairMapping) GetAssetID() uint64 { if m != nil { - return m.AssetId + return m.AssetID } return 0 } -func (m *AssetToPairMapping) GetPoolId() uint64 { +func (m *AssetToPairMapping) GetPoolID() uint64 { if m != nil { - return m.PoolId + return m.PoolID } return 0 } -func (m *AssetToPairMapping) GetPairId() []uint64 { +func (m *AssetToPairMapping) GetPairID() []uint64 { if m != nil { - return m.PairId + return m.PairID } return nil } type UserLendIdMapping struct { Owner string `protobuf:"bytes,1,opt,name=owner,proto3" json:"owner,omitempty" yaml:"owner"` - LendIds []uint64 `protobuf:"varint,2,rep,packed,name=lend_ids,json=lendIds,proto3" json:"lend_ids,omitempty" yaml:"lend_ids"` + LendIDs []uint64 `protobuf:"varint,2,rep,packed,name=lend_ids,json=lendIds,proto3" json:"lend_ids,omitempty" yaml:"lend_ids"` } func (m *UserLendIdMapping) Reset() { *m = UserLendIdMapping{} } @@ -552,17 +584,17 @@ func (m *UserLendIdMapping) GetOwner() string { return "" } -func (m *UserLendIdMapping) GetLendIds() []uint64 { +func (m *UserLendIdMapping) GetLendIDs() []uint64 { if m != nil { - return m.LendIds + return m.LendIDs } return nil } type LendIdByOwnerAndPoolMapping struct { Owner string `protobuf:"bytes,1,opt,name=owner,proto3" json:"owner,omitempty" yaml:"owner"` - PoolId uint64 `protobuf:"varint,2,opt,name=pool_id,json=poolId,proto3" json:"pool_id,omitempty" yaml:"pool_id"` - LendIds []uint64 `protobuf:"varint,3,rep,packed,name=lendIds,proto3" json:"lendIds,omitempty" yaml:"lend_ids"` + PoolID uint64 `protobuf:"varint,2,opt,name=pool_id,json=poolId,proto3" json:"pool_id,omitempty" yaml:"pool_id"` + LendIDs []uint64 `protobuf:"varint,3,rep,packed,name=lendIds,proto3" json:"lendIds,omitempty" yaml:"lend_ids"` } func (m *LendIdByOwnerAndPoolMapping) Reset() { *m = LendIdByOwnerAndPoolMapping{} } @@ -605,24 +637,24 @@ func (m *LendIdByOwnerAndPoolMapping) GetOwner() string { return "" } -func (m *LendIdByOwnerAndPoolMapping) GetPoolId() uint64 { +func (m *LendIdByOwnerAndPoolMapping) GetPoolID() uint64 { if m != nil { - return m.PoolId + return m.PoolID } return 0 } -func (m *LendIdByOwnerAndPoolMapping) GetLendIds() []uint64 { +func (m *LendIdByOwnerAndPoolMapping) GetLendIDs() []uint64 { if m != nil { - return m.LendIds + return m.LendIDs } return nil } type BorrowIdByOwnerAndPoolMapping struct { Owner string `protobuf:"bytes,1,opt,name=owner,proto3" json:"owner,omitempty" yaml:"owner"` - PoolId uint64 `protobuf:"varint,2,opt,name=pool_id,json=poolId,proto3" json:"pool_id,omitempty" yaml:"pool_id"` - BorrowIds []uint64 `protobuf:"varint,3,rep,packed,name=borrowIds,proto3" json:"borrowIds,omitempty" yaml:"borrow_ids"` + PoolID uint64 `protobuf:"varint,2,opt,name=pool_id,json=poolId,proto3" json:"pool_id,omitempty" yaml:"pool_id"` + BorrowIDs []uint64 `protobuf:"varint,3,rep,packed,name=borrowIds,proto3" json:"borrowIds,omitempty" yaml:"borrow_ids"` } func (m *BorrowIdByOwnerAndPoolMapping) Reset() { *m = BorrowIdByOwnerAndPoolMapping{} } @@ -665,23 +697,23 @@ func (m *BorrowIdByOwnerAndPoolMapping) GetOwner() string { return "" } -func (m *BorrowIdByOwnerAndPoolMapping) GetPoolId() uint64 { +func (m *BorrowIdByOwnerAndPoolMapping) GetPoolID() uint64 { if m != nil { - return m.PoolId + return m.PoolID } return 0 } -func (m *BorrowIdByOwnerAndPoolMapping) GetBorrowIds() []uint64 { +func (m *BorrowIdByOwnerAndPoolMapping) GetBorrowIDs() []uint64 { if m != nil { - return m.BorrowIds + return m.BorrowIDs } return nil } type UserBorrowIdMapping struct { Owner string `protobuf:"bytes,1,opt,name=owner,proto3" json:"owner,omitempty" yaml:"owner"` - BorrowIds []uint64 `protobuf:"varint,2,rep,packed,name=borrow_ids,json=borrowIds,proto3" json:"borrow_ids,omitempty" yaml:"borrow_ids"` + BorrowIDs []uint64 `protobuf:"varint,2,rep,packed,name=borrow_ids,json=borrowIds,proto3" json:"borrow_ids,omitempty" yaml:"borrow_ids"` } func (m *UserBorrowIdMapping) Reset() { *m = UserBorrowIdMapping{} } @@ -724,9 +756,9 @@ func (m *UserBorrowIdMapping) GetOwner() string { return "" } -func (m *UserBorrowIdMapping) GetBorrowIds() []uint64 { +func (m *UserBorrowIdMapping) GetBorrowIDs() []uint64 { if m != nil { - return m.BorrowIds + return m.BorrowIDs } return nil } @@ -784,8 +816,8 @@ func (m *LendIdToBorrowIdMapping) GetBorrowingID() []uint64 { } type AssetStats struct { - PoolId uint64 `protobuf:"varint,1,opt,name=pool_id,json=poolId,proto3" json:"pool_id,omitempty" yaml:"pool_id"` - AssetId uint64 `protobuf:"varint,2,opt,name=asset_id,json=assetId,proto3" json:"asset_id,omitempty" yaml:"asset_id"` + PoolID uint64 `protobuf:"varint,1,opt,name=pool_id,json=poolId,proto3" json:"pool_id,omitempty" yaml:"pool_id"` + AssetID uint64 `protobuf:"varint,2,opt,name=asset_id,json=assetId,proto3" json:"asset_id,omitempty" yaml:"asset_id"` TotalBorrowed github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,3,opt,name=total_borrowed,json=totalBorrowed,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"total_borrowed" yaml:"total_borrowed"` TotalStableBorrowed github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,4,opt,name=total_stable_borrowed,json=totalStableBorrowed,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"total_stable_borrowed" yaml:"total_stable_borrowed"` TotalLend github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,5,opt,name=total_lend,json=totalLend,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"total_lend" yaml:"total_lend"` @@ -828,22 +860,22 @@ func (m *AssetStats) XXX_DiscardUnknown() { var xxx_messageInfo_AssetStats proto.InternalMessageInfo -func (m *AssetStats) GetPoolId() uint64 { +func (m *AssetStats) GetPoolID() uint64 { if m != nil { - return m.PoolId + return m.PoolID } return 0 } -func (m *AssetStats) GetAssetId() uint64 { +func (m *AssetStats) GetAssetID() uint64 { if m != nil { - return m.AssetId + return m.AssetID } return 0 } type AssetRatesStats struct { - AssetId uint64 `protobuf:"varint,1,opt,name=asset_id,json=assetId,proto3" json:"asset_id,omitempty" yaml:"asset_id"` + AssetID uint64 `protobuf:"varint,1,opt,name=asset_id,json=assetId,proto3" json:"asset_id,omitempty" yaml:"asset_id"` UOptimal github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,2,opt,name=u_optimal,json=uOptimal,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"u_optimal" yaml:"u_optimal"` Base github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,3,opt,name=base,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"base" yaml:"base"` Slope1 github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,4,opt,name=slope1,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"slope1" yaml:"slope1"` @@ -855,8 +887,9 @@ type AssetRatesStats struct { Ltv github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,10,opt,name=ltv,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"ltv" yaml:"ltv"` LiquidationThreshold github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,11,opt,name=liquidation_threshold,json=liquidationThreshold,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"liquidation_threshold" yaml:"liquidation_threshold"` LiquidationPenalty github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,12,opt,name=liquidation_penalty,json=liquidationPenalty,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"liquidation_penalty" yaml:"liquidation_penalty"` - ReserveFactor github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,13,opt,name=reserve_factor,json=reserveFactor,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"reserve_factor" yaml:"reserve_factor"` - CAssetId uint64 `protobuf:"varint,14,opt,name=c_asset_id,json=cAssetId,proto3" json:"c_asset_id,omitempty" yaml:"c_asset_id"` + LiquidationBonus github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,13,opt,name=liquidation_bonus,json=liquidationBonus,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"liquidation_bonus" yaml:"liquidation_bonus"` + ReserveFactor github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,14,opt,name=reserve_factor,json=reserveFactor,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"reserve_factor" yaml:"reserve_factor"` + CAssetID uint64 `protobuf:"varint,15,opt,name=c_asset_id,json=cAssetId,proto3" json:"c_asset_id,omitempty" yaml:"c_asset_id"` } func (m *AssetRatesStats) Reset() { *m = AssetRatesStats{} } @@ -892,9 +925,9 @@ func (m *AssetRatesStats) XXX_DiscardUnknown() { var xxx_messageInfo_AssetRatesStats proto.InternalMessageInfo -func (m *AssetRatesStats) GetAssetId() uint64 { +func (m *AssetRatesStats) GetAssetID() uint64 { if m != nil { - return m.AssetId + return m.AssetID } return 0 } @@ -906,15 +939,15 @@ func (m *AssetRatesStats) GetEnableStableBorrow() bool { return false } -func (m *AssetRatesStats) GetCAssetId() uint64 { +func (m *AssetRatesStats) GetCAssetID() uint64 { if m != nil { - return m.CAssetId + return m.CAssetID } return 0 } type LendMapping struct { - LendIds []uint64 `protobuf:"varint,1,rep,packed,name=lend_ids,json=lendIds,proto3" json:"lend_ids,omitempty" yaml:"lend_ids"` + LendIDs []uint64 `protobuf:"varint,1,rep,packed,name=lend_ids,json=lendIds,proto3" json:"lend_ids,omitempty" yaml:"lend_ids"` } func (m *LendMapping) Reset() { *m = LendMapping{} } @@ -950,15 +983,15 @@ func (m *LendMapping) XXX_DiscardUnknown() { var xxx_messageInfo_LendMapping proto.InternalMessageInfo -func (m *LendMapping) GetLendIds() []uint64 { +func (m *LendMapping) GetLendIDs() []uint64 { if m != nil { - return m.LendIds + return m.LendIDs } return nil } type BorrowMapping struct { - BorrowIds []uint64 `protobuf:"varint,1,rep,packed,name=borrow_ids,json=borrowIds,proto3" json:"borrow_ids,omitempty" yaml:"borrow_ids"` + BorrowIDs []uint64 `protobuf:"varint,1,rep,packed,name=borrow_ids,json=borrowIds,proto3" json:"borrow_ids,omitempty" yaml:"borrow_ids"` } func (m *BorrowMapping) Reset() { *m = BorrowMapping{} } @@ -994,15 +1027,15 @@ func (m *BorrowMapping) XXX_DiscardUnknown() { var xxx_messageInfo_BorrowMapping proto.InternalMessageInfo -func (m *BorrowMapping) GetBorrowIds() []uint64 { +func (m *BorrowMapping) GetBorrowIDs() []uint64 { if m != nil { - return m.BorrowIds + return m.BorrowIDs } return nil } type StableBorrowMapping struct { - StableBorrowIds []uint64 `protobuf:"varint,1,rep,packed,name=stable_borrow_ids,json=stableBorrowIds,proto3" json:"stable_borrow_ids,omitempty" yaml:"stable_borrow_ids"` + StableBorrowIDs []uint64 `protobuf:"varint,1,rep,packed,name=stable_borrow_ids,json=stableBorrowIds,proto3" json:"stable_borrow_ids,omitempty" yaml:"stable_borrow_ids"` } func (m *StableBorrowMapping) Reset() { *m = StableBorrowMapping{} } @@ -1038,15 +1071,15 @@ func (m *StableBorrowMapping) XXX_DiscardUnknown() { var xxx_messageInfo_StableBorrowMapping proto.InternalMessageInfo -func (m *StableBorrowMapping) GetStableBorrowIds() []uint64 { +func (m *StableBorrowMapping) GetStableBorrowIDs() []uint64 { if m != nil { - return m.StableBorrowIds + return m.StableBorrowIDs } return nil } type ModuleBalance struct { - PoolId uint64 `protobuf:"varint,1,opt,name=pool_id,json=poolId,proto3" json:"pool_id,omitempty" yaml:"pool_id"` + PoolID uint64 `protobuf:"varint,1,opt,name=pool_id,json=poolId,proto3" json:"pool_id,omitempty" yaml:"pool_id"` ModuleBalanceStats []ModuleBalanceStats `protobuf:"bytes,2,rep,name=module_balance_stats,json=moduleBalanceStats,proto3" json:"module_balance_stats" yaml:"module_balance_stats"` } @@ -1083,9 +1116,9 @@ func (m *ModuleBalance) XXX_DiscardUnknown() { var xxx_messageInfo_ModuleBalance proto.InternalMessageInfo -func (m *ModuleBalance) GetPoolId() uint64 { +func (m *ModuleBalance) GetPoolID() uint64 { if m != nil { - return m.PoolId + return m.PoolID } return 0 } @@ -1098,7 +1131,7 @@ func (m *ModuleBalance) GetModuleBalanceStats() []ModuleBalanceStats { } type ModuleBalanceStats struct { - AssetId uint64 `protobuf:"varint,1,opt,name=asset_id,json=assetId,proto3" json:"asset_id,omitempty" yaml:"asset_id"` + AssetID uint64 `protobuf:"varint,1,opt,name=asset_id,json=assetId,proto3" json:"asset_id,omitempty" yaml:"asset_id"` Balance github_com_cosmos_cosmos_sdk_types.Coin `protobuf:"bytes,2,opt,name=balance,proto3,casttype=github.com/cosmos/cosmos-sdk/types.Coin" json:"balance" yaml:"balance"` } @@ -1135,9 +1168,9 @@ func (m *ModuleBalanceStats) XXX_DiscardUnknown() { var xxx_messageInfo_ModuleBalanceStats proto.InternalMessageInfo -func (m *ModuleBalanceStats) GetAssetId() uint64 { +func (m *ModuleBalanceStats) GetAssetID() uint64 { if m != nil { - return m.AssetId + return m.AssetID } return 0 } @@ -1150,7 +1183,7 @@ func (m *ModuleBalanceStats) GetBalance() github_com_cosmos_cosmos_sdk_types.Coi } type BalanceStats struct { - AssetId uint64 `protobuf:"varint,1,opt,name=asset_id,json=assetId,proto3" json:"asset_id,omitempty" yaml:"asset_id"` + AssetID uint64 `protobuf:"varint,1,opt,name=asset_id,json=assetId,proto3" json:"asset_id,omitempty" yaml:"asset_id"` Amount github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,2,opt,name=amount,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"amount" yaml:"amount"` } @@ -1187,9 +1220,9 @@ func (m *BalanceStats) XXX_DiscardUnknown() { var xxx_messageInfo_BalanceStats proto.InternalMessageInfo -func (m *BalanceStats) GetAssetId() uint64 { +func (m *BalanceStats) GetAssetID() uint64 { if m != nil { - return m.AssetId + return m.AssetID } return 0 } @@ -1238,6 +1271,85 @@ func (m *DepositStats) GetBalanceStats() []BalanceStats { return nil } +type AuctionParams struct { + AppId uint64 `protobuf:"varint,1,opt,name=app_id,json=appId,proto3" json:"app_id,omitempty" yaml:"app_id"` + AuctionDurationSeconds uint64 `protobuf:"varint,2,opt,name=auction_duration_seconds,json=auctionDurationSeconds,proto3" json:"auction_duration_seconds,omitempty" yaml:"auction_duration_seconds"` + Buffer github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,3,opt,name=buffer,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"buffer" yaml:"buffer"` + Cusp github_com_cosmos_cosmos_sdk_types.Dec `protobuf:"bytes,4,opt,name=cusp,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Dec" json:"cusp" yaml:"cusp"` + Step github_com_cosmos_cosmos_sdk_types.Int `protobuf:"bytes,5,opt,name=step,proto3,customtype=github.com/cosmos/cosmos-sdk/types.Int" json:"step" yaml:"step"` + PriceFunctionType uint64 `protobuf:"varint,6,opt,name=price_function_type,json=priceFunctionType,proto3" json:"price_function_type,omitempty" yaml:"price_function_type"` + DutchId uint64 `protobuf:"varint,7,opt,name=dutch_id,json=dutchId,proto3" json:"dutch_id,omitempty" yaml:"dutch_id"` + BidDurationSeconds uint64 `protobuf:"varint,8,opt,name=bid_duration_seconds,json=bidDurationSeconds,proto3" json:"bid_duration_seconds,omitempty" yaml:"bid_duration_seconds"` +} + +func (m *AuctionParams) Reset() { *m = AuctionParams{} } +func (m *AuctionParams) String() string { return proto.CompactTextString(m) } +func (*AuctionParams) ProtoMessage() {} +func (*AuctionParams) Descriptor() ([]byte, []int) { + return fileDescriptor_b87bb4bef8334ddd, []int{20} +} +func (m *AuctionParams) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *AuctionParams) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_AuctionParams.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *AuctionParams) XXX_Merge(src proto.Message) { + xxx_messageInfo_AuctionParams.Merge(m, src) +} +func (m *AuctionParams) XXX_Size() int { + return m.Size() +} +func (m *AuctionParams) XXX_DiscardUnknown() { + xxx_messageInfo_AuctionParams.DiscardUnknown(m) +} + +var xxx_messageInfo_AuctionParams proto.InternalMessageInfo + +func (m *AuctionParams) GetAppId() uint64 { + if m != nil { + return m.AppId + } + return 0 +} + +func (m *AuctionParams) GetAuctionDurationSeconds() uint64 { + if m != nil { + return m.AuctionDurationSeconds + } + return 0 +} + +func (m *AuctionParams) GetPriceFunctionType() uint64 { + if m != nil { + return m.PriceFunctionType + } + return 0 +} + +func (m *AuctionParams) GetDutchId() uint64 { + if m != nil { + return m.DutchId + } + return 0 +} + +func (m *AuctionParams) GetBidDurationSeconds() uint64 { + if m != nil { + return m.BidDurationSeconds + } + return 0 +} + func init() { proto.RegisterType((*LendAsset)(nil), "comdex.lend.v1beta1.LendAsset") proto.RegisterType((*BorrowAsset)(nil), "comdex.lend.v1beta1.BorrowAsset") @@ -1259,148 +1371,166 @@ func init() { proto.RegisterType((*ModuleBalanceStats)(nil), "comdex.lend.v1beta1.ModuleBalanceStats") proto.RegisterType((*BalanceStats)(nil), "comdex.lend.v1beta1.BalanceStats") proto.RegisterType((*DepositStats)(nil), "comdex.lend.v1beta1.DepositStats") + proto.RegisterType((*AuctionParams)(nil), "comdex.lend.v1beta1.AuctionParams") } func init() { proto.RegisterFile("comdex/lend/v1beta1/lend.proto", fileDescriptor_b87bb4bef8334ddd) } var fileDescriptor_b87bb4bef8334ddd = []byte{ - // 2168 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x59, 0xcb, 0x6f, 0x1b, 0xc7, - 0x19, 0xf7, 0xca, 0x32, 0x45, 0x7e, 0x14, 0x25, 0x71, 0x48, 0x35, 0x8c, 0x6c, 0x73, 0xe5, 0x69, - 0x61, 0xbb, 0x87, 0x90, 0x90, 0xda, 0x02, 0x89, 0x91, 0x22, 0xe1, 0x5a, 0x76, 0xa3, 0xc4, 0x96, - 0x93, 0xb1, 0xd3, 0xa0, 0x0f, 0x74, 0x31, 0xe4, 0x8e, 0xe4, 0x45, 0x96, 0xbb, 0x9b, 0xdd, 0x25, - 0x1d, 0xf5, 0x11, 0x04, 0xed, 0xa1, 0x40, 0x4e, 0xb9, 0xf7, 0x56, 0xa0, 0xe8, 0x7f, 0xd0, 0x5b, - 0x81, 0x9e, 0xda, 0x1c, 0x7a, 0xc8, 0xb1, 0xe8, 0x61, 0x5b, 0xd0, 0x87, 0xde, 0x75, 0xec, 0xa9, - 0x98, 0xc7, 0xbe, 0x44, 0xd6, 0xf1, 0x4a, 0x06, 0x72, 0x12, 0x77, 0xe6, 0x9b, 0xdf, 0xef, 0x9b, - 0x99, 0xef, 0x39, 0x82, 0xee, 0xc8, 0x1b, 0x5b, 0xec, 0xe3, 0xbe, 0xc3, 0x5c, 0xab, 0x3f, 0xdd, - 0x19, 0xb2, 0x88, 0xee, 0x88, 0x8f, 0x9e, 0x1f, 0x78, 0x91, 0x87, 0x5a, 0x72, 0xbe, 0x27, 0x86, - 0xd4, 0xfc, 0x56, 0xfb, 0xc8, 0x3b, 0xf2, 0xc4, 0x7c, 0x9f, 0xff, 0x92, 0xa2, 0x5b, 0xfa, 0x91, - 0xe7, 0x1d, 0x39, 0xac, 0x2f, 0xbe, 0x86, 0x93, 0xc3, 0x7e, 0x64, 0x8f, 0x59, 0x18, 0xd1, 0xb1, - 0xaf, 0x04, 0xba, 0x23, 0x2f, 0x1c, 0x7b, 0x61, 0x7f, 0x48, 0x43, 0x96, 0x72, 0x8d, 0x3c, 0xdb, - 0x95, 0xf3, 0xf8, 0x69, 0x05, 0x6a, 0xf7, 0x98, 0x6b, 0x0d, 0xc2, 0x90, 0x45, 0xe8, 0x16, 0x00, - 0x27, 0xb5, 0xdd, 0x23, 0xd3, 0xb6, 0x3a, 0xda, 0xb6, 0x76, 0x73, 0xd9, 0xb8, 0x3c, 0x8b, 0xf5, - 0xa5, 0xfd, 0xbd, 0x93, 0x58, 0x6f, 0x1e, 0xd3, 0xb1, 0x73, 0x0b, 0x67, 0x12, 0x98, 0xd4, 0xd4, - 0xc7, 0xbe, 0x85, 0x5e, 0x83, 0x2a, 0xe5, 0x20, 0x7c, 0xe5, 0x92, 0x58, 0xd9, 0x9d, 0xc5, 0xfa, - 0x8a, 0x00, 0xde, 0xb7, 0x4e, 0x62, 0x7d, 0x5d, 0x2e, 0x4f, 0x84, 0x30, 0x59, 0xa1, 0x72, 0x0e, - 0x7d, 0x0f, 0x56, 0x7c, 0xcf, 0x73, 0xf8, 0xca, 0x8b, 0x62, 0xe5, 0x95, 0x59, 0xac, 0x57, 0xde, - 0xf5, 0x3c, 0x47, 0x2c, 0x5c, 0x93, 0x0b, 0x95, 0x08, 0x26, 0x15, 0x5f, 0xcc, 0xa0, 0xeb, 0x70, - 0xc9, 0x7b, 0xe2, 0xb2, 0xa0, 0xb3, 0xbc, 0xad, 0xdd, 0xac, 0x19, 0x1b, 0x27, 0xb1, 0xbe, 0x2a, - 0x45, 0xc5, 0x30, 0x26, 0x72, 0x1a, 0xfd, 0x02, 0x6a, 0x74, 0xec, 0x4d, 0xdc, 0xc8, 0xb4, 0xdd, - 0xce, 0xa5, 0x6d, 0xed, 0x66, 0x7d, 0xf7, 0xe5, 0x9e, 0x3c, 0x97, 0x1e, 0x3f, 0x97, 0xe4, 0x8c, - 0x7b, 0xb7, 0x3d, 0xdb, 0x35, 0x6e, 0x7f, 0x11, 0xeb, 0x17, 0x4e, 0x62, 0x7d, 0x43, 0xa9, 0x9b, - 0xac, 0xc4, 0xff, 0x8d, 0xf5, 0x1b, 0x47, 0x76, 0xf4, 0x78, 0x32, 0xec, 0x8d, 0xbc, 0x71, 0x5f, - 0x1d, 0xac, 0xfc, 0xf3, 0x4a, 0x68, 0x7d, 0xd8, 0x8f, 0x8e, 0x7d, 0x16, 0x0a, 0x10, 0x52, 0x95, - 0xcb, 0xf6, 0x5d, 0xf4, 0x33, 0x58, 0x4d, 0x0e, 0x8c, 0xdf, 0x4d, 0xa7, 0x22, 0xf8, 0xb7, 0x7a, - 0xf2, 0xe2, 0x7a, 0xc9, 0xc5, 0xf5, 0x1e, 0x25, 0x17, 0x67, 0xe8, 0x4a, 0x81, 0x56, 0xf1, 0xb8, - 0xf9, 0x6a, 0xfc, 0xf9, 0xbf, 0x74, 0x8d, 0xd4, 0xd5, 0x10, 0x5f, 0x82, 0xa6, 0xd0, 0x9c, 0xf8, - 0x16, 0x8d, 0x98, 0x65, 0x66, 0x9b, 0x5c, 0x11, 0x07, 0xf2, 0x36, 0x07, 0xfa, 0x67, 0xac, 0x5f, - 0x7f, 0x0e, 0xad, 0xf7, 0xdd, 0xe8, 0x24, 0xd6, 0x3b, 0x92, 0x72, 0x0e, 0x10, 0x93, 0x75, 0x35, - 0x36, 0x48, 0xf6, 0xf5, 0x4b, 0x68, 0xd1, 0x29, 0xb5, 0x1d, 0x3a, 0x74, 0x98, 0x19, 0x79, 0xe6, - 0xd0, 0x0b, 0x02, 0xef, 0x49, 0xa7, 0x2a, 0x98, 0xef, 0x95, 0x66, 0xde, 0x52, 0xa7, 0x3d, 0x0f, - 0x89, 0x49, 0x33, 0x1d, 0x7d, 0xe4, 0x19, 0x62, 0x0c, 0xfd, 0x1c, 0x50, 0xc0, 0x9e, 0xd0, 0xc0, - 0x32, 0x07, 0xa3, 0xd1, 0x64, 0x3c, 0x71, 0xb8, 0x6e, 0x9d, 0x9a, 0x20, 0x7f, 0xa7, 0x34, 0xf9, - 0xcb, 0x92, 0x5c, 0x21, 0xd2, 0x0c, 0x11, 0x93, 0xa6, 0x1c, 0xcc, 0xb1, 0xa0, 0x1d, 0xa8, 0x50, - 0xdf, 0xe7, 0xc6, 0x0a, 0xc2, 0x58, 0xb7, 0x66, 0xb1, 0x7e, 0x69, 0xe0, 0xfb, 0xc2, 0x56, 0x1b, - 0x6a, 0x1f, 0x42, 0x00, 0x93, 0x4b, 0x94, 0x8f, 0xe3, 0xcf, 0x6a, 0x50, 0x97, 0x9a, 0x4b, 0x3f, - 0x7b, 0x13, 0x56, 0xe5, 0xe6, 0x0a, 0x9e, 0x76, 0x35, 0xf5, 0x34, 0x75, 0xf5, 0x79, 0x19, 0x4c, - 0xea, 0xe9, 0xe7, 0xbe, 0x85, 0x06, 0x05, 0x4f, 0x95, 0xfe, 0x86, 0x67, 0xb1, 0x2e, 0x9c, 0x99, - 0x8b, 0x7c, 0xb5, 0xc3, 0xde, 0x81, 0x0d, 0x3b, 0x34, 0xc3, 0x48, 0x1c, 0xb7, 0xba, 0x3e, 0xee, - 0x7e, 0x55, 0xe3, 0xf2, 0x49, 0xac, 0xbf, 0x24, 0xd7, 0x9e, 0x96, 0xc0, 0x64, 0xcd, 0x0e, 0x1f, - 0x8a, 0x11, 0x75, 0x15, 0xdc, 0x79, 0xa9, 0x1d, 0x70, 0x35, 0x96, 0x73, 0xce, 0x4b, 0xed, 0x40, - 0xe8, 0x90, 0x38, 0xaf, 0x14, 0xe1, 0xce, 0xcb, 0x67, 0xac, 0xaf, 0xd7, 0x29, 0x3f, 0x01, 0x50, - 0x10, 0xde, 0x24, 0x52, 0x2e, 0xf9, 0x0c, 0xf6, 0x3d, 0xc5, 0xde, 0x2c, 0xb0, 0x7b, 0x93, 0xa8, - 0x14, 0xbd, 0xda, 0xef, 0x83, 0x49, 0x84, 0x7e, 0xa7, 0x41, 0x7b, 0x18, 0xd8, 0xd6, 0x11, 0x77, - 0x32, 0x11, 0x0f, 0xe5, 0x9c, 0x70, 0xdc, 0x67, 0xaa, 0x72, 0xa0, 0x54, 0xb9, 0xac, 0x2c, 0x64, - 0x01, 0x48, 0x29, 0xa5, 0x90, 0x42, 0x10, 0x76, 0x29, 0x9d, 0x1b, 0x59, 0xb0, 0x96, 0x59, 0x9e, - 0x08, 0x5a, 0xd5, 0xaf, 0x0c, 0x5a, 0xd7, 0x94, 0x5e, 0x9b, 0xa7, 0x2d, 0x37, 0x0b, 0x5b, 0x8d, - 0x74, 0x50, 0x04, 0xae, 0x63, 0x40, 0x05, 0xcb, 0x32, 0x03, 0x1a, 0xb1, 0x33, 0xb8, 0xf0, 0x1e, - 0x1b, 0x65, 0x2e, 0x3c, 0x8f, 0x88, 0xc9, 0x46, 0x98, 0x33, 0x57, 0x42, 0x23, 0x41, 0x7d, 0x2a, - 0xc4, 0x71, 0x33, 0x80, 0xf3, 0x45, 0x8f, 0x79, 0x44, 0x4c, 0x36, 0x0a, 0x51, 0x93, 0xdf, 0xfc, - 0xa7, 0x1a, 0xb4, 0x6d, 0x37, 0x62, 0x01, 0x0b, 0xa3, 0x42, 0xec, 0xaa, 0x0b, 0xf6, 0xfb, 0xa5, - 0xd9, 0x95, 0x21, 0xa4, 0x98, 0x85, 0xe8, 0xd5, 0x4a, 0x86, 0x73, 0x4c, 0xf8, 0x0f, 0xcb, 0xb0, - 0xcc, 0x73, 0x6b, 0x3e, 0xed, 0x6a, 0x25, 0xd2, 0xee, 0x1d, 0xa8, 0x8f, 0x3d, 0x6b, 0xe2, 0x30, - 0xd3, 0xa5, 0x63, 0x26, 0x62, 0x4f, 0xcd, 0xf8, 0xd6, 0x2c, 0xd6, 0xe1, 0xbe, 0x18, 0x3e, 0xa0, - 0x63, 0x76, 0x12, 0xeb, 0x48, 0x2e, 0xcf, 0x89, 0x62, 0x02, 0xe3, 0x54, 0x02, 0xbd, 0x03, 0x8d, - 0x31, 0xb5, 0x5d, 0x33, 0x2d, 0x1a, 0x64, 0xea, 0xbf, 0x31, 0x8b, 0xf5, 0xfa, 0x7d, 0x6a, 0xbb, - 0x59, 0xe1, 0xd0, 0x56, 0x48, 0x79, 0x69, 0x4c, 0xea, 0xe3, 0x4c, 0x08, 0x8d, 0xe1, 0x1b, 0x87, - 0x76, 0x10, 0x46, 0x66, 0xd1, 0x21, 0xd2, 0x98, 0xf4, 0xea, 0x2c, 0xd6, 0x5b, 0x77, 0xb9, 0x84, - 0x91, 0xb3, 0x77, 0x81, 0x7e, 0x55, 0xa2, 0x2f, 0x5e, 0x8e, 0x49, 0xeb, 0x70, 0x7e, 0x15, 0xfa, - 0x08, 0x5e, 0x0a, 0xd9, 0xc8, 0x73, 0xad, 0x79, 0xbe, 0x4b, 0x82, 0xef, 0xd6, 0x2c, 0xd6, 0xdb, - 0x0f, 0x85, 0xc8, 0x1c, 0x61, 0x57, 0x99, 0xea, 0x62, 0x00, 0x4c, 0xda, 0xe1, 0x82, 0x75, 0xc8, - 0x07, 0x90, 0x22, 0x16, 0x8d, 0x68, 0xa7, 0xb2, 0x7d, 0xf1, 0x66, 0x7d, 0xf7, 0xdb, 0xbd, 0x05, - 0x95, 0x62, 0x4f, 0xac, 0xd8, 0xa3, 0x11, 0xe5, 0x37, 0x79, 0x9f, 0xfa, 0xbe, 0xed, 0x1e, 0x19, - 0xd7, 0xb9, 0x61, 0xf1, 0xfc, 0x90, 0xce, 0xe6, 0xe2, 0x59, 0x8a, 0x8b, 0x49, 0x8d, 0x26, 0xf3, - 0xf8, 0xb7, 0x1a, 0xb4, 0x17, 0x61, 0x15, 0x2a, 0x3d, 0xad, 0x5c, 0xa5, 0xf7, 0x5d, 0x00, 0x3b, - 0x4c, 0xf6, 0x2c, 0x4c, 0xa7, 0x6a, 0x6c, 0x66, 0x9a, 0x64, 0x73, 0x98, 0xd4, 0xec, 0x50, 0x1d, - 0x01, 0xfe, 0xcf, 0x12, 0x34, 0xee, 0x7c, 0x1c, 0x31, 0xd7, 0x62, 0x96, 0xc9, 0x33, 0x0b, 0x5a, - 0x83, 0xa5, 0x84, 0x9c, 0x2c, 0xd9, 0x16, 0xea, 0xa5, 0x2a, 0xb9, 0x2a, 0x19, 0xb6, 0xe6, 0xf4, - 0x70, 0x53, 0x3d, 0x5c, 0xb4, 0x03, 0x72, 0xa3, 0xc2, 0xf1, 0xa5, 0xe1, 0xb5, 0x73, 0xe9, 0x25, - 0x99, 0xc2, 0x44, 0xc2, 0x72, 0xcf, 0x7d, 0x1d, 0x1a, 0x76, 0x68, 0x0a, 0x87, 0x32, 0xb9, 0x27, - 0x08, 0xcb, 0xaa, 0x1a, 0x9d, 0xcc, 0x40, 0x0b, 0xd3, 0x98, 0xd4, 0xed, 0x70, 0x9f, 0x7f, 0x0a, - 0x5f, 0xfb, 0x11, 0x34, 0x53, 0x54, 0x33, 0xf1, 0x3a, 0x69, 0x2b, 0xbd, 0x59, 0xac, 0xaf, 0x0d, - 0x14, 0x4d, 0xea, 0x7d, 0x9d, 0x53, 0xaa, 0x98, 0xa9, 0x1f, 0xae, 0xd1, 0x82, 0x2c, 0x7a, 0x1b, - 0xd0, 0xd8, 0x76, 0xcd, 0x49, 0x68, 0x99, 0x53, 0xea, 0x4c, 0x98, 0xe9, 0xb0, 0x43, 0x99, 0xd4, - 0x96, 0x8d, 0xab, 0x59, 0x7c, 0x9a, 0x97, 0xc1, 0x64, 0x7d, 0x6c, 0xbb, 0xef, 0x87, 0xd6, 0x0f, - 0xf9, 0xd0, 0x3d, 0x3e, 0xf2, 0x67, 0x0d, 0x90, 0x50, 0xe5, 0x91, 0xc7, 0xcf, 0xf9, 0x05, 0xdc, - 0x78, 0x2e, 0xc8, 0x2c, 0x95, 0x08, 0x32, 0xb9, 0xaa, 0xe2, 0xe2, 0xf6, 0xc5, 0x42, 0x55, 0x61, - 0xfd, 0xff, 0xaa, 0x02, 0x4f, 0xa1, 0xf9, 0x7e, 0xc8, 0x02, 0x5e, 0x04, 0xed, 0x5b, 0x89, 0xf6, - 0x69, 0x9f, 0xa0, 0x3d, 0xbb, 0x4f, 0x78, 0x0d, 0xaa, 0xdc, 0x91, 0x4c, 0xdb, 0x0a, 0x3b, 0x4b, - 0x82, 0x54, 0xec, 0x52, 0x82, 0x85, 0xd9, 0x2e, 0x13, 0x21, 0x4c, 0x56, 0x1c, 0x39, 0x87, 0xff, - 0xa4, 0xc1, 0x65, 0x29, 0x67, 0x1c, 0x3f, 0xe0, 0x60, 0x03, 0xd7, 0xca, 0xbb, 0xcc, 0xf3, 0xaa, - 0x70, 0xc6, 0xd3, 0x7a, 0x15, 0x12, 0x4d, 0xd4, 0x69, 0x3d, 0xb7, 0xe2, 0x7f, 0xd1, 0xe0, 0xaa, - 0xcc, 0x8c, 0x5f, 0x93, 0xea, 0x6f, 0x42, 0x6d, 0xa8, 0xf8, 0x13, 0xe5, 0x45, 0x1d, 0x9b, 0x28, - 0x15, 0x66, 0xd1, 0x41, 0x65, 0x75, 0xb1, 0x81, 0x6c, 0x11, 0xfe, 0x54, 0x83, 0x16, 0xbf, 0xf4, - 0x64, 0x45, 0x59, 0xc5, 0x07, 0x00, 0x19, 0xb2, 0xba, 0xf8, 0x92, 0x2a, 0xfc, 0x51, 0x83, 0x97, - 0xe4, 0x69, 0x27, 0x1d, 0x4a, 0xa6, 0xc6, 0x60, 0x41, 0x4f, 0x5d, 0xb2, 0x52, 0xdf, 0x3f, 0xd5, - 0x2e, 0x48, 0x1d, 0xaf, 0xf3, 0x4c, 0x69, 0xa4, 0x3d, 0xc1, 0x73, 0xf5, 0x0d, 0xf8, 0xb3, 0x15, - 0x00, 0xe1, 0xb6, 0x0f, 0x23, 0x1a, 0x85, 0x67, 0x2d, 0x01, 0xce, 0xd1, 0xeb, 0xbb, 0xb0, 0x16, - 0x79, 0x11, 0x75, 0x54, 0x8d, 0xc6, 0x64, 0xde, 0xaf, 0x19, 0x3f, 0x28, 0x5d, 0xf9, 0xa8, 0x52, - 0xb3, 0x88, 0x86, 0x49, 0x43, 0x0c, 0x18, 0xea, 0x1b, 0xfd, 0x5a, 0x83, 0x4d, 0x29, 0x52, 0xa8, - 0x0d, 0x99, 0xa5, 0x5e, 0x0d, 0x0e, 0x4a, 0xf3, 0x5e, 0xc9, 0xf3, 0x9e, 0x02, 0xc5, 0xa4, 0x25, - 0xc6, 0xf3, 0x1d, 0x12, 0xb3, 0xd0, 0x10, 0x40, 0x8a, 0xf3, 0x3b, 0x15, 0x61, 0xbf, 0x26, 0x5b, - 0x9a, 0x52, 0xc4, 0xcd, 0x3c, 0x31, 0x47, 0xc2, 0xa4, 0x26, 0x3e, 0xb8, 0x25, 0xa1, 0x9f, 0xaa, - 0xe8, 0x45, 0xfd, 0x40, 0x04, 0xff, 0x9a, 0x31, 0x28, 0x5d, 0x45, 0xe7, 0xe3, 0x04, 0xf5, 0x03, - 0x15, 0x27, 0x06, 0x7e, 0xc0, 0x77, 0xa0, 0x6c, 0x9f, 0xe3, 0xaf, 0x94, 0xde, 0x81, 0xc4, 0x2f, - 0x7a, 0x91, 0x60, 0x50, 0x5e, 0xc4, 0x39, 0xa6, 0xd0, 0x2c, 0xd6, 0xef, 0x9c, 0xaa, 0x5a, 0xfa, - 0x29, 0x43, 0x52, 0x75, 0x16, 0x35, 0x04, 0x82, 0x71, 0x3d, 0xdf, 0x0f, 0x70, 0xde, 0x27, 0xd0, - 0x9c, 0x44, 0xb6, 0x63, 0x87, 0x34, 0xb2, 0x3d, 0x97, 0x77, 0x0d, 0xb6, 0xa7, 0x1a, 0x91, 0x33, - 0xf3, 0xce, 0x01, 0xf2, 0x66, 0x20, 0x1b, 0x23, 0x62, 0xe8, 0xef, 0x00, 0xeb, 0xc2, 0x67, 0x78, - 0x57, 0x12, 0x4a, 0x8f, 0x3c, 0x47, 0xaa, 0x35, 0xa1, 0x36, 0x31, 0x3d, 0x3f, 0xb2, 0xc7, 0xd4, - 0x51, 0x65, 0xb9, 0x51, 0x5a, 0x7f, 0x55, 0x02, 0xa5, 0x40, 0x98, 0x54, 0x27, 0x0f, 0xe4, 0x4f, - 0xf4, 0x1e, 0x2c, 0xf3, 0x8e, 0x54, 0x79, 0xec, 0xf7, 0x4b, 0x63, 0xd7, 0xd5, 0xf5, 0xd3, 0x90, - 0x61, 0x22, 0xa0, 0xd0, 0x07, 0x50, 0x09, 0x1d, 0xcf, 0x67, 0x3b, 0xca, 0x1d, 0xdf, 0x28, 0x0d, - 0xaa, 0x5e, 0x5c, 0x24, 0x0a, 0x26, 0x0a, 0x2e, 0x05, 0xde, 0x55, 0xee, 0x76, 0x3e, 0xe0, 0xdd, - 0x04, 0x78, 0x17, 0xbd, 0x07, 0x6d, 0xe6, 0x0a, 0xa3, 0x2a, 0x3e, 0x9d, 0x54, 0x44, 0x39, 0xa8, - 0x67, 0x2d, 0xd9, 0x22, 0x29, 0x4c, 0x90, 0x1c, 0x2e, 0x3c, 0xa1, 0x30, 0xa8, 0x27, 0x52, 0xfc, - 0x78, 0xa5, 0x77, 0xed, 0x95, 0x56, 0x18, 0x15, 0x4d, 0x5e, 0x9c, 0x32, 0x28, 0x63, 0xe7, 0x67, - 0xfd, 0x21, 0x34, 0xd4, 0x9c, 0x3a, 0x72, 0xe9, 0x5b, 0x77, 0x4b, 0x13, 0xb5, 0x0b, 0x44, 0xc9, - 0xc9, 0xaf, 0xca, 0xef, 0x87, 0xf2, 0xfc, 0x4f, 0x91, 0xed, 0x2a, 0x87, 0x7a, 0x21, 0x64, 0xbb, - 0x45, 0xb2, 0x5d, 0x74, 0x00, 0x17, 0x9d, 0x68, 0xaa, 0x3a, 0xf8, 0xd7, 0x4b, 0x53, 0x80, 0x0a, - 0x7b, 0xd1, 0x14, 0x13, 0x0e, 0x84, 0x7e, 0xa3, 0xc1, 0xa6, 0x63, 0x7f, 0x34, 0xb1, 0x2d, 0xe9, - 0xc1, 0xd1, 0xe3, 0x80, 0x85, 0x8f, 0x3d, 0x27, 0x69, 0xd3, 0x0f, 0x4a, 0x53, 0xa8, 0xa4, 0xb1, - 0x10, 0x14, 0x93, 0x76, 0x6e, 0xfc, 0x51, 0x32, 0x8c, 0x7e, 0x05, 0xad, 0xbc, 0xbc, 0xcf, 0x5c, - 0xea, 0x44, 0xc7, 0x9d, 0xd5, 0xd2, 0x4f, 0xac, 0x52, 0x85, 0xad, 0x79, 0x15, 0x14, 0x24, 0x26, - 0x28, 0x37, 0xfa, 0xae, 0x1c, 0xe4, 0x99, 0x3a, 0x60, 0x21, 0x0b, 0xa6, 0xcc, 0x3c, 0xa4, 0xa3, - 0xc8, 0x0b, 0x3a, 0x8d, 0xd2, 0x99, 0x5a, 0x32, 0x6f, 0x26, 0xef, 0xab, 0x79, 0x34, 0x4c, 0x1a, - 0x6a, 0xe0, 0xae, 0xf8, 0x46, 0x6f, 0x00, 0x8c, 0xb2, 0x3e, 0x7a, 0x4d, 0xc4, 0xbe, 0x6b, 0xb3, - 0x58, 0xaf, 0xde, 0xce, 0x82, 0x9f, 0x4a, 0x20, 0xa3, 0x5c, 0xbb, 0x5c, 0x1d, 0xa9, 0x69, 0xfc, - 0x16, 0xd4, 0x79, 0x26, 0xcc, 0x35, 0x2d, 0x69, 0x39, 0xaf, 0x95, 0xab, 0x8a, 0x09, 0x34, 0xa4, - 0x6b, 0xe6, 0x8a, 0xb8, 0x5c, 0x8d, 0xa8, 0x9d, 0xa5, 0x46, 0x0c, 0xa0, 0x95, 0x77, 0xfa, 0x04, - 0xf9, 0x27, 0xa7, 0x93, 0x5e, 0x46, 0xd0, 0x9f, 0xc5, 0xfa, 0x7a, 0x7e, 0x8d, 0xa4, 0x59, 0x98, - 0xd9, 0x04, 0x5b, 0x21, 0xb3, 0x71, 0xce, 0xbf, 0x6a, 0xd0, 0x90, 0x8f, 0x32, 0x06, 0x75, 0xa8, - 0x3b, 0x62, 0x67, 0x2d, 0xf8, 0x3e, 0x81, 0xb6, 0x7a, 0xc8, 0x19, 0x4a, 0x20, 0x1e, 0xd6, 0x22, - 0x59, 0x2d, 0xd7, 0x77, 0x6f, 0x2c, 0x7c, 0x87, 0x28, 0x10, 0x8b, 0xe4, 0x66, 0x7c, 0xb3, 0xf8, - 0x7a, 0xb9, 0x08, 0x12, 0x13, 0x34, 0x9e, 0x5b, 0x88, 0xff, 0xa6, 0x01, 0x9a, 0xc7, 0x3b, 0x4f, - 0xb2, 0x9c, 0xc2, 0x8a, 0xe2, 0x15, 0xa9, 0xf2, 0x99, 0x8f, 0xae, 0x03, 0xa5, 0xf6, 0x5a, 0x92, - 0xbf, 0xc4, 0xba, 0x52, 0xef, 0xac, 0x09, 0x19, 0xfe, 0xbd, 0x06, 0xab, 0x2f, 0x6a, 0x0f, 0x1f, - 0x40, 0x45, 0xbd, 0x1b, 0x2f, 0x95, 0xce, 0x71, 0xb2, 0xa4, 0x6c, 0xe4, 0x5f, 0xb4, 0x31, 0x51, - 0x70, 0x38, 0x82, 0xd5, 0x3d, 0xe6, 0x7b, 0xa1, 0xad, 0xda, 0x04, 0x0b, 0x1a, 0xc5, 0x7b, 0xd7, - 0xc4, 0xbd, 0x5f, 0x5b, 0x78, 0xef, 0x85, 0x1b, 0xbf, 0xa2, 0x8e, 0xae, 0x5d, 0x38, 0xba, 0xe4, - 0xaa, 0x57, 0x87, 0x79, 0xd9, 0xb7, 0xbe, 0x98, 0x75, 0xb5, 0x2f, 0x67, 0x5d, 0xed, 0xdf, 0xb3, - 0xae, 0xf6, 0xf9, 0xd3, 0xee, 0x85, 0x2f, 0x9f, 0x76, 0x2f, 0xfc, 0xe3, 0x69, 0xf7, 0xc2, 0x8f, - 0x7b, 0x85, 0x0d, 0x71, 0xca, 0x57, 0xbc, 0xc3, 0x43, 0x7b, 0x64, 0x53, 0x47, 0x7d, 0xf7, 0xd5, - 0xbf, 0x53, 0xc5, 0xe6, 0x86, 0x15, 0xf1, 0x42, 0xfd, 0x9d, 0xff, 0x05, 0x00, 0x00, 0xff, 0xff, - 0xe9, 0x45, 0x85, 0xf5, 0x6a, 0x1d, 0x00, 0x00, + // 2439 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x5a, 0xcb, 0x6f, 0x1b, 0xd7, + 0xd5, 0xf7, 0xc8, 0x92, 0x48, 0x1e, 0x8a, 0x92, 0x78, 0x49, 0x27, 0x8c, 0x6c, 0x73, 0xec, 0x9b, + 0x0f, 0xb6, 0xbf, 0x45, 0x28, 0x58, 0x6d, 0x81, 0xc4, 0x88, 0x91, 0x90, 0x96, 0xdd, 0x30, 0xb1, + 0xe5, 0xe4, 0xda, 0x69, 0xd0, 0xe7, 0xe0, 0x92, 0x73, 0x25, 0x0f, 0x32, 0x9c, 0x99, 0xcc, 0x43, + 0x8e, 0xfa, 0x08, 0x82, 0x76, 0x51, 0xa0, 0xab, 0xec, 0xbb, 0xeb, 0xa2, 0xf9, 0x0f, 0xba, 0x2b, + 0xd0, 0x4d, 0xdb, 0x6c, 0x0a, 0x64, 0x59, 0x74, 0x31, 0x2d, 0xe8, 0x45, 0x81, 0x2e, 0xb5, 0xec, + 0xaa, 0xb8, 0x8f, 0x79, 0x91, 0x8c, 0xe3, 0x91, 0x0c, 0x64, 0x65, 0xce, 0xb9, 0xe7, 0xfe, 0xce, + 0xb9, 0xe7, 0x75, 0xcf, 0xb9, 0x32, 0x74, 0xc7, 0xee, 0xc4, 0x64, 0x1f, 0x6f, 0xdb, 0xcc, 0x31, + 0xb7, 0x0f, 0xaf, 0x8f, 0x58, 0x48, 0xaf, 0x8b, 0x8f, 0x9e, 0xe7, 0xbb, 0xa1, 0x8b, 0x5a, 0x72, + 0xbd, 0x27, 0x48, 0x6a, 0x7d, 0xab, 0x7d, 0xe0, 0x1e, 0xb8, 0x62, 0x7d, 0x9b, 0xff, 0x92, 0xac, + 0x5b, 0xfa, 0x81, 0xeb, 0x1e, 0xd8, 0x6c, 0x5b, 0x7c, 0x8d, 0xa2, 0xfd, 0xed, 0xd0, 0x9a, 0xb0, + 0x20, 0xa4, 0x13, 0x4f, 0x31, 0x74, 0xc7, 0x6e, 0x30, 0x71, 0x83, 0xed, 0x11, 0x0d, 0x58, 0x2a, + 0x6b, 0xec, 0x5a, 0x8e, 0x5c, 0xc7, 0xbf, 0xaf, 0x40, 0xed, 0x2e, 0x73, 0xcc, 0x7e, 0x10, 0xb0, + 0x10, 0xdd, 0x00, 0xe0, 0x42, 0x2d, 0xe7, 0xc0, 0xb0, 0xcc, 0x8e, 0x76, 0x49, 0xbb, 0xb6, 0x3c, + 0x38, 0x3f, 0x8d, 0xf5, 0xa5, 0xe1, 0xee, 0x71, 0xac, 0x37, 0x8f, 0xe8, 0xc4, 0xbe, 0x81, 0x33, + 0x0e, 0x4c, 0x6a, 0xea, 0x63, 0x68, 0xa2, 0xd7, 0xa0, 0x4a, 0x39, 0x08, 0xdf, 0xb9, 0x24, 0x76, + 0x76, 0xa7, 0xb1, 0x5e, 0x11, 0xc0, 0x62, 0xfb, 0x86, 0xdc, 0x9e, 0x30, 0x61, 0x52, 0x11, 0x3f, + 0x87, 0x26, 0xfa, 0x0e, 0x54, 0x3c, 0xd7, 0xb5, 0xf9, 0xce, 0xb3, 0x62, 0xe7, 0x85, 0x69, 0xac, + 0xaf, 0xbe, 0xeb, 0xba, 0xb6, 0xd8, 0xb8, 0x2e, 0x37, 0x2a, 0x16, 0x4c, 0x56, 0xf9, 0xaf, 0xa1, + 0x89, 0xae, 0xc0, 0x8a, 0xfb, 0xd8, 0x61, 0x7e, 0x67, 0xf9, 0x92, 0x76, 0xad, 0x36, 0xd8, 0x3c, + 0x8e, 0xf5, 0x35, 0xc9, 0x2a, 0xc8, 0x98, 0xc8, 0x65, 0xf4, 0x33, 0xa8, 0xd1, 0x89, 0x1b, 0x39, + 0xa1, 0x61, 0x39, 0x9d, 0x95, 0x4b, 0xda, 0xb5, 0xfa, 0xce, 0x4b, 0x3d, 0x69, 0x97, 0x1e, 0xb7, + 0x4b, 0x62, 0xe3, 0xde, 0x2d, 0xd7, 0x72, 0x06, 0xb7, 0xbe, 0x88, 0xf5, 0x33, 0xc7, 0xb1, 0xbe, + 0xa9, 0xd4, 0x4d, 0x76, 0xe2, 0xff, 0xc6, 0xfa, 0xd5, 0x03, 0x2b, 0x7c, 0x14, 0x8d, 0x7a, 0x63, + 0x77, 0xb2, 0xad, 0x0c, 0x2b, 0xff, 0x79, 0x25, 0x30, 0x3f, 0xdc, 0x0e, 0x8f, 0x3c, 0x16, 0x08, + 0x10, 0x52, 0x95, 0xdb, 0x86, 0x0e, 0xfa, 0x09, 0xac, 0x25, 0x06, 0xe3, 0xbe, 0xe9, 0xac, 0x0a, + 0xf9, 0x5b, 0x3d, 0xe9, 0xb8, 0x5e, 0xe2, 0xb8, 0xde, 0xc3, 0xc4, 0x71, 0x03, 0x5d, 0x29, 0xd0, + 0x2a, 0x9a, 0x9b, 0xef, 0xc6, 0x9f, 0xfd, 0x53, 0xd7, 0x48, 0x5d, 0x91, 0xf8, 0x16, 0x74, 0x08, + 0xcd, 0xc8, 0x33, 0x69, 0xc8, 0x4c, 0x23, 0x3b, 0x64, 0x45, 0x18, 0xe4, 0x6d, 0x0e, 0xf4, 0x8f, + 0x58, 0xbf, 0xf2, 0x0c, 0x5a, 0x0f, 0x9d, 0xf0, 0x38, 0xd6, 0x3b, 0x52, 0xe4, 0x1c, 0x20, 0x26, + 0x1b, 0x8a, 0xd6, 0x4f, 0xce, 0xf5, 0x73, 0x68, 0xd1, 0x43, 0x6a, 0xd9, 0x74, 0x64, 0x33, 0x23, + 0x74, 0x8d, 0x91, 0xeb, 0xfb, 0xee, 0xe3, 0x4e, 0x55, 0x48, 0xbe, 0x5b, 0x5a, 0xf2, 0x96, 0xb2, + 0xf6, 0x3c, 0x24, 0x26, 0xcd, 0x94, 0xfa, 0xd0, 0x1d, 0x08, 0x1a, 0xfa, 0x29, 0x20, 0x9f, 0x3d, + 0xa6, 0xbe, 0x69, 0xf4, 0xc7, 0xe3, 0x68, 0x12, 0xd9, 0x5c, 0xb7, 0x4e, 0x4d, 0x08, 0x7f, 0xa7, + 0xb4, 0xf0, 0x97, 0xa4, 0x70, 0x85, 0x48, 0x33, 0x44, 0x4c, 0x9a, 0x92, 0x98, 0x93, 0x82, 0xae, + 0xc3, 0x2a, 0xf5, 0x3c, 0x1e, 0xac, 0x20, 0x82, 0x75, 0x6b, 0x1a, 0xeb, 0x2b, 0x7d, 0xcf, 0x13, + 0xb1, 0xda, 0x50, 0xe7, 0x10, 0x0c, 0x98, 0xac, 0x50, 0xcf, 0x1b, 0x9a, 0xa8, 0x0f, 0x30, 0x16, + 0xe1, 0xeb, 0xd0, 0x09, 0xeb, 0xd4, 0x85, 0x9a, 0x78, 0x1a, 0xeb, 0xb5, 0x5b, 0x3c, 0xc8, 0xf7, + 0xe8, 0x84, 0x65, 0xe9, 0x95, 0x31, 0x62, 0x52, 0x13, 0x1f, 0x7c, 0x1d, 0xff, 0xad, 0x06, 0x75, + 0x79, 0x78, 0x99, 0xaa, 0x6f, 0xc2, 0x9a, 0xb4, 0x4f, 0x21, 0x59, 0x2f, 0xa6, 0xc9, 0xaa, 0xa2, + 0x27, 0xcf, 0x83, 0x49, 0x3d, 0xfd, 0x94, 0x4a, 0xe5, 0x92, 0x5d, 0xa6, 0xac, 0x50, 0xea, 0xae, + 0xca, 0xe9, 0xaf, 0xcf, 0xf9, 0xdb, 0xb0, 0x69, 0x05, 0x46, 0x10, 0x0a, 0x8f, 0xa9, 0x08, 0xe0, + 0x19, 0x5c, 0x1d, 0x9c, 0x3f, 0x8e, 0xf5, 0x17, 0xe5, 0xde, 0x59, 0x0e, 0x4c, 0xd6, 0xad, 0xe0, + 0x81, 0xa0, 0x28, 0x6f, 0xf2, 0xfc, 0xa7, 0x96, 0xcf, 0xd5, 0x58, 0xce, 0xe5, 0x3f, 0xb5, 0xfc, + 0x42, 0xfe, 0x4b, 0x16, 0x9e, 0xff, 0x7c, 0xc5, 0xfc, 0x66, 0xf3, 0xfa, 0x13, 0x00, 0x05, 0xe1, + 0x46, 0xa1, 0xca, 0xea, 0xa7, 0x48, 0xdf, 0x55, 0xd2, 0x9b, 0x05, 0xe9, 0x6e, 0x14, 0x96, 0x12, + 0xaf, 0xce, 0x7b, 0x3f, 0x0a, 0xd1, 0x6f, 0x35, 0x68, 0x8f, 0x7c, 0xcb, 0x3c, 0xe0, 0x79, 0x2a, + 0x4a, 0xaa, 0x5c, 0x13, 0xb9, 0xff, 0x54, 0x55, 0xf6, 0x94, 0x2a, 0xe7, 0x55, 0x84, 0x2c, 0x00, + 0x29, 0xa5, 0x14, 0x52, 0x08, 0x22, 0x2e, 0x65, 0x7d, 0x40, 0x26, 0xac, 0x67, 0x91, 0x27, 0xea, + 0x5e, 0xf5, 0x6b, 0xeb, 0xde, 0x65, 0xa5, 0xd7, 0xb9, 0xd9, 0xc8, 0xcd, 0x2a, 0x5f, 0x23, 0x25, + 0x8a, 0xda, 0x77, 0x04, 0xa8, 0x10, 0x59, 0x86, 0x4f, 0x43, 0x76, 0x82, 0x2a, 0xb0, 0xcb, 0xc6, + 0x59, 0x15, 0x98, 0x47, 0xc4, 0x64, 0x33, 0xc8, 0x85, 0x2b, 0xa1, 0xa1, 0x10, 0x3d, 0x53, 0x25, + 0x79, 0x18, 0xc0, 0xe9, 0x0a, 0xd0, 0x3c, 0x22, 0x26, 0x9b, 0x85, 0xc2, 0xcb, 0x3d, 0xff, 0xa9, + 0x06, 0x6d, 0xcb, 0x09, 0x99, 0xcf, 0x82, 0xb0, 0x50, 0xfe, 0x64, 0x5d, 0xb9, 0x57, 0x5a, 0xba, + 0x0a, 0x84, 0x14, 0xb3, 0x50, 0x00, 0x5b, 0x09, 0x39, 0x5f, 0x02, 0x8b, 0xf5, 0x6c, 0xed, 0x24, + 0xf5, 0xec, 0xf3, 0x15, 0x58, 0xe6, 0xcc, 0xf9, 0xcb, 0x5f, 0x2b, 0x71, 0xf9, 0xdf, 0x86, 0xfa, + 0xc4, 0x35, 0x23, 0x9b, 0x49, 0x1d, 0x96, 0x84, 0x0e, 0xff, 0x37, 0x8d, 0x75, 0xb8, 0x27, 0xc8, + 0x4a, 0x09, 0x24, 0xb7, 0xe7, 0x58, 0x31, 0x81, 0x49, 0xca, 0x81, 0xde, 0x81, 0xc6, 0x84, 0x5a, + 0x8e, 0x91, 0xb6, 0x2e, 0xb2, 0x01, 0xb9, 0x3a, 0x8d, 0xf5, 0xfa, 0x3d, 0x6a, 0x39, 0xb2, 0x7d, + 0x31, 0x8f, 0x63, 0xbd, 0xad, 0x90, 0xf2, 0xdc, 0x98, 0xd4, 0x27, 0x19, 0x13, 0x9a, 0xc0, 0x0b, + 0xfb, 0x96, 0x1f, 0x84, 0x46, 0x31, 0xa7, 0xd2, 0xb2, 0xf6, 0xea, 0x34, 0xd6, 0x5b, 0x77, 0x38, + 0xc7, 0x20, 0x97, 0x32, 0xe2, 0x98, 0x17, 0x25, 0xfa, 0xe2, 0xed, 0x98, 0xb4, 0xf6, 0xe7, 0x76, + 0x99, 0xe8, 0x23, 0x78, 0x31, 0x60, 0x63, 0xd7, 0x31, 0xe7, 0xe5, 0xad, 0x08, 0x79, 0x37, 0xa6, + 0xb1, 0xde, 0x7e, 0x20, 0x58, 0xe6, 0x04, 0x76, 0x55, 0xb4, 0x2f, 0x06, 0xc0, 0xa4, 0x1d, 0xcc, + 0xef, 0x9b, 0x75, 0xfc, 0xea, 0x09, 0x1c, 0x8f, 0x6e, 0x42, 0xc3, 0x67, 0x01, 0xf3, 0x0f, 0x99, + 0xb1, 0x1f, 0x39, 0x66, 0x20, 0x0a, 0xd6, 0xf2, 0xa0, 0x93, 0x99, 0xb8, 0xb0, 0x8c, 0xc9, 0x9a, + 0xfa, 0xbe, 0xc3, 0x3f, 0x91, 0x07, 0x20, 0x95, 0x34, 0x69, 0x48, 0x3b, 0xd5, 0x4b, 0x67, 0xaf, + 0xd5, 0x77, 0xfe, 0xbf, 0xb7, 0xa0, 0x63, 0xee, 0x09, 0x9d, 0x77, 0x69, 0x48, 0xb9, 0x6a, 0xf7, + 0xa8, 0xe7, 0x59, 0xce, 0xc1, 0xe0, 0x0a, 0xcf, 0x0e, 0xae, 0x70, 0xba, 0x9a, 0x2b, 0xca, 0x29, + 0x2e, 0x26, 0x35, 0x9a, 0xac, 0xe3, 0x5f, 0x6b, 0xd0, 0x5e, 0x84, 0x55, 0xe8, 0x78, 0xb5, 0x72, + 0x1d, 0xef, 0xb7, 0x01, 0xac, 0x20, 0xb1, 0xba, 0x08, 0xde, 0xea, 0xe0, 0x5c, 0xa6, 0x49, 0xb6, + 0x86, 0x49, 0xcd, 0x0a, 0x94, 0x13, 0xf0, 0xbf, 0x97, 0xa0, 0x71, 0xfb, 0xe3, 0x90, 0x39, 0x26, + 0x33, 0x0d, 0x7e, 0x3d, 0xa2, 0x75, 0x58, 0x4a, 0x84, 0x93, 0x25, 0xcb, 0x44, 0xbd, 0x54, 0x25, + 0x47, 0xdd, 0xe8, 0xad, 0x39, 0x3d, 0x9c, 0x54, 0x0f, 0x07, 0x5d, 0x07, 0x79, 0x50, 0x51, 0xbd, + 0x64, 0xe8, 0xb7, 0x73, 0x77, 0x64, 0xb2, 0x84, 0x89, 0x84, 0xe5, 0xe5, 0xe7, 0x75, 0x68, 0x58, + 0x81, 0x21, 0xaa, 0x82, 0xc1, 0x9d, 0x2a, 0x62, 0xbb, 0x9a, 0xf7, 0x5f, 0x61, 0x19, 0x93, 0xba, + 0x15, 0x0c, 0xf9, 0xa7, 0xc8, 0xf6, 0xef, 0x43, 0x33, 0x45, 0x35, 0x92, 0xbc, 0x97, 0xd1, 0xda, + 0x9b, 0xc6, 0xfa, 0x7a, 0x5f, 0x89, 0x49, 0xf3, 0xbf, 0x33, 0xa3, 0x8a, 0x91, 0x56, 0x82, 0x75, + 0x9a, 0xe7, 0x35, 0xd1, 0xdb, 0x80, 0x26, 0x96, 0x63, 0x44, 0x81, 0x69, 0x1c, 0x52, 0x3b, 0x62, + 0x86, 0xcd, 0xf6, 0xe5, 0xcd, 0xbc, 0x3c, 0xb8, 0x98, 0x15, 0xd9, 0x79, 0x1e, 0x4c, 0x36, 0x26, + 0x96, 0xf3, 0x7e, 0x60, 0x7e, 0x8f, 0x93, 0xee, 0x72, 0xca, 0x1f, 0x35, 0x40, 0x42, 0x95, 0x87, + 0x2e, 0xb7, 0xf3, 0x73, 0xf0, 0x78, 0xae, 0xcc, 0x2d, 0x95, 0x28, 0x73, 0xb9, 0xd6, 0xe8, 0xec, + 0xa5, 0xb3, 0xcf, 0xda, 0x1a, 0xe1, 0x43, 0x68, 0xbe, 0x1f, 0x30, 0x9f, 0x77, 0x72, 0x43, 0x33, + 0xd1, 0x3e, 0x9d, 0x97, 0xb4, 0xa7, 0xcf, 0x4b, 0xaf, 0x41, 0x95, 0x27, 0x92, 0x61, 0x99, 0x41, + 0x67, 0x49, 0x08, 0x15, 0xa7, 0x14, 0x60, 0xbb, 0x41, 0x76, 0xca, 0x84, 0x09, 0x93, 0x8a, 0x2d, + 0x04, 0x05, 0xf8, 0x0f, 0x1a, 0x9c, 0x97, 0x42, 0x07, 0x47, 0xf7, 0x39, 0x58, 0xdf, 0x31, 0xf3, + 0x29, 0xf3, 0xac, 0x2a, 0x9c, 0xd0, 0x5a, 0xaf, 0x42, 0xa2, 0x89, 0xb2, 0xd6, 0x33, 0x2b, 0xfe, + 0x27, 0x0d, 0x2e, 0xca, 0xeb, 0xfd, 0x1b, 0x52, 0xfd, 0x4d, 0xa8, 0x8d, 0x94, 0xfc, 0x44, 0x79, + 0x51, 0x58, 0x95, 0x52, 0x42, 0xfd, 0x66, 0xbe, 0x33, 0x92, 0x07, 0xc8, 0x36, 0xe1, 0x4f, 0x35, + 0x68, 0x71, 0xa7, 0x27, 0xc7, 0x28, 0xab, 0x78, 0x1f, 0x20, 0x43, 0x56, 0x8e, 0x2f, 0xa9, 0xc2, + 0xe7, 0x1a, 0xbc, 0x28, 0xdd, 0x9f, 0x4c, 0x6a, 0x99, 0x1a, 0xfd, 0x05, 0x6f, 0x0b, 0x25, 0xc7, + 0x8d, 0xe1, 0xcc, 0xcc, 0x23, 0x75, 0xbc, 0xc2, 0xef, 0xea, 0x41, 0x3a, 0xd8, 0x3c, 0xd3, 0xf0, + 0x83, 0x7f, 0x53, 0x01, 0x10, 0x69, 0xfb, 0x20, 0xa4, 0x61, 0x70, 0xd2, 0x26, 0xe4, 0x14, 0x6f, + 0x1e, 0x0e, 0xac, 0x87, 0x6e, 0x48, 0x6d, 0xd5, 0x68, 0x32, 0xd9, 0x79, 0xd4, 0x06, 0xdf, 0x2d, + 0xdd, 0xbe, 0xa9, 0x7e, 0xb9, 0x88, 0x86, 0x49, 0x43, 0x10, 0x06, 0xea, 0x1b, 0xfd, 0x52, 0x83, + 0x73, 0x92, 0xa5, 0xd0, 0xe0, 0x32, 0x53, 0xbd, 0x9e, 0xec, 0x95, 0x96, 0x7b, 0x21, 0x2f, 0x77, + 0x06, 0x14, 0x93, 0x96, 0xa0, 0xe7, 0xc7, 0x3c, 0x66, 0xa2, 0x11, 0x80, 0x64, 0xe7, 0x3e, 0x15, + 0x65, 0xbf, 0x26, 0xe7, 0xb2, 0x52, 0x82, 0x9b, 0x79, 0xc1, 0x1c, 0x09, 0x93, 0x9a, 0xf8, 0xe0, + 0x91, 0x84, 0x7e, 0xa4, 0xaa, 0x17, 0xf5, 0x7c, 0xd5, 0xa0, 0xf4, 0x4b, 0x8f, 0x02, 0xf9, 0x3a, + 0x41, 0x3d, 0x5f, 0xd5, 0x89, 0xbe, 0xe7, 0xf3, 0x13, 0xa8, 0xd8, 0xe7, 0xf8, 0x95, 0xd2, 0x27, + 0x90, 0xf8, 0xc5, 0x2c, 0x12, 0x12, 0x54, 0x16, 0x71, 0x19, 0x87, 0xd0, 0x2c, 0x0e, 0x21, 0x5c, + 0x54, 0xb5, 0xf4, 0x93, 0x8e, 0x14, 0xd5, 0x59, 0x34, 0xd5, 0x08, 0x89, 0x1b, 0xf9, 0xa1, 0x86, + 0xcb, 0x7d, 0x0c, 0xcd, 0x28, 0xb4, 0x6c, 0x2b, 0xa0, 0xa1, 0xe5, 0x3a, 0x7c, 0xf4, 0xb1, 0x5c, + 0x35, 0x4d, 0x9d, 0x58, 0xee, 0x1c, 0x20, 0x9f, 0x68, 0x32, 0x1a, 0x11, 0xa4, 0x3f, 0xd7, 0x61, + 0x43, 0xe4, 0x0c, 0x1f, 0xad, 0x02, 0x99, 0x91, 0xa7, 0xb8, 0x6a, 0x0d, 0xa8, 0x45, 0x86, 0xeb, + 0x85, 0xd6, 0x84, 0xda, 0x6a, 0x30, 0x18, 0x94, 0xd6, 0x5f, 0xb5, 0x40, 0x29, 0x10, 0x26, 0xd5, + 0xe8, 0xbe, 0xfc, 0x89, 0xde, 0x83, 0x65, 0x3e, 0x56, 0xab, 0x8c, 0xbd, 0x59, 0x1a, 0xbb, 0xae, + 0xdc, 0x4f, 0x03, 0x86, 0x89, 0x80, 0x42, 0x1f, 0xc0, 0x6a, 0x60, 0xbb, 0x1e, 0xbb, 0xae, 0xd2, + 0xf1, 0x8d, 0xd2, 0xa0, 0xea, 0xe5, 0x49, 0xa2, 0x60, 0xa2, 0xe0, 0x52, 0xe0, 0x1d, 0x95, 0x6e, + 0xa7, 0x03, 0xde, 0x49, 0x80, 0x77, 0xd0, 0x7b, 0xd0, 0x66, 0x8e, 0x08, 0xaa, 0xe2, 0xfb, 0xcf, + 0xaa, 0x68, 0x07, 0xf5, 0x6c, 0xae, 0x5c, 0xc4, 0x85, 0x09, 0x92, 0xe4, 0xc2, 0x3b, 0x10, 0x83, + 0x7a, 0xc2, 0xc5, 0xcd, 0x2b, 0xb3, 0x6b, 0xb7, 0xb4, 0xc2, 0xa8, 0x18, 0xf2, 0xc2, 0xca, 0xa0, + 0x82, 0x9d, 0xdb, 0xfa, 0x43, 0x68, 0xa8, 0x35, 0x65, 0x72, 0x99, 0x5b, 0x77, 0x4a, 0x0b, 0x6a, + 0x17, 0x04, 0x25, 0x96, 0x5f, 0x93, 0xdf, 0x0f, 0xa4, 0xfd, 0x67, 0x84, 0xed, 0xa8, 0x84, 0x7a, + 0x2e, 0xc2, 0x76, 0x8a, 0xc2, 0x76, 0xd0, 0x1e, 0x9c, 0xb5, 0xc3, 0x43, 0xf5, 0x0c, 0xf1, 0x7a, + 0x69, 0x11, 0xa0, 0xca, 0x5e, 0x78, 0x88, 0x09, 0x07, 0x42, 0xbf, 0xd2, 0xe0, 0x9c, 0x6d, 0x7d, + 0x14, 0x59, 0xa6, 0xcc, 0xe0, 0xf0, 0x91, 0xcf, 0x82, 0x47, 0xae, 0x9d, 0xbc, 0x35, 0xec, 0x95, + 0x16, 0xa1, 0x2e, 0x8d, 0x85, 0xa0, 0x98, 0xb4, 0x73, 0xf4, 0x87, 0x09, 0x19, 0xfd, 0x02, 0x5a, + 0x79, 0x7e, 0x8f, 0x39, 0xd4, 0x0e, 0x8f, 0xd4, 0xb3, 0xc3, 0xdd, 0xd2, 0x2a, 0x6c, 0xcd, 0xab, + 0xa0, 0x20, 0x31, 0x41, 0x39, 0xea, 0xbb, 0x92, 0xc8, 0xcb, 0x62, 0x9e, 0x77, 0xe4, 0x3a, 0x51, + 0xd0, 0x69, 0x9c, 0xae, 0x2c, 0xce, 0x01, 0x62, 0xb2, 0x99, 0xa3, 0x0d, 0x38, 0x89, 0xb7, 0x08, + 0xe9, 0x28, 0x4c, 0xc7, 0xa1, 0xeb, 0x77, 0xd6, 0x4b, 0xb7, 0x08, 0x52, 0xea, 0xb9, 0x99, 0xc1, + 0x5a, 0xa0, 0x61, 0x92, 0x0c, 0xe2, 0x77, 0xc4, 0x37, 0x7a, 0x03, 0x60, 0x9c, 0x3d, 0x21, 0x6c, + 0x88, 0xa2, 0x7b, 0x79, 0x1a, 0xeb, 0xd5, 0x5b, 0x59, 0xd5, 0x4d, 0x66, 0xfb, 0xdc, 0x4b, 0x41, + 0x75, 0xac, 0x5e, 0x07, 0xf0, 0x5b, 0x50, 0xe7, 0x57, 0x70, 0x6e, 0x5a, 0x4a, 0xe7, 0x08, 0xad, + 0x5c, 0x3b, 0x4e, 0xa0, 0x21, 0x6b, 0x42, 0xae, 0x7b, 0xcc, 0x35, 0xa7, 0xda, 0x49, 0x9a, 0x53, + 0x1f, 0x5a, 0xf9, 0x6a, 0x93, 0x20, 0xff, 0x70, 0xf6, 0xb6, 0xcd, 0x04, 0x6c, 0x4f, 0x63, 0x7d, + 0x23, 0xbf, 0x47, 0x8a, 0x59, 0x78, 0xa5, 0x0a, 0x69, 0x85, 0x2b, 0x95, 0xcb, 0xfc, 0x8b, 0x06, + 0x0d, 0xf9, 0x1e, 0x35, 0xa0, 0x36, 0x75, 0xc6, 0xec, 0xa4, 0x9d, 0xe6, 0x27, 0xd0, 0x56, 0x6f, + 0x58, 0x23, 0x09, 0xc4, 0xeb, 0x69, 0x28, 0xdb, 0xf4, 0xfa, 0xce, 0xd5, 0x85, 0x0f, 0x20, 0x05, + 0xc1, 0xe2, 0x56, 0x1d, 0xbc, 0x5c, 0x7c, 0xfb, 0x5d, 0x04, 0x89, 0x09, 0x9a, 0xcc, 0x6d, 0xc4, + 0x7f, 0xd5, 0x00, 0xcd, 0xe3, 0x9d, 0xe6, 0x96, 0x3e, 0x84, 0x8a, 0x92, 0x2b, 0xee, 0xe8, 0xa7, + 0x3e, 0x59, 0xf7, 0x95, 0xda, 0xeb, 0xc9, 0xc5, 0x29, 0xf6, 0x95, 0x7a, 0xa5, 0x4e, 0x84, 0xe1, + 0xdf, 0x69, 0xb0, 0xf6, 0xbc, 0xce, 0xf0, 0x01, 0xac, 0xaa, 0x57, 0xf7, 0xa5, 0xd2, 0x97, 0xab, + 0xec, 0x65, 0x1b, 0xf9, 0xbf, 0x07, 0x60, 0xa2, 0xe0, 0x70, 0x08, 0x6b, 0xbb, 0xcc, 0x73, 0x03, + 0x4b, 0xcd, 0x27, 0x26, 0x34, 0x8a, 0x7e, 0xd7, 0x84, 0xdf, 0x2f, 0x2f, 0xf4, 0x7b, 0xc1, 0xe3, + 0x17, 0x94, 0xe9, 0xda, 0x05, 0xd3, 0x25, 0xae, 0x5e, 0x1b, 0xe5, 0x9d, 0xfc, 0x9f, 0x65, 0x68, + 0xf4, 0xa3, 0xb1, 0x28, 0x7e, 0xd4, 0xa7, 0x93, 0x00, 0x5d, 0x4b, 0xff, 0xd6, 0x25, 0x2d, 0xd3, + 0xfc, 0xca, 0x3f, 0x71, 0xfd, 0x18, 0x3a, 0x54, 0x6e, 0x35, 0xcc, 0xc8, 0x97, 0x95, 0x4d, 0x3e, + 0x21, 0x06, 0x6a, 0x34, 0x7a, 0xf9, 0x38, 0xd6, 0x75, 0xb5, 0xf7, 0x2b, 0x38, 0x31, 0x79, 0x41, + 0x2d, 0xed, 0xaa, 0x15, 0xf9, 0x7a, 0x19, 0x70, 0x4b, 0x8f, 0xa2, 0xfd, 0x7d, 0xe6, 0xab, 0xa6, + 0xeb, 0xc4, 0x6d, 0x8c, 0x44, 0xc1, 0x44, 0xc1, 0xf1, 0x5e, 0x6e, 0x1c, 0x05, 0x9e, 0x6a, 0xbb, + 0x4e, 0xdc, 0xcb, 0x71, 0x0c, 0x4c, 0x04, 0x14, 0x87, 0x0c, 0x42, 0xe6, 0xa9, 0x86, 0xeb, 0x66, + 0xe9, 0x98, 0xa8, 0x27, 0xf5, 0x85, 0x71, 0x48, 0xfe, 0x0f, 0xda, 0x83, 0x96, 0xe7, 0x5b, 0x63, + 0xf1, 0x26, 0x2a, 0x4d, 0xc7, 0x37, 0xa8, 0xc7, 0xad, 0x6e, 0x76, 0xa9, 0x2d, 0x60, 0xc2, 0xa4, + 0x29, 0xa8, 0x77, 0x14, 0xf1, 0xe1, 0x91, 0xc7, 0x50, 0x0f, 0xaa, 0x66, 0x14, 0x8e, 0x1f, 0x71, + 0xcf, 0x56, 0x66, 0xdf, 0x09, 0x93, 0x15, 0x4c, 0x2a, 0xe2, 0xe7, 0xd0, 0xe4, 0xcd, 0xde, 0xc8, + 0x32, 0xe7, 0x3d, 0x5b, 0x15, 0x7b, 0x73, 0xcd, 0xde, 0x22, 0x2e, 0x4c, 0xd0, 0xc8, 0x32, 0x67, + 0x3c, 0x3a, 0x78, 0xeb, 0x8b, 0x69, 0x57, 0xfb, 0x72, 0xda, 0xd5, 0xfe, 0x35, 0xed, 0x6a, 0x9f, + 0x3d, 0xe9, 0x9e, 0xf9, 0xf2, 0x49, 0xf7, 0xcc, 0xdf, 0x9f, 0x74, 0xcf, 0xfc, 0xa0, 0x57, 0xb0, + 0x14, 0x8f, 0xef, 0x57, 0xdc, 0xfd, 0x7d, 0x6b, 0x6c, 0x51, 0x5b, 0x7d, 0x6f, 0xab, 0xff, 0x3c, + 0x21, 0xac, 0x36, 0x5a, 0x15, 0x7f, 0x4c, 0xfa, 0xd6, 0xff, 0x02, 0x00, 0x00, 0xff, 0xff, 0xe9, + 0x41, 0x9f, 0x7b, 0x58, 0x21, 0x00, 0x00, } func (m *LendAsset) Marshal() (dAtA []byte, err error) { @@ -1423,8 +1553,15 @@ func (m *LendAsset) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l - if m.AppId != 0 { - i = encodeVarintLend(dAtA, i, uint64(m.AppId)) + if len(m.CPoolName) > 0 { + i -= len(m.CPoolName) + copy(dAtA[i:], m.CPoolName) + i = encodeVarintLend(dAtA, i, uint64(len(m.CPoolName))) + i-- + dAtA[i] = 0x5a + } + if m.AppID != 0 { + i = encodeVarintLend(dAtA, i, uint64(m.AppID)) i-- dAtA[i] = 0x50 } @@ -1483,13 +1620,13 @@ func (m *LendAsset) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x22 } - if m.PoolId != 0 { - i = encodeVarintLend(dAtA, i, uint64(m.PoolId)) + if m.PoolID != 0 { + i = encodeVarintLend(dAtA, i, uint64(m.PoolID)) i-- dAtA[i] = 0x18 } - if m.AssetId != 0 { - i = encodeVarintLend(dAtA, i, uint64(m.AssetId)) + if m.AssetID != 0 { + i = encodeVarintLend(dAtA, i, uint64(m.AssetID)) i-- dAtA[i] = 0x10 } @@ -1521,6 +1658,13 @@ func (m *BorrowAsset) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if len(m.CPoolName) > 0 { + i -= len(m.CPoolName) + copy(dAtA[i:], m.CPoolName) + i = encodeVarintLend(dAtA, i, uint64(len(m.CPoolName))) + i-- + dAtA[i] = 0x62 + } { size := m.Interest_Accumulated.Size() i -= size @@ -1648,16 +1792,28 @@ func (m *Pool) MarshalToSizedBuffer(dAtA []byte) (int, error) { i = encodeVarintLend(dAtA, i, uint64(size)) } i-- - dAtA[i] = 0x32 + dAtA[i] = 0x42 } } - if m.SecondBridgedAssetId != 0 { - i = encodeVarintLend(dAtA, i, uint64(m.SecondBridgedAssetId)) + if m.ReserveFunds != 0 { + i = encodeVarintLend(dAtA, i, uint64(m.ReserveFunds)) + i-- + dAtA[i] = 0x38 + } + if len(m.CPoolName) > 0 { + i -= len(m.CPoolName) + copy(dAtA[i:], m.CPoolName) + i = encodeVarintLend(dAtA, i, uint64(len(m.CPoolName))) + i-- + dAtA[i] = 0x32 + } + if m.SecondBridgedAssetID != 0 { + i = encodeVarintLend(dAtA, i, uint64(m.SecondBridgedAssetID)) i-- dAtA[i] = 0x28 } - if m.FirstBridgedAssetId != 0 { - i = encodeVarintLend(dAtA, i, uint64(m.FirstBridgedAssetId)) + if m.FirstBridgedAssetID != 0 { + i = encodeVarintLend(dAtA, i, uint64(m.FirstBridgedAssetID)) i-- dAtA[i] = 0x20 } @@ -1673,8 +1829,8 @@ func (m *Pool) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x12 } - if m.PoolId != 0 { - i = encodeVarintLend(dAtA, i, uint64(m.PoolId)) + if m.PoolID != 0 { + i = encodeVarintLend(dAtA, i, uint64(m.PoolID)) i-- dAtA[i] = 0x8 } @@ -1711,8 +1867,8 @@ func (m *AssetDataPoolMapping) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x10 } - if m.AssetId != 0 { - i = encodeVarintLend(dAtA, i, uint64(m.AssetId)) + if m.AssetID != 0 { + i = encodeVarintLend(dAtA, i, uint64(m.AssetID)) i-- dAtA[i] = 0x8 } @@ -1744,8 +1900,8 @@ func (m *Extended_Pair) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x30 } - if m.AssetOutPoolId != 0 { - i = encodeVarintLend(dAtA, i, uint64(m.AssetOutPoolId)) + if m.AssetOutPoolID != 0 { + i = encodeVarintLend(dAtA, i, uint64(m.AssetOutPoolID)) i-- dAtA[i] = 0x28 } @@ -1797,10 +1953,10 @@ func (m *AssetToPairMapping) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l - if len(m.PairId) > 0 { - dAtA8 := make([]byte, len(m.PairId)*10) + if len(m.PairID) > 0 { + dAtA8 := make([]byte, len(m.PairID)*10) var j7 int - for _, num := range m.PairId { + for _, num := range m.PairID { for num >= 1<<7 { dAtA8[j7] = uint8(uint64(num)&0x7f | 0x80) num >>= 7 @@ -1815,13 +1971,13 @@ func (m *AssetToPairMapping) MarshalToSizedBuffer(dAtA []byte) (int, error) { i-- dAtA[i] = 0x1a } - if m.PoolId != 0 { - i = encodeVarintLend(dAtA, i, uint64(m.PoolId)) + if m.PoolID != 0 { + i = encodeVarintLend(dAtA, i, uint64(m.PoolID)) i-- dAtA[i] = 0x10 } - if m.AssetId != 0 { - i = encodeVarintLend(dAtA, i, uint64(m.AssetId)) + if m.AssetID != 0 { + i = encodeVarintLend(dAtA, i, uint64(m.AssetID)) i-- dAtA[i] = 0x8 } @@ -1848,10 +2004,10 @@ func (m *UserLendIdMapping) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l - if len(m.LendIds) > 0 { - dAtA10 := make([]byte, len(m.LendIds)*10) + if len(m.LendIDs) > 0 { + dAtA10 := make([]byte, len(m.LendIDs)*10) var j9 int - for _, num := range m.LendIds { + for _, num := range m.LendIDs { for num >= 1<<7 { dAtA10[j9] = uint8(uint64(num)&0x7f | 0x80) num >>= 7 @@ -1896,10 +2052,10 @@ func (m *LendIdByOwnerAndPoolMapping) MarshalToSizedBuffer(dAtA []byte) (int, er _ = i var l int _ = l - if len(m.LendIds) > 0 { - dAtA12 := make([]byte, len(m.LendIds)*10) + if len(m.LendIDs) > 0 { + dAtA12 := make([]byte, len(m.LendIDs)*10) var j11 int - for _, num := range m.LendIds { + for _, num := range m.LendIDs { for num >= 1<<7 { dAtA12[j11] = uint8(uint64(num)&0x7f | 0x80) num >>= 7 @@ -1914,8 +2070,8 @@ func (m *LendIdByOwnerAndPoolMapping) MarshalToSizedBuffer(dAtA []byte) (int, er i-- dAtA[i] = 0x1a } - if m.PoolId != 0 { - i = encodeVarintLend(dAtA, i, uint64(m.PoolId)) + if m.PoolID != 0 { + i = encodeVarintLend(dAtA, i, uint64(m.PoolID)) i-- dAtA[i] = 0x10 } @@ -1949,10 +2105,10 @@ func (m *BorrowIdByOwnerAndPoolMapping) MarshalToSizedBuffer(dAtA []byte) (int, _ = i var l int _ = l - if len(m.BorrowIds) > 0 { - dAtA14 := make([]byte, len(m.BorrowIds)*10) + if len(m.BorrowIDs) > 0 { + dAtA14 := make([]byte, len(m.BorrowIDs)*10) var j13 int - for _, num := range m.BorrowIds { + for _, num := range m.BorrowIDs { for num >= 1<<7 { dAtA14[j13] = uint8(uint64(num)&0x7f | 0x80) num >>= 7 @@ -1967,8 +2123,8 @@ func (m *BorrowIdByOwnerAndPoolMapping) MarshalToSizedBuffer(dAtA []byte) (int, i-- dAtA[i] = 0x1a } - if m.PoolId != 0 { - i = encodeVarintLend(dAtA, i, uint64(m.PoolId)) + if m.PoolID != 0 { + i = encodeVarintLend(dAtA, i, uint64(m.PoolID)) i-- dAtA[i] = 0x10 } @@ -2002,10 +2158,10 @@ func (m *UserBorrowIdMapping) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l - if len(m.BorrowIds) > 0 { - dAtA16 := make([]byte, len(m.BorrowIds)*10) + if len(m.BorrowIDs) > 0 { + dAtA16 := make([]byte, len(m.BorrowIDs)*10) var j15 int - for _, num := range m.BorrowIds { + for _, num := range m.BorrowIDs { for num >= 1<<7 { dAtA16[j15] = uint8(uint64(num)&0x7f | 0x80) num >>= 7 @@ -2166,13 +2322,13 @@ func (m *AssetStats) MarshalToSizedBuffer(dAtA []byte) (int, error) { } i-- dAtA[i] = 0x1a - if m.AssetId != 0 { - i = encodeVarintLend(dAtA, i, uint64(m.AssetId)) + if m.AssetID != 0 { + i = encodeVarintLend(dAtA, i, uint64(m.AssetID)) i-- dAtA[i] = 0x10 } - if m.PoolId != 0 { - i = encodeVarintLend(dAtA, i, uint64(m.PoolId)) + if m.PoolID != 0 { + i = encodeVarintLend(dAtA, i, uint64(m.PoolID)) i-- dAtA[i] = 0x8 } @@ -2199,10 +2355,10 @@ func (m *AssetRatesStats) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l - if m.CAssetId != 0 { - i = encodeVarintLend(dAtA, i, uint64(m.CAssetId)) + if m.CAssetID != 0 { + i = encodeVarintLend(dAtA, i, uint64(m.CAssetID)) i-- - dAtA[i] = 0x70 + dAtA[i] = 0x78 } { size := m.ReserveFactor.Size() @@ -2213,6 +2369,16 @@ func (m *AssetRatesStats) MarshalToSizedBuffer(dAtA []byte) (int, error) { i = encodeVarintLend(dAtA, i, uint64(size)) } i-- + dAtA[i] = 0x72 + { + size := m.LiquidationBonus.Size() + i -= size + if _, err := m.LiquidationBonus.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintLend(dAtA, i, uint64(size)) + } + i-- dAtA[i] = 0x6a { size := m.LiquidationPenalty.Size() @@ -2324,8 +2490,8 @@ func (m *AssetRatesStats) MarshalToSizedBuffer(dAtA []byte) (int, error) { } i-- dAtA[i] = 0x12 - if m.AssetId != 0 { - i = encodeVarintLend(dAtA, i, uint64(m.AssetId)) + if m.AssetID != 0 { + i = encodeVarintLend(dAtA, i, uint64(m.AssetID)) i-- dAtA[i] = 0x8 } @@ -2352,10 +2518,10 @@ func (m *LendMapping) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l - if len(m.LendIds) > 0 { - dAtA20 := make([]byte, len(m.LendIds)*10) + if len(m.LendIDs) > 0 { + dAtA20 := make([]byte, len(m.LendIDs)*10) var j19 int - for _, num := range m.LendIds { + for _, num := range m.LendIDs { for num >= 1<<7 { dAtA20[j19] = uint8(uint64(num)&0x7f | 0x80) num >>= 7 @@ -2393,10 +2559,10 @@ func (m *BorrowMapping) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l - if len(m.BorrowIds) > 0 { - dAtA22 := make([]byte, len(m.BorrowIds)*10) + if len(m.BorrowIDs) > 0 { + dAtA22 := make([]byte, len(m.BorrowIDs)*10) var j21 int - for _, num := range m.BorrowIds { + for _, num := range m.BorrowIDs { for num >= 1<<7 { dAtA22[j21] = uint8(uint64(num)&0x7f | 0x80) num >>= 7 @@ -2434,10 +2600,10 @@ func (m *StableBorrowMapping) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l - if len(m.StableBorrowIds) > 0 { - dAtA24 := make([]byte, len(m.StableBorrowIds)*10) + if len(m.StableBorrowIDs) > 0 { + dAtA24 := make([]byte, len(m.StableBorrowIDs)*10) var j23 int - for _, num := range m.StableBorrowIds { + for _, num := range m.StableBorrowIDs { for num >= 1<<7 { dAtA24[j23] = uint8(uint64(num)&0x7f | 0x80) num >>= 7 @@ -2489,8 +2655,8 @@ func (m *ModuleBalance) MarshalToSizedBuffer(dAtA []byte) (int, error) { dAtA[i] = 0x12 } } - if m.PoolId != 0 { - i = encodeVarintLend(dAtA, i, uint64(m.PoolId)) + if m.PoolID != 0 { + i = encodeVarintLend(dAtA, i, uint64(m.PoolID)) i-- dAtA[i] = 0x8 } @@ -2527,8 +2693,8 @@ func (m *ModuleBalanceStats) MarshalToSizedBuffer(dAtA []byte) (int, error) { } i-- dAtA[i] = 0x12 - if m.AssetId != 0 { - i = encodeVarintLend(dAtA, i, uint64(m.AssetId)) + if m.AssetID != 0 { + i = encodeVarintLend(dAtA, i, uint64(m.AssetID)) i-- dAtA[i] = 0x8 } @@ -2565,8 +2731,8 @@ func (m *BalanceStats) MarshalToSizedBuffer(dAtA []byte) (int, error) { } i-- dAtA[i] = 0x12 - if m.AssetId != 0 { - i = encodeVarintLend(dAtA, i, uint64(m.AssetId)) + if m.AssetID != 0 { + i = encodeVarintLend(dAtA, i, uint64(m.AssetID)) i-- dAtA[i] = 0x8 } @@ -2610,6 +2776,84 @@ func (m *DepositStats) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *AuctionParams) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *AuctionParams) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *AuctionParams) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.BidDurationSeconds != 0 { + i = encodeVarintLend(dAtA, i, uint64(m.BidDurationSeconds)) + i-- + dAtA[i] = 0x40 + } + if m.DutchId != 0 { + i = encodeVarintLend(dAtA, i, uint64(m.DutchId)) + i-- + dAtA[i] = 0x38 + } + if m.PriceFunctionType != 0 { + i = encodeVarintLend(dAtA, i, uint64(m.PriceFunctionType)) + i-- + dAtA[i] = 0x30 + } + { + size := m.Step.Size() + i -= size + if _, err := m.Step.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintLend(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x2a + { + size := m.Cusp.Size() + i -= size + if _, err := m.Cusp.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintLend(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + { + size := m.Buffer.Size() + i -= size + if _, err := m.Buffer.MarshalTo(dAtA[i:]); err != nil { + return 0, err + } + i = encodeVarintLend(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + if m.AuctionDurationSeconds != 0 { + i = encodeVarintLend(dAtA, i, uint64(m.AuctionDurationSeconds)) + i-- + dAtA[i] = 0x10 + } + if m.AppId != 0 { + i = encodeVarintLend(dAtA, i, uint64(m.AppId)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + func encodeVarintLend(dAtA []byte, offset int, v uint64) int { offset -= sovLend(v) base := offset @@ -2630,11 +2874,11 @@ func (m *LendAsset) Size() (n int) { if m.ID != 0 { n += 1 + sovLend(uint64(m.ID)) } - if m.AssetId != 0 { - n += 1 + sovLend(uint64(m.AssetId)) + if m.AssetID != 0 { + n += 1 + sovLend(uint64(m.AssetID)) } - if m.PoolId != 0 { - n += 1 + sovLend(uint64(m.PoolId)) + if m.PoolID != 0 { + n += 1 + sovLend(uint64(m.PoolID)) } l = len(m.Owner) if l > 0 { @@ -2650,8 +2894,12 @@ func (m *LendAsset) Size() (n int) { n += 1 + l + sovLend(uint64(l)) l = m.Reward_Accumulated.Size() n += 1 + l + sovLend(uint64(l)) - if m.AppId != 0 { - n += 1 + sovLend(uint64(m.AppId)) + if m.AppID != 0 { + n += 1 + sovLend(uint64(m.AppID)) + } + l = len(m.CPoolName) + if l > 0 { + n += 1 + l + sovLend(uint64(l)) } return n } @@ -2688,6 +2936,10 @@ func (m *BorrowAsset) Size() (n int) { n += 1 + l + sovLend(uint64(l)) l = m.Interest_Accumulated.Size() n += 1 + l + sovLend(uint64(l)) + l = len(m.CPoolName) + if l > 0 { + n += 1 + l + sovLend(uint64(l)) + } return n } @@ -2697,8 +2949,8 @@ func (m *Pool) Size() (n int) { } var l int _ = l - if m.PoolId != 0 { - n += 1 + sovLend(uint64(m.PoolId)) + if m.PoolID != 0 { + n += 1 + sovLend(uint64(m.PoolID)) } l = len(m.ModuleName) if l > 0 { @@ -2707,11 +2959,18 @@ func (m *Pool) Size() (n int) { if m.MainAssetId != 0 { n += 1 + sovLend(uint64(m.MainAssetId)) } - if m.FirstBridgedAssetId != 0 { - n += 1 + sovLend(uint64(m.FirstBridgedAssetId)) + if m.FirstBridgedAssetID != 0 { + n += 1 + sovLend(uint64(m.FirstBridgedAssetID)) + } + if m.SecondBridgedAssetID != 0 { + n += 1 + sovLend(uint64(m.SecondBridgedAssetID)) + } + l = len(m.CPoolName) + if l > 0 { + n += 1 + l + sovLend(uint64(l)) } - if m.SecondBridgedAssetId != 0 { - n += 1 + sovLend(uint64(m.SecondBridgedAssetId)) + if m.ReserveFunds != 0 { + n += 1 + sovLend(uint64(m.ReserveFunds)) } if len(m.AssetData) > 0 { for _, e := range m.AssetData { @@ -2728,8 +2987,8 @@ func (m *AssetDataPoolMapping) Size() (n int) { } var l int _ = l - if m.AssetId != 0 { - n += 1 + sovLend(uint64(m.AssetId)) + if m.AssetID != 0 { + n += 1 + sovLend(uint64(m.AssetID)) } if m.IsBridged { n += 2 @@ -2755,8 +3014,8 @@ func (m *Extended_Pair) Size() (n int) { if m.IsInterPool { n += 2 } - if m.AssetOutPoolId != 0 { - n += 1 + sovLend(uint64(m.AssetOutPoolId)) + if m.AssetOutPoolID != 0 { + n += 1 + sovLend(uint64(m.AssetOutPoolID)) } if m.MinUsdValueLeft != 0 { n += 1 + sovLend(uint64(m.MinUsdValueLeft)) @@ -2770,15 +3029,15 @@ func (m *AssetToPairMapping) Size() (n int) { } var l int _ = l - if m.AssetId != 0 { - n += 1 + sovLend(uint64(m.AssetId)) + if m.AssetID != 0 { + n += 1 + sovLend(uint64(m.AssetID)) } - if m.PoolId != 0 { - n += 1 + sovLend(uint64(m.PoolId)) + if m.PoolID != 0 { + n += 1 + sovLend(uint64(m.PoolID)) } - if len(m.PairId) > 0 { + if len(m.PairID) > 0 { l = 0 - for _, e := range m.PairId { + for _, e := range m.PairID { l += sovLend(uint64(e)) } n += 1 + sovLend(uint64(l)) + l @@ -2796,9 +3055,9 @@ func (m *UserLendIdMapping) Size() (n int) { if l > 0 { n += 1 + l + sovLend(uint64(l)) } - if len(m.LendIds) > 0 { + if len(m.LendIDs) > 0 { l = 0 - for _, e := range m.LendIds { + for _, e := range m.LendIDs { l += sovLend(uint64(e)) } n += 1 + sovLend(uint64(l)) + l @@ -2816,12 +3075,12 @@ func (m *LendIdByOwnerAndPoolMapping) Size() (n int) { if l > 0 { n += 1 + l + sovLend(uint64(l)) } - if m.PoolId != 0 { - n += 1 + sovLend(uint64(m.PoolId)) + if m.PoolID != 0 { + n += 1 + sovLend(uint64(m.PoolID)) } - if len(m.LendIds) > 0 { + if len(m.LendIDs) > 0 { l = 0 - for _, e := range m.LendIds { + for _, e := range m.LendIDs { l += sovLend(uint64(e)) } n += 1 + sovLend(uint64(l)) + l @@ -2839,12 +3098,12 @@ func (m *BorrowIdByOwnerAndPoolMapping) Size() (n int) { if l > 0 { n += 1 + l + sovLend(uint64(l)) } - if m.PoolId != 0 { - n += 1 + sovLend(uint64(m.PoolId)) + if m.PoolID != 0 { + n += 1 + sovLend(uint64(m.PoolID)) } - if len(m.BorrowIds) > 0 { + if len(m.BorrowIDs) > 0 { l = 0 - for _, e := range m.BorrowIds { + for _, e := range m.BorrowIDs { l += sovLend(uint64(e)) } n += 1 + sovLend(uint64(l)) + l @@ -2862,9 +3121,9 @@ func (m *UserBorrowIdMapping) Size() (n int) { if l > 0 { n += 1 + l + sovLend(uint64(l)) } - if len(m.BorrowIds) > 0 { + if len(m.BorrowIDs) > 0 { l = 0 - for _, e := range m.BorrowIds { + for _, e := range m.BorrowIDs { l += sovLend(uint64(e)) } n += 1 + sovLend(uint64(l)) + l @@ -2897,11 +3156,11 @@ func (m *AssetStats) Size() (n int) { } var l int _ = l - if m.PoolId != 0 { - n += 1 + sovLend(uint64(m.PoolId)) + if m.PoolID != 0 { + n += 1 + sovLend(uint64(m.PoolID)) } - if m.AssetId != 0 { - n += 1 + sovLend(uint64(m.AssetId)) + if m.AssetID != 0 { + n += 1 + sovLend(uint64(m.AssetID)) } l = m.TotalBorrowed.Size() n += 1 + l + sovLend(uint64(l)) @@ -2926,8 +3185,8 @@ func (m *AssetRatesStats) Size() (n int) { } var l int _ = l - if m.AssetId != 0 { - n += 1 + sovLend(uint64(m.AssetId)) + if m.AssetID != 0 { + n += 1 + sovLend(uint64(m.AssetID)) } l = m.UOptimal.Size() n += 1 + l + sovLend(uint64(l)) @@ -2952,10 +3211,12 @@ func (m *AssetRatesStats) Size() (n int) { n += 1 + l + sovLend(uint64(l)) l = m.LiquidationPenalty.Size() n += 1 + l + sovLend(uint64(l)) + l = m.LiquidationBonus.Size() + n += 1 + l + sovLend(uint64(l)) l = m.ReserveFactor.Size() n += 1 + l + sovLend(uint64(l)) - if m.CAssetId != 0 { - n += 1 + sovLend(uint64(m.CAssetId)) + if m.CAssetID != 0 { + n += 1 + sovLend(uint64(m.CAssetID)) } return n } @@ -2966,9 +3227,9 @@ func (m *LendMapping) Size() (n int) { } var l int _ = l - if len(m.LendIds) > 0 { + if len(m.LendIDs) > 0 { l = 0 - for _, e := range m.LendIds { + for _, e := range m.LendIDs { l += sovLend(uint64(e)) } n += 1 + sovLend(uint64(l)) + l @@ -2982,9 +3243,9 @@ func (m *BorrowMapping) Size() (n int) { } var l int _ = l - if len(m.BorrowIds) > 0 { + if len(m.BorrowIDs) > 0 { l = 0 - for _, e := range m.BorrowIds { + for _, e := range m.BorrowIDs { l += sovLend(uint64(e)) } n += 1 + sovLend(uint64(l)) + l @@ -2998,9 +3259,9 @@ func (m *StableBorrowMapping) Size() (n int) { } var l int _ = l - if len(m.StableBorrowIds) > 0 { + if len(m.StableBorrowIDs) > 0 { l = 0 - for _, e := range m.StableBorrowIds { + for _, e := range m.StableBorrowIDs { l += sovLend(uint64(e)) } n += 1 + sovLend(uint64(l)) + l @@ -3014,8 +3275,8 @@ func (m *ModuleBalance) Size() (n int) { } var l int _ = l - if m.PoolId != 0 { - n += 1 + sovLend(uint64(m.PoolId)) + if m.PoolID != 0 { + n += 1 + sovLend(uint64(m.PoolID)) } if len(m.ModuleBalanceStats) > 0 { for _, e := range m.ModuleBalanceStats { @@ -3032,8 +3293,8 @@ func (m *ModuleBalanceStats) Size() (n int) { } var l int _ = l - if m.AssetId != 0 { - n += 1 + sovLend(uint64(m.AssetId)) + if m.AssetID != 0 { + n += 1 + sovLend(uint64(m.AssetID)) } l = m.Balance.Size() n += 1 + l + sovLend(uint64(l)) @@ -3046,8 +3307,8 @@ func (m *BalanceStats) Size() (n int) { } var l int _ = l - if m.AssetId != 0 { - n += 1 + sovLend(uint64(m.AssetId)) + if m.AssetID != 0 { + n += 1 + sovLend(uint64(m.AssetID)) } l = m.Amount.Size() n += 1 + l + sovLend(uint64(l)) @@ -3069,6 +3330,36 @@ func (m *DepositStats) Size() (n int) { return n } +func (m *AuctionParams) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.AppId != 0 { + n += 1 + sovLend(uint64(m.AppId)) + } + if m.AuctionDurationSeconds != 0 { + n += 1 + sovLend(uint64(m.AuctionDurationSeconds)) + } + l = m.Buffer.Size() + n += 1 + l + sovLend(uint64(l)) + l = m.Cusp.Size() + n += 1 + l + sovLend(uint64(l)) + l = m.Step.Size() + n += 1 + l + sovLend(uint64(l)) + if m.PriceFunctionType != 0 { + n += 1 + sovLend(uint64(m.PriceFunctionType)) + } + if m.DutchId != 0 { + n += 1 + sovLend(uint64(m.DutchId)) + } + if m.BidDurationSeconds != 0 { + n += 1 + sovLend(uint64(m.BidDurationSeconds)) + } + return n +} + func sovLend(x uint64) (n int) { return (math_bits.Len64(x|1) + 6) / 7 } @@ -3125,9 +3416,9 @@ func (m *LendAsset) Unmarshal(dAtA []byte) error { } case 2: if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field AssetId", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field AssetID", wireType) } - m.AssetId = 0 + m.AssetID = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowLend @@ -3137,16 +3428,16 @@ func (m *LendAsset) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.AssetId |= uint64(b&0x7F) << shift + m.AssetID |= uint64(b&0x7F) << shift if b < 0x80 { break } } case 3: if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field PoolId", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field PoolID", wireType) } - m.PoolId = 0 + m.PoolID = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowLend @@ -3156,7 +3447,7 @@ func (m *LendAsset) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.PoolId |= uint64(b&0x7F) << shift + m.PoolID |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -3363,9 +3654,9 @@ func (m *LendAsset) Unmarshal(dAtA []byte) error { iNdEx = postIndex case 10: if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field AppId", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field AppID", wireType) } - m.AppId = 0 + m.AppID = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowLend @@ -3375,11 +3666,43 @@ func (m *LendAsset) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.AppId |= uint64(b&0x7F) << shift + m.AppID |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 11: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CPoolName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowLend + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthLend + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthLend + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.CPoolName = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipLend(dAtA[iNdEx:]) @@ -3741,6 +4064,38 @@ func (m *BorrowAsset) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 12: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CPoolName", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowLend + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthLend + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthLend + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.CPoolName = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipLend(dAtA[iNdEx:]) @@ -3793,9 +4148,9 @@ func (m *Pool) Unmarshal(dAtA []byte) error { switch fieldNum { case 1: if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field PoolId", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field PoolID", wireType) } - m.PoolId = 0 + m.PoolID = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowLend @@ -3805,7 +4160,7 @@ func (m *Pool) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.PoolId |= uint64(b&0x7F) << shift + m.PoolID |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -3863,9 +4218,9 @@ func (m *Pool) Unmarshal(dAtA []byte) error { } case 4: if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field FirstBridgedAssetId", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field FirstBridgedAssetID", wireType) } - m.FirstBridgedAssetId = 0 + m.FirstBridgedAssetID = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowLend @@ -3875,16 +4230,16 @@ func (m *Pool) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.FirstBridgedAssetId |= uint64(b&0x7F) << shift + m.FirstBridgedAssetID |= uint64(b&0x7F) << shift if b < 0x80 { break } } case 5: if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field SecondBridgedAssetId", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field SecondBridgedAssetID", wireType) } - m.SecondBridgedAssetId = 0 + m.SecondBridgedAssetID = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowLend @@ -3894,16 +4249,16 @@ func (m *Pool) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.SecondBridgedAssetId |= uint64(b&0x7F) << shift + m.SecondBridgedAssetID |= uint64(b&0x7F) << shift if b < 0x80 { break } } case 6: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AssetData", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field CPoolName", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowLend @@ -3913,29 +4268,80 @@ func (m *Pool) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthLend } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthLend } if postIndex > l { return io.ErrUnexpectedEOF } - m.AssetData = append(m.AssetData, AssetDataPoolMapping{}) - if err := m.AssetData[len(m.AssetData)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.CPoolName = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipLend(dAtA[iNdEx:]) + case 7: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ReserveFunds", wireType) + } + m.ReserveFunds = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowLend + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.ReserveFunds |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 8: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AssetData", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowLend + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthLend + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthLend + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.AssetData = append(m.AssetData, AssetDataPoolMapping{}) + if err := m.AssetData[len(m.AssetData)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipLend(dAtA[iNdEx:]) if err != nil { return err } @@ -3985,9 +4391,9 @@ func (m *AssetDataPoolMapping) Unmarshal(dAtA []byte) error { switch fieldNum { case 1: if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field AssetId", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field AssetID", wireType) } - m.AssetId = 0 + m.AssetID = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowLend @@ -3997,7 +4403,7 @@ func (m *AssetDataPoolMapping) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.AssetId |= uint64(b&0x7F) << shift + m.AssetID |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -4151,9 +4557,9 @@ func (m *Extended_Pair) Unmarshal(dAtA []byte) error { m.IsInterPool = bool(v != 0) case 5: if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field AssetOutPoolId", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field AssetOutPoolID", wireType) } - m.AssetOutPoolId = 0 + m.AssetOutPoolID = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowLend @@ -4163,7 +4569,7 @@ func (m *Extended_Pair) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.AssetOutPoolId |= uint64(b&0x7F) << shift + m.AssetOutPoolID |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -4239,9 +4645,9 @@ func (m *AssetToPairMapping) Unmarshal(dAtA []byte) error { switch fieldNum { case 1: if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field AssetId", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field AssetID", wireType) } - m.AssetId = 0 + m.AssetID = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowLend @@ -4251,16 +4657,16 @@ func (m *AssetToPairMapping) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.AssetId |= uint64(b&0x7F) << shift + m.AssetID |= uint64(b&0x7F) << shift if b < 0x80 { break } } case 2: if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field PoolId", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field PoolID", wireType) } - m.PoolId = 0 + m.PoolID = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowLend @@ -4270,7 +4676,7 @@ func (m *AssetToPairMapping) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.PoolId |= uint64(b&0x7F) << shift + m.PoolID |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -4292,7 +4698,7 @@ func (m *AssetToPairMapping) Unmarshal(dAtA []byte) error { break } } - m.PairId = append(m.PairId, v) + m.PairID = append(m.PairID, v) } else if wireType == 2 { var packedLen int for shift := uint(0); ; shift += 7 { @@ -4327,8 +4733,8 @@ func (m *AssetToPairMapping) Unmarshal(dAtA []byte) error { } } elementCount = count - if elementCount != 0 && len(m.PairId) == 0 { - m.PairId = make([]uint64, 0, elementCount) + if elementCount != 0 && len(m.PairID) == 0 { + m.PairID = make([]uint64, 0, elementCount) } for iNdEx < postIndex { var v uint64 @@ -4346,10 +4752,10 @@ func (m *AssetToPairMapping) Unmarshal(dAtA []byte) error { break } } - m.PairId = append(m.PairId, v) + m.PairID = append(m.PairID, v) } } else { - return fmt.Errorf("proto: wrong wireType = %d for field PairId", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field PairID", wireType) } default: iNdEx = preIndex @@ -4450,7 +4856,7 @@ func (m *UserLendIdMapping) Unmarshal(dAtA []byte) error { break } } - m.LendIds = append(m.LendIds, v) + m.LendIDs = append(m.LendIDs, v) } else if wireType == 2 { var packedLen int for shift := uint(0); ; shift += 7 { @@ -4485,8 +4891,8 @@ func (m *UserLendIdMapping) Unmarshal(dAtA []byte) error { } } elementCount = count - if elementCount != 0 && len(m.LendIds) == 0 { - m.LendIds = make([]uint64, 0, elementCount) + if elementCount != 0 && len(m.LendIDs) == 0 { + m.LendIDs = make([]uint64, 0, elementCount) } for iNdEx < postIndex { var v uint64 @@ -4504,10 +4910,10 @@ func (m *UserLendIdMapping) Unmarshal(dAtA []byte) error { break } } - m.LendIds = append(m.LendIds, v) + m.LendIDs = append(m.LendIDs, v) } } else { - return fmt.Errorf("proto: wrong wireType = %d for field LendIds", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field LendIDs", wireType) } default: iNdEx = preIndex @@ -4593,9 +4999,9 @@ func (m *LendIdByOwnerAndPoolMapping) Unmarshal(dAtA []byte) error { iNdEx = postIndex case 2: if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field PoolId", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field PoolID", wireType) } - m.PoolId = 0 + m.PoolID = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowLend @@ -4605,7 +5011,7 @@ func (m *LendIdByOwnerAndPoolMapping) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.PoolId |= uint64(b&0x7F) << shift + m.PoolID |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -4627,7 +5033,7 @@ func (m *LendIdByOwnerAndPoolMapping) Unmarshal(dAtA []byte) error { break } } - m.LendIds = append(m.LendIds, v) + m.LendIDs = append(m.LendIDs, v) } else if wireType == 2 { var packedLen int for shift := uint(0); ; shift += 7 { @@ -4662,8 +5068,8 @@ func (m *LendIdByOwnerAndPoolMapping) Unmarshal(dAtA []byte) error { } } elementCount = count - if elementCount != 0 && len(m.LendIds) == 0 { - m.LendIds = make([]uint64, 0, elementCount) + if elementCount != 0 && len(m.LendIDs) == 0 { + m.LendIDs = make([]uint64, 0, elementCount) } for iNdEx < postIndex { var v uint64 @@ -4681,10 +5087,10 @@ func (m *LendIdByOwnerAndPoolMapping) Unmarshal(dAtA []byte) error { break } } - m.LendIds = append(m.LendIds, v) + m.LendIDs = append(m.LendIDs, v) } } else { - return fmt.Errorf("proto: wrong wireType = %d for field LendIds", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field LendIDs", wireType) } default: iNdEx = preIndex @@ -4770,9 +5176,9 @@ func (m *BorrowIdByOwnerAndPoolMapping) Unmarshal(dAtA []byte) error { iNdEx = postIndex case 2: if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field PoolId", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field PoolID", wireType) } - m.PoolId = 0 + m.PoolID = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowLend @@ -4782,7 +5188,7 @@ func (m *BorrowIdByOwnerAndPoolMapping) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.PoolId |= uint64(b&0x7F) << shift + m.PoolID |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -4804,7 +5210,7 @@ func (m *BorrowIdByOwnerAndPoolMapping) Unmarshal(dAtA []byte) error { break } } - m.BorrowIds = append(m.BorrowIds, v) + m.BorrowIDs = append(m.BorrowIDs, v) } else if wireType == 2 { var packedLen int for shift := uint(0); ; shift += 7 { @@ -4839,8 +5245,8 @@ func (m *BorrowIdByOwnerAndPoolMapping) Unmarshal(dAtA []byte) error { } } elementCount = count - if elementCount != 0 && len(m.BorrowIds) == 0 { - m.BorrowIds = make([]uint64, 0, elementCount) + if elementCount != 0 && len(m.BorrowIDs) == 0 { + m.BorrowIDs = make([]uint64, 0, elementCount) } for iNdEx < postIndex { var v uint64 @@ -4858,10 +5264,10 @@ func (m *BorrowIdByOwnerAndPoolMapping) Unmarshal(dAtA []byte) error { break } } - m.BorrowIds = append(m.BorrowIds, v) + m.BorrowIDs = append(m.BorrowIDs, v) } } else { - return fmt.Errorf("proto: wrong wireType = %d for field BorrowIds", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field BorrowIDs", wireType) } default: iNdEx = preIndex @@ -4962,7 +5368,7 @@ func (m *UserBorrowIdMapping) Unmarshal(dAtA []byte) error { break } } - m.BorrowIds = append(m.BorrowIds, v) + m.BorrowIDs = append(m.BorrowIDs, v) } else if wireType == 2 { var packedLen int for shift := uint(0); ; shift += 7 { @@ -4997,8 +5403,8 @@ func (m *UserBorrowIdMapping) Unmarshal(dAtA []byte) error { } } elementCount = count - if elementCount != 0 && len(m.BorrowIds) == 0 { - m.BorrowIds = make([]uint64, 0, elementCount) + if elementCount != 0 && len(m.BorrowIDs) == 0 { + m.BorrowIDs = make([]uint64, 0, elementCount) } for iNdEx < postIndex { var v uint64 @@ -5016,10 +5422,10 @@ func (m *UserBorrowIdMapping) Unmarshal(dAtA []byte) error { break } } - m.BorrowIds = append(m.BorrowIds, v) + m.BorrowIDs = append(m.BorrowIDs, v) } } else { - return fmt.Errorf("proto: wrong wireType = %d for field BorrowIds", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field BorrowIDs", wireType) } default: iNdEx = preIndex @@ -5218,9 +5624,9 @@ func (m *AssetStats) Unmarshal(dAtA []byte) error { switch fieldNum { case 1: if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field PoolId", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field PoolID", wireType) } - m.PoolId = 0 + m.PoolID = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowLend @@ -5230,16 +5636,16 @@ func (m *AssetStats) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.PoolId |= uint64(b&0x7F) << shift + m.PoolID |= uint64(b&0x7F) << shift if b < 0x80 { break } } case 2: if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field AssetId", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field AssetID", wireType) } - m.AssetId = 0 + m.AssetID = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowLend @@ -5249,7 +5655,7 @@ func (m *AssetStats) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.AssetId |= uint64(b&0x7F) << shift + m.AssetID |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -5544,9 +5950,9 @@ func (m *AssetRatesStats) Unmarshal(dAtA []byte) error { switch fieldNum { case 1: if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field AssetId", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field AssetID", wireType) } - m.AssetId = 0 + m.AssetID = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowLend @@ -5556,7 +5962,7 @@ func (m *AssetRatesStats) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.AssetId |= uint64(b&0x7F) << shift + m.AssetID |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -5922,6 +6328,40 @@ func (m *AssetRatesStats) Unmarshal(dAtA []byte) error { } iNdEx = postIndex case 13: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LiquidationBonus", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowLend + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthLend + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthLend + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.LiquidationBonus.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 14: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field ReserveFactor", wireType) } @@ -5955,11 +6395,11 @@ func (m *AssetRatesStats) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex - case 14: + case 15: if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field CAssetId", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field CAssetID", wireType) } - m.CAssetId = 0 + m.CAssetID = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowLend @@ -5969,7 +6409,7 @@ func (m *AssetRatesStats) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.CAssetId |= uint64(b&0x7F) << shift + m.CAssetID |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -6041,7 +6481,7 @@ func (m *LendMapping) Unmarshal(dAtA []byte) error { break } } - m.LendIds = append(m.LendIds, v) + m.LendIDs = append(m.LendIDs, v) } else if wireType == 2 { var packedLen int for shift := uint(0); ; shift += 7 { @@ -6076,8 +6516,8 @@ func (m *LendMapping) Unmarshal(dAtA []byte) error { } } elementCount = count - if elementCount != 0 && len(m.LendIds) == 0 { - m.LendIds = make([]uint64, 0, elementCount) + if elementCount != 0 && len(m.LendIDs) == 0 { + m.LendIDs = make([]uint64, 0, elementCount) } for iNdEx < postIndex { var v uint64 @@ -6095,10 +6535,10 @@ func (m *LendMapping) Unmarshal(dAtA []byte) error { break } } - m.LendIds = append(m.LendIds, v) + m.LendIDs = append(m.LendIDs, v) } } else { - return fmt.Errorf("proto: wrong wireType = %d for field LendIds", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field LendIDs", wireType) } default: iNdEx = preIndex @@ -6167,7 +6607,7 @@ func (m *BorrowMapping) Unmarshal(dAtA []byte) error { break } } - m.BorrowIds = append(m.BorrowIds, v) + m.BorrowIDs = append(m.BorrowIDs, v) } else if wireType == 2 { var packedLen int for shift := uint(0); ; shift += 7 { @@ -6202,8 +6642,8 @@ func (m *BorrowMapping) Unmarshal(dAtA []byte) error { } } elementCount = count - if elementCount != 0 && len(m.BorrowIds) == 0 { - m.BorrowIds = make([]uint64, 0, elementCount) + if elementCount != 0 && len(m.BorrowIDs) == 0 { + m.BorrowIDs = make([]uint64, 0, elementCount) } for iNdEx < postIndex { var v uint64 @@ -6221,10 +6661,10 @@ func (m *BorrowMapping) Unmarshal(dAtA []byte) error { break } } - m.BorrowIds = append(m.BorrowIds, v) + m.BorrowIDs = append(m.BorrowIDs, v) } } else { - return fmt.Errorf("proto: wrong wireType = %d for field BorrowIds", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field BorrowIDs", wireType) } default: iNdEx = preIndex @@ -6293,7 +6733,7 @@ func (m *StableBorrowMapping) Unmarshal(dAtA []byte) error { break } } - m.StableBorrowIds = append(m.StableBorrowIds, v) + m.StableBorrowIDs = append(m.StableBorrowIDs, v) } else if wireType == 2 { var packedLen int for shift := uint(0); ; shift += 7 { @@ -6328,8 +6768,8 @@ func (m *StableBorrowMapping) Unmarshal(dAtA []byte) error { } } elementCount = count - if elementCount != 0 && len(m.StableBorrowIds) == 0 { - m.StableBorrowIds = make([]uint64, 0, elementCount) + if elementCount != 0 && len(m.StableBorrowIDs) == 0 { + m.StableBorrowIDs = make([]uint64, 0, elementCount) } for iNdEx < postIndex { var v uint64 @@ -6347,10 +6787,10 @@ func (m *StableBorrowMapping) Unmarshal(dAtA []byte) error { break } } - m.StableBorrowIds = append(m.StableBorrowIds, v) + m.StableBorrowIDs = append(m.StableBorrowIDs, v) } } else { - return fmt.Errorf("proto: wrong wireType = %d for field StableBorrowIds", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field StableBorrowIDs", wireType) } default: iNdEx = preIndex @@ -6404,9 +6844,9 @@ func (m *ModuleBalance) Unmarshal(dAtA []byte) error { switch fieldNum { case 1: if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field PoolId", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field PoolID", wireType) } - m.PoolId = 0 + m.PoolID = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowLend @@ -6416,7 +6856,7 @@ func (m *ModuleBalance) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.PoolId |= uint64(b&0x7F) << shift + m.PoolID |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -6507,9 +6947,9 @@ func (m *ModuleBalanceStats) Unmarshal(dAtA []byte) error { switch fieldNum { case 1: if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field AssetId", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field AssetID", wireType) } - m.AssetId = 0 + m.AssetID = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowLend @@ -6519,7 +6959,7 @@ func (m *ModuleBalanceStats) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.AssetId |= uint64(b&0x7F) << shift + m.AssetID |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -6609,9 +7049,9 @@ func (m *BalanceStats) Unmarshal(dAtA []byte) error { switch fieldNum { case 1: if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field AssetId", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field AssetID", wireType) } - m.AssetId = 0 + m.AssetID = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowLend @@ -6621,7 +7061,7 @@ func (m *BalanceStats) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.AssetId |= uint64(b&0x7F) << shift + m.AssetID |= uint64(b&0x7F) << shift if b < 0x80 { break } @@ -6765,6 +7205,253 @@ func (m *DepositStats) Unmarshal(dAtA []byte) error { } return nil } +func (m *AuctionParams) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowLend + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: AuctionParams: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: AuctionParams: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field AppId", wireType) + } + m.AppId = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowLend + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.AppId |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field AuctionDurationSeconds", wireType) + } + m.AuctionDurationSeconds = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowLend + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.AuctionDurationSeconds |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Buffer", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowLend + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthLend + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthLend + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Buffer.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Cusp", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowLend + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthLend + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthLend + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Cusp.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Step", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowLend + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthLend + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthLend + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.Step.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 6: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field PriceFunctionType", wireType) + } + m.PriceFunctionType = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowLend + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.PriceFunctionType |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 7: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field DutchId", wireType) + } + m.DutchId = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowLend + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.DutchId |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 8: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field BidDurationSeconds", wireType) + } + m.BidDurationSeconds = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowLend + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.BidDurationSeconds |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipLend(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthLend + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func skipLend(dAtA []byte) (n int, err error) { l := len(dAtA) iNdEx := 0 diff --git a/x/lend/types/pair.go b/x/lend/types/pair.go index a4dd7c208..3217b4f35 100644 --- a/x/lend/types/pair.go +++ b/x/lend/types/pair.go @@ -1,6 +1,8 @@ package types -import "fmt" +import ( + "fmt" +) func (m *Extended_Pair) Validate() error { if m.AssetIn == 0 { @@ -14,6 +16,9 @@ func (m *Extended_Pair) Validate() error { } func (m *Pool) Validate() error { + if len(m.CPoolName) >= 16 { + return ErrInvalidLengthCPoolName + } return nil } diff --git a/x/lend/types/params.go b/x/lend/types/params.go index d42af3ced..3b09550f7 100644 --- a/x/lend/types/params.go +++ b/x/lend/types/params.go @@ -1,12 +1,33 @@ package types import ( + sdk "github.com/cosmos/cosmos-sdk/types" paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" "gopkg.in/yaml.v2" ) var _ paramtypes.ParamSet = (*Params)(nil) +const ( + LendGas = sdk.Gas(102763) + WithdrawGas = sdk.Gas(62763) + DepositGas = sdk.Gas(72763) + CloseLendGas = sdk.Gas(72763) + BorrowAssetGas = sdk.Gas(72763) + DrawAssetGas = sdk.Gas(72763) + RepayAssetGas = sdk.Gas(72763) + DepositBorrowAssetGas = sdk.Gas(72763) + CloseBorrowAssetGas = sdk.Gas(72763) + BorrowAssetAlternateGas = sdk.Gas(72763) +) + +const ( + Uint64Zero = uint64(0) + Uint64Two = uint64(2) + Perc1 = string("0.2") + Perc2 = string("0.9") +) + // ParamKeyTable the param key table for launch module. func ParamKeyTable() paramtypes.KeyTable { return paramtypes.NewKeyTable().RegisterParamSet(&Params{}) diff --git a/x/lend/types/query.pb.go b/x/lend/types/query.pb.go index c84e777f4..a2754b6b4 100644 --- a/x/lend/types/query.pb.go +++ b/x/lend/types/query.pb.go @@ -1819,6 +1819,80 @@ func (m *QueryBorrowStatsResponse) XXX_DiscardUnknown() { var xxx_messageInfo_QueryBorrowStatsResponse proto.InternalMessageInfo +type QueryAuctionParamRequest struct { + AppId uint64 `protobuf:"varint,1,opt,name=app_id,json=appId,proto3" json:"app_id,omitempty"` +} + +func (m *QueryAuctionParamRequest) Reset() { *m = QueryAuctionParamRequest{} } +func (m *QueryAuctionParamRequest) String() string { return proto.CompactTextString(m) } +func (*QueryAuctionParamRequest) ProtoMessage() {} +func (*QueryAuctionParamRequest) Descriptor() ([]byte, []int) { + return fileDescriptor_462bf3f1a3eff175, []int{48} +} +func (m *QueryAuctionParamRequest) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryAuctionParamRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryAuctionParamRequest.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *QueryAuctionParamRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryAuctionParamRequest.Merge(m, src) +} +func (m *QueryAuctionParamRequest) XXX_Size() int { + return m.Size() +} +func (m *QueryAuctionParamRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QueryAuctionParamRequest.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryAuctionParamRequest proto.InternalMessageInfo + +type QueryAuctionParamResponse struct { + AuctionParams AuctionParams `protobuf:"bytes,1,opt,name=auctionParams,proto3" json:"auctionParams" yaml:"auction_params"` +} + +func (m *QueryAuctionParamResponse) Reset() { *m = QueryAuctionParamResponse{} } +func (m *QueryAuctionParamResponse) String() string { return proto.CompactTextString(m) } +func (*QueryAuctionParamResponse) ProtoMessage() {} +func (*QueryAuctionParamResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_462bf3f1a3eff175, []int{49} +} +func (m *QueryAuctionParamResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *QueryAuctionParamResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_QueryAuctionParamResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *QueryAuctionParamResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryAuctionParamResponse.Merge(m, src) +} +func (m *QueryAuctionParamResponse) XXX_Size() int { + return m.Size() +} +func (m *QueryAuctionParamResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryAuctionParamResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_QueryAuctionParamResponse proto.InternalMessageInfo + func init() { proto.RegisterType((*QueryParamsRequest)(nil), "comdex.lend.v1beta1.QueryParamsRequest") proto.RegisterType((*QueryParamsResponse)(nil), "comdex.lend.v1beta1.QueryParamsResponse") @@ -1868,139 +1942,146 @@ func init() { proto.RegisterType((*QueryBuyBackDepositStatsResponse)(nil), "comdex.lend.v1beta1.QueryBuyBackDepositStatsResponse") proto.RegisterType((*QueryBorrowStatsRequest)(nil), "comdex.lend.v1beta1.QueryBorrowStatsRequest") proto.RegisterType((*QueryBorrowStatsResponse)(nil), "comdex.lend.v1beta1.QueryBorrowStatsResponse") + proto.RegisterType((*QueryAuctionParamRequest)(nil), "comdex.lend.v1beta1.QueryAuctionParamRequest") + proto.RegisterType((*QueryAuctionParamResponse)(nil), "comdex.lend.v1beta1.QueryAuctionParamResponse") } func init() { proto.RegisterFile("comdex/lend/v1beta1/query.proto", fileDescriptor_462bf3f1a3eff175) } var fileDescriptor_462bf3f1a3eff175 = []byte{ - // 2018 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x5a, 0xdd, 0x6f, 0x54, 0xd5, - 0x16, 0xef, 0x2e, 0x6d, 0xb9, 0xec, 0x96, 0xaf, 0x3d, 0x2d, 0xd0, 0xd3, 0x76, 0xa6, 0xdd, 0x94, - 0xb6, 0x40, 0x3b, 0x87, 0x16, 0xb8, 0x5c, 0x08, 0xf7, 0xe6, 0x72, 0x02, 0xb9, 0x97, 0x9b, 0x4b, - 0xa8, 0x47, 0x8d, 0x89, 0x5f, 0xe3, 0x99, 0xce, 0x61, 0x9c, 0x30, 0x9d, 0x33, 0xcc, 0x99, 0x02, - 0x43, 0x69, 0x82, 0x1a, 0x1e, 0x8c, 0x3e, 0xf8, 0xf1, 0x66, 0x22, 0x31, 0x31, 0x46, 0x13, 0x34, - 0x3e, 0xf9, 0x84, 0x0f, 0x3e, 0x12, 0x1f, 0x0c, 0x46, 0x13, 0xe5, 0xc1, 0x46, 0x8b, 0x7f, 0x80, - 0xe1, 0x2f, 0x30, 0x7b, 0xef, 0x75, 0xe6, 0x7c, 0xcc, 0x3e, 0x1f, 0x63, 0xda, 0xc6, 0xf8, 0x64, - 0x3d, 0x7b, 0x7d, 0xfc, 0x7e, 0x6b, 0xaf, 0xbd, 0xf6, 0x5e, 0x6b, 0xc0, 0x99, 0x05, 0x6b, 0xb1, - 0x60, 0x5e, 0x57, 0xcb, 0x66, 0xa5, 0xa0, 0x5e, 0x9d, 0xcd, 0x9b, 0x75, 0x63, 0x56, 0xbd, 0xb2, - 0x64, 0xd6, 0x1a, 0xd9, 0x6a, 0xcd, 0xaa, 0x5b, 0x24, 0x25, 0x04, 0xb2, 0x4c, 0x20, 0x0b, 0x02, - 0xca, 0xa1, 0x05, 0xcb, 0x5e, 0xb4, 0x6c, 0x35, 0x6f, 0xd8, 0xa6, 0x90, 0x6e, 0xea, 0x56, 0x8d, - 0x62, 0xa9, 0x62, 0xd4, 0x4b, 0x56, 0x45, 0x18, 0x50, 0xfa, 0x8b, 0x56, 0xd1, 0xe2, 0x7f, 0xaa, - 0xec, 0x2f, 0xf8, 0x3a, 0x5c, 0xb4, 0xac, 0x62, 0xd9, 0x54, 0x8d, 0x6a, 0x49, 0x35, 0x2a, 0x15, - 0xab, 0xce, 0x55, 0x6c, 0x58, 0x4d, 0xcb, 0x50, 0x71, 0x04, 0x62, 0x7d, 0x54, 0xb6, 0x5e, 0x35, - 0x6a, 0xc6, 0x22, 0x58, 0xa0, 0xfd, 0x98, 0x3c, 0xc1, 0x70, 0xcd, 0xf3, 0x8f, 0xba, 0x79, 0x65, - 0xc9, 0xb4, 0xeb, 0x74, 0x1e, 0xa7, 0x7c, 0x5f, 0xed, 0xaa, 0x55, 0xb1, 0x4d, 0x72, 0x12, 0xf7, - 0x08, 0xe5, 0x7d, 0x68, 0x14, 0x4d, 0xf5, 0xce, 0x0d, 0x65, 0x25, 0xa4, 0xb3, 0x42, 0x49, 0xeb, - 0xba, 0xbf, 0x9a, 0xe9, 0xd0, 0x41, 0x81, 0xd6, 0xf0, 0x6e, 0x6e, 0xf1, 0xff, 0x66, 0xa5, 0xe0, - 0xb8, 0x21, 0x2f, 0x60, 0xec, 0x86, 0x01, 0x6c, 0x4e, 0x64, 0x45, 0xcc, 0xb2, 0x2c, 0x66, 0x59, - 0x11, 0x61, 0xd7, 0x72, 0xd1, 0x04, 0x5d, 0x6d, 0xe0, 0xf1, 0x6a, 0x66, 0x77, 0xc3, 0x58, 0x2c, - 0x9f, 0xa2, 0xae, 0x0d, 0xaa, 0x7b, 0x0c, 0xd2, 0xaf, 0x10, 0x90, 0x03, 0xa7, 0xc0, 0xe2, 0x7f, - 0xb8, 0x9b, 0xe1, 0x65, 0x24, 0xb6, 0x4c, 0xf5, 0xce, 0xa5, 0xa5, 0x24, 0x98, 0xca, 0x19, 0xdb, - 0x36, 0xeb, 0x5a, 0x3f, 0xe3, 0xf1, 0x78, 0x35, 0xd3, 0x27, 0x9c, 0x71, 0x55, 0xaa, 0x0b, 0x13, - 0xe4, 0x45, 0x1f, 0x83, 0x4e, 0xce, 0x60, 0x32, 0x96, 0x81, 0x00, 0x92, 0x84, 0x02, 0xc5, 0xbb, - 0x9a, 0x0c, 0x9c, 0xa8, 0xed, 0xc0, 0x9d, 0xa5, 0x02, 0x8f, 0x56, 0x97, 0xde, 0x59, 0x2a, 0xd0, - 0xe7, 0x3d, 0xa1, 0x6d, 0x92, 0xfc, 0x0f, 0xee, 0x62, 0x08, 0x21, 0xa8, 0x71, 0x1c, 0x53, 0xc0, - 0xb1, 0xd7, 0xe5, 0x48, 0x75, 0x6e, 0x80, 0x7e, 0x88, 0xb0, 0xc2, 0xcd, 0x9f, 0x29, 0x97, 0x99, - 0x82, 0xd6, 0xb8, 0x78, 0xad, 0x62, 0xd6, 0x1c, 0x30, 0x13, 0xb8, 0xdb, 0x62, 0xff, 0xcf, 0x1d, - 0x6d, 0xd3, 0x76, 0xb9, 0x81, 0xe2, 0x9f, 0xa9, 0x2e, 0x96, 0x03, 0x5b, 0xdd, 0xb9, 0xde, 0x5b, - 0x5d, 0xc6, 0x43, 0x52, 0x90, 0x10, 0x8d, 0x0b, 0xed, 0x6d, 0xf9, 0x5e, 0x08, 0xc7, 0x4e, 0x37, - 0x1c, 0xb9, 0x92, 0xbb, 0xeb, 0xf4, 0x07, 0x84, 0xc7, 0x24, 0xee, 0xce, 0x54, 0x0a, 0xf3, 0x96, - 0x55, 0x6e, 0x37, 0x34, 0x87, 0xf1, 0xd6, 0xaa, 0x65, 0x95, 0x73, 0xa5, 0x02, 0x8f, 0x4b, 0x97, - 0x46, 0x1e, 0xaf, 0x66, 0x76, 0x00, 0x5f, 0xb1, 0x40, 0xf5, 0x1e, 0xf6, 0xd7, 0xf9, 0x42, 0x20, - 0x8e, 0x5b, 0xd6, 0x3b, 0x8e, 0x55, 0x4c, 0xa3, 0x88, 0xad, 0xff, 0x09, 0x6a, 0x16, 0x86, 0x79, - 0xa3, 0x54, 0xdb, 0xac, 0xc2, 0xf0, 0x13, 0x6a, 0x56, 0x3d, 0xee, 0x14, 0x68, 0x15, 0xf1, 0x76, - 0xf3, 0x7a, 0xdd, 0xac, 0x14, 0xcc, 0x02, 0x5f, 0x00, 0x7a, 0x54, 0x4a, 0xef, 0x1c, 0x48, 0xe6, - 0x98, 0xa8, 0x36, 0x02, 0x14, 0x07, 0x84, 0x63, 0xc7, 0x4c, 0xae, 0xca, 0xec, 0x50, 0xdd, 0x6f, - 0x77, 0xd3, 0xaa, 0x06, 0xf3, 0x16, 0x56, 0x35, 0x1a, 0x9e, 0xb8, 0x37, 0x23, 0x50, 0xc0, 0x7d, - 0xe7, 0x3c, 0x48, 0x21, 0xf2, 0x49, 0x02, 0x30, 0x0c, 0x01, 0xe8, 0x97, 0x04, 0x80, 0xea, 0x3e, - 0xab, 0xf4, 0xa6, 0x73, 0x58, 0x59, 0x76, 0xe8, 0x46, 0xdd, 0xb4, 0x9f, 0xac, 0x1b, 0xf5, 0xcd, - 0xda, 0xfc, 0xdf, 0x10, 0x1e, 0x96, 0xbb, 0x87, 0x20, 0x54, 0xf1, 0xce, 0xc0, 0x12, 0x24, 0xc2, - 0xb8, 0x34, 0x0e, 0x01, 0x59, 0x6d, 0x14, 0x22, 0xb1, 0x4f, 0xc0, 0x30, 0xd8, 0x72, 0xae, 0xc6, - 0xd6, 0x73, 0x36, 0x13, 0xa0, 0x7a, 0xd0, 0xfc, 0x86, 0xe7, 0xc3, 0xb4, 0x53, 0xc2, 0x7d, 0x7e, - 0xc3, 0x32, 0xe3, 0x4d, 0x24, 0xdd, 0x9f, 0x66, 0x7c, 0x16, 0xf1, 0x0e, 0xff, 0x0a, 0xec, 0x51, - 0xb2, 0xf0, 0x64, 0x20, 0x3c, 0x7b, 0xe5, 0xe1, 0xa1, 0x7a, 0xc0, 0xb8, 0x5b, 0x20, 0x2c, 0xab, - 0xbc, 0x59, 0x39, 0x72, 0xaf, 0x59, 0x20, 0x84, 0x53, 0x60, 0x7e, 0x0e, 0x77, 0xb3, 0x32, 0xec, - 0xe4, 0xc3, 0xa0, 0xfc, 0xf9, 0x63, 0x59, 0xe5, 0x60, 0xc9, 0xe3, 0x5a, 0x54, 0x17, 0xda, 0x9b, - 0x77, 0xfc, 0x3d, 0x97, 0x51, 0x70, 0x93, 0x9f, 0xf1, 0x44, 0xb5, 0xc9, 0x4f, 0xc3, 0x5d, 0x0c, - 0x21, 0xc4, 0x33, 0x82, 0x5e, 0xe0, 0xbd, 0xc0, 0x94, 0xa8, 0xce, 0x75, 0xe9, 0x2d, 0x84, 0x33, - 0x6e, 0xf6, 0x3c, 0x65, 0xb1, 0x13, 0x7f, 0xc1, 0xa8, 0x56, 0x4b, 0x95, 0xe2, 0x66, 0xed, 0xde, - 0xed, 0x4e, 0x3c, 0x1a, 0x0e, 0x01, 0xb8, 0xde, 0x42, 0x38, 0x65, 0xb4, 0xae, 0xc3, 0xd6, 0x4e, - 0x86, 0xe7, 0xb2, 0x4f, 0x5e, 0x3b, 0x00, 0x91, 0x18, 0xf1, 0xa6, 0x73, 0xdd, 0xe2, 0x75, 0x2f, - 0xb7, 0x08, 0x46, 0xa9, 0x2e, 0x73, 0xb5, 0xe1, 0x79, 0xb0, 0x82, 0xd3, 0x21, 0x61, 0x70, 0x36, - 0x22, 0x8b, 0xff, 0x26, 0x10, 0x3b, 0xb9, 0xa1, 0xa5, 0xdc, 0x67, 0x8f, 0xb3, 0x42, 0xf5, 0xad, - 0xfc, 0xcf, 0xf3, 0x85, 0xb6, 0x9e, 0x2a, 0xf4, 0x83, 0xf0, 0x4c, 0x68, 0xee, 0xc2, 0x0a, 0x26, - 0xad, 0xab, 0x90, 0x11, 0x89, 0xf7, 0x60, 0x1c, 0xf6, 0x60, 0x38, 0x62, 0x0f, 0xa8, 0x2e, 0x71, - 0x44, 0xeb, 0xd0, 0xe7, 0x68, 0x56, 0xad, 0x66, 0x5d, 0xdb, 0xac, 0xfc, 0xfc, 0x1a, 0xe1, 0x7e, - 0xbf, 0x5b, 0x88, 0x86, 0x8e, 0xb7, 0xe6, 0xc5, 0x27, 0x48, 0xc3, 0x51, 0x69, 0x08, 0x84, 0x9a, - 0x78, 0x5b, 0xed, 0x01, 0xee, 0xb0, 0x09, 0xa0, 0x4e, 0x75, 0xc7, 0xd0, 0x86, 0x27, 0xd9, 0x38, - 0x54, 0x4a, 0x01, 0x2a, 0xac, 0xdc, 0x5c, 0xf2, 0x05, 0xba, 0x49, 0xf8, 0x22, 0xee, 0x11, 0x38, - 0x21, 0xc8, 0xf1, 0x7c, 0x07, 0x80, 0xef, 0x76, 0x2f, 0x5f, 0xaa, 0x83, 0x19, 0xfa, 0x51, 0xf3, - 0x72, 0x2f, 0x97, 0x85, 0xda, 0x9f, 0xb3, 0x5f, 0xb1, 0xf1, 0x48, 0x08, 0xcc, 0x8d, 0x4b, 0x05, - 0xfa, 0x10, 0xe1, 0xfd, 0x52, 0xaf, 0x7f, 0x81, 0xc6, 0xe5, 0x06, 0x1e, 0x8f, 0xa6, 0xb6, 0x81, - 0x71, 0xfd, 0x1e, 0xe1, 0x3d, 0x6e, 0xa1, 0xf3, 0xbd, 0x65, 0x37, 0xb2, 0xc0, 0x6e, 0x74, 0x48, - 0xaf, 0xe2, 0xbd, 0x2d, 0xac, 0x20, 0x8a, 0xcf, 0x61, 0xec, 0x7e, 0x85, 0xb3, 0x9b, 0x09, 0x2f, - 0xd7, 0xe2, 0xe5, 0xa7, 0x40, 0x1c, 0x89, 0x97, 0x3d, 0x3c, 0x89, 0x3d, 0xe6, 0xe8, 0xc7, 0x08, - 0x0f, 0x72, 0xc7, 0x17, 0xac, 0xc2, 0x52, 0xd9, 0xd4, 0x8c, 0xb2, 0x51, 0x59, 0x70, 0x80, 0x7b, - 0x23, 0x84, 0xda, 0x8c, 0xd0, 0xba, 0x9f, 0xe2, 0xdb, 0xce, 0x6c, 0x24, 0x80, 0xd4, 0xed, 0x27, - 0x7d, 0x0b, 0x91, 0xed, 0x94, 0x4f, 0x32, 0xd8, 0x4f, 0x2e, 0xf2, 0xc5, 0x5c, 0x5e, 0xac, 0x52, - 0xdd, 0x6f, 0x97, 0x2a, 0x78, 0x1f, 0x87, 0x71, 0xd6, 0xac, 0x5a, 0x76, 0xc9, 0x97, 0x81, 0xec, - 0x3d, 0x36, 0x28, 0x59, 0x04, 0x88, 0x0b, 0xb8, 0xcf, 0xfb, 0x1d, 0x10, 0x8e, 0x49, 0x11, 0x7a, - 0x05, 0x83, 0xfd, 0x5e, 0x41, 0xac, 0x39, 0xdb, 0xe9, 0x33, 0x4a, 0xd3, 0x50, 0x93, 0x9f, 0xb6, - 0xcd, 0x9a, 0x0c, 0xe2, 0xdb, 0x08, 0xaa, 0x61, 0xab, 0x40, 0xb3, 0x25, 0xdb, 0x15, 0x5c, 0x4b, - 0x0e, 0x75, 0x0c, 0xa0, 0x0e, 0x0a, 0xa8, 0x4b, 0xb6, 0x59, 0xcb, 0x05, 0xf0, 0xb6, 0x58, 0xa7, - 0x63, 0xf0, 0x76, 0xd1, 0x4d, 0xdb, 0xac, 0x5d, 0x35, 0x65, 0xb0, 0xdf, 0x47, 0xf0, 0xcc, 0x94, - 0xca, 0x00, 0xf2, 0x06, 0x4e, 0x49, 0x96, 0x93, 0x83, 0x0f, 0xbc, 0x6d, 0x6a, 0xc2, 0x56, 0x10, - 0xbf, 0xcc, 0x47, 0x93, 0x82, 0xb6, 0xd4, 0xd0, 0x8c, 0x85, 0xcb, 0x32, 0x0a, 0x77, 0x1c, 0x0a, - 0x52, 0x19, 0xa0, 0x70, 0x03, 0xa7, 0x24, 0xcb, 0xc9, 0x29, 0x04, 0x9e, 0xc8, 0xf9, 0xa5, 0x46, - 0x2e, 0x6f, 0x2c, 0x5c, 0x6e, 0xe1, 0x20, 0x71, 0x42, 0x07, 0xa1, 0x06, 0x89, 0x7a, 0xec, 0xc3, - 0x7e, 0x13, 0x92, 0xde, 0xb7, 0x04, 0x90, 0x5f, 0xc2, 0xbd, 0x9e, 0xcf, 0xc9, 0xa1, 0x0e, 0x01, - 0xd4, 0x94, 0xb7, 0xd4, 0x3b, 0x00, 0xbd, 0x26, 0xe7, 0xde, 0xc9, 0xe0, 0x6e, 0xee, 0x9e, 0xbc, - 0x82, 0x30, 0x76, 0xa7, 0xcc, 0x64, 0x42, 0xea, 0xa5, 0x65, 0xf6, 0xad, 0x4c, 0xc6, 0xca, 0x09, - 0x2e, 0x94, 0xbe, 0xfa, 0xdd, 0xaf, 0xef, 0x76, 0x0e, 0x13, 0x45, 0x0d, 0x1b, 0xf6, 0xdb, 0xe4, - 0x35, 0x84, 0xb7, 0x35, 0x55, 0xc9, 0x81, 0x68, 0xd3, 0x0e, 0x82, 0x89, 0x38, 0x31, 0x00, 0x30, - 0xc9, 0x01, 0x8c, 0x91, 0x4c, 0x38, 0x00, 0x75, 0xb9, 0x54, 0x58, 0x21, 0x9f, 0x21, 0x78, 0xe5, - 0xf9, 0xa7, 0x87, 0x44, 0x0d, 0x77, 0x24, 0x1d, 0x2a, 0x2b, 0x47, 0x92, 0x2b, 0x00, 0xc6, 0xa3, - 0x1c, 0xe3, 0x0c, 0x39, 0x1c, 0x8e, 0x31, 0x97, 0x6f, 0xe4, 0xf8, 0xbb, 0x45, 0x5d, 0xe6, 0xff, - 0x59, 0x21, 0xdf, 0xca, 0x47, 0xdb, 0xf0, 0x64, 0x20, 0x7f, 0x4f, 0x8a, 0xc2, 0xff, 0x7c, 0x52, - 0x4e, 0xb4, 0xad, 0x07, 0x24, 0x34, 0x4e, 0xe2, 0x34, 0x39, 0x95, 0x80, 0x44, 0x8e, 0xdd, 0x70, - 0x0e, 0x13, 0x75, 0x19, 0x6e, 0xbe, 0x15, 0xd6, 0xd6, 0xf6, 0x88, 0x1f, 0x60, 0x48, 0x44, 0x86, - 0xf9, 0x7e, 0xed, 0x51, 0xa6, 0xe2, 0x05, 0x01, 0xe1, 0x7e, 0x8e, 0x70, 0x84, 0x0c, 0xa9, 0xe1, - 0x3f, 0x2c, 0xb9, 0x07, 0x42, 0x0c, 0x3b, 0x27, 0xa2, 0xac, 0xbb, 0x33, 0x5f, 0x65, 0x32, 0x56, - 0x2e, 0xd1, 0x81, 0xe0, 0x13, 0x57, 0xf7, 0x40, 0x30, 0xd5, 0xa8, 0x03, 0xe1, 0x19, 0x91, 0x2a, - 0x13, 0x71, 0x62, 0x89, 0x0e, 0x04, 0x07, 0x20, 0x0e, 0xc4, 0x5d, 0xa7, 0xd1, 0x0b, 0x0e, 0xfc, - 0xa2, 0x12, 0x5c, 0x3a, 0x14, 0x55, 0x66, 0xdb, 0xd0, 0x00, 0x98, 0x59, 0x0e, 0x73, 0x8a, 0x4c, - 0x48, 0x61, 0xb6, 0xcc, 0x25, 0x3d, 0xc7, 0xd7, 0x67, 0x30, 0xf2, 0xf8, 0xca, 0x06, 0x8a, 0xca, - 0x91, 0xe4, 0x0a, 0x89, 0x8e, 0x6f, 0x0b, 0x54, 0x11, 0x5d, 0x37, 0xcf, 0xf8, 0x54, 0x2d, 0x6a, - 0xf7, 0x3c, 0xa3, 0xc3, 0xc8, 0x3c, 0xf3, 0x4e, 0xfb, 0xe2, 0xf2, 0x8c, 0x3b, 0x75, 0xf3, 0x8c, - 0x55, 0x8c, 0x03, 0xd1, 0xa6, 0x93, 0xe4, 0x99, 0xb7, 0x1e, 0xc4, 0xe4, 0x19, 0x03, 0x20, 0x22, - 0xf1, 0x25, 0x82, 0xbb, 0x50, 0x32, 0xf0, 0x22, 0xc7, 0x62, 0x76, 0x43, 0x3a, 0xa2, 0x53, 0x8e, - 0xb7, 0xa9, 0xd5, 0xc6, 0x46, 0x06, 0xa7, 0x63, 0xe4, 0x1b, 0xe4, 0xed, 0x34, 0x7c, 0x96, 0xc9, - 0xd1, 0x76, 0x70, 0x38, 0xe0, 0x8f, 0xb5, 0xa7, 0x04, 0xd8, 0xff, 0xcb, 0xb1, 0x6b, 0xe4, 0xdf, - 0x6d, 0x60, 0x57, 0x97, 0x9d, 0x26, 0xce, 0x5b, 0x84, 0x5f, 0x47, 0xb8, 0xcf, 0x3b, 0xe0, 0x21, - 0x11, 0x15, 0xd6, 0x3f, 0x7a, 0x52, 0x0e, 0x26, 0x90, 0x04, 0xbc, 0xe3, 0x1c, 0x6f, 0x9a, 0x0c, - 0x4b, 0xf1, 0x3a, 0xf3, 0x9f, 0x37, 0x10, 0xee, 0xf5, 0xa8, 0x47, 0xdd, 0x0a, 0xbe, 0x11, 0x8e, - 0x32, 0x15, 0x2f, 0x08, 0x40, 0x0e, 0x72, 0x20, 0xfb, 0xc9, 0x58, 0x14, 0x10, 0x91, 0xa9, 0x5f, - 0x20, 0x3c, 0x20, 0xed, 0xd3, 0xc9, 0x6c, 0xe4, 0xad, 0x29, 0x9b, 0xe5, 0x28, 0x73, 0xed, 0xa8, - 0x00, 0xd6, 0xe3, 0x1c, 0xab, 0x4a, 0x66, 0xa2, 0xb0, 0xb6, 0x3e, 0x15, 0x1e, 0x86, 0xcd, 0x95, - 0x9c, 0xc7, 0xc2, 0x3f, 0x92, 0x63, 0x09, 0x3c, 0x17, 0x4e, 0xfe, 0x01, 0x4d, 0x20, 0x73, 0x96, - 0x93, 0xf9, 0x17, 0x39, 0x9d, 0x88, 0x4c, 0xd8, 0x93, 0xe1, 0x2e, 0xc2, 0x3b, 0x03, 0x8d, 0x3e, - 0x39, 0x1c, 0x73, 0x82, 0x7c, 0x77, 0xd3, 0x74, 0x32, 0x61, 0x00, 0xfd, 0x4f, 0x0e, 0xfa, 0x04, - 0x39, 0x1e, 0x71, 0xcc, 0xa0, 0xca, 0xcb, 0xce, 0xd6, 0xa7, 0xce, 0x4f, 0x33, 0xbe, 0x16, 0x98, - 0x64, 0xc3, 0x31, 0xc8, 0xc6, 0x08, 0x8a, 0x9a, 0x58, 0x3e, 0x51, 0xe2, 0xf8, 0x1b, 0x74, 0x0f, - 0xdc, 0x3b, 0x08, 0x7e, 0x68, 0xf1, 0xf6, 0x19, 0x64, 0x26, 0xdc, 0xbb, 0xa4, 0x4d, 0x53, 0xb2, - 0x49, 0xc5, 0x01, 0xeb, 0x21, 0x8e, 0x75, 0x9c, 0x50, 0x29, 0x56, 0x5f, 0xdf, 0x45, 0x3e, 0x77, - 0x4e, 0x64, 0xb0, 0x05, 0x8e, 0x3a, 0x91, 0x21, 0x9d, 0x7c, 0xd4, 0x89, 0x0c, 0xeb, 0xed, 0xa9, - 0xca, 0xc1, 0x1e, 0x24, 0x93, 0x52, 0xb0, 0xad, 0xdd, 0x3a, 0xb9, 0xe7, 0xdc, 0x76, 0x92, 0xa6, - 0x37, 0xea, 0xb6, 0x0b, 0x6f, 0xe5, 0xa3, 0x6e, 0xbb, 0x88, 0xe6, 0x9e, 0xce, 0x71, 0xe8, 0xd3, - 0xe4, 0x90, 0x14, 0xba, 0xb4, 0x57, 0x77, 0xef, 0x6a, 0x49, 0xbb, 0x1b, 0x85, 0x3e, 0xbc, 0x8b, - 0x8f, 0x42, 0x1f, 0xd1, 0xd7, 0xc7, 0xdc, 0xd5, 0xf2, 0x36, 0x9d, 0xbc, 0x87, 0xe0, 0xc7, 0x45, - 0x4f, 0x33, 0x4c, 0xa6, 0xe3, 0xae, 0x0a, 0x1f, 0xdc, 0x99, 0x84, 0xd2, 0x6d, 0xdc, 0x2e, 0x02, - 0x9c, 0x36, 0x7f, 0xff, 0x97, 0x74, 0xc7, 0x27, 0x6b, 0xe9, 0x8e, 0xfb, 0x6b, 0x69, 0xf4, 0x60, - 0x2d, 0x8d, 0x7e, 0x5e, 0x4b, 0xa3, 0xb7, 0x1e, 0xa5, 0x3b, 0x1e, 0x3c, 0x4a, 0x77, 0xfc, 0xf8, - 0x28, 0xdd, 0xf1, 0x6c, 0xb6, 0x58, 0xaa, 0xbf, 0xbc, 0x94, 0x67, 0x08, 0xc0, 0xdc, 0x8c, 0x75, - 0xe9, 0x52, 0x69, 0xa1, 0x64, 0x94, 0x1d, 0xf3, 0xe0, 0xa0, 0xde, 0xa8, 0x9a, 0x76, 0xbe, 0x87, - 0xff, 0x2b, 0xb9, 0xa3, 0xbf, 0x07, 0x00, 0x00, 0xff, 0xff, 0x6f, 0xd3, 0x9f, 0xfd, 0xff, 0x27, - 0x00, 0x00, + // 2103 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x5a, 0x5b, 0x6f, 0x14, 0xc9, + 0x15, 0x76, 0x1b, 0xdb, 0x84, 0xb2, 0xb9, 0xd5, 0xd8, 0x80, 0xdb, 0xf6, 0x8c, 0x5d, 0x18, 0xdb, + 0x80, 0x3d, 0x8d, 0x0d, 0x84, 0x80, 0x48, 0x14, 0xb7, 0x40, 0x09, 0x51, 0x10, 0x4e, 0x27, 0x51, + 0xa4, 0xdc, 0x26, 0x3d, 0xd3, 0xcd, 0x64, 0xc4, 0x78, 0xba, 0x99, 0x9e, 0x01, 0x06, 0x63, 0x89, + 0x5c, 0x78, 0x88, 0x92, 0x87, 0x44, 0x79, 0x8b, 0x14, 0x14, 0x29, 0x8a, 0x82, 0x44, 0xa2, 0x3c, + 0xe5, 0x89, 0x44, 0xca, 0x23, 0xca, 0x43, 0x44, 0x94, 0x48, 0xbb, 0x3c, 0xac, 0xb5, 0x6b, 0xf6, + 0x07, 0xac, 0xf8, 0x05, 0xab, 0xae, 0x3a, 0x7d, 0xa9, 0x9e, 0xea, 0xcb, 0xac, 0x6c, 0x6b, 0xb5, + 0x4f, 0xeb, 0xed, 0x3a, 0x97, 0xef, 0x3b, 0x75, 0xce, 0xa9, 0xaa, 0x33, 0xa0, 0x42, 0xc5, 0x5a, + 0x37, 0xcc, 0x07, 0x4a, 0xdd, 0x6c, 0x18, 0xca, 0xbd, 0xe5, 0xb2, 0xd9, 0xd2, 0x97, 0x95, 0xbb, + 0x6d, 0xb3, 0xd9, 0x29, 0xda, 0x4d, 0xab, 0x65, 0xe1, 0x1c, 0x13, 0x28, 0xba, 0x02, 0x45, 0x10, + 0x90, 0xcf, 0x54, 0x2c, 0x67, 0xdd, 0x72, 0x94, 0xb2, 0xee, 0x98, 0x4c, 0xda, 0xd7, 0xb5, 0xf5, + 0x6a, 0xad, 0xa1, 0xb7, 0x6a, 0x56, 0x83, 0x19, 0x90, 0x47, 0xab, 0x56, 0xd5, 0xa2, 0x7f, 0x2a, + 0xee, 0x5f, 0xf0, 0x75, 0xb2, 0x6a, 0x59, 0xd5, 0xba, 0xa9, 0xe8, 0x76, 0x4d, 0xd1, 0x1b, 0x0d, + 0xab, 0x45, 0x55, 0x1c, 0x58, 0xcd, 0x8b, 0x50, 0x51, 0x04, 0x6c, 0x7d, 0x5a, 0xb4, 0x6e, 0xeb, + 0x4d, 0x7d, 0x1d, 0x2c, 0x90, 0x51, 0x84, 0xbf, 0xe1, 0xe2, 0x5a, 0xa3, 0x1f, 0x35, 0xf3, 0x6e, + 0xdb, 0x74, 0x5a, 0x64, 0x0d, 0xe5, 0xb8, 0xaf, 0x8e, 0x6d, 0x35, 0x1c, 0x13, 0x5f, 0x46, 0x43, + 0x4c, 0xf9, 0x84, 0x34, 0x2d, 0x2d, 0x0c, 0xaf, 0x4c, 0x14, 0x05, 0xa4, 0x8b, 0x4c, 0x49, 0x1d, + 0x78, 0xb9, 0x55, 0xe8, 0xd3, 0x40, 0x81, 0x34, 0xd1, 0x51, 0x6a, 0xf1, 0xeb, 0x66, 0xc3, 0xf0, + 0xdc, 0xe0, 0x1f, 0x20, 0x14, 0x84, 0x01, 0x6c, 0xce, 0x15, 0x59, 0xcc, 0x8a, 0x6e, 0xcc, 0x8a, + 0x2c, 0xc2, 0x81, 0xe5, 0xaa, 0x09, 0xba, 0xea, 0xd8, 0xdb, 0xad, 0xc2, 0xd1, 0x8e, 0xbe, 0x5e, + 0xbf, 0x42, 0x02, 0x1b, 0x44, 0x0b, 0x19, 0x24, 0xff, 0x92, 0x80, 0x1c, 0x38, 0x05, 0x16, 0x5f, + 0x43, 0x83, 0x2e, 0x5e, 0x97, 0xc4, 0xbe, 0x85, 0xe1, 0x95, 0xbc, 0x90, 0x84, 0xab, 0xb2, 0xea, + 0x38, 0x66, 0x4b, 0x1d, 0x75, 0x79, 0xbc, 0xdd, 0x2a, 0x8c, 0x30, 0x67, 0x54, 0x95, 0x68, 0xcc, + 0x04, 0xfe, 0x21, 0xc7, 0xa0, 0x9f, 0x32, 0x98, 0x4f, 0x65, 0xc0, 0x80, 0x64, 0xa1, 0x40, 0xd0, + 0x11, 0x9f, 0x81, 0x17, 0xb5, 0x43, 0xa8, 0xbf, 0x66, 0xd0, 0x68, 0x0d, 0x68, 0xfd, 0x35, 0x83, + 0x7c, 0x3f, 0x14, 0x5a, 0x9f, 0xe4, 0x57, 0xd0, 0x80, 0x8b, 0x10, 0x82, 0x9a, 0xc6, 0x31, 0x07, + 0x1c, 0x87, 0x03, 0x8e, 0x44, 0xa3, 0x06, 0xc8, 0x1f, 0x25, 0x24, 0x53, 0xf3, 0xab, 0xf5, 0xba, + 0xab, 0xa0, 0x76, 0x6e, 0xdd, 0x6f, 0x98, 0x4d, 0x0f, 0xcc, 0x1c, 0x1a, 0xb4, 0xdc, 0xff, 0xa7, + 0x8e, 0x0e, 0xa8, 0x47, 0x82, 0x40, 0xd1, 0xcf, 0x44, 0x63, 0xcb, 0x91, 0xad, 0xee, 0xdf, 0xe9, + 0xad, 0xae, 0xa3, 0x09, 0x21, 0x48, 0x88, 0xc6, 0xcd, 0xde, 0xb6, 0xfc, 0x38, 0x84, 0xe3, 0x70, + 0x10, 0x8e, 0x52, 0x2d, 0xd8, 0x75, 0xf2, 0x8e, 0x84, 0x66, 0x04, 0xee, 0x56, 0x1b, 0xc6, 0x9a, + 0x65, 0xd5, 0x7b, 0x0d, 0xcd, 0x59, 0xb4, 0xdf, 0xb6, 0xac, 0x7a, 0xa9, 0x66, 0xd0, 0xb8, 0x0c, + 0xa8, 0xf8, 0xed, 0x56, 0xe1, 0x10, 0xf0, 0x65, 0x0b, 0x44, 0x1b, 0x72, 0xff, 0xba, 0x61, 0x44, + 0xe2, 0xb8, 0x6f, 0xa7, 0xe3, 0x68, 0x23, 0x92, 0x44, 0x6c, 0xe7, 0x2b, 0xc8, 0x6f, 0x0c, 0x6b, + 0x7a, 0xad, 0xb9, 0x57, 0x8d, 0xe1, 0x3d, 0xc9, 0xef, 0x7a, 0xd4, 0x29, 0xd0, 0xaa, 0xa2, 0x83, + 0xe6, 0x83, 0x96, 0xd9, 0x30, 0x4c, 0x83, 0x2e, 0x00, 0x3d, 0x22, 0xa4, 0x77, 0x1d, 0x24, 0x4b, + 0xae, 0xa8, 0x3a, 0x05, 0x14, 0xc7, 0x98, 0x63, 0xcf, 0x4c, 0xc9, 0x76, 0xed, 0x10, 0x8d, 0xb7, + 0xbb, 0x67, 0x5d, 0xc3, 0xf5, 0x16, 0xd7, 0x35, 0x3a, 0xa1, 0xb8, 0xfb, 0x11, 0x30, 0xd0, 0xc8, + 0xf5, 0x10, 0x52, 0x88, 0x7c, 0x96, 0x00, 0x4c, 0x42, 0x00, 0x46, 0x05, 0x01, 0x20, 0x1a, 0x67, + 0x95, 0x3c, 0xf2, 0x8a, 0xd5, 0xcd, 0x0e, 0x4d, 0x6f, 0x99, 0xce, 0x37, 0x5b, 0x7a, 0x6b, 0xaf, + 0x36, 0xff, 0x23, 0x09, 0x4d, 0x8a, 0xdd, 0x43, 0x10, 0x6c, 0x74, 0x38, 0xb2, 0x04, 0x89, 0x30, + 0x2b, 0x8c, 0x43, 0x44, 0x56, 0x9d, 0x86, 0x48, 0x9c, 0x60, 0x30, 0x74, 0x77, 0xb9, 0xd4, 0x74, + 0xd7, 0x4b, 0x8e, 0x2b, 0x40, 0xb4, 0xa8, 0xf9, 0x5d, 0xcf, 0x87, 0x45, 0xaf, 0x85, 0x73, 0x7e, + 0xe3, 0x32, 0xe3, 0x57, 0x92, 0x70, 0x7f, 0xfc, 0xf8, 0xac, 0xa3, 0x43, 0xfc, 0x0a, 0xec, 0x51, + 0xb6, 0xf0, 0x14, 0x20, 0x3c, 0xc7, 0xc5, 0xe1, 0x21, 0x5a, 0xc4, 0x78, 0xd0, 0x20, 0x2c, 0xab, + 0xbe, 0x57, 0x39, 0xf2, 0xc2, 0x6f, 0x10, 0xcc, 0x29, 0x30, 0xbf, 0x8e, 0x06, 0xdd, 0x36, 0xec, + 0xe5, 0xc3, 0xb8, 0xf8, 0xfa, 0x63, 0x59, 0xf5, 0x68, 0xcb, 0xa3, 0x5a, 0x44, 0x63, 0xda, 0x7b, + 0x57, 0xfe, 0xa1, 0xc3, 0x28, 0xba, 0xc9, 0xdf, 0x09, 0x45, 0xd5, 0xe7, 0xa7, 0xa2, 0x01, 0x17, + 0x21, 0xc4, 0x33, 0x81, 0x5e, 0xe4, 0xbe, 0xe0, 0x2a, 0x11, 0x8d, 0xea, 0x92, 0xc7, 0x12, 0x2a, + 0x04, 0xd9, 0xf3, 0x2d, 0xcb, 0xad, 0xf8, 0x9b, 0xba, 0x6d, 0xd7, 0x1a, 0xd5, 0xbd, 0xda, 0xbd, + 0x27, 0xfd, 0x68, 0x3a, 0x1e, 0x02, 0x70, 0x7d, 0x2c, 0xa1, 0x9c, 0xde, 0xbd, 0x0e, 0x5b, 0x3b, + 0x1f, 0x9f, 0xcb, 0x9c, 0xbc, 0x7a, 0x0a, 0x22, 0x31, 0x15, 0x4e, 0xe7, 0x96, 0x45, 0xfb, 0x5e, + 0x69, 0x1d, 0x8c, 0x12, 0x4d, 0xe4, 0x6a, 0xd7, 0xf3, 0x60, 0x13, 0xe5, 0x63, 0xc2, 0xe0, 0x6d, + 0x44, 0x11, 0x7d, 0x8e, 0x21, 0xf6, 0x72, 0x43, 0xcd, 0x05, 0xd7, 0x1e, 0x6f, 0x85, 0x68, 0xfb, + 0xe9, 0x9f, 0x37, 0x8c, 0x9e, 0xae, 0x2a, 0xe4, 0x0f, 0xf1, 0x99, 0xe0, 0xef, 0xc2, 0x26, 0xc2, + 0xdd, 0xab, 0x90, 0x11, 0x99, 0xf7, 0x60, 0x16, 0xf6, 0x60, 0x32, 0x61, 0x0f, 0x88, 0x26, 0x70, + 0x44, 0x5a, 0xf0, 0xce, 0x51, 0xad, 0x66, 0xd3, 0xba, 0xbf, 0x57, 0xf9, 0xf9, 0x6f, 0x09, 0x8d, + 0xf2, 0x6e, 0x21, 0x1a, 0x1a, 0xda, 0x5f, 0x66, 0x9f, 0x20, 0x0d, 0xa7, 0x85, 0x21, 0x60, 0x6a, + 0xec, 0x6e, 0x75, 0x0c, 0xb8, 0xc3, 0x26, 0x80, 0x3a, 0xd1, 0x3c, 0x43, 0xbb, 0x9e, 0x64, 0xb3, + 0xd0, 0x29, 0x19, 0xa8, 0xb8, 0x76, 0x73, 0x9b, 0x0b, 0xb4, 0x4f, 0xf8, 0x16, 0x1a, 0x62, 0x38, + 0x21, 0xc8, 0xe9, 0x7c, 0xc7, 0x80, 0xef, 0xc1, 0x30, 0x5f, 0xa2, 0x81, 0x19, 0xf2, 0x27, 0xff, + 0x70, 0xaf, 0xd7, 0x99, 0xda, 0xa7, 0xf3, 0xbd, 0xe2, 0xa0, 0xa9, 0x18, 0x98, 0xbb, 0x97, 0x0a, + 0xe4, 0xb5, 0x84, 0x4e, 0x0a, 0xbd, 0x7e, 0x06, 0x1e, 0x2e, 0x0f, 0xd1, 0x6c, 0x32, 0xb5, 0x5d, + 0x8c, 0xeb, 0xff, 0x25, 0x74, 0x2c, 0x68, 0x74, 0xdc, 0x5d, 0x76, 0x37, 0x1b, 0xec, 0x6e, 0x87, + 0xf4, 0x1e, 0x3a, 0xde, 0xc5, 0x0a, 0xa2, 0xf8, 0x3d, 0x84, 0x82, 0xaf, 0x50, 0xbb, 0x85, 0xf8, + 0x76, 0xcd, 0x6e, 0x7e, 0x32, 0xc4, 0x11, 0x87, 0xd9, 0xc3, 0x95, 0x38, 0x64, 0x8e, 0xfc, 0x59, + 0x42, 0xe3, 0xd4, 0xf1, 0x4d, 0xcb, 0x68, 0xd7, 0x4d, 0x55, 0xaf, 0xeb, 0x8d, 0x8a, 0x07, 0x3c, + 0x1c, 0x21, 0xa9, 0xc7, 0x08, 0xed, 0x78, 0x15, 0x3f, 0xf1, 0x66, 0x23, 0x11, 0xa4, 0xc1, 0x7b, + 0x92, 0x5b, 0x48, 0x7c, 0x4e, 0x71, 0x92, 0xd1, 0xf7, 0xe4, 0x3a, 0x5d, 0x2c, 0x95, 0xd9, 0x2a, + 0xd1, 0x78, 0xbb, 0x44, 0x46, 0x27, 0x28, 0x8c, 0x6b, 0xa6, 0x6d, 0x39, 0x35, 0x2e, 0x03, 0xdd, + 0xfb, 0xd8, 0xb8, 0x60, 0x11, 0x20, 0x56, 0xd0, 0x48, 0xf8, 0x3b, 0x20, 0x9c, 0x11, 0x22, 0x0c, + 0x0b, 0x46, 0xdf, 0x7b, 0x06, 0x5b, 0xf3, 0xb6, 0x93, 0x33, 0x4a, 0xf2, 0xd0, 0x93, 0xbf, 0xed, + 0x98, 0x4d, 0x11, 0xc4, 0xdf, 0x48, 0xd0, 0x0d, 0xbb, 0x05, 0xfc, 0x27, 0xd9, 0x91, 0xe8, 0x5a, + 0x76, 0xa8, 0x33, 0x00, 0x75, 0x9c, 0x41, 0x6d, 0x3b, 0x66, 0xb3, 0x14, 0xc1, 0xdb, 0x65, 0x9d, + 0xcc, 0xc0, 0xdd, 0x45, 0x33, 0x1d, 0xb3, 0x79, 0xcf, 0x14, 0xc1, 0xfe, 0xbd, 0x04, 0xd7, 0x4c, + 0xa1, 0x0c, 0x20, 0xef, 0xa0, 0x9c, 0x60, 0x39, 0x3b, 0xf8, 0xc8, 0xdd, 0xa6, 0xc9, 0x6c, 0x45, + 0xf1, 0x8b, 0x7c, 0xf8, 0x14, 0xd4, 0x76, 0x47, 0xd5, 0x2b, 0x77, 0x44, 0x14, 0x9e, 0x7a, 0x14, + 0x84, 0x32, 0x40, 0xe1, 0x21, 0xca, 0x09, 0x96, 0xb3, 0x53, 0x88, 0x5c, 0x91, 0xcb, 0xed, 0x4e, + 0xa9, 0xac, 0x57, 0xee, 0x74, 0x71, 0x10, 0x38, 0x21, 0xe3, 0xd0, 0x83, 0x58, 0x3f, 0xe6, 0xb0, + 0x3f, 0x82, 0xa4, 0xe7, 0x96, 0x00, 0xf2, 0x8f, 0xd0, 0x70, 0xe8, 0x73, 0x76, 0xa8, 0x13, 0x00, + 0x35, 0x17, 0x6e, 0xf5, 0x1e, 0xc0, 0xb0, 0x49, 0xb2, 0x0c, 0xde, 0x57, 0xdb, 0x15, 0xb7, 0x15, + 0xd0, 0x99, 0xb7, 0xd7, 0xa2, 0xc6, 0xd0, 0x90, 0x6e, 0xdb, 0x7e, 0x87, 0xd2, 0x06, 0x75, 0xdb, + 0xbe, 0x61, 0x90, 0x9f, 0x7b, 0x95, 0xc8, 0xeb, 0x04, 0xcd, 0x42, 0x0f, 0x7d, 0x77, 0x12, 0x9b, + 0x45, 0xd8, 0x82, 0x13, 0x6d, 0x16, 0x60, 0xa6, 0x04, 0x93, 0x77, 0x8d, 0xb7, 0xbb, 0xf2, 0xcf, + 0x69, 0x34, 0x48, 0x61, 0xe0, 0x9f, 0x48, 0x08, 0x05, 0xf3, 0x71, 0x3c, 0x27, 0x74, 0xd5, 0x35, + 0xb5, 0x97, 0xe7, 0x53, 0xe5, 0x18, 0x25, 0x42, 0x7e, 0xfa, 0xbf, 0x0f, 0x7f, 0xdb, 0x3f, 0x89, + 0x65, 0x25, 0xee, 0x67, 0x0a, 0x07, 0xff, 0x4c, 0x42, 0x07, 0x7c, 0x55, 0x7c, 0x2a, 0xd9, 0xb4, + 0x87, 0x60, 0x2e, 0x4d, 0x0c, 0x00, 0xcc, 0x53, 0x00, 0x33, 0xb8, 0x10, 0x0f, 0x40, 0xd9, 0xa8, + 0x19, 0x9b, 0xf8, 0xaf, 0x12, 0xdc, 0x4f, 0xf9, 0xb9, 0x27, 0x56, 0xe2, 0x1d, 0x09, 0xc7, 0xe1, + 0xf2, 0xb9, 0xec, 0x0a, 0x80, 0xf1, 0x3c, 0xc5, 0xb8, 0x84, 0xcf, 0xc6, 0x63, 0x2c, 0x95, 0x3b, + 0x25, 0x7a, 0xe3, 0x52, 0x36, 0xe8, 0x7f, 0x36, 0xf1, 0x7f, 0xc5, 0x43, 0x79, 0xb8, 0xec, 0xe0, + 0xcf, 0x67, 0x45, 0xc1, 0x5f, 0xfc, 0xe4, 0x4b, 0x3d, 0xeb, 0x01, 0x09, 0x95, 0x92, 0xb8, 0x8a, + 0xaf, 0x64, 0x20, 0x51, 0x72, 0xcf, 0x66, 0x8f, 0x89, 0xb2, 0x01, 0x67, 0xf6, 0xa6, 0xfb, 0x20, + 0x1f, 0x62, 0x29, 0x8a, 0x13, 0x32, 0x8c, 0xfb, 0x9d, 0x4a, 0x5e, 0x48, 0x17, 0x04, 0x84, 0x27, + 0x29, 0xc2, 0x29, 0x3c, 0xa1, 0xc4, 0xff, 0x24, 0x16, 0x14, 0x04, 0x1b, 0xd3, 0xce, 0x25, 0x59, + 0x0f, 0xa6, 0xd5, 0xf2, 0x7c, 0xaa, 0x5c, 0xa6, 0x82, 0xa0, 0xb3, 0xe2, 0xa0, 0x20, 0x5c, 0xd5, + 0xa4, 0x82, 0x08, 0x0d, 0x77, 0xe5, 0xb9, 0x34, 0xb1, 0x4c, 0x05, 0x41, 0x01, 0xb0, 0x82, 0x78, + 0xee, 0x3d, 0x51, 0xa3, 0xa3, 0xca, 0xa4, 0x04, 0x17, 0x8e, 0x73, 0xe5, 0xe5, 0x1e, 0x34, 0x00, + 0x66, 0x91, 0xc2, 0x5c, 0xc0, 0x73, 0x42, 0x98, 0x5d, 0x13, 0xd5, 0x50, 0xf9, 0x72, 0x06, 0x13, + 0xcb, 0x57, 0x34, 0x0a, 0x95, 0xcf, 0x65, 0x57, 0xc8, 0x54, 0xbe, 0x5d, 0x50, 0x59, 0x74, 0x83, + 0x3c, 0xa3, 0xf3, 0xc0, 0xa4, 0xdd, 0x0b, 0x0d, 0x3d, 0x13, 0xf3, 0x2c, 0x3c, 0xa7, 0x4c, 0xcb, + 0x33, 0xea, 0x34, 0xc8, 0x33, 0xb7, 0x63, 0x9c, 0x4a, 0x36, 0x9d, 0x25, 0xcf, 0xc2, 0xfd, 0x20, + 0x25, 0xcf, 0x5c, 0x00, 0x2c, 0x12, 0xff, 0x90, 0xbc, 0x73, 0x54, 0x30, 0x1f, 0xbb, 0x90, 0xb2, + 0x1b, 0xc2, 0xe1, 0xa2, 0x7c, 0xb1, 0x47, 0xad, 0x1e, 0x36, 0x32, 0x3a, 0xd7, 0xc3, 0xff, 0x91, + 0xc2, 0x6f, 0x24, 0xce, 0x32, 0x3e, 0xdf, 0x0b, 0x0e, 0x0f, 0xfc, 0x85, 0xde, 0x94, 0x00, 0xfb, + 0x57, 0x29, 0x76, 0x15, 0x7f, 0xb9, 0x07, 0xec, 0xca, 0x86, 0xf7, 0xfc, 0x0c, 0x37, 0xe1, 0x5f, + 0x48, 0x68, 0x24, 0x3c, 0x9a, 0xc2, 0x09, 0x1d, 0x96, 0x1f, 0x9a, 0xc9, 0xa7, 0x33, 0x48, 0x02, + 0xde, 0x59, 0x8a, 0x37, 0x8f, 0x27, 0x85, 0x78, 0xbd, 0xc9, 0xd5, 0x2f, 0x25, 0x34, 0x1c, 0x52, + 0x4f, 0x3a, 0x15, 0xb8, 0xe1, 0x93, 0xbc, 0x90, 0x2e, 0x08, 0x40, 0x4e, 0x53, 0x20, 0x27, 0xf1, + 0x4c, 0x12, 0x10, 0x96, 0xa9, 0x7f, 0x97, 0xd0, 0x98, 0x70, 0xc2, 0x80, 0x97, 0x13, 0x4f, 0x4d, + 0xd1, 0x14, 0x4a, 0x5e, 0xe9, 0x45, 0x05, 0xb0, 0x5e, 0xa4, 0x58, 0x15, 0xbc, 0x94, 0x84, 0xb5, + 0xfb, 0xaa, 0xf0, 0x3a, 0x6e, 0x22, 0xe6, 0x5d, 0x16, 0xbe, 0x90, 0x1d, 0x4b, 0xe4, 0xba, 0x70, + 0xf9, 0x13, 0x68, 0x02, 0x99, 0x6b, 0x94, 0xcc, 0x97, 0xf0, 0xd5, 0x4c, 0x64, 0xe2, 0xae, 0x0c, + 0xcf, 0x25, 0x74, 0x38, 0x32, 0xa2, 0xc0, 0x67, 0x53, 0x2a, 0x88, 0x3b, 0x9b, 0x16, 0xb3, 0x09, + 0x03, 0xe8, 0x2f, 0x52, 0xd0, 0x97, 0xf0, 0xc5, 0x84, 0x32, 0x83, 0x2e, 0x2f, 0xaa, 0xad, 0xbf, + 0x78, 0x3f, 0x2a, 0x71, 0x8f, 0x77, 0x5c, 0x8c, 0xc7, 0x20, 0x1a, 0x80, 0xc8, 0x4a, 0x66, 0xf9, + 0x4c, 0x89, 0xc3, 0x8f, 0x16, 0x42, 0x70, 0x9f, 0x4a, 0xf0, 0x13, 0x51, 0xf8, 0x85, 0x84, 0x97, + 0xe2, 0xbd, 0x0b, 0x1e, 0x98, 0x72, 0x31, 0xab, 0x38, 0x60, 0x3d, 0x43, 0xb1, 0xce, 0x62, 0x22, + 0xc4, 0xca, 0xbd, 0x18, 0xf1, 0xdf, 0xbc, 0x8a, 0x8c, 0x3e, 0xde, 0x93, 0x2a, 0x32, 0x66, 0x06, + 0x91, 0x54, 0x91, 0x71, 0x53, 0x09, 0xa2, 0x50, 0xb0, 0xa7, 0xf1, 0xbc, 0x10, 0x6c, 0xf7, 0x9c, + 0x01, 0xbf, 0xf0, 0x4e, 0x3b, 0xc1, 0x73, 0x3d, 0xe9, 0xb4, 0x8b, 0x1f, 0x42, 0x24, 0x9d, 0x76, + 0x09, 0x63, 0x09, 0xb2, 0x42, 0xa1, 0x2f, 0xe2, 0x33, 0x42, 0xe8, 0xc2, 0x29, 0x43, 0x70, 0x56, + 0x0b, 0x1e, 0xea, 0x49, 0xe8, 0xe3, 0xe7, 0x0f, 0x49, 0xe8, 0x13, 0x26, 0x12, 0x29, 0x67, 0xb5, + 0x78, 0xc0, 0x80, 0x7f, 0x27, 0xc1, 0xcf, 0xa2, 0xa1, 0x67, 0x3c, 0x5e, 0x4c, 0x3b, 0x2a, 0x38, + 0xb8, 0x4b, 0x19, 0xa5, 0x7b, 0x38, 0x5d, 0x00, 0xdc, 0x33, 0xaf, 0x37, 0x70, 0x2f, 0xfb, 0xa4, + 0x6a, 0x13, 0x0c, 0x1e, 0x92, 0xaa, 0x4d, 0x34, 0x73, 0x48, 0xbb, 0xf3, 0x30, 0x15, 0xf6, 0x36, + 0x52, 0x36, 0xd8, 0x48, 0x63, 0x53, 0x5d, 0x7b, 0xf9, 0x41, 0xbe, 0xef, 0xd9, 0x76, 0xbe, 0xef, + 0xe5, 0x76, 0x5e, 0x7a, 0xb5, 0x9d, 0x97, 0xde, 0xdf, 0xce, 0x4b, 0xbf, 0x7e, 0x93, 0xef, 0x7b, + 0xf5, 0x26, 0xdf, 0xf7, 0xee, 0x9b, 0x7c, 0xdf, 0x77, 0x8b, 0xd5, 0x5a, 0xeb, 0xc7, 0xed, 0xb2, + 0x0b, 0x06, 0x0c, 0x2f, 0x59, 0xb7, 0x6f, 0xd7, 0x2a, 0x35, 0xbd, 0xee, 0x39, 0x02, 0x57, 0xad, + 0x8e, 0x6d, 0x3a, 0xe5, 0x21, 0xfa, 0x4f, 0x11, 0xcf, 0x7f, 0x1c, 0x00, 0x00, 0xff, 0xff, 0x07, + 0x33, 0x21, 0x9b, 0x64, 0x29, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -2039,6 +2120,7 @@ type QueryClient interface { QueryReserveDepositStats(ctx context.Context, in *QueryReserveDepositStatsRequest, opts ...grpc.CallOption) (*QueryReserveDepositStatsResponse, error) QueryBuyBackDepositStats(ctx context.Context, in *QueryBuyBackDepositStatsRequest, opts ...grpc.CallOption) (*QueryBuyBackDepositStatsResponse, error) QueryBorrowStats(ctx context.Context, in *QueryBorrowStatsRequest, opts ...grpc.CallOption) (*QueryBorrowStatsResponse, error) + QueryAuctionParams(ctx context.Context, in *QueryAuctionParamRequest, opts ...grpc.CallOption) (*QueryAuctionParamResponse, error) } type queryClient struct { @@ -2265,6 +2347,15 @@ func (c *queryClient) QueryBorrowStats(ctx context.Context, in *QueryBorrowStats return out, nil } +func (c *queryClient) QueryAuctionParams(ctx context.Context, in *QueryAuctionParamRequest, opts ...grpc.CallOption) (*QueryAuctionParamResponse, error) { + out := new(QueryAuctionParamResponse) + err := c.cc.Invoke(ctx, "/comdex.lend.v1beta1.Query/QueryAuctionParams", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + // QueryServer is the server API for Query service. type QueryServer interface { QueryLends(context.Context, *QueryLendsRequest) (*QueryLendsResponse, error) @@ -2291,6 +2382,7 @@ type QueryServer interface { QueryReserveDepositStats(context.Context, *QueryReserveDepositStatsRequest) (*QueryReserveDepositStatsResponse, error) QueryBuyBackDepositStats(context.Context, *QueryBuyBackDepositStatsRequest) (*QueryBuyBackDepositStatsResponse, error) QueryBorrowStats(context.Context, *QueryBorrowStatsRequest) (*QueryBorrowStatsResponse, error) + QueryAuctionParams(context.Context, *QueryAuctionParamRequest) (*QueryAuctionParamResponse, error) } // UnimplementedQueryServer can be embedded to have forward compatible implementations. @@ -2369,6 +2461,9 @@ func (*UnimplementedQueryServer) QueryBuyBackDepositStats(ctx context.Context, r func (*UnimplementedQueryServer) QueryBorrowStats(ctx context.Context, req *QueryBorrowStatsRequest) (*QueryBorrowStatsResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method QueryBorrowStats not implemented") } +func (*UnimplementedQueryServer) QueryAuctionParams(ctx context.Context, req *QueryAuctionParamRequest) (*QueryAuctionParamResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method QueryAuctionParams not implemented") +} func RegisterQueryServer(s grpc1.Server, srv QueryServer) { s.RegisterService(&_Query_serviceDesc, srv) @@ -2806,6 +2901,24 @@ func _Query_QueryBorrowStats_Handler(srv interface{}, ctx context.Context, dec f return interceptor(ctx, in, info, handler) } +func _Query_QueryAuctionParams_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryAuctionParamRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(QueryServer).QueryAuctionParams(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/comdex.lend.v1beta1.Query/QueryAuctionParams", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(QueryServer).QueryAuctionParams(ctx, req.(*QueryAuctionParamRequest)) + } + return interceptor(ctx, in, info, handler) +} + var _Query_serviceDesc = grpc.ServiceDesc{ ServiceName: "comdex.lend.v1beta1.Query", HandlerType: (*QueryServer)(nil), @@ -2906,6 +3019,10 @@ var _Query_serviceDesc = grpc.ServiceDesc{ MethodName: "QueryBorrowStats", Handler: _Query_QueryBorrowStats_Handler, }, + { + MethodName: "QueryAuctionParams", + Handler: _Query_QueryAuctionParams_Handler, + }, }, Streams: []grpc.StreamDesc{}, Metadata: "comdex/lend/v1beta1/query.proto", @@ -4599,6 +4716,67 @@ func (m *QueryBorrowStatsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error return len(dAtA) - i, nil } +func (m *QueryAuctionParamRequest) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryAuctionParamRequest) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryAuctionParamRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.AppId != 0 { + i = encodeVarintQuery(dAtA, i, uint64(m.AppId)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func (m *QueryAuctionParamResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *QueryAuctionParamResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *QueryAuctionParamResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + { + size, err := m.AuctionParams.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintQuery(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + return len(dAtA) - i, nil +} + func encodeVarintQuery(dAtA []byte, offset int, v uint64) int { offset -= sovQuery(v) base := offset @@ -5254,6 +5432,29 @@ func (m *QueryBorrowStatsResponse) Size() (n int) { return n } +func (m *QueryAuctionParamRequest) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.AppId != 0 { + n += 1 + sovQuery(uint64(m.AppId)) + } + return n +} + +func (m *QueryAuctionParamResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = m.AuctionParams.Size() + n += 1 + l + sovQuery(uint64(l)) + return n +} + func sovQuery(x uint64) (n int) { return (math_bits.Len64(x|1) + 6) / 7 } @@ -9466,6 +9667,158 @@ func (m *QueryBorrowStatsResponse) Unmarshal(dAtA []byte) error { } return nil } +func (m *QueryAuctionParamRequest) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryAuctionParamRequest: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryAuctionParamRequest: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field AppId", wireType) + } + m.AppId = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.AppId |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *QueryAuctionParamResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: QueryAuctionParamResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: QueryAuctionParamResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AuctionParams", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthQuery + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthQuery + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.AuctionParams.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipQuery(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthQuery + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func skipQuery(dAtA []byte) (n int, err error) { l := len(dAtA) iNdEx := 0 diff --git a/x/lend/types/query.pb.gw.go b/x/lend/types/query.pb.gw.go index c1ea95d8d..242dbb8c7 100644 --- a/x/lend/types/query.pb.gw.go +++ b/x/lend/types/query.pb.gw.go @@ -1201,6 +1201,60 @@ func local_request_Query_QueryBorrowStats_0(ctx context.Context, marshaler runti } +func request_Query_QueryAuctionParams_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryAuctionParamRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["app_id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "app_id") + } + + protoReq.AppId, err = runtime.Uint64(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "app_id", err) + } + + msg, err := client.QueryAuctionParams(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + return msg, metadata, err + +} + +func local_request_Query_QueryAuctionParams_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryAuctionParamRequest + var metadata runtime.ServerMetadata + + var ( + val string + ok bool + err error + _ = err + ) + + val, ok = pathParams["app_id"] + if !ok { + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "app_id") + } + + protoReq.AppId, err = runtime.Uint64(val) + + if err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "app_id", err) + } + + msg, err := server.QueryAuctionParams(ctx, &protoReq) + return msg, metadata, err + +} + // RegisterQueryHandlerServer registers the http handlers for service Query to "mux". // UnaryRPC :call QueryServer directly. // StreamingRPC :currently unsupported pending https://github.com/grpc/grpc-go/issues/906. @@ -1759,6 +1813,29 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv }) + mux.Handle("GET", pattern_Query_QueryAuctionParams_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + var stream runtime.ServerTransportStream + ctx = grpc.NewContextWithServerTransportStream(ctx, &stream) + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := local_request_Query_QueryAuctionParams_0(rctx, inboundMarshaler, server, req, pathParams) + md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_QueryAuctionParams_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + return nil } @@ -2280,6 +2357,26 @@ func RegisterQueryHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie }) + mux.Handle("GET", pattern_Query_QueryAuctionParams_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + ctx, cancel := context.WithCancel(req.Context()) + defer cancel() + inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) + rctx, err := runtime.AnnotateContext(ctx, mux, req) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + resp, md, err := request_Query_QueryAuctionParams_0(rctx, inboundMarshaler, client, req, pathParams) + ctx = runtime.NewServerMetadataContext(ctx, md) + if err != nil { + runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) + return + } + + forward_Query_QueryAuctionParams_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + + }) + return nil } @@ -2331,6 +2428,8 @@ var ( pattern_Query_QueryBuyBackDepositStats_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"comdex", "lend", "v1beta1", "buy_back_deposit_stats"}, "", runtime.AssumeColonVerbOpt(false))) pattern_Query_QueryBorrowStats_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"comdex", "lend", "v1beta1", "borrow_stats"}, "", runtime.AssumeColonVerbOpt(false))) + + pattern_Query_QueryAuctionParams_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4}, []string{"comdex", "lend", "v1beta1", "auctionparams", "app_id"}, "", runtime.AssumeColonVerbOpt(false))) ) var ( @@ -2381,4 +2480,6 @@ var ( forward_Query_QueryBuyBackDepositStats_0 = runtime.ForwardResponseMessage forward_Query_QueryBorrowStats_0 = runtime.ForwardResponseMessage + + forward_Query_QueryAuctionParams_0 = runtime.ForwardResponseMessage ) diff --git a/x/lend/types/tx.go b/x/lend/types/tx.go index c6089f0c6..188de150a 100644 --- a/x/lend/types/tx.go +++ b/x/lend/types/tx.go @@ -1,8 +1,8 @@ package types import ( + "fmt" sdk "github.com/cosmos/cosmos-sdk/types" - sdkerrors "github.com/cosmos/cosmos-sdk/types/errors" ) func NewMsgLend(lender string, assetID uint64, amount sdk.Coin, poolID, appID uint64) *MsgLend { @@ -16,16 +16,24 @@ func NewMsgLend(lender string, assetID uint64, amount sdk.Coin, poolID, appID ui } func (msg MsgLend) Route() string { return ModuleName } -func (msg MsgLend) Type() string { return EventTypeLoanAsset } +func (msg MsgLend) Type() string { return TypeLendAssetRequest } func (msg *MsgLend) ValidateBasic() error { _, err := sdk.AccAddressFromBech32(msg.GetLender()) if err != nil { return err } - - if asset := msg.GetAmount(); !asset.IsValid() { - return sdkerrors.Wrap(ErrInvalidAsset, asset.String()) + if msg.AssetId <= 0 { + return fmt.Errorf("asset id should be positive: %d > 0", msg.AssetId) + } + if msg.Amount.Amount.IsNegative() || msg.Amount.Amount.IsZero() { + return fmt.Errorf("invalid coin amount: %s < 0", msg.Amount.Amount) + } + if msg.PoolId <= 0 { + return fmt.Errorf("pool id should be positive: %d > 0", msg.AssetId) + } + if msg.AppId <= 0 { + return fmt.Errorf("app id should be positive: %d > 0", msg.AppId) } return nil @@ -51,7 +59,7 @@ func NewMsgWithdraw(lender string, lendID uint64, amount sdk.Coin) *MsgWithdraw } func (msg MsgWithdraw) Route() string { return ModuleName } -func (msg MsgWithdraw) Type() string { return EventTypeWithdrawLoanedAsset } +func (msg MsgWithdraw) Type() string { return TypeWithdrawAssetRequest } func (msg *MsgWithdraw) ValidateBasic() error { _, err := sdk.AccAddressFromBech32(msg.GetLender()) @@ -59,8 +67,11 @@ func (msg *MsgWithdraw) ValidateBasic() error { return err } - if asset := msg.GetAmount(); !asset.IsValid() { - return sdkerrors.Wrap(ErrInvalidAsset, asset.String()) + if msg.LendId <= 0 { + return fmt.Errorf("lend id should be positive: %d > 0", msg.LendId) + } + if msg.Amount.Amount.IsNegative() || msg.Amount.Amount.IsZero() { + return fmt.Errorf("invalid coin amount: %s < 0", msg.Amount.Amount) } return nil @@ -89,7 +100,7 @@ func NewMsgBorrow(borrower string, lendID, pairID uint64, isStableBorrow bool, a } func (msg MsgBorrow) Route() string { return ModuleName } -func (msg MsgBorrow) Type() string { return EventTypeBorrowAsset } +func (msg MsgBorrow) Type() string { return TypeBorrowAssetRequest } func (msg *MsgBorrow) ValidateBasic() error { _, err := sdk.AccAddressFromBech32(msg.GetBorrower()) @@ -97,18 +108,27 @@ func (msg *MsgBorrow) ValidateBasic() error { return err } - if asset := msg.GetAmountIn(); !asset.IsValid() { - return sdkerrors.Wrap(ErrInvalidAsset, asset.String()) + if msg.LendId <= 0 { + return fmt.Errorf("lend id should be positive: %d > 0", msg.LendId) } - if asset := msg.GetAmountOut(); !asset.IsValid() { - return sdkerrors.Wrap(ErrInvalidAsset, asset.String()) + if msg.PairId <= 0 { + return fmt.Errorf("pair id should be positive: %d > 0", msg.PairId) + } + if msg.AmountIn.Amount.IsNegative() || msg.AmountIn.Amount.IsZero() { + return fmt.Errorf("invalid coin amount: %s < 0", msg.AmountIn.Amount) + } + if msg.AmountOut.Amount.IsNegative() || msg.AmountOut.Amount.IsZero() { + return fmt.Errorf("invalid coin amount: %s < 0", msg.AmountOut.Amount) } return nil } func (msg *MsgBorrow) GetSigners() []sdk.AccAddress { - borrower, _ := sdk.AccAddressFromBech32(msg.GetBorrower()) + borrower, err := sdk.AccAddressFromBech32(msg.GetBorrower()) + if err != nil { + panic(err) + } return []sdk.AccAddress{borrower} } @@ -127,7 +147,7 @@ func NewMsgRepay(borrower string, borrowID uint64, amount sdk.Coin) *MsgRepay { } func (msg MsgRepay) Route() string { return ModuleName } -func (msg MsgRepay) Type() string { return EventTypeRepayBorrowedAsset } +func (msg MsgRepay) Type() string { return TypeRepayAssetRequest } func (msg *MsgRepay) ValidateBasic() error { _, err := sdk.AccAddressFromBech32(msg.GetBorrower()) @@ -135,15 +155,21 @@ func (msg *MsgRepay) ValidateBasic() error { return err } - if asset := msg.GetAmount(); !asset.IsValid() { - return sdkerrors.Wrap(ErrInvalidAsset, asset.String()) + if msg.BorrowId <= 0 { + return fmt.Errorf("borrower id should be positive: %d > 0", msg.BorrowId) + } + if msg.Amount.Amount.IsNegative() || msg.Amount.Amount.IsZero() { + return fmt.Errorf("invalid coin amount: %s < 0", msg.Amount.Amount) } return nil } func (msg *MsgRepay) GetSigners() []sdk.AccAddress { - borrower, _ := sdk.AccAddressFromBech32(msg.GetBorrower()) + borrower, err := sdk.AccAddressFromBech32(msg.GetBorrower()) + if err != nil { + panic(err) + } return []sdk.AccAddress{borrower} } @@ -163,7 +189,7 @@ func NewMsgFundModuleAccounts(moduleName string, assetID uint64, lender string, } func (msg MsgFundModuleAccounts) Route() string { return ModuleName } -func (msg MsgFundModuleAccounts) Type() string { return EventTypeLoanAsset } +func (msg MsgFundModuleAccounts) Type() string { return TypeFundModuleAccountRequest } func (msg *MsgFundModuleAccounts) ValidateBasic() error { _, err := sdk.AccAddressFromBech32(msg.GetLender()) @@ -171,15 +197,21 @@ func (msg *MsgFundModuleAccounts) ValidateBasic() error { return err } - if asset := msg.GetAmount(); !asset.IsValid() { - return sdkerrors.Wrap(ErrInvalidAsset, asset.String()) + if msg.AssetId <= 0 { + return fmt.Errorf("asset id should be positive: %d > 0", msg.AssetId) + } + if msg.Amount.Amount.IsNegative() || msg.Amount.Amount.IsZero() { + return fmt.Errorf("invalid coin amount: %s < 0", msg.Amount.Amount) } return nil } func (msg *MsgFundModuleAccounts) GetSigners() []sdk.AccAddress { - lender, _ := sdk.AccAddressFromBech32(msg.GetLender()) + lender, err := sdk.AccAddressFromBech32(msg.GetLender()) + if err != nil { + panic(err) + } return []sdk.AccAddress{lender} } @@ -198,7 +230,7 @@ func NewMsgDeposit(lender string, lendID uint64, amount sdk.Coin) *MsgDeposit { } func (msg MsgDeposit) Route() string { return ModuleName } -func (msg MsgDeposit) Type() string { return EventTypeWithdrawLoanedAsset } +func (msg MsgDeposit) Type() string { return TypeDepositAssetRequest } func (msg *MsgDeposit) ValidateBasic() error { _, err := sdk.AccAddressFromBech32(msg.GetLender()) @@ -206,15 +238,21 @@ func (msg *MsgDeposit) ValidateBasic() error { return err } - if asset := msg.GetAmount(); !asset.IsValid() { - return sdkerrors.Wrap(ErrInvalidAsset, asset.String()) + if msg.LendId <= 0 { + return fmt.Errorf("lend id should be positive: %d > 0", msg.LendId) + } + if msg.Amount.Amount.IsNegative() || msg.Amount.Amount.IsZero() { + return fmt.Errorf("invalid coin amount: %s < 0", msg.Amount.Amount) } return nil } func (msg *MsgDeposit) GetSigners() []sdk.AccAddress { - lender, _ := sdk.AccAddressFromBech32(msg.GetLender()) + lender, err := sdk.AccAddressFromBech32(msg.GetLender()) + if err != nil { + panic(err) + } return []sdk.AccAddress{lender} } @@ -232,18 +270,25 @@ func NewMsgCloseLend(lender string, lendID uint64) *MsgCloseLend { } func (msg MsgCloseLend) Route() string { return ModuleName } -func (msg MsgCloseLend) Type() string { return EventTypeWithdrawLoanedAsset } +func (msg MsgCloseLend) Type() string { return TypeCloseLendAssetRequest } func (msg *MsgCloseLend) ValidateBasic() error { _, err := sdk.AccAddressFromBech32(msg.GetLender()) if err != nil { return err } + if msg.LendId <= 0 { + return fmt.Errorf("lend id should be positive: %d > 0", msg.LendId) + } + return nil } func (msg *MsgCloseLend) GetSigners() []sdk.AccAddress { - lender, _ := sdk.AccAddressFromBech32(msg.GetLender()) + lender, err := sdk.AccAddressFromBech32(msg.GetLender()) + if err != nil { + panic(err) + } return []sdk.AccAddress{lender} } @@ -262,23 +307,27 @@ func NewMsgDraw(borrower string, borrowID uint64, amount sdk.Coin) *MsgDraw { } func (msg MsgDraw) Route() string { return ModuleName } -func (msg MsgDraw) Type() string { return EventTypeWithdrawLoanedAsset } +func (msg MsgDraw) Type() string { return TypeDrawAssetRequest } func (msg *MsgDraw) ValidateBasic() error { _, err := sdk.AccAddressFromBech32(msg.GetBorrower()) if err != nil { return err } - - if asset := msg.GetAmount(); !asset.IsValid() { - return sdkerrors.Wrap(ErrInvalidAsset, asset.String()) + if msg.BorrowId <= 0 { + return fmt.Errorf("borrow id should be positive: %d > 0", msg.BorrowId) + } + if msg.Amount.Amount.IsNegative() || msg.Amount.Amount.IsZero() { + return fmt.Errorf("invalid coin amount: %s < 0", msg.Amount.Amount) } - return nil } func (msg *MsgDraw) GetSigners() []sdk.AccAddress { - lender, _ := sdk.AccAddressFromBech32(msg.GetBorrower()) + lender, err := sdk.AccAddressFromBech32(msg.GetBorrower()) + if err != nil { + panic(err) + } return []sdk.AccAddress{lender} } @@ -297,7 +346,7 @@ func NewMsgDepositBorrow(borrower string, borrowID uint64, amount sdk.Coin) *Msg } func (msg MsgDepositBorrow) Route() string { return ModuleName } -func (msg MsgDepositBorrow) Type() string { return EventTypeWithdrawLoanedAsset } +func (msg MsgDepositBorrow) Type() string { return TypeDepositBorrowdAssetRequest } func (msg *MsgDepositBorrow) ValidateBasic() error { _, err := sdk.AccAddressFromBech32(msg.GetBorrower()) @@ -305,15 +354,20 @@ func (msg *MsgDepositBorrow) ValidateBasic() error { return err } - if asset := msg.GetAmount(); !asset.IsValid() { - return sdkerrors.Wrap(ErrInvalidAsset, asset.String()) + if msg.BorrowId <= 0 { + return fmt.Errorf("borrow id should be positive: %d > 0", msg.BorrowId) + } + if msg.Amount.Amount.IsNegative() || msg.Amount.Amount.IsZero() { + return fmt.Errorf("invalid coin amount: %s < 0", msg.Amount.Amount) } - return nil } func (msg *MsgDepositBorrow) GetSigners() []sdk.AccAddress { - lender, _ := sdk.AccAddressFromBech32(msg.GetBorrower()) + lender, err := sdk.AccAddressFromBech32(msg.GetBorrower()) + if err != nil { + panic(err) + } return []sdk.AccAddress{lender} } @@ -331,19 +385,25 @@ func NewMsgCloseBorrow(borrower string, borrowID uint64) *MsgCloseBorrow { } func (msg MsgCloseBorrow) Route() string { return ModuleName } -func (msg MsgCloseBorrow) Type() string { return EventTypeWithdrawLoanedAsset } +func (msg MsgCloseBorrow) Type() string { return TypeCloseBorrowAssetRequest } func (msg *MsgCloseBorrow) ValidateBasic() error { _, err := sdk.AccAddressFromBech32(msg.GetBorrower()) if err != nil { return err } + if msg.BorrowId <= 0 { + return fmt.Errorf("borrow id should be positive: %d > 0", msg.BorrowId) + } return nil } func (msg *MsgCloseBorrow) GetSigners() []sdk.AccAddress { - lender, _ := sdk.AccAddressFromBech32(msg.GetBorrower()) + lender, err := sdk.AccAddressFromBech32(msg.GetBorrower()) + if err != nil { + panic(err) + } return []sdk.AccAddress{lender} } @@ -352,3 +412,61 @@ func (msg *MsgCloseBorrow) GetSignBytes() []byte { bz := ModuleCdc.MustMarshalJSON(msg) return sdk.MustSortJSON(bz) } + +func NewMsgBorrowAlternate(lender string, assetID, poolID uint64, amountIn sdk.Coin, pairID uint64, stableBorrow bool, amountOut sdk.Coin, appID uint64) *MsgBorrowAlternate { + return &MsgBorrowAlternate{ + Lender: lender, + AssetId: assetID, + PoolId: poolID, + AmountIn: amountIn, + PairId: pairID, + IsStableBorrow: stableBorrow, + AmountOut: amountOut, + AppId: appID, + } +} + +func (msg MsgBorrowAlternate) Route() string { return ModuleName } +func (msg MsgBorrowAlternate) Type() string { return TypeBorrowAlternateAssetRequest } + +func (msg *MsgBorrowAlternate) ValidateBasic() error { + _, err := sdk.AccAddressFromBech32(msg.GetLender()) + if err != nil { + return err + } + + if msg.AssetId <= 0 { + return fmt.Errorf("asset id should be positive: %d > 0", msg.AssetId) + } + if msg.PoolId <= 0 { + return fmt.Errorf("pool id should be positive: %d > 0", msg.PoolId) + } + if msg.PairId <= 0 { + return fmt.Errorf("pair id should be positive: %d > 0", msg.PairId) + } + if msg.AppId <= 0 { + return fmt.Errorf("pair id should be positive: %d > 0", msg.AppId) + } + if msg.AmountIn.Amount.IsNegative() || msg.AmountIn.Amount.IsZero() { + return fmt.Errorf("invalid coin amount: %s < 0", msg.AmountIn.Amount) + } + if msg.AmountOut.Amount.IsNegative() || msg.AmountOut.Amount.IsZero() { + return fmt.Errorf("invalid coin amount: %s < 0", msg.AmountOut.Amount) + } + + return nil +} + +func (msg *MsgBorrowAlternate) GetSigners() []sdk.AccAddress { + lender, err := sdk.AccAddressFromBech32(msg.GetLender()) + if err != nil { + panic(err) + } + return []sdk.AccAddress{lender} +} + +// GetSignBytes get the bytes for the message signer to sign on. +func (msg *MsgBorrowAlternate) GetSignBytes() []byte { + bz := ModuleCdc.MustMarshalJSON(msg) + return sdk.MustSortJSON(bz) +} diff --git a/x/lend/types/tx.pb.go b/x/lend/types/tx.pb.go index 04032792e..07c0b01d1 100644 --- a/x/lend/types/tx.pb.go +++ b/x/lend/types/tx.pb.go @@ -593,6 +593,106 @@ func (m *MsgCloseBorrow) GetBorrowId() uint64 { return 0 } +type MsgBorrowAlternate struct { + Lender string `protobuf:"bytes,1,opt,name=lender,proto3" json:"lender,omitempty"` + AssetId uint64 `protobuf:"varint,2,opt,name=asset_id,json=assetId,proto3" json:"asset_id,omitempty"` + PoolId uint64 `protobuf:"varint,3,opt,name=pool_id,json=poolId,proto3" json:"pool_id,omitempty"` + AmountIn types.Coin `protobuf:"bytes,4,opt,name=amount_in,json=amountIn,proto3" json:"amount_in"` + PairId uint64 `protobuf:"varint,5,opt,name=pair_id,json=pairId,proto3" json:"pair_id,omitempty"` + IsStableBorrow bool `protobuf:"varint,6,opt,name=is_stable_borrow,json=isStableBorrow,proto3" json:"is_stable_borrow,omitempty"` + AmountOut types.Coin `protobuf:"bytes,7,opt,name=amount_out,json=amountOut,proto3" json:"amount_out"` + AppId uint64 `protobuf:"varint,8,opt,name=app_id,json=appId,proto3" json:"app_id,omitempty"` +} + +func (m *MsgBorrowAlternate) Reset() { *m = MsgBorrowAlternate{} } +func (m *MsgBorrowAlternate) String() string { return proto.CompactTextString(m) } +func (*MsgBorrowAlternate) ProtoMessage() {} +func (*MsgBorrowAlternate) Descriptor() ([]byte, []int) { + return fileDescriptor_957d64b59d60594d, []int{9} +} +func (m *MsgBorrowAlternate) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgBorrowAlternate) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgBorrowAlternate.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgBorrowAlternate) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgBorrowAlternate.Merge(m, src) +} +func (m *MsgBorrowAlternate) XXX_Size() int { + return m.Size() +} +func (m *MsgBorrowAlternate) XXX_DiscardUnknown() { + xxx_messageInfo_MsgBorrowAlternate.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgBorrowAlternate proto.InternalMessageInfo + +func (m *MsgBorrowAlternate) GetLender() string { + if m != nil { + return m.Lender + } + return "" +} + +func (m *MsgBorrowAlternate) GetAssetId() uint64 { + if m != nil { + return m.AssetId + } + return 0 +} + +func (m *MsgBorrowAlternate) GetPoolId() uint64 { + if m != nil { + return m.PoolId + } + return 0 +} + +func (m *MsgBorrowAlternate) GetAmountIn() types.Coin { + if m != nil { + return m.AmountIn + } + return types.Coin{} +} + +func (m *MsgBorrowAlternate) GetPairId() uint64 { + if m != nil { + return m.PairId + } + return 0 +} + +func (m *MsgBorrowAlternate) GetIsStableBorrow() bool { + if m != nil { + return m.IsStableBorrow + } + return false +} + +func (m *MsgBorrowAlternate) GetAmountOut() types.Coin { + if m != nil { + return m.AmountOut + } + return types.Coin{} +} + +func (m *MsgBorrowAlternate) GetAppId() uint64 { + if m != nil { + return m.AppId + } + return 0 +} + type MsgFundModuleAccounts struct { ModuleName string `protobuf:"bytes,1,opt,name=moduleName,proto3" json:"moduleName,omitempty"` AssetId uint64 `protobuf:"varint,2,opt,name=assetId,proto3" json:"assetId,omitempty"` @@ -604,7 +704,7 @@ func (m *MsgFundModuleAccounts) Reset() { *m = MsgFundModuleAccounts{} } func (m *MsgFundModuleAccounts) String() string { return proto.CompactTextString(m) } func (*MsgFundModuleAccounts) ProtoMessage() {} func (*MsgFundModuleAccounts) Descriptor() ([]byte, []int) { - return fileDescriptor_957d64b59d60594d, []int{9} + return fileDescriptor_957d64b59d60594d, []int{10} } func (m *MsgFundModuleAccounts) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -668,7 +768,7 @@ func (m *MsgLendResponse) Reset() { *m = MsgLendResponse{} } func (m *MsgLendResponse) String() string { return proto.CompactTextString(m) } func (*MsgLendResponse) ProtoMessage() {} func (*MsgLendResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_957d64b59d60594d, []int{10} + return fileDescriptor_957d64b59d60594d, []int{11} } func (m *MsgLendResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -704,7 +804,7 @@ func (m *MsgWithdrawResponse) Reset() { *m = MsgWithdrawResponse{} } func (m *MsgWithdrawResponse) String() string { return proto.CompactTextString(m) } func (*MsgWithdrawResponse) ProtoMessage() {} func (*MsgWithdrawResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_957d64b59d60594d, []int{11} + return fileDescriptor_957d64b59d60594d, []int{12} } func (m *MsgWithdrawResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -740,7 +840,7 @@ func (m *MsgDepositResponse) Reset() { *m = MsgDepositResponse{} } func (m *MsgDepositResponse) String() string { return proto.CompactTextString(m) } func (*MsgDepositResponse) ProtoMessage() {} func (*MsgDepositResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_957d64b59d60594d, []int{12} + return fileDescriptor_957d64b59d60594d, []int{13} } func (m *MsgDepositResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -776,7 +876,7 @@ func (m *MsgCloseLendResponse) Reset() { *m = MsgCloseLendResponse{} } func (m *MsgCloseLendResponse) String() string { return proto.CompactTextString(m) } func (*MsgCloseLendResponse) ProtoMessage() {} func (*MsgCloseLendResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_957d64b59d60594d, []int{13} + return fileDescriptor_957d64b59d60594d, []int{14} } func (m *MsgCloseLendResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -812,7 +912,7 @@ func (m *MsgBorrowResponse) Reset() { *m = MsgBorrowResponse{} } func (m *MsgBorrowResponse) String() string { return proto.CompactTextString(m) } func (*MsgBorrowResponse) ProtoMessage() {} func (*MsgBorrowResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_957d64b59d60594d, []int{14} + return fileDescriptor_957d64b59d60594d, []int{15} } func (m *MsgBorrowResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -848,7 +948,7 @@ func (m *MsgRepayResponse) Reset() { *m = MsgRepayResponse{} } func (m *MsgRepayResponse) String() string { return proto.CompactTextString(m) } func (*MsgRepayResponse) ProtoMessage() {} func (*MsgRepayResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_957d64b59d60594d, []int{15} + return fileDescriptor_957d64b59d60594d, []int{16} } func (m *MsgRepayResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -884,7 +984,7 @@ func (m *MsgDepositBorrowResponse) Reset() { *m = MsgDepositBorrowRespon func (m *MsgDepositBorrowResponse) String() string { return proto.CompactTextString(m) } func (*MsgDepositBorrowResponse) ProtoMessage() {} func (*MsgDepositBorrowResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_957d64b59d60594d, []int{16} + return fileDescriptor_957d64b59d60594d, []int{17} } func (m *MsgDepositBorrowResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -920,7 +1020,7 @@ func (m *MsgDrawResponse) Reset() { *m = MsgDrawResponse{} } func (m *MsgDrawResponse) String() string { return proto.CompactTextString(m) } func (*MsgDrawResponse) ProtoMessage() {} func (*MsgDrawResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_957d64b59d60594d, []int{17} + return fileDescriptor_957d64b59d60594d, []int{18} } func (m *MsgDrawResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -956,7 +1056,7 @@ func (m *MsgCloseBorrowResponse) Reset() { *m = MsgCloseBorrowResponse{} func (m *MsgCloseBorrowResponse) String() string { return proto.CompactTextString(m) } func (*MsgCloseBorrowResponse) ProtoMessage() {} func (*MsgCloseBorrowResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_957d64b59d60594d, []int{18} + return fileDescriptor_957d64b59d60594d, []int{19} } func (m *MsgCloseBorrowResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -985,6 +1085,42 @@ func (m *MsgCloseBorrowResponse) XXX_DiscardUnknown() { var xxx_messageInfo_MsgCloseBorrowResponse proto.InternalMessageInfo +type MsgBorrowAlternateResponse struct { +} + +func (m *MsgBorrowAlternateResponse) Reset() { *m = MsgBorrowAlternateResponse{} } +func (m *MsgBorrowAlternateResponse) String() string { return proto.CompactTextString(m) } +func (*MsgBorrowAlternateResponse) ProtoMessage() {} +func (*MsgBorrowAlternateResponse) Descriptor() ([]byte, []int) { + return fileDescriptor_957d64b59d60594d, []int{20} +} +func (m *MsgBorrowAlternateResponse) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *MsgBorrowAlternateResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_MsgBorrowAlternateResponse.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *MsgBorrowAlternateResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgBorrowAlternateResponse.Merge(m, src) +} +func (m *MsgBorrowAlternateResponse) XXX_Size() int { + return m.Size() +} +func (m *MsgBorrowAlternateResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgBorrowAlternateResponse.DiscardUnknown(m) +} + +var xxx_messageInfo_MsgBorrowAlternateResponse proto.InternalMessageInfo + type MsgFundModuleAccountsResponse struct { } @@ -992,7 +1128,7 @@ func (m *MsgFundModuleAccountsResponse) Reset() { *m = MsgFundModuleAcco func (m *MsgFundModuleAccountsResponse) String() string { return proto.CompactTextString(m) } func (*MsgFundModuleAccountsResponse) ProtoMessage() {} func (*MsgFundModuleAccountsResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_957d64b59d60594d, []int{19} + return fileDescriptor_957d64b59d60594d, []int{21} } func (m *MsgFundModuleAccountsResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -1031,6 +1167,7 @@ func init() { proto.RegisterType((*MsgDepositBorrow)(nil), "comdex.lend.v1beta1.MsgDepositBorrow") proto.RegisterType((*MsgDraw)(nil), "comdex.lend.v1beta1.MsgDraw") proto.RegisterType((*MsgCloseBorrow)(nil), "comdex.lend.v1beta1.MsgCloseBorrow") + proto.RegisterType((*MsgBorrowAlternate)(nil), "comdex.lend.v1beta1.MsgBorrowAlternate") proto.RegisterType((*MsgFundModuleAccounts)(nil), "comdex.lend.v1beta1.MsgFundModuleAccounts") proto.RegisterType((*MsgLendResponse)(nil), "comdex.lend.v1beta1.MsgLendResponse") proto.RegisterType((*MsgWithdrawResponse)(nil), "comdex.lend.v1beta1.MsgWithdrawResponse") @@ -1041,63 +1178,69 @@ func init() { proto.RegisterType((*MsgDepositBorrowResponse)(nil), "comdex.lend.v1beta1.MsgDepositBorrowResponse") proto.RegisterType((*MsgDrawResponse)(nil), "comdex.lend.v1beta1.MsgDrawResponse") proto.RegisterType((*MsgCloseBorrowResponse)(nil), "comdex.lend.v1beta1.MsgCloseBorrowResponse") + proto.RegisterType((*MsgBorrowAlternateResponse)(nil), "comdex.lend.v1beta1.MsgBorrowAlternateResponse") proto.RegisterType((*MsgFundModuleAccountsResponse)(nil), "comdex.lend.v1beta1.MsgFundModuleAccountsResponse") } func init() { proto.RegisterFile("comdex/lend/v1beta1/tx.proto", fileDescriptor_957d64b59d60594d) } var fileDescriptor_957d64b59d60594d = []byte{ - // 793 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x56, 0x4d, 0x6f, 0xd3, 0x4c, - 0x10, 0x8e, 0x9b, 0x34, 0x1f, 0xd3, 0xf7, 0x2d, 0xed, 0xf6, 0x2b, 0x35, 0xad, 0x1b, 0x02, 0x85, - 0x00, 0xaa, 0xa3, 0x96, 0x03, 0x17, 0x04, 0xa2, 0xad, 0x10, 0xa9, 0x30, 0xa0, 0x54, 0x02, 0xc1, - 0x25, 0x72, 0xe2, 0xad, 0x6b, 0x29, 0xf1, 0x5a, 0x5e, 0xa7, 0x1f, 0x82, 0x0b, 0x52, 0x7f, 0x00, - 0xbf, 0x01, 0x89, 0xff, 0xd2, 0x63, 0x8f, 0x9c, 0x10, 0x6a, 0xff, 0x08, 0xda, 0xf5, 0x7a, 0x9d, - 0x96, 0x3a, 0x09, 0xaa, 0xe8, 0x6d, 0x77, 0x9e, 0x99, 0x67, 0xc6, 0x3b, 0x33, 0x4f, 0x02, 0x0b, - 0x2d, 0xd2, 0xb1, 0xf0, 0x41, 0xb5, 0x8d, 0x5d, 0xab, 0xba, 0xb7, 0xda, 0xc4, 0x81, 0xb9, 0x5a, - 0x0d, 0x0e, 0x74, 0xcf, 0x27, 0x01, 0x41, 0x53, 0x21, 0xaa, 0x33, 0x54, 0x17, 0xa8, 0xaa, 0xb5, - 0x08, 0xed, 0x10, 0x5a, 0x6d, 0x9a, 0x14, 0xcb, 0x90, 0x16, 0x71, 0xdc, 0x30, 0x48, 0x9d, 0xb6, - 0x89, 0x4d, 0xf8, 0xb1, 0xca, 0x4e, 0xa1, 0xb5, 0xfc, 0x5d, 0x81, 0x9c, 0x41, 0xed, 0x57, 0xd8, - 0xb5, 0xd0, 0x2c, 0x64, 0x19, 0x23, 0xf6, 0x8b, 0x4a, 0x49, 0xa9, 0x14, 0xea, 0xe2, 0x86, 0xe6, - 0x21, 0x6f, 0x52, 0x8a, 0x83, 0x86, 0x63, 0x15, 0x47, 0x4a, 0x4a, 0x25, 0x53, 0xcf, 0xf1, 0x7b, - 0xcd, 0x42, 0x8f, 0x21, 0x6b, 0x76, 0x48, 0xd7, 0x0d, 0x8a, 0xe9, 0x92, 0x52, 0x19, 0x5b, 0x9b, - 0xd7, 0xc3, 0x2a, 0x74, 0x56, 0x45, 0x54, 0x9a, 0xbe, 0x41, 0x1c, 0x77, 0x3d, 0x73, 0xfc, 0x73, - 0x29, 0x55, 0x17, 0xee, 0x68, 0x0e, 0x72, 0x1e, 0x21, 0x6d, 0x46, 0x99, 0xe1, 0x94, 0x59, 0x76, - 0xad, 0x59, 0x68, 0x06, 0xb2, 0xa6, 0xe7, 0x31, 0xfb, 0x28, 0xb7, 0x8f, 0x9a, 0x9e, 0x57, 0xb3, - 0xca, 0xfb, 0x30, 0x66, 0x50, 0xfb, 0xbd, 0x13, 0xec, 0x5a, 0xbe, 0xb9, 0x9f, 0x58, 0xea, 0x1c, - 0xe4, 0xd8, 0x29, 0xae, 0x94, 0x03, 0x57, 0x28, 0xb4, 0xbc, 0x07, 0x60, 0x50, 0x7b, 0x13, 0x7b, - 0x84, 0x3a, 0xc1, 0x35, 0xe6, 0x7d, 0x06, 0xff, 0x19, 0xd4, 0xde, 0x68, 0x13, 0x8a, 0xfb, 0x36, - 0x27, 0x29, 0x73, 0xf9, 0xcb, 0x08, 0x14, 0x0c, 0x6a, 0xaf, 0x13, 0xdf, 0x27, 0xfb, 0x48, 0x85, - 0x7c, 0x93, 0x9f, 0x24, 0x81, 0xbc, 0x27, 0x17, 0xcf, 0x9a, 0x64, 0x3a, 0x3e, 0x03, 0xd2, 0xa2, - 0x49, 0xa6, 0xe3, 0xd7, 0x2c, 0x54, 0x81, 0x09, 0x87, 0x36, 0x68, 0x60, 0x36, 0xdb, 0xb8, 0x11, - 0xf2, 0xf0, 0x36, 0xe6, 0xeb, 0xe3, 0x0e, 0xdd, 0xe6, 0x66, 0x91, 0xf7, 0x09, 0x14, 0xc2, 0x0f, - 0x6a, 0x38, 0x2e, 0xef, 0xe8, 0x10, 0x4f, 0x90, 0x0f, 0x23, 0x6a, 0x2e, 0x7a, 0x0a, 0x20, 0xa2, - 0x49, 0x37, 0x28, 0x66, 0x87, 0x0b, 0x17, 0x09, 0xdf, 0x74, 0x83, 0xf2, 0x67, 0xc8, 0x1b, 0xd4, - 0xae, 0x63, 0xcf, 0x3c, 0xec, 0xfb, 0x02, 0x37, 0xa1, 0x10, 0x9e, 0xe3, 0x37, 0x10, 0xe0, 0x55, - 0x5a, 0x78, 0xa4, 0xc0, 0x44, 0x3c, 0x3b, 0x43, 0x34, 0xe2, 0xdf, 0x94, 0xf1, 0x89, 0x6f, 0xf8, - 0x26, 0x5b, 0x9b, 0xeb, 0x4f, 0x5e, 0x83, 0xf1, 0x68, 0x8c, 0xaf, 0xf8, 0x00, 0xe5, 0x6f, 0x0a, - 0xcc, 0x18, 0xd4, 0x7e, 0xd1, 0x75, 0x2d, 0x83, 0x58, 0xdd, 0x36, 0x7e, 0xde, 0x6a, 0xb1, 0x1c, - 0x14, 0x69, 0x00, 0x1d, 0x6e, 0x79, 0x6d, 0x76, 0xb0, 0x20, 0xed, 0xb1, 0xa0, 0x22, 0x44, 0x82, - 0x75, 0x51, 0xbf, 0xe2, 0xad, 0x4a, 0x9f, 0xdb, 0xaa, 0xf8, 0x7b, 0x33, 0x7f, 0xf7, 0xbd, 0x93, - 0x70, 0x43, 0xc8, 0x69, 0x1d, 0x53, 0x8f, 0xb8, 0x14, 0x97, 0x67, 0x60, 0xaa, 0x47, 0xba, 0xa4, - 0x79, 0x1a, 0x50, 0x3c, 0x1c, 0xd2, 0x3a, 0x0b, 0xd3, 0xbd, 0x6b, 0x2f, 0xed, 0x53, 0x30, 0x29, - 0x97, 0x59, 0x1a, 0x11, 0x9f, 0x2f, 0x3e, 0xde, 0xd2, 0xa6, 0x42, 0xf1, 0xe2, 0xcc, 0x49, 0x2c, - 0x2c, 0x6e, 0xb3, 0xb7, 0x8a, 0x22, 0xcc, 0x9e, 0xef, 0x8f, 0x44, 0x96, 0x60, 0xf1, 0xd2, 0xd7, - 0x8e, 0x1c, 0xd6, 0x8e, 0x72, 0x90, 0x36, 0xa8, 0x8d, 0xb6, 0x20, 0xc3, 0x15, 0x6a, 0x41, 0xbf, - 0xe4, 0x67, 0x49, 0x17, 0xaf, 0xa1, 0xde, 0xe9, 0x87, 0x46, 0x9c, 0xe8, 0x1d, 0xe4, 0xa5, 0xc6, - 0x97, 0x92, 0x22, 0x22, 0x0f, 0xb5, 0x32, 0xc8, 0x43, 0xf2, 0x6e, 0x43, 0x2e, 0x92, 0xf0, 0xa5, - 0xa4, 0x20, 0xe1, 0xa0, 0xde, 0x1b, 0xe0, 0x20, 0x49, 0x3f, 0x40, 0x21, 0xd6, 0xe7, 0x5b, 0x49, - 0x51, 0xd2, 0x45, 0xbd, 0x3f, 0xd0, 0x45, 0x52, 0xbf, 0x85, 0xac, 0x58, 0x17, 0x2d, 0x29, 0x28, - 0xc4, 0xd5, 0xbb, 0xfd, 0x71, 0xc9, 0x68, 0xc0, 0x68, 0xa8, 0x83, 0x8b, 0x49, 0x01, 0x1c, 0x56, - 0x97, 0xfb, 0xc2, 0x92, 0x0e, 0xc3, 0xff, 0xe7, 0x75, 0x6d, 0x79, 0xc0, 0xab, 0x89, 0x72, 0x57, - 0x86, 0x72, 0x93, 0x69, 0xb6, 0x20, 0xc3, 0x85, 0x2b, 0x71, 0xb6, 0x18, 0x9a, 0x3c, 0x5b, 0xbd, - 0xa3, 0x8e, 0x1a, 0x30, 0xd6, 0xab, 0x43, 0xb7, 0xfb, 0x76, 0x43, 0x94, 0xfb, 0x70, 0x08, 0x27, - 0x99, 0x20, 0x00, 0x74, 0x89, 0x38, 0x3d, 0x48, 0xa2, 0xf8, 0xd3, 0x57, 0x5d, 0x1b, 0xde, 0x37, - 0xca, 0xba, 0xfe, 0xf2, 0xf8, 0x54, 0x53, 0x4e, 0x4e, 0x35, 0xe5, 0xd7, 0xa9, 0xa6, 0x7c, 0x3d, - 0xd3, 0x52, 0x27, 0x67, 0x5a, 0xea, 0xc7, 0x99, 0x96, 0xfa, 0xa8, 0xdb, 0x4e, 0xb0, 0xdb, 0x6d, - 0x32, 0xce, 0x6a, 0xc8, 0xbb, 0x42, 0x76, 0x76, 0x9c, 0x96, 0x63, 0xb6, 0xc5, 0xbd, 0x2a, 0xfe, - 0x61, 0x06, 0x87, 0x1e, 0xa6, 0xcd, 0x2c, 0xff, 0x4b, 0xf8, 0xe8, 0x77, 0x00, 0x00, 0x00, 0xff, - 0xff, 0x27, 0x79, 0xe4, 0x03, 0x7d, 0x0a, 0x00, 0x00, + // 874 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x57, 0xcd, 0x6e, 0xe3, 0x54, + 0x14, 0x8e, 0x9b, 0xc4, 0x49, 0x4e, 0xa1, 0x3f, 0xb7, 0x7f, 0xa9, 0x69, 0xdd, 0x10, 0x28, 0x0d, + 0xa0, 0xda, 0x6a, 0x59, 0xb0, 0x41, 0xa0, 0xfe, 0x08, 0x91, 0x0a, 0x03, 0x4a, 0x25, 0x10, 0x6c, + 0x22, 0x27, 0xbe, 0x75, 0x2d, 0x12, 0x5f, 0xcb, 0xd7, 0xe9, 0x8f, 0x60, 0x83, 0xc4, 0x03, 0xcc, + 0x33, 0x8c, 0x34, 0xef, 0x30, 0x8f, 0xd0, 0x65, 0x97, 0xb3, 0x1a, 0x8d, 0xda, 0x27, 0x98, 0x37, + 0x18, 0xf9, 0xfa, 0xfa, 0xc6, 0x69, 0xe3, 0x24, 0x9d, 0x6a, 0xba, 0xf3, 0x3d, 0xdf, 0xf9, 0xeb, + 0x39, 0xdf, 0x39, 0xa7, 0x81, 0xb5, 0x36, 0xe9, 0x5a, 0xf8, 0x42, 0xef, 0x60, 0xd7, 0xd2, 0xcf, + 0x76, 0x5a, 0x38, 0x30, 0x77, 0xf4, 0xe0, 0x42, 0xf3, 0x7c, 0x12, 0x10, 0xb4, 0x10, 0xa1, 0x5a, + 0x88, 0x6a, 0x1c, 0x55, 0xd4, 0x36, 0xa1, 0x5d, 0x42, 0xf5, 0x96, 0x49, 0xb1, 0x30, 0x69, 0x13, + 0xc7, 0x8d, 0x8c, 0x94, 0x45, 0x9b, 0xd8, 0x84, 0x7d, 0xea, 0xe1, 0x57, 0x24, 0xad, 0xbe, 0x90, + 0xa0, 0x60, 0x50, 0xfb, 0x67, 0xec, 0x5a, 0x68, 0x19, 0xe4, 0xd0, 0x23, 0xf6, 0xcb, 0x52, 0x45, + 0xaa, 0x95, 0x1a, 0xfc, 0x85, 0x56, 0xa1, 0x68, 0x52, 0x8a, 0x83, 0xa6, 0x63, 0x95, 0xa7, 0x2a, + 0x52, 0x2d, 0xd7, 0x28, 0xb0, 0x77, 0xdd, 0x42, 0xdf, 0x82, 0x6c, 0x76, 0x49, 0xcf, 0x0d, 0xca, + 0xd9, 0x8a, 0x54, 0x9b, 0xde, 0x5d, 0xd5, 0xa2, 0x2c, 0xb4, 0x30, 0x8b, 0x38, 0x35, 0xed, 0x80, + 0x38, 0xee, 0x7e, 0xee, 0xea, 0xf5, 0x46, 0xa6, 0xc1, 0xd5, 0xd1, 0x0a, 0x14, 0x3c, 0x42, 0x3a, + 0xa1, 0xcb, 0x1c, 0x73, 0x29, 0x87, 0xcf, 0xba, 0x85, 0x96, 0x40, 0x36, 0x3d, 0x2f, 0x94, 0xe7, + 0x99, 0x3c, 0x6f, 0x7a, 0x5e, 0xdd, 0xaa, 0x9e, 0xc3, 0xb4, 0x41, 0xed, 0x3f, 0x9c, 0xe0, 0xd4, + 0xf2, 0xcd, 0xf3, 0xd4, 0x54, 0x57, 0xa0, 0x10, 0x7e, 0xf5, 0x33, 0x65, 0xc0, 0x23, 0x12, 0xad, + 0x9e, 0x01, 0x18, 0xd4, 0x3e, 0xc4, 0x1e, 0xa1, 0x4e, 0xf0, 0x84, 0x71, 0x7f, 0x80, 0x8f, 0x0c, + 0x6a, 0x1f, 0x74, 0x08, 0xc5, 0x23, 0x9b, 0x93, 0x16, 0xb9, 0xfa, 0xdf, 0x14, 0x94, 0x0c, 0x6a, + 0xef, 0x13, 0xdf, 0x27, 0xe7, 0x48, 0x81, 0x62, 0x8b, 0x7d, 0x09, 0x07, 0xe2, 0x9d, 0x9e, 0x7c, + 0xd8, 0x24, 0xd3, 0xf1, 0x43, 0x20, 0xcb, 0x9b, 0x64, 0x3a, 0x7e, 0xdd, 0x42, 0x35, 0x98, 0x73, + 0x68, 0x93, 0x06, 0x66, 0xab, 0x83, 0x9b, 0x91, 0x1f, 0xd6, 0xc6, 0x62, 0x63, 0xc6, 0xa1, 0xc7, + 0x4c, 0xcc, 0xe3, 0x7e, 0x07, 0xa5, 0xe8, 0x0f, 0x6a, 0x3a, 0x2e, 0xeb, 0xe8, 0x04, 0x25, 0x28, + 0x46, 0x16, 0x75, 0x17, 0x7d, 0x0f, 0xc0, 0xad, 0x49, 0x2f, 0x28, 0xcb, 0x93, 0x99, 0xf3, 0x80, + 0xbf, 0xf6, 0x82, 0xea, 0xbf, 0x50, 0x34, 0xa8, 0xdd, 0xc0, 0x9e, 0x79, 0x39, 0xb2, 0x02, 0x9f, + 0x40, 0x29, 0xfa, 0xee, 0xd7, 0x80, 0x83, 0x8f, 0x69, 0xe1, 0xff, 0x12, 0xcc, 0xf5, 0xb9, 0x33, + 0x41, 0x23, 0x3e, 0x4c, 0x1a, 0xff, 0xb0, 0x09, 0x3f, 0x0c, 0xc7, 0xe6, 0xe9, 0x83, 0xd7, 0x61, + 0x26, 0xa6, 0xf1, 0x23, 0x0b, 0x50, 0x7d, 0x39, 0x05, 0x48, 0x10, 0x7a, 0xaf, 0x13, 0x60, 0xdf, + 0x35, 0x03, 0xfc, 0x3e, 0x5b, 0x2b, 0xb1, 0x7c, 0xb2, 0x03, 0xcb, 0x67, 0x80, 0xad, 0xb9, 0x87, + 0xb2, 0x35, 0x31, 0x2e, 0xf9, 0xb1, 0xe3, 0x22, 0x0f, 0x1d, 0x97, 0x41, 0xc2, 0x17, 0x1e, 0x4a, + 0xf8, 0xc4, 0xf6, 0x2c, 0x26, 0xb7, 0xe7, 0x73, 0x09, 0x96, 0x0c, 0x6a, 0xff, 0xd8, 0x73, 0x2d, + 0x83, 0x58, 0xbd, 0x0e, 0xde, 0x6b, 0xb7, 0x43, 0x13, 0x8a, 0x54, 0x80, 0x2e, 0x93, 0xfc, 0x62, + 0x76, 0x31, 0xaf, 0x60, 0x42, 0x82, 0xca, 0x10, 0x57, 0xed, 0x6e, 0x11, 0xfb, 0x75, 0xcf, 0x0e, + 0xd4, 0xbd, 0x4f, 0x95, 0xdc, 0xc3, 0xa8, 0x32, 0x0f, 0xb3, 0xfc, 0x12, 0x35, 0x30, 0xf5, 0x88, + 0x4b, 0x71, 0x75, 0x09, 0x16, 0x12, 0x5b, 0x5f, 0x88, 0x17, 0x19, 0x11, 0xf8, 0x5c, 0x09, 0xe9, + 0x32, 0x2c, 0x26, 0x37, 0xa6, 0x90, 0x2f, 0xc0, 0xbc, 0xa0, 0x8d, 0x10, 0x22, 0x36, 0x9a, 0x6c, + 0x33, 0x08, 0x99, 0x02, 0xe5, 0xbb, 0xe3, 0x2a, 0xb0, 0x28, 0xb9, 0xc3, 0x64, 0x16, 0x65, 0x58, + 0x1e, 0xa4, 0xb6, 0x40, 0xd6, 0x40, 0xb9, 0x4f, 0x54, 0x81, 0x6e, 0xc0, 0xfa, 0xd0, 0x5e, 0xc4, + 0x0a, 0xbb, 0x6f, 0x0b, 0x90, 0x35, 0xa8, 0x8d, 0x8e, 0x20, 0xc7, 0x56, 0xff, 0x9a, 0x36, 0xe4, + 0xde, 0x6b, 0xbc, 0x56, 0xca, 0xe7, 0xa3, 0xd0, 0xd8, 0x27, 0xfa, 0x1d, 0x8a, 0xe2, 0x78, 0x56, + 0xd2, 0x2c, 0x62, 0x0d, 0xa5, 0x36, 0x4e, 0x43, 0xf8, 0x3d, 0x86, 0x42, 0x7c, 0x1b, 0x37, 0xd2, + 0x8c, 0xb8, 0x82, 0xb2, 0x35, 0x46, 0x41, 0x38, 0xfd, 0x13, 0x4a, 0xfd, 0xc3, 0xf7, 0x69, 0x9a, + 0x95, 0x50, 0x51, 0xbe, 0x1c, 0xab, 0x22, 0x5c, 0xff, 0x06, 0x32, 0x1f, 0x35, 0x35, 0xcd, 0x28, + 0xc2, 0x95, 0x2f, 0x46, 0xe3, 0xc2, 0xa3, 0x01, 0xf9, 0xe8, 0xc0, 0xac, 0xa7, 0x19, 0x30, 0x58, + 0xd9, 0x1c, 0x09, 0x0b, 0x77, 0x18, 0x3e, 0x1e, 0x3c, 0x18, 0x9b, 0x63, 0xaa, 0xc6, 0xd3, 0xdd, + 0x9e, 0x48, 0x4d, 0x84, 0x39, 0x82, 0x1c, 0xbb, 0x08, 0xa9, 0xdc, 0x0a, 0xd1, 0x74, 0x6e, 0x25, + 0x07, 0x01, 0x35, 0x61, 0x3a, 0xb9, 0xe0, 0x3f, 0x1b, 0xd9, 0x0d, 0x9e, 0xee, 0xd7, 0x13, 0x28, + 0x89, 0x00, 0x7f, 0xc3, 0xec, 0xdd, 0xad, 0xbf, 0x35, 0xba, 0x3b, 0x42, 0x51, 0xd1, 0x27, 0x54, + 0x14, 0xc1, 0x02, 0x40, 0x43, 0xf6, 0xe4, 0x57, 0x69, 0x6e, 0xee, 0xeb, 0x2a, 0xbb, 0x93, 0xeb, + 0xc6, 0x51, 0xf7, 0x7f, 0xba, 0xba, 0x51, 0xa5, 0xeb, 0x1b, 0x55, 0x7a, 0x73, 0xa3, 0x4a, 0xcf, + 0x6e, 0xd5, 0xcc, 0xf5, 0xad, 0x9a, 0x79, 0x75, 0xab, 0x66, 0xfe, 0xd2, 0x6c, 0x27, 0x38, 0xed, + 0xb5, 0x42, 0x9f, 0x7a, 0xe4, 0x77, 0x9b, 0x9c, 0x9c, 0x38, 0x6d, 0xc7, 0xec, 0xf0, 0xb7, 0xce, + 0x7f, 0x27, 0x04, 0x97, 0x1e, 0xa6, 0x2d, 0x99, 0xfd, 0x63, 0xff, 0xcd, 0xbb, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xec, 0x21, 0x66, 0xbe, 0x43, 0x0c, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -1126,6 +1269,7 @@ type MsgClient interface { DepositBorrow(ctx context.Context, in *MsgDepositBorrow, opts ...grpc.CallOption) (*MsgDepositBorrowResponse, error) Draw(ctx context.Context, in *MsgDraw, opts ...grpc.CallOption) (*MsgDrawResponse, error) CloseBorrow(ctx context.Context, in *MsgCloseBorrow, opts ...grpc.CallOption) (*MsgCloseBorrowResponse, error) + BorrowAlternate(ctx context.Context, in *MsgBorrowAlternate, opts ...grpc.CallOption) (*MsgBorrowAlternateResponse, error) // FundModuleAccounts funds an existing module account FundModuleAccounts(ctx context.Context, in *MsgFundModuleAccounts, opts ...grpc.CallOption) (*MsgFundModuleAccountsResponse, error) } @@ -1219,6 +1363,15 @@ func (c *msgClient) CloseBorrow(ctx context.Context, in *MsgCloseBorrow, opts .. return out, nil } +func (c *msgClient) BorrowAlternate(ctx context.Context, in *MsgBorrowAlternate, opts ...grpc.CallOption) (*MsgBorrowAlternateResponse, error) { + out := new(MsgBorrowAlternateResponse) + err := c.cc.Invoke(ctx, "/comdex.lend.v1beta1.Msg/BorrowAlternate", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *msgClient) FundModuleAccounts(ctx context.Context, in *MsgFundModuleAccounts, opts ...grpc.CallOption) (*MsgFundModuleAccountsResponse, error) { out := new(MsgFundModuleAccountsResponse) err := c.cc.Invoke(ctx, "/comdex.lend.v1beta1.Msg/FundModuleAccounts", in, out, opts...) @@ -1244,6 +1397,7 @@ type MsgServer interface { DepositBorrow(context.Context, *MsgDepositBorrow) (*MsgDepositBorrowResponse, error) Draw(context.Context, *MsgDraw) (*MsgDrawResponse, error) CloseBorrow(context.Context, *MsgCloseBorrow) (*MsgCloseBorrowResponse, error) + BorrowAlternate(context.Context, *MsgBorrowAlternate) (*MsgBorrowAlternateResponse, error) // FundModuleAccounts funds an existing module account FundModuleAccounts(context.Context, *MsgFundModuleAccounts) (*MsgFundModuleAccountsResponse, error) } @@ -1279,6 +1433,9 @@ func (*UnimplementedMsgServer) Draw(ctx context.Context, req *MsgDraw) (*MsgDraw func (*UnimplementedMsgServer) CloseBorrow(ctx context.Context, req *MsgCloseBorrow) (*MsgCloseBorrowResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method CloseBorrow not implemented") } +func (*UnimplementedMsgServer) BorrowAlternate(ctx context.Context, req *MsgBorrowAlternate) (*MsgBorrowAlternateResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method BorrowAlternate not implemented") +} func (*UnimplementedMsgServer) FundModuleAccounts(ctx context.Context, req *MsgFundModuleAccounts) (*MsgFundModuleAccountsResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method FundModuleAccounts not implemented") } @@ -1449,6 +1606,24 @@ func _Msg_CloseBorrow_Handler(srv interface{}, ctx context.Context, dec func(int return interceptor(ctx, in, info, handler) } +func _Msg_BorrowAlternate_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgBorrowAlternate) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(MsgServer).BorrowAlternate(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/comdex.lend.v1beta1.Msg/BorrowAlternate", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(MsgServer).BorrowAlternate(ctx, req.(*MsgBorrowAlternate)) + } + return interceptor(ctx, in, info, handler) +} + func _Msg_FundModuleAccounts_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(MsgFundModuleAccounts) if err := dec(in); err != nil { @@ -1507,6 +1682,10 @@ var _Msg_serviceDesc = grpc.ServiceDesc{ MethodName: "CloseBorrow", Handler: _Msg_CloseBorrow_Handler, }, + { + MethodName: "BorrowAlternate", + Handler: _Msg_BorrowAlternate_Handler, + }, { MethodName: "FundModuleAccounts", Handler: _Msg_FundModuleAccounts_Handler, @@ -1936,6 +2115,86 @@ func (m *MsgCloseBorrow) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *MsgBorrowAlternate) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgBorrowAlternate) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgBorrowAlternate) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if m.AppId != 0 { + i = encodeVarintTx(dAtA, i, uint64(m.AppId)) + i-- + dAtA[i] = 0x40 + } + { + size, err := m.AmountOut.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x3a + if m.IsStableBorrow { + i-- + if m.IsStableBorrow { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x30 + } + if m.PairId != 0 { + i = encodeVarintTx(dAtA, i, uint64(m.PairId)) + i-- + dAtA[i] = 0x28 + } + { + size, err := m.AmountIn.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintTx(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + if m.PoolId != 0 { + i = encodeVarintTx(dAtA, i, uint64(m.PoolId)) + i-- + dAtA[i] = 0x18 + } + if m.AssetId != 0 { + i = encodeVarintTx(dAtA, i, uint64(m.AssetId)) + i-- + dAtA[i] = 0x10 + } + if len(m.Lender) > 0 { + i -= len(m.Lender) + copy(dAtA[i:], m.Lender) + i = encodeVarintTx(dAtA, i, uint64(len(m.Lender))) + i-- + dAtA[i] = 0xa + } + return len(dAtA) - i, nil +} + func (m *MsgFundModuleAccounts) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -2195,6 +2454,29 @@ func (m *MsgCloseBorrowResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) return len(dAtA) - i, nil } +func (m *MsgBorrowAlternateResponse) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *MsgBorrowAlternateResponse) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *MsgBorrowAlternateResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + return len(dAtA) - i, nil +} + func (m *MsgFundModuleAccountsResponse) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -2401,38 +2683,70 @@ func (m *MsgCloseBorrow) Size() (n int) { return n } -func (m *MsgFundModuleAccounts) Size() (n int) { +func (m *MsgBorrowAlternate) Size() (n int) { if m == nil { return 0 } var l int _ = l - l = len(m.ModuleName) + l = len(m.Lender) if l > 0 { n += 1 + l + sovTx(uint64(l)) } if m.AssetId != 0 { n += 1 + sovTx(uint64(m.AssetId)) } - l = len(m.Lender) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) + if m.PoolId != 0 { + n += 1 + sovTx(uint64(m.PoolId)) } - l = m.Amount.Size() + l = m.AmountIn.Size() n += 1 + l + sovTx(uint64(l)) - return n -} - -func (m *MsgLendResponse) Size() (n int) { - if m == nil { - return 0 + if m.PairId != 0 { + n += 1 + sovTx(uint64(m.PairId)) + } + if m.IsStableBorrow { + n += 2 + } + l = m.AmountOut.Size() + n += 1 + l + sovTx(uint64(l)) + if m.AppId != 0 { + n += 1 + sovTx(uint64(m.AppId)) } - var l int - _ = l return n } -func (m *MsgWithdrawResponse) Size() (n int) { +func (m *MsgFundModuleAccounts) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.ModuleName) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + if m.AssetId != 0 { + n += 1 + sovTx(uint64(m.AssetId)) + } + l = len(m.Lender) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) + } + l = m.Amount.Size() + n += 1 + l + sovTx(uint64(l)) + return n +} + +func (m *MsgLendResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + +func (m *MsgWithdrawResponse) Size() (n int) { if m == nil { return 0 } @@ -2504,6 +2818,15 @@ func (m *MsgCloseBorrowResponse) Size() (n int) { return n } +func (m *MsgBorrowAlternateResponse) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + return n +} + func (m *MsgFundModuleAccountsResponse) Size() (n int) { if m == nil { return 0 @@ -3769,6 +4092,250 @@ func (m *MsgCloseBorrow) Unmarshal(dAtA []byte) error { } return nil } +func (m *MsgBorrowAlternate) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgBorrowAlternate: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgBorrowAlternate: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Lender", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Lender = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field AssetId", wireType) + } + m.AssetId = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.AssetId |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field PoolId", wireType) + } + m.PoolId = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.PoolId |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AmountIn", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.AmountIn.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field PairId", wireType) + } + m.PairId = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.PairId |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 6: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field IsStableBorrow", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.IsStableBorrow = bool(v != 0) + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AmountOut", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.AmountOut.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 8: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field AppId", wireType) + } + m.AppId = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.AppId |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func (m *MsgFundModuleAccounts) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -4385,6 +4952,56 @@ func (m *MsgCloseBorrowResponse) Unmarshal(dAtA []byte) error { } return nil } +func (m *MsgBorrowAlternateResponse) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowTx + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: MsgBorrowAlternateResponse: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: MsgBorrowAlternateResponse: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skipTx(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthTx + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func (m *MsgFundModuleAccountsResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 diff --git a/x/liquidation/abci.go b/x/liquidation/abci.go index ffc640691..6dfce8f3a 100644 --- a/x/liquidation/abci.go +++ b/x/liquidation/abci.go @@ -1,26 +1,35 @@ package liquidation import ( + utils "github.com/comdex-official/comdex/types" "github.com/comdex-official/comdex/x/liquidation/keeper" + "github.com/comdex-official/comdex/x/liquidation/types" + "github.com/cosmos/cosmos-sdk/telemetry" sdk "github.com/cosmos/cosmos-sdk/types" abci "github.com/tendermint/tendermint/abci/types" ) func BeginBlocker(ctx sdk.Context, req abci.RequestBeginBlock, k keeper.Keeper) { - err := k.LiquidateVaults(ctx) - if err != nil { - return - } - err = k.UpdateLockedVaults(ctx) - if err != nil { - return - } - err = k.LiquidateBorrows(ctx) - if err != nil { - return - } - err = k.UpdateLockedBorrows(ctx) - if err != nil { - return - } + + defer telemetry.ModuleMeasureSince(types.ModuleName, ctx.BlockTime(), telemetry.MetricKeyBeginBlocker) + + _ = utils.ApplyFuncIfNoError(ctx, func(ctx sdk.Context) error { + err := k.LiquidateVaults(ctx) + if err != nil { + ctx.Logger().Error("error in LiquidateVaults") + } + err = k.UpdateLockedVaults(ctx) + if err != nil { + ctx.Logger().Error("error in UpdateLockedVaults") + } + err = k.LiquidateBorrows(ctx) + if err != nil { + ctx.Logger().Error("error in LiquidateBorrows") + } + err = k.UpdateLockedBorrows(ctx) + if err != nil { + ctx.Logger().Error("error in UpdateLockedBorrows") + } + return nil + }) } diff --git a/x/liquidation/expected/keeper.go b/x/liquidation/expected/keeper.go index 641daf47e..2e3a87e00 100644 --- a/x/liquidation/expected/keeper.go +++ b/x/liquidation/expected/keeper.go @@ -51,7 +51,7 @@ type AuctionKeeper interface { } type EsmKeeper interface { - GetKillSwitchData(ctx sdk.Context, app_id uint64) (esmtypes.KillSwitchParams, bool) + GetKillSwitchData(ctx sdk.Context, appID uint64) (esmtypes.KillSwitchParams, bool) GetESMStatus(ctx sdk.Context, id uint64) (esmStatus esmtypes.ESMStatus, found bool) } @@ -71,4 +71,9 @@ type LendKeeper interface { UpdateBorrowIdsMapping(ctx sdk.Context, borrowID uint64, isInsert bool) error CreteNewBorrow(ctx sdk.Context, liqBorrow liquidationtypes.LockedVault) GetPool(ctx sdk.Context, id uint64) (pool lendtypes.Pool, found bool) + GetBorrowStats(ctx sdk.Context) (borrowStats lendtypes.DepositStats, found bool) + SetBorrowStats(ctx sdk.Context, borrowStats lendtypes.DepositStats) + GetAssetStatsByPoolIDAndAssetID(ctx sdk.Context, assetID, poolID uint64) (AssetStats lendtypes.AssetStats, found bool) + SetAssetStatsByPoolIDAndAssetID(ctx sdk.Context, AssetStats lendtypes.AssetStats) + UpdateBorrowStats(ctx sdk.Context, pair lendtypes.Extended_Pair, borrowPos lendtypes.BorrowAsset, amount sdk.Int, inc bool) } diff --git a/x/liquidation/genesis.go b/x/liquidation/genesis.go index 28251702f..35ffd646e 100644 --- a/x/liquidation/genesis.go +++ b/x/liquidation/genesis.go @@ -6,19 +6,28 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" ) -// InitGenesis initializes the capability module's state from a provided genesis -// state. -func InitGenesis(ctx sdk.Context, k keeper.Keeper, genState types.GenesisState) { - // this line is used by starport scaffolding # genesis/module/init - k.SetParams(ctx, genState.Params) -} +func InitGenesis(ctx sdk.Context, k keeper.Keeper, state *types.GenesisState) { -// ExportGenesis returns the capability module's exported genesis. -func ExportGenesis(ctx sdk.Context, k keeper.Keeper) *types.GenesisState { - genesis := types.DefaultGenesis() - genesis.Params = k.GetParams(ctx) + k.SetParams(ctx, state.Params) + + for _, item := range state.LockedVault { + + k.SetLockedVault(ctx, item) + } - // this line is used by starport scaffolding # genesis/module/export + for _, item := range state.LockedVaultToAppMapping { - return genesis + k.SetLockedVaultByAppID(ctx, item) + } + + k.SetAppID(ctx, state.WhitelistedAppIds) +} + +func ExportGenesis(ctx sdk.Context, k keeper.Keeper) *types.GenesisState { + return types.NewGenesisState( + k.GetLockedVaults(ctx), + k.GetAllLockedVaultByAppID(ctx), + k.GetAppIds(ctx), + k.GetParams(ctx), + ) } diff --git a/x/liquidation/handler.go b/x/liquidation/handler.go index 49b8c6533..2f0097543 100644 --- a/x/liquidation/handler.go +++ b/x/liquidation/handler.go @@ -13,8 +13,6 @@ import ( func NewHandler(k keeper.Keeper) sdk.Handler { return func(ctx sdk.Context, msg sdk.Msg) (*sdk.Result, error) { - ctx = ctx.WithEventManager(sdk.NewEventManager()) - switch msg := msg.(type) { default: diff --git a/x/liquidation/keeper/alias.go b/x/liquidation/keeper/alias.go index 0a9955151..67dea1dfd 100644 --- a/x/liquidation/keeper/alias.go +++ b/x/liquidation/keeper/alias.go @@ -11,150 +11,162 @@ import ( authtypes "github.com/cosmos/cosmos-sdk/x/auth/types" ) -func (k *Keeper) GetModuleAccount(ctx sdk.Context, name string) authtypes.ModuleAccountI { +func (k Keeper) GetModuleAccount(ctx sdk.Context, name string) authtypes.ModuleAccountI { return k.account.GetModuleAccount(ctx, name) } -func (k *Keeper) GetBalance(ctx sdk.Context, addr sdk.AccAddress, denom string) sdk.Coin { +func (k Keeper) GetBalance(ctx sdk.Context, addr sdk.AccAddress, denom string) sdk.Coin { return k.bank.GetBalance(ctx, addr, denom) } -func (k *Keeper) MintCoin(ctx sdk.Context, name string, coin sdk.Coin) error { - if coin.IsZero() { - return nil - } - - return k.bank.MintCoins(ctx, name, sdk.NewCoins(coin)) -} - -func (k *Keeper) SendCoinsFromModuleToModule(ctx sdk.Context, senderModule string, recipientModule string, amt sdk.Coins) error { - return k.bank.SendCoinsFromModuleToModule(ctx, senderModule, recipientModule, amt) -} - -func (k *Keeper) GetPair(ctx sdk.Context, id uint64) (assettypes.Pair, bool) { +func (k Keeper) GetPair(ctx sdk.Context, id uint64) (assettypes.Pair, bool) { return k.asset.GetPair(ctx, id) } -func (k *Keeper) GetAsset(ctx sdk.Context, id uint64) (assettypes.Asset, bool) { +func (k Keeper) GetAsset(ctx sdk.Context, id uint64) (assettypes.Asset, bool) { return k.asset.GetAsset(ctx, id) } -func (k *Keeper) GetApps(ctx sdk.Context) (apps []assettypes.AppData, found bool) { +func (k Keeper) GetApps(ctx sdk.Context) (apps []assettypes.AppData, found bool) { return k.asset.GetApps(ctx) } -func (k *Keeper) SendCoinFromModuleToAccount(ctx sdk.Context, name string, address sdk.AccAddress, coin sdk.Coin) error { +func (k Keeper) SendCoinFromModuleToAccount(ctx sdk.Context, name string, address sdk.AccAddress, coin sdk.Coin) error { + if coin.IsZero() { + return liquidationtypes.SendCoinsFromModuleToAccountInLiquidationIsZero + } + return k.bank.SendCoinsFromModuleToAccount(ctx, name, address, sdk.NewCoins(coin)) } -func (k *Keeper) GetPriceForAsset(ctx sdk.Context, id uint64) (uint64, bool) { +func (k Keeper) GetPriceForAsset(ctx sdk.Context, id uint64) (uint64, bool) { return k.market.GetPriceForAsset(ctx, id) } -func (k *Keeper) GetAppExtendedPairVaultMapping(ctx sdk.Context, appMappingID uint64) (appExtendedPairVaultData types.AppExtendedPairVaultMapping, found bool) { +func (k Keeper) GetAppExtendedPairVaultMapping(ctx sdk.Context, appMappingID uint64) (appExtendedPairVaultData types.AppExtendedPairVaultMapping, found bool) { return k.vault.GetAppExtendedPairVaultMapping(ctx, appMappingID) } -func (k *Keeper) CalculateCollaterlizationRatio(ctx sdk.Context, extendedPairVaultID uint64, amountIn sdk.Int, amountOut sdk.Int) (sdk.Dec, error) { +func (k Keeper) CalculateCollaterlizationRatio(ctx sdk.Context, extendedPairVaultID uint64, amountIn sdk.Int, amountOut sdk.Int) (sdk.Dec, error) { return k.vault.CalculateCollaterlizationRatio(ctx, extendedPairVaultID, amountIn, amountOut) } -func (k *Keeper) GetVault(ctx sdk.Context, id string) (vault types.Vault, found bool) { +func (k Keeper) GetVault(ctx sdk.Context, id string) (vault types.Vault, found bool) { return k.vault.GetVault(ctx, id) } -func (k *Keeper) DeleteVault(ctx sdk.Context, id string) { +func (k Keeper) DeleteVault(ctx sdk.Context, id string) { k.vault.DeleteVault(ctx, id) } -func (k *Keeper) UpdateAppExtendedPairVaultMappingDataOnMsgCreate(ctx sdk.Context, counter uint64, vaultData types.Vault) { +func (k Keeper) UpdateAppExtendedPairVaultMappingDataOnMsgCreate(ctx sdk.Context, counter uint64, vaultData types.Vault) { k.vault.UpdateAppExtendedPairVaultMappingDataOnMsgCreate(ctx, counter, vaultData) } -func (k *Keeper) UpdateCollateralLockedAmountLockerMapping(ctx sdk.Context, vaultLookupData types.AppExtendedPairVaultMapping, extendedPairID uint64, amount sdk.Int, changeType bool) { +func (k Keeper) UpdateCollateralLockedAmountLockerMapping(ctx sdk.Context, vaultLookupData types.AppExtendedPairVaultMapping, extendedPairID uint64, amount sdk.Int, changeType bool) { k.vault.UpdateCollateralLockedAmountLockerMapping(ctx, vaultLookupData, extendedPairID, amount, changeType) } -func (k *Keeper) UpdateUserVaultExtendedPairMapping(ctx sdk.Context, extendedPairID uint64, userAddress string, appMappingID uint64) { +func (k Keeper) UpdateUserVaultExtendedPairMapping(ctx sdk.Context, extendedPairID uint64, userAddress string, appMappingID uint64) { k.vault.UpdateUserVaultExtendedPairMapping(ctx, extendedPairID, userAddress, appMappingID) } -func (k *Keeper) DeleteAddressFromAppExtendedPairVaultMapping(ctx sdk.Context, extendedPairID uint64, userVaultID string, appMappingID uint64) { +func (k Keeper) DeleteAddressFromAppExtendedPairVaultMapping(ctx sdk.Context, extendedPairID uint64, userVaultID string, appMappingID uint64) { k.vault.DeleteAddressFromAppExtendedPairVaultMapping(ctx, extendedPairID, userVaultID, appMappingID) } -func (k *Keeper) GetPairsVault(ctx sdk.Context, id uint64) (pairs assettypes.ExtendedPairVault, found bool) { +func (k Keeper) GetPairsVault(ctx sdk.Context, id uint64) (pairs assettypes.ExtendedPairVault, found bool) { return k.asset.GetPairsVault(ctx, id) } -func (k *Keeper) GetAuctionParams(ctx sdk.Context) auctiontypes.Params { +func (k Keeper) GetAuctionParams(ctx sdk.Context) auctiontypes.Params { return k.auction.GetParams(ctx) } -func (k *Keeper) SetVault(ctx sdk.Context, vault types.Vault) { +func (k Keeper) SetVault(ctx sdk.Context, vault types.Vault) { k.vault.SetVault(ctx, vault) } -func (k *Keeper) GetKillSwitchData(ctx sdk.Context, app_id uint64) (esmtypes.KillSwitchParams, bool) { +func (k Keeper) GetKillSwitchData(ctx sdk.Context, app_id uint64) (esmtypes.KillSwitchParams, bool) { return k.esm.GetKillSwitchData(ctx, app_id) } -func (k *Keeper) GetESMStatus(ctx sdk.Context, id uint64) (esmtypes.ESMStatus, bool) { +func (k Keeper) GetESMStatus(ctx sdk.Context, id uint64) (esmtypes.ESMStatus, bool) { return k.esm.GetESMStatus(ctx, id) } -func (k *Keeper) GetBorrows(ctx sdk.Context) (userBorrows lendtypes.BorrowMapping, found bool) { +func (k Keeper) GetBorrows(ctx sdk.Context) (userBorrows lendtypes.BorrowMapping, found bool) { return k.lend.GetBorrows(ctx) } -func (k *Keeper) GetBorrow(ctx sdk.Context, id uint64) (borrow lendtypes.BorrowAsset, found bool) { +func (k Keeper) GetBorrow(ctx sdk.Context, id uint64) (borrow lendtypes.BorrowAsset, found bool) { return k.lend.GetBorrow(ctx, id) } -func (k *Keeper) GetLendPair(ctx sdk.Context, id uint64) (pair lendtypes.Extended_Pair, found bool) { +func (k Keeper) GetLendPair(ctx sdk.Context, id uint64) (pair lendtypes.Extended_Pair, found bool) { return k.lend.GetLendPair(ctx, id) } -func (k *Keeper) GetAssetRatesStats(ctx sdk.Context, assetID uint64) (assetRatesStats lendtypes.AssetRatesStats, found bool) { +func (k Keeper) GetAssetRatesStats(ctx sdk.Context, assetID uint64) (assetRatesStats lendtypes.AssetRatesStats, found bool) { return k.lend.GetAssetRatesStats(ctx, assetID) } -func (k *Keeper) VerifyCollaterlizationRatio(ctx sdk.Context, amountIn sdk.Int, assetIn assettypes.Asset, amountOut sdk.Int, assetOut assettypes.Asset, liquidationThreshold sdk.Dec) error { +func (k Keeper) VerifyCollaterlizationRatio(ctx sdk.Context, amountIn sdk.Int, assetIn assettypes.Asset, amountOut sdk.Int, assetOut assettypes.Asset, liquidationThreshold sdk.Dec) error { return k.lend.VerifyCollaterlizationRatio(ctx, amountIn, assetIn, amountOut, assetOut, liquidationThreshold) } -func (k *Keeper) CalculateLendCollaterlizationRatio(ctx sdk.Context, amountIn sdk.Int, assetIn assettypes.Asset, amountOut sdk.Int, assetOut assettypes.Asset) (sdk.Dec, error) { +func (k Keeper) CalculateLendCollaterlizationRatio(ctx sdk.Context, amountIn sdk.Int, assetIn assettypes.Asset, amountOut sdk.Int, assetOut assettypes.Asset) (sdk.Dec, error) { return k.lend.CalculateCollaterlizationRatio(ctx, amountIn, assetIn, amountOut, assetOut) } -func (k *Keeper) GetLend(ctx sdk.Context, id uint64) (lend lendtypes.LendAsset, found bool) { +func (k Keeper) GetLend(ctx sdk.Context, id uint64) (lend lendtypes.LendAsset, found bool) { return k.lend.GetLend(ctx, id) } -func (k *Keeper) DeleteBorrow(ctx sdk.Context, id uint64) { +func (k Keeper) DeleteBorrow(ctx sdk.Context, id uint64) { k.lend.DeleteBorrow(ctx, id) } -func (k *Keeper) DeleteBorrowForAddressByPair(ctx sdk.Context, address sdk.AccAddress, pairID uint64) { +func (k Keeper) DeleteBorrowForAddressByPair(ctx sdk.Context, address sdk.AccAddress, pairID uint64) { k.lend.DeleteBorrowForAddressByPair(ctx, address, pairID) } -func (k *Keeper) UpdateUserBorrowIDMapping(ctx sdk.Context, borrowOwner string, borrowID uint64, isInsert bool) error { +func (k Keeper) UpdateUserBorrowIDMapping(ctx sdk.Context, borrowOwner string, borrowID uint64, isInsert bool) error { return k.lend.UpdateUserBorrowIDMapping(ctx, borrowOwner, borrowID, isInsert) } -func (k *Keeper) UpdateBorrowIDByOwnerAndPoolMapping(ctx sdk.Context, borrowOwner string, borrowID uint64, poolID uint64, isInsert bool) error { +func (k Keeper) UpdateBorrowIDByOwnerAndPoolMapping(ctx sdk.Context, borrowOwner string, borrowID uint64, poolID uint64, isInsert bool) error { return k.lend.UpdateBorrowIDByOwnerAndPoolMapping(ctx, borrowOwner, borrowID, poolID, isInsert) } -func (k *Keeper) UpdateBorrowIdsMapping(ctx sdk.Context, borrowID uint64, isInsert bool) error { +func (k Keeper) UpdateBorrowIdsMapping(ctx sdk.Context, borrowID uint64, isInsert bool) error { return k.lend.UpdateBorrowIdsMapping(ctx, borrowID, isInsert) } -func (k *Keeper) CreteNewBorrow(ctx sdk.Context, liqBorrow liquidationtypes.LockedVault) { +func (k Keeper) CreteNewBorrow(ctx sdk.Context, liqBorrow liquidationtypes.LockedVault) { k.lend.CreteNewBorrow(ctx, liqBorrow) } -func (k *Keeper) GetPool(ctx sdk.Context, id uint64) (pool lendtypes.Pool, found bool) { +func (k Keeper) GetPool(ctx sdk.Context, id uint64) (pool lendtypes.Pool, found bool) { return k.lend.GetPool(ctx, id) } + +func (k Keeper) GetBorrowStats(ctx sdk.Context) (borrowStats lendtypes.DepositStats, found bool) { + return k.lend.GetBorrowStats(ctx) +} + +func (k Keeper) SetBorrowStats(ctx sdk.Context, borrowStats lendtypes.DepositStats) { + k.lend.SetBorrowStats(ctx, borrowStats) +} + +func (k Keeper) GetAssetStatsByPoolIDAndAssetID(ctx sdk.Context, assetID, poolID uint64) (AssetStats lendtypes.AssetStats, found bool) { + return k.lend.GetAssetStatsByPoolIDAndAssetID(ctx, assetID, poolID) +} + +func (k Keeper) SetAssetStatsByPoolIDAndAssetID(ctx sdk.Context, AssetStats lendtypes.AssetStats) { + k.lend.SetAssetStatsByPoolIDAndAssetID(ctx, AssetStats) +} + +func (k Keeper) UpdateBorrowStats(ctx sdk.Context, pair lendtypes.Extended_Pair, borrowPos lendtypes.BorrowAsset, amount sdk.Int, inc bool) { + k.lend.UpdateBorrowStats(ctx, pair, borrowPos, amount, inc) +} diff --git a/x/liquidation/keeper/keeper.go b/x/liquidation/keeper/keeper.go index 4ee278fc0..db5f2d3f0 100644 --- a/x/liquidation/keeper/keeper.go +++ b/x/liquidation/keeper/keeper.go @@ -41,13 +41,13 @@ func NewKeeper( esm expected.EsmKeeper, lend expected.LendKeeper, -) *Keeper { +) Keeper { // set KeyTable if it has not already been set if !ps.HasKeyTable() { ps = ps.WithKeyTable(types.ParamKeyTable()) } - return &Keeper{ + return Keeper{ cdc: cdc, storeKey: storeKey, @@ -68,7 +68,7 @@ func (k Keeper) Logger(ctx sdk.Context) log.Logger { return ctx.Logger().With("module", fmt.Sprintf("x/%s", types.ModuleName)) } -func (k *Keeper) Store(ctx sdk.Context) sdk.KVStore { +func (k Keeper) Store(ctx sdk.Context) sdk.KVStore { return ctx.KVStore(k.storeKey) } diff --git a/x/liquidation/keeper/liquidate_borrow.go b/x/liquidation/keeper/liquidate_borrow.go index a71e1d620..e85481391 100644 --- a/x/liquidation/keeper/liquidate_borrow.go +++ b/x/liquidation/keeper/liquidate_borrow.go @@ -13,50 +13,95 @@ func (k Keeper) LiquidateBorrows(ctx sdk.Context) error { if !found { return nil } - for _, v := range borrowIds.BorrowIds { + for _, v := range borrowIds.BorrowIDs { borrowPos, found := k.GetBorrow(ctx, v) if !found { continue } lendPair, _ := k.GetLendPair(ctx, borrowPos.PairID) lendPos, _ := k.GetLend(ctx, borrowPos.LendingID) - pool, _ := k.GetPool(ctx, lendPos.PoolId) + pool, _ := k.GetPool(ctx, lendPos.PoolID) assetIn, _ := k.GetAsset(ctx, lendPair.AssetIn) assetOut, _ := k.GetAsset(ctx, lendPair.AssetOut) var currentCollateralizationRatio sdk.Dec liqThreshold, _ := k.GetAssetRatesStats(ctx, lendPair.AssetIn) + liqThresholdBridgedAssetOne, _ := k.GetAssetRatesStats(ctx, pool.FirstBridgedAssetID) + liqThresholdBridgedAssetTwo, _ := k.GetAssetRatesStats(ctx, pool.SecondBridgedAssetID) + k.UpdateBorrowStats(ctx, lendPair, borrowPos, borrowPos.AmountOut.Amount, false) + if borrowPos.BridgedAssetAmount.Amount.Equal(sdk.ZeroInt()) { currentCollateralizationRatio, _ = k.CalculateLendCollaterlizationRatio(ctx, borrowPos.AmountIn.Amount, assetIn, borrowPos.UpdatedAmountOut, assetOut) + + if sdk.Dec.GT(currentCollateralizationRatio, liqThreshold.LiquidationThreshold) { + err := k.CreateLockedBorrow(ctx, borrowPos, currentCollateralizationRatio, lendPos.AppID) + if err != nil { + continue + } + k.DeleteBorrow(ctx, v) + err = k.UpdateUserBorrowIDMapping(ctx, lendPos.Owner, v, false) + if err != nil { + continue + } + err = k.UpdateBorrowIDByOwnerAndPoolMapping(ctx, lendPos.Owner, v, lendPair.AssetOutPoolID, false) + if err != nil { + continue + } + err = k.UpdateBorrowIdsMapping(ctx, v, false) + if err != nil { + continue + } + + } + } else { - firstBridgedAsset, _ := k.GetAsset(ctx, pool.FirstBridgedAssetId) - secondBridgedAsset, _ := k.GetAsset(ctx, pool.SecondBridgedAssetId) + firstBridgedAsset, _ := k.GetAsset(ctx, pool.FirstBridgedAssetID) if borrowPos.BridgedAssetAmount.Denom == firstBridgedAsset.Denom { - currentCollateralizationRatio, _ = k.CalculateLendCollaterlizationRatio(ctx, borrowPos.BridgedAssetAmount.Amount, firstBridgedAsset, borrowPos.UpdatedAmountOut, assetOut) + currentCollateralizationRatio, _ = k.CalculateLendCollaterlizationRatio(ctx, borrowPos.AmountIn.Amount, assetIn, borrowPos.UpdatedAmountOut, assetOut) + if sdk.Dec.GT(currentCollateralizationRatio, liqThreshold.LiquidationThreshold.Mul(liqThresholdBridgedAssetOne.LiquidationThreshold)) { + err := k.CreateLockedBorrow(ctx, borrowPos, currentCollateralizationRatio, lendPos.AppID) + if err != nil { + continue + } + k.DeleteBorrow(ctx, v) + err = k.UpdateUserBorrowIDMapping(ctx, lendPos.Owner, v, false) + if err != nil { + continue + } + err = k.UpdateBorrowIDByOwnerAndPoolMapping(ctx, lendPos.Owner, v, lendPair.AssetOutPoolID, false) + if err != nil { + continue + } + err = k.UpdateBorrowIdsMapping(ctx, v, false) + if err != nil { + continue + } + + } } else { - currentCollateralizationRatio, _ = k.CalculateLendCollaterlizationRatio(ctx, borrowPos.BridgedAssetAmount.Amount, secondBridgedAsset, borrowPos.UpdatedAmountOut, assetOut) - } - } + currentCollateralizationRatio, _ = k.CalculateLendCollaterlizationRatio(ctx, borrowPos.AmountIn.Amount, assetIn, borrowPos.UpdatedAmountOut, assetOut) - if sdk.Dec.GT(currentCollateralizationRatio, liqThreshold.LiquidationThreshold) { - err := k.CreateLockedBorrow(ctx, borrowPos, currentCollateralizationRatio, lendPos.AppId) - if err != nil { - continue - } - k.DeleteBorrow(ctx, v) - err = k.UpdateUserBorrowIDMapping(ctx, lendPos.Owner, v, false) - if err != nil { - continue - } - err = k.UpdateBorrowIDByOwnerAndPoolMapping(ctx, lendPos.Owner, v, lendPair.AssetOutPoolId, false) - if err != nil { - continue - } - err = k.UpdateBorrowIdsMapping(ctx, v, false) - if err != nil { - continue - } + if sdk.Dec.GT(currentCollateralizationRatio, liqThreshold.LiquidationThreshold.Mul(liqThresholdBridgedAssetTwo.LiquidationThreshold)) { + err := k.CreateLockedBorrow(ctx, borrowPos, currentCollateralizationRatio, lendPos.AppID) + if err != nil { + continue + } + k.DeleteBorrow(ctx, v) + err = k.UpdateUserBorrowIDMapping(ctx, lendPos.Owner, v, false) + if err != nil { + continue + } + err = k.UpdateBorrowIDByOwnerAndPoolMapping(ctx, lendPos.Owner, v, lendPair.AssetOutPoolID, false) + if err != nil { + continue + } + err = k.UpdateBorrowIdsMapping(ctx, v, false) + if err != nil { + continue + } + } + } } } @@ -109,14 +154,29 @@ func (k Keeper) UpdateLockedBorrows(ctx sdk.Context) error { } for _, lockedVault := range lockedVaults { - pair, found := k.GetLendPair(ctx, lockedVault.ExtendedPairId) if !found { continue } + borrowMetaData := lockedVault.GetBorrowMetaData() + lendPos, _ := k.GetLend(ctx, borrowMetaData.LendingId) + pool, _ := k.GetPool(ctx, lendPos.PoolID) + var unliquidatePointPercentage sdk.Dec + firstBridgeAsset, _ := k.GetAsset(ctx, pool.FirstBridgedAssetID) + firstBridgeAssetStats, _ := k.GetAssetRatesStats(ctx, pool.FirstBridgedAssetID) + secondBridgeAssetStats, _ := k.GetAssetRatesStats(ctx, pool.SecondBridgedAssetID) liqThreshold, _ := k.GetAssetRatesStats(ctx, pair.AssetIn) - unliquidatePointPercentage := liqThreshold.LiquidationThreshold + + if !borrowMetaData.BridgedAssetAmount.Amount.Equal(sdk.ZeroInt()) { + if borrowMetaData.BridgedAssetAmount.Denom == firstBridgeAsset.Denom { + unliquidatePointPercentage = liqThreshold.LiquidationThreshold.Mul(firstBridgeAssetStats.LiquidationThreshold) + } else { + unliquidatePointPercentage = liqThreshold.LiquidationThreshold.Mul(secondBridgeAssetStats.LiquidationThreshold) + } + } else { + unliquidatePointPercentage = liqThreshold.LiquidationThreshold + } assetRatesStats, found := k.GetAssetRatesStats(ctx, pair.AssetIn) if !found { @@ -141,11 +201,22 @@ func (k Keeper) UpdateLockedBorrows(ctx sdk.Context) error { assetInPrice, _ := k.GetPriceForAsset(ctx, assetIn.Id) assetOutPrice, _ := k.GetPriceForAsset(ctx, assetOut.Id) deductionPercentage, _ := sdk.NewDecFromStr("1.0") - c := assetRatesStats.LiquidationThreshold + + var c sdk.Dec + if !borrowMetaData.BridgedAssetAmount.Amount.Equal(sdk.ZeroInt()) { + if borrowMetaData.BridgedAssetAmount.Denom == firstBridgeAsset.Denom { + c = assetRatesStats.LiquidationThreshold.Mul(firstBridgeAssetStats.Ltv) + } else { + c = assetRatesStats.LiquidationThreshold.Mul(secondBridgeAssetStats.Ltv) + } + + } else { + c = assetRatesStats.LiquidationThreshold + } + b := deductionPercentage.Add(assetRatesStats.LiquidationPenalty) totalIn := lockedVault.AmountIn.Mul(sdk.NewIntFromUint64(assetInPrice)).ToDec() totalOut := lockedVault.UpdatedAmountOut.Mul(sdk.NewIntFromUint64(assetOutPrice)).ToDec() - factor1 := c.Mul(totalIn) factor2 := b.Mul(c) numerator := totalOut.Sub(factor1) diff --git a/x/liquidation/keeper/liquidate_vaults.go b/x/liquidation/keeper/liquidate_vaults.go index 53d6f8d68..b601b9c3e 100644 --- a/x/liquidation/keeper/liquidate_vaults.go +++ b/x/liquidation/keeper/liquidate_vaults.go @@ -1,7 +1,6 @@ package keeper import ( - esmtypes "github.com/comdex-official/comdex/x/esm/types" "github.com/comdex-official/comdex/x/liquidation/types" vaulttypes "github.com/comdex-official/comdex/x/vault/types" sdk "github.com/cosmos/cosmos-sdk/types" @@ -19,11 +18,8 @@ func (k Keeper) LiquidateVaults(ctx sdk.Context) error { status = esmStatus.Status } klwsParams, _ := k.GetKillSwitchData(ctx, appIds[i]) - if klwsParams.BreakerEnable { - return esmtypes.ErrCircuitBreakerEnabled - } - if status { - return esmtypes.ErrESMAlreadyExecuted + if klwsParams.BreakerEnable || status { + continue } vaultsMap, _ := k.GetAppExtendedPairVaultMapping(ctx, appIds[i]) @@ -111,7 +107,7 @@ func (k Keeper) SetLockedVaultByAppID(ctx sdk.Context, msg types.LockedVaultToAp store.Set(key, value) } -func (k *Keeper) GetLockedVaultByAppID(ctx sdk.Context, appMappingID uint64) (msg types.LockedVaultToAppMapping, found bool) { +func (k Keeper) GetLockedVaultByAppID(ctx sdk.Context, appMappingID uint64) (msg types.LockedVaultToAppMapping, found bool) { var ( store = k.Store(ctx) key = types.AppIDLockedVaultMappingKey(appMappingID) @@ -126,6 +122,27 @@ func (k *Keeper) GetLockedVaultByAppID(ctx sdk.Context, appMappingID uint64) (ms return msg, true } +func (k Keeper) GetAllLockedVaultByAppID(ctx sdk.Context) (lockedVaultToAppMapping []types.LockedVaultToAppMapping) { + var ( + store = k.Store(ctx) + iter = sdk.KVStorePrefixIterator(store, types.AppIDLockedVaultMappingKeyPrefix) + ) + + defer func(iter sdk.Iterator) { + err := iter.Close() + if err != nil { + return + } + }(iter) + + for ; iter.Valid(); iter.Next() { + var vault types.LockedVaultToAppMapping + k.cdc.MustUnmarshal(iter.Value(), &vault) + lockedVaultToAppMapping = append(lockedVaultToAppMapping, vault) + } + return lockedVaultToAppMapping +} + func (k Keeper) CreateLockedVaultHistory(ctx sdk.Context, lockedVault types.LockedVault) error { lockedVaultID := k.GetLockedVaultIDHistory(ctx) k.SetLockedVaultHistory(ctx, lockedVault, lockedVaultID) @@ -155,7 +172,7 @@ func (k Keeper) UpdateLockedVaults(ctx sdk.Context) error { assetInPrice, found := k.GetPriceForAsset(ctx, assetIn.Id) if !found { - return types.ErrorPriceDoesNotExist + continue } totalIn := lockedVault.AmountIn.Mul(sdk.NewIntFromUint64(assetInPrice)).ToDec() @@ -177,7 +194,7 @@ func (k Keeper) GetModAccountBalances(ctx sdk.Context, accountName string, denom return k.GetBalance(ctx, macc.GetAddress(), denom).Amount } -func (k *Keeper) GetLockedVaultIDbyApp(ctx sdk.Context, appID uint64) uint64 { +func (k Keeper) GetLockedVaultIDbyApp(ctx sdk.Context, appID uint64) uint64 { var ( store = k.Store(ctx) key = types.AppLockedVaultMappingKey(appID) @@ -194,7 +211,7 @@ func (k *Keeper) GetLockedVaultIDbyApp(ctx sdk.Context, appID uint64) uint64 { return id.GetValue() } -func (k *Keeper) GetLockedVaultIDHistory(ctx sdk.Context) uint64 { +func (k Keeper) GetLockedVaultIDHistory(ctx sdk.Context) uint64 { var ( store = k.Store(ctx) key = types.LockedVaultKeyHistory @@ -211,7 +228,7 @@ func (k *Keeper) GetLockedVaultIDHistory(ctx sdk.Context) uint64 { return id.GetValue() } -func (k *Keeper) SetLockedVaultID(ctx sdk.Context, id uint64) { +func (k Keeper) SetLockedVaultID(ctx sdk.Context, id uint64) { var ( store = k.Store(ctx) key = types.LockedVaultIDKey @@ -224,7 +241,7 @@ func (k *Keeper) SetLockedVaultID(ctx sdk.Context, id uint64) { store.Set(key, value) } -func (k *Keeper) GetLockedVaultID(ctx sdk.Context) uint64 { +func (k Keeper) GetLockedVaultID(ctx sdk.Context) uint64 { var ( store = k.Store(ctx) key = types.LockedVaultIDKey @@ -240,7 +257,7 @@ func (k *Keeper) GetLockedVaultID(ctx sdk.Context) uint64 { return id.GetValue() } -func (k *Keeper) SetLockedVaultIDHistory(ctx sdk.Context, id uint64) { +func (k Keeper) SetLockedVaultIDHistory(ctx sdk.Context, id uint64) { var ( store = k.Store(ctx) key = types.LockedVaultKeyHistory @@ -253,7 +270,7 @@ func (k *Keeper) SetLockedVaultIDHistory(ctx sdk.Context, id uint64) { store.Set(key, value) } -func (k *Keeper) SetLockedVault(ctx sdk.Context, lockedVault types.LockedVault) { +func (k Keeper) SetLockedVault(ctx sdk.Context, lockedVault types.LockedVault) { var ( store = k.Store(ctx) key = types.LockedVaultKey(lockedVault.LockedVaultId) @@ -262,7 +279,7 @@ func (k *Keeper) SetLockedVault(ctx sdk.Context, lockedVault types.LockedVault) store.Set(key, value) } -func (k *Keeper) SetLockedVaultHistory(ctx sdk.Context, lockedVault types.LockedVault, id uint64) { +func (k Keeper) SetLockedVaultHistory(ctx sdk.Context, lockedVault types.LockedVault, id uint64) { var ( store = k.Store(ctx) key = types.LockedVaultHistoryKey(id) @@ -271,7 +288,7 @@ func (k *Keeper) SetLockedVaultHistory(ctx sdk.Context, lockedVault types.Locked store.Set(key, value) } -func (k *Keeper) DeleteLockedVault(ctx sdk.Context, id uint64) { +func (k Keeper) DeleteLockedVault(ctx sdk.Context, id uint64) { var ( store = k.Store(ctx) key = types.LockedVaultKey(id) @@ -279,7 +296,7 @@ func (k *Keeper) DeleteLockedVault(ctx sdk.Context, id uint64) { store.Delete(key) } -func (k *Keeper) GetLockedVault(ctx sdk.Context, id uint64) (lockedVault types.LockedVault, found bool) { +func (k Keeper) GetLockedVault(ctx sdk.Context, id uint64) (lockedVault types.LockedVault, found bool) { var ( store = k.Store(ctx) key = types.LockedVaultKey(id) @@ -294,7 +311,7 @@ func (k *Keeper) GetLockedVault(ctx sdk.Context, id uint64) (lockedVault types.L return lockedVault, true } -func (k *Keeper) GetLockedVaults(ctx sdk.Context) (lockedVaults []types.LockedVault) { +func (k Keeper) GetLockedVaults(ctx sdk.Context) (lockedVaults []types.LockedVault) { var ( store = k.Store(ctx) iter = sdk.KVStorePrefixIterator(store, types.LockedVaultKeyPrefix) @@ -316,7 +333,7 @@ func (k *Keeper) GetLockedVaults(ctx sdk.Context) (lockedVaults []types.LockedVa return lockedVaults } -func (k *Keeper) SetFlagIsAuctionInProgress(ctx sdk.Context, id uint64, flag bool) error { +func (k Keeper) SetFlagIsAuctionInProgress(ctx sdk.Context, id uint64, flag bool) error { lockedVault, found := k.GetLockedVault(ctx, id) if !found { return types.LockedVaultDoesNotExist @@ -326,7 +343,7 @@ func (k *Keeper) SetFlagIsAuctionInProgress(ctx sdk.Context, id uint64, flag boo return nil } -func (k *Keeper) SetFlagIsAuctionComplete(ctx sdk.Context, id uint64, flag bool) error { +func (k Keeper) SetFlagIsAuctionComplete(ctx sdk.Context, id uint64, flag bool) error { lockedVault, found := k.GetLockedVault(ctx, id) if !found { return types.LockedVaultDoesNotExist @@ -336,7 +353,7 @@ func (k *Keeper) SetFlagIsAuctionComplete(ctx sdk.Context, id uint64, flag bool) return nil } -/*func (k *Keeper) UpdateAssetQuantitiesInLockedVault( +/*func (k Keeper) UpdateAssetQuantitiesInLockedVault( ctx sdk.Context, collateral_auction auctiontypes.CollateralAuction, amountIn sdk.Int, @@ -361,7 +378,7 @@ func (k *Keeper) SetFlagIsAuctionComplete(ctx sdk.Context, id uint64, flag bool) return nil }*/ -func (k *Keeper) SetAppID(ctx sdk.Context, AppIds types.WhitelistedAppIds) { +func (k Keeper) SetAppID(ctx sdk.Context, AppIds types.WhitelistedAppIds) { var ( store = k.Store(ctx) key = types.AppIdsKeyPrefix @@ -371,7 +388,7 @@ func (k *Keeper) SetAppID(ctx sdk.Context, AppIds types.WhitelistedAppIds) { store.Set(key, value) } -func (k *Keeper) GetAppIds(ctx sdk.Context) (appIds types.WhitelistedAppIds) { +func (k Keeper) GetAppIds(ctx sdk.Context) (appIds types.WhitelistedAppIds) { var ( store = k.Store(ctx) key = types.AppIdsKeyPrefix diff --git a/x/liquidation/keeper/liquidate_vaults_test.go b/x/liquidation/keeper/liquidate_vaults_test.go index 592a228bf..275bda5ea 100644 --- a/x/liquidation/keeper/liquidate_vaults_test.go +++ b/x/liquidation/keeper/liquidate_vaults_test.go @@ -11,14 +11,6 @@ import ( protobuftypes "github.com/gogo/protobuf/types" ) -/* -func (k *Keeper) AddAppMappingRecords(ctx sdk.Context, records ...types.AppMapping) error -func (k *Keeper) AddAssetRecords(ctx sdk.Context, records ...types.Asset) error -func (k *Keeper) AddPairsRecords(ctx sdk.Context, records ...types.Pair) error -func (k *Keeper) AddExtendedPairsVaultRecords(ctx sdk.Context, records ...types.ExtendedPairVault) error -func (k Keeper) WhitelistAppId(ctx sdk.Context, appMappingId uint64) error -*/ - func (s *KeeperTestSuite) AddPairAndExtendedPairVault1() { assetKeeper, liquidationKeeper, ctx := &s.assetKeeper, &s.liquidationKeeper, &s.ctx @@ -165,7 +157,7 @@ func (s *KeeperTestSuite) AddAppAsset() { s.Require().NoError(err) genesisSupply := sdk.NewIntFromUint64(1000000) assetKeeper, ctx := &s.assetKeeper, &s.ctx - msg1 := []assetTypes.AppData{{ + msg1 := assetTypes.AppData{ Name: "cswap", ShortName: "cswap", MinGovDeposit: sdk.NewIntFromUint64(10000000), @@ -173,34 +165,19 @@ func (s *KeeperTestSuite) AddAppAsset() { GenesisToken: []assetTypes.MintGenesisToken{ { 3, - &genesisSupply, + genesisSupply, true, userAddress1, }, { 2, - &genesisSupply, + genesisSupply, true, userAddress1, }, }, - }, - { - Name: "commodo", - ShortName: "commodo", - MinGovDeposit: sdk.NewIntFromUint64(10000000), - GovTimeInSeconds: 900, - GenesisToken: []assetTypes.MintGenesisToken{ - { - 3, - &genesisSupply, - true, - userAddress1, - }, - }, - }, } - err = assetKeeper.AddAppRecords(*ctx, msg1...) + err = assetKeeper.AddAppRecords(*ctx, msg1) s.Require().NoError(err) for index, tc := range []struct { diff --git a/x/liquidation/keeper/query_server.go b/x/liquidation/keeper/query_server.go index 5192c810f..e1bbebf1f 100644 --- a/x/liquidation/keeper/query_server.go +++ b/x/liquidation/keeper/query_server.go @@ -11,7 +11,7 @@ import ( "google.golang.org/grpc/status" ) -var _ types.QueryServer = (*QueryServer)(nil) +var _ types.QueryServer = QueryServer{} type QueryServer struct { Keeper @@ -23,7 +23,7 @@ func NewQueryServer(k Keeper) types.QueryServer { } } -func (q *QueryServer) QueryParams(c context.Context, _ *types.QueryParamsRequest) (*types.QueryParamsResponse, error) { +func (q QueryServer) QueryParams(c context.Context, _ *types.QueryParamsRequest) (*types.QueryParamsResponse, error) { var ( ctx = sdk.UnwrapSDKContext(c) params = q.GetParams(ctx) @@ -34,7 +34,7 @@ func (q *QueryServer) QueryParams(c context.Context, _ *types.QueryParamsRequest }, nil } -func (q *QueryServer) QueryLockedVault(c context.Context, req *types.QueryLockedVaultRequest) (*types.QueryLockedVaultResponse, error) { +func (q QueryServer) QueryLockedVault(c context.Context, req *types.QueryLockedVaultRequest) (*types.QueryLockedVaultResponse, error) { if req == nil { return nil, status.Error(codes.InvalidArgument, "request cannot be empty") } @@ -52,7 +52,7 @@ func (q *QueryServer) QueryLockedVault(c context.Context, req *types.QueryLocked }, nil } -func (q *QueryServer) QueryLockedVaults(c context.Context, req *types.QueryLockedVaultsRequest) (*types.QueryLockedVaultsResponse, error) { +func (q QueryServer) QueryLockedVaults(c context.Context, req *types.QueryLockedVaultsRequest) (*types.QueryLockedVaultsResponse, error) { if req == nil { return nil, status.Error(codes.InvalidArgument, "request cannot be empty") } @@ -89,7 +89,7 @@ func (q *QueryServer) QueryLockedVaults(c context.Context, req *types.QueryLocke }, nil } -func (q *QueryServer) QueryLockedVaultsHistory(c context.Context, req *types.QueryLockedVaultsHistoryRequest) (*types.QueryLockedVaultsHistoryResponse, error) { +func (q QueryServer) QueryLockedVaultsHistory(c context.Context, req *types.QueryLockedVaultsHistoryRequest) (*types.QueryLockedVaultsHistoryResponse, error) { if req == nil { return nil, status.Error(codes.InvalidArgument, "request cannot be empty") } @@ -126,7 +126,7 @@ func (q *QueryServer) QueryLockedVaultsHistory(c context.Context, req *types.Que }, nil } -func (q *QueryServer) QueryUserLockedVaults(c context.Context, req *types.QueryUserLockedVaultsRequest) (*types.QueryUserLockedVaultsResponse, error) { +func (q QueryServer) QueryUserLockedVaults(c context.Context, req *types.QueryUserLockedVaultsRequest) (*types.QueryUserLockedVaultsResponse, error) { if req == nil { return nil, status.Error(codes.InvalidArgument, "request cannot be empty") } @@ -163,7 +163,7 @@ func (q *QueryServer) QueryUserLockedVaults(c context.Context, req *types.QueryU }, nil } -func (q *QueryServer) QueryUserLockedVaultsHistory(c context.Context, req *types.QueryUserLockedVaultsHistoryRequest) (*types.QueryUserLockedVaultsHistoryResponse, error) { +func (q QueryServer) QueryUserLockedVaultsHistory(c context.Context, req *types.QueryUserLockedVaultsHistoryRequest) (*types.QueryUserLockedVaultsHistoryResponse, error) { if req == nil { return nil, status.Error(codes.InvalidArgument, "request cannot be empty") } @@ -200,7 +200,7 @@ func (q *QueryServer) QueryUserLockedVaultsHistory(c context.Context, req *types }, nil } -func (q *QueryServer) QueryLockedVaultsPair(c context.Context, req *types.QueryLockedVaultsPairRequest) (*types.QueryLockedVaultsPairResponse, error) { +func (q QueryServer) QueryLockedVaultsPair(c context.Context, req *types.QueryLockedVaultsPairRequest) (*types.QueryLockedVaultsPairResponse, error) { if req == nil { return nil, status.Error(codes.InvalidArgument, "request cannot be empty") } @@ -237,7 +237,7 @@ func (q *QueryServer) QueryLockedVaultsPair(c context.Context, req *types.QueryL }, nil } -func (q *QueryServer) QueryAppIds(c context.Context, _ *types.QueryAppIdsRequest) (*types.QueryAppIdsResponse, error) { +func (q QueryServer) QueryAppIds(c context.Context, _ *types.QueryAppIdsRequest) (*types.QueryAppIdsResponse, error) { var ( ctx = sdk.UnwrapSDKContext(c) ) diff --git a/x/liquidation/module.go b/x/liquidation/module.go index 3e1f7836d..e38c8e152 100644 --- a/x/liquidation/module.go +++ b/x/liquidation/module.go @@ -55,7 +55,7 @@ func (a AppModuleBasic) RegisterInterfaces(reg cdctypes.InterfaceRegistry) { // DefaultGenesis returns the capability module's default genesis state. func (AppModuleBasic) DefaultGenesis(cdc codec.JSONCodec) json.RawMessage { - return cdc.MustMarshalJSON(types.DefaultGenesis()) + return cdc.MustMarshalJSON(types.DefaultGenesisState()) } // ValidateGenesis performs genesis state validation for the capability module. @@ -148,7 +148,7 @@ func (am AppModule) InitGenesis(ctx sdk.Context, cdc codec.JSONCodec, gs json.Ra // Initialize global index to index in genesis state cdc.MustUnmarshalJSON(gs, &genState) - InitGenesis(ctx, am.keeper, genState) + InitGenesis(ctx, am.keeper, &genState) return []abci.ValidatorUpdate{} } diff --git a/x/liquidation/types/errors.go b/x/liquidation/types/errors.go index 12eb59ce4..efe2212f8 100644 --- a/x/liquidation/types/errors.go +++ b/x/liquidation/types/errors.go @@ -7,8 +7,9 @@ import ( ) var ( - LockedVaultDoesNotExist = sdkerrors.Register(ModuleName, 201, "locked vault does not exist with given id") - ErrAppIDExists = sdkerrors.Register(ModuleName, 1101, "App Id exists") - ErrAppIDDoesNotExists = sdkerrors.Register(ModuleName, 1102, "App Id does not exist") - ErrorPriceDoesNotExist = sdkerrors.Register(ModuleName, 1103, "Price does not exist") + LockedVaultDoesNotExist = sdkerrors.Register(ModuleName, 201, "locked vault does not exist with given id") + ErrAppIDExists = sdkerrors.Register(ModuleName, 1101, "App Id exists") + ErrAppIDDoesNotExists = sdkerrors.Register(ModuleName, 1102, "App Id does not exist") + ErrorPriceDoesNotExist = sdkerrors.Register(ModuleName, 1103, "Price does not exist") + SendCoinsFromModuleToAccountInLiquidationIsZero = sdkerrors.Register(ModuleName, 1104, "Coin value in module to account transfer in liquidation is zero") ) diff --git a/x/liquidation/types/genesis.go b/x/liquidation/types/genesis.go index 080b57552..202b41853 100644 --- a/x/liquidation/types/genesis.go +++ b/x/liquidation/types/genesis.go @@ -1,20 +1,23 @@ package types -// DefaultIndex is the default capability global index. -const DefaultIndex uint64 = 1 - -// DefaultGenesis returns the default Capability genesis state. -func DefaultGenesis() *GenesisState { +func NewGenesisState(lockedVault []LockedVault, lockedVaultToAppMapping []LockedVaultToAppMapping, whitelistedAppIds WhitelistedAppIds, params Params) *GenesisState { return &GenesisState{ - // this line is used by starport scaffolding # genesis/types/default - Params: DefaultParams(), + LockedVault: lockedVault, + LockedVaultToAppMapping: lockedVaultToAppMapping, + WhitelistedAppIds: whitelistedAppIds, + Params: params, } } -// Validate performs basic genesis state validation returning an error upon any -// failure. -func (gs GenesisState) Validate() error { - // this line is used by starport scaffolding # genesis/types/validate +func DefaultGenesisState() *GenesisState { + return NewGenesisState( + []LockedVault{}, + []LockedVaultToAppMapping{}, + WhitelistedAppIds{}, + DefaultParams(), + ) +} - return gs.Params.Validate() +func (m *GenesisState) Validate() error { + return nil } diff --git a/x/liquidation/types/genesis.pb.go b/x/liquidation/types/genesis.pb.go index 76c2ef2a1..eca649e6d 100644 --- a/x/liquidation/types/genesis.pb.go +++ b/x/liquidation/types/genesis.pb.go @@ -24,7 +24,10 @@ var _ = math.Inf const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package type GenesisState struct { - Params Params `protobuf:"bytes,1,opt,name=params,proto3" json:"params"` + LockedVault []LockedVault `protobuf:"bytes,1,rep,name=lockedVault,proto3" json:"lockedVault" yaml:"lockedVault"` + LockedVaultToAppMapping []LockedVaultToAppMapping `protobuf:"bytes,2,rep,name=lockedVaultToAppMapping,proto3" json:"lockedVaultToAppMapping" yaml:"lockedVaultToAppMapping"` + WhitelistedAppIds WhitelistedAppIds `protobuf:"bytes,3,opt,name=whitelistedAppIds,proto3" json:"whitelistedAppIds" yaml:"whitelistedAppIds"` + Params Params `protobuf:"bytes,4,opt,name=params,proto3" json:"params"` } func (m *GenesisState) Reset() { *m = GenesisState{} } @@ -60,6 +63,27 @@ func (m *GenesisState) XXX_DiscardUnknown() { var xxx_messageInfo_GenesisState proto.InternalMessageInfo +func (m *GenesisState) GetLockedVault() []LockedVault { + if m != nil { + return m.LockedVault + } + return nil +} + +func (m *GenesisState) GetLockedVaultToAppMapping() []LockedVaultToAppMapping { + if m != nil { + return m.LockedVaultToAppMapping + } + return nil +} + +func (m *GenesisState) GetWhitelistedAppIds() WhitelistedAppIds { + if m != nil { + return m.WhitelistedAppIds + } + return WhitelistedAppIds{} +} + func (m *GenesisState) GetParams() Params { if m != nil { return m.Params @@ -76,20 +100,30 @@ func init() { } var fileDescriptor_25a194092306c317 = []byte{ - // 208 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0xd2, 0x48, 0xce, 0xcf, 0x4d, - 0x49, 0xad, 0xd0, 0xcf, 0xc9, 0x2c, 0x2c, 0xcd, 0x4c, 0x49, 0x2c, 0xc9, 0xcc, 0xcf, 0xd3, 0x2f, - 0x33, 0x4c, 0x4a, 0x2d, 0x49, 0x34, 0xd4, 0x4f, 0x4f, 0xcd, 0x4b, 0x2d, 0xce, 0x2c, 0xd6, 0x2b, - 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x92, 0x82, 0xa8, 0xd4, 0x43, 0x52, 0xa9, 0x07, 0x55, 0x29, 0x25, - 0x92, 0x9e, 0x9f, 0x9e, 0x0f, 0x56, 0xa6, 0x0f, 0x62, 0x41, 0x74, 0x48, 0xa9, 0xe3, 0x31, 0xbb, - 0x20, 0xb1, 0x28, 0x31, 0x17, 0x6a, 0xb4, 0x52, 0x00, 0x17, 0x8f, 0x3b, 0xc4, 0xae, 0xe0, 0x92, - 0xc4, 0x92, 0x54, 0x21, 0x07, 0x2e, 0x36, 0x88, 0xbc, 0x04, 0xa3, 0x02, 0xa3, 0x06, 0xb7, 0x91, - 0x92, 0x1e, 0x6e, 0xbb, 0xf5, 0x02, 0xc0, 0x2a, 0x9d, 0x58, 0x4e, 0xdc, 0x93, 0x67, 0x08, 0x82, - 0xea, 0x73, 0xf2, 0x3f, 0xf1, 0x48, 0x8e, 0xf1, 0xc2, 0x23, 0x39, 0xc6, 0x07, 0x8f, 0xe4, 0x18, - 0x27, 0x3c, 0x96, 0x63, 0xb8, 0xf0, 0x58, 0x8e, 0xe1, 0xc6, 0x63, 0x39, 0x86, 0x28, 0xd3, 0xf4, - 0xcc, 0x92, 0x8c, 0xd2, 0x24, 0x90, 0x89, 0xfa, 0x10, 0x53, 0x75, 0xf3, 0xd3, 0xd2, 0x32, 0x93, - 0x33, 0x13, 0x73, 0xa0, 0x7c, 0x7d, 0x54, 0x17, 0x97, 0x54, 0x16, 0xa4, 0x16, 0x27, 0xb1, 0x81, - 0x5d, 0x6a, 0x0c, 0x08, 0x00, 0x00, 0xff, 0xff, 0x73, 0x0e, 0x01, 0xf2, 0x30, 0x01, 0x00, 0x00, + // 360 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x92, 0x31, 0x4f, 0xf2, 0x40, + 0x1c, 0xc6, 0xdb, 0x17, 0xc2, 0x50, 0xde, 0xc5, 0xc6, 0xc4, 0xa6, 0xc3, 0x41, 0x3a, 0x08, 0x0b, + 0xbd, 0x00, 0x71, 0x71, 0x92, 0x2e, 0xc6, 0x44, 0xa3, 0xa9, 0x46, 0x13, 0x17, 0x73, 0xd0, 0xa3, + 0x5c, 0x3c, 0xb8, 0x93, 0x1e, 0x28, 0x83, 0xdf, 0xc1, 0xc5, 0xef, 0xc4, 0x64, 0x18, 0x9d, 0x88, + 0x81, 0x6f, 0xe0, 0x27, 0x30, 0xed, 0x5d, 0xe2, 0x29, 0xa1, 0x71, 0xeb, 0x25, 0xbf, 0xe7, 0xf9, + 0x3d, 0x49, 0xff, 0x56, 0xbd, 0xc7, 0x86, 0x11, 0x7e, 0x82, 0x94, 0x3c, 0x4c, 0x48, 0x84, 0x04, + 0x61, 0x23, 0x38, 0x6d, 0x76, 0xb1, 0x40, 0x4d, 0x18, 0xe3, 0x11, 0x4e, 0x48, 0xe2, 0xf3, 0x31, + 0x13, 0xcc, 0x76, 0x25, 0xe9, 0x6b, 0xa4, 0xaf, 0x48, 0x77, 0x37, 0x66, 0x31, 0xcb, 0x30, 0x98, + 0x7e, 0xc9, 0x84, 0x5b, 0xcb, 0xe9, 0xe6, 0x68, 0x8c, 0x86, 0xaa, 0xda, 0x6d, 0xe4, 0x80, 0x94, + 0xf5, 0xee, 0x71, 0x74, 0x37, 0x45, 0x13, 0x2a, 0x24, 0xee, 0xbd, 0x15, 0xac, 0xff, 0xc7, 0x72, + 0xdb, 0xa5, 0x40, 0x02, 0xdb, 0xd8, 0x2a, 0x4b, 0xec, 0x3a, 0xa5, 0x1c, 0xb3, 0x5a, 0xa8, 0x97, + 0x5b, 0x35, 0x7f, 0xfb, 0x60, 0xff, 0xf4, 0x1b, 0x0f, 0xdc, 0xf9, 0xb2, 0x62, 0x7c, 0x2e, 0x2b, + 0xf6, 0x0c, 0x0d, 0xe9, 0xa1, 0xa7, 0x35, 0x79, 0xa1, 0xde, 0x6b, 0xbf, 0x9a, 0xd6, 0x9e, 0xf6, + 0xbe, 0x62, 0x1d, 0xce, 0xcf, 0x10, 0xe7, 0x64, 0x14, 0x3b, 0xff, 0x32, 0x67, 0xfb, 0x8f, 0x4e, + 0x3d, 0x1a, 0xec, 0x2b, 0x3f, 0xd8, 0xf0, 0xeb, 0x98, 0x17, 0x6e, 0x73, 0xdb, 0xcf, 0xd6, 0xce, + 0xe3, 0x80, 0x08, 0x4c, 0x49, 0x22, 0x70, 0xd4, 0xe1, 0xfc, 0x24, 0x4a, 0x9c, 0x42, 0xd5, 0xac, + 0x97, 0x5b, 0x8d, 0xbc, 0x41, 0x37, 0xbf, 0x43, 0x41, 0x55, 0x4d, 0x71, 0xe4, 0x94, 0x8d, 0x56, + 0x2f, 0xdc, 0x34, 0xd9, 0x47, 0x56, 0x49, 0xfe, 0x4d, 0xa7, 0x98, 0x39, 0xbd, 0x3c, 0xe7, 0x45, + 0x46, 0x06, 0xc5, 0x54, 0x14, 0xaa, 0x5c, 0x70, 0x3e, 0x5f, 0x01, 0x73, 0xb1, 0x02, 0xe6, 0xc7, + 0x0a, 0x98, 0x2f, 0x6b, 0x60, 0x2c, 0xd6, 0xc0, 0x78, 0x5f, 0x03, 0xe3, 0xf6, 0x20, 0x26, 0x62, + 0x30, 0xe9, 0xa6, 0x8d, 0x50, 0xb6, 0x36, 0x58, 0xbf, 0x4f, 0x7a, 0x04, 0x51, 0xf5, 0x86, 0x3f, + 0xcf, 0x46, 0xcc, 0x38, 0x4e, 0xba, 0xa5, 0xec, 0x50, 0xda, 0x5f, 0x01, 0x00, 0x00, 0xff, 0xff, + 0xfc, 0xae, 0x6e, 0x89, 0xde, 0x02, 0x00, 0x00, } func (m *GenesisState) Marshal() (dAtA []byte, err error) { @@ -121,7 +155,45 @@ func (m *GenesisState) MarshalToSizedBuffer(dAtA []byte) (int, error) { i = encodeVarintGenesis(dAtA, i, uint64(size)) } i-- - dAtA[i] = 0xa + dAtA[i] = 0x22 + { + size, err := m.WhitelistedAppIds.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + if len(m.LockedVaultToAppMapping) > 0 { + for iNdEx := len(m.LockedVaultToAppMapping) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.LockedVaultToAppMapping[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + } + if len(m.LockedVault) > 0 { + for iNdEx := len(m.LockedVault) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.LockedVault[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + } return len(dAtA) - i, nil } @@ -142,6 +214,20 @@ func (m *GenesisState) Size() (n int) { } var l int _ = l + if len(m.LockedVault) > 0 { + for _, e := range m.LockedVault { + l = e.Size() + n += 1 + l + sovGenesis(uint64(l)) + } + } + if len(m.LockedVaultToAppMapping) > 0 { + for _, e := range m.LockedVaultToAppMapping { + l = e.Size() + n += 1 + l + sovGenesis(uint64(l)) + } + } + l = m.WhitelistedAppIds.Size() + n += 1 + l + sovGenesis(uint64(l)) l = m.Params.Size() n += 1 + l + sovGenesis(uint64(l)) return n @@ -183,6 +269,107 @@ func (m *GenesisState) Unmarshal(dAtA []byte) error { } switch fieldNum { case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LockedVault", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.LockedVault = append(m.LockedVault, LockedVault{}) + if err := m.LockedVault[len(m.LockedVault)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LockedVaultToAppMapping", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.LockedVaultToAppMapping = append(m.LockedVaultToAppMapping, LockedVaultToAppMapping{}) + if err := m.LockedVaultToAppMapping[len(m.LockedVaultToAppMapping)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field WhitelistedAppIds", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.WhitelistedAppIds.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Params", wireType) } diff --git a/x/liquidity/abci.go b/x/liquidity/abci.go index 17520f0e1..6492c7cb6 100644 --- a/x/liquidity/abci.go +++ b/x/liquidity/abci.go @@ -4,37 +4,45 @@ import ( "github.com/cosmos/cosmos-sdk/telemetry" sdk "github.com/cosmos/cosmos-sdk/types" + utils "github.com/comdex-official/comdex/types" "github.com/comdex-official/comdex/x/liquidity/keeper" "github.com/comdex-official/comdex/x/liquidity/types" ) func BeginBlocker(ctx sdk.Context, k keeper.Keeper) { defer telemetry.ModuleMeasureSince(types.ModuleName, ctx.BlockTime(), telemetry.MetricKeyBeginBlocker) - allApps, found := k.GetApps(ctx) - if found { - for _, app := range allApps { - k.DeleteOutdatedRequests(ctx, app.Id) - if ctx.BlockHeight()%150 == 0 { - k.ConvertAccumulatedSwapFeesWithSwapDistrToken(ctx, app.Id) + + _ = utils.ApplyFuncIfNoError(ctx, func(ctx sdk.Context) error { + allApps, found := k.GetApps(ctx) + if found { + for _, app := range allApps { + k.DeleteOutdatedRequests(ctx, app.Id) + if ctx.BlockHeight()%150 == 0 { + k.ConvertAccumulatedSwapFeesWithSwapDistrToken(ctx, app.Id) + } } } - } + return nil + }) } func EndBlocker(ctx sdk.Context, k keeper.Keeper) { defer telemetry.ModuleMeasureSince(types.ModuleName, ctx.BlockTime(), telemetry.MetricKeyEndBlocker) - allApps, found := k.GetApps(ctx) - if found { - for _, app := range allApps { - params, err := k.GetGenericParams(ctx, app.Id) - if err != nil { - continue - } - if ctx.BlockHeight()%int64(params.BatchSize) == 0 { - k.ExecuteRequests(ctx, app.Id) - k.ProcessQueuedLiquidityProviders(ctx, app.Id) + _ = utils.ApplyFuncIfNoError(ctx, func(ctx sdk.Context) error { + allApps, found := k.GetApps(ctx) + if found { + for _, app := range allApps { + params, err := k.GetGenericParams(ctx, app.Id) + if err != nil { + continue + } + if ctx.BlockHeight()%int64(params.BatchSize) == 0 { + k.ExecuteRequests(ctx, app.Id) + k.ProcessQueuedFarmers(ctx, app.Id) + } } } - } + return nil + }) } diff --git a/x/liquidity/client/cli/query.go b/x/liquidity/client/cli/query.go index 4f1da4bee..e7addd864 100644 --- a/x/liquidity/client/cli/query.go +++ b/x/liquidity/client/cli/query.go @@ -37,7 +37,7 @@ func GetQueryCmd() *cobra.Command { NewQueryWithdrawRequestCmd(), NewQueryOrdersCmd(), NewQueryOrderCmd(), - NewQuerySoftLockCmd(), + NewQueryFarmerCmd(), NewQueryDeserializePoolCoinCmd(), NewQueryPoolIncentivesCmd(), NewQueryFarmedPoolCoinCmd(), @@ -754,16 +754,16 @@ $ %s query %s order 1 1 1 return cmd } -// NewQuerySoftLockCmd implements the soft lock query command. -func NewQuerySoftLockCmd() *cobra.Command { +// NewQueryFarmerCmd implements the farmer query command. +func NewQueryFarmerCmd() *cobra.Command { cmd := &cobra.Command{ - Use: "soft-lock [app-id] [pool-id] [depositor]", + Use: "farmer [app-id] [pool-id] [farmer]", Args: cobra.ExactArgs(3), - Short: "Query details of the soft-lock", + Short: "Query farmer", Long: strings.TrimSpace( - fmt.Sprintf(`Query details of the soft-lock in specific pool for adddress. + fmt.Sprintf(`Query farming status of the farmer. Example: -$ %s query %s soft-lock 1 1 comdex... +$ %s query %s farmer 1 1 comdex... `, version.AppName, types.ModuleName, ), @@ -781,17 +781,17 @@ $ %s query %s soft-lock 1 1 comdex... poolID, err := strconv.ParseUint(args[1], 10, 64) if err != nil { - return err + return fmt.Errorf("parse pool id: %w", err) } queryClient := types.NewQueryClient(clientCtx) - res, err := queryClient.SoftLock( + res, err := queryClient.Farmer( cmd.Context(), - &types.QuerySoftLockRequest{ - AppId: appID, - PoolId: poolID, - Depositor: args[2], + &types.QueryFarmerRequest{ + AppId: appID, + PoolId: poolID, + Farmer: args[2], }) if err != nil { return err @@ -806,7 +806,7 @@ $ %s query %s soft-lock 1 1 comdex... return cmd } -// NewQueryDeserializePoolCoinCmd implements the soft lock query command. +// NewQueryDeserializePoolCoinCmd implements the deserialize query command. func NewQueryDeserializePoolCoinCmd() *cobra.Command { cmd := &cobra.Command{ Use: "deserialize [app-id] [pool-id] [pool-coin-amount]", @@ -913,9 +913,9 @@ func NewQueryFarmedPoolCoinCmd() *cobra.Command { cmd := &cobra.Command{ Use: "farmed-coin [app-id] [pool-id]", Args: cobra.ExactArgs(2), - Short: "Query total coins being farmed (in soft-lock)", + Short: "Query total coins being farmed", Long: strings.TrimSpace( - fmt.Sprintf(`Query total coins being farmed (in soft-lock). + fmt.Sprintf(`Query total coins being farmed. Example: $ %s query %s farmed-coin 1 1 `, diff --git a/x/liquidity/client/cli/tx.go b/x/liquidity/client/cli/tx.go index fa479ed17..287bf5ce0 100644 --- a/x/liquidity/client/cli/tx.go +++ b/x/liquidity/client/cli/tx.go @@ -37,8 +37,8 @@ func GetTxCmd() *cobra.Command { NewMarketOrderCmd(), NewCancelOrderCmd(), NewCancelAllOrdersCmd(), - NewSoftLockTokensCmd(), - NewSoftUnlockTokensCmd(), + NewFarmCmd(), + NewUnfarmCmd(), ) return cmd @@ -71,6 +71,9 @@ $ %s tx %s create-pair 1 uatom stake --from mykey quoteCoinDenom := args[2] msg := types.NewMsgCreatePair(appID, clientCtx.GetFromAddress(), baseCoinDenom, quoteCoinDenom) + if err = msg.ValidateBasic(); err != nil { + return err + } return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) }, @@ -116,6 +119,9 @@ $ %s tx %s create-pool 1 1 1000000000uatom,50000000000stake --from mykey } msg := types.NewMsgCreatePool(appID, clientCtx.GetFromAddress(), pairID, depositCoins) + if err = msg.ValidateBasic(); err != nil { + return err + } return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) }, @@ -161,6 +167,9 @@ $ %s tx %s deposit 1 1 1000000000uatom,50000000000stake --from mykey } msg := types.NewMsgDeposit(appID, clientCtx.GetFromAddress(), poolID, depositCoins) + if err = msg.ValidateBasic(); err != nil { + return err + } return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) }, @@ -211,6 +220,9 @@ $ %s tx %s withdraw 1 1 10000pool1 --from mykey poolID, poolCoin, ) + if err = msg.ValidateBasic(); err != nil { + return err + } return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) }, @@ -301,6 +313,9 @@ $ %s tx %s limit-order 1 1 s 10000uatom stake 2.0 10000 --order-lifespan=10m --f amt, orderLifespan, ) + if err = msg.ValidateBasic(); err != nil { + return err + } return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) }, @@ -387,6 +402,10 @@ $ %s tx %s market-order 1 1 s 10000uatom stake 10000 --order-lifespan=10m --from orderLifespan, ) + if err = msg.ValidateBasic(); err != nil { + return err + } + return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) }, } @@ -438,6 +457,10 @@ $ %s tx %s cancel-order 1 1 1 --from mykey orderID, ) + if err = msg.ValidateBasic(); err != nil { + return err + } + return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) }, } @@ -484,6 +507,10 @@ $ %s tx %s cancel-all-orders 1 1,3 --from mykey msg := types.NewMsgCancelAllOrders(appID, clientCtx.GetFromAddress(), pairIDs) + if err = msg.ValidateBasic(); err != nil { + return err + } + return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) }, } @@ -493,15 +520,15 @@ $ %s tx %s cancel-all-orders 1 1,3 --from mykey return cmd } -func NewSoftLockTokensCmd() *cobra.Command { +func NewFarmCmd() *cobra.Command { cmd := &cobra.Command{ - Use: "soft-lock [app-id] [pool-id] [pool-coin]", + Use: "farm [app-id] [pool-id] [pool-coin]", Args: cobra.ExactArgs(3), - Short: "soft-lock coins from the specified liquidity pool, to start earning rewards", + Short: "farm pool coin", Long: strings.TrimSpace( - fmt.Sprintf(`soft-lock coins from the specified liquidity pool, to start earning rewards + fmt.Sprintf(`farm pool coins to be eligible for incentivizations Example: -$ %s tx %s soft-lock 1 1 10000pool1 --from mykey +$ %s tx %s farm 1 1 10000pool1 --from mykey `, version.AppName, types.ModuleName, ), @@ -522,17 +549,20 @@ $ %s tx %s soft-lock 1 1 10000pool1 --from mykey return err } - softLockCoin, err := sdk.ParseCoinNormalized(args[2]) + farmedPoolCoin, err := sdk.ParseCoinNormalized(args[2]) if err != nil { return err } - msg := types.NewMsgSoftLock( + msg := types.NewMsgFarm( appID, - clientCtx.GetFromAddress(), poolID, - softLockCoin, + clientCtx.GetFromAddress(), + farmedPoolCoin, ) + if err = msg.ValidateBasic(); err != nil { + return err + } return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) }, @@ -543,15 +573,15 @@ $ %s tx %s soft-lock 1 1 10000pool1 --from mykey return cmd } -func NewSoftUnlockTokensCmd() *cobra.Command { +func NewUnfarmCmd() *cobra.Command { cmd := &cobra.Command{ - Use: "soft-unlock [app-id] [pool-id] [pool-coin]", + Use: "unfarm [app-id] [pool-id] [pool-coin]", Args: cobra.ExactArgs(3), - Short: "soft-unlock coins from the specified liquidity pool, to stop receiving rewards", + Short: "unfarm pool coin", Long: strings.TrimSpace( - fmt.Sprintf(`soft-unlock coins from the specified liquidity pool, to stop receiving rewards + fmt.Sprintf(`unfarm pool coin Example: -$ %s tx %s soft-unlock 1 1 10000pool1 --from mykey +$ %s tx %s unfarm 1 1 10000pool1 --from mykey `, version.AppName, types.ModuleName, ), @@ -572,17 +602,20 @@ $ %s tx %s soft-unlock 1 1 10000pool1 --from mykey return err } - softUnlockCoin, err := sdk.ParseCoinNormalized(args[2]) + unfarmingPoolCoin, err := sdk.ParseCoinNormalized(args[2]) if err != nil { return err } - msg := types.NewMsgSoftUnlock( + msg := types.NewMsgUnfarm( appID, - clientCtx.GetFromAddress(), poolID, - softUnlockCoin, + clientCtx.GetFromAddress(), + unfarmingPoolCoin, ) + if err = msg.ValidateBasic(); err != nil { + return err + } return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg) }, diff --git a/x/liquidity/genesis.go b/x/liquidity/genesis.go index 0b600189d..a6ca681bd 100644 --- a/x/liquidity/genesis.go +++ b/x/liquidity/genesis.go @@ -10,15 +10,10 @@ import ( // InitGenesis initializes the capability module's state from a provided genesis // state. func InitGenesis(ctx sdk.Context, k keeper.Keeper, genState types.GenesisState) { - if err := genState.Validate(); err != nil { - panic(err) - } - k.SetParams(ctx, genState.Params) + k.InitGenesis(ctx, genState) } // ExportGenesis returns the capability module's exported genesis. func ExportGenesis(ctx sdk.Context, k keeper.Keeper) *types.GenesisState { - return &types.GenesisState{ - Params: k.GetParams(ctx), - } + return k.ExportGenesis(ctx) } diff --git a/x/liquidity/handler.go b/x/liquidity/handler.go index a2064f1f2..bc1b7e19a 100644 --- a/x/liquidity/handler.go +++ b/x/liquidity/handler.go @@ -42,11 +42,11 @@ func NewHandler(k keeper.Keeper) sdk.Handler { case *types.MsgCancelAllOrders: res, err := msgServer.CancelAllOrders(sdk.WrapSDKContext(ctx), msg) return sdk.WrapServiceResult(ctx, res, err) - case *types.MsgTokensSoftLock: - res, err := msgServer.TokensSoftLock(sdk.WrapSDKContext(ctx), msg) + case *types.MsgFarm: + res, err := msgServer.Farm(sdk.WrapSDKContext(ctx), msg) return sdk.WrapServiceResult(ctx, res, err) - case *types.MsgTokensSoftUnlock: - res, err := msgServer.TokensSoftUnlock(sdk.WrapSDKContext(ctx), msg) + case *types.MsgUnfarm: + res, err := msgServer.Unfarm(sdk.WrapSDKContext(ctx), msg) return sdk.WrapServiceResult(ctx, res, err) default: return nil, sdkerrors.Wrapf(sdkerrors.ErrUnknownRequest, "unrecognized %s message type: %T", types.ModuleName, msg) diff --git a/x/liquidity/handler_test.go b/x/liquidity/handler_test.go index a00542bf8..09f69616c 100644 --- a/x/liquidity/handler_test.go +++ b/x/liquidity/handler_test.go @@ -49,7 +49,7 @@ func (s *ModuleTestSuite) TestMsgCreatePair() { handler := liquidity.NewHandler(s.keeper) addr1 := s.addr(1) - appID1 := s.CreateNewApp("appOne") + appID1 := s.CreateNewApp("appone") asset1 := s.CreateNewAsset("ASSET1", "uasset1", 1000000) asset2 := s.CreateNewAsset("ASSET2", "uasset2", 2000000) @@ -81,7 +81,7 @@ func (s *ModuleTestSuite) TestMsgCreatePool() { handler := liquidity.NewHandler(s.keeper) addr1 := s.addr(1) - appID1 := s.CreateNewApp("appOne") + appID1 := s.CreateNewApp("appone") asset1 := s.CreateNewAsset("ASSET1", "uasset1", 1000000) asset2 := s.CreateNewAsset("ASSET2", "uasset2", 2000000) @@ -122,7 +122,7 @@ func (s *ModuleTestSuite) TestMsgDeposit() { handler := liquidity.NewHandler(s.keeper) addr1 := s.addr(1) - appID1 := s.CreateNewApp("appOne") + appID1 := s.CreateNewApp("appone") asset1 := s.CreateNewAsset("ASSET1", "uasset1", 1000000) asset2 := s.CreateNewAsset("ASSET2", "uasset2", 1000000) @@ -152,7 +152,7 @@ func (s *ModuleTestSuite) TestMsgWithdraw() { handler := liquidity.NewHandler(s.keeper) addr1 := s.addr(1) - appID1 := s.CreateNewApp("appOne") + appID1 := s.CreateNewApp("appone") asset1 := s.CreateNewAsset("ASSET1", "uasset1", 1000000) asset2 := s.CreateNewAsset("ASSET2", "uasset2", 1000000) @@ -179,7 +179,7 @@ func (s *ModuleTestSuite) TestMsgLimitOrder() { handler := liquidity.NewHandler(s.keeper) addr1 := s.addr(1) - appID1 := s.CreateNewApp("appOne") + appID1 := s.CreateNewApp("appone") asset1 := s.CreateNewAsset("ASSET1", "uasset1", 1000000) asset2 := s.CreateNewAsset("ASSET2", "uasset2", 1000000) @@ -225,7 +225,7 @@ func (s *ModuleTestSuite) TestMsgMarketOrder() { handler := liquidity.NewHandler(s.keeper) addr1 := s.addr(1) - appID1 := s.CreateNewApp("appOne") + appID1 := s.CreateNewApp("appone") asset1 := s.CreateNewAsset("ASSET1", "uasset1", 1000000) asset2 := s.CreateNewAsset("ASSET2", "uasset2", 1000000) @@ -275,7 +275,7 @@ func (s *ModuleTestSuite) TestMsgCancelOrder() { addr1 := s.addr(1) addr2 := s.addr(2) - appID1 := s.CreateNewApp("appOne") + appID1 := s.CreateNewApp("appone") asset1 := s.CreateNewAsset("ASSET1", "uasset1", 1000000) asset2 := s.CreateNewAsset("ASSET2", "uasset2", 1000000) @@ -307,7 +307,7 @@ func (s *ModuleTestSuite) TestMsgCancelAllOrders() { addr1 := s.addr(1) addr2 := s.addr(2) - appID1 := s.CreateNewApp("appOne") + appID1 := s.CreateNewApp("appone") asset1 := s.CreateNewAsset("ASSET1", "uasset1", 1000000) asset2 := s.CreateNewAsset("ASSET2", "uasset2", 1000000) @@ -334,11 +334,11 @@ func (s *ModuleTestSuite) TestMsgCancelAllOrders() { s.Require().False(found) } -func (s *ModuleTestSuite) TestMsgTokensSoftLock() { +func (s *ModuleTestSuite) TestMsgFarm() { handler := liquidity.NewHandler(s.keeper) addr1 := s.addr(1) - appID1 := s.CreateNewApp("appOne") + appID1 := s.CreateNewApp("appone") asset1 := s.CreateNewAsset("ASSET1", "uasset1", 1000000) asset2 := s.CreateNewAsset("ASSET2", "uasset2", 1000000) @@ -352,21 +352,21 @@ func (s *ModuleTestSuite) TestMsgTokensSoftLock() { s.Require().True(utils.ParseCoins("10000000000pool1-1").IsEqual(s.getBalances(liquidityProvider1))) s.ctx = s.ctx.WithBlockTime(s.ctx.BlockTime()) - msg := types.NewMsgSoftLock(appID1, liquidityProvider1, pool.Id, utils.ParseCoin("5000000000pool1-1")) + msg := types.NewMsgFarm(appID1, pool.Id, liquidityProvider1, utils.ParseCoin("5000000000pool1-1")) _, err := handler(s.ctx, msg) s.Require().NoError(err) - lpData, found := s.keeper.GetPoolLiquidityProvidersData(s.ctx, appID1, pool.Id) + queuedFarmer, found := s.keeper.GetQueuedFarmer(s.ctx, appID1, pool.Id, liquidityProvider1) s.Require().True(found) - s.Require().Equal(lpData.QueuedLiquidityProviders[0].SupplyProvided[0].Denom, "pool1-1") - s.Require().Equal(lpData.QueuedLiquidityProviders[0].SupplyProvided[0].Amount, sdk.NewInt(5000000000)) + s.Require().Equal(queuedFarmer.QueudCoins[0].FarmedPoolCoin.Denom, "pool1-1") + s.Require().Equal(queuedFarmer.QueudCoins[0].FarmedPoolCoin.Amount, sdk.NewInt(5000000000)) } -func (s *ModuleTestSuite) TestMsgTokensSoftUnlock() { +func (s *ModuleTestSuite) TestMsgUnfarm() { handler := liquidity.NewHandler(s.keeper) addr1 := s.addr(1) - appID1 := s.CreateNewApp("appOne") + appID1 := s.CreateNewApp("appone") asset1 := s.CreateNewAsset("ASSET1", "uasset1", 1000000) asset2 := s.CreateNewAsset("ASSET2", "uasset2", 1000000) @@ -380,21 +380,21 @@ func (s *ModuleTestSuite) TestMsgTokensSoftUnlock() { s.Require().True(utils.ParseCoins("10000000000pool1-1").IsEqual(s.getBalances(liquidityProvider1))) s.ctx = s.ctx.WithBlockTime(s.ctx.BlockTime()) - msg := types.NewMsgSoftLock(appID1, liquidityProvider1, pool.Id, utils.ParseCoin("5000000000pool1-1")) + msg := types.NewMsgFarm(appID1, pool.Id, liquidityProvider1, utils.ParseCoin("5000000000pool1-1")) _, err := handler(s.ctx, msg) s.Require().NoError(err) - lpData, found := s.keeper.GetPoolLiquidityProvidersData(s.ctx, appID1, pool.Id) + queuedFarmer, found := s.keeper.GetQueuedFarmer(s.ctx, appID1, pool.Id, liquidityProvider1) s.Require().True(found) - s.Require().Equal(lpData.QueuedLiquidityProviders[0].SupplyProvided[0].Denom, "pool1-1") - s.Require().Equal(lpData.QueuedLiquidityProviders[0].SupplyProvided[0].Amount, sdk.NewInt(5000000000)) + s.Require().Equal(queuedFarmer.QueudCoins[0].FarmedPoolCoin.Denom, "pool1-1") + s.Require().Equal(queuedFarmer.QueudCoins[0].FarmedPoolCoin.Amount, sdk.NewInt(5000000000)) - msgUnlock := types.NewMsgSoftUnlock(appID1, liquidityProvider1, pool.Id, utils.ParseCoin("5000000000pool1-1")) + msgUnlock := types.NewMsgUnfarm(appID1, pool.Id, liquidityProvider1, utils.ParseCoin("5000000000pool1-1")) _, err = handler(s.ctx, msgUnlock) s.Require().NoError(err) - lpData, found = s.keeper.GetPoolLiquidityProvidersData(s.ctx, appID1, pool.Id) + queuedFarmer, found = s.keeper.GetQueuedFarmer(s.ctx, appID1, pool.Id, liquidityProvider1) s.Require().True(found) - s.Require().Len(lpData.QueuedLiquidityProviders, 0) + s.Require().Len(queuedFarmer.QueudCoins, 0) s.Require().True(utils.ParseCoins("10000000000pool1-1").IsEqual(s.getBalances(liquidityProvider1))) } diff --git a/x/liquidity/keeper/alias.go b/x/liquidity/keeper/alias.go index 3416e9350..eca9f2079 100644 --- a/x/liquidity/keeper/alias.go +++ b/x/liquidity/keeper/alias.go @@ -6,6 +6,6 @@ import ( assettypes "github.com/comdex-official/comdex/x/asset/types" ) -func (k *Keeper) GetApps(ctx sdk.Context) (apps []assettypes.AppData, found bool) { +func (k Keeper) GetApps(ctx sdk.Context) (apps []assettypes.AppData, found bool) { return k.assetKeeper.GetApps(ctx) } diff --git a/x/liquidity/keeper/batch_test.go b/x/liquidity/keeper/batch_test.go index 260674496..dbca524ae 100644 --- a/x/liquidity/keeper/batch_test.go +++ b/x/liquidity/keeper/batch_test.go @@ -15,7 +15,7 @@ import ( func (s *KeeperTestSuite) TestOrderExpiration() { creator := s.addr(0) - appID1 := s.CreateNewApp("appOne") + appID1 := s.CreateNewApp("appone") asset1 := s.CreateNewAsset("ASSET1", "uasset1", 1000000) asset2 := s.CreateNewAsset("ASSET2", "uasset2", 1000000) diff --git a/x/liquidity/keeper/genesis.go b/x/liquidity/keeper/genesis.go new file mode 100644 index 000000000..d68027dda --- /dev/null +++ b/x/liquidity/keeper/genesis.go @@ -0,0 +1,126 @@ +package keeper + +import ( + sdk "github.com/cosmos/cosmos-sdk/types" + + "github.com/comdex-official/comdex/x/liquidity/types" +) + +// InitGenesis initializes the capability module's state from a provided genesis +// state. +func (k Keeper) InitGenesis(ctx sdk.Context, genState types.GenesisState) { + if err := genState.Validate(); err != nil { + panic(err) + } + k.SetParams(ctx, genState.Params) + + for _, appState := range genState.AppGenesisState { + k.SetGenericParams(ctx, appState.GenericParams) + k.SetLastPairID(ctx, appState.AppId, appState.LastPairId) + k.SetLastPoolID(ctx, appState.AppId, appState.LastPoolId) + + for _, pair := range appState.Pairs { + k.SetPair(ctx, pair) + k.SetPairIndex(ctx, appState.AppId, pair.BaseCoinDenom, pair.QuoteCoinDenom, pair.Id) + k.SetPairLookupIndex(ctx, appState.AppId, pair.BaseCoinDenom, pair.QuoteCoinDenom, pair.Id) + k.SetPairLookupIndex(ctx, appState.AppId, pair.QuoteCoinDenom, pair.BaseCoinDenom, pair.Id) + } + + for _, pool := range appState.Pools { + k.SetPool(ctx, pool) + k.SetPoolByReserveIndex(ctx, pool) + k.SetPoolsByPairIndex(ctx, pool) + } + + for _, req := range appState.DepositRequests { + k.SetDepositRequest(ctx, req) + k.SetDepositRequestIndex(ctx, req) + } + + for _, req := range appState.WithdrawRequests { + k.SetWithdrawRequest(ctx, req) + k.SetWithdrawRequestIndex(ctx, req) + } + + for _, order := range appState.Orders { + k.SetOrder(ctx, appState.AppId, order) + k.SetOrderIndex(ctx, appState.AppId, order) + } + + for _, activeFarmer := range appState.ActiveFarmers { + k.SetActiveFarmer(ctx, activeFarmer) + } + + for _, queuedFarmer := range appState.QueuedFarmers { + k.SetQueuedFarmer(ctx, queuedFarmer) + } + + } +} + +func (k Keeper) GetActiveAndQueuedFarmersForGenesis(ctx sdk.Context, appID uint64) ([]types.ActiveFarmer, []types.QueuedFarmer) { + allActiveFarmers := []types.ActiveFarmer{} + allQueuedFarmers := []types.QueuedFarmer{} + allPools := k.GetAllPools(ctx, appID) + for _, pool := range allPools { + activeFarmers := k.GetAllActiveFarmers(ctx, appID, pool.Id) + queuedFarmers := k.GetAllQueuedFarmers(ctx, appID, pool.Id) + + for _, activeFarmer := range activeFarmers { + allActiveFarmers = append(allActiveFarmers, types.ActiveFarmer{ + AppId: appID, + PoolId: pool.Id, + Farmer: activeFarmer.Farmer, + FarmedPoolCoin: activeFarmer.FarmedPoolCoin, + }) + } + + for _, queuedFarmer := range queuedFarmers { + allQueuedFarmers = append(allQueuedFarmers, types.QueuedFarmer{ + AppId: appID, + PoolId: pool.Id, + Farmer: queuedFarmer.Farmer, + QueudCoins: queuedFarmer.QueudCoins, + }) + } + + } + return allActiveFarmers, allQueuedFarmers + +} + +// ExportGenesis returns the capability module's exported genesis. +func (k Keeper) ExportGenesis(ctx sdk.Context) *types.GenesisState { + + allApps, found := k.GetApps(ctx) + + appGenesisState := []types.AppGenesisState{} + + if found { + for _, app := range allApps { + genericParams, err := k.GetGenericParams(ctx, app.Id) + if err != nil { + genericParams = types.DefaultGenericParams(app.Id) + } + allActiveFarmers, allQueuedFarmers := k.GetActiveAndQueuedFarmersForGenesis(ctx, app.Id) + appGenesisState = append(appGenesisState, types.AppGenesisState{ + AppId: app.Id, + GenericParams: genericParams, + LastPairId: k.GetLastPairID(ctx, app.Id), + LastPoolId: k.GetLastPoolID(ctx, app.Id), + Pairs: k.GetAllPairs(ctx, app.Id), + Pools: k.GetAllPools(ctx, app.Id), + DepositRequests: k.GetAllDepositRequests(ctx, app.Id), + WithdrawRequests: k.GetAllWithdrawRequests(ctx, app.Id), + Orders: k.GetAllOrders(ctx, app.Id), + ActiveFarmers: allActiveFarmers, + QueuedFarmers: allQueuedFarmers, + }) + } + } + + return &types.GenesisState{ + Params: k.GetParams(ctx), + AppGenesisState: appGenesisState, + } +} diff --git a/x/liquidity/keeper/genesis_test.go b/x/liquidity/keeper/genesis_test.go new file mode 100644 index 000000000..57246d88a --- /dev/null +++ b/x/liquidity/keeper/genesis_test.go @@ -0,0 +1,206 @@ +package keeper_test + +import ( + "time" + + sdk "github.com/cosmos/cosmos-sdk/types" + + utils "github.com/comdex-official/comdex/types" + "github.com/comdex-official/comdex/x/liquidity" + "github.com/comdex-official/comdex/x/liquidity/types" +) + +func (s *KeeperTestSuite) TestDefaultGenesis() { + genState := *types.DefaultGenesis() + + s.keeper.InitGenesis(s.ctx, genState) + got := s.keeper.ExportGenesis(s.ctx) + s.Require().Equal(genState, *got) +} + +func (s *KeeperTestSuite) TestImportExportGenesis() { + s.ctx = s.ctx.WithBlockHeight(1).WithBlockTime(utils.ParseTime("2022-01-01T00:00:00Z")) + k, ctx := s.keeper, s.ctx + + appID1 := s.CreateNewApp("appone") + asset1 := s.CreateNewAsset("ASSET1", "denom1", 1000000) + asset2 := s.CreateNewAsset("ASSET2", "denom2", 2000000) + pair := s.CreateNewLiquidityPair(appID1, s.addr(0), asset1.Denom, asset2.Denom) + pool := s.CreateNewLiquidityPool(appID1, pair.Id, s.addr(0), "1000000denom1,1000000denom2") + s.Deposit(appID1, pool.Id, s.addr(1), "1000000denom1,1000000denom2") + s.nextBlock() + + poolCoin := s.getBalance(s.addr(1), pool.PoolCoinDenom) + poolCoin.Amount = poolCoin.Amount.QuoRaw(2) + s.Withdraw(appID1, pool.Id, s.addr(1), poolCoin) + s.nextBlock() + + s.Farm(appID1, pool.Id, s.addr(3), "3330000pool1-1") + s.ctx = s.ctx.WithBlockTime(ctx.BlockTime().Add(time.Hour * 25)) + s.nextBlock() + + s.Farm(appID1, pool.Id, s.addr(4), "4440000pool1-1") + + s.LimitOrder(appID1, s.addr(2), pair.Id, types.OrderDirectionBuy, utils.ParseDec("1.0"), sdk.NewInt(10000), 0) + s.nextBlock() + + depositReq := s.Deposit(appID1, pool.Id, s.addr(3), "1000000denom1,1000000denom2") + withdrawReq := s.Withdraw(appID1, pool.Id, s.addr(1), poolCoin) + order := s.LimitOrder(appID1, s.addr(3), pair.Id, types.OrderDirectionSell, utils.ParseDec("1.0"), sdk.NewInt(10000), 0) + + pair, _ = k.GetPair(ctx, pair.AppId, pair.Id) + pool, _ = k.GetPool(ctx, pool.AppId, pool.Id) + allActiveFarmers := k.GetAllActiveFarmers(ctx, appID1, pool.Id) + allQueuedFarmers := k.GetAllQueuedFarmers(ctx, appID1, pool.Id) + + genState := k.ExportGenesis(ctx) + + bz := s.app.AppCodec().MustMarshal(genState) + + s.SetupTest() + s.ctx = s.ctx.WithBlockHeight(1).WithBlockTime(utils.ParseTime("2022-01-01T00:00:00Z")) + k, ctx = s.keeper, s.ctx + + var genState2 types.GenesisState + s.app.AppCodec().MustUnmarshal(bz, &genState2) + k.InitGenesis(ctx, genState2) + + s.Require().Equal(genState.Params, genState2.Params) + s.Require().Equal(len(genState.AppGenesisState), len(genState2.AppGenesisState)) + + importedPair, found := k.GetPair(ctx, pair.AppId, pair.Id) + s.Require().True(found) + s.Require().Equal(pair, importedPair) + + importedPool, found := k.GetPool(ctx, pool.AppId, pool.Id) + s.Require().True(found) + s.Require().Equal(pool, importedPool) + + depositReq2, found := k.GetDepositRequest(ctx, depositReq.AppId, depositReq.PoolId, depositReq.Id) + s.Require().True(found) + s.Require().Equal(depositReq, depositReq2) + withdrawReq2, found := k.GetWithdrawRequest(ctx, withdrawReq.AppId, withdrawReq.PoolId, withdrawReq.Id) + s.Require().True(found) + s.Require().Equal(withdrawReq, withdrawReq2) + order2, found := k.GetOrder(ctx, order.AppId, order.PairId, order.Id) + s.Require().True(found) + s.Require().Equal(order, order2) + + importedAllActiveFarmers := k.GetAllActiveFarmers(ctx, appID1, pool.Id) + s.Require().Equal(len(allActiveFarmers), len(importedAllActiveFarmers)) + s.Require().Equal(allActiveFarmers, importedAllActiveFarmers) + + importedAllQueuedFarmers := k.GetAllQueuedFarmers(ctx, appID1, pool.Id) + s.Require().Equal(len(allQueuedFarmers), len(importedAllQueuedFarmers)) + s.Require().Equal(allQueuedFarmers, importedAllQueuedFarmers) +} + +func (s *KeeperTestSuite) TestImportExportGenesisEmpty() { + k, ctx := s.keeper, s.ctx + genState := k.ExportGenesis(ctx) + + var genState2 types.GenesisState + bz := s.app.AppCodec().MustMarshal(genState) + s.app.AppCodec().MustUnmarshal(bz, &genState2) + k.InitGenesis(ctx, genState2) + + genState3 := k.ExportGenesis(ctx) + s.Require().Equal(genState.Params, genState2.Params) + s.Require().Equal(len(genState.AppGenesisState), len(genState2.AppGenesisState)) + s.Require().Equal(genState2.Params, genState3.Params) + s.Require().Equal(len(genState2.AppGenesisState), len(genState3.AppGenesisState)) +} + +func (s *KeeperTestSuite) TestIndexesAfterImport() { + s.ctx = s.ctx.WithBlockHeight(1).WithBlockTime(utils.ParseTime("2022-03-01T00:00:00Z")) + + appID1 := s.CreateNewApp("appone") + asset1 := s.CreateNewAsset("ASSET1", "denom1", 1000000) + asset2 := s.CreateNewAsset("ASSET2", "denom2", 2000000) + asset3 := s.CreateNewAsset("ASSET2", "denom3", 3000000) + + pair1 := s.CreateNewLiquidityPair(appID1, s.addr(0), asset1.Denom, asset2.Denom) + pair2 := s.CreateNewLiquidityPair(appID1, s.addr(1), asset2.Denom, asset3.Denom) + + pool1 := s.CreateNewLiquidityPool(appID1, pair1.Id, s.addr(2), "1000000denom1,1000000denom2") + pool2 := s.CreateNewLiquidityPool(appID1, pair2.Id, s.addr(3), "1000000denom2,1000000denom3") + + s.Deposit(appID1, pool1.Id, s.addr(4), "1000000denom1,1000000denom2") + s.Deposit(appID1, pool2.Id, s.addr(5), "1000000denom2,1000000denom3") + + liquidity.EndBlocker(s.ctx, s.keeper) + liquidity.BeginBlocker(s.ctx, s.keeper) + + depositReq1 := s.Deposit(appID1, pool1.Id, s.addr(4), "1000000denom1,1000000denom2") + depositReq2 := s.Deposit(appID1, pool2.Id, s.addr(5), "1000000denom2,1000000denom3") + + withdrawReq1 := s.Withdraw(appID1, pool1.Id, s.addr(4), utils.ParseCoin("1000000pool1-1")) + withdrawReq2 := s.Withdraw(appID1, pool2.Id, s.addr(5), utils.ParseCoin("1000000pool1-2")) + + order1 := s.LimitOrder(appID1, s.addr(6), pair1.Id, types.OrderDirectionBuy, utils.ParseDec("1.0"), sdk.NewInt(10000), time.Minute) + order2 := s.LimitOrder(appID1, s.addr(7), pair2.Id, types.OrderDirectionSell, utils.ParseDec("1.0"), sdk.NewInt(10000), time.Minute) + + liquidity.EndBlocker(s.ctx, s.keeper) + + genState := s.keeper.ExportGenesis(s.ctx) + s.SetupTest() + s.ctx = s.ctx.WithBlockHeight(1).WithBlockTime(utils.ParseTime("2022-03-02T00:00:00Z")) + s.keeper.InitGenesis(s.ctx, *genState) + + // Check pair indexes. + pair, found := s.keeper.GetPairByDenoms(s.ctx, appID1, "denom1", "denom2") + s.Require().True(found) + s.Require().Equal(pair1.Id, pair.Id) + + resp1, err := s.querier.Pairs(sdk.WrapSDKContext(s.ctx), &types.QueryPairsRequest{ + Denoms: []string{"denom2", "denom1"}, + AppId: appID1, + }) + s.Require().NoError(err) + s.Require().Len(resp1.Pairs, 1) + s.Require().Equal(pair1.Id, resp1.Pairs[0].Id) + + resp2, err := s.querier.Pairs(sdk.WrapSDKContext(s.ctx), &types.QueryPairsRequest{ + Denoms: []string{"denom2", "denom3"}, + AppId: appID1, + }) + s.Require().NoError(err) + s.Require().Len(resp2.Pairs, 1) + s.Require().Equal(pair2.Id, resp2.Pairs[0].Id) + + // Check pool indexes. + pools := s.keeper.GetPoolsByPair(s.ctx, appID1, pair2.Id) + s.Require().Len(pools, 1) + s.Require().Equal(pool2.Id, pools[0].Id) + + pool, found := s.keeper.GetPoolByReserveAddress(s.ctx, appID1, pool1.GetReserveAddress()) + s.Require().True(found) + s.Require().Equal(pool1.Id, pool.Id) + + // Check deposit request indexes. + depositReqs := s.keeper.GetDepositRequestsByDepositor(s.ctx, appID1, s.addr(4)) + s.Require().Len(depositReqs, 1) + s.Require().Equal(depositReq1.Id, depositReqs[0].Id) + + depositReqs = s.keeper.GetDepositRequestsByDepositor(s.ctx, appID1, s.addr(5)) + s.Require().Len(depositReqs, 1) + s.Require().Equal(depositReq2.Id, depositReqs[0].Id) + + // Check withdraw request indexes + withdrawReqs := s.keeper.GetWithdrawRequestsByWithdrawer(s.ctx, appID1, s.addr(4)) + s.Require().Len(withdrawReqs, 1) + s.Require().Equal(withdrawReq1.Id, withdrawReqs[0].Id) + + withdrawReqs = s.keeper.GetWithdrawRequestsByWithdrawer(s.ctx, appID1, s.addr(5)) + s.Require().Len(withdrawReqs, 1) + s.Require().Equal(withdrawReq2.Id, withdrawReqs[0].Id) + + // Check order indexes + orders := s.keeper.GetOrdersByOrderer(s.ctx, appID1, s.addr(6)) + s.Require().Len(orders, 1) + s.Require().Equal(order1.Id, orders[0].Id) + + orders = s.keeper.GetOrdersByOrderer(s.ctx, appID1, s.addr(7)) + s.Require().Len(orders, 1) + s.Require().Equal(order2.Id, orders[0].Id) +} diff --git a/x/liquidity/keeper/grpc_query.go b/x/liquidity/keeper/grpc_query.go index a2e17d408..2d5847e83 100644 --- a/x/liquidity/keeper/grpc_query.go +++ b/x/liquidity/keeper/grpc_query.go @@ -601,8 +601,8 @@ func (k Querier) OrdersByOrderer(c context.Context, req *types.QueryOrdersByOrde return &types.QueryOrdersResponse{Orders: orders, Pagination: pageRes}, nil } -// SoftLock returns softlocks created by an depositor in specific pool. -func (k Querier) SoftLock(c context.Context, req *types.QuerySoftLockRequest) (*types.QuerySoftLockResponse, error) { +// Farmer returns farming status of pool-coins farmed by address. +func (k Querier) Farmer(c context.Context, req *types.QueryFarmerRequest) (*types.QueryFarmerResponse, error) { if req == nil { return nil, status.Error(codes.InvalidArgument, "empty request") } @@ -610,12 +610,15 @@ func (k Querier) SoftLock(c context.Context, req *types.QuerySoftLockRequest) (* if req.AppId == 0 { return nil, status.Error(codes.InvalidArgument, "app id cannot be 0") } + if req.PoolId == 0 { + return nil, status.Error(codes.InvalidArgument, "pool id cannot be 0") + } ctx := sdk.UnwrapSDKContext(c) - depositor, err := sdk.AccAddressFromBech32(req.Depositor) + farmer, err := sdk.AccAddressFromBech32(req.Farmer) if err != nil { - return nil, status.Errorf(codes.InvalidArgument, "depositor address %s is invalid", req.Depositor) + return nil, status.Errorf(codes.InvalidArgument, "farmer address %s is invalid", req.Farmer) } poolID := req.PoolId @@ -625,43 +628,32 @@ func (k Querier) SoftLock(c context.Context, req *types.QuerySoftLockRequest) (* return nil, types.ErrInvalidPoolID } - lpData, found := k.GetPoolLiquidityProvidersData(ctx, req.AppId, poolID) - if !found { - return &types.QuerySoftLockResponse{ActivePoolCoin: sdk.NewCoin(pool.PoolCoinDenom, sdk.NewInt(0)), QueuedPoolCoin: []types.QueuedPoolCoin{}}, nil + activeFarmer, afound := k.GetActiveFarmer(ctx, req.AppId, req.PoolId, farmer) + queuedFarmer, qfound := k.GetQueuedFarmer(ctx, req.AppId, req.PoolId, farmer) + + if !afound && !qfound { + return &types.QueryFarmerResponse{ActivePoolCoin: sdk.NewCoin(pool.PoolCoinDenom, sdk.NewInt(0)), QueuedPoolCoin: []types.QueuedPoolCoin{}}, nil } availableLiquidityGauges := k.rewardsKeeper.GetAllGaugesByGaugeTypeID(ctx, rewardstypes.LiquidityGaugeTypeID) minEpochDuration := k.GetMinimumEpochDurationFromPoolID(ctx, poolID, availableLiquidityGauges) var queuedCoins []types.QueuedPoolCoin - for _, queuedRequest := range lpData.QueuedLiquidityProviders { - if queuedRequest.Address == depositor.String() { - poolCoin := sdk.Coin{} - for _, coin := range queuedRequest.SupplyProvided { - if coin.Denom == pool.PoolCoinDenom { - poolCoin = *coin - break - } - } + if qfound { + for _, queuedCoin := range queuedFarmer.QueudCoins { queuedCoins = append(queuedCoins, types.QueuedPoolCoin{ - PoolCoin: poolCoin, - DequeAt: queuedRequest.CreatedAt.Add(minEpochDuration), + PoolCoin: queuedCoin.FarmedPoolCoin, + DequeAt: queuedCoin.CreatedAt.Add(minEpochDuration), }) } } activePoolCoin := sdk.NewCoin(pool.PoolCoinDenom, sdk.NewInt(0)) - activeCoins, found := lpData.LiquidityProviders[depositor.String()] - if found { - for _, coin := range activeCoins.Coins { - if coin.Denom == pool.PoolCoinDenom { - activePoolCoin = coin - break - } - } + if afound { + activePoolCoin.Amount = activePoolCoin.Amount.Add(activeFarmer.FarmedPoolCoin.Amount) } - return &types.QuerySoftLockResponse{ActivePoolCoin: activePoolCoin, QueuedPoolCoin: queuedCoins}, nil + return &types.QueryFarmerResponse{ActivePoolCoin: activePoolCoin, QueuedPoolCoin: queuedCoins}, nil } // DeserializePoolCoin splits poolcoin amount into actual assets provided by depositor. @@ -758,7 +750,7 @@ func (k Querier) PoolIncentives(c context.Context, req *types.QueryPoolsIncentiv return &types.QueryPoolIncentivesResponse{PoolIncentives: poolIncentives}, nil } -// FarmedPoolCoin returns the total pool coin in soft-lock. +// FarmedPoolCoin returns the total farmed pool coin . func (k Querier) FarmedPoolCoin(c context.Context, req *types.QueryFarmedPoolCoinRequest) (*types.QueryFarmedPoolCoinResponse, error) { if req == nil { return nil, status.Error(codes.InvalidArgument, "empty request") @@ -774,7 +766,7 @@ func (k Querier) FarmedPoolCoin(c context.Context, req *types.QueryFarmedPoolCoi return nil, sdkerrors.Wrapf(types.ErrInvalidPoolID, "pool id %d is invalid", req.PoolId) } moduleAddr := k.accountKeeper.GetModuleAddress(types.ModuleName) - softLockedCoins := k.bankKeeper.GetBalance(ctx, moduleAddr, pool.PoolCoinDenom) + farmedCoins := k.bankKeeper.GetBalance(ctx, moduleAddr, pool.PoolCoinDenom) - return &types.QueryFarmedPoolCoinResponse{Coin: softLockedCoins}, nil + return &types.QueryFarmedPoolCoinResponse{Coin: farmedCoins}, nil } diff --git a/x/liquidity/keeper/grpc_query_test.go b/x/liquidity/keeper/grpc_query_test.go index 97e50cc12..c27a20d57 100644 --- a/x/liquidity/keeper/grpc_query_test.go +++ b/x/liquidity/keeper/grpc_query_test.go @@ -20,7 +20,7 @@ func (s *KeeperTestSuite) TestParams() { } func (s *KeeperTestSuite) TestGenericParams() { - appID1 := s.CreateNewApp("appOne") + appID1 := s.CreateNewApp("appone") testCases := []struct { Name string @@ -67,7 +67,7 @@ func (s *KeeperTestSuite) TestGenericParams() { func (s *KeeperTestSuite) TestPools() { addr1 := s.addr(1) - appID1 := s.CreateNewApp("appOne") + appID1 := s.CreateNewApp("appone") asset1 := s.CreateNewAsset("ASSET1", "uasset1", 1000000) asset2 := s.CreateNewAsset("ASSET2", "uasset2", 1000000) @@ -101,7 +101,7 @@ func (s *KeeperTestSuite) TestPools() { func (s *KeeperTestSuite) TestPool() { addr1 := s.addr(1) - appID1 := s.CreateNewApp("appOne") + appID1 := s.CreateNewApp("appone") asset1 := s.CreateNewAsset("ASSET1", "uasset1", 1000000) asset2 := s.CreateNewAsset("ASSET2", "uasset2", 1000000) @@ -166,7 +166,7 @@ func (s *KeeperTestSuite) TestPool() { func (s *KeeperTestSuite) TestPoolByReserveAddress() { addr1 := s.addr(1) - appID1 := s.CreateNewApp("appOne") + appID1 := s.CreateNewApp("appone") asset1 := s.CreateNewAsset("ASSET1", "uasset1", 1000000) asset2 := s.CreateNewAsset("ASSET2", "uasset2", 1000000) @@ -236,7 +236,7 @@ func (s *KeeperTestSuite) TestPoolByReserveAddress() { func (s *KeeperTestSuite) TestPoolByPoolCoinDenom() { addr1 := s.addr(1) - appID1 := s.CreateNewApp("appOne") + appID1 := s.CreateNewApp("appone") asset1 := s.CreateNewAsset("ASSET1", "uasset1", 1000000) asset2 := s.CreateNewAsset("ASSET2", "uasset2", 1000000) @@ -306,7 +306,7 @@ func (s *KeeperTestSuite) TestPoolByPoolCoinDenom() { func (s *KeeperTestSuite) TestPairs() { addr1 := s.addr(1) - appID1 := s.CreateNewApp("appOne") + appID1 := s.CreateNewApp("appone") asset1 := s.CreateNewAsset("ASSET1", "uasset1", 1000000) asset2 := s.CreateNewAsset("ASSET2", "uasset2", 1000000) @@ -376,7 +376,7 @@ func (s *KeeperTestSuite) TestPairs() { func (s *KeeperTestSuite) TestPair() { addr1 := s.addr(1) - appID1 := s.CreateNewApp("appOne") + appID1 := s.CreateNewApp("appone") asset1 := s.CreateNewAsset("ASSET1", "uasset1", 1000000) asset2 := s.CreateNewAsset("ASSET2", "uasset2", 1000000) @@ -441,7 +441,7 @@ func (s *KeeperTestSuite) TestPair() { func (s *KeeperTestSuite) TestDepositRequests() { addr1 := s.addr(1) - appID1 := s.CreateNewApp("appOne") + appID1 := s.CreateNewApp("appone") asset1 := s.CreateNewAsset("ASSET1", "uasset1", 1000000) asset2 := s.CreateNewAsset("ASSET2", "uasset2", 1000000) @@ -504,7 +504,7 @@ func (s *KeeperTestSuite) TestDepositRequests() { func (s *KeeperTestSuite) TestDepositRequest() { addr1 := s.addr(1) - appID1 := s.CreateNewApp("appOne") + appID1 := s.CreateNewApp("appone") asset1 := s.CreateNewAsset("ASSET1", "uasset1", 1000000) asset2 := s.CreateNewAsset("ASSET2", "uasset2", 1000000) @@ -577,7 +577,7 @@ func (s *KeeperTestSuite) TestDepositRequest() { func (s *KeeperTestSuite) TestWithdrawRequests() { addr1 := s.addr(1) - appID1 := s.CreateNewApp("appOne") + appID1 := s.CreateNewApp("appone") asset1 := s.CreateNewAsset("ASSET1", "uasset1", 1000000) asset2 := s.CreateNewAsset("ASSET2", "uasset2", 1000000) @@ -641,7 +641,7 @@ func (s *KeeperTestSuite) TestWithdrawRequests() { func (s *KeeperTestSuite) TestWithdrawRequest() { addr1 := s.addr(1) - appID1 := s.CreateNewApp("appOne") + appID1 := s.CreateNewApp("appone") asset1 := s.CreateNewAsset("ASSET1", "uasset1", 1000000) asset2 := s.CreateNewAsset("ASSET2", "uasset2", 1000000) @@ -715,7 +715,7 @@ func (s *KeeperTestSuite) TestWithdrawRequest() { func (s *KeeperTestSuite) TestOrders() { addr1 := s.addr(1) - appID1 := s.CreateNewApp("appOne") + appID1 := s.CreateNewApp("appone") asset1 := s.CreateNewAsset("ASSET1", "uasset1", 1000000) asset2 := s.CreateNewAsset("ASSET2", "uasset2", 1000000) @@ -784,7 +784,7 @@ func (s *KeeperTestSuite) TestOrders() { func (s *KeeperTestSuite) TestOrder() { addr1 := s.addr(1) - appID1 := s.CreateNewApp("appOne") + appID1 := s.CreateNewApp("appone") asset1 := s.CreateNewAsset("ASSET1", "uasset1", 1000000) asset2 := s.CreateNewAsset("ASSET2", "uasset2", 1000000) @@ -863,7 +863,7 @@ func (s *KeeperTestSuite) TestOrder() { func (s *KeeperTestSuite) TestOrdersByOrderer() { addr1 := s.addr(1) - appID1 := s.CreateNewApp("appOne") + appID1 := s.CreateNewApp("appone") asset1 := s.CreateNewAsset("ASSET1", "uasset1", 1000000) asset2 := s.CreateNewAsset("ASSET2", "uasset2", 1000000) @@ -934,10 +934,10 @@ func (s *KeeperTestSuite) TestOrdersByOrderer() { } } -func (s *KeeperTestSuite) TestSoftLock() { +func (s *KeeperTestSuite) TestFarmer() { addr1 := s.addr(1) - appID1 := s.CreateNewApp("appOne") + appID1 := s.CreateNewApp("appone") asset1 := s.CreateNewAsset("ASSET1", "uasset1", 1000000) asset2 := s.CreateNewAsset("ASSET2", "uasset2", 1000000) @@ -951,20 +951,20 @@ func (s *KeeperTestSuite) TestSoftLock() { s.Require().True(utils.ParseCoins("10000000000pool1-1").IsEqual(s.getBalances(liquidityProvider1))) s.ctx = s.ctx.WithBlockTime(s.ctx.BlockTime()) - msg := types.NewMsgSoftLock(appID1, liquidityProvider1, pool.Id, utils.ParseCoin("5000000000pool1-1")) - err := s.keeper.SoftLockTokens(s.ctx, msg) + msg := types.NewMsgFarm(appID1, pool.Id, liquidityProvider1, utils.ParseCoin("5000000000pool1-1")) + err := s.keeper.Farm(s.ctx, msg) s.Require().NoError(err) s.ctx = s.ctx.WithBlockTime(s.ctx.BlockTime().Add(types.DefaultFarmingQueueDuration).Add(time.Hour * 1)) s.nextBlock() - msg = types.NewMsgSoftLock(appID1, liquidityProvider1, pool.Id, utils.ParseCoin("5000000000pool1-1")) - err = s.keeper.SoftLockTokens(s.ctx, msg) + msg = types.NewMsgFarm(appID1, pool.Id, liquidityProvider1, utils.ParseCoin("5000000000pool1-1")) + err = s.keeper.Farm(s.ctx, msg) s.Require().NoError(err) testCases := []struct { Name string - Req *types.QuerySoftLockRequest + Req *types.QueryFarmerRequest ExpErr error }{ { @@ -974,22 +974,22 @@ func (s *KeeperTestSuite) TestSoftLock() { }, { Name: "error app id 0", - Req: &types.QuerySoftLockRequest{}, + Req: &types.QueryFarmerRequest{}, ExpErr: status.Error(codes.InvalidArgument, "app id cannot be 0"), }, { Name: "error invalid depositor", - Req: &types.QuerySoftLockRequest{AppId: appID1, PoolId: pool.Id, Depositor: "123"}, - ExpErr: status.Errorf(codes.InvalidArgument, "depositor address 123 is invalid"), + Req: &types.QueryFarmerRequest{AppId: appID1, PoolId: pool.Id, Farmer: "123"}, + ExpErr: status.Errorf(codes.InvalidArgument, "farmer address 123 is invalid"), }, { Name: "error pool id invalid", - Req: &types.QuerySoftLockRequest{AppId: appID1, PoolId: 123, Depositor: liquidityProvider1.String()}, + Req: &types.QueryFarmerRequest{AppId: appID1, PoolId: 123, Farmer: liquidityProvider1.String()}, ExpErr: types.ErrInvalidPoolID, }, { Name: "success", - Req: &types.QuerySoftLockRequest{AppId: appID1, PoolId: pool.Id, Depositor: liquidityProvider1.String()}, + Req: &types.QueryFarmerRequest{AppId: appID1, PoolId: pool.Id, Farmer: liquidityProvider1.String()}, ExpErr: nil, }, } @@ -997,7 +997,7 @@ func (s *KeeperTestSuite) TestSoftLock() { ctx := sdk.WrapSDKContext(s.ctx) for _, tc := range testCases { s.Run(tc.Name, func() { - resp, err := s.querier.SoftLock(ctx, tc.Req) + resp, err := s.querier.Farmer(ctx, tc.Req) if tc.ExpErr != nil { s.Require().Error(err) s.Require().EqualError(err, tc.ExpErr.Error()) @@ -1013,7 +1013,7 @@ func (s *KeeperTestSuite) TestSoftLock() { func (s *KeeperTestSuite) TestDeserializePoolCoin() { addr1 := s.addr(1) - appID1 := s.CreateNewApp("appOne") + appID1 := s.CreateNewApp("appone") asset1 := s.CreateNewAsset("ASSET1", "uasset1", 1000000) asset2 := s.CreateNewAsset("ASSET2", "uasset2", 1000000) @@ -1062,7 +1062,7 @@ func (s *KeeperTestSuite) TestDeserializePoolCoin() { func (s *KeeperTestSuite) TestPoolIncentives() { addr1 := s.addr(1) - appID1 := s.CreateNewApp("appOne") + appID1 := s.CreateNewApp("appone") asset1 := s.CreateNewAsset("ASSET1", "uasset1", 1000000) asset2 := s.CreateNewAsset("ASSET2", "uasset2", 1000000) @@ -1117,7 +1117,7 @@ func (s *KeeperTestSuite) TestPoolIncentives() { func (s *KeeperTestSuite) TestFarmedPoolCoin() { addr1 := s.addr(1) - appID1 := s.CreateNewApp("appOne") + appID1 := s.CreateNewApp("appone") asset1 := s.CreateNewAsset("ASSET1", "uasset1", 1000000) asset2 := s.CreateNewAsset("ASSET2", "uasset2", 1000000) @@ -1131,15 +1131,15 @@ func (s *KeeperTestSuite) TestFarmedPoolCoin() { s.Require().True(utils.ParseCoins("10000000000pool1-1").IsEqual(s.getBalances(liquidityProvider1))) s.ctx = s.ctx.WithBlockTime(s.ctx.BlockTime()) - msg := types.NewMsgSoftLock(appID1, liquidityProvider1, pool.Id, utils.ParseCoin("5000000000pool1-1")) - err := s.keeper.SoftLockTokens(s.ctx, msg) + msg := types.NewMsgFarm(appID1, pool.Id, liquidityProvider1, utils.ParseCoin("5000000000pool1-1")) + err := s.keeper.Farm(s.ctx, msg) s.Require().NoError(err) s.ctx = s.ctx.WithBlockTime(s.ctx.BlockTime().Add(types.DefaultFarmingQueueDuration).Add(time.Hour * 1)) s.nextBlock() - msg = types.NewMsgSoftLock(appID1, liquidityProvider1, pool.Id, utils.ParseCoin("5000000000pool1-1")) - err = s.keeper.SoftLockTokens(s.ctx, msg) + msg = types.NewMsgFarm(appID1, pool.Id, liquidityProvider1, utils.ParseCoin("5000000000pool1-1")) + err = s.keeper.Farm(s.ctx, msg) s.Require().NoError(err) testCases := []struct { diff --git a/x/liquidity/keeper/invariants_test.go b/x/liquidity/keeper/invariants_test.go index 46787ca07..f767fbbb4 100644 --- a/x/liquidity/keeper/invariants_test.go +++ b/x/liquidity/keeper/invariants_test.go @@ -10,7 +10,7 @@ import ( func (s *KeeperTestSuite) TestDepositCoinsEscrowInvariant() { creator := s.addr(0) - appID1 := s.CreateNewApp("appOne") + appID1 := s.CreateNewApp("appone") asset1 := s.CreateNewAsset("ASSET1", "uasset1", 1000000) asset2 := s.CreateNewAsset("ASSET2", "uasset2", 1000000) @@ -38,7 +38,7 @@ func (s *KeeperTestSuite) TestDepositCoinsEscrowInvariant() { func (s *KeeperTestSuite) TestPoolCoinEscrowInvariant() { creator := s.addr(0) - appID1 := s.CreateNewApp("appOne") + appID1 := s.CreateNewApp("appone") asset1 := s.CreateNewAsset("ASSET1", "uasset1", 1000000) asset2 := s.CreateNewAsset("ASSET2", "uasset2", 1000000) @@ -69,7 +69,7 @@ func (s *KeeperTestSuite) TestPoolCoinEscrowInvariant() { func (s *KeeperTestSuite) TestRemainingOfferCoinEscrowInvariant() { creator := s.addr(0) - appID1 := s.CreateNewApp("appOne") + appID1 := s.CreateNewApp("appone") asset1 := s.CreateNewAsset("ASSET1", "uasset1", 1000000) asset2 := s.CreateNewAsset("ASSET2", "uasset2", 1000000) @@ -96,7 +96,7 @@ func (s *KeeperTestSuite) TestRemainingOfferCoinEscrowInvariant() { func (s *KeeperTestSuite) TestPoolStatusInvariant() { creator := s.addr(0) - appID1 := s.CreateNewApp("appOne") + appID1 := s.CreateNewApp("appone") asset1 := s.CreateNewAsset("ASSET1", "uasset1", 1000000) asset2 := s.CreateNewAsset("ASSET2", "uasset2", 1000000) diff --git a/x/liquidity/keeper/keeper_test.go b/x/liquidity/keeper/keeper_test.go index 744b1f9e3..ac49dca81 100644 --- a/x/liquidity/keeper/keeper_test.go +++ b/x/liquidity/keeper/keeper_test.go @@ -292,3 +292,12 @@ func (s *KeeperTestSuite) MarketOrder( s.Require().NoError(err) return req } + +func (s *KeeperTestSuite) Farm(appID, poolID uint64, farmer sdk.AccAddress, farmingCoin string) { + msg := types.NewMsgFarm( + appID, poolID, farmer, utils.ParseCoin(farmingCoin), + ) + s.fundAddr(farmer, sdk.NewCoins(msg.FarmingPoolCoin)) + err := s.keeper.Farm(s.ctx, msg) + s.Require().NoError(err) +} diff --git a/x/liquidity/keeper/msg_server.go b/x/liquidity/keeper/msg_server.go index 879dd8c49..66f2e6d21 100644 --- a/x/liquidity/keeper/msg_server.go +++ b/x/liquidity/keeper/msg_server.go @@ -111,22 +111,22 @@ func (m msgServer) CancelAllOrders(goCtx context.Context, msg *types.MsgCancelAl return &types.MsgCancelAllOrdersResponse{}, nil } -func (m msgServer) TokensSoftLock(goCtx context.Context, msg *types.MsgTokensSoftLock) (*types.MsgTokensSoftLockResponse, error) { +func (m msgServer) Farm(goCtx context.Context, msg *types.MsgFarm) (*types.MsgFarmResponse, error) { ctx := sdk.UnwrapSDKContext(goCtx) - if err := m.Keeper.SoftLockTokens(ctx, msg); err != nil { + if err := m.Keeper.Farm(ctx, msg); err != nil { return nil, err } - return &types.MsgTokensSoftLockResponse{}, nil + return &types.MsgFarmResponse{}, nil } -func (m msgServer) TokensSoftUnlock(goCtx context.Context, msg *types.MsgTokensSoftUnlock) (*types.MsgTokensSoftUnlockResponse, error) { +func (m msgServer) Unfarm(goCtx context.Context, msg *types.MsgUnfarm) (*types.MsgUnfarmResponse, error) { ctx := sdk.UnwrapSDKContext(goCtx) - if err := m.Keeper.SoftUnlockTokens(ctx, msg); err != nil { + if err := m.Keeper.Unfarm(ctx, msg); err != nil { return nil, err } - return &types.MsgTokensSoftUnlockResponse{}, nil + return &types.MsgUnfarmResponse{}, nil } diff --git a/x/liquidity/keeper/pair_test.go b/x/liquidity/keeper/pair_test.go index 7a3502e8e..829881e79 100644 --- a/x/liquidity/keeper/pair_test.go +++ b/x/liquidity/keeper/pair_test.go @@ -11,8 +11,8 @@ func (s *KeeperTestSuite) TestCreatePair() { addr1 := s.addr(1) - appID1 := s.CreateNewApp("appOne") - appID2 := s.CreateNewApp("appTwo") + appID1 := s.CreateNewApp("appone") + appID2 := s.CreateNewApp("apptwo") asset1 := s.CreateNewAsset("ASSET1", "uasset1", 1000000) asset2 := s.CreateNewAsset("ASSET2", "uasset2", 2000000) diff --git a/x/liquidity/keeper/params_test.go b/x/liquidity/keeper/params_test.go index e8414e739..98cf350b5 100644 --- a/x/liquidity/keeper/params_test.go +++ b/x/liquidity/keeper/params_test.go @@ -11,7 +11,7 @@ import ( ) func (s *KeeperTestSuite) TestUpdateGenericParams() { - appID1 := s.CreateNewApp("appOne") + appID1 := s.CreateNewApp("appone") _, err := s.keeper.GetGenericParams(s.ctx, appID1) s.Require().NoError(err) diff --git a/x/liquidity/keeper/pool.go b/x/liquidity/keeper/pool.go index 6d2090292..6b604f150 100644 --- a/x/liquidity/keeper/pool.go +++ b/x/liquidity/keeper/pool.go @@ -179,6 +179,8 @@ func (k Keeper) CreatePool(ctx sdk.Context, msg *types.MsgCreatePool) (types.Poo return types.Pool{}, err } + ctx.GasMeter().ConsumeGas(types.CreatePoolGas, "CreatePoolGas") + ctx.EventManager().EmitEvents(sdk.Events{ sdk.NewEvent( types.EventTypeCreatePool, diff --git a/x/liquidity/keeper/pool_test.go b/x/liquidity/keeper/pool_test.go index 4b13dd67e..ed272aafd 100644 --- a/x/liquidity/keeper/pool_test.go +++ b/x/liquidity/keeper/pool_test.go @@ -14,8 +14,8 @@ func (s *KeeperTestSuite) TestCreatePool() { addr1 := s.addr(1) - appID1 := s.CreateNewApp("appOne") - appID2 := s.CreateNewApp("appTwo") + appID1 := s.CreateNewApp("appone") + appID2 := s.CreateNewApp("apptwo") asset1 := s.CreateNewAsset("ASSET1", "uasset1", 1000000) asset2 := s.CreateNewAsset("ASSET2", "uasset2", 2000000) @@ -277,7 +277,7 @@ func (s *KeeperTestSuite) TestDisabledPool() { addr1 := s.addr(1) - appID1 := s.CreateNewApp("appOne") + appID1 := s.CreateNewApp("appone") asset1 := s.CreateNewAsset("ASSET1", "uasset1", 1000000) asset2 := s.CreateNewAsset("ASSET2", "uasset2", 2000000) @@ -320,7 +320,7 @@ func (s *KeeperTestSuite) TestCreatePoolAfterDisabled() { addr1 := s.addr(1) - appID1 := s.CreateNewApp("appOne") + appID1 := s.CreateNewApp("appone") asset1 := s.CreateNewAsset("ASSET1", "uasset1", 1000000) asset2 := s.CreateNewAsset("ASSET2", "uasset2", 2000000) @@ -340,7 +340,7 @@ func (s *KeeperTestSuite) TestCreatePoolAfterDisabled() { func (s *KeeperTestSuite) TestPoolIndexes() { addr1 := s.addr(1) - appID1 := s.CreateNewApp("appOne") + appID1 := s.CreateNewApp("appone") asset1 := s.CreateNewAsset("ASSET1", "uasset1", 1000000) asset2 := s.CreateNewAsset("ASSET2", "uasset2", 2000000) @@ -359,8 +359,8 @@ func (s *KeeperTestSuite) TestPoolIndexes() { func (s *KeeperTestSuite) TestDeposit() { addr1 := s.addr(1) - appID1 := s.CreateNewApp("appOne") - appID2 := s.CreateNewApp("appTwo") + appID1 := s.CreateNewApp("appone") + appID2 := s.CreateNewApp("apptwo") asset1 := s.CreateNewAsset("ASSET1", "uasset1", 1000000) asset2 := s.CreateNewAsset("ASSET2", "uasset2", 2000000) @@ -581,7 +581,7 @@ func (s *KeeperTestSuite) TestDepositRefund() { addr1 := s.addr(1) addr2 := s.addr(2) - appID1 := s.CreateNewApp("appOne") + appID1 := s.CreateNewApp("appone") asset1 := s.CreateNewAsset("ASSET1", "uasset1", 1000000) asset2 := s.CreateNewAsset("ASSET2", "uasset2", 2000000) @@ -613,7 +613,7 @@ func (s *KeeperTestSuite) TestDepositRefundTooSmallMintedPoolCoin() { addr2 := s.addr(2) addr3 := s.addr(3) - appID1 := s.CreateNewApp("appOne") + appID1 := s.CreateNewApp("appone") asset1 := s.CreateNewAsset("ASSET1", "uasset1", 1000000) asset2 := s.CreateNewAsset("ASSET2", "uasset2", 2000000) @@ -646,7 +646,7 @@ func (s *KeeperTestSuite) TestDepositToDisabledPool() { addr2 := s.addr(2) addr3 := s.addr(3) - appID1 := s.CreateNewApp("appOne") + appID1 := s.CreateNewApp("appone") asset1 := s.CreateNewAsset("ASSET1", "uasset1", 1000000) asset2 := s.CreateNewAsset("ASSET2", "uasset2", 2000000) @@ -676,7 +676,7 @@ func (s *KeeperTestSuite) TestDepositToDisabledPool() { func (s *KeeperTestSuite) TestTooLargePool() { addr1 := s.addr(1) - appID1 := s.CreateNewApp("appOne") + appID1 := s.CreateNewApp("appone") asset1 := s.CreateNewAsset("ASSET1", "uasset1", 1000000) asset2 := s.CreateNewAsset("ASSET2", "uasset2", 2000000) @@ -691,7 +691,7 @@ func (s *KeeperTestSuite) TestTooLargePool() { func (s *KeeperTestSuite) TestWithdraw() { addr1 := s.addr(1) - appID1 := s.CreateNewApp("appOne") + appID1 := s.CreateNewApp("appone") asset1 := s.CreateNewAsset("ASSET1", "uasset1", 1000000) asset2 := s.CreateNewAsset("ASSET2", "uasset2", 2000000) @@ -785,7 +785,7 @@ func (s *KeeperTestSuite) TestWithdrawRefund() { addr2 := s.addr(2) addr3 := s.addr(3) - appID1 := s.CreateNewApp("appOne") + appID1 := s.CreateNewApp("appone") asset1 := s.CreateNewAsset("ASSET1", "uasset1", 1000000) asset2 := s.CreateNewAsset("ASSET2", "uasset2", 2000000) @@ -810,7 +810,7 @@ func (s *KeeperTestSuite) TestWithdrawRefundTooSmallWithdrawCoins() { addr1 := s.addr(1) addr2 := s.addr(2) - appID1 := s.CreateNewApp("appOne") + appID1 := s.CreateNewApp("appone") asset1 := s.CreateNewAsset("ASSET1", "uasset1", 1000000) asset2 := s.CreateNewAsset("ASSET2", "uasset2", 2000000) @@ -833,7 +833,7 @@ func (s *KeeperTestSuite) TestWithdrawFromDisabledPool() { addr1 := s.addr(1) addr2 := s.addr(2) - appID1 := s.CreateNewApp("appOne") + appID1 := s.CreateNewApp("appone") asset1 := s.CreateNewAsset("ASSET1", "uasset1", 1000000) asset2 := s.CreateNewAsset("ASSET2", "uasset2", 2000000) diff --git a/x/liquidity/keeper/rewards.go b/x/liquidity/keeper/rewards.go index a5c4db582..0ab3e5b1a 100644 --- a/x/liquidity/keeper/rewards.go +++ b/x/liquidity/keeper/rewards.go @@ -2,7 +2,7 @@ package keeper import ( "math" - "sort" + "strconv" "time" "github.com/comdex-official/comdex/x/liquidity/amm" @@ -100,11 +100,6 @@ func (k Keeper) GetAggregatedChildPoolContributions(ctx sdk.Context, appID uint6 poolSupplyData := make(map[string]sdk.Dec) for _, poolID := range poolIds { - liquidityProvidersDataForPool, found := k.GetPoolLiquidityProvidersData(ctx, appID, poolID) - if !found { - continue - } - pool, pair, ammPool, err := k.GetAMMPoolInterfaceObject(ctx, appID, poolID) if err != nil { continue @@ -118,27 +113,22 @@ func (k Keeper) GetAggregatedChildPoolContributions(ctx sdk.Context, appID uint6 quoteCoinPoolBalance, baseCoinPoolBalance := k.getPoolBalances(ctx, *pool, *pair) for _, address := range masterPoolSupplyAddresses { - supplyData, found := liquidityProvidersDataForPool.LiquidityProviders[address.String()] + activeFarmer, found := k.GetActiveFarmer(ctx, appID, poolID, address) if !found { continue } - depositedCoins := supplyData.Coins - for _, coin := range depositedCoins { - if coin.Denom == pool.PoolCoinDenom { - x, y, err := k.CalculateXYFromPoolCoin(ctx, ammPool, coin) - if err != nil { - continue - } - quoteCoin := sdk.NewCoin(pair.QuoteCoinDenom, x) - baseCoin := sdk.NewCoin(pair.BaseCoinDenom, y) - value := k.CalculateLiquidityAddedValue(ctx, quoteCoinPoolBalance, baseCoinPoolBalance, quoteCoin, baseCoin, oraclePrice, denom) - _, found := poolSupplyData[address.String()] - if !found { - poolSupplyData[address.String()] = value - } else { - poolSupplyData[address.String()] = poolSupplyData[address.String()].Add(value) - } - } + x, y, err := k.CalculateXYFromPoolCoin(ctx, ammPool, activeFarmer.FarmedPoolCoin) + if err != nil { + continue + } + quoteCoin := sdk.NewCoin(pair.QuoteCoinDenom, x) + baseCoin := sdk.NewCoin(pair.BaseCoinDenom, y) + value := k.CalculateLiquidityAddedValue(ctx, quoteCoinPoolBalance, baseCoinPoolBalance, quoteCoin, baseCoin, oraclePrice, denom) + _, found = poolSupplyData[address.String()] + if !found { + poolSupplyData[address.String()] = value + } else { + poolSupplyData[address.String()] = poolSupplyData[address.String()].Add(value) } } } @@ -146,11 +136,6 @@ func (k Keeper) GetAggregatedChildPoolContributions(ctx sdk.Context, appID uint6 } func (k Keeper) GetFarmingRewardsData(ctx sdk.Context, appID uint64, coinsToDistribute sdk.Coin, liquidityGaugeData rewardstypes.LiquidtyGaugeMetaData) ([]rewardstypes.RewardDistributionDataCollector, error) { - liquidityProvidersDataForPool, found := k.GetPoolLiquidityProvidersData(ctx, appID, liquidityGaugeData.PoolId) - if !found { - return []rewardstypes.RewardDistributionDataCollector{}, nil - } - pool, pair, ammPool, err := k.GetAMMPoolInterfaceObject(ctx, appID, liquidityGaugeData.PoolId) if err != nil { return nil, err @@ -166,24 +151,21 @@ func (k Keeper) GetFarmingRewardsData(ctx sdk.Context, appID uint64, coinsToDist var lpAddresses []sdk.AccAddress var lpSupplies []sdk.Dec - for address, depositedCoins := range liquidityProvidersDataForPool.LiquidityProviders { - addr, err := sdk.AccAddressFromBech32(address) + activeFarmers := k.GetAllActiveFarmers(ctx, appID, pool.Id) + for _, activeFarmer := range activeFarmers { + addr, err := sdk.AccAddressFromBech32(activeFarmer.Farmer) if err != nil { continue } - for _, coin := range depositedCoins.Coins { - if coin.Denom == pool.PoolCoinDenom { - x, y, err := k.CalculateXYFromPoolCoin(ctx, ammPool, coin) - if err != nil { - continue - } - quoteCoin := sdk.NewCoin(pair.QuoteCoinDenom, x) - baseCoin := sdk.NewCoin(pair.BaseCoinDenom, y) - value := k.CalculateLiquidityAddedValue(ctx, quoteCoinPoolBalance, baseCoinPoolBalance, quoteCoin, baseCoin, oraclePrice, denom) - lpAddresses = append(lpAddresses, addr) - lpSupplies = append(lpSupplies, value) - } + x, y, err := k.CalculateXYFromPoolCoin(ctx, ammPool, activeFarmer.FarmedPoolCoin) + if err != nil { + continue } + quoteCoin := sdk.NewCoin(pair.QuoteCoinDenom, x) + baseCoin := sdk.NewCoin(pair.BaseCoinDenom, y) + value := k.CalculateLiquidityAddedValue(ctx, quoteCoinPoolBalance, baseCoinPoolBalance, quoteCoin, baseCoin, oraclePrice, denom) + lpAddresses = append(lpAddresses, addr) + lpSupplies = append(lpSupplies, value) } // Logic for master pool mechanism @@ -276,8 +258,8 @@ func (k Keeper) GetFarmingRewardsData(ctx sdk.Context, appID uint64, coinsToDist return rewardData, nil } -func (k Keeper) ValidateMsgTokensSoftLock(ctx sdk.Context, msg *types.MsgTokensSoftLock) (sdk.AccAddress, error) { - depositor, err := sdk.AccAddressFromBech32(msg.Depositor) +func (k Keeper) ValidateMsgFarm(ctx sdk.Context, msg *types.MsgFarm) (sdk.AccAddress, error) { + farmer, err := sdk.AccAddressFromBech32(msg.Farmer) if err != nil { return nil, err } @@ -292,49 +274,59 @@ func (k Keeper) ValidateMsgTokensSoftLock(ctx sdk.Context, msg *types.MsgTokensS return nil, sdkerrors.Wrapf(types.ErrInvalidPoolID, "no pool exists with id : %d", msg.PoolId) } - if msg.SoftLockCoin.Denom != pool.PoolCoinDenom { - return nil, sdkerrors.Wrapf(types.ErrWrongPoolCoinDenom, "expected pool coin denom %s, found %s", pool.PoolCoinDenom, msg.SoftLockCoin.Denom) + if msg.FarmingPoolCoin.Denom != pool.PoolCoinDenom { + return nil, sdkerrors.Wrapf(types.ErrWrongPoolCoinDenom, "expected pool coin denom %s, found %s", pool.PoolCoinDenom, msg.FarmingPoolCoin.Denom) } - return depositor, nil + if !msg.FarmingPoolCoin.Amount.IsPositive() { + return nil, sdkerrors.Wrapf(types.ErrorNotPositiveAmont, "pool coin amount should be positive") + } + return farmer, nil } -func (k Keeper) SoftLockTokens(ctx sdk.Context, msg *types.MsgTokensSoftLock) error { - depositor, err := k.ValidateMsgTokensSoftLock(ctx, msg) +func (k Keeper) Farm(ctx sdk.Context, msg *types.MsgFarm) error { + farmer, err := k.ValidateMsgFarm(ctx, msg) if err != nil { return err } - err = k.bankKeeper.SendCoinsFromAccountToModule(ctx, depositor, types.ModuleName, sdk.NewCoins(msg.SoftLockCoin)) + err = k.bankKeeper.SendCoinsFromAccountToModule(ctx, farmer, types.ModuleName, sdk.NewCoins(msg.FarmingPoolCoin)) if err != nil { return err } - liquidityProvidersData, found := k.GetPoolLiquidityProvidersData(ctx, msg.AppId, msg.PoolId) + queuedFarmer, found := k.GetQueuedFarmer(ctx, msg.AppId, msg.PoolId, farmer) if !found { - liquidityProvidersData = types.PoolLiquidityProvidersData{ - AppId: msg.AppId, - PoolId: msg.PoolId, - BondedLockIds: []uint64{}, - LiquidityProviders: make(map[string]*types.DepositsMade), - QueuedLiquidityProviders: []*types.QueuedLiquidityProvider{}, - } + queuedFarmer = types.NewQueuedfarmer(msg.AppId, msg.PoolId, farmer) } - liquidityProvidersData.QueuedLiquidityProviders = append( - liquidityProvidersData.QueuedLiquidityProviders, - &types.QueuedLiquidityProvider{ - Address: depositor.String(), - SupplyProvided: []*sdk.Coin{&msg.SoftLockCoin}, + queuedFarmer.QueudCoins = append( + queuedFarmer.QueudCoins, + &types.QueuedCoin{ + FarmedPoolCoin: msg.FarmingPoolCoin, CreatedAt: ctx.BlockTime(), - }) - k.SetPoolLiquidityProvidersData(ctx, liquidityProvidersData) + }, + ) + k.SetQueuedFarmer(ctx, queuedFarmer) + + ctx.GasMeter().ConsumeGas(types.FarmGas, "FarmGas") + + ctx.EventManager().EmitEvents(sdk.Events{ + sdk.NewEvent( + types.EventTypeFarm, + sdk.NewAttribute(types.AttributeKeyFarmer, msg.Farmer), + sdk.NewAttribute(types.AttributeKeyAppID, strconv.FormatUint(msg.AppId, 10)), + sdk.NewAttribute(types.AttributeKeyPoolID, strconv.FormatUint(msg.PoolId, 10)), + sdk.NewAttribute(types.AttributeKeyPoolCoin, msg.FarmingPoolCoin.String()), + sdk.NewAttribute(types.AttributeKeyTimeStamp, ctx.BlockTime().String()), + ), + }) return nil } -func (k Keeper) ValidateMsgTokensSoftUnlock(ctx sdk.Context, msg *types.MsgTokensSoftUnlock) (sdk.AccAddress, error) { - depositor, err := sdk.AccAddressFromBech32(msg.Depositor) +func (k Keeper) ValidateMsgUnfarm(ctx sdk.Context, msg *types.MsgUnfarm) (sdk.AccAddress, error) { + farmer, err := sdk.AccAddressFromBech32(msg.Farmer) if err != nil { return nil, err } @@ -349,109 +341,98 @@ func (k Keeper) ValidateMsgTokensSoftUnlock(ctx sdk.Context, msg *types.MsgToken return nil, sdkerrors.Wrapf(types.ErrInvalidPoolID, "no pool exists with id : %d", msg.PoolId) } - if msg.SoftUnlockCoin.Denom != pool.PoolCoinDenom { - return nil, sdkerrors.Wrapf(types.ErrWrongPoolCoinDenom, "expected pool coin denom %s, found %s", pool.PoolCoinDenom, msg.SoftUnlockCoin.Denom) + if msg.UnfarmingPoolCoin.Denom != pool.PoolCoinDenom { + return nil, sdkerrors.Wrapf(types.ErrWrongPoolCoinDenom, "expected pool coin denom %s, found %s", pool.PoolCoinDenom, msg.UnfarmingPoolCoin.Denom) } - return depositor, nil + if !msg.UnfarmingPoolCoin.Amount.IsPositive() { + return nil, sdkerrors.Wrapf(types.ErrorNotPositiveAmont, "pool coin amount should be positive") + } + return farmer, nil } -func (k Keeper) SoftUnlockTokens(ctx sdk.Context, msg *types.MsgTokensSoftUnlock) error { - depositor, err := k.ValidateMsgTokensSoftUnlock(ctx, msg) +func (k Keeper) Unfarm(ctx sdk.Context, msg *types.MsgUnfarm) error { + farmer, err := k.ValidateMsgUnfarm(ctx, msg) if err != nil { return err } - liquidityProvidersData, found := k.GetPoolLiquidityProvidersData(ctx, msg.AppId, msg.PoolId) + activeFarmer, afound := k.GetActiveFarmer(ctx, msg.AppId, msg.PoolId, farmer) + queuedFarmer, qfound := k.GetQueuedFarmer(ctx, msg.AppId, msg.PoolId, farmer) - if !found { - return sdkerrors.Wrapf(types.ErrNoSoftLockPresent, "no soft locks present for given pool id %d", msg.PoolId) + if !afound && !qfound { + return sdkerrors.Wrapf(types.ErrorFarmerNotFound, "no active farm found for given pool id %d", msg.PoolId) } - sortedQueuedLiquidityProviders := liquidityProvidersData.QueuedLiquidityProviders - sort.Slice(sortedQueuedLiquidityProviders, func(i, j int) bool { - return sortedQueuedLiquidityProviders[i].CreatedAt.After(sortedQueuedLiquidityProviders[j].CreatedAt) - }) + farmedCoinAmount := sdk.NewInt(0) - var updatedQueuedLiquidityProviders []*types.QueuedLiquidityProvider - - refundAmount := sdk.NewCoin(msg.SoftUnlockCoin.Denom, sdk.NewInt(0)) - - for queryIndex, queuedLiquidityProvider := range sortedQueuedLiquidityProviders { - if queuedLiquidityProvider.Address == depositor.String() { - for qindex, qcoin := range queuedLiquidityProvider.SupplyProvided { - if msg.SoftUnlockCoin.Denom == qcoin.Denom && !msg.SoftUnlockCoin.Amount.IsZero() { - if msg.SoftUnlockCoin.Amount.GTE(qcoin.Amount) { - msg.SoftUnlockCoin.Amount = msg.SoftUnlockCoin.Amount.Sub(qcoin.Amount) - refundAmount.Amount = refundAmount.Amount.Add(qcoin.Amount) - sortedQueuedLiquidityProviders[queryIndex].SupplyProvided[qindex].Amount = sdk.NewInt(0) - } else { - sortedQueuedLiquidityProviders[queryIndex].SupplyProvided[qindex].Amount = sortedQueuedLiquidityProviders[queryIndex].SupplyProvided[qindex].Amount.Sub(msg.SoftUnlockCoin.Amount) - refundAmount.Amount = refundAmount.Amount.Add(msg.SoftUnlockCoin.Amount) - msg.SoftUnlockCoin.Amount = sdk.NewInt(0) - } - } - } + if qfound { + for _, qCoin := range queuedFarmer.QueudCoins { + farmedCoinAmount = farmedCoinAmount.Add(qCoin.FarmedPoolCoin.Amount) + } + } - canRemoveThisQueuedLiquidityProvider := true - for _, qcoin := range sortedQueuedLiquidityProviders[queryIndex].SupplyProvided { - if !qcoin.Amount.IsZero() { - canRemoveThisQueuedLiquidityProvider = false - } - } - if !canRemoveThisQueuedLiquidityProvider { - updatedQueuedLiquidityProviders = append(updatedQueuedLiquidityProviders, sortedQueuedLiquidityProviders[queryIndex]) - } + if afound { + farmedCoinAmount = farmedCoinAmount.Add(activeFarmer.FarmedPoolCoin.Amount) + } - withdrawCoinFullfilled := true - if !msg.SoftUnlockCoin.Amount.IsZero() { - withdrawCoinFullfilled = false - } + if farmedCoinAmount.LT(msg.UnfarmingPoolCoin.Amount) { + return sdkerrors.Wrapf(types.ErrInvalidUnfarmAmount, "farmed pool coin amount %d%s smaller than requested unfarming pool coin amount %d%s", farmedCoinAmount.Int64(), msg.UnfarmingPoolCoin.Denom, msg.UnfarmingPoolCoin.Amount.Int64(), msg.UnfarmingPoolCoin.Denom) + } - if withdrawCoinFullfilled { - updatedQueuedLiquidityProviders = append(updatedQueuedLiquidityProviders, sortedQueuedLiquidityProviders[queryIndex+1:]...) + unFarmingCoin := msg.UnfarmingPoolCoin + queuedCoins := queuedFarmer.QueudCoins + if qfound { + for i := len(queuedCoins) - 1; i >= 0; i-- { + if queuedCoins[i].FarmedPoolCoin.Amount.GTE(msg.UnfarmingPoolCoin.Amount) { + queuedCoins[i].FarmedPoolCoin.Amount = queuedCoins[i].FarmedPoolCoin.Amount.Sub(msg.UnfarmingPoolCoin.Amount) + msg.UnfarmingPoolCoin.Amount = sdk.NewInt(0) break + } else { + msg.UnfarmingPoolCoin.Amount = msg.UnfarmingPoolCoin.Amount.Sub(queuedCoins[i].FarmedPoolCoin.Amount) + queuedCoins[i].FarmedPoolCoin.Amount = sdk.NewInt(0) } - } else { - updatedQueuedLiquidityProviders = append(updatedQueuedLiquidityProviders, sortedQueuedLiquidityProviders[queryIndex]) } } - liquidityProvidersData.QueuedLiquidityProviders = updatedQueuedLiquidityProviders - - coinWithdrawingFullfilled := true - if !msg.SoftUnlockCoin.Amount.IsZero() { - coinWithdrawingFullfilled = false - } - - if !coinWithdrawingFullfilled { - if liquidityProvidersData.LiquidityProviders[depositor.String()] != nil { - providedSupply := liquidityProvidersData.LiquidityProviders[depositor.String()].Coins - for psIndex, psCoin := range providedSupply { - if psCoin.Denom == msg.SoftUnlockCoin.Denom { - if msg.SoftUnlockCoin.Amount.GTE(psCoin.Amount) { - liquidityProvidersData.LiquidityProviders[depositor.String()].Coins[psIndex].Amount = sdk.NewInt(0) - refundAmount.Amount = refundAmount.Amount.Add(psCoin.Amount) - msg.SoftUnlockCoin.Amount = msg.SoftUnlockCoin.Amount.Sub(psCoin.Amount) - } else { - liquidityProvidersData.LiquidityProviders[depositor.String()].Coins[psIndex].Amount = liquidityProvidersData.LiquidityProviders[depositor.String()].Coins[psIndex].Amount.Sub(msg.SoftUnlockCoin.Amount) - refundAmount.Amount = refundAmount.Amount.Add(msg.SoftUnlockCoin.Amount) - msg.SoftUnlockCoin.Amount = sdk.NewInt(0) - } - } - } + updatedQueuedCoins := []*types.QueuedCoin{} + for _, object := range queuedCoins { + if object.FarmedPoolCoin.Amount.IsZero() { + break + } else { + updatedQueuedCoins = append(updatedQueuedCoins, object) } } - if msg.SoftUnlockCoin.Amount.Add(refundAmount.Amount).GT(refundAmount.Amount) { - return sdkerrors.Wrapf(types.ErrInvalidUnlockAmount, "available soft locked amount %d%s smaller than requested amount %d%s", refundAmount.Amount.Int64(), refundAmount.Denom, msg.SoftUnlockCoin.Amount.Add(refundAmount.Amount).Int64(), refundAmount.Denom) + queuedFarmer.QueudCoins = updatedQueuedCoins + + aFarmerUpdated := false + if !msg.UnfarmingPoolCoin.Amount.IsZero() { + aFarmerUpdated = true + activeFarmer.FarmedPoolCoin.Amount = activeFarmer.FarmedPoolCoin.Amount.Sub(msg.UnfarmingPoolCoin.Amount) } - err = k.bankKeeper.SendCoinsFromModuleToAccount(ctx, types.ModuleName, depositor, sdk.NewCoins(refundAmount)) + err = k.bankKeeper.SendCoinsFromModuleToAccount(ctx, types.ModuleName, farmer, sdk.NewCoins(unFarmingCoin)) if err != nil { return err } - k.SetPoolLiquidityProvidersData(ctx, liquidityProvidersData) + if aFarmerUpdated { + k.SetActiveFarmer(ctx, activeFarmer) + } + k.SetQueuedFarmer(ctx, queuedFarmer) + + ctx.GasMeter().ConsumeGas(types.UnfarmGas, "UnfarmGas") + + ctx.EventManager().EmitEvents(sdk.Events{ + sdk.NewEvent( + types.EventTypeUnfarm, + sdk.NewAttribute(types.AttributeKeyFarmer, msg.Farmer), + sdk.NewAttribute(types.AttributeKeyAppID, strconv.FormatUint(msg.AppId, 10)), + sdk.NewAttribute(types.AttributeKeyPoolID, strconv.FormatUint(msg.PoolId, 10)), + sdk.NewAttribute(types.AttributeKeyPoolCoin, msg.UnfarmingPoolCoin.String()), + sdk.NewAttribute(types.AttributeKeyTimeStamp, ctx.BlockTime().String()), + ), + }) return nil } @@ -476,47 +457,37 @@ func (k Keeper) GetMinimumEpochDurationFromPoolID(ctx sdk.Context, poolID uint64 return minEpochDuration } -func (k Keeper) ProcessQueuedLiquidityProviders(ctx sdk.Context, appID uint64) { +func (k Keeper) ProcessQueuedFarmers(ctx sdk.Context, appID uint64) { availablePools := k.GetAllPools(ctx, appID) availableLiquidityGauges := k.rewardsKeeper.GetAllGaugesByGaugeTypeID(ctx, rewardstypes.LiquidityGaugeTypeID) for _, pool := range availablePools { - poolLpData, found := k.GetPoolLiquidityProvidersData(ctx, pool.AppId, pool.Id) minEpochDuration := k.GetMinimumEpochDurationFromPoolID(ctx, pool.Id, availableLiquidityGauges) + queuedFarmers := k.GetAllQueuedFarmers(ctx, pool.AppId, pool.Id) - if !found { - continue - } - queuedDepositRequests := poolLpData.QueuedLiquidityProviders - var updatedQueue []*types.QueuedLiquidityProvider - for _, queuedLp := range queuedDepositRequests { - if ctx.BlockTime().Before(queuedLp.CreatedAt.Add(minEpochDuration)) { - updatedQueue = append(updatedQueue, queuedLp) - } else { - var suppliedCoins []sdk.Coin - for _, coin := range queuedLp.SupplyProvided { - suppliedCoins = append(suppliedCoins, sdk.NewCoin(coin.Denom, coin.Amount)) - } - if poolLpData.LiquidityProviders[queuedLp.Address] == nil { - if len(poolLpData.LiquidityProviders) == 0 { - poolLpData.LiquidityProviders = make(map[string]*types.DepositsMade) - } - newDeposit := new(types.DepositsMade) - newDeposit.Coins = suppliedCoins - poolLpData.LiquidityProviders[queuedLp.Address] = newDeposit + for _, queuedFarmer := range queuedFarmers { + + activeFarmer, found := k.GetActiveFarmer(ctx, queuedFarmer.AppId, queuedFarmer.PoolId, sdk.MustAccAddressFromBech32(queuedFarmer.Farmer)) + if !found { + activeFarmer = types.NewActivefarmer(queuedFarmer.AppId, queuedFarmer.PoolId, sdk.MustAccAddressFromBech32(queuedFarmer.Farmer), sdk.NewCoin(pool.PoolCoinDenom, sdk.NewInt(0))) + } + + updatedQueue := []*types.QueuedCoin{} + activeFarmUpdated := false + for _, queuedCoin := range queuedFarmer.QueudCoins { + if ctx.BlockTime().Before(queuedCoin.CreatedAt.Add(minEpochDuration)) { + updatedQueue = append(updatedQueue, queuedCoin) } else { - for _, coin := range suppliedCoins { - for lpedIndex, lpedCoin := range poolLpData.LiquidityProviders[queuedLp.Address].Coins { - if coin.Denom == lpedCoin.Denom { - poolLpData.LiquidityProviders[queuedLp.Address].Coins[lpedIndex].Amount = poolLpData.LiquidityProviders[queuedLp.Address].Coins[lpedIndex].Amount.Add(coin.Amount) - break - } - } - } + activeFarmUpdated = true + activeFarmer.FarmedPoolCoin.Amount = activeFarmer.FarmedPoolCoin.Amount.Add(queuedCoin.FarmedPoolCoin.Amount) } } + queuedFarmer.QueudCoins = updatedQueue + + if activeFarmUpdated { + k.SetActiveFarmer(ctx, activeFarmer) + k.SetQueuedFarmer(ctx, queuedFarmer) + } } - poolLpData.QueuedLiquidityProviders = updatedQueue - k.SetPoolLiquidityProvidersData(ctx, poolLpData) } } diff --git a/x/liquidity/keeper/rewards_test.go b/x/liquidity/keeper/rewards_test.go index 01df7926f..df18a7314 100644 --- a/x/liquidity/keeper/rewards_test.go +++ b/x/liquidity/keeper/rewards_test.go @@ -11,11 +11,11 @@ import ( _ "github.com/stretchr/testify/suite" ) -func (s *KeeperTestSuite) TestSoftLockTokens() { +func (s *KeeperTestSuite) TestFarm() { creator := s.addr(0) - appID1 := s.CreateNewApp("appOne") - appID2 := s.CreateNewApp("appTwo") + appID1 := s.CreateNewApp("appone") + appID2 := s.CreateNewApp("apptwo") asset1 := s.CreateNewAsset("ASSET1", "uasset1", 1000000) asset2 := s.CreateNewAsset("ASSET2", "uasset2", 1000000) @@ -51,95 +51,95 @@ func (s *KeeperTestSuite) TestSoftLockTokens() { testCases := []struct { Name string - Msg types.MsgTokensSoftLock + Msg types.MsgFarm ExpErr error AvailableBalance sdk.Coins QueueLenght uint64 }{ { Name: "error app id invalid", - Msg: *types.NewMsgSoftLock(69, liquidityProvider1, pool.Id, utils.ParseCoin("699000000pool1-1")), + Msg: *types.NewMsgFarm(69, pool.Id, liquidityProvider1, utils.ParseCoin("699000000pool1-1")), ExpErr: sdkerrors.Wrapf(types.ErrInvalidAppID, "app id %d not found", 69), AvailableBalance: utils.ParseCoins("10000000000pool1-1,10000000000pool2-1"), }, { Name: "error pool id invalid", - Msg: *types.NewMsgSoftLock(appID1, liquidityProvider1, 69, utils.ParseCoin("699000000pool1-1")), + Msg: *types.NewMsgFarm(appID1, 69, liquidityProvider1, utils.ParseCoin("699000000pool1-1")), ExpErr: sdkerrors.Wrapf(types.ErrInvalidPoolID, "no pool exists with id : %d", 69), AvailableBalance: utils.ParseCoins("10000000000pool1-1,10000000000pool2-1"), }, { Name: "error pool denom invalid", - Msg: *types.NewMsgSoftLock(appID1, liquidityProvider1, pool.Id, utils.ParseCoin("699000000pool1-2")), + Msg: *types.NewMsgFarm(appID1, pool.Id, liquidityProvider1, utils.ParseCoin("699000000pool1-2")), ExpErr: sdkerrors.Wrapf(types.ErrWrongPoolCoinDenom, "expected pool coin denom %s, found pool1-2", pool.PoolCoinDenom), AvailableBalance: utils.ParseCoins("10000000000pool1-1,10000000000pool2-1"), }, { Name: "error insufficient pool denoms", - Msg: *types.NewMsgSoftLock(appID1, liquidityProvider1, pool.Id, utils.ParseCoin("100000000000pool1-1")), + Msg: *types.NewMsgFarm(appID1, pool.Id, liquidityProvider1, utils.ParseCoin("100000000000pool1-1")), ExpErr: sdkerrors.Wrapf(sdkerrors.ErrInsufficientFunds, "10000000000pool1-1 is smaller than 100000000000pool1-1"), AvailableBalance: utils.ParseCoins("10000000000pool1-1,10000000000pool2-1"), }, { Name: "success liquidity provider 1 app1", - Msg: *types.NewMsgSoftLock(appID1, liquidityProvider1, pool.Id, utils.ParseCoin("5252000000pool1-1")), + Msg: *types.NewMsgFarm(appID1, pool.Id, liquidityProvider1, utils.ParseCoin("5252000000pool1-1")), ExpErr: nil, AvailableBalance: utils.ParseCoins("4748000000pool1-1,10000000000pool2-1"), QueueLenght: 1, }, { Name: "success liquidity provider 2 app1", - Msg: *types.NewMsgSoftLock(appID1, liquidityProvider2, pool.Id, utils.ParseCoin("6934000000pool1-1")), + Msg: *types.NewMsgFarm(appID1, pool.Id, liquidityProvider2, utils.ParseCoin("6934000000pool1-1")), ExpErr: nil, AvailableBalance: utils.ParseCoins("3065999999pool1-1,9999999999pool2-1"), - QueueLenght: 2, + QueueLenght: 1, }, { Name: "success liquidity provider 1 app1 re-add", - Msg: *types.NewMsgSoftLock(appID1, liquidityProvider1, pool.Id, utils.ParseCoin("23000000pool1-1")), + Msg: *types.NewMsgFarm(appID1, pool.Id, liquidityProvider1, utils.ParseCoin("23000000pool1-1")), ExpErr: nil, AvailableBalance: utils.ParseCoins("4725000000pool1-1,10000000000pool2-1"), - QueueLenght: 3, + QueueLenght: 2, }, { Name: "success liquidity provider 1 app2", - Msg: *types.NewMsgSoftLock(appID2, liquidityProvider1, pool2.Id, utils.ParseCoin("123000000pool2-1")), + Msg: *types.NewMsgFarm(appID2, pool2.Id, liquidityProvider1, utils.ParseCoin("123000000pool2-1")), ExpErr: nil, AvailableBalance: utils.ParseCoins("4725000000pool1-1,9877000000pool2-1"), QueueLenght: 1, }, { Name: "success liquidity provider 2 app2", - Msg: *types.NewMsgSoftLock(appID2, liquidityProvider2, pool2.Id, utils.ParseCoin("546000000pool2-1")), + Msg: *types.NewMsgFarm(appID2, pool2.Id, liquidityProvider2, utils.ParseCoin("546000000pool2-1")), ExpErr: nil, AvailableBalance: utils.ParseCoins("3065999999pool1-1,9453999999pool2-1"), - QueueLenght: 2, + QueueLenght: 1, }, } for _, tc := range testCases { s.Run(tc.Name, func() { - err := s.keeper.SoftLockTokens(s.ctx, &tc.Msg) + err := s.keeper.Farm(s.ctx, &tc.Msg) if tc.ExpErr != nil { s.Require().Error(err) s.Require().EqualError(err, tc.ExpErr.Error()) - _, found := s.keeper.GetPoolLiquidityProvidersData(s.ctx, tc.Msg.AppId, tc.Msg.PoolId) + _, found := s.keeper.GetQueuedFarmer(s.ctx, tc.Msg.AppId, tc.Msg.PoolId, tc.Msg.GetFarmer()) + s.Require().False(found) + _, found = s.keeper.GetActiveFarmer(s.ctx, tc.Msg.AppId, tc.Msg.PoolId, tc.Msg.GetFarmer()) s.Require().False(found) } else { s.Require().NoError(err) - s.Require().True(tc.AvailableBalance.IsEqual(s.getBalances(sdk.MustAccAddressFromBech32(tc.Msg.Depositor)))) + s.Require().True(tc.AvailableBalance.IsEqual(s.getBalances(sdk.MustAccAddressFromBech32(tc.Msg.Farmer)))) - lpData, found := s.keeper.GetPoolLiquidityProvidersData(s.ctx, tc.Msg.AppId, tc.Msg.PoolId) + queuedFarmer, found := s.keeper.GetQueuedFarmer(s.ctx, tc.Msg.AppId, tc.Msg.PoolId, tc.Msg.GetFarmer()) s.Require().True(found) - s.Require().Equal(tc.Msg.AppId, lpData.AppId) - s.Require().Equal(tc.Msg.PoolId, lpData.PoolId) - s.Require().Len(lpData.QueuedLiquidityProviders, int(tc.QueueLenght)) - s.Require().Len(lpData.BondedLockIds, 0) - s.Require().Len(lpData.LiquidityProviders, 0) + s.Require().Equal(tc.Msg.AppId, queuedFarmer.AppId) + s.Require().Equal(tc.Msg.PoolId, queuedFarmer.PoolId) + s.Require().Len(queuedFarmer.QueudCoins, int(tc.QueueLenght)) - s.Require().Equal(tc.Msg.Depositor, lpData.QueuedLiquidityProviders[tc.QueueLenght-1].Address) - s.Require().Equal(&tc.Msg.SoftLockCoin, lpData.QueuedLiquidityProviders[tc.QueueLenght-1].SupplyProvided[0]) + s.Require().Equal(tc.Msg.Farmer, queuedFarmer.Farmer) + s.Require().Equal(tc.Msg.FarmingPoolCoin, queuedFarmer.QueudCoins[tc.QueueLenght-1].FarmedPoolCoin) } }) } @@ -148,48 +148,36 @@ func (s *KeeperTestSuite) TestSoftLockTokens() { s.ctx = s.ctx.WithBlockTime(s.ctx.BlockTime().Add(types.DefaultFarmingQueueDuration).Add(time.Second * 10)) s.nextBlock() // app1 check - lpData, found := s.keeper.GetPoolLiquidityProvidersData(s.ctx, appID1, pool.Id) - s.Require().True(found) - s.Require().Equal(appID1, lpData.AppId) - s.Require().Equal(pool.Id, lpData.PoolId) - s.Require().Len(lpData.QueuedLiquidityProviders, 0) - s.Require().Len(lpData.LiquidityProviders, 2) - - lp1, found := lpData.LiquidityProviders[liquidityProvider1.String()] - s.Require().True(found) - s.Require().True(lp1.Coins[0].IsEqual(utils.ParseCoin("5275000000pool1-1"))) + activeFarmers := s.keeper.GetAllActiveFarmers(s.ctx, appID1, pool.Id) + queuedFarmers := s.keeper.GetAllQueuedFarmers(s.ctx, appID1, pool.Id) + s.Require().Len(queuedFarmers[0].QueudCoins, 0) + s.Require().Len(queuedFarmers[1].QueudCoins, 0) + s.Require().Len(activeFarmers, 2) - lp2, found := lpData.LiquidityProviders[liquidityProvider2.String()] - s.Require().True(found) - s.Require().True(lp2.Coins[0].IsEqual(utils.ParseCoin("6934000000pool1-1"))) + s.Require().True(activeFarmers[0].FarmedPoolCoin.IsEqual(utils.ParseCoin("5275000000pool1-1"))) + s.Require().True(activeFarmers[1].FarmedPoolCoin.IsEqual(utils.ParseCoin("6934000000pool1-1"))) - _, found = lpData.LiquidityProviders[creator.String()] + _, found := s.keeper.GetActiveFarmer(s.ctx, appID1, pool.Id, creator) s.Require().False(found) // app2 check - lpData, found = s.keeper.GetPoolLiquidityProvidersData(s.ctx, appID2, pool2.Id) - s.Require().True(found) - s.Require().Equal(appID2, lpData.AppId) - s.Require().Equal(pool2.Id, lpData.PoolId) - s.Require().Len(lpData.QueuedLiquidityProviders, 0) - s.Require().Len(lpData.LiquidityProviders, 2) - - lp1, found = lpData.LiquidityProviders[liquidityProvider1.String()] - s.Require().True(found) - s.Require().True(lp1.Coins[0].IsEqual(utils.ParseCoin("123000000pool2-1"))) + activeFarmers = s.keeper.GetAllActiveFarmers(s.ctx, appID2, pool2.Id) + queuedFarmers = s.keeper.GetAllQueuedFarmers(s.ctx, appID2, pool2.Id) + s.Require().Len(queuedFarmers[0].QueudCoins, 0) + s.Require().Len(queuedFarmers[1].QueudCoins, 0) + s.Require().Len(activeFarmers, 2) - lp2, found = lpData.LiquidityProviders[liquidityProvider2.String()] - s.Require().True(found) - s.Require().True(lp2.Coins[0].IsEqual(utils.ParseCoin("546000000pool2-1"))) + s.Require().True(activeFarmers[0].FarmedPoolCoin.IsEqual(utils.ParseCoin("123000000pool2-1"))) + s.Require().True(activeFarmers[1].FarmedPoolCoin.IsEqual(utils.ParseCoin("546000000pool2-1"))) - _, found = lpData.LiquidityProviders[creator.String()] + _, found = s.keeper.GetActiveFarmer(s.ctx, appID2, pool2.Id, creator) s.Require().False(found) } -func (s *KeeperTestSuite) TestSoftUnlockTokens() { +func (s *KeeperTestSuite) TestUnfarm() { creator := s.addr(0) - appID1 := s.CreateNewApp("appOne") + appID1 := s.CreateNewApp("appone") asset1 := s.CreateNewAsset("ASSET1", "uasset1", 1000000) asset2 := s.CreateNewAsset("ASSET2", "uasset2", 1000000) @@ -208,62 +196,58 @@ func (s *KeeperTestSuite) TestSoftUnlockTokens() { currentTime := s.ctx.BlockTime() s.ctx = s.ctx.WithBlockTime(currentTime) - msg := types.NewMsgSoftLock(appID1, liquidityProvider1, pool.Id, utils.ParseCoin("10000000000pool1-1")) - err := s.keeper.SoftLockTokens(s.ctx, msg) + msg := types.NewMsgFarm(appID1, pool.Id, liquidityProvider1, utils.ParseCoin("10000000000pool1-1")) + err := s.keeper.Farm(s.ctx, msg) s.Require().NoError(err) - lpData, found := s.keeper.GetPoolLiquidityProvidersData(s.ctx, appID1, pool.Id) - s.Require().True(found) - s.Require().Equal(appID1, lpData.AppId) - s.Require().Equal(pool.Id, lpData.PoolId) - s.Require().Len(lpData.QueuedLiquidityProviders, 1) - s.Require().Len(lpData.LiquidityProviders, 0) + queuedFarmers := s.keeper.GetAllQueuedFarmers(s.ctx, appID1, pool.Id) + s.Require().Len(queuedFarmers, 1) testCases := []struct { Name string - Msg types.MsgTokensSoftUnlock + Msg types.MsgUnfarm ExpErr error AvailableBalance sdk.Coins QueueLenght uint64 }{ { Name: "error app id invalid", - Msg: *types.NewMsgSoftUnlock(69, liquidityProvider1, pool.Id, utils.ParseCoin("699000000pool1-1")), + Msg: *types.NewMsgUnfarm(69, pool.Id, liquidityProvider1, utils.ParseCoin("699000000pool1-1")), ExpErr: sdkerrors.Wrapf(types.ErrInvalidAppID, "app id %d not found", 69), AvailableBalance: sdk.Coins{}, }, { Name: "error pool id invalid", - Msg: *types.NewMsgSoftUnlock(appID1, liquidityProvider1, 69, utils.ParseCoin("699000000pool1-1")), + Msg: *types.NewMsgUnfarm(appID1, 69, liquidityProvider1, utils.ParseCoin("699000000pool1-1")), ExpErr: sdkerrors.Wrapf(types.ErrInvalidPoolID, "no pool exists with id : %d", 69), AvailableBalance: sdk.Coins{}, }, { Name: "error pool denom invalid", - Msg: *types.NewMsgSoftUnlock(appID1, liquidityProvider1, pool.Id, utils.ParseCoin("699000000pool1-2")), + Msg: *types.NewMsgUnfarm(appID1, pool.Id, liquidityProvider1, utils.ParseCoin("699000000pool1-2")), ExpErr: sdkerrors.Wrapf(types.ErrWrongPoolCoinDenom, "expected pool coin denom %s, found pool1-2", pool.PoolCoinDenom), AvailableBalance: sdk.Coins{}, }, { - Name: "error no soft locks present for pool", - Msg: *types.NewMsgSoftUnlock(appID1, liquidityProvider1, pool2.Id, utils.ParseCoin("699000000pool1-2")), - ExpErr: sdkerrors.Wrapf(types.ErrNoSoftLockPresent, "no soft locks present for given pool id %d", pool2.Id), + Name: "error farm not found", + Msg: *types.NewMsgUnfarm(appID1, pool2.Id, liquidityProvider1, utils.ParseCoin("699000000pool1-2")), + ExpErr: sdkerrors.Wrapf(types.ErrorFarmerNotFound, "no active farm found for given pool id %d", pool2.Id), AvailableBalance: sdk.Coins{}, }, { Name: "error insufficient farmed amounts", - Msg: *types.NewMsgSoftUnlock(appID1, liquidityProvider1, pool.Id, utils.ParseCoin("100000000000pool1-1")), - ExpErr: sdkerrors.Wrapf(types.ErrInvalidUnlockAmount, "available soft locked amount 10000000000pool1-1 smaller than requested amount 100000000000pool1-1"), + Msg: *types.NewMsgUnfarm(appID1, pool.Id, liquidityProvider1, utils.ParseCoin("100000000000pool1-1")), + ExpErr: sdkerrors.Wrapf(types.ErrInvalidUnfarmAmount, "farmed pool coin amount 10000000000pool1-1 smaller than requested unfarming pool coin amount 100000000000pool1-1"), AvailableBalance: sdk.Coins{}, }, { Name: "success partial unlock", - Msg: *types.NewMsgSoftUnlock(appID1, liquidityProvider1, pool.Id, utils.ParseCoin("5000000000pool1-1")), + Msg: *types.NewMsgUnfarm(appID1, pool.Id, liquidityProvider1, utils.ParseCoin("5000000000pool1-1")), ExpErr: nil, AvailableBalance: utils.ParseCoins("5000000000pool1-1"), }, { Name: "success full unlock", - Msg: *types.NewMsgSoftUnlock(appID1, liquidityProvider1, pool.Id, utils.ParseCoin("5000000000pool1-1")), + Msg: *types.NewMsgUnfarm(appID1, pool.Id, liquidityProvider1, utils.ParseCoin("5000000000pool1-1")), ExpErr: nil, AvailableBalance: utils.ParseCoins("10000000000pool1-1"), }, @@ -271,25 +255,25 @@ func (s *KeeperTestSuite) TestSoftUnlockTokens() { for _, tc := range testCases { s.Run(tc.Name, func() { - err := s.keeper.SoftUnlockTokens(s.ctx, &tc.Msg) + err := s.keeper.Unfarm(s.ctx, &tc.Msg) if tc.ExpErr != nil { s.Require().Error(err) s.Require().EqualError(err, tc.ExpErr.Error()) } else { s.Require().NoError(err) - s.Require().True(tc.AvailableBalance.IsEqual(s.getBalances(sdk.MustAccAddressFromBech32(tc.Msg.Depositor)))) + s.Require().True(tc.AvailableBalance.IsEqual(s.getBalances(sdk.MustAccAddressFromBech32(tc.Msg.Farmer)))) } }) } } -func (s *KeeperTestSuite) TestSoftUnlockTokensTwo() { +func (s *KeeperTestSuite) TestUnfarmTwo() { currentTime := s.ctx.BlockTime() s.ctx = s.ctx.WithBlockTime(currentTime) creator := s.addr(0) - appID1 := s.CreateNewApp("appOne") + appID1 := s.CreateNewApp("appone") asset1 := s.CreateNewAsset("ASSET1", "uasset1", 1000000) asset2 := s.CreateNewAsset("ASSET2", "uasset2", 1000000) @@ -310,133 +294,130 @@ func (s *KeeperTestSuite) TestSoftUnlockTokensTwo() { // farm 1, queue size 1 // SortedByTimeFarmQueue -> [10000000pool1-1] - msg := types.NewMsgSoftLock(appID1, liquidityProvider1, pool.Id, utils.ParseCoin("10000000pool1-1")) - err := s.keeper.SoftLockTokens(s.ctx, msg) + msg := types.NewMsgFarm(appID1, pool.Id, liquidityProvider1, utils.ParseCoin("10000000pool1-1")) + err := s.keeper.Farm(s.ctx, msg) s.Require().NoError(err) s.ctx = s.ctx.WithBlockTime(s.ctx.BlockTime().Add(time.Hour * 1)) // farm 2, queue size 2 // SortedByTimeFarmQueue -> [20000000pool1-1, 10000000pool1-1] - msg = types.NewMsgSoftLock(appID1, liquidityProvider1, pool.Id, utils.ParseCoin("20000000pool1-1")) - err = s.keeper.SoftLockTokens(s.ctx, msg) + msg = types.NewMsgFarm(appID1, pool.Id, liquidityProvider1, utils.ParseCoin("20000000pool1-1")) + err = s.keeper.Farm(s.ctx, msg) s.Require().NoError(err) s.ctx = s.ctx.WithBlockTime(s.ctx.BlockTime().Add(time.Hour * 1)) // farm 3, queue size 3 // SortedByTimeFarmQueue -> [30000000pool1-1, 20000000pool1-1, 10000000pool1-1] - msg = types.NewMsgSoftLock(appID1, liquidityProvider1, pool.Id, utils.ParseCoin("30000000pool1-1")) - err = s.keeper.SoftLockTokens(s.ctx, msg) + msg = types.NewMsgFarm(appID1, pool.Id, liquidityProvider1, utils.ParseCoin("30000000pool1-1")) + err = s.keeper.Farm(s.ctx, msg) s.Require().NoError(err) s.ctx = s.ctx.WithBlockTime(s.ctx.BlockTime().Add(time.Hour * 1)) // farm 4, queue size 4 // SortedByTimeFarmQueue -> [40000000pool1-1, 30000000pool1-1, 20000000pool1-1, 10000000pool1-1] - msg = types.NewMsgSoftLock(appID1, liquidityProvider1, pool.Id, utils.ParseCoin("40000000pool1-1")) - err = s.keeper.SoftLockTokens(s.ctx, msg) + msg = types.NewMsgFarm(appID1, pool.Id, liquidityProvider1, utils.ParseCoin("40000000pool1-1")) + err = s.keeper.Farm(s.ctx, msg) s.Require().NoError(err) s.ctx = s.ctx.WithBlockTime(s.ctx.BlockTime().Add(time.Hour * 1)) // farm 5, queue size 5 // SortedByTimeFarmQueue -> [50000000pool1-1, 40000000pool1-1, 30000000pool1-1, 20000000pool1-1, 10000000pool1-1] - msg = types.NewMsgSoftLock(appID1, liquidityProvider1, pool.Id, utils.ParseCoin("50000000pool1-1")) - err = s.keeper.SoftLockTokens(s.ctx, msg) + msg = types.NewMsgFarm(appID1, pool.Id, liquidityProvider1, utils.ParseCoin("50000000pool1-1")) + err = s.keeper.Farm(s.ctx, msg) s.Require().NoError(err) - lpData, found := s.keeper.GetPoolLiquidityProvidersData(s.ctx, appID1, pool.Id) - s.Require().True(found) - s.Require().Equal(appID1, lpData.AppId) - s.Require().Equal(pool.Id, lpData.PoolId) - s.Require().Len(lpData.QueuedLiquidityProviders, 5) - s.Require().Len(lpData.LiquidityProviders, 0) - - // lp1 trying to unfarm/softUnlock more than farmed/softLocked - msgUnlock := types.NewMsgSoftUnlock(appID1, liquidityProvider1, pool.Id, utils.ParseCoin("160000000pool1-1")) - err = s.keeper.SoftUnlockTokens(s.ctx, msgUnlock) + queuedFarmers := s.keeper.GetAllQueuedFarmers(s.ctx, appID1, pool.Id) + s.Require().Len(queuedFarmers, 1) + s.Require().Len(queuedFarmers[0].QueudCoins, 5) + + // lp1 trying to unfarm more than farmed + msgUnlock := types.NewMsgUnfarm(appID1, pool.Id, liquidityProvider1, utils.ParseCoin("160000000pool1-1")) + err = s.keeper.Unfarm(s.ctx, msgUnlock) s.Require().Error(err) - s.Require().EqualError(err, sdkerrors.Wrapf(types.ErrInvalidUnlockAmount, "available soft locked amount 150000000pool1-1 smaller than requested amount 160000000pool1-1").Error()) + s.Require().EqualError(err, sdkerrors.Wrapf(types.ErrInvalidUnfarmAmount, "farmed pool coin amount 150000000pool1-1 smaller than requested unfarming pool coin amount 160000000pool1-1").Error()) // unfarming small portions, below unlock removes token from most recently added queue // unlock is done from a single latest object in a queue since this object itself can satisfy the unlock requirement, // Before - SortedByTimeFarmQueue -> [50000000pool1-1, 40000000pool1-1, 30000000pool1-1, 20000000pool1-1, 10000000pool1-1] // After - SortedByTimeFarmQueue -> [45000000pool1-1, 40000000pool1-1, 30000000pool1-1, 20000000pool1-1, 10000000pool1-1] - msgUnlock = types.NewMsgSoftUnlock(appID1, liquidityProvider1, pool.Id, utils.ParseCoin("5000000pool1-1")) - err = s.keeper.SoftUnlockTokens(s.ctx, msgUnlock) + msgUnlock = types.NewMsgUnfarm(appID1, pool.Id, liquidityProvider1, utils.ParseCoin("5000000pool1-1")) + err = s.keeper.Unfarm(s.ctx, msgUnlock) s.Require().NoError(err) - lpData, found = s.keeper.GetPoolLiquidityProvidersData(s.ctx, appID1, pool.Id) - s.Require().True(found) - s.Require().Len(lpData.QueuedLiquidityProviders, 5) - s.Require().Equal(utils.ParseCoin("45000000pool1-1").Denom, lpData.QueuedLiquidityProviders[0].SupplyProvided[0].Denom) - s.Require().Equal(utils.ParseCoin("45000000pool1-1").Amount, lpData.QueuedLiquidityProviders[0].SupplyProvided[0].Amount) + queuedFarmers = s.keeper.GetAllQueuedFarmers(s.ctx, appID1, pool.Id) + s.Require().Len(queuedFarmers, 1) + s.Require().Len(queuedFarmers[0].QueudCoins, 5) + s.Require().Equal(utils.ParseCoin("45000000pool1-1").Denom, queuedFarmers[0].QueudCoins[4].FarmedPoolCoin.Denom) + s.Require().Equal(utils.ParseCoin("45000000pool1-1").Amount, queuedFarmers[0].QueudCoins[4].FarmedPoolCoin.Amount) // unfarming small portions, below unlock removes token from most recently added queue // unlock is done from a single latest object in a queue since this object itself can satisfy the unlock requirement, // Before - SortedByTimeFarmQueue -> [45000000pool1-1, 40000000pool1-1, 30000000pool1-1, 20000000pool1-1, 10000000pool1-1] // After - SortedByTimeFarmQueue -> [34000000pool1-1, 40000000pool1-1, 30000000pool1-1, 20000000pool1-1, 10000000pool1-1] - msgUnlock = types.NewMsgSoftUnlock(appID1, liquidityProvider1, pool.Id, utils.ParseCoin("11000000pool1-1")) - err = s.keeper.SoftUnlockTokens(s.ctx, msgUnlock) + msgUnlock = types.NewMsgUnfarm(appID1, pool.Id, liquidityProvider1, utils.ParseCoin("11000000pool1-1")) + err = s.keeper.Unfarm(s.ctx, msgUnlock) s.Require().NoError(err) - lpData, found = s.keeper.GetPoolLiquidityProvidersData(s.ctx, appID1, pool.Id) - s.Require().True(found) - s.Require().Len(lpData.QueuedLiquidityProviders, 5) - s.Require().Equal(utils.ParseCoin("34000000pool1-1").Denom, lpData.QueuedLiquidityProviders[0].SupplyProvided[0].Denom) - s.Require().Equal(utils.ParseCoin("34000000pool1-1").Amount, lpData.QueuedLiquidityProviders[0].SupplyProvided[0].Amount) + queuedFarmers = s.keeper.GetAllQueuedFarmers(s.ctx, appID1, pool.Id) + s.Require().Len(queuedFarmers, 1) + s.Require().Len(queuedFarmers[0].QueudCoins, 5) + s.Require().Equal(utils.ParseCoin("34000000pool1-1").Denom, queuedFarmers[0].QueudCoins[4].FarmedPoolCoin.Denom) + s.Require().Equal(utils.ParseCoin("34000000pool1-1").Amount, queuedFarmers[0].QueudCoins[4].FarmedPoolCoin.Amount) // below case will delete the most recent object from queue since it satisfies the required unlock condition // here the unlock is being satisfied from the two queue objects, most recent one gets deleted after it fullfills all // of its token for unlocking, and the remaining unlock tokens are fullfilled from 2nd most recent queue object // Before - SortedByTimeFarmQueue -> [34000000pool1-1, 40000000pool1-1, 30000000pool1-1, 20000000pool1-1, 10000000pool1-1] // After - SortedByTimeFarmQueue -> [36000000pool1-1, 30000000pool1-1, 20000000pool1-1, 10000000pool1-1] - msgUnlock = types.NewMsgSoftUnlock(appID1, liquidityProvider1, pool.Id, utils.ParseCoin("38000000pool1-1")) - err = s.keeper.SoftUnlockTokens(s.ctx, msgUnlock) + msgUnlock = types.NewMsgUnfarm(appID1, pool.Id, liquidityProvider1, utils.ParseCoin("38000000pool1-1")) + err = s.keeper.Unfarm(s.ctx, msgUnlock) s.Require().NoError(err) - lpData, found = s.keeper.GetPoolLiquidityProvidersData(s.ctx, appID1, pool.Id) - s.Require().True(found) - s.Require().Len(lpData.QueuedLiquidityProviders, 4) - s.Require().Equal(utils.ParseCoin("36000000pool1-1").Denom, lpData.QueuedLiquidityProviders[0].SupplyProvided[0].Denom) - s.Require().Equal(utils.ParseCoin("36000000pool1-1").Amount, lpData.QueuedLiquidityProviders[0].SupplyProvided[0].Amount) + queuedFarmers = s.keeper.GetAllQueuedFarmers(s.ctx, appID1, pool.Id) + s.Require().Len(queuedFarmers, 1) + s.Require().Len(queuedFarmers[0].QueudCoins, 4) + s.Require().Equal(utils.ParseCoin("36000000pool1-1").Denom, queuedFarmers[0].QueudCoins[3].FarmedPoolCoin.Denom) + s.Require().Equal(utils.ParseCoin("36000000pool1-1").Amount, queuedFarmers[0].QueudCoins[3].FarmedPoolCoin.Amount) // similarly below cases are followed as above // Before - SortedByTimeFarmQueue -> [36000000pool1-1, 30000000pool1-1, 20000000pool1-1, 10000000pool1-1] // After - SortedByTimeFarmQueue -> [30000000pool1-1, 20000000pool1-1, 10000000pool1-1] - msgUnlock = types.NewMsgSoftUnlock(appID1, liquidityProvider1, pool.Id, utils.ParseCoin("36000000pool1-1")) - err = s.keeper.SoftUnlockTokens(s.ctx, msgUnlock) + msgUnlock = types.NewMsgUnfarm(appID1, pool.Id, liquidityProvider1, utils.ParseCoin("36000000pool1-1")) + err = s.keeper.Unfarm(s.ctx, msgUnlock) s.Require().NoError(err) - lpData, found = s.keeper.GetPoolLiquidityProvidersData(s.ctx, appID1, pool.Id) - s.Require().True(found) - s.Require().Len(lpData.QueuedLiquidityProviders, 3) - s.Require().Equal(utils.ParseCoin("30000000pool1-1").Denom, lpData.QueuedLiquidityProviders[0].SupplyProvided[0].Denom) - s.Require().Equal(utils.ParseCoin("30000000pool1-1").Amount, lpData.QueuedLiquidityProviders[0].SupplyProvided[0].Amount) + queuedFarmers = s.keeper.GetAllQueuedFarmers(s.ctx, appID1, pool.Id) + s.Require().Len(queuedFarmers, 1) + s.Require().Len(queuedFarmers[0].QueudCoins, 3) + s.Require().Equal(utils.ParseCoin("30000000pool1-1").Denom, queuedFarmers[0].QueudCoins[2].FarmedPoolCoin.Denom) + s.Require().Equal(utils.ParseCoin("30000000pool1-1").Amount, queuedFarmers[0].QueudCoins[2].FarmedPoolCoin.Amount) // Before - SortedByTimeFarmQueue -> [30000000pool1-1, 20000000pool1-1, 10000000pool1-1] // After - SortedByTimeFarmQueue -> [10000000pool1-1] - msgUnlock = types.NewMsgSoftUnlock(appID1, liquidityProvider1, pool.Id, utils.ParseCoin("50000000pool1-1")) - err = s.keeper.SoftUnlockTokens(s.ctx, msgUnlock) + msgUnlock = types.NewMsgUnfarm(appID1, pool.Id, liquidityProvider1, utils.ParseCoin("50000000pool1-1")) + err = s.keeper.Unfarm(s.ctx, msgUnlock) s.Require().NoError(err) - lpData, found = s.keeper.GetPoolLiquidityProvidersData(s.ctx, appID1, pool.Id) - s.Require().True(found) - s.Require().Len(lpData.QueuedLiquidityProviders, 1) - s.Require().Equal(utils.ParseCoin("10000000pool1-1").Denom, lpData.QueuedLiquidityProviders[0].SupplyProvided[0].Denom) - s.Require().Equal(utils.ParseCoin("10000000pool1-1").Amount, lpData.QueuedLiquidityProviders[0].SupplyProvided[0].Amount) - - // lp1 trying to unfarm/softUnlock more than farmed/softLocked - msgUnlock = types.NewMsgSoftUnlock(appID1, liquidityProvider1, pool.Id, utils.ParseCoin("11000000pool1-1")) - err = s.keeper.SoftUnlockTokens(s.ctx, msgUnlock) + queuedFarmers = s.keeper.GetAllQueuedFarmers(s.ctx, appID1, pool.Id) + s.Require().Len(queuedFarmers, 1) + s.Require().Len(queuedFarmers[0].QueudCoins, 1) + s.Require().Equal(utils.ParseCoin("10000000pool1-1").Denom, queuedFarmers[0].QueudCoins[0].FarmedPoolCoin.Denom) + s.Require().Equal(utils.ParseCoin("10000000pool1-1").Amount, queuedFarmers[0].QueudCoins[0].FarmedPoolCoin.Amount) + + // lp1 trying to unfarm more than farmed + msgUnlock = types.NewMsgUnfarm(appID1, pool.Id, liquidityProvider1, utils.ParseCoin("11000000pool1-1")) + err = s.keeper.Unfarm(s.ctx, msgUnlock) s.Require().Error(err) - s.Require().EqualError(err, sdkerrors.Wrapf(types.ErrInvalidUnlockAmount, "available soft locked amount 10000000pool1-1 smaller than requested amount 11000000pool1-1").Error()) + s.Require().EqualError(err, sdkerrors.Wrapf(types.ErrInvalidUnfarmAmount, "farmed pool coin amount 10000000pool1-1 smaller than requested unfarming pool coin amount 11000000pool1-1").Error()) s.ctx = s.ctx.WithBlockTime(s.ctx.BlockTime().Add(time.Hour * 1)) // SortedByTimeFarmQueue -> [69000000pool1-1, 10000000pool1-1] - msg = types.NewMsgSoftLock(appID1, liquidityProvider1, pool.Id, utils.ParseCoin("69000000pool1-1")) - err = s.keeper.SoftLockTokens(s.ctx, msg) + msg = types.NewMsgFarm(appID1, pool.Id, liquidityProvider1, utils.ParseCoin("69000000pool1-1")) + err = s.keeper.Farm(s.ctx, msg) s.Require().NoError(err) // marking oldest farmed object as valid and dequing it, assuming queue duration is satisfied s.ctx = s.ctx.WithBlockTime(currentTime.Add(types.DefaultFarmingQueueDuration).Add(time.Second * 10)) s.nextBlock() - lpData, found = s.keeper.GetPoolLiquidityProvidersData(s.ctx, appID1, pool.Id) - s.Require().True(found) - s.Require().Len(lpData.QueuedLiquidityProviders, 1) - s.Require().Len(lpData.LiquidityProviders, 1) + afs := s.keeper.GetAllActiveFarmers(s.ctx, appID1, pool.Id) + qfs := s.keeper.GetAllQueuedFarmers(s.ctx, appID1, pool.Id) + s.Require().Len(qfs, 1) + s.Require().Len(afs, 1) // now the data is something like this // SortedByTimeFarmQueue -> [69000000pool1-1] @@ -449,15 +430,15 @@ func (s *KeeperTestSuite) TestSoftUnlockTokensTwo() { // After // SortedByTimeFarmQueue -> [] // ActiveFarmedTokens -> [9000000pool1-1] - msgUnlock = types.NewMsgSoftUnlock(appID1, liquidityProvider1, pool.Id, utils.ParseCoin("70000000pool1-1")) - err = s.keeper.SoftUnlockTokens(s.ctx, msgUnlock) + msgUnlock = types.NewMsgUnfarm(appID1, pool.Id, liquidityProvider1, utils.ParseCoin("70000000pool1-1")) + err = s.keeper.Unfarm(s.ctx, msgUnlock) s.Require().NoError(err) - lpData, found = s.keeper.GetPoolLiquidityProvidersData(s.ctx, appID1, pool.Id) - s.Require().True(found) - s.Require().Len(lpData.QueuedLiquidityProviders, 0) - s.Require().Len(lpData.LiquidityProviders, 1) - s.Require().Equal(utils.ParseCoin("9000000pool1-1").Denom, lpData.LiquidityProviders[liquidityProvider1.String()].Coins[0].Denom) - s.Require().Equal(utils.ParseCoin("9000000pool1-1").Amount, lpData.LiquidityProviders[liquidityProvider1.String()].Coins[0].Amount) + afs = s.keeper.GetAllActiveFarmers(s.ctx, appID1, pool.Id) + qfs = s.keeper.GetAllQueuedFarmers(s.ctx, appID1, pool.Id) + s.Require().Len(qfs[0].QueudCoins, 0) + s.Require().Len(afs, 1) + s.Require().Equal(utils.ParseCoin("9000000pool1-1").Denom, afs[0].FarmedPoolCoin.Denom) + s.Require().Equal(utils.ParseCoin("9000000pool1-1").Amount, afs[0].FarmedPoolCoin.Amount) // unlocking all farmed tokens // Before @@ -466,46 +447,46 @@ func (s *KeeperTestSuite) TestSoftUnlockTokensTwo() { // After // SortedByTimeFarmQueue -> [] // ActiveFarmedTokens -> [] - msgUnlock = types.NewMsgSoftUnlock(appID1, liquidityProvider1, pool.Id, utils.ParseCoin("9000000pool1-1")) - err = s.keeper.SoftUnlockTokens(s.ctx, msgUnlock) + msgUnlock = types.NewMsgUnfarm(appID1, pool.Id, liquidityProvider1, utils.ParseCoin("9000000pool1-1")) + err = s.keeper.Unfarm(s.ctx, msgUnlock) s.Require().NoError(err) - lpData, found = s.keeper.GetPoolLiquidityProvidersData(s.ctx, appID1, pool.Id) - s.Require().True(found) - s.Require().Len(lpData.QueuedLiquidityProviders, 0) - s.Require().Len(lpData.LiquidityProviders, 1) - s.Require().Equal(utils.ParseCoin("0pool1-1").Denom, lpData.LiquidityProviders[liquidityProvider1.String()].Coins[0].Denom) - s.Require().Equal(utils.ParseCoin("0pool1-1").Amount, lpData.LiquidityProviders[liquidityProvider1.String()].Coins[0].Amount) + afs = s.keeper.GetAllActiveFarmers(s.ctx, appID1, pool.Id) + qfs = s.keeper.GetAllQueuedFarmers(s.ctx, appID1, pool.Id) + s.Require().Len(qfs[0].QueudCoins, 0) + s.Require().Len(afs, 1) + s.Require().Equal(utils.ParseCoin("0pool1-1").Denom, afs[0].FarmedPoolCoin.Denom) + s.Require().Equal(utils.ParseCoin("0pool1-1").Amount, afs[0].FarmedPoolCoin.Amount) s.Require().True(utils.ParseCoins("10000000000pool1-1").IsEqual(s.getBalances(liquidityProvider1))) s.ctx = s.ctx.WithBlockTime(currentTime) // SortedByTimeFarmQueue -> [11000000pool1-1] // ActiveFarmedTokens -> [] - msg = types.NewMsgSoftLock(appID1, liquidityProvider1, pool.Id, utils.ParseCoin("11000000pool1-1")) - err = s.keeper.SoftLockTokens(s.ctx, msg) + msg = types.NewMsgFarm(appID1, pool.Id, liquidityProvider1, utils.ParseCoin("11000000pool1-1")) + err = s.keeper.Farm(s.ctx, msg) s.Require().NoError(err) s.ctx = s.ctx.WithBlockTime(s.ctx.BlockTime().Add(time.Hour * 1)) // SortedByTimeFarmQueue -> [12000000pool1-1, 11000000pool1-1] // ActiveFarmedTokens -> [] - msg = types.NewMsgSoftLock(appID1, liquidityProvider1, pool.Id, utils.ParseCoin("12000000pool1-1")) - err = s.keeper.SoftLockTokens(s.ctx, msg) + msg = types.NewMsgFarm(appID1, pool.Id, liquidityProvider1, utils.ParseCoin("12000000pool1-1")) + err = s.keeper.Farm(s.ctx, msg) s.Require().NoError(err) s.ctx = s.ctx.WithBlockTime(s.ctx.BlockTime().Add(time.Hour * 1)) // SortedByTimeFarmQueue -> [13000000pool1-1, 12000000pool1-1, 11000000pool1-1] // ActiveFarmedTokens -> [] - msg = types.NewMsgSoftLock(appID1, liquidityProvider1, pool.Id, utils.ParseCoin("13000000pool1-1")) - err = s.keeper.SoftLockTokens(s.ctx, msg) + msg = types.NewMsgFarm(appID1, pool.Id, liquidityProvider1, utils.ParseCoin("13000000pool1-1")) + err = s.keeper.Farm(s.ctx, msg) s.Require().NoError(err) // marking oldest farmed object as valid and dequing it, assuming queue duration is satisfied s.ctx = s.ctx.WithBlockTime(currentTime.Add(types.DefaultFarmingQueueDuration).Add(time.Second * 10)) s.nextBlock() - lpData, found = s.keeper.GetPoolLiquidityProvidersData(s.ctx, appID1, pool.Id) - s.Require().True(found) - s.Require().Len(lpData.QueuedLiquidityProviders, 2) - s.Require().Len(lpData.LiquidityProviders, 1) + afs = s.keeper.GetAllActiveFarmers(s.ctx, appID1, pool.Id) + qfs = s.keeper.GetAllQueuedFarmers(s.ctx, appID1, pool.Id) + s.Require().Len(qfs[0].QueudCoins, 2) + s.Require().Len(afs, 1) // now the data is something like this // SortedByTimeFarmQueue -> [13000000pool1-1, 12000000pool1-1] @@ -518,37 +499,38 @@ func (s *KeeperTestSuite) TestSoftUnlockTokensTwo() { // After // SortedByTimeFarmQueue -> [] // ActiveFarmedTokens -> [10000000pool1-1] - msgUnlock = types.NewMsgSoftUnlock(appID1, liquidityProvider1, pool.Id, utils.ParseCoin("26000000pool1-1")) - err = s.keeper.SoftUnlockTokens(s.ctx, msgUnlock) + msgUnlock = types.NewMsgUnfarm(appID1, pool.Id, liquidityProvider1, utils.ParseCoin("26000000pool1-1")) + err = s.keeper.Unfarm(s.ctx, msgUnlock) s.Require().NoError(err) - lpData, found = s.keeper.GetPoolLiquidityProvidersData(s.ctx, appID1, pool.Id) - s.Require().True(found) - s.Require().Len(lpData.QueuedLiquidityProviders, 0) - s.Require().Len(lpData.LiquidityProviders, 1) - s.Require().Equal(utils.ParseCoin("10000000pool1-1").Denom, lpData.LiquidityProviders[liquidityProvider1.String()].Coins[0].Denom) - s.Require().Equal(utils.ParseCoin("10000000pool1-1").Amount, lpData.LiquidityProviders[liquidityProvider1.String()].Coins[0].Amount) + afs = s.keeper.GetAllActiveFarmers(s.ctx, appID1, pool.Id) + qfs = s.keeper.GetAllQueuedFarmers(s.ctx, appID1, pool.Id) + s.Require().Len(qfs[0].QueudCoins, 0) + s.Require().Len(afs, 1) + s.Require().Equal(utils.ParseCoin("10000000pool1-1").Denom, afs[0].FarmedPoolCoin.Denom) + s.Require().Equal(utils.ParseCoin("10000000pool1-1").Amount, afs[0].FarmedPoolCoin.Amount) // SortedByTimeFarmQueue -> [ (l2) 7000000pool1-1] // ActiveFarmedTokens -> [ (l1) 10000000pool1-1] - msg = types.NewMsgSoftLock(appID1, liquidityProvider2, pool.Id, utils.ParseCoin("7000000pool1-1")) - err = s.keeper.SoftLockTokens(s.ctx, msg) + msg = types.NewMsgFarm(appID1, pool.Id, liquidityProvider2, utils.ParseCoin("7000000pool1-1")) + err = s.keeper.Farm(s.ctx, msg) s.Require().NoError(err) - lpData, found = s.keeper.GetPoolLiquidityProvidersData(s.ctx, appID1, pool.Id) + qf, found := s.keeper.GetQueuedFarmer(s.ctx, appID1, pool.Id, liquidityProvider2) + afs = s.keeper.GetAllActiveFarmers(s.ctx, appID1, pool.Id) s.Require().True(found) - s.Require().Len(lpData.QueuedLiquidityProviders, 1) - s.Require().Len(lpData.LiquidityProviders, 1) + s.Require().Len(qf.QueudCoins, 1) + s.Require().Len(afs, 1) // SortedByTimeFarmQueue -> [(l1) 9000000pool1-1, (l2) 7000000pool1-1] // ActiveFarmedTokens -> [ (l1) 10000000pool1-1] - msg = types.NewMsgSoftLock(appID1, liquidityProvider1, pool.Id, utils.ParseCoin("9000000pool1-1")) - err = s.keeper.SoftLockTokens(s.ctx, msg) + msg = types.NewMsgFarm(appID1, pool.Id, liquidityProvider1, utils.ParseCoin("9000000pool1-1")) + err = s.keeper.Farm(s.ctx, msg) s.Require().NoError(err) - lpData, found = s.keeper.GetPoolLiquidityProvidersData(s.ctx, appID1, pool.Id) - s.Require().True(found) - s.Require().Len(lpData.QueuedLiquidityProviders, 2) - s.Require().Len(lpData.LiquidityProviders, 1) + afs = s.keeper.GetAllActiveFarmers(s.ctx, appID1, pool.Id) + qfs = s.keeper.GetAllQueuedFarmers(s.ctx, appID1, pool.Id) + s.Require().Len(qfs, 2) + s.Require().Len(afs, 1) // Before // SortedByTimeFarmQueue -> [(l2) 7000000pool1-1, (l1) 9000000pool1-1] @@ -556,19 +538,19 @@ func (s *KeeperTestSuite) TestSoftUnlockTokensTwo() { // After // SortedByTimeFarmQueue -> [(l2) 7000000pool1-1, (l1) 6000000pool1-1] // ActiveFarmedTokens -> [ (l1) 10000000pool1-1] - msgUnlock = types.NewMsgSoftUnlock(appID1, liquidityProvider1, pool.Id, utils.ParseCoin("3000000pool1-1")) - err = s.keeper.SoftUnlockTokens(s.ctx, msgUnlock) + msgUnlock = types.NewMsgUnfarm(appID1, pool.Id, liquidityProvider1, utils.ParseCoin("3000000pool1-1")) + err = s.keeper.Unfarm(s.ctx, msgUnlock) s.Require().NoError(err) - lpData, found = s.keeper.GetPoolLiquidityProvidersData(s.ctx, appID1, pool.Id) - s.Require().True(found) - s.Require().Len(lpData.QueuedLiquidityProviders, 2) - s.Require().Len(lpData.LiquidityProviders, 1) - s.Require().Equal(utils.ParseCoin("7000000pool1-1").Denom, lpData.QueuedLiquidityProviders[0].SupplyProvided[0].Denom) - s.Require().Equal(utils.ParseCoin("7000000pool1-1").Amount, lpData.QueuedLiquidityProviders[0].SupplyProvided[0].Amount) - s.Require().Equal(utils.ParseCoin("6000000pool1-1").Denom, lpData.QueuedLiquidityProviders[1].SupplyProvided[0].Denom) - s.Require().Equal(utils.ParseCoin("6000000pool1-1").Amount, lpData.QueuedLiquidityProviders[1].SupplyProvided[0].Amount) - s.Require().Equal(utils.ParseCoin("10000000pool1-1").Denom, lpData.LiquidityProviders[liquidityProvider1.String()].Coins[0].Denom) - s.Require().Equal(utils.ParseCoin("10000000pool1-1").Amount, lpData.LiquidityProviders[liquidityProvider1.String()].Coins[0].Amount) + afs = s.keeper.GetAllActiveFarmers(s.ctx, appID1, pool.Id) + qfs = s.keeper.GetAllQueuedFarmers(s.ctx, appID1, pool.Id) + s.Require().Len(qfs, 2) + s.Require().Len(afs, 1) + s.Require().Equal(utils.ParseCoin("7000000pool1-1").Denom, qfs[1].QueudCoins[0].FarmedPoolCoin.Denom) + s.Require().Equal(utils.ParseCoin("7000000pool1-1").Amount, qfs[1].QueudCoins[0].FarmedPoolCoin.Amount) + s.Require().Equal(utils.ParseCoin("6000000pool1-1").Denom, qfs[0].QueudCoins[0].FarmedPoolCoin.Denom) + s.Require().Equal(utils.ParseCoin("6000000pool1-1").Amount, qfs[0].QueudCoins[0].FarmedPoolCoin.Amount) + s.Require().Equal(utils.ParseCoin("10000000pool1-1").Denom, afs[0].FarmedPoolCoin.Denom) + s.Require().Equal(utils.ParseCoin("10000000pool1-1").Amount, afs[0].FarmedPoolCoin.Amount) // Before // SortedByTimeFarmQueue -> [(l2) 7000000pool1-1, (l1) 6000000pool1-1] @@ -576,54 +558,58 @@ func (s *KeeperTestSuite) TestSoftUnlockTokensTwo() { // After // SortedByTimeFarmQueue -> [(l2) 7000000pool1-1] // ActiveFarmedTokens -> [ (l1) 8000000pool1-1] - msgUnlock = types.NewMsgSoftUnlock(appID1, liquidityProvider1, pool.Id, utils.ParseCoin("8000000pool1-1")) - err = s.keeper.SoftUnlockTokens(s.ctx, msgUnlock) + msgUnlock = types.NewMsgUnfarm(appID1, pool.Id, liquidityProvider1, utils.ParseCoin("8000000pool1-1")) + err = s.keeper.Unfarm(s.ctx, msgUnlock) s.Require().NoError(err) - lpData, found = s.keeper.GetPoolLiquidityProvidersData(s.ctx, appID1, pool.Id) - s.Require().True(found) - s.Require().Len(lpData.QueuedLiquidityProviders, 1) - s.Require().Len(lpData.LiquidityProviders, 1) - s.Require().Equal(utils.ParseCoin("7000000pool1-1").Denom, lpData.QueuedLiquidityProviders[0].SupplyProvided[0].Denom) - s.Require().Equal(utils.ParseCoin("7000000pool1-1").Amount, lpData.QueuedLiquidityProviders[0].SupplyProvided[0].Amount) - s.Require().Equal(utils.ParseCoin("8000000pool1-1").Denom, lpData.LiquidityProviders[liquidityProvider1.String()].Coins[0].Denom) - s.Require().Equal(utils.ParseCoin("8000000pool1-1").Amount, lpData.LiquidityProviders[liquidityProvider1.String()].Coins[0].Amount) + afs = s.keeper.GetAllActiveFarmers(s.ctx, appID1, pool.Id) + qfs = s.keeper.GetAllQueuedFarmers(s.ctx, appID1, pool.Id) + s.Require().Len(qfs, 2) + s.Require().Len(afs, 1) + s.Require().Equal(utils.ParseCoin("7000000pool1-1").Denom, qfs[1].QueudCoins[0].FarmedPoolCoin.Denom) + s.Require().Equal(utils.ParseCoin("7000000pool1-1").Amount, qfs[1].QueudCoins[0].FarmedPoolCoin.Amount) + s.Require().Equal(utils.ParseCoin("8000000pool1-1").Denom, afs[0].FarmedPoolCoin.Denom) + s.Require().Equal(utils.ParseCoin("8000000pool1-1").Amount, afs[0].FarmedPoolCoin.Amount) s.ctx = s.ctx.WithBlockTime(s.ctx.BlockTime().Add(types.DefaultFarmingQueueDuration).Add(time.Minute * 1)) s.nextBlock() // Now // SortedByTimeFarmQueue -> [] // ActiveFarmedTokens -> [ (l1) 8000000pool1-1, (l2) 7000000pool1-1] - lpData, found = s.keeper.GetPoolLiquidityProvidersData(s.ctx, appID1, pool.Id) - s.Require().True(found) - s.Require().Len(lpData.QueuedLiquidityProviders, 0) - s.Require().Len(lpData.LiquidityProviders, 2) - s.Require().Equal(utils.ParseCoin("8000000pool1-1").Denom, lpData.LiquidityProviders[liquidityProvider1.String()].Coins[0].Denom) - s.Require().Equal(utils.ParseCoin("8000000pool1-1").Amount, lpData.LiquidityProviders[liquidityProvider1.String()].Coins[0].Amount) - - s.Require().Equal(utils.ParseCoin("7000000pool1-1").Denom, lpData.LiquidityProviders[liquidityProvider2.String()].Coins[0].Denom) - s.Require().Equal(utils.ParseCoin("7000000pool1-1").Amount, lpData.LiquidityProviders[liquidityProvider2.String()].Coins[0].Amount) + afs = s.keeper.GetAllActiveFarmers(s.ctx, appID1, pool.Id) + qfs = s.keeper.GetAllQueuedFarmers(s.ctx, appID1, pool.Id) + s.Require().Len(qfs, 2) + s.Require().Len(qfs[1].QueudCoins, 0) + s.Require().Len(qfs[0].QueudCoins, 0) + s.Require().Len(afs, 2) + s.Require().Equal(utils.ParseCoin("8000000pool1-1").Denom, afs[0].FarmedPoolCoin.Denom) + s.Require().Equal(utils.ParseCoin("8000000pool1-1").Amount, afs[0].FarmedPoolCoin.Amount) + + s.Require().Equal(utils.ParseCoin("7000000pool1-1").Denom, afs[1].FarmedPoolCoin.Denom) + s.Require().Equal(utils.ParseCoin("7000000pool1-1").Amount, afs[1].FarmedPoolCoin.Amount) // total unlock - lp1 - msgUnlock = types.NewMsgSoftUnlock(appID1, liquidityProvider1, pool.Id, utils.ParseCoin("8000000pool1-1")) - err = s.keeper.SoftUnlockTokens(s.ctx, msgUnlock) + msgUnlock = types.NewMsgUnfarm(appID1, pool.Id, liquidityProvider1, utils.ParseCoin("8000000pool1-1")) + err = s.keeper.Unfarm(s.ctx, msgUnlock) s.Require().NoError(err) // total unlock - lp2 - msgUnlock = types.NewMsgSoftUnlock(appID1, liquidityProvider2, pool.Id, utils.ParseCoin("7000000pool1-1")) - err = s.keeper.SoftUnlockTokens(s.ctx, msgUnlock) + msgUnlock = types.NewMsgUnfarm(appID1, pool.Id, liquidityProvider2, utils.ParseCoin("7000000pool1-1")) + err = s.keeper.Unfarm(s.ctx, msgUnlock) s.Require().NoError(err) // SortedByTimeFarmQueue -> [] // ActiveFarmedTokens -> [ (l1) 0pool1-1, (l2) 0pool1-1] - lpData, found = s.keeper.GetPoolLiquidityProvidersData(s.ctx, appID1, pool.Id) - s.Require().True(found) - s.Require().Len(lpData.QueuedLiquidityProviders, 0) - s.Require().Len(lpData.LiquidityProviders, 2) - s.Require().Equal(utils.ParseCoin("0pool1-1").Denom, lpData.LiquidityProviders[liquidityProvider1.String()].Coins[0].Denom) - s.Require().Equal(utils.ParseCoin("0pool1-1").Amount, lpData.LiquidityProviders[liquidityProvider1.String()].Coins[0].Amount) - - s.Require().Equal(utils.ParseCoin("0pool1-1").Denom, lpData.LiquidityProviders[liquidityProvider2.String()].Coins[0].Denom) - s.Require().Equal(utils.ParseCoin("0pool1-1").Amount, lpData.LiquidityProviders[liquidityProvider2.String()].Coins[0].Amount) + afs = s.keeper.GetAllActiveFarmers(s.ctx, appID1, pool.Id) + qfs = s.keeper.GetAllQueuedFarmers(s.ctx, appID1, pool.Id) + s.Require().Len(qfs, 2) + s.Require().Len(qfs[1].QueudCoins, 0) + s.Require().Len(qfs[0].QueudCoins, 0) + s.Require().Len(afs, 2) + s.Require().Equal(utils.ParseCoin("0pool1-1").Denom, afs[0].FarmedPoolCoin.Denom) + s.Require().Equal(utils.ParseCoin("0pool1-1").Amount, afs[0].FarmedPoolCoin.Amount) + + s.Require().Equal(utils.ParseCoin("0pool1-1").Denom, afs[1].FarmedPoolCoin.Denom) + s.Require().Equal(utils.ParseCoin("0pool1-1").Amount, afs[1].FarmedPoolCoin.Amount) s.Require().True(utils.ParseCoins("10000000000pool1-1").IsEqual(s.getBalances(liquidityProvider1))) s.Require().True(utils.ParseCoins("9999999999pool1-1").IsEqual(s.getBalances(liquidityProvider2))) @@ -636,7 +622,7 @@ func (s *KeeperTestSuite) TestGetFarmingRewardsDataLinearLPs() { creator := s.addr(0) - appID1 := s.CreateNewApp("appOne") + appID1 := s.CreateNewApp("appone") asset1 := s.CreateNewAsset("ASSET1", "uasset1", 1000000) asset2 := s.CreateNewAsset("ASSET2", "uasset2", 1000000) @@ -648,48 +634,50 @@ func (s *KeeperTestSuite) TestGetFarmingRewardsDataLinearLPs() { s.Deposit(appID1, pool.Id, liquidityProvider1, "1000000000uasset1,1000000000uasset2") s.nextBlock() s.Require().True(utils.ParseCoins("10000000000pool1-1").IsEqual(s.getBalances(liquidityProvider1))) - msg := types.NewMsgSoftLock(appID1, liquidityProvider1, pool.Id, utils.ParseCoin("10000000000pool1-1")) - err := s.keeper.SoftLockTokens(s.ctx, msg) + msg := types.NewMsgFarm(appID1, pool.Id, liquidityProvider1, utils.ParseCoin("10000000000pool1-1")) + err := s.keeper.Farm(s.ctx, msg) s.Require().NoError(err) liquidityProvider2 := s.addr(2) s.Deposit(appID1, pool.Id, liquidityProvider2, "2000000000uasset1,2000000000uasset2") s.nextBlock() s.Require().True(utils.ParseCoins("19999999999pool1-1").IsEqual(s.getBalances(liquidityProvider2))) - msg = types.NewMsgSoftLock(appID1, liquidityProvider2, pool.Id, utils.ParseCoin("19999999999pool1-1")) - err = s.keeper.SoftLockTokens(s.ctx, msg) + msg = types.NewMsgFarm(appID1, pool.Id, liquidityProvider2, utils.ParseCoin("19999999999pool1-1")) + err = s.keeper.Farm(s.ctx, msg) s.Require().NoError(err) liquidityProvider3 := s.addr(3) s.Deposit(appID1, pool.Id, liquidityProvider3, "3000000000uasset1,3000000000uasset2") s.nextBlock() s.Require().True(utils.ParseCoins("29999999999pool1-1").IsEqual(s.getBalances(liquidityProvider3))) - msg = types.NewMsgSoftLock(appID1, liquidityProvider3, pool.Id, utils.ParseCoin("29999999999pool1-1")) - err = s.keeper.SoftLockTokens(s.ctx, msg) + msg = types.NewMsgFarm(appID1, pool.Id, liquidityProvider3, utils.ParseCoin("29999999999pool1-1")) + err = s.keeper.Farm(s.ctx, msg) s.Require().NoError(err) liquidityProvider4 := s.addr(4) s.Deposit(appID1, pool.Id, liquidityProvider4, "4000000000uasset1,4000000000uasset2") s.nextBlock() s.Require().True(utils.ParseCoins("39999999999pool1-1").IsEqual(s.getBalances(liquidityProvider4))) - msg = types.NewMsgSoftLock(appID1, liquidityProvider4, pool.Id, utils.ParseCoin("39999999999pool1-1")) - err = s.keeper.SoftLockTokens(s.ctx, msg) + msg = types.NewMsgFarm(appID1, pool.Id, liquidityProvider4, utils.ParseCoin("39999999999pool1-1")) + err = s.keeper.Farm(s.ctx, msg) s.Require().NoError(err) - lpData, found := s.keeper.GetPoolLiquidityProvidersData(s.ctx, appID1, pool.Id) - s.Require().True(found) - s.Require().Equal(appID1, lpData.AppId) - s.Require().Equal(pool.Id, lpData.PoolId) - s.Require().Len(lpData.QueuedLiquidityProviders, 4) - s.Require().Len(lpData.LiquidityProviders, 0) + afs := s.keeper.GetAllActiveFarmers(s.ctx, appID1, pool.Id) + qfs := s.keeper.GetAllQueuedFarmers(s.ctx, appID1, pool.Id) + s.Require().Len(qfs, 4) + s.Require().Len(afs, 0) s.ctx = s.ctx.WithBlockTime(s.ctx.BlockTime().Add(types.DefaultFarmingQueueDuration).Add(time.Minute * 10)) s.nextBlock() - lpData, found = s.keeper.GetPoolLiquidityProvidersData(s.ctx, appID1, pool.Id) - s.Require().True(found) - s.Require().Len(lpData.QueuedLiquidityProviders, 0) - s.Require().Len(lpData.LiquidityProviders, 4) + afs = s.keeper.GetAllActiveFarmers(s.ctx, appID1, pool.Id) + qfs = s.keeper.GetAllQueuedFarmers(s.ctx, appID1, pool.Id) + s.Require().Len(qfs, 4) + s.Require().Len(qfs[0].QueudCoins, 0) + s.Require().Len(qfs[1].QueudCoins, 0) + s.Require().Len(qfs[2].QueudCoins, 0) + s.Require().Len(qfs[3].QueudCoins, 0) + s.Require().Len(afs, 4) liquidityGauge := rewardtypes.LiquidtyGaugeMetaData{ PoolId: pool.Id, @@ -739,7 +727,7 @@ func (s *KeeperTestSuite) TestGetFarmingRewardsDataEqualLPs() { creator := s.addr(0) - appID1 := s.CreateNewApp("appOne") + appID1 := s.CreateNewApp("appone") asset1 := s.CreateNewAsset("ASSET1", "uasset1", 1000000) asset2 := s.CreateNewAsset("ASSET2", "uasset2", 1000000) @@ -751,48 +739,50 @@ func (s *KeeperTestSuite) TestGetFarmingRewardsDataEqualLPs() { s.Deposit(appID1, pool.Id, liquidityProvider1, "1000000000uasset1,1000000000uasset2") s.nextBlock() s.Require().True(utils.ParseCoins("10000000000pool1-1").IsEqual(s.getBalances(liquidityProvider1))) - msg := types.NewMsgSoftLock(appID1, liquidityProvider1, pool.Id, utils.ParseCoin("10000000000pool1-1")) - err := s.keeper.SoftLockTokens(s.ctx, msg) + msg := types.NewMsgFarm(appID1, pool.Id, liquidityProvider1, utils.ParseCoin("10000000000pool1-1")) + err := s.keeper.Farm(s.ctx, msg) s.Require().NoError(err) liquidityProvider2 := s.addr(2) s.Deposit(appID1, pool.Id, liquidityProvider2, "1000000000uasset1,1000000000uasset2") s.nextBlock() s.Require().True(utils.ParseCoins("9999999999pool1-1").IsEqual(s.getBalances(liquidityProvider2))) - msg = types.NewMsgSoftLock(appID1, liquidityProvider2, pool.Id, utils.ParseCoin("9999999999pool1-1")) - err = s.keeper.SoftLockTokens(s.ctx, msg) + msg = types.NewMsgFarm(appID1, pool.Id, liquidityProvider2, utils.ParseCoin("9999999999pool1-1")) + err = s.keeper.Farm(s.ctx, msg) s.Require().NoError(err) liquidityProvider3 := s.addr(3) s.Deposit(appID1, pool.Id, liquidityProvider3, "1000000000uasset1,1000000000uasset2") s.nextBlock() s.Require().True(utils.ParseCoins("9999999999pool1-1").IsEqual(s.getBalances(liquidityProvider3))) - msg = types.NewMsgSoftLock(appID1, liquidityProvider3, pool.Id, utils.ParseCoin("9999999999pool1-1")) - err = s.keeper.SoftLockTokens(s.ctx, msg) + msg = types.NewMsgFarm(appID1, pool.Id, liquidityProvider3, utils.ParseCoin("9999999999pool1-1")) + err = s.keeper.Farm(s.ctx, msg) s.Require().NoError(err) liquidityProvider4 := s.addr(4) s.Deposit(appID1, pool.Id, liquidityProvider4, "1000000000uasset1,1000000000uasset2") s.nextBlock() s.Require().True(utils.ParseCoins("9999999999pool1-1").IsEqual(s.getBalances(liquidityProvider4))) - msg = types.NewMsgSoftLock(appID1, liquidityProvider4, pool.Id, utils.ParseCoin("9999999999pool1-1")) - err = s.keeper.SoftLockTokens(s.ctx, msg) + msg = types.NewMsgFarm(appID1, pool.Id, liquidityProvider4, utils.ParseCoin("9999999999pool1-1")) + err = s.keeper.Farm(s.ctx, msg) s.Require().NoError(err) - lpData, found := s.keeper.GetPoolLiquidityProvidersData(s.ctx, appID1, pool.Id) - s.Require().True(found) - s.Require().Equal(appID1, lpData.AppId) - s.Require().Equal(pool.Id, lpData.PoolId) - s.Require().Len(lpData.QueuedLiquidityProviders, 4) - s.Require().Len(lpData.LiquidityProviders, 0) + afs := s.keeper.GetAllActiveFarmers(s.ctx, appID1, pool.Id) + qfs := s.keeper.GetAllQueuedFarmers(s.ctx, appID1, pool.Id) + s.Require().Len(qfs, 4) + s.Require().Len(afs, 0) s.ctx = s.ctx.WithBlockTime(s.ctx.BlockTime().Add(types.DefaultFarmingQueueDuration).Add(time.Minute * 10)) s.nextBlock() - lpData, found = s.keeper.GetPoolLiquidityProvidersData(s.ctx, appID1, pool.Id) - s.Require().True(found) - s.Require().Len(lpData.QueuedLiquidityProviders, 0) - s.Require().Len(lpData.LiquidityProviders, 4) + afs = s.keeper.GetAllActiveFarmers(s.ctx, appID1, pool.Id) + qfs = s.keeper.GetAllQueuedFarmers(s.ctx, appID1, pool.Id) + s.Require().Len(qfs, 4) + s.Require().Len(qfs[0].QueudCoins, 0) + s.Require().Len(qfs[1].QueudCoins, 0) + s.Require().Len(qfs[2].QueudCoins, 0) + s.Require().Len(qfs[3].QueudCoins, 0) + s.Require().Len(afs, 4) liquidityGauge := rewardtypes.LiquidtyGaugeMetaData{ PoolId: pool.Id, @@ -842,7 +832,7 @@ func (s *KeeperTestSuite) TestGetFarmingRewardsDataNoLPs() { creator := s.addr(0) - appID1 := s.CreateNewApp("appOne") + appID1 := s.CreateNewApp("appone") asset1 := s.CreateNewAsset("ASSET1", "uasset1", 1000000) asset2 := s.CreateNewAsset("ASSET2", "uasset2", 1000000) @@ -850,8 +840,10 @@ func (s *KeeperTestSuite) TestGetFarmingRewardsDataNoLPs() { pair := s.CreateNewLiquidityPair(appID1, creator, asset1.Denom, asset2.Denom) pool := s.CreateNewLiquidityPool(appID1, pair.Id, creator, "1000000000000uasset1,1000000000000uasset2") - _, found := s.keeper.GetPoolLiquidityProvidersData(s.ctx, appID1, pool.Id) - s.Require().False(found) + afs := s.keeper.GetAllActiveFarmers(s.ctx, appID1, pool.Id) + qfs := s.keeper.GetAllQueuedFarmers(s.ctx, appID1, pool.Id) + s.Require().Len(qfs, 0) + s.Require().Len(afs, 0) s.ctx = s.ctx.WithBlockTime(s.ctx.BlockTime().Add(types.DefaultFarmingQueueDuration).Add(time.Minute * 10)) s.nextBlock() @@ -886,7 +878,7 @@ func (s *KeeperTestSuite) TestGetFarmingRewardsDataEqualLPsWChildPool() { creator := s.addr(0) - appID1 := s.CreateNewApp("appOne") + appID1 := s.CreateNewApp("appone") asset1 := s.CreateNewAsset("ASSET1", "uasset1", 1000000) asset2 := s.CreateNewAsset("ASSET2", "uasset2", 1000000) @@ -902,8 +894,8 @@ func (s *KeeperTestSuite) TestGetFarmingRewardsDataEqualLPsWChildPool() { s.Deposit(appID1, pool.Id, liquidityProvider1, "1000000000uasset1,1000000000uasset2") s.nextBlock() s.Require().True(utils.ParseCoins("10000000000pool1-1").IsEqual(s.getBalances(liquidityProvider1))) - msg := types.NewMsgSoftLock(appID1, liquidityProvider1, pool.Id, utils.ParseCoin("10000000000pool1-1")) - err := s.keeper.SoftLockTokens(s.ctx, msg) + msg := types.NewMsgFarm(appID1, pool.Id, liquidityProvider1, utils.ParseCoin("10000000000pool1-1")) + err := s.keeper.Farm(s.ctx, msg) s.Require().NoError(err) // lp2 - farming in master pool and child pool (eligible for masterpool type reward) @@ -913,11 +905,11 @@ func (s *KeeperTestSuite) TestGetFarmingRewardsDataEqualLPsWChildPool() { s.Deposit(appID1, pool2.Id, liquidityProvider2, "1000000000uasset1,1000000000uasset2") s.nextBlock() s.Require().True(utils.ParseCoins("9999999999pool1-1,10000000000pool1-2").IsEqual(s.getBalances(liquidityProvider2))) - msg = types.NewMsgSoftLock(appID1, liquidityProvider2, pool.Id, utils.ParseCoin("9999999999pool1-1")) - err = s.keeper.SoftLockTokens(s.ctx, msg) + msg = types.NewMsgFarm(appID1, pool.Id, liquidityProvider2, utils.ParseCoin("9999999999pool1-1")) + err = s.keeper.Farm(s.ctx, msg) s.Require().NoError(err) - msg = types.NewMsgSoftLock(appID1, liquidityProvider2, pool2.Id, utils.ParseCoin("10000000000pool1-2")) - err = s.keeper.SoftLockTokens(s.ctx, msg) + msg = types.NewMsgFarm(appID1, pool2.Id, liquidityProvider2, utils.ParseCoin("10000000000pool1-2")) + err = s.keeper.Farm(s.ctx, msg) s.Require().NoError(err) // lp3 - farming only in master pool, not child pool (not eligible for masterpool type reward) @@ -925,8 +917,8 @@ func (s *KeeperTestSuite) TestGetFarmingRewardsDataEqualLPsWChildPool() { s.Deposit(appID1, pool.Id, liquidityProvider3, "1000000000uasset1,1000000000uasset2") s.nextBlock() s.Require().True(utils.ParseCoins("9999999999pool1-1").IsEqual(s.getBalances(liquidityProvider3))) - msg = types.NewMsgSoftLock(appID1, liquidityProvider3, pool.Id, utils.ParseCoin("9999999999pool1-1")) - err = s.keeper.SoftLockTokens(s.ctx, msg) + msg = types.NewMsgFarm(appID1, pool.Id, liquidityProvider3, utils.ParseCoin("9999999999pool1-1")) + err = s.keeper.Farm(s.ctx, msg) s.Require().NoError(err) // lp4 - farming in master pool and child pool (eligible for masterpool type reward) @@ -936,39 +928,41 @@ func (s *KeeperTestSuite) TestGetFarmingRewardsDataEqualLPsWChildPool() { s.Deposit(appID1, pool2.Id, liquidityProvider4, "1000000000uasset1,1000000000uasset2") s.nextBlock() s.Require().True(utils.ParseCoins("9999999999pool1-1,9999999999pool1-2").IsEqual(s.getBalances(liquidityProvider4))) - msg = types.NewMsgSoftLock(appID1, liquidityProvider4, pool.Id, utils.ParseCoin("9999999999pool1-1")) - err = s.keeper.SoftLockTokens(s.ctx, msg) + msg = types.NewMsgFarm(appID1, pool.Id, liquidityProvider4, utils.ParseCoin("9999999999pool1-1")) + err = s.keeper.Farm(s.ctx, msg) s.Require().NoError(err) - msg = types.NewMsgSoftLock(appID1, liquidityProvider4, pool2.Id, utils.ParseCoin("9999999999pool1-2")) - err = s.keeper.SoftLockTokens(s.ctx, msg) + msg = types.NewMsgFarm(appID1, pool2.Id, liquidityProvider4, utils.ParseCoin("9999999999pool1-2")) + err = s.keeper.Farm(s.ctx, msg) s.Require().NoError(err) - lpData, found := s.keeper.GetPoolLiquidityProvidersData(s.ctx, appID1, pool.Id) - s.Require().True(found) - s.Require().Equal(appID1, lpData.AppId) - s.Require().Equal(pool.Id, lpData.PoolId) - s.Require().Len(lpData.QueuedLiquidityProviders, 4) - s.Require().Len(lpData.LiquidityProviders, 0) + afs := s.keeper.GetAllActiveFarmers(s.ctx, appID1, pool.Id) + qfs := s.keeper.GetAllQueuedFarmers(s.ctx, appID1, pool.Id) + s.Require().Len(qfs, 4) + s.Require().Len(afs, 0) - lpData, found = s.keeper.GetPoolLiquidityProvidersData(s.ctx, appID1, pool2.Id) - s.Require().True(found) - s.Require().Equal(appID1, lpData.AppId) - s.Require().Equal(pool2.Id, lpData.PoolId) - s.Require().Len(lpData.QueuedLiquidityProviders, 2) - s.Require().Len(lpData.LiquidityProviders, 0) + afs = s.keeper.GetAllActiveFarmers(s.ctx, appID1, pool2.Id) + qfs = s.keeper.GetAllQueuedFarmers(s.ctx, appID1, pool2.Id) + s.Require().Len(qfs, 2) + s.Require().Len(afs, 0) s.ctx = s.ctx.WithBlockTime(s.ctx.BlockTime().Add(types.DefaultFarmingQueueDuration).Add(time.Minute * 10)) s.nextBlock() - lpData, found = s.keeper.GetPoolLiquidityProvidersData(s.ctx, appID1, pool.Id) - s.Require().True(found) - s.Require().Len(lpData.QueuedLiquidityProviders, 0) - s.Require().Len(lpData.LiquidityProviders, 4) - - lpData, found = s.keeper.GetPoolLiquidityProvidersData(s.ctx, appID1, pool2.Id) - s.Require().True(found) - s.Require().Len(lpData.QueuedLiquidityProviders, 0) - s.Require().Len(lpData.LiquidityProviders, 2) + afs = s.keeper.GetAllActiveFarmers(s.ctx, appID1, pool.Id) + qfs = s.keeper.GetAllQueuedFarmers(s.ctx, appID1, pool.Id) + s.Require().Len(qfs, 4) + s.Require().Len(qfs[0].QueudCoins, 0) + s.Require().Len(qfs[1].QueudCoins, 0) + s.Require().Len(qfs[2].QueudCoins, 0) + s.Require().Len(qfs[3].QueudCoins, 0) + s.Require().Len(afs, 4) + + afs = s.keeper.GetAllActiveFarmers(s.ctx, appID1, pool2.Id) + qfs = s.keeper.GetAllQueuedFarmers(s.ctx, appID1, pool2.Id) + s.Require().Len(qfs, 2) + s.Require().Len(qfs[0].QueudCoins, 0) + s.Require().Len(qfs[1].QueudCoins, 0) + s.Require().Len(afs, 2) liquidityGauge := rewardtypes.LiquidtyGaugeMetaData{ PoolId: pool.Id, @@ -1034,7 +1028,7 @@ func (s *KeeperTestSuite) TestGetFarmingRewardsDataErrorHandellings() { creator := s.addr(0) - appID1 := s.CreateNewApp("appOne") + appID1 := s.CreateNewApp("appone") asset1 := s.CreateNewAsset("ASSET1", "uasset1", 1000000) asset2 := s.CreateNewAsset("ASSET2", "uasset2", 1000000) @@ -1047,8 +1041,8 @@ func (s *KeeperTestSuite) TestGetFarmingRewardsDataErrorHandellings() { s.Deposit(appID1, pool.Id, liquidityProvider1, "1000000000uasset1,1000000000uasset2") s.nextBlock() s.Require().True(utils.ParseCoins("10000000000pool1-1").IsEqual(s.getBalances(liquidityProvider1))) - msg := types.NewMsgSoftLock(appID1, liquidityProvider1, pool.Id, utils.ParseCoin("10000000000pool1-1")) - err := s.keeper.SoftLockTokens(s.ctx, msg) + msg := types.NewMsgFarm(appID1, pool.Id, liquidityProvider1, utils.ParseCoin("10000000000pool1-1")) + err := s.keeper.Farm(s.ctx, msg) s.Require().NoError(err) s.sendCoins(pool.GetReserveAddress(), creator, s.getBalances(pool.GetReserveAddress())) @@ -1079,7 +1073,7 @@ func (s *KeeperTestSuite) TestGetFarmingRewardsDataZeroLPs() { creator := s.addr(0) - appID1 := s.CreateNewApp("appOne") + appID1 := s.CreateNewApp("appone") asset1 := s.CreateNewAsset("ASSET1", "uasset1", 1000000) asset2 := s.CreateNewAsset("ASSET2", "uasset2", 1000000) @@ -1091,60 +1085,62 @@ func (s *KeeperTestSuite) TestGetFarmingRewardsDataZeroLPs() { s.Deposit(appID1, pool.Id, liquidityProvider1, "1000000000uasset1,1000000000uasset2") s.nextBlock() s.Require().True(utils.ParseCoins("10000000000pool1-1").IsEqual(s.getBalances(liquidityProvider1))) - msg := types.NewMsgSoftLock(appID1, liquidityProvider1, pool.Id, utils.ParseCoin("10000000000pool1-1")) - err := s.keeper.SoftLockTokens(s.ctx, msg) + msg := types.NewMsgFarm(appID1, pool.Id, liquidityProvider1, utils.ParseCoin("10000000000pool1-1")) + err := s.keeper.Farm(s.ctx, msg) s.Require().NoError(err) liquidityProvider2 := s.addr(2) s.Deposit(appID1, pool.Id, liquidityProvider2, "1000000000uasset1,1000000000uasset2") s.nextBlock() s.Require().True(utils.ParseCoins("9999999999pool1-1").IsEqual(s.getBalances(liquidityProvider2))) - msg = types.NewMsgSoftLock(appID1, liquidityProvider2, pool.Id, utils.ParseCoin("9999999999pool1-1")) - err = s.keeper.SoftLockTokens(s.ctx, msg) + msg = types.NewMsgFarm(appID1, pool.Id, liquidityProvider2, utils.ParseCoin("9999999999pool1-1")) + err = s.keeper.Farm(s.ctx, msg) s.Require().NoError(err) liquidityProvider3 := s.addr(3) s.Deposit(appID1, pool.Id, liquidityProvider3, "1000000000uasset1,1000000000uasset2") s.nextBlock() s.Require().True(utils.ParseCoins("9999999999pool1-1").IsEqual(s.getBalances(liquidityProvider3))) - msg = types.NewMsgSoftLock(appID1, liquidityProvider3, pool.Id, utils.ParseCoin("9999999999pool1-1")) - err = s.keeper.SoftLockTokens(s.ctx, msg) + msg = types.NewMsgFarm(appID1, pool.Id, liquidityProvider3, utils.ParseCoin("9999999999pool1-1")) + err = s.keeper.Farm(s.ctx, msg) s.Require().NoError(err) liquidityProvider4 := s.addr(4) s.Deposit(appID1, pool.Id, liquidityProvider4, "1000000000uasset1,1000000000uasset2") s.nextBlock() s.Require().True(utils.ParseCoins("9999999999pool1-1").IsEqual(s.getBalances(liquidityProvider4))) - msg = types.NewMsgSoftLock(appID1, liquidityProvider4, pool.Id, utils.ParseCoin("9999999999pool1-1")) - err = s.keeper.SoftLockTokens(s.ctx, msg) + msg = types.NewMsgFarm(appID1, pool.Id, liquidityProvider4, utils.ParseCoin("9999999999pool1-1")) + err = s.keeper.Farm(s.ctx, msg) s.Require().NoError(err) - lpData, found := s.keeper.GetPoolLiquidityProvidersData(s.ctx, appID1, pool.Id) - s.Require().True(found) - s.Require().Equal(appID1, lpData.AppId) - s.Require().Equal(pool.Id, lpData.PoolId) - s.Require().Len(lpData.QueuedLiquidityProviders, 4) - s.Require().Len(lpData.LiquidityProviders, 0) + afs := s.keeper.GetAllActiveFarmers(s.ctx, appID1, pool.Id) + qfs := s.keeper.GetAllQueuedFarmers(s.ctx, appID1, pool.Id) + s.Require().Len(qfs, 4) + s.Require().Len(afs, 0) s.ctx = s.ctx.WithBlockTime(s.ctx.BlockTime().Add(types.DefaultFarmingQueueDuration).Add(time.Minute * 10)) s.nextBlock() - lpData, found = s.keeper.GetPoolLiquidityProvidersData(s.ctx, appID1, pool.Id) - s.Require().True(found) - s.Require().Len(lpData.QueuedLiquidityProviders, 0) - s.Require().Len(lpData.LiquidityProviders, 4) - - msgUnlock := types.NewMsgSoftUnlock(appID1, liquidityProvider1, pool.Id, utils.ParseCoin("10000000000pool1-1")) - err = s.keeper.SoftUnlockTokens(s.ctx, msgUnlock) + afs = s.keeper.GetAllActiveFarmers(s.ctx, appID1, pool.Id) + qfs = s.keeper.GetAllQueuedFarmers(s.ctx, appID1, pool.Id) + s.Require().Len(qfs, 4) + s.Require().Len(qfs[0].QueudCoins, 0) + s.Require().Len(qfs[1].QueudCoins, 0) + s.Require().Len(qfs[2].QueudCoins, 0) + s.Require().Len(qfs[3].QueudCoins, 0) + s.Require().Len(afs, 4) + + msgUnlock := types.NewMsgUnfarm(appID1, pool.Id, liquidityProvider1, utils.ParseCoin("10000000000pool1-1")) + err = s.keeper.Unfarm(s.ctx, msgUnlock) s.Require().NoError(err) - msgUnlock = types.NewMsgSoftUnlock(appID1, liquidityProvider2, pool.Id, utils.ParseCoin("9999999999pool1-1")) - err = s.keeper.SoftUnlockTokens(s.ctx, msgUnlock) + msgUnlock = types.NewMsgUnfarm(appID1, pool.Id, liquidityProvider2, utils.ParseCoin("9999999999pool1-1")) + err = s.keeper.Unfarm(s.ctx, msgUnlock) s.Require().NoError(err) - msgUnlock = types.NewMsgSoftUnlock(appID1, liquidityProvider3, pool.Id, utils.ParseCoin("9999999999pool1-1")) - err = s.keeper.SoftUnlockTokens(s.ctx, msgUnlock) + msgUnlock = types.NewMsgUnfarm(appID1, pool.Id, liquidityProvider3, utils.ParseCoin("9999999999pool1-1")) + err = s.keeper.Unfarm(s.ctx, msgUnlock) s.Require().NoError(err) - msgUnlock = types.NewMsgSoftUnlock(appID1, liquidityProvider4, pool.Id, utils.ParseCoin("9999999999pool1-1")) - err = s.keeper.SoftUnlockTokens(s.ctx, msgUnlock) + msgUnlock = types.NewMsgUnfarm(appID1, pool.Id, liquidityProvider4, utils.ParseCoin("9999999999pool1-1")) + err = s.keeper.Unfarm(s.ctx, msgUnlock) s.Require().NoError(err) liquidityGauge := rewardtypes.LiquidtyGaugeMetaData{ diff --git a/x/liquidity/keeper/store.go b/x/liquidity/keeper/store.go index fb9dcfdb1..ea0b96841 100644 --- a/x/liquidity/keeper/store.go +++ b/x/liquidity/keeper/store.go @@ -600,24 +600,6 @@ func (k Keeper) DeleteOrderIndex(ctx sdk.Context, appID uint64, order types.Orde store.Delete(types.GetOrderIndexKey(appID, order.GetOrderer(), order.PairId, order.Id)) } -// GetPoolLiquidityProvidersData returns the liquidity providers data by pool id. -func (k Keeper) GetPoolLiquidityProvidersData(ctx sdk.Context, appID, poolID uint64) (liquidityProvidersData types.PoolLiquidityProvidersData, found bool) { - store := ctx.KVStore(k.storeKey) - bz := store.Get(types.GetPoolLiquidityProvidersDataKey(appID, poolID)) - if bz == nil { - return - } - liquidityProvidersData = types.MustUnmarshalPoolLiquidityProvidersData(k.cdc, bz) - return liquidityProvidersData, true -} - -// SetPoolLiquidityProvidersData sets the liquidity providers data by pool id. -func (k Keeper) SetPoolLiquidityProvidersData(ctx sdk.Context, liquidityProvidersData types.PoolLiquidityProvidersData) { - store := ctx.KVStore(k.storeKey) - bz := types.MustMarshalPoolLiquidityProvidersData(k.cdc, liquidityProvidersData) - store.Set(types.GetPoolLiquidityProvidersDataKey(liquidityProvidersData.AppId, liquidityProvidersData.PoolId), bz) -} - // GetGenericLiquidityParams returns the generic liquidity params by app id. func (k Keeper) GetGenericLiquidityParams(ctx sdk.Context, appID uint64) (genericLiquidityParams types.GenericParams, found bool) { store := ctx.KVStore(k.storeKey) @@ -635,3 +617,107 @@ func (k Keeper) SetGenericLiquidityParams(ctx sdk.Context, genericLiquidityParam bz := types.MustMarshalGenericLiquidityParams(k.cdc, genericLiquidityParams) store.Set(types.GetGenericParamsKey(genericLiquidityParams.AppId), bz) } + +// SetActiveFarmer stores the active farmer. +func (k Keeper) SetActiveFarmer(ctx sdk.Context, activeFarmer types.ActiveFarmer) { + store := ctx.KVStore(k.storeKey) + bz := types.MustMarshalActiveFarmer(k.cdc, activeFarmer) + store.Set(types.GetActiveFarmerKey(activeFarmer.AppId, activeFarmer.PoolId, sdk.MustAccAddressFromBech32(activeFarmer.Farmer)), bz) +} + +// GetActiveFarmer returns active farmer object for the given app id, pool id and farmer. +func (k Keeper) GetActiveFarmer(ctx sdk.Context, appID, poolID uint64, farmer sdk.AccAddress) (activeFarmer types.ActiveFarmer, found bool) { + store := ctx.KVStore(k.storeKey) + bz := store.Get(types.GetActiveFarmerKey(appID, poolID, farmer)) + if bz == nil { + return + } + activeFarmer = types.MustUnmarshalActiveFarmer(k.cdc, bz) + return activeFarmer, true +} + +// IterateAllActiveFarmers iterates over all the stored active farmers and performs a callback function. +// Stops iteration when callback returns true. +func (k Keeper) IterateAllActiveFarmers(ctx sdk.Context, appID, poolID uint64, cb func(activeFarmer types.ActiveFarmer) (stop bool, err error)) error { + store := ctx.KVStore(k.storeKey) + iter := sdk.KVStorePrefixIterator(store, types.GetAllActiveFarmersKey(appID, poolID)) + defer func(iter sdk.Iterator) { + err := iter.Close() + if err != nil { + return + } + }(iter) + for ; iter.Valid(); iter.Next() { + activeFarmer := types.MustUnmarshalActiveFarmer(k.cdc, iter.Value()) + stop, err := cb(activeFarmer) + if err != nil { + return err + } + if stop { + break + } + } + return nil +} + +// GetAllActiveFarmers returns all active farmers in the store. +func (k Keeper) GetAllActiveFarmers(ctx sdk.Context, appID, poolID uint64) (activeFarmers []types.ActiveFarmer) { + activeFarmers = []types.ActiveFarmer{} + _ = k.IterateAllActiveFarmers(ctx, appID, poolID, func(activeFarmer types.ActiveFarmer) (stop bool, err error) { + activeFarmers = append(activeFarmers, activeFarmer) + return false, nil + }) + return activeFarmers +} + +// SetQueuedFarmer stores the queued farmer. +func (k Keeper) SetQueuedFarmer(ctx sdk.Context, queuedFarmer types.QueuedFarmer) { + store := ctx.KVStore(k.storeKey) + bz := types.MustMarshalQueuedFarmer(k.cdc, queuedFarmer) + store.Set(types.GetQueuedFarmerKey(queuedFarmer.AppId, queuedFarmer.PoolId, sdk.MustAccAddressFromBech32(queuedFarmer.Farmer)), bz) +} + +// GetQueuedFarmer returns queued farmer object for the given app id, pool id and farmer. +func (k Keeper) GetQueuedFarmer(ctx sdk.Context, appID, poolID uint64, farmer sdk.AccAddress) (queuedFarmer types.QueuedFarmer, found bool) { + store := ctx.KVStore(k.storeKey) + bz := store.Get(types.GetQueuedFarmerKey(appID, poolID, farmer)) + if bz == nil { + return + } + queuedFarmer = types.MustUnmarshalQueuedFarmer(k.cdc, bz) + return queuedFarmer, true +} + +// IterateAllQueuedFarmers iterates over all the stored queued farmers and performs a callback function. +// Stops iteration when callback returns true. +func (k Keeper) IterateAllQueuedFarmers(ctx sdk.Context, appID, poolID uint64, cb func(queuedFarmer types.QueuedFarmer) (stop bool, err error)) error { + store := ctx.KVStore(k.storeKey) + iter := sdk.KVStorePrefixIterator(store, types.GetAllQueuedFarmersKey(appID, poolID)) + defer func(iter sdk.Iterator) { + err := iter.Close() + if err != nil { + return + } + }(iter) + for ; iter.Valid(); iter.Next() { + queuedFarmer := types.MustUnmarshalQueuedFarmer(k.cdc, iter.Value()) + stop, err := cb(queuedFarmer) + if err != nil { + return err + } + if stop { + break + } + } + return nil +} + +// GetAllQueuedFarmers returns all queued farmers in the store. +func (k Keeper) GetAllQueuedFarmers(ctx sdk.Context, appID, poolID uint64) (queuedFarmers []types.QueuedFarmer) { + queuedFarmers = []types.QueuedFarmer{} + _ = k.IterateAllQueuedFarmers(ctx, appID, poolID, func(queuedFarmer types.QueuedFarmer) (stop bool, err error) { + queuedFarmers = append(queuedFarmers, queuedFarmer) + return false, nil + }) + return queuedFarmers +} diff --git a/x/liquidity/keeper/swap.go b/x/liquidity/keeper/swap.go index afcf8983d..3b4768eb4 100644 --- a/x/liquidity/keeper/swap.go +++ b/x/liquidity/keeper/swap.go @@ -289,6 +289,8 @@ func (k Keeper) CancelOrder(ctx sdk.Context, msg *types.MsgCancelOrder) error { return err } + ctx.GasMeter().ConsumeGas(types.CancelOrderGas, "CancelOrderGas") + ctx.EventManager().EmitEvents(sdk.Events{ sdk.NewEvent( types.EventTypeCancelOrder, @@ -357,6 +359,8 @@ func (k Keeper) CancelAllOrders(ctx sdk.Context, msg *types.MsgCancelAllOrders) } } + ctx.GasMeter().ConsumeGas(types.CancelAllOrdersGas, "CancelAllOrdersGas") + ctx.EventManager().EmitEvents(sdk.Events{ sdk.NewEvent( types.EventTypeCancelAllOrders, diff --git a/x/liquidity/keeper/swap_test.go b/x/liquidity/keeper/swap_test.go index a44d7b732..59cbff7df 100644 --- a/x/liquidity/keeper/swap_test.go +++ b/x/liquidity/keeper/swap_test.go @@ -15,7 +15,7 @@ import ( func (s *KeeperTestSuite) TestLimitOrder() { addr1 := s.addr(1) - appID1 := s.CreateNewApp("appOne") + appID1 := s.CreateNewApp("appone") asset1 := s.CreateNewAsset("ASSET1", "uasset1", 1000000) asset2 := s.CreateNewAsset("ASSET2", "uasset2", 2000000) @@ -316,7 +316,7 @@ func (s *KeeperTestSuite) TestLimitOrder() { func (s *KeeperTestSuite) TestLimitOrderRefund() { addr1 := s.addr(1) - appID1 := s.CreateNewApp("appOne") + appID1 := s.CreateNewApp("appone") asset1 := s.CreateNewAsset("ASSET1", "denom1", 1000000) asset2 := s.CreateNewAsset("ASSET2", "denom2", 2000000) @@ -397,7 +397,7 @@ func (s *KeeperTestSuite) TestLimitOrderRefund() { func (s *KeeperTestSuite) TestLimitOrderWithPoolSwap() { addr1 := s.addr(1) - appID1 := s.CreateNewApp("appOne") + appID1 := s.CreateNewApp("appone") asset1 := s.CreateNewAsset("ASSET1", "uasset1", 1000000) asset2 := s.CreateNewAsset("ASSET2", "uasset2", 2000000) @@ -654,7 +654,7 @@ func (s *KeeperTestSuite) TestLimitOrderWithoutPool() { addr1 := s.addr(1) dummyAcc := s.addr(696969) - appID1 := s.CreateNewApp("appOne") + appID1 := s.CreateNewApp("appone") asset1 := s.CreateNewAsset("ASSET1", "uasset1", 1000000) asset2 := s.CreateNewAsset("ASSET2", "uasset2", 2000000) @@ -901,7 +901,7 @@ func (s *KeeperTestSuite) TestMarketOrder() { trader := s.addr(2) // escrow := s.addr(3) - appID1 := s.CreateNewApp("appOne") + appID1 := s.CreateNewApp("appone") asset1 := s.CreateNewAsset("ASSET1", "uasset1", 1000000) asset2 := s.CreateNewAsset("ASSET2", "uasset2", 2000000) @@ -1180,7 +1180,7 @@ func (s *KeeperTestSuite) TestMarketOrder() { } func (s *KeeperTestSuite) TestMarketOrderTwo() { - appID1 := s.CreateNewApp("appOne") + appID1 := s.CreateNewApp("appone") asset1 := s.CreateNewAsset("ASSET1", "uasset1", 1000000) asset2 := s.CreateNewAsset("ASSET2", "uasset2", 2000000) @@ -1207,7 +1207,7 @@ func (s *KeeperTestSuite) TestMarketOrderTwo() { } func (s *KeeperTestSuite) TestMarketOrderRefund() { - appID1 := s.CreateNewApp("appOne") + appID1 := s.CreateNewApp("appone") asset1 := s.CreateNewAsset("ASSET1", "denom1", 1000000) asset2 := s.CreateNewAsset("ASSET2", "denom2", 2000000) @@ -1258,7 +1258,7 @@ func (s *KeeperTestSuite) TestMarketOrderRefund() { } func (s *KeeperTestSuite) TestMarketOrderWithNoLastPrice() { - appID1 := s.CreateNewApp("appOne") + appID1 := s.CreateNewApp("appone") asset1 := s.CreateNewAsset("ASSET1", "denom1", 1000000) asset2 := s.CreateNewAsset("ASSET2", "denom2", 2000000) @@ -1277,7 +1277,7 @@ func (s *KeeperTestSuite) TestMarketOrderWithNoLastPrice() { func (s *KeeperTestSuite) TestSingleOrderNoMatch() { k, ctx := s.keeper, s.ctx - appID1 := s.CreateNewApp("appOne") + appID1 := s.CreateNewApp("appone") asset1 := s.CreateNewAsset("ASSET1", "denom1", 1000000) asset2 := s.CreateNewAsset("ASSET2", "denom2", 2000000) @@ -1306,7 +1306,7 @@ func (s *KeeperTestSuite) TestSingleOrderNoMatch() { func (s *KeeperTestSuite) TestTwoOrderExactMatch() { k, ctx := s.keeper, s.ctx - appID1 := s.CreateNewApp("appOne") + appID1 := s.CreateNewApp("appone") asset1 := s.CreateNewAsset("ASSET1", "denom1", 1000000) asset2 := s.CreateNewAsset("ASSET2", "denom2", 2000000) @@ -1331,7 +1331,7 @@ func (s *KeeperTestSuite) TestTwoOrderExactMatch() { } func (s *KeeperTestSuite) TestPartialMatch() { - appID1 := s.CreateNewApp("appOne") + appID1 := s.CreateNewApp("appone") asset1 := s.CreateNewAsset("ASSET1", "denom1", 1000000) asset2 := s.CreateNewAsset("ASSET2", "denom2", 2000000) @@ -1358,7 +1358,7 @@ func (s *KeeperTestSuite) TestPartialMatch() { } func (s *KeeperTestSuite) TestMatchWithLowPricePool() { - appID1 := s.CreateNewApp("appOne") + appID1 := s.CreateNewApp("appone") asset1 := s.CreateNewAsset("ASSET1", "denom1", 1000000) asset2 := s.CreateNewAsset("ASSET2", "denom2", 2000000) @@ -1378,7 +1378,7 @@ func (s *KeeperTestSuite) TestCancelOrder() { creator := s.addr(0) dummy := s.addr(1) trader := s.addr(2) - appID1 := s.CreateNewApp("appOne") + appID1 := s.CreateNewApp("appone") asset1 := s.CreateNewAsset("ASSET1", "denom1", 1000000) asset2 := s.CreateNewAsset("ASSET2", "denom2", 2000000) @@ -1461,7 +1461,7 @@ func (s *KeeperTestSuite) TestCancelOrder() { func (s *KeeperTestSuite) TestCancelOrderTwo() { k, ctx := s.keeper, s.ctx - appID1 := s.CreateNewApp("appOne") + appID1 := s.CreateNewApp("appone") asset1 := s.CreateNewAsset("ASSET1", "denom1", 1000000) asset2 := s.CreateNewAsset("ASSET2", "denom2", 2000000) @@ -1495,7 +1495,7 @@ func (s *KeeperTestSuite) TestCancelOrderTwo() { } func (s *KeeperTestSuite) TestCancelAllOrders() { - appID1 := s.CreateNewApp("appOne") + appID1 := s.CreateNewApp("appone") asset1 := s.CreateNewAsset("ASSET1", "denom1", 1000000) asset2 := s.CreateNewAsset("ASSET2", "denom2", 2000000) @@ -1543,7 +1543,7 @@ func (s *KeeperTestSuite) TestSwapFeeCollectionWithoutPool() { buyer := s.addr(1) seller := s.addr(2) - appID1 := s.CreateNewApp("appOne") + appID1 := s.CreateNewApp("appone") asset1 := s.CreateNewAsset("ASSET1", "denom1", 1000000) asset2 := s.CreateNewAsset("ASSET2", "denom2", 2000000) @@ -1570,7 +1570,7 @@ func (s *KeeperTestSuite) TestSwapFeeCollectionWithPool() { buyer := s.addr(1) seller := s.addr(2) - appID1 := s.CreateNewApp("appOne") + appID1 := s.CreateNewApp("appone") asset1 := s.CreateNewAsset("ASSET1", "denom1", 1000000) asset2 := s.CreateNewAsset("ASSET2", "denom2", 2000000) @@ -1610,7 +1610,7 @@ func (s *KeeperTestSuite) TestSwapFeeCollectionMarketOrder() { trader1 := s.addr(2) trader2 := s.addr(3) - appID1 := s.CreateNewApp("appOne") + appID1 := s.CreateNewApp("appone") asset1 := s.CreateNewAsset("ASSET1", "denom1", 1000000) asset2 := s.CreateNewAsset("ASSET2", "denom2", 2000000) @@ -1646,7 +1646,7 @@ func (s *KeeperTestSuite) TestAccumulatedSwapFeeConversion() { trader1 := s.addr(1) trader2 := s.addr(2) - appID1 := s.CreateNewApp("appOne") + appID1 := s.CreateNewApp("appone") asset1 := s.CreateNewAsset("ASSET1", "ucmdx", 1000000) asset2 := s.CreateNewAsset("ASSET2", "uharbor", 1000000) diff --git a/x/liquidity/types/codec.go b/x/liquidity/types/codec.go index 3a558f4bb..62bf501dd 100644 --- a/x/liquidity/types/codec.go +++ b/x/liquidity/types/codec.go @@ -20,8 +20,8 @@ func RegisterLegacyAminoCodec(cdc *codec.LegacyAmino) { cdc.RegisterConcrete(&MsgMarketOrder{}, "comdex/liquidity/MsgMarketOrder", nil) cdc.RegisterConcrete(&MsgCancelOrder{}, "comdex/liquidity/MsgCancelOrder", nil) cdc.RegisterConcrete(&MsgCancelAllOrders{}, "comdex/liquidity/MsgCancelAllOrders", nil) - cdc.RegisterConcrete(&MsgTokensSoftLock{}, "comdex/liquidity/MsgTokensSoftLock", nil) - cdc.RegisterConcrete(&MsgTokensSoftUnlock{}, "comdex/liquidity/MsgTokensSoftUnlock", nil) + cdc.RegisterConcrete(&MsgFarm{}, "comdex/liquidity/Farm", nil) + cdc.RegisterConcrete(&MsgUnfarm{}, "comdex/liquidity/Unfarm", nil) cdc.RegisterConcrete(&UpdateGenericParamsProposal{}, "comdex/liquidity/UpdateGenericParamsProposal", nil) cdc.RegisterConcrete(&CreateNewLiquidityPairProposal{}, "comdex/liquidity/CreateNewLiquidityPairProposal", nil) } @@ -45,8 +45,8 @@ func RegisterInterfaces(registry cdctypes.InterfaceRegistry) { &MsgMarketOrder{}, &MsgCancelOrder{}, &MsgCancelAllOrders{}, - &MsgTokensSoftLock{}, - &MsgTokensSoftUnlock{}, + &MsgFarm{}, + &MsgUnfarm{}, ) msgservice.RegisterMsgServiceDesc(registry, &_Msg_serviceDesc) diff --git a/x/liquidity/types/errors.go b/x/liquidity/types/errors.go index 99d94cd66..358e84fdf 100644 --- a/x/liquidity/types/errors.go +++ b/x/liquidity/types/errors.go @@ -24,8 +24,8 @@ var ( ErrTooSmallOrder = sdkerrors.Register(ModuleName, 17, "too small order") ErrTooLargePool = sdkerrors.Register(ModuleName, 18, "too large pool") ErrInvalidPoolID = sdkerrors.Register(ModuleName, 19, "invalid pool id") - ErrNoSoftLockPresent = sdkerrors.Register(ModuleName, 20, "no soft lock created for given pool") - ErrInvalidUnlockAmount = sdkerrors.Register(ModuleName, 21, "invalid soft unlock amount") + ErrorFarmerNotFound = sdkerrors.Register(ModuleName, 20, "farmer not found") + ErrInvalidUnfarmAmount = sdkerrors.Register(ModuleName, 21, "invalid unfarm amount") ErrDepletedPool = sdkerrors.Register(ModuleName, 23, "pool is depleted") ErrCalculatedPoolAmountIsZero = sdkerrors.Register(ModuleName, 24, "calculated provided pool supply with pool tokens is zero or something went wrong while calculation") @@ -38,4 +38,6 @@ var ( ErrorUnknownProposalType = sdkerrors.Register(ModuleName, 31, "unknown proposal type") ErrorEmptyKeyValueForGenericParams = sdkerrors.Register(ModuleName, 32, "keys or values empty for update generic-params") ErrorLengthMismatch = sdkerrors.Register(ModuleName, 33, "keys and values list length mismatch") + + ErrorNotPositiveAmont = sdkerrors.Register(ModuleName, 34, "amount should be positive") ) diff --git a/x/liquidity/types/events.go b/x/liquidity/types/events.go index 70736f76d..350c53053 100644 --- a/x/liquidity/types/events.go +++ b/x/liquidity/types/events.go @@ -13,11 +13,14 @@ const ( EventTypeDepositResult = "deposit_result" EventTypeWithdrawalResult = "withdrawal_result" EventTypeOrderResult = "order_result" + EventTypeFarm = "farm" + EventTypeUnfarm = "unfarm" AttributeKeyCreator = "creator" AttributeKeyDepositor = "depositor" AttributeKeyWithdrawer = "withdrawer" AttributeKeyOrderer = "orderer" + AttributeKeyFarmer = "farmer" AttributeKeyBaseCoinDenom = "base_coin_denom" AttributeKeyQuoteCoinDenom = "quote_coin_denom" AttributeKeyDepositCoins = "deposit_coins" @@ -45,4 +48,6 @@ const ( AttributeKeyPairIds = "pair_ids" AttributeKeyCanceledOrderIds = "canceled_order_ids" AttributeKeyStatus = "status" + AttributeKeyAppID = "app_id" + AttributeKeyTimeStamp = "timestamp" ) diff --git a/x/liquidity/types/farm.go b/x/liquidity/types/farm.go new file mode 100644 index 000000000..9f821f56b --- /dev/null +++ b/x/liquidity/types/farm.go @@ -0,0 +1,108 @@ +package types + +import ( + "fmt" + + "github.com/cosmos/cosmos-sdk/codec" + sdk "github.com/cosmos/cosmos-sdk/types" +) + +// NewActivefarmer returns a new active farmer object. +func NewActivefarmer(appID, poolID uint64, farmer sdk.AccAddress, poolCoin sdk.Coin) ActiveFarmer { + return ActiveFarmer{ + AppId: appID, + PoolId: poolID, + Farmer: farmer.String(), + FarmedPoolCoin: poolCoin, + } +} + +// Validate validates ActiveFarmer. +func (activeFarmer ActiveFarmer) Validate() error { + if activeFarmer.AppId == 0 { + return fmt.Errorf("app id must not be 0") + } + if activeFarmer.PoolId == 0 { + return fmt.Errorf("pool id must not be 0") + } + if _, err := sdk.AccAddressFromBech32(activeFarmer.Farmer); err != nil { + return fmt.Errorf("invalid farmer address %s: %w", activeFarmer.Farmer, err) + } + if err := activeFarmer.FarmedPoolCoin.Validate(); err != nil { + return fmt.Errorf("invalid offer coin %s: %w", activeFarmer.FarmedPoolCoin, err) + } + if activeFarmer.FarmedPoolCoin.IsZero() { + return fmt.Errorf("offer coin must not be 0") + } + return nil +} + +// MustMarshalActiveFarmer returns the active farmer bytes. +// It throws panic if it fails. +func MustMarshalActiveFarmer(cdc codec.BinaryCodec, activeFarmer ActiveFarmer) []byte { + return cdc.MustMarshal(&activeFarmer) +} + +// MustUnmarshalActiveFarmer return the unmarshalled active farmer from bytes. +// It throws panic if it fails. +func MustUnmarshalActiveFarmer(cdc codec.BinaryCodec, value []byte) ActiveFarmer { + activeFarmer, err := UnmarshalActiveFarmer(cdc, value) + if err != nil { + panic(err) + } + + return activeFarmer +} + +// UnmarshalActiveFarmer returns the active farmer from bytes. +func UnmarshalActiveFarmer(cdc codec.BinaryCodec, value []byte) (activeFarmer ActiveFarmer, err error) { + err = cdc.Unmarshal(value, &activeFarmer) + return activeFarmer, err +} + +// NewQueuedfarmer returns a new queued farmer object. +func NewQueuedfarmer(appID, poolID uint64, farmer sdk.AccAddress) QueuedFarmer { + return QueuedFarmer{ + AppId: appID, + PoolId: poolID, + Farmer: farmer.String(), + QueudCoins: []*QueuedCoin{}, + } +} + +// Validate validates QueuedFarmer. +func (queuedFarmer QueuedFarmer) Validate() error { + if queuedFarmer.AppId == 0 { + return fmt.Errorf("app id must not be 0") + } + if queuedFarmer.PoolId == 0 { + return fmt.Errorf("pool id must not be 0") + } + if _, err := sdk.AccAddressFromBech32(queuedFarmer.Farmer); err != nil { + return fmt.Errorf("invalid farmer address %s: %w", queuedFarmer.Farmer, err) + } + return nil +} + +// MustMarshalQueuedFarmer returns the queued farmer bytes. +// It throws panic if it fails. +func MustMarshalQueuedFarmer(cdc codec.BinaryCodec, queuedFarmer QueuedFarmer) []byte { + return cdc.MustMarshal(&queuedFarmer) +} + +// MustUnmarshalQueuedFarmer return the unmarshalled queued farmer from bytes. +// It throws panic if it fails. +func MustUnmarshalQueuedFarmer(cdc codec.BinaryCodec, value []byte) QueuedFarmer { + queuedFarmer, err := UnmarshalQueuedFarmer(cdc, value) + if err != nil { + panic(err) + } + + return queuedFarmer +} + +// UnmarshalQueuedFarmer returns the queued farmer from bytes. +func UnmarshalQueuedFarmer(cdc codec.BinaryCodec, value []byte) (queuedFarmer QueuedFarmer, err error) { + err = cdc.Unmarshal(value, &queuedFarmer) + return queuedFarmer, err +} diff --git a/x/liquidity/types/genesis.go b/x/liquidity/types/genesis.go index 258448f75..49492f2b0 100644 --- a/x/liquidity/types/genesis.go +++ b/x/liquidity/types/genesis.go @@ -7,7 +7,8 @@ import ( // DefaultGenesis returns the default Capability genesis state. func DefaultGenesis() *GenesisState { return &GenesisState{ - Params: DefaultParams(), + Params: DefaultParams(), + AppGenesisState: []AppGenesisState{}, } } @@ -17,5 +18,146 @@ func (genState GenesisState) Validate() error { if err := genState.Params.Validate(); err != nil { return fmt.Errorf("invalid params: %w", err) } + + for _, appState := range genState.AppGenesisState { + + if err := appState.GenericParams.Validate(); err != nil { + return fmt.Errorf("invalid generic params: %w", err) + } + + pairMap := map[uint64]Pair{} + for i, pair := range appState.Pairs { + if err := pair.Validate(); err != nil { + return fmt.Errorf("invalid pair at index %d: %w", i, err) + } + if pair.Id > appState.LastPairId { + return fmt.Errorf("pair at index %d has an id greater than last pair id: %d", i, pair.Id) + } + if _, ok := pairMap[pair.Id]; ok { + return fmt.Errorf("pair at index %d has a duplicate id: %d", i, pair.Id) + } + pairMap[pair.Id] = pair + } + poolMap := map[uint64]Pool{} + for i, pool := range appState.Pools { + if err := pool.Validate(); err != nil { + return fmt.Errorf("invalid pool at index %d: %w", i, err) + } + if pool.Id > appState.LastPoolId { + return fmt.Errorf("pool at index %d has an id greater than last pool id: %d", i, pool.Id) + } + if _, ok := pairMap[pool.PairId]; !ok { + return fmt.Errorf("pool at index %d has unknown pair id: %d", i, pool.PairId) + } + if _, ok := poolMap[pool.Id]; ok { + return fmt.Errorf("pool at index %d has a duplicate pool id: %d", i, pool.Id) + } + poolMap[pool.Id] = pool + } + depositReqSet := map[uint64]map[uint64]struct{}{} + for i, req := range appState.DepositRequests { + if err := req.Validate(); err != nil { + return fmt.Errorf("invalid deposit request at index %d: %w", i, err) + } + pool, ok := poolMap[req.PoolId] + if !ok { + return fmt.Errorf("deposit request at index %d has unknown pool id: %d", i, req.PoolId) + } + if req.MintedPoolCoin.Denom != pool.PoolCoinDenom { + return fmt.Errorf("deposit request at index %d has wrong minted pool coin: %s", i, req.MintedPoolCoin) + } + pair := pairMap[pool.PairId] + if req.DepositCoins.AmountOf(pair.BaseCoinDenom).IsZero() || + req.DepositCoins.AmountOf(pair.QuoteCoinDenom).IsZero() { + return fmt.Errorf("deposit request at index %d has wrong deposit coins: %s", i, req.DepositCoins) + } + if set, ok := depositReqSet[req.PoolId]; ok { + if _, ok := set[req.Id]; ok { + return fmt.Errorf("deposit request at index %d has a duplicate id: %d", i, req.Id) + } + } else { + depositReqSet[req.PoolId] = map[uint64]struct{}{} + } + depositReqSet[req.PoolId][req.Id] = struct{}{} + } + withdrawReqSet := map[uint64]map[uint64]struct{}{} + for i, req := range appState.WithdrawRequests { + if err := req.Validate(); err != nil { + return fmt.Errorf("invalid withdraw request at index %d: %w", i, err) + } + pool, ok := poolMap[req.PoolId] + if !ok { + return fmt.Errorf("withdraw request at index %d has unknown pool id: %d", i, req.PoolId) + } + if req.PoolCoin.Denom != pool.PoolCoinDenom { + return fmt.Errorf("withdraw request at index %d has wrong pool coin: %s", i, req.PoolCoin) + } + if set, ok := withdrawReqSet[req.PoolId]; ok { + if _, ok := set[req.Id]; ok { + return fmt.Errorf("withdraw request at index %d has a duplicate id: %d", i, req.Id) + } + } else { + withdrawReqSet[req.PoolId] = map[uint64]struct{}{} + } + withdrawReqSet[req.PoolId][req.Id] = struct{}{} + } + orderSet := map[uint64]map[uint64]struct{}{} + for i, order := range appState.Orders { + if err := order.Validate(); err != nil { + return fmt.Errorf("invalid order at index %d: %w", i, err) + } + pair, ok := pairMap[order.PairId] + if !ok { + return fmt.Errorf("order at index %d has unknown pair id: %d", i, order.PairId) + } + if order.BatchId > pair.CurrentBatchId { + return fmt.Errorf("order at index %d has a batch id greater than its pair's current batch id: %d", i, order.BatchId) + } + var offerCoinDenom, demandCoinDenom string + switch order.Direction { + case OrderDirectionBuy: + offerCoinDenom, demandCoinDenom = pair.QuoteCoinDenom, pair.BaseCoinDenom + case OrderDirectionSell: + offerCoinDenom, demandCoinDenom = pair.BaseCoinDenom, pair.QuoteCoinDenom + } + if order.OfferCoin.Denom != offerCoinDenom { + return fmt.Errorf("order at index %d has wrong offer coin denom: %s != %s", i, order.OfferCoin.Denom, offerCoinDenom) + } + if order.ReceivedCoin.Denom != demandCoinDenom { + return fmt.Errorf("order at index %d has wrong demand coin denom: %s != %s", i, order.OfferCoin.Denom, demandCoinDenom) + } + if set, ok := orderSet[order.PairId]; ok { + if _, ok := set[order.Id]; ok { + return fmt.Errorf("order at index %d has a duplicate id: %d", i, order.Id) + } + } else { + orderSet[order.PairId] = map[uint64]struct{}{} + } + orderSet[order.PairId][order.Id] = struct{}{} + } + activeFarmerMap := map[string]ActiveFarmer{} + for i, activeFarmer := range appState.ActiveFarmers { + if err := activeFarmer.Validate(); err != nil { + return fmt.Errorf("invalid active farmer at index %d: %w", i, err) + } + if _, ok := poolMap[activeFarmer.PoolId]; !ok { + return fmt.Errorf("active farmer at index %d has unknown pool id: %d", i, activeFarmer.PoolId) + } + if _, ok := activeFarmerMap[activeFarmer.Farmer]; ok { + return fmt.Errorf("active farmer at index %d has a duplicate farmer : %s", i, activeFarmer.Farmer) + } + activeFarmerMap[activeFarmer.Farmer] = activeFarmer + } + + for i, queuedFarmer := range appState.QueuedFarmers { + if err := queuedFarmer.Validate(); err != nil { + return fmt.Errorf("invalid queued farmer at index %d: %w", i, err) + } + if _, ok := poolMap[queuedFarmer.PoolId]; !ok { + return fmt.Errorf("active farmer at index %d has unknown pool id: %d", i, queuedFarmer.PoolId) + } + } + } + return nil } diff --git a/x/liquidity/types/genesis.pb.go b/x/liquidity/types/genesis.pb.go index 3388341b1..13b29e775 100644 --- a/x/liquidity/types/genesis.pb.go +++ b/x/liquidity/types/genesis.pb.go @@ -23,16 +23,64 @@ var _ = math.Inf // proto package needs to be updated. const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package +type AppGenesisState struct { + AppId uint64 `protobuf:"varint,1,opt,name=app_id,json=appId,proto3" json:"app_id,omitempty"` + GenericParams GenericParams `protobuf:"bytes,2,opt,name=generic_params,json=genericParams,proto3" json:"generic_params"` + LastPairId uint64 `protobuf:"varint,3,opt,name=last_pair_id,json=lastPairId,proto3" json:"last_pair_id,omitempty"` + LastPoolId uint64 `protobuf:"varint,4,opt,name=last_pool_id,json=lastPoolId,proto3" json:"last_pool_id,omitempty"` + Pairs []Pair `protobuf:"bytes,5,rep,name=pairs,proto3" json:"pairs"` + Pools []Pool `protobuf:"bytes,6,rep,name=pools,proto3" json:"pools"` + DepositRequests []DepositRequest `protobuf:"bytes,7,rep,name=deposit_requests,json=depositRequests,proto3" json:"deposit_requests"` + WithdrawRequests []WithdrawRequest `protobuf:"bytes,8,rep,name=withdraw_requests,json=withdrawRequests,proto3" json:"withdraw_requests"` + Orders []Order `protobuf:"bytes,9,rep,name=orders,proto3" json:"orders"` + ActiveFarmers []ActiveFarmer `protobuf:"bytes,10,rep,name=active_farmers,json=activeFarmers,proto3" json:"active_farmers"` + QueuedFarmers []QueuedFarmer `protobuf:"bytes,11,rep,name=queued_farmers,json=queuedFarmers,proto3" json:"queued_farmers"` +} + +func (m *AppGenesisState) Reset() { *m = AppGenesisState{} } +func (m *AppGenesisState) String() string { return proto.CompactTextString(m) } +func (*AppGenesisState) ProtoMessage() {} +func (*AppGenesisState) Descriptor() ([]byte, []int) { + return fileDescriptor_f213b60d5f11ba59, []int{0} +} +func (m *AppGenesisState) XXX_Unmarshal(b []byte) error { + return m.Unmarshal(b) +} +func (m *AppGenesisState) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + if deterministic { + return xxx_messageInfo_AppGenesisState.Marshal(b, m, deterministic) + } else { + b = b[:cap(b)] + n, err := m.MarshalToSizedBuffer(b) + if err != nil { + return nil, err + } + return b[:n], nil + } +} +func (m *AppGenesisState) XXX_Merge(src proto.Message) { + xxx_messageInfo_AppGenesisState.Merge(m, src) +} +func (m *AppGenesisState) XXX_Size() int { + return m.Size() +} +func (m *AppGenesisState) XXX_DiscardUnknown() { + xxx_messageInfo_AppGenesisState.DiscardUnknown(m) +} + +var xxx_messageInfo_AppGenesisState proto.InternalMessageInfo + // GenesisState defines the liquidity module's genesis state. type GenesisState struct { - Params Params `protobuf:"bytes,1,opt,name=params,proto3" json:"params"` + Params Params `protobuf:"bytes,1,opt,name=params,proto3" json:"params"` + AppGenesisState []AppGenesisState `protobuf:"bytes,2,rep,name=app_genesis_state,json=appGenesisState,proto3" json:"app_genesis_state"` } func (m *GenesisState) Reset() { *m = GenesisState{} } func (m *GenesisState) String() string { return proto.CompactTextString(m) } func (*GenesisState) ProtoMessage() {} func (*GenesisState) Descriptor() ([]byte, []int) { - return fileDescriptor_f213b60d5f11ba59, []int{0} + return fileDescriptor_f213b60d5f11ba59, []int{1} } func (m *GenesisState) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) @@ -62,6 +110,7 @@ func (m *GenesisState) XXX_DiscardUnknown() { var xxx_messageInfo_GenesisState proto.InternalMessageInfo func init() { + proto.RegisterType((*AppGenesisState)(nil), "comdex.liquidity.v1beta1.AppGenesisState") proto.RegisterType((*GenesisState)(nil), "comdex.liquidity.v1beta1.GenesisState") } @@ -70,23 +119,188 @@ func init() { } var fileDescriptor_f213b60d5f11ba59 = []byte{ - // 210 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x52, 0x4b, 0xce, 0xcf, 0x4d, - 0x49, 0xad, 0xd0, 0xcf, 0xc9, 0x2c, 0x2c, 0xcd, 0x4c, 0xc9, 0x2c, 0xa9, 0xd4, 0x2f, 0x33, 0x4c, - 0x4a, 0x2d, 0x49, 0x34, 0xd4, 0x4f, 0x4f, 0xcd, 0x4b, 0x2d, 0xce, 0x2c, 0xd6, 0x2b, 0x28, 0xca, - 0x2f, 0xc9, 0x17, 0x92, 0x80, 0xa8, 0xd3, 0x83, 0xab, 0xd3, 0x83, 0xaa, 0x93, 0x12, 0x49, 0xcf, - 0x4f, 0xcf, 0x07, 0x2b, 0xd2, 0x07, 0xb1, 0x20, 0xea, 0xa5, 0x54, 0x71, 0x9a, 0x5b, 0x90, 0x58, - 0x94, 0x98, 0x0b, 0x35, 0x56, 0xc9, 0x8f, 0x8b, 0xc7, 0x1d, 0x62, 0x4f, 0x70, 0x49, 0x62, 0x49, - 0xaa, 0x90, 0x1d, 0x17, 0x1b, 0x44, 0x5e, 0x82, 0x51, 0x81, 0x51, 0x83, 0xdb, 0x48, 0x41, 0x0f, - 0x97, 0xbd, 0x7a, 0x01, 0x60, 0x75, 0x4e, 0x2c, 0x27, 0xee, 0xc9, 0x33, 0x04, 0x41, 0x75, 0x39, - 0x05, 0x9e, 0x78, 0x28, 0xc7, 0x70, 0xe2, 0x91, 0x1c, 0xe3, 0x85, 0x47, 0x72, 0x8c, 0x0f, 0x1e, - 0xc9, 0x31, 0x4e, 0x78, 0x2c, 0xc7, 0x70, 0xe1, 0xb1, 0x1c, 0xc3, 0x8d, 0xc7, 0x72, 0x0c, 0x51, - 0xc6, 0xe9, 0x99, 0x25, 0x19, 0xa5, 0x49, 0x20, 0x33, 0xf5, 0x21, 0xe6, 0xea, 0xe6, 0xa7, 0xa5, - 0x65, 0x26, 0x67, 0x26, 0xe6, 0x40, 0xf9, 0xfa, 0xc8, 0x2e, 0x2e, 0xa9, 0x2c, 0x48, 0x2d, 0x4e, - 0x62, 0x03, 0xbb, 0xd4, 0x18, 0x10, 0x00, 0x00, 0xff, 0xff, 0x4a, 0x91, 0xbd, 0xa8, 0x2a, 0x01, + // 514 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x93, 0xdd, 0x6e, 0xd3, 0x30, + 0x14, 0xc7, 0x93, 0x6d, 0x0d, 0xe0, 0x8e, 0x7d, 0x58, 0x20, 0x45, 0xbd, 0xc8, 0xa2, 0x49, 0x8c, + 0x70, 0x41, 0xa2, 0x6d, 0x77, 0x48, 0x20, 0x0d, 0x21, 0xa6, 0x5e, 0xb1, 0x75, 0x48, 0x88, 0x0f, + 0x29, 0x72, 0x6b, 0x37, 0xb3, 0x94, 0x62, 0xd7, 0x76, 0x56, 0xf6, 0x16, 0xbc, 0x07, 0x2f, 0xd2, + 0xcb, 0x5d, 0x72, 0x81, 0x10, 0xb4, 0x2f, 0x82, 0xec, 0x78, 0x6d, 0x32, 0x29, 0xf4, 0xae, 0x3d, + 0xfa, 0xfd, 0x7f, 0xe7, 0x44, 0x3e, 0x07, 0x1c, 0x0c, 0xd8, 0x08, 0x93, 0x6f, 0x49, 0x4e, 0xc7, + 0x05, 0xc5, 0x54, 0x5d, 0x27, 0x57, 0x87, 0x7d, 0xa2, 0xd0, 0x61, 0x92, 0x91, 0xaf, 0x44, 0x52, + 0x19, 0x73, 0xc1, 0x14, 0x83, 0x7e, 0xc9, 0xc5, 0x0b, 0x2e, 0xb6, 0x5c, 0xe7, 0x51, 0xc6, 0x32, + 0x66, 0xa0, 0x44, 0xff, 0x2a, 0xf9, 0xce, 0x93, 0x46, 0x2f, 0x47, 0x02, 0x8d, 0xac, 0xb6, 0x13, + 0x35, 0x62, 0xcb, 0x46, 0x86, 0xdc, 0xff, 0xd5, 0x02, 0xdb, 0x27, 0x9c, 0x9f, 0x96, 0x53, 0x5d, + 0x28, 0xa4, 0x08, 0x7c, 0x0c, 0x3c, 0xc4, 0x79, 0x4a, 0xb1, 0xef, 0x86, 0x6e, 0xb4, 0xd1, 0x6b, + 0x21, 0xce, 0xbb, 0x18, 0xbe, 0x07, 0x5b, 0x7a, 0x78, 0x41, 0x07, 0x69, 0xd9, 0xcc, 0x5f, 0x0b, + 0xdd, 0xa8, 0x7d, 0xf4, 0x34, 0x6e, 0xfa, 0x88, 0xf8, 0xb4, 0xe4, 0xcf, 0x0c, 0xfe, 0x7a, 0x63, + 0xfa, 0x7b, 0xcf, 0xe9, 0x3d, 0xcc, 0xaa, 0x45, 0x18, 0x82, 0xcd, 0x1c, 0x49, 0x95, 0x72, 0x44, + 0x85, 0x6e, 0xb9, 0x6e, 0x5a, 0x02, 0x5d, 0x3b, 0x43, 0x54, 0x74, 0xf1, 0x92, 0x60, 0x2c, 0xd7, + 0xc4, 0x46, 0x85, 0x60, 0x2c, 0xef, 0x62, 0xf8, 0x02, 0xb4, 0x74, 0x5c, 0xfa, 0xad, 0x70, 0x3d, + 0x6a, 0x1f, 0x05, 0xcd, 0x03, 0x69, 0xa5, 0x9d, 0xa3, 0x8c, 0x98, 0x2c, 0x63, 0xb9, 0xf4, 0xbd, + 0x95, 0x59, 0xc6, 0xf2, 0x45, 0x56, 0x47, 0xe0, 0x47, 0xb0, 0x83, 0x09, 0x67, 0x92, 0xaa, 0x54, + 0x90, 0x71, 0x41, 0xa4, 0x92, 0xfe, 0x3d, 0xa3, 0x89, 0x9a, 0x35, 0x6f, 0xca, 0x44, 0xaf, 0x0c, + 0x58, 0xe1, 0x36, 0xae, 0x55, 0x25, 0xfc, 0x02, 0x76, 0x27, 0x54, 0x5d, 0x62, 0x81, 0x26, 0x4b, + 0xf7, 0x7d, 0xe3, 0x7e, 0xd6, 0xec, 0xfe, 0x60, 0x23, 0x75, 0xf9, 0xce, 0xa4, 0x5e, 0x96, 0xf0, + 0x25, 0xf0, 0x98, 0xc0, 0x44, 0x48, 0xff, 0x81, 0x51, 0xee, 0x35, 0x2b, 0xdf, 0x69, 0xce, 0x8a, + 0x6c, 0x08, 0x5e, 0x80, 0x2d, 0x34, 0x50, 0xf4, 0x8a, 0xa4, 0x43, 0x24, 0x46, 0x5a, 0x03, 0x8c, + 0xe6, 0xa0, 0x59, 0x73, 0x62, 0xf8, 0xb7, 0x06, 0xbf, 0x5d, 0x04, 0x54, 0xa9, 0x19, 0xe9, 0xb8, + 0x20, 0x05, 0xc1, 0x0b, 0x69, 0x7b, 0x95, 0xf4, 0xdc, 0xf0, 0x75, 0xe9, 0xb8, 0x52, 0x93, 0xfb, + 0x3f, 0x5c, 0xb0, 0x59, 0xdb, 0xed, 0x57, 0xc0, 0xb3, 0xcb, 0xeb, 0x9a, 0xe5, 0x0d, 0xff, 0xb7, + 0x2b, 0x95, 0xad, 0xb5, 0x29, 0xf8, 0x19, 0xec, 0xea, 0xdb, 0xb0, 0x57, 0x9c, 0x4a, 0x2d, 0xf5, + 0xd7, 0x56, 0xbd, 0xcb, 0x9d, 0x0b, 0xbb, 0x7d, 0x74, 0x74, 0xa7, 0x7c, 0x3e, 0xfd, 0x1b, 0x38, + 0xd3, 0x59, 0xe0, 0xde, 0xcc, 0x02, 0xf7, 0xcf, 0x2c, 0x70, 0xbf, 0xcf, 0x03, 0xe7, 0x66, 0x1e, + 0x38, 0x3f, 0xe7, 0x81, 0xf3, 0xe9, 0x38, 0xa3, 0xea, 0xb2, 0xe8, 0xeb, 0x2e, 0x49, 0xd9, 0xe9, + 0x39, 0x1b, 0x0e, 0xe9, 0x80, 0xa2, 0xdc, 0xfe, 0x4f, 0xaa, 0x17, 0xaf, 0xae, 0x39, 0x91, 0x7d, + 0xcf, 0x9c, 0xf9, 0xf1, 0xbf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x39, 0x09, 0xc1, 0x24, 0x91, 0x04, 0x00, 0x00, } +func (m *AppGenesisState) Marshal() (dAtA []byte, err error) { + size := m.Size() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBuffer(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *AppGenesisState) MarshalTo(dAtA []byte) (int, error) { + size := m.Size() + return m.MarshalToSizedBuffer(dAtA[:size]) +} + +func (m *AppGenesisState) MarshalToSizedBuffer(dAtA []byte) (int, error) { + i := len(dAtA) + _ = i + var l int + _ = l + if len(m.QueuedFarmers) > 0 { + for iNdEx := len(m.QueuedFarmers) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.QueuedFarmers[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x5a + } + } + if len(m.ActiveFarmers) > 0 { + for iNdEx := len(m.ActiveFarmers) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.ActiveFarmers[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x52 + } + } + if len(m.Orders) > 0 { + for iNdEx := len(m.Orders) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Orders[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x4a + } + } + if len(m.WithdrawRequests) > 0 { + for iNdEx := len(m.WithdrawRequests) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.WithdrawRequests[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x42 + } + } + if len(m.DepositRequests) > 0 { + for iNdEx := len(m.DepositRequests) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.DepositRequests[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x3a + } + } + if len(m.Pools) > 0 { + for iNdEx := len(m.Pools) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Pools[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x32 + } + } + if len(m.Pairs) > 0 { + for iNdEx := len(m.Pairs) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Pairs[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x2a + } + } + if m.LastPoolId != 0 { + i = encodeVarintGenesis(dAtA, i, uint64(m.LastPoolId)) + i-- + dAtA[i] = 0x20 + } + if m.LastPairId != 0 { + i = encodeVarintGenesis(dAtA, i, uint64(m.LastPairId)) + i-- + dAtA[i] = 0x18 + } + { + size, err := m.GenericParams.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + if m.AppId != 0 { + i = encodeVarintGenesis(dAtA, i, uint64(m.AppId)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + func (m *GenesisState) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) @@ -107,6 +321,20 @@ func (m *GenesisState) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if len(m.AppGenesisState) > 0 { + for iNdEx := len(m.AppGenesisState) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.AppGenesisState[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + } { size, err := m.Params.MarshalToSizedBuffer(dAtA[:i]) if err != nil { @@ -131,6 +359,68 @@ func encodeVarintGenesis(dAtA []byte, offset int, v uint64) int { dAtA[offset] = uint8(v) return base } +func (m *AppGenesisState) Size() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.AppId != 0 { + n += 1 + sovGenesis(uint64(m.AppId)) + } + l = m.GenericParams.Size() + n += 1 + l + sovGenesis(uint64(l)) + if m.LastPairId != 0 { + n += 1 + sovGenesis(uint64(m.LastPairId)) + } + if m.LastPoolId != 0 { + n += 1 + sovGenesis(uint64(m.LastPoolId)) + } + if len(m.Pairs) > 0 { + for _, e := range m.Pairs { + l = e.Size() + n += 1 + l + sovGenesis(uint64(l)) + } + } + if len(m.Pools) > 0 { + for _, e := range m.Pools { + l = e.Size() + n += 1 + l + sovGenesis(uint64(l)) + } + } + if len(m.DepositRequests) > 0 { + for _, e := range m.DepositRequests { + l = e.Size() + n += 1 + l + sovGenesis(uint64(l)) + } + } + if len(m.WithdrawRequests) > 0 { + for _, e := range m.WithdrawRequests { + l = e.Size() + n += 1 + l + sovGenesis(uint64(l)) + } + } + if len(m.Orders) > 0 { + for _, e := range m.Orders { + l = e.Size() + n += 1 + l + sovGenesis(uint64(l)) + } + } + if len(m.ActiveFarmers) > 0 { + for _, e := range m.ActiveFarmers { + l = e.Size() + n += 1 + l + sovGenesis(uint64(l)) + } + } + if len(m.QueuedFarmers) > 0 { + for _, e := range m.QueuedFarmers { + l = e.Size() + n += 1 + l + sovGenesis(uint64(l)) + } + } + return n +} + func (m *GenesisState) Size() (n int) { if m == nil { return 0 @@ -139,6 +429,12 @@ func (m *GenesisState) Size() (n int) { _ = l l = m.Params.Size() n += 1 + l + sovGenesis(uint64(l)) + if len(m.AppGenesisState) > 0 { + for _, e := range m.AppGenesisState { + l = e.Size() + n += 1 + l + sovGenesis(uint64(l)) + } + } return n } @@ -148,6 +444,384 @@ func sovGenesis(x uint64) (n int) { func sozGenesis(x uint64) (n int) { return sovGenesis(uint64((x << 1) ^ uint64((int64(x) >> 63)))) } +func (m *AppGenesisState) Unmarshal(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: AppGenesisState: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: AppGenesisState: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field AppId", wireType) + } + m.AppId = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.AppId |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field GenericParams", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.GenericParams.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field LastPairId", wireType) + } + m.LastPairId = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.LastPairId |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field LastPoolId", wireType) + } + m.LastPoolId = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.LastPoolId |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Pairs", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Pairs = append(m.Pairs, Pair{}) + if err := m.Pairs[len(m.Pairs)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Pools", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Pools = append(m.Pools, Pool{}) + if err := m.Pools[len(m.Pools)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field DepositRequests", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.DepositRequests = append(m.DepositRequests, DepositRequest{}) + if err := m.DepositRequests[len(m.DepositRequests)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 8: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field WithdrawRequests", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.WithdrawRequests = append(m.WithdrawRequests, WithdrawRequest{}) + if err := m.WithdrawRequests[len(m.WithdrawRequests)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 9: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Orders", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Orders = append(m.Orders, Order{}) + if err := m.Orders[len(m.Orders)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 10: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ActiveFarmers", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ActiveFarmers = append(m.ActiveFarmers, ActiveFarmer{}) + if err := m.ActiveFarmers[len(m.ActiveFarmers)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 11: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field QueuedFarmers", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.QueuedFarmers = append(m.QueuedFarmers, QueuedFarmer{}) + if err := m.QueuedFarmers[len(m.QueuedFarmers)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skipGenesis(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLengthGenesis + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func (m *GenesisState) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -210,6 +884,40 @@ func (m *GenesisState) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AppGenesisState", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.AppGenesisState = append(m.AppGenesisState, AppGenesisState{}) + if err := m.AppGenesisState[len(m.AppGenesisState)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenesis(dAtA[iNdEx:]) diff --git a/x/liquidity/types/keys.go b/x/liquidity/types/keys.go index d2af68a3a..d40ce660f 100644 --- a/x/liquidity/types/keys.go +++ b/x/liquidity/types/keys.go @@ -40,8 +40,10 @@ var ( OrderKeyPrefix = []byte{0xb2} OrderIndexKeyPrefix = []byte{0xb3} - PoolLiquidityProvidersDataKeyPrefix = []byte{0xb4} - GenericParamsKey = []byte{0xb5} + ActiveFarmerKeyPrefix = []byte{0xb4} + QueuedFarmerKeyPrefix = []byte{0xb5} + + GenericParamsKey = []byte{0xb6} ) // GetLastPairIDKey returns the store key to retrieve the last pair id. @@ -196,11 +198,6 @@ func GetOrderIndexKeyPrefix(appID uint64, orderer sdk.AccAddress) []byte { return append(append(OrderIndexKeyPrefix, sdk.Uint64ToBigEndian(appID)...), address.MustLengthPrefix(orderer)...) } -// GetPoolLiquidityProvidersDataKey returns the store key to retrieve liquidity providers data from the pool id. -func GetPoolLiquidityProvidersDataKey(appID, poolID uint64) []byte { - return append(append(PoolLiquidityProvidersDataKeyPrefix, sdk.Uint64ToBigEndian(appID)...), sdk.Uint64ToBigEndian(poolID)...) -} - // GetGenericParamsKey returns the store key to retrieve params object. func GetGenericParamsKey(appID uint64) []byte { return append(GenericParamsKey, sdk.Uint64ToBigEndian(appID)...) @@ -279,3 +276,23 @@ func LengthPrefixString(s string) []byte { } return append([]byte{byte(bzLen)}, bz...) } + +// GetActiveFarmerKey returns the store key to retrieve active farmer object from the app id, pool id and farmer address. +func GetActiveFarmerKey(appID, poolID uint64, farmer sdk.AccAddress) []byte { + return append(append(append(ActiveFarmerKeyPrefix, sdk.Uint64ToBigEndian(appID)...), sdk.Uint64ToBigEndian(poolID)...), address.MustLengthPrefix(farmer)...) +} + +// GetAllActiveFarmerKey returns the store key to retrieve all active farmers. +func GetAllActiveFarmersKey(appID, poolID uint64) []byte { + return append(append(ActiveFarmerKeyPrefix, sdk.Uint64ToBigEndian(appID)...), sdk.Uint64ToBigEndian(poolID)...) +} + +// GetQueuedFarmerKey returns the store key to retrieve queued farmer object from the app id, pool id and farmer address. +func GetQueuedFarmerKey(appID, poolID uint64, farmer sdk.AccAddress) []byte { + return append(append(append(QueuedFarmerKeyPrefix, sdk.Uint64ToBigEndian(appID)...), sdk.Uint64ToBigEndian(poolID)...), address.MustLengthPrefix(farmer)...) +} + +// GetAllQueuedFarmerKey returns the store key to retrieve all queued farmers. +func GetAllQueuedFarmersKey(appID, poolID uint64) []byte { + return append(append(QueuedFarmerKeyPrefix, sdk.Uint64ToBigEndian(appID)...), sdk.Uint64ToBigEndian(poolID)...) +} diff --git a/x/liquidity/types/liquidity.pb.go b/x/liquidity/types/liquidity.pb.go index 1c18452f0..a307895a2 100644 --- a/x/liquidity/types/liquidity.pb.go +++ b/x/liquidity/types/liquidity.pb.go @@ -428,22 +428,25 @@ func (m *Order) XXX_DiscardUnknown() { var xxx_messageInfo_Order proto.InternalMessageInfo -type DepositsMade struct { - Coins []github_com_cosmos_cosmos_sdk_types.Coin `protobuf:"bytes,1,rep,name=coins,proto3,casttype=github.com/cosmos/cosmos-sdk/types.Coin" json:"coins"` +type ActiveFarmer struct { + AppId uint64 `protobuf:"varint,1,opt,name=app_id,json=appId,proto3" json:"app_id,omitempty"` + PoolId uint64 `protobuf:"varint,2,opt,name=pool_id,json=poolId,proto3" json:"pool_id,omitempty"` + Farmer string `protobuf:"bytes,3,opt,name=farmer,proto3" json:"farmer,omitempty"` + FarmedPoolCoin github_com_cosmos_cosmos_sdk_types.Coin `protobuf:"bytes,4,opt,name=farmed_pool_coin,json=farmedPoolCoin,proto3,casttype=github.com/cosmos/cosmos-sdk/types.Coin" json:"farmed_pool_coin"` } -func (m *DepositsMade) Reset() { *m = DepositsMade{} } -func (m *DepositsMade) String() string { return proto.CompactTextString(m) } -func (*DepositsMade) ProtoMessage() {} -func (*DepositsMade) Descriptor() ([]byte, []int) { +func (m *ActiveFarmer) Reset() { *m = ActiveFarmer{} } +func (m *ActiveFarmer) String() string { return proto.CompactTextString(m) } +func (*ActiveFarmer) ProtoMessage() {} +func (*ActiveFarmer) Descriptor() ([]byte, []int) { return fileDescriptor_579dcc42096fa86d, []int{5} } -func (m *DepositsMade) XXX_Unmarshal(b []byte) error { +func (m *ActiveFarmer) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *DepositsMade) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *ActiveFarmer) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_DepositsMade.Marshal(b, m, deterministic) + return xxx_messageInfo_ActiveFarmer.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -453,36 +456,35 @@ func (m *DepositsMade) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) return b[:n], nil } } -func (m *DepositsMade) XXX_Merge(src proto.Message) { - xxx_messageInfo_DepositsMade.Merge(m, src) +func (m *ActiveFarmer) XXX_Merge(src proto.Message) { + xxx_messageInfo_ActiveFarmer.Merge(m, src) } -func (m *DepositsMade) XXX_Size() int { +func (m *ActiveFarmer) XXX_Size() int { return m.Size() } -func (m *DepositsMade) XXX_DiscardUnknown() { - xxx_messageInfo_DepositsMade.DiscardUnknown(m) +func (m *ActiveFarmer) XXX_DiscardUnknown() { + xxx_messageInfo_ActiveFarmer.DiscardUnknown(m) } -var xxx_messageInfo_DepositsMade proto.InternalMessageInfo +var xxx_messageInfo_ActiveFarmer proto.InternalMessageInfo -type QueuedLiquidityProvider struct { - Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` - SupplyProvided []*types.Coin `protobuf:"bytes,2,rep,name=supply_provided,json=supplyProvided,proto3" json:"supply_provided,omitempty"` - CreatedAt time.Time `protobuf:"bytes,3,opt,name=created_at,json=createdAt,proto3,stdtime" json:"created_at" yaml:"created_at"` +type QueuedCoin struct { + FarmedPoolCoin github_com_cosmos_cosmos_sdk_types.Coin `protobuf:"bytes,1,opt,name=farmed_pool_coin,json=farmedPoolCoin,proto3,casttype=github.com/cosmos/cosmos-sdk/types.Coin" json:"farmed_pool_coin"` + CreatedAt time.Time `protobuf:"bytes,2,opt,name=created_at,json=createdAt,proto3,stdtime" json:"created_at" yaml:"created_at"` } -func (m *QueuedLiquidityProvider) Reset() { *m = QueuedLiquidityProvider{} } -func (m *QueuedLiquidityProvider) String() string { return proto.CompactTextString(m) } -func (*QueuedLiquidityProvider) ProtoMessage() {} -func (*QueuedLiquidityProvider) Descriptor() ([]byte, []int) { +func (m *QueuedCoin) Reset() { *m = QueuedCoin{} } +func (m *QueuedCoin) String() string { return proto.CompactTextString(m) } +func (*QueuedCoin) ProtoMessage() {} +func (*QueuedCoin) Descriptor() ([]byte, []int) { return fileDescriptor_579dcc42096fa86d, []int{6} } -func (m *QueuedLiquidityProvider) XXX_Unmarshal(b []byte) error { +func (m *QueuedCoin) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *QueuedLiquidityProvider) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *QueuedCoin) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_QueuedLiquidityProvider.Marshal(b, m, deterministic) + return xxx_messageInfo_QueuedCoin.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -492,38 +494,37 @@ func (m *QueuedLiquidityProvider) XXX_Marshal(b []byte, deterministic bool) ([]b return b[:n], nil } } -func (m *QueuedLiquidityProvider) XXX_Merge(src proto.Message) { - xxx_messageInfo_QueuedLiquidityProvider.Merge(m, src) +func (m *QueuedCoin) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueuedCoin.Merge(m, src) } -func (m *QueuedLiquidityProvider) XXX_Size() int { +func (m *QueuedCoin) XXX_Size() int { return m.Size() } -func (m *QueuedLiquidityProvider) XXX_DiscardUnknown() { - xxx_messageInfo_QueuedLiquidityProvider.DiscardUnknown(m) +func (m *QueuedCoin) XXX_DiscardUnknown() { + xxx_messageInfo_QueuedCoin.DiscardUnknown(m) } -var xxx_messageInfo_QueuedLiquidityProvider proto.InternalMessageInfo +var xxx_messageInfo_QueuedCoin proto.InternalMessageInfo -type PoolLiquidityProvidersData struct { - PoolId uint64 `protobuf:"varint,1,opt,name=pool_id,json=poolId,proto3" json:"pool_id,omitempty"` - BondedLockIds []uint64 `protobuf:"varint,2,rep,packed,name=bonded_lock_ids,json=bondedLockIds,proto3" json:"bonded_lock_ids,omitempty" yaml:"bonded_lock_ids"` - LiquidityProviders map[string]*DepositsMade `protobuf:"bytes,3,rep,name=liquidity_providers,json=liquidityProviders,proto3" json:"liquidity_providers,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - QueuedLiquidityProviders []*QueuedLiquidityProvider `protobuf:"bytes,4,rep,name=queued_liquidity_providers,json=queuedLiquidityProviders,proto3" json:"queued_liquidity_providers,omitempty"` - AppId uint64 `protobuf:"varint,5,opt,name=app_id,json=appId,proto3" json:"app_id,omitempty"` +type QueuedFarmer struct { + AppId uint64 `protobuf:"varint,1,opt,name=app_id,json=appId,proto3" json:"app_id,omitempty"` + PoolId uint64 `protobuf:"varint,2,opt,name=pool_id,json=poolId,proto3" json:"pool_id,omitempty"` + Farmer string `protobuf:"bytes,3,opt,name=farmer,proto3" json:"farmer,omitempty"` + QueudCoins []*QueuedCoin `protobuf:"bytes,4,rep,name=queud_coins,json=queudCoins,proto3" json:"queud_coins,omitempty"` } -func (m *PoolLiquidityProvidersData) Reset() { *m = PoolLiquidityProvidersData{} } -func (m *PoolLiquidityProvidersData) String() string { return proto.CompactTextString(m) } -func (*PoolLiquidityProvidersData) ProtoMessage() {} -func (*PoolLiquidityProvidersData) Descriptor() ([]byte, []int) { +func (m *QueuedFarmer) Reset() { *m = QueuedFarmer{} } +func (m *QueuedFarmer) String() string { return proto.CompactTextString(m) } +func (*QueuedFarmer) ProtoMessage() {} +func (*QueuedFarmer) Descriptor() ([]byte, []int) { return fileDescriptor_579dcc42096fa86d, []int{7} } -func (m *PoolLiquidityProvidersData) XXX_Unmarshal(b []byte) error { +func (m *QueuedFarmer) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *PoolLiquidityProvidersData) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *QueuedFarmer) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_PoolLiquidityProvidersData.Marshal(b, m, deterministic) + return xxx_messageInfo_QueuedFarmer.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -533,17 +534,17 @@ func (m *PoolLiquidityProvidersData) XXX_Marshal(b []byte, deterministic bool) ( return b[:n], nil } } -func (m *PoolLiquidityProvidersData) XXX_Merge(src proto.Message) { - xxx_messageInfo_PoolLiquidityProvidersData.Merge(m, src) +func (m *QueuedFarmer) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueuedFarmer.Merge(m, src) } -func (m *PoolLiquidityProvidersData) XXX_Size() int { +func (m *QueuedFarmer) XXX_Size() int { return m.Size() } -func (m *PoolLiquidityProvidersData) XXX_DiscardUnknown() { - xxx_messageInfo_PoolLiquidityProvidersData.DiscardUnknown(m) +func (m *QueuedFarmer) XXX_DiscardUnknown() { + xxx_messageInfo_QueuedFarmer.DiscardUnknown(m) } -var xxx_messageInfo_PoolLiquidityProvidersData proto.InternalMessageInfo +var xxx_messageInfo_QueuedFarmer proto.InternalMessageInfo func init() { proto.RegisterEnum("comdex.liquidity.v1beta1.OrderDirection", OrderDirection_name, OrderDirection_value) @@ -555,10 +556,9 @@ func init() { proto.RegisterType((*DepositRequest)(nil), "comdex.liquidity.v1beta1.DepositRequest") proto.RegisterType((*WithdrawRequest)(nil), "comdex.liquidity.v1beta1.WithdrawRequest") proto.RegisterType((*Order)(nil), "comdex.liquidity.v1beta1.Order") - proto.RegisterType((*DepositsMade)(nil), "comdex.liquidity.v1beta1.DepositsMade") - proto.RegisterType((*QueuedLiquidityProvider)(nil), "comdex.liquidity.v1beta1.QueuedLiquidityProvider") - proto.RegisterType((*PoolLiquidityProvidersData)(nil), "comdex.liquidity.v1beta1.PoolLiquidityProvidersData") - proto.RegisterMapType((map[string]*DepositsMade)(nil), "comdex.liquidity.v1beta1.PoolLiquidityProvidersData.LiquidityProvidersEntry") + proto.RegisterType((*ActiveFarmer)(nil), "comdex.liquidity.v1beta1.ActiveFarmer") + proto.RegisterType((*QueuedCoin)(nil), "comdex.liquidity.v1beta1.QueuedCoin") + proto.RegisterType((*QueuedFarmer)(nil), "comdex.liquidity.v1beta1.QueuedFarmer") } func init() { @@ -566,115 +566,106 @@ func init() { } var fileDescriptor_579dcc42096fa86d = []byte{ - // 1716 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x58, 0x4f, 0x6f, 0xdb, 0xc8, - 0x15, 0xb7, 0x24, 0x4b, 0xb6, 0x9e, 0x63, 0x59, 0x3b, 0xb1, 0x63, 0x99, 0xd9, 0x48, 0x82, 0x80, - 0x4d, 0x8c, 0x00, 0x2b, 0x25, 0x4a, 0x8b, 0xdd, 0x6e, 0xb3, 0x5b, 0xe8, 0x0f, 0x8d, 0x25, 0xa0, - 0xd8, 0x0a, 0x25, 0xa3, 0x49, 0x2f, 0x2c, 0x45, 0x8e, 0x65, 0x22, 0x94, 0x86, 0x26, 0x47, 0x4e, - 0x74, 0x28, 0xd0, 0x4b, 0x81, 0x42, 0xa7, 0xfd, 0x02, 0xba, 0x74, 0x6f, 0xfd, 0x04, 0xfd, 0x08, - 0x39, 0x6e, 0x6f, 0x45, 0x0f, 0xde, 0x36, 0xf9, 0x00, 0x05, 0xf6, 0x58, 0x14, 0x68, 0x31, 0x33, - 0xa4, 0x44, 0xca, 0x56, 0xe2, 0x6d, 0xd3, 0x53, 0x3c, 0x6f, 0xde, 0xef, 0xfd, 0xf9, 0xbd, 0xf7, - 0xe6, 0x51, 0x81, 0x7d, 0x83, 0x0c, 0x4c, 0xfc, 0xaa, 0x62, 0x5b, 0x67, 0x23, 0xcb, 0xb4, 0xe8, - 0xb8, 0x72, 0xfe, 0xb0, 0x87, 0xa9, 0xfe, 0x70, 0x2e, 0x29, 0x3b, 0x2e, 0xa1, 0x04, 0xe5, 0x84, - 0x66, 0x79, 0x2e, 0xf7, 0x35, 0xa5, 0xed, 0x3e, 0xe9, 0x13, 0xae, 0x54, 0x61, 0x7f, 0x09, 0x7d, - 0x29, 0x6f, 0x10, 0x6f, 0x40, 0xbc, 0x4a, 0x4f, 0xf7, 0xf0, 0xcc, 0xa8, 0x41, 0xac, 0xa1, 0x7f, - 0x5f, 0xe8, 0x13, 0xd2, 0xb7, 0x71, 0x85, 0x9f, 0x7a, 0xa3, 0x93, 0x0a, 0xb5, 0x06, 0xd8, 0xa3, - 0xfa, 0xc0, 0x11, 0x0a, 0xa5, 0x7f, 0xc5, 0x61, 0xb5, 0xad, 0x5b, 0x2e, 0xca, 0x40, 0xdc, 0x32, - 0x73, 0xb1, 0x62, 0x6c, 0x7f, 0x55, 0x8d, 0x5b, 0x26, 0xba, 0x0b, 0x5b, 0xcc, 0xa8, 0xc6, 0x8c, - 0x69, 0x26, 0x1e, 0x92, 0x41, 0x2e, 0x5e, 0x8c, 0xed, 0xa7, 0xd5, 0x4d, 0x26, 0x6e, 0x10, 0x6b, - 0xd8, 0x64, 0x42, 0xb4, 0x0f, 0xd9, 0xb3, 0x11, 0xa1, 0x11, 0xc5, 0x04, 0x57, 0xcc, 0x70, 0xf9, - 0x5c, 0xf3, 0x13, 0xc8, 0x60, 0xcf, 0x70, 0xc9, 0x4b, 0x4d, 0x37, 0x4d, 0x17, 0x7b, 0x5e, 0x6e, - 0x55, 0x18, 0x14, 0xd2, 0x9a, 0x10, 0xa2, 0x12, 0x6c, 0xda, 0xba, 0x47, 0x35, 0xe2, 0x9a, 0xd8, - 0xd5, 0x2c, 0x33, 0x97, 0xe4, 0x31, 0x6d, 0x30, 0xe1, 0x11, 0x93, 0x29, 0x26, 0x52, 0x00, 0xb8, - 0x8e, 0xe3, 0x5a, 0x06, 0xce, 0xa5, 0x98, 0x99, 0xfa, 0xfd, 0xbf, 0x5e, 0x14, 0xee, 0xf6, 0x2d, - 0x7a, 0x3a, 0xea, 0x95, 0x0d, 0x32, 0xa8, 0xf8, 0xcc, 0x88, 0x7f, 0x3e, 0xf5, 0xcc, 0x17, 0x15, - 0x3a, 0x76, 0xb0, 0x57, 0x6e, 0x62, 0x43, 0x4d, 0x33, 0x74, 0x9b, 0x81, 0x59, 0xfc, 0xc6, 0xc8, - 0x75, 0xf1, 0x90, 0x6a, 0x3d, 0x9d, 0x1a, 0xa7, 0xcc, 0xe3, 0x1a, 0xf7, 0x98, 0xf1, 0xe5, 0x75, - 0x26, 0x56, 0x4c, 0xf4, 0x73, 0x90, 0xbc, 0x97, 0xba, 0xa3, 0x9d, 0x60, 0x96, 0xac, 0x6d, 0x63, - 0x83, 0x12, 0x77, 0x96, 0xcb, 0x3a, 0xcf, 0x65, 0x97, 0x69, 0x1c, 0x60, 0xdc, 0x08, 0xee, 0x83, - 0xac, 0x76, 0x20, 0xa5, 0x3b, 0x0e, 0x33, 0x9e, 0xe6, 0xc6, 0x93, 0xba, 0xe3, 0x28, 0x66, 0xe9, - 0x5b, 0x46, 0x3f, 0x21, 0xf6, 0x25, 0xfa, 0x77, 0x61, 0xcd, 0xd1, 0x2d, 0x9e, 0x7f, 0x9c, 0x0b, - 0x53, 0xec, 0xa8, 0x98, 0xe8, 0x1e, 0x6c, 0xb9, 0xd8, 0xc3, 0xee, 0x39, 0x9e, 0xb9, 0xf6, 0xe9, - 0xf6, 0xc5, 0x81, 0xc7, 0xbb, 0xb0, 0xe5, 0x10, 0x62, 0x87, 0xeb, 0xe2, 0xf3, 0xcd, 0xc4, 0xf3, - 0xb2, 0xfc, 0x14, 0x76, 0x39, 0x97, 0x26, 0x76, 0x88, 0x67, 0x51, 0xcd, 0xc5, 0x67, 0x23, 0xec, - 0xd1, 0x39, 0xf3, 0xdb, 0xec, 0xba, 0x29, 0x6e, 0x55, 0x71, 0xa9, 0x98, 0xe8, 0x33, 0xc8, 0x71, - 0xd8, 0x4b, 0x8b, 0x9e, 0x9a, 0xae, 0xfe, 0x32, 0x8c, 0x4b, 0x71, 0xdc, 0x0e, 0xbb, 0xff, 0xa5, - 0x7f, 0x3d, 0x07, 0x4a, 0xb0, 0x6e, 0x5a, 0x9e, 0xde, 0xb3, 0xb1, 0x20, 0x7a, 0x5d, 0x9d, 0x9d, - 0x43, 0x2c, 0xad, 0x87, 0x59, 0xfa, 0x77, 0x02, 0x32, 0xd1, 0x00, 0xae, 0xe4, 0x8b, 0x65, 0x1b, - 0xe2, 0x8b, 0x10, 0x5b, 0x31, 0xd1, 0x1d, 0x80, 0x81, 0xd7, 0xd7, 0x4e, 0xb1, 0xd5, 0x3f, 0xa5, - 0x9c, 0xaa, 0x84, 0x9a, 0x1e, 0x78, 0xfd, 0xaf, 0xb9, 0x00, 0x7d, 0x0c, 0x69, 0x3f, 0x71, 0xe2, - 0xfa, 0xfc, 0xcc, 0x05, 0xc8, 0x81, 0xcd, 0x80, 0x16, 0x46, 0xa3, 0x97, 0x4b, 0x16, 0x13, 0xfb, - 0x1b, 0xd5, 0xbd, 0xb2, 0xe8, 0xaa, 0x32, 0x1b, 0x85, 0x60, 0x42, 0xcb, 0x8c, 0xd2, 0xfa, 0x83, - 0xd7, 0x17, 0x85, 0x95, 0x3f, 0x7e, 0x5f, 0xd8, 0xbf, 0x46, 0x27, 0x32, 0x80, 0xa7, 0xde, 0xf0, - 0x3d, 0xf0, 0x13, 0x72, 0x21, 0xa3, 0x1b, 0x06, 0x76, 0x28, 0x36, 0x7d, 0x97, 0xa9, 0x0f, 0xef, - 0x72, 0x33, 0x70, 0x21, 0x7c, 0x2a, 0x90, 0x1d, 0x58, 0x43, 0xe6, 0x71, 0xd6, 0x30, 0xbc, 0x32, - 0xef, 0xf4, 0xba, 0xca, 0xbc, 0xaa, 0x19, 0x01, 0x6c, 0xfb, 0x1d, 0x85, 0x7e, 0x01, 0x29, 0x8f, - 0xea, 0x74, 0x24, 0xe6, 0x21, 0x53, 0xbd, 0x57, 0x5e, 0xf6, 0xa0, 0x95, 0xfd, 0x4a, 0x76, 0xb8, - 0xba, 0xea, 0xc3, 0x96, 0xcd, 0xc9, 0xef, 0x12, 0xb0, 0xb5, 0xd0, 0x4a, 0x1f, 0xac, 0x05, 0xf2, - 0x00, 0x41, 0x13, 0xe3, 0xa0, 0x07, 0x42, 0x12, 0xf4, 0x18, 0xd2, 0x73, 0x5e, 0x92, 0xd7, 0xe3, - 0x65, 0x3d, 0x98, 0x31, 0x44, 0x61, 0x2b, 0xb0, 0x35, 0xfc, 0xff, 0x55, 0x34, 0x33, 0xf3, 0x21, - 0x4a, 0x3a, 0xaf, 0xc3, 0xda, 0xff, 0x5a, 0x87, 0xc8, 0x24, 0x4e, 0x53, 0x90, 0xe4, 0x8f, 0xf0, - 0xf5, 0x1f, 0xac, 0xf7, 0xb0, 0x9f, 0x83, 0x35, 0xfe, 0xd2, 0xcf, 0xa8, 0x0f, 0x8e, 0xe8, 0x00, - 0xd2, 0xa6, 0xe5, 0x62, 0x83, 0x5a, 0x44, 0xf0, 0x9e, 0xa9, 0xee, 0x2f, 0x4f, 0x83, 0x47, 0xd5, - 0x0c, 0xf4, 0xd5, 0x39, 0x14, 0x7d, 0x05, 0x40, 0x4e, 0x4e, 0xb0, 0x2b, 0x0a, 0x98, 0xba, 0x5e, - 0x01, 0xd3, 0x1c, 0xc2, 0x2b, 0xf8, 0x14, 0xb6, 0x5d, 0x3c, 0xd0, 0xad, 0xa1, 0x35, 0xec, 0x6b, - 0x21, 0x4b, 0xd7, 0x1c, 0x11, 0x34, 0x03, 0x1f, 0xcd, 0x4c, 0x36, 0x61, 0xd3, 0xc5, 0x06, 0xb6, - 0xce, 0xfd, 0x29, 0xe7, 0x24, 0x5f, 0xc3, 0xd6, 0x8d, 0x00, 0xe5, 0x5b, 0x49, 0x8a, 0x05, 0x98, - 0xe6, 0x0b, 0xb0, 0xcc, 0x54, 0x7e, 0xc4, 0x12, 0x14, 0x60, 0x74, 0x00, 0x29, 0x7d, 0x40, 0x46, - 0x43, 0x9a, 0x83, 0x1f, 0x6d, 0x46, 0x19, 0x52, 0xd5, 0x47, 0xa3, 0x23, 0xd8, 0x20, 0x0e, 0x1e, - 0x6a, 0xbe, 0xb1, 0x8d, 0xff, 0xca, 0x18, 0x30, 0x13, 0x35, 0x61, 0x70, 0x0f, 0xd6, 0x67, 0x1b, - 0xf9, 0x06, 0x6f, 0xa9, 0xb5, 0x9e, 0xbf, 0x8a, 0x6b, 0x90, 0xc6, 0xaf, 0x1c, 0xcb, 0xc5, 0x9a, - 0x4e, 0x73, 0x9b, 0x9c, 0x3b, 0xa9, 0x2c, 0x3e, 0x75, 0xca, 0xc1, 0xa7, 0x4e, 0xb9, 0x1b, 0x7c, - 0xea, 0xd4, 0xd7, 0x59, 0x14, 0xdf, 0x7c, 0x5f, 0x88, 0xa9, 0xeb, 0x02, 0x56, 0xa3, 0xe8, 0xcb, - 0xd9, 0x84, 0x64, 0x78, 0x6b, 0x7d, 0xf2, 0x9e, 0xd6, 0x5a, 0x3a, 0x1f, 0x5b, 0xe1, 0xf9, 0x70, - 0xe0, 0x86, 0xbf, 0xa8, 0xbc, 0x27, 0xba, 0x89, 0xd1, 0xaf, 0x21, 0x29, 0x66, 0x3e, 0xf6, 0xbe, - 0x99, 0xaf, 0xb0, 0x18, 0xff, 0x79, 0x51, 0xb8, 0x77, 0xcd, 0x99, 0x57, 0x85, 0xe1, 0xd2, 0x9f, - 0x63, 0xb0, 0xfb, 0x74, 0x84, 0x47, 0xd8, 0x6c, 0x05, 0x81, 0xb7, 0x5d, 0x72, 0x6e, 0xb1, 0x19, - 0xcd, 0xc1, 0x5a, 0xf0, 0x8d, 0x10, 0x13, 0xb3, 0xe5, 0x1f, 0x51, 0x1d, 0xb6, 0xbc, 0x91, 0xe3, - 0xd8, 0x63, 0xcd, 0x11, 0xca, 0x6c, 0x6a, 0xdf, 0x1d, 0xa1, 0x9a, 0x11, 0x08, 0xdf, 0xba, 0x89, - 0x9e, 0x01, 0x18, 0x2e, 0xd6, 0xd9, 0xde, 0xd0, 0xc5, 0x60, 0xbf, 0xbb, 0x0a, 0x77, 0x58, 0x86, - 0x3f, 0x5c, 0x14, 0x3e, 0x1a, 0xeb, 0x03, 0xfb, 0x8b, 0xd2, 0x1c, 0x5b, 0xe2, 0xa5, 0x49, 0xfb, - 0x82, 0x1a, 0x2d, 0xfd, 0x23, 0x01, 0x12, 0x5b, 0x29, 0x97, 0x32, 0xf2, 0x9a, 0x3a, 0xd5, 0xc3, - 0x0f, 0x7d, 0x2c, 0xf2, 0xd0, 0xd7, 0x61, 0xab, 0x47, 0x86, 0x26, 0x36, 0x35, 0x9b, 0x18, 0x2f, - 0x34, 0xcb, 0xf4, 0x78, 0x56, 0xab, 0x75, 0xe9, 0x87, 0x8b, 0xc2, 0x2d, 0xe1, 0x76, 0x41, 0xa1, - 0xa4, 0x6e, 0x0a, 0x49, 0x8b, 0x18, 0x2f, 0x14, 0xd3, 0x43, 0xbf, 0x81, 0x9b, 0xb3, 0x0e, 0x08, - 0xc8, 0x71, 0xd9, 0x37, 0x16, 0x63, 0xa7, 0xb5, 0xbc, 0x49, 0x96, 0xc7, 0x5b, 0xbe, 0x2c, 0x96, - 0x87, 0xd4, 0x1d, 0xab, 0xc8, 0xbe, 0x74, 0x81, 0x08, 0x48, 0x67, 0xbc, 0x9a, 0xda, 0x55, 0x51, - 0xac, 0xf2, 0x28, 0x1e, 0x2e, 0x8f, 0x62, 0x49, 0x27, 0xa8, 0xb9, 0xb3, 0xab, 0x2f, 0xc2, 0x8d, - 0x9c, 0x0c, 0x35, 0xb2, 0x34, 0x80, 0xdd, 0x25, 0x61, 0xa3, 0x2c, 0x24, 0x5e, 0xe0, 0xb1, 0xdf, - 0x51, 0xec, 0x4f, 0xf4, 0x18, 0x92, 0xe7, 0xba, 0x3d, 0xc2, 0xfc, 0xe5, 0xdf, 0xa8, 0xde, 0x5d, - 0x1e, 0x5f, 0x78, 0x38, 0x54, 0x01, 0xfa, 0x22, 0xfe, 0x79, 0xec, 0xfe, 0x9f, 0x62, 0x90, 0x89, - 0xbe, 0xe0, 0xe8, 0x2b, 0xb8, 0x7d, 0xa4, 0x36, 0x65, 0x55, 0x6b, 0x2a, 0xaa, 0xdc, 0xe8, 0x2a, - 0x47, 0x87, 0xda, 0xf1, 0x61, 0xa7, 0x2d, 0x37, 0x94, 0x03, 0x45, 0x6e, 0x66, 0x57, 0xa4, 0x3b, - 0x93, 0x69, 0x71, 0x2f, 0x0a, 0x3a, 0x1e, 0x7a, 0x0e, 0x36, 0xac, 0x13, 0x0b, 0x9b, 0xa8, 0x0c, - 0x37, 0x17, 0xf1, 0xf5, 0xe3, 0xe7, 0xd9, 0x98, 0xb4, 0x33, 0x99, 0x16, 0x3f, 0x8a, 0xe2, 0xea, - 0xa3, 0x31, 0x7a, 0x00, 0xdb, 0x8b, 0xfa, 0x1d, 0xb9, 0xd5, 0xca, 0xc6, 0xa5, 0x5b, 0x93, 0x69, - 0x11, 0x45, 0x01, 0x1d, 0x6c, 0xdb, 0xd2, 0xea, 0xef, 0xbf, 0xcd, 0xaf, 0xdc, 0xff, 0x6d, 0x1c, - 0x36, 0x23, 0x3b, 0x14, 0x3d, 0x06, 0x49, 0x95, 0x9f, 0x1e, 0xcb, 0x9d, 0xae, 0xd6, 0xe9, 0xd6, - 0xba, 0xc7, 0x9d, 0x85, 0xc0, 0x3f, 0x9e, 0x4c, 0x8b, 0xb9, 0x08, 0x24, 0x1c, 0xf7, 0x97, 0x70, - 0x7b, 0x01, 0x7d, 0x78, 0xd4, 0xd5, 0xe4, 0x67, 0x72, 0xe3, 0xb8, 0x2b, 0x37, 0xb3, 0xb1, 0x2b, - 0xe0, 0x87, 0x84, 0xca, 0xaf, 0xb0, 0x31, 0xa2, 0xd8, 0x44, 0x9f, 0x43, 0x6e, 0x01, 0xde, 0x39, - 0x6e, 0x34, 0x64, 0xb9, 0x29, 0x37, 0xb3, 0x71, 0x49, 0x9a, 0x4c, 0x8b, 0xb7, 0x22, 0xd8, 0xce, - 0xc8, 0x30, 0x30, 0x66, 0xf3, 0x5c, 0x85, 0x9d, 0x05, 0xe4, 0x41, 0x4d, 0x69, 0xc9, 0xcd, 0x6c, - 0x42, 0xda, 0x9d, 0x4c, 0x8b, 0x37, 0x23, 0xb0, 0x03, 0xdd, 0xb2, 0xb1, 0xe9, 0x53, 0xf0, 0x87, - 0x04, 0x6c, 0x84, 0x1e, 0x49, 0x16, 0x83, 0xa0, 0xf2, 0xca, 0xf4, 0x79, 0x0c, 0x21, 0xf5, 0x70, - 0xf2, 0x3f, 0x83, 0xbd, 0x08, 0x72, 0x21, 0xf5, 0x45, 0x68, 0x38, 0xf1, 0xcf, 0x16, 0x9c, 0x32, - 0xe8, 0x93, 0x5a, 0xb7, 0xf1, 0x35, 0x4f, 0x7c, 0x6f, 0x32, 0x2d, 0xee, 0x44, 0x91, 0x4f, 0xd8, - 0x32, 0xc1, 0x26, 0x6a, 0x40, 0x3e, 0x02, 0x6c, 0xd7, 0xd4, 0xae, 0x52, 0x6b, 0xb5, 0x9e, 0xcf, - 0xe0, 0x09, 0xa9, 0x30, 0x99, 0x16, 0x6f, 0x87, 0xe0, 0x6d, 0xdd, 0xa5, 0x96, 0x6e, 0xdb, 0xe3, - 0xc0, 0xc8, 0x4f, 0xe0, 0x56, 0xc4, 0x48, 0xe3, 0xe8, 0x49, 0xbb, 0x25, 0xb3, 0xa8, 0x57, 0xa5, - 0xdc, 0x64, 0x5a, 0xdc, 0x0e, 0x81, 0x1b, 0x64, 0xe0, 0xd8, 0x98, 0x0a, 0xca, 0xa3, 0xa8, 0xda, - 0x61, 0x43, 0x66, 0x94, 0x27, 0x05, 0xe5, 0x61, 0x90, 0x3e, 0x34, 0x30, 0xfb, 0x8d, 0x34, 0xeb, - 0x53, 0x1f, 0x23, 0x3f, 0x6b, 0x2b, 0xaa, 0xdc, 0xcc, 0xa6, 0x42, 0x7d, 0x2a, 0x20, 0x32, 0xdf, - 0x75, 0x41, 0x91, 0xc6, 0xb0, 0xe1, 0xff, 0x34, 0xec, 0x8e, 0x1d, 0x8c, 0x1e, 0xc2, 0x4e, 0xad, - 0xd9, 0x54, 0xe5, 0x4e, 0x47, 0xeb, 0x3e, 0x6f, 0xcb, 0xda, 0xa3, 0xaa, 0x56, 0x7f, 0xde, 0x95, - 0x3b, 0xd9, 0x15, 0x61, 0x27, 0xa4, 0xfb, 0xa8, 0x5a, 0x1f, 0x53, 0xec, 0x5d, 0x82, 0x54, 0x1f, - 0xf8, 0x90, 0xd8, 0x25, 0x48, 0xf5, 0x01, 0x87, 0x08, 0xd7, 0xf5, 0xa7, 0xaf, 0xff, 0x9e, 0x5f, - 0x79, 0xfd, 0x26, 0x1f, 0xfb, 0xee, 0x4d, 0x3e, 0xf6, 0xb7, 0x37, 0xf9, 0xd8, 0x37, 0x6f, 0xf3, - 0x2b, 0xdf, 0xbd, 0xcd, 0xaf, 0xfc, 0xe5, 0x6d, 0x7e, 0xe5, 0x57, 0x8f, 0x22, 0x1b, 0x8f, 0x3d, - 0x1c, 0x9f, 0x92, 0x93, 0x13, 0xcb, 0xb0, 0x74, 0xdb, 0x3f, 0x57, 0xc2, 0xff, 0x75, 0xc2, 0x57, - 0x60, 0x2f, 0xc5, 0x17, 0xcc, 0xa3, 0xff, 0x04, 0x00, 0x00, 0xff, 0xff, 0x37, 0xd4, 0x57, 0xfc, - 0x5b, 0x11, 0x00, 0x00, + // 1584 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x58, 0x4b, 0x6f, 0xdb, 0xca, + 0x15, 0x16, 0x25, 0x59, 0x96, 0x8e, 0x6d, 0x59, 0x77, 0xae, 0x1f, 0xb2, 0x72, 0x23, 0x09, 0x46, + 0x6f, 0x62, 0x04, 0xb8, 0x92, 0x23, 0xb7, 0xb8, 0x7d, 0xdc, 0xa4, 0xd0, 0x83, 0x46, 0x08, 0x38, + 0xb6, 0x4c, 0xc9, 0x68, 0xdc, 0x0d, 0x41, 0x91, 0x23, 0x99, 0x28, 0xa5, 0xa1, 0xc9, 0x91, 0x1d, + 0xed, 0xba, 0x29, 0x50, 0x68, 0x95, 0x3f, 0xa0, 0x4d, 0xb3, 0xeb, 0x2f, 0xe8, 0x4f, 0xc8, 0xa2, + 0x8b, 0x2c, 0x8b, 0xa2, 0x70, 0xda, 0xe4, 0x1f, 0x74, 0x59, 0x14, 0x68, 0x31, 0x43, 0x52, 0x22, + 0x15, 0x3b, 0x71, 0xda, 0x64, 0x65, 0xcd, 0x99, 0xf3, 0x9d, 0xc7, 0x77, 0x1e, 0x23, 0x19, 0x76, + 0x34, 0xd2, 0xd7, 0xf1, 0xf3, 0xb2, 0x69, 0x9c, 0x0f, 0x0d, 0xdd, 0xa0, 0xa3, 0xf2, 0xc5, 0xc3, + 0x0e, 0xa6, 0xea, 0xc3, 0x99, 0xa4, 0x64, 0xd9, 0x84, 0x12, 0x94, 0x75, 0x35, 0x4b, 0x33, 0xb9, + 0xa7, 0x99, 0x5b, 0xeb, 0x91, 0x1e, 0xe1, 0x4a, 0x65, 0xf6, 0xc9, 0xd5, 0xcf, 0xe5, 0x35, 0xe2, + 0xf4, 0x89, 0x53, 0xee, 0xa8, 0x0e, 0x9e, 0x1a, 0xd5, 0x88, 0x31, 0xf0, 0xee, 0x0b, 0x3d, 0x42, + 0x7a, 0x26, 0x2e, 0xf3, 0x53, 0x67, 0xd8, 0x2d, 0x53, 0xa3, 0x8f, 0x1d, 0xaa, 0xf6, 0x2d, 0x57, + 0x61, 0xfb, 0xdf, 0x51, 0x88, 0x37, 0x55, 0xc3, 0x46, 0x69, 0x88, 0x1a, 0x7a, 0x56, 0x28, 0x0a, + 0x3b, 0x71, 0x39, 0x6a, 0xe8, 0xe8, 0x1e, 0xac, 0x32, 0xa3, 0x0a, 0x33, 0xa6, 0xe8, 0x78, 0x40, + 0xfa, 0xd9, 0x68, 0x51, 0xd8, 0x49, 0xc9, 0x2b, 0x4c, 0x5c, 0x27, 0xc6, 0xa0, 0xc1, 0x84, 0x68, + 0x07, 0x32, 0xe7, 0x43, 0x42, 0x43, 0x8a, 0x31, 0xae, 0x98, 0xe6, 0xf2, 0x99, 0xe6, 0xb7, 0x90, + 0xc6, 0x8e, 0x66, 0x93, 0x4b, 0x45, 0xd5, 0x75, 0x1b, 0x3b, 0x4e, 0x36, 0xee, 0x1a, 0x74, 0xa5, + 0x55, 0x57, 0x88, 0xb6, 0x61, 0xc5, 0x54, 0x1d, 0xaa, 0x10, 0x5b, 0xc7, 0xb6, 0x62, 0xe8, 0xd9, + 0x05, 0x1e, 0xd3, 0x12, 0x13, 0x1e, 0x31, 0x99, 0xa4, 0x23, 0x09, 0x80, 0xeb, 0x58, 0xb6, 0xa1, + 0xe1, 0x6c, 0x82, 0x99, 0xa9, 0x3d, 0xf8, 0xeb, 0x55, 0xe1, 0x5e, 0xcf, 0xa0, 0x67, 0xc3, 0x4e, + 0x49, 0x23, 0xfd, 0xb2, 0xc7, 0x8c, 0xfb, 0xe7, 0x3b, 0x47, 0xff, 0x4d, 0x99, 0x8e, 0x2c, 0xec, + 0x94, 0x1a, 0x58, 0x93, 0x53, 0x0c, 0xdd, 0x64, 0x60, 0x16, 0xbf, 0x36, 0xb4, 0x6d, 0x3c, 0xa0, + 0x4a, 0x47, 0xa5, 0xda, 0x19, 0xf3, 0xb8, 0xc8, 0x3d, 0xa6, 0x3d, 0x79, 0x8d, 0x89, 0x25, 0x1d, + 0xfd, 0x02, 0x72, 0xce, 0xa5, 0x6a, 0x29, 0x5d, 0xcc, 0x92, 0x35, 0x4d, 0xac, 0x51, 0x62, 0x4f, + 0x73, 0x49, 0xf2, 0x5c, 0x36, 0x99, 0xc6, 0x3e, 0xc6, 0x75, 0xff, 0xde, 0xcf, 0x6a, 0x1d, 0x12, + 0xaa, 0x65, 0x31, 0xe3, 0x29, 0x6e, 0x7c, 0x41, 0xb5, 0x2c, 0x49, 0xdf, 0x7e, 0xc9, 0xe8, 0x27, + 0xc4, 0x7c, 0x8f, 0xfe, 0x4d, 0x58, 0xb4, 0x54, 0x83, 0xe7, 0x1f, 0xe5, 0xc2, 0x04, 0x3b, 0x4a, + 0x3a, 0xba, 0x0f, 0xab, 0x36, 0x76, 0xb0, 0x7d, 0x81, 0xa7, 0xae, 0x3d, 0xba, 0x3d, 0xb1, 0xef, + 0xf1, 0x1e, 0xac, 0x5a, 0x84, 0x98, 0xc1, 0xba, 0x78, 0x7c, 0x33, 0xf1, 0xac, 0x2c, 0x3f, 0x81, + 0x4d, 0xce, 0xa5, 0x8e, 0x2d, 0xe2, 0x18, 0x54, 0xb1, 0xf1, 0xf9, 0x10, 0x3b, 0x74, 0xc6, 0xfc, + 0x1a, 0xbb, 0x6e, 0xb8, 0xb7, 0xb2, 0x7b, 0x29, 0xe9, 0xe8, 0x7b, 0xc8, 0x72, 0xd8, 0xa5, 0x41, + 0xcf, 0x74, 0x5b, 0xbd, 0x0c, 0xe2, 0x12, 0x1c, 0xb7, 0xce, 0xee, 0x7f, 0xe5, 0x5d, 0xcf, 0x80, + 0x39, 0x48, 0xea, 0x86, 0xa3, 0x76, 0x4c, 0xec, 0x12, 0x9d, 0x94, 0xa7, 0xe7, 0x00, 0x4b, 0xc9, + 0x20, 0x4b, 0xff, 0x89, 0x41, 0x3a, 0x1c, 0xc0, 0xb5, 0x7c, 0xb1, 0x6c, 0x03, 0x7c, 0x11, 0x62, + 0x4a, 0x3a, 0xba, 0x0b, 0xd0, 0x77, 0x7a, 0xca, 0x19, 0x36, 0x7a, 0x67, 0x94, 0x53, 0x15, 0x93, + 0x53, 0x7d, 0xa7, 0xf7, 0x84, 0x0b, 0xd0, 0x37, 0x90, 0xf2, 0x12, 0x27, 0xb6, 0xc7, 0xcf, 0x4c, + 0x80, 0x2c, 0x58, 0xf1, 0x69, 0x61, 0x34, 0x3a, 0xd9, 0x85, 0x62, 0x6c, 0x67, 0xa9, 0xb2, 0x55, + 0x72, 0xbb, 0xaa, 0xc4, 0x46, 0xc1, 0x9f, 0xd0, 0x12, 0xa3, 0xb4, 0xb6, 0xfb, 0xea, 0xaa, 0x10, + 0xf9, 0xe3, 0x9b, 0xc2, 0xce, 0x2d, 0x3a, 0x91, 0x01, 0x1c, 0x79, 0xd9, 0xf3, 0xc0, 0x4f, 0xc8, + 0x86, 0xb4, 0xaa, 0x69, 0xd8, 0xa2, 0x58, 0xf7, 0x5c, 0x26, 0x3e, 0xbf, 0xcb, 0x15, 0xdf, 0x85, + 0xeb, 0x53, 0x82, 0x4c, 0xdf, 0x18, 0x30, 0x8f, 0xd3, 0x86, 0xe1, 0x95, 0xf9, 0xa0, 0xd7, 0x38, + 0xf3, 0x2a, 0xa7, 0x5d, 0x60, 0xd3, 0xeb, 0x28, 0xf4, 0x4b, 0x48, 0x38, 0x54, 0xa5, 0x43, 0x77, + 0x1e, 0xd2, 0x95, 0xfb, 0xa5, 0x9b, 0x16, 0x5a, 0xc9, 0xab, 0x64, 0x8b, 0xab, 0xcb, 0x1e, 0xec, + 0xa6, 0x39, 0xf9, 0x5d, 0x0c, 0x56, 0xe7, 0x5a, 0xe9, 0xb3, 0xb5, 0x40, 0x1e, 0xc0, 0x6f, 0x62, + 0xec, 0xf7, 0x40, 0x40, 0x82, 0x7e, 0x80, 0xd4, 0x8c, 0x97, 0x85, 0xdb, 0xf1, 0x92, 0xf4, 0x67, + 0x0c, 0x51, 0x58, 0xf5, 0x6d, 0x0d, 0xbe, 0x5c, 0x45, 0xd3, 0x53, 0x1f, 0x6e, 0x49, 0x67, 0x75, + 0x58, 0xfc, 0x7f, 0xeb, 0x10, 0x9a, 0xc4, 0x49, 0x02, 0x16, 0xf8, 0x12, 0xbe, 0xfd, 0xc2, 0xfa, + 0x08, 0xfb, 0x59, 0x58, 0xe4, 0x9b, 0x7e, 0x4a, 0xbd, 0x7f, 0x44, 0xfb, 0x90, 0xd2, 0x0d, 0x1b, + 0x6b, 0xd4, 0x20, 0x2e, 0xef, 0xe9, 0xca, 0xce, 0xcd, 0x69, 0xf0, 0xa8, 0x1a, 0xbe, 0xbe, 0x3c, + 0x83, 0xa2, 0xc7, 0x00, 0xa4, 0xdb, 0xc5, 0xb6, 0x5b, 0xc0, 0xc4, 0xed, 0x0a, 0x98, 0xe2, 0x10, + 0x5e, 0xc1, 0x63, 0x58, 0xb3, 0x71, 0x5f, 0x35, 0x06, 0xc6, 0xa0, 0xa7, 0x04, 0x2c, 0xdd, 0x72, + 0x44, 0xd0, 0x14, 0x7c, 0x34, 0x35, 0xd9, 0x80, 0x15, 0x1b, 0x6b, 0xd8, 0xb8, 0xf0, 0xa6, 0x9c, + 0x93, 0x7c, 0x0b, 0x5b, 0xcb, 0x3e, 0xca, 0xb3, 0xb2, 0xe0, 0x3e, 0x80, 0x29, 0xfe, 0x00, 0x96, + 0x98, 0xca, 0x27, 0x3c, 0x82, 0x2e, 0x18, 0xed, 0x43, 0x42, 0xed, 0x93, 0xe1, 0x80, 0x66, 0xe1, + 0x93, 0xcd, 0x48, 0x03, 0x2a, 0x7b, 0x68, 0x74, 0x04, 0x4b, 0xc4, 0xc2, 0x03, 0xc5, 0x33, 0xb6, + 0xf4, 0x3f, 0x19, 0x03, 0x66, 0xa2, 0xea, 0x1a, 0xdc, 0x82, 0xe4, 0xf4, 0x45, 0x5e, 0xe6, 0x2d, + 0xb5, 0xd8, 0xf1, 0x9e, 0xe2, 0x2a, 0xa4, 0xf0, 0x73, 0xcb, 0xb0, 0xb1, 0xa2, 0xd2, 0xec, 0x0a, + 0xe7, 0x2e, 0x57, 0x72, 0xbf, 0xea, 0x94, 0xfc, 0xaf, 0x3a, 0xa5, 0xb6, 0xff, 0x55, 0xa7, 0x96, + 0x64, 0x51, 0xbc, 0x78, 0x53, 0x10, 0xe4, 0xa4, 0x0b, 0xab, 0x52, 0xf4, 0x68, 0x3a, 0x21, 0x69, + 0xde, 0x5a, 0xdf, 0x7e, 0xa4, 0xb5, 0x6e, 0x9c, 0x8f, 0xd5, 0xe0, 0x7c, 0xfc, 0x59, 0x80, 0xe5, + 0xaa, 0x46, 0x8d, 0x0b, 0xbc, 0xaf, 0xda, 0x7d, 0x6c, 0x07, 0xf4, 0x84, 0x80, 0xde, 0xcd, 0xbb, + 0x6a, 0x03, 0x12, 0x5d, 0x8e, 0xf4, 0x5e, 0x75, 0xef, 0x84, 0x28, 0x64, 0xf8, 0xa7, 0xe0, 0x8e, + 0x8e, 0x7f, 0xac, 0x69, 0xca, 0x2c, 0xef, 0x7f, 0x5d, 0x15, 0xee, 0xdf, 0x72, 0x8f, 0xc8, 0x69, + 0xd7, 0x87, 0xbf, 0xce, 0xb7, 0xff, 0x26, 0x00, 0x1c, 0x0f, 0xf1, 0xd0, 0x6b, 0xb8, 0xeb, 0x82, + 0x10, 0xbe, 0x74, 0x10, 0xe8, 0x19, 0x80, 0x66, 0x63, 0x95, 0xbd, 0x4f, 0x2a, 0xe5, 0x74, 0x7d, + 0xb8, 0xda, 0x77, 0x99, 0xc3, 0x7f, 0x5e, 0x15, 0xbe, 0x1a, 0xa9, 0x7d, 0xf3, 0xe7, 0xdb, 0x33, + 0xec, 0x36, 0x6f, 0x81, 0x94, 0x27, 0xa8, 0xd2, 0xed, 0x89, 0x00, 0xcb, 0x6e, 0x7a, 0x9f, 0xb9, + 0x5a, 0x22, 0x2c, 0x9d, 0x0f, 0xf1, 0xd0, 0x7f, 0xc2, 0xe3, 0x7c, 0xe1, 0xff, 0xe8, 0xe6, 0x0e, + 0x9b, 0x71, 0x2c, 0x03, 0x07, 0xf2, 0x2d, 0xfe, 0xe0, 0x4f, 0x02, 0xa4, 0xc3, 0x7b, 0x0d, 0x3d, + 0x86, 0x3b, 0x47, 0x72, 0x43, 0x94, 0x95, 0x86, 0x24, 0x8b, 0xf5, 0xb6, 0x74, 0x74, 0xa8, 0x9c, + 0x1c, 0xb6, 0x9a, 0x62, 0x5d, 0xda, 0x97, 0xc4, 0x46, 0x26, 0x92, 0xbb, 0x3b, 0x9e, 0x14, 0xb7, + 0xc2, 0xa0, 0x93, 0x81, 0x63, 0x61, 0xcd, 0xe8, 0x1a, 0x58, 0x47, 0x25, 0xf8, 0x7a, 0x1e, 0x5f, + 0x3b, 0x39, 0xcd, 0x08, 0xb9, 0xf5, 0xf1, 0xa4, 0xf8, 0x55, 0x18, 0x57, 0x1b, 0x8e, 0xd0, 0x2e, + 0xac, 0xcd, 0xeb, 0xb7, 0xc4, 0x83, 0x83, 0x4c, 0x34, 0xb7, 0x31, 0x9e, 0x14, 0x51, 0x18, 0xd0, + 0xc2, 0xa6, 0x99, 0x8b, 0xff, 0xfe, 0x65, 0x3e, 0xf2, 0xe0, 0xb7, 0x51, 0x58, 0x09, 0xbd, 0x2c, + 0xe8, 0x07, 0xc8, 0xc9, 0xe2, 0xf1, 0x89, 0xd8, 0x6a, 0x2b, 0xad, 0x76, 0xb5, 0x7d, 0xd2, 0x9a, + 0x0b, 0xfc, 0x9b, 0xf1, 0xa4, 0x98, 0x0d, 0x41, 0x82, 0x71, 0x3f, 0x82, 0x3b, 0x73, 0xe8, 0xc3, + 0xa3, 0xb6, 0x22, 0x3e, 0x13, 0xeb, 0x27, 0x6d, 0xb1, 0x91, 0x11, 0xae, 0x81, 0x1f, 0x12, 0x2a, + 0x3e, 0xc7, 0xda, 0x90, 0x62, 0x1d, 0xfd, 0x14, 0xb2, 0x73, 0xf0, 0xd6, 0x49, 0xbd, 0x2e, 0x8a, + 0x0d, 0xb1, 0x91, 0x89, 0xe6, 0x72, 0xe3, 0x49, 0x71, 0x23, 0x84, 0x6d, 0x0d, 0x35, 0x0d, 0x63, + 0x1d, 0xeb, 0xa8, 0x02, 0xeb, 0x73, 0xc8, 0xfd, 0xaa, 0x74, 0x20, 0x36, 0x32, 0xb1, 0xdc, 0xe6, + 0x78, 0x52, 0xfc, 0x3a, 0x04, 0xdb, 0x57, 0x0d, 0x13, 0xeb, 0x1e, 0x05, 0x7f, 0x88, 0xc1, 0x52, + 0x60, 0x75, 0xb0, 0x18, 0x5c, 0x2a, 0xaf, 0x4d, 0x9f, 0xc7, 0x10, 0x50, 0x0f, 0x26, 0xff, 0x33, + 0xd8, 0x0a, 0x21, 0xe7, 0x52, 0x9f, 0x87, 0x06, 0x13, 0xff, 0x7e, 0xce, 0x29, 0x83, 0x3e, 0xad, + 0xb6, 0xeb, 0x4f, 0x78, 0xe2, 0x5b, 0xe3, 0x49, 0x71, 0x3d, 0x8c, 0x7c, 0xca, 0x56, 0x2c, 0xd6, + 0x51, 0x1d, 0xf2, 0x21, 0x60, 0xb3, 0x2a, 0xb7, 0xa5, 0xea, 0xc1, 0xc1, 0xe9, 0x14, 0x1e, 0xcb, + 0x15, 0xc6, 0x93, 0xe2, 0x9d, 0x00, 0xbc, 0xa9, 0xda, 0xd4, 0x50, 0x4d, 0x73, 0xe4, 0x1b, 0xf9, + 0x31, 0x6c, 0x84, 0x8c, 0xd4, 0x8f, 0x9e, 0x36, 0x0f, 0x44, 0x16, 0x75, 0x3c, 0x97, 0x1d, 0x4f, + 0x8a, 0x6b, 0x01, 0x70, 0x9d, 0xf4, 0x2d, 0x13, 0x53, 0x97, 0xf2, 0x30, 0xaa, 0x7a, 0x58, 0x17, + 0x19, 0xe5, 0x0b, 0x2e, 0xe5, 0x41, 0x90, 0x3a, 0xd0, 0x30, 0xfb, 0xe5, 0x30, 0xed, 0x53, 0x0f, + 0x23, 0x3e, 0x6b, 0x4a, 0xb2, 0xd8, 0xc8, 0x24, 0x02, 0x7d, 0xea, 0x42, 0x44, 0xfe, 0x02, 0xf8, + 0x45, 0x1a, 0xc1, 0x92, 0xf7, 0x83, 0xa9, 0x3d, 0xb2, 0x30, 0x7a, 0x08, 0xeb, 0xd5, 0x46, 0x43, + 0x16, 0x5b, 0x2d, 0xa5, 0x7d, 0xda, 0x14, 0x95, 0xbd, 0x8a, 0x52, 0x3b, 0x6d, 0x8b, 0xad, 0x4c, + 0xc4, 0xb5, 0x13, 0xd0, 0xdd, 0xab, 0xd4, 0x46, 0x14, 0x3b, 0xef, 0x41, 0x2a, 0xbb, 0x1e, 0x44, + 0x78, 0x0f, 0x52, 0xd9, 0xe5, 0x10, 0xd7, 0x75, 0xed, 0xf8, 0xd5, 0x3f, 0xf2, 0x91, 0x57, 0x6f, + 0xf3, 0xc2, 0xeb, 0xb7, 0x79, 0xe1, 0xef, 0x6f, 0xf3, 0xc2, 0x8b, 0x77, 0xf9, 0xc8, 0xeb, 0x77, + 0xf9, 0xc8, 0x5f, 0xde, 0xe5, 0x23, 0xbf, 0xde, 0x0b, 0xad, 0x4b, 0xb6, 0x37, 0xbe, 0x23, 0xdd, + 0xae, 0xa1, 0x19, 0xaa, 0xe9, 0x9d, 0xcb, 0xc1, 0x7f, 0x28, 0xf0, 0xfd, 0xd9, 0x49, 0xf0, 0x75, + 0xb8, 0xf7, 0xdf, 0x00, 0x00, 0x00, 0xff, 0xff, 0xee, 0x6f, 0xd8, 0x18, 0x71, 0x10, 0x00, 0x00, } func (m *Pair) Marshal() (dAtA []byte, err error) { @@ -1137,7 +1128,7 @@ func (m *Order) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } -func (m *DepositsMade) Marshal() (dAtA []byte, err error) { +func (m *ActiveFarmer) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -1147,34 +1138,47 @@ func (m *DepositsMade) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *DepositsMade) MarshalTo(dAtA []byte) (int, error) { +func (m *ActiveFarmer) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *DepositsMade) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *ActiveFarmer) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int _ = l - if len(m.Coins) > 0 { - for iNdEx := len(m.Coins) - 1; iNdEx >= 0; iNdEx-- { - { - size, err := m.Coins[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintLiquidity(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0xa + { + size, err := m.FarmedPoolCoin.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err } + i -= size + i = encodeVarintLiquidity(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + if len(m.Farmer) > 0 { + i -= len(m.Farmer) + copy(dAtA[i:], m.Farmer) + i = encodeVarintLiquidity(dAtA, i, uint64(len(m.Farmer))) + i-- + dAtA[i] = 0x1a + } + if m.PoolId != 0 { + i = encodeVarintLiquidity(dAtA, i, uint64(m.PoolId)) + i-- + dAtA[i] = 0x10 + } + if m.AppId != 0 { + i = encodeVarintLiquidity(dAtA, i, uint64(m.AppId)) + i-- + dAtA[i] = 0x8 } return len(dAtA) - i, nil } -func (m *QueuedLiquidityProvider) Marshal() (dAtA []byte, err error) { +func (m *QueuedCoin) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -1184,49 +1188,38 @@ func (m *QueuedLiquidityProvider) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *QueuedLiquidityProvider) MarshalTo(dAtA []byte) (int, error) { +func (m *QueuedCoin) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *QueuedLiquidityProvider) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *QueuedCoin) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int _ = l - n7, err7 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.CreatedAt, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.CreatedAt):]) - if err7 != nil { - return 0, err7 + n8, err8 := github_com_gogo_protobuf_types.StdTimeMarshalTo(m.CreatedAt, dAtA[i-github_com_gogo_protobuf_types.SizeOfStdTime(m.CreatedAt):]) + if err8 != nil { + return 0, err8 } - i -= n7 - i = encodeVarintLiquidity(dAtA, i, uint64(n7)) + i -= n8 + i = encodeVarintLiquidity(dAtA, i, uint64(n8)) i-- - dAtA[i] = 0x1a - if len(m.SupplyProvided) > 0 { - for iNdEx := len(m.SupplyProvided) - 1; iNdEx >= 0; iNdEx-- { - { - size, err := m.SupplyProvided[iNdEx].MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintLiquidity(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x12 + dAtA[i] = 0x12 + { + size, err := m.FarmedPoolCoin.MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err } + i -= size + i = encodeVarintLiquidity(dAtA, i, uint64(size)) } - if len(m.Address) > 0 { - i -= len(m.Address) - copy(dAtA[i:], m.Address) - i = encodeVarintLiquidity(dAtA, i, uint64(len(m.Address))) - i-- - dAtA[i] = 0xa - } + i-- + dAtA[i] = 0xa return len(dAtA) - i, nil } -func (m *PoolLiquidityProvidersData) Marshal() (dAtA []byte, err error) { +func (m *QueuedFarmer) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -1236,25 +1229,20 @@ func (m *PoolLiquidityProvidersData) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *PoolLiquidityProvidersData) MarshalTo(dAtA []byte) (int, error) { +func (m *QueuedFarmer) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *PoolLiquidityProvidersData) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *QueuedFarmer) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int _ = l - if m.AppId != 0 { - i = encodeVarintLiquidity(dAtA, i, uint64(m.AppId)) - i-- - dAtA[i] = 0x28 - } - if len(m.QueuedLiquidityProviders) > 0 { - for iNdEx := len(m.QueuedLiquidityProviders) - 1; iNdEx >= 0; iNdEx-- { + if len(m.QueudCoins) > 0 { + for iNdEx := len(m.QueudCoins) - 1; iNdEx >= 0; iNdEx-- { { - size, err := m.QueuedLiquidityProviders[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + size, err := m.QueudCoins[iNdEx].MarshalToSizedBuffer(dAtA[:i]) if err != nil { return 0, err } @@ -1265,53 +1253,21 @@ func (m *PoolLiquidityProvidersData) MarshalToSizedBuffer(dAtA []byte) (int, err dAtA[i] = 0x22 } } - if len(m.LiquidityProviders) > 0 { - for k := range m.LiquidityProviders { - v := m.LiquidityProviders[k] - baseI := i - if v != nil { - { - size, err := v.MarshalToSizedBuffer(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarintLiquidity(dAtA, i, uint64(size)) - } - i-- - dAtA[i] = 0x12 - } - i -= len(k) - copy(dAtA[i:], k) - i = encodeVarintLiquidity(dAtA, i, uint64(len(k))) - i-- - dAtA[i] = 0xa - i = encodeVarintLiquidity(dAtA, i, uint64(baseI-i)) - i-- - dAtA[i] = 0x1a - } - } - if len(m.BondedLockIds) > 0 { - dAtA10 := make([]byte, len(m.BondedLockIds)*10) - var j9 int - for _, num := range m.BondedLockIds { - for num >= 1<<7 { - dAtA10[j9] = uint8(uint64(num)&0x7f | 0x80) - num >>= 7 - j9++ - } - dAtA10[j9] = uint8(num) - j9++ - } - i -= j9 - copy(dAtA[i:], dAtA10[:j9]) - i = encodeVarintLiquidity(dAtA, i, uint64(j9)) + if len(m.Farmer) > 0 { + i -= len(m.Farmer) + copy(dAtA[i:], m.Farmer) + i = encodeVarintLiquidity(dAtA, i, uint64(len(m.Farmer))) i-- - dAtA[i] = 0x12 + dAtA[i] = 0x1a } if m.PoolId != 0 { i = encodeVarintLiquidity(dAtA, i, uint64(m.PoolId)) i-- + dAtA[i] = 0x10 + } + if m.AppId != 0 { + i = encodeVarintLiquidity(dAtA, i, uint64(m.AppId)) + i-- dAtA[i] = 0x8 } return len(dAtA) - i, nil @@ -1530,80 +1486,62 @@ func (m *Order) Size() (n int) { return n } -func (m *DepositsMade) Size() (n int) { +func (m *ActiveFarmer) Size() (n int) { if m == nil { return 0 } var l int _ = l - if len(m.Coins) > 0 { - for _, e := range m.Coins { - l = e.Size() - n += 1 + l + sovLiquidity(uint64(l)) - } + if m.AppId != 0 { + n += 1 + sovLiquidity(uint64(m.AppId)) + } + if m.PoolId != 0 { + n += 1 + sovLiquidity(uint64(m.PoolId)) } + l = len(m.Farmer) + if l > 0 { + n += 1 + l + sovLiquidity(uint64(l)) + } + l = m.FarmedPoolCoin.Size() + n += 1 + l + sovLiquidity(uint64(l)) return n } -func (m *QueuedLiquidityProvider) Size() (n int) { +func (m *QueuedCoin) Size() (n int) { if m == nil { return 0 } var l int _ = l - l = len(m.Address) - if l > 0 { - n += 1 + l + sovLiquidity(uint64(l)) - } - if len(m.SupplyProvided) > 0 { - for _, e := range m.SupplyProvided { - l = e.Size() - n += 1 + l + sovLiquidity(uint64(l)) - } - } + l = m.FarmedPoolCoin.Size() + n += 1 + l + sovLiquidity(uint64(l)) l = github_com_gogo_protobuf_types.SizeOfStdTime(m.CreatedAt) n += 1 + l + sovLiquidity(uint64(l)) return n } -func (m *PoolLiquidityProvidersData) Size() (n int) { +func (m *QueuedFarmer) Size() (n int) { if m == nil { return 0 } var l int _ = l + if m.AppId != 0 { + n += 1 + sovLiquidity(uint64(m.AppId)) + } if m.PoolId != 0 { n += 1 + sovLiquidity(uint64(m.PoolId)) } - if len(m.BondedLockIds) > 0 { - l = 0 - for _, e := range m.BondedLockIds { - l += sovLiquidity(uint64(e)) - } - n += 1 + sovLiquidity(uint64(l)) + l - } - if len(m.LiquidityProviders) > 0 { - for k, v := range m.LiquidityProviders { - _ = k - _ = v - l = 0 - if v != nil { - l = v.Size() - l += 1 + sovLiquidity(uint64(l)) - } - mapEntrySize := 1 + len(k) + sovLiquidity(uint64(len(k))) + l - n += mapEntrySize + 1 + sovLiquidity(uint64(mapEntrySize)) - } + l = len(m.Farmer) + if l > 0 { + n += 1 + l + sovLiquidity(uint64(l)) } - if len(m.QueuedLiquidityProviders) > 0 { - for _, e := range m.QueuedLiquidityProviders { + if len(m.QueudCoins) > 0 { + for _, e := range m.QueudCoins { l = e.Size() n += 1 + l + sovLiquidity(uint64(l)) } } - if m.AppId != 0 { - n += 1 + sovLiquidity(uint64(m.AppId)) - } return n } @@ -3103,7 +3041,7 @@ func (m *Order) Unmarshal(dAtA []byte) error { } return nil } -func (m *DepositsMade) Unmarshal(dAtA []byte) error { +func (m *ActiveFarmer) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -3126,15 +3064,85 @@ func (m *DepositsMade) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: DepositsMade: wiretype end group for non-group") + return fmt.Errorf("proto: ActiveFarmer: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: DepositsMade: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: ActiveFarmer: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field AppId", wireType) + } + m.AppId = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowLiquidity + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.AppId |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field PoolId", wireType) + } + m.PoolId = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowLiquidity + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.PoolId |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Coins", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Farmer", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowLiquidity + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthLiquidity + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthLiquidity + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Farmer = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field FarmedPoolCoin", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -3161,8 +3169,7 @@ func (m *DepositsMade) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Coins = append(m.Coins, github_com_cosmos_cosmos_sdk_types.Coin{}) - if err := m.Coins[len(m.Coins)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.FarmedPoolCoin.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex @@ -3187,7 +3194,7 @@ func (m *DepositsMade) Unmarshal(dAtA []byte) error { } return nil } -func (m *QueuedLiquidityProvider) Unmarshal(dAtA []byte) error { +func (m *QueuedCoin) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -3210,47 +3217,15 @@ func (m *QueuedLiquidityProvider) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: QueuedLiquidityProvider: wiretype end group for non-group") + return fmt.Errorf("proto: QueuedCoin: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: QueuedLiquidityProvider: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: QueuedCoin: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Address", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowLiquidity - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthLiquidity - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthLiquidity - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Address = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field SupplyProvided", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field FarmedPoolCoin", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -3277,12 +3252,11 @@ func (m *QueuedLiquidityProvider) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.SupplyProvided = append(m.SupplyProvided, &types.Coin{}) - if err := m.SupplyProvided[len(m.SupplyProvided)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + if err := m.FarmedPoolCoin.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 3: + case 2: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field CreatedAt", wireType) } @@ -3336,7 +3310,7 @@ func (m *QueuedLiquidityProvider) Unmarshal(dAtA []byte) error { } return nil } -func (m *PoolLiquidityProvidersData) Unmarshal(dAtA []byte) error { +func (m *QueuedFarmer) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -3359,17 +3333,17 @@ func (m *PoolLiquidityProvidersData) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: PoolLiquidityProvidersData: wiretype end group for non-group") + return fmt.Errorf("proto: QueuedFarmer: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: PoolLiquidityProvidersData: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: QueuedFarmer: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field PoolId", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field AppId", wireType) } - m.PoolId = 0 + m.AppId = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowLiquidity @@ -3379,92 +3353,35 @@ func (m *PoolLiquidityProvidersData) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.PoolId |= uint64(b&0x7F) << shift + m.AppId |= uint64(b&0x7F) << shift if b < 0x80 { break } } case 2: - if wireType == 0 { - var v uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowLiquidity - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.BondedLockIds = append(m.BondedLockIds, v) - } else if wireType == 2 { - var packedLen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowLiquidity - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - packedLen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if packedLen < 0 { - return ErrInvalidLengthLiquidity - } - postIndex := iNdEx + packedLen - if postIndex < 0 { - return ErrInvalidLengthLiquidity - } - if postIndex > l { + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field PoolId", wireType) + } + m.PoolId = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowLiquidity + } + if iNdEx >= l { return io.ErrUnexpectedEOF } - var elementCount int - var count int - for _, integer := range dAtA[iNdEx:postIndex] { - if integer < 128 { - count++ - } - } - elementCount = count - if elementCount != 0 && len(m.BondedLockIds) == 0 { - m.BondedLockIds = make([]uint64, 0, elementCount) - } - for iNdEx < postIndex { - var v uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowLiquidity - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.BondedLockIds = append(m.BondedLockIds, v) - } - } else { - return fmt.Errorf("proto: wrong wireType = %d for field BondedLockIds", wireType) + b := dAtA[iNdEx] + iNdEx++ + m.PoolId |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } } case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field LiquidityProviders", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Farmer", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowLiquidity @@ -3474,124 +3391,27 @@ func (m *PoolLiquidityProvidersData) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthLiquidity } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthLiquidity } if postIndex > l { return io.ErrUnexpectedEOF } - if m.LiquidityProviders == nil { - m.LiquidityProviders = make(map[string]*DepositsMade) - } - var mapkey string - var mapvalue *DepositsMade - for iNdEx < postIndex { - entryPreIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowLiquidity - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - if fieldNum == 1 { - var stringLenmapkey uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowLiquidity - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLenmapkey |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLenmapkey := int(stringLenmapkey) - if intStringLenmapkey < 0 { - return ErrInvalidLengthLiquidity - } - postStringIndexmapkey := iNdEx + intStringLenmapkey - if postStringIndexmapkey < 0 { - return ErrInvalidLengthLiquidity - } - if postStringIndexmapkey > l { - return io.ErrUnexpectedEOF - } - mapkey = string(dAtA[iNdEx:postStringIndexmapkey]) - iNdEx = postStringIndexmapkey - } else if fieldNum == 2 { - var mapmsglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowLiquidity - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - mapmsglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if mapmsglen < 0 { - return ErrInvalidLengthLiquidity - } - postmsgIndex := iNdEx + mapmsglen - if postmsgIndex < 0 { - return ErrInvalidLengthLiquidity - } - if postmsgIndex > l { - return io.ErrUnexpectedEOF - } - mapvalue = &DepositsMade{} - if err := mapvalue.Unmarshal(dAtA[iNdEx:postmsgIndex]); err != nil { - return err - } - iNdEx = postmsgIndex - } else { - iNdEx = entryPreIndex - skippy, err := skipLiquidity(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthLiquidity - } - if (iNdEx + skippy) > postIndex { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - m.LiquidityProviders[mapkey] = mapvalue + m.Farmer = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 4: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field QueuedLiquidityProviders", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field QueudCoins", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -3618,30 +3438,11 @@ func (m *PoolLiquidityProvidersData) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.QueuedLiquidityProviders = append(m.QueuedLiquidityProviders, &QueuedLiquidityProvider{}) - if err := m.QueuedLiquidityProviders[len(m.QueuedLiquidityProviders)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + m.QueudCoins = append(m.QueudCoins, &QueuedCoin{}) + if err := m.QueudCoins[len(m.QueudCoins)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { return err } iNdEx = postIndex - case 5: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field AppId", wireType) - } - m.AppId = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowLiquidity - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.AppId |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } default: iNdEx = preIndex skippy, err := skipLiquidity(dAtA[iNdEx:]) diff --git a/x/liquidity/types/msgs.go b/x/liquidity/types/msgs.go index 73933e498..9e162512c 100644 --- a/x/liquidity/types/msgs.go +++ b/x/liquidity/types/msgs.go @@ -18,22 +18,22 @@ var ( _ sdk.Msg = (*MsgMarketOrder)(nil) _ sdk.Msg = (*MsgCancelOrder)(nil) _ sdk.Msg = (*MsgCancelAllOrders)(nil) - _ sdk.Msg = (*MsgTokensSoftLock)(nil) - _ sdk.Msg = (*MsgTokensSoftUnlock)(nil) + _ sdk.Msg = (*MsgFarm)(nil) + _ sdk.Msg = (*MsgUnfarm)(nil) ) // Message types for the liquidity module. const ( - TypeMsgCreatePair = "create_pair" - TypeMsgCreatePool = "create_pool" - TypeMsgDeposit = "deposit" - TypeMsgWithdraw = "withdraw" - TypeMsgLimitOrder = "limit_order" - TypeMsgMarketOrder = "market_order" - TypeMsgCancelOrder = "cancel_order" - TypeMsgCancelAllOrders = "cancel_all_orders" - TypeMsgTokensSoftLock = "tokens_soft_lock" - TypeMsgTokensSoftUnlock = "tokens_soft_unlock" //nolint:gosec + TypeMsgCreatePair = "create_pair" + TypeMsgCreatePool = "create_pool" + TypeMsgDeposit = "deposit" + TypeMsgWithdraw = "withdraw" + TypeMsgLimitOrder = "limit_order" + TypeMsgMarketOrder = "market_order" + TypeMsgCancelOrder = "cancel_order" + TypeMsgCancelAllOrders = "cancel_all_orders" + TypeMsgFarm = "farm" + TypeMsgUnfarm = "unfarm" //nolint:gosec ) // NewMsgCreatePair returns a new MsgCreatePair. @@ -554,112 +554,118 @@ func (msg MsgCancelAllOrders) GetOrderer() sdk.AccAddress { return addr } -// NewMsgSoftLock creates a new MsgTokensSoftLock. -func NewMsgSoftLock( +// NewMsgFarm creates a new MsgFarm. +func NewMsgFarm( appID uint64, - //nolint - depositor sdk.AccAddress, poolID uint64, - softLockCoin sdk.Coin, -) *MsgTokensSoftLock { - return &MsgTokensSoftLock{ - AppId: appID, - Depositor: depositor.String(), - PoolId: poolID, - SoftLockCoin: softLockCoin, + //nolint + farmer sdk.AccAddress, + poolCoin sdk.Coin, +) *MsgFarm { + return &MsgFarm{ + AppId: appID, + PoolId: poolID, + Farmer: farmer.String(), + FarmingPoolCoin: poolCoin, } } -func (msg MsgTokensSoftLock) Route() string { return RouterKey } +func (msg MsgFarm) Route() string { return RouterKey } -func (msg MsgTokensSoftLock) Type() string { return TypeMsgTokensSoftLock } +func (msg MsgFarm) Type() string { return TypeMsgFarm } -func (msg MsgTokensSoftLock) ValidateBasic() error { - if _, err := sdk.AccAddressFromBech32(msg.Depositor); err != nil { +func (msg MsgFarm) ValidateBasic() error { + if _, err := sdk.AccAddressFromBech32(msg.Farmer); err != nil { return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid withdrawer address: %v", err) } if msg.PoolId == 0 { return sdkerrors.Wrap(sdkerrors.ErrInvalidRequest, "pool id must not be 0") } - if err := msg.SoftLockCoin.Validate(); err != nil { + if msg.AppId == 0 { + return sdkerrors.Wrap(sdkerrors.ErrInvalidRequest, "app id must not be 0") + } + if err := msg.FarmingPoolCoin.Validate(); err != nil { return err } - if !msg.SoftLockCoin.IsPositive() { + if !msg.FarmingPoolCoin.IsPositive() { return sdkerrors.Wrap(sdkerrors.ErrInvalidRequest, "coin must be positive") } return nil } -func (msg MsgTokensSoftLock) GetSignBytes() []byte { +func (msg MsgFarm) GetSignBytes() []byte { return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(&msg)) } -func (msg MsgTokensSoftLock) GetSigners() []sdk.AccAddress { - addr, err := sdk.AccAddressFromBech32(msg.Depositor) +func (msg MsgFarm) GetSigners() []sdk.AccAddress { + addr, err := sdk.AccAddressFromBech32(msg.Farmer) if err != nil { panic(err) } return []sdk.AccAddress{addr} } -func (msg MsgTokensSoftLock) GetDepositor() sdk.AccAddress { - addr, err := sdk.AccAddressFromBech32(msg.Depositor) +func (msg MsgFarm) GetFarmer() sdk.AccAddress { + addr, err := sdk.AccAddressFromBech32(msg.Farmer) if err != nil { panic(err) } return addr } -// NewMsgSoftUnlock creates a new MsgTokensSoftUnlock. -func NewMsgSoftUnlock( +// NewMsgUnfarm creates a new MsgUnfarm. +func NewMsgUnfarm( appID uint64, - //nolint - depositor sdk.AccAddress, poolID uint64, - softUnlockCoin sdk.Coin, -) *MsgTokensSoftUnlock { - return &MsgTokensSoftUnlock{ - AppId: appID, - Depositor: depositor.String(), - PoolId: poolID, - SoftUnlockCoin: softUnlockCoin, + //nolint + farmer sdk.AccAddress, + poolCoin sdk.Coin, +) *MsgUnfarm { + return &MsgUnfarm{ + AppId: appID, + PoolId: poolID, + Farmer: farmer.String(), + UnfarmingPoolCoin: poolCoin, } } -func (msg MsgTokensSoftUnlock) Route() string { return RouterKey } +func (msg MsgUnfarm) Route() string { return RouterKey } -func (msg MsgTokensSoftUnlock) Type() string { return TypeMsgTokensSoftUnlock } +func (msg MsgUnfarm) Type() string { return TypeMsgUnfarm } -func (msg MsgTokensSoftUnlock) ValidateBasic() error { - if _, err := sdk.AccAddressFromBech32(msg.Depositor); err != nil { +func (msg MsgUnfarm) ValidateBasic() error { + if _, err := sdk.AccAddressFromBech32(msg.Farmer); err != nil { return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "invalid withdrawer address: %v", err) } if msg.PoolId == 0 { return sdkerrors.Wrap(sdkerrors.ErrInvalidRequest, "pool id must not be 0") } - if err := msg.SoftUnlockCoin.Validate(); err != nil { + if msg.AppId == 0 { + return sdkerrors.Wrap(sdkerrors.ErrInvalidRequest, "app id must not be 0") + } + if err := msg.UnfarmingPoolCoin.Validate(); err != nil { return err } - if !msg.SoftUnlockCoin.IsPositive() { + if !msg.UnfarmingPoolCoin.IsPositive() { return sdkerrors.Wrap(sdkerrors.ErrInvalidRequest, "coin must be positive") } return nil } -func (msg MsgTokensSoftUnlock) GetSignBytes() []byte { +func (msg MsgUnfarm) GetSignBytes() []byte { return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(&msg)) } -func (msg MsgTokensSoftUnlock) GetSigners() []sdk.AccAddress { - addr, err := sdk.AccAddressFromBech32(msg.Depositor) +func (msg MsgUnfarm) GetSigners() []sdk.AccAddress { + addr, err := sdk.AccAddressFromBech32(msg.Farmer) if err != nil { panic(err) } return []sdk.AccAddress{addr} } -func (msg MsgTokensSoftUnlock) GetDepositor() sdk.AccAddress { - addr, err := sdk.AccAddressFromBech32(msg.Depositor) +func (msg MsgUnfarm) GetFarmer() sdk.AccAddress { + addr, err := sdk.AccAddressFromBech32(msg.Farmer) if err != nil { panic(err) } diff --git a/x/liquidity/types/msgs_test.go b/x/liquidity/types/msgs_test.go index e0f58b7d8..47057718c 100644 --- a/x/liquidity/types/msgs_test.go +++ b/x/liquidity/types/msgs_test.go @@ -582,50 +582,50 @@ func TestMsgCancelAllOrders(t *testing.T) { } } -func TestMsgSoftLock(t *testing.T) { +func TestMsgFarm(t *testing.T) { for _, tc := range []struct { name string - malleate func(msg *types.MsgTokensSoftLock) + malleate func(msg *types.MsgFarm) expectedErr string }{ { "happy case", - func(msg *types.MsgTokensSoftLock) {}, + func(msg *types.MsgFarm) {}, "", }, { - "invalid orderer", - func(msg *types.MsgTokensSoftLock) { - msg.Depositor = "invalidaddr" + "invalid farmer", + func(msg *types.MsgFarm) { + msg.Farmer = "invalidaddr" }, "invalid withdrawer address: decoding bech32 failed: invalid separator index -1: invalid address", }, { "invalid pool id", - func(msg *types.MsgTokensSoftLock) { + func(msg *types.MsgFarm) { msg.PoolId = 0 }, "pool id must not be 0: invalid request", }, { "invalid pool coin", - func(msg *types.MsgTokensSoftLock) { - msg.SoftLockCoin = utils.ParseCoin("0pool1-1") + func(msg *types.MsgFarm) { + msg.FarmingPoolCoin = utils.ParseCoin("0pool1-1") }, "coin must be positive: invalid request", }, } { t.Run(tc.name, func(t *testing.T) { - msg := types.NewMsgSoftLock(1, sdk.AccAddress(crypto.AddressHash([]byte("orderer"))), 1, utils.ParseCoin("123pool1-1")) + msg := types.NewMsgFarm(1, 1, sdk.AccAddress(crypto.AddressHash([]byte("orderer"))), utils.ParseCoin("123pool1-1")) tc.malleate(msg) - require.Equal(t, types.TypeMsgTokensSoftLock, msg.Type()) + require.Equal(t, types.TypeMsgFarm, msg.Type()) require.Equal(t, types.RouterKey, msg.Route()) err := msg.ValidateBasic() if tc.expectedErr == "" { require.NoError(t, err) signers := msg.GetSigners() require.Len(t, signers, 1) - require.Equal(t, msg.GetDepositor(), signers[0]) + require.Equal(t, msg.GetFarmer(), signers[0]) } else { require.EqualError(t, err, tc.expectedErr) } @@ -633,50 +633,50 @@ func TestMsgSoftLock(t *testing.T) { } } -func TestMsgSoftUnlock(t *testing.T) { +func TestMsgUnfarm(t *testing.T) { for _, tc := range []struct { name string - malleate func(msg *types.MsgTokensSoftUnlock) + malleate func(msg *types.MsgUnfarm) expectedErr string }{ { "happy case", - func(msg *types.MsgTokensSoftUnlock) {}, + func(msg *types.MsgUnfarm) {}, "", }, { - "invalid orderer", - func(msg *types.MsgTokensSoftUnlock) { - msg.Depositor = "invalidaddr" + "invalid farmer", + func(msg *types.MsgUnfarm) { + msg.Farmer = "invalidaddr" }, "invalid withdrawer address: decoding bech32 failed: invalid separator index -1: invalid address", }, { "invalid pool id", - func(msg *types.MsgTokensSoftUnlock) { + func(msg *types.MsgUnfarm) { msg.PoolId = 0 }, "pool id must not be 0: invalid request", }, { "invalid pool coin", - func(msg *types.MsgTokensSoftUnlock) { - msg.SoftUnlockCoin = utils.ParseCoin("0pool1-1") + func(msg *types.MsgUnfarm) { + msg.UnfarmingPoolCoin = utils.ParseCoin("0pool1-1") }, "coin must be positive: invalid request", }, } { t.Run(tc.name, func(t *testing.T) { - msg := types.NewMsgSoftUnlock(1, sdk.AccAddress(crypto.AddressHash([]byte("orderer"))), 1, utils.ParseCoin("123pool1-1")) + msg := types.NewMsgUnfarm(1, 1, sdk.AccAddress(crypto.AddressHash([]byte("orderer"))), utils.ParseCoin("123pool1-1")) tc.malleate(msg) - require.Equal(t, types.TypeMsgTokensSoftUnlock, msg.Type()) + require.Equal(t, types.TypeMsgUnfarm, msg.Type()) require.Equal(t, types.RouterKey, msg.Route()) err := msg.ValidateBasic() if tc.expectedErr == "" { require.NoError(t, err) signers := msg.GetSigners() require.Len(t, signers, 1) - require.Equal(t, msg.GetDepositor(), signers[0]) + require.Equal(t, msg.GetFarmer(), signers[0]) } else { require.EqualError(t, err, tc.expectedErr) } diff --git a/x/liquidity/types/params.go b/x/liquidity/types/params.go index ccd476906..8386a6a68 100644 --- a/x/liquidity/types/params.go +++ b/x/liquidity/types/params.go @@ -3,6 +3,7 @@ package types import ( "time" + sdk "github.com/cosmos/cosmos-sdk/types" paramstypes "github.com/cosmos/cosmos-sdk/x/params/types" ) @@ -17,6 +18,15 @@ const ( ModuleAddressNameSplitter = "|" ) +const ( + CreatePoolGas = sdk.Gas(67500) + CancelOrderGas = sdk.Gas(65000) + CancelAllOrdersGas = sdk.Gas(74000) + FarmGas = sdk.Gas(62300) + UnfarmGas = sdk.Gas(69000) + gasCostPerIteration = sdk.Gas(10) +) + var ( // GlobalEscrowAddress is an escrow for deposit/withdraw requests. GlobalEscrowAddress = DeriveAddress(AddressType32Bytes, ModuleName, "GlobalEscrow") diff --git a/x/liquidity/types/query.pb.go b/x/liquidity/types/query.pb.go index 92249133e..e3aed7efb 100644 --- a/x/liquidity/types/query.pb.go +++ b/x/liquidity/types/query.pb.go @@ -1577,25 +1577,25 @@ func (m *PoolResponse) GetAppId() uint64 { return 0 } -// QuerySoftLockRequest is request type for the Query/SoftLock RPC method. -type QuerySoftLockRequest struct { - PoolId uint64 `protobuf:"varint,1,opt,name=pool_id,json=poolId,proto3" json:"pool_id,omitempty"` - Depositor string `protobuf:"bytes,2,opt,name=depositor,proto3" json:"depositor,omitempty"` - AppId uint64 `protobuf:"varint,3,opt,name=app_id,json=appId,proto3" json:"app_id,omitempty"` +// QueryFarmerRequest is request type for the Query/Farmer RPC method. +type QueryFarmerRequest struct { + AppId uint64 `protobuf:"varint,1,opt,name=app_id,json=appId,proto3" json:"app_id,omitempty"` + PoolId uint64 `protobuf:"varint,2,opt,name=pool_id,json=poolId,proto3" json:"pool_id,omitempty"` + Farmer string `protobuf:"bytes,3,opt,name=farmer,proto3" json:"farmer,omitempty"` } -func (m *QuerySoftLockRequest) Reset() { *m = QuerySoftLockRequest{} } -func (m *QuerySoftLockRequest) String() string { return proto.CompactTextString(m) } -func (*QuerySoftLockRequest) ProtoMessage() {} -func (*QuerySoftLockRequest) Descriptor() ([]byte, []int) { +func (m *QueryFarmerRequest) Reset() { *m = QueryFarmerRequest{} } +func (m *QueryFarmerRequest) String() string { return proto.CompactTextString(m) } +func (*QueryFarmerRequest) ProtoMessage() {} +func (*QueryFarmerRequest) Descriptor() ([]byte, []int) { return fileDescriptor_d297ec7fcddea2d4, []int{28} } -func (m *QuerySoftLockRequest) XXX_Unmarshal(b []byte) error { +func (m *QueryFarmerRequest) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *QuerySoftLockRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *QueryFarmerRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_QuerySoftLockRequest.Marshal(b, m, deterministic) + return xxx_messageInfo_QueryFarmerRequest.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -1605,37 +1605,37 @@ func (m *QuerySoftLockRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte return b[:n], nil } } -func (m *QuerySoftLockRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_QuerySoftLockRequest.Merge(m, src) +func (m *QueryFarmerRequest) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryFarmerRequest.Merge(m, src) } -func (m *QuerySoftLockRequest) XXX_Size() int { +func (m *QueryFarmerRequest) XXX_Size() int { return m.Size() } -func (m *QuerySoftLockRequest) XXX_DiscardUnknown() { - xxx_messageInfo_QuerySoftLockRequest.DiscardUnknown(m) +func (m *QueryFarmerRequest) XXX_DiscardUnknown() { + xxx_messageInfo_QueryFarmerRequest.DiscardUnknown(m) } -var xxx_messageInfo_QuerySoftLockRequest proto.InternalMessageInfo +var xxx_messageInfo_QueryFarmerRequest proto.InternalMessageInfo -func (m *QuerySoftLockRequest) GetPoolId() uint64 { +func (m *QueryFarmerRequest) GetAppId() uint64 { if m != nil { - return m.PoolId + return m.AppId } return 0 } -func (m *QuerySoftLockRequest) GetDepositor() string { +func (m *QueryFarmerRequest) GetPoolId() uint64 { if m != nil { - return m.Depositor + return m.PoolId } - return "" + return 0 } -func (m *QuerySoftLockRequest) GetAppId() uint64 { +func (m *QueryFarmerRequest) GetFarmer() string { if m != nil { - return m.AppId + return m.Farmer } - return 0 + return "" } type QueuedPoolCoin struct { @@ -1690,24 +1690,24 @@ func (m *QueuedPoolCoin) GetDequeAt() time.Time { return time.Time{} } -// QuerySoftLockResponse is response type for the Query/SoftLock RPC method. -type QuerySoftLockResponse struct { +// QueryFarmerResponse is response type for the Query/Farmer RPC method. +type QueryFarmerResponse struct { ActivePoolCoin types.Coin `protobuf:"bytes,1,opt,name=active_pool_coin,json=activePoolCoin,proto3,castrepeated=github.com/cosmos/cosmos-sdk/types.Coin" json:"active_pool_coin"` QueuedPoolCoin []QueuedPoolCoin `protobuf:"bytes,2,rep,name=queued_pool_coin,json=queuedPoolCoin,proto3" json:"queued_pool_coin"` } -func (m *QuerySoftLockResponse) Reset() { *m = QuerySoftLockResponse{} } -func (m *QuerySoftLockResponse) String() string { return proto.CompactTextString(m) } -func (*QuerySoftLockResponse) ProtoMessage() {} -func (*QuerySoftLockResponse) Descriptor() ([]byte, []int) { +func (m *QueryFarmerResponse) Reset() { *m = QueryFarmerResponse{} } +func (m *QueryFarmerResponse) String() string { return proto.CompactTextString(m) } +func (*QueryFarmerResponse) ProtoMessage() {} +func (*QueryFarmerResponse) Descriptor() ([]byte, []int) { return fileDescriptor_d297ec7fcddea2d4, []int{30} } -func (m *QuerySoftLockResponse) XXX_Unmarshal(b []byte) error { +func (m *QueryFarmerResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *QuerySoftLockResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *QueryFarmerResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_QuerySoftLockResponse.Marshal(b, m, deterministic) + return xxx_messageInfo_QueryFarmerResponse.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -1717,26 +1717,26 @@ func (m *QuerySoftLockResponse) XXX_Marshal(b []byte, deterministic bool) ([]byt return b[:n], nil } } -func (m *QuerySoftLockResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_QuerySoftLockResponse.Merge(m, src) +func (m *QueryFarmerResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_QueryFarmerResponse.Merge(m, src) } -func (m *QuerySoftLockResponse) XXX_Size() int { +func (m *QueryFarmerResponse) XXX_Size() int { return m.Size() } -func (m *QuerySoftLockResponse) XXX_DiscardUnknown() { - xxx_messageInfo_QuerySoftLockResponse.DiscardUnknown(m) +func (m *QueryFarmerResponse) XXX_DiscardUnknown() { + xxx_messageInfo_QueryFarmerResponse.DiscardUnknown(m) } -var xxx_messageInfo_QuerySoftLockResponse proto.InternalMessageInfo +var xxx_messageInfo_QueryFarmerResponse proto.InternalMessageInfo -func (m *QuerySoftLockResponse) GetActivePoolCoin() types.Coin { +func (m *QueryFarmerResponse) GetActivePoolCoin() types.Coin { if m != nil { return m.ActivePoolCoin } return types.Coin{} } -func (m *QuerySoftLockResponse) GetQueuedPoolCoin() []QueuedPoolCoin { +func (m *QueryFarmerResponse) GetQueuedPoolCoin() []QueuedPoolCoin { if m != nil { return m.QueuedPoolCoin } @@ -2188,9 +2188,9 @@ func init() { proto.RegisterType((*QueryOrderResponse)(nil), "comdex.liquidity.v1beta1.QueryOrderResponse") proto.RegisterType((*QueryOrdersByOrdererRequest)(nil), "comdex.liquidity.v1beta1.QueryOrdersByOrdererRequest") proto.RegisterType((*PoolResponse)(nil), "comdex.liquidity.v1beta1.PoolResponse") - proto.RegisterType((*QuerySoftLockRequest)(nil), "comdex.liquidity.v1beta1.QuerySoftLockRequest") + proto.RegisterType((*QueryFarmerRequest)(nil), "comdex.liquidity.v1beta1.QueryFarmerRequest") proto.RegisterType((*QueuedPoolCoin)(nil), "comdex.liquidity.v1beta1.QueuedPoolCoin") - proto.RegisterType((*QuerySoftLockResponse)(nil), "comdex.liquidity.v1beta1.QuerySoftLockResponse") + proto.RegisterType((*QueryFarmerResponse)(nil), "comdex.liquidity.v1beta1.QueryFarmerResponse") proto.RegisterType((*QueryDeserializePoolCoinRequest)(nil), "comdex.liquidity.v1beta1.QueryDeserializePoolCoinRequest") proto.RegisterType((*QueryDeserializePoolCoinResponse)(nil), "comdex.liquidity.v1beta1.QueryDeserializePoolCoinResponse") proto.RegisterType((*QueryPoolsIncentivesRequest)(nil), "comdex.liquidity.v1beta1.QueryPoolsIncentivesRequest") @@ -2205,144 +2205,144 @@ func init() { } var fileDescriptor_d297ec7fcddea2d4 = []byte{ - // 2192 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x58, 0x4f, 0x6c, 0x1c, 0x57, - 0x19, 0xcf, 0xac, 0xbd, 0x8e, 0xfd, 0x39, 0x5e, 0x3b, 0x2f, 0x0e, 0xdd, 0x6e, 0x82, 0xd7, 0x0c, - 0xa1, 0x59, 0xf2, 0x67, 0xa7, 0x89, 0x93, 0xb6, 0x71, 0xd4, 0x2a, 0xde, 0x38, 0x2e, 0x6e, 0x12, - 0x91, 0x6c, 0xa8, 0x0a, 0x55, 0x61, 0x99, 0xdd, 0x79, 0xde, 0x8c, 0xb2, 0xbb, 0x6f, 0x3c, 0x33, - 0x1b, 0xd7, 0xb5, 0x2c, 0x24, 0x24, 0x2e, 0x08, 0x89, 0x4a, 0xfc, 0x11, 0x08, 0x71, 0xe0, 0x04, - 0xea, 0x85, 0x0b, 0x70, 0xe0, 0x82, 0xc4, 0x01, 0xf5, 0x40, 0x45, 0xab, 0x5e, 0x38, 0xa0, 0x14, - 0x12, 0x24, 0x24, 0x8e, 0x39, 0x71, 0x44, 0xef, 0xbd, 0x6f, 0x66, 0x67, 0x26, 0x33, 0x9e, 0x59, - 0x6b, 0x7d, 0x89, 0xb3, 0xef, 0x7d, 0x7f, 0x7e, 0xdf, 0xef, 0xfb, 0xde, 0x37, 0xef, 0x7d, 0x70, - 0xaa, 0xc5, 0xba, 0x06, 0x7d, 0x57, 0xeb, 0x98, 0x9b, 0x7d, 0xd3, 0x30, 0xdd, 0x6d, 0xed, 0xe1, - 0x85, 0x26, 0x75, 0xf5, 0x0b, 0xda, 0x66, 0x9f, 0xda, 0xdb, 0x55, 0xcb, 0x66, 0x2e, 0x23, 0x45, - 0x29, 0x55, 0xf5, 0xa5, 0xaa, 0x28, 0x55, 0x9a, 0x6f, 0xb3, 0x36, 0x13, 0x42, 0x1a, 0xff, 0x9f, - 0x94, 0x2f, 0x9d, 0x6c, 0x33, 0xd6, 0xee, 0x50, 0x4d, 0xb7, 0x4c, 0x4d, 0xef, 0xf5, 0x98, 0xab, - 0xbb, 0x26, 0xeb, 0x39, 0xb8, 0xbb, 0xd0, 0x62, 0x4e, 0x97, 0x39, 0x5a, 0x53, 0x77, 0xa8, 0xef, - 0xae, 0xc5, 0xcc, 0x1e, 0xee, 0x9f, 0x09, 0xee, 0x0b, 0x18, 0xbe, 0x94, 0xa5, 0xb7, 0xcd, 0x9e, - 0x30, 0x86, 0xb2, 0x95, 0x44, 0xfc, 0x03, 0xac, 0x52, 0xf2, 0x4b, 0x89, 0x92, 0x96, 0x6e, 0xeb, - 0x5d, 0x0f, 0x5c, 0x19, 0xa1, 0x8b, 0x5f, 0xcd, 0xfe, 0x86, 0xe6, 0x9a, 0x5d, 0xea, 0xb8, 0x7a, - 0xd7, 0xf2, 0xd0, 0x47, 0x05, 0x8c, 0xbe, 0x1d, 0x40, 0xa4, 0xce, 0x03, 0xb9, 0xcb, 0x31, 0xdf, - 0x11, 0x56, 0xeb, 0x74, 0xb3, 0x4f, 0x1d, 0x57, 0x7d, 0x13, 0x8e, 0x85, 0x56, 0x1d, 0x8b, 0xf5, - 0x1c, 0x4a, 0x5e, 0x83, 0x09, 0xe9, 0xbd, 0xa8, 0x2c, 0x2a, 0x95, 0xe9, 0x8b, 0x8b, 0xd5, 0x24, - 0xa6, 0xab, 0x52, 0xb3, 0x36, 0xfe, 0xe1, 0xa3, 0xf2, 0xa1, 0x3a, 0x6a, 0xa9, 0x17, 0xe1, 0x79, - 0x61, 0xf6, 0x75, 0xda, 0xa3, 0xb6, 0xd9, 0x0a, 0xf9, 0x24, 0xc7, 0x61, 0x42, 0xb7, 0xac, 0x86, - 0x69, 0x08, 0xe3, 0xe3, 0xf5, 0xbc, 0x6e, 0x59, 0xeb, 0x86, 0xda, 0x82, 0x52, 0x9c, 0x0e, 0x22, - 0xba, 0x11, 0x41, 0x74, 0x3a, 0x19, 0x51, 0xc8, 0x40, 0x04, 0xd8, 0xaf, 0x15, 0x38, 0x2a, 0x03, - 0x66, 0xac, 0xe3, 0x23, 0x7a, 0x0e, 0x0e, 0x5b, 0xba, 0x69, 0x0f, 0x20, 0x4d, 0xf0, 0x9f, 0xeb, - 0x06, 0x29, 0xc1, 0xa4, 0x61, 0x3a, 0x7a, 0xb3, 0x43, 0x8d, 0x62, 0x6e, 0x51, 0xa9, 0x4c, 0xd5, - 0xfd, 0xdf, 0x64, 0x0d, 0x60, 0x90, 0xf6, 0xe2, 0x98, 0x40, 0xf5, 0x42, 0x55, 0xd6, 0x48, 0x95, - 0xd7, 0x48, 0x55, 0x96, 0xea, 0x80, 0xa8, 0x36, 0x45, 0x87, 0xf5, 0x80, 0x66, 0x80, 0x8e, 0xf1, - 0x20, 0x1d, 0xbf, 0x52, 0xbc, 0x84, 0x49, 0xa4, 0xc8, 0x43, 0x0d, 0xf2, 0x16, 0x5f, 0x28, 0x2a, - 0x8b, 0x63, 0xe8, 0x30, 0x29, 0x31, 0x8c, 0x75, 0x3c, 0x35, 0x64, 0x41, 0xaa, 0x92, 0xd7, 0x43, - 0xc8, 0x73, 0x3e, 0x9f, 0x7b, 0x23, 0x97, 0x96, 0x82, 0xd0, 0xd5, 0x1a, 0xcc, 0xf9, 0x10, 0x83, - 0x5c, 0x32, 0xd6, 0x09, 0x72, 0xc9, 0x58, 0x67, 0xdd, 0x08, 0xc4, 0x99, 0x0b, 0xc6, 0xf9, 0x66, - 0x20, 0x21, 0x7e, 0x94, 0xd7, 0x60, 0x9c, 0x6b, 0x61, 0xae, 0x87, 0x0b, 0x52, 0x68, 0xaa, 0x4d, - 0x58, 0xf4, 0xcd, 0xd6, 0xb6, 0xeb, 0xd4, 0xa1, 0xf6, 0x43, 0xba, 0x62, 0x18, 0x36, 0x75, 0xfc, - 0xb4, 0x9f, 0x86, 0x59, 0x5b, 0x6e, 0x34, 0x74, 0xb9, 0x23, 0x1c, 0x4e, 0xd5, 0x0b, 0x76, 0x48, - 0x3e, 0x09, 0xfa, 0xb7, 0xa1, 0x1c, 0xf0, 0xc1, 0xff, 0xbd, 0xce, 0xcc, 0xde, 0x2a, 0xed, 0xb1, - 0xae, 0xe7, 0xe2, 0x05, 0x98, 0x15, 0x6c, 0xf0, 0x36, 0xd2, 0x30, 0xf8, 0x0e, 0xba, 0x98, 0xb1, - 0x82, 0xe2, 0x49, 0x1e, 0xbe, 0xef, 0x97, 0xab, 0x6e, 0xda, 0x3e, 0xee, 0xcf, 0xc1, 0x84, 0x30, - 0x25, 0x8b, 0x60, 0xaa, 0x8e, 0xbf, 0x22, 0x15, 0x99, 0x1b, 0x41, 0x45, 0x8e, 0x05, 0xc1, 0xfc, - 0xdc, 0xaf, 0x48, 0x09, 0x06, 0x73, 0xb5, 0x0c, 0x79, 0x7e, 0x5a, 0xbc, 0x8a, 0x5c, 0xd8, 0xab, - 0x55, 0x98, 0xb6, 0x5f, 0x89, 0x5c, 0xe5, 0x00, 0x2a, 0x51, 0x37, 0xed, 0xd4, 0x53, 0x9d, 0x40, - 0xf6, 0xed, 0x00, 0xd7, 0x7e, 0x74, 0xaf, 0xc0, 0x38, 0xd7, 0xc2, 0x4a, 0xcc, 0x16, 0x9c, 0xd0, - 0x50, 0x7f, 0xa2, 0xc0, 0x09, 0x61, 0x6f, 0x95, 0x5a, 0xcc, 0x31, 0x5d, 0x84, 0xe5, 0xec, 0xf3, - 0xa0, 0x8c, 0xaa, 0xdf, 0xa8, 0x7f, 0x56, 0xe0, 0x64, 0x3c, 0x2e, 0x0c, 0xf9, 0x1b, 0x30, 0x67, - 0xc8, 0xad, 0x86, 0x8d, 0x7b, 0x98, 0xdb, 0x4a, 0x72, 0xf8, 0x61, 0x63, 0x48, 0xc4, 0xac, 0x11, - 0x76, 0x31, 0xba, 0x7c, 0xbf, 0x83, 0x1f, 0x8b, 0xb0, 0xdb, 0x54, 0x6a, 0x0b, 0x90, 0xf3, 0x69, - 0xcd, 0x99, 0x46, 0x52, 0xa5, 0x3f, 0x8c, 0xcd, 0x9c, 0x4f, 0xd0, 0x5b, 0x30, 0x1b, 0x21, 0x08, - 0xcb, 0x63, 0x58, 0x7e, 0x0a, 0x61, 0x7e, 0xd4, 0x9f, 0x7a, 0xa9, 0x79, 0xcb, 0x74, 0xef, 0x1b, - 0xb6, 0xbe, 0x95, 0xb9, 0x66, 0x0e, 0xf8, 0xe8, 0xff, 0x45, 0x81, 0xcf, 0x27, 0x00, 0x43, 0x4e, - 0xde, 0x81, 0xa3, 0x5b, 0xb8, 0x17, 0xad, 0x9a, 0x2f, 0x27, 0xb3, 0x12, 0x31, 0x87, 0xb4, 0xcc, - 0x6d, 0x45, 0xbc, 0x8c, 0xae, 0x6e, 0xbe, 0x89, 0x99, 0x8d, 0x38, 0x1e, 0x55, 0xe1, 0xbc, 0x17, - 0x9f, 0x3f, 0x9f, 0xa5, 0xb7, 0x61, 0x2e, 0xca, 0x12, 0x96, 0xce, 0xd0, 0x24, 0xcd, 0x46, 0x48, - 0x52, 0x7f, 0xe0, 0xb5, 0xe7, 0xaf, 0xda, 0x06, 0xb5, 0xd3, 0xef, 0x36, 0x07, 0x5c, 0x32, 0xbf, - 0x54, 0xf0, 0x6a, 0xe9, 0xc1, 0x41, 0x0a, 0x5e, 0x85, 0x09, 0x26, 0x56, 0xb0, 0x3a, 0xca, 0xc9, - 0x81, 0x0b, 0x4d, 0xef, 0x02, 0x27, 0x95, 0x46, 0x57, 0x09, 0xf7, 0xb0, 0xdb, 0x0b, 0x27, 0xa9, - 0x64, 0x65, 0xcc, 0xff, 0xdd, 0x60, 0x0a, 0xfc, 0x90, 0xaf, 0x42, 0x5e, 0xa0, 0xc7, 0x54, 0x67, - 0x8c, 0x58, 0xea, 0xa8, 0xbf, 0xf5, 0x3e, 0x23, 0x92, 0xc7, 0x9a, 0xfc, 0x3b, 0x80, 0x5c, 0x84, - 0xc3, 0x4c, 0xae, 0xe0, 0xcd, 0xc2, 0xfb, 0x19, 0x0c, 0x26, 0xb7, 0x47, 0xe6, 0x47, 0x7e, 0x73, - 0xfd, 0x5f, 0x0e, 0x8e, 0x84, 0x6e, 0x73, 0x92, 0x3c, 0xc5, 0x27, 0x2f, 0x11, 0x58, 0xcc, 0x85, - 0x6c, 0x2c, 0xf6, 0x42, 0x16, 0x73, 0xad, 0x1a, 0x8f, 0xbb, 0x56, 0xb5, 0x61, 0xb2, 0xa9, 0x77, - 0xf4, 0x5e, 0x8b, 0x3a, 0xc5, 0xbc, 0x28, 0xb7, 0xe7, 0x43, 0x71, 0x7a, 0x11, 0x72, 0x8d, 0xda, - 0x8b, 0x9c, 0xf6, 0x0f, 0x3e, 0x2b, 0x57, 0xda, 0xa6, 0x7b, 0xbf, 0xdf, 0xe4, 0x59, 0xd2, 0xf0, - 0xc9, 0x27, 0xff, 0x9c, 0x77, 0x8c, 0x07, 0x9a, 0xbb, 0x6d, 0x51, 0x47, 0x28, 0x38, 0x75, 0xdf, - 0x38, 0xb9, 0x0c, 0xcf, 0x75, 0x74, 0xc7, 0x6d, 0x44, 0xbe, 0x0b, 0x3c, 0xc4, 0x09, 0x11, 0xe2, - 0x3c, 0xdf, 0x0e, 0x7f, 0x04, 0xd6, 0x0d, 0xf2, 0x32, 0x14, 0x85, 0x5a, 0xb4, 0x29, 0x70, 0xbd, - 0xc3, 0x42, 0xef, 0x38, 0xdf, 0x8f, 0x74, 0x80, 0xd0, 0x1d, 0x61, 0x32, 0x48, 0xbd, 0x01, 0xf3, - 0xa2, 0x56, 0xee, 0xb1, 0x0d, 0xf7, 0x16, 0x6b, 0x3d, 0x48, 0xed, 0x6b, 0x27, 0x61, 0x0a, 0x21, - 0x33, 0x1b, 0x5f, 0x38, 0x83, 0x85, 0xa4, 0x2a, 0xff, 0x48, 0x81, 0xc2, 0xdd, 0x3e, 0xed, 0x53, - 0xc3, 0xbb, 0xf3, 0x92, 0x36, 0x4c, 0xf9, 0x09, 0xc1, 0x32, 0xdf, 0x83, 0x69, 0x0d, 0x99, 0x3e, - 0x9d, 0x91, 0xe9, 0xfa, 0xa4, 0x97, 0x56, 0x52, 0x87, 0x49, 0x83, 0x07, 0xd5, 0xd0, 0x5d, 0x3c, - 0xfd, 0xa5, 0xaa, 0x7c, 0xf9, 0x56, 0xbd, 0x97, 0x6f, 0xf5, 0x6b, 0xde, 0xd3, 0xb8, 0x76, 0x82, - 0x3b, 0x7a, 0xfa, 0xa8, 0x3c, 0xbb, 0xad, 0x77, 0x3b, 0xcb, 0xaa, 0xa7, 0xa9, 0xbe, 0xff, 0x59, - 0x59, 0xa9, 0x1f, 0x16, 0x3f, 0x57, 0x5c, 0xf5, 0x3f, 0x0a, 0x1c, 0x8f, 0xd0, 0x86, 0x95, 0xeb, - 0xc2, 0x9c, 0xde, 0x72, 0xcd, 0x87, 0xb4, 0x71, 0x90, 0xd1, 0x15, 0xa4, 0x0f, 0x9f, 0xcc, 0xaf, - 0xc3, 0xdc, 0xa6, 0xa0, 0x37, 0xe0, 0x35, 0x97, 0x76, 0x01, 0x0b, 0x27, 0xc4, 0xbb, 0x60, 0x6c, - 0x86, 0x56, 0xd5, 0x1d, 0x7c, 0xb1, 0xac, 0xf2, 0xe3, 0x64, 0xea, 0x1d, 0xf3, 0x3d, 0xdf, 0x6b, - 0x6a, 0xa9, 0x54, 0x60, 0x6e, 0x70, 0xe6, 0xf4, 0x2e, 0xeb, 0xf7, 0x5c, 0x3c, 0xbe, 0x05, 0x2f, - 0x3b, 0x2b, 0x62, 0x35, 0xa9, 0x6c, 0xbe, 0xa7, 0xe0, 0x9b, 0x2c, 0xd6, 0x3b, 0x32, 0xae, 0x43, - 0x9e, 0x3b, 0xf0, 0xbe, 0x0e, 0x23, 0x3d, 0xae, 0xd2, 0xb2, 0x7a, 0x09, 0x1b, 0xaa, 0x78, 0x58, - 0xaf, 0xf7, 0x5a, 0xb4, 0xc7, 0xd9, 0x4f, 0x1b, 0x4f, 0xfc, 0x35, 0x0f, 0x33, 0x5c, 0xc3, 0x57, - 0x48, 0x66, 0xaa, 0x0c, 0xd3, 0x5d, 0xdd, 0x71, 0xa9, 0x2d, 0xf2, 0x27, 0x48, 0x9a, 0xac, 0x83, - 0x5c, 0xe2, 0x26, 0xc8, 0x29, 0x28, 0xb4, 0xee, 0x9b, 0x1d, 0xcc, 0xaf, 0x69, 0xf0, 0x36, 0x37, - 0x56, 0x19, 0xaf, 0x1f, 0x11, 0xab, 0xc2, 0x8b, 0xe1, 0x10, 0x06, 0x33, 0x2e, 0x73, 0xf5, 0x4e, - 0xc3, 0xa6, 0x5b, 0xba, 0x6d, 0x38, 0xa2, 0xc5, 0x8d, 0xb6, 0xf2, 0x8e, 0x08, 0x07, 0x75, 0x69, - 0x9f, 0xec, 0xc0, 0x31, 0xc3, 0x74, 0x5c, 0xdb, 0x6c, 0xf6, 0x5d, 0x6a, 0xf8, 0x6e, 0xf3, 0x23, - 0x77, 0x4b, 0x02, 0x6e, 0x3c, 0xe7, 0x5f, 0x00, 0x09, 0xa6, 0x41, 0x2d, 0xd6, 0xba, 0xef, 0x60, - 0xdb, 0x9c, 0x16, 0x6b, 0x37, 0xc4, 0x12, 0xf9, 0x22, 0xcc, 0x6c, 0x98, 0x9d, 0x0e, 0x35, 0x3c, - 0x19, 0xd9, 0x22, 0x8f, 0xc8, 0x45, 0x14, 0xfa, 0x0e, 0x14, 0xc4, 0x6e, 0xc3, 0x9b, 0x7f, 0x89, - 0x0e, 0xc9, 0xf1, 0x47, 0xdb, 0xc4, 0x2a, 0x0a, 0xd4, 0x5e, 0xe5, 0xf8, 0xff, 0xfb, 0xa8, 0x5c, - 0x0c, 0x2b, 0x9e, 0x63, 0x5d, 0xd3, 0xa5, 0x5d, 0xcb, 0xdd, 0x7e, 0xfa, 0xa8, 0x7c, 0x5c, 0x76, - 0x90, 0xb0, 0x84, 0xfa, 0x33, 0xde, 0x47, 0x66, 0xc4, 0xa2, 0x67, 0x8d, 0x74, 0xe1, 0x68, 0x8f, - 0xbe, 0xeb, 0x36, 0xfc, 0x18, 0x39, 0x86, 0xa9, 0xd4, 0x56, 0x75, 0x0a, 0x5b, 0x55, 0x51, 0x3a, - 0x7a, 0xc6, 0x84, 0xec, 0x59, 0x73, 0x7c, 0x7d, 0x35, 0xb0, 0x4c, 0x16, 0x60, 0xda, 0x74, 0x1a, - 0xce, 0x96, 0x6e, 0x35, 0x36, 0x28, 0x2d, 0x82, 0x28, 0xb6, 0x29, 0xd3, 0xb9, 0xb7, 0xa5, 0x5b, - 0x6b, 0x94, 0x06, 0xca, 0x79, 0x3a, 0x58, 0xce, 0x2c, 0x70, 0x08, 0x82, 0x67, 0x00, 0x8f, 0xe1, - 0x1d, 0xfc, 0xc0, 0x9a, 0xfe, 0x16, 0x1e, 0xc8, 0xd3, 0x7b, 0xcf, 0x62, 0x7c, 0x53, 0xb2, 0x29, - 0x0c, 0x2c, 0xab, 0xb7, 0xf0, 0xc5, 0xb6, 0xa6, 0xdb, 0xdd, 0x41, 0x47, 0xda, 0xef, 0xd4, 0x68, - 0x17, 0xe1, 0x47, 0xad, 0x21, 0xfc, 0x6f, 0xc1, 0xf8, 0x01, 0xf5, 0x6a, 0x61, 0xf7, 0xe2, 0x3f, - 0x4e, 0x40, 0x5e, 0xf8, 0x27, 0x3f, 0x54, 0x60, 0x42, 0x4e, 0x1a, 0xc9, 0xb9, 0x3d, 0x9b, 0x73, - 0x64, 0xf2, 0x5a, 0x3a, 0x9f, 0x51, 0x5a, 0x46, 0xa4, 0x56, 0xbe, 0xfb, 0xe9, 0xbf, 0x7f, 0x94, - 0x53, 0xc9, 0xa2, 0x96, 0x32, 0x2f, 0x26, 0xbf, 0x57, 0x60, 0x26, 0x34, 0x02, 0x25, 0x4b, 0x29, - 0xae, 0xe2, 0xa6, 0xb4, 0xa5, 0x4b, 0xc3, 0x29, 0x21, 0xcc, 0x2b, 0x02, 0xe6, 0x12, 0xb9, 0x90, - 0x0c, 0xb3, 0x2d, 0x15, 0x1b, 0x12, 0xae, 0xb6, 0x23, 0xd3, 0xbb, 0x4b, 0x7e, 0xac, 0x40, 0x5e, - 0xb4, 0x64, 0x72, 0x36, 0x8d, 0x9a, 0xc0, 0xec, 0xb6, 0x74, 0x2e, 0x9b, 0x30, 0xe2, 0x7b, 0x51, - 0xe0, 0x3b, 0x43, 0x2a, 0x7b, 0xd0, 0xc8, 0x15, 0x06, 0xb0, 0x7e, 0xa1, 0xc0, 0xb8, 0x68, 0xda, - 0x67, 0x32, 0x38, 0xf2, 0x40, 0x9d, 0xcd, 0x24, 0x8b, 0x98, 0x96, 0x05, 0xa6, 0x4b, 0xe4, 0x62, - 0x56, 0x4c, 0xda, 0x0e, 0x9e, 0x95, 0x5d, 0xf2, 0xa9, 0x02, 0xf3, 0x71, 0x23, 0x4e, 0xb2, 0x9c, - 0x01, 0x41, 0xc2, 0x5c, 0x74, 0x38, 0xf4, 0x75, 0x81, 0xfe, 0x16, 0x79, 0x23, 0x33, 0xfa, 0xc8, - 0x15, 0x5f, 0xdb, 0x89, 0x2c, 0xec, 0x92, 0x4f, 0x14, 0x38, 0x16, 0x33, 0x54, 0x25, 0x57, 0x32, - 0x05, 0x15, 0x37, 0x88, 0x3d, 0xe8, 0x98, 0x22, 0xaf, 0x11, 0xcc, 0xd0, 0x60, 0x01, 0xcb, 0x5b, - 0x0c, 0x3d, 0x53, 0xa1, 0x04, 0x66, 0xbd, 0xe9, 0xe5, 0x1d, 0x9c, 0xc5, 0x66, 0x2a, 0x6f, 0xae, - 0x10, 0x29, 0x6f, 0xdd, 0xb4, 0xd3, 0xcb, 0x7b, 0x30, 0x59, 0x2d, 0x9d, 0xcd, 0x24, 0x3b, 0x44, - 0x79, 0x87, 0x30, 0x69, 0x3b, 0xf8, 0x3a, 0xdc, 0x25, 0x1f, 0x29, 0x30, 0x1b, 0x19, 0x53, 0x92, - 0xcb, 0x29, 0xce, 0xe3, 0xc7, 0xad, 0xa5, 0x97, 0x86, 0x55, 0x43, 0xf8, 0x37, 0x05, 0xfc, 0x1b, - 0xe4, 0xfa, 0xf0, 0xa7, 0x53, 0x8b, 0x8e, 0x51, 0xc9, 0xdf, 0x14, 0x28, 0x84, 0x1d, 0x91, 0x4b, - 0x43, 0xe1, 0xf2, 0xa2, 0xb9, 0x3c, 0xa4, 0x16, 0x06, 0x73, 0x47, 0x04, 0xf3, 0x06, 0xf9, 0xca, - 0x08, 0x82, 0xd1, 0x76, 0x78, 0x86, 0x3e, 0x51, 0x60, 0x2e, 0x3a, 0x14, 0x24, 0x69, 0x5c, 0x27, - 0x8c, 0x37, 0x4b, 0x2f, 0x0f, 0xad, 0x87, 0x71, 0xdd, 0x12, 0x71, 0xad, 0x91, 0xd5, 0x7d, 0xc4, - 0xf5, 0xcc, 0xd8, 0x92, 0x37, 0xd5, 0xd9, 0x88, 0xab, 0xd4, 0xaa, 0x8b, 0x1f, 0x28, 0x96, 0x5e, - 0x1a, 0x56, 0x0d, 0x03, 0xba, 0x2b, 0x02, 0xba, 0x49, 0xd6, 0x47, 0x11, 0x90, 0xcc, 0xd4, 0x6f, - 0x14, 0x98, 0x90, 0x33, 0xa4, 0xd4, 0x9b, 0x4a, 0x68, 0x82, 0x98, 0x7a, 0x53, 0x09, 0x0f, 0xf8, - 0xd4, 0x15, 0x01, 0xfd, 0x2a, 0xb9, 0x32, 0xfc, 0x79, 0xd7, 0x70, 0xc8, 0xf7, 0x81, 0x02, 0x79, - 0x61, 0x35, 0xb5, 0x57, 0x06, 0xa7, 0x77, 0xa5, 0x73, 0xd9, 0x84, 0x11, 0xe7, 0x9a, 0xc0, 0x79, - 0x8d, 0xbc, 0xb6, 0x6f, 0x9c, 0x92, 0xd7, 0xdf, 0x29, 0x30, 0x1b, 0x99, 0xcd, 0xa5, 0x56, 0x4b, - 0xfc, 0x2c, 0x6f, 0x58, 0xa6, 0xaf, 0x8a, 0x08, 0x2e, 0x93, 0xa5, 0xe4, 0x08, 0x3c, 0xa0, 0x7e, - 0x08, 0x38, 0x1c, 0xdc, 0x25, 0x7f, 0x50, 0x60, 0xd2, 0x9b, 0x77, 0x90, 0x6a, 0x8a, 0xe3, 0xc8, - 0x3c, 0xa9, 0xa4, 0x65, 0x96, 0x47, 0xa8, 0xeb, 0x02, 0xea, 0x75, 0xb2, 0x92, 0x0c, 0xd5, 0x61, - 0x1b, 0x6e, 0x87, 0xb5, 0x1e, 0xc4, 0x95, 0xf4, 0x8e, 0x3f, 0x93, 0xda, 0x25, 0xff, 0x52, 0xe0, - 0x58, 0xcc, 0x04, 0x21, 0xf5, 0x72, 0x90, 0x3c, 0xf3, 0x28, 0x2d, 0xef, 0x47, 0x15, 0x23, 0xbb, - 0x27, 0x22, 0xbb, 0x4d, 0x6e, 0x26, 0x47, 0x66, 0x0c, 0xd4, 0x63, 0x83, 0x8b, 0x8e, 0x55, 0x76, - 0xc9, 0x1f, 0x15, 0x28, 0x84, 0x5f, 0x66, 0xa9, 0x25, 0x15, 0x3f, 0xcd, 0x28, 0x65, 0x51, 0x7b, - 0xf6, 0xfd, 0x97, 0xf5, 0x4e, 0x1a, 0x78, 0x1f, 0x0e, 0xae, 0x14, 0x7f, 0x52, 0xa0, 0x10, 0x7e, - 0x97, 0xa5, 0x7e, 0xe4, 0x62, 0x1f, 0x85, 0xa9, 0xd8, 0xe3, 0x1f, 0x7f, 0xea, 0x35, 0x81, 0x7d, - 0x99, 0xbc, 0x92, 0x8c, 0x7d, 0x43, 0x68, 0x0a, 0xce, 0x63, 0x32, 0x52, 0xbb, 0xfd, 0xe1, 0xe3, - 0x05, 0xe5, 0xe3, 0xc7, 0x0b, 0xca, 0x3f, 0x1f, 0x2f, 0x28, 0xef, 0x3f, 0x59, 0x38, 0xf4, 0xf1, - 0x93, 0x85, 0x43, 0x7f, 0x7f, 0xb2, 0x70, 0xe8, 0xed, 0xa5, 0xd0, 0x3b, 0x91, 0x5b, 0x3f, 0xcf, - 0x36, 0x36, 0xcc, 0x96, 0xa9, 0x77, 0x3c, 0x6f, 0x41, 0x7f, 0xe2, 0xe1, 0xd8, 0x9c, 0x10, 0xcf, - 0xfd, 0xa5, 0xff, 0x07, 0x00, 0x00, 0xff, 0xff, 0x8f, 0xc7, 0x1f, 0x4e, 0xd5, 0x24, 0x00, 0x00, + // 2183 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x58, 0x4f, 0x8c, 0x1b, 0x67, + 0x15, 0xcf, 0x78, 0x6d, 0x67, 0xf7, 0x6d, 0xd6, 0x76, 0xbe, 0x24, 0xad, 0xeb, 0x14, 0x7b, 0x19, + 0x42, 0x63, 0xf2, 0xc7, 0xd3, 0x64, 0x93, 0xb6, 0xd9, 0xd0, 0x28, 0x71, 0x37, 0x5b, 0xb6, 0x49, + 0x44, 0xe2, 0x50, 0x15, 0xaa, 0x80, 0x19, 0x7b, 0xbe, 0x75, 0x46, 0xd8, 0x9e, 0xd9, 0x99, 0x71, + 0xb6, 0xdb, 0xd5, 0x0a, 0x09, 0x89, 0x0b, 0x42, 0xa2, 0x12, 0x7f, 0x04, 0x42, 0x1c, 0x38, 0x81, + 0xca, 0x81, 0x0b, 0x5c, 0xb8, 0x20, 0x71, 0x40, 0x3d, 0x50, 0xd1, 0xa8, 0x17, 0x4e, 0x29, 0x24, + 0x70, 0xe1, 0x98, 0x13, 0x47, 0xf4, 0x7d, 0xdf, 0x9b, 0xf1, 0xcc, 0x64, 0x66, 0x67, 0xbc, 0xf2, + 0x5e, 0xb2, 0xf1, 0xf7, 0x7d, 0xef, 0xbd, 0xdf, 0xfb, 0xbd, 0xf7, 0xbd, 0xf9, 0xde, 0x83, 0x13, + 0x5d, 0x63, 0xa0, 0xd1, 0xf7, 0x94, 0xbe, 0xbe, 0x31, 0xd2, 0x35, 0xdd, 0xd9, 0x52, 0x1e, 0x9c, + 0xeb, 0x50, 0x47, 0x3d, 0xa7, 0x6c, 0x8c, 0xa8, 0xb5, 0xd5, 0x30, 0x2d, 0xc3, 0x31, 0x48, 0x59, + 0x9c, 0x6a, 0x78, 0xa7, 0x1a, 0x78, 0xaa, 0x72, 0xb4, 0x67, 0xf4, 0x0c, 0x7e, 0x48, 0x61, 0xff, + 0x13, 0xe7, 0x2b, 0x2f, 0xf6, 0x0c, 0xa3, 0xd7, 0xa7, 0x8a, 0x6a, 0xea, 0x8a, 0x3a, 0x1c, 0x1a, + 0x8e, 0xea, 0xe8, 0xc6, 0xd0, 0xc6, 0xdd, 0x6a, 0xd7, 0xb0, 0x07, 0x86, 0xad, 0x74, 0x54, 0x9b, + 0x7a, 0xe6, 0xba, 0x86, 0x3e, 0xc4, 0xfd, 0x53, 0xfe, 0x7d, 0x0e, 0xc3, 0x3b, 0x65, 0xaa, 0x3d, + 0x7d, 0xc8, 0x95, 0xe1, 0xd9, 0x7a, 0x2c, 0xfe, 0x31, 0x56, 0x71, 0xf2, 0x8b, 0xb1, 0x27, 0x4d, + 0xd5, 0x52, 0x07, 0x2e, 0xb8, 0x1a, 0x42, 0xe7, 0xbf, 0x3a, 0xa3, 0x75, 0xc5, 0xd1, 0x07, 0xd4, + 0x76, 0xd4, 0x81, 0xe9, 0xa2, 0x0f, 0x1f, 0xd0, 0x46, 0x96, 0x0f, 0x91, 0x7c, 0x14, 0xc8, 0x1d, + 0x86, 0xf9, 0x36, 0xd7, 0xda, 0xa2, 0x1b, 0x23, 0x6a, 0x3b, 0xf2, 0xdb, 0x70, 0x24, 0xb0, 0x6a, + 0x9b, 0xc6, 0xd0, 0xa6, 0xe4, 0x0a, 0xe4, 0x85, 0xf5, 0xb2, 0xb4, 0x28, 0xd5, 0xe7, 0xcf, 0x2f, + 0x36, 0xe2, 0x98, 0x6e, 0x08, 0xc9, 0x66, 0xf6, 0xa3, 0x47, 0xb5, 0x03, 0x2d, 0x94, 0x92, 0xcf, + 0xc3, 0x0b, 0x5c, 0xed, 0x9b, 0x74, 0x48, 0x2d, 0xbd, 0x1b, 0xb0, 0x49, 0x8e, 0x41, 0x5e, 0x35, + 0xcd, 0xb6, 0xae, 0x71, 0xe5, 0xd9, 0x56, 0x4e, 0x35, 0xcd, 0x35, 0x4d, 0xee, 0x42, 0x25, 0x4a, + 0x06, 0x11, 0x5d, 0x0f, 0x21, 0x3a, 0x19, 0x8f, 0x28, 0xa0, 0x20, 0x04, 0xec, 0x37, 0x12, 0x1c, + 0x16, 0x0e, 0x1b, 0x46, 0xdf, 0x43, 0xf4, 0x3c, 0x1c, 0x34, 0x55, 0xdd, 0x1a, 0x43, 0xca, 0xb3, + 0x9f, 0x6b, 0x1a, 0xa9, 0xc0, 0xac, 0xa6, 0xdb, 0x6a, 0xa7, 0x4f, 0xb5, 0x72, 0x66, 0x51, 0xaa, + 0xcf, 0xb5, 0xbc, 0xdf, 0x64, 0x15, 0x60, 0x1c, 0xf6, 0xf2, 0x0c, 0x47, 0xf5, 0x52, 0x43, 0xe4, + 0x48, 0x83, 0xe5, 0x48, 0x43, 0xa4, 0xea, 0x98, 0xa8, 0x1e, 0x45, 0x83, 0x2d, 0x9f, 0xa4, 0x8f, + 0x8e, 0xac, 0x9f, 0x8e, 0x5f, 0x4b, 0x6e, 0xc0, 0x04, 0x52, 0xe4, 0xa1, 0x09, 0x39, 0x93, 0x2d, + 0x94, 0xa5, 0xc5, 0x19, 0x34, 0x18, 0x17, 0x18, 0xc3, 0xe8, 0xbb, 0x62, 0xc8, 0x82, 0x10, 0x25, + 0x6f, 0x06, 0x90, 0x67, 0x3c, 0x3e, 0x77, 0x47, 0x2e, 0x34, 0xf9, 0xa1, 0xcb, 0x4d, 0x28, 0x79, + 0x10, 0xfd, 0x5c, 0x1a, 0x46, 0xdf, 0xcf, 0xa5, 0x61, 0xf4, 0xd7, 0x34, 0x9f, 0x9f, 0x19, 0xbf, + 0x9f, 0x6f, 0xfb, 0x02, 0xe2, 0x79, 0x79, 0x15, 0xb2, 0x4c, 0x0a, 0x63, 0x3d, 0x99, 0x93, 0x5c, + 0x52, 0xee, 0xc0, 0xa2, 0xa7, 0xb6, 0xb9, 0xd5, 0xa2, 0x36, 0xb5, 0x1e, 0xd0, 0x6b, 0x9a, 0x66, + 0x51, 0xdb, 0x0b, 0xfb, 0x49, 0x28, 0x5a, 0x62, 0xa3, 0xad, 0x8a, 0x1d, 0x6e, 0x70, 0xae, 0x55, + 0xb0, 0x02, 0xe7, 0xe3, 0xa0, 0x7f, 0x1b, 0x6a, 0x3e, 0x1b, 0xec, 0xdf, 0x37, 0x0c, 0x7d, 0xb8, + 0x42, 0x87, 0xc6, 0xc0, 0x35, 0xf1, 0x12, 0x14, 0x39, 0x1b, 0xac, 0x8c, 0xb4, 0x35, 0xb6, 0x83, + 0x26, 0x16, 0x4c, 0xff, 0xf1, 0x38, 0x0b, 0x3f, 0xf0, 0xd2, 0x55, 0xd5, 0x2d, 0x0f, 0xf7, 0x73, + 0x90, 0xe7, 0xaa, 0x44, 0x12, 0xcc, 0xb5, 0xf0, 0x57, 0x28, 0x23, 0x33, 0x53, 0xc8, 0xc8, 0x19, + 0x3f, 0x98, 0x5f, 0x78, 0x19, 0x29, 0xc0, 0x60, 0xac, 0x96, 0x21, 0xc7, 0x6e, 0x8b, 0x9b, 0x91, + 0xd5, 0xdd, 0x4a, 0x85, 0x6e, 0x79, 0x99, 0xc8, 0x44, 0xf6, 0x21, 0x13, 0x55, 0xdd, 0x4a, 0xbc, + 0xd5, 0x31, 0x64, 0xdf, 0xf2, 0x71, 0xed, 0x79, 0xf7, 0x1a, 0x64, 0x99, 0x14, 0x66, 0x62, 0x3a, + 0xe7, 0xb8, 0x84, 0xfc, 0x53, 0x09, 0x8e, 0x73, 0x7d, 0x2b, 0xd4, 0x34, 0x6c, 0xdd, 0x41, 0x58, + 0xf6, 0x1e, 0x2f, 0xca, 0xb4, 0xea, 0x8d, 0xfc, 0x17, 0x09, 0x5e, 0x8c, 0xc6, 0x85, 0x2e, 0x7f, + 0x03, 0x4a, 0x9a, 0xd8, 0x6a, 0x5b, 0xb8, 0x87, 0xb1, 0xad, 0xc7, 0xbb, 0x1f, 0x54, 0x86, 0x44, + 0x14, 0xb5, 0xa0, 0x89, 0xe9, 0xc5, 0xfb, 0x1e, 0x7e, 0x2c, 0x82, 0x66, 0x13, 0xa9, 0x2d, 0x40, + 0xc6, 0xa3, 0x35, 0xa3, 0x6b, 0x71, 0x99, 0xfe, 0x20, 0x32, 0x72, 0x1e, 0x41, 0xef, 0x40, 0x31, + 0x44, 0x10, 0xa6, 0xc7, 0xa4, 0xfc, 0x14, 0x82, 0xfc, 0xc8, 0x3f, 0x73, 0x43, 0xf3, 0x8e, 0xee, + 0xdc, 0xd7, 0x2c, 0x75, 0x33, 0x75, 0xce, 0xec, 0xf3, 0xd5, 0xff, 0xab, 0x04, 0x9f, 0x8b, 0x01, + 0x86, 0x9c, 0xdc, 0x83, 0xc3, 0x9b, 0xb8, 0x17, 0xce, 0x9a, 0x2f, 0xc5, 0xb3, 0x12, 0x52, 0x87, + 0xb4, 0x94, 0x36, 0x43, 0x56, 0xa6, 0x97, 0x37, 0xdf, 0xc4, 0xc8, 0x86, 0x0c, 0x4f, 0x2b, 0x71, + 0xde, 0x8f, 0x8e, 0x9f, 0xc7, 0xd2, 0xbb, 0x50, 0x0a, 0xb3, 0x84, 0xa9, 0x33, 0x31, 0x49, 0xc5, + 0x10, 0x49, 0xf2, 0x0f, 0xdd, 0xf2, 0xfc, 0x55, 0x4b, 0xa3, 0x56, 0xf2, 0xdb, 0x66, 0x9f, 0x53, + 0xe6, 0x57, 0x12, 0x3e, 0x2d, 0x5d, 0x38, 0x48, 0xc1, 0xeb, 0x90, 0x37, 0xf8, 0x0a, 0x66, 0x47, + 0x2d, 0xde, 0x71, 0x2e, 0xe9, 0x3e, 0xe0, 0x84, 0xd0, 0xf4, 0x32, 0xe1, 0x2e, 0x56, 0x7b, 0x6e, + 0x24, 0x91, 0xac, 0x94, 0xf1, 0xbf, 0xe3, 0x0f, 0x81, 0xe7, 0xf2, 0x65, 0xc8, 0x71, 0xf4, 0x18, + 0xea, 0x94, 0x1e, 0x0b, 0x19, 0xf9, 0xf7, 0xee, 0x67, 0x44, 0xf0, 0xd8, 0x14, 0x7f, 0xc7, 0x90, + 0xcb, 0x70, 0xd0, 0x10, 0x2b, 0xf8, 0xb2, 0x70, 0x7f, 0xfa, 0x9d, 0xc9, 0xec, 0x12, 0xf9, 0xa9, + 0xbf, 0x5c, 0xff, 0x97, 0x81, 0x43, 0x81, 0xd7, 0x9c, 0x20, 0x4f, 0xf2, 0xc8, 0x8b, 0x05, 0x16, + 0xf1, 0x20, 0x9b, 0x89, 0x7c, 0x90, 0x45, 0x3c, 0xab, 0xb2, 0x51, 0xcf, 0xaa, 0x1e, 0xcc, 0x76, + 0xd4, 0xbe, 0x3a, 0xec, 0x52, 0xbb, 0x9c, 0xe3, 0xe9, 0xf6, 0x42, 0xc0, 0x4f, 0xd7, 0x43, 0x26, + 0xd1, 0x7c, 0x99, 0xd1, 0xfe, 0xe1, 0x67, 0xb5, 0x7a, 0x4f, 0x77, 0xee, 0x8f, 0x3a, 0x2c, 0x4a, + 0x0a, 0xb6, 0x7c, 0xe2, 0xcf, 0x59, 0x5b, 0xfb, 0x8e, 0xe2, 0x6c, 0x99, 0xd4, 0xe6, 0x02, 0x76, + 0xcb, 0x53, 0x4e, 0x2e, 0xc2, 0xf3, 0x7d, 0xd5, 0x76, 0xda, 0xa1, 0xef, 0x02, 0x73, 0x31, 0xcf, + 0x5d, 0x3c, 0xca, 0xb6, 0x83, 0x1f, 0x81, 0x35, 0x8d, 0xbc, 0x0a, 0x65, 0x2e, 0x16, 0x2e, 0x0a, + 0x4c, 0xee, 0x20, 0x97, 0x3b, 0xc6, 0xf6, 0x43, 0x15, 0x20, 0xf0, 0x46, 0x98, 0xf5, 0x53, 0x7f, + 0x0f, 0xf3, 0x6f, 0x55, 0xb5, 0x06, 0xe3, 0x14, 0x89, 0x6e, 0xb8, 0xfc, 0xc5, 0x2e, 0x13, 0x28, + 0x76, 0xcf, 0x41, 0x7e, 0x9d, 0x2b, 0x40, 0xf6, 0xf1, 0x97, 0xfc, 0xb1, 0x04, 0x85, 0x3b, 0x23, + 0x3a, 0xa2, 0x9a, 0xfb, 0xd6, 0x25, 0x3d, 0x98, 0xf3, 0x02, 0x81, 0xe9, 0xbd, 0x0b, 0xc3, 0x0a, + 0x32, 0x7c, 0x32, 0x25, 0xc3, 0xad, 0x59, 0x37, 0x9c, 0xa4, 0x05, 0xb3, 0x1a, 0x73, 0xa7, 0xad, + 0x3a, 0x78, 0xeb, 0x2b, 0x0d, 0xd1, 0xf1, 0x36, 0xdc, 0x8e, 0xb7, 0xf1, 0x35, 0xb7, 0x25, 0x6e, + 0x1e, 0x67, 0x86, 0x9e, 0x3e, 0xaa, 0x15, 0xb7, 0xd4, 0x41, 0x7f, 0x59, 0x76, 0x25, 0xe5, 0x0f, + 0x3e, 0xab, 0x49, 0xad, 0x83, 0xfc, 0xe7, 0x35, 0x47, 0xfe, 0x8f, 0x5b, 0xa2, 0x5c, 0xba, 0x30, + 0x5f, 0x1d, 0x28, 0xa9, 0x5d, 0x47, 0x7f, 0x40, 0xdb, 0xfb, 0xe9, 0x5b, 0x41, 0xd8, 0xf0, 0xa8, + 0xfc, 0x3a, 0x94, 0x36, 0x38, 0xb9, 0x3e, 0xab, 0x99, 0xa4, 0x67, 0x57, 0x30, 0x1c, 0xee, 0xb3, + 0x62, 0x23, 0xb0, 0x2a, 0x6f, 0x63, 0x9f, 0xb2, 0xc2, 0x2e, 0x91, 0xae, 0xf6, 0xf5, 0xf7, 0x3d, + 0xab, 0x89, 0x1f, 0xbe, 0x3a, 0x94, 0xc6, 0x37, 0x4d, 0x1d, 0x18, 0xa3, 0xa1, 0x83, 0xd9, 0x52, + 0x70, 0x63, 0x73, 0x8d, 0xaf, 0xc6, 0x95, 0xc4, 0xef, 0x4b, 0xd8, 0x89, 0x45, 0x5a, 0x47, 0xc6, + 0x55, 0xc8, 0x31, 0x03, 0xee, 0x37, 0x61, 0xaa, 0x97, 0x54, 0x68, 0x96, 0x2f, 0x60, 0x19, 0xe5, + 0xed, 0xf4, 0xda, 0xb0, 0x4b, 0x87, 0x8c, 0xfd, 0xa4, 0xa1, 0xc4, 0xdf, 0x72, 0xb0, 0xc0, 0x24, + 0x3c, 0x81, 0x78, 0xa6, 0x6a, 0x30, 0x3f, 0x50, 0x6d, 0x87, 0x5a, 0x3c, 0x7e, 0x9c, 0xa4, 0xd9, + 0x16, 0x88, 0x25, 0xa6, 0x82, 0x9c, 0x80, 0x42, 0xf7, 0xbe, 0xde, 0xc7, 0xf8, 0xea, 0x1a, 0x2b, + 0x6e, 0x33, 0xf5, 0x6c, 0xeb, 0x10, 0x5f, 0xe5, 0x56, 0x34, 0x9b, 0x18, 0xb0, 0xe0, 0x18, 0x8e, + 0xda, 0x6f, 0x5b, 0x74, 0x53, 0xb5, 0x34, 0x9b, 0x17, 0xb6, 0xe9, 0x66, 0xde, 0x21, 0x6e, 0xa0, + 0x25, 0xf4, 0x93, 0x6d, 0x38, 0xa2, 0xe9, 0xb6, 0x63, 0xe9, 0x9d, 0x91, 0x43, 0x35, 0xcf, 0x6c, + 0x6e, 0xea, 0x66, 0x89, 0xcf, 0x8c, 0x6b, 0xfc, 0xf3, 0x20, 0xc0, 0xb4, 0xa9, 0x69, 0x74, 0xef, + 0xdb, 0x58, 0x2c, 0xe7, 0xf9, 0xda, 0x75, 0xbe, 0x44, 0xbe, 0x00, 0x0b, 0xeb, 0x7a, 0xbf, 0x4f, + 0x35, 0xf7, 0x8c, 0x28, 0x8c, 0x87, 0xc4, 0x22, 0x1e, 0xfa, 0x2e, 0x14, 0xf8, 0x6e, 0xdb, 0x9d, + 0x7a, 0xf1, 0xba, 0xc8, 0xf0, 0x87, 0x8b, 0xc4, 0x0a, 0x1e, 0x68, 0xbe, 0xce, 0xf0, 0xff, 0xf7, + 0x51, 0xad, 0x1c, 0x14, 0x3c, 0x63, 0x0c, 0x74, 0x87, 0x0e, 0x4c, 0x67, 0xeb, 0xe9, 0xa3, 0xda, + 0x31, 0x51, 0x3f, 0x82, 0x27, 0xe4, 0x9f, 0xb3, 0x2a, 0xb2, 0xc0, 0x17, 0x5d, 0x6d, 0x64, 0x00, + 0x87, 0x87, 0xf4, 0x3d, 0xa7, 0xed, 0xf9, 0xc8, 0x30, 0xcc, 0x25, 0x16, 0xaa, 0x13, 0x58, 0xa8, + 0xca, 0xc2, 0xd0, 0x33, 0x2a, 0x44, 0xc5, 0x2a, 0xb1, 0xf5, 0x15, 0xdf, 0x32, 0xa9, 0xc2, 0xbc, + 0x6e, 0xb7, 0xed, 0x4d, 0xd5, 0x6c, 0xaf, 0x53, 0x5a, 0x06, 0x9e, 0x6c, 0x73, 0xba, 0x7d, 0x77, + 0x53, 0x35, 0x57, 0x29, 0xf5, 0xa5, 0xf3, 0xbc, 0x3f, 0x9d, 0x0d, 0xdf, 0x25, 0xf0, 0xdf, 0x01, + 0xbc, 0x86, 0xb7, 0xf1, 0xb3, 0xaa, 0x7b, 0x5b, 0x78, 0x21, 0x4f, 0xee, 0x3e, 0x81, 0xf1, 0x54, + 0x89, 0xa2, 0x30, 0xd6, 0x2c, 0xdf, 0xc4, 0x3e, 0x8d, 0x57, 0x58, 0x2d, 0x75, 0xd5, 0x89, 0xe9, + 0xd0, 0x77, 0x10, 0x7e, 0x58, 0x1b, 0xc2, 0xff, 0x16, 0x64, 0xf7, 0xa9, 0x56, 0x73, 0xbd, 0xe7, + 0x1f, 0x1e, 0x87, 0x1c, 0xb7, 0x4f, 0x7e, 0x24, 0x41, 0x5e, 0xcc, 0x17, 0xc9, 0x99, 0x5d, 0x8b, + 0x73, 0x68, 0xde, 0x5a, 0x39, 0x9b, 0xf2, 0xb4, 0xf0, 0x48, 0xae, 0x7f, 0xef, 0xd3, 0x7f, 0xff, + 0x38, 0x23, 0x93, 0x45, 0x25, 0x61, 0x4a, 0x4c, 0xfe, 0x28, 0xc1, 0x42, 0x60, 0xf0, 0x49, 0x96, + 0x12, 0x4c, 0x45, 0xcd, 0x66, 0x2b, 0x17, 0x26, 0x13, 0x42, 0x98, 0x97, 0x38, 0xcc, 0x25, 0x72, + 0x2e, 0x1e, 0x66, 0x4f, 0x08, 0xb6, 0x05, 0x5c, 0x65, 0x5b, 0x84, 0x77, 0x87, 0xfc, 0x44, 0x82, + 0x1c, 0x2f, 0xc9, 0xe4, 0x74, 0x12, 0x35, 0xbe, 0x89, 0x6d, 0xe5, 0x4c, 0xba, 0xc3, 0x88, 0xef, + 0x65, 0x8e, 0xef, 0x14, 0xa9, 0xef, 0x42, 0x23, 0x13, 0x18, 0xc3, 0xfa, 0xa5, 0x04, 0x59, 0x5e, + 0xb4, 0x4f, 0xa5, 0x30, 0xe4, 0x82, 0x3a, 0x9d, 0xea, 0x2c, 0x62, 0x5a, 0xe6, 0x98, 0x2e, 0x90, + 0xf3, 0x69, 0x31, 0x29, 0xdb, 0x78, 0x57, 0x76, 0xc8, 0xa7, 0x12, 0x1c, 0x8d, 0x1a, 0x6c, 0x92, + 0xe5, 0x14, 0x08, 0x62, 0xa6, 0xa1, 0x93, 0xa1, 0x6f, 0x71, 0xf4, 0x37, 0xc9, 0x5b, 0xa9, 0xd1, + 0x87, 0x1e, 0xf6, 0xca, 0x76, 0x68, 0x61, 0x87, 0x3c, 0x94, 0xe0, 0x48, 0xc4, 0x28, 0x95, 0x5c, + 0x4a, 0xe5, 0x54, 0xd4, 0xf8, 0x75, 0xbf, 0x7d, 0x0a, 0xf5, 0x20, 0x18, 0xa1, 0xf1, 0x02, 0xa6, + 0x37, 0x1f, 0x75, 0x26, 0x42, 0xf1, 0x4d, 0x78, 0x93, 0xd3, 0xdb, 0x3f, 0x81, 0x4d, 0x95, 0xde, + 0x4c, 0x20, 0x94, 0xde, 0xaa, 0x6e, 0x25, 0xa7, 0xf7, 0x78, 0x9e, 0x5a, 0x39, 0x9d, 0xea, 0xec, + 0x04, 0xe9, 0x1d, 0xc0, 0xa4, 0x6c, 0x63, 0x4f, 0xb8, 0x43, 0x3e, 0x96, 0xa0, 0x18, 0x1a, 0x4e, + 0x92, 0x8b, 0x09, 0xc6, 0xa3, 0x87, 0xac, 0x95, 0x57, 0x26, 0x15, 0x43, 0xf8, 0x37, 0x38, 0xfc, + 0xeb, 0xe4, 0x8d, 0xc9, 0x6f, 0xa7, 0x12, 0x1e, 0x9e, 0x92, 0xbf, 0x4b, 0x50, 0x08, 0x1a, 0x22, + 0x17, 0x26, 0xc2, 0xe5, 0x7a, 0x73, 0x71, 0x42, 0x29, 0x74, 0xe6, 0x36, 0x77, 0xe6, 0x2d, 0xf2, + 0x95, 0x29, 0x38, 0xa3, 0x6c, 0xb3, 0x08, 0x3d, 0x94, 0xa0, 0x14, 0x1e, 0x05, 0x92, 0x24, 0xae, + 0x63, 0x86, 0x9a, 0x95, 0x57, 0x27, 0x96, 0x43, 0xbf, 0x6e, 0x72, 0xbf, 0x56, 0xc9, 0xca, 0x1e, + 0xfc, 0x7a, 0x66, 0x58, 0xc9, 0x8a, 0x6a, 0x31, 0x64, 0x2a, 0x31, 0xeb, 0xa2, 0xc7, 0x88, 0x95, + 0x57, 0x26, 0x15, 0x43, 0x87, 0xee, 0x70, 0x87, 0x6e, 0x90, 0xb5, 0x69, 0x38, 0x24, 0x22, 0xf5, + 0x5b, 0x09, 0xf2, 0x62, 0x72, 0x94, 0xf8, 0x52, 0x09, 0xcc, 0x0d, 0x13, 0x5f, 0x2a, 0xc1, 0xb1, + 0x9e, 0x7c, 0x8d, 0x43, 0xbf, 0x4c, 0x2e, 0x4d, 0x7e, 0xdf, 0x15, 0x1c, 0xed, 0x7d, 0x28, 0x41, + 0x8e, 0x6b, 0x4d, 0xac, 0x95, 0xfe, 0x99, 0x5d, 0xe5, 0x4c, 0xba, 0xc3, 0x88, 0x73, 0x95, 0xe3, + 0xbc, 0x4a, 0xae, 0xec, 0x19, 0xa7, 0xe0, 0xf5, 0x0f, 0x12, 0x14, 0x43, 0x13, 0xb9, 0xc4, 0x6c, + 0x89, 0x9e, 0xe0, 0x4d, 0xca, 0xf4, 0x65, 0xee, 0xc1, 0x45, 0xb2, 0x14, 0xef, 0x81, 0x0b, 0xd4, + 0x73, 0x01, 0x47, 0x82, 0x3b, 0xe4, 0x77, 0x12, 0xe4, 0xc5, 0xb4, 0x23, 0x31, 0x1d, 0x02, 0x33, + 0xa4, 0x44, 0x90, 0xc1, 0x11, 0x8a, 0xbc, 0xc2, 0x41, 0x5e, 0x21, 0x5f, 0x8e, 0x07, 0x29, 0x86, + 0x4a, 0x51, 0xa9, 0xbc, 0x2d, 0xb6, 0x76, 0xc8, 0xbf, 0x24, 0x38, 0x12, 0x31, 0x36, 0x48, 0x7c, + 0x11, 0xc4, 0x0f, 0x3a, 0x2a, 0xcb, 0x7b, 0x11, 0x45, 0xa7, 0xee, 0x72, 0xa7, 0x6e, 0x91, 0x1b, + 0xf1, 0x4e, 0x69, 0x63, 0xf1, 0x48, 0xcf, 0xc2, 0xb3, 0x94, 0x1d, 0xf2, 0x27, 0x09, 0x0a, 0xc1, + 0x76, 0x2c, 0x31, 0x8f, 0xa2, 0x47, 0x18, 0x95, 0x34, 0x62, 0xcf, 0x36, 0x7d, 0x69, 0x1f, 0xa2, + 0xbe, 0xa6, 0x70, 0xfc, 0x8e, 0xf8, 0xb3, 0x04, 0x85, 0x60, 0x33, 0x96, 0xf8, 0x65, 0x8b, 0xec, + 0x04, 0x13, 0xb1, 0x47, 0x77, 0x7c, 0xf2, 0x55, 0x8e, 0x7d, 0x99, 0xbc, 0x96, 0x90, 0x66, 0x1a, + 0xe7, 0x3c, 0x22, 0x22, 0xcd, 0x5b, 0x1f, 0x3d, 0xae, 0x4a, 0x9f, 0x3c, 0xae, 0x4a, 0xff, 0x7c, + 0x5c, 0x95, 0x3e, 0x78, 0x52, 0x3d, 0xf0, 0xc9, 0x93, 0xea, 0x81, 0x7f, 0x3c, 0xa9, 0x1e, 0x78, + 0x77, 0x29, 0xd0, 0x1c, 0x32, 0xed, 0x67, 0x8d, 0xf5, 0x75, 0xbd, 0xab, 0xab, 0x7d, 0xd7, 0x9a, + 0xdf, 0x1e, 0xef, 0x16, 0x3b, 0x79, 0xde, 0xe3, 0x2f, 0xfd, 0x3f, 0x00, 0x00, 0xff, 0xff, 0xb7, + 0x9e, 0xae, 0x35, 0xc0, 0x24, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -2387,13 +2387,13 @@ type QueryClient interface { Order(ctx context.Context, in *QueryOrderRequest, opts ...grpc.CallOption) (*QueryOrderResponse, error) // OrdersByOrderer returns orders made by an orderer. OrdersByOrderer(ctx context.Context, in *QueryOrdersByOrdererRequest, opts ...grpc.CallOption) (*QueryOrdersResponse, error) - // SoftLock returns deposited poolcoin for farming . - SoftLock(ctx context.Context, in *QuerySoftLockRequest, opts ...grpc.CallOption) (*QuerySoftLockResponse, error) + // Farmer returns deposited poolcoin for farming . + Farmer(ctx context.Context, in *QueryFarmerRequest, opts ...grpc.CallOption) (*QueryFarmerResponse, error) // DeserializePoolCoin splits poolcoin into the actual provided pool assets . DeserializePoolCoin(ctx context.Context, in *QueryDeserializePoolCoinRequest, opts ...grpc.CallOption) (*QueryDeserializePoolCoinResponse, error) // PoolIncentives provides insights about available pool incentives. PoolIncentives(ctx context.Context, in *QueryPoolsIncentivesRequest, opts ...grpc.CallOption) (*QueryPoolIncentivesResponse, error) - // FarmedPoolCoin returns the total coin in the soft-lock. + // FarmedPoolCoin returns the total farmed pool coins. FarmedPoolCoin(ctx context.Context, in *QueryFarmedPoolCoinRequest, opts ...grpc.CallOption) (*QueryFarmedPoolCoinResponse, error) } @@ -2540,9 +2540,9 @@ func (c *queryClient) OrdersByOrderer(ctx context.Context, in *QueryOrdersByOrde return out, nil } -func (c *queryClient) SoftLock(ctx context.Context, in *QuerySoftLockRequest, opts ...grpc.CallOption) (*QuerySoftLockResponse, error) { - out := new(QuerySoftLockResponse) - err := c.cc.Invoke(ctx, "/comdex.liquidity.v1beta1.Query/SoftLock", in, out, opts...) +func (c *queryClient) Farmer(ctx context.Context, in *QueryFarmerRequest, opts ...grpc.CallOption) (*QueryFarmerResponse, error) { + out := new(QueryFarmerResponse) + err := c.cc.Invoke(ctx, "/comdex.liquidity.v1beta1.Query/Farmer", in, out, opts...) if err != nil { return nil, err } @@ -2608,13 +2608,13 @@ type QueryServer interface { Order(context.Context, *QueryOrderRequest) (*QueryOrderResponse, error) // OrdersByOrderer returns orders made by an orderer. OrdersByOrderer(context.Context, *QueryOrdersByOrdererRequest) (*QueryOrdersResponse, error) - // SoftLock returns deposited poolcoin for farming . - SoftLock(context.Context, *QuerySoftLockRequest) (*QuerySoftLockResponse, error) + // Farmer returns deposited poolcoin for farming . + Farmer(context.Context, *QueryFarmerRequest) (*QueryFarmerResponse, error) // DeserializePoolCoin splits poolcoin into the actual provided pool assets . DeserializePoolCoin(context.Context, *QueryDeserializePoolCoinRequest) (*QueryDeserializePoolCoinResponse, error) // PoolIncentives provides insights about available pool incentives. PoolIncentives(context.Context, *QueryPoolsIncentivesRequest) (*QueryPoolIncentivesResponse, error) - // FarmedPoolCoin returns the total coin in the soft-lock. + // FarmedPoolCoin returns the total farmed pool coins. FarmedPoolCoin(context.Context, *QueryFarmedPoolCoinRequest) (*QueryFarmedPoolCoinResponse, error) } @@ -2667,8 +2667,8 @@ func (*UnimplementedQueryServer) Order(ctx context.Context, req *QueryOrderReque func (*UnimplementedQueryServer) OrdersByOrderer(ctx context.Context, req *QueryOrdersByOrdererRequest) (*QueryOrdersResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method OrdersByOrderer not implemented") } -func (*UnimplementedQueryServer) SoftLock(ctx context.Context, req *QuerySoftLockRequest) (*QuerySoftLockResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method SoftLock not implemented") +func (*UnimplementedQueryServer) Farmer(ctx context.Context, req *QueryFarmerRequest) (*QueryFarmerResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Farmer not implemented") } func (*UnimplementedQueryServer) DeserializePoolCoin(ctx context.Context, req *QueryDeserializePoolCoinRequest) (*QueryDeserializePoolCoinResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method DeserializePoolCoin not implemented") @@ -2954,20 +2954,20 @@ func _Query_OrdersByOrderer_Handler(srv interface{}, ctx context.Context, dec fu return interceptor(ctx, in, info, handler) } -func _Query_SoftLock_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(QuerySoftLockRequest) +func _Query_Farmer_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(QueryFarmerRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(QueryServer).SoftLock(ctx, in) + return srv.(QueryServer).Farmer(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/comdex.liquidity.v1beta1.Query/SoftLock", + FullMethod: "/comdex.liquidity.v1beta1.Query/Farmer", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(QueryServer).SoftLock(ctx, req.(*QuerySoftLockRequest)) + return srv.(QueryServer).Farmer(ctx, req.(*QueryFarmerRequest)) } return interceptor(ctx, in, info, handler) } @@ -3091,8 +3091,8 @@ var _Query_serviceDesc = grpc.ServiceDesc{ Handler: _Query_OrdersByOrderer_Handler, }, { - MethodName: "SoftLock", - Handler: _Query_SoftLock_Handler, + MethodName: "Farmer", + Handler: _Query_Farmer_Handler, }, { MethodName: "DeserializePoolCoin", @@ -4252,7 +4252,7 @@ func (m *PoolResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } -func (m *QuerySoftLockRequest) Marshal() (dAtA []byte, err error) { +func (m *QueryFarmerRequest) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -4262,31 +4262,31 @@ func (m *QuerySoftLockRequest) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *QuerySoftLockRequest) MarshalTo(dAtA []byte) (int, error) { +func (m *QueryFarmerRequest) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *QuerySoftLockRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *QueryFarmerRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int _ = l - if m.AppId != 0 { - i = encodeVarintQuery(dAtA, i, uint64(m.AppId)) - i-- - dAtA[i] = 0x18 - } - if len(m.Depositor) > 0 { - i -= len(m.Depositor) - copy(dAtA[i:], m.Depositor) - i = encodeVarintQuery(dAtA, i, uint64(len(m.Depositor))) + if len(m.Farmer) > 0 { + i -= len(m.Farmer) + copy(dAtA[i:], m.Farmer) + i = encodeVarintQuery(dAtA, i, uint64(len(m.Farmer))) i-- - dAtA[i] = 0x12 + dAtA[i] = 0x1a } if m.PoolId != 0 { i = encodeVarintQuery(dAtA, i, uint64(m.PoolId)) i-- + dAtA[i] = 0x10 + } + if m.AppId != 0 { + i = encodeVarintQuery(dAtA, i, uint64(m.AppId)) + i-- dAtA[i] = 0x8 } return len(dAtA) - i, nil @@ -4333,7 +4333,7 @@ func (m *QueuedPoolCoin) MarshalToSizedBuffer(dAtA []byte) (int, error) { return len(dAtA) - i, nil } -func (m *QuerySoftLockResponse) Marshal() (dAtA []byte, err error) { +func (m *QueryFarmerResponse) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -4343,12 +4343,12 @@ func (m *QuerySoftLockResponse) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *QuerySoftLockResponse) MarshalTo(dAtA []byte) (int, error) { +func (m *QueryFarmerResponse) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *QuerySoftLockResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *QueryFarmerResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int @@ -5186,22 +5186,22 @@ func (m *PoolResponse) Size() (n int) { return n } -func (m *QuerySoftLockRequest) Size() (n int) { +func (m *QueryFarmerRequest) Size() (n int) { if m == nil { return 0 } var l int _ = l + if m.AppId != 0 { + n += 1 + sovQuery(uint64(m.AppId)) + } if m.PoolId != 0 { n += 1 + sovQuery(uint64(m.PoolId)) } - l = len(m.Depositor) + l = len(m.Farmer) if l > 0 { n += 1 + l + sovQuery(uint64(l)) } - if m.AppId != 0 { - n += 1 + sovQuery(uint64(m.AppId)) - } return n } @@ -5218,7 +5218,7 @@ func (m *QueuedPoolCoin) Size() (n int) { return n } -func (m *QuerySoftLockResponse) Size() (n int) { +func (m *QueryFarmerResponse) Size() (n int) { if m == nil { return 0 } @@ -8432,7 +8432,7 @@ func (m *PoolResponse) Unmarshal(dAtA []byte) error { } return nil } -func (m *QuerySoftLockRequest) Unmarshal(dAtA []byte) error { +func (m *QueryFarmerRequest) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -8455,13 +8455,32 @@ func (m *QuerySoftLockRequest) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: QuerySoftLockRequest: wiretype end group for non-group") + return fmt.Errorf("proto: QueryFarmerRequest: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: QuerySoftLockRequest: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: QueryFarmerRequest: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field AppId", wireType) + } + m.AppId = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowQuery + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.AppId |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: if wireType != 0 { return fmt.Errorf("proto: wrong wireType = %d for field PoolId", wireType) } @@ -8480,9 +8499,9 @@ func (m *QuerySoftLockRequest) Unmarshal(dAtA []byte) error { break } } - case 2: + case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Depositor", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Farmer", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -8510,27 +8529,8 @@ func (m *QuerySoftLockRequest) Unmarshal(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Depositor = string(dAtA[iNdEx:postIndex]) + m.Farmer = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 3: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field AppId", wireType) - } - m.AppId = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowQuery - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.AppId |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } default: iNdEx = preIndex skippy, err := skipQuery(dAtA[iNdEx:]) @@ -8668,7 +8668,7 @@ func (m *QueuedPoolCoin) Unmarshal(dAtA []byte) error { } return nil } -func (m *QuerySoftLockResponse) Unmarshal(dAtA []byte) error { +func (m *QueryFarmerResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -8691,10 +8691,10 @@ func (m *QuerySoftLockResponse) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: QuerySoftLockResponse: wiretype end group for non-group") + return fmt.Errorf("proto: QueryFarmerResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: QuerySoftLockResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: QueryFarmerResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: diff --git a/x/liquidity/types/query.pb.gw.go b/x/liquidity/types/query.pb.gw.go index 98092f1a4..62d056184 100644 --- a/x/liquidity/types/query.pb.gw.go +++ b/x/liquidity/types/query.pb.gw.go @@ -1223,8 +1223,8 @@ func local_request_Query_OrdersByOrderer_0(ctx context.Context, marshaler runtim } -func request_Query_SoftLock_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq QuerySoftLockRequest +func request_Query_Farmer_0(ctx context.Context, marshaler runtime.Marshaler, client QueryClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryFarmerRequest var metadata runtime.ServerMetadata var ( @@ -1256,24 +1256,24 @@ func request_Query_SoftLock_0(ctx context.Context, marshaler runtime.Marshaler, return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "pool_id", err) } - val, ok = pathParams["depositor"] + val, ok = pathParams["farmer"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "depositor") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "farmer") } - protoReq.Depositor, err = runtime.String(val) + protoReq.Farmer, err = runtime.String(val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "depositor", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "farmer", err) } - msg, err := client.SoftLock(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + msg, err := client.Farmer(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func local_request_Query_SoftLock_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq QuerySoftLockRequest +func local_request_Query_Farmer_0(ctx context.Context, marshaler runtime.Marshaler, server QueryServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq QueryFarmerRequest var metadata runtime.ServerMetadata var ( @@ -1305,18 +1305,18 @@ func local_request_Query_SoftLock_0(ctx context.Context, marshaler runtime.Marsh return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "pool_id", err) } - val, ok = pathParams["depositor"] + val, ok = pathParams["farmer"] if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "depositor") + return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "farmer") } - protoReq.Depositor, err = runtime.String(val) + protoReq.Farmer, err = runtime.String(val) if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "depositor", err) + return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "farmer", err) } - msg, err := server.SoftLock(ctx, &protoReq) + msg, err := server.Farmer(ctx, &protoReq) return msg, metadata, err } @@ -1900,7 +1900,7 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv }) - mux.Handle("GET", pattern_Query_SoftLock_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_Query_Farmer_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() var stream runtime.ServerTransportStream @@ -1911,7 +1911,7 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_Query_SoftLock_0(rctx, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_Query_Farmer_0(rctx, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { @@ -1919,7 +1919,7 @@ func RegisterQueryHandlerServer(ctx context.Context, mux *runtime.ServeMux, serv return } - forward_Query_SoftLock_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Query_Farmer_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2333,7 +2333,7 @@ func RegisterQueryHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie }) - mux.Handle("GET", pattern_Query_SoftLock_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("GET", pattern_Query_Farmer_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) @@ -2342,14 +2342,14 @@ func RegisterQueryHandlerClient(ctx context.Context, mux *runtime.ServeMux, clie runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_Query_SoftLock_0(rctx, inboundMarshaler, client, req, pathParams) + resp, md, err := request_Query_Farmer_0(rctx, inboundMarshaler, client, req, pathParams) ctx = runtime.NewServerMetadataContext(ctx, md) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - forward_Query_SoftLock_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_Query_Farmer_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -2447,7 +2447,7 @@ var ( pattern_Query_OrdersByOrderer_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5}, []string{"comdex", "liquidity", "v1beta1", "orders", "app_id", "orderer"}, "", runtime.AssumeColonVerbOpt(false))) - pattern_Query_SoftLock_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5, 1, 0, 4, 1, 5, 6}, []string{"comdex", "liquidity", "v1beta1", "softlock", "app_id", "pool_id", "depositor"}, "", runtime.AssumeColonVerbOpt(false))) + pattern_Query_Farmer_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5, 1, 0, 4, 1, 5, 3}, []string{"comdex", "liquidity", "v1beta1", "farmer", "app_id", "pool_id"}, "", runtime.AssumeColonVerbOpt(false))) pattern_Query_DeserializePoolCoin_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3, 1, 0, 4, 1, 5, 4, 1, 0, 4, 1, 5, 5, 1, 0, 4, 1, 5, 6}, []string{"comdex", "liquidity", "v1beta1", "deserialize", "app_id", "pool_id", "pool_coin_amount"}, "", runtime.AssumeColonVerbOpt(false))) @@ -2487,7 +2487,7 @@ var ( forward_Query_OrdersByOrderer_0 = runtime.ForwardResponseMessage - forward_Query_SoftLock_0 = runtime.ForwardResponseMessage + forward_Query_Farmer_0 = runtime.ForwardResponseMessage forward_Query_DeserializePoolCoin_0 = runtime.ForwardResponseMessage diff --git a/x/liquidity/types/request.go b/x/liquidity/types/request.go index 5c082aca0..2f712f1f0 100644 --- a/x/liquidity/types/request.go +++ b/x/liquidity/types/request.go @@ -384,28 +384,6 @@ func MustUnmarshalOrder(cdc codec.BinaryCodec, value []byte) Order { return msg } -// MustMarshalPoolLiquidityProvidersData MustMarshaPoolLiquidityProvidersData returns the PoolLiquidityProvidersData bytes. -// It throws panic if it fails. -func MustMarshalPoolLiquidityProvidersData(cdc codec.BinaryCodec, liquidityProvidersData PoolLiquidityProvidersData) []byte { - return cdc.MustMarshal(&liquidityProvidersData) -} - -// UnmarshalPoolLiquidityProvidersData returns the PoolLiquidityProvidersData from bytes. -func UnmarshalPoolLiquidityProvidersData(cdc codec.BinaryCodec, value []byte) (liquidityProvidersData PoolLiquidityProvidersData, err error) { - err = cdc.Unmarshal(value, &liquidityProvidersData) - return liquidityProvidersData, err -} - -// MustUnmarshalPoolLiquidityProvidersData returns the PoolLiquidityProvidersData from bytes. -// It throws panic if it fails. -func MustUnmarshalPoolLiquidityProvidersData(cdc codec.BinaryCodec, value []byte) PoolLiquidityProvidersData { - msg, err := UnmarshalPoolLiquidityProvidersData(cdc, value) - if err != nil { - panic(err) - } - return msg -} - // MustMarshalGenericLiquidityParams returns the GenericParams bytes. // It throws panic if it fails. func MustMarshalGenericLiquidityParams(cdc codec.BinaryCodec, genericLiquidityParams GenericParams) []byte { diff --git a/x/liquidity/types/tx.pb.go b/x/liquidity/types/tx.pb.go index e619646a9..0df3a550a 100644 --- a/x/liquidity/types/tx.pb.go +++ b/x/liquidity/types/tx.pb.go @@ -697,28 +697,26 @@ func (m *MsgCancelAllOrdersResponse) XXX_DiscardUnknown() { var xxx_messageInfo_MsgCancelAllOrdersResponse proto.InternalMessageInfo -// MsgTokensSoftLock defines a SDK message for soft locking coins (i.e without bonding) for incentivisation. -type MsgTokensSoftLock struct { - // depositor defines the bech32-encoded address of the farmer - Depositor string `protobuf:"bytes,1,opt,name=depositor,proto3" json:"depositor,omitempty"` - PoolId uint64 `protobuf:"varint,2,opt,name=pool_id,json=poolId,proto3" json:"pool_id,omitempty"` - // soft_lock_coin specifies coins to stake - SoftLockCoin github_com_cosmos_cosmos_sdk_types.Coin `protobuf:"bytes,3,opt,name=soft_lock_coin,json=softLockCoin,proto3,casttype=github.com/cosmos/cosmos-sdk/types.Coin" json:"soft_lock_coin" yaml:"soft_lock_coin"` - AppId uint64 `protobuf:"varint,4,opt,name=app_id,json=appId,proto3" json:"app_id,omitempty"` -} - -func (m *MsgTokensSoftLock) Reset() { *m = MsgTokensSoftLock{} } -func (m *MsgTokensSoftLock) String() string { return proto.CompactTextString(m) } -func (*MsgTokensSoftLock) ProtoMessage() {} -func (*MsgTokensSoftLock) Descriptor() ([]byte, []int) { +// MsgFarm defines a SDK message for farming coins (i.e without bonding) for incentivisation. +type MsgFarm struct { + AppId uint64 `protobuf:"varint,1,opt,name=app_id,json=appId,proto3" json:"app_id,omitempty"` + PoolId uint64 `protobuf:"varint,2,opt,name=pool_id,json=poolId,proto3" json:"pool_id,omitempty"` + Farmer string `protobuf:"bytes,3,opt,name=farmer,proto3" json:"farmer,omitempty"` + FarmingPoolCoin github_com_cosmos_cosmos_sdk_types.Coin `protobuf:"bytes,4,opt,name=farming_pool_coin,json=farmingPoolCoin,proto3,casttype=github.com/cosmos/cosmos-sdk/types.Coin" json:"farming_pool_coin" yaml:"farming_pool_coin"` +} + +func (m *MsgFarm) Reset() { *m = MsgFarm{} } +func (m *MsgFarm) String() string { return proto.CompactTextString(m) } +func (*MsgFarm) ProtoMessage() {} +func (*MsgFarm) Descriptor() ([]byte, []int) { return fileDescriptor_2d6c7fd717524583, []int{16} } -func (m *MsgTokensSoftLock) XXX_Unmarshal(b []byte) error { +func (m *MsgFarm) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *MsgTokensSoftLock) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *MsgFarm) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_MsgTokensSoftLock.Marshal(b, m, deterministic) + return xxx_messageInfo_MsgFarm.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -728,34 +726,34 @@ func (m *MsgTokensSoftLock) XXX_Marshal(b []byte, deterministic bool) ([]byte, e return b[:n], nil } } -func (m *MsgTokensSoftLock) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgTokensSoftLock.Merge(m, src) +func (m *MsgFarm) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgFarm.Merge(m, src) } -func (m *MsgTokensSoftLock) XXX_Size() int { +func (m *MsgFarm) XXX_Size() int { return m.Size() } -func (m *MsgTokensSoftLock) XXX_DiscardUnknown() { - xxx_messageInfo_MsgTokensSoftLock.DiscardUnknown(m) +func (m *MsgFarm) XXX_DiscardUnknown() { + xxx_messageInfo_MsgFarm.DiscardUnknown(m) } -var xxx_messageInfo_MsgTokensSoftLock proto.InternalMessageInfo +var xxx_messageInfo_MsgFarm proto.InternalMessageInfo -// MsgTokensSoftLockResponse defines the Msg/MsgTokensSoftLockResponse response type. -type MsgTokensSoftLockResponse struct { +// MsgFarmResponse defines the Msg/MsgFarmResponse response type. +type MsgFarmResponse struct { } -func (m *MsgTokensSoftLockResponse) Reset() { *m = MsgTokensSoftLockResponse{} } -func (m *MsgTokensSoftLockResponse) String() string { return proto.CompactTextString(m) } -func (*MsgTokensSoftLockResponse) ProtoMessage() {} -func (*MsgTokensSoftLockResponse) Descriptor() ([]byte, []int) { +func (m *MsgFarmResponse) Reset() { *m = MsgFarmResponse{} } +func (m *MsgFarmResponse) String() string { return proto.CompactTextString(m) } +func (*MsgFarmResponse) ProtoMessage() {} +func (*MsgFarmResponse) Descriptor() ([]byte, []int) { return fileDescriptor_2d6c7fd717524583, []int{17} } -func (m *MsgTokensSoftLockResponse) XXX_Unmarshal(b []byte) error { +func (m *MsgFarmResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *MsgTokensSoftLockResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *MsgFarmResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_MsgTokensSoftLockResponse.Marshal(b, m, deterministic) + return xxx_messageInfo_MsgFarmResponse.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -765,40 +763,38 @@ func (m *MsgTokensSoftLockResponse) XXX_Marshal(b []byte, deterministic bool) ([ return b[:n], nil } } -func (m *MsgTokensSoftLockResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgTokensSoftLockResponse.Merge(m, src) +func (m *MsgFarmResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgFarmResponse.Merge(m, src) } -func (m *MsgTokensSoftLockResponse) XXX_Size() int { +func (m *MsgFarmResponse) XXX_Size() int { return m.Size() } -func (m *MsgTokensSoftLockResponse) XXX_DiscardUnknown() { - xxx_messageInfo_MsgTokensSoftLockResponse.DiscardUnknown(m) +func (m *MsgFarmResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgFarmResponse.DiscardUnknown(m) } -var xxx_messageInfo_MsgTokensSoftLockResponse proto.InternalMessageInfo +var xxx_messageInfo_MsgFarmResponse proto.InternalMessageInfo -// MsgTokensSoftUnlock defines a SDK message for performing unlocking of the soft locked coins -type MsgTokensSoftUnlock struct { - // depositor defines the bech32-encoded address of the farmer - Depositor string `protobuf:"bytes,1,opt,name=depositor,proto3" json:"depositor,omitempty"` - PoolId uint64 `protobuf:"varint,2,opt,name=pool_id,json=poolId,proto3" json:"pool_id,omitempty"` - // soft_unlock_coin specifies coins to stake - SoftUnlockCoin github_com_cosmos_cosmos_sdk_types.Coin `protobuf:"bytes,3,opt,name=soft_unlock_coin,json=softUnlockCoin,proto3,casttype=github.com/cosmos/cosmos-sdk/types.Coin" json:"soft_unlock_coin" yaml:"soft_unlock_coin"` - AppId uint64 `protobuf:"varint,4,opt,name=app_id,json=appId,proto3" json:"app_id,omitempty"` +// MsgUnfarm defines a SDK message for performing unfarm of the farmed coins +type MsgUnfarm struct { + AppId uint64 `protobuf:"varint,1,opt,name=app_id,json=appId,proto3" json:"app_id,omitempty"` + PoolId uint64 `protobuf:"varint,2,opt,name=pool_id,json=poolId,proto3" json:"pool_id,omitempty"` + Farmer string `protobuf:"bytes,3,opt,name=farmer,proto3" json:"farmer,omitempty"` + UnfarmingPoolCoin github_com_cosmos_cosmos_sdk_types.Coin `protobuf:"bytes,4,opt,name=unfarming_pool_coin,json=unfarmingPoolCoin,proto3,casttype=github.com/cosmos/cosmos-sdk/types.Coin" json:"unfarming_pool_coin" yaml:"unfarming_pool_coin"` } -func (m *MsgTokensSoftUnlock) Reset() { *m = MsgTokensSoftUnlock{} } -func (m *MsgTokensSoftUnlock) String() string { return proto.CompactTextString(m) } -func (*MsgTokensSoftUnlock) ProtoMessage() {} -func (*MsgTokensSoftUnlock) Descriptor() ([]byte, []int) { +func (m *MsgUnfarm) Reset() { *m = MsgUnfarm{} } +func (m *MsgUnfarm) String() string { return proto.CompactTextString(m) } +func (*MsgUnfarm) ProtoMessage() {} +func (*MsgUnfarm) Descriptor() ([]byte, []int) { return fileDescriptor_2d6c7fd717524583, []int{18} } -func (m *MsgTokensSoftUnlock) XXX_Unmarshal(b []byte) error { +func (m *MsgUnfarm) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *MsgTokensSoftUnlock) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *MsgUnfarm) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_MsgTokensSoftUnlock.Marshal(b, m, deterministic) + return xxx_messageInfo_MsgUnfarm.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -808,34 +804,34 @@ func (m *MsgTokensSoftUnlock) XXX_Marshal(b []byte, deterministic bool) ([]byte, return b[:n], nil } } -func (m *MsgTokensSoftUnlock) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgTokensSoftUnlock.Merge(m, src) +func (m *MsgUnfarm) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgUnfarm.Merge(m, src) } -func (m *MsgTokensSoftUnlock) XXX_Size() int { +func (m *MsgUnfarm) XXX_Size() int { return m.Size() } -func (m *MsgTokensSoftUnlock) XXX_DiscardUnknown() { - xxx_messageInfo_MsgTokensSoftUnlock.DiscardUnknown(m) +func (m *MsgUnfarm) XXX_DiscardUnknown() { + xxx_messageInfo_MsgUnfarm.DiscardUnknown(m) } -var xxx_messageInfo_MsgTokensSoftUnlock proto.InternalMessageInfo +var xxx_messageInfo_MsgUnfarm proto.InternalMessageInfo -// MsgTokensSoftUnlockResponse defines the Msg/MsgTokensSoftUnlockResponse response type. -type MsgTokensSoftUnlockResponse struct { +// MsgUnfarmResponse defines the Msg/MsgUnfarmResponse response type. +type MsgUnfarmResponse struct { } -func (m *MsgTokensSoftUnlockResponse) Reset() { *m = MsgTokensSoftUnlockResponse{} } -func (m *MsgTokensSoftUnlockResponse) String() string { return proto.CompactTextString(m) } -func (*MsgTokensSoftUnlockResponse) ProtoMessage() {} -func (*MsgTokensSoftUnlockResponse) Descriptor() ([]byte, []int) { +func (m *MsgUnfarmResponse) Reset() { *m = MsgUnfarmResponse{} } +func (m *MsgUnfarmResponse) String() string { return proto.CompactTextString(m) } +func (*MsgUnfarmResponse) ProtoMessage() {} +func (*MsgUnfarmResponse) Descriptor() ([]byte, []int) { return fileDescriptor_2d6c7fd717524583, []int{19} } -func (m *MsgTokensSoftUnlockResponse) XXX_Unmarshal(b []byte) error { +func (m *MsgUnfarmResponse) XXX_Unmarshal(b []byte) error { return m.Unmarshal(b) } -func (m *MsgTokensSoftUnlockResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { +func (m *MsgUnfarmResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { if deterministic { - return xxx_messageInfo_MsgTokensSoftUnlockResponse.Marshal(b, m, deterministic) + return xxx_messageInfo_MsgUnfarmResponse.Marshal(b, m, deterministic) } else { b = b[:cap(b)] n, err := m.MarshalToSizedBuffer(b) @@ -845,17 +841,17 @@ func (m *MsgTokensSoftUnlockResponse) XXX_Marshal(b []byte, deterministic bool) return b[:n], nil } } -func (m *MsgTokensSoftUnlockResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgTokensSoftUnlockResponse.Merge(m, src) +func (m *MsgUnfarmResponse) XXX_Merge(src proto.Message) { + xxx_messageInfo_MsgUnfarmResponse.Merge(m, src) } -func (m *MsgTokensSoftUnlockResponse) XXX_Size() int { +func (m *MsgUnfarmResponse) XXX_Size() int { return m.Size() } -func (m *MsgTokensSoftUnlockResponse) XXX_DiscardUnknown() { - xxx_messageInfo_MsgTokensSoftUnlockResponse.DiscardUnknown(m) +func (m *MsgUnfarmResponse) XXX_DiscardUnknown() { + xxx_messageInfo_MsgUnfarmResponse.DiscardUnknown(m) } -var xxx_messageInfo_MsgTokensSoftUnlockResponse proto.InternalMessageInfo +var xxx_messageInfo_MsgUnfarmResponse proto.InternalMessageInfo func init() { proto.RegisterType((*MsgCreatePair)(nil), "comdex.liquidity.v1beta1.MsgCreatePair") @@ -874,85 +870,84 @@ func init() { proto.RegisterType((*MsgCancelOrderResponse)(nil), "comdex.liquidity.v1beta1.MsgCancelOrderResponse") proto.RegisterType((*MsgCancelAllOrders)(nil), "comdex.liquidity.v1beta1.MsgCancelAllOrders") proto.RegisterType((*MsgCancelAllOrdersResponse)(nil), "comdex.liquidity.v1beta1.MsgCancelAllOrdersResponse") - proto.RegisterType((*MsgTokensSoftLock)(nil), "comdex.liquidity.v1beta1.MsgTokensSoftLock") - proto.RegisterType((*MsgTokensSoftLockResponse)(nil), "comdex.liquidity.v1beta1.MsgTokensSoftLockResponse") - proto.RegisterType((*MsgTokensSoftUnlock)(nil), "comdex.liquidity.v1beta1.MsgTokensSoftUnlock") - proto.RegisterType((*MsgTokensSoftUnlockResponse)(nil), "comdex.liquidity.v1beta1.MsgTokensSoftUnlockResponse") + proto.RegisterType((*MsgFarm)(nil), "comdex.liquidity.v1beta1.MsgFarm") + proto.RegisterType((*MsgFarmResponse)(nil), "comdex.liquidity.v1beta1.MsgFarmResponse") + proto.RegisterType((*MsgUnfarm)(nil), "comdex.liquidity.v1beta1.MsgUnfarm") + proto.RegisterType((*MsgUnfarmResponse)(nil), "comdex.liquidity.v1beta1.MsgUnfarmResponse") } func init() { proto.RegisterFile("comdex/liquidity/v1beta1/tx.proto", fileDescriptor_2d6c7fd717524583) } var fileDescriptor_2d6c7fd717524583 = []byte{ - // 1092 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x57, 0x4f, 0x6f, 0x1b, 0x45, - 0x14, 0xf7, 0xc6, 0x8e, 0x63, 0xbf, 0x34, 0x4e, 0xba, 0x34, 0x64, 0xb3, 0x2d, 0x76, 0xb0, 0xa0, - 0xb5, 0xa0, 0xd9, 0x6d, 0x13, 0xb8, 0x54, 0x08, 0x89, 0xc4, 0xaa, 0x48, 0x15, 0x0b, 0x58, 0x40, - 0x48, 0x48, 0x28, 0xdd, 0xec, 0x8e, 0xb7, 0xa3, 0xac, 0x77, 0xb6, 0x3b, 0x6b, 0x9a, 0x7c, 0x03, - 0x38, 0x81, 0x38, 0x21, 0x71, 0x41, 0x1c, 0xf9, 0x06, 0x7c, 0x83, 0x48, 0x70, 0xe8, 0x11, 0x71, - 0x48, 0x21, 0x39, 0x70, 0x87, 0x1b, 0x5c, 0xd0, 0xcc, 0xfe, 0x1b, 0xd7, 0xf5, 0x66, 0x5d, 0x7a, - 0x40, 0xe2, 0xe4, 0x9d, 0x99, 0xdf, 0x7b, 0xef, 0xf7, 0x7b, 0x6f, 0xe6, 0xcd, 0x18, 0x5e, 0xb4, - 0xc8, 0xc0, 0x46, 0x87, 0xba, 0x8b, 0xef, 0x0f, 0xb1, 0x8d, 0xc3, 0x23, 0xfd, 0xd3, 0x9b, 0xfb, - 0x28, 0x34, 0x6f, 0xea, 0xe1, 0xa1, 0xe6, 0x07, 0x24, 0x24, 0xb2, 0x12, 0x41, 0xb4, 0x14, 0xa2, - 0xc5, 0x10, 0xf5, 0x92, 0x43, 0x1c, 0xc2, 0x41, 0x3a, 0xfb, 0x8a, 0xf0, 0x6a, 0xd3, 0x22, 0x74, - 0x40, 0xa8, 0xbe, 0x6f, 0x52, 0x94, 0x7a, 0xb3, 0x08, 0xf6, 0x92, 0x75, 0x87, 0x10, 0xc7, 0x45, - 0x3a, 0x1f, 0xed, 0x0f, 0xfb, 0xba, 0x3d, 0x0c, 0xcc, 0x10, 0x93, 0x64, 0xbd, 0x33, 0x91, 0x52, - 0xc6, 0x80, 0x23, 0xdb, 0x5f, 0x49, 0xb0, 0xd0, 0xa3, 0xce, 0x76, 0x80, 0xcc, 0x10, 0xbd, 0x6b, - 0xe2, 0x40, 0x56, 0x60, 0xce, 0x62, 0x23, 0x12, 0x28, 0xd2, 0x9a, 0xd4, 0xa9, 0x1b, 0xc9, 0x50, - 0xbe, 0x0a, 0x8b, 0x8c, 0xd0, 0x1e, 0x23, 0xb2, 0x67, 0x23, 0x8f, 0x0c, 0x94, 0x19, 0x8e, 0x58, - 0x60, 0xd3, 0xdb, 0x04, 0x7b, 0x5d, 0x36, 0x29, 0x77, 0x60, 0xe9, 0xfe, 0x90, 0x84, 0x23, 0xc0, - 0x32, 0x07, 0x36, 0xf8, 0x7c, 0x86, 0x5c, 0x86, 0xaa, 0xe9, 0xfb, 0x7b, 0xd8, 0x56, 0x2a, 0x6b, - 0x52, 0xa7, 0x62, 0xcc, 0x9a, 0xbe, 0xbf, 0x63, 0xb7, 0x57, 0x60, 0x79, 0x84, 0x93, 0x81, 0xa8, - 0x4f, 0x3c, 0x8a, 0xda, 0x3f, 0x8e, 0xb0, 0x25, 0xc4, 0xcd, 0x61, 0xbb, 0x02, 0x73, 0xbe, 0x89, - 0x03, 0xe6, 0x7c, 0x86, 0x3b, 0xaf, 0xb2, 0xe1, 0x8e, 0x2d, 0xfb, 0xb0, 0x60, 0x23, 0x9f, 0x50, - 0x1c, 0x72, 0x82, 0x54, 0x29, 0xaf, 0x95, 0x3b, 0xf3, 0x1b, 0xab, 0x5a, 0x94, 0x74, 0x8d, 0x89, - 0x49, 0xea, 0xa3, 0x31, 0xae, 0x5b, 0x37, 0x8e, 0x4f, 0x5a, 0xa5, 0xef, 0x1f, 0xb5, 0x3a, 0x0e, - 0x0e, 0xef, 0x0d, 0xf7, 0x35, 0x8b, 0x0c, 0xf4, 0xb8, 0x42, 0xd1, 0xcf, 0x3a, 0xb5, 0x0f, 0xf4, - 0xf0, 0xc8, 0x47, 0x94, 0x1b, 0x50, 0xe3, 0x42, 0x1c, 0x81, 0x8f, 0x0a, 0xc9, 0x24, 0xc4, 0x4d, - 0x65, 0xfe, 0x24, 0x01, 0xf4, 0xa8, 0xd3, 0x8d, 0x7c, 0xc8, 0x57, 0xa0, 0x1e, 0xbb, 0x4b, 0x55, - 0x66, 0x13, 0x5c, 0x27, 0x21, 0xae, 0xa8, 0x93, 0x10, 0xf7, 0xbf, 0xa4, 0xf3, 0x12, 0xc8, 0x99, - 0x9a, 0x54, 0xe4, 0x37, 0x12, 0xcc, 0xf7, 0xa8, 0xf3, 0x11, 0x0e, 0xef, 0xd9, 0x81, 0xf9, 0x40, - 0x6e, 0x02, 0x3c, 0x88, 0xbf, 0x51, 0x22, 0x53, 0x98, 0x99, 0xac, 0xf3, 0x0d, 0xa8, 0xf3, 0x05, - 0x26, 0x92, 0xef, 0xb3, 0x5c, 0x8d, 0x15, 0xa6, 0xd1, 0xa8, 0x31, 0x0b, 0x36, 0x9e, 0xc4, 0x79, - 0x19, 0x9e, 0x13, 0xc8, 0xa5, 0xa4, 0x7f, 0x2f, 0xf3, 0x0d, 0xb8, 0x8b, 0x07, 0x38, 0x7c, 0x27, - 0xb0, 0x11, 0x3f, 0x2e, 0x84, 0x7d, 0xa4, 0x9c, 0x93, 0xe1, 0xe4, 0x0d, 0x78, 0x1b, 0xea, 0x36, - 0x0e, 0x90, 0xc5, 0x0e, 0x2c, 0x27, 0xdc, 0xd8, 0xe8, 0x68, 0x93, 0x3a, 0x84, 0xc6, 0xc3, 0x74, - 0x13, 0xbc, 0x91, 0x99, 0xca, 0x6f, 0x02, 0x90, 0x7e, 0x1f, 0x05, 0x91, 0xf2, 0x4a, 0x31, 0xe5, - 0x75, 0x6e, 0xc2, 0xa5, 0xbf, 0x02, 0x17, 0x6d, 0x34, 0x30, 0x3d, 0x5b, 0x3c, 0xa8, 0xb3, 0x5c, - 0xc4, 0x62, 0xb4, 0x90, 0x9d, 0xd4, 0x2e, 0xcc, 0xfa, 0x01, 0xb6, 0x90, 0x52, 0x65, 0xeb, 0x5b, - 0x1a, 0xf3, 0xf5, 0xcb, 0x49, 0xeb, 0x6a, 0x81, 0x9d, 0xd2, 0x45, 0x96, 0x11, 0x19, 0xcb, 0xb7, - 0xa1, 0x6a, 0x0e, 0xc8, 0xd0, 0x0b, 0x95, 0xb9, 0xa9, 0xdd, 0xec, 0x78, 0xa1, 0x11, 0x5b, 0xcb, - 0x77, 0xa0, 0xc1, 0xb3, 0xbc, 0xe7, 0xe2, 0x3e, 0xa2, 0xbe, 0xe9, 0x29, 0xb5, 0x58, 0x7d, 0xd4, - 0x18, 0xb5, 0xa4, 0x31, 0x6a, 0xdd, 0xb8, 0x31, 0x6e, 0xd5, 0x58, 0xa8, 0xaf, 0x1f, 0xb5, 0x24, - 0x63, 0x81, 0x9b, 0xee, 0xc6, 0x96, 0xc2, 0x06, 0xa8, 0x8f, 0x1f, 0xce, 0xac, 0xd0, 0xe9, 0x16, - 0xf8, 0xae, 0x0c, 0x8d, 0x1e, 0x75, 0x7a, 0x66, 0x70, 0x80, 0xfe, 0x5f, 0x7b, 0x20, 0xab, 0x5e, - 0xf5, 0x19, 0x57, 0x6f, 0xee, 0x19, 0x54, 0xaf, 0x26, 0x56, 0x4f, 0x81, 0xe7, 0x47, 0x6b, 0x94, - 0x96, 0x6f, 0xc8, 0xab, 0xb7, 0x6d, 0x7a, 0x16, 0x72, 0x9f, 0xba, 0x7a, 0xab, 0x50, 0x8b, 0x14, - 0x60, 0x9b, 0x17, 0xaf, 0x12, 0xdb, 0xec, 0xd8, 0x93, 0xfa, 0x49, 0x44, 0x48, 0x08, 0x9b, 0x12, - 0xba, 0xcb, 0xbb, 0x63, 0xb4, 0xf2, 0x96, 0x1b, 0x2d, 0xd2, 0x1c, 0x52, 0xab, 0x50, 0x8b, 0x49, - 0x51, 0x65, 0x66, 0xad, 0xcc, 0x62, 0x47, 0xac, 0xc4, 0xfe, 0x5b, 0x16, 0x63, 0x5f, 0x01, 0x75, - 0x3c, 0x42, 0x1a, 0xff, 0x4f, 0x09, 0x2e, 0xf6, 0xa8, 0xf3, 0x01, 0x39, 0x40, 0x1e, 0x7d, 0x9f, - 0xf4, 0xc3, 0x5d, 0x62, 0x1d, 0x3c, 0xed, 0x9d, 0xf3, 0xb9, 0x04, 0x0d, 0x4a, 0xfa, 0xe1, 0x9e, - 0x4b, 0xac, 0x83, 0x82, 0x1d, 0xf9, 0x6d, 0x56, 0xdb, 0x3f, 0x4e, 0x5a, 0xcb, 0x47, 0xe6, 0xc0, - 0xbd, 0xd5, 0x1e, 0x35, 0x6f, 0xff, 0x75, 0xd2, 0xba, 0x56, 0xf0, 0x3a, 0x32, 0x2e, 0xd0, 0x98, - 0x7e, 0x4e, 0x67, 0xbf, 0x55, 0xf9, 0xec, 0xdb, 0x56, 0xa9, 0x7d, 0x19, 0x56, 0xc7, 0x44, 0xa7, - 0x29, 0xf9, 0x5b, 0xe2, 0xdd, 0x3f, 0x5b, 0xfd, 0xd0, 0x73, 0xff, 0x45, 0x52, 0xbe, 0x90, 0x60, - 0x89, 0xab, 0x1a, 0x7a, 0x53, 0xa4, 0xe5, 0x4e, 0x9c, 0x96, 0x15, 0x21, 0x2d, 0x82, 0x83, 0xa9, - 0x12, 0xc3, 0x6b, 0x12, 0x89, 0x38, 0x3f, 0x35, 0x2f, 0xc0, 0xe5, 0x27, 0x88, 0x4f, 0x92, 0xb3, - 0xf1, 0x43, 0x0d, 0xca, 0x3d, 0xea, 0xc8, 0x7d, 0x00, 0xe1, 0xd5, 0x78, 0x6d, 0x72, 0xf3, 0x1a, - 0x79, 0xca, 0xa9, 0x7a, 0x41, 0x60, 0x12, 0x4f, 0x88, 0xc3, 0xde, 0x7b, 0x85, 0xe2, 0x10, 0xe2, - 0x16, 0x8b, 0x23, 0x3c, 0xba, 0xe4, 0x4f, 0x60, 0x2e, 0x79, 0x70, 0xbd, 0x94, 0x6b, 0x1b, 0xa3, - 0xd4, 0xeb, 0x45, 0x50, 0xa9, 0xfb, 0xbb, 0x50, 0x4b, 0x9f, 0x3a, 0x2f, 0xe7, 0x5a, 0x26, 0x30, - 0x75, 0xbd, 0x10, 0x4c, 0x4c, 0x94, 0xf0, 0x2e, 0xc9, 0x4f, 0x54, 0x06, 0x3c, 0x27, 0x51, 0xe3, - 0x17, 0xa0, 0x8c, 0x61, 0x5e, 0xbc, 0xfc, 0x3a, 0xb9, 0xf6, 0x02, 0x52, 0xbd, 0x51, 0x14, 0x29, - 0x86, 0x12, 0x3b, 0x75, 0x7e, 0x28, 0x01, 0x79, 0x4e, 0xa8, 0x27, 0xb4, 0x61, 0x79, 0x08, 0x8b, - 0x8f, 0xf7, 0xe0, 0xeb, 0x05, 0x9c, 0xa4, 0x68, 0xf5, 0xb5, 0x69, 0xd0, 0x69, 0xd8, 0x00, 0x1a, - 0x8f, 0x75, 0xde, 0x57, 0x73, 0xfd, 0x8c, 0x82, 0xd5, 0xcd, 0x29, 0xc0, 0x69, 0xcc, 0x43, 0x58, - 0x1a, 0x6b, 0x6d, 0xeb, 0x05, 0x1d, 0x45, 0x70, 0xf5, 0xf5, 0xa9, 0xe0, 0x49, 0xe4, 0xad, 0xf7, - 0x8e, 0x7f, 0x6b, 0x96, 0x8e, 0x4f, 0x9b, 0xd2, 0xc3, 0xd3, 0xa6, 0xf4, 0xeb, 0x69, 0x53, 0xfa, - 0xf2, 0xac, 0x59, 0x7a, 0x78, 0xd6, 0x2c, 0xfd, 0x7c, 0xd6, 0x2c, 0x7d, 0xbc, 0x39, 0xd2, 0xce, - 0x98, 0xfb, 0x75, 0xd2, 0xef, 0x63, 0x0b, 0x9b, 0x6e, 0x3c, 0xd6, 0xc5, 0xbf, 0xb4, 0xbc, 0xbf, - 0xed, 0x57, 0xf9, 0x63, 0x61, 0xf3, 0x9f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xd8, 0x63, 0x07, 0x09, - 0x86, 0x0f, 0x00, 0x00, + // 1082 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x57, 0xcf, 0x6f, 0xdc, 0x44, + 0x14, 0x8e, 0xbb, 0x9b, 0xfd, 0xf1, 0x42, 0x12, 0xe2, 0x34, 0xad, 0x63, 0x55, 0xbb, 0xe9, 0x02, + 0xed, 0x02, 0x8d, 0xdd, 0xa6, 0x9c, 0x10, 0x42, 0x22, 0x59, 0x45, 0x0a, 0x74, 0x45, 0x59, 0x81, + 0x90, 0x2a, 0xa1, 0xd4, 0xb1, 0x67, 0xdd, 0x51, 0xbd, 0x1e, 0xd7, 0xe3, 0xa5, 0xcd, 0x7f, 0x81, + 0x7a, 0xaa, 0xc4, 0x8d, 0x23, 0x7f, 0x49, 0x24, 0x38, 0xf4, 0x88, 0x38, 0xa4, 0x90, 0x48, 0x70, + 0xe3, 0xc0, 0x11, 0x09, 0x09, 0xcd, 0x78, 0x3c, 0x9e, 0x25, 0x5d, 0xc7, 0xa9, 0x72, 0x40, 0xe2, + 0xb4, 0x7e, 0x33, 0xdf, 0x7b, 0xef, 0xfb, 0xe6, 0xcd, 0xbc, 0x99, 0x85, 0xab, 0x2e, 0x19, 0x79, + 0xe8, 0x89, 0x1d, 0xe0, 0x47, 0x63, 0xec, 0xe1, 0x64, 0xdf, 0xfe, 0xfa, 0xd6, 0x1e, 0x4a, 0x9c, + 0x5b, 0x76, 0xf2, 0xc4, 0x8a, 0x62, 0x92, 0x10, 0xdd, 0x48, 0x21, 0x96, 0x84, 0x58, 0x02, 0x62, + 0x5e, 0xf4, 0x89, 0x4f, 0x38, 0xc8, 0x66, 0x5f, 0x29, 0xde, 0x6c, 0xb9, 0x84, 0x8e, 0x08, 0xb5, + 0xf7, 0x1c, 0x8a, 0x64, 0x34, 0x97, 0xe0, 0x30, 0x9b, 0xf7, 0x09, 0xf1, 0x03, 0x64, 0x73, 0x6b, + 0x6f, 0x3c, 0xb4, 0xbd, 0x71, 0xec, 0x24, 0x98, 0x64, 0xf3, 0xdd, 0xa9, 0x94, 0x72, 0x06, 0x1c, + 0xd9, 0x79, 0xaa, 0xc1, 0x7c, 0x9f, 0xfa, 0x5b, 0x31, 0x72, 0x12, 0x74, 0xd7, 0xc1, 0xb1, 0x6e, + 0x40, 0xdd, 0x65, 0x16, 0x89, 0x0d, 0x6d, 0x4d, 0xeb, 0x36, 0x07, 0x99, 0xa9, 0x5f, 0x83, 0x45, + 0x46, 0x68, 0x97, 0x11, 0xd9, 0xf5, 0x50, 0x48, 0x46, 0xc6, 0x05, 0x8e, 0x98, 0x67, 0xc3, 0x5b, + 0x04, 0x87, 0x3d, 0x36, 0xa8, 0x77, 0xe1, 0xf5, 0x47, 0x63, 0x92, 0x4c, 0x00, 0x2b, 0x1c, 0xb8, + 0xc0, 0xc7, 0x73, 0xe4, 0x0a, 0xd4, 0x9c, 0x28, 0xda, 0xc5, 0x9e, 0x51, 0x5d, 0xd3, 0xba, 0xd5, + 0xc1, 0xac, 0x13, 0x45, 0x3b, 0x5e, 0xe7, 0x32, 0xac, 0x4c, 0x70, 0x1a, 0x20, 0x1a, 0x91, 0x90, + 0xa2, 0xce, 0x0f, 0x13, 0x6c, 0x09, 0x09, 0x0a, 0xd8, 0x5e, 0x86, 0x7a, 0xe4, 0xe0, 0x98, 0x05, + 0xbf, 0xc0, 0x83, 0xd7, 0x98, 0xb9, 0xe3, 0xe9, 0x11, 0xcc, 0x7b, 0x28, 0x22, 0x14, 0x27, 0x9c, + 0x20, 0x35, 0x2a, 0x6b, 0x95, 0xee, 0xdc, 0xc6, 0xaa, 0x95, 0x2e, 0xba, 0xc5, 0xc4, 0x64, 0xf5, + 0xb1, 0x18, 0xd7, 0xcd, 0x9b, 0x07, 0x87, 0xed, 0x99, 0xef, 0x5f, 0xb4, 0xbb, 0x3e, 0x4e, 0x1e, + 0x8c, 0xf7, 0x2c, 0x97, 0x8c, 0x6c, 0x51, 0xa1, 0xf4, 0x67, 0x9d, 0x7a, 0x0f, 0xed, 0x64, 0x3f, + 0x42, 0x94, 0x3b, 0xd0, 0xc1, 0x6b, 0x22, 0x03, 0xb7, 0x4a, 0xc9, 0x24, 0x24, 0x90, 0x32, 0x7f, + 0xd4, 0x00, 0xfa, 0xd4, 0xef, 0xa5, 0x31, 0xf4, 0x2b, 0xd0, 0x14, 0xe1, 0xa4, 0xca, 0x7c, 0x80, + 0xeb, 0x24, 0x24, 0x50, 0x75, 0x12, 0x12, 0xfc, 0x97, 0x74, 0x5e, 0x04, 0x3d, 0x57, 0x23, 0x45, + 0x7e, 0xab, 0xc1, 0x5c, 0x9f, 0xfa, 0x5f, 0xe2, 0xe4, 0x81, 0x17, 0x3b, 0x8f, 0xf5, 0x16, 0xc0, + 0x63, 0xf1, 0x8d, 0x32, 0x99, 0xca, 0xc8, 0x74, 0x9d, 0x1f, 0x40, 0x93, 0x4f, 0x30, 0x91, 0x7c, + 0x9f, 0x15, 0x6a, 0xac, 0x32, 0x8d, 0x83, 0x06, 0xf3, 0x60, 0xf6, 0x34, 0xce, 0x2b, 0xb0, 0xac, + 0x90, 0x93, 0xa4, 0x7f, 0xaf, 0xf0, 0x0d, 0x78, 0x07, 0x8f, 0x70, 0xf2, 0x69, 0xec, 0x21, 0x7e, + 0x5c, 0x08, 0xfb, 0x90, 0x9c, 0x33, 0x73, 0xfa, 0x06, 0xdc, 0x86, 0xa6, 0x87, 0x63, 0xe4, 0xb2, + 0x03, 0xcb, 0x09, 0x2f, 0x6c, 0x74, 0xad, 0x69, 0x1d, 0xc2, 0xe2, 0x69, 0x7a, 0x19, 0x7e, 0x90, + 0xbb, 0xea, 0x1f, 0x02, 0x90, 0xe1, 0x10, 0xc5, 0xa9, 0xf2, 0x6a, 0x39, 0xe5, 0x4d, 0xee, 0xc2, + 0xa5, 0xbf, 0x03, 0x4b, 0x1e, 0x1a, 0x39, 0xa1, 0xa7, 0x1e, 0xd4, 0x59, 0x2e, 0x62, 0x31, 0x9d, + 0xc8, 0x4f, 0x6a, 0x0f, 0x66, 0xa3, 0x18, 0xbb, 0xc8, 0xa8, 0xb1, 0xf9, 0x4d, 0x8b, 0xc5, 0xfa, + 0xf9, 0xb0, 0x7d, 0xad, 0xc4, 0x4e, 0xe9, 0x21, 0x77, 0x90, 0x3a, 0xeb, 0xdb, 0x50, 0x73, 0x46, + 0x64, 0x1c, 0x26, 0x46, 0xfd, 0xcc, 0x61, 0x76, 0xc2, 0x64, 0x20, 0xbc, 0xf5, 0x8f, 0x61, 0x81, + 0xaf, 0xf2, 0x6e, 0x80, 0x87, 0x88, 0x46, 0x4e, 0x68, 0x34, 0x84, 0xfa, 0xb4, 0x31, 0x5a, 0x59, + 0x63, 0xb4, 0x7a, 0xa2, 0x31, 0x6e, 0x36, 0x58, 0xaa, 0x67, 0x2f, 0xda, 0xda, 0x60, 0x9e, 0xbb, + 0xde, 0x11, 0x9e, 0xca, 0x06, 0x68, 0x9e, 0x3c, 0x9c, 0x79, 0xa1, 0xe5, 0x16, 0xf8, 0xae, 0x02, + 0x0b, 0x7d, 0xea, 0xf7, 0x9d, 0xf8, 0x21, 0xfa, 0x7f, 0xed, 0x81, 0xbc, 0x7a, 0xb5, 0x73, 0xae, + 0x5e, 0xfd, 0x1c, 0xaa, 0xd7, 0x50, 0xab, 0x67, 0xc0, 0xa5, 0xc9, 0x1a, 0xc9, 0xf2, 0x8d, 0x79, + 0xf5, 0xb6, 0x9c, 0xd0, 0x45, 0xc1, 0x2b, 0x57, 0x6f, 0x15, 0x1a, 0xa9, 0x02, 0xec, 0xf1, 0xe2, + 0x55, 0x85, 0xcf, 0x8e, 0x37, 0xad, 0x9f, 0xa4, 0x84, 0x94, 0xb4, 0x92, 0xd0, 0x7d, 0xde, 0x1d, + 0xd3, 0x99, 0x8f, 0x82, 0x74, 0x92, 0x16, 0x90, 0x5a, 0x85, 0x86, 0x20, 0x45, 0x8d, 0x0b, 0x6b, + 0x15, 0x96, 0x3b, 0x65, 0xa5, 0xf6, 0xdf, 0x8a, 0x9a, 0xfb, 0x0a, 0x98, 0x27, 0x33, 0xc8, 0xfc, + 0xbf, 0x69, 0x50, 0xef, 0x53, 0x7f, 0xdb, 0x89, 0xd5, 0xfb, 0x58, 0x53, 0x02, 0x4c, 0x6f, 0xbd, + 0x97, 0xa0, 0x36, 0x74, 0xe2, 0x11, 0x8a, 0xc5, 0xfd, 0x2e, 0x2c, 0xfd, 0xa9, 0x06, 0x4b, 0xec, + 0x13, 0x87, 0xfe, 0x6e, 0xde, 0x9b, 0x4f, 0xdd, 0x9d, 0x9f, 0xb0, 0x2a, 0xff, 0x79, 0xd8, 0x36, + 0xf6, 0x9d, 0x51, 0xf0, 0x7e, 0xe7, 0x44, 0x84, 0xce, 0x5f, 0x87, 0xed, 0xeb, 0x25, 0xef, 0xa6, + 0xc1, 0xa2, 0x70, 0xbf, 0x2b, 0x3a, 0x7d, 0x67, 0x09, 0x16, 0x85, 0x4e, 0xa9, 0xfd, 0x0f, 0x0d, + 0x9a, 0x7d, 0xea, 0x7f, 0x11, 0x0e, 0xcf, 0x53, 0xfd, 0x33, 0x0d, 0x96, 0xc7, 0xe1, 0x2b, 0xe8, + 0xef, 0x0b, 0xfd, 0x66, 0xaa, 0xff, 0x25, 0x31, 0xce, 0xb4, 0x02, 0x4b, 0x32, 0x80, 0x5c, 0x83, + 0x65, 0x58, 0x92, 0x7a, 0xb3, 0x55, 0xd8, 0xf8, 0xbb, 0x0e, 0x95, 0x3e, 0xf5, 0xf5, 0x21, 0x80, + 0xf2, 0x0e, 0xbc, 0x3e, 0xbd, 0x1d, 0x4d, 0x3c, 0xce, 0x4c, 0xbb, 0x24, 0x30, 0xcb, 0xa7, 0xe4, + 0x61, 0x2f, 0xb8, 0x52, 0x79, 0x08, 0x09, 0xca, 0xe5, 0x51, 0x9e, 0x51, 0xfa, 0x57, 0x50, 0xcf, + 0x9e, 0x50, 0x6f, 0x16, 0xfa, 0x0a, 0x94, 0x79, 0xa3, 0x0c, 0x4a, 0x86, 0xbf, 0x0f, 0x0d, 0xf9, + 0x78, 0x79, 0xab, 0xd0, 0x33, 0x83, 0x99, 0xeb, 0xa5, 0x60, 0xea, 0x42, 0x29, 0x2f, 0x8d, 0xe2, + 0x85, 0xca, 0x81, 0xa7, 0x2c, 0xd4, 0xc9, 0x2b, 0x4d, 0xc7, 0x30, 0xa7, 0x5e, 0x67, 0xdd, 0x42, + 0x7f, 0x05, 0x69, 0xde, 0x2c, 0x8b, 0x54, 0x53, 0xa9, 0xbd, 0xb7, 0x38, 0x95, 0x82, 0x3c, 0x25, + 0xd5, 0x4b, 0x1a, 0xab, 0x3e, 0x86, 0xc5, 0x7f, 0x77, 0xd5, 0x1b, 0x25, 0x82, 0x48, 0xb4, 0xf9, + 0xde, 0x59, 0xd0, 0x32, 0xed, 0xe7, 0x50, 0xe5, 0xbd, 0xf4, 0x6a, 0xa1, 0x37, 0x83, 0x98, 0x6f, + 0x9f, 0x0a, 0x91, 0x51, 0xef, 0x41, 0x4d, 0x74, 0xa9, 0x37, 0x0a, 0x9d, 0x52, 0x90, 0xf9, 0x6e, + 0x09, 0x50, 0x16, 0x7b, 0xf3, 0xb3, 0x83, 0x5f, 0x5b, 0x33, 0x07, 0x47, 0x2d, 0xed, 0xf9, 0x51, + 0x4b, 0xfb, 0xe5, 0xa8, 0xa5, 0x7d, 0x73, 0xdc, 0x9a, 0x79, 0x7e, 0xdc, 0x9a, 0xf9, 0xe9, 0xb8, + 0x35, 0x73, 0xef, 0xf6, 0x44, 0xbb, 0x61, 0x41, 0xd7, 0xc9, 0x70, 0x88, 0x5d, 0xec, 0x04, 0xc2, + 0xb6, 0xd5, 0x3f, 0x9a, 0xbc, 0xff, 0xec, 0xd5, 0xf8, 0x15, 0x7e, 0xfb, 0x9f, 0x00, 0x00, 0x00, + 0xff, 0xff, 0xb8, 0xec, 0x0b, 0x06, 0x1c, 0x0f, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -983,10 +978,10 @@ type MsgClient interface { CancelOrder(ctx context.Context, in *MsgCancelOrder, opts ...grpc.CallOption) (*MsgCancelOrderResponse, error) // CancelAllOrders defines a method for cancelling all orders CancelAllOrders(ctx context.Context, in *MsgCancelAllOrders, opts ...grpc.CallOption) (*MsgCancelAllOrdersResponse, error) - // TokensSoftLock defines a method to soft lock the token, for incentivization - TokensSoftLock(ctx context.Context, in *MsgTokensSoftLock, opts ...grpc.CallOption) (*MsgTokensSoftLockResponse, error) - // TokensSoftUnlock defines a method to unlock the soft locked token, for incentivization - TokensSoftUnlock(ctx context.Context, in *MsgTokensSoftUnlock, opts ...grpc.CallOption) (*MsgTokensSoftUnlockResponse, error) + // MsgFarm defines a method to farm the pool token, for incentivization + Farm(ctx context.Context, in *MsgFarm, opts ...grpc.CallOption) (*MsgFarmResponse, error) + // Unfarm defines a method to unfarm the farmed pool token + Unfarm(ctx context.Context, in *MsgUnfarm, opts ...grpc.CallOption) (*MsgUnfarmResponse, error) } type msgClient struct { @@ -1069,18 +1064,18 @@ func (c *msgClient) CancelAllOrders(ctx context.Context, in *MsgCancelAllOrders, return out, nil } -func (c *msgClient) TokensSoftLock(ctx context.Context, in *MsgTokensSoftLock, opts ...grpc.CallOption) (*MsgTokensSoftLockResponse, error) { - out := new(MsgTokensSoftLockResponse) - err := c.cc.Invoke(ctx, "/comdex.liquidity.v1beta1.Msg/TokensSoftLock", in, out, opts...) +func (c *msgClient) Farm(ctx context.Context, in *MsgFarm, opts ...grpc.CallOption) (*MsgFarmResponse, error) { + out := new(MsgFarmResponse) + err := c.cc.Invoke(ctx, "/comdex.liquidity.v1beta1.Msg/Farm", in, out, opts...) if err != nil { return nil, err } return out, nil } -func (c *msgClient) TokensSoftUnlock(ctx context.Context, in *MsgTokensSoftUnlock, opts ...grpc.CallOption) (*MsgTokensSoftUnlockResponse, error) { - out := new(MsgTokensSoftUnlockResponse) - err := c.cc.Invoke(ctx, "/comdex.liquidity.v1beta1.Msg/TokensSoftUnlock", in, out, opts...) +func (c *msgClient) Unfarm(ctx context.Context, in *MsgUnfarm, opts ...grpc.CallOption) (*MsgUnfarmResponse, error) { + out := new(MsgUnfarmResponse) + err := c.cc.Invoke(ctx, "/comdex.liquidity.v1beta1.Msg/Unfarm", in, out, opts...) if err != nil { return nil, err } @@ -1105,10 +1100,10 @@ type MsgServer interface { CancelOrder(context.Context, *MsgCancelOrder) (*MsgCancelOrderResponse, error) // CancelAllOrders defines a method for cancelling all orders CancelAllOrders(context.Context, *MsgCancelAllOrders) (*MsgCancelAllOrdersResponse, error) - // TokensSoftLock defines a method to soft lock the token, for incentivization - TokensSoftLock(context.Context, *MsgTokensSoftLock) (*MsgTokensSoftLockResponse, error) - // TokensSoftUnlock defines a method to unlock the soft locked token, for incentivization - TokensSoftUnlock(context.Context, *MsgTokensSoftUnlock) (*MsgTokensSoftUnlockResponse, error) + // MsgFarm defines a method to farm the pool token, for incentivization + Farm(context.Context, *MsgFarm) (*MsgFarmResponse, error) + // Unfarm defines a method to unfarm the farmed pool token + Unfarm(context.Context, *MsgUnfarm) (*MsgUnfarmResponse, error) } // UnimplementedMsgServer can be embedded to have forward compatible implementations. @@ -1139,11 +1134,11 @@ func (*UnimplementedMsgServer) CancelOrder(ctx context.Context, req *MsgCancelOr func (*UnimplementedMsgServer) CancelAllOrders(ctx context.Context, req *MsgCancelAllOrders) (*MsgCancelAllOrdersResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method CancelAllOrders not implemented") } -func (*UnimplementedMsgServer) TokensSoftLock(ctx context.Context, req *MsgTokensSoftLock) (*MsgTokensSoftLockResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method TokensSoftLock not implemented") +func (*UnimplementedMsgServer) Farm(ctx context.Context, req *MsgFarm) (*MsgFarmResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Farm not implemented") } -func (*UnimplementedMsgServer) TokensSoftUnlock(ctx context.Context, req *MsgTokensSoftUnlock) (*MsgTokensSoftUnlockResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method TokensSoftUnlock not implemented") +func (*UnimplementedMsgServer) Unfarm(ctx context.Context, req *MsgUnfarm) (*MsgUnfarmResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Unfarm not implemented") } func RegisterMsgServer(s grpc1.Server, srv MsgServer) { @@ -1294,38 +1289,38 @@ func _Msg_CancelAllOrders_Handler(srv interface{}, ctx context.Context, dec func return interceptor(ctx, in, info, handler) } -func _Msg_TokensSoftLock_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(MsgTokensSoftLock) +func _Msg_Farm_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgFarm) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(MsgServer).TokensSoftLock(ctx, in) + return srv.(MsgServer).Farm(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/comdex.liquidity.v1beta1.Msg/TokensSoftLock", + FullMethod: "/comdex.liquidity.v1beta1.Msg/Farm", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MsgServer).TokensSoftLock(ctx, req.(*MsgTokensSoftLock)) + return srv.(MsgServer).Farm(ctx, req.(*MsgFarm)) } return interceptor(ctx, in, info, handler) } -func _Msg_TokensSoftUnlock_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(MsgTokensSoftUnlock) +func _Msg_Unfarm_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(MsgUnfarm) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(MsgServer).TokensSoftUnlock(ctx, in) + return srv.(MsgServer).Unfarm(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: "/comdex.liquidity.v1beta1.Msg/TokensSoftUnlock", + FullMethod: "/comdex.liquidity.v1beta1.Msg/Unfarm", } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MsgServer).TokensSoftUnlock(ctx, req.(*MsgTokensSoftUnlock)) + return srv.(MsgServer).Unfarm(ctx, req.(*MsgUnfarm)) } return interceptor(ctx, in, info, handler) } @@ -1367,12 +1362,12 @@ var _Msg_serviceDesc = grpc.ServiceDesc{ Handler: _Msg_CancelAllOrders_Handler, }, { - MethodName: "TokensSoftLock", - Handler: _Msg_TokensSoftLock_Handler, + MethodName: "Farm", + Handler: _Msg_Farm_Handler, }, { - MethodName: "TokensSoftUnlock", - Handler: _Msg_TokensSoftUnlock_Handler, + MethodName: "Unfarm", + Handler: _Msg_Unfarm_Handler, }, }, Streams: []grpc.StreamDesc{}, @@ -2038,7 +2033,7 @@ func (m *MsgCancelAllOrdersResponse) MarshalToSizedBuffer(dAtA []byte) (int, err return len(dAtA) - i, nil } -func (m *MsgTokensSoftLock) Marshal() (dAtA []byte, err error) { +func (m *MsgFarm) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -2048,23 +2043,18 @@ func (m *MsgTokensSoftLock) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *MsgTokensSoftLock) MarshalTo(dAtA []byte) (int, error) { +func (m *MsgFarm) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *MsgTokensSoftLock) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *MsgFarm) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int _ = l - if m.AppId != 0 { - i = encodeVarintTx(dAtA, i, uint64(m.AppId)) - i-- - dAtA[i] = 0x20 - } { - size, err := m.SoftLockCoin.MarshalToSizedBuffer(dAtA[:i]) + size, err := m.FarmingPoolCoin.MarshalToSizedBuffer(dAtA[:i]) if err != nil { return 0, err } @@ -2072,23 +2062,28 @@ func (m *MsgTokensSoftLock) MarshalToSizedBuffer(dAtA []byte) (int, error) { i = encodeVarintTx(dAtA, i, uint64(size)) } i-- - dAtA[i] = 0x1a + dAtA[i] = 0x22 + if len(m.Farmer) > 0 { + i -= len(m.Farmer) + copy(dAtA[i:], m.Farmer) + i = encodeVarintTx(dAtA, i, uint64(len(m.Farmer))) + i-- + dAtA[i] = 0x1a + } if m.PoolId != 0 { i = encodeVarintTx(dAtA, i, uint64(m.PoolId)) i-- dAtA[i] = 0x10 } - if len(m.Depositor) > 0 { - i -= len(m.Depositor) - copy(dAtA[i:], m.Depositor) - i = encodeVarintTx(dAtA, i, uint64(len(m.Depositor))) + if m.AppId != 0 { + i = encodeVarintTx(dAtA, i, uint64(m.AppId)) i-- - dAtA[i] = 0xa + dAtA[i] = 0x8 } return len(dAtA) - i, nil } -func (m *MsgTokensSoftLockResponse) Marshal() (dAtA []byte, err error) { +func (m *MsgFarmResponse) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -2098,12 +2093,12 @@ func (m *MsgTokensSoftLockResponse) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *MsgTokensSoftLockResponse) MarshalTo(dAtA []byte) (int, error) { +func (m *MsgFarmResponse) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *MsgTokensSoftLockResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *MsgFarmResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int @@ -2111,7 +2106,7 @@ func (m *MsgTokensSoftLockResponse) MarshalToSizedBuffer(dAtA []byte) (int, erro return len(dAtA) - i, nil } -func (m *MsgTokensSoftUnlock) Marshal() (dAtA []byte, err error) { +func (m *MsgUnfarm) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -2121,23 +2116,18 @@ func (m *MsgTokensSoftUnlock) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *MsgTokensSoftUnlock) MarshalTo(dAtA []byte) (int, error) { +func (m *MsgUnfarm) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *MsgTokensSoftUnlock) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *MsgUnfarm) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int _ = l - if m.AppId != 0 { - i = encodeVarintTx(dAtA, i, uint64(m.AppId)) - i-- - dAtA[i] = 0x20 - } { - size, err := m.SoftUnlockCoin.MarshalToSizedBuffer(dAtA[:i]) + size, err := m.UnfarmingPoolCoin.MarshalToSizedBuffer(dAtA[:i]) if err != nil { return 0, err } @@ -2145,23 +2135,28 @@ func (m *MsgTokensSoftUnlock) MarshalToSizedBuffer(dAtA []byte) (int, error) { i = encodeVarintTx(dAtA, i, uint64(size)) } i-- - dAtA[i] = 0x1a + dAtA[i] = 0x22 + if len(m.Farmer) > 0 { + i -= len(m.Farmer) + copy(dAtA[i:], m.Farmer) + i = encodeVarintTx(dAtA, i, uint64(len(m.Farmer))) + i-- + dAtA[i] = 0x1a + } if m.PoolId != 0 { i = encodeVarintTx(dAtA, i, uint64(m.PoolId)) i-- dAtA[i] = 0x10 } - if len(m.Depositor) > 0 { - i -= len(m.Depositor) - copy(dAtA[i:], m.Depositor) - i = encodeVarintTx(dAtA, i, uint64(len(m.Depositor))) + if m.AppId != 0 { + i = encodeVarintTx(dAtA, i, uint64(m.AppId)) i-- - dAtA[i] = 0xa + dAtA[i] = 0x8 } return len(dAtA) - i, nil } -func (m *MsgTokensSoftUnlockResponse) Marshal() (dAtA []byte, err error) { +func (m *MsgUnfarmResponse) Marshal() (dAtA []byte, err error) { size := m.Size() dAtA = make([]byte, size) n, err := m.MarshalToSizedBuffer(dAtA[:size]) @@ -2171,12 +2166,12 @@ func (m *MsgTokensSoftUnlockResponse) Marshal() (dAtA []byte, err error) { return dAtA[:n], nil } -func (m *MsgTokensSoftUnlockResponse) MarshalTo(dAtA []byte) (int, error) { +func (m *MsgUnfarmResponse) MarshalTo(dAtA []byte) (int, error) { size := m.Size() return m.MarshalToSizedBuffer(dAtA[:size]) } -func (m *MsgTokensSoftUnlockResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { +func (m *MsgUnfarmResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { i := len(dAtA) _ = i var l int @@ -2473,28 +2468,28 @@ func (m *MsgCancelAllOrdersResponse) Size() (n int) { return n } -func (m *MsgTokensSoftLock) Size() (n int) { +func (m *MsgFarm) Size() (n int) { if m == nil { return 0 } var l int _ = l - l = len(m.Depositor) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) + if m.AppId != 0 { + n += 1 + sovTx(uint64(m.AppId)) } if m.PoolId != 0 { n += 1 + sovTx(uint64(m.PoolId)) } - l = m.SoftLockCoin.Size() - n += 1 + l + sovTx(uint64(l)) - if m.AppId != 0 { - n += 1 + sovTx(uint64(m.AppId)) + l = len(m.Farmer) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) } + l = m.FarmingPoolCoin.Size() + n += 1 + l + sovTx(uint64(l)) return n } -func (m *MsgTokensSoftLockResponse) Size() (n int) { +func (m *MsgFarmResponse) Size() (n int) { if m == nil { return 0 } @@ -2503,28 +2498,28 @@ func (m *MsgTokensSoftLockResponse) Size() (n int) { return n } -func (m *MsgTokensSoftUnlock) Size() (n int) { +func (m *MsgUnfarm) Size() (n int) { if m == nil { return 0 } var l int _ = l - l = len(m.Depositor) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) + if m.AppId != 0 { + n += 1 + sovTx(uint64(m.AppId)) } if m.PoolId != 0 { n += 1 + sovTx(uint64(m.PoolId)) } - l = m.SoftUnlockCoin.Size() - n += 1 + l + sovTx(uint64(l)) - if m.AppId != 0 { - n += 1 + sovTx(uint64(m.AppId)) + l = len(m.Farmer) + if l > 0 { + n += 1 + l + sovTx(uint64(l)) } + l = m.UnfarmingPoolCoin.Size() + n += 1 + l + sovTx(uint64(l)) return n } -func (m *MsgTokensSoftUnlockResponse) Size() (n int) { +func (m *MsgUnfarmResponse) Size() (n int) { if m == nil { return 0 } @@ -4457,7 +4452,7 @@ func (m *MsgCancelAllOrdersResponse) Unmarshal(dAtA []byte) error { } return nil } -func (m *MsgTokensSoftLock) Unmarshal(dAtA []byte) error { +func (m *MsgFarm) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -4480,17 +4475,17 @@ func (m *MsgTokensSoftLock) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: MsgTokensSoftLock: wiretype end group for non-group") + return fmt.Errorf("proto: MsgFarm: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: MsgTokensSoftLock: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MsgFarm: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Depositor", wireType) + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field AppId", wireType) } - var stringLen uint64 + m.AppId = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowTx @@ -4500,24 +4495,11 @@ func (m *MsgTokensSoftLock) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + m.AppId |= uint64(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Depositor = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex case 2: if wireType != 0 { return fmt.Errorf("proto: wrong wireType = %d for field PoolId", wireType) @@ -4539,9 +4521,9 @@ func (m *MsgTokensSoftLock) Unmarshal(dAtA []byte) error { } case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field SoftLockCoin", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Farmer", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowTx @@ -4551,30 +4533,29 @@ func (m *MsgTokensSoftLock) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthTx } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthTx } if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.SoftLockCoin.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.Farmer = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 4: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field AppId", wireType) + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field FarmingPoolCoin", wireType) } - m.AppId = 0 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowTx @@ -4584,11 +4565,25 @@ func (m *MsgTokensSoftLock) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.AppId |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.FarmingPoolCoin.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipTx(dAtA[iNdEx:]) @@ -4610,7 +4605,7 @@ func (m *MsgTokensSoftLock) Unmarshal(dAtA []byte) error { } return nil } -func (m *MsgTokensSoftLockResponse) Unmarshal(dAtA []byte) error { +func (m *MsgFarmResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -4633,10 +4628,10 @@ func (m *MsgTokensSoftLockResponse) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: MsgTokensSoftLockResponse: wiretype end group for non-group") + return fmt.Errorf("proto: MsgFarmResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: MsgTokensSoftLockResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MsgFarmResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { default: @@ -4660,7 +4655,7 @@ func (m *MsgTokensSoftLockResponse) Unmarshal(dAtA []byte) error { } return nil } -func (m *MsgTokensSoftUnlock) Unmarshal(dAtA []byte) error { +func (m *MsgUnfarm) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -4683,17 +4678,17 @@ func (m *MsgTokensSoftUnlock) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: MsgTokensSoftUnlock: wiretype end group for non-group") + return fmt.Errorf("proto: MsgUnfarm: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: MsgTokensSoftUnlock: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MsgUnfarm: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Depositor", wireType) + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field AppId", wireType) } - var stringLen uint64 + m.AppId = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowTx @@ -4703,24 +4698,11 @@ func (m *MsgTokensSoftUnlock) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + m.AppId |= uint64(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Depositor = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex case 2: if wireType != 0 { return fmt.Errorf("proto: wrong wireType = %d for field PoolId", wireType) @@ -4742,9 +4724,9 @@ func (m *MsgTokensSoftUnlock) Unmarshal(dAtA []byte) error { } case 3: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field SoftUnlockCoin", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Farmer", wireType) } - var msglen int + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowTx @@ -4754,30 +4736,29 @@ func (m *MsgTokensSoftUnlock) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { + intStringLen := int(stringLen) + if intStringLen < 0 { return ErrInvalidLengthTx } - postIndex := iNdEx + msglen + postIndex := iNdEx + intStringLen if postIndex < 0 { return ErrInvalidLengthTx } if postIndex > l { return io.ErrUnexpectedEOF } - if err := m.SoftUnlockCoin.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { - return err - } + m.Farmer = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 4: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field AppId", wireType) + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field UnfarmingPoolCoin", wireType) } - m.AppId = 0 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflowTx @@ -4787,11 +4768,25 @@ func (m *MsgTokensSoftUnlock) Unmarshal(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.AppId |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } + if msglen < 0 { + return ErrInvalidLengthTx + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthTx + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if err := m.UnfarmingPoolCoin.Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipTx(dAtA[iNdEx:]) @@ -4813,7 +4808,7 @@ func (m *MsgTokensSoftUnlock) Unmarshal(dAtA []byte) error { } return nil } -func (m *MsgTokensSoftUnlockResponse) Unmarshal(dAtA []byte) error { +func (m *MsgUnfarmResponse) Unmarshal(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -4836,10 +4831,10 @@ func (m *MsgTokensSoftUnlockResponse) Unmarshal(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: MsgTokensSoftUnlockResponse: wiretype end group for non-group") + return fmt.Errorf("proto: MsgUnfarmResponse: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: MsgTokensSoftUnlockResponse: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: MsgUnfarmResponse: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { default: diff --git a/x/locker/genesis.go b/x/locker/genesis.go index cc85f7d18..f7c3822d9 100644 --- a/x/locker/genesis.go +++ b/x/locker/genesis.go @@ -6,19 +6,41 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" ) -// InitGenesis initializes the capability module's state from a provided genesis -// state. -func InitGenesis(ctx sdk.Context, k keeper.Keeper, genState types.GenesisState) { - // this line is used by starport scaffolding # genesis/module/init - k.SetParams(ctx, genState.Params) -} +func InitGenesis(ctx sdk.Context, k keeper.Keeper, state *types.GenesisState) { -// ExportGenesis returns the capability module's exported genesis. -func ExportGenesis(ctx sdk.Context, k keeper.Keeper) *types.GenesisState { - genesis := types.DefaultGenesis() - genesis.Params = k.GetParams(ctx) + k.SetParams(ctx, state.Params) + + for _, item := range state.Lockers { + k.SetLocker(ctx, item) + } + + for _, item := range state.LockerProductAssetMapping { + k.SetLockerProductAssetMapping(ctx, item) + } - // this line is used by starport scaffolding # genesis/module/export + for _, item := range state.LockerTotalRewardsByAssetAppWise { + err := k.SetLockerTotalRewardsByAssetAppWise(ctx, item) + if err != nil { + return + } + } - return genesis + for _, item := range state.LockerLookupTable { + k.SetLockerLookupTable(ctx, item) + } + + for _, item := range state.UserLockerAssetMapping { + k.SetUserLockerAssetMapping(ctx, item) + } +} + +func ExportGenesis(ctx sdk.Context, k keeper.Keeper) *types.GenesisState { + return types.NewGenesisState( + k.GetLockers(ctx), + k.GetAllLockerProductAssetMapping(ctx), + k.GetAllLockerTotalRewardsByAssetAppWise(ctx), + k.GetAllLockerLookupTable(ctx), + k.GetAllUserLockerAssetMapping(ctx), + k.GetParams(ctx), + ) } diff --git a/x/locker/handler.go b/x/locker/handler.go index 8cbb37dca..f487b6500 100644 --- a/x/locker/handler.go +++ b/x/locker/handler.go @@ -18,9 +18,6 @@ func NewHandler(k keeper.Keeper) sdk.Handler { case *types.MsgCreateLockerRequest: res, err := server.MsgCreateLocker(sdk.WrapSDKContext(ctx), msg) return sdk.WrapServiceResult(ctx, res, err) - case *types.MsgAddWhiteListedAssetRequest: - res, err := server.MsgAddWhiteListedAsset(sdk.WrapSDKContext(ctx), msg) - return sdk.WrapServiceResult(ctx, res, err) case *types.MsgDepositAssetRequest: res, err := server.MsgDepositAsset(sdk.WrapSDKContext(ctx), msg) return sdk.WrapServiceResult(ctx, res, err) diff --git a/x/locker/keeper/alias.go b/x/locker/keeper/alias.go index ce75979bc..a396c6da5 100644 --- a/x/locker/keeper/alias.go +++ b/x/locker/keeper/alias.go @@ -5,79 +5,64 @@ import ( assettypes "github.com/comdex-official/comdex/x/asset/types" esmtypes "github.com/comdex-official/comdex/x/esm/types" + lockertypes "github.com/comdex-official/comdex/x/locker/types" ) -func (k *Keeper) BurnCoin(ctx sdk.Context, name string, coin sdk.Coin) error { +func (k Keeper) SendCoinFromAccountToModule(ctx sdk.Context, address sdk.AccAddress, name string, coin sdk.Coin) error { if coin.IsZero() { - return nil - } - - return k.bank.BurnCoins(ctx, name, sdk.NewCoins(coin)) -} - -func (k *Keeper) MintCoin(ctx sdk.Context, name string, coin sdk.Coin) error { - if coin.IsZero() { - return nil - } - - return k.bank.MintCoins(ctx, name, sdk.NewCoins(coin)) -} - -func (k *Keeper) SendCoinFromAccountToModule(ctx sdk.Context, address sdk.AccAddress, name string, coin sdk.Coin) error { - if coin.IsZero() { - return nil + return lockertypes.SendCoinsFromAccountToModuleInLockerIsZero } return k.bank.SendCoinsFromAccountToModule(ctx, address, name, sdk.NewCoins(coin)) } -func (k *Keeper) SendCoinFromModuleToAccount(ctx sdk.Context, name string, address sdk.AccAddress, coin sdk.Coin) error { +func (k Keeper) SendCoinFromModuleToAccount(ctx sdk.Context, name string, address sdk.AccAddress, coin sdk.Coin) error { if coin.IsZero() { - return nil + return lockertypes.SendCoinsFromModuleToAccountInLockerIsZero } return k.bank.SendCoinsFromModuleToAccount(ctx, name, address, sdk.NewCoins(coin)) } -func (k *Keeper) SpendableCoins(ctx sdk.Context, address sdk.AccAddress) sdk.Coins { +func (k Keeper) SpendableCoins(ctx sdk.Context, address sdk.AccAddress) sdk.Coins { return k.bank.SpendableCoins(ctx, address) } -func (k *Keeper) GetAsset(ctx sdk.Context, id uint64) (assettypes.Asset, bool) { +func (k Keeper) GetAsset(ctx sdk.Context, id uint64) (assettypes.Asset, bool) { return k.asset.GetAsset(ctx, id) } -func (k *Keeper) GetPair(ctx sdk.Context, id uint64) (assettypes.Pair, bool) { +func (k Keeper) GetPair(ctx sdk.Context, id uint64) (assettypes.Pair, bool) { return k.asset.GetPair(ctx, id) } -func (k *Keeper) GetPriceForAsset(ctx sdk.Context, id uint64) (uint64, bool) { +func (k Keeper) GetPriceForAsset(ctx sdk.Context, id uint64) (uint64, bool) { return k.oracle.GetPriceForAsset(ctx, id) } -func (k *Keeper) GetApp(ctx sdk.Context, id uint64) (assettypes.AppData, bool) { +func (k Keeper) GetApp(ctx sdk.Context, id uint64) (assettypes.AppData, bool) { return k.asset.GetApp(ctx, id) } -func (k *Keeper) GetApps(ctx sdk.Context) (apps []assettypes.AppData, found bool) { +func (k Keeper) GetApps(ctx sdk.Context) (apps []assettypes.AppData, found bool) { return k.asset.GetApps(ctx) } -func (k *Keeper) UpdateCollector(ctx sdk.Context, appID, assetID uint64, collectedStabilityFee, collectedClosingFee, collectedOpeningFee, liquidationRewardsCollected sdk.Int) error { +func (k Keeper) UpdateCollector(ctx sdk.Context, appID, assetID uint64, collectedStabilityFee, collectedClosingFee, collectedOpeningFee, liquidationRewardsCollected sdk.Int) error { return k.collector.UpdateCollector(ctx, appID, assetID, collectedStabilityFee, collectedClosingFee, collectedOpeningFee, liquidationRewardsCollected) } -func (k *Keeper) SendCoinFromModuleToModule(ctx sdk.Context, senderModule, recipientModule string, coin sdk.Coins) error { +func (k Keeper) SendCoinFromModuleToModule(ctx sdk.Context, senderModule, recipientModule string, coin sdk.Coins) error { if coin.IsZero() { - return nil + return lockertypes.SendCoinsFromModuleToModuleInLockerIsZero } return k.bank.SendCoinsFromModuleToModule(ctx, senderModule, recipientModule, coin) } -func (k *Keeper) GetKillSwitchData(ctx sdk.Context, app_id uint64) (esmtypes.KillSwitchParams, bool) { +func (k Keeper) GetKillSwitchData(ctx sdk.Context, app_id uint64) (esmtypes.KillSwitchParams, bool) { return k.esm.GetKillSwitchData(ctx, app_id) } -func (k *Keeper) GetESMStatus(ctx sdk.Context, id uint64) (esmtypes.ESMStatus, bool) { +func (k Keeper) GetESMStatus(ctx sdk.Context, id uint64) (esmtypes.ESMStatus, bool) { return k.esm.GetESMStatus(ctx, id) } diff --git a/x/locker/keeper/grpc_query.go b/x/locker/keeper/grpc_query.go index 48b533d52..eae2a9616 100644 --- a/x/locker/keeper/grpc_query.go +++ b/x/locker/keeper/grpc_query.go @@ -10,7 +10,7 @@ import ( "google.golang.org/grpc/status" ) -var _ types.QueryServer = (*QueryServer)(nil) +var _ types.QueryServer = QueryServer{} type QueryServer struct { Keeper @@ -22,7 +22,7 @@ func NewQueryServer(k Keeper) types.QueryServer { } } -func (q *QueryServer) QueryParams(c context.Context, _ *types.QueryParamsRequest) (*types.QueryParamsResponse, error) { +func (q QueryServer) QueryParams(c context.Context, _ *types.QueryParamsRequest) (*types.QueryParamsResponse, error) { var ( ctx = sdk.UnwrapSDKContext(c) params = q.GetParams(ctx) @@ -33,7 +33,7 @@ func (q *QueryServer) QueryParams(c context.Context, _ *types.QueryParamsRequest }, nil } -func (q *QueryServer) QueryLockerInfo(c context.Context, req *types.QueryLockerInfoRequest) (*types.QueryLockerInfoResponse, error) { +func (q QueryServer) QueryLockerInfo(c context.Context, req *types.QueryLockerInfoRequest) (*types.QueryLockerInfoResponse, error) { if req == nil { return nil, status.Error(codes.InvalidArgument, "request cannot be empty") } @@ -51,7 +51,7 @@ func (q *QueryServer) QueryLockerInfo(c context.Context, req *types.QueryLockerI }, nil } -func (q *QueryServer) QueryLockersByAppToAssetID(c context.Context, request *types.QueryLockersByAppToAssetIDRequest) (*types.QueryLockersByAppToAssetIDResponse, error) { +func (q QueryServer) QueryLockersByAppToAssetID(c context.Context, request *types.QueryLockersByAppToAssetIDRequest) (*types.QueryLockersByAppToAssetIDResponse, error) { if request == nil { return nil, status.Error(codes.InvalidArgument, "request cannot be empty") } @@ -83,7 +83,7 @@ func (q *QueryServer) QueryLockersByAppToAssetID(c context.Context, request *typ }, nil } -func (q *QueryServer) QueryLockerInfoByAppID(c context.Context, request *types.QueryLockerInfoByAppIDRequest) (*types.QueryLockerInfoByAppIDResponse, error) { +func (q QueryServer) QueryLockerInfoByAppID(c context.Context, request *types.QueryLockerInfoByAppIDRequest) (*types.QueryLockerInfoByAppIDResponse, error) { if request == nil { return nil, status.Error(codes.InvalidArgument, "request cannot be empty") } @@ -113,7 +113,7 @@ func (q *QueryServer) QueryLockerInfoByAppID(c context.Context, request *types.Q }, nil } -func (q *QueryServer) QueryTotalDepositByAppAndAssetID(c context.Context, request *types.QueryTotalDepositByAppAndAssetIDRequest) (*types.QueryTotalDepositByAppAndAssetIDResponse, error) { +func (q QueryServer) QueryTotalDepositByAppAndAssetID(c context.Context, request *types.QueryTotalDepositByAppAndAssetIDRequest) (*types.QueryTotalDepositByAppAndAssetIDResponse, error) { if request == nil { return nil, status.Error(codes.InvalidArgument, "request cannot be empty") } @@ -145,7 +145,7 @@ func (q *QueryServer) QueryTotalDepositByAppAndAssetID(c context.Context, reques }, nil } -func (q *QueryServer) QueryLockerByAppByOwner(c context.Context, +func (q QueryServer) QueryLockerByAppByOwner(c context.Context, request *types.QueryLockerByAppByOwnerRequest) (*types.QueryLockerByAppByOwnerResponse, error) { if request == nil { return nil, status.Error(codes.InvalidArgument, "request cannot be empty") @@ -181,7 +181,7 @@ func (q *QueryServer) QueryLockerByAppByOwner(c context.Context, }, nil } -func (q *QueryServer) QueryOwnerLockerByAppIDbyOwner(c context.Context, request *types.QueryOwnerLockerByAppIDbyOwnerRequest) (*types.QueryOwnerLockerByAppIDbyOwnerResponse, error) { +func (q QueryServer) QueryOwnerLockerByAppIDbyOwner(c context.Context, request *types.QueryOwnerLockerByAppIDbyOwnerRequest) (*types.QueryOwnerLockerByAppIDbyOwnerResponse, error) { if request == nil { return nil, status.Error(codes.InvalidArgument, "request cannot be empty") } @@ -213,7 +213,7 @@ func (q *QueryServer) QueryOwnerLockerByAppIDbyOwner(c context.Context, request }, nil } -func (q *QueryServer) QueryOwnerLockerOfAllAppsByOwner(c context.Context, request *types.QueryOwnerLockerOfAllAppsByOwnerRequest) (*types.QueryOwnerLockerOfAllAppsByOwnerResponse, error) { +func (q QueryServer) QueryOwnerLockerOfAllAppsByOwner(c context.Context, request *types.QueryOwnerLockerOfAllAppsByOwnerRequest) (*types.QueryOwnerLockerOfAllAppsByOwnerResponse, error) { if request == nil { return nil, status.Error(codes.InvalidArgument, "request cannot be empty") } @@ -235,7 +235,7 @@ func (q *QueryServer) QueryOwnerLockerOfAllAppsByOwner(c context.Context, reques }, nil } -func (q *QueryServer) QueryOwnerTxDetailsLockerOfAppByOwnerByAsset(c context.Context, request *types.QueryOwnerTxDetailsLockerOfAppByOwnerByAssetRequest) (*types.QueryOwnerTxDetailsLockerOfAppByOwnerByAssetResponse, error) { +func (q QueryServer) QueryOwnerTxDetailsLockerOfAppByOwnerByAsset(c context.Context, request *types.QueryOwnerTxDetailsLockerOfAppByOwnerByAssetRequest) (*types.QueryOwnerTxDetailsLockerOfAppByOwnerByAssetResponse, error) { if request == nil { return nil, status.Error(codes.InvalidArgument, "request cannot be empty") } @@ -261,7 +261,7 @@ func (q *QueryServer) QueryOwnerTxDetailsLockerOfAppByOwnerByAsset(c context.Con }, nil } -func (q *QueryServer) QueryOwnerLockerByAppToAssetIDbyOwner(c context.Context, request *types.QueryOwnerLockerByAppToAssetIDbyOwnerRequest) (*types.QueryOwnerLockerByAppToAssetIDbyOwnerResponse, error) { +func (q QueryServer) QueryOwnerLockerByAppToAssetIDbyOwner(c context.Context, request *types.QueryOwnerLockerByAppToAssetIDbyOwnerRequest) (*types.QueryOwnerLockerByAppToAssetIDbyOwnerResponse, error) { if request == nil { return nil, status.Error(codes.InvalidArgument, "request cannot be empty") } @@ -298,7 +298,7 @@ func (q *QueryServer) QueryOwnerLockerByAppToAssetIDbyOwner(c context.Context, r }, nil } -func (q *QueryServer) QueryLockerCountByAppID(c context.Context, request *types.QueryLockerCountByAppIDRequest) (*types.QueryLockerCountByAppIDResponse, error) { +func (q QueryServer) QueryLockerCountByAppID(c context.Context, request *types.QueryLockerCountByAppIDRequest) (*types.QueryLockerCountByAppIDResponse, error) { if request == nil { return nil, status.Error(codes.InvalidArgument, "request cannot be empty") } @@ -333,7 +333,7 @@ func (q *QueryServer) QueryLockerCountByAppID(c context.Context, request *types. }, nil } -func (q *QueryServer) QueryLockerCountByAppToAssetID(c context.Context, request *types.QueryLockerCountByAppToAssetIDRequest) (*types.QueryLockerCountByAppToAssetIDResponse, error) { +func (q QueryServer) QueryLockerCountByAppToAssetID(c context.Context, request *types.QueryLockerCountByAppToAssetIDRequest) (*types.QueryLockerCountByAppToAssetIDResponse, error) { if request == nil { return nil, status.Error(codes.InvalidArgument, "request cannot be empty") } @@ -370,7 +370,7 @@ func (q *QueryServer) QueryLockerCountByAppToAssetID(c context.Context, request }, nil } -func (q *QueryServer) QueryWhiteListedAssetIDsByAppID(c context.Context, request *types.QueryWhiteListedAssetIDsByAppIDRequest) (*types.QueryWhiteListedAssetIDsByAppIDResponse, error) { +func (q QueryServer) QueryWhiteListedAssetIDsByAppID(c context.Context, request *types.QueryWhiteListedAssetIDsByAppIDRequest) (*types.QueryWhiteListedAssetIDsByAppIDResponse, error) { if request == nil { return nil, status.Error(codes.InvalidArgument, "request cannot be empty") } @@ -401,7 +401,7 @@ func (q *QueryServer) QueryWhiteListedAssetIDsByAppID(c context.Context, request }, nil } -func (q *QueryServer) QueryWhiteListedAssetByAllApps(c context.Context, request *types.QueryWhiteListedAssetByAllAppsRequest) (*types.QueryWhiteListedAssetByAllAppsResponse, error) { +func (q QueryServer) QueryWhiteListedAssetByAllApps(c context.Context, request *types.QueryWhiteListedAssetByAllAppsRequest) (*types.QueryWhiteListedAssetByAllAppsResponse, error) { if request == nil { return nil, status.Error(codes.InvalidArgument, "request cannot be empty") } @@ -439,7 +439,7 @@ func (q *QueryServer) QueryWhiteListedAssetByAllApps(c context.Context, request }, nil } -func (q *QueryServer) QueryLockerLookupTableByApp(c context.Context, req *types.QueryLockerLookupTableByAppRequest) (*types.QueryLockerLookupTableByAppResponse, error) { +func (q QueryServer) QueryLockerLookupTableByApp(c context.Context, req *types.QueryLockerLookupTableByAppRequest) (*types.QueryLockerLookupTableByAppResponse, error) { if req == nil { return nil, status.Error(codes.InvalidArgument, "request cannot be empty") } @@ -457,7 +457,7 @@ func (q *QueryServer) QueryLockerLookupTableByApp(c context.Context, req *types. }, nil } -func (q *QueryServer) QueryLockerLookupTableByAppAndAssetID(c context.Context, req *types.QueryLockerLookupTableByAppAndAssetIDRequest) (*types.QueryLockerLookupTableByAppAndAssetIDResponse, error) { +func (q QueryServer) QueryLockerLookupTableByAppAndAssetID(c context.Context, req *types.QueryLockerLookupTableByAppAndAssetIDRequest) (*types.QueryLockerLookupTableByAppAndAssetIDResponse, error) { if req == nil { return nil, status.Error(codes.InvalidArgument, "request cannot be empty") } @@ -482,7 +482,7 @@ func (q *QueryServer) QueryLockerLookupTableByAppAndAssetID(c context.Context, r }, nil } -func (q *QueryServer) QueryLockerTotalDepositedByApp(c context.Context, req *types.QueryLockerTotalDepositedByAppRequest) (*types.QueryLockerTotalDepositedByAppResponse, error) { +func (q QueryServer) QueryLockerTotalDepositedByApp(c context.Context, req *types.QueryLockerTotalDepositedByAppRequest) (*types.QueryLockerTotalDepositedByAppResponse, error) { if req == nil { return nil, status.Error(codes.InvalidArgument, "request cannot be empty") } @@ -508,7 +508,7 @@ func (q *QueryServer) QueryLockerTotalDepositedByApp(c context.Context, req *typ }, nil } -func (q *QueryServer) QueryState(c context.Context, req *types.QueryStateRequest) (*types.QueryStateResponse, error) { +func (q QueryServer) QueryState(c context.Context, req *types.QueryStateRequest) (*types.QueryStateResponse, error) { if req == nil { return nil, status.Error(codes.InvalidArgument, "request cannot be empty") } @@ -520,7 +520,7 @@ func (q *QueryServer) QueryState(c context.Context, req *types.QueryStateRequest }, nil } -func (q *QueryServer) QueryLockerTotalRewardsByAssetAppWise(c context.Context, request *types.QueryLockerTotalRewardsByAssetAppWiseRequest) (*types.QueryLockerTotalRewardsByAssetAppWiseResponse, error) { +func (q QueryServer) QueryLockerTotalRewardsByAssetAppWise(c context.Context, request *types.QueryLockerTotalRewardsByAssetAppWiseRequest) (*types.QueryLockerTotalRewardsByAssetAppWiseResponse, error) { if request == nil { return nil, status.Error(codes.InvalidArgument, "request cannot be empty") } diff --git a/x/locker/keeper/keeper.go b/x/locker/keeper/keeper.go index 55ce1ba6a..af988877a 100644 --- a/x/locker/keeper/keeper.go +++ b/x/locker/keeper/keeper.go @@ -36,10 +36,10 @@ func NewKeeper(cdc codec.BinaryCodec, key sdk.StoreKey, ps paramtypes.Subspace, } } -func (k *Keeper) Logger(ctx sdk.Context) log.Logger { +func (k Keeper) Logger(ctx sdk.Context) log.Logger { return ctx.Logger().With("module", fmt.Sprintf("x/%s", types.ModuleName)) } -func (k *Keeper) Store(ctx sdk.Context) sdk.KVStore { +func (k Keeper) Store(ctx sdk.Context) sdk.KVStore { return ctx.KVStore(k.key) } diff --git a/x/locker/keeper/locker.go b/x/locker/keeper/locker.go index b08eb15fb..edfd7eba1 100644 --- a/x/locker/keeper/locker.go +++ b/x/locker/keeper/locker.go @@ -3,6 +3,7 @@ package keeper import ( "context" + esmtypes "github.com/comdex-official/comdex/x/esm/types" sdk "github.com/cosmos/cosmos-sdk/types" grpctypes "github.com/cosmos/cosmos-sdk/types/grpc" banktypes "github.com/cosmos/cosmos-sdk/x/bank/types" @@ -14,7 +15,7 @@ import ( //get locker lookup table. -func (k *Keeper) SetLockerProductAssetMapping(ctx sdk.Context, lockerProductMapping types.LockerProductAssetMapping) { +func (k Keeper) SetLockerProductAssetMapping(ctx sdk.Context, lockerProductMapping types.LockerProductAssetMapping) { var ( store = k.Store(ctx) key = types.LockerProductAssetMappingKey(lockerProductMapping.AppId) @@ -24,7 +25,7 @@ func (k *Keeper) SetLockerProductAssetMapping(ctx sdk.Context, lockerProductMapp store.Set(key, value) } -func (k *Keeper) SetLockerTotalRewardsByAssetAppWise(ctx sdk.Context, lockerRewardsMapping types.LockerTotalRewardsByAssetAppWise) error { +func (k Keeper) SetLockerTotalRewardsByAssetAppWise(ctx sdk.Context, lockerRewardsMapping types.LockerTotalRewardsByAssetAppWise) error { var ( store = k.Store(ctx) key = types.LockerTotalRewardsByAssetAppWiseKey(lockerRewardsMapping.AppId, lockerRewardsMapping.AssetId) @@ -35,7 +36,7 @@ func (k *Keeper) SetLockerTotalRewardsByAssetAppWise(ctx sdk.Context, lockerRewa return nil } -func (k *Keeper) GetLockerTotalRewardsByAssetAppWise(ctx sdk.Context, appID, assetID uint64) (lockerRewardsMapping types.LockerTotalRewardsByAssetAppWise, found bool) { +func (k Keeper) GetLockerTotalRewardsByAssetAppWise(ctx sdk.Context, appID, assetID uint64) (lockerRewardsMapping types.LockerTotalRewardsByAssetAppWise, found bool) { var ( store = k.Store(ctx) key = types.LockerTotalRewardsByAssetAppWiseKey(appID, assetID) @@ -49,7 +50,29 @@ func (k *Keeper) GetLockerTotalRewardsByAssetAppWise(ctx sdk.Context, appID, ass k.cdc.MustUnmarshal(value, &lockerRewardsMapping) return lockerRewardsMapping, true } -func (k *Keeper) GetLockerProductAssetMapping(ctx sdk.Context, appMappingID uint64) (lockerProductMapping types.LockerProductAssetMapping, found bool) { + +func (k Keeper) GetAllLockerTotalRewardsByAssetAppWise(ctx sdk.Context) (lockerTotalRewardsByAssetAppWise []types.LockerTotalRewardsByAssetAppWise) { + var ( + store = k.Store(ctx) + iter = sdk.KVStorePrefixIterator(store, types.LockerTotalRewardsByAssetAppWiseKeyPrefix) + ) + + defer func(iter sdk.Iterator) { + err := iter.Close() + if err != nil { + return + } + }(iter) + + for ; iter.Valid(); iter.Next() { + var lock types.LockerTotalRewardsByAssetAppWise + k.cdc.MustUnmarshal(iter.Value(), &lock) + lockerTotalRewardsByAssetAppWise = append(lockerTotalRewardsByAssetAppWise, lock) + } + return lockerTotalRewardsByAssetAppWise +} + +func (k Keeper) GetLockerProductAssetMapping(ctx sdk.Context, appMappingID uint64) (lockerProductMapping types.LockerProductAssetMapping, found bool) { var ( store = k.Store(ctx) key = types.LockerProductAssetMappingKey(appMappingID) @@ -64,7 +87,28 @@ func (k *Keeper) GetLockerProductAssetMapping(ctx sdk.Context, appMappingID uint return lockerProductMapping, true } -func (k *Keeper) SetLockerLookupTable(ctx sdk.Context, lockerLookupData types.LockerLookupTable) { +func (k Keeper) GetAllLockerProductAssetMapping(ctx sdk.Context) (lockerProductAssetMapping []types.LockerProductAssetMapping) { + var ( + store = k.Store(ctx) + iter = sdk.KVStorePrefixIterator(store, types.LockerProductAssetMappingKeyPrefix) + ) + + defer func(iter sdk.Iterator) { + err := iter.Close() + if err != nil { + return + } + }(iter) + + for ; iter.Valid(); iter.Next() { + var lock types.LockerProductAssetMapping + k.cdc.MustUnmarshal(iter.Value(), &lock) + lockerProductAssetMapping = append(lockerProductAssetMapping, lock) + } + return lockerProductAssetMapping +} + +func (k Keeper) SetLockerLookupTable(ctx sdk.Context, lockerLookupData types.LockerLookupTable) { var ( store = k.Store(ctx) key = types.LockerLookupTableKey(lockerLookupData.AppId) @@ -74,7 +118,7 @@ func (k *Keeper) SetLockerLookupTable(ctx sdk.Context, lockerLookupData types.Lo store.Set(key, value) } -func (k *Keeper) GetLockerLookupTable(ctx sdk.Context, appMappingID uint64) (lockerLookupData types.LockerLookupTable, found bool) { +func (k Keeper) GetLockerLookupTable(ctx sdk.Context, appMappingID uint64) (lockerLookupData types.LockerLookupTable, found bool) { var ( store = k.Store(ctx) key = types.LockerLookupTableKey(appMappingID) @@ -89,7 +133,28 @@ func (k *Keeper) GetLockerLookupTable(ctx sdk.Context, appMappingID uint64) (loc return lockerLookupData, true } -func (k *Keeper) CheckLockerProductAssetMapping(ctx sdk.Context, assetID uint64, lockerProductMapping types.LockerProductAssetMapping) (found bool) { +func (k Keeper) GetAllLockerLookupTable(ctx sdk.Context) (lockerLookupTable []types.LockerLookupTable) { + var ( + store = k.Store(ctx) + iter = sdk.KVStorePrefixIterator(store, types.LockerLookupTableKeyPrefix) + ) + + defer func(iter sdk.Iterator) { + err := iter.Close() + if err != nil { + return + } + }(iter) + + for ; iter.Valid(); iter.Next() { + var lock types.LockerLookupTable + k.cdc.MustUnmarshal(iter.Value(), &lock) + lockerLookupTable = append(lockerLookupTable, lock) + } + return lockerLookupTable +} + +func (k Keeper) CheckLockerProductAssetMapping(ctx sdk.Context, assetID uint64, lockerProductMapping types.LockerProductAssetMapping) (found bool) { for _, id := range lockerProductMapping.AssetIds { if id == assetID { return true @@ -100,7 +165,7 @@ func (k *Keeper) CheckLockerProductAssetMapping(ctx sdk.Context, assetID uint64, } // UpdateTokenLockerMapping For updating token locker mapping in lookup table. -func (k *Keeper) UpdateTokenLockerMapping(ctx sdk.Context, lockerLookupData types.LockerLookupTable, counter uint64, userLockerData types.Locker) { +func (k Keeper) UpdateTokenLockerMapping(ctx sdk.Context, lockerLookupData types.LockerLookupTable, counter uint64, userLockerData types.Locker) { for _, lockerData := range lockerLookupData.Lockers { if lockerData.AssetId == userLockerData.AssetDepositId { lockerData.DepositedAmount = lockerData.DepositedAmount.Add(userLockerData.NetBalance) @@ -112,7 +177,7 @@ func (k *Keeper) UpdateTokenLockerMapping(ctx sdk.Context, lockerLookupData type } // UpdateAmountLockerMapping For updating token locker mapping in lookup table. -func (k *Keeper) UpdateAmountLockerMapping(ctx sdk.Context, lockerLookupData types.LockerLookupTable, assetID uint64, amount sdk.Int, changeType bool) { //if Change type true = Add to deposits +func (k Keeper) UpdateAmountLockerMapping(ctx sdk.Context, lockerLookupData types.LockerLookupTable, assetID uint64, amount sdk.Int, changeType bool) { //if Change type true = Add to deposits //If change type false = Subtract from the deposits for _, lockerData := range lockerLookupData.Lockers { @@ -128,7 +193,7 @@ func (k *Keeper) UpdateAmountLockerMapping(ctx sdk.Context, lockerLookupData typ } // SetUserLockerAssetMapping User Locker Functions. -func (k *Keeper) SetUserLockerAssetMapping(ctx sdk.Context, userLockerAssetData types.UserLockerAssetMapping) { +func (k Keeper) SetUserLockerAssetMapping(ctx sdk.Context, userLockerAssetData types.UserLockerAssetMapping) { var ( store = k.Store(ctx) key = types.UserLockerAssetMappingKey(userLockerAssetData.Owner) @@ -138,7 +203,7 @@ func (k *Keeper) SetUserLockerAssetMapping(ctx sdk.Context, userLockerAssetData store.Set(key, value) } -func (k *Keeper) GetUserLockerAssetMapping(ctx sdk.Context, address string) (userLockerAssetData types.UserLockerAssetMapping, found bool) { +func (k Keeper) GetUserLockerAssetMapping(ctx sdk.Context, address string) (userLockerAssetData types.UserLockerAssetMapping, found bool) { var ( store = k.Store(ctx) key = types.UserLockerAssetMappingKey(address) @@ -153,8 +218,29 @@ func (k *Keeper) GetUserLockerAssetMapping(ctx sdk.Context, address string) (use return userLockerAssetData, true } +func (k Keeper) GetAllUserLockerAssetMapping(ctx sdk.Context) (userLockerAssetMapping []types.UserLockerAssetMapping) { + var ( + store = k.Store(ctx) + iter = sdk.KVStorePrefixIterator(store, types.UserLockerAssetMappingKeyPrefix) + ) + + defer func(iter sdk.Iterator) { + err := iter.Close() + if err != nil { + return + } + }(iter) + + for ; iter.Valid(); iter.Next() { + var lock types.UserLockerAssetMapping + k.cdc.MustUnmarshal(iter.Value(), &lock) + userLockerAssetMapping = append(userLockerAssetMapping, lock) + } + return userLockerAssetMapping +} + // CheckUserAppToAssetMapping Checking if for a certain user for the app type , whether there exists a certain asset or not and if it contains a locker id or not. -func (k *Keeper) CheckUserAppToAssetMapping(ctx sdk.Context, userLockerAssetData types.UserLockerAssetMapping, assetID uint64, appID uint64) (lockerID string, found bool) { +func (k Keeper) CheckUserAppToAssetMapping(ctx sdk.Context, userLockerAssetData types.UserLockerAssetMapping, assetID uint64, appID uint64) (lockerID string, found bool) { for _, lockerAppMapping := range userLockerAssetData.LockerAppMapping { if lockerAppMapping.AppId == appID { for _, assetToLockerIDMapping := range lockerAppMapping.UserAssetLocker { @@ -168,7 +254,7 @@ func (k *Keeper) CheckUserAppToAssetMapping(ctx sdk.Context, userLockerAssetData return lockerID, false } -func (k *Keeper) CheckUserToAppMapping(ctx sdk.Context, userLockerAssetData types.UserLockerAssetMapping, appID uint64) (found bool) { +func (k Keeper) CheckUserToAppMapping(ctx sdk.Context, userLockerAssetData types.UserLockerAssetMapping, appID uint64) (found bool) { for _, lockerAppMapping := range userLockerAssetData.LockerAppMapping { if lockerAppMapping.AppId == appID { return true @@ -177,7 +263,7 @@ func (k *Keeper) CheckUserToAppMapping(ctx sdk.Context, userLockerAssetData type return false } -func (k *Keeper) SetLocker(ctx sdk.Context, locker types.Locker) { +func (k Keeper) SetLocker(ctx sdk.Context, locker types.Locker) { var ( store = k.Store(ctx) key = types.LockerKey(locker.LockerId) @@ -187,7 +273,7 @@ func (k *Keeper) SetLocker(ctx sdk.Context, locker types.Locker) { store.Set(key, value) } -func (k *Keeper) GetLocker(ctx sdk.Context, lockerID string) (locker types.Locker, found bool) { +func (k Keeper) GetLocker(ctx sdk.Context, lockerID string) (locker types.Locker, found bool) { var ( store = k.Store(ctx) key = types.LockerKey(lockerID) @@ -202,7 +288,28 @@ func (k *Keeper) GetLocker(ctx sdk.Context, lockerID string) (locker types.Locke return locker, true } -func (k *Keeper) UpdateLocker(ctx sdk.Context, locker types.Locker) { +func (k Keeper) GetLockers(ctx sdk.Context) (locker []types.Locker) { + var ( + store = k.Store(ctx) + iter = sdk.KVStorePrefixIterator(store, types.LockerKeyPrefix) + ) + + defer func(iter sdk.Iterator) { + err := iter.Close() + if err != nil { + return + } + }(iter) + + for ; iter.Valid(); iter.Next() { + var lock types.Locker + k.cdc.MustUnmarshal(iter.Value(), &lock) + locker = append(locker, lock) + } + return locker +} + +func (k Keeper) UpdateLocker(ctx sdk.Context, locker types.Locker) { var ( store = k.Store(ctx) key = types.LockerKey(locker.LockerId) @@ -262,7 +369,7 @@ func QueryState(addr, denom, blockHeight, target string) (*sdk.Coin, error) { return bankRes.GetBalance(), nil } -func (k *Keeper) WasmAddWhiteListedAssetQuery(ctx sdk.Context, appMappingID, AssetID uint64) (bool, string) { +func (k Keeper) WasmAddWhiteListedAssetQuery(ctx sdk.Context, appMappingID, AssetID uint64) (bool, string) { _, found := k.GetApp(ctx, appMappingID) if !found { return false, types.ErrorAppMappingDoesNotExist.Error() @@ -281,3 +388,61 @@ func (k *Keeper) WasmAddWhiteListedAssetQuery(ctx sdk.Context, appMappingID, Ass } return true, "" } + +func (k Keeper) AddWhiteListedAsset(c context.Context, msg *types.MsgAddWhiteListedAssetRequest) (*types.MsgAddWhiteListedAssetResponse, error) { + ctx := sdk.UnwrapSDKContext(c) + esmStatus, found := k.GetESMStatus(ctx, msg.AppId) + status := false + if found { + status = esmStatus.Status + } + if status { + return nil, esmtypes.ErrESMAlreadyExecuted + } + klwsParams, _ := k.GetKillSwitchData(ctx, msg.AppId) + if klwsParams.BreakerEnable { + return nil, esmtypes.ErrCircuitBreakerEnabled + } + appMapping, found := k.GetApp(ctx, msg.AppId) + if !found { + return nil, types.ErrorAppMappingDoesNotExist + } + asset, found := k.GetAsset(ctx, msg.AssetId) + if !found { + return nil, types.ErrorAssetDoesNotExist + } + lockerProductAssetMapping, found := k.GetLockerProductAssetMapping(ctx, msg.AppId) + + if !found { + //Set a new instance of Locker Product Asset Mapping + + var locker types.LockerProductAssetMapping + locker.AppId = appMapping.Id + locker.AssetIds = append(locker.AssetIds, asset.Id) + k.SetLockerProductAssetMapping(ctx, locker) + + //Also Create a LockerLookup table Instance and set it with the new asset id + var lockerLookupData types.LockerLookupTable + var lockerAssetData types.TokenToLockerMapping + + lockerAssetData.AssetId = asset.Id + lockerLookupData.Counter = 0 + lockerLookupData.AppId = appMapping.Id + lockerLookupData.Lockers = append(lockerLookupData.Lockers, &lockerAssetData) + k.SetLockerLookupTable(ctx, lockerLookupData) + return &types.MsgAddWhiteListedAssetResponse{}, nil + } + // Check if the asset from msg exists or not , + found = k.CheckLockerProductAssetMapping(ctx, msg.AssetId, lockerProductAssetMapping) + if found { + return nil, types.ErrorLockerProductAssetMappingExists + } + lockerProductAssetMapping.AssetIds = append(lockerProductAssetMapping.AssetIds, asset.Id) + k.SetLockerProductAssetMapping(ctx, lockerProductAssetMapping) + lockerLookupTableData, _ := k.GetLockerLookupTable(ctx, appMapping.Id) + var lockerAssetData types.TokenToLockerMapping + lockerAssetData.AssetId = asset.Id + lockerLookupTableData.Lockers = append(lockerLookupTableData.Lockers, &lockerAssetData) + k.SetLockerLookupTable(ctx, lockerLookupTableData) + return &types.MsgAddWhiteListedAssetResponse{}, nil +} diff --git a/x/locker/keeper/locker_test.go b/x/locker/keeper/locker_test.go index 756df96f3..55a7ca68b 100644 --- a/x/locker/keeper/locker_test.go +++ b/x/locker/keeper/locker_test.go @@ -9,35 +9,43 @@ import ( func (s *KeeperTestSuite) AddAppAsset() { assetKeeper, ctx := &s.assetKeeper, &s.ctx - msg1 := []assetTypes.AppData{{ + msg1 := assetTypes.AppData{ Name: "cswap", ShortName: "cswap", MinGovDeposit: sdk.NewIntFromUint64(10000000), - GovTimeInSeconds: 900}, - { - Name: "commodo", - ShortName: "commodo", - MinGovDeposit: sdk.NewIntFromUint64(10000000), - GovTimeInSeconds: 900}, - } - err := assetKeeper.AddAppRecords(*ctx, msg1...) + GovTimeInSeconds: 900} + err := assetKeeper.AddAppRecords(*ctx, msg1) s.Require().NoError(err) - msg2 := []assetTypes.Asset{ - {Name: "CMDX", - Denom: "ucmdx", - Decimals: 1000000, - IsOnChain: true}, {Name: "CMST", - Denom: "ucmst", - Decimals: 1000000, - IsOnChain: true}, {Name: "HARBOR", - Denom: "uharbor", - Decimals: 1000000, - IsOnChain: true}, - } - err = assetKeeper.AddAssetRecords(*ctx, msg2...) + msg2 := assetTypes.AppData{ + Name: "commodo", + ShortName: "comdo", + MinGovDeposit: sdk.NewIntFromUint64(10000000), + GovTimeInSeconds: 900} + err = assetKeeper.AddAppRecords(*ctx, msg2) s.Require().NoError(err) + msg3 := assetTypes.Asset{Name: "CMDX", + Denom: "ucmdx", + Decimals: 1000000, + IsOnChain: true} + + err = assetKeeper.AddAssetRecords(*ctx, msg3) + s.Require().NoError(err) + + msg4 := assetTypes.Asset{Name: "CMST", + Denom: "ucmst", + Decimals: 1000000, + IsOnChain: true} + err = assetKeeper.AddAssetRecords(*ctx, msg4) + s.Require().NoError(err) + + msg5 := assetTypes.Asset{Name: "HARBOR", + Denom: "uharbor", + Decimals: 1000000, + IsOnChain: true} + err = assetKeeper.AddAssetRecords(*ctx, msg5) + s.Require().NoError(err) } func (s *KeeperTestSuite) TestCreateLocker() { @@ -74,7 +82,7 @@ func (s *KeeperTestSuite) TestCreateLocker() { }, } { s.Run(tc.name, func() { - _, err := server.MsgAddWhiteListedAsset(sdk.WrapSDKContext(*ctx), &tc.msg) + _, err := lockerKeeper.AddWhiteListedAsset(sdk.WrapSDKContext(*ctx), &tc.msg) s.Require().NoError(err) }) } @@ -149,7 +157,7 @@ func (s *KeeperTestSuite) TestCreateLocker() { 9900000, false, lockerTypes.QueryLockerInfoRequest{ - Id: "commodo1", + Id: "comdo1", }, }, } { @@ -220,13 +228,13 @@ func (s *KeeperTestSuite) TestDepositLocker() { {"DepositLocker : App2 Asset 1", lockerTypes.MsgDepositAssetRequest{ Depositor: userAddress, - LockerId: "commodo1", + LockerId: "comdo1", Amount: sdk.NewIntFromUint64(4000000), AssetId: 1, AppId: 2, }, lockerTypes.QueryLockerInfoRequest{ - Id: "commodo1", + Id: "comdo1", }, 9900000, false, @@ -315,13 +323,13 @@ func (s *KeeperTestSuite) TestWithdrawLocker() { {"WithdrawLocker : Full Withdraw App2 Asset 1", lockerTypes.MsgWithdrawAssetRequest{ Depositor: userAddress, - LockerId: "commodo1", + LockerId: "comdo1", Amount: sdk.NewIntFromUint64(9900000), AssetId: 1, AppId: 2, }, lockerTypes.QueryLockerInfoRequest{ - Id: "commodo1", + Id: "comdo1", }, false, false, diff --git a/x/locker/keeper/msg_server.go b/x/locker/keeper/msg_server.go index 3ee1068ba..e6d4a5443 100644 --- a/x/locker/keeper/msg_server.go +++ b/x/locker/keeper/msg_server.go @@ -9,7 +9,7 @@ import ( ) var ( - _ types.MsgServer = (*msgServer)(nil) + _ types.MsgServer = msgServer{} ) type msgServer struct { @@ -22,7 +22,7 @@ func NewMsgServer(keeper Keeper) types.MsgServer { } } -func (k *msgServer) MsgCreateLocker(c context.Context, msg *types.MsgCreateLockerRequest) (*types.MsgCreateLockerResponse, error) { +func (k msgServer) MsgCreateLocker(c context.Context, msg *types.MsgCreateLockerRequest) (*types.MsgCreateLockerResponse, error) { ctx := sdk.UnwrapSDKContext(c) esmStatus, found := k.GetESMStatus(ctx, msg.AppId) status := false @@ -75,8 +75,10 @@ func (k *msgServer) MsgCreateLocker(c context.Context, msg *types.MsgCreateLocke if err != nil { return nil, err } - if err := k.SendCoinFromAccountToModule(ctx, depositor, types.ModuleName, sdk.NewCoin(asset.Denom, msg.Amount)); err != nil { - return nil, err + if msg.Amount.GT(sdk.ZeroInt()) { + if err := k.SendCoinFromAccountToModule(ctx, depositor, types.ModuleName, sdk.NewCoin(asset.Denom, msg.Amount)); err != nil { + return nil, err + } } //Creating locker instance var userLocker types.Locker @@ -162,11 +164,14 @@ func (k *msgServer) MsgCreateLocker(c context.Context, msg *types.MsgCreateLocke //Not a whitelisted asset , return err return nil, types.ErrorLockerProductAssetMappingDoesNotExists } + + ctx.GasMeter().ConsumeGas(types.CreateLockerGas, "CreateLockerGas") + return &types.MsgCreateLockerResponse{}, nil } // MsgDepositAsset Remove asset id from Deposit & Withdraw redundant. -func (k *msgServer) MsgDepositAsset(c context.Context, msg *types.MsgDepositAssetRequest) (*types.MsgDepositAssetResponse, error) { +func (k msgServer) MsgDepositAsset(c context.Context, msg *types.MsgDepositAssetRequest) (*types.MsgDepositAssetResponse, error) { ctx := sdk.UnwrapSDKContext(c) esmStatus, found := k.GetESMStatus(ctx, msg.AppId) status := false @@ -212,14 +217,12 @@ func (k *msgServer) MsgDepositAsset(c context.Context, msg *types.MsgDepositAsse if err != nil { return nil, err } - if err := k.SendCoinFromAccountToModule(ctx, depositor, types.ModuleName, sdk.NewCoin(asset.Denom, msg.Amount)); err != nil { - return nil, err + if msg.Amount.GT(sdk.ZeroInt()) { + if err := k.SendCoinFromAccountToModule(ctx, depositor, types.ModuleName, sdk.NewCoin(asset.Denom, msg.Amount)); err != nil { + return nil, err + } } - // if err := k.SendCoinFromModuleToModule(ctx, types.ModuleName, collectortypes.ModuleName, sdk.NewCoins(sdk.NewCoin(asset.Denom, msg.Amount))); err != nil { - // return nil, err - // } - lockerData.NetBalance = lockerData.NetBalance.Add(msg.Amount) k.SetLocker(ctx, lockerData) @@ -244,11 +247,13 @@ func (k *msgServer) MsgDepositAsset(c context.Context, msg *types.MsgDepositAsse k.SetUserLockerAssetMapping(ctx, userLockerAssetMappingData) + ctx.GasMeter().ConsumeGas(types.DepositLockerGas, "DepositLockerGas") + return &types.MsgDepositAssetResponse{}, nil } // MsgWithdrawAsset Remove asset id from Deposit & Withdraw-redundant. -func (k *msgServer) MsgWithdrawAsset(c context.Context, msg *types.MsgWithdrawAssetRequest) (*types.MsgWithdrawAssetResponse, error) { +func (k msgServer) MsgWithdrawAsset(c context.Context, msg *types.MsgWithdrawAssetRequest) (*types.MsgWithdrawAssetResponse, error) { ctx := sdk.UnwrapSDKContext(c) asset, found := k.GetAsset(ctx, msg.AssetId) if !found { @@ -288,12 +293,10 @@ func (k *msgServer) MsgWithdrawAsset(c context.Context, msg *types.MsgWithdrawAs lockerData.NetBalance = lockerData.NetBalance.Sub(msg.Amount) - // if err := k.SendCoinFromModuleToModule(ctx, collectortypes.ModuleName, types.ModuleName, sdk.NewCoins(sdk.NewCoin(asset.Denom, msg.Amount))); err != nil { - // return nil, err - // } - - if err := k.SendCoinFromModuleToAccount(ctx, types.ModuleName, depositor, sdk.NewCoin(asset.Denom, msg.Amount)); err != nil { - return nil, err + if msg.Amount.GT(sdk.ZeroInt()) { + if err := k.SendCoinFromModuleToAccount(ctx, types.ModuleName, depositor, sdk.NewCoin(asset.Denom, msg.Amount)); err != nil { + return nil, err + } } k.SetLocker(ctx, lockerData) @@ -319,63 +322,7 @@ func (k *msgServer) MsgWithdrawAsset(c context.Context, msg *types.MsgWithdrawAs } k.SetUserLockerAssetMapping(ctx, userLockerAssetMappingData) - return &types.MsgWithdrawAssetResponse{}, nil -} - -func (k *msgServer) MsgAddWhiteListedAsset(c context.Context, msg *types.MsgAddWhiteListedAssetRequest) (*types.MsgAddWhiteListedAssetResponse, error) { - ctx := sdk.UnwrapSDKContext(c) - esmStatus, found := k.GetESMStatus(ctx, msg.AppId) - status := false - if found { - status = esmStatus.Status - } - if status { - return nil, esmtypes.ErrESMAlreadyExecuted - } - klwsParams, _ := k.GetKillSwitchData(ctx, msg.AppId) - if klwsParams.BreakerEnable { - return nil, esmtypes.ErrCircuitBreakerEnabled - } - appMapping, found := k.GetApp(ctx, msg.AppId) - if !found { - return nil, types.ErrorAppMappingDoesNotExist - } - asset, found := k.GetAsset(ctx, msg.AssetId) - if !found { - return nil, types.ErrorAssetDoesNotExist - } - lockerProductAssetMapping, found := k.GetLockerProductAssetMapping(ctx, msg.AppId) + ctx.GasMeter().ConsumeGas(types.WithdrawLockerGas, "WithdrawLockerGas") - if !found { - //Set a new instance of Locker Product Asset Mapping - - var locker types.LockerProductAssetMapping - locker.AppId = appMapping.Id - locker.AssetIds = append(locker.AssetIds, asset.Id) - k.SetLockerProductAssetMapping(ctx, locker) - - //Also Create a LockerLookup table Instance and set it with the new asset id - var lockerLookupData types.LockerLookupTable - var lockerAssetData types.TokenToLockerMapping - - lockerAssetData.AssetId = asset.Id - lockerLookupData.Counter = 0 - lockerLookupData.AppId = appMapping.Id - lockerLookupData.Lockers = append(lockerLookupData.Lockers, &lockerAssetData) - k.SetLockerLookupTable(ctx, lockerLookupData) - return &types.MsgAddWhiteListedAssetResponse{}, nil - } - // Check if the asset from msg exists or not , - found = k.CheckLockerProductAssetMapping(ctx, msg.AssetId, lockerProductAssetMapping) - if found { - return nil, types.ErrorLockerProductAssetMappingExists - } - lockerProductAssetMapping.AssetIds = append(lockerProductAssetMapping.AssetIds, asset.Id) - k.SetLockerProductAssetMapping(ctx, lockerProductAssetMapping) - lockerLookupTableData, _ := k.GetLockerLookupTable(ctx, appMapping.Id) - var lockerAssetData types.TokenToLockerMapping - lockerAssetData.AssetId = asset.Id - lockerLookupTableData.Lockers = append(lockerLookupTableData.Lockers, &lockerAssetData) - k.SetLockerLookupTable(ctx, lockerLookupTableData) - return &types.MsgAddWhiteListedAssetResponse{}, nil + return &types.MsgWithdrawAssetResponse{}, nil } diff --git a/x/locker/module.go b/x/locker/module.go index 3c2736645..a6d95db53 100644 --- a/x/locker/module.go +++ b/x/locker/module.go @@ -54,7 +54,7 @@ func (a AppModuleBasic) RegisterInterfaces(reg cdctypes.InterfaceRegistry) { // DefaultGenesis returns the capability module's default genesis state. func (AppModuleBasic) DefaultGenesis(cdc codec.JSONCodec) json.RawMessage { - return cdc.MustMarshalJSON(types.DefaultGenesis()) + return cdc.MustMarshalJSON(types.DefaultGenesisState()) } // ValidateGenesis performs genesis state validation for the capability module. @@ -147,7 +147,7 @@ func (am AppModule) InitGenesis(ctx sdk.Context, cdc codec.JSONCodec, gs json.Ra // Initialize global index to index in genesis state cdc.MustUnmarshalJSON(gs, &genState) - InitGenesis(ctx, am.keeper, genState) + InitGenesis(ctx, am.keeper, &genState) return []abci.ValidatorUpdate{} } diff --git a/x/locker/types/errors.go b/x/locker/types/errors.go index b86491913..371f8cce6 100644 --- a/x/locker/types/errors.go +++ b/x/locker/types/errors.go @@ -22,6 +22,9 @@ var ( ErrorUserLockerAlreadyExists = errors.Register(ModuleName, 211, "User Locker already exists, try deposit command") ErrorLockerDoesNotExists = errors.Register(ModuleName, 212, "Locker does not exists") ErrorRequestedAmountExceedsDepositAmount = errors.Register(ModuleName, 213, "Not enough balance in locker") + SendCoinsFromModuleToModuleInLockerIsZero = errors.Register(ModuleName, 214, "Coin value in module to module transfer in locker is zero") + SendCoinsFromModuleToAccountInLockerIsZero = errors.Register(ModuleName, 215, "Coin value in module to account transfer in locker is zero") + SendCoinsFromAccountToModuleInLockerIsZero = errors.Register(ModuleName, 216, "Coin value in account to module transfer in locker is zero") ) var ( diff --git a/x/locker/types/genesis.go b/x/locker/types/genesis.go index 080b57552..303f346ea 100644 --- a/x/locker/types/genesis.go +++ b/x/locker/types/genesis.go @@ -1,20 +1,27 @@ package types -// DefaultIndex is the default capability global index. -const DefaultIndex uint64 = 1 - -// DefaultGenesis returns the default Capability genesis state. -func DefaultGenesis() *GenesisState { +func NewGenesisState(locker []Locker, lockerProductAssetMapping []LockerProductAssetMapping, lockerTotalRewardsByAssetAppWise []LockerTotalRewardsByAssetAppWise, lockerLookupTable []LockerLookupTable, userLockerAssetMapping []UserLockerAssetMapping, params Params) *GenesisState { return &GenesisState{ - // this line is used by starport scaffolding # genesis/types/default - Params: DefaultParams(), + Lockers: locker, + LockerProductAssetMapping: lockerProductAssetMapping, + LockerTotalRewardsByAssetAppWise: lockerTotalRewardsByAssetAppWise, + LockerLookupTable: lockerLookupTable, + UserLockerAssetMapping: userLockerAssetMapping, + Params: params, } } -// Validate performs basic genesis state validation returning an error upon any -// failure. -func (gs GenesisState) Validate() error { - // this line is used by starport scaffolding # genesis/types/validate +func DefaultGenesisState() *GenesisState { + return NewGenesisState( + []Locker{}, + []LockerProductAssetMapping{}, + []LockerTotalRewardsByAssetAppWise{}, + []LockerLookupTable{}, + []UserLockerAssetMapping{}, + DefaultParams(), + ) +} - return gs.Params.Validate() +func (m *GenesisState) Validate() error { + return nil } diff --git a/x/locker/types/genesis.pb.go b/x/locker/types/genesis.pb.go index 8519d9222..adb3a0040 100644 --- a/x/locker/types/genesis.pb.go +++ b/x/locker/types/genesis.pb.go @@ -24,12 +24,12 @@ var _ = math.Inf const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package type GenesisState struct { - // repeated Locker lockers = 1 [ - // (gogoproto.customname) = "Lockers", - // (gogoproto.moretags) = "yaml:\"lockers\"", - // (gogoproto.nullable) = false - // ]; - Params Params `protobuf:"bytes,1,opt,name=params,proto3" json:"params"` + Lockers []Locker `protobuf:"bytes,1,rep,name=lockers,proto3" json:"lockers" yaml:"lockers"` + LockerProductAssetMapping []LockerProductAssetMapping `protobuf:"bytes,2,rep,name=lockerProductAssetMapping,proto3" json:"lockerProductAssetMapping" yaml:"lockerProductAssetMapping"` + LockerTotalRewardsByAssetAppWise []LockerTotalRewardsByAssetAppWise `protobuf:"bytes,3,rep,name=lockerTotalRewardsByAssetAppWise,proto3" json:"lockerTotalRewardsByAssetAppWise" yaml:"lockerTotalRewardsByAssetAppWise"` + LockerLookupTable []LockerLookupTable `protobuf:"bytes,4,rep,name=lockerLookupTable,proto3" json:"lockerLookupTable" yaml:"lockerLookupTable"` + UserLockerAssetMapping []UserLockerAssetMapping `protobuf:"bytes,5,rep,name=userLockerAssetMapping,proto3" json:"userLockerAssetMapping" yaml:"userLockerAssetMapping"` + Params Params `protobuf:"bytes,6,opt,name=params,proto3" json:"params"` } func (m *GenesisState) Reset() { *m = GenesisState{} } @@ -74,21 +74,35 @@ func init() { } var fileDescriptor_4bd3c61b4d1357a2 = []byte{ - // 211 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x52, 0x4e, 0xce, 0xcf, 0x4d, - 0x49, 0xad, 0xd0, 0xcf, 0xc9, 0x4f, 0xce, 0x4e, 0x2d, 0xd2, 0x2f, 0x33, 0x4c, 0x4a, 0x2d, 0x49, - 0x34, 0xd4, 0x4f, 0x4f, 0xcd, 0x4b, 0x2d, 0xce, 0x2c, 0xd6, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, - 0x12, 0x85, 0x28, 0xd2, 0x83, 0x28, 0xd2, 0x83, 0x2a, 0x92, 0x12, 0x49, 0xcf, 0x4f, 0xcf, 0x07, - 0xab, 0xd0, 0x07, 0xb1, 0x20, 0x8a, 0xa5, 0x94, 0xb0, 0x9b, 0x58, 0x90, 0x58, 0x94, 0x98, 0x0b, - 0x35, 0x50, 0xc9, 0x9b, 0x8b, 0xc7, 0x1d, 0x62, 0x43, 0x70, 0x49, 0x62, 0x49, 0xaa, 0x90, 0x35, - 0x17, 0x1b, 0x44, 0x5e, 0x82, 0x51, 0x81, 0x51, 0x83, 0xdb, 0x48, 0x56, 0x0f, 0xab, 0x8d, 0x7a, - 0x01, 0x60, 0x45, 0x4e, 0x2c, 0x27, 0xee, 0xc9, 0x33, 0x04, 0x41, 0xb5, 0x38, 0x05, 0x9d, 0x78, - 0x28, 0xc7, 0xb0, 0xe2, 0x91, 0x1c, 0xc3, 0x89, 0x47, 0x72, 0x8c, 0x17, 0x1e, 0xc9, 0x31, 0x3e, - 0x78, 0x24, 0xc7, 0x38, 0xe1, 0xb1, 0x1c, 0xc3, 0x85, 0xc7, 0x72, 0x0c, 0x37, 0x1e, 0xcb, 0x31, - 0x44, 0x19, 0xa4, 0x67, 0x96, 0x64, 0x94, 0x26, 0x81, 0x0c, 0xd5, 0x87, 0x18, 0xac, 0x9b, 0x9f, - 0x96, 0x96, 0x99, 0x9c, 0x99, 0x98, 0x03, 0xe5, 0xeb, 0xc3, 0xdd, 0x5b, 0x52, 0x59, 0x90, 0x5a, - 0x9c, 0xc4, 0x06, 0x76, 0xa7, 0x31, 0x20, 0x00, 0x00, 0xff, 0xff, 0x03, 0x53, 0x61, 0x50, 0x1f, - 0x01, 0x00, 0x00, + // 439 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x84, 0x93, 0xb1, 0x6e, 0xd4, 0x30, + 0x1c, 0xc6, 0x63, 0x5a, 0xae, 0x92, 0x41, 0x48, 0x44, 0x80, 0x42, 0xa5, 0xfa, 0x82, 0x11, 0xe2, + 0x96, 0x26, 0x2d, 0x0c, 0x48, 0x30, 0xd5, 0x0b, 0x4b, 0x91, 0x2a, 0x53, 0x84, 0xd4, 0xcd, 0xc9, + 0xb9, 0x21, 0x6a, 0xae, 0xb6, 0x62, 0x07, 0x7a, 0x2b, 0x33, 0x03, 0x23, 0x8f, 0xc0, 0x03, 0xf0, + 0x10, 0x37, 0x76, 0x64, 0x8a, 0x20, 0xf7, 0x06, 0x7d, 0x02, 0x14, 0xdb, 0xa0, 0x20, 0x92, 0xb0, + 0xd9, 0xf1, 0xef, 0xff, 0x7d, 0x3f, 0x29, 0x36, 0x7c, 0x98, 0x8a, 0xc5, 0x9c, 0x5f, 0xc4, 0x85, + 0x48, 0xcf, 0x78, 0x19, 0xbf, 0xdf, 0x4f, 0xb8, 0x66, 0xfb, 0x71, 0xc6, 0xcf, 0xb9, 0xca, 0x55, + 0x24, 0x4b, 0xa1, 0x85, 0x7f, 0xd7, 0x42, 0x91, 0x85, 0x22, 0x07, 0x6d, 0xdf, 0xc9, 0x44, 0x26, + 0x0c, 0x11, 0xb7, 0x2b, 0x0b, 0x6f, 0xe3, 0xfe, 0x44, 0x37, 0x3b, 0xca, 0x48, 0x56, 0xb2, 0x85, + 0x2b, 0xc5, 0x1f, 0x27, 0xf0, 0xe6, 0x4b, 0xab, 0xf1, 0x5a, 0x33, 0xcd, 0xfd, 0x13, 0xb8, 0x65, + 0x79, 0x15, 0x80, 0x70, 0x63, 0x76, 0xe3, 0xc9, 0x4e, 0xd4, 0xeb, 0x15, 0x1d, 0x9a, 0x2d, 0x79, + 0xb0, 0xaa, 0xa7, 0x5e, 0x53, 0x4f, 0xb7, 0xec, 0x5e, 0x5d, 0xd5, 0xd3, 0x5b, 0x4b, 0xb6, 0x28, + 0x9e, 0x63, 0x17, 0x83, 0xe9, 0xef, 0x40, 0xff, 0x0b, 0x80, 0xf7, 0xed, 0xfa, 0xa8, 0x14, 0xf3, + 0x2a, 0xd5, 0x07, 0x4a, 0x71, 0xfd, 0x8a, 0x49, 0x99, 0x9f, 0x67, 0xc1, 0x35, 0x53, 0xb7, 0x37, + 0x5a, 0xd7, 0x33, 0x47, 0x66, 0xad, 0xc1, 0x55, 0x3d, 0x0d, 0xbb, 0xb5, 0x3d, 0x20, 0xa6, 0xc3, + 0xe5, 0xfe, 0x37, 0x00, 0x43, 0x7b, 0x7a, 0x2c, 0x34, 0x2b, 0x28, 0xff, 0xc0, 0xca, 0xb9, 0x22, + 0x4b, 0x03, 0x1d, 0x48, 0xf9, 0x36, 0x57, 0x3c, 0xd8, 0x30, 0x86, 0xcf, 0x46, 0x0d, 0x87, 0xc7, + 0x49, 0xec, 0x44, 0x1f, 0x77, 0x45, 0x87, 0x79, 0x4c, 0xff, 0x6b, 0xe4, 0x5f, 0xc0, 0xdb, 0x96, + 0x39, 0x14, 0xe2, 0xac, 0x92, 0xc7, 0x2c, 0x29, 0x78, 0xb0, 0x69, 0x34, 0x67, 0xa3, 0x9a, 0x1d, + 0x9e, 0x84, 0xce, 0x2b, 0xe8, 0x7a, 0x75, 0x00, 0x4c, 0xff, 0x2d, 0xf1, 0x3f, 0x01, 0x78, 0xaf, + 0x52, 0xed, 0xb7, 0xf6, 0xe4, 0xaf, 0x1f, 0x79, 0xdd, 0xf4, 0xef, 0x0e, 0xf4, 0xbf, 0xe9, 0x1d, + 0x22, 0x8f, 0x9c, 0xc4, 0x8e, 0x95, 0xe8, 0x8f, 0xc6, 0x74, 0xa0, 0xd3, 0x7f, 0x01, 0x27, 0xf6, + 0x5e, 0x07, 0x93, 0x10, 0x8c, 0xdc, 0xda, 0x23, 0x03, 0x91, 0xcd, 0xb6, 0x8d, 0xba, 0x11, 0x42, + 0x57, 0x3f, 0x91, 0xf7, 0xb5, 0x41, 0xde, 0xaa, 0x41, 0xe0, 0xb2, 0x41, 0xe0, 0x47, 0x83, 0xc0, + 0xe7, 0x35, 0xf2, 0x2e, 0xd7, 0xc8, 0xfb, 0xbe, 0x46, 0xde, 0xc9, 0x5e, 0x96, 0xeb, 0x77, 0x55, + 0xd2, 0x86, 0xc6, 0x36, 0x78, 0x57, 0x9c, 0x9e, 0xe6, 0x69, 0xce, 0x0a, 0xb7, 0x8f, 0xff, 0xbc, + 0x33, 0xbd, 0x94, 0x5c, 0x25, 0x13, 0xf3, 0xbe, 0x9e, 0xfe, 0x0a, 0x00, 0x00, 0xff, 0xff, 0x8e, + 0xc0, 0x43, 0x53, 0xfb, 0x03, 0x00, 0x00, } func (m *GenesisState) Marshal() (dAtA []byte, err error) { @@ -120,7 +134,77 @@ func (m *GenesisState) MarshalToSizedBuffer(dAtA []byte) (int, error) { i = encodeVarintGenesis(dAtA, i, uint64(size)) } i-- - dAtA[i] = 0xa + dAtA[i] = 0x32 + if len(m.UserLockerAssetMapping) > 0 { + for iNdEx := len(m.UserLockerAssetMapping) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.UserLockerAssetMapping[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x2a + } + } + if len(m.LockerLookupTable) > 0 { + for iNdEx := len(m.LockerLookupTable) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.LockerLookupTable[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + } + } + if len(m.LockerTotalRewardsByAssetAppWise) > 0 { + for iNdEx := len(m.LockerTotalRewardsByAssetAppWise) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.LockerTotalRewardsByAssetAppWise[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + } + if len(m.LockerProductAssetMapping) > 0 { + for iNdEx := len(m.LockerProductAssetMapping) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.LockerProductAssetMapping[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + } + if len(m.Lockers) > 0 { + for iNdEx := len(m.Lockers) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.Lockers[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + } return len(dAtA) - i, nil } @@ -141,6 +225,36 @@ func (m *GenesisState) Size() (n int) { } var l int _ = l + if len(m.Lockers) > 0 { + for _, e := range m.Lockers { + l = e.Size() + n += 1 + l + sovGenesis(uint64(l)) + } + } + if len(m.LockerProductAssetMapping) > 0 { + for _, e := range m.LockerProductAssetMapping { + l = e.Size() + n += 1 + l + sovGenesis(uint64(l)) + } + } + if len(m.LockerTotalRewardsByAssetAppWise) > 0 { + for _, e := range m.LockerTotalRewardsByAssetAppWise { + l = e.Size() + n += 1 + l + sovGenesis(uint64(l)) + } + } + if len(m.LockerLookupTable) > 0 { + for _, e := range m.LockerLookupTable { + l = e.Size() + n += 1 + l + sovGenesis(uint64(l)) + } + } + if len(m.UserLockerAssetMapping) > 0 { + for _, e := range m.UserLockerAssetMapping { + l = e.Size() + n += 1 + l + sovGenesis(uint64(l)) + } + } l = m.Params.Size() n += 1 + l + sovGenesis(uint64(l)) return n @@ -182,6 +296,176 @@ func (m *GenesisState) Unmarshal(dAtA []byte) error { } switch fieldNum { case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Lockers", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Lockers = append(m.Lockers, Locker{}) + if err := m.Lockers[len(m.Lockers)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LockerProductAssetMapping", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.LockerProductAssetMapping = append(m.LockerProductAssetMapping, LockerProductAssetMapping{}) + if err := m.LockerProductAssetMapping[len(m.LockerProductAssetMapping)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LockerTotalRewardsByAssetAppWise", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.LockerTotalRewardsByAssetAppWise = append(m.LockerTotalRewardsByAssetAppWise, LockerTotalRewardsByAssetAppWise{}) + if err := m.LockerTotalRewardsByAssetAppWise[len(m.LockerTotalRewardsByAssetAppWise)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field LockerLookupTable", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.LockerLookupTable = append(m.LockerLookupTable, LockerLookupTable{}) + if err := m.LockerLookupTable[len(m.LockerLookupTable)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field UserLockerAssetMapping", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.UserLockerAssetMapping = append(m.UserLockerAssetMapping, UserLockerAssetMapping{}) + if err := m.UserLockerAssetMapping[len(m.UserLockerAssetMapping)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 6: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Params", wireType) } diff --git a/x/locker/types/keys.go b/x/locker/types/keys.go index 0d89e21fa..4d6abf34d 100644 --- a/x/locker/types/keys.go +++ b/x/locker/types/keys.go @@ -19,10 +19,11 @@ var ( ) var ( - LockerProductAssetMappingKeyPrefix = []byte{0x10} - LockerLookupTableKeyPrefix = []byte{0x12} - UserLockerAssetMappingKeyPrefix = []byte{0x14} - LockerKeyPrefix = []byte{0x15} + LockerProductAssetMappingKeyPrefix = []byte{0x10} + LockerLookupTableKeyPrefix = []byte{0x12} + UserLockerAssetMappingKeyPrefix = []byte{0x14} + LockerKeyPrefix = []byte{0x15} + LockerTotalRewardsByAssetAppWiseKeyPrefix = []byte{0x16} ) func LockerProductAssetMappingKey(id uint64) []byte { @@ -30,7 +31,7 @@ func LockerProductAssetMappingKey(id uint64) []byte { } func LockerTotalRewardsByAssetAppWiseKey(appID, assetID uint64) []byte { - return append(append(LockerProductAssetMappingKeyPrefix, sdk.Uint64ToBigEndian(appID)...), sdk.Uint64ToBigEndian(assetID)...) + return append(append(LockerTotalRewardsByAssetAppWiseKeyPrefix, sdk.Uint64ToBigEndian(appID)...), sdk.Uint64ToBigEndian(assetID)...) } func LockerLookupTableKey(id uint64) []byte { return append(LockerLookupTableKeyPrefix, sdk.Uint64ToBigEndian(id)...) diff --git a/x/locker/types/params.go b/x/locker/types/params.go index 252757b1b..25fa4f5d7 100644 --- a/x/locker/types/params.go +++ b/x/locker/types/params.go @@ -1,11 +1,18 @@ package types import ( + sdk "github.com/cosmos/cosmos-sdk/types" paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" ) var _ paramtypes.ParamSet = (*Params)(nil) +const ( + CreateLockerGas = sdk.Gas(62640) + DepositLockerGas = sdk.Gas(56688) + WithdrawLockerGas = sdk.Gas(56473) +) + // ParamKeyTable the param key table for launch module. func ParamKeyTable() paramtypes.KeyTable { return paramtypes.NewKeyTable().RegisterParamSet(&Params{}) diff --git a/x/locker/types/tx.pb.go b/x/locker/types/tx.pb.go index d33f46ef9..7fec688cd 100644 --- a/x/locker/types/tx.pb.go +++ b/x/locker/types/tx.pb.go @@ -348,43 +348,41 @@ func init() { func init() { proto.RegisterFile("comdex/locker/v1beta1/tx.proto", fileDescriptor_907169e28dc0306d) } var fileDescriptor_907169e28dc0306d = []byte{ - // 561 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x55, 0xcf, 0x8e, 0xd2, 0x40, - 0x1c, 0x6e, 0x81, 0xc5, 0x65, 0x8c, 0x61, 0x1d, 0x57, 0x45, 0x12, 0xa7, 0x64, 0x4c, 0x0c, 0x17, - 0x5a, 0x59, 0xf5, 0xe2, 0xc5, 0x2c, 0x7a, 0x21, 0x59, 0x2e, 0xbd, 0x90, 0x78, 0x31, 0x85, 0x19, - 0x4a, 0xb3, 0x94, 0xa9, 0x9d, 0x41, 0x77, 0x1f, 0xc0, 0xbb, 0x4f, 0xe0, 0xd9, 0xb3, 0xbe, 0x04, - 0xc7, 0x3d, 0x1a, 0x0f, 0x8d, 0x42, 0xe2, 0x03, 0xf0, 0x02, 0x1a, 0x66, 0xba, 0x48, 0x77, 0xbb, - 0x0d, 0x98, 0x78, 0xf3, 0xc4, 0xd0, 0xef, 0xfb, 0xfd, 0x99, 0xef, 0xf7, 0xf5, 0x57, 0x80, 0xfa, - 0xcc, 0x27, 0xf4, 0xc4, 0x1a, 0xb1, 0xfe, 0x31, 0x0d, 0xad, 0xb7, 0xcd, 0x1e, 0x15, 0x4e, 0xd3, - 0x12, 0x27, 0x66, 0x10, 0x32, 0xc1, 0xe0, 0x6d, 0x85, 0x9b, 0x0a, 0x37, 0x63, 0xbc, 0xba, 0xef, - 0x32, 0x97, 0x49, 0x86, 0xb5, 0x3c, 0x29, 0x32, 0xfe, 0xa5, 0x83, 0x3b, 0x1d, 0xee, 0xbe, 0x08, - 0xa9, 0x23, 0xe8, 0x91, 0x8c, 0xb0, 0xe9, 0x9b, 0x09, 0xe5, 0x02, 0x1e, 0x80, 0x12, 0xa1, 0x01, - 0xe3, 0x9e, 0x60, 0x61, 0x45, 0xaf, 0xe9, 0xf5, 0x52, 0x6b, 0x7f, 0x11, 0x19, 0x7b, 0xa7, 0x8e, - 0x3f, 0x7a, 0x86, 0x57, 0x10, 0xb6, 0xff, 0xd0, 0x60, 0x17, 0x14, 0x1d, 0x9f, 0x4d, 0xc6, 0xa2, - 0x92, 0x93, 0x01, 0xcf, 0xa7, 0x91, 0xa1, 0x7d, 0x8b, 0x8c, 0x87, 0xae, 0x27, 0x86, 0x93, 0x9e, - 0xd9, 0x67, 0xbe, 0xd5, 0x67, 0xdc, 0x67, 0x3c, 0xfe, 0x69, 0x70, 0x72, 0x6c, 0x89, 0xd3, 0x80, - 0x72, 0xb3, 0x3d, 0x16, 0x8b, 0xc8, 0xb8, 0xa1, 0xd2, 0xab, 0x2c, 0xd8, 0x8e, 0xd3, 0x41, 0x13, - 0xec, 0x3a, 0x9c, 0x53, 0xf1, 0xda, 0x23, 0x95, 0x7c, 0x4d, 0xaf, 0x17, 0x5a, 0xb7, 0x16, 0x91, - 0x51, 0x8e, 0xc9, 0x31, 0x82, 0xed, 0x6b, 0xf2, 0xd8, 0x26, 0xb0, 0x0e, 0x8a, 0x4e, 0x10, 0x2c, - 0xd9, 0x05, 0xc9, 0xbe, 0xb9, 0x96, 0x5a, 0x3e, 0xc7, 0xf6, 0x8e, 0x13, 0x04, 0x6d, 0x82, 0xef, - 0x81, 0xbb, 0x97, 0x04, 0xe0, 0x01, 0x1b, 0x73, 0x8a, 0x3f, 0xea, 0xe0, 0x7e, 0x87, 0xbb, 0x87, - 0x84, 0x74, 0x87, 0x9e, 0xa0, 0x47, 0x1e, 0x17, 0x94, 0x1c, 0x2e, 0x2b, 0x9c, 0x6b, 0xf4, 0x00, - 0x14, 0x06, 0x21, 0xf3, 0x63, 0x79, 0xca, 0x8b, 0xc8, 0xb8, 0xae, 0x8a, 0x2c, 0x9f, 0x62, 0x5b, - 0x82, 0x6b, 0xbd, 0xe4, 0xb2, 0x7b, 0xd9, 0xf6, 0x96, 0xb8, 0x06, 0xd0, 0x55, 0xfd, 0xc5, 0x57, - 0xf8, 0x9c, 0x93, 0xf3, 0x7d, 0xa9, 0x26, 0x94, 0xe8, 0xfd, 0x6f, 0xe6, 0xdb, 0x04, 0x25, 0x65, - 0xab, 0xf3, 0xdb, 0x24, 0x62, 0x56, 0x10, 0xb6, 0x77, 0xd5, 0xb9, 0x4d, 0xd6, 0x2c, 0x91, 0xff, - 0x77, 0x96, 0x28, 0x6c, 0x65, 0x89, 0x9d, 0x8d, 0x2c, 0x91, 0xd4, 0x2c, 0xd6, 0xf3, 0x4b, 0x4e, - 0x62, 0x5d, 0x4f, 0x0c, 0x49, 0xe8, 0xbc, 0xfb, 0x2f, 0xe8, 0x46, 0x82, 0x56, 0x41, 0xe5, 0xb2, - 0x68, 0x4a, 0xd1, 0x83, 0x9f, 0x79, 0x90, 0xef, 0x70, 0x17, 0xbe, 0x57, 0x9b, 0x28, 0xc5, 0xcc, - 0xf0, 0x89, 0x99, 0xba, 0xd2, 0xcc, 0xcc, 0x77, 0xb3, 0xfa, 0x74, 0xcb, 0x28, 0xd5, 0x0f, 0x0c, - 0x40, 0xf9, 0xc2, 0x3e, 0x80, 0x8d, 0xab, 0x33, 0xa5, 0x2c, 0xce, 0xaa, 0xb9, 0x29, 0x3d, 0x51, - 0x71, 0xdd, 0x6e, 0x59, 0x15, 0x53, 0x5e, 0xe5, 0xac, 0x8a, 0x69, 0x2e, 0x86, 0x1c, 0xec, 0x5d, - 0x9c, 0x07, 0xcc, 0xc8, 0x91, 0xe6, 0xf6, 0xaa, 0xb5, 0x31, 0x5f, 0x15, 0x6d, 0xd9, 0xd3, 0x1f, - 0x48, 0xfb, 0x34, 0x43, 0xda, 0x74, 0x86, 0xf4, 0xb3, 0x19, 0xd2, 0xbf, 0xcf, 0x90, 0xfe, 0x61, - 0x8e, 0xb4, 0xb3, 0x39, 0xd2, 0xbe, 0xce, 0x91, 0xf6, 0xea, 0x51, 0xc2, 0xc1, 0xcb, 0xe4, 0x0d, - 0x36, 0x18, 0x78, 0x7d, 0xcf, 0x19, 0xc5, 0xff, 0xad, 0xd5, 0x67, 0x4f, 0xfa, 0xb9, 0x57, 0x94, - 0x5f, 0xb1, 0xc7, 0xbf, 0x03, 0x00, 0x00, 0xff, 0xff, 0xc0, 0x52, 0x68, 0x43, 0x14, 0x07, 0x00, - 0x00, + // 540 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x55, 0xc1, 0x6e, 0xd3, 0x30, + 0x18, 0x4e, 0xd2, 0xae, 0xac, 0x46, 0xa8, 0x23, 0x0c, 0x28, 0x95, 0x70, 0x2a, 0x23, 0xa1, 0x5e, + 0x9a, 0xd0, 0x71, 0xe3, 0x82, 0x56, 0xb8, 0x54, 0x5a, 0x2f, 0xb9, 0x54, 0xe2, 0x82, 0xd2, 0xd8, + 0x4d, 0xa3, 0x35, 0x75, 0x88, 0x5d, 0xd8, 0xde, 0x82, 0x27, 0xe0, 0xcc, 0x19, 0x5e, 0xa2, 0xc7, + 0x1d, 0x11, 0x87, 0x08, 0xda, 0x37, 0xe8, 0x0b, 0x80, 0x62, 0x7b, 0xa5, 0xdd, 0x42, 0xd5, 0x22, + 0x71, 0xdb, 0x29, 0x8e, 0xbf, 0xcf, 0xff, 0xff, 0xfb, 0xfb, 0x3f, 0xdb, 0x00, 0xfa, 0x34, 0xc2, + 0xe4, 0xcc, 0x19, 0x51, 0xff, 0x94, 0x24, 0xce, 0xfb, 0x56, 0x9f, 0x70, 0xaf, 0xe5, 0xf0, 0x33, + 0x3b, 0x4e, 0x28, 0xa7, 0xe6, 0x7d, 0x89, 0xdb, 0x12, 0xb7, 0x15, 0x5e, 0x3b, 0x0c, 0x68, 0x40, + 0x05, 0xc3, 0xc9, 0x46, 0x92, 0x8c, 0x7e, 0xe9, 0xe0, 0x41, 0x97, 0x05, 0xaf, 0x12, 0xe2, 0x71, + 0x72, 0x22, 0x56, 0xb8, 0xe4, 0xdd, 0x84, 0x30, 0x6e, 0x1e, 0x81, 0x32, 0x26, 0x31, 0x65, 0x21, + 0xa7, 0x49, 0x55, 0xaf, 0xeb, 0x8d, 0x72, 0xfb, 0x70, 0x91, 0x5a, 0x07, 0xe7, 0x5e, 0x34, 0x7a, + 0x81, 0x96, 0x10, 0x72, 0xff, 0xd0, 0xcc, 0x1e, 0x28, 0x79, 0x11, 0x9d, 0x8c, 0x79, 0xd5, 0x10, + 0x0b, 0x5e, 0x4e, 0x53, 0x4b, 0xfb, 0x9e, 0x5a, 0x4f, 0x83, 0x90, 0x0f, 0x27, 0x7d, 0xdb, 0xa7, + 0x91, 0xe3, 0x53, 0x16, 0x51, 0xa6, 0x3e, 0x4d, 0x86, 0x4f, 0x1d, 0x7e, 0x1e, 0x13, 0x66, 0x77, + 0xc6, 0x7c, 0x91, 0x5a, 0x77, 0x64, 0x78, 0x19, 0x05, 0xb9, 0x2a, 0x9c, 0x69, 0x83, 0x7d, 0x8f, + 0x31, 0xc2, 0xdf, 0x86, 0xb8, 0x5a, 0xa8, 0xeb, 0x8d, 0x62, 0xfb, 0xde, 0x22, 0xb5, 0x2a, 0x8a, + 0xac, 0x10, 0xe4, 0xde, 0x12, 0xc3, 0x0e, 0x36, 0x1b, 0xa0, 0xe4, 0xc5, 0x71, 0xc6, 0x2e, 0x0a, + 0xf6, 0xdd, 0x95, 0xd0, 0x62, 0x1e, 0xb9, 0x7b, 0x5e, 0x1c, 0x77, 0x30, 0x7a, 0x04, 0x1e, 0x5e, + 0x13, 0x80, 0xc5, 0x74, 0xcc, 0x08, 0xfa, 0xa4, 0x83, 0xc7, 0x5d, 0x16, 0x1c, 0x63, 0xdc, 0x1b, + 0x86, 0x9c, 0x9c, 0x84, 0x8c, 0x13, 0x7c, 0x9c, 0x65, 0xb8, 0xd4, 0xe8, 0x09, 0x28, 0x0e, 0x12, + 0x1a, 0x29, 0x79, 0x2a, 0x8b, 0xd4, 0xba, 0x2d, 0x93, 0x64, 0xb3, 0xc8, 0x15, 0xe0, 0x4a, 0x2d, + 0xc6, 0xe6, 0x5a, 0x76, 0xdd, 0x25, 0xaa, 0x03, 0xf8, 0xb7, 0xfa, 0xd4, 0x16, 0xbe, 0x18, 0xa2, + 0xbf, 0xaf, 0x65, 0x87, 0xd6, 0x6a, 0xff, 0x97, 0xfe, 0xb6, 0x40, 0x59, 0xda, 0xea, 0x72, 0x37, + 0x6b, 0x6b, 0x96, 0x10, 0x72, 0xf7, 0xe5, 0xb8, 0x83, 0x57, 0x2c, 0x51, 0xf8, 0x7f, 0x96, 0x28, + 0xee, 0x64, 0x89, 0xbd, 0xad, 0x2c, 0xb1, 0xae, 0x99, 0xd2, 0xf3, 0xab, 0x21, 0xb0, 0x5e, 0xc8, + 0x87, 0x38, 0xf1, 0x3e, 0xdc, 0x08, 0xba, 0x95, 0xa0, 0x35, 0x50, 0xbd, 0x2e, 0x9a, 0x54, 0xf4, + 0x28, 0x35, 0x40, 0xa1, 0xcb, 0x02, 0x33, 0x06, 0x95, 0x2b, 0xe7, 0xd0, 0x6c, 0xda, 0xb9, 0x57, + 0x99, 0x9d, 0x7f, 0x61, 0xd5, 0xec, 0x6d, 0xe9, 0x32, 0xb3, 0xca, 0xb8, 0xda, 0xe6, 0x4d, 0x19, + 0x73, 0x8e, 0xd0, 0xa6, 0x8c, 0x79, 0xee, 0x31, 0x19, 0x38, 0xb8, 0xaa, 0x83, 0xb9, 0x21, 0x46, + 0x9e, 0xcb, 0x6a, 0xce, 0xd6, 0x7c, 0x99, 0xb4, 0xed, 0x4e, 0x7f, 0x42, 0xed, 0xf3, 0x0c, 0x6a, + 0xd3, 0x19, 0xd4, 0x2f, 0x66, 0x50, 0xff, 0x31, 0x83, 0xfa, 0xc7, 0x39, 0xd4, 0x2e, 0xe6, 0x50, + 0xfb, 0x36, 0x87, 0xda, 0x9b, 0x67, 0x6b, 0xce, 0xc9, 0x82, 0x37, 0xe9, 0x60, 0x10, 0xfa, 0xa1, + 0x37, 0x52, 0xff, 0xce, 0xf2, 0xb9, 0x11, 0x3e, 0xea, 0x97, 0xc4, 0xeb, 0xf1, 0xfc, 0x77, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xf2, 0x6c, 0x49, 0xd6, 0x8c, 0x06, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -399,7 +397,6 @@ const _ = grpc.SupportPackageIsVersion4 // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. type MsgClient interface { - MsgAddWhiteListedAsset(ctx context.Context, in *MsgAddWhiteListedAssetRequest, opts ...grpc.CallOption) (*MsgAddWhiteListedAssetResponse, error) MsgCreateLocker(ctx context.Context, in *MsgCreateLockerRequest, opts ...grpc.CallOption) (*MsgCreateLockerResponse, error) MsgDepositAsset(ctx context.Context, in *MsgDepositAssetRequest, opts ...grpc.CallOption) (*MsgDepositAssetResponse, error) MsgWithdrawAsset(ctx context.Context, in *MsgWithdrawAssetRequest, opts ...grpc.CallOption) (*MsgWithdrawAssetResponse, error) @@ -413,15 +410,6 @@ func NewMsgClient(cc grpc1.ClientConn) MsgClient { return &msgClient{cc} } -func (c *msgClient) MsgAddWhiteListedAsset(ctx context.Context, in *MsgAddWhiteListedAssetRequest, opts ...grpc.CallOption) (*MsgAddWhiteListedAssetResponse, error) { - out := new(MsgAddWhiteListedAssetResponse) - err := c.cc.Invoke(ctx, "/comdex.locker.v1beta1.Msg/MsgAddWhiteListedAsset", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - func (c *msgClient) MsgCreateLocker(ctx context.Context, in *MsgCreateLockerRequest, opts ...grpc.CallOption) (*MsgCreateLockerResponse, error) { out := new(MsgCreateLockerResponse) err := c.cc.Invoke(ctx, "/comdex.locker.v1beta1.Msg/MsgCreateLocker", in, out, opts...) @@ -451,7 +439,6 @@ func (c *msgClient) MsgWithdrawAsset(ctx context.Context, in *MsgWithdrawAssetRe // MsgServer is the server API for Msg service. type MsgServer interface { - MsgAddWhiteListedAsset(context.Context, *MsgAddWhiteListedAssetRequest) (*MsgAddWhiteListedAssetResponse, error) MsgCreateLocker(context.Context, *MsgCreateLockerRequest) (*MsgCreateLockerResponse, error) MsgDepositAsset(context.Context, *MsgDepositAssetRequest) (*MsgDepositAssetResponse, error) MsgWithdrawAsset(context.Context, *MsgWithdrawAssetRequest) (*MsgWithdrawAssetResponse, error) @@ -461,9 +448,6 @@ type MsgServer interface { type UnimplementedMsgServer struct { } -func (*UnimplementedMsgServer) MsgAddWhiteListedAsset(ctx context.Context, req *MsgAddWhiteListedAssetRequest) (*MsgAddWhiteListedAssetResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method MsgAddWhiteListedAsset not implemented") -} func (*UnimplementedMsgServer) MsgCreateLocker(ctx context.Context, req *MsgCreateLockerRequest) (*MsgCreateLockerResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method MsgCreateLocker not implemented") } @@ -478,24 +462,6 @@ func RegisterMsgServer(s grpc1.Server, srv MsgServer) { s.RegisterService(&_Msg_serviceDesc, srv) } -func _Msg_MsgAddWhiteListedAsset_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(MsgAddWhiteListedAssetRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(MsgServer).MsgAddWhiteListedAsset(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/comdex.locker.v1beta1.Msg/MsgAddWhiteListedAsset", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MsgServer).MsgAddWhiteListedAsset(ctx, req.(*MsgAddWhiteListedAssetRequest)) - } - return interceptor(ctx, in, info, handler) -} - func _Msg_MsgCreateLocker_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(MsgCreateLockerRequest) if err := dec(in); err != nil { @@ -554,10 +520,6 @@ var _Msg_serviceDesc = grpc.ServiceDesc{ ServiceName: "comdex.locker.v1beta1.Msg", HandlerType: (*MsgServer)(nil), Methods: []grpc.MethodDesc{ - { - MethodName: "MsgAddWhiteListedAsset", - Handler: _Msg_MsgAddWhiteListedAsset_Handler, - }, { MethodName: "MsgCreateLocker", Handler: _Msg_MsgCreateLocker_Handler, diff --git a/x/market/abci.go b/x/market/abci.go index dab1f21bc..937f38509 100644 --- a/x/market/abci.go +++ b/x/market/abci.go @@ -1,31 +1,38 @@ package market import ( + utils "github.com/comdex-official/comdex/types" "github.com/comdex-official/comdex/x/market/keeper" "github.com/comdex-official/comdex/x/market/types" + "github.com/cosmos/cosmos-sdk/telemetry" sdk "github.com/cosmos/cosmos-sdk/types" abci "github.com/tendermint/tendermint/abci/types" ) func BeginBlocker(ctx sdk.Context, _ abci.RequestBeginBlock, k keeper.Keeper) { - block := k.GetLastBlockheight(ctx) - if block != 0 { - if ctx.BlockHeight()%20-1 == 0 && ctx.BlockHeight() > block+21 { - assets := k.GetAssetsForOracle(ctx) - for _, asset := range assets { - k.SetRates(ctx, asset.Name) - k.SetMarketForAsset(ctx, asset.Id, asset.Name) - rate, _ := k.GetRates(ctx, asset.Name) - scriptID := k.GetFetchPriceMsg(ctx).OracleScriptID - var ( - market = types.Market{ - Symbol: asset.Name, - ScriptID: scriptID, - Rates: rate, - } - ) - k.SetMarket(ctx, market) + defer telemetry.ModuleMeasureSince(types.ModuleName, ctx.BlockTime(), telemetry.MetricKeyBeginBlocker) + + _ = utils.ApplyFuncIfNoError(ctx, func(ctx sdk.Context) error { + block := k.GetLastBlockheight(ctx) + if block != types.Int64Zero { + if ctx.BlockHeight()%types.Int64Twenty-types.Int64One == types.Int64Zero && ctx.BlockHeight() > block+types.Int64TwentyOne { + assets := k.GetAssetsForOracle(ctx) + for _, asset := range assets { + k.SetRates(ctx, asset.Name) + k.SetMarketForAsset(ctx, asset.Id, asset.Name) + rate, _ := k.GetRates(ctx, asset.Name) + scriptID := k.GetFetchPriceMsg(ctx).OracleScriptID + var ( + market = types.Market{ + Symbol: asset.Name, + ScriptID: scriptID, + Rates: rate, + } + ) + k.SetMarket(ctx, market) + } } } - } + return nil + }) } diff --git a/x/market/client/cli/flags.go b/x/market/client/cli/flags.go deleted file mode 100644 index 7f1e458cd..000000000 --- a/x/market/client/cli/flags.go +++ /dev/null @@ -1 +0,0 @@ -package cli diff --git a/x/market/client/cli/tx.go b/x/market/client/cli/tx.go deleted file mode 100644 index 7f1e458cd..000000000 --- a/x/market/client/cli/tx.go +++ /dev/null @@ -1 +0,0 @@ -package cli diff --git a/x/market/handler.go b/x/market/handler.go index eb27398e2..89c5d1495 100644 --- a/x/market/handler.go +++ b/x/market/handler.go @@ -1,43 +1,19 @@ package market import ( - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/cosmos-sdk/types/errors" - govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" - "github.com/comdex-official/comdex/x/market/keeper" "github.com/comdex-official/comdex/x/market/types" + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/types/errors" ) func NewHandler(k keeper.Keeper) sdk.Handler { - server := keeper.NewMsgServer(k) - return func(ctx sdk.Context, msg sdk.Msg) (*sdk.Result, error) { ctx = ctx.WithEventManager(sdk.NewEventManager()) switch msg := msg.(type) { - case *types.MsgAddMarketRequest: - res, err := server.MsgAddMarket(sdk.WrapSDKContext(ctx), msg) - return sdk.WrapServiceResult(ctx, res, err) - case *types.MsgUpdateMarketRequest: - res, err := server.MsgUpdateMarket(sdk.WrapSDKContext(ctx), msg) - return sdk.WrapServiceResult(ctx, res, err) - case *types.MsgRemoveMarketForAssetRequest: - res, err := server.MsgRemoveMarketForAsset(sdk.WrapSDKContext(ctx), msg) - return sdk.WrapServiceResult(ctx, res, err) default: return nil, errors.Wrapf(types.ErrorUnknownMsgType, "%T", msg) } } } - -func NewProposalHandler(k keeper.Keeper) govtypes.Handler { - return func(ctx sdk.Context, content govtypes.Content) error { - switch c := content.(type) { - case *types.UpdateAdminProposal: - return k.HandleUpdateAdminProposal(ctx, c) - default: - return errors.Wrapf(types.ErrorUnknownProposalType, "%T", c) - } - } -} diff --git a/x/market/keeper/alias.go b/x/market/keeper/alias.go index d0d16d47e..e07844b76 100644 --- a/x/market/keeper/alias.go +++ b/x/market/keeper/alias.go @@ -7,30 +7,30 @@ import ( capabilitytypes "github.com/cosmos/cosmos-sdk/x/capability/types" ) -func (k *Keeper) AuthenticateCapability(ctx sdk.Context, cap *capabilitytypes.Capability, name string) bool { +func (k Keeper) AuthenticateCapability(ctx sdk.Context, cap *capabilitytypes.Capability, name string) bool { return k.scoped.AuthenticateCapability(ctx, cap, name) } -func (k *Keeper) ClaimCapability(ctx sdk.Context, cap *capabilitytypes.Capability, name string) error { +func (k Keeper) ClaimCapability(ctx sdk.Context, cap *capabilitytypes.Capability, name string) error { return k.scoped.ClaimCapability(ctx, cap, name) } -func (k *Keeper) HasAsset(ctx sdk.Context, id uint64) bool { +func (k Keeper) HasAsset(ctx sdk.Context, id uint64) bool { return k.assetKeeper.HasAsset(ctx, id) } -func (k *Keeper) GetAssetsForOracle(ctx sdk.Context) (assets []types.Asset) { +func (k Keeper) GetAssetsForOracle(ctx sdk.Context) (assets []types.Asset) { return k.assetKeeper.GetAssetsForOracle(ctx) } -func (k *Keeper) GetLastFetchPriceID(ctx sdk.Context) int64 { +func (k Keeper) GetLastFetchPriceID(ctx sdk.Context) int64 { return k.bandoraclekeeper.GetLastFetchPriceID(ctx) } -func (k *Keeper) GetLastBlockheight(ctx sdk.Context) int64 { +func (k Keeper) GetLastBlockheight(ctx sdk.Context) int64 { return k.bandoraclekeeper.GetLastBlockHeight(ctx) } -func (k *Keeper) GetFetchPriceMsg(ctx sdk.Context) bandoraclemoduletypes.MsgFetchPriceData { +func (k Keeper) GetFetchPriceMsg(ctx sdk.Context) bandoraclemoduletypes.MsgFetchPriceData { return k.bandoraclekeeper.GetFetchPriceMsg(ctx) } diff --git a/x/market/keeper/gov.go b/x/market/keeper/gov.go deleted file mode 100644 index 8fb5b0db8..000000000 --- a/x/market/keeper/gov.go +++ /dev/null @@ -1,15 +0,0 @@ -package keeper - -import ( - sdk "github.com/cosmos/cosmos-sdk/types" - - "github.com/comdex-official/comdex/x/market/types" -) - -func (k *Keeper) HandleUpdateAdminProposal(ctx sdk.Context, prop *types.UpdateAdminProposal) error { - params := k.GetParams(ctx) - - k.SetParams(ctx, params) - - return nil -} diff --git a/x/market/keeper/keeper.go b/x/market/keeper/keeper.go index d6b0748ef..c7736815c 100644 --- a/x/market/keeper/keeper.go +++ b/x/market/keeper/keeper.go @@ -18,8 +18,8 @@ type Keeper struct { bandoraclekeeper expected.BandOracleKeeper } -func NewKeeper(cdc codec.BinaryCodec, key sdk.StoreKey, params paramstypes.Subspace, scoped expected.ScopedKeeper, assetKeeper assetkeeper.Keeper, bandoraclekeeper expected.BandOracleKeeper) *Keeper { - return &Keeper{ +func NewKeeper(cdc codec.BinaryCodec, key sdk.StoreKey, params paramstypes.Subspace, scoped expected.ScopedKeeper, assetKeeper assetkeeper.Keeper, bandoraclekeeper expected.BandOracleKeeper) Keeper { + return Keeper{ cdc: cdc, key: key, params: params, @@ -29,6 +29,6 @@ func NewKeeper(cdc codec.BinaryCodec, key sdk.StoreKey, params paramstypes.Subsp } } -func (k *Keeper) Store(ctx sdk.Context) sdk.KVStore { +func (k Keeper) Store(ctx sdk.Context) sdk.KVStore { return ctx.KVStore(k.key) } diff --git a/x/market/keeper/msg_server.go b/x/market/keeper/msg_server.go deleted file mode 100644 index ff280d3ce..000000000 --- a/x/market/keeper/msg_server.go +++ /dev/null @@ -1,74 +0,0 @@ -package keeper - -import ( - "context" - "github.com/comdex-official/comdex/x/market/types" - sdk "github.com/cosmos/cosmos-sdk/types" -) - -var ( - _ types.MsgServer = (*msgServer)(nil) -) - -type msgServer struct { - Keeper -} - -func NewMsgServer(keeper Keeper) types.MsgServer { - return &msgServer{ - Keeper: keeper, - } -} - -func (k *msgServer) MsgRemoveMarketForAsset(c context.Context, msg *types.MsgRemoveMarketForAssetRequest) (*types.MsgRemoveMarketForAssetResponse, error) { - ctx := sdk.UnwrapSDKContext(c) - - if !k.HasMarketForAsset(ctx, msg.Id) { - return nil, types.ErrorMarketForAssetDoesNotExist - } - - k.DeleteMarketForAsset(ctx, msg.Id) - return &types.MsgRemoveMarketForAssetResponse{}, nil -} - -func (k *msgServer) MsgAddMarket(c context.Context, msg *types.MsgAddMarketRequest) (*types.MsgAddMarketResponse, error) { - ctx := sdk.UnwrapSDKContext(c) - if !k.HasAsset(ctx, msg.Id) { - return nil, types.ErrorAssetDoesNotExist - } - if k.HasMarket(ctx, msg.Symbol) { - return nil, types.ErrorDuplicateMarket - } - k.SetRates(ctx, msg.Symbol) - Rates, _ := k.GetRates(ctx, msg.Symbol) - - var ( - market = types.Market{ - Symbol: msg.Symbol, - ScriptID: msg.ScriptID, - Rates: Rates, - } - ) - k.SetMarket(ctx, market) - ID := k.assetKeeper.GetAssetID(ctx) - k.SetMarketForAsset(ctx, ID, msg.Symbol) - return &types.MsgAddMarketResponse{}, nil -} - -func (k *msgServer) MsgUpdateMarket(c context.Context, msg *types.MsgUpdateMarketRequest) (*types.MsgUpdateMarketResponse, error) { - ctx := sdk.UnwrapSDKContext(c) - - market, found := k.GetMarket(ctx, msg.Symbol) - if !found { - return nil, types.ErrorMarketDoesNotExist - } - - if msg.ScriptID != 0 { - market.ScriptID = msg.ScriptID - } - - k.SetMarket(ctx, market) - ID := k.assetKeeper.GetAssetID(ctx) - k.SetMarketForAsset(ctx, ID, msg.Symbol) - return &types.MsgUpdateMarketResponse{}, nil -} diff --git a/x/market/keeper/oracle.go b/x/market/keeper/oracle.go index 642167caa..8fb3dc24c 100644 --- a/x/market/keeper/oracle.go +++ b/x/market/keeper/oracle.go @@ -8,7 +8,7 @@ import ( "github.com/comdex-official/comdex/x/market/types" ) -func (k *Keeper) SetMarket(ctx sdk.Context, market types.Market) { +func (k Keeper) SetMarket(ctx sdk.Context, market types.Market) { var ( store = k.Store(ctx) key = types.MarketKey(market.Symbol) @@ -17,7 +17,7 @@ func (k *Keeper) SetMarket(ctx sdk.Context, market types.Market) { store.Set(key, value) } -func (k *Keeper) HasMarket(ctx sdk.Context, symbol string) bool { +func (k Keeper) HasMarket(ctx sdk.Context, symbol string) bool { var ( store = k.Store(ctx) key = types.MarketKey(symbol) @@ -25,7 +25,7 @@ func (k *Keeper) HasMarket(ctx sdk.Context, symbol string) bool { return store.Has(key) } -func (k *Keeper) GetMarket(ctx sdk.Context, symbol string) (market types.Market, found bool) { +func (k Keeper) GetMarket(ctx sdk.Context, symbol string) (market types.Market, found bool) { var ( store = k.Store(ctx) key = types.MarketKey(symbol) @@ -40,7 +40,7 @@ func (k *Keeper) GetMarket(ctx sdk.Context, symbol string) (market types.Market, return market, true } -func (k *Keeper) GetMarkets(ctx sdk.Context) (markets []types.Market) { +func (k Keeper) GetMarkets(ctx sdk.Context) (markets []types.Market) { var ( store = k.Store(ctx) iter = sdk.KVStorePrefixIterator(store, types.MarketKeyPrefix) @@ -62,7 +62,7 @@ func (k *Keeper) GetMarkets(ctx sdk.Context) (markets []types.Market) { return markets } -func (k *Keeper) GetPriceForMarket(ctx sdk.Context, symbol string) (uint64, bool) { +func (k Keeper) GetPriceForMarket(ctx sdk.Context, symbol string) (uint64, bool) { var ( store = k.Store(ctx) key = types.PriceForMarketKey(symbol) @@ -79,7 +79,7 @@ func (k *Keeper) GetPriceForMarket(ctx sdk.Context, symbol string) (uint64, bool return price.GetValue(), true } -func (k *Keeper) GetRates(ctx sdk.Context, symbol string) (uint64, bool) { +func (k Keeper) GetRates(ctx sdk.Context, symbol string) (uint64, bool) { var ( store = k.Store(ctx) key = types.PriceForMarketKey(symbol) @@ -96,7 +96,7 @@ func (k *Keeper) GetRates(ctx sdk.Context, symbol string) (uint64, bool) { return price.GetValue(), true } -func (k *Keeper) SetRates(ctx sdk.Context, _ string) { +func (k Keeper) SetRates(ctx sdk.Context, _ string) { id := k.bandoraclekeeper.GetLastFetchPriceID(ctx) data, _ := k.bandoraclekeeper.GetFetchPriceResult(ctx, bandoraclemoduletypes.OracleRequestID(id)) @@ -119,7 +119,7 @@ func (k *Keeper) SetRates(ctx sdk.Context, _ string) { } } -func (k *Keeper) SetMarketForAsset(ctx sdk.Context, id uint64, symbol string) { +func (k Keeper) SetMarketForAsset(ctx sdk.Context, id uint64, symbol string) { var ( store = k.Store(ctx) key = types.MarketForAssetKey(id) @@ -133,7 +133,7 @@ func (k *Keeper) SetMarketForAsset(ctx sdk.Context, id uint64, symbol string) { store.Set(key, value) } -func (k *Keeper) HasMarketForAsset(ctx sdk.Context, id uint64) bool { +func (k Keeper) HasMarketForAsset(ctx sdk.Context, id uint64) bool { var ( store = k.Store(ctx) key = types.MarketForAssetKey(id) @@ -142,7 +142,7 @@ func (k *Keeper) HasMarketForAsset(ctx sdk.Context, id uint64) bool { return store.Has(key) } -func (k *Keeper) GetMarketForAsset(ctx sdk.Context, id uint64) (market types.Market, found bool) { +func (k Keeper) GetMarketForAsset(ctx sdk.Context, id uint64) (market types.Market, found bool) { var ( store = k.Store(ctx) key = types.MarketForAssetKey(id) @@ -159,20 +159,11 @@ func (k *Keeper) GetMarketForAsset(ctx sdk.Context, id uint64) (market types.Mar return k.GetMarket(ctx, symbol.GetValue()) } -func (k *Keeper) DeleteMarketForAsset(ctx sdk.Context, id uint64) { - var ( - store = k.Store(ctx) - key = types.MarketForAssetKey(id) - ) - - store.Delete(key) -} - -func (k *Keeper) GetPriceForAsset(ctx sdk.Context, id uint64) (uint64, bool) { +func (k Keeper) GetPriceForAsset(ctx sdk.Context, id uint64) (uint64, bool) { market, found := k.GetMarketForAsset(ctx, id) if !found { - return 2000000, true + return 0, false } return k.GetPriceForMarket(ctx, market.Symbol) diff --git a/x/market/keeper/params.go b/x/market/keeper/params.go index b2fe8cc67..dfa3fc5d3 100644 --- a/x/market/keeper/params.go +++ b/x/market/keeper/params.go @@ -6,10 +6,10 @@ import ( "github.com/comdex-official/comdex/x/market/types" ) -func (k *Keeper) SetParams(ctx sdk.Context, params types.Params) { +func (k Keeper) SetParams(ctx sdk.Context, params types.Params) { k.params.SetParamSet(ctx, ¶ms) } -func (k *Keeper) GetParams(ctx sdk.Context) types.Params { +func (k Keeper) GetParams(ctx sdk.Context) types.Params { return types.NewParams() } diff --git a/x/market/module.go b/x/market/module.go index 2b103692c..6eee30d6c 100644 --- a/x/market/module.go +++ b/x/market/module.go @@ -114,7 +114,6 @@ func (a AppModule) QuerierRoute() string { func (a AppModule) LegacyQuerierHandler(_ *codec.LegacyAmino) sdk.Querier { return nil } func (a AppModule) RegisterServices(configurator module.Configurator) { - types.RegisterMsgServer(configurator.MsgServer(), keeper.NewMsgServer(a.keeper)) types.RegisterQueryServer(configurator.QueryServer(), keeper.NewQueryServer(a.keeper)) } diff --git a/x/market/types/codec.go b/x/market/types/codec.go index 9747f8ca3..17654ca4b 100644 --- a/x/market/types/codec.go +++ b/x/market/types/codec.go @@ -6,31 +6,17 @@ import ( cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec" sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/cosmos-sdk/types/msgservice" govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" ) -func RegisterLegacyAminoCodec(cdc *codec.LegacyAmino) { - cdc.RegisterConcrete(&MsgAddMarketRequest{}, "comdex/market/MsgAddMarketRequest", nil) - cdc.RegisterConcrete(&MsgUpdateMarketRequest{}, "comdex/market/MsgUpdateMarketRequest", nil) - cdc.RegisterConcrete(&MsgRemoveMarketForAssetRequest{}, "comdex/market/MsgRemoveMarketForAssetRequest", nil) - -} +func RegisterLegacyAminoCodec(cdc *codec.LegacyAmino) {} func RegisterInterfaces(registry types.InterfaceRegistry) { registry.RegisterImplementations( (*govtypes.Content)(nil), - &UpdateAdminProposal{}, - ) - - registry.RegisterImplementations( - (*sdk.Msg)(nil), - &MsgAddMarketRequest{}, - &MsgUpdateMarketRequest{}, - &MsgRemoveMarketForAssetRequest{}, ) - msgservice.RegisterMsgServiceDesc(registry, &_Msg_serviceDesc) + registry.RegisterImplementations((*sdk.Msg)(nil)) } diff --git a/x/market/types/errors.go b/x/market/types/errors.go index 32c1f1e24..ca010792a 100644 --- a/x/market/types/errors.go +++ b/x/market/types/errors.go @@ -4,24 +4,8 @@ import ( "github.com/cosmos/cosmos-sdk/types/errors" ) -var ( - ErrorInvalidFrom = errors.Register(ModuleName, 103, "invalid from") - ErrorInvalidID = errors.Register(ModuleName, 104, "invalid id") - ErrorInvalidScriptID = errors.Register(ModuleName, 107, "invalid script id") - ErrorInvalidSymbol = errors.Register(ModuleName, 110, "invalid symbol") -) - var ( ErrorAssetDoesNotExist = errors.Register(ModuleName, 201, "asset does not exist") - ErrorDuplicateMarket = errors.Register(ModuleName, 203, "duplicate market") - ErrorMarketDoesNotExist = errors.Register(ModuleName, 205, "market does not exist") - ErrorMarketForAssetDoesNotExist = errors.Register(ModuleName, 206, "market for asset does not exist") -) - -var ( - ErrorUnknownMsgType = errors.Register(ModuleName, 301, "unknown message type") -) - -var ( - ErrorUnknownProposalType = errors.Register(ModuleName, 401, "unknown proposal type") + ErrorMarketForAssetDoesNotExist = errors.Register(ModuleName, 202, "market for asset does not exist") + ErrorUnknownMsgType = errors.Register(ModuleName, 203, "unknown message type") ) diff --git a/x/market/types/gov.go b/x/market/types/gov.go deleted file mode 100644 index 7fc6db55b..000000000 --- a/x/market/types/gov.go +++ /dev/null @@ -1,41 +0,0 @@ -package types - -import ( - "fmt" - - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/cosmos-sdk/types/errors" - govtypes "github.com/cosmos/cosmos-sdk/x/gov/types" -) - -const ( - ProposalTypeUpdateAdmin = "UpdateOracleAdmin" -) - -func init() { - govtypes.RegisterProposalType(ProposalTypeUpdateAdmin) - govtypes.RegisterProposalTypeCodec(&UpdateAdminProposal{}, fmt.Sprintf("comdex/market/%s", ProposalTypeUpdateAdmin)) -} - -var ( - _ govtypes.Content = (*UpdateAdminProposal)(nil) -) - -func (m *UpdateAdminProposal) GetTitle() string { return m.Title } -func (m *UpdateAdminProposal) GetDescription() string { return m.Description } -func (m *UpdateAdminProposal) ProposalRoute() string { return RouterKey } -func (m *UpdateAdminProposal) ProposalType() string { return ProposalTypeUpdateAdmin } - -func (m *UpdateAdminProposal) ValidateBasic() error { - if err := govtypes.ValidateAbstract(m); err != nil { - return err - } - if m.Address == "" { - return fmt.Errorf("address cannot be empty") - } - if _, err := sdk.AccAddressFromBech32(m.Address); err != nil { - return errors.Wrapf(err, "invalid address %s", m.Address) - } - - return nil -} diff --git a/x/market/types/gov.pb.go b/x/market/types/gov.pb.go index 6fce7e863..6f6a3d9c5 100644 --- a/x/market/types/gov.pb.go +++ b/x/market/types/gov.pb.go @@ -7,9 +7,7 @@ import ( fmt "fmt" _ "github.com/gogo/protobuf/gogoproto" proto "github.com/gogo/protobuf/proto" - io "io" math "math" - math_bits "math/bits" ) // Reference imports to suppress errors if they are not otherwise used. @@ -23,382 +21,18 @@ var _ = math.Inf // proto package needs to be updated. const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package -type UpdateAdminProposal struct { - Title string `protobuf:"bytes,1,opt,name=title,proto3" json:"title,omitempty" yaml:"title"` - Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty" yaml:"description"` - Address string `protobuf:"bytes,3,opt,name=address,proto3" json:"address,omitempty" yaml:"address"` -} - -func (m *UpdateAdminProposal) Reset() { *m = UpdateAdminProposal{} } -func (m *UpdateAdminProposal) String() string { return proto.CompactTextString(m) } -func (*UpdateAdminProposal) ProtoMessage() {} -func (*UpdateAdminProposal) Descriptor() ([]byte, []int) { - return fileDescriptor_75453f23864660b8, []int{0} -} -func (m *UpdateAdminProposal) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *UpdateAdminProposal) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_UpdateAdminProposal.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *UpdateAdminProposal) XXX_Merge(src proto.Message) { - xxx_messageInfo_UpdateAdminProposal.Merge(m, src) -} -func (m *UpdateAdminProposal) XXX_Size() int { - return m.Size() -} -func (m *UpdateAdminProposal) XXX_DiscardUnknown() { - xxx_messageInfo_UpdateAdminProposal.DiscardUnknown(m) -} - -var xxx_messageInfo_UpdateAdminProposal proto.InternalMessageInfo - -func init() { - proto.RegisterType((*UpdateAdminProposal)(nil), "comdex.market.v1beta1.UpdateAdminProposal") -} - func init() { proto.RegisterFile("comdex/market/v1beta1/gov.proto", fileDescriptor_75453f23864660b8) } var fileDescriptor_75453f23864660b8 = []byte{ - // 273 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x4c, 0xd0, 0x4f, 0x4a, 0xc4, 0x30, - 0x18, 0x05, 0xf0, 0x46, 0x51, 0xb1, 0x8a, 0x48, 0xfc, 0x43, 0x71, 0x91, 0x4a, 0x17, 0xe2, 0x42, - 0x1b, 0x07, 0x37, 0xe2, 0xce, 0x39, 0x81, 0x14, 0xdc, 0xb8, 0x4b, 0x9b, 0x4c, 0x0d, 0xb6, 0xf3, - 0x85, 0x24, 0x0e, 0xce, 0x2d, 0xbc, 0x84, 0xe0, 0x51, 0x66, 0x39, 0x4b, 0x57, 0x45, 0xdb, 0x1b, - 0xf4, 0x04, 0x62, 0x52, 0x65, 0x76, 0xc9, 0xf7, 0x7e, 0x6f, 0xf3, 0xc2, 0xb8, 0x80, 0x9a, 0x8b, - 0x57, 0x5a, 0x33, 0xfd, 0x2c, 0x2c, 0x9d, 0x8d, 0x72, 0x61, 0xd9, 0x88, 0x96, 0x30, 0x4b, 0x95, - 0x06, 0x0b, 0xf8, 0xc8, 0x83, 0xd4, 0x83, 0x74, 0x00, 0x27, 0x87, 0x25, 0x94, 0xe0, 0x04, 0xfd, - 0x7d, 0x79, 0x9c, 0xbc, 0xa3, 0xf0, 0xe0, 0x41, 0x71, 0x66, 0xc5, 0x1d, 0xaf, 0xe5, 0xf4, 0x5e, - 0x83, 0x02, 0xc3, 0x2a, 0x7c, 0x16, 0x6e, 0x58, 0x69, 0x2b, 0x11, 0xa1, 0x53, 0x74, 0xbe, 0x3d, - 0xde, 0xef, 0x9b, 0x78, 0x77, 0xce, 0xea, 0xea, 0x36, 0x71, 0xe7, 0x24, 0xf3, 0x31, 0xbe, 0x09, - 0x77, 0xb8, 0x30, 0x85, 0x96, 0xca, 0x4a, 0x98, 0x46, 0x6b, 0x4e, 0x1f, 0xf7, 0x4d, 0x8c, 0xbd, - 0x5e, 0x09, 0x93, 0x6c, 0x95, 0xe2, 0x8b, 0x70, 0x8b, 0x71, 0xae, 0x85, 0x31, 0xd1, 0xba, 0x6b, - 0xe1, 0xbe, 0x89, 0xf7, 0x7c, 0x6b, 0x08, 0x92, 0xec, 0x8f, 0x8c, 0xb3, 0xc5, 0x37, 0x09, 0x3e, - 0x5a, 0x12, 0x2c, 0x5a, 0x82, 0x96, 0x2d, 0x41, 0x5f, 0x2d, 0x41, 0x6f, 0x1d, 0x09, 0x96, 0x1d, - 0x09, 0x3e, 0x3b, 0x12, 0x3c, 0x5e, 0x95, 0xd2, 0x3e, 0xbd, 0xe4, 0x69, 0x01, 0x35, 0xf5, 0x0b, - 0x5c, 0xc2, 0x64, 0x22, 0x0b, 0xc9, 0xaa, 0xe1, 0x4f, 0xff, 0x47, 0xb3, 0x73, 0x25, 0x4c, 0xbe, - 0xe9, 0x26, 0xb8, 0xfe, 0x09, 0x00, 0x00, 0xff, 0xff, 0xbd, 0x1e, 0xc9, 0xca, 0x52, 0x01, 0x00, - 0x00, + // 155 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x92, 0x4f, 0xce, 0xcf, 0x4d, + 0x49, 0xad, 0xd0, 0xcf, 0x4d, 0x2c, 0xca, 0x4e, 0x2d, 0xd1, 0x2f, 0x33, 0x4c, 0x4a, 0x2d, 0x49, + 0x34, 0xd4, 0x4f, 0xcf, 0x2f, 0xd3, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, 0x85, 0x28, 0xd0, + 0x83, 0x28, 0xd0, 0x83, 0x2a, 0x90, 0x12, 0x49, 0xcf, 0x4f, 0xcf, 0x07, 0xab, 0xd0, 0x07, 0xb1, + 0x20, 0x8a, 0x9d, 0x82, 0x4e, 0x3c, 0x94, 0x63, 0x58, 0xf1, 0x48, 0x8e, 0xe1, 0xc4, 0x23, 0x39, + 0xc6, 0x0b, 0x8f, 0xe4, 0x18, 0x1f, 0x3c, 0x92, 0x63, 0x9c, 0xf0, 0x58, 0x8e, 0xe1, 0xc2, 0x63, + 0x39, 0x86, 0x1b, 0x8f, 0xe5, 0x18, 0xa2, 0x0c, 0xd2, 0x33, 0x4b, 0x32, 0x4a, 0x93, 0xf4, 0x92, + 0xf3, 0x73, 0xf5, 0x21, 0x26, 0xeb, 0xe6, 0xa7, 0xa5, 0x65, 0x26, 0x67, 0x26, 0xe6, 0x40, 0xf9, + 0xfa, 0x70, 0xc7, 0x94, 0x54, 0x16, 0xa4, 0x16, 0x27, 0xb1, 0x81, 0x8d, 0x36, 0x06, 0x04, 0x00, + 0x00, 0xff, 0xff, 0x25, 0x15, 0x84, 0xd2, 0xaa, 0x00, 0x00, 0x00, } - -func (m *UpdateAdminProposal) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *UpdateAdminProposal) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *UpdateAdminProposal) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.Address) > 0 { - i -= len(m.Address) - copy(dAtA[i:], m.Address) - i = encodeVarintGov(dAtA, i, uint64(len(m.Address))) - i-- - dAtA[i] = 0x1a - } - if len(m.Description) > 0 { - i -= len(m.Description) - copy(dAtA[i:], m.Description) - i = encodeVarintGov(dAtA, i, uint64(len(m.Description))) - i-- - dAtA[i] = 0x12 - } - if len(m.Title) > 0 { - i -= len(m.Title) - copy(dAtA[i:], m.Title) - i = encodeVarintGov(dAtA, i, uint64(len(m.Title))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func encodeVarintGov(dAtA []byte, offset int, v uint64) int { - offset -= sovGov(v) - base := offset - for v >= 1<<7 { - dAtA[offset] = uint8(v&0x7f | 0x80) - v >>= 7 - offset++ - } - dAtA[offset] = uint8(v) - return base -} -func (m *UpdateAdminProposal) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.Title) - if l > 0 { - n += 1 + l + sovGov(uint64(l)) - } - l = len(m.Description) - if l > 0 { - n += 1 + l + sovGov(uint64(l)) - } - l = len(m.Address) - if l > 0 { - n += 1 + l + sovGov(uint64(l)) - } - return n -} - -func sovGov(x uint64) (n int) { - return (math_bits.Len64(x|1) + 6) / 7 -} -func sozGov(x uint64) (n int) { - return sovGov(uint64((x << 1) ^ uint64((int64(x) >> 63)))) -} -func (m *UpdateAdminProposal) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGov - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: UpdateAdminProposal: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: UpdateAdminProposal: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Title", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGov - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthGov - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthGov - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Title = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Description", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGov - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthGov - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthGov - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Description = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Address", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowGov - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthGov - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthGov - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Address = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipGov(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthGov - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func skipGov(dAtA []byte) (n int, err error) { - l := len(dAtA) - iNdEx := 0 - depth := 0 - for iNdEx < l { - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowGov - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - wireType := int(wire & 0x7) - switch wireType { - case 0: - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowGov - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - iNdEx++ - if dAtA[iNdEx-1] < 0x80 { - break - } - } - case 1: - iNdEx += 8 - case 2: - var length int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowGov - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - length |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - if length < 0 { - return 0, ErrInvalidLengthGov - } - iNdEx += length - case 3: - depth++ - case 4: - if depth == 0 { - return 0, ErrUnexpectedEndOfGroupGov - } - depth-- - case 5: - iNdEx += 4 - default: - return 0, fmt.Errorf("proto: illegal wireType %d", wireType) - } - if iNdEx < 0 { - return 0, ErrInvalidLengthGov - } - if depth == 0 { - return iNdEx, nil - } - } - return 0, io.ErrUnexpectedEOF -} - -var ( - ErrInvalidLengthGov = fmt.Errorf("proto: negative length found during unmarshaling") - ErrIntOverflowGov = fmt.Errorf("proto: integer overflow") - ErrUnexpectedEndOfGroupGov = fmt.Errorf("proto: unexpected end of group") -) diff --git a/x/market/types/keys.go b/x/market/types/keys.go index bf39ab599..1e914aec5 100644 --- a/x/market/types/keys.go +++ b/x/market/types/keys.go @@ -13,8 +13,7 @@ const ( ) var ( - MarketKeyPrefix = []byte{0x13} - + MarketKeyPrefix = []byte{0x13} MarketForAssetKeyPrefix = []byte{0x22} PriceForMarketKeyPrefix = []byte{0x23} ) diff --git a/x/market/types/market.go b/x/market/types/market.go index c9459b69c..c2975ea48 100644 --- a/x/market/types/market.go +++ b/x/market/types/market.go @@ -6,7 +6,6 @@ import ( const ( MaxMarketSymbolLength = 8 - MaxAssetNameLength = 16 ) func (m *Market) Validate() error { diff --git a/x/market/types/msg.go b/x/market/types/msg.go deleted file mode 100644 index d9a86c771..000000000 --- a/x/market/types/msg.go +++ /dev/null @@ -1,95 +0,0 @@ -package types - -import ( - sdk "github.com/cosmos/cosmos-sdk/types" - "github.com/cosmos/cosmos-sdk/types/errors" -) - -var ( - _ sdk.Msg = (*MsgAddMarketRequest)(nil) - _ sdk.Msg = (*MsgUpdateMarketRequest)(nil) - _ sdk.Msg = (*MsgRemoveMarketForAssetRequest)(nil) -) - -func (m *MsgAddMarketRequest) ValidateBasic() error { - if m.From == "" { - return errors.Wrap(ErrorInvalidFrom, "from cannot be empty") - } - if _, err := sdk.AccAddressFromBech32(m.From); err != nil { - return errors.Wrapf(ErrorInvalidFrom, "%s", err) - } - if m.Symbol == "" { - return errors.Wrap(ErrorInvalidSymbol, "symbol cannot be empty") - } - if len(m.Symbol) > MaxMarketSymbolLength { - return errors.Wrapf(ErrorInvalidSymbol, "symbol length cannot be greater than %d", MaxMarketSymbolLength) - } - if m.ScriptID == 0 { - return errors.Wrapf(ErrorInvalidScriptID, "script_id cannot be zero") - } - - return nil -} - -func (m *MsgAddMarketRequest) GetSigners() []sdk.AccAddress { - from, err := sdk.AccAddressFromBech32(m.From) - if err != nil { - panic(err) - } - - return []sdk.AccAddress{from} -} - -func (m *MsgUpdateMarketRequest) ValidateBasic() error { - if m.From == "" { - return errors.Wrap(ErrorInvalidFrom, "from cannot be empty") - } - if _, err := sdk.AccAddressFromBech32(m.From); err != nil { - return errors.Wrapf(ErrorInvalidFrom, "%s", err) - } - if m.Symbol != "" { - if len(m.Symbol) > MaxMarketSymbolLength { - return errors.Wrapf(ErrorInvalidSymbol, "symbol length cannot be greater than %d", MaxMarketSymbolLength) - } - } - - return nil -} - -func (m *MsgUpdateMarketRequest) GetSigners() []sdk.AccAddress { - from, err := sdk.AccAddressFromBech32(m.From) - if err != nil { - panic(err) - } - - return []sdk.AccAddress{from} -} - -func (m *MsgRemoveMarketForAssetRequest) ValidateBasic() error { - if m.From == "" { - return errors.Wrap(ErrorInvalidFrom, "from cannot be empty") - } - if _, err := sdk.AccAddressFromBech32(m.From); err != nil { - return errors.Wrapf(ErrorInvalidFrom, "%s", err) - } - if m.Id == 0 { - return errors.Wrap(ErrorInvalidID, "id cannot be zero") - } - if m.Symbol == "" { - return errors.Wrap(ErrorInvalidSymbol, "symbol cannot be empty") - } - if len(m.Symbol) > MaxMarketSymbolLength { - return errors.Wrapf(ErrorInvalidSymbol, "symbol length cannot be greater than %d", MaxMarketSymbolLength) - } - - return nil -} - -func (m *MsgRemoveMarketForAssetRequest) GetSigners() []sdk.AccAddress { - from, err := sdk.AccAddressFromBech32(m.From) - if err != nil { - panic(err) - } - - return []sdk.AccAddress{from} -} diff --git a/x/market/types/params.go b/x/market/types/params.go index 875d50080..af2ee32c4 100644 --- a/x/market/types/params.go +++ b/x/market/types/params.go @@ -8,6 +8,13 @@ var ( _ paramstypes.ParamSet = (*Params)(nil) ) +const ( + Int64Twenty = int64(20) + Int64TwentyOne = int64(21) + Int64One = int64(1) + Int64Zero = int64(0) +) + func (m *Params) ParamSetPairs() paramstypes.ParamSetPairs { return nil } diff --git a/x/market/types/tx.pb.go b/x/market/types/tx.pb.go deleted file mode 100644 index 5de260571..000000000 --- a/x/market/types/tx.pb.go +++ /dev/null @@ -1,1467 +0,0 @@ -// Code generated by protoc-gen-gogo. DO NOT EDIT. -// source: comdex/market/v1beta1/tx.proto - -package types - -import ( - context "context" - fmt "fmt" - _ "github.com/gogo/protobuf/gogoproto" - grpc1 "github.com/gogo/protobuf/grpc" - proto "github.com/gogo/protobuf/proto" - grpc "google.golang.org/grpc" - codes "google.golang.org/grpc/codes" - status "google.golang.org/grpc/status" - io "io" - math "math" - math_bits "math/bits" -) - -// Reference imports to suppress errors if they are not otherwise used. -var _ = proto.Marshal -var _ = fmt.Errorf -var _ = math.Inf - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the proto package it is being compiled against. -// A compilation error at this line likely means your copy of the -// proto package needs to be updated. -const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package - -type MsgAddMarketRequest struct { - From string `protobuf:"bytes,1,opt,name=from,proto3" json:"from,omitempty" yaml:"from"` - Symbol string `protobuf:"bytes,2,opt,name=symbol,proto3" json:"symbol,omitempty" yaml:"symbol"` - ScriptID uint64 `protobuf:"varint,3,opt,name=script_id,json=scriptId,proto3" json:"script_id,omitempty" yaml:"script_id"` - Id uint64 `protobuf:"varint,4,opt,name=id,proto3" json:"id,omitempty"` - Rates uint64 `protobuf:"varint,5,opt,name=rates,proto3" json:"rates,omitempty"` -} - -func (m *MsgAddMarketRequest) Reset() { *m = MsgAddMarketRequest{} } -func (m *MsgAddMarketRequest) String() string { return proto.CompactTextString(m) } -func (*MsgAddMarketRequest) ProtoMessage() {} -func (*MsgAddMarketRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_44ad1b3fb3cd8c90, []int{0} -} -func (m *MsgAddMarketRequest) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *MsgAddMarketRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_MsgAddMarketRequest.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *MsgAddMarketRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgAddMarketRequest.Merge(m, src) -} -func (m *MsgAddMarketRequest) XXX_Size() int { - return m.Size() -} -func (m *MsgAddMarketRequest) XXX_DiscardUnknown() { - xxx_messageInfo_MsgAddMarketRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_MsgAddMarketRequest proto.InternalMessageInfo - -type MsgAddMarketResponse struct { -} - -func (m *MsgAddMarketResponse) Reset() { *m = MsgAddMarketResponse{} } -func (m *MsgAddMarketResponse) String() string { return proto.CompactTextString(m) } -func (*MsgAddMarketResponse) ProtoMessage() {} -func (*MsgAddMarketResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_44ad1b3fb3cd8c90, []int{1} -} -func (m *MsgAddMarketResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *MsgAddMarketResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_MsgAddMarketResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *MsgAddMarketResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgAddMarketResponse.Merge(m, src) -} -func (m *MsgAddMarketResponse) XXX_Size() int { - return m.Size() -} -func (m *MsgAddMarketResponse) XXX_DiscardUnknown() { - xxx_messageInfo_MsgAddMarketResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_MsgAddMarketResponse proto.InternalMessageInfo - -type MsgUpdateMarketRequest struct { - From string `protobuf:"bytes,1,opt,name=from,proto3" json:"from,omitempty" yaml:"from"` - Symbol string `protobuf:"bytes,2,opt,name=symbol,proto3" json:"symbol,omitempty" yaml:"symbol"` - ScriptID uint64 `protobuf:"varint,3,opt,name=script_id,json=scriptId,proto3" json:"script_id,omitempty" yaml:"script_id"` - Rates uint64 `protobuf:"varint,4,opt,name=rates,proto3" json:"rates,omitempty"` -} - -func (m *MsgUpdateMarketRequest) Reset() { *m = MsgUpdateMarketRequest{} } -func (m *MsgUpdateMarketRequest) String() string { return proto.CompactTextString(m) } -func (*MsgUpdateMarketRequest) ProtoMessage() {} -func (*MsgUpdateMarketRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_44ad1b3fb3cd8c90, []int{2} -} -func (m *MsgUpdateMarketRequest) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *MsgUpdateMarketRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_MsgUpdateMarketRequest.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *MsgUpdateMarketRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgUpdateMarketRequest.Merge(m, src) -} -func (m *MsgUpdateMarketRequest) XXX_Size() int { - return m.Size() -} -func (m *MsgUpdateMarketRequest) XXX_DiscardUnknown() { - xxx_messageInfo_MsgUpdateMarketRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_MsgUpdateMarketRequest proto.InternalMessageInfo - -type MsgUpdateMarketResponse struct { -} - -func (m *MsgUpdateMarketResponse) Reset() { *m = MsgUpdateMarketResponse{} } -func (m *MsgUpdateMarketResponse) String() string { return proto.CompactTextString(m) } -func (*MsgUpdateMarketResponse) ProtoMessage() {} -func (*MsgUpdateMarketResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_44ad1b3fb3cd8c90, []int{3} -} -func (m *MsgUpdateMarketResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *MsgUpdateMarketResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_MsgUpdateMarketResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *MsgUpdateMarketResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgUpdateMarketResponse.Merge(m, src) -} -func (m *MsgUpdateMarketResponse) XXX_Size() int { - return m.Size() -} -func (m *MsgUpdateMarketResponse) XXX_DiscardUnknown() { - xxx_messageInfo_MsgUpdateMarketResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_MsgUpdateMarketResponse proto.InternalMessageInfo - -type MsgRemoveMarketForAssetRequest struct { - From string `protobuf:"bytes,1,opt,name=from,proto3" json:"from,omitempty" yaml:"from"` - Id uint64 `protobuf:"varint,2,opt,name=id,proto3" json:"id,omitempty"` - Symbol string `protobuf:"bytes,3,opt,name=symbol,proto3" json:"symbol,omitempty" yaml:"symbol"` -} - -func (m *MsgRemoveMarketForAssetRequest) Reset() { *m = MsgRemoveMarketForAssetRequest{} } -func (m *MsgRemoveMarketForAssetRequest) String() string { return proto.CompactTextString(m) } -func (*MsgRemoveMarketForAssetRequest) ProtoMessage() {} -func (*MsgRemoveMarketForAssetRequest) Descriptor() ([]byte, []int) { - return fileDescriptor_44ad1b3fb3cd8c90, []int{4} -} -func (m *MsgRemoveMarketForAssetRequest) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *MsgRemoveMarketForAssetRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_MsgRemoveMarketForAssetRequest.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *MsgRemoveMarketForAssetRequest) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgRemoveMarketForAssetRequest.Merge(m, src) -} -func (m *MsgRemoveMarketForAssetRequest) XXX_Size() int { - return m.Size() -} -func (m *MsgRemoveMarketForAssetRequest) XXX_DiscardUnknown() { - xxx_messageInfo_MsgRemoveMarketForAssetRequest.DiscardUnknown(m) -} - -var xxx_messageInfo_MsgRemoveMarketForAssetRequest proto.InternalMessageInfo - -type MsgRemoveMarketForAssetResponse struct { -} - -func (m *MsgRemoveMarketForAssetResponse) Reset() { *m = MsgRemoveMarketForAssetResponse{} } -func (m *MsgRemoveMarketForAssetResponse) String() string { return proto.CompactTextString(m) } -func (*MsgRemoveMarketForAssetResponse) ProtoMessage() {} -func (*MsgRemoveMarketForAssetResponse) Descriptor() ([]byte, []int) { - return fileDescriptor_44ad1b3fb3cd8c90, []int{5} -} -func (m *MsgRemoveMarketForAssetResponse) XXX_Unmarshal(b []byte) error { - return m.Unmarshal(b) -} -func (m *MsgRemoveMarketForAssetResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { - if deterministic { - return xxx_messageInfo_MsgRemoveMarketForAssetResponse.Marshal(b, m, deterministic) - } else { - b = b[:cap(b)] - n, err := m.MarshalToSizedBuffer(b) - if err != nil { - return nil, err - } - return b[:n], nil - } -} -func (m *MsgRemoveMarketForAssetResponse) XXX_Merge(src proto.Message) { - xxx_messageInfo_MsgRemoveMarketForAssetResponse.Merge(m, src) -} -func (m *MsgRemoveMarketForAssetResponse) XXX_Size() int { - return m.Size() -} -func (m *MsgRemoveMarketForAssetResponse) XXX_DiscardUnknown() { - xxx_messageInfo_MsgRemoveMarketForAssetResponse.DiscardUnknown(m) -} - -var xxx_messageInfo_MsgRemoveMarketForAssetResponse proto.InternalMessageInfo - -func init() { - proto.RegisterType((*MsgAddMarketRequest)(nil), "comdex.market.v1beta1.MsgAddMarketRequest") - proto.RegisterType((*MsgAddMarketResponse)(nil), "comdex.market.v1beta1.MsgAddMarketResponse") - proto.RegisterType((*MsgUpdateMarketRequest)(nil), "comdex.market.v1beta1.MsgUpdateMarketRequest") - proto.RegisterType((*MsgUpdateMarketResponse)(nil), "comdex.market.v1beta1.MsgUpdateMarketResponse") - proto.RegisterType((*MsgRemoveMarketForAssetRequest)(nil), "comdex.market.v1beta1.MsgRemoveMarketForAssetRequest") - proto.RegisterType((*MsgRemoveMarketForAssetResponse)(nil), "comdex.market.v1beta1.MsgRemoveMarketForAssetResponse") -} - -func init() { proto.RegisterFile("comdex/market/v1beta1/tx.proto", fileDescriptor_44ad1b3fb3cd8c90) } - -var fileDescriptor_44ad1b3fb3cd8c90 = []byte{ - // 463 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x94, 0xbf, 0x6f, 0xd4, 0x30, - 0x14, 0xc7, 0xe3, 0xdc, 0xb5, 0x6a, 0xcd, 0x8f, 0x82, 0x39, 0x4a, 0xc8, 0xe0, 0x1c, 0x66, 0x29, - 0xa0, 0x26, 0x14, 0x04, 0x03, 0x12, 0x43, 0x4f, 0x08, 0xa9, 0x43, 0x96, 0x20, 0x16, 0x16, 0x94, - 0x9c, 0x7d, 0x26, 0xe2, 0x82, 0x43, 0xec, 0x56, 0xbd, 0x8d, 0x91, 0x91, 0x3f, 0x83, 0x7f, 0x82, - 0xbd, 0x62, 0xea, 0xc8, 0x14, 0x41, 0x6e, 0x64, 0xbb, 0xbf, 0x00, 0xc5, 0x0e, 0x47, 0x81, 0x1c, - 0xf4, 0xb6, 0x6e, 0xf6, 0x7b, 0x9f, 0xe7, 0xf7, 0xbe, 0xef, 0x3d, 0x19, 0xe2, 0xa1, 0xc8, 0x28, - 0x3b, 0x0c, 0xb2, 0xb8, 0x78, 0xcd, 0x54, 0x70, 0xb0, 0x93, 0x30, 0x15, 0xef, 0x04, 0xea, 0xd0, - 0xcf, 0x0b, 0xa1, 0x04, 0xba, 0x6a, 0xfc, 0xbe, 0xf1, 0xfb, 0x8d, 0xdf, 0xed, 0x71, 0xc1, 0x85, - 0x26, 0x82, 0xfa, 0x64, 0x60, 0xf2, 0x19, 0xc0, 0x2b, 0xa1, 0xe4, 0xbb, 0x94, 0x86, 0x1a, 0x8f, - 0xd8, 0xdb, 0x7d, 0x26, 0x15, 0xba, 0x09, 0xbb, 0xa3, 0x42, 0x64, 0x0e, 0xe8, 0x83, 0xad, 0xf5, - 0xc1, 0xc6, 0xac, 0xf4, 0xce, 0x4d, 0xe2, 0x6c, 0xfc, 0x88, 0xd4, 0x56, 0x12, 0x69, 0x27, 0xba, - 0x05, 0x57, 0xe5, 0x24, 0x4b, 0xc4, 0xd8, 0xb1, 0x35, 0x76, 0x79, 0x56, 0x7a, 0x17, 0x0c, 0x66, - 0xec, 0x24, 0x6a, 0x00, 0xf4, 0x18, 0xae, 0xcb, 0x61, 0x91, 0xe6, 0xea, 0x65, 0x4a, 0x9d, 0x4e, - 0x1f, 0x6c, 0x75, 0x07, 0xfd, 0xaa, 0xf4, 0xd6, 0x9e, 0x69, 0xe3, 0xde, 0x93, 0x59, 0xe9, 0x5d, - 0x6a, 0x22, 0x7f, 0x62, 0x24, 0x5a, 0x33, 0xe7, 0x3d, 0x8a, 0x2e, 0x42, 0x3b, 0xa5, 0x4e, 0xb7, - 0x8e, 0x8b, 0xec, 0x94, 0xa2, 0x1e, 0x5c, 0x29, 0x62, 0xc5, 0xa4, 0xb3, 0xa2, 0x4d, 0xe6, 0x42, - 0x36, 0x61, 0xef, 0x77, 0x2d, 0x32, 0x17, 0x6f, 0x24, 0x23, 0x9f, 0x00, 0xdc, 0x0c, 0x25, 0x7f, - 0x9e, 0xd3, 0x58, 0xb1, 0x33, 0xad, 0x73, 0xae, 0xab, 0x7b, 0x52, 0xd7, 0x75, 0x78, 0xed, 0xaf, - 0xf2, 0x1b, 0x69, 0xef, 0x00, 0xc4, 0xa1, 0xe4, 0x11, 0xcb, 0xc4, 0x41, 0xe3, 0x7b, 0x2a, 0x8a, - 0x5d, 0x29, 0x97, 0x94, 0x68, 0x1a, 0x6c, 0xcf, 0x1b, 0xfc, 0x4b, 0x72, 0xe7, 0x3f, 0x92, 0xc9, - 0x0d, 0xe8, 0x2d, 0xac, 0xc0, 0x54, 0x79, 0xef, 0xbb, 0x0d, 0x3b, 0xa1, 0xe4, 0x88, 0xc3, 0xf3, - 0x27, 0x07, 0x84, 0x6e, 0xfb, 0xad, 0xbb, 0xea, 0xb7, 0x6c, 0xa4, 0x7b, 0xe7, 0x54, 0xac, 0x49, - 0x88, 0x72, 0xb8, 0xf1, 0x47, 0xc7, 0xd0, 0xf6, 0xe2, 0xf8, 0x96, 0xc5, 0x70, 0xfd, 0xd3, 0xe2, - 0x4d, 0xc6, 0xf7, 0x40, 0x0f, 0xa9, 0xad, 0x0d, 0xe8, 0xc1, 0xe2, 0xb7, 0xfe, 0x31, 0x38, 0xf7, - 0xe1, 0xb2, 0x61, 0xa6, 0x94, 0x41, 0x74, 0xf4, 0x0d, 0x5b, 0x1f, 0x2b, 0x6c, 0x1d, 0x55, 0x18, - 0x1c, 0x57, 0x18, 0x7c, 0xad, 0x30, 0xf8, 0x30, 0xc5, 0xd6, 0xf1, 0x14, 0x5b, 0x5f, 0xa6, 0xd8, - 0x7a, 0x71, 0x97, 0xa7, 0xea, 0xd5, 0x7e, 0x52, 0xbf, 0x1f, 0x98, 0x1c, 0xdb, 0x62, 0x34, 0x4a, - 0x87, 0x69, 0x3c, 0x6e, 0xee, 0xc1, 0xfc, 0x7f, 0x51, 0x93, 0x9c, 0xc9, 0x64, 0x55, 0x7f, 0x17, - 0xf7, 0x7f, 0x04, 0x00, 0x00, 0xff, 0xff, 0x31, 0x93, 0x01, 0x37, 0x7d, 0x04, 0x00, 0x00, -} - -// Reference imports to suppress errors if they are not otherwise used. -var _ context.Context -var _ grpc.ClientConn - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 - -// MsgClient is the client API for Msg service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. -type MsgClient interface { - MsgAddMarket(ctx context.Context, in *MsgAddMarketRequest, opts ...grpc.CallOption) (*MsgAddMarketResponse, error) - MsgUpdateMarket(ctx context.Context, in *MsgUpdateMarketRequest, opts ...grpc.CallOption) (*MsgUpdateMarketResponse, error) - MsgRemoveMarketForAsset(ctx context.Context, in *MsgRemoveMarketForAssetRequest, opts ...grpc.CallOption) (*MsgRemoveMarketForAssetResponse, error) -} - -type msgClient struct { - cc grpc1.ClientConn -} - -func NewMsgClient(cc grpc1.ClientConn) MsgClient { - return &msgClient{cc} -} - -func (c *msgClient) MsgAddMarket(ctx context.Context, in *MsgAddMarketRequest, opts ...grpc.CallOption) (*MsgAddMarketResponse, error) { - out := new(MsgAddMarketResponse) - err := c.cc.Invoke(ctx, "/comdex.market.v1beta1.Msg/MsgAddMarket", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *msgClient) MsgUpdateMarket(ctx context.Context, in *MsgUpdateMarketRequest, opts ...grpc.CallOption) (*MsgUpdateMarketResponse, error) { - out := new(MsgUpdateMarketResponse) - err := c.cc.Invoke(ctx, "/comdex.market.v1beta1.Msg/MsgUpdateMarket", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *msgClient) MsgRemoveMarketForAsset(ctx context.Context, in *MsgRemoveMarketForAssetRequest, opts ...grpc.CallOption) (*MsgRemoveMarketForAssetResponse, error) { - out := new(MsgRemoveMarketForAssetResponse) - err := c.cc.Invoke(ctx, "/comdex.market.v1beta1.Msg/MsgRemoveMarketForAsset", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// MsgServer is the server API for Msg service. -type MsgServer interface { - MsgAddMarket(context.Context, *MsgAddMarketRequest) (*MsgAddMarketResponse, error) - MsgUpdateMarket(context.Context, *MsgUpdateMarketRequest) (*MsgUpdateMarketResponse, error) - MsgRemoveMarketForAsset(context.Context, *MsgRemoveMarketForAssetRequest) (*MsgRemoveMarketForAssetResponse, error) -} - -// UnimplementedMsgServer can be embedded to have forward compatible implementations. -type UnimplementedMsgServer struct { -} - -func (*UnimplementedMsgServer) MsgAddMarket(ctx context.Context, req *MsgAddMarketRequest) (*MsgAddMarketResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method MsgAddMarket not implemented") -} -func (*UnimplementedMsgServer) MsgUpdateMarket(ctx context.Context, req *MsgUpdateMarketRequest) (*MsgUpdateMarketResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method MsgUpdateMarket not implemented") -} -func (*UnimplementedMsgServer) MsgRemoveMarketForAsset(ctx context.Context, req *MsgRemoveMarketForAssetRequest) (*MsgRemoveMarketForAssetResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method MsgRemoveMarketForAsset not implemented") -} - -func RegisterMsgServer(s grpc1.Server, srv MsgServer) { - s.RegisterService(&_Msg_serviceDesc, srv) -} - -func _Msg_MsgAddMarket_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(MsgAddMarketRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(MsgServer).MsgAddMarket(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/comdex.market.v1beta1.Msg/MsgAddMarket", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MsgServer).MsgAddMarket(ctx, req.(*MsgAddMarketRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Msg_MsgUpdateMarket_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(MsgUpdateMarketRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(MsgServer).MsgUpdateMarket(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/comdex.market.v1beta1.Msg/MsgUpdateMarket", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MsgServer).MsgUpdateMarket(ctx, req.(*MsgUpdateMarketRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _Msg_MsgRemoveMarketForAsset_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(MsgRemoveMarketForAssetRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(MsgServer).MsgRemoveMarketForAsset(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/comdex.market.v1beta1.Msg/MsgRemoveMarketForAsset", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MsgServer).MsgRemoveMarketForAsset(ctx, req.(*MsgRemoveMarketForAssetRequest)) - } - return interceptor(ctx, in, info, handler) -} - -var _Msg_serviceDesc = grpc.ServiceDesc{ - ServiceName: "comdex.market.v1beta1.Msg", - HandlerType: (*MsgServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "MsgAddMarket", - Handler: _Msg_MsgAddMarket_Handler, - }, - { - MethodName: "MsgUpdateMarket", - Handler: _Msg_MsgUpdateMarket_Handler, - }, - { - MethodName: "MsgRemoveMarketForAsset", - Handler: _Msg_MsgRemoveMarketForAsset_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "comdex/market/v1beta1/tx.proto", -} - -func (m *MsgAddMarketRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *MsgAddMarketRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *MsgAddMarketRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.Rates != 0 { - i = encodeVarintTx(dAtA, i, uint64(m.Rates)) - i-- - dAtA[i] = 0x28 - } - if m.Id != 0 { - i = encodeVarintTx(dAtA, i, uint64(m.Id)) - i-- - dAtA[i] = 0x20 - } - if m.ScriptID != 0 { - i = encodeVarintTx(dAtA, i, uint64(m.ScriptID)) - i-- - dAtA[i] = 0x18 - } - if len(m.Symbol) > 0 { - i -= len(m.Symbol) - copy(dAtA[i:], m.Symbol) - i = encodeVarintTx(dAtA, i, uint64(len(m.Symbol))) - i-- - dAtA[i] = 0x12 - } - if len(m.From) > 0 { - i -= len(m.From) - copy(dAtA[i:], m.From) - i = encodeVarintTx(dAtA, i, uint64(len(m.From))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *MsgAddMarketResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *MsgAddMarketResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *MsgAddMarketResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - return len(dAtA) - i, nil -} - -func (m *MsgUpdateMarketRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *MsgUpdateMarketRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *MsgUpdateMarketRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if m.Rates != 0 { - i = encodeVarintTx(dAtA, i, uint64(m.Rates)) - i-- - dAtA[i] = 0x20 - } - if m.ScriptID != 0 { - i = encodeVarintTx(dAtA, i, uint64(m.ScriptID)) - i-- - dAtA[i] = 0x18 - } - if len(m.Symbol) > 0 { - i -= len(m.Symbol) - copy(dAtA[i:], m.Symbol) - i = encodeVarintTx(dAtA, i, uint64(len(m.Symbol))) - i-- - dAtA[i] = 0x12 - } - if len(m.From) > 0 { - i -= len(m.From) - copy(dAtA[i:], m.From) - i = encodeVarintTx(dAtA, i, uint64(len(m.From))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *MsgUpdateMarketResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *MsgUpdateMarketResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *MsgUpdateMarketResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - return len(dAtA) - i, nil -} - -func (m *MsgRemoveMarketForAssetRequest) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *MsgRemoveMarketForAssetRequest) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *MsgRemoveMarketForAssetRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - if len(m.Symbol) > 0 { - i -= len(m.Symbol) - copy(dAtA[i:], m.Symbol) - i = encodeVarintTx(dAtA, i, uint64(len(m.Symbol))) - i-- - dAtA[i] = 0x1a - } - if m.Id != 0 { - i = encodeVarintTx(dAtA, i, uint64(m.Id)) - i-- - dAtA[i] = 0x10 - } - if len(m.From) > 0 { - i -= len(m.From) - copy(dAtA[i:], m.From) - i = encodeVarintTx(dAtA, i, uint64(len(m.From))) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *MsgRemoveMarketForAssetResponse) Marshal() (dAtA []byte, err error) { - size := m.Size() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBuffer(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *MsgRemoveMarketForAssetResponse) MarshalTo(dAtA []byte) (int, error) { - size := m.Size() - return m.MarshalToSizedBuffer(dAtA[:size]) -} - -func (m *MsgRemoveMarketForAssetResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) { - i := len(dAtA) - _ = i - var l int - _ = l - return len(dAtA) - i, nil -} - -func encodeVarintTx(dAtA []byte, offset int, v uint64) int { - offset -= sovTx(v) - base := offset - for v >= 1<<7 { - dAtA[offset] = uint8(v&0x7f | 0x80) - v >>= 7 - offset++ - } - dAtA[offset] = uint8(v) - return base -} -func (m *MsgAddMarketRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.From) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) - } - l = len(m.Symbol) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) - } - if m.ScriptID != 0 { - n += 1 + sovTx(uint64(m.ScriptID)) - } - if m.Id != 0 { - n += 1 + sovTx(uint64(m.Id)) - } - if m.Rates != 0 { - n += 1 + sovTx(uint64(m.Rates)) - } - return n -} - -func (m *MsgAddMarketResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - return n -} - -func (m *MsgUpdateMarketRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.From) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) - } - l = len(m.Symbol) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) - } - if m.ScriptID != 0 { - n += 1 + sovTx(uint64(m.ScriptID)) - } - if m.Rates != 0 { - n += 1 + sovTx(uint64(m.Rates)) - } - return n -} - -func (m *MsgUpdateMarketResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - return n -} - -func (m *MsgRemoveMarketForAssetRequest) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - l = len(m.From) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) - } - if m.Id != 0 { - n += 1 + sovTx(uint64(m.Id)) - } - l = len(m.Symbol) - if l > 0 { - n += 1 + l + sovTx(uint64(l)) - } - return n -} - -func (m *MsgRemoveMarketForAssetResponse) Size() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - return n -} - -func sovTx(x uint64) (n int) { - return (math_bits.Len64(x|1) + 6) / 7 -} -func sozTx(x uint64) (n int) { - return sovTx(uint64((x << 1) ^ uint64((int64(x) >> 63)))) -} -func (m *MsgAddMarketRequest) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: MsgAddMarketRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: MsgAddMarketRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field From", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.From = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Symbol", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Symbol = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 3: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field ScriptID", wireType) - } - m.ScriptID = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.ScriptID |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 4: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) - } - m.Id = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.Id |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 5: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Rates", wireType) - } - m.Rates = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.Rates |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - default: - iNdEx = preIndex - skippy, err := skipTx(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthTx - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *MsgAddMarketResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: MsgAddMarketResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: MsgAddMarketResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - default: - iNdEx = preIndex - skippy, err := skipTx(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthTx - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *MsgUpdateMarketRequest) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: MsgUpdateMarketRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: MsgUpdateMarketRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field From", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.From = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Symbol", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Symbol = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 3: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field ScriptID", wireType) - } - m.ScriptID = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.ScriptID |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 4: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Rates", wireType) - } - m.Rates = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.Rates |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - default: - iNdEx = preIndex - skippy, err := skipTx(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthTx - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *MsgUpdateMarketResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: MsgUpdateMarketResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: MsgUpdateMarketResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - default: - iNdEx = preIndex - skippy, err := skipTx(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthTx - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *MsgRemoveMarketForAssetRequest) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: MsgRemoveMarketForAssetRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: MsgRemoveMarketForAssetRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field From", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.From = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 2: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) - } - m.Id = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.Id |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Symbol", wireType) - } - var stringLen uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - stringLen |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLengthTx - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLengthTx - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.Symbol = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skipTx(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthTx - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *MsgRemoveMarketForAssetResponse) Unmarshal(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflowTx - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: MsgRemoveMarketForAssetResponse: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: MsgRemoveMarketForAssetResponse: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - default: - iNdEx = preIndex - skippy, err := skipTx(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLengthTx - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func skipTx(dAtA []byte) (n int, err error) { - l := len(dAtA) - iNdEx := 0 - depth := 0 - for iNdEx < l { - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowTx - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= (uint64(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - wireType := int(wire & 0x7) - switch wireType { - case 0: - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowTx - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - iNdEx++ - if dAtA[iNdEx-1] < 0x80 { - break - } - } - case 1: - iNdEx += 8 - case 2: - var length int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return 0, ErrIntOverflowTx - } - if iNdEx >= l { - return 0, io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - length |= (int(b) & 0x7F) << shift - if b < 0x80 { - break - } - } - if length < 0 { - return 0, ErrInvalidLengthTx - } - iNdEx += length - case 3: - depth++ - case 4: - if depth == 0 { - return 0, ErrUnexpectedEndOfGroupTx - } - depth-- - case 5: - iNdEx += 4 - default: - return 0, fmt.Errorf("proto: illegal wireType %d", wireType) - } - if iNdEx < 0 { - return 0, ErrInvalidLengthTx - } - if depth == 0 { - return iNdEx, nil - } - } - return 0, io.ErrUnexpectedEOF -} - -var ( - ErrInvalidLengthTx = fmt.Errorf("proto: negative length found during unmarshaling") - ErrIntOverflowTx = fmt.Errorf("proto: integer overflow") - ErrUnexpectedEndOfGroupTx = fmt.Errorf("proto: unexpected end of group") -) diff --git a/x/rewards/abci.go b/x/rewards/abci.go index a0f00ae0a..9b6bc382b 100644 --- a/x/rewards/abci.go +++ b/x/rewards/abci.go @@ -1,6 +1,7 @@ package rewards import ( + utils "github.com/comdex-official/comdex/types" "github.com/comdex-official/comdex/x/rewards/keeper" "github.com/comdex-official/comdex/x/rewards/types" "github.com/cosmos/cosmos-sdk/telemetry" @@ -9,36 +10,38 @@ import ( ) func BeginBlocker(ctx sdk.Context, _ abci.RequestBeginBlock, k keeper.Keeper) { - defer telemetry.ModuleMeasureSince(types.ModuleName, ctx.BlockTime(), telemetry.MetricKeyBeginBlocker) - k.TriggerAndUpdateEpochInfos(ctx) - - err := k.IterateLocker(ctx) - if err != nil { - return - } - appIDsVault := k.GetAppIDs(ctx).WhitelistedAppMappingIdsVaults - for i, _ := range appIDsVault { - err := k.IterateVaults(ctx, appIDsVault[i]) + _ = utils.ApplyFuncIfNoError(ctx, func(ctx sdk.Context) error { + k.TriggerAndUpdateEpochInfos(ctx) + err := k.IterateLocker(ctx) if err != nil { - continue + ctx.Logger().Error("error in IterateLocker") } - } - err = k.DistributeExtRewardLocker(ctx) - if err != nil { - return - } - err = k.DistributeExtRewardVault(ctx) - if err != nil { - return - } + appIDsVault := k.GetAppIDs(ctx).WhitelistedAppMappingIdsVaults + for i, _ := range appIDsVault { + err := k.IterateVaults(ctx, appIDsVault[i]) + if err != nil { + continue + } + } + + err = k.DistributeExtRewardLocker(ctx) + if err != nil { + ctx.Logger().Error("error in DistributeExtRewardLocker") + } + err = k.DistributeExtRewardVault(ctx) + if err != nil { + ctx.Logger().Error("error in DistributeExtRewardVault") + } - err = k.SetLastInterestTime(ctx, ctx.BlockTime().Unix()) - if err != nil { - return - } + err = k.SetLastInterestTime(ctx, ctx.BlockTime().Unix()) + if err != nil { + ctx.Logger().Error("error in SetLastInterestTime") + } + return nil + }) } // EndBlocker for incentives module. diff --git a/x/rewards/client/cli/tx.go b/x/rewards/client/cli/tx.go index 9745a320f..9b4f48dac 100644 --- a/x/rewards/client/cli/tx.go +++ b/x/rewards/client/cli/tx.go @@ -110,6 +110,10 @@ func NewCreateGaugeCmd() *cobra.Command { msg.Kind = &gaugeExtraData } + if err = msg.ValidateBasic(); err != nil { + return err + } + return tx.GenerateOrBroadcastTxWithFactory(clientCtx, txf, msg) }, } diff --git a/x/rewards/expected/keeper.go b/x/rewards/expected/keeper.go index 050c56c41..6d5cb88ca 100644 --- a/x/rewards/expected/keeper.go +++ b/x/rewards/expected/keeper.go @@ -2,7 +2,7 @@ package expected import ( assettypes "github.com/comdex-official/comdex/x/asset/types" - collecortypes "github.com/comdex-official/comdex/x/collector/types" + collectortypes "github.com/comdex-official/comdex/x/collector/types" esmtypes "github.com/comdex-official/comdex/x/esm/types" liquiditytypes "github.com/comdex-official/comdex/x/liquidity/types" lockertypes "github.com/comdex-official/comdex/x/locker/types" @@ -48,13 +48,13 @@ type LockerKeeper interface { } type CollectorKeeper interface { - GetAppidToAssetCollectorMapping(ctx sdk.Context, appID uint64) (appAssetCollectorData collecortypes.AppIdToAssetCollectorMapping, found bool) - GetCollectorLookupTable(ctx sdk.Context, appID uint64) (collectorLookup collecortypes.CollectorLookup, found bool) - GetAppToDenomsMapping(ctx sdk.Context, appID uint64) (appToDenom collecortypes.AppToDenomsMapping, found bool) - GetCollectorLookupByAsset(ctx sdk.Context, appID, assetID uint64) (collectorLookup collecortypes.CollectorLookupTable, found bool) - GetNetFeeCollectedData(ctx sdk.Context, appID uint64) (netFeeData collecortypes.NetFeeCollectedData, found bool) + GetAppidToAssetCollectorMapping(ctx sdk.Context, appID uint64) (appAssetCollectorData collectortypes.AppIdToAssetCollectorMapping, found bool) + GetCollectorLookupTable(ctx sdk.Context, appID uint64) (collectorLookup collectortypes.CollectorLookup, found bool) + GetAppToDenomsMapping(ctx sdk.Context, appID uint64) (appToDenom collectortypes.AppToDenomsMapping, found bool) + GetCollectorLookupByAsset(ctx sdk.Context, appID, assetID uint64) (collectorLookup collectortypes.CollectorLookupTable, found bool) + GetNetFeeCollectedData(ctx sdk.Context, appID uint64) (netFeeData collectortypes.NetFeeCollectedData, found bool) SetNetFeeCollectedData(ctx sdk.Context, appID, assetID uint64, fee sdk.Int) error - DecreaseNetFeeCollectedData(ctx sdk.Context, appID, assetID uint64, amount sdk.Int) error + DecreaseNetFeeCollectedData(ctx sdk.Context, appID, assetID uint64, amount sdk.Int, netFeeCollectedData collectortypes.NetFeeCollectedData) error } type VaultKeeper interface { @@ -63,8 +63,8 @@ type VaultKeeper interface { GetVault(ctx sdk.Context, id string) (vault vaulttypes.Vault, found bool) DeleteVault(ctx sdk.Context, id string) UpdateAppExtendedPairVaultMappingDataOnMsgCreate(ctx sdk.Context, counter uint64, vaultData vaulttypes.Vault) - UpdateCollateralLockedAmountLockerMapping(ctx sdk.Context, valutLookupData vaulttypes.AppExtendedPairVaultMapping, extendedPairID uint64, amount sdk.Int, changeType bool) - UpdateTokenMintedAmountLockerMapping(ctx sdk.Context, valutLookupData vaulttypes.AppExtendedPairVaultMapping, extendedPairID uint64, amount sdk.Int, changeType bool) + UpdateCollateralLockedAmountLockerMapping(ctx sdk.Context, vaultLookupData vaulttypes.AppExtendedPairVaultMapping, extendedPairID uint64, amount sdk.Int, changeType bool) + UpdateTokenMintedAmountLockerMapping(ctx sdk.Context, vaultLookupData vaulttypes.AppExtendedPairVaultMapping, extendedPairID uint64, amount sdk.Int, changeType bool) UpdateUserVaultExtendedPairMapping(ctx sdk.Context, extendedPairID uint64, userAddress string, appMappingID uint64) DeleteAddressFromAppExtendedPairVaultMapping(ctx sdk.Context, extendedPairID uint64, userVaultID string, appMappingID uint64) SetVault(ctx sdk.Context, vault vaulttypes.Vault) diff --git a/x/rewards/handler.go b/x/rewards/handler.go index 5b439c0a4..0186fe60a 100644 --- a/x/rewards/handler.go +++ b/x/rewards/handler.go @@ -19,21 +19,6 @@ func NewHandler(k keeper.Keeper) sdk.Handler { case *types.MsgCreateGauge: res, err := server.CreateGauge(sdk.WrapSDKContext(ctx), msg) return sdk.WrapServiceResult(ctx, res, err) - case *types.WhitelistAsset: - res, err := server.Whitelist(sdk.WrapSDKContext(ctx), msg) - return sdk.WrapServiceResult(ctx, res, err) - - case *types.RemoveWhitelistAsset: - res, err := server.RemoveWhitelist(sdk.WrapSDKContext(ctx), msg) - return sdk.WrapServiceResult(ctx, res, err) - - case *types.WhitelistAppIdVault: - res, err := server.WhitelistAppVault(sdk.WrapSDKContext(ctx), msg) - return sdk.WrapServiceResult(ctx, res, err) - - case *types.RemoveWhitelistAppIdVault: - res, err := server.RemoveWhitelistAppVault(sdk.WrapSDKContext(ctx), msg) - return sdk.WrapServiceResult(ctx, res, err) case *types.ActivateExternalRewardsLockers: res, err := server.ExternalRewardsLockers(sdk.WrapSDKContext(ctx), msg) diff --git a/x/rewards/keeper/alias.go b/x/rewards/keeper/alias.go index f9d5ed9ef..be311de9a 100644 --- a/x/rewards/keeper/alias.go +++ b/x/rewards/keeper/alias.go @@ -2,9 +2,10 @@ package keeper import ( assettypes "github.com/comdex-official/comdex/x/asset/types" - collecortypes "github.com/comdex-official/comdex/x/collector/types" + collectortypes "github.com/comdex-official/comdex/x/collector/types" esmtypes "github.com/comdex-official/comdex/x/esm/types" "github.com/comdex-official/comdex/x/locker/types" + rewardstypes "github.com/comdex-official/comdex/x/rewards/types" vaulttypes "github.com/comdex-official/comdex/x/vault/types" sdk "github.com/cosmos/cosmos-sdk/types" ) @@ -13,15 +14,15 @@ func (k Keeper) GetLockerProductAssetMapping(ctx sdk.Context, appMappingID uint6 return k.locker.GetLockerProductAssetMapping(ctx, appMappingID) } -func (k Keeper) GetAppidToAssetCollectorMapping(ctx sdk.Context, appID uint64) (appAssetCollectorData collecortypes.AppIdToAssetCollectorMapping, found bool) { +func (k Keeper) GetAppidToAssetCollectorMapping(ctx sdk.Context, appID uint64) (appAssetCollectorData collectortypes.AppIdToAssetCollectorMapping, found bool) { return k.collector.GetAppidToAssetCollectorMapping(ctx, appID) } -func (k Keeper) GetCollectorLookupTable(ctx sdk.Context, appID uint64) (collectorLookup collecortypes.CollectorLookup, found bool) { +func (k Keeper) GetCollectorLookupTable(ctx sdk.Context, appID uint64) (collectorLookup collectortypes.CollectorLookup, found bool) { return k.collector.GetCollectorLookupTable(ctx, appID) } -func (k Keeper) GetAppToDenomsMapping(ctx sdk.Context, appID uint64) (appToDenom collecortypes.AppToDenomsMapping, found bool) { +func (k Keeper) GetAppToDenomsMapping(ctx sdk.Context, appID uint64) (appToDenom collectortypes.AppToDenomsMapping, found bool) { return k.collector.GetAppToDenomsMapping(ctx, appID) } @@ -37,7 +38,7 @@ func (k Keeper) GetLockerLookupTable(ctx sdk.Context, appMappingID uint64) (lock return k.locker.GetLockerLookupTable(ctx, appMappingID) } -func (k Keeper) GetCollectorLookupByAsset(ctx sdk.Context, appID, assetID uint64) (collectorLookup collecortypes.CollectorLookupTable, found bool) { +func (k Keeper) GetCollectorLookupByAsset(ctx sdk.Context, appID, assetID uint64) (collectorLookup collectortypes.CollectorLookupTable, found bool) { return k.collector.GetCollectorLookupByAsset(ctx, appID, assetID) } @@ -45,114 +46,114 @@ func (k Keeper) UpdateLocker(ctx sdk.Context, locker types.Locker) { k.locker.UpdateLocker(ctx, locker) } -func (k *Keeper) GetAppExtendedPairVaultMapping(ctx sdk.Context, appMappingID uint64) (appExtendedPairVaultData vaulttypes.AppExtendedPairVaultMapping, found bool) { +func (k Keeper) GetAppExtendedPairVaultMapping(ctx sdk.Context, appMappingID uint64) (appExtendedPairVaultData vaulttypes.AppExtendedPairVaultMapping, found bool) { return k.vault.GetAppExtendedPairVaultMapping(ctx, appMappingID) } -func (k *Keeper) CalculateCollaterlizationRatio(ctx sdk.Context, extendedPairVaultID uint64, amountIn sdk.Int, amountOut sdk.Int) (sdk.Dec, error) { +func (k Keeper) CalculateCollaterlizationRatio(ctx sdk.Context, extendedPairVaultID uint64, amountIn sdk.Int, amountOut sdk.Int) (sdk.Dec, error) { return k.vault.CalculateCollaterlizationRatio(ctx, extendedPairVaultID, amountIn, amountOut) } -func (k *Keeper) GetAsset(ctx sdk.Context, id uint64) (assettypes.Asset, bool) { +func (k Keeper) GetAsset(ctx sdk.Context, id uint64) (assettypes.Asset, bool) { return k.asset.GetAsset(ctx, id) } -func (k *Keeper) GetVault(ctx sdk.Context, id string) (vault vaulttypes.Vault, found bool) { +func (k Keeper) GetVault(ctx sdk.Context, id string) (vault vaulttypes.Vault, found bool) { return k.vault.GetVault(ctx, id) } -func (k *Keeper) DeleteVault(ctx sdk.Context, id string) { +func (k Keeper) DeleteVault(ctx sdk.Context, id string) { k.vault.DeleteVault(ctx, id) } -func (k *Keeper) UpdateAppExtendedPairVaultMappingDataOnMsgCreate(ctx sdk.Context, counter uint64, vaultData vaulttypes.Vault) { +func (k Keeper) UpdateAppExtendedPairVaultMappingDataOnMsgCreate(ctx sdk.Context, counter uint64, vaultData vaulttypes.Vault) { k.vault.UpdateAppExtendedPairVaultMappingDataOnMsgCreate(ctx, counter, vaultData) } -func (k *Keeper) UpdateCollateralLockedAmountLockerMapping(ctx sdk.Context, valutLookupData vaulttypes.AppExtendedPairVaultMapping, extendedPairID uint64, amount sdk.Int, changeType bool) { - k.vault.UpdateCollateralLockedAmountLockerMapping(ctx, valutLookupData, extendedPairID, amount, changeType) +func (k Keeper) UpdateCollateralLockedAmountLockerMapping(ctx sdk.Context, vaultLookupData vaulttypes.AppExtendedPairVaultMapping, extendedPairID uint64, amount sdk.Int, changeType bool) { + k.vault.UpdateCollateralLockedAmountLockerMapping(ctx, vaultLookupData, extendedPairID, amount, changeType) } -func (k *Keeper) UpdateUserVaultExtendedPairMapping(ctx sdk.Context, extendedPairID uint64, userAddress string, appMappingID uint64) { +func (k Keeper) UpdateUserVaultExtendedPairMapping(ctx sdk.Context, extendedPairID uint64, userAddress string, appMappingID uint64) { k.vault.UpdateUserVaultExtendedPairMapping(ctx, extendedPairID, userAddress, appMappingID) } -func (k *Keeper) DeleteAddressFromAppExtendedPairVaultMapping(ctx sdk.Context, extendedPairID uint64, userVaultID string, appMappingID uint64) { +func (k Keeper) DeleteAddressFromAppExtendedPairVaultMapping(ctx sdk.Context, extendedPairID uint64, userVaultID string, appMappingID uint64) { k.vault.DeleteAddressFromAppExtendedPairVaultMapping(ctx, extendedPairID, userVaultID, appMappingID) } -func (k *Keeper) GetPairsVault(ctx sdk.Context, id uint64) (pairs assettypes.ExtendedPairVault, found bool) { +func (k Keeper) GetPairsVault(ctx sdk.Context, id uint64) (pairs assettypes.ExtendedPairVault, found bool) { return k.asset.GetPairsVault(ctx, id) } -func (k *Keeper) SetVault(ctx sdk.Context, vault vaulttypes.Vault) { +func (k Keeper) SetVault(ctx sdk.Context, vault vaulttypes.Vault) { k.vault.SetVault(ctx, vault) } -func (k *Keeper) BurnCoin(ctx sdk.Context, name string, coin sdk.Coin) error { +func (k Keeper) BurnCoin(ctx sdk.Context, name string, coin sdk.Coin) error { if coin.IsZero() { - return nil + return rewardstypes.BurnCoinValueInRewardsIsZero } return k.bank.BurnCoins(ctx, name, sdk.NewCoins(coin)) } -func (k *Keeper) MintCoin(ctx sdk.Context, name string, coin sdk.Coin) error { +func (k Keeper) MintCoin(ctx sdk.Context, name string, coin sdk.Coin) error { if coin.IsZero() { - return nil + return rewardstypes.MintCoinValueInRewardsIsZero } return k.bank.MintCoins(ctx, name, sdk.NewCoins(coin)) } -func (k *Keeper) SendCoinFromAccountToModule(ctx sdk.Context, address sdk.AccAddress, name string, coin sdk.Coin) error { +func (k Keeper) SendCoinFromAccountToModule(ctx sdk.Context, address sdk.AccAddress, name string, coin sdk.Coin) error { if coin.IsZero() { - return nil + return rewardstypes.SendCoinsFromAccountToModuleInRewardsIsZero } return k.bank.SendCoinsFromAccountToModule(ctx, address, name, sdk.NewCoins(coin)) } -func (k *Keeper) SendCoinFromModuleToAccount(ctx sdk.Context, name string, address sdk.AccAddress, coin sdk.Coin) error { +func (k Keeper) SendCoinFromModuleToAccount(ctx sdk.Context, name string, address sdk.AccAddress, coin sdk.Coin) error { if coin.IsZero() { - return nil + return rewardstypes.SendCoinsFromModuleToAccountInRewardsIsZero } return k.bank.SendCoinsFromModuleToAccount(ctx, name, address, sdk.NewCoins(coin)) } -func (k *Keeper) SendCoinFromModuleToModule(ctx sdk.Context, senderModule, recipientModule string, coin sdk.Coins) error { +func (k Keeper) SendCoinFromModuleToModule(ctx sdk.Context, senderModule, recipientModule string, coin sdk.Coins) error { if coin.IsZero() { - return nil + return rewardstypes.SendCoinsFromModuleToModuleInRewardsIsZero } return k.bank.SendCoinsFromModuleToModule(ctx, senderModule, recipientModule, coin) } -func (k *Keeper) SpendableCoins(ctx sdk.Context, address sdk.AccAddress) sdk.Coins { +func (k Keeper) SpendableCoins(ctx sdk.Context, address sdk.AccAddress) sdk.Coins { return k.bank.SpendableCoins(ctx, address) } -func (k *Keeper) GetNetFeeCollectedData(ctx sdk.Context, appID uint64) (netFeeData collecortypes.NetFeeCollectedData, found bool) { +func (k Keeper) GetNetFeeCollectedData(ctx sdk.Context, appID uint64) (netFeeData collectortypes.NetFeeCollectedData, found bool) { return k.collector.GetNetFeeCollectedData(ctx, appID) } -func (k *Keeper) SetNetFeeCollectedData(ctx sdk.Context, appID, assetID uint64, fee sdk.Int) error { +func (k Keeper) SetNetFeeCollectedData(ctx sdk.Context, appID, assetID uint64, fee sdk.Int) error { return k.collector.SetNetFeeCollectedData(ctx, appID, assetID, fee) } -func (k *Keeper) DecreaseNetFeeCollectedData(ctx sdk.Context, appID, assetID uint64, fee sdk.Int) error { - return k.collector.DecreaseNetFeeCollectedData(ctx, appID, assetID, fee) +func (k Keeper) DecreaseNetFeeCollectedData(ctx sdk.Context, appID, assetID uint64, fee sdk.Int, netFeeCollectedData collectortypes.NetFeeCollectedData) error { + return k.collector.DecreaseNetFeeCollectedData(ctx, appID, assetID, fee, netFeeCollectedData) } -func (k *Keeper) SetLockerTotalRewardsByAssetAppWise(ctx sdk.Context, lockerRewardsMapping types.LockerTotalRewardsByAssetAppWise) error { +func (k Keeper) SetLockerTotalRewardsByAssetAppWise(ctx sdk.Context, lockerRewardsMapping types.LockerTotalRewardsByAssetAppWise) error { return k.locker.SetLockerTotalRewardsByAssetAppWise(ctx, lockerRewardsMapping) } -func (k *Keeper) GetLockerTotalRewardsByAssetAppWise(ctx sdk.Context, appID, assetID uint64) (lockerRewardsMapping types.LockerTotalRewardsByAssetAppWise, found bool) { +func (k Keeper) GetLockerTotalRewardsByAssetAppWise(ctx sdk.Context, appID, assetID uint64) (lockerRewardsMapping types.LockerTotalRewardsByAssetAppWise, found bool) { return k.locker.GetLockerTotalRewardsByAssetAppWise(ctx, appID, assetID) } -func (k *Keeper) GetKillSwitchData(ctx sdk.Context, app_id uint64) (esmtypes.KillSwitchParams, bool) { +func (k Keeper) GetKillSwitchData(ctx sdk.Context, app_id uint64) (esmtypes.KillSwitchParams, bool) { return k.esm.GetKillSwitchData(ctx, app_id) } -func (k *Keeper) GetESMStatus(ctx sdk.Context, id uint64) (esmtypes.ESMStatus, bool) { +func (k Keeper) GetESMStatus(ctx sdk.Context, id uint64) (esmtypes.ESMStatus, bool) { return k.esm.GetESMStatus(ctx, id) } diff --git a/x/rewards/keeper/epochs.go b/x/rewards/keeper/epochs.go index b29f67d98..474f0872c 100644 --- a/x/rewards/keeper/epochs.go +++ b/x/rewards/keeper/epochs.go @@ -37,16 +37,8 @@ func (k Keeper) TriggerAndUpdateEpochInfos(ctx sdk.Context) { // In case of chain halt/stop if epoch.CurrentEpochStartTime.Add(epoch.Duration * 2).Before(ctx.BlockTime()) { - missedEpochs := 2 - for { - if epoch.CurrentEpochStartTime.Add(epoch.Duration * time.Duration(missedEpochs)).Before(ctx.BlockTime()) { - missedEpochs++ - } else { - epoch.CurrentEpochStartTime = epoch.CurrentEpochStartTime.Add(epoch.Duration * time.Duration(missedEpochs-1)) - break - } - } - + missedEpochs := (ctx.BlockTime().Sub(epoch.CurrentEpochStartTime)) / epoch.Duration + epoch.CurrentEpochStartTime = epoch.CurrentEpochStartTime.Add(epoch.Duration * missedEpochs) k.SetEpochInfoByDuration(ctx, epoch) continue } diff --git a/x/rewards/keeper/gauge.go b/x/rewards/keeper/gauge.go index 05362c9da..0cced9361 100644 --- a/x/rewards/keeper/gauge.go +++ b/x/rewards/keeper/gauge.go @@ -10,7 +10,7 @@ import ( ) // ValidateMsgCreateCreateGauge validates types.MsgCreateGauge. -func (k Keeper) ValidateMsgCreateCreateGauge(ctx sdk.Context, msg *types.MsgCreateGauge) error { +func (k Keeper) ValidateMsgCreateGauge(ctx sdk.Context, msg *types.MsgCreateGauge) error { isValidGaugeTypeID := false for _, gaugeTypeID := range types.ValidGaugeTypeIds { if gaugeTypeID == msg.GaugeTypeId { diff --git a/x/rewards/keeper/grpc_query.go b/x/rewards/keeper/grpc_query.go index b5fffde9b..a0e3d99b7 100644 --- a/x/rewards/keeper/grpc_query.go +++ b/x/rewards/keeper/grpc_query.go @@ -15,7 +15,7 @@ import ( var _ types.QueryServer = &Keeper{} // Params queries the parameters of the incentives module. -func (k *Keeper) Params(c context.Context, _ *types.QueryParamsRequest) (*types.QueryParamsResponse, error) { +func (k Keeper) Params(c context.Context, _ *types.QueryParamsRequest) (*types.QueryParamsResponse, error) { ctx := sdk.UnwrapSDKContext(c) var params types.Params k.paramstore.GetParamSet(ctx, ¶ms) @@ -23,7 +23,7 @@ func (k *Keeper) Params(c context.Context, _ *types.QueryParamsRequest) (*types. } // QueryEpochInfoByDuration queries the epoch info for the given duration of seconds. -func (k *Keeper) QueryEpochInfoByDuration(c context.Context, req *types.QueryEpochInfoByDurationRequest) (*types.QueryEpochInfoByDurationResponse, error) { +func (k Keeper) QueryEpochInfoByDuration(c context.Context, req *types.QueryEpochInfoByDurationRequest) (*types.QueryEpochInfoByDurationResponse, error) { if req == nil { return nil, status.Error(codes.InvalidArgument, "request cannot be empty") } @@ -41,7 +41,7 @@ func (k *Keeper) QueryEpochInfoByDuration(c context.Context, req *types.QueryEpo } // QueryAllEpochsInfo queries all the epochs available. -func (k *Keeper) QueryAllEpochsInfo(c context.Context, req *types.QueryAllEpochsInfoRequest) (*types.QueryAllEpochsInfoResponse, error) { +func (k Keeper) QueryAllEpochsInfo(c context.Context, req *types.QueryAllEpochsInfoRequest) (*types.QueryAllEpochsInfoResponse, error) { if req == nil { return nil, status.Error(codes.InvalidArgument, "request cannot be empty") } @@ -79,7 +79,7 @@ func (k *Keeper) QueryAllEpochsInfo(c context.Context, req *types.QueryAllEpochs } // QueryAllGauges queries all the gauges available. -func (k *Keeper) QueryAllGauges(c context.Context, req *types.QueryAllGaugesRequest) (*types.QueryAllGaugesResponse, error) { +func (k Keeper) QueryAllGauges(c context.Context, req *types.QueryAllGaugesRequest) (*types.QueryAllGaugesResponse, error) { if req == nil { return nil, status.Error(codes.InvalidArgument, "request cannot be empty") } @@ -117,7 +117,7 @@ func (k *Keeper) QueryAllGauges(c context.Context, req *types.QueryAllGaugesRequ } // QueryGaugeByID queries a gauge by specific ID. -func (k *Keeper) QueryGaugeByID(c context.Context, req *types.QueryGaugeByIdRequest) (*types.QueryGaugeByIdResponse, error) { +func (k Keeper) QueryGaugeByID(c context.Context, req *types.QueryGaugeByIdRequest) (*types.QueryGaugeByIdResponse, error) { if req == nil { return nil, status.Error(codes.InvalidArgument, "request cannot be empty") } @@ -135,7 +135,7 @@ func (k *Keeper) QueryGaugeByID(c context.Context, req *types.QueryGaugeByIdRequ } // QueryGaugeByDuration queries gauges for the given duration. -func (k *Keeper) QueryGaugeByDuration(c context.Context, req *types.QueryGaugesByDurationRequest) (*types.QueryGaugeByDurationResponse, error) { +func (k Keeper) QueryGaugeByDuration(c context.Context, req *types.QueryGaugesByDurationRequest) (*types.QueryGaugeByDurationResponse, error) { if req == nil { return nil, status.Error(codes.InvalidArgument, "request cannot be empty") } @@ -162,7 +162,7 @@ func (k *Keeper) QueryGaugeByDuration(c context.Context, req *types.QueryGaugesB }, nil } -func (k *Keeper) QueryRewards(c context.Context, req *types.QueryRewardsRequest) (*types.QueryRewardsResponse, error) { +func (k Keeper) QueryRewards(c context.Context, req *types.QueryRewardsRequest) (*types.QueryRewardsResponse, error) { if req == nil { return nil, status.Error(codes.InvalidArgument, "request cannot be empty") } @@ -199,7 +199,7 @@ func (k *Keeper) QueryRewards(c context.Context, req *types.QueryRewardsRequest) }, nil } -func (k *Keeper) QueryReward(c context.Context, req *types.QueryRewardRequest) (*types.QueryRewardResponse, error) { +func (k Keeper) QueryReward(c context.Context, req *types.QueryRewardRequest) (*types.QueryRewardResponse, error) { if req == nil { return nil, status.Error(codes.InvalidArgument, "request cannot be empty") } @@ -218,7 +218,7 @@ func (k *Keeper) QueryReward(c context.Context, req *types.QueryRewardRequest) ( }, nil } -func (k *Keeper) QueryExternalRewardsLockers(c context.Context, req *types.QueryExternalRewardsLockersRequest) (*types.QueryExternalRewardsLockersResponse, error) { +func (k Keeper) QueryExternalRewardsLockers(c context.Context, req *types.QueryExternalRewardsLockersRequest) (*types.QueryExternalRewardsLockersResponse, error) { if req == nil { return nil, status.Error(codes.InvalidArgument, "request cannot be empty") } @@ -234,7 +234,7 @@ func (k *Keeper) QueryExternalRewardsLockers(c context.Context, req *types.Query }, nil } -func (k *Keeper) QueryExternalRewardVaults(c context.Context, req *types.QueryExternalRewardVaultsRequest) (*types.QueryExternalRewardVaultsResponse, error) { +func (k Keeper) QueryExternalRewardVaults(c context.Context, req *types.QueryExternalRewardVaultsRequest) (*types.QueryExternalRewardVaultsResponse, error) { if req == nil { return nil, status.Error(codes.InvalidArgument, "request cannot be empty") } @@ -250,7 +250,7 @@ func (k *Keeper) QueryExternalRewardVaults(c context.Context, req *types.QueryEx }, nil } -func (k *Keeper) QueryWhitelistedAppIdsVault(c context.Context, req *types.QueryWhitelistedAppIdsVaultRequest) (*types.QueryWhitelistedAppIdsVaultResponse, error) { +func (k Keeper) QueryWhitelistedAppIdsVault(c context.Context, req *types.QueryWhitelistedAppIdsVaultRequest) (*types.QueryWhitelistedAppIdsVaultResponse, error) { if req == nil { return nil, status.Error(codes.InvalidArgument, "request cannot be empty") } diff --git a/x/rewards/keeper/interest.go b/x/rewards/keeper/interest.go index 63f64b8b1..0a98fc006 100644 --- a/x/rewards/keeper/interest.go +++ b/x/rewards/keeper/interest.go @@ -6,7 +6,7 @@ import ( gogotypes "github.com/gogo/protobuf/types" ) -func (k *Keeper) SetLastInterestTime(ctx sdk.Context, interestTime int64) error { +func (k Keeper) SetLastInterestTime(ctx sdk.Context, interestTime int64) error { store := ctx.KVStore(k.storeKey) timeKey := types.CreateLastInterestTimeKey() diff --git a/x/rewards/keeper/iter.go b/x/rewards/keeper/iter.go index 80c3e2005..a6b113e1a 100644 --- a/x/rewards/keeper/iter.go +++ b/x/rewards/keeper/iter.go @@ -70,9 +70,7 @@ func (k Keeper) IterateLocker(ctx sdk.Context) error { for _, p := range netFeeCollectedData.AssetIdToFeeCollected { if p.AssetId == locker.AssetDepositId { asset, _ := k.GetAsset(ctx, p.AssetId) - //updatedNetFee := p.NetFeesCollected.Sub(rewards) - //err := k.SetNetFeeCollectedData(ctx, locker.AppMappingId, locker.AssetDepositId, updatedNetFee) - err := k.DecreaseNetFeeCollectedData(ctx, locker.AppId, locker.AssetDepositId, rewards) + err := k.DecreaseNetFeeCollectedData(ctx, locker.AppId, locker.AssetDepositId, rewards, netFeeCollectedData) if err != nil { return err } diff --git a/x/rewards/keeper/keeper.go b/x/rewards/keeper/keeper.go index ca06e59e1..418faf7ba 100644 --- a/x/rewards/keeper/keeper.go +++ b/x/rewards/keeper/keeper.go @@ -4,6 +4,7 @@ import ( "fmt" "time" + esmtypes "github.com/comdex-official/comdex/x/esm/types" "github.com/comdex-official/comdex/x/rewards/expected" "github.com/tendermint/tendermint/libs/log" @@ -45,13 +46,13 @@ func NewKeeper( marketKeeper expected.MarketKeeper, esm expected.EsmKeeper, -) *Keeper { +) Keeper { // set KeyTable if it has not already been set if !ps.HasKeyTable() { ps = ps.WithKeyTable(types.ParamKeyTable()) } - return &Keeper{ + return Keeper{ cdc: cdc, storeKey: storeKey, @@ -81,7 +82,7 @@ func uint64InSlice(a uint64, list []uint64) bool { return false } -func (k Keeper) WhitelistAsset(ctx sdk.Context, appMappingID uint64, assetIDs []uint64) error { +func (k Keeper) WhitelistAsset(ctx sdk.Context, appMappingID uint64, assetIDs []uint64, isInsert bool) error { lockerAssets, _ := k.locker.GetLockerProductAssetMapping(ctx, appMappingID) for i := range assetIDs { found := uint64InSlice(assetIDs[i], lockerAssets.AssetIds) @@ -90,32 +91,27 @@ func (k Keeper) WhitelistAsset(ctx sdk.Context, appMappingID uint64, assetIDs [] } } - internalRewards := types.InternalRewards{ - App_mapping_ID: appMappingID, - Asset_ID: assetIDs, - } - - k.SetReward(ctx, internalRewards) - return nil -} - -func (k Keeper) RemoveWhitelistAsset(ctx sdk.Context, appMappingID uint64, assetID uint64) error { - rewards, found := k.GetReward(ctx, appMappingID) - if !found { - return nil - } - var newAssetIDs []uint64 - for i := range rewards.Asset_ID { - if assetID != rewards.Asset_ID[i] { - newAssetID := rewards.Asset_ID[i] - newAssetIDs = append(newAssetIDs, newAssetID) + for _, assetID := range assetIDs { + internalReward, found := k.GetReward(ctx, appMappingID) + if !found && isInsert { + internalReward = types.InternalRewards{ + App_mapping_ID: appMappingID, + Asset_ID: nil, + } + } else if internalReward.Asset_ID != nil && !isInsert { + return types.ErrInternalRewardsNotFound } + if isInsert { + internalReward.Asset_ID = append(internalReward.Asset_ID, assetID) + } else { + for index, id := range internalReward.Asset_ID { + if id == assetID { + internalReward.Asset_ID = append(internalReward.Asset_ID[:index], internalReward.Asset_ID[index+1:]...) + } + } + } + k.SetReward(ctx, internalReward) } - newRewards := types.InternalRewards{ - App_mapping_ID: appMappingID, - Asset_ID: newAssetIDs, - } - k.SetReward(ctx, newRewards) return nil } @@ -132,28 +128,7 @@ func (k Keeper) WhitelistAppIDVault(ctx sdk.Context, appMappingID uint64) error return nil } -func (k Keeper) RemoveWhitelistAppIDVault(ctx sdk.Context, appMappingID uint64) error { - WhitelistedAppIds := k.GetAppIDs(ctx).WhitelistedAppMappingIdsVaults - found := uint64InSlice(appMappingID, k.GetAppIDs(ctx).WhitelistedAppMappingIdsVaults) - if !found { - return types.ErrAppIDDoesNotExists - } - var newAppIds []uint64 - for i := range WhitelistedAppIds { - if appMappingID != WhitelistedAppIds[i] { - newAppID := WhitelistedAppIds[i] - newAppIds = append(newAppIds, newAppID) - } - } - UpdatedWhitelistedAppIds := types.WhitelistedAppIdsVault{ - WhitelistedAppMappingIdsVaults: newAppIds, - } - - k.SetAppID(ctx, UpdatedWhitelistedAppIds) - return nil -} - -func (k *Keeper) Store(ctx sdk.Context) sdk.KVStore { +func (k Keeper) Store(ctx sdk.Context) sdk.KVStore { return ctx.KVStore(k.storeKey) } @@ -184,7 +159,7 @@ func (k Keeper) ActExternalRewardsLockers( } } - endTime := ctx.BlockTime().Add(time.Second * time.Duration(durationDays*86400)) + endTime := ctx.BlockTime().Add(time.Second * time.Duration(durationDays*types.SecondsPerDay)) epochID := k.GetEpochTimeID(ctx) epoch := types.EpochTime{ @@ -239,13 +214,13 @@ func (k Keeper) ActExternalRewardsVaults( } } - endTime := ctx.BlockTime().Add(time.Second * time.Duration(durationDays*86400)) + endTime := ctx.BlockTime().Add(time.Second * time.Duration(durationDays*types.SecondsPerDay)) epochID := k.GetEpochTimeID(ctx) epoch := types.EpochTime{ Id: epochID + 1, AppMappingId: appMappingID, - StartingTime: ctx.BlockTime().Unix() + 84600, + StartingTime: ctx.BlockTime().Unix() + types.SecondsPerDay, } msg := types.VaultExternalRewards{ @@ -277,6 +252,20 @@ func (k Keeper) ActExternalRewardsVaults( //Wasm tx and query binding functions func (k Keeper) WasmRemoveWhitelistAssetLocker(ctx sdk.Context, appMappingID uint64, assetID uint64) error { + + klwsParams, _ := k.GetKillSwitchData(ctx, appMappingID) + if klwsParams.BreakerEnable { + return esmtypes.ErrCircuitBreakerEnabled + } + esmStatus, found := k.GetESMStatus(ctx, appMappingID) + status := false + if found { + status = esmStatus.Status + } + if status { + return esmtypes.ErrESMAlreadyExecuted + } + rewards, _ := k.GetReward(ctx, appMappingID) var newAssetIDs []uint64 @@ -308,6 +297,20 @@ func (k Keeper) WasmRemoveWhitelistAssetLockerQuery(ctx sdk.Context, appMappingI } func (k Keeper) WasmRemoveWhitelistAppIDVaultInterest(ctx sdk.Context, appMappingID uint64) error { + + klwsParams, _ := k.GetKillSwitchData(ctx, appMappingID) + if klwsParams.BreakerEnable { + return esmtypes.ErrCircuitBreakerEnabled + } + esmStatus, found := k.GetESMStatus(ctx, appMappingID) + status := false + if found { + status = esmStatus.Status + } + if status { + return esmtypes.ErrESMAlreadyExecuted + } + WhitelistedAppIds := k.GetAppIDs(ctx).WhitelistedAppMappingIdsVaults var newAppIDs []uint64 diff --git a/x/rewards/keeper/msg_server.go b/x/rewards/keeper/msg_server.go index d5cf2b32d..858cc2d30 100644 --- a/x/rewards/keeper/msg_server.go +++ b/x/rewards/keeper/msg_server.go @@ -23,7 +23,7 @@ var _ types.MsgServer = msgServer{} func (m msgServer) CreateGauge(goCtx context.Context, msg *types.MsgCreateGauge) (*types.MsgCreateGaugeResponse, error) { ctx := sdk.UnwrapSDKContext(goCtx) - err := m.Keeper.ValidateMsgCreateCreateGauge(ctx, msg) + err := m.Keeper.ValidateMsgCreateGauge(ctx, msg) if err != nil { return nil, err } @@ -36,87 +36,6 @@ func (m msgServer) CreateGauge(goCtx context.Context, msg *types.MsgCreateGauge) return &types.MsgCreateGaugeResponse{}, nil } -func (m msgServer) Whitelist(goCtx context.Context, msg *types.WhitelistAsset) (*types.MsgWhitelistAssetResponse, error) { - ctx := sdk.UnwrapSDKContext(goCtx) - klwsParams, _ := m.GetKillSwitchData(ctx, msg.AppMappingId) - if klwsParams.BreakerEnable { - return nil, esmtypes.ErrCircuitBreakerEnabled - } - esmStatus, found := m.GetESMStatus(ctx, msg.AppMappingId) - status := false - if found { - status = esmStatus.Status - } - if status { - return nil, esmtypes.ErrESMAlreadyExecuted - } - - if err := m.Keeper.WhitelistAsset(ctx, msg.AppMappingId, msg.AssetId); err != nil { - return nil, err - } - return &types.MsgWhitelistAssetResponse{}, nil -} - -func (m msgServer) RemoveWhitelist(goCtx context.Context, msg *types.RemoveWhitelistAsset) (*types.MsgRemoveWhitelistAssetResponse, error) { - ctx := sdk.UnwrapSDKContext(goCtx) - klwsParams, _ := m.GetKillSwitchData(ctx, msg.AppMappingId) - if klwsParams.BreakerEnable { - return nil, esmtypes.ErrCircuitBreakerEnabled - } - esmStatus, found := m.GetESMStatus(ctx, msg.AppMappingId) - status := false - if found { - status = esmStatus.Status - } - if status { - return nil, esmtypes.ErrESMAlreadyExecuted - } - if err := m.Keeper.RemoveWhitelistAsset(ctx, msg.AppMappingId, msg.AssetId); err != nil { - return nil, err - } - return &types.MsgRemoveWhitelistAssetResponse{}, nil -} - -func (m msgServer) WhitelistAppVault(goCtx context.Context, msg *types.WhitelistAppIdVault) (*types.MsgWhitelistAppIdVaultResponse, error) { - ctx := sdk.UnwrapSDKContext(goCtx) - klwsParams, _ := m.GetKillSwitchData(ctx, msg.AppMappingId) - if klwsParams.BreakerEnable { - return nil, esmtypes.ErrCircuitBreakerEnabled - } - esmStatus, found := m.GetESMStatus(ctx, msg.AppMappingId) - status := false - if found { - status = esmStatus.Status - } - if status { - return nil, esmtypes.ErrESMAlreadyExecuted - } - if err := m.Keeper.WhitelistAppIDVault(ctx, msg.AppMappingId); err != nil { - return nil, err - } - return &types.MsgWhitelistAppIdVaultResponse{}, nil -} - -func (m msgServer) RemoveWhitelistAppVault(goCtx context.Context, msg *types.RemoveWhitelistAppIdVault) (*types.MsgRemoveWhitelistAppIdVaultResponse, error) { - ctx := sdk.UnwrapSDKContext(goCtx) - klwsParams, _ := m.GetKillSwitchData(ctx, msg.AppMappingId) - if klwsParams.BreakerEnable { - return nil, esmtypes.ErrCircuitBreakerEnabled - } - esmStatus, found := m.GetESMStatus(ctx, msg.AppMappingId) - status := false - if found { - status = esmStatus.Status - } - if status { - return nil, esmtypes.ErrESMAlreadyExecuted - } - if err := m.Keeper.RemoveWhitelistAppIDVault(ctx, msg.AppMappingId); err != nil { - return nil, err - } - return &types.MsgRemoveWhitelistAppIdVaultResponse{}, nil -} - func (m msgServer) ExternalRewardsLockers(goCtx context.Context, msg *types.ActivateExternalRewardsLockers) (*types.ActivateExternalRewardsLockersResponse, error) { ctx := sdk.UnwrapSDKContext(goCtx) klwsParams, _ := m.GetKillSwitchData(ctx, msg.AppMappingId) diff --git a/x/rewards/keeper/rewards.go b/x/rewards/keeper/rewards.go index 70797f3b5..fb456c99a 100644 --- a/x/rewards/keeper/rewards.go +++ b/x/rewards/keeper/rewards.go @@ -1,12 +1,14 @@ package keeper import ( + "context" + esmtypes "github.com/comdex-official/comdex/x/esm/types" "github.com/comdex-official/comdex/x/rewards/types" sdk "github.com/cosmos/cosmos-sdk/types" protobuftypes "github.com/gogo/protobuf/types" ) -func (k *Keeper) SetReward(ctx sdk.Context, rewards types.InternalRewards) { +func (k Keeper) SetReward(ctx sdk.Context, rewards types.InternalRewards) { var ( store = k.Store(ctx) key = types.RewardsKey(rewards.App_mapping_ID) @@ -16,7 +18,7 @@ func (k *Keeper) SetReward(ctx sdk.Context, rewards types.InternalRewards) { store.Set(key, value) } -func (k *Keeper) GetReward(ctx sdk.Context, id uint64) (asset types.InternalRewards, found bool) { +func (k Keeper) GetReward(ctx sdk.Context, id uint64) (asset types.InternalRewards, found bool) { var ( store = k.Store(ctx) key = types.RewardsKey(id) @@ -31,7 +33,7 @@ func (k *Keeper) GetReward(ctx sdk.Context, id uint64) (asset types.InternalRewa return asset, true } -func (k *Keeper) GetRewards(ctx sdk.Context) (lends []types.InternalRewards) { +func (k Keeper) GetRewards(ctx sdk.Context) (lends []types.InternalRewards) { var ( store = k.Store(ctx) iter = sdk.KVStorePrefixIterator(store, types.RewardsKeyPrefix) @@ -53,7 +55,7 @@ func (k *Keeper) GetRewards(ctx sdk.Context) (lends []types.InternalRewards) { return lends } -func (k *Keeper) SetAppID(ctx sdk.Context, AppIds types.WhitelistedAppIdsVault) { +func (k Keeper) SetAppID(ctx sdk.Context, AppIds types.WhitelistedAppIdsVault) { var ( store = k.Store(ctx) key = types.AppIdsVaultKeyPrefix @@ -63,7 +65,7 @@ func (k *Keeper) SetAppID(ctx sdk.Context, AppIds types.WhitelistedAppIdsVault) store.Set(key, value) } -func (k *Keeper) GetAppIDs(ctx sdk.Context) (appIds types.WhitelistedAppIdsVault) { +func (k Keeper) GetAppIDs(ctx sdk.Context) (appIds types.WhitelistedAppIdsVault) { var ( store = k.Store(ctx) key = types.AppIdsVaultKeyPrefix @@ -78,7 +80,7 @@ func (k *Keeper) GetAppIDs(ctx sdk.Context) (appIds types.WhitelistedAppIdsVault return appIds } -func (k *Keeper) SetExternalRewardsLockers(ctx sdk.Context, LockerExternalRewards types.LockerExternalRewards) { +func (k Keeper) SetExternalRewardsLockers(ctx sdk.Context, LockerExternalRewards types.LockerExternalRewards) { var ( store = k.Store(ctx) key = types.ExternalRewardsLockerMappingKey(LockerExternalRewards.Id) @@ -87,7 +89,7 @@ func (k *Keeper) SetExternalRewardsLockers(ctx sdk.Context, LockerExternalReward store.Set(key, value) } -func (k *Keeper) GetExternalRewardsLocker(ctx sdk.Context, id uint64) (LockerExternalRewards types.LockerExternalRewards) { +func (k Keeper) GetExternalRewardsLocker(ctx sdk.Context, id uint64) (LockerExternalRewards types.LockerExternalRewards) { var ( store = k.Store(ctx) key = types.ExternalRewardsLockerMappingKey(id) @@ -100,7 +102,7 @@ func (k *Keeper) GetExternalRewardsLocker(ctx sdk.Context, id uint64) (LockerExt return LockerExternalRewards } -func (k *Keeper) GetExternalRewardsLockers(ctx sdk.Context) (LockerExternalRewards []types.LockerExternalRewards) { +func (k Keeper) GetExternalRewardsLockers(ctx sdk.Context) (LockerExternalRewards []types.LockerExternalRewards) { var ( store = k.Store(ctx) iter = sdk.KVStorePrefixIterator(store, types.ExternalRewardsLockerKeyPrefix) @@ -122,7 +124,7 @@ func (k *Keeper) GetExternalRewardsLockers(ctx sdk.Context) (LockerExternalRewar return LockerExternalRewards } -func (k *Keeper) SetExternalRewardsLockersID(ctx sdk.Context, id uint64) { +func (k Keeper) SetExternalRewardsLockersID(ctx sdk.Context, id uint64) { var ( store = k.Store(ctx) key = types.ExtRewardsLockerIDKey @@ -136,7 +138,7 @@ func (k *Keeper) SetExternalRewardsLockersID(ctx sdk.Context, id uint64) { store.Set(key, value) } -func (k *Keeper) GetExternalRewardsLockersID(ctx sdk.Context) uint64 { +func (k Keeper) GetExternalRewardsLockersID(ctx sdk.Context) uint64 { var ( store = k.Store(ctx) key = types.ExtRewardsLockerIDKey @@ -153,7 +155,7 @@ func (k *Keeper) GetExternalRewardsLockersID(ctx sdk.Context) uint64 { return id.GetValue() } -func (k *Keeper) SetEpochTimeID(ctx sdk.Context, id uint64) { +func (k Keeper) SetEpochTimeID(ctx sdk.Context, id uint64) { var ( store = k.Store(ctx) key = types.EpochTimeIDKey @@ -167,7 +169,7 @@ func (k *Keeper) SetEpochTimeID(ctx sdk.Context, id uint64) { store.Set(key, value) } -func (k *Keeper) GetEpochTimeID(ctx sdk.Context) uint64 { +func (k Keeper) GetEpochTimeID(ctx sdk.Context) uint64 { var ( store = k.Store(ctx) key = types.EpochTimeIDKey @@ -184,7 +186,7 @@ func (k *Keeper) GetEpochTimeID(ctx sdk.Context) uint64 { return id.GetValue() } -func (k *Keeper) SetEpochTime(ctx sdk.Context, epoch types.EpochTime) { +func (k Keeper) SetEpochTime(ctx sdk.Context, epoch types.EpochTime) { var ( store = k.Store(ctx) key = types.EpochForLockerKey(epoch.Id) @@ -194,7 +196,7 @@ func (k *Keeper) SetEpochTime(ctx sdk.Context, epoch types.EpochTime) { store.Set(key, value) } -func (k *Keeper) GetEpochTime(ctx sdk.Context, id uint64) (epoch types.EpochTime, found bool) { +func (k Keeper) GetEpochTime(ctx sdk.Context, id uint64) (epoch types.EpochTime, found bool) { var ( store = k.Store(ctx) key = types.EpochForLockerKey(id) @@ -209,7 +211,7 @@ func (k *Keeper) GetEpochTime(ctx sdk.Context, id uint64) (epoch types.EpochTime return epoch, true } -func (k *Keeper) SetExternalRewardsVaultID(ctx sdk.Context, id uint64) { +func (k Keeper) SetExternalRewardsVaultID(ctx sdk.Context, id uint64) { var ( store = k.Store(ctx) key = types.ExtRewardsVaultIDKey @@ -223,7 +225,7 @@ func (k *Keeper) SetExternalRewardsVaultID(ctx sdk.Context, id uint64) { store.Set(key, value) } -func (k *Keeper) GetExternalRewardsVaultID(ctx sdk.Context) uint64 { +func (k Keeper) GetExternalRewardsVaultID(ctx sdk.Context) uint64 { var ( store = k.Store(ctx) key = types.ExtRewardsVaultIDKey @@ -240,7 +242,7 @@ func (k *Keeper) GetExternalRewardsVaultID(ctx sdk.Context) uint64 { return id.GetValue() } -func (k *Keeper) GetExternalRewardVaults(ctx sdk.Context) (VaultExternalRewards []types.VaultExternalRewards) { +func (k Keeper) GetExternalRewardVaults(ctx sdk.Context) (VaultExternalRewards []types.VaultExternalRewards) { var ( store = k.Store(ctx) iter = sdk.KVStorePrefixIterator(store, types.ExternalRewardsVaultKeyPrefix) @@ -262,7 +264,7 @@ func (k *Keeper) GetExternalRewardVaults(ctx sdk.Context) (VaultExternalRewards return VaultExternalRewards } -func (k *Keeper) SetExternalRewardVault(ctx sdk.Context, VaultExternalRewards types.VaultExternalRewards) { +func (k Keeper) SetExternalRewardVault(ctx sdk.Context, VaultExternalRewards types.VaultExternalRewards) { var ( store = k.Store(ctx) key = types.ExternalRewardsVaultMappingKey(VaultExternalRewards.Id) @@ -273,7 +275,7 @@ func (k *Keeper) SetExternalRewardVault(ctx sdk.Context, VaultExternalRewards ty // Wasm query checks -func (k *Keeper) GetRemoveWhitelistAppIDLockerRewardsCheck(ctx sdk.Context, appMappingID uint64, assetIDs []uint64) (found bool, err string) { +func (k Keeper) GetRemoveWhitelistAppIDLockerRewardsCheck(ctx sdk.Context, appMappingID uint64, assetIDs []uint64) (found bool, err string) { _, found = k.GetReward(ctx, appMappingID) if !found { return false, "not found" @@ -281,7 +283,7 @@ func (k *Keeper) GetRemoveWhitelistAppIDLockerRewardsCheck(ctx sdk.Context, appM return true, "" } -func (k *Keeper) GetWhitelistAppIDVaultInterestCheck(ctx sdk.Context, appMappingID uint64) (found bool, err string) { +func (k Keeper) GetWhitelistAppIDVaultInterestCheck(ctx sdk.Context, appMappingID uint64) (found bool, err string) { found = uint64InSlice(appMappingID, k.GetAppIDs(ctx).WhitelistedAppMappingIdsVaults) if found { return false, "app Id already exists" @@ -289,7 +291,7 @@ func (k *Keeper) GetWhitelistAppIDVaultInterestCheck(ctx sdk.Context, appMapping return true, "" } -func (k *Keeper) GetWhitelistAppIDLockerRewardsCheck(ctx sdk.Context, appMappingID uint64, assetIDs []uint64) (found bool, err string) { +func (k Keeper) GetWhitelistAppIDLockerRewardsCheck(ctx sdk.Context, appMappingID uint64, assetIDs []uint64) (found bool, err string) { lockerAssets, _ := k.locker.GetLockerProductAssetMapping(ctx, appMappingID) for i := range assetIDs { found := uint64InSlice(assetIDs[i], lockerAssets.AssetIds) @@ -300,7 +302,7 @@ func (k *Keeper) GetWhitelistAppIDLockerRewardsCheck(ctx sdk.Context, appMapping return true, "" } -func (k *Keeper) GetExternalLockerRewardsCheck(ctx sdk.Context, appMappingID uint64, assetID uint64) (found bool, err string) { +func (k Keeper) GetExternalLockerRewardsCheck(ctx sdk.Context, appMappingID uint64, assetID uint64) (found bool, err string) { lockerAssets, found := k.GetLockerProductAssetMapping(ctx, appMappingID) if !found { return false, "locker product asset mapping doesnt exist" @@ -313,6 +315,47 @@ func (k *Keeper) GetExternalLockerRewardsCheck(ctx sdk.Context, appMappingID uin return true, "" } -func (k *Keeper) GetExternalVaultRewardsCheck(ctx sdk.Context, appMappingID uint64, assetID uint64) (found bool, err string) { +func (k Keeper) GetExternalVaultRewardsCheck(ctx sdk.Context, appMappingID uint64, assetID uint64) (found bool, err string) { return true, "" } + +func (k Keeper) Whitelist(goCtx context.Context, msg *types.WhitelistAsset) (*types.MsgWhitelistAssetResponse, error) { + ctx := sdk.UnwrapSDKContext(goCtx) + klwsParams, _ := k.GetKillSwitchData(ctx, msg.AppMappingId) + if klwsParams.BreakerEnable { + return nil, esmtypes.ErrCircuitBreakerEnabled + } + esmStatus, found := k.GetESMStatus(ctx, msg.AppMappingId) + status := false + if found { + status = esmStatus.Status + } + if status { + return nil, esmtypes.ErrESMAlreadyExecuted + } + + if err := k.WhitelistAsset(ctx, msg.AppMappingId, msg.AssetId, true); err != nil { + return nil, err + } + return &types.MsgWhitelistAssetResponse{}, nil +} + +func (k Keeper) WhitelistAppVault(goCtx context.Context, msg *types.WhitelistAppIdVault) (*types.MsgWhitelistAppIdVaultResponse, error) { + ctx := sdk.UnwrapSDKContext(goCtx) + klwsParams, _ := k.GetKillSwitchData(ctx, msg.AppMappingId) + if klwsParams.BreakerEnable { + return nil, esmtypes.ErrCircuitBreakerEnabled + } + esmStatus, found := k.GetESMStatus(ctx, msg.AppMappingId) + status := false + if found { + status = esmStatus.Status + } + if status { + return nil, esmtypes.ErrESMAlreadyExecuted + } + if err := k.WhitelistAppIDVault(ctx, msg.AppMappingId); err != nil { + return nil, err + } + return &types.MsgWhitelistAppIdVaultResponse{}, nil +} diff --git a/x/rewards/keeper/store.go b/x/rewards/keeper/store.go index 8c592b225..8db0375c9 100644 --- a/x/rewards/keeper/store.go +++ b/x/rewards/keeper/store.go @@ -11,7 +11,7 @@ import ( // EPOCHES // SetEpochInfoByDuration sets EpochInfo with epoch duration as a key. -func (k *Keeper) SetEpochInfoByDuration(ctx sdk.Context, epochInfo types.EpochInfo) { +func (k Keeper) SetEpochInfoByDuration(ctx sdk.Context, epochInfo types.EpochInfo) { var ( store = k.Store(ctx) key = types.GetEpochInfoByDurationKey(epochInfo.Duration) @@ -21,7 +21,7 @@ func (k *Keeper) SetEpochInfoByDuration(ctx sdk.Context, epochInfo types.EpochIn } // GetEpochInfoByDuration gets EpochInfo by epoch duration. -func (k *Keeper) GetEpochInfoByDuration(ctx sdk.Context, duration time.Duration) (epochInfo types.EpochInfo, found bool) { +func (k Keeper) GetEpochInfoByDuration(ctx sdk.Context, duration time.Duration) (epochInfo types.EpochInfo, found bool) { var ( store = k.Store(ctx) key = types.GetEpochInfoByDurationKey(duration) @@ -35,7 +35,7 @@ func (k *Keeper) GetEpochInfoByDuration(ctx sdk.Context, duration time.Duration) } // DeleteEpochInfoByDuration deletes the EpochInfo using epoch duration. -func (k *Keeper) DeleteEpochInfoByDuration(ctx sdk.Context, duration time.Duration) { +func (k Keeper) DeleteEpochInfoByDuration(ctx sdk.Context, duration time.Duration) { var ( store = k.Store(ctx) key = types.GetEpochInfoByDurationKey(duration) @@ -44,7 +44,7 @@ func (k *Keeper) DeleteEpochInfoByDuration(ctx sdk.Context, duration time.Durati } // GetAllEpochInfos returns all the EpochInfo. -func (k *Keeper) GetAllEpochInfos(ctx sdk.Context) (epochInfos []types.EpochInfo) { +func (k Keeper) GetAllEpochInfos(ctx sdk.Context) (epochInfos []types.EpochInfo) { var ( store = k.Store(ctx) iter = sdk.KVStorePrefixIterator(store, types.EpochInfoByDurationKeyPrefix) @@ -66,7 +66,7 @@ func (k *Keeper) GetAllEpochInfos(ctx sdk.Context) (epochInfos []types.EpochInfo // GAUGES // GetGaugeID return gauge by id. -func (k *Keeper) GetGaugeID(ctx sdk.Context) uint64 { +func (k Keeper) GetGaugeID(ctx sdk.Context) uint64 { var ( store = k.Store(ctx) key = types.GaugeIDKey @@ -81,7 +81,7 @@ func (k *Keeper) GetGaugeID(ctx sdk.Context) uint64 { } // SetGaugeID sets id for the gauge. -func (k *Keeper) SetGaugeID(ctx sdk.Context, id uint64) { +func (k Keeper) SetGaugeID(ctx sdk.Context, id uint64) { var ( store = k.Store(ctx) key = types.GaugeIDKey @@ -95,7 +95,7 @@ func (k *Keeper) SetGaugeID(ctx sdk.Context, id uint64) { } // SetGauge sets gauge with Id as a key. -func (k *Keeper) SetGauge(ctx sdk.Context, gauge types.Gauge) { +func (k Keeper) SetGauge(ctx sdk.Context, gauge types.Gauge) { var ( store = k.Store(ctx) key = types.GetGaugeKey(gauge.Id) @@ -105,7 +105,7 @@ func (k *Keeper) SetGauge(ctx sdk.Context, gauge types.Gauge) { } // DeleteGauge deletes the gauge. -func (k *Keeper) DeleteGauge(ctx sdk.Context, id uint64) { +func (k Keeper) DeleteGauge(ctx sdk.Context, id uint64) { var ( store = k.Store(ctx) key = types.GetGaugeKey(id) @@ -114,7 +114,7 @@ func (k *Keeper) DeleteGauge(ctx sdk.Context, id uint64) { } // GetGaugeByID returns gauge by id. -func (k *Keeper) GetGaugeByID(ctx sdk.Context, id uint64) (gauge types.Gauge, found bool) { +func (k Keeper) GetGaugeByID(ctx sdk.Context, id uint64) (gauge types.Gauge, found bool) { var ( store = k.Store(ctx) key = types.GetGaugeKey(id) @@ -128,7 +128,7 @@ func (k *Keeper) GetGaugeByID(ctx sdk.Context, id uint64) (gauge types.Gauge, fo } // GetAllGauges returns all the gauges from store. -func (k *Keeper) GetAllGauges(ctx sdk.Context) (gauges []types.Gauge) { +func (k Keeper) GetAllGauges(ctx sdk.Context) (gauges []types.Gauge) { var ( store = k.Store(ctx) iter = sdk.KVStorePrefixIterator(store, types.GaugeKeyPrefix) @@ -148,7 +148,7 @@ func (k *Keeper) GetAllGauges(ctx sdk.Context) (gauges []types.Gauge) { } // SetGaugeIdsByTriggerDuration sets a gauge ids by the trigger duration. -func (k *Keeper) SetGaugeIdsByTriggerDuration(ctx sdk.Context, gaugesByTriggerDuration types.GaugeByTriggerDuration) { +func (k Keeper) SetGaugeIdsByTriggerDuration(ctx sdk.Context, gaugesByTriggerDuration types.GaugeByTriggerDuration) { var ( store = k.Store(ctx) key = types.GetGaugeIdsByTriggerDurationKey(gaugesByTriggerDuration.TriggerDuration) @@ -158,7 +158,7 @@ func (k *Keeper) SetGaugeIdsByTriggerDuration(ctx sdk.Context, gaugesByTriggerDu } // GetGaugeIdsByTriggerDuration returns all the gauges for the given durtion. -func (k *Keeper) GetGaugeIdsByTriggerDuration(ctx sdk.Context, triggerDuration time.Duration) (gaugeIdsByTriggerDuration types.GaugeByTriggerDuration, found bool) { +func (k Keeper) GetGaugeIdsByTriggerDuration(ctx sdk.Context, triggerDuration time.Duration) (gaugeIdsByTriggerDuration types.GaugeByTriggerDuration, found bool) { var ( store = k.Store(ctx) key = types.GetGaugeIdsByTriggerDurationKey(triggerDuration) @@ -172,7 +172,7 @@ func (k *Keeper) GetGaugeIdsByTriggerDuration(ctx sdk.Context, triggerDuration t } // GetAllGaugesByGaugeTypeID returns all the gauges with given gaugeTypeId. -func (k *Keeper) GetAllGaugesByGaugeTypeID(ctx sdk.Context, gaugeTypeID uint64) (gauges []types.Gauge) { +func (k Keeper) GetAllGaugesByGaugeTypeID(ctx sdk.Context, gaugeTypeID uint64) (gauges []types.Gauge) { var ( store = k.Store(ctx) iter = sdk.KVStorePrefixIterator(store, types.GaugeKeyPrefix) diff --git a/x/rewards/types/codec.go b/x/rewards/types/codec.go index c6b7e170e..c8c709247 100644 --- a/x/rewards/types/codec.go +++ b/x/rewards/types/codec.go @@ -10,10 +10,6 @@ import ( func RegisterLegacyAminoCodec(cdc *codec.LegacyAmino) { cdc.RegisterConcrete(&MsgCreateGauge{}, "comdex/rewards/MsgCreateGauge", nil) - cdc.RegisterConcrete(&WhitelistAsset{}, "comdex/rewards/whitelistAsset", nil) - cdc.RegisterConcrete(&RemoveWhitelistAsset{}, "comdex/rewards/removeWhitelistAsset", nil) - cdc.RegisterConcrete(&WhitelistAppIdVault{}, "comdex/rewards/whitelistAppIdVault", nil) - cdc.RegisterConcrete(&RemoveWhitelistAppIdVault{}, "comdex/rewards/removeWhitelistAppIdVault", nil) cdc.RegisterConcrete(&ActivateExternalRewardsLockers{}, "comdex/rewards/activateExternalRewardsLockers", nil) cdc.RegisterConcrete(&ActivateExternalRewardsVault{}, "comdex/rewards/activateExternalRewardsVault", nil) } @@ -22,10 +18,6 @@ func RegisterInterfaces(registry cdctypes.InterfaceRegistry) { registry.RegisterImplementations( (*sdk.Msg)(nil), &MsgCreateGauge{}, - &WhitelistAsset{}, - &RemoveWhitelistAsset{}, - &WhitelistAppIdVault{}, - &RemoveWhitelistAppIdVault{}, &ActivateExternalRewardsLockers{}, &ActivateExternalRewardsVault{}, ) diff --git a/x/rewards/types/errors.go b/x/rewards/types/errors.go index f439a1720..2507f5e74 100644 --- a/x/rewards/types/errors.go +++ b/x/rewards/types/errors.go @@ -26,4 +26,11 @@ var ( ErrPriceNotFound = sdkerrors.Register(ModuleName, 1106, "price not found") ErrInvalidAppID = sdkerrors.Register(ModuleName, 1107, "invalid app id") ErrVaultNotFound = sdkerrors.Register(ModuleName, 1108, "vault not found") + + BurnCoinValueInRewardsIsZero = sdkerrors.Register(ModuleName, 1109, "Burn Coin value in rewards is zero") + MintCoinValueInRewardsIsZero = sdkerrors.Register(ModuleName, 1110, "Mint Coin value in rewards is zero") + SendCoinsFromModuleToModuleInRewardsIsZero = sdkerrors.Register(ModuleName, 1111, "Coin value in module to module transfer in rewards is zero") + SendCoinsFromModuleToAccountInRewardsIsZero = sdkerrors.Register(ModuleName, 1112, "Coin value in module to account transfer in rewards is zero") + SendCoinsFromAccountToModuleInRewardsIsZero = sdkerrors.Register(ModuleName, 1113, "Coin value in account to module transfer in rewards is zero") + ErrInternalRewardsNotFound = sdkerrors.Register(ModuleName, 1114, "Internal rewards not found") ) diff --git a/x/rewards/types/keys.go b/x/rewards/types/keys.go index a20a88c3b..3eb669b3b 100644 --- a/x/rewards/types/keys.go +++ b/x/rewards/types/keys.go @@ -23,6 +23,7 @@ const ( MemStoreKey = "mem_rewards" SecondsPerYear = 31557600 + SecondsPerDay = 86400 ) var ( diff --git a/x/rewards/types/tx.go b/x/rewards/types/tx.go index 6c2a06e1b..3dff6d57a 100644 --- a/x/rewards/types/tx.go +++ b/x/rewards/types/tx.go @@ -81,154 +81,6 @@ func (m MsgCreateGauge) GetSigners() []sdk.AccAddress { return []sdk.AccAddress{owner} } -func NewMsgWhitelistAsset( - appMappingID uint64, - // nolint - from sdk.AccAddress, - assetID []uint64, -) *WhitelistAsset { - return &WhitelistAsset{ - AppMappingId: appMappingID, - From: from.String(), - AssetId: assetID, - } -} - -func (m *WhitelistAsset) Route() string { - return RouterKey -} - -func (m *WhitelistAsset) Type() string { - return ModuleName -} - -func (m *WhitelistAsset) ValidateBasic() error { - return nil -} - -func (m *WhitelistAsset) GetSignBytes() []byte { - return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(m)) -} - -func (m *WhitelistAsset) GetSigners() []sdk.AccAddress { - from, err := sdk.AccAddressFromBech32(m.From) - if err != nil { - panic(err) - } - - return []sdk.AccAddress{from} -} - -func NewMsgRemoveWhitelistAsset( - appMappingID uint64, - // nolint - from sdk.AccAddress, - assetID uint64, -) *RemoveWhitelistAsset { - return &RemoveWhitelistAsset{ - AppMappingId: appMappingID, - From: from.String(), - AssetId: assetID, - } -} - -func (m *RemoveWhitelistAsset) Route() string { - return RouterKey -} - -func (m *RemoveWhitelistAsset) Type() string { - return ModuleName -} - -func (m *RemoveWhitelistAsset) ValidateBasic() error { - return nil -} - -func (m *RemoveWhitelistAsset) GetSignBytes() []byte { - return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(m)) -} - -func (m *RemoveWhitelistAsset) GetSigners() []sdk.AccAddress { - from, err := sdk.AccAddressFromBech32(m.From) - if err != nil { - panic(err) - } - - return []sdk.AccAddress{from} -} - -func NewMsgWhitelistAppIDVault( - appMappingID uint64, - // nolint - from sdk.AccAddress, -) *WhitelistAppIdVault { - return &WhitelistAppIdVault{ - AppMappingId: appMappingID, - From: from.String(), - } -} - -func (m *WhitelistAppIdVault) Route() string { - return RouterKey -} - -func (m *WhitelistAppIdVault) Type() string { - return ModuleName -} - -func (m *WhitelistAppIdVault) ValidateBasic() error { - return nil -} - -func (m *WhitelistAppIdVault) GetSignBytes() []byte { - return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(m)) -} - -func (m *WhitelistAppIdVault) GetSigners() []sdk.AccAddress { - from, err := sdk.AccAddressFromBech32(m.From) - if err != nil { - panic(err) - } - - return []sdk.AccAddress{from} -} - -func NewMsgRemoveWhitelistAppIDVault( - appMappingID uint64, - // nolint - from sdk.AccAddress, -) *RemoveWhitelistAppIdVault { - return &RemoveWhitelistAppIdVault{ - AppMappingId: appMappingID, - From: from.String(), - } -} - -func (m *RemoveWhitelistAppIdVault) Route() string { - return RouterKey -} - -func (m *RemoveWhitelistAppIdVault) Type() string { - return ModuleName -} - -func (m *RemoveWhitelistAppIdVault) ValidateBasic() error { - return nil -} - -func (m *RemoveWhitelistAppIdVault) GetSignBytes() []byte { - return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(m)) -} - -func (m *RemoveWhitelistAppIdVault) GetSigners() []sdk.AccAddress { - from, err := sdk.AccAddressFromBech32(m.From) - if err != nil { - panic(err) - } - - return []sdk.AccAddress{from} -} - func NewMsgActivateExternalRewardsLockers( appMappingID uint64, assetID uint64, @@ -256,6 +108,22 @@ func (m *ActivateExternalRewardsLockers) Type() string { } func (m *ActivateExternalRewardsLockers) ValidateBasic() error { + + if m.AppMappingId <= 0 { + return fmt.Errorf("app id should be positive: %d > 0", m.AppMappingId) + } + if m.AssetId <= 0 { + return fmt.Errorf("asset id should be positive: %d > 0", m.AssetId) + } + if m.TotalRewards.IsZero() { + return fmt.Errorf("TotalRewards should be positive: > 0") + } + if m.DurationDays <= 0 { + return fmt.Errorf("DurationDays should be positive: %d > 0", m.DurationDays) + } + if m.MinLockupTimeSeconds <= 0 { + return fmt.Errorf("MinLockupTimeSeconds should be positive: %d > 0", m.MinLockupTimeSeconds) + } return nil } @@ -264,7 +132,7 @@ func (m *ActivateExternalRewardsLockers) GetSignBytes() []byte { } func (m *ActivateExternalRewardsLockers) GetSigners() []sdk.AccAddress { - from, err := sdk.AccAddressFromBech32(m.Depositor) + from, err := sdk.AccAddressFromBech32(m.GetDepositor()) if err != nil { panic(err) } @@ -299,6 +167,21 @@ func (m *ActivateExternalRewardsVault) Type() string { } func (m *ActivateExternalRewardsVault) ValidateBasic() error { + if m.AppMappingId <= 0 { + return fmt.Errorf("app id should be positive: %d > 0", m.AppMappingId) + } + if m.Extended_Pair_Id <= 0 { + return fmt.Errorf("asset id should be positive: %d > 0", m.Extended_Pair_Id) + } + if m.TotalRewards.IsZero() { + return fmt.Errorf("TotalRewards should be positive: > 0") + } + if m.DurationDays <= 0 { + return fmt.Errorf("DurationDays should be positive: %d > 0", m.DurationDays) + } + if m.MinLockupTimeSeconds <= 0 { + return fmt.Errorf("MinLockupTimeSeconds should be positive: %d > 0", m.MinLockupTimeSeconds) + } return nil } @@ -307,7 +190,7 @@ func (m *ActivateExternalRewardsVault) GetSignBytes() []byte { } func (m *ActivateExternalRewardsVault) GetSigners() []sdk.AccAddress { - from, err := sdk.AccAddressFromBech32(m.Depositor) + from, err := sdk.AccAddressFromBech32(m.GetDepositor()) if err != nil { panic(err) } diff --git a/x/rewards/types/tx.pb.go b/x/rewards/types/tx.pb.go index 624963e95..5e9728e91 100644 --- a/x/rewards/types/tx.pb.go +++ b/x/rewards/types/tx.pb.go @@ -829,76 +829,71 @@ func init() { func init() { proto.RegisterFile("comdex/rewards/v1beta1/tx.proto", fileDescriptor_99c3f80c2e1e4c11) } var fileDescriptor_99c3f80c2e1e4c11 = []byte{ - // 1101 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x57, 0xcf, 0x6f, 0xe3, 0x44, - 0x14, 0xae, 0x9b, 0x6c, 0x77, 0x3b, 0x6d, 0xd3, 0x76, 0x9a, 0x6d, 0xd3, 0x2c, 0xc4, 0xc5, 0x2c, - 0xa5, 0x12, 0x5b, 0x5b, 0x2d, 0x08, 0x24, 0xc4, 0x82, 0xea, 0xed, 0x6a, 0xa9, 0x68, 0x24, 0x64, - 0x2a, 0x7e, 0x5d, 0xac, 0x69, 0x3c, 0xf5, 0x8e, 0x1a, 0x7b, 0xbc, 0x9e, 0x49, 0x49, 0x8e, 0x9c, - 0x56, 0xe2, 0xd4, 0x23, 0x7f, 0x01, 0x27, 0xfe, 0x90, 0x3d, 0xee, 0x0d, 0x4e, 0x06, 0xb5, 0x27, - 0x38, 0x46, 0x82, 0x03, 0x27, 0x34, 0xe3, 0xb1, 0xd3, 0xb4, 0x49, 0xda, 0xee, 0x0a, 0xc1, 0x81, - 0x53, 0xe3, 0x99, 0xef, 0xbd, 0xf7, 0xbd, 0x1f, 0xfe, 0x9e, 0x0b, 0xf4, 0x06, 0x0d, 0x3c, 0xdc, - 0xb6, 0x62, 0xfc, 0x0d, 0x8a, 0x3d, 0x66, 0x1d, 0x6d, 0xec, 0x63, 0x8e, 0x36, 0x2c, 0xde, 0x36, - 0xa3, 0x98, 0x72, 0x0a, 0x17, 0x53, 0x80, 0xa9, 0x00, 0xa6, 0x02, 0x54, 0xcb, 0x3e, 0xf5, 0xa9, - 0x84, 0x58, 0xe2, 0x57, 0x8a, 0xae, 0xd6, 0x1a, 0x94, 0x05, 0x94, 0x59, 0xfb, 0x88, 0xe1, 0xdc, - 0x57, 0x83, 0x92, 0x30, 0xbb, 0xf7, 0x29, 0xf5, 0x9b, 0xd8, 0x92, 0x4f, 0xfb, 0xad, 0x03, 0xcb, - 0x6b, 0xc5, 0x88, 0x13, 0x9a, 0xdd, 0x1b, 0x43, 0xe8, 0xf8, 0xa8, 0xe5, 0x63, 0x85, 0xd1, 0xcf, - 0xfb, 0xe0, 0x24, 0xc0, 0x8c, 0xa3, 0x20, 0x4a, 0x01, 0xc6, 0x4f, 0x45, 0x50, 0xaa, 0x33, 0xff, - 0x41, 0x8c, 0x11, 0xc7, 0x8f, 0x84, 0x25, 0x7c, 0x1d, 0x14, 0x0f, 0x62, 0x1a, 0x54, 0xb4, 0x15, - 0x6d, 0x6d, 0xd2, 0x9e, 0xed, 0x26, 0xfa, 0x54, 0x07, 0x05, 0xcd, 0xf7, 0x0d, 0x71, 0x6a, 0x38, - 0xf2, 0x12, 0x1a, 0x60, 0x46, 0xc6, 0x71, 0x79, 0x27, 0xc2, 0x2e, 0xf1, 0x2a, 0xe3, 0x2b, 0xda, - 0x5a, 0xd1, 0x99, 0x92, 0x87, 0x7b, 0x9d, 0x08, 0xef, 0x78, 0xf0, 0xa9, 0x06, 0xe6, 0x78, 0x4c, - 0x7c, 0x1f, 0xc7, 0x6e, 0xc6, 0xbd, 0x52, 0x58, 0xd1, 0xd6, 0xa6, 0x36, 0x97, 0xcd, 0x94, 0x98, - 0x99, 0x11, 0x33, 0xb7, 0x15, 0xc0, 0xde, 0x7a, 0x96, 0xe8, 0x63, 0xbf, 0x27, 0x7a, 0xf5, 0xbc, - 0xe9, 0x3d, 0x1a, 0x10, 0x8e, 0x83, 0x88, 0x77, 0xba, 0x89, 0xbe, 0x94, 0x52, 0x3a, 0x8f, 0x31, - 0xbe, 0xff, 0x45, 0xd7, 0x9c, 0x59, 0x75, 0x9c, 0xf9, 0x84, 0x4f, 0x40, 0xc9, 0xc3, 0x11, 0x65, - 0x84, 0xbb, 0x28, 0xa0, 0xad, 0x90, 0x57, 0x8a, 0x8a, 0x46, 0xda, 0x03, 0x53, 0xf4, 0x20, 0x6b, - 0x97, 0xf9, 0x80, 0x92, 0xd0, 0xb6, 0x04, 0x8d, 0xbf, 0x12, 0xfd, 0x4d, 0x9f, 0xf0, 0xc7, 0xad, - 0x7d, 0xb3, 0x41, 0x03, 0x4b, 0x35, 0x2c, 0xfd, 0xb3, 0xce, 0xbc, 0x43, 0x4b, 0x64, 0xcf, 0xa4, - 0x81, 0x33, 0xa3, 0x22, 0x6c, 0xc9, 0x00, 0xf0, 0x0d, 0x50, 0xe2, 0x94, 0xa3, 0xa6, 0xab, 0xb8, - 0xb0, 0xca, 0x0d, 0x59, 0xa1, 0x19, 0x79, 0xba, 0xa7, 0x0e, 0xe1, 0x97, 0x00, 0x30, 0x8e, 0x62, - 0xee, 0x8a, 0xc6, 0x54, 0x26, 0x24, 0xab, 0xea, 0x85, 0xe2, 0xec, 0x65, 0x5d, 0xb3, 0x5f, 0x15, - 0xb4, 0xba, 0x89, 0x3e, 0x9f, 0xe6, 0xdf, 0xb3, 0x35, 0x8e, 0x45, 0xe6, 0x93, 0xf2, 0x40, 0xc0, - 0xa1, 0x0b, 0x16, 0x9a, 0xe4, 0x49, 0x8b, 0x78, 0x84, 0x77, 0xdc, 0x00, 0x73, 0xe4, 0x7a, 0x88, - 0xa3, 0xca, 0x4d, 0x19, 0x62, 0xdd, 0x1c, 0x3c, 0xaa, 0xe6, 0xae, 0x34, 0xe1, 0x1d, 0x39, 0x0a, - 0x75, 0xcc, 0xd1, 0x36, 0xe2, 0xe8, 0xe3, 0x31, 0x67, 0x3e, 0xf7, 0x95, 0x1d, 0xc2, 0xdb, 0x60, - 0x02, 0x45, 0x91, 0xe8, 0xfd, 0x2d, 0x99, 0xd9, 0x0d, 0x14, 0x45, 0x3b, 0x9e, 0x3d, 0x01, 0x8a, - 0x87, 0x24, 0xf4, 0x8c, 0x0a, 0x58, 0xec, 0x1f, 0x2c, 0x07, 0xb3, 0x88, 0x86, 0x0c, 0x1b, 0x3f, - 0x68, 0xa0, 0xf4, 0xc5, 0x63, 0xc2, 0x71, 0x93, 0x30, 0xbe, 0xc5, 0x18, 0xe6, 0xf0, 0x23, 0x50, - 0x12, 0xbe, 0x02, 0x14, 0x45, 0x24, 0xf4, 0x85, 0x4f, 0x31, 0x7d, 0x45, 0x7b, 0xb9, 0x9b, 0xe8, - 0xb7, 0xd3, 0x54, 0xfb, 0xef, 0x0d, 0x67, 0x1a, 0x45, 0x51, 0x3d, 0x7d, 0xde, 0xf1, 0xf2, 0xa1, - 0x1d, 0x1f, 0x35, 0xb4, 0x26, 0xb8, 0x85, 0x44, 0x38, 0xe1, 0xbf, 0xb0, 0x52, 0x58, 0x2b, 0xda, - 0x0b, 0xdd, 0x44, 0x9f, 0x55, 0xfe, 0xd5, 0x8d, 0xe1, 0xdc, 0x94, 0x3f, 0x77, 0x3c, 0xe3, 0x47, - 0x0d, 0x94, 0x1d, 0x1c, 0xd0, 0x23, 0xfc, 0x1f, 0xa0, 0xab, 0x5d, 0x4a, 0xf7, 0x0e, 0x58, 0xae, - 0x33, 0xbf, 0x9f, 0x6a, 0x5e, 0xf4, 0xd7, 0x80, 0x5e, 0x67, 0xfe, 0xa0, 0x6c, 0x72, 0xc8, 0xb7, - 0x1a, 0x58, 0xe8, 0x5d, 0x89, 0x66, 0x7e, 0x8e, 0x5a, 0x4d, 0x0e, 0x1f, 0x0e, 0xc9, 0x56, 0xef, - 0x26, 0xfa, 0x9d, 0x41, 0xd9, 0xba, 0x47, 0xc2, 0xee, 0x45, 0x72, 0x36, 0x9e, 0x6a, 0x60, 0xf9, - 0x3c, 0xc9, 0x7f, 0x87, 0xc9, 0x0a, 0xa8, 0xf5, 0x55, 0x33, 0x67, 0x91, 0xd7, 0x6b, 0x15, 0xdc, - 0x1d, 0x50, 0xd2, 0x8b, 0xb8, 0xdf, 0x0a, 0xa0, 0xb6, 0xd5, 0xe0, 0xe4, 0x08, 0x71, 0xfc, 0xb0, - 0xcd, 0x71, 0x1c, 0xa2, 0xa6, 0x93, 0xbe, 0x77, 0xbb, 0xb4, 0x71, 0x28, 0x64, 0xe0, 0xa5, 0x07, - 0xea, 0xec, 0xac, 0x8c, 0x5f, 0x3e, 0x2b, 0x42, 0x9b, 0x53, 0x25, 0x72, 0x95, 0x02, 0xe4, 0xc2, - 0x3c, 0x54, 0x11, 0x1f, 0x29, 0xe9, 0x29, 0x2b, 0xe9, 0x3d, 0x6b, 0x6d, 0x5c, 0x47, 0x29, 0xa7, - 0xa5, 0xa9, 0xaa, 0x00, 0xbc, 0x0f, 0x66, 0x32, 0xf5, 0x76, 0x3d, 0xd4, 0x61, 0x52, 0x9a, 0x0b, - 0x76, 0xa5, 0x17, 0xa9, 0xef, 0xda, 0x70, 0xa6, 0xb3, 0xe7, 0x6d, 0xd4, 0x61, 0x70, 0x13, 0x4c, - 0x2a, 0xe1, 0xa5, 0xb1, 0x94, 0xd8, 0x49, 0xbb, 0xdc, 0x4d, 0xf4, 0x39, 0x65, 0x9a, 0x5d, 0x19, - 0x4e, 0x0f, 0x06, 0xbf, 0x02, 0x4b, 0x01, 0x09, 0xdd, 0x26, 0x6d, 0x1c, 0xb6, 0x22, 0xa9, 0x9e, - 0x2e, 0xc3, 0x0d, 0x1a, 0x7a, 0x4c, 0x2a, 0x70, 0xc1, 0x36, 0xba, 0x89, 0x5e, 0x4b, 0x3d, 0x0c, - 0x01, 0x1a, 0x4e, 0x39, 0x20, 0xe1, 0xae, 0xbc, 0x10, 0x72, 0xfb, 0x99, 0x3a, 0x5e, 0x03, 0xab, - 0xa3, 0x5b, 0x9d, 0x4f, 0xc5, 0x9f, 0x05, 0xf0, 0xca, 0x10, 0x68, 0x3a, 0xec, 0x2f, 0x3d, 0x13, - 0xf7, 0xc1, 0x1c, 0x6e, 0x73, 0x1c, 0x7a, 0xd8, 0x73, 0x3f, 0x45, 0x24, 0x76, 0x77, 0x46, 0xce, - 0x46, 0x29, 0x03, 0x0b, 0xec, 0xff, 0x23, 0xf2, 0x8f, 0x8d, 0xc8, 0x2a, 0xb8, 0x3b, 0xaa, 0xef, - 0xd9, 0x80, 0x6c, 0xfe, 0x31, 0x01, 0x0a, 0x75, 0xe6, 0x43, 0x0c, 0xa6, 0xce, 0x7e, 0x9e, 0xad, - 0x0e, 0x5b, 0xdd, 0xfd, 0xdb, 0xb6, 0x6a, 0x5e, 0x0d, 0x97, 0x85, 0x83, 0x07, 0x60, 0x32, 0x17, - 0xb1, 0xe1, 0x41, 0xfa, 0x57, 0x47, 0x75, 0x63, 0x44, 0x90, 0xc1, 0x5b, 0x06, 0xb6, 0xc1, 0xec, - 0x39, 0xc9, 0x84, 0xf7, 0x86, 0x79, 0x19, 0xb4, 0xae, 0xaa, 0xef, 0x8d, 0x88, 0x39, 0x6a, 0xbf, - 0xc1, 0x36, 0x98, 0x3f, 0x2b, 0xd3, 0xe9, 0x5b, 0xf6, 0xd6, 0xe5, 0x99, 0xe6, 0x8a, 0x5e, 0x7d, - 0xf7, 0x4a, 0xe9, 0x5e, 0xd8, 0x00, 0xf0, 0x3b, 0x0d, 0x2c, 0x5d, 0xdc, 0x13, 0x29, 0x81, 0x8d, - 0xab, 0x26, 0xdf, 0xa3, 0xf1, 0xc1, 0x35, 0x2a, 0x70, 0x91, 0xcc, 0xb1, 0x06, 0x16, 0x87, 0xac, - 0xa1, 0xa1, 0xf9, 0x8d, 0xd6, 0xb4, 0xea, 0x87, 0x2f, 0x66, 0x77, 0xb6, 0x3e, 0xe5, 0x81, 0x1a, - 0xf8, 0xce, 0x35, 0x1d, 0x5f, 0x52, 0x9f, 0xab, 0xbc, 0x77, 0xf6, 0x27, 0xcf, 0x4e, 0x6a, 0xda, - 0xf3, 0x93, 0x9a, 0xf6, 0xeb, 0x49, 0x4d, 0x3b, 0x3e, 0xad, 0x8d, 0x3d, 0x3f, 0xad, 0x8d, 0xfd, - 0x7c, 0x5a, 0x1b, 0xfb, 0x7a, 0xa3, 0x4f, 0xbe, 0x44, 0x84, 0x75, 0x7a, 0x70, 0x40, 0x1a, 0x04, - 0x35, 0xd5, 0xb3, 0xd5, 0xfb, 0x77, 0x4c, 0xaa, 0xd9, 0xfe, 0x84, 0xfc, 0x86, 0x7f, 0xfb, 0xef, - 0x00, 0x00, 0x00, 0xff, 0xff, 0xf0, 0xd5, 0x31, 0x31, 0x3c, 0x0e, 0x00, 0x00, + // 1024 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x56, 0xcf, 0x73, 0xdb, 0x44, + 0x14, 0xb6, 0x6a, 0x37, 0x6d, 0x36, 0x89, 0x93, 0x2a, 0x6e, 0xea, 0xb8, 0x20, 0x19, 0x51, 0x82, + 0x0f, 0x44, 0x9a, 0x04, 0x86, 0x03, 0x43, 0x61, 0xa2, 0xa6, 0x53, 0x3c, 0xc4, 0x33, 0x8c, 0xc8, + 0xf0, 0xeb, 0xa2, 0x59, 0x5b, 0x1b, 0x75, 0x27, 0x92, 0x56, 0xd5, 0xae, 0x43, 0x7c, 0xe4, 0xd4, + 0x19, 0x86, 0x43, 0x8e, 0xfc, 0x05, 0x9c, 0xf8, 0x43, 0x7a, 0xec, 0x0d, 0x4e, 0x82, 0x49, 0x4e, + 0x70, 0xf4, 0x81, 0x03, 0x27, 0x66, 0x57, 0x2b, 0x39, 0x4e, 0x6d, 0x97, 0xa6, 0xc3, 0xc0, 0x81, + 0x93, 0xad, 0x7d, 0xdf, 0x7b, 0xef, 0x7b, 0xfb, 0x3e, 0x7f, 0x16, 0xd0, 0x7b, 0x24, 0xf4, 0xd0, + 0xb1, 0x95, 0xa0, 0xaf, 0x61, 0xe2, 0x51, 0xeb, 0x68, 0xab, 0x8b, 0x18, 0xdc, 0xb2, 0xd8, 0xb1, + 0x19, 0x27, 0x84, 0x11, 0x75, 0x2d, 0x03, 0x98, 0x12, 0x60, 0x4a, 0x40, 0xa3, 0xe6, 0x13, 0x9f, + 0x08, 0x88, 0xc5, 0xbf, 0x65, 0xe8, 0x86, 0xd6, 0x23, 0x34, 0x24, 0xd4, 0xea, 0x42, 0x8a, 0x8a, + 0x5a, 0x3d, 0x82, 0xa3, 0x3c, 0xee, 0x13, 0xe2, 0x07, 0xc8, 0x12, 0x4f, 0xdd, 0xfe, 0x81, 0xe5, + 0xf5, 0x13, 0xc8, 0x30, 0xc9, 0xe3, 0xc6, 0x14, 0x3a, 0x3e, 0xec, 0xfb, 0x48, 0x62, 0xf4, 0x8b, + 0x35, 0x18, 0x0e, 0x11, 0x65, 0x30, 0x8c, 0x33, 0x80, 0xf1, 0x53, 0x05, 0x54, 0x3b, 0xd4, 0xbf, + 0x97, 0x20, 0xc8, 0xd0, 0x03, 0x9e, 0xa9, 0xbe, 0x0e, 0x2a, 0x07, 0x09, 0x09, 0xeb, 0x4a, 0x53, + 0x69, 0xcd, 0xdb, 0xcb, 0xc3, 0x54, 0x5f, 0x18, 0xc0, 0x30, 0x78, 0xcf, 0xe0, 0xa7, 0x86, 0x23, + 0x82, 0xaa, 0x01, 0x96, 0x44, 0x1f, 0x97, 0x0d, 0x62, 0xe4, 0x62, 0xaf, 0x7e, 0xa5, 0xa9, 0xb4, + 0x2a, 0xce, 0x82, 0x38, 0xdc, 0x1f, 0xc4, 0xa8, 0xed, 0xa9, 0x8f, 0x15, 0xb0, 0xc2, 0x12, 0xec, + 0xfb, 0x28, 0x71, 0x73, 0xee, 0xf5, 0x72, 0x53, 0x69, 0x2d, 0x6c, 0xaf, 0x9b, 0x19, 0x31, 0x33, + 0x27, 0x66, 0xee, 0x4a, 0x80, 0xbd, 0xf3, 0x24, 0xd5, 0x4b, 0xbf, 0xa7, 0x7a, 0xe3, 0x62, 0xea, + 0x5b, 0x24, 0xc4, 0x0c, 0x85, 0x31, 0x1b, 0x0c, 0x53, 0xfd, 0x56, 0x46, 0xe9, 0x22, 0xc6, 0xf8, + 0xfe, 0x17, 0x5d, 0x71, 0x96, 0xe5, 0x71, 0x5e, 0x53, 0x7d, 0x04, 0xaa, 0x1e, 0x8a, 0x09, 0xc5, + 0xcc, 0x85, 0x21, 0xe9, 0x47, 0xac, 0x5e, 0x91, 0x34, 0xb2, 0x1d, 0x98, 0x7c, 0x07, 0xf9, 0xba, + 0xcc, 0x7b, 0x04, 0x47, 0xb6, 0xc5, 0x69, 0xfc, 0x99, 0xea, 0x6f, 0xfa, 0x98, 0x3d, 0xec, 0x77, + 0xcd, 0x1e, 0x09, 0x2d, 0xb9, 0xb0, 0xec, 0x63, 0x93, 0x7a, 0x87, 0x16, 0x9f, 0x9e, 0x8a, 0x04, + 0x67, 0x49, 0x76, 0xd8, 0x11, 0x0d, 0xd4, 0x37, 0x40, 0x95, 0x11, 0x06, 0x03, 0x57, 0x72, 0xa1, + 0xf5, 0xab, 0xe2, 0x86, 0x96, 0xc4, 0xe9, 0xbe, 0x3c, 0x54, 0xbf, 0x00, 0x80, 0x32, 0x98, 0x30, + 0x97, 0x2f, 0xa6, 0x3e, 0x27, 0x58, 0x35, 0x9e, 0xb9, 0x9c, 0xfd, 0x7c, 0x6b, 0xf6, 0xab, 0x9c, + 0xd6, 0x30, 0xd5, 0x6f, 0x64, 0xf3, 0x8f, 0x72, 0x8d, 0x13, 0x3e, 0xf9, 0xbc, 0x38, 0xe0, 0x70, + 0xd5, 0x05, 0xab, 0x01, 0x7e, 0xd4, 0xc7, 0x1e, 0x66, 0x03, 0x37, 0x44, 0x0c, 0xba, 0x1e, 0x64, + 0xb0, 0x7e, 0x4d, 0xb4, 0xd8, 0x34, 0x27, 0x4b, 0xd5, 0xdc, 0x13, 0x29, 0x6c, 0x20, 0xa4, 0xd0, + 0x41, 0x0c, 0xee, 0x42, 0x06, 0x3f, 0x2a, 0x39, 0x37, 0x8a, 0x5a, 0xf9, 0xa1, 0x7a, 0x13, 0xcc, + 0xc1, 0x38, 0xe6, 0xbb, 0xbf, 0x2e, 0x26, 0xbb, 0x0a, 0xe3, 0xb8, 0xed, 0xd9, 0x73, 0xa0, 0x72, + 0x88, 0x23, 0xcf, 0xa8, 0x83, 0xb5, 0x71, 0x61, 0x39, 0x88, 0xc6, 0x24, 0xa2, 0xc8, 0xf8, 0x41, + 0x01, 0xd5, 0xcf, 0x1f, 0x62, 0x86, 0x02, 0x4c, 0xd9, 0x0e, 0xa5, 0x88, 0xa9, 0x1f, 0x82, 0x2a, + 0xaf, 0x15, 0xc2, 0x38, 0xc6, 0x91, 0xcf, 0x6b, 0x72, 0xf5, 0x55, 0xec, 0xf5, 0x61, 0xaa, 0xdf, + 0xcc, 0x46, 0x1d, 0x8f, 0x1b, 0xce, 0x22, 0x8c, 0xe3, 0x4e, 0xf6, 0xdc, 0xf6, 0x0a, 0xd1, 0x5e, + 0x99, 0x25, 0x5a, 0x13, 0x5c, 0x87, 0xbc, 0x1d, 0xaf, 0x5f, 0x6e, 0x96, 0x5b, 0x15, 0x7b, 0x75, + 0x98, 0xea, 0xcb, 0xb2, 0xbe, 0x8c, 0x18, 0xce, 0x35, 0xf1, 0xb5, 0xed, 0x19, 0x3f, 0x2a, 0xa0, + 0xe6, 0xa0, 0x90, 0x1c, 0xa1, 0xff, 0x00, 0x5d, 0xe5, 0xb9, 0x74, 0x6f, 0x83, 0xf5, 0x0e, 0xf5, + 0xc7, 0xa9, 0x16, 0x97, 0xfe, 0x1a, 0xd0, 0x3b, 0xd4, 0x9f, 0x34, 0x4d, 0x01, 0xf9, 0x46, 0x01, + 0xab, 0xa3, 0x10, 0x5f, 0xe6, 0x67, 0xb0, 0x1f, 0x30, 0xf5, 0xfe, 0x94, 0x69, 0xf5, 0x61, 0xaa, + 0xdf, 0x9e, 0x34, 0xad, 0x7b, 0xc4, 0xf3, 0x2e, 0x33, 0xb3, 0xf1, 0x58, 0x01, 0xeb, 0x17, 0x49, + 0xfe, 0x3b, 0x4c, 0x9a, 0x40, 0x1b, 0xbb, 0xcd, 0x82, 0x45, 0x71, 0x5f, 0x1b, 0xe0, 0xce, 0x84, + 0x2b, 0x7d, 0x16, 0xf7, 0x5b, 0x19, 0x68, 0x3b, 0x3d, 0x86, 0x8f, 0x20, 0x43, 0xf7, 0x8f, 0x19, + 0x4a, 0x22, 0x18, 0x38, 0xd9, 0xef, 0x6e, 0x8f, 0xf4, 0x0e, 0xb9, 0x0d, 0xbc, 0xb4, 0xa0, 0xce, + 0x6b, 0xe5, 0xca, 0xf3, 0xb5, 0xc2, 0xbd, 0x39, 0x73, 0x22, 0x57, 0x3a, 0x40, 0x61, 0xcc, 0x53, + 0x1d, 0xf1, 0x81, 0xb4, 0x9e, 0x9a, 0xb4, 0xde, 0xf3, 0xd9, 0xc6, 0x8b, 0x38, 0xe5, 0xa2, 0x48, + 0x95, 0x37, 0xa0, 0xde, 0x05, 0x4b, 0xb9, 0x7b, 0xbb, 0x1e, 0x1c, 0x50, 0x61, 0xcd, 0x65, 0xbb, + 0x3e, 0xea, 0x34, 0x16, 0x36, 0x9c, 0xc5, 0xfc, 0x79, 0x17, 0x0e, 0xa8, 0xba, 0x0d, 0xe6, 0xa5, + 0xf1, 0x92, 0x44, 0x58, 0xec, 0xbc, 0x5d, 0x1b, 0xa6, 0xfa, 0x8a, 0x4c, 0xcd, 0x43, 0x86, 0x33, + 0x82, 0xa9, 0x5f, 0x82, 0x5b, 0x21, 0x8e, 0xdc, 0x80, 0xf4, 0x0e, 0xfb, 0xb1, 0x70, 0x4f, 0x97, + 0xa2, 0x1e, 0x89, 0x3c, 0x2a, 0x1c, 0xb8, 0x6c, 0x1b, 0xc3, 0x54, 0xd7, 0xb2, 0x0a, 0x53, 0x80, + 0x86, 0x53, 0x0b, 0x71, 0xb4, 0x27, 0x02, 0xdc, 0x6e, 0x3f, 0x95, 0xc7, 0x2d, 0xb0, 0x31, 0x7b, + 0xd5, 0x85, 0x2a, 0xfe, 0x28, 0x83, 0x57, 0xa6, 0x40, 0x33, 0xb1, 0xbf, 0xb4, 0x26, 0xee, 0x82, + 0x15, 0x74, 0xcc, 0x50, 0xe4, 0x21, 0xcf, 0xfd, 0x04, 0xe2, 0xc4, 0x6d, 0xcf, 0xd4, 0x46, 0x35, + 0x07, 0x73, 0xec, 0xff, 0x12, 0xf9, 0xc7, 0x24, 0xb2, 0x01, 0xee, 0xcc, 0xda, 0x7b, 0x2e, 0x90, + 0xed, 0xef, 0xca, 0xa0, 0xdc, 0xa1, 0xbe, 0x8a, 0xc0, 0xc2, 0xf9, 0xd7, 0xb3, 0x8d, 0x69, 0x7f, + 0xdd, 0xe3, 0xff, 0xb6, 0x0d, 0xf3, 0xef, 0xe1, 0xf2, 0x76, 0xea, 0x89, 0x02, 0xd6, 0xa6, 0xb8, + 0xd3, 0xbb, 0xd3, 0x4a, 0xcd, 0x96, 0x7a, 0xe3, 0x83, 0xcb, 0xe5, 0x15, 0x94, 0xbe, 0x55, 0x40, + 0x6d, 0xe2, 0x4f, 0xe3, 0x9d, 0x17, 0x2c, 0x2c, 0xb2, 0x1a, 0xef, 0x5f, 0x26, 0x2b, 0x27, 0x63, + 0x7f, 0xfc, 0xe4, 0x54, 0x53, 0x9e, 0x9e, 0x6a, 0xca, 0xaf, 0xa7, 0x9a, 0x72, 0x72, 0xa6, 0x95, + 0x9e, 0x9e, 0x69, 0xa5, 0x9f, 0xcf, 0xb4, 0xd2, 0x57, 0x5b, 0x63, 0xaa, 0xe6, 0x1d, 0x36, 0xc9, + 0xc1, 0x01, 0xee, 0x61, 0x18, 0xc8, 0x67, 0x6b, 0xf4, 0x96, 0x2e, 0x44, 0xde, 0x9d, 0x13, 0xaf, + 0x76, 0x6f, 0xff, 0x15, 0x00, 0x00, 0xff, 0xff, 0x79, 0x6b, 0x20, 0x9b, 0x53, 0x0c, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. @@ -914,10 +909,6 @@ const _ = grpc.SupportPackageIsVersion4 // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. type MsgClient interface { CreateGauge(ctx context.Context, in *MsgCreateGauge, opts ...grpc.CallOption) (*MsgCreateGaugeResponse, error) - Whitelist(ctx context.Context, in *WhitelistAsset, opts ...grpc.CallOption) (*MsgWhitelistAssetResponse, error) - RemoveWhitelist(ctx context.Context, in *RemoveWhitelistAsset, opts ...grpc.CallOption) (*MsgRemoveWhitelistAssetResponse, error) - WhitelistAppVault(ctx context.Context, in *WhitelistAppIdVault, opts ...grpc.CallOption) (*MsgWhitelistAppIdVaultResponse, error) - RemoveWhitelistAppVault(ctx context.Context, in *RemoveWhitelistAppIdVault, opts ...grpc.CallOption) (*MsgRemoveWhitelistAppIdVaultResponse, error) ExternalRewardsLockers(ctx context.Context, in *ActivateExternalRewardsLockers, opts ...grpc.CallOption) (*ActivateExternalRewardsLockersResponse, error) ExternalRewardsVault(ctx context.Context, in *ActivateExternalRewardsVault, opts ...grpc.CallOption) (*ActivateExternalRewardsVaultResponse, error) } @@ -939,42 +930,6 @@ func (c *msgClient) CreateGauge(ctx context.Context, in *MsgCreateGauge, opts .. return out, nil } -func (c *msgClient) Whitelist(ctx context.Context, in *WhitelistAsset, opts ...grpc.CallOption) (*MsgWhitelistAssetResponse, error) { - out := new(MsgWhitelistAssetResponse) - err := c.cc.Invoke(ctx, "/comdex.rewards.v1beta1.Msg/Whitelist", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *msgClient) RemoveWhitelist(ctx context.Context, in *RemoveWhitelistAsset, opts ...grpc.CallOption) (*MsgRemoveWhitelistAssetResponse, error) { - out := new(MsgRemoveWhitelistAssetResponse) - err := c.cc.Invoke(ctx, "/comdex.rewards.v1beta1.Msg/RemoveWhitelist", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *msgClient) WhitelistAppVault(ctx context.Context, in *WhitelistAppIdVault, opts ...grpc.CallOption) (*MsgWhitelistAppIdVaultResponse, error) { - out := new(MsgWhitelistAppIdVaultResponse) - err := c.cc.Invoke(ctx, "/comdex.rewards.v1beta1.Msg/WhitelistAppVault", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *msgClient) RemoveWhitelistAppVault(ctx context.Context, in *RemoveWhitelistAppIdVault, opts ...grpc.CallOption) (*MsgRemoveWhitelistAppIdVaultResponse, error) { - out := new(MsgRemoveWhitelistAppIdVaultResponse) - err := c.cc.Invoke(ctx, "/comdex.rewards.v1beta1.Msg/RemoveWhitelistAppVault", in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - func (c *msgClient) ExternalRewardsLockers(ctx context.Context, in *ActivateExternalRewardsLockers, opts ...grpc.CallOption) (*ActivateExternalRewardsLockersResponse, error) { out := new(ActivateExternalRewardsLockersResponse) err := c.cc.Invoke(ctx, "/comdex.rewards.v1beta1.Msg/ExternalRewardsLockers", in, out, opts...) @@ -996,10 +951,6 @@ func (c *msgClient) ExternalRewardsVault(ctx context.Context, in *ActivateExtern // MsgServer is the server API for Msg service. type MsgServer interface { CreateGauge(context.Context, *MsgCreateGauge) (*MsgCreateGaugeResponse, error) - Whitelist(context.Context, *WhitelistAsset) (*MsgWhitelistAssetResponse, error) - RemoveWhitelist(context.Context, *RemoveWhitelistAsset) (*MsgRemoveWhitelistAssetResponse, error) - WhitelistAppVault(context.Context, *WhitelistAppIdVault) (*MsgWhitelistAppIdVaultResponse, error) - RemoveWhitelistAppVault(context.Context, *RemoveWhitelistAppIdVault) (*MsgRemoveWhitelistAppIdVaultResponse, error) ExternalRewardsLockers(context.Context, *ActivateExternalRewardsLockers) (*ActivateExternalRewardsLockersResponse, error) ExternalRewardsVault(context.Context, *ActivateExternalRewardsVault) (*ActivateExternalRewardsVaultResponse, error) } @@ -1011,18 +962,6 @@ type UnimplementedMsgServer struct { func (*UnimplementedMsgServer) CreateGauge(ctx context.Context, req *MsgCreateGauge) (*MsgCreateGaugeResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method CreateGauge not implemented") } -func (*UnimplementedMsgServer) Whitelist(ctx context.Context, req *WhitelistAsset) (*MsgWhitelistAssetResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method Whitelist not implemented") -} -func (*UnimplementedMsgServer) RemoveWhitelist(ctx context.Context, req *RemoveWhitelistAsset) (*MsgRemoveWhitelistAssetResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method RemoveWhitelist not implemented") -} -func (*UnimplementedMsgServer) WhitelistAppVault(ctx context.Context, req *WhitelistAppIdVault) (*MsgWhitelistAppIdVaultResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method WhitelistAppVault not implemented") -} -func (*UnimplementedMsgServer) RemoveWhitelistAppVault(ctx context.Context, req *RemoveWhitelistAppIdVault) (*MsgRemoveWhitelistAppIdVaultResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method RemoveWhitelistAppVault not implemented") -} func (*UnimplementedMsgServer) ExternalRewardsLockers(ctx context.Context, req *ActivateExternalRewardsLockers) (*ActivateExternalRewardsLockersResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method ExternalRewardsLockers not implemented") } @@ -1052,78 +991,6 @@ func _Msg_CreateGauge_Handler(srv interface{}, ctx context.Context, dec func(int return interceptor(ctx, in, info, handler) } -func _Msg_Whitelist_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(WhitelistAsset) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(MsgServer).Whitelist(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/comdex.rewards.v1beta1.Msg/Whitelist", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MsgServer).Whitelist(ctx, req.(*WhitelistAsset)) - } - return interceptor(ctx, in, info, handler) -} - -func _Msg_RemoveWhitelist_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(RemoveWhitelistAsset) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(MsgServer).RemoveWhitelist(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/comdex.rewards.v1beta1.Msg/RemoveWhitelist", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MsgServer).RemoveWhitelist(ctx, req.(*RemoveWhitelistAsset)) - } - return interceptor(ctx, in, info, handler) -} - -func _Msg_WhitelistAppVault_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(WhitelistAppIdVault) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(MsgServer).WhitelistAppVault(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/comdex.rewards.v1beta1.Msg/WhitelistAppVault", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MsgServer).WhitelistAppVault(ctx, req.(*WhitelistAppIdVault)) - } - return interceptor(ctx, in, info, handler) -} - -func _Msg_RemoveWhitelistAppVault_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(RemoveWhitelistAppIdVault) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(MsgServer).RemoveWhitelistAppVault(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: "/comdex.rewards.v1beta1.Msg/RemoveWhitelistAppVault", - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(MsgServer).RemoveWhitelistAppVault(ctx, req.(*RemoveWhitelistAppIdVault)) - } - return interceptor(ctx, in, info, handler) -} - func _Msg_ExternalRewardsLockers_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(ActivateExternalRewardsLockers) if err := dec(in); err != nil { @@ -1168,22 +1035,6 @@ var _Msg_serviceDesc = grpc.ServiceDesc{ MethodName: "CreateGauge", Handler: _Msg_CreateGauge_Handler, }, - { - MethodName: "Whitelist", - Handler: _Msg_Whitelist_Handler, - }, - { - MethodName: "RemoveWhitelist", - Handler: _Msg_RemoveWhitelist_Handler, - }, - { - MethodName: "WhitelistAppVault", - Handler: _Msg_WhitelistAppVault_Handler, - }, - { - MethodName: "RemoveWhitelistAppVault", - Handler: _Msg_RemoveWhitelistAppVault_Handler, - }, { MethodName: "ExternalRewardsLockers", Handler: _Msg_ExternalRewardsLockers_Handler, diff --git a/x/tokenmint/genesis.go b/x/tokenmint/genesis.go index 8619f902b..02d3ebf9b 100644 --- a/x/tokenmint/genesis.go +++ b/x/tokenmint/genesis.go @@ -6,19 +6,18 @@ import ( sdk "github.com/cosmos/cosmos-sdk/types" ) -// InitGenesis initializes the capability module's state from a provided genesis -// state. -func InitGenesis(ctx sdk.Context, k keeper.Keeper, genState types.GenesisState) { - // this line is used by starport scaffolding # genesis/module/init - k.SetParams(ctx, genState.Params) -} +func InitGenesis(ctx sdk.Context, k keeper.Keeper, state *types.GenesisState) { -// ExportGenesis returns the capability module's exported genesis. -func ExportGenesis(ctx sdk.Context, k keeper.Keeper) *types.GenesisState { - genesis := types.DefaultGenesis() - genesis.Params = k.GetParams(ctx) + k.SetParams(ctx, state.Params) - // this line is used by starport scaffolding # genesis/module/export + for _, item := range state.TokenMint { + k.SetTokenMint(ctx, item) + } +} - return genesis +func ExportGenesis(ctx sdk.Context, k keeper.Keeper) *types.GenesisState { + return types.NewGenesisState( + k.GetTotalTokenMinted(ctx), + k.GetParams(ctx), + ) } diff --git a/x/tokenmint/keeper/alias.go b/x/tokenmint/keeper/alias.go index 898f67363..86a40b15d 100644 --- a/x/tokenmint/keeper/alias.go +++ b/x/tokenmint/keeper/alias.go @@ -7,15 +7,15 @@ import ( assettypes "github.com/comdex-official/comdex/x/asset/types" ) -func (k *Keeper) BurnCoin(ctx sdk.Context, name string, coin sdk.Coin) error { +func (k Keeper) BurnCoin(ctx sdk.Context, name string, coin sdk.Coin) error { if coin.IsZero() { - return nil + return types.BurnCoinValueInTokenmintIsZero } return k.bank.BurnCoins(ctx, name, sdk.NewCoins(coin)) } -func (k *Keeper) MintCoin(ctx sdk.Context, name string, coin sdk.Coin) error { +func (k Keeper) MintCoin(ctx sdk.Context, name string, coin sdk.Coin) error { if coin.IsZero() { return types.ErrorMintingGenesisSupplyLessThanOne } @@ -23,48 +23,48 @@ func (k *Keeper) MintCoin(ctx sdk.Context, name string, coin sdk.Coin) error { return k.bank.MintCoins(ctx, name, sdk.NewCoins(coin)) } -func (k *Keeper) SendCoinFromAccountToModule(ctx sdk.Context, address sdk.AccAddress, name string, coin sdk.Coin) error { +func (k Keeper) SendCoinFromAccountToModule(ctx sdk.Context, address sdk.AccAddress, name string, coin sdk.Coin) error { if coin.IsZero() { - return nil + return types.SendCoinsFromAccountToModuleInTokenmintIsZero } return k.bank.SendCoinsFromAccountToModule(ctx, address, name, sdk.NewCoins(coin)) } -func (k *Keeper) SendCoinFromModuleToAccount(ctx sdk.Context, name string, address sdk.AccAddress, coin sdk.Coin) error { +func (k Keeper) SendCoinFromModuleToAccount(ctx sdk.Context, name string, address sdk.AccAddress, coin sdk.Coin) error { if coin.IsZero() { - return nil + return types.SendCoinsFromModuleToAccountInTokenmintIsZero } return k.bank.SendCoinsFromModuleToAccount(ctx, name, address, sdk.NewCoins(coin)) } -func (k *Keeper) SendCoinFromModuleToModule(ctx sdk.Context, senderModule, recipientModule string, coin sdk.Coins) error { +func (k Keeper) SendCoinFromModuleToModule(ctx sdk.Context, senderModule, recipientModule string, coin sdk.Coins) error { if coin.IsZero() { - return nil + return types.SendCoinsFromModuleToModuleInTokenmintIsZero } return k.bank.SendCoinsFromModuleToModule(ctx, senderModule, recipientModule, coin) } -func (k *Keeper) SpendableCoins(ctx sdk.Context, address sdk.AccAddress) sdk.Coins { +func (k Keeper) SpendableCoins(ctx sdk.Context, address sdk.AccAddress) sdk.Coins { return k.bank.SpendableCoins(ctx, address) } -func (k *Keeper) GetAsset(ctx sdk.Context, id uint64) (assettypes.Asset, bool) { +func (k Keeper) GetAsset(ctx sdk.Context, id uint64) (assettypes.Asset, bool) { return k.asset.GetAsset(ctx, id) } -func (k *Keeper) GetApp(ctx sdk.Context, id uint64) (assettypes.AppData, bool) { +func (k Keeper) GetApp(ctx sdk.Context, id uint64) (assettypes.AppData, bool) { return k.asset.GetApp(ctx, id) } -func (k *Keeper) GetApps(ctx sdk.Context) ([]assettypes.AppData, bool) { +func (k Keeper) GetApps(ctx sdk.Context) ([]assettypes.AppData, bool) { return k.asset.GetApps(ctx) } -func (k *Keeper) GetMintGenesisTokenData(ctx sdk.Context, appID, assetID uint64) (assettypes.MintGenesisToken, bool) { +func (k Keeper) GetMintGenesisTokenData(ctx sdk.Context, appID, assetID uint64) (assettypes.MintGenesisToken, bool) { return k.asset.GetMintGenesisTokenData(ctx, appID, assetID) } -func (k *Keeper) GetAssetForDenom(ctx sdk.Context, denom string) (assettypes.Asset, bool) { +func (k Keeper) GetAssetForDenom(ctx sdk.Context, denom string) (assettypes.Asset, bool) { return k.asset.GetAssetForDenom(ctx, denom) } diff --git a/x/tokenmint/keeper/keeper.go b/x/tokenmint/keeper/keeper.go index 4c8ccaf0e..ea363b23d 100644 --- a/x/tokenmint/keeper/keeper.go +++ b/x/tokenmint/keeper/keeper.go @@ -26,10 +26,10 @@ func NewKeeper(cdc codec.BinaryCodec, key sdk.StoreKey, bank expected.BankKeeper } } -func (k *Keeper) Logger(ctx sdk.Context) log.Logger { +func (k Keeper) Logger(ctx sdk.Context) log.Logger { return ctx.Logger().With("module", fmt.Sprintf("x/%s", types.ModuleName)) } -func (k *Keeper) Store(ctx sdk.Context) sdk.KVStore { +func (k Keeper) Store(ctx sdk.Context) sdk.KVStore { return ctx.KVStore(k.key) } diff --git a/x/tokenmint/keeper/mint.go b/x/tokenmint/keeper/mint.go index 2a448aa2a..bff07cd77 100644 --- a/x/tokenmint/keeper/mint.go +++ b/x/tokenmint/keeper/mint.go @@ -6,7 +6,7 @@ import ( "github.com/comdex-official/comdex/x/tokenmint/types" ) -func (k *Keeper) SetTokenMint(ctx sdk.Context, appTokenMintData types.TokenMint) { +func (k Keeper) SetTokenMint(ctx sdk.Context, appTokenMintData types.TokenMint) { var ( store = k.Store(ctx) key = types.TokenMintKey(appTokenMintData.AppId) @@ -16,7 +16,7 @@ func (k *Keeper) SetTokenMint(ctx sdk.Context, appTokenMintData types.TokenMint) store.Set(key, value) } -func (k *Keeper) GetTokenMint(ctx sdk.Context, appMappingID uint64) (appTokenMintData types.TokenMint, found bool) { +func (k Keeper) GetTokenMint(ctx sdk.Context, appMappingID uint64) (appTokenMintData types.TokenMint, found bool) { var ( store = k.Store(ctx) key = types.TokenMintKey(appMappingID) @@ -31,7 +31,7 @@ func (k *Keeper) GetTokenMint(ctx sdk.Context, appMappingID uint64) (appTokenMin return appTokenMintData, true } -func (k *Keeper) GetTotalTokenMinted(ctx sdk.Context) (appTokenMintData []types.TokenMint) { +func (k Keeper) GetTotalTokenMinted(ctx sdk.Context) (appTokenMintData []types.TokenMint) { var ( store = k.Store(ctx) iter = sdk.KVStorePrefixIterator(store, types.TokenMintKeyPrefix) @@ -53,7 +53,7 @@ func (k *Keeper) GetTotalTokenMinted(ctx sdk.Context) (appTokenMintData []types. return appTokenMintData } -func (k *Keeper) GetAssetDataInTokenMintByApp(ctx sdk.Context, appMappingID uint64, assetID uint64) (tokenData types.MintedTokens, found bool) { +func (k Keeper) GetAssetDataInTokenMintByApp(ctx sdk.Context, appMappingID uint64, assetID uint64) (tokenData types.MintedTokens, found bool) { mintData, found := k.GetTokenMint(ctx, appMappingID) if !found { return tokenData, false @@ -68,7 +68,7 @@ func (k *Keeper) GetAssetDataInTokenMintByApp(ctx sdk.Context, appMappingID uint return tokenData, false } -func (k *Keeper) GetAssetDataInTokenMintByAppSupply(ctx sdk.Context, appMappingID uint64, assetID uint64) (tokenDataSupply int64, found bool) { +func (k Keeper) GetAssetDataInTokenMintByAppSupply(ctx sdk.Context, appMappingID uint64, assetID uint64) (tokenDataSupply int64, found bool) { tokenData, found := k.GetAssetDataInTokenMintByApp(ctx, appMappingID, assetID) if !found { @@ -77,7 +77,7 @@ func (k *Keeper) GetAssetDataInTokenMintByAppSupply(ctx sdk.Context, appMappingI return tokenData.CurrentSupply.Int64(), found } -func (k *Keeper) MintNewTokensForApp(ctx sdk.Context, appMappingID uint64, assetID uint64, address string, amount sdk.Int) error { +func (k Keeper) MintNewTokensForApp(ctx sdk.Context, appMappingID uint64, assetID uint64, address string, amount sdk.Int) error { assetData, found := k.GetAsset(ctx, assetID) if !found { return types.ErrorAssetDoesNotExist @@ -107,7 +107,7 @@ func (k *Keeper) MintNewTokensForApp(ctx sdk.Context, appMappingID uint64, asset return nil } -func (k *Keeper) BurnTokensForApp(ctx sdk.Context, appMappingID uint64, assetID uint64, amount sdk.Int) error { +func (k Keeper) BurnTokensForApp(ctx sdk.Context, appMappingID uint64, assetID uint64, amount sdk.Int) error { assetData, found := k.GetAsset(ctx, assetID) if !found { return types.ErrorAssetDoesNotExist @@ -135,7 +135,7 @@ func (k *Keeper) BurnTokensForApp(ctx sdk.Context, appMappingID uint64, assetID return nil } -func (k *Keeper) UpdateAssetDataInTokenMintByApp(ctx sdk.Context, appMappingID uint64, assetID uint64, changeType bool, amount sdk.Int) { +func (k Keeper) UpdateAssetDataInTokenMintByApp(ctx sdk.Context, appMappingID uint64, assetID uint64, changeType bool, amount sdk.Int) { //ChangeType + == add to current supply //Change type - == reduce from supply mintData, found := k.GetTokenMint(ctx, appMappingID) @@ -156,7 +156,7 @@ func (k *Keeper) UpdateAssetDataInTokenMintByApp(ctx sdk.Context, appMappingID u } } -func (k *Keeper) BurnGovTokensForApp(ctx sdk.Context, appMappingID uint64, from sdk.AccAddress, amount sdk.Coin) error { +func (k Keeper) BurnGovTokensForApp(ctx sdk.Context, appMappingID uint64, from sdk.AccAddress, amount sdk.Coin) error { _, found := k.GetApp(ctx, appMappingID) if !found { return types.ErrorAppMappingDoesNotExists @@ -173,7 +173,7 @@ func (k *Keeper) BurnGovTokensForApp(ctx sdk.Context, appMappingID uint64, from return nil } -func (k *Keeper) BurnFrom(ctx sdk.Context, amount sdk.Coin, burnFrom sdk.AccAddress) error { +func (k Keeper) BurnFrom(ctx sdk.Context, amount sdk.Coin, burnFrom sdk.AccAddress) error { err := k.SendCoinFromAccountToModule(ctx, burnFrom, types.ModuleName, diff --git a/x/tokenmint/keeper/mint_test.go b/x/tokenmint/keeper/mint_test.go index 64023a019..39e300072 100644 --- a/x/tokenmint/keeper/mint_test.go +++ b/x/tokenmint/keeper/mint_test.go @@ -11,7 +11,7 @@ func (s *KeeperTestSuite) AddAppAsset() { userAddress := "cosmos1q7q90qsl9g0gl2zz0njxwv2a649yqrtyxtnv3v" genesisSupply := sdk.NewIntFromUint64(9000000) assetKeeper, ctx := &s.assetKeeper, &s.ctx - msg1 := []assetTypes.AppData{{ + msg1 := assetTypes.AppData{ Name: "cswap", ShortName: "cswap", MinGovDeposit: sdk.NewIntFromUint64(10000000), @@ -19,49 +19,59 @@ func (s *KeeperTestSuite) AddAppAsset() { GenesisToken: []assetTypes.MintGenesisToken{ { 3, - &genesisSupply, + genesisSupply, true, userAddress, }, { 2, - &genesisSupply, + genesisSupply, true, userAddress, }, }, - }, - { - Name: "commodo", - ShortName: "commodo", - MinGovDeposit: sdk.NewIntFromUint64(10000000), - GovTimeInSeconds: 900, - GenesisToken: []assetTypes.MintGenesisToken{ - { - 3, - &genesisSupply, - true, - userAddress, - }, + } + err := assetKeeper.AddAppRecords(*ctx, msg1) + s.Require().NoError(err) + + msg2 := assetTypes.AppData{ + Name: "commodo", + ShortName: "comdo", + MinGovDeposit: sdk.NewIntFromUint64(10000000), + GovTimeInSeconds: 900, + GenesisToken: []assetTypes.MintGenesisToken{ + { + 3, + genesisSupply, + true, + userAddress, }, }, } - err := assetKeeper.AddAppRecords(*ctx, msg1...) + err = assetKeeper.AddAppRecords(*ctx, msg2) s.Require().NoError(err) - msg2 := []assetTypes.Asset{ - {Name: "CMDX", - Denom: "ucmdx", - Decimals: 1000000, - IsOnChain: true}, {Name: "CMST", - Denom: "ucmst", - Decimals: 1000000, - IsOnChain: true}, {Name: "HARBOR", - Denom: "uharbor", - Decimals: 1000000, - IsOnChain: true}, - } - err = assetKeeper.AddAssetRecords(*ctx, msg2...) + msg3 := assetTypes.Asset{Name: "CMDX", + Denom: "ucmdx", + Decimals: 1000000, + IsOnChain: true} + + err = assetKeeper.AddAssetRecords(*ctx, msg3) + s.Require().NoError(err) + + msg4 := assetTypes.Asset{Name: "CMST", + Denom: "ucmst", + Decimals: 1000000, + IsOnChain: true} + err = assetKeeper.AddAssetRecords(*ctx, msg4) + s.Require().NoError(err) + + msg5 := assetTypes.Asset{Name: "HARBOR", + Denom: "uharbor", + Decimals: 1000000, + IsOnChain: true} + + err = assetKeeper.AddAssetRecords(*ctx, msg5) s.Require().NoError(err) } diff --git a/x/tokenmint/keeper/msg_server.go b/x/tokenmint/keeper/msg_server.go index 328de2989..155d3504f 100644 --- a/x/tokenmint/keeper/msg_server.go +++ b/x/tokenmint/keeper/msg_server.go @@ -7,7 +7,7 @@ import ( ) var ( - _ types.MsgServer = (*msgServer)(nil) + _ types.MsgServer = msgServer{} ) type msgServer struct { @@ -20,7 +20,7 @@ func NewMsgServer(keeper Keeper) types.MsgServer { } } -func (k *msgServer) MsgMintNewTokens(c context.Context, msg *types.MsgMintNewTokensRequest) (*types.MsgMintNewTokensResponse, error) { +func (k msgServer) MsgMintNewTokens(c context.Context, msg *types.MsgMintNewTokensRequest) (*types.MsgMintNewTokensResponse, error) { ctx := sdk.UnwrapSDKContext(c) assetData, found := k.GetAsset(ctx, msg.AssetId) if !found { @@ -42,7 +42,7 @@ func (k *msgServer) MsgMintNewTokens(c context.Context, msg *types.MsgMintNewTok var newTokenMintAppData types.MintedTokens var appData types.TokenMint - if err := k.MintCoin(ctx, types.ModuleName, sdk.NewCoin(assetData.Denom, *assetDataInApp.GenesisSupply)); err != nil { + if err := k.MintCoin(ctx, types.ModuleName, sdk.NewCoin(assetData.Denom, assetDataInApp.GenesisSupply)); err != nil { return nil, err } userAddress, err := sdk.AccAddressFromBech32(assetDataInApp.Recipient) @@ -50,13 +50,15 @@ func (k *msgServer) MsgMintNewTokens(c context.Context, msg *types.MsgMintNewTok if err != nil { return nil, err } - if err := k.SendCoinFromModuleToAccount(ctx, types.ModuleName, userAddress, sdk.NewCoin(assetData.Denom, *assetDataInApp.GenesisSupply)); err != nil { - return nil, err + if assetDataInApp.GenesisSupply.GT(sdk.ZeroInt()) { + if err := k.SendCoinFromModuleToAccount(ctx, types.ModuleName, userAddress, sdk.NewCoin(assetData.Denom, assetDataInApp.GenesisSupply)); err != nil { + return nil, err + } } newTokenMintAppData.AssetId = msg.AssetId newTokenMintAppData.CreatedAt = ctx.BlockTime() - newTokenMintAppData.GenesisSupply = *assetDataInApp.GenesisSupply + newTokenMintAppData.GenesisSupply = assetDataInApp.GenesisSupply newTokenMintAppData.CurrentSupply = newTokenMintAppData.GenesisSupply appData.AppId = appMappingData.Id @@ -74,22 +76,24 @@ func (k *msgServer) MsgMintNewTokens(c context.Context, msg *types.MsgMintNewTok if err != nil { return nil, err } - - if err := k.MintCoin(ctx, types.ModuleName, sdk.NewCoin(assetData.Denom, *assetDataInApp.GenesisSupply)); err != nil { - return nil, err - } - - if err := k.SendCoinFromModuleToAccount(ctx, types.ModuleName, userAddress, sdk.NewCoin(assetData.Denom, *assetDataInApp.GenesisSupply)); err != nil { - return nil, err + if assetDataInApp.GenesisSupply.GT(sdk.ZeroInt()) { + if err := k.MintCoin(ctx, types.ModuleName, sdk.NewCoin(assetData.Denom, assetDataInApp.GenesisSupply)); err != nil { + return nil, err + } + if err := k.SendCoinFromModuleToAccount(ctx, types.ModuleName, userAddress, sdk.NewCoin(assetData.Denom, assetDataInApp.GenesisSupply)); err != nil { + return nil, err + } } var newTokenMintAppData types.MintedTokens newTokenMintAppData.AssetId = msg.AssetId newTokenMintAppData.CreatedAt = ctx.BlockTime() - newTokenMintAppData.GenesisSupply = *assetDataInApp.GenesisSupply + newTokenMintAppData.GenesisSupply = assetDataInApp.GenesisSupply newTokenMintAppData.CurrentSupply = newTokenMintAppData.GenesisSupply mintData.MintedTokens = append(mintData.MintedTokens, &newTokenMintAppData) k.SetTokenMint(ctx, mintData) } + ctx.GasMeter().ConsumeGas(types.TokenmintGas, "TokenmintGas") + return &types.MsgMintNewTokensResponse{}, nil } diff --git a/x/tokenmint/keeper/query_server.go b/x/tokenmint/keeper/query_server.go index ca4e041e6..d9fcccee1 100644 --- a/x/tokenmint/keeper/query_server.go +++ b/x/tokenmint/keeper/query_server.go @@ -8,7 +8,7 @@ import ( ) var ( - _ types.QueryServer = (*QueryServer)(nil) + _ types.QueryServer = QueryServer{} ) type QueryServer struct { @@ -21,7 +21,7 @@ func NewQueryServer(k Keeper) types.QueryServer { } } -func (q *QueryServer) QueryAllTokenMintedForAllApps(c context.Context, req *types.QueryAllTokenMintedForAllAppsRequest) (*types.QueryAllTokenMintedForAllAppsResponse, error) { +func (q QueryServer) QueryAllTokenMintedForAllApps(c context.Context, req *types.QueryAllTokenMintedForAllAppsRequest) (*types.QueryAllTokenMintedForAllAppsResponse, error) { var ( ctx = sdk.UnwrapSDKContext(c) ) @@ -32,7 +32,7 @@ func (q *QueryServer) QueryAllTokenMintedForAllApps(c context.Context, req *type }, nil } -func (q *QueryServer) QueryTokenMintedByApp(c context.Context, req *types.QueryTokenMintedByAppRequest) (*types.QueryTokenMintedByAppResponse, error) { +func (q QueryServer) QueryTokenMintedByApp(c context.Context, req *types.QueryTokenMintedByAppRequest) (*types.QueryTokenMintedByAppResponse, error) { var ( ctx = sdk.UnwrapSDKContext(c) ) @@ -46,7 +46,7 @@ func (q *QueryServer) QueryTokenMintedByApp(c context.Context, req *types.QueryT }, nil } -func (q *QueryServer) QueryTokenMintedByAppAndAsset(c context.Context, req *types.QueryTokenMintedByAppAndAssetRequest) (*types.QueryTokenMintedByAppAndAssetResponse, error) { +func (q QueryServer) QueryTokenMintedByAppAndAsset(c context.Context, req *types.QueryTokenMintedByAppAndAssetRequest) (*types.QueryTokenMintedByAppAndAssetResponse, error) { var ( ctx = sdk.UnwrapSDKContext(c) ) diff --git a/x/tokenmint/module.go b/x/tokenmint/module.go index 57f8d8e1d..ffe90e68a 100644 --- a/x/tokenmint/module.go +++ b/x/tokenmint/module.go @@ -55,7 +55,7 @@ func (a AppModuleBasic) RegisterInterfaces(reg cdctypes.InterfaceRegistry) { // DefaultGenesis returns the capability module's default genesis state. func (AppModuleBasic) DefaultGenesis(cdc codec.JSONCodec) json.RawMessage { - return cdc.MustMarshalJSON(types.DefaultGenesis()) + return cdc.MustMarshalJSON(types.DefaultGenesisState()) } // ValidateGenesis performs genesis state validation for the capability module. @@ -147,7 +147,7 @@ func (am AppModule) InitGenesis(ctx sdk.Context, cdc codec.JSONCodec, gs json.Ra // Initialize global index to index in genesis state cdc.MustUnmarshalJSON(gs, &genState) - InitGenesis(ctx, am.keeper, genState) + InitGenesis(ctx, am.keeper, &genState) return []abci.ValidatorUpdate{} } diff --git a/x/tokenmint/types/errors.go b/x/tokenmint/types/errors.go index 9e303f80a..7b25c8b9f 100644 --- a/x/tokenmint/types/errors.go +++ b/x/tokenmint/types/errors.go @@ -11,11 +11,15 @@ var ( ) var ( - ErrorAssetDoesNotExist = errors.Register(ModuleName, 201, "Asset Does not exists") - ErrorAppMappingDoesNotExists = errors.Register(ModuleName, 202, "App Mapping Does Not exists") - ErrorAssetNotWhiteListedForGenesisMinting = errors.Register(ModuleName, 203, "Asset not added in appMapping data for genesis minting") - ErrorGenesisMintingForTokenAlreadyDone = errors.Register(ModuleName, 204, "Asset minting already done for the given app") - ErrorBurningMakesSupplyLessThanZero = errors.Register(ModuleName, 205, "Burning request reduces the the supply to 0 or less than 0 tokens") - ErrorMintDataNotFound = errors.Register(ModuleName, 206, "minted data not found") - ErrorMintingGenesisSupplyLessThanOne = errors.Register(ModuleName, 207, "Mint genesis supply should be greater than zero") + ErrorAssetDoesNotExist = errors.Register(ModuleName, 201, "Asset Does not exists") + ErrorAppMappingDoesNotExists = errors.Register(ModuleName, 202, "App Mapping Does Not exists") + ErrorAssetNotWhiteListedForGenesisMinting = errors.Register(ModuleName, 203, "Asset not added in appMapping data for genesis minting") + ErrorGenesisMintingForTokenAlreadyDone = errors.Register(ModuleName, 204, "Asset minting already done for the given app") + ErrorBurningMakesSupplyLessThanZero = errors.Register(ModuleName, 205, "Burning request reduces the the supply to 0 or less than 0 tokens") + ErrorMintDataNotFound = errors.Register(ModuleName, 206, "minted data not found") + ErrorMintingGenesisSupplyLessThanOne = errors.Register(ModuleName, 207, "Mint genesis supply should be greater than zero") + BurnCoinValueInTokenmintIsZero = errors.Register(ModuleName, 208, "Burn Coin value in tokenmint is zero") + SendCoinsFromModuleToModuleInTokenmintIsZero = errors.Register(ModuleName, 209, "Coin value in module to module transfer in tokenmint is zero") + SendCoinsFromModuleToAccountInTokenmintIsZero = errors.Register(ModuleName, 210, "Coin value in module to account transfer in tokenmint is zero") + SendCoinsFromAccountToModuleInTokenmintIsZero = errors.Register(ModuleName, 211, "Coin value in account to module transfer in tokenmint is zero") ) diff --git a/x/tokenmint/types/genesis.go b/x/tokenmint/types/genesis.go index 080b57552..2bf4c52e5 100644 --- a/x/tokenmint/types/genesis.go +++ b/x/tokenmint/types/genesis.go @@ -1,18 +1,18 @@ package types -// DefaultIndex is the default capability global index. -const DefaultIndex uint64 = 1 - -// DefaultGenesis returns the default Capability genesis state. -func DefaultGenesis() *GenesisState { +func NewGenesisState(tokenMint []TokenMint, params Params) *GenesisState { return &GenesisState{ - // this line is used by starport scaffolding # genesis/types/default - Params: DefaultParams(), + TokenMint: tokenMint, + Params: params, } } -// Validate performs basic genesis state validation returning an error upon any -// failure. +func DefaultGenesisState() *GenesisState { + return NewGenesisState( + []TokenMint{}, + DefaultParams(), + ) +} func (gs GenesisState) Validate() error { // this line is used by starport scaffolding # genesis/types/validate diff --git a/x/tokenmint/types/genesis.pb.go b/x/tokenmint/types/genesis.pb.go index 4b1ce9df1..e78f4f3bd 100644 --- a/x/tokenmint/types/genesis.pb.go +++ b/x/tokenmint/types/genesis.pb.go @@ -25,7 +25,8 @@ const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package // GenesisState defines the tokenmint module's genesis state. type GenesisState struct { - Params Params `protobuf:"bytes,1,opt,name=params,proto3" json:"params"` + TokenMint []TokenMint `protobuf:"bytes,1,rep,name=tokenMint,proto3" json:"tokenMint" yaml:"tokenMint"` + Params Params `protobuf:"bytes,2,opt,name=params,proto3" json:"params"` } func (m *GenesisState) Reset() { *m = GenesisState{} } @@ -61,6 +62,13 @@ func (m *GenesisState) XXX_DiscardUnknown() { var xxx_messageInfo_GenesisState proto.InternalMessageInfo +func (m *GenesisState) GetTokenMint() []TokenMint { + if m != nil { + return m.TokenMint + } + return nil +} + func (m *GenesisState) GetParams() Params { if m != nil { return m.Params @@ -77,20 +85,24 @@ func init() { } var fileDescriptor_835633eef4f5454d = []byte{ - // 206 bytes of a gzipped FileDescriptorProto + // 259 bytes of a gzipped FileDescriptorProto 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x52, 0x4b, 0xce, 0xcf, 0x4d, 0x49, 0xad, 0xd0, 0x2f, 0xc9, 0xcf, 0x4e, 0xcd, 0xcb, 0xcd, 0xcc, 0x2b, 0xd1, 0x2f, 0x33, 0x4c, 0x4a, 0x2d, 0x49, 0x34, 0xd4, 0x4f, 0x4f, 0xcd, 0x4b, 0x2d, 0xce, 0x2c, 0xd6, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x92, 0x80, 0xa8, 0xd3, 0x83, 0xab, 0xd3, 0x83, 0xaa, 0x93, 0x12, 0x49, 0xcf, - 0x4f, 0xcf, 0x07, 0x2b, 0xd2, 0x07, 0xb1, 0x20, 0xea, 0xa5, 0x54, 0x71, 0x9a, 0x5b, 0x90, 0x58, - 0x94, 0x98, 0x0b, 0x35, 0x56, 0xc9, 0x8f, 0x8b, 0xc7, 0x1d, 0x62, 0x4f, 0x70, 0x49, 0x62, 0x49, - 0xaa, 0x90, 0x1d, 0x17, 0x1b, 0x44, 0x5e, 0x82, 0x51, 0x81, 0x51, 0x83, 0xdb, 0x48, 0x41, 0x0f, - 0x97, 0xbd, 0x7a, 0x01, 0x60, 0x75, 0x4e, 0x2c, 0x27, 0xee, 0xc9, 0x33, 0x04, 0x41, 0x75, 0x39, - 0xf9, 0x9e, 0x78, 0x24, 0xc7, 0x78, 0xe1, 0x91, 0x1c, 0xe3, 0x83, 0x47, 0x72, 0x8c, 0x13, 0x1e, - 0xcb, 0x31, 0x5c, 0x78, 0x2c, 0xc7, 0x70, 0xe3, 0xb1, 0x1c, 0x43, 0x94, 0x71, 0x7a, 0x66, 0x49, - 0x46, 0x69, 0x12, 0xc8, 0x3c, 0x7d, 0x88, 0x99, 0xba, 0xf9, 0x69, 0x69, 0x99, 0xc9, 0x99, 0x89, - 0x39, 0x50, 0xbe, 0x3e, 0xb2, 0x6b, 0x4b, 0x2a, 0x0b, 0x52, 0x8b, 0x93, 0xd8, 0xc0, 0xae, 0x34, - 0x06, 0x04, 0x00, 0x00, 0xff, 0xff, 0x46, 0xce, 0xcb, 0x52, 0x26, 0x01, 0x00, 0x00, + 0x4f, 0xcf, 0x07, 0x2b, 0xd2, 0x07, 0xb1, 0x20, 0xea, 0xa5, 0x94, 0x71, 0x9a, 0x0b, 0xd6, 0x0c, + 0x51, 0xa4, 0x8a, 0x53, 0x51, 0x41, 0x62, 0x51, 0x62, 0x2e, 0xd4, 0x6e, 0xa5, 0xd5, 0x8c, 0x5c, + 0x3c, 0xee, 0x10, 0xd7, 0x04, 0x97, 0x24, 0x96, 0xa4, 0x0a, 0x45, 0x73, 0x71, 0x82, 0xb5, 0xf8, + 0x66, 0xe6, 0x95, 0x48, 0x30, 0x2a, 0x30, 0x6b, 0x70, 0x1b, 0x29, 0xeb, 0xe1, 0x72, 0xa0, 0x5e, + 0x08, 0x4c, 0xa9, 0x93, 0xc4, 0x89, 0x7b, 0xf2, 0x0c, 0x9f, 0xee, 0xc9, 0x0b, 0x54, 0x26, 0xe6, + 0xe6, 0x58, 0x29, 0xc1, 0xcd, 0x50, 0x0a, 0x42, 0x98, 0x27, 0x64, 0xc7, 0xc5, 0x06, 0xb1, 0x5d, + 0x82, 0x49, 0x81, 0x51, 0x83, 0xdb, 0x48, 0x01, 0xb7, 0xc9, 0x01, 0x60, 0x75, 0x4e, 0x2c, 0x20, + 0x63, 0x83, 0xa0, 0xba, 0x9c, 0x7c, 0x4f, 0x3c, 0x92, 0x63, 0xbc, 0xf0, 0x48, 0x8e, 0xf1, 0xc1, + 0x23, 0x39, 0xc6, 0x09, 0x8f, 0xe5, 0x18, 0x2e, 0x3c, 0x96, 0x63, 0xb8, 0xf1, 0x58, 0x8e, 0x21, + 0xca, 0x38, 0x3d, 0xb3, 0x24, 0xa3, 0x34, 0x09, 0x64, 0x9e, 0x3e, 0xc4, 0x4c, 0xdd, 0xfc, 0xb4, + 0xb4, 0xcc, 0xe4, 0xcc, 0xc4, 0x1c, 0x28, 0x5f, 0x1f, 0x39, 0x2c, 0x4a, 0x2a, 0x0b, 0x52, 0x8b, + 0x93, 0xd8, 0xc0, 0x61, 0x60, 0x0c, 0x08, 0x00, 0x00, 0xff, 0xff, 0xea, 0x9e, 0x67, 0xdc, 0xa9, + 0x01, 0x00, 0x00, } func (m *GenesisState) Marshal() (dAtA []byte, err error) { @@ -122,7 +134,21 @@ func (m *GenesisState) MarshalToSizedBuffer(dAtA []byte) (int, error) { i = encodeVarintGenesis(dAtA, i, uint64(size)) } i-- - dAtA[i] = 0xa + dAtA[i] = 0x12 + if len(m.TokenMint) > 0 { + for iNdEx := len(m.TokenMint) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.TokenMint[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0xa + } + } return len(dAtA) - i, nil } @@ -143,6 +169,12 @@ func (m *GenesisState) Size() (n int) { } var l int _ = l + if len(m.TokenMint) > 0 { + for _, e := range m.TokenMint { + l = e.Size() + n += 1 + l + sovGenesis(uint64(l)) + } + } l = m.Params.Size() n += 1 + l + sovGenesis(uint64(l)) return n @@ -184,6 +216,40 @@ func (m *GenesisState) Unmarshal(dAtA []byte) error { } switch fieldNum { case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field TokenMint", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.TokenMint = append(m.TokenMint, TokenMint{}) + if err := m.TokenMint[len(m.TokenMint)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 2: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Params", wireType) } diff --git a/x/tokenmint/types/genesis_test.go b/x/tokenmint/types/genesis_test.go index 727b00b8f..e2f286808 100644 --- a/x/tokenmint/types/genesis_test.go +++ b/x/tokenmint/types/genesis_test.go @@ -15,7 +15,7 @@ func TestGenesisState_Validate(t *testing.T) { }{ { desc: "default is valid", - genState: types.DefaultGenesis(), + genState: types.DefaultGenesisState(), valid: true, }, { diff --git a/x/tokenmint/types/params.go b/x/tokenmint/types/params.go index d42af3ced..caf7a479a 100644 --- a/x/tokenmint/types/params.go +++ b/x/tokenmint/types/params.go @@ -1,12 +1,17 @@ package types import ( + sdk "github.com/cosmos/cosmos-sdk/types" paramtypes "github.com/cosmos/cosmos-sdk/x/params/types" "gopkg.in/yaml.v2" ) var _ paramtypes.ParamSet = (*Params)(nil) +const ( + TokenmintGas = sdk.Gas(66329) +) + // ParamKeyTable the param key table for launch module. func ParamKeyTable() paramtypes.KeyTable { return paramtypes.NewKeyTable().RegisterParamSet(&Params{}) diff --git a/x/vault/client/testutil/suite.go b/x/vault/client/testutil/suite.go index 01844ddee..b28374b26 100644 --- a/x/vault/client/testutil/suite.go +++ b/x/vault/client/testutil/suite.go @@ -81,16 +81,16 @@ func (s *VaultIntegrationTestSuite) TearDownSuite() { } func (s *VaultIntegrationTestSuite) Create() { - appID := s.CreateNewApp("appOne") + appID := s.CreateNewApp("appone") assetInID := s.CreateNewAsset("asset1", "denom1", 2000000) assetOutID := s.CreateNewAsset("asset2", "denom2", 1000000) pairID := s.CreateNewPair(assetInID, assetOutID) extendedVaultPairID := s.CreateNewExtendedVaultPair("CMDX C", appID, pairID) - _, err := MsgCreate(s.val.ClientCtx, appID, extendedVaultPairID, sdk.NewInt(3), sdk.NewInt(2), s.val.Address.String()) + _, _ = MsgCreate(s.val.ClientCtx, appID, extendedVaultPairID, sdk.NewInt(3), sdk.NewInt(2), s.val.Address.String()) // s.Require().NoError(err) - err = s.network.WaitForNextBlock() + err := s.network.WaitForNextBlock() s.Require().NoError(err) } diff --git a/x/vault/expected/keeper.go b/x/vault/expected/keeper.go index 9ca3ddcc0..c88f8bfa1 100644 --- a/x/vault/expected/keeper.go +++ b/x/vault/expected/keeper.go @@ -36,7 +36,7 @@ type CollectorKeeper interface { } type EsmKeeper interface { - GetKillSwitchData(ctx sdk.Context, app_id uint64) (esmtypes.KillSwitchParams, bool) + GetKillSwitchData(ctx sdk.Context, appID uint64) (esmtypes.KillSwitchParams, bool) GetESMStatus(ctx sdk.Context, id uint64) (esmStatus esmtypes.ESMStatus, found bool) GetESMMarketForAsset(ctx sdk.Context, id uint64) (esmMarket esmtypes.ESMMarketPrice, found bool) GetESMTriggerParams(ctx sdk.Context, id uint64) (esmTriggerParams esmtypes.ESMTriggerParams, found bool) diff --git a/x/vault/genesis.go b/x/vault/genesis.go index e96c8b6e1..114647525 100644 --- a/x/vault/genesis.go +++ b/x/vault/genesis.go @@ -8,22 +8,32 @@ import ( ) func InitGenesis(ctx sdk.Context, k keeper.Keeper, state *types.GenesisState) { - // for _, item := range state.Vaults { - // k.SetVault(ctx, item) - // } - - // id := uint64(0) - // for _, item := range state.Vaults { - // if item.ID > id { - // id = item.ID - // } - // } - - // k.SetID(ctx, id) + + for _, item := range state.Vaults { + k.SetVault(ctx, item) + } + + for _, item := range state.StableMintVault { + k.SetStableMintVault(ctx, item) + } + + for _, item := range state.AppExtendedPairVaultMapping { + err := k.SetAppExtendedPairVaultMapping(ctx, item) + if err != nil { + return + } + } + + for _, item := range state.UserVaultAssetMapping { + k.SetUserVaultExtendedPairMapping(ctx, item) + } } func ExportGenesis(ctx sdk.Context, k keeper.Keeper) *types.GenesisState { return types.NewGenesisState( k.GetVaults(ctx), + k.GetStableMintVaults(ctx), + k.GetAllAppExtendedPairVaultMapping(ctx), + k.GetAllUserVaultExtendedPairMapping(ctx), ) } diff --git a/x/vault/handler_test.go b/x/vault/handler_test.go index b3a0c556d..9b69ecb36 100644 --- a/x/vault/handler_test.go +++ b/x/vault/handler_test.go @@ -37,7 +37,7 @@ func TestInvalidMsg(t *testing.T) { func (s *ModuleTestSuite) TestMsgCreate() { handler := vault.NewHandler(s.keeper) addr1 := s.addr(1) - appID1 := s.CreateNewApp("appOne") + appID1 := s.CreateNewApp("appone") asseOneID := s.CreateNewAsset("ASSET1", "uasset1", 1000000) asseTwoID := s.CreateNewAsset("ASSET2", "uasset2", 2000000) pairID := s.CreateNewPair(addr1, asseOneID, asseTwoID) @@ -57,7 +57,7 @@ func (s *ModuleTestSuite) TestMsgCreate() { vaults := s.keeper.GetVaults(s.ctx) s.Require().Len(vaults, 1) - s.Require().Equal("appOne1", vaults[0].Id) + s.Require().Equal("appone1", vaults[0].Id) s.Require().Equal(addr1.String(), vaults[0].Owner) s.Require().Equal(msg.AmountIn, vaults[0].AmountIn) s.Require().Equal(msg.AmountOut, vaults[0].AmountOut) @@ -69,7 +69,7 @@ func (s *ModuleTestSuite) TestMsgDeposit() { handler := vault.NewHandler(s.keeper) addr1 := s.addr(1) - appID1 := s.CreateNewApp("appOne") + appID1 := s.CreateNewApp("appone") asseOneID := s.CreateNewAsset("ASSET1", "uasset1", 1000000) asseTwoID := s.CreateNewAsset("ASSET2", "uasset2", 2000000) pairID := s.CreateNewPair(addr1, asseOneID, asseTwoID) @@ -82,7 +82,7 @@ func (s *ModuleTestSuite) TestMsgDeposit() { s.Require().NoError(err) msgDeposit := types.NewMsgDepositRequest( - addr1, appID1, extendedVaultPairID1, "appOne1", sdk.NewInt(69000000), + addr1, appID1, extendedVaultPairID1, "appone1", sdk.NewInt(69000000), ) s.fundAddr(sdk.MustAccAddressFromBech32(addr1.String()), sdk.NewCoins(sdk.NewCoin("uasset1", msgDeposit.Amount))) @@ -91,7 +91,7 @@ func (s *ModuleTestSuite) TestMsgDeposit() { vaults := s.keeper.GetVaults(s.ctx) s.Require().Len(vaults, 1) - s.Require().Equal("appOne1", vaults[0].Id) + s.Require().Equal("appone1", vaults[0].Id) s.Require().Equal(addr1.String(), vaults[0].Owner) s.Require().Equal(msgCreate.AmountIn.Add(msgDeposit.Amount), vaults[0].AmountIn) s.Require().Equal(msgCreate.AmountOut, vaults[0].AmountOut) @@ -103,7 +103,7 @@ func (s *ModuleTestSuite) TestMsgWithdraw() { handler := vault.NewHandler(s.keeper) addr1 := s.addr(1) - appID1 := s.CreateNewApp("appOne") + appID1 := s.CreateNewApp("appone") asseOneID := s.CreateNewAsset("ASSET1", "uasset1", 1000000) asseTwoID := s.CreateNewAsset("ASSET2", "uasset2", 2000000) pairID := s.CreateNewPair(addr1, asseOneID, asseTwoID) @@ -116,14 +116,14 @@ func (s *ModuleTestSuite) TestMsgWithdraw() { s.Require().NoError(err) msgWithdraw := types.NewMsgWithdrawRequest( - addr1, appID1, extendedVaultPairID1, "appOne1", sdk.NewInt(50000000), + addr1, appID1, extendedVaultPairID1, "appone1", sdk.NewInt(50000000), ) _, err = handler(s.ctx, msgWithdraw) s.Require().NoError(err) vaults := s.keeper.GetVaults(s.ctx) s.Require().Len(vaults, 1) - s.Require().Equal("appOne1", vaults[0].Id) + s.Require().Equal("appone1", vaults[0].Id) s.Require().Equal(addr1.String(), vaults[0].Owner) s.Require().Equal(msgCreate.AmountIn.Sub(msgWithdraw.Amount), vaults[0].AmountIn) s.Require().Equal(msgCreate.AmountOut, vaults[0].AmountOut) @@ -135,7 +135,7 @@ func (s *ModuleTestSuite) TestMsgDraw() { handler := vault.NewHandler(s.keeper) addr1 := s.addr(1) - appID1 := s.CreateNewApp("appOne") + appID1 := s.CreateNewApp("appone") asseOneID := s.CreateNewAsset("ASSET1", "uasset1", 1000000) asseTwoID := s.CreateNewAsset("ASSET2", "uasset2", 2000000) pairID := s.CreateNewPair(addr1, asseOneID, asseTwoID) @@ -148,14 +148,14 @@ func (s *ModuleTestSuite) TestMsgDraw() { s.Require().NoError(err) msgDraw := types.NewMsgDrawRequest( - addr1, appID1, extendedVaultPairID1, "appOne1", sdk.NewInt(10000000), + addr1, appID1, extendedVaultPairID1, "appone1", sdk.NewInt(10000000), ) _, err = handler(s.ctx, msgDraw) s.Require().NoError(err) vaults := s.keeper.GetVaults(s.ctx) s.Require().Len(vaults, 1) - s.Require().Equal("appOne1", vaults[0].Id) + s.Require().Equal("appone1", vaults[0].Id) s.Require().Equal(addr1.String(), vaults[0].Owner) s.Require().Equal(msgCreate.AmountIn, vaults[0].AmountIn) s.Require().Equal(msgCreate.AmountOut.Add(msgDraw.Amount), vaults[0].AmountOut) @@ -167,7 +167,7 @@ func (s *ModuleTestSuite) TestMsgRepay() { handler := vault.NewHandler(s.keeper) addr1 := s.addr(1) - appID1 := s.CreateNewApp("appOne") + appID1 := s.CreateNewApp("appone") asseOneID := s.CreateNewAsset("ASSET1", "uasset1", 1000000) asseTwoID := s.CreateNewAsset("ASSET2", "uasset2", 2000000) pairID := s.CreateNewPair(addr1, asseOneID, asseTwoID) @@ -180,14 +180,14 @@ func (s *ModuleTestSuite) TestMsgRepay() { s.Require().NoError(err) msgRepay := types.NewMsgRepayRequest( - addr1, appID1, extendedVaultPairID1, "appOne1", sdk.NewInt(100000000), + addr1, appID1, extendedVaultPairID1, "appone1", sdk.NewInt(100000000), ) _, err = handler(s.ctx, msgRepay) s.Require().NoError(err) vaults := s.keeper.GetVaults(s.ctx) s.Require().Len(vaults, 1) - s.Require().Equal("appOne1", vaults[0].Id) + s.Require().Equal("appone1", vaults[0].Id) s.Require().Equal(addr1.String(), vaults[0].Owner) s.Require().Equal(msgCreate.AmountIn, vaults[0].AmountIn) s.Require().Equal(msgCreate.AmountOut.Sub(msgRepay.Amount), vaults[0].AmountOut) @@ -199,7 +199,7 @@ func (s *ModuleTestSuite) TestMsgClose() { handler := vault.NewHandler(s.keeper) addr1 := s.addr(1) - appID1 := s.CreateNewApp("appOne") + appID1 := s.CreateNewApp("appone") asseOneID := s.CreateNewAsset("ASSET1", "uasset1", 1000000) asseTwoID := s.CreateNewAsset("ASSET2", "uasset2", 2000000) pairID := s.CreateNewPair(addr1, asseOneID, asseTwoID) @@ -214,7 +214,7 @@ func (s *ModuleTestSuite) TestMsgClose() { s.fundAddr(sdk.MustAccAddressFromBech32(addr1.String()), sdk.NewCoins(sdk.NewCoin("uasset2", sdk.NewInt(2000000)))) msgRepay := types.NewMsgLiquidateRequest( - addr1, appID1, extendedVaultPairID1, "appOne1", + addr1, appID1, extendedVaultPairID1, "appone1", ) _, err = handler(s.ctx, msgRepay) s.Require().NoError(err) @@ -227,7 +227,7 @@ func (s *ModuleTestSuite) TestMsgCreateStableMint() { handler := vault.NewHandler(s.keeper) addr1 := s.addr(1) - appID1 := s.CreateNewApp("appOne") + appID1 := s.CreateNewApp("appone") asseOneID := s.CreateNewAsset("ASSET1", "uasset1", 1000000) asseTwoID := s.CreateNewAsset("ASSET2", "uasset2", 2000000) pairID := s.CreateNewPair(addr1, asseOneID, asseTwoID) @@ -242,7 +242,7 @@ func (s *ModuleTestSuite) TestMsgCreateStableMint() { s.Require().NoError(err) stableMintVaults := s.querier.GetStableMintVaults(s.ctx) - s.Require().Equal("appOne1", stableMintVaults[0].Id) + s.Require().Equal("appone1", stableMintVaults[0].Id) s.Require().Equal(msgStableMintCreate.Amount, stableMintVaults[0].AmountIn) s.Require().Equal(msgStableMintCreate.Amount, stableMintVaults[0].AmountOut) s.Require().Equal(appID1, stableMintVaults[0].AppId) @@ -253,7 +253,7 @@ func (s *ModuleTestSuite) TestMsgDepositStableMint() { handler := vault.NewHandler(s.keeper) addr1 := s.addr(1) - appID1 := s.CreateNewApp("appOne") + appID1 := s.CreateNewApp("appone") asseOneID := s.CreateNewAsset("ASSET1", "uasset1", 1000000) asseTwoID := s.CreateNewAsset("ASSET2", "uasset2", 2000000) pairID := s.CreateNewPair(addr1, asseOneID, asseTwoID) @@ -268,7 +268,7 @@ func (s *ModuleTestSuite) TestMsgDepositStableMint() { s.Require().NoError(err) msgStableMintDeposit := types.NewMsgDepositStableMintRequest( - addr1, appID1, extendedVaultPairID1, sdk.NewInt(2000000000), "appOne1", + addr1, appID1, extendedVaultPairID1, sdk.NewInt(2000000000), "appone1", ) s.fundAddr(sdk.MustAccAddressFromBech32(addr1.String()), sdk.NewCoins(sdk.NewCoin("uasset1", msgStableMintDeposit.Amount))) @@ -276,7 +276,7 @@ func (s *ModuleTestSuite) TestMsgDepositStableMint() { s.Require().NoError(err) stableMintVaults := s.querier.GetStableMintVaults(s.ctx) - s.Require().Equal("appOne1", stableMintVaults[0].Id) + s.Require().Equal("appone1", stableMintVaults[0].Id) s.Require().Equal(msgStableMintCreate.Amount.Add(msgStableMintDeposit.Amount), stableMintVaults[0].AmountIn) s.Require().Equal(msgStableMintCreate.Amount.Add(msgStableMintDeposit.Amount), stableMintVaults[0].AmountOut) s.Require().Equal(appID1, stableMintVaults[0].AppId) @@ -287,7 +287,7 @@ func (s *ModuleTestSuite) TestMsgWithdrawStableMint() { handler := vault.NewHandler(s.keeper) addr1 := s.addr(1) - appID1 := s.CreateNewApp("appOne") + appID1 := s.CreateNewApp("appone") asseOneID := s.CreateNewAsset("ASSET1", "uasset1", 1000000) asseTwoID := s.CreateNewAsset("ASSET2", "uasset2", 2000000) pairID := s.CreateNewPair(addr1, asseOneID, asseTwoID) @@ -302,7 +302,7 @@ func (s *ModuleTestSuite) TestMsgWithdrawStableMint() { s.Require().NoError(err) msgStableMintWithdraw := types.NewMsgWithdrawStableMintRequest( - addr1, appID1, extendedVaultPairID1, sdk.NewInt(500000000), "appOne1", + addr1, appID1, extendedVaultPairID1, sdk.NewInt(500000000), "appone1", ) s.fundAddr(sdk.MustAccAddressFromBech32(addr1.String()), sdk.NewCoins(sdk.NewCoin("uasset1", msgStableMintWithdraw.Amount))) @@ -310,7 +310,7 @@ func (s *ModuleTestSuite) TestMsgWithdrawStableMint() { s.Require().NoError(err) stableMintVaults := s.querier.GetStableMintVaults(s.ctx) - s.Require().Equal("appOne1", stableMintVaults[0].Id) + s.Require().Equal("appone1", stableMintVaults[0].Id) s.Require().Equal(sdk.NewInt(505000000), stableMintVaults[0].AmountIn) s.Require().Equal(sdk.NewInt(505000000), stableMintVaults[0].AmountOut) s.Require().Equal(appID1, stableMintVaults[0].AppId) diff --git a/x/vault/keeper/alias.go b/x/vault/keeper/alias.go index 9bc510923..e724bb7b9 100644 --- a/x/vault/keeper/alias.go +++ b/x/vault/keeper/alias.go @@ -5,86 +5,87 @@ import ( assettypes "github.com/comdex-official/comdex/x/asset/types" esmtypes "github.com/comdex-official/comdex/x/esm/types" + vaulttypes "github.com/comdex-official/comdex/x/vault/types" ) -func (k *Keeper) BurnCoin(ctx sdk.Context, name string, coin sdk.Coin) error { +func (k Keeper) BurnCoin(ctx sdk.Context, name string, coin sdk.Coin) error { if coin.IsZero() { - return nil + return vaulttypes.BurnCoinValueInVaultIsZero } return k.bank.BurnCoins(ctx, name, sdk.NewCoins(coin)) } -func (k *Keeper) MintCoin(ctx sdk.Context, name string, coin sdk.Coin) error { +func (k Keeper) MintCoin(ctx sdk.Context, name string, coin sdk.Coin) error { if coin.IsZero() { - return nil + return vaulttypes.MintCoinValueInVaultIsZero } return k.bank.MintCoins(ctx, name, sdk.NewCoins(coin)) } -func (k *Keeper) SendCoinFromAccountToModule(ctx sdk.Context, address sdk.AccAddress, name string, coin sdk.Coin) error { +func (k Keeper) SendCoinFromAccountToModule(ctx sdk.Context, address sdk.AccAddress, name string, coin sdk.Coin) error { if coin.IsZero() { - return nil + return vaulttypes.SendCoinsFromAccountToModuleInVaultIsZero } return k.bank.SendCoinsFromAccountToModule(ctx, address, name, sdk.NewCoins(coin)) } -func (k *Keeper) SendCoinFromModuleToAccount(ctx sdk.Context, name string, address sdk.AccAddress, coin sdk.Coin) error { +func (k Keeper) SendCoinFromModuleToAccount(ctx sdk.Context, name string, address sdk.AccAddress, coin sdk.Coin) error { if coin.IsZero() { - return nil + return vaulttypes.SendCoinsFromModuleToAccountInVaultIsZero } return k.bank.SendCoinsFromModuleToAccount(ctx, name, address, sdk.NewCoins(coin)) } -func (k *Keeper) SendCoinFromModuleToModule(ctx sdk.Context, senderModule, recipientModule string, coin sdk.Coins) error { +func (k Keeper) SendCoinFromModuleToModule(ctx sdk.Context, senderModule, recipientModule string, coin sdk.Coins) error { if coin.IsZero() { - return nil + return vaulttypes.SendCoinsFromModuleToModuleInVaultIsZero } return k.bank.SendCoinsFromModuleToModule(ctx, senderModule, recipientModule, coin) } -func (k *Keeper) SpendableCoins(ctx sdk.Context, address sdk.AccAddress) sdk.Coins { +func (k Keeper) SpendableCoins(ctx sdk.Context, address sdk.AccAddress) sdk.Coins { return k.bank.SpendableCoins(ctx, address) } -func (k *Keeper) GetAsset(ctx sdk.Context, id uint64) (assettypes.Asset, bool) { +func (k Keeper) GetAsset(ctx sdk.Context, id uint64) (assettypes.Asset, bool) { return k.asset.GetAsset(ctx, id) } -func (k *Keeper) GetPair(ctx sdk.Context, id uint64) (assettypes.Pair, bool) { +func (k Keeper) GetPair(ctx sdk.Context, id uint64) (assettypes.Pair, bool) { return k.asset.GetPair(ctx, id) } -func (k *Keeper) GetPriceForAsset(ctx sdk.Context, id uint64) (uint64, bool) { +func (k Keeper) GetPriceForAsset(ctx sdk.Context, id uint64) (uint64, bool) { return k.oracle.GetPriceForAsset(ctx, id) } -func (k *Keeper) GetApp(ctx sdk.Context, id uint64) (assettypes.AppData, bool) { +func (k Keeper) GetApp(ctx sdk.Context, id uint64) (assettypes.AppData, bool) { return k.asset.GetApp(ctx, id) } -func (k *Keeper) GetPairsVault(ctx sdk.Context, pairID uint64) (assettypes.ExtendedPairVault, bool) { +func (k Keeper) GetPairsVault(ctx sdk.Context, pairID uint64) (assettypes.ExtendedPairVault, bool) { return k.asset.GetPairsVault(ctx, pairID) } -func (k *Keeper) UpdateCollector(ctx sdk.Context, appID, assetID uint64, CollectedStabilityFee, CollectedClosingFee, CollectedOpeningFee, LiquidationRewardsCollected sdk.Int) error { +func (k Keeper) UpdateCollector(ctx sdk.Context, appID, assetID uint64, CollectedStabilityFee, CollectedClosingFee, CollectedOpeningFee, LiquidationRewardsCollected sdk.Int) error { return k.collector.UpdateCollector(ctx, appID, assetID, CollectedStabilityFee, CollectedClosingFee, CollectedOpeningFee, LiquidationRewardsCollected) } -func (k *Keeper) GetKillSwitchData(ctx sdk.Context, app_id uint64) (esmtypes.KillSwitchParams, bool) { - return k.esm.GetKillSwitchData(ctx, app_id) +func (k Keeper) GetKillSwitchData(ctx sdk.Context, appID uint64) (esmtypes.KillSwitchParams, bool) { + return k.esm.GetKillSwitchData(ctx, appID) } -func (k *Keeper) GetESMStatus(ctx sdk.Context, id uint64) (esmtypes.ESMStatus, bool) { +func (k Keeper) GetESMStatus(ctx sdk.Context, id uint64) (esmtypes.ESMStatus, bool) { return k.esm.GetESMStatus(ctx, id) } -func (k *Keeper) GetESMMarketForAsset(ctx sdk.Context, id uint64) (esmMarket esmtypes.ESMMarketPrice, found bool) { +func (k Keeper) GetESMMarketForAsset(ctx sdk.Context, id uint64) (esmMarket esmtypes.ESMMarketPrice, found bool) { return k.esm.GetESMMarketForAsset(ctx, id) } -func (k *Keeper) GetESMTriggerParams(ctx sdk.Context, id uint64) (esmTriggerParams esmtypes.ESMTriggerParams, found bool) { +func (k Keeper) GetESMTriggerParams(ctx sdk.Context, id uint64) (esmTriggerParams esmtypes.ESMTriggerParams, found bool) { return k.esm.GetESMTriggerParams(ctx, id) } diff --git a/x/vault/keeper/keeper.go b/x/vault/keeper/keeper.go index a237e3d8f..94dc37a92 100644 --- a/x/vault/keeper/keeper.go +++ b/x/vault/keeper/keeper.go @@ -33,10 +33,10 @@ func NewKeeper(cdc codec.BinaryCodec, key sdk.StoreKey, bank expected.BankKeeper } } -func (k *Keeper) Logger(ctx sdk.Context) log.Logger { +func (k Keeper) Logger(ctx sdk.Context) log.Logger { return ctx.Logger().With("module", fmt.Sprintf("x/%s", types.ModuleName)) } -func (k *Keeper) Store(ctx sdk.Context) sdk.KVStore { +func (k Keeper) Store(ctx sdk.Context) sdk.KVStore { return ctx.KVStore(k.key) } diff --git a/x/vault/keeper/msg_server.go b/x/vault/keeper/msg_server.go index 0450994d1..10d83a84b 100644 --- a/x/vault/keeper/msg_server.go +++ b/x/vault/keeper/msg_server.go @@ -11,7 +11,7 @@ import ( ) var ( - _ types.MsgServer = (*msgServer)(nil) + _ types.MsgServer = msgServer{} ) type msgServer struct { @@ -25,7 +25,7 @@ func NewMsgServer(keeper Keeper) types.MsgServer { } // MsgCreate Creating a new CDP. -func (k *msgServer) MsgCreate(c context.Context, msg *types.MsgCreateRequest) (*types.MsgCreateResponse, error) { +func (k msgServer) MsgCreate(c context.Context, msg *types.MsgCreateRequest) (*types.MsgCreateResponse, error) { ctx := sdk.UnwrapSDKContext(c) esmStatus, found := k.GetESMStatus(ctx, msg.AppId) status := false @@ -35,8 +35,8 @@ func (k *msgServer) MsgCreate(c context.Context, msg *types.MsgCreateRequest) (* if status { return nil, esmtypes.ErrESMAlreadyExecuted } - klwsParams, _ := k.GetKillSwitchData(ctx, msg.AppId) - if klwsParams.BreakerEnable { + killSwitchParams, _ := k.GetKillSwitchData(ctx, msg.AppId) + if killSwitchParams.BreakerEnable { return nil, esmtypes.ErrCircuitBreakerEnabled } extendedPairVault, found := k.GetPairsVault(ctx, msg.ExtendedPairVaultId) @@ -105,9 +105,12 @@ func (k *msgServer) MsgCreate(c context.Context, msg *types.MsgCreateRequest) (* return nil, err } //Take amount from user - if err := k.SendCoinFromAccountToModule(ctx, depositorAddress, types.ModuleName, sdk.NewCoin(assetInData.Denom, msg.AmountIn)); err != nil { - return nil, err + if msg.AmountIn.GT(sdk.ZeroInt()) { + if err := k.SendCoinFromAccountToModule(ctx, depositorAddress, types.ModuleName, sdk.NewCoin(assetInData.Denom, msg.AmountIn)); err != nil { + return nil, err + } } + //Mint Tokens for user if err := k.MintCoin(ctx, types.ModuleName, sdk.NewCoin(assetOutData.Denom, msg.AmountOut)); err != nil { return nil, err @@ -115,7 +118,7 @@ func (k *msgServer) MsgCreate(c context.Context, msg *types.MsgCreateRequest) (* //Send Fees to Accumulator //Deducting Opening Fee if 0 opening fee then act accordingly - if extendedPairVault.DrawDownFee.IsZero() { //Send Rest to user + if extendedPairVault.DrawDownFee.IsZero() && msg.AmountOut.GT(sdk.ZeroInt()) { //Send Rest to user if err := k.SendCoinFromModuleToAccount(ctx, types.ModuleName, depositorAddress, sdk.NewCoin(assetOutData.Denom, msg.AmountOut)); err != nil { return nil, err } @@ -124,18 +127,23 @@ func (k *msgServer) MsgCreate(c context.Context, msg *types.MsgCreateRequest) (* //one approach could be collectorShare := (msg.AmountOut.Mul(sdk.Int(extendedPairVault.DrawDownFee))).Quo(sdk.Int(sdk.OneDec())) - if err := k.SendCoinFromModuleToModule(ctx, types.ModuleName, collectortypes.ModuleName, sdk.NewCoins(sdk.NewCoin(assetOutData.Denom, collectorShare))); err != nil { - return nil, err - } - err := k.UpdateCollector(ctx, appMapping.Id, pairData.AssetOut, sdk.ZeroInt(), sdk.ZeroInt(), collectorShare, sdk.ZeroInt()) - if err != nil { - return nil, err + if collectorShare.GT(sdk.ZeroInt()) { + if err := k.SendCoinFromModuleToModule(ctx, types.ModuleName, collectortypes.ModuleName, sdk.NewCoins(sdk.NewCoin(assetOutData.Denom, collectorShare))); err != nil { + return nil, err + } + + err := k.UpdateCollector(ctx, appMapping.Id, pairData.AssetOut, sdk.ZeroInt(), sdk.ZeroInt(), collectorShare, sdk.ZeroInt()) + if err != nil { + return nil, err + } } // and send the rest to the user amountToUser := msg.AmountOut.Sub(collectorShare) - if err := k.SendCoinFromModuleToAccount(ctx, types.ModuleName, depositorAddress, sdk.NewCoin(assetOutData.Denom, amountToUser)); err != nil { - return nil, err + if amountToUser.GT(sdk.ZeroInt()) { + if err := k.SendCoinFromModuleToAccount(ctx, types.ModuleName, depositorAddress, sdk.NewCoin(assetOutData.Denom, amountToUser)); err != nil { + return nil, err + } } } @@ -146,8 +154,6 @@ func (k *msgServer) MsgCreate(c context.Context, msg *types.MsgCreateRequest) (* newVault.Id = appMapping.ShortName + strconv.FormatUint(updatedCounter, 10) newVault.AmountIn = msg.AmountIn - // closingFeeVal := (sdk.Dec(msg.AmountOut).Mul((extendedPairVault.ClosingFee))) - closingFeeVal := msg.AmountOut.Mul(sdk.Int(extendedPairVault.ClosingFee)).Quo(sdk.Int(sdk.OneDec())) newVault.ClosingFeeAccumulated = closingFeeVal @@ -209,11 +215,13 @@ func (k *msgServer) MsgCreate(c context.Context, msg *types.MsgCreateRequest) (* } } + ctx.GasMeter().ConsumeGas(types.CreateVaultGas, "CreateVaultGas") + return &types.MsgCreateResponse{}, nil } // MsgDeposit Only for depositing new collateral. -func (k *msgServer) MsgDeposit(c context.Context, msg *types.MsgDepositRequest) (*types.MsgDepositResponse, error) { +func (k msgServer) MsgDeposit(c context.Context, msg *types.MsgDepositRequest) (*types.MsgDepositResponse, error) { ctx := sdk.UnwrapSDKContext(c) esmStatus, found := k.GetESMStatus(ctx, msg.AppId) status := false @@ -280,9 +288,10 @@ func (k *msgServer) MsgDeposit(c context.Context, msg *types.MsgDepositRequest) if !userVault.AmountIn.IsPositive() { return nil, types.ErrorInvalidAmount } - - if err := k.SendCoinFromAccountToModule(ctx, depositor, types.ModuleName, sdk.NewCoin(assetInData.Denom, msg.Amount)); err != nil { - return nil, err + if msg.Amount.GT(sdk.ZeroInt()) { + if err := k.SendCoinFromAccountToModule(ctx, depositor, types.ModuleName, sdk.NewCoin(assetInData.Denom, msg.Amount)); err != nil { + return nil, err + } } k.SetVault(ctx, userVault) @@ -290,14 +299,16 @@ func (k *msgServer) MsgDeposit(c context.Context, msg *types.MsgDepositRequest) appExtendedPairVaultData, _ := k.GetAppExtendedPairVaultMapping(ctx, appMapping.Id) k.UpdateCollateralLockedAmountLockerMapping(ctx, appExtendedPairVaultData, extendedPairVault.Id, msg.Amount, true) + ctx.GasMeter().ConsumeGas(types.DepositVaultGas, "DepositVaultGas") + return &types.MsgDepositResponse{}, nil } // MsgWithdraw Withdrawing collateral. -func (k *msgServer) MsgWithdraw(c context.Context, msg *types.MsgWithdrawRequest) (*types.MsgWithdrawResponse, error) { +func (k msgServer) MsgWithdraw(c context.Context, msg *types.MsgWithdrawRequest) (*types.MsgWithdrawResponse, error) { ctx := sdk.UnwrapSDKContext(c) - klwsParams, _ := k.GetKillSwitchData(ctx, msg.AppId) - if klwsParams.BreakerEnable { + killSwitchParams, _ := k.GetKillSwitchData(ctx, msg.AppId) + if killSwitchParams.BreakerEnable { return nil, esmtypes.ErrCircuitBreakerEnabled } esmStatus, found := k.GetESMStatus(ctx, msg.AppId) @@ -328,10 +339,6 @@ func (k *msgServer) MsgWithdraw(c context.Context, msg *types.MsgWithdrawRequest if !found { return nil, types.ErrorAssetDoesNotExist } - // assetOutData, found := k.GetAsset(ctx, pairData.AssetOut) - // if !found { - // return nil, types.ErrorAssetDoesNotExist - // } //Checking if appMapping_id exists appMapping, found := k.GetApp(ctx, msg.AppId) @@ -374,9 +381,10 @@ func (k *msgServer) MsgWithdraw(c context.Context, msg *types.MsgWithdrawRequest if err := k.VerifyCollaterlizationRatio(ctx, extendedPairVault.Id, userVault.AmountIn, totalDebtCalculation, extendedPairVault.MinCr, status); err != nil { return nil, err } - - if err := k.SendCoinFromModuleToAccount(ctx, types.ModuleName, depositor, sdk.NewCoin(assetInData.Denom, msg.Amount)); err != nil { - return nil, err + if msg.Amount.GT(sdk.ZeroInt()) { + if err := k.SendCoinFromModuleToAccount(ctx, types.ModuleName, depositor, sdk.NewCoin(assetInData.Denom, msg.Amount)); err != nil { + return nil, err + } } k.SetVault(ctx, userVault) @@ -385,11 +393,13 @@ func (k *msgServer) MsgWithdraw(c context.Context, msg *types.MsgWithdrawRequest appExtendedPairVaultData, _ := k.GetAppExtendedPairVaultMapping(ctx, appMapping.Id) k.UpdateCollateralLockedAmountLockerMapping(ctx, appExtendedPairVaultData, extendedPairVault.Id, msg.Amount, false) + ctx.GasMeter().ConsumeGas(types.WithdrawVaultGas, "WithdrawVaultGas") + return &types.MsgWithdrawResponse{}, nil } // MsgDraw To borrow more amount. -func (k *msgServer) MsgDraw(c context.Context, msg *types.MsgDrawRequest) (*types.MsgDrawResponse, error) { +func (k msgServer) MsgDraw(c context.Context, msg *types.MsgDrawRequest) (*types.MsgDrawResponse, error) { ctx := sdk.UnwrapSDKContext(c) esmStatus, found := k.GetESMStatus(ctx, msg.AppId) status := false @@ -399,8 +409,8 @@ func (k *msgServer) MsgDraw(c context.Context, msg *types.MsgDrawRequest) (*type if status { return nil, esmtypes.ErrESMAlreadyExecuted } - klwsParams, _ := k.GetKillSwitchData(ctx, msg.AppId) - if klwsParams.BreakerEnable { + killSwitchParams, _ := k.GetKillSwitchData(ctx, msg.AppId) + if killSwitchParams.BreakerEnable { return nil, esmtypes.ErrCircuitBreakerEnabled } depositor, err := sdk.AccAddressFromBech32(msg.From) @@ -417,10 +427,6 @@ func (k *msgServer) MsgDraw(c context.Context, msg *types.MsgDrawRequest) (*type if !found { return nil, types.ErrorPairDoesNotExist } - // assetInData, found := k.GetAsset(ctx, pairData.AssetIn) - // if !found { - // return nil, types.ErrorAssetDoesNotExist - // } assetOutData, found := k.GetAsset(ctx, pairData.AssetOut) if !found { return nil, types.ErrorAssetDoesNotExist @@ -479,7 +485,7 @@ func (k *msgServer) MsgDraw(c context.Context, msg *types.MsgDrawRequest) (*type return nil, err } - if extendedPairVault.DrawDownFee.IsZero() { + if extendedPairVault.DrawDownFee.IsZero() && msg.Amount.GT(sdk.ZeroInt()) { //Send Rest to user if err := k.SendCoinFromModuleToAccount(ctx, types.ModuleName, depositor, sdk.NewCoin(assetOutData.Denom, msg.Amount)); err != nil { return nil, err @@ -489,24 +495,25 @@ func (k *msgServer) MsgDraw(c context.Context, msg *types.MsgDrawRequest) (*type //one approach could be collectorShare := (msg.Amount.Mul(sdk.Int(extendedPairVault.DrawDownFee))).Quo(sdk.Int(sdk.OneDec())) - if err := k.SendCoinFromModuleToModule(ctx, types.ModuleName, collectortypes.ModuleName, sdk.NewCoins(sdk.NewCoin(assetOutData.Denom, collectorShare))); err != nil { - return nil, err - } - err := k.UpdateCollector(ctx, appMapping.Id, pairData.AssetOut, sdk.ZeroInt(), sdk.ZeroInt(), collectorShare, sdk.ZeroInt()) - if err != nil { - return nil, err - } + if collectorShare.GT(sdk.ZeroInt()) { + if err := k.SendCoinFromModuleToModule(ctx, types.ModuleName, collectortypes.ModuleName, sdk.NewCoins(sdk.NewCoin(assetOutData.Denom, collectorShare))); err != nil { + return nil, err + } + err := k.UpdateCollector(ctx, appMapping.Id, pairData.AssetOut, sdk.ZeroInt(), sdk.ZeroInt(), collectorShare, sdk.ZeroInt()) + if err != nil { + return nil, err + } + } // and send the rest to the user amountToUser := msg.Amount.Sub(collectorShare) - if err := k.SendCoinFromModuleToAccount(ctx, types.ModuleName, depositor, sdk.NewCoin(assetOutData.Denom, amountToUser)); err != nil { - return nil, err + if amountToUser.GT(sdk.ZeroInt()) { + if err := k.SendCoinFromModuleToAccount(ctx, types.ModuleName, depositor, sdk.NewCoin(assetOutData.Denom, amountToUser)); err != nil { + return nil, err + } } } - // if err := k.SendCoinFromModuleToAccount(ctx, types.ModuleName, depositor, sdk.NewCoin(assetOutData.Denom, msg.Amount)); err != nil { - // return nil, err - // } userVault.AmountOut = userVault.AmountOut.Add(msg.Amount) k.SetVault(ctx, userVault) @@ -515,10 +522,12 @@ func (k *msgServer) MsgDraw(c context.Context, msg *types.MsgDrawRequest) (*type appExtendedPairVaultData, _ := k.GetAppExtendedPairVaultMapping(ctx, appMapping.Id) k.UpdateTokenMintedAmountLockerMapping(ctx, appExtendedPairVaultData, extendedPairVault.Id, msg.Amount, true) + ctx.GasMeter().ConsumeGas(types.DrawVaultGas, "DrawVaultGas") + return &types.MsgDrawResponse{}, nil } -func (k *msgServer) MsgRepay(c context.Context, msg *types.MsgRepayRequest) (*types.MsgRepayResponse, error) { +func (k msgServer) MsgRepay(c context.Context, msg *types.MsgRepayRequest) (*types.MsgRepayResponse, error) { ctx := sdk.UnwrapSDKContext(c) esmStatus, found := k.GetESMStatus(ctx, msg.AppId) status := false @@ -528,8 +537,8 @@ func (k *msgServer) MsgRepay(c context.Context, msg *types.MsgRepayRequest) (*ty if status { return nil, esmtypes.ErrESMAlreadyExecuted } - klwsParams, _ := k.GetKillSwitchData(ctx, msg.AppId) - if klwsParams.BreakerEnable { + killSwitchParams, _ := k.GetKillSwitchData(ctx, msg.AppId) + if killSwitchParams.BreakerEnable { return nil, esmtypes.ErrCircuitBreakerEnabled } depositor, err := sdk.AccAddressFromBech32(msg.From) @@ -546,10 +555,6 @@ func (k *msgServer) MsgRepay(c context.Context, msg *types.MsgRepayRequest) (*ty if !found { return nil, types.ErrorPairDoesNotExist } - // assetInData, found := k.GetAsset(ctx, pairData.AssetIn) - // if !found { - // return nil, types.ErrorAssetDoesNotExist - // } assetOutData, found := k.GetAsset(ctx, pairData.AssetOut) if !found { return nil, types.ErrorAssetDoesNotExist @@ -597,17 +602,18 @@ func (k *msgServer) MsgRepay(c context.Context, msg *types.MsgRepayRequest) (*ty reducedFees := userVault.InterestAccumulated.Sub(msg.Amount) userVault.InterestAccumulated = reducedFees //and send it to the collector module - if err := k.SendCoinFromAccountToModule(ctx, depositor, types.ModuleName, sdk.NewCoin(assetOutData.Denom, msg.Amount)); err != nil { - return nil, err - } - // SEND TO COLLECTOR- msg.Amount - - if err := k.SendCoinFromModuleToModule(ctx, types.ModuleName, collectortypes.ModuleName, sdk.NewCoins(sdk.NewCoin(assetOutData.Denom, msg.Amount))); err != nil { - return nil, err - } - err := k.UpdateCollector(ctx, appMapping.Id, pairData.AssetOut, msg.Amount, sdk.ZeroInt(), sdk.ZeroInt(), sdk.ZeroInt()) - if err != nil { - return nil, err + if msg.Amount.GT(sdk.ZeroInt()) { + if err := k.SendCoinFromAccountToModule(ctx, depositor, types.ModuleName, sdk.NewCoin(assetOutData.Denom, msg.Amount)); err != nil { + return nil, err + } + // SEND TO COLLECTOR- msg.Amount + if err := k.SendCoinFromModuleToModule(ctx, types.ModuleName, collectortypes.ModuleName, sdk.NewCoins(sdk.NewCoin(assetOutData.Denom, msg.Amount))); err != nil { + return nil, err + } + err := k.UpdateCollector(ctx, appMapping.Id, pairData.AssetOut, msg.Amount, sdk.ZeroInt(), sdk.ZeroInt(), sdk.ZeroInt()) + if err != nil { + return nil, err + } } k.SetVault(ctx, userVault) @@ -617,42 +623,45 @@ func (k *msgServer) MsgRepay(c context.Context, msg *types.MsgRepayRequest) (*ty updatedUserDebt := userVault.AmountOut.Sub(updatedUserSentAmountAfterFeesDeduction) // //If user's closing fees is a bigger amount than the debt floor, user will not close the debt floor - // totalUpdatedDebt:=updatedUserDebt.Add(*userVault.ClosingFeeAccumulated) - // if err := k.VerifyCollaterlizationRatio(ctx, extendedPairVault.Id, userVault.AmountIn, totalUpdatedDebt, extendedPairVault.MinCr); err != nil { - // return nil, err - // } if !updatedUserDebt.GTE(extendedPairVault.DebtFloor) { return nil, types.ErrorAmountOutLessThanDebtFloor } - if err := k.SendCoinFromAccountToModule(ctx, depositor, types.ModuleName, sdk.NewCoin(assetOutData.Denom, msg.Amount)); err != nil { - return nil, err + if msg.Amount.GT(sdk.ZeroInt()) { + if err := k.SendCoinFromAccountToModule(ctx, depositor, types.ModuleName, sdk.NewCoin(assetOutData.Denom, msg.Amount)); err != nil { + return nil, err + } } - - if err := k.BurnCoin(ctx, types.ModuleName, sdk.NewCoin(assetOutData.Denom, updatedUserSentAmountAfterFeesDeduction)); err != nil { - return nil, err + if updatedUserSentAmountAfterFeesDeduction.GT(sdk.ZeroInt()) { + if err := k.BurnCoin(ctx, types.ModuleName, sdk.NewCoin(assetOutData.Denom, updatedUserSentAmountAfterFeesDeduction)); err != nil { + return nil, err + } } // SEND TO COLLECTOR----userVault.InterestAccumulated - if err := k.SendCoinFromModuleToModule(ctx, types.ModuleName, collectortypes.ModuleName, sdk.NewCoins(sdk.NewCoin(assetOutData.Denom, userVault.InterestAccumulated))); err != nil { - return nil, err - } - err := k.UpdateCollector(ctx, appMapping.Id, pairData.AssetOut, userVault.InterestAccumulated, sdk.ZeroInt(), sdk.ZeroInt(), sdk.ZeroInt()) - if err != nil { - return nil, err + if userVault.InterestAccumulated.GT(sdk.ZeroInt()) { + if err := k.SendCoinFromModuleToModule(ctx, types.ModuleName, collectortypes.ModuleName, sdk.NewCoins(sdk.NewCoin(assetOutData.Denom, userVault.InterestAccumulated))); err != nil { + return nil, err + } + err := k.UpdateCollector(ctx, appMapping.Id, pairData.AssetOut, userVault.InterestAccumulated, sdk.ZeroInt(), sdk.ZeroInt(), sdk.ZeroInt()) + if err != nil { + return nil, err + } } userVault.AmountOut = updatedUserDebt - zeroval := sdk.ZeroInt() - userVault.InterestAccumulated = zeroval + zeroVal := sdk.ZeroInt() + userVault.InterestAccumulated = zeroVal k.SetVault(ctx, userVault) appExtendedPairVaultData, _ := k.GetAppExtendedPairVaultMapping(ctx, appMapping.Id) k.UpdateTokenMintedAmountLockerMapping(ctx, appExtendedPairVaultData, extendedPairVault.Id, updatedUserSentAmountAfterFeesDeduction, false) } + ctx.GasMeter().ConsumeGas(types.RepayVaultGas, "RepayVaultGas") + return &types.MsgRepayResponse{}, nil } -func (k *msgServer) MsgClose(c context.Context, msg *types.MsgCloseRequest) (*types.MsgCloseResponse, error) { +func (k msgServer) MsgClose(c context.Context, msg *types.MsgCloseRequest) (*types.MsgCloseResponse, error) { ctx := sdk.UnwrapSDKContext(c) esmStatus, found := k.GetESMStatus(ctx, msg.AppId) status := false @@ -662,8 +671,8 @@ func (k *msgServer) MsgClose(c context.Context, msg *types.MsgCloseRequest) (*ty if status { return nil, esmtypes.ErrESMAlreadyExecuted } - klwsParams, _ := k.GetKillSwitchData(ctx, msg.AppId) - if klwsParams.BreakerEnable { + killSwitchParams, _ := k.GetKillSwitchData(ctx, msg.AppId) + if killSwitchParams.BreakerEnable { return nil, esmtypes.ErrCircuitBreakerEnabled } depositor, err := sdk.AccAddressFromBech32(msg.From) @@ -718,8 +727,10 @@ func (k *msgServer) MsgClose(c context.Context, msg *types.MsgCloseRequest) (*ty totalUserDebt := userVault.AmountOut.Add(userVault.InterestAccumulated) totalUserDebt = totalUserDebt.Add(userVault.ClosingFeeAccumulated) - if err := k.SendCoinFromAccountToModule(ctx, depositor, types.ModuleName, sdk.NewCoin(assetOutData.Denom, totalUserDebt)); err != nil { - return nil, err + if totalUserDebt.GT(sdk.ZeroInt()) { + if err := k.SendCoinFromAccountToModule(ctx, depositor, types.ModuleName, sdk.NewCoin(assetOutData.Denom, totalUserDebt)); err != nil { + return nil, err + } } // SEND TO COLLECTOR----userVault.InterestAccumulated & userVault.ClosingFees @@ -728,18 +739,25 @@ func (k *msgServer) MsgClose(c context.Context, msg *types.MsgCloseRequest) (*ty if err != nil { return nil, err } - if err := k.SendCoinFromModuleToModule(ctx, types.ModuleName, collectortypes.ModuleName, sdk.NewCoins(sdk.NewCoin(assetOutData.Denom, userVault.InterestAccumulated))); err != nil { - return nil, err + if userVault.InterestAccumulated.GT(sdk.ZeroInt()) { + if err := k.SendCoinFromModuleToModule(ctx, types.ModuleName, collectortypes.ModuleName, sdk.NewCoins(sdk.NewCoin(assetOutData.Denom, userVault.InterestAccumulated))); err != nil { + return nil, err + } } - if err := k.SendCoinFromModuleToModule(ctx, types.ModuleName, collectortypes.ModuleName, sdk.NewCoins(sdk.NewCoin(assetOutData.Denom, userVault.ClosingFeeAccumulated))); err != nil { - return nil, err + if userVault.ClosingFeeAccumulated.GT(sdk.ZeroInt()) { + if err := k.SendCoinFromModuleToModule(ctx, types.ModuleName, collectortypes.ModuleName, sdk.NewCoins(sdk.NewCoin(assetOutData.Denom, userVault.ClosingFeeAccumulated))); err != nil { + return nil, err + } } - if err := k.BurnCoin(ctx, types.ModuleName, sdk.NewCoin(assetOutData.Denom, userVault.AmountOut)); err != nil { - return nil, err + if userVault.AmountOut.GT(sdk.ZeroInt()) { + if err := k.BurnCoin(ctx, types.ModuleName, sdk.NewCoin(assetOutData.Denom, userVault.AmountOut)); err != nil { + return nil, err + } } - - if err := k.SendCoinFromModuleToAccount(ctx, types.ModuleName, depositor, sdk.NewCoin(assetInData.Denom, userVault.AmountIn)); err != nil { - return nil, err + if userVault.AmountIn.GT(sdk.ZeroInt()) { + if err := k.SendCoinFromModuleToAccount(ctx, types.ModuleName, depositor, sdk.NewCoin(assetInData.Denom, userVault.AmountIn)); err != nil { + return nil, err + } } //Update LookupTable minting Status @@ -757,10 +775,12 @@ func (k *msgServer) MsgClose(c context.Context, msg *types.MsgCloseRequest) (*ty //Delete Vault k.DeleteVault(ctx, userVault.Id) + ctx.GasMeter().ConsumeGas(types.CloseVaultGas, "CloseVaultGas") + return &types.MsgCloseResponse{}, nil } -func (k *msgServer) MsgCreateStableMint(c context.Context, msg *types.MsgCreateStableMintRequest) (*types.MsgCreateStableMintResponse, error) { +func (k msgServer) MsgCreateStableMint(c context.Context, msg *types.MsgCreateStableMintRequest) (*types.MsgCreateStableMintResponse, error) { ctx := sdk.UnwrapSDKContext(c) esmStatus, found := k.GetESMStatus(ctx, msg.AppId) status := false @@ -770,8 +790,8 @@ func (k *msgServer) MsgCreateStableMint(c context.Context, msg *types.MsgCreateS if status { return nil, esmtypes.ErrESMAlreadyExecuted } - klwsParams, _ := k.GetKillSwitchData(ctx, msg.AppId) - if klwsParams.BreakerEnable { + killSwitchParams, _ := k.GetKillSwitchData(ctx, msg.AppId) + if killSwitchParams.BreakerEnable { return nil, esmtypes.ErrCircuitBreakerEnabled } //Checking if extended pair exists @@ -831,16 +851,19 @@ func (k *msgServer) MsgCreateStableMint(c context.Context, msg *types.MsgCreateS return nil, types.ErrorAmountOutGreaterThanDebtCeiling } - //Take amount from user - if err := k.SendCoinFromAccountToModule(ctx, depositorAddress, types.ModuleName, sdk.NewCoin(assetInData.Denom, msg.Amount)); err != nil { - return nil, err - } - //Mint Tokens for user + if msg.Amount.GT(sdk.ZeroInt()) { + //Take amount from user + if err := k.SendCoinFromAccountToModule(ctx, depositorAddress, types.ModuleName, sdk.NewCoin(assetInData.Denom, msg.Amount)); err != nil { + return nil, err + } + //Mint Tokens for user - if err := k.MintCoin(ctx, types.ModuleName, sdk.NewCoin(assetOutData.Denom, msg.Amount)); err != nil { - return nil, err + if err := k.MintCoin(ctx, types.ModuleName, sdk.NewCoin(assetOutData.Denom, msg.Amount)); err != nil { + return nil, err + } } - if extendedPairVault.DrawDownFee.IsZero() { + + if extendedPairVault.DrawDownFee.IsZero() && msg.Amount.GT(sdk.ZeroInt()) { //Send Rest to user if err := k.SendCoinFromModuleToAccount(ctx, types.ModuleName, depositorAddress, sdk.NewCoin(assetOutData.Denom, msg.Amount)); err != nil { return nil, err @@ -849,18 +872,22 @@ func (k *msgServer) MsgCreateStableMint(c context.Context, msg *types.MsgCreateS //If not zero deduct send to collector////////// // COLLECTOR FUNCTION collectorShare := (msg.Amount.Mul(sdk.Int(extendedPairVault.DrawDownFee))).Quo(sdk.Int(sdk.OneDec())) - if err := k.SendCoinFromModuleToModule(ctx, types.ModuleName, collectortypes.ModuleName, sdk.NewCoins(sdk.NewCoin(assetOutData.Denom, collectorShare))); err != nil { - return nil, err - } - err := k.UpdateCollector(ctx, appMapping.Id, pairData.AssetOut, sdk.ZeroInt(), sdk.ZeroInt(), collectorShare, sdk.ZeroInt()) - if err != nil { - return nil, err + if collectorShare.GT(sdk.ZeroInt()) { + if err := k.SendCoinFromModuleToModule(ctx, types.ModuleName, collectortypes.ModuleName, sdk.NewCoins(sdk.NewCoin(assetOutData.Denom, collectorShare))); err != nil { + return nil, err + } + err := k.UpdateCollector(ctx, appMapping.Id, pairData.AssetOut, sdk.ZeroInt(), sdk.ZeroInt(), collectorShare, sdk.ZeroInt()) + if err != nil { + return nil, err + } } // and send the rest to the user amountToUser := msg.Amount.Sub(collectorShare) - if err := k.SendCoinFromModuleToAccount(ctx, types.ModuleName, depositorAddress, sdk.NewCoin(assetOutData.Denom, amountToUser)); err != nil { - return nil, err + if amountToUser.GT(sdk.ZeroInt()) { + if err := k.SendCoinFromModuleToAccount(ctx, types.ModuleName, depositorAddress, sdk.NewCoin(assetOutData.Denom, amountToUser)); err != nil { + return nil, err + } } } //Create Mint Vault @@ -878,10 +905,12 @@ func (k *msgServer) MsgCreateStableMint(c context.Context, msg *types.MsgCreateS //update Locker Data //Update Amount k.UpdateAppExtendedPairVaultMappingDataOnMsgCreateStableMintVault(ctx, updatedCounter, stableVault) + ctx.GasMeter().ConsumeGas(types.CreateStableVaultGas, "CreateStableVaultGas") + return &types.MsgCreateStableMintResponse{}, nil } -func (k *msgServer) MsgDepositStableMint(c context.Context, msg *types.MsgDepositStableMintRequest) (*types.MsgDepositStableMintResponse, error) { +func (k msgServer) MsgDepositStableMint(c context.Context, msg *types.MsgDepositStableMintRequest) (*types.MsgDepositStableMintResponse, error) { ctx := sdk.UnwrapSDKContext(c) esmStatus, found := k.GetESMStatus(ctx, msg.AppId) status := false @@ -891,8 +920,8 @@ func (k *msgServer) MsgDepositStableMint(c context.Context, msg *types.MsgDeposi if status { return nil, esmtypes.ErrESMAlreadyExecuted } - klwsParams, _ := k.GetKillSwitchData(ctx, msg.AppId) - if klwsParams.BreakerEnable { + killSwitchParams, _ := k.GetKillSwitchData(ctx, msg.AppId) + if killSwitchParams.BreakerEnable { return nil, esmtypes.ErrCircuitBreakerEnabled } depositorAddress, err := sdk.AccAddressFromBech32(msg.From) @@ -959,41 +988,44 @@ func (k *msgServer) MsgDepositStableMint(c context.Context, msg *types.MsgDeposi return nil, types.ErrorAmountOutGreaterThanDebtCeiling } - //Take amount from user - if err := k.SendCoinFromAccountToModule(ctx, depositorAddress, types.ModuleName, sdk.NewCoin(assetInData.Denom, msg.Amount)); err != nil { - return nil, err - } - //Mint Tokens for user + if msg.Amount.GT(sdk.ZeroInt()) { + //Take amount from user + if err := k.SendCoinFromAccountToModule(ctx, depositorAddress, types.ModuleName, sdk.NewCoin(assetInData.Denom, msg.Amount)); err != nil { + return nil, err + } + //Mint Tokens for user - if err := k.MintCoin(ctx, types.ModuleName, sdk.NewCoin(assetOutData.Denom, msg.Amount)); err != nil { - return nil, err + if err := k.MintCoin(ctx, types.ModuleName, sdk.NewCoin(assetOutData.Denom, msg.Amount)); err != nil { + return nil, err + } } - if extendedPairVault.DrawDownFee.IsZero() { + if extendedPairVault.DrawDownFee.IsZero() && msg.Amount.GT(sdk.ZeroInt()) { //Send Rest to user if err := k.SendCoinFromModuleToAccount(ctx, types.ModuleName, depositorAddress, sdk.NewCoin(assetOutData.Denom, msg.Amount)); err != nil { return nil, err } } else { //If not zero deduct send to collector////////// - // // COLLECTOR FUNCTION - // - // ///////////////////////////////////////////////// collectorShare := (msg.Amount.Mul(sdk.Int(extendedPairVault.DrawDownFee))).Quo(sdk.Int(sdk.OneDec())) - if err := k.SendCoinFromModuleToModule(ctx, types.ModuleName, collectortypes.ModuleName, sdk.NewCoins(sdk.NewCoin(assetOutData.Denom, collectorShare))); err != nil { - return nil, err - } - err := k.UpdateCollector(ctx, appMapping.Id, pairData.AssetOut, sdk.ZeroInt(), sdk.ZeroInt(), collectorShare, sdk.ZeroInt()) - if err != nil { - return nil, err + if collectorShare.GT(sdk.ZeroInt()) { + if err := k.SendCoinFromModuleToModule(ctx, types.ModuleName, collectortypes.ModuleName, sdk.NewCoins(sdk.NewCoin(assetOutData.Denom, collectorShare))); err != nil { + return nil, err + } + err := k.UpdateCollector(ctx, appMapping.Id, pairData.AssetOut, sdk.ZeroInt(), sdk.ZeroInt(), collectorShare, sdk.ZeroInt()) + if err != nil { + return nil, err + } } // and send the rest to the user amountToUser := msg.Amount.Sub(collectorShare) - if err := k.SendCoinFromModuleToAccount(ctx, types.ModuleName, depositorAddress, sdk.NewCoin(assetOutData.Denom, amountToUser)); err != nil { - return nil, err + if amountToUser.GT(sdk.ZeroInt()) { + if err := k.SendCoinFromModuleToAccount(ctx, types.ModuleName, depositorAddress, sdk.NewCoin(assetOutData.Denom, amountToUser)); err != nil { + return nil, err + } } } stableVault.AmountIn = stableVault.AmountIn.Add(msg.Amount) @@ -1004,10 +1036,11 @@ func (k *msgServer) MsgDepositStableMint(c context.Context, msg *types.MsgDeposi k.UpdateCollateralLockedAmountLockerMapping(ctx, appExtendedPairVaultData, extendedPairVault.Id, stableVault.AmountIn, true) k.UpdateTokenMintedAmountLockerMapping(ctx, appExtendedPairVaultData, extendedPairVault.Id, stableVault.AmountOut, true) + ctx.GasMeter().ConsumeGas(types.DepositStableVaultGas, "DepositStableVaultGas") return &types.MsgDepositStableMintResponse{}, nil } -func (k *msgServer) MsgWithdrawStableMint(c context.Context, msg *types.MsgWithdrawStableMintRequest) (*types.MsgWithdrawStableMintResponse, error) { +func (k msgServer) MsgWithdrawStableMint(c context.Context, msg *types.MsgWithdrawStableMintRequest) (*types.MsgWithdrawStableMintResponse, error) { ctx := sdk.UnwrapSDKContext(c) esmStatus, found := k.GetESMStatus(ctx, msg.AppId) status := false @@ -1017,8 +1050,8 @@ func (k *msgServer) MsgWithdrawStableMint(c context.Context, msg *types.MsgWithd if status { return nil, esmtypes.ErrESMAlreadyExecuted } - klwsParams, _ := k.GetKillSwitchData(ctx, msg.AppId) - if klwsParams.BreakerEnable { + killSwitchParams, _ := k.GetKillSwitchData(ctx, msg.AppId) + if killSwitchParams.BreakerEnable { return nil, esmtypes.ErrCircuitBreakerEnabled } depositorAddress, err := sdk.AccAddressFromBech32(msg.From) @@ -1076,11 +1109,13 @@ func (k *msgServer) MsgWithdrawStableMint(c context.Context, msg *types.MsgWithd } var updatedAmount sdk.Int //Take amount from user - if err := k.SendCoinFromAccountToModule(ctx, depositorAddress, types.ModuleName, sdk.NewCoin(assetOutData.Denom, msg.Amount)); err != nil { - return nil, err + if msg.Amount.GT(sdk.ZeroInt()) { + if err := k.SendCoinFromAccountToModule(ctx, depositorAddress, types.ModuleName, sdk.NewCoin(assetOutData.Denom, msg.Amount)); err != nil { + return nil, err + } } - if extendedPairVault.DrawDownFee.IsZero() { + if extendedPairVault.DrawDownFee.IsZero() && msg.Amount.GT(sdk.ZeroInt()) { //BurnTokens for user if err := k.BurnCoin(ctx, types.ModuleName, sdk.NewCoin(assetOutData.Denom, msg.Amount)); err != nil { return nil, err @@ -1093,31 +1128,32 @@ func (k *msgServer) MsgWithdrawStableMint(c context.Context, msg *types.MsgWithd updatedAmount = msg.Amount } else { //If not zero deduct send to collector////////// - // // COLLECTOR FUNCTION - // - // ///////////////////////////////////////////////// collectorShare := (msg.Amount.Mul(sdk.Int(extendedPairVault.DrawDownFee))).Quo(sdk.Int(sdk.OneDec())) - if err := k.SendCoinFromModuleToModule(ctx, types.ModuleName, collectortypes.ModuleName, sdk.NewCoins(sdk.NewCoin(assetOutData.Denom, collectorShare))); err != nil { - return nil, err - } - err := k.UpdateCollector(ctx, appMapping.Id, pairData.AssetOut, sdk.ZeroInt(), sdk.ZeroInt(), collectorShare, sdk.ZeroInt()) - if err != nil { - return nil, err + if collectorShare.GT(sdk.ZeroInt()) { + if err := k.SendCoinFromModuleToModule(ctx, types.ModuleName, collectortypes.ModuleName, sdk.NewCoins(sdk.NewCoin(assetOutData.Denom, collectorShare))); err != nil { + return nil, err + } + err := k.UpdateCollector(ctx, appMapping.Id, pairData.AssetOut, sdk.ZeroInt(), sdk.ZeroInt(), collectorShare, sdk.ZeroInt()) + if err != nil { + return nil, err + } } updatedAmount = msg.Amount.Sub(collectorShare) - //BurnTokens for user - if err := k.BurnCoin(ctx, types.ModuleName, sdk.NewCoin(assetOutData.Denom, updatedAmount)); err != nil { - return nil, err - } + if updatedAmount.GT(sdk.ZeroInt()) { + //BurnTokens for user + if err := k.BurnCoin(ctx, types.ModuleName, sdk.NewCoin(assetOutData.Denom, updatedAmount)); err != nil { + return nil, err + } - // and send the rest to the user + // and send the rest to the user - if err := k.SendCoinFromModuleToAccount(ctx, types.ModuleName, depositorAddress, sdk.NewCoin(assetInData.Denom, updatedAmount)); err != nil { - return nil, err + if err := k.SendCoinFromModuleToAccount(ctx, types.ModuleName, depositorAddress, sdk.NewCoin(assetInData.Denom, updatedAmount)); err != nil { + return nil, err + } } } stableVault.AmountIn = stableVault.AmountIn.Sub(updatedAmount) @@ -1127,5 +1163,7 @@ func (k *msgServer) MsgWithdrawStableMint(c context.Context, msg *types.MsgWithd k.UpdateCollateralLockedAmountLockerMapping(ctx, appExtendedPairVaultData, extendedPairVault.Id, stableVault.AmountIn, false) k.UpdateTokenMintedAmountLockerMapping(ctx, appExtendedPairVaultData, extendedPairVault.Id, stableVault.AmountOut, false) + ctx.GasMeter().ConsumeGas(types.WithdrawStableVaultGas, "WithdrawStableVaultGas") + return &types.MsgWithdrawStableMintResponse{}, nil } diff --git a/x/vault/keeper/msg_server_test.go b/x/vault/keeper/msg_server_test.go index 3e674df50..9e8f78af1 100644 --- a/x/vault/keeper/msg_server_test.go +++ b/x/vault/keeper/msg_server_test.go @@ -13,8 +13,8 @@ func (s *KeeperTestSuite) TestMsgCreate() { addr1 := s.addr(1) addr2 := s.addr(2) - appID1 := s.CreateNewApp("appOne") - appID2 := s.CreateNewApp("appTwo") + appID1 := s.CreateNewApp("appone") + appID2 := s.CreateNewApp("apptwo") asseOneID := s.CreateNewAsset("ASSET1", "uasset1", 1000000) asseTwoID := s.CreateNewAsset("ASSET2", "uasset2", 2000000) pairID := s.CreateNewPair(addr1, asseOneID, asseTwoID) @@ -116,7 +116,7 @@ func (s *KeeperTestSuite) TestMsgCreate() { ExpResp: &types.MsgCreateResponse{}, QueryResponseIndex: 0, QueryResponse: &types.Vault{ - Id: "appOne1", + Id: "appone1", AppId: appID1, ExtendedPairVaultID: extendedVaultPairID1, Owner: addr1.String(), @@ -134,7 +134,7 @@ func (s *KeeperTestSuite) TestMsgCreate() { ExpResp: &types.MsgCreateResponse{}, QueryResponseIndex: 1, QueryResponse: &types.Vault{ - Id: "appOne2", + Id: "appone2", AppId: appID1, ExtendedPairVaultID: extendedVaultPairID1, Owner: addr2.String(), @@ -163,7 +163,7 @@ func (s *KeeperTestSuite) TestMsgCreate() { ExpResp: &types.MsgCreateResponse{}, QueryResponseIndex: 2, QueryResponse: &types.Vault{ - Id: "appTwo1", + Id: "apptwo1", AppId: appID2, ExtendedPairVaultID: extendedVaultPairID2, Owner: addr1.String(), @@ -181,7 +181,7 @@ func (s *KeeperTestSuite) TestMsgCreate() { ExpResp: &types.MsgCreateResponse{}, QueryResponseIndex: 3, QueryResponse: &types.Vault{ - Id: "appTwo2", + Id: "apptwo2", AppId: appID2, ExtendedPairVaultID: extendedVaultPairID2, Owner: addr2.String(), @@ -234,8 +234,8 @@ func (s *KeeperTestSuite) TestMsgDeposit() { addr1 := s.addr(1) addr2 := s.addr(2) - appID1 := s.CreateNewApp("appOne") - appID2 := s.CreateNewApp("appTwo") + appID1 := s.CreateNewApp("appone") + appID2 := s.CreateNewApp("apptwo") asseOneID := s.CreateNewAsset("ASSET1", "uasset1", 1000000) asseTwoID := s.CreateNewAsset("ASSET2", "uasset2", 2000000) pairID := s.CreateNewPair(addr1, asseOneID, asseTwoID) @@ -262,7 +262,7 @@ func (s *KeeperTestSuite) TestMsgDeposit() { { Name: "error invalid from address", Msg: *types.NewMsgDepositRequest( - []byte(""), appID1, extendedVaultPairID1, "appOne1", newInt(69000000), + []byte(""), appID1, extendedVaultPairID1, "appone1", newInt(69000000), ), ExpErr: fmt.Errorf("empty address string is not allowed"), ExpResp: nil, @@ -273,7 +273,7 @@ func (s *KeeperTestSuite) TestMsgDeposit() { { Name: "error extended vault pair does not exists", Msg: *types.NewMsgDepositRequest( - addr1, appID1, 123, "appOne1", newInt(4000000), + addr1, appID1, 123, "appone1", newInt(4000000), ), ExpErr: types.ErrorExtendedPairVaultDoesNotExists, ExpResp: nil, @@ -284,7 +284,7 @@ func (s *KeeperTestSuite) TestMsgDeposit() { { Name: "error invalid appID", Msg: *types.NewMsgDepositRequest( - addr1, 69, extendedVaultPairID1, "appOne1", newInt(69000000), + addr1, 69, extendedVaultPairID1, "appone1", newInt(69000000), ), ExpErr: types.ErrorAppMappingDoesNotExist, ExpResp: nil, @@ -295,7 +295,7 @@ func (s *KeeperTestSuite) TestMsgDeposit() { { Name: "error appID mismatch", Msg: *types.NewMsgDepositRequest( - addr1, appID2, extendedVaultPairID1, "appOne1", newInt(69000000), + addr1, appID2, extendedVaultPairID1, "appone1", newInt(69000000), ), ExpErr: types.ErrorAppMappingIDMismatch, ExpResp: nil, @@ -306,7 +306,7 @@ func (s *KeeperTestSuite) TestMsgDeposit() { { Name: "error vault does not exists", Msg: *types.NewMsgDepositRequest( - addr1, appID1, extendedVaultPairID1, "appOne2", newInt(69000000), + addr1, appID1, extendedVaultPairID1, "appone2", newInt(69000000), ), ExpErr: types.ErrorVaultDoesNotExist, ExpResp: nil, @@ -317,7 +317,7 @@ func (s *KeeperTestSuite) TestMsgDeposit() { { Name: "error access unathorized ", Msg: *types.NewMsgDepositRequest( - addr2, appID1, extendedVaultPairID1, "appOne1", newInt(69000000), + addr2, appID1, extendedVaultPairID1, "appone1", newInt(69000000), ), ExpErr: types.ErrVaultAccessUnauthorised, ExpResp: nil, @@ -328,7 +328,7 @@ func (s *KeeperTestSuite) TestMsgDeposit() { { Name: "error insufficient funds", Msg: *types.NewMsgDepositRequest( - addr1, appID1, extendedVaultPairID1, "appOne1", newInt(69000000), + addr1, appID1, extendedVaultPairID1, "appone1", newInt(69000000), ), ExpErr: fmt.Errorf(fmt.Sprintf("0uasset1 is smaller than %duasset1: insufficient funds", 69000000)), ExpResp: nil, @@ -339,13 +339,13 @@ func (s *KeeperTestSuite) TestMsgDeposit() { { Name: "success valid case app1 user1", Msg: *types.NewMsgDepositRequest( - addr1, appID1, extendedVaultPairID1, "appOne1", newInt(69000000), + addr1, appID1, extendedVaultPairID1, "appone1", newInt(69000000), ), ExpErr: nil, ExpResp: &types.MsgDepositResponse{}, QueryResponseIndex: 0, QueryResponse: &types.Vault{ - Id: "appOne1", + Id: "appone1", AppId: appID1, ExtendedPairVaultID: extendedVaultPairID1, Owner: addr1.String(), @@ -357,13 +357,13 @@ func (s *KeeperTestSuite) TestMsgDeposit() { { Name: "success valid case app2 user2", Msg: *types.NewMsgDepositRequest( - addr2, appID2, extendedVaultPairID2, "appTwo1", newInt(69000000), + addr2, appID2, extendedVaultPairID2, "apptwo1", newInt(69000000), ), ExpErr: nil, ExpResp: &types.MsgDepositResponse{}, QueryResponseIndex: 1, QueryResponse: &types.Vault{ - Id: "appTwo1", + Id: "apptwo1", AppId: appID2, ExtendedPairVaultID: extendedVaultPairID2, Owner: addr2.String(), @@ -415,8 +415,8 @@ func (s *KeeperTestSuite) TestMsgWithdraw() { addr1 := s.addr(1) addr2 := s.addr(2) - appID1 := s.CreateNewApp("appOne") - appID2 := s.CreateNewApp("appTwo") + appID1 := s.CreateNewApp("appone") + appID2 := s.CreateNewApp("apptwo") asseOneID := s.CreateNewAsset("ASSET1", "uasset1", 1000000) asseTwoID := s.CreateNewAsset("ASSET2", "uasset2", 2000000) pairID := s.CreateNewPair(addr1, asseOneID, asseTwoID) @@ -443,7 +443,7 @@ func (s *KeeperTestSuite) TestMsgWithdraw() { { Name: "error invalid from address", Msg: *types.NewMsgWithdrawRequest( - []byte(""), appID1, extendedVaultPairID1, "appOne1", newInt(400000000), + []byte(""), appID1, extendedVaultPairID1, "appone1", newInt(400000000), ), ExpErr: fmt.Errorf("empty address string is not allowed"), ExpResp: nil, @@ -454,7 +454,7 @@ func (s *KeeperTestSuite) TestMsgWithdraw() { { Name: "error extended vault pair does not exists", Msg: *types.NewMsgWithdrawRequest( - addr1, appID1, 123, "appOne1", newInt(400000000), + addr1, appID1, 123, "appone1", newInt(400000000), ), ExpErr: types.ErrorExtendedPairVaultDoesNotExists, ExpResp: nil, @@ -465,7 +465,7 @@ func (s *KeeperTestSuite) TestMsgWithdraw() { { Name: "error invalid appID", Msg: *types.NewMsgWithdrawRequest( - addr1, 69, extendedVaultPairID1, "appOne1", newInt(400000000), + addr1, 69, extendedVaultPairID1, "appone1", newInt(400000000), ), ExpErr: types.ErrorAppMappingDoesNotExist, ExpResp: nil, @@ -476,7 +476,7 @@ func (s *KeeperTestSuite) TestMsgWithdraw() { { Name: "error appID mismatch", Msg: *types.NewMsgWithdrawRequest( - addr1, appID2, extendedVaultPairID1, "appOne1", newInt(400000000), + addr1, appID2, extendedVaultPairID1, "appone1", newInt(400000000), ), ExpErr: types.ErrorAppMappingIDMismatch, ExpResp: nil, @@ -487,7 +487,7 @@ func (s *KeeperTestSuite) TestMsgWithdraw() { { Name: "error vault does not exists", Msg: *types.NewMsgWithdrawRequest( - addr1, appID1, extendedVaultPairID1, "appOne2", newInt(400000000), + addr1, appID1, extendedVaultPairID1, "appone2", newInt(400000000), ), ExpErr: types.ErrorVaultDoesNotExist, ExpResp: nil, @@ -498,7 +498,7 @@ func (s *KeeperTestSuite) TestMsgWithdraw() { { Name: "error access unathorized", Msg: *types.NewMsgWithdrawRequest( - addr2, appID1, extendedVaultPairID1, "appOne1", newInt(400000000), + addr2, appID1, extendedVaultPairID1, "appone1", newInt(400000000), ), ExpErr: types.ErrVaultAccessUnauthorised, ExpResp: nil, @@ -509,7 +509,7 @@ func (s *KeeperTestSuite) TestMsgWithdraw() { { Name: "error invalid collateralization ratio", Msg: *types.NewMsgWithdrawRequest( - addr1, appID1, extendedVaultPairID1, "appOne1", newInt(400000000), + addr1, appID1, extendedVaultPairID1, "appone1", newInt(400000000), ), ExpErr: types.ErrorInvalidCollateralizationRatio, ExpResp: nil, @@ -520,13 +520,13 @@ func (s *KeeperTestSuite) TestMsgWithdraw() { { Name: "success valid case app1 user1", Msg: *types.NewMsgWithdrawRequest( - addr1, appID1, extendedVaultPairID1, "appOne1", newInt(50000000), + addr1, appID1, extendedVaultPairID1, "appone1", newInt(50000000), ), ExpErr: nil, ExpResp: &types.MsgWithdrawResponse{}, QueryResponseIndex: 0, QueryResponse: &types.Vault{ - Id: "appOne1", + Id: "appone1", AppId: appID1, ExtendedPairVaultID: extendedVaultPairID1, Owner: addr1.String(), @@ -538,13 +538,13 @@ func (s *KeeperTestSuite) TestMsgWithdraw() { { Name: "success valid case app2 user1", Msg: *types.NewMsgWithdrawRequest( - addr1, appID2, extendedVaultPairID2, "appTwo1", newInt(50000000), + addr1, appID2, extendedVaultPairID2, "apptwo1", newInt(50000000), ), ExpErr: nil, ExpResp: &types.MsgWithdrawResponse{}, QueryResponseIndex: 1, QueryResponse: &types.Vault{ - Id: "appTwo1", + Id: "apptwo1", AppId: appID2, ExtendedPairVaultID: extendedVaultPairID2, Owner: addr1.String(), @@ -590,8 +590,8 @@ func (s *KeeperTestSuite) TestMsgDraw() { addr1 := s.addr(1) addr2 := s.addr(2) - appID1 := s.CreateNewApp("appOne") - appID2 := s.CreateNewApp("appTwo") + appID1 := s.CreateNewApp("appone") + appID2 := s.CreateNewApp("apptwo") asseOneID := s.CreateNewAsset("ASSET1", "uasset1", 1000000) asseTwoID := s.CreateNewAsset("ASSET2", "uasset2", 2000000) pairID := s.CreateNewPair(addr1, asseOneID, asseTwoID) @@ -618,7 +618,7 @@ func (s *KeeperTestSuite) TestMsgDraw() { { Name: "error invalid from address", Msg: *types.NewMsgDrawRequest( - []byte(""), appID1, extendedVaultPairID1, "appOne1", newInt(50000000), + []byte(""), appID1, extendedVaultPairID1, "appone1", newInt(50000000), ), ExpErr: fmt.Errorf("empty address string is not allowed"), ExpResp: nil, @@ -629,7 +629,7 @@ func (s *KeeperTestSuite) TestMsgDraw() { { Name: "error extended vault pair does not exists", Msg: *types.NewMsgDrawRequest( - addr1, appID1, 123, "appOne1", newInt(50000000), + addr1, appID1, 123, "appone1", newInt(50000000), ), ExpErr: types.ErrorExtendedPairVaultDoesNotExists, ExpResp: nil, @@ -640,7 +640,7 @@ func (s *KeeperTestSuite) TestMsgDraw() { { Name: "error invalid appID", Msg: *types.NewMsgDrawRequest( - addr1, 69, extendedVaultPairID1, "appOne1", newInt(50000000), + addr1, 69, extendedVaultPairID1, "appone1", newInt(50000000), ), ExpErr: types.ErrorAppMappingDoesNotExist, ExpResp: nil, @@ -651,7 +651,7 @@ func (s *KeeperTestSuite) TestMsgDraw() { { Name: "error appID mismatch", Msg: *types.NewMsgDrawRequest( - addr1, appID2, extendedVaultPairID1, "appOne1", newInt(50000000), + addr1, appID2, extendedVaultPairID1, "appone1", newInt(50000000), ), ExpErr: types.ErrorAppMappingIDMismatch, ExpResp: nil, @@ -662,7 +662,7 @@ func (s *KeeperTestSuite) TestMsgDraw() { { Name: "error vault does not exists", Msg: *types.NewMsgDrawRequest( - addr1, appID1, extendedVaultPairID1, "appOne2", newInt(50000000), + addr1, appID1, extendedVaultPairID1, "appone2", newInt(50000000), ), ExpErr: types.ErrorVaultDoesNotExist, ExpResp: nil, @@ -673,7 +673,7 @@ func (s *KeeperTestSuite) TestMsgDraw() { { Name: "error access unathorized", Msg: *types.NewMsgDrawRequest( - addr2, appID1, extendedVaultPairID1, "appOne1", newInt(50000000), + addr2, appID1, extendedVaultPairID1, "appone1", newInt(50000000), ), ExpErr: types.ErrVaultAccessUnauthorised, ExpResp: nil, @@ -684,7 +684,7 @@ func (s *KeeperTestSuite) TestMsgDraw() { { Name: "error invalid collateralization ratio", Msg: *types.NewMsgDrawRequest( - addr1, appID1, extendedVaultPairID1, "appOne1", newInt(50000000), + addr1, appID1, extendedVaultPairID1, "appone1", newInt(50000000), ), ExpErr: types.ErrorInvalidCollateralizationRatio, ExpResp: nil, @@ -695,13 +695,13 @@ func (s *KeeperTestSuite) TestMsgDraw() { { Name: "success valid case app1 user1", Msg: *types.NewMsgDrawRequest( - addr1, appID1, extendedVaultPairID1, "appOne1", newInt(10000000), + addr1, appID1, extendedVaultPairID1, "appone1", newInt(10000000), ), ExpErr: nil, ExpResp: &types.MsgDrawResponse{}, QueryResponseIndex: 0, QueryResponse: &types.Vault{ - Id: "appOne1", + Id: "appone1", AppId: appID1, ExtendedPairVaultID: extendedVaultPairID1, Owner: addr1.String(), @@ -713,13 +713,13 @@ func (s *KeeperTestSuite) TestMsgDraw() { { Name: "success valid case app2 user1", Msg: *types.NewMsgDrawRequest( - addr1, appID2, extendedVaultPairID2, "appTwo1", newInt(10000000), + addr1, appID2, extendedVaultPairID2, "apptwo1", newInt(10000000), ), ExpErr: nil, ExpResp: &types.MsgDrawResponse{}, QueryResponseIndex: 1, QueryResponse: &types.Vault{ - Id: "appTwo1", + Id: "apptwo1", AppId: appID2, ExtendedPairVaultID: extendedVaultPairID2, Owner: addr1.String(), @@ -765,8 +765,8 @@ func (s *KeeperTestSuite) TestMsgRepay() { addr1 := s.addr(1) addr2 := s.addr(2) - appID1 := s.CreateNewApp("appOne") - appID2 := s.CreateNewApp("appTwo") + appID1 := s.CreateNewApp("appone") + appID2 := s.CreateNewApp("apptwo") asseOneID := s.CreateNewAsset("ASSET1", "uasset1", 1000000) asseTwoID := s.CreateNewAsset("ASSET2", "uasset2", 2000000) pairID := s.CreateNewPair(addr1, asseOneID, asseTwoID) @@ -793,7 +793,7 @@ func (s *KeeperTestSuite) TestMsgRepay() { { Name: "error invalid from address", Msg: *types.NewMsgRepayRequest( - []byte(""), appID1, extendedVaultPairID1, "appOne1", newInt(50000000), + []byte(""), appID1, extendedVaultPairID1, "appone1", newInt(50000000), ), ExpErr: fmt.Errorf("empty address string is not allowed"), ExpResp: nil, @@ -804,7 +804,7 @@ func (s *KeeperTestSuite) TestMsgRepay() { { Name: "error extended vault pair does not exists", Msg: *types.NewMsgRepayRequest( - addr1, appID1, 123, "appOne1", newInt(50000000), + addr1, appID1, 123, "appone1", newInt(50000000), ), ExpErr: types.ErrorExtendedPairVaultDoesNotExists, ExpResp: nil, @@ -815,7 +815,7 @@ func (s *KeeperTestSuite) TestMsgRepay() { { Name: "error invalid appID", Msg: *types.NewMsgRepayRequest( - addr1, 69, extendedVaultPairID1, "appOne1", newInt(50000000), + addr1, 69, extendedVaultPairID1, "appone1", newInt(50000000), ), ExpErr: types.ErrorAppMappingDoesNotExist, ExpResp: nil, @@ -826,7 +826,7 @@ func (s *KeeperTestSuite) TestMsgRepay() { { Name: "error appID mismatch", Msg: *types.NewMsgRepayRequest( - addr1, appID2, extendedVaultPairID1, "appOne1", newInt(50000000), + addr1, appID2, extendedVaultPairID1, "appone1", newInt(50000000), ), ExpErr: types.ErrorAppMappingIDMismatch, ExpResp: nil, @@ -837,7 +837,7 @@ func (s *KeeperTestSuite) TestMsgRepay() { { Name: "error vault does not exists", Msg: *types.NewMsgRepayRequest( - addr1, appID1, extendedVaultPairID1, "appOne2", newInt(50000000), + addr1, appID1, extendedVaultPairID1, "appone2", newInt(50000000), ), ExpErr: types.ErrorVaultDoesNotExist, ExpResp: nil, @@ -848,7 +848,7 @@ func (s *KeeperTestSuite) TestMsgRepay() { { Name: "error access unathorized", Msg: *types.NewMsgRepayRequest( - addr2, appID1, extendedVaultPairID1, "appOne1", newInt(50000000), + addr2, appID1, extendedVaultPairID1, "appone1", newInt(50000000), ), ExpErr: types.ErrVaultAccessUnauthorised, ExpResp: nil, @@ -859,7 +859,7 @@ func (s *KeeperTestSuite) TestMsgRepay() { { Name: "error invalid amount", Msg: *types.NewMsgRepayRequest( - addr1, appID1, extendedVaultPairID1, "appOne1", newInt(0), + addr1, appID1, extendedVaultPairID1, "appone1", newInt(0), ), ExpErr: types.ErrorInvalidAmount, ExpResp: nil, @@ -870,13 +870,13 @@ func (s *KeeperTestSuite) TestMsgRepay() { { Name: "success valid case app1 user1", Msg: *types.NewMsgRepayRequest( - addr1, appID1, extendedVaultPairID1, "appOne1", newInt(100000000), + addr1, appID1, extendedVaultPairID1, "appone1", newInt(100000000), ), ExpErr: nil, ExpResp: &types.MsgRepayResponse{}, QueryResponseIndex: 0, QueryResponse: &types.Vault{ - Id: "appOne1", + Id: "appone1", AppId: appID1, ExtendedPairVaultID: extendedVaultPairID1, Owner: addr1.String(), @@ -888,13 +888,13 @@ func (s *KeeperTestSuite) TestMsgRepay() { { Name: "success valid case app2 user1", Msg: *types.NewMsgRepayRequest( - addr1, appID2, extendedVaultPairID2, "appTwo1", newInt(100000000), + addr1, appID2, extendedVaultPairID2, "apptwo1", newInt(100000000), ), ExpErr: nil, ExpResp: &types.MsgRepayResponse{}, QueryResponseIndex: 1, QueryResponse: &types.Vault{ - Id: "appTwo1", + Id: "apptwo1", AppId: appID2, ExtendedPairVaultID: extendedVaultPairID2, Owner: addr1.String(), @@ -941,8 +941,8 @@ func (s *KeeperTestSuite) TestMsgClose() { addr1 := s.addr(1) addr2 := s.addr(2) - appID1 := s.CreateNewApp("appOne") - appID2 := s.CreateNewApp("appTwo") + appID1 := s.CreateNewApp("appone") + appID2 := s.CreateNewApp("apptwo") asseOneID := s.CreateNewAsset("ASSET1", "uasset1", 1000000) asseTwoID := s.CreateNewAsset("ASSET2", "uasset2", 2000000) pairID := s.CreateNewPair(addr1, asseOneID, asseTwoID) @@ -971,7 +971,7 @@ func (s *KeeperTestSuite) TestMsgClose() { { Name: "error invalid from address", Msg: *types.NewMsgLiquidateRequest( - []byte(""), appID1, extendedVaultPairID1, "appOne1", + []byte(""), appID1, extendedVaultPairID1, "appone1", ), ExpErr: fmt.Errorf("empty address string is not allowed"), ExpResp: nil, @@ -981,7 +981,7 @@ func (s *KeeperTestSuite) TestMsgClose() { { Name: "error extended vault pair does not exists", Msg: *types.NewMsgLiquidateRequest( - addr1, appID1, 123, "appOne1", + addr1, appID1, 123, "appone1", ), ExpErr: types.ErrorExtendedPairVaultDoesNotExists, ExpResp: nil, @@ -991,7 +991,7 @@ func (s *KeeperTestSuite) TestMsgClose() { { Name: "error invalid appID", Msg: *types.NewMsgLiquidateRequest( - addr1, 69, extendedVaultPairID1, "appOne1", + addr1, 69, extendedVaultPairID1, "appone1", ), ExpErr: types.ErrorAppMappingDoesNotExist, ExpResp: nil, @@ -1001,7 +1001,7 @@ func (s *KeeperTestSuite) TestMsgClose() { { Name: "error appID mismatch", Msg: *types.NewMsgLiquidateRequest( - addr1, appID2, extendedVaultPairID1, "appOne1", + addr1, appID2, extendedVaultPairID1, "appone1", ), ExpErr: types.ErrorAppMappingIDMismatch, ExpResp: nil, @@ -1011,7 +1011,7 @@ func (s *KeeperTestSuite) TestMsgClose() { { Name: "error vault does not exists", Msg: *types.NewMsgLiquidateRequest( - addr1, appID1, extendedVaultPairID1, "appOne2", + addr1, appID1, extendedVaultPairID1, "appone2", ), ExpErr: types.ErrorVaultDoesNotExist, ExpResp: nil, @@ -1021,7 +1021,7 @@ func (s *KeeperTestSuite) TestMsgClose() { { Name: "error access unathorized", Msg: *types.NewMsgLiquidateRequest( - addr2, appID1, extendedVaultPairID1, "appOne1", + addr2, appID1, extendedVaultPairID1, "appone1", ), ExpErr: types.ErrVaultAccessUnauthorised, ExpResp: nil, @@ -1031,7 +1031,7 @@ func (s *KeeperTestSuite) TestMsgClose() { { Name: "success valid case app1 user1", Msg: *types.NewMsgLiquidateRequest( - addr1, appID1, extendedVaultPairID1, "appOne1", + addr1, appID1, extendedVaultPairID1, "appone1", ), ExpErr: nil, ExpResp: &types.MsgCloseResponse{}, @@ -1041,7 +1041,7 @@ func (s *KeeperTestSuite) TestMsgClose() { { Name: "success valid case app2 user1", Msg: *types.NewMsgLiquidateRequest( - addr1, appID2, extendedVaultPairID2, "appTwo1", + addr1, appID2, extendedVaultPairID2, "apptwo1", ), ExpErr: nil, ExpResp: &types.MsgCloseResponse{}, @@ -1079,10 +1079,10 @@ func (s *KeeperTestSuite) TestMsgCreateStableMint() { addr1 := s.addr(1) // addr2 := s.addr(2) - appID1 := s.CreateNewApp("appOne") - appID2 := s.CreateNewApp("appTwo") - appID3 := s.CreateNewApp("appThree") - appID4 := s.CreateNewApp("appFour") + appID1 := s.CreateNewApp("appone") + appID2 := s.CreateNewApp("apptwo") + appID3 := s.CreateNewApp("appthr") + appID4 := s.CreateNewApp("appfou") asseOneID := s.CreateNewAsset("ASSET1", "uasset1", 1000000) asseTwoID := s.CreateNewAsset("ASSET2", "uasset2", 2000000) pairID := s.CreateNewPair(addr1, asseOneID, asseTwoID) @@ -1208,7 +1208,7 @@ func (s *KeeperTestSuite) TestMsgCreateStableMint() { ExpResp: &types.MsgCreateStableMintResponse{}, QueryRespIndex: 0, QueryResponse: &types.StableMintVault{ - Id: "appFour1", + Id: "appfou1", AmountIn: newInt(10000), AmountOut: newInt(10000), AppId: 4, @@ -1254,8 +1254,8 @@ func (s *KeeperTestSuite) TestMsgCreateStableMint() { func (s *KeeperTestSuite) TestMsgDepositStableMint() { addr1 := s.addr(1) - appID1 := s.CreateNewApp("appOne") - appID2 := s.CreateNewApp("appTwo") + appID1 := s.CreateNewApp("appone") + appID2 := s.CreateNewApp("apptwo") asseOneID := s.CreateNewAsset("ASSET1", "uasset1", 1000000) asseTwoID := s.CreateNewAsset("ASSET2", "uasset2", 2000000) pairID := s.CreateNewPair(addr1, asseOneID, asseTwoID) @@ -1288,7 +1288,7 @@ func (s *KeeperTestSuite) TestMsgDepositStableMint() { { Name: "error invalid from address", Msg: *types.NewMsgDepositStableMintRequest( - []byte(""), appID1, extendedVaultPairID1, newInt(10000), "appOne1", + []byte(""), appID1, extendedVaultPairID1, newInt(10000), "appone1", ), ExpErr: fmt.Errorf("empty address string is not allowed"), ExpResp: nil, @@ -1299,7 +1299,7 @@ func (s *KeeperTestSuite) TestMsgDepositStableMint() { { Name: "error extended vault pair does not exists", Msg: *types.NewMsgDepositStableMintRequest( - addr1, appID1, 123, newInt(10000), "appOne1", + addr1, appID1, 123, newInt(10000), "appone1", ), ExpErr: types.ErrorExtendedPairVaultDoesNotExists, ExpResp: nil, @@ -1310,7 +1310,7 @@ func (s *KeeperTestSuite) TestMsgDepositStableMint() { { Name: "error invalid appID", Msg: *types.NewMsgDepositStableMintRequest( - addr1, 69, extendedVaultPairID1, newInt(10000), "appOne1", + addr1, 69, extendedVaultPairID1, newInt(10000), "appone1", ), ExpErr: types.ErrorAppMappingDoesNotExist, ExpResp: nil, @@ -1321,7 +1321,7 @@ func (s *KeeperTestSuite) TestMsgDepositStableMint() { { Name: "error vault creation inactive", Msg: *types.NewMsgDepositStableMintRequest( - addr1, appID1, extendedVaultPairID1, newInt(10000), "appOne1", + addr1, appID1, extendedVaultPairID1, newInt(10000), "appone1", ), ExpErr: types.ErrorVaultInactive, ExpResp: nil, @@ -1332,7 +1332,7 @@ func (s *KeeperTestSuite) TestMsgDepositStableMint() { { Name: "error non stable mint vault cannot create stable mint vault", Msg: *types.NewMsgDepositStableMintRequest( - addr1, appID1, extendedVaultPairID2, newInt(10000), "appOne1", + addr1, appID1, extendedVaultPairID2, newInt(10000), "appone1", ), ExpErr: types.ErrorCannotCreateStableMintVault, ExpResp: nil, @@ -1343,7 +1343,7 @@ func (s *KeeperTestSuite) TestMsgDepositStableMint() { { Name: "error appID mismatch", Msg: *types.NewMsgDepositStableMintRequest( - addr1, appID2, extendedVaultPairID3, newInt(10000), "appOne1", + addr1, appID2, extendedVaultPairID3, newInt(10000), "appone1", ), ExpErr: types.ErrorAppMappingIDMismatch, ExpResp: nil, @@ -1354,7 +1354,7 @@ func (s *KeeperTestSuite) TestMsgDepositStableMint() { { Name: "error invalid stable mint id", Msg: *types.NewMsgDepositStableMintRequest( - addr1, appID1, extendedVaultPairID3, newInt(10000), "appOne2", + addr1, appID1, extendedVaultPairID3, newInt(10000), "appone2", ), ExpErr: types.ErrorVaultDoesNotExist, ExpResp: nil, @@ -1365,7 +1365,7 @@ func (s *KeeperTestSuite) TestMsgDepositStableMint() { { Name: "error insufficient funds", Msg: *types.NewMsgDepositStableMintRequest( - addr1, appID1, extendedVaultPairID3, newInt(10000), "appOne1", + addr1, appID1, extendedVaultPairID3, newInt(10000), "appone1", ), ExpErr: fmt.Errorf(fmt.Sprintf("0uasset1 is smaller than %duasset1: insufficient funds", 10000)), ExpResp: nil, @@ -1376,13 +1376,13 @@ func (s *KeeperTestSuite) TestMsgDepositStableMint() { { Name: "success valid case 1 app1 user1", Msg: *types.NewMsgDepositStableMintRequest( - addr1, appID1, extendedVaultPairID3, newInt(2000000000), "appOne1", + addr1, appID1, extendedVaultPairID3, newInt(2000000000), "appone1", ), ExpErr: nil, ExpResp: &types.MsgDepositStableMintResponse{}, QueryRespIndex: 0, QueryResponse: &types.StableMintVault{ - Id: "appOne1", + Id: "appone1", AmountIn: newInt(3000000000), AmountOut: newInt(3000000000), AppId: 1, @@ -1393,13 +1393,13 @@ func (s *KeeperTestSuite) TestMsgDepositStableMint() { { Name: "success valid 2 case app1 user1", Msg: *types.NewMsgDepositStableMintRequest( - addr1, appID1, extendedVaultPairID3, newInt(1000000000), "appOne1", + addr1, appID1, extendedVaultPairID3, newInt(1000000000), "appone1", ), ExpErr: nil, ExpResp: &types.MsgDepositStableMintResponse{}, QueryRespIndex: 0, QueryResponse: &types.StableMintVault{ - Id: "appOne1", + Id: "appone1", AmountIn: newInt(4000000000), AmountOut: newInt(4000000000), AppId: 1, @@ -1410,13 +1410,13 @@ func (s *KeeperTestSuite) TestMsgDepositStableMint() { { Name: "success valid 3 case app2 user1", Msg: *types.NewMsgDepositStableMintRequest( - addr1, appID2, extendedVaultPairID4, newInt(9000000000), "appTwo1", + addr1, appID2, extendedVaultPairID4, newInt(9000000000), "apptwo1", ), ExpErr: nil, ExpResp: &types.MsgDepositStableMintResponse{}, QueryRespIndex: 1, QueryResponse: &types.StableMintVault{ - Id: "appTwo1", + Id: "apptwo1", AmountIn: newInt(10000000000), AmountOut: newInt(10000000000), AppId: 2, @@ -1465,8 +1465,8 @@ func (s *KeeperTestSuite) TestMsgWithdrawStableMint() { addr3 := s.addr(3) addr4 := s.addr(4) - appID1 := s.CreateNewApp("appOne") - appID2 := s.CreateNewApp("appTwo") + appID1 := s.CreateNewApp("appone") + appID2 := s.CreateNewApp("apptwo") asseOneID := s.CreateNewAsset("ASSET1", "uasset1", 1000000) asseTwoID := s.CreateNewAsset("ASSET2", "uasset2", 2000000) pairID := s.CreateNewPair(addr1, asseOneID, asseTwoID) @@ -1502,7 +1502,7 @@ func (s *KeeperTestSuite) TestMsgWithdrawStableMint() { { Name: "error invalid from address", Msg: *types.NewMsgWithdrawStableMintRequest( - []byte(""), appID1, extendedVaultPairID1, newInt(10000), "appOne1", + []byte(""), appID1, extendedVaultPairID1, newInt(10000), "appone1", ), ExpErr: fmt.Errorf("empty address string is not allowed"), ExpResp: nil, @@ -1513,7 +1513,7 @@ func (s *KeeperTestSuite) TestMsgWithdrawStableMint() { { Name: "error extended vault pair does not exists", Msg: *types.NewMsgWithdrawStableMintRequest( - addr1, appID1, 123, newInt(10000), "appOne1", + addr1, appID1, 123, newInt(10000), "appone1", ), ExpErr: types.ErrorExtendedPairVaultDoesNotExists, ExpResp: nil, @@ -1524,7 +1524,7 @@ func (s *KeeperTestSuite) TestMsgWithdrawStableMint() { { Name: "error invalid appID", Msg: *types.NewMsgWithdrawStableMintRequest( - addr1, 69, extendedVaultPairID1, newInt(10000), "appOne1", + addr1, 69, extendedVaultPairID1, newInt(10000), "appone1", ), ExpErr: types.ErrorAppMappingDoesNotExist, ExpResp: nil, @@ -1535,7 +1535,7 @@ func (s *KeeperTestSuite) TestMsgWithdrawStableMint() { { Name: "error vault creation inactive", Msg: *types.NewMsgWithdrawStableMintRequest( - addr1, appID1, extendedVaultPairID1, newInt(10000), "appOne1", + addr1, appID1, extendedVaultPairID1, newInt(10000), "appone1", ), ExpErr: types.ErrorCannotCreateStableMintVault, ExpResp: nil, @@ -1546,7 +1546,7 @@ func (s *KeeperTestSuite) TestMsgWithdrawStableMint() { { Name: "error non stable mint vault cannot create stable mint vault", Msg: *types.NewMsgWithdrawStableMintRequest( - addr1, appID1, extendedVaultPairID2, newInt(10000), "appOne1", + addr1, appID1, extendedVaultPairID2, newInt(10000), "appone1", ), ExpErr: types.ErrorCannotCreateStableMintVault, ExpResp: nil, @@ -1557,7 +1557,7 @@ func (s *KeeperTestSuite) TestMsgWithdrawStableMint() { { Name: "error appID mismatch", Msg: *types.NewMsgWithdrawStableMintRequest( - addr1, appID2, extendedVaultPairID3, newInt(10000), "appOne1", + addr1, appID2, extendedVaultPairID3, newInt(10000), "appone1", ), ExpErr: types.ErrorAppMappingIDMismatch, ExpResp: nil, @@ -1568,7 +1568,7 @@ func (s *KeeperTestSuite) TestMsgWithdrawStableMint() { { Name: "error invalid stable mint id", Msg: *types.NewMsgWithdrawStableMintRequest( - addr1, appID1, extendedVaultPairID3, newInt(10000), "appOne2", + addr1, appID1, extendedVaultPairID3, newInt(10000), "appone2", ), ExpErr: types.ErrorVaultDoesNotExist, ExpResp: nil, @@ -1579,7 +1579,7 @@ func (s *KeeperTestSuite) TestMsgWithdrawStableMint() { { Name: "error insufficient funds", Msg: *types.NewMsgWithdrawStableMintRequest( - addr2, appID1, extendedVaultPairID3, newInt(10000), "appOne1", + addr2, appID1, extendedVaultPairID3, newInt(10000), "appone1", ), ExpErr: fmt.Errorf(fmt.Sprintf("0uasset2 is smaller than %duasset2: insufficient funds", 10000)), ExpResp: nil, @@ -1590,7 +1590,7 @@ func (s *KeeperTestSuite) TestMsgWithdrawStableMint() { { Name: "error invalid withdraw amount", Msg: *types.NewMsgWithdrawStableMintRequest( - addr1, appID1, extendedVaultPairID3, newInt(9000000000), "appOne1", + addr1, appID1, extendedVaultPairID3, newInt(9000000000), "appone1", ), ExpErr: types.ErrorInvalidAmount, ExpResp: nil, @@ -1601,13 +1601,13 @@ func (s *KeeperTestSuite) TestMsgWithdrawStableMint() { { Name: "success valid case 1 app1 user1", Msg: *types.NewMsgWithdrawStableMintRequest( - addr1, appID1, extendedVaultPairID3, newInt(500000000), "appOne1", + addr1, appID1, extendedVaultPairID3, newInt(500000000), "appone1", ), ExpErr: nil, ExpResp: &types.MsgWithdrawStableMintResponse{}, QueryRespIndex: 0, QueryResponse: &types.StableMintVault{ - Id: "appOne1", + Id: "appone1", AmountIn: newInt(505000000), AmountOut: newInt(505000000), AppId: 1, @@ -1618,13 +1618,13 @@ func (s *KeeperTestSuite) TestMsgWithdrawStableMint() { { Name: "success valid case 2 case app1 user1", Msg: *types.NewMsgWithdrawStableMintRequest( - addr1, appID1, extendedVaultPairID3, newInt(200000000), "appOne1", + addr1, appID1, extendedVaultPairID3, newInt(200000000), "appone1", ), ExpErr: nil, ExpResp: &types.MsgWithdrawStableMintResponse{}, QueryRespIndex: 0, QueryResponse: &types.StableMintVault{ - Id: "appOne1", + Id: "appone1", AmountIn: newInt(307000000), AmountOut: newInt(307000000), AppId: 1, @@ -1635,13 +1635,13 @@ func (s *KeeperTestSuite) TestMsgWithdrawStableMint() { { Name: "success valid case 3 case app2 user1", Msg: *types.NewMsgWithdrawStableMintRequest( - addr1, appID2, extendedVaultPairID4, newInt(1000000000), "appTwo1", + addr1, appID2, extendedVaultPairID4, newInt(1000000000), "apptwo1", ), ExpErr: nil, ExpResp: &types.MsgWithdrawStableMintResponse{}, QueryRespIndex: 1, QueryResponse: &types.StableMintVault{ - Id: "appTwo1", + Id: "apptwo1", AmountIn: newInt(10000000), AmountOut: newInt(10000000), AppId: 2, @@ -1652,13 +1652,13 @@ func (s *KeeperTestSuite) TestMsgWithdrawStableMint() { { Name: "success valid case 4 case app2 user3", Msg: *types.NewMsgWithdrawStableMintRequest( - addr3, appID2, extendedVaultPairID4, newInt(5000000), "appTwo1", + addr3, appID2, extendedVaultPairID4, newInt(5000000), "apptwo1", ), ExpErr: nil, ExpResp: &types.MsgWithdrawStableMintResponse{}, QueryRespIndex: 1, QueryResponse: &types.StableMintVault{ - Id: "appTwo1", + Id: "apptwo1", AmountIn: newInt(5050000), AmountOut: newInt(5050000), AppId: 2, @@ -1669,13 +1669,13 @@ func (s *KeeperTestSuite) TestMsgWithdrawStableMint() { { Name: "success valid case 5 case app2 user4", Msg: *types.NewMsgWithdrawStableMintRequest( - addr4, appID2, extendedVaultPairID4, newInt(5050000), "appTwo1", + addr4, appID2, extendedVaultPairID4, newInt(5050000), "apptwo1", ), ExpErr: nil, ExpResp: &types.MsgWithdrawStableMintResponse{}, QueryRespIndex: 1, QueryResponse: &types.StableMintVault{ - Id: "appTwo1", + Id: "apptwo1", AmountIn: newInt(50500), AmountOut: newInt(50500), AppId: 2, diff --git a/x/vault/keeper/query_server.go b/x/vault/keeper/query_server.go index d2e0444a1..8d849aaba 100644 --- a/x/vault/keeper/query_server.go +++ b/x/vault/keeper/query_server.go @@ -12,7 +12,7 @@ import ( ) var ( - _ types.QueryServer = (*QueryServer)(nil) + _ types.QueryServer = QueryServer{} ) type QueryServer struct { @@ -25,7 +25,7 @@ func NewQueryServer(k Keeper) types.QueryServer { } } -func (q *QueryServer) QueryAllVaults(c context.Context, req *types.QueryAllVaultsRequest) (*types.QueryAllVaultsResponse, error) { +func (q QueryServer) QueryAllVaults(c context.Context, req *types.QueryAllVaultsRequest) (*types.QueryAllVaultsResponse, error) { var ( ctx = sdk.UnwrapSDKContext(c) ) @@ -36,7 +36,7 @@ func (q *QueryServer) QueryAllVaults(c context.Context, req *types.QueryAllVault }, nil } -func (q *QueryServer) QueryAllVaultsByApp(c context.Context, req *types.QueryAllVaultsByAppRequest) (*types.QueryAllVaultsByAppResponse, error) { +func (q QueryServer) QueryAllVaultsByApp(c context.Context, req *types.QueryAllVaultsByAppRequest) (*types.QueryAllVaultsByAppResponse, error) { var ( ctx = sdk.UnwrapSDKContext(c) AppVaults []types.Vault @@ -53,7 +53,7 @@ func (q *QueryServer) QueryAllVaultsByApp(c context.Context, req *types.QueryAll }, nil } -func (q *QueryServer) QueryVault(c context.Context, req *types.QueryVaultRequest) (*types.QueryVaultResponse, error) { +func (q QueryServer) QueryVault(c context.Context, req *types.QueryVaultRequest) (*types.QueryVaultResponse, error) { if req == nil { return nil, status.Error(codes.InvalidArgument, "request cannot be empty") } @@ -70,7 +70,7 @@ func (q *QueryServer) QueryVault(c context.Context, req *types.QueryVaultRequest Vault: vault, }, nil } -func (q *QueryServer) QueryVaultInfoByVaultID(c context.Context, req *types.QueryVaultInfoByVaultIDRequest) (*types.QueryVaultInfoByVaultIDResponse, error) { +func (q QueryServer) QueryVaultInfoByVaultID(c context.Context, req *types.QueryVaultInfoByVaultIDRequest) (*types.QueryVaultInfoByVaultIDResponse, error) { if req == nil { return nil, status.Error(codes.InvalidArgument, "request cannot be empty") } @@ -109,7 +109,7 @@ func (q *QueryServer) QueryVaultInfoByVaultID(c context.Context, req *types.Quer }, nil } -func (q *QueryServer) QueryVaultInfoOfOwnerByApp(c context.Context, req *types.QueryVaultInfoOfOwnerByAppRequest) (*types.QueryVaultInfoOfOwnerByAppResponse, error) { +func (q QueryServer) QueryVaultInfoOfOwnerByApp(c context.Context, req *types.QueryVaultInfoOfOwnerByAppRequest) (*types.QueryVaultInfoOfOwnerByAppResponse, error) { if req == nil { return nil, status.Error(codes.InvalidArgument, "request cannot be empty") } @@ -175,7 +175,7 @@ func (q *QueryServer) QueryVaultInfoOfOwnerByApp(c context.Context, req *types.Q }, nil } -func (q *QueryServer) QueryAllVaultsByAppAndExtendedPair(c context.Context, req *types.QueryAllVaultsByAppAndExtendedPairRequest) (*types.QueryAllVaultsByAppAndExtendedPairResponse, error) { +func (q QueryServer) QueryAllVaultsByAppAndExtendedPair(c context.Context, req *types.QueryAllVaultsByAppAndExtendedPairRequest) (*types.QueryAllVaultsByAppAndExtendedPairResponse, error) { if req == nil { return nil, status.Error(codes.InvalidArgument, "request cannot be empty") } @@ -207,7 +207,7 @@ func (q *QueryServer) QueryAllVaultsByAppAndExtendedPair(c context.Context, req }, nil } -func (q *QueryServer) QueryVaultIDOfOwnerByExtendedPairAndApp(c context.Context, req *types.QueryVaultIDOfOwnerByExtendedPairAndAppRequest) (*types.QueryVaultIDOfOwnerByExtendedPairAndAppResponse, error) { +func (q QueryServer) QueryVaultIDOfOwnerByExtendedPairAndApp(c context.Context, req *types.QueryVaultIDOfOwnerByExtendedPairAndAppRequest) (*types.QueryVaultIDOfOwnerByExtendedPairAndAppResponse, error) { if req == nil { return nil, status.Error(codes.InvalidArgument, "request cannot be empty") } @@ -244,7 +244,7 @@ func (q *QueryServer) QueryVaultIDOfOwnerByExtendedPairAndApp(c context.Context, }, nil } -func (q *QueryServer) QueryVaultIdsByAppInAllExtendedPairs(c context.Context, req *types.QueryVaultIdsByAppInAllExtendedPairsRequest) (*types.QueryVaultIdsByAppInAllExtendedPairsResponse, error) { +func (q QueryServer) QueryVaultIdsByAppInAllExtendedPairs(c context.Context, req *types.QueryVaultIdsByAppInAllExtendedPairsRequest) (*types.QueryVaultIdsByAppInAllExtendedPairsResponse, error) { if req == nil { return nil, status.Error(codes.InvalidArgument, "request cannot be empty") } @@ -271,7 +271,7 @@ func (q *QueryServer) QueryVaultIdsByAppInAllExtendedPairs(c context.Context, re }, nil } -func (q *QueryServer) QueryAllVaultIdsByAnOwner(c context.Context, req *types.QueryAllVaultIdsByAnOwnerRequest) (*types.QueryAllVaultIdsByAnOwnerResponse, error) { +func (q QueryServer) QueryAllVaultIdsByAnOwner(c context.Context, req *types.QueryAllVaultIdsByAnOwnerRequest) (*types.QueryAllVaultIdsByAnOwnerResponse, error) { if req == nil { return nil, status.Error(codes.InvalidArgument, "request cannot be empty") } @@ -298,7 +298,7 @@ func (q *QueryServer) QueryAllVaultIdsByAnOwner(c context.Context, req *types.Qu }, nil } -func (q *QueryServer) QueryTokenMintedByAppAndExtendedPair(c context.Context, req *types.QueryTokenMintedByAppAndExtendedPairRequest) (*types.QueryTokenMintedByAppAndExtendedPairResponse, error) { +func (q QueryServer) QueryTokenMintedByAppAndExtendedPair(c context.Context, req *types.QueryTokenMintedByAppAndExtendedPairRequest) (*types.QueryTokenMintedByAppAndExtendedPairResponse, error) { if req == nil { return nil, status.Error(codes.InvalidArgument, "request cannot be empty") } @@ -331,7 +331,7 @@ func (q *QueryServer) QueryTokenMintedByAppAndExtendedPair(c context.Context, re }, nil } -func (q *QueryServer) QueryTokenMintedAssetWiseByApp(c context.Context, req *types.QueryTokenMintedAssetWiseByAppRequest) (*types.QueryTokenMintedAssetWiseByAppResponse, error) { +func (q QueryServer) QueryTokenMintedAssetWiseByApp(c context.Context, req *types.QueryTokenMintedAssetWiseByAppRequest) (*types.QueryTokenMintedAssetWiseByAppResponse, error) { if req == nil { return nil, status.Error(codes.InvalidArgument, "request cannot be empty") } @@ -371,7 +371,7 @@ func (q *QueryServer) QueryTokenMintedAssetWiseByApp(c context.Context, req *typ }, nil } -func (q *QueryServer) QueryVaultCountByApp(c context.Context, req *types.QueryVaultCountByAppRequest) (*types.QueryVaultCountByAppResponse, error) { +func (q QueryServer) QueryVaultCountByApp(c context.Context, req *types.QueryVaultCountByAppRequest) (*types.QueryVaultCountByAppResponse, error) { if req == nil { return nil, status.Error(codes.InvalidArgument, "request cannot be empty") } @@ -396,7 +396,7 @@ func (q *QueryServer) QueryVaultCountByApp(c context.Context, req *types.QueryVa }, nil } -func (q *QueryServer) QueryVaultCountByAppAndExtendedPair(c context.Context, req *types.QueryVaultCountByAppAndExtendedPairRequest) (*types.QueryVaultCountByAppAndExtendedPairResponse, error) { +func (q QueryServer) QueryVaultCountByAppAndExtendedPair(c context.Context, req *types.QueryVaultCountByAppAndExtendedPairRequest) (*types.QueryVaultCountByAppAndExtendedPairResponse, error) { if req == nil { return nil, status.Error(codes.InvalidArgument, "request cannot be empty") } @@ -424,7 +424,7 @@ func (q *QueryServer) QueryVaultCountByAppAndExtendedPair(c context.Context, req }, nil } -func (q *QueryServer) QueryTotalValueLockedByAppAndExtendedPair(c context.Context, req *types.QueryTotalValueLockedByAppAndExtendedPairRequest) (*types.QueryTotalValueLockedByAppAndExtendedPairResponse, error) { +func (q QueryServer) QueryTotalValueLockedByAppAndExtendedPair(c context.Context, req *types.QueryTotalValueLockedByAppAndExtendedPairRequest) (*types.QueryTotalValueLockedByAppAndExtendedPairResponse, error) { if req == nil { return nil, status.Error(codes.InvalidArgument, "request cannot be empty") } @@ -456,7 +456,7 @@ func (q *QueryServer) QueryTotalValueLockedByAppAndExtendedPair(c context.Contex }, nil } -func (q *QueryServer) QueryExtendedPairIDsByApp(c context.Context, req *types.QueryExtendedPairIDsByAppRequest) (*types.QueryExtendedPairIDsByAppResponse, error) { +func (q QueryServer) QueryExtendedPairIDsByApp(c context.Context, req *types.QueryExtendedPairIDsByAppRequest) (*types.QueryExtendedPairIDsByAppResponse, error) { if req == nil { return nil, status.Error(codes.InvalidArgument, "request cannot be empty") } @@ -484,7 +484,7 @@ func (q *QueryServer) QueryExtendedPairIDsByApp(c context.Context, req *types.Qu }, nil } -func (q *QueryServer) QueryStableVaultByVaultID(c context.Context, req *types.QueryStableVaultByVaultIDRequest) (*types.QueryStableVaultByVaultIDResponse, error) { +func (q QueryServer) QueryStableVaultByVaultID(c context.Context, req *types.QueryStableVaultByVaultIDRequest) (*types.QueryStableVaultByVaultIDResponse, error) { if req == nil { return nil, status.Error(codes.InvalidArgument, "request cannot be empty") } @@ -501,7 +501,7 @@ func (q *QueryServer) QueryStableVaultByVaultID(c context.Context, req *types.Qu }, nil } -func (q *QueryServer) QueryStableVaultByApp(c context.Context, req *types.QueryStableVaultByAppRequest) (*types.QueryStableVaultByAppResponse, error) { +func (q QueryServer) QueryStableVaultByApp(c context.Context, req *types.QueryStableVaultByAppRequest) (*types.QueryStableVaultByAppResponse, error) { if req == nil { return nil, status.Error(codes.InvalidArgument, "request cannot be empty") } @@ -522,7 +522,7 @@ func (q *QueryServer) QueryStableVaultByApp(c context.Context, req *types.QueryS }, nil } -func (q *QueryServer) QueryStableVaultByAppAndExtendedPair(c context.Context, req *types.QueryStableVaultByAppAndExtendedPairRequest) (*types.QueryStableVaultByAppAndExtendedPairResponse, error) { +func (q QueryServer) QueryStableVaultByAppAndExtendedPair(c context.Context, req *types.QueryStableVaultByAppAndExtendedPairRequest) (*types.QueryStableVaultByAppAndExtendedPairResponse, error) { if req == nil { return nil, status.Error(codes.InvalidArgument, "request cannot be empty") } @@ -543,7 +543,7 @@ func (q *QueryServer) QueryStableVaultByAppAndExtendedPair(c context.Context, re } // QueryExtendedPairVaultMappingByAppAndExtendedPair to query vault by app and extended pair. -func (q *QueryServer) QueryExtendedPairVaultMappingByAppAndExtendedPair(c context.Context, req *types.QueryExtendedPairVaultMappingByAppAndExtendedPairRequest) (*types.QueryExtendedPairVaultMappingByAppAndExtendedPairResponse, error) { +func (q QueryServer) QueryExtendedPairVaultMappingByAppAndExtendedPair(c context.Context, req *types.QueryExtendedPairVaultMappingByAppAndExtendedPairRequest) (*types.QueryExtendedPairVaultMappingByAppAndExtendedPairResponse, error) { if req == nil { return nil, status.Error(codes.InvalidArgument, "request cannot be empty") } @@ -571,7 +571,7 @@ func (q *QueryServer) QueryExtendedPairVaultMappingByAppAndExtendedPair(c contex }, nil } -func (q *QueryServer) QueryExtendedPairVaultMappingByApp(c context.Context, req *types.QueryExtendedPairVaultMappingByAppRequest) (*types.QueryExtendedPairVaultMappingByAppResponse, error) { +func (q QueryServer) QueryExtendedPairVaultMappingByApp(c context.Context, req *types.QueryExtendedPairVaultMappingByAppRequest) (*types.QueryExtendedPairVaultMappingByAppResponse, error) { if req == nil { return nil, status.Error(codes.InvalidArgument, "request cannot be empty") } @@ -595,7 +595,7 @@ func (q *QueryServer) QueryExtendedPairVaultMappingByApp(c context.Context, req }, nil } -func (q *QueryServer) QueryTVLByAppOfAllExtendedPairs(c context.Context, req *types.QueryTVLByAppOfAllExtendedPairsRequest) (*types.QueryTVLByAppOfAllExtendedPairsResponse, error) { +func (q QueryServer) QueryTVLByAppOfAllExtendedPairs(c context.Context, req *types.QueryTVLByAppOfAllExtendedPairsRequest) (*types.QueryTVLByAppOfAllExtendedPairsResponse, error) { if req == nil { return nil, status.Error(codes.InvalidArgument, "request cannot be empty") } @@ -666,7 +666,7 @@ func (q QueryServer) QueryTVLByApp(c context.Context, req *types.QueryTVLByAppRe }, nil } -func (q *QueryServer) QueryUserMyPositionByApp(c context.Context, req *types.QueryUserMyPositionByAppRequest) (*types.QueryUserMyPositionByAppResponse, error) { +func (q QueryServer) QueryUserMyPositionByApp(c context.Context, req *types.QueryUserMyPositionByAppRequest) (*types.QueryUserMyPositionByAppResponse, error) { if req == nil { return nil, status.Error(codes.InvalidArgument, "request cannot be empty") } @@ -759,7 +759,7 @@ func (q *QueryServer) QueryUserMyPositionByApp(c context.Context, req *types.Que }, nil } -func (q *QueryServer) QueryUserExtendedPairTotalData(c context.Context, req *types.QueryUserExtendedPairTotalDataRequest) (*types.QueryUserExtendedPairTotalDataResponse, error) { +func (q QueryServer) QueryUserExtendedPairTotalData(c context.Context, req *types.QueryUserExtendedPairTotalDataRequest) (*types.QueryUserExtendedPairTotalDataResponse, error) { var ( ctx = sdk.UnwrapSDKContext(c) ) @@ -774,7 +774,7 @@ func (q *QueryServer) QueryUserExtendedPairTotalData(c context.Context, req *typ }, nil } -func (q *QueryServer) QueryPairsLockedAndMintedStatisticByApp(c context.Context, req *types.QueryPairsLockedAndMintedStatisticByAppRequest) (*types.QueryPairsLockedAndMintedStatisticByAppResponse, error) { +func (q QueryServer) QueryPairsLockedAndMintedStatisticByApp(c context.Context, req *types.QueryPairsLockedAndMintedStatisticByAppRequest) (*types.QueryPairsLockedAndMintedStatisticByAppResponse, error) { if req == nil { return nil, status.Error(codes.InvalidArgument, "request cannot be empty") } diff --git a/x/vault/keeper/query_server_test.go b/x/vault/keeper/query_server_test.go index cb58a852b..3eb1c7c69 100644 --- a/x/vault/keeper/query_server_test.go +++ b/x/vault/keeper/query_server_test.go @@ -12,8 +12,8 @@ func (s *KeeperTestSuite) TestQueryAllVaults() { addr1 := s.addr(1) addr2 := s.addr(2) - appID1 := s.CreateNewApp("appOne") - appID2 := s.CreateNewApp("appTwo") + appID1 := s.CreateNewApp("appone") + appID2 := s.CreateNewApp("apptwo") asseOneID := s.CreateNewAsset("ASSET1", "uasset1", 1000000) asseTwoID := s.CreateNewAsset("ASSET2", "uasset2", 2000000) pairID := s.CreateNewPair(addr1, asseOneID, asseTwoID) @@ -81,8 +81,8 @@ func (s *KeeperTestSuite) TestQueryAllVaultsByApp() { addr1 := s.addr(1) addr2 := s.addr(2) - appID1 := s.CreateNewApp("appOne") - appID2 := s.CreateNewApp("appTwo") + appID1 := s.CreateNewApp("appone") + appID2 := s.CreateNewApp("apptwo") asseOneID := s.CreateNewAsset("ASSET1", "uasset1", 1000000) asseTwoID := s.CreateNewAsset("ASSET2", "uasset2", 2000000) pairID := s.CreateNewPair(addr1, asseOneID, asseTwoID) @@ -146,8 +146,8 @@ func (s *KeeperTestSuite) TestQueryVault() { addr1 := s.addr(1) addr2 := s.addr(2) - appID1 := s.CreateNewApp("appOne") - appID2 := s.CreateNewApp("appTwo") + appID1 := s.CreateNewApp("appone") + appID2 := s.CreateNewApp("apptwo") asseOneID := s.CreateNewAsset("ASSET1", "uasset1", 1000000) asseTwoID := s.CreateNewAsset("ASSET2", "uasset2", 2000000) pairID := s.CreateNewPair(addr1, asseOneID, asseTwoID) @@ -172,11 +172,11 @@ func (s *KeeperTestSuite) TestQueryVault() { ExtendedVaultPairID: extendedVaultPairID1, AmountIn: newInt(1000000000), AmountOut: newInt(200000000), - Req: &types.QueryVaultRequest{Id: "appOne1"}, + Req: &types.QueryVaultRequest{Id: "appone1"}, ExpErr: nil, ExpResp: &types.QueryVaultResponse{ Vault: types.Vault{ - Id: "appOne1", + Id: "appone1", AppId: appID1, ExtendedPairVaultID: extendedVaultPairID1, Owner: addr1.String(), @@ -192,11 +192,11 @@ func (s *KeeperTestSuite) TestQueryVault() { ExtendedVaultPairID: extendedVaultPairID1, AmountIn: newInt(1000000000), AmountOut: newInt(200000000), - Req: &types.QueryVaultRequest{Id: "appOne2"}, + Req: &types.QueryVaultRequest{Id: "appone2"}, ExpErr: nil, ExpResp: &types.QueryVaultResponse{ Vault: types.Vault{ - Id: "appOne2", + Id: "appone2", AppId: appID1, ExtendedPairVaultID: extendedVaultPairID1, Owner: addr2.String(), @@ -212,11 +212,11 @@ func (s *KeeperTestSuite) TestQueryVault() { ExtendedVaultPairID: extendedVaultPairID2, AmountIn: newInt(1000000000), AmountOut: newInt(200000000), - Req: &types.QueryVaultRequest{Id: "appTwo1"}, + Req: &types.QueryVaultRequest{Id: "apptwo1"}, ExpErr: nil, ExpResp: &types.QueryVaultResponse{ Vault: types.Vault{ - Id: "appTwo1", + Id: "apptwo1", AppId: appID2, ExtendedPairVaultID: extendedVaultPairID2, Owner: addr1.String(), @@ -232,11 +232,11 @@ func (s *KeeperTestSuite) TestQueryVault() { ExtendedVaultPairID: extendedVaultPairID2, AmountIn: newInt(1000000000), AmountOut: newInt(200000000), - Req: &types.QueryVaultRequest{Id: "appTwo2"}, + Req: &types.QueryVaultRequest{Id: "apptwo2"}, ExpErr: nil, ExpResp: &types.QueryVaultResponse{ Vault: types.Vault{ - Id: "appTwo2", + Id: "apptwo2", AppId: appID2, ExtendedPairVaultID: extendedVaultPairID2, Owner: addr2.String(), @@ -286,8 +286,8 @@ func (s *KeeperTestSuite) TestQueryVaultInfoByVaultID() { addr1 := s.addr(1) addr2 := s.addr(2) - appID1 := s.CreateNewApp("appOne") - appID2 := s.CreateNewApp("appTwo") + appID1 := s.CreateNewApp("appone") + appID2 := s.CreateNewApp("apptwo") asseOneID := s.CreateNewAsset("ASSET1", "uasset1", 1000000) asseTwoID := s.CreateNewAsset("ASSET2", "uasset2", 2000000) pairID := s.CreateNewPair(addr1, asseOneID, asseTwoID) @@ -312,11 +312,11 @@ func (s *KeeperTestSuite) TestQueryVaultInfoByVaultID() { ExtendedVaultPairID: extendedVaultPairID1, AmountIn: newInt(1000000000), AmountOut: newInt(200000000), - Req: &types.QueryVaultInfoByVaultIDRequest{Id: "appOne1"}, + Req: &types.QueryVaultInfoByVaultIDRequest{Id: "appone1"}, ExpErr: nil, ExpResp: &types.QueryVaultInfoByVaultIDResponse{ VaultsInfo: types.VaultInfo{ - Id: "appOne1", + Id: "appone1", ExtendedPairID: extendedVaultPairID1, Owner: addr1.String(), Collateral: newInt(1000000000), @@ -334,11 +334,11 @@ func (s *KeeperTestSuite) TestQueryVaultInfoByVaultID() { ExtendedVaultPairID: extendedVaultPairID1, AmountIn: newInt(1000000000), AmountOut: newInt(200000000), - Req: &types.QueryVaultInfoByVaultIDRequest{Id: "appOne2"}, + Req: &types.QueryVaultInfoByVaultIDRequest{Id: "appone2"}, ExpErr: nil, ExpResp: &types.QueryVaultInfoByVaultIDResponse{ VaultsInfo: types.VaultInfo{ - Id: "appOne2", + Id: "appone2", ExtendedPairID: extendedVaultPairID1, Owner: addr2.String(), Collateral: newInt(1000000000), @@ -356,11 +356,11 @@ func (s *KeeperTestSuite) TestQueryVaultInfoByVaultID() { ExtendedVaultPairID: extendedVaultPairID2, AmountIn: newInt(1000000000), AmountOut: newInt(200000000), - Req: &types.QueryVaultInfoByVaultIDRequest{Id: "appTwo1"}, + Req: &types.QueryVaultInfoByVaultIDRequest{Id: "apptwo1"}, ExpErr: nil, ExpResp: &types.QueryVaultInfoByVaultIDResponse{ VaultsInfo: types.VaultInfo{ - Id: "appTwo1", + Id: "apptwo1", ExtendedPairID: extendedVaultPairID2, Owner: addr1.String(), Collateral: newInt(1000000000), @@ -378,11 +378,11 @@ func (s *KeeperTestSuite) TestQueryVaultInfoByVaultID() { ExtendedVaultPairID: extendedVaultPairID2, AmountIn: newInt(1000000000), AmountOut: newInt(200000000), - Req: &types.QueryVaultInfoByVaultIDRequest{Id: "appTwo2"}, + Req: &types.QueryVaultInfoByVaultIDRequest{Id: "apptwo2"}, ExpErr: nil, ExpResp: &types.QueryVaultInfoByVaultIDResponse{ VaultsInfo: types.VaultInfo{ - Id: "appTwo2", + Id: "apptwo2", ExtendedPairID: extendedVaultPairID2, Owner: addr2.String(), Collateral: newInt(1000000000), @@ -437,8 +437,8 @@ func (s *KeeperTestSuite) TestQueryVaultInfoOfOwnerByApp() { addr1 := s.addr(1) addr2 := s.addr(2) - appID1 := s.CreateNewApp("appOne") - appID2 := s.CreateNewApp("appTwo") + appID1 := s.CreateNewApp("appone") + appID2 := s.CreateNewApp("apptwo") asseOneID := s.CreateNewAsset("ASSET1", "uasset1", 1000000) asseTwoID := s.CreateNewAsset("ASSET2", "uasset2", 2000000) pairID := s.CreateNewPair(addr1, asseOneID, asseTwoID) @@ -468,7 +468,7 @@ func (s *KeeperTestSuite) TestQueryVaultInfoOfOwnerByApp() { ExpResp: &types.QueryVaultInfoOfOwnerByAppResponse{ VaultsInfo: []types.VaultInfo{ { - Id: "appOne1", + Id: "appone1", ExtendedPairID: extendedVaultPairID1, Owner: addr1.String(), Collateral: newInt(1000000000), @@ -492,7 +492,7 @@ func (s *KeeperTestSuite) TestQueryVaultInfoOfOwnerByApp() { ExpResp: &types.QueryVaultInfoOfOwnerByAppResponse{ VaultsInfo: []types.VaultInfo{ { - Id: "appOne2", + Id: "appone2", ExtendedPairID: extendedVaultPairID1, Owner: addr2.String(), Collateral: newInt(1000000000), @@ -516,7 +516,7 @@ func (s *KeeperTestSuite) TestQueryVaultInfoOfOwnerByApp() { ExpResp: &types.QueryVaultInfoOfOwnerByAppResponse{ VaultsInfo: []types.VaultInfo{ { - Id: "appTwo1", + Id: "apptwo1", ExtendedPairID: extendedVaultPairID2, Owner: addr1.String(), Collateral: newInt(1000000000), @@ -540,7 +540,7 @@ func (s *KeeperTestSuite) TestQueryVaultInfoOfOwnerByApp() { ExpResp: &types.QueryVaultInfoOfOwnerByAppResponse{ VaultsInfo: []types.VaultInfo{ { - Id: "appTwo2", + Id: "apptwo2", ExtendedPairID: extendedVaultPairID2, Owner: addr2.String(), Collateral: newInt(1000000000), @@ -596,8 +596,8 @@ func (s *KeeperTestSuite) TestQueryAllVaultsByAppAndExtendedPair() { addr1 := s.addr(1) addr2 := s.addr(2) - appID1 := s.CreateNewApp("appOne") - appID2 := s.CreateNewApp("appTwo") + appID1 := s.CreateNewApp("appone") + appID2 := s.CreateNewApp("apptwo") asseOneID := s.CreateNewAsset("ASSET1", "uasset1", 1000000) asseTwoID := s.CreateNewAsset("ASSET2", "uasset2", 2000000) pairID := s.CreateNewPair(addr1, asseOneID, asseTwoID) @@ -645,7 +645,7 @@ func (s *KeeperTestSuite) TestQueryAllVaultsByAppAndExtendedPair() { ExpResp: &types.QueryAllVaultsByAppAndExtendedPairResponse{ Vault: []types.Vault{ { - Id: "appOne1", + Id: "appone1", AppId: appID1, ExtendedPairVaultID: extendedVaultPairID1, Owner: addr1.String(), @@ -667,7 +667,7 @@ func (s *KeeperTestSuite) TestQueryAllVaultsByAppAndExtendedPair() { ExpResp: &types.QueryAllVaultsByAppAndExtendedPairResponse{ Vault: []types.Vault{ { - Id: "appOne1", + Id: "appone1", AppId: appID1, ExtendedPairVaultID: extendedVaultPairID1, Owner: addr1.String(), @@ -675,7 +675,7 @@ func (s *KeeperTestSuite) TestQueryAllVaultsByAppAndExtendedPair() { AmountOut: newInt(200000000), }, { - Id: "appOne2", + Id: "appone2", AppId: appID1, ExtendedPairVaultID: extendedVaultPairID1, Owner: addr2.String(), @@ -697,7 +697,7 @@ func (s *KeeperTestSuite) TestQueryAllVaultsByAppAndExtendedPair() { ExpResp: &types.QueryAllVaultsByAppAndExtendedPairResponse{ Vault: []types.Vault{ { - Id: "appTwo1", + Id: "apptwo1", AppId: appID2, ExtendedPairVaultID: extendedVaultPairID2, Owner: addr1.String(), @@ -719,7 +719,7 @@ func (s *KeeperTestSuite) TestQueryAllVaultsByAppAndExtendedPair() { ExpResp: &types.QueryAllVaultsByAppAndExtendedPairResponse{ Vault: []types.Vault{ { - Id: "appTwo1", + Id: "apptwo1", AppId: appID2, ExtendedPairVaultID: extendedVaultPairID2, Owner: addr1.String(), @@ -727,7 +727,7 @@ func (s *KeeperTestSuite) TestQueryAllVaultsByAppAndExtendedPair() { AmountOut: newInt(200000000), }, { - Id: "appTwo2", + Id: "apptwo2", AppId: appID2, ExtendedPairVaultID: extendedVaultPairID2, Owner: addr2.String(), @@ -762,8 +762,8 @@ func (s *KeeperTestSuite) TestQueryVaultIDOfOwnerByExtendedPairAndApp() { addr1 := s.addr(1) addr2 := s.addr(2) - appID1 := s.CreateNewApp("appOne") - appID2 := s.CreateNewApp("appTwo") + appID1 := s.CreateNewApp("appone") + appID2 := s.CreateNewApp("apptwo") asseOneID := s.CreateNewAsset("ASSET1", "uasset1", 1000000) asseTwoID := s.CreateNewAsset("ASSET2", "uasset2", 2000000) pairID := s.CreateNewPair(addr1, asseOneID, asseTwoID) @@ -815,7 +815,7 @@ func (s *KeeperTestSuite) TestQueryVaultIDOfOwnerByExtendedPairAndApp() { Req: &types.QueryVaultIDOfOwnerByExtendedPairAndAppRequest{AppId: appID1, ExtendedPairId: extendedVaultPairID1, Owner: addr1.String()}, ExpErr: nil, ExpResp: &types.QueryVaultIDOfOwnerByExtendedPairAndAppResponse{ - Vault_Id: "appOne1", + Vault_Id: "appone1", }, }, { @@ -828,7 +828,7 @@ func (s *KeeperTestSuite) TestQueryVaultIDOfOwnerByExtendedPairAndApp() { Req: &types.QueryVaultIDOfOwnerByExtendedPairAndAppRequest{AppId: appID1, ExtendedPairId: extendedVaultPairID1, Owner: addr2.String()}, ExpErr: nil, ExpResp: &types.QueryVaultIDOfOwnerByExtendedPairAndAppResponse{ - Vault_Id: "appOne2", + Vault_Id: "appone2", }, }, { @@ -841,7 +841,7 @@ func (s *KeeperTestSuite) TestQueryVaultIDOfOwnerByExtendedPairAndApp() { Req: &types.QueryVaultIDOfOwnerByExtendedPairAndAppRequest{AppId: appID2, ExtendedPairId: extendedVaultPairID2, Owner: addr1.String()}, ExpErr: nil, ExpResp: &types.QueryVaultIDOfOwnerByExtendedPairAndAppResponse{ - Vault_Id: "appTwo1", + Vault_Id: "apptwo1", }, }, { @@ -854,7 +854,7 @@ func (s *KeeperTestSuite) TestQueryVaultIDOfOwnerByExtendedPairAndApp() { Req: &types.QueryVaultIDOfOwnerByExtendedPairAndAppRequest{AppId: appID2, ExtendedPairId: extendedVaultPairID2, Owner: addr2.String()}, ExpErr: nil, ExpResp: &types.QueryVaultIDOfOwnerByExtendedPairAndAppResponse{ - Vault_Id: "appTwo2", + Vault_Id: "apptwo2", }, }, } @@ -882,8 +882,8 @@ func (s *KeeperTestSuite) TestQueryVaultIdsByAppInAllExtendedPairs() { addr1 := s.addr(1) addr2 := s.addr(2) - appID1 := s.CreateNewApp("appOne") - appID2 := s.CreateNewApp("appTwo") + appID1 := s.CreateNewApp("appone") + appID2 := s.CreateNewApp("apptwo") asseOneID := s.CreateNewAsset("ASSET1", "uasset1", 1000000) asseTwoID := s.CreateNewAsset("ASSET2", "uasset2", 2000000) pairID := s.CreateNewPair(addr1, asseOneID, asseTwoID) @@ -929,7 +929,7 @@ func (s *KeeperTestSuite) TestQueryVaultIdsByAppInAllExtendedPairs() { Req: &types.QueryVaultIdsByAppInAllExtendedPairsRequest{AppId: appID1}, ExpErr: nil, ExpResp: &types.QueryVaultIdsByAppInAllExtendedPairsResponse{ - VaultIds: []string{"appOne1"}, + VaultIds: []string{"appone1"}, }, }, { @@ -942,7 +942,7 @@ func (s *KeeperTestSuite) TestQueryVaultIdsByAppInAllExtendedPairs() { Req: &types.QueryVaultIdsByAppInAllExtendedPairsRequest{AppId: appID1}, ExpErr: nil, ExpResp: &types.QueryVaultIdsByAppInAllExtendedPairsResponse{ - VaultIds: []string{"appOne1", "appOne2"}, + VaultIds: []string{"appone1", "appone2"}, }, }, { @@ -955,7 +955,7 @@ func (s *KeeperTestSuite) TestQueryVaultIdsByAppInAllExtendedPairs() { Req: &types.QueryVaultIdsByAppInAllExtendedPairsRequest{AppId: appID2}, ExpErr: nil, ExpResp: &types.QueryVaultIdsByAppInAllExtendedPairsResponse{ - VaultIds: []string{"appTwo1"}, + VaultIds: []string{"apptwo1"}, }, }, { @@ -968,7 +968,7 @@ func (s *KeeperTestSuite) TestQueryVaultIdsByAppInAllExtendedPairs() { Req: &types.QueryVaultIdsByAppInAllExtendedPairsRequest{AppId: appID2}, ExpErr: nil, ExpResp: &types.QueryVaultIdsByAppInAllExtendedPairsResponse{ - VaultIds: []string{"appTwo1", "appTwo2"}, + VaultIds: []string{"apptwo1", "apptwo2"}, }, }, } @@ -995,8 +995,8 @@ func (s *KeeperTestSuite) TestQueryAllVaultIdsByAnOwner() { addr1 := s.addr(1) addr2 := s.addr(2) - appID1 := s.CreateNewApp("appOne") - appID2 := s.CreateNewApp("appTwo") + appID1 := s.CreateNewApp("appone") + appID2 := s.CreateNewApp("apptwo") asseOneID := s.CreateNewAsset("ASSET1", "uasset1", 1000000) asseTwoID := s.CreateNewAsset("ASSET2", "uasset2", 2000000) pairID := s.CreateNewPair(addr1, asseOneID, asseTwoID) @@ -1036,7 +1036,7 @@ func (s *KeeperTestSuite) TestQueryAllVaultIdsByAnOwner() { Req: &types.QueryAllVaultIdsByAnOwnerRequest{Owner: addr1.String()}, ExpErr: nil, ExpResp: &types.QueryAllVaultIdsByAnOwnerResponse{ - VaultIds: []string{"appOne1"}, + VaultIds: []string{"appone1"}, }, }, { @@ -1049,7 +1049,7 @@ func (s *KeeperTestSuite) TestQueryAllVaultIdsByAnOwner() { Req: &types.QueryAllVaultIdsByAnOwnerRequest{Owner: addr2.String()}, ExpErr: nil, ExpResp: &types.QueryAllVaultIdsByAnOwnerResponse{ - VaultIds: []string{"appOne2"}, + VaultIds: []string{"appone2"}, }, }, { @@ -1062,7 +1062,7 @@ func (s *KeeperTestSuite) TestQueryAllVaultIdsByAnOwner() { Req: &types.QueryAllVaultIdsByAnOwnerRequest{Owner: addr1.String()}, ExpErr: nil, ExpResp: &types.QueryAllVaultIdsByAnOwnerResponse{ - VaultIds: []string{"appOne1", "appTwo1"}, + VaultIds: []string{"appone1", "apptwo1"}, }, }, { @@ -1075,7 +1075,7 @@ func (s *KeeperTestSuite) TestQueryAllVaultIdsByAnOwner() { Req: &types.QueryAllVaultIdsByAnOwnerRequest{Owner: addr2.String()}, ExpErr: nil, ExpResp: &types.QueryAllVaultIdsByAnOwnerResponse{ - VaultIds: []string{"appOne2", "appTwo2"}, + VaultIds: []string{"appone2", "apptwo2"}, }, }, } @@ -1102,8 +1102,8 @@ func (s *KeeperTestSuite) TestQueryTokenMintedByAppAndExtendedPair() { addr1 := s.addr(1) addr2 := s.addr(2) - appID1 := s.CreateNewApp("appOne") - appID2 := s.CreateNewApp("appTwo") + appID1 := s.CreateNewApp("appone") + appID2 := s.CreateNewApp("apptwo") asseOneID := s.CreateNewAsset("ASSET1", "uasset1", 1000000) asseTwoID := s.CreateNewAsset("ASSET2", "uasset2", 2000000) pairID := s.CreateNewPair(addr1, asseOneID, asseTwoID) @@ -1221,8 +1221,8 @@ func (s *KeeperTestSuite) TestQueryTokenMintedAssetWiseByApp() { addr1 := s.addr(1) addr2 := s.addr(2) - appID1 := s.CreateNewApp("appOne") - appID2 := s.CreateNewApp("appTwo") + appID1 := s.CreateNewApp("appone") + appID2 := s.CreateNewApp("apptwo") asseOneID := s.CreateNewAsset("ASSET1", "uasset1", 1000000) asseTwoID := s.CreateNewAsset("ASSET2", "uasset2", 2000000) pairID := s.CreateNewPair(addr1, asseOneID, asseTwoID) @@ -1342,8 +1342,8 @@ func (s *KeeperTestSuite) TestQueryVaultCountByApp() { addr1 := s.addr(1) addr2 := s.addr(2) - appID1 := s.CreateNewApp("appOne") - appID2 := s.CreateNewApp("appTwo") + appID1 := s.CreateNewApp("appone") + appID2 := s.CreateNewApp("apptwo") asseOneID := s.CreateNewAsset("ASSET1", "uasset1", 1000000) asseTwoID := s.CreateNewAsset("ASSET2", "uasset2", 2000000) pairID := s.CreateNewPair(addr1, asseOneID, asseTwoID) @@ -1455,8 +1455,8 @@ func (s *KeeperTestSuite) TestQueryVaultCountByAppAndExtendedPair() { addr1 := s.addr(1) addr2 := s.addr(2) - appID1 := s.CreateNewApp("appOne") - appID2 := s.CreateNewApp("appTwo") + appID1 := s.CreateNewApp("appone") + appID2 := s.CreateNewApp("apptwo") asseOneID := s.CreateNewAsset("ASSET1", "uasset1", 1000000) asseTwoID := s.CreateNewAsset("ASSET2", "uasset2", 2000000) pairID := s.CreateNewPair(addr1, asseOneID, asseTwoID) @@ -1568,8 +1568,8 @@ func (s *KeeperTestSuite) TestQueryTotalValueLockedByAppAndExtendedPair() { addr1 := s.addr(1) addr2 := s.addr(2) - appID1 := s.CreateNewApp("appOne") - appID2 := s.CreateNewApp("appTwo") + appID1 := s.CreateNewApp("appone") + appID2 := s.CreateNewApp("apptwo") asseOneID := s.CreateNewAsset("ASSET1", "uasset1", 1000000) asseTwoID := s.CreateNewAsset("ASSET2", "uasset2", 2000000) pairID := s.CreateNewPair(addr1, asseOneID, asseTwoID) @@ -1679,8 +1679,8 @@ func (s *KeeperTestSuite) TestQueryExtendedPairIDsByApp() { addr1 := s.addr(1) addr2 := s.addr(2) - appID1 := s.CreateNewApp("appOne") - appID2 := s.CreateNewApp("appTwo") + appID1 := s.CreateNewApp("appone") + appID2 := s.CreateNewApp("apptwo") asseOneID := s.CreateNewAsset("ASSET1", "uasset1", 1000000) asseTwoID := s.CreateNewAsset("ASSET2", "uasset2", 2000000) pairID := s.CreateNewPair(addr1, asseOneID, asseTwoID) @@ -1792,8 +1792,8 @@ func (s *KeeperTestSuite) TestQueryStableVaultByVaultID() { addr1 := s.addr(1) // addr2 := s.addr(2) - appID1 := s.CreateNewApp("appOne") - appID2 := s.CreateNewApp("appTwo") + appID1 := s.CreateNewApp("appone") + appID2 := s.CreateNewApp("apptwo") asseOneID := s.CreateNewAsset("ASSET1", "uasset1", 1000000) asseTwoID := s.CreateNewAsset("ASSET2", "uasset2", 2000000) pairID := s.CreateNewPair(addr1, asseOneID, asseTwoID) @@ -1822,11 +1822,11 @@ func (s *KeeperTestSuite) TestQueryStableVaultByVaultID() { AppID: appID1, ExtendedVaultPairID: extendedVaultPairID1, AmountIn: newInt(1000000000), - Req: &types.QueryStableVaultByVaultIDRequest{StableVaultId: "appOne1"}, + Req: &types.QueryStableVaultByVaultIDRequest{StableVaultId: "appone1"}, ExpErr: nil, ExpResp: &types.QueryStableVaultByVaultIDResponse{ StableMintVault: &types.StableMintVault{ - Id: "appOne1", + Id: "appone1", AmountIn: newInt(1000000000), AmountOut: newInt(1000000000), AppId: appID1, @@ -1840,11 +1840,11 @@ func (s *KeeperTestSuite) TestQueryStableVaultByVaultID() { AppID: appID2, ExtendedVaultPairID: extendedVaultPairID2, AmountIn: newInt(1000000000), - Req: &types.QueryStableVaultByVaultIDRequest{StableVaultId: "appTwo1"}, + Req: &types.QueryStableVaultByVaultIDRequest{StableVaultId: "apptwo1"}, ExpErr: nil, ExpResp: &types.QueryStableVaultByVaultIDResponse{ StableMintVault: &types.StableMintVault{ - Id: "appTwo1", + Id: "apptwo1", AmountIn: newInt(1000000000), AmountOut: newInt(1000000000), AppId: appID2, @@ -1881,8 +1881,8 @@ func (s *KeeperTestSuite) TestQueryStableVaultByApp() { addr1 := s.addr(1) // addr2 := s.addr(2) - appID1 := s.CreateNewApp("appOne") - appID2 := s.CreateNewApp("appTwo") + appID1 := s.CreateNewApp("appone") + appID2 := s.CreateNewApp("apptwo") asseOneID := s.CreateNewAsset("ASSET1", "uasset1", 1000000) asseTwoID := s.CreateNewAsset("ASSET2", "uasset2", 2000000) pairID := s.CreateNewPair(addr1, asseOneID, asseTwoID) @@ -1916,7 +1916,7 @@ func (s *KeeperTestSuite) TestQueryStableVaultByApp() { ExpResp: &types.QueryStableVaultByAppResponse{ StableMintVault: []types.StableMintVault{ { - Id: "appOne1", + Id: "appone1", AmountIn: newInt(1000000000), AmountOut: newInt(1000000000), AppId: appID1, @@ -1936,7 +1936,7 @@ func (s *KeeperTestSuite) TestQueryStableVaultByApp() { ExpResp: &types.QueryStableVaultByAppResponse{ StableMintVault: []types.StableMintVault{ { - Id: "appTwo1", + Id: "apptwo1", AmountIn: newInt(1000000000), AmountOut: newInt(1000000000), AppId: appID2, @@ -1974,8 +1974,8 @@ func (s *KeeperTestSuite) TestQueryStableVaultByAppAndExtendedPair() { addr1 := s.addr(1) // addr2 := s.addr(2) - appID1 := s.CreateNewApp("appOne") - appID2 := s.CreateNewApp("appTwo") + appID1 := s.CreateNewApp("appone") + appID2 := s.CreateNewApp("apptwo") asseOneID := s.CreateNewAsset("ASSET1", "uasset1", 1000000) asseTwoID := s.CreateNewAsset("ASSET2", "uasset2", 2000000) pairID := s.CreateNewPair(addr1, asseOneID, asseTwoID) @@ -2008,7 +2008,7 @@ func (s *KeeperTestSuite) TestQueryStableVaultByAppAndExtendedPair() { ExpErr: nil, ExpResp: &types.QueryStableVaultByAppAndExtendedPairResponse{ StableMintVault: &types.StableMintVault{ - Id: "appOne1", + Id: "appone1", AmountIn: newInt(1000000000), AmountOut: newInt(1000000000), AppId: appID1, @@ -2026,7 +2026,7 @@ func (s *KeeperTestSuite) TestQueryStableVaultByAppAndExtendedPair() { ExpErr: nil, ExpResp: &types.QueryStableVaultByAppAndExtendedPairResponse{ StableMintVault: &types.StableMintVault{ - Id: "appTwo1", + Id: "apptwo1", AmountIn: newInt(1000000000), AmountOut: newInt(1000000000), AppId: appID2, @@ -2063,8 +2063,8 @@ func (s *KeeperTestSuite) TestQueryExtendedPairVaultMappingByAppAndExtendedPair( addr1 := s.addr(1) addr2 := s.addr(2) - appID1 := s.CreateNewApp("appOne") - appID2 := s.CreateNewApp("appTwo") + appID1 := s.CreateNewApp("appone") + appID2 := s.CreateNewApp("apptwo") asseOneID := s.CreateNewAsset("ASSET1", "uasset1", 1000000) asseTwoID := s.CreateNewAsset("ASSET2", "uasset2", 2000000) pairID := s.CreateNewPair(addr1, asseOneID, asseTwoID) @@ -2106,7 +2106,7 @@ func (s *KeeperTestSuite) TestQueryExtendedPairVaultMappingByAppAndExtendedPair( ExpResp: &types.QueryExtendedPairVaultMappingByAppAndExtendedPairResponse{ ExtendedPairVaultMapping: &types.ExtendedPairVaultMapping{ ExtendedPairId: extendedVaultPairID1, - VaultIds: []string{"appOne1"}, + VaultIds: []string{"appone1"}, TokenMintedAmount: newInt(200000000), CollateralLockedAmount: newInt(1000000000), }, @@ -2124,7 +2124,7 @@ func (s *KeeperTestSuite) TestQueryExtendedPairVaultMappingByAppAndExtendedPair( ExpResp: &types.QueryExtendedPairVaultMappingByAppAndExtendedPairResponse{ ExtendedPairVaultMapping: &types.ExtendedPairVaultMapping{ ExtendedPairId: extendedVaultPairID1, - VaultIds: []string{"appOne1", "appOne2"}, + VaultIds: []string{"appone1", "appone2"}, TokenMintedAmount: newInt(400000000), CollateralLockedAmount: newInt(2000000000), }, @@ -2142,7 +2142,7 @@ func (s *KeeperTestSuite) TestQueryExtendedPairVaultMappingByAppAndExtendedPair( ExpResp: &types.QueryExtendedPairVaultMappingByAppAndExtendedPairResponse{ ExtendedPairVaultMapping: &types.ExtendedPairVaultMapping{ ExtendedPairId: extendedVaultPairID2, - VaultIds: []string{"appTwo1"}, + VaultIds: []string{"apptwo1"}, TokenMintedAmount: newInt(200000000), CollateralLockedAmount: newInt(1000000000), }, @@ -2160,7 +2160,7 @@ func (s *KeeperTestSuite) TestQueryExtendedPairVaultMappingByAppAndExtendedPair( ExpResp: &types.QueryExtendedPairVaultMappingByAppAndExtendedPairResponse{ ExtendedPairVaultMapping: &types.ExtendedPairVaultMapping{ ExtendedPairId: extendedVaultPairID2, - VaultIds: []string{"appTwo1", "appTwo2"}, + VaultIds: []string{"apptwo1", "apptwo2"}, TokenMintedAmount: newInt(400000000), CollateralLockedAmount: newInt(2000000000), }, @@ -2193,8 +2193,8 @@ func (s *KeeperTestSuite) TestQueryExtendedPairVaultMappingByApp() { addr1 := s.addr(1) addr2 := s.addr(2) - appID1 := s.CreateNewApp("appOne") - appID2 := s.CreateNewApp("appTwo") + appID1 := s.CreateNewApp("appone") + appID2 := s.CreateNewApp("apptwo") asseOneID := s.CreateNewAsset("ASSET1", "uasset1", 1000000) asseTwoID := s.CreateNewAsset("ASSET2", "uasset2", 2000000) pairID := s.CreateNewPair(addr1, asseOneID, asseTwoID) @@ -2237,7 +2237,7 @@ func (s *KeeperTestSuite) TestQueryExtendedPairVaultMappingByApp() { ExtendedPairVaultMapping: []*types.ExtendedPairVaultMapping{ { ExtendedPairId: extendedVaultPairID1, - VaultIds: []string{"appOne1"}, + VaultIds: []string{"appone1"}, TokenMintedAmount: newInt(200000000), CollateralLockedAmount: newInt(1000000000), }, @@ -2257,7 +2257,7 @@ func (s *KeeperTestSuite) TestQueryExtendedPairVaultMappingByApp() { ExtendedPairVaultMapping: []*types.ExtendedPairVaultMapping{ { ExtendedPairId: extendedVaultPairID1, - VaultIds: []string{"appOne1", "appOne2"}, + VaultIds: []string{"appone1", "appone2"}, TokenMintedAmount: newInt(400000000), CollateralLockedAmount: newInt(2000000000), }, @@ -2277,7 +2277,7 @@ func (s *KeeperTestSuite) TestQueryExtendedPairVaultMappingByApp() { ExtendedPairVaultMapping: []*types.ExtendedPairVaultMapping{ { ExtendedPairId: extendedVaultPairID2, - VaultIds: []string{"appTwo1"}, + VaultIds: []string{"apptwo1"}, TokenMintedAmount: newInt(200000000), CollateralLockedAmount: newInt(1000000000), }, @@ -2297,7 +2297,7 @@ func (s *KeeperTestSuite) TestQueryExtendedPairVaultMappingByApp() { ExtendedPairVaultMapping: []*types.ExtendedPairVaultMapping{ { ExtendedPairId: extendedVaultPairID2, - VaultIds: []string{"appTwo1", "appTwo2"}, + VaultIds: []string{"apptwo1", "apptwo2"}, TokenMintedAmount: newInt(400000000), CollateralLockedAmount: newInt(2000000000), }, @@ -2331,8 +2331,8 @@ func (s *KeeperTestSuite) TestQueryTVLByAppOfAllExtendedPairs() { addr1 := s.addr(1) addr2 := s.addr(2) - appID1 := s.CreateNewApp("appOne") - appID2 := s.CreateNewApp("appTwo") + appID1 := s.CreateNewApp("appone") + appID2 := s.CreateNewApp("apptwo") asseOneID := s.CreateNewAsset("ASSET1", "uasset1", 1000000) asseTwoID := s.CreateNewAsset("ASSET2", "uasset2", 2000000) pairID := s.CreateNewPair(addr1, asseOneID, asseTwoID) @@ -2459,8 +2459,8 @@ func (s *KeeperTestSuite) TestQueryTVLByApp() { addr1 := s.addr(1) addr2 := s.addr(2) - appID1 := s.CreateNewApp("appOne") - appID2 := s.CreateNewApp("appTwo") + appID1 := s.CreateNewApp("appone") + appID2 := s.CreateNewApp("apptwo") asseOneID := s.CreateNewAsset("ASSET1", "uasset1", 1000000) asseTwoID := s.CreateNewAsset("ASSET2", "uasset2", 2000000) pairID := s.CreateNewPair(addr1, asseOneID, asseTwoID) @@ -2566,8 +2566,8 @@ func (s *KeeperTestSuite) TestQueryUserMyPositionByApp() { addr1 := s.addr(1) addr2 := s.addr(2) - appID1 := s.CreateNewApp("appOne") - appID2 := s.CreateNewApp("appTwo") + appID1 := s.CreateNewApp("appone") + appID2 := s.CreateNewApp("apptwo") asseOneID := s.CreateNewAsset("ASSET1", "uasset1", 1000000) asseTwoID := s.CreateNewAsset("ASSET2", "uasset2", 2000000) pairID := s.CreateNewPair(addr1, asseOneID, asseTwoID) @@ -2688,8 +2688,8 @@ func (s *KeeperTestSuite) TestQueryUserExtendedPairTotalData() { addr1 := s.addr(1) addr2 := s.addr(2) - appID1 := s.CreateNewApp("appOne") - appID2 := s.CreateNewApp("appTwo") + appID1 := s.CreateNewApp("appone") + appID2 := s.CreateNewApp("apptwo") asseOneID := s.CreateNewAsset("ASSET1", "uasset1", 1000000) asseTwoID := s.CreateNewAsset("ASSET2", "uasset2", 2000000) pairID := s.CreateNewPair(addr1, asseOneID, asseTwoID) @@ -2723,7 +2723,7 @@ func (s *KeeperTestSuite) TestQueryUserExtendedPairTotalData() { { AppId: appID1, UserExtendedPairVault: []*types.ExtendedPairToVaultMapping{ - {ExtendedPairId: extendedVaultPairID1, VaultId: "appOne1"}, + {ExtendedPairId: extendedVaultPairID1, VaultId: "appone1"}, }, }, }, @@ -2746,7 +2746,7 @@ func (s *KeeperTestSuite) TestQueryUserExtendedPairTotalData() { { AppId: appID1, UserExtendedPairVault: []*types.ExtendedPairToVaultMapping{ - {ExtendedPairId: extendedVaultPairID1, VaultId: "appOne2"}, + {ExtendedPairId: extendedVaultPairID1, VaultId: "appone2"}, }, }, }, @@ -2769,13 +2769,13 @@ func (s *KeeperTestSuite) TestQueryUserExtendedPairTotalData() { { AppId: appID1, UserExtendedPairVault: []*types.ExtendedPairToVaultMapping{ - {ExtendedPairId: extendedVaultPairID1, VaultId: "appOne1"}, + {ExtendedPairId: extendedVaultPairID1, VaultId: "appone1"}, }, }, { AppId: appID2, UserExtendedPairVault: []*types.ExtendedPairToVaultMapping{ - {ExtendedPairId: extendedVaultPairID2, VaultId: "appTwo1"}, + {ExtendedPairId: extendedVaultPairID2, VaultId: "apptwo1"}, }, }, }, @@ -2798,13 +2798,13 @@ func (s *KeeperTestSuite) TestQueryUserExtendedPairTotalData() { { AppId: appID1, UserExtendedPairVault: []*types.ExtendedPairToVaultMapping{ - {ExtendedPairId: extendedVaultPairID1, VaultId: "appOne2"}, + {ExtendedPairId: extendedVaultPairID1, VaultId: "appone2"}, }, }, { AppId: appID2, UserExtendedPairVault: []*types.ExtendedPairToVaultMapping{ - {ExtendedPairId: extendedVaultPairID2, VaultId: "appTwo2"}, + {ExtendedPairId: extendedVaultPairID2, VaultId: "apptwo2"}, }, }, }, @@ -2836,8 +2836,8 @@ func (s *KeeperTestSuite) TestQueryPairsLockedAndMintedStatisticByApp() { addr1 := s.addr(1) addr2 := s.addr(2) - appID1 := s.CreateNewApp("appOne") - appID2 := s.CreateNewApp("appTwo") + appID1 := s.CreateNewApp("appone") + appID2 := s.CreateNewApp("apptwo") asseOneID := s.CreateNewAsset("ASSET1", "uasset1", 1000000) asseTwoID := s.CreateNewAsset("ASSET2", "uasset2", 2000000) pairID := s.CreateNewPair(addr1, asseOneID, asseTwoID) diff --git a/x/vault/keeper/vault.go b/x/vault/keeper/vault.go index db583f80f..009066a77 100644 --- a/x/vault/keeper/vault.go +++ b/x/vault/keeper/vault.go @@ -6,7 +6,7 @@ import ( "strconv" ) -func (k *Keeper) SetUserVaultExtendedPairMapping(ctx sdk.Context, userVaultAssetData types.UserVaultAssetMapping) { +func (k Keeper) SetUserVaultExtendedPairMapping(ctx sdk.Context, userVaultAssetData types.UserVaultAssetMapping) { var ( store = k.Store(ctx) key = types.UserVaultExtendedPairMappingKey(userVaultAssetData.Owner) @@ -16,7 +16,7 @@ func (k *Keeper) SetUserVaultExtendedPairMapping(ctx sdk.Context, userVaultAsset store.Set(key, value) } -func (k *Keeper) GetUserVaultExtendedPairMapping(ctx sdk.Context, address string) (userVaultAssetData types.UserVaultAssetMapping, found bool) { +func (k Keeper) GetUserVaultExtendedPairMapping(ctx sdk.Context, address string) (userVaultAssetData types.UserVaultAssetMapping, found bool) { var ( store = k.Store(ctx) key = types.UserVaultExtendedPairMappingKey(address) @@ -31,8 +31,29 @@ func (k *Keeper) GetUserVaultExtendedPairMapping(ctx sdk.Context, address string return userVaultAssetData, true } +func (k Keeper) GetAllUserVaultExtendedPairMapping(ctx sdk.Context) (userVaultAssetData []types.UserVaultAssetMapping) { + var ( + store = k.Store(ctx) + iter = sdk.KVStorePrefixIterator(store, types.UserVaultExtendedPairMappingKeyPrefix) + ) + + defer func(iter sdk.Iterator) { + err := iter.Close() + if err != nil { + return + } + }(iter) + + for ; iter.Valid(); iter.Next() { + var vault types.UserVaultAssetMapping + k.cdc.MustUnmarshal(iter.Value(), &vault) + userVaultAssetData = append(userVaultAssetData, vault) + } + return userVaultAssetData +} + // CheckUserAppToExtendedPairMapping Checking if for a certain user for the app type , whether there exists a certain asset or not and if it contains a locker id or not . -func (k *Keeper) CheckUserAppToExtendedPairMapping(ctx sdk.Context, userVaultAssetData types.UserVaultAssetMapping, extendedPairVaultID uint64, appMappingID uint64) (vaultID string, found bool) { +func (k Keeper) CheckUserAppToExtendedPairMapping(ctx sdk.Context, userVaultAssetData types.UserVaultAssetMapping, extendedPairVaultID uint64, appMappingID uint64) (vaultID string, found bool) { for _, vaultAppMapping := range userVaultAssetData.UserVaultApp { if vaultAppMapping.AppId == appMappingID { for _, extendedPairToVaultIDMapping := range vaultAppMapping.UserExtendedPairVault { @@ -45,7 +66,7 @@ func (k *Keeper) CheckUserAppToExtendedPairMapping(ctx sdk.Context, userVaultAss } return vaultID, false } -func (k *Keeper) CheckUserToAppMapping(ctx sdk.Context, userVaultAssetData types.UserVaultAssetMapping, appMappingID uint64) (found bool) { +func (k Keeper) CheckUserToAppMapping(ctx sdk.Context, userVaultAssetData types.UserVaultAssetMapping, appMappingID uint64) (found bool) { for _, vaultAppMapping := range userVaultAssetData.UserVaultApp { if vaultAppMapping.AppId == appMappingID { return true @@ -55,7 +76,7 @@ func (k *Keeper) CheckUserToAppMapping(ctx sdk.Context, userVaultAssetData types } // SetAppExtendedPairVaultMapping Set AppExtendedPairVaultMapping to check the current status of the vault by extended pair vault id . -func (k *Keeper) SetAppExtendedPairVaultMapping(ctx sdk.Context, appExtendedPairVaultData types.AppExtendedPairVaultMapping) error { +func (k Keeper) SetAppExtendedPairVaultMapping(ctx sdk.Context, appExtendedPairVaultData types.AppExtendedPairVaultMapping) error { var ( store = k.Store(ctx) key = types.AppExtendedPairVaultMappingKey(appExtendedPairVaultData.AppId) @@ -68,7 +89,7 @@ func (k *Keeper) SetAppExtendedPairVaultMapping(ctx sdk.Context, appExtendedPair //Get AppExtendedPairVaultMapping to check the current status of the vault by extended pair vault id -func (k *Keeper) GetAppExtendedPairVaultMapping(ctx sdk.Context, appMappingID uint64) (appExtendedPairVaultData types.AppExtendedPairVaultMapping, found bool) { +func (k Keeper) GetAppExtendedPairVaultMapping(ctx sdk.Context, appMappingID uint64) (appExtendedPairVaultData types.AppExtendedPairVaultMapping, found bool) { var ( store = k.Store(ctx) key = types.AppExtendedPairVaultMappingKey(appMappingID) @@ -83,12 +104,33 @@ func (k *Keeper) GetAppExtendedPairVaultMapping(ctx sdk.Context, appMappingID ui return appExtendedPairVaultData, true } +func (k Keeper) GetAllAppExtendedPairVaultMapping(ctx sdk.Context) (appExtendedPairVaultData []types.AppExtendedPairVaultMapping) { + var ( + store = k.Store(ctx) + iter = sdk.KVStorePrefixIterator(store, types.AppExtendedPairVaultMappingKeyPrefix) + ) + + defer func(iter sdk.Iterator) { + err := iter.Close() + if err != nil { + return + } + }(iter) + + for ; iter.Valid(); iter.Next() { + var vault types.AppExtendedPairVaultMapping + k.cdc.MustUnmarshal(iter.Value(), &vault) + appExtendedPairVaultData = append(appExtendedPairVaultData, vault) + } + return appExtendedPairVaultData +} + //Check AppExtendedPairVault Data, //If exists fine --- go with the next steps from here //else instantiate 1 and set it. and go for the next steps from here //So best way will be to create a function which will first check if AppExtendedPairVault Data exists or not. If it does. then send counted value. else create a struct save it. and send counter value. -func (k *Keeper) CheckAppExtendedPairVaultMapping(ctx sdk.Context, appMappingID uint64, extendedPairVaultID uint64) (counter uint64, mintedStatistics sdk.Int, lenVaults uint64) { +func (k Keeper) CheckAppExtendedPairVaultMapping(ctx sdk.Context, appMappingID uint64, extendedPairVaultID uint64) (counter uint64, mintedStatistics sdk.Int, lenVaults uint64) { appExtendedPairVaultData, found := k.GetAppExtendedPairVaultMapping(ctx, appMappingID) if !found { //Initialising a new struct @@ -132,7 +174,7 @@ func (k *Keeper) CheckAppExtendedPairVaultMapping(ctx sdk.Context, appMappingID return appExtendedPairVaultData.Counter, newExtendedPairVault.TokenMintedAmount, 0 } -func (k *Keeper) UpdateAppExtendedPairVaultMappingDataOnMsgCreate(ctx sdk.Context, counter uint64, vaultData types.Vault) { +func (k Keeper) UpdateAppExtendedPairVaultMappingDataOnMsgCreate(ctx sdk.Context, counter uint64, vaultData types.Vault) { appExtendedPairVaultData, _ := k.GetAppExtendedPairVaultMapping(ctx, vaultData.AppId) appExtendedPairVaultData.Counter = counter @@ -153,7 +195,7 @@ func (k *Keeper) UpdateAppExtendedPairVaultMappingDataOnMsgCreate(ctx sdk.Contex } } -func (k *Keeper) UpdateAppExtendedPairVaultMappingDataOnMsgCreateStableMintVault(ctx sdk.Context, counter uint64, vaultData types.StableMintVault) { +func (k Keeper) UpdateAppExtendedPairVaultMappingDataOnMsgCreateStableMintVault(ctx sdk.Context, counter uint64, vaultData types.StableMintVault) { appExtendedPairVaultData, _ := k.GetAppExtendedPairVaultMapping(ctx, vaultData.AppId) appExtendedPairVaultData.Counter = counter @@ -175,7 +217,7 @@ func (k *Keeper) UpdateAppExtendedPairVaultMappingDataOnMsgCreateStableMintVault } // CalculateCollaterlizationRatio Calculate Collaterlization Ratio . -func (k *Keeper) CalculateCollaterlizationRatio(ctx sdk.Context, extendedPairVaultID uint64, amountIn sdk.Int, amountOut sdk.Int) (sdk.Dec, error) { +func (k Keeper) CalculateCollaterlizationRatio(ctx sdk.Context, extendedPairVaultID uint64, amountIn sdk.Int, amountOut sdk.Int) (sdk.Dec, error) { extendedPairVault, found := k.GetPairsVault(ctx, extendedPairVaultID) if !found { return sdk.ZeroDec(), types.ErrorExtendedPairVaultDoesNotExists @@ -254,7 +296,7 @@ func (k *Keeper) CalculateCollaterlizationRatio(ctx sdk.Context, extendedPairVau return totalIn.Quo(totalOut), nil } -func (k *Keeper) VerifyCollaterlizationRatio( +func (k Keeper) VerifyCollaterlizationRatio( ctx sdk.Context, extendedPairVaultID uint64, amountIn sdk.Int, @@ -262,7 +304,6 @@ func (k *Keeper) VerifyCollaterlizationRatio( minCrRequired sdk.Dec, statusEsm bool, ) error { - collaterlizationRatio, err := k.CalculateCollaterlizationRatio(ctx, extendedPairVaultID, amountIn, amountOut) if err != nil { return err @@ -275,7 +316,7 @@ func (k *Keeper) VerifyCollaterlizationRatio( return nil } -func (k *Keeper) SetVault(ctx sdk.Context, vault types.Vault) { +func (k Keeper) SetVault(ctx sdk.Context, vault types.Vault) { var ( store = k.Store(ctx) key = types.VaultKey(vault.Id) @@ -284,7 +325,7 @@ func (k *Keeper) SetVault(ctx sdk.Context, vault types.Vault) { store.Set(key, value) } -func (k *Keeper) GetVault(ctx sdk.Context, id string) (vault types.Vault, found bool) { +func (k Keeper) GetVault(ctx sdk.Context, id string) (vault types.Vault, found bool) { var ( store = k.Store(ctx) key = types.VaultKey(id) @@ -299,11 +340,11 @@ func (k *Keeper) GetVault(ctx sdk.Context, id string) (vault types.Vault, found } // UpdateCollateralLockedAmountLockerMapping For updating token stats of collateral . -func (k *Keeper) UpdateCollateralLockedAmountLockerMapping(ctx sdk.Context, valutLookupData types.AppExtendedPairVaultMapping, extendedPairID uint64, amount sdk.Int, changeType bool) { +func (k Keeper) UpdateCollateralLockedAmountLockerMapping(ctx sdk.Context, vaultLookupData types.AppExtendedPairVaultMapping, extendedPairID uint64, amount sdk.Int, changeType bool) { //if Change type true = Add to collateral Locked //If change type false = Subtract from the collateral Locked - for _, extendedPairData := range valutLookupData.ExtendedPairVaults { + for _, extendedPairData := range vaultLookupData.ExtendedPairVaults { if extendedPairData.ExtendedPairId == extendedPairID { if changeType { updatedVal := extendedPairData.CollateralLockedAmount.Add(amount) @@ -314,18 +355,18 @@ func (k *Keeper) UpdateCollateralLockedAmountLockerMapping(ctx sdk.Context, valu } } } - err := k.SetAppExtendedPairVaultMapping(ctx, valutLookupData) + err := k.SetAppExtendedPairVaultMapping(ctx, vaultLookupData) if err != nil { return } } // UpdateTokenMintedAmountLockerMapping For updating token stats of minted . -func (k *Keeper) UpdateTokenMintedAmountLockerMapping(ctx sdk.Context, valutLookupData types.AppExtendedPairVaultMapping, extendedPairID uint64, amount sdk.Int, changeType bool) { +func (k Keeper) UpdateTokenMintedAmountLockerMapping(ctx sdk.Context, vaultLookupData types.AppExtendedPairVaultMapping, extendedPairID uint64, amount sdk.Int, changeType bool) { //if Change type true = Add to token Locked //If change type false = Subtract from the token Locked - for _, extendedPairData := range valutLookupData.ExtendedPairVaults { + for _, extendedPairData := range vaultLookupData.ExtendedPairVaults { if extendedPairData.ExtendedPairId == extendedPairID { if changeType { updatedVal := extendedPairData.TokenMintedAmount.Add(amount) @@ -336,13 +377,13 @@ func (k *Keeper) UpdateTokenMintedAmountLockerMapping(ctx sdk.Context, valutLook } } } - err := k.SetAppExtendedPairVaultMapping(ctx, valutLookupData) + err := k.SetAppExtendedPairVaultMapping(ctx, vaultLookupData) if err != nil { return } } -func (k *Keeper) DeleteVault(ctx sdk.Context, id string) { +func (k Keeper) DeleteVault(ctx sdk.Context, id string) { var ( store = k.Store(ctx) key = types.VaultKey(id) @@ -351,7 +392,7 @@ func (k *Keeper) DeleteVault(ctx sdk.Context, id string) { store.Delete(key) } -func (k *Keeper) GetVaults(ctx sdk.Context) (vaults []types.Vault) { +func (k Keeper) GetVaults(ctx sdk.Context) (vaults []types.Vault) { var ( store = k.Store(ctx) iter = sdk.KVStorePrefixIterator(store, types.VaultKeyPrefix) @@ -372,7 +413,7 @@ func (k *Keeper) GetVaults(ctx sdk.Context) (vaults []types.Vault) { return vaults } -func (k *Keeper) UpdateUserVaultExtendedPairMapping(ctx sdk.Context, extendedPairID uint64, userAddress string, appMappingID uint64) { +func (k Keeper) UpdateUserVaultExtendedPairMapping(ctx sdk.Context, extendedPairID uint64, userAddress string, appMappingID uint64) { userData, found := k.GetUserVaultExtendedPairMapping(ctx, userAddress) var dataIndex int @@ -392,7 +433,7 @@ func (k *Keeper) UpdateUserVaultExtendedPairMapping(ctx sdk.Context, extendedPai } } -func (k *Keeper) DeleteAddressFromAppExtendedPairVaultMapping(ctx sdk.Context, extendedPairID uint64, userVaultID string, appMappingID uint64) { +func (k Keeper) DeleteAddressFromAppExtendedPairVaultMapping(ctx sdk.Context, extendedPairID uint64, userVaultID string, appMappingID uint64) { appExtendedPairVaultData, found := k.GetAppExtendedPairVaultMapping(ctx, appMappingID) var dataIndex int @@ -414,7 +455,7 @@ func (k *Keeper) DeleteAddressFromAppExtendedPairVaultMapping(ctx sdk.Context, e } } -func (k *Keeper) SetStableMintVault(ctx sdk.Context, stableVault types.StableMintVault) { +func (k Keeper) SetStableMintVault(ctx sdk.Context, stableVault types.StableMintVault) { var ( store = k.Store(ctx) key = types.StableMintVaultKey(stableVault.Id) @@ -424,7 +465,7 @@ func (k *Keeper) SetStableMintVault(ctx sdk.Context, stableVault types.StableMin store.Set(key, value) } -func (k *Keeper) GetStableMintVault(ctx sdk.Context, id string) (stableVault types.StableMintVault, found bool) { +func (k Keeper) GetStableMintVault(ctx sdk.Context, id string) (stableVault types.StableMintVault, found bool) { var ( store = k.Store(ctx) key = types.StableMintVaultKey(id) @@ -438,7 +479,7 @@ func (k *Keeper) GetStableMintVault(ctx sdk.Context, id string) (stableVault typ return stableVault, true } -func (k *Keeper) GetStableMintVaults(ctx sdk.Context) (stableVaults []types.StableMintVault) { +func (k Keeper) GetStableMintVaults(ctx sdk.Context) (stableVaults []types.StableMintVault) { var ( store = k.Store(ctx) iter = sdk.KVStorePrefixIterator(store, types.StableMintVaultKeyPrefix) @@ -459,44 +500,44 @@ func (k *Keeper) GetStableMintVaults(ctx sdk.Context) (stableVaults []types.Stab return stableVaults } -func (k *Keeper) CreateNewVault(ctx sdk.Context, From string, AppId uint64, ExtendedPairVaultID uint64, AmountIn sdk.Int, AmountOut sdk.Int) error { +func (k Keeper) CreateNewVault(ctx sdk.Context, From string, AppId uint64, ExtendedPairVaultID uint64, AmountIn sdk.Int, AmountOut sdk.Int) error { appMapping, _ := k.GetApp(ctx, AppId) extendedPairVault, _ := k.GetPairsVault(ctx, ExtendedPairVaultID) counterVal, _, _ := k.CheckAppExtendedPairVaultMapping(ctx, appMapping.Id, extendedPairVault.Id) - zero_val := sdk.ZeroInt() - var new_vault types.Vault - updated_counter := counterVal + 1 - new_vault.Id = appMapping.ShortName + strconv.FormatUint(updated_counter, 10) - new_vault.AmountIn = AmountIn - - new_vault.ClosingFeeAccumulated = zero_val - new_vault.AmountOut = AmountOut - new_vault.AppId = appMapping.Id - new_vault.InterestAccumulated = zero_val - new_vault.Owner = From - new_vault.CreatedAt = ctx.BlockTime() - new_vault.ExtendedPairVaultID = extendedPairVault.Id - k.SetVault(ctx, new_vault) + zeroVal := sdk.ZeroInt() + var newVault types.Vault + updatedCounter := counterVal + 1 + newVault.Id = appMapping.ShortName + strconv.FormatUint(updatedCounter, 10) + newVault.AmountIn = AmountIn + + newVault.ClosingFeeAccumulated = zeroVal + newVault.AmountOut = AmountOut + newVault.AppId = appMapping.Id + newVault.InterestAccumulated = zeroVal + newVault.Owner = From + newVault.CreatedAt = ctx.BlockTime() + newVault.ExtendedPairVaultID = extendedPairVault.Id + k.SetVault(ctx, newVault) //get extendedpair lookup table data // push the new vault id in that extended pair of the app // update the counter of the extendedpair lookup tabe ////// /////// - app_extended_pair_vault_data, _ := k.GetAppExtendedPairVaultMapping(ctx, AppId) + appExtendedPairVaultData, _ := k.GetAppExtendedPairVaultMapping(ctx, AppId) - app_extended_pair_vault_data.Counter = updated_counter + appExtendedPairVaultData.Counter = updatedCounter - for _, appData := range app_extended_pair_vault_data.ExtendedPairVaults { + for _, appData := range appExtendedPairVaultData.ExtendedPairVaults { - if appData.ExtendedPairId == new_vault.ExtendedPairVaultID { + if appData.ExtendedPairId == newVault.ExtendedPairVaultID { - appData.VaultIds = append(appData.VaultIds, new_vault.Id) + appData.VaultIds = append(appData.VaultIds, newVault.Id) } } - err := k.SetAppExtendedPairVaultMapping(ctx, app_extended_pair_vault_data) + err := k.SetAppExtendedPairVaultMapping(ctx, appExtendedPairVaultData) if err != nil { return err } @@ -504,21 +545,21 @@ func (k *Keeper) CreateNewVault(ctx sdk.Context, From string, AppId uint64, Exte ////////////////// // k.UpdateAppExtendedPairVaultMappingDataOnMsgCreate(ctx, updated_counter, new_vault) - userVaultExtendedpairMappingData, _ := k.GetUserVaultExtendedPairMapping(ctx, From) + userVaultExtendedPairMappingData, _ := k.GetUserVaultExtendedPairMapping(ctx, From) //So only need to add the locker id with asset - var userExtendedpairData types.ExtendedPairToVaultMapping - userExtendedpairData.VaultId = new_vault.Id - userExtendedpairData.ExtendedPairId = new_vault.ExtendedPairVaultID + var userExtendedPairData types.ExtendedPairToVaultMapping + userExtendedPairData.VaultId = newVault.Id + userExtendedPairData.ExtendedPairId = newVault.ExtendedPairVaultID - for _, appData := range userVaultExtendedpairMappingData.UserVaultApp { + for _, appData := range userVaultExtendedPairMappingData.UserVaultApp { if appData.AppId == appMapping.Id { - appData.UserExtendedPairVault = append(appData.UserExtendedPairVault, &userExtendedpairData) + appData.UserExtendedPairVault = append(appData.UserExtendedPairVault, &userExtendedPairData) } } - k.SetUserVaultExtendedPairMapping(ctx, userVaultExtendedpairMappingData) + k.SetUserVaultExtendedPairMapping(ctx, userVaultExtendedPairMappingData) return nil } diff --git a/x/vault/types/errors.go b/x/vault/types/errors.go index a32f4f524..3abd34fed 100644 --- a/x/vault/types/errors.go +++ b/x/vault/types/errors.go @@ -18,23 +18,28 @@ var ( // ErrorUnauthorized = errors.Register(ModuleName, 203, "unauthorized") // ErrorDuplicateVault = errors.Register(ModuleName, 204, "duplicate vault") - ErrorExtendedPairVaultDoesNotExists = errors.Register(ModuleName, 201, "Extended pair vault does not exists for the given id") - ErrorAppMappingDoesNotExist = errors.Register(ModuleName, 202, "App Mapping Id does not exists") - ErrorAppMappingIDMismatch = errors.Register(ModuleName, 203, "App Mapping Id mismatch, use the correct App Mapping ID in request") - ErrorVaultCreationInactive = errors.Register(ModuleName, 204, "Vault Creation Inactive") - ErrorUserVaultAlreadyExists = errors.Register(ModuleName, 205, "User vault already exists for the given extended pair vault id ") - ErrorAmountOutLessThanDebtFloor = errors.Register(ModuleName, 206, "Amount Out is less than Debt Floor") - ErrorAmountOutGreaterThanDebtCeiling = errors.Register(ModuleName, 207, "Amount Out is greater than Debt Ceiling") - ErrorPairDoesNotExist = errors.Register(ModuleName, 208, "Pair does not exists") - ErrorAssetDoesNotExist = errors.Register(ModuleName, 209, "Asset does not exists") - ErrorPriceDoesNotExist = errors.Register(ModuleName, 210, "Price does not exist") - ErrorInvalidCollateralizationRatio = errors.Register(ModuleName, 211, "Invalid collateralization ratio") - ErrorVaultDoesNotExist = errors.Register(ModuleName, 212, "Vault does not exist") - ErrVaultAccessUnauthorised = errors.Register(ModuleName, 213, "Unauthorized user for the tx") - ErrorInvalidAppMappingData = errors.Register(ModuleName, 214, "Invalid App Mapping data sent as compared to data exists in vault") - ErrorInvalidExtendedPairMappingData = errors.Register(ModuleName, 215, "Invalid Extended Pair Vault Mapping data sent as compared to data exists in vault") - ErrorVaultInactive = errors.Register(ModuleName, 216, "Vault tx Inactive") - ErrorStableMintVaultAlreadyCreated = errors.Register(ModuleName, 217, "Stable Mint with this ExtendedPair Already exists, try deposit for stable mint") + ErrorExtendedPairVaultDoesNotExists = errors.Register(ModuleName, 201, "Extended pair vault does not exists for the given id") + ErrorAppMappingDoesNotExist = errors.Register(ModuleName, 202, "App Mapping Id does not exists") + ErrorAppMappingIDMismatch = errors.Register(ModuleName, 203, "App Mapping Id mismatch, use the correct App Mapping ID in request") + ErrorVaultCreationInactive = errors.Register(ModuleName, 204, "Vault Creation Inactive") + ErrorUserVaultAlreadyExists = errors.Register(ModuleName, 205, "User vault already exists for the given extended pair vault id ") + ErrorAmountOutLessThanDebtFloor = errors.Register(ModuleName, 206, "Amount Out is less than Debt Floor") + ErrorAmountOutGreaterThanDebtCeiling = errors.Register(ModuleName, 207, "Amount Out is greater than Debt Ceiling") + ErrorPairDoesNotExist = errors.Register(ModuleName, 208, "Pair does not exists") + ErrorAssetDoesNotExist = errors.Register(ModuleName, 209, "Asset does not exists") + ErrorPriceDoesNotExist = errors.Register(ModuleName, 210, "Price does not exist") + ErrorInvalidCollateralizationRatio = errors.Register(ModuleName, 211, "Invalid collateralization ratio") + ErrorVaultDoesNotExist = errors.Register(ModuleName, 212, "Vault does not exist") + ErrVaultAccessUnauthorised = errors.Register(ModuleName, 213, "Unauthorized user for the tx") + ErrorInvalidAppMappingData = errors.Register(ModuleName, 214, "Invalid App Mapping data sent as compared to data exists in vault") + ErrorInvalidExtendedPairMappingData = errors.Register(ModuleName, 215, "Invalid Extended Pair Vault Mapping data sent as compared to data exists in vault") + ErrorVaultInactive = errors.Register(ModuleName, 216, "Vault tx Inactive") + ErrorStableMintVaultAlreadyCreated = errors.Register(ModuleName, 217, "Stable Mint with this ExtendedPair Already exists, try deposit for stable mint") + BurnCoinValueInVaultIsZero = errors.Register(ModuleName, 218, "Burn Coin value in vault is zero") + MintCoinValueInVaultIsZero = errors.Register(ModuleName, 219, "Mint Coin value in vault is zero") + SendCoinsFromModuleToModuleInVaultIsZero = errors.Register(ModuleName, 220, "Coin value in module to module transfer in vault is zero") + SendCoinsFromModuleToAccountInVaultIsZero = errors.Register(ModuleName, 221, "Coin value in module to account transfer in vault is zero") + SendCoinsFromAccountToModuleInVaultIsZero = errors.Register(ModuleName, 222, "Coin value in account to module transfer in vault is zero") ) var ( diff --git a/x/vault/types/genesis.go b/x/vault/types/genesis.go index f7cddf8f3..eb9b41808 100644 --- a/x/vault/types/genesis.go +++ b/x/vault/types/genesis.go @@ -1,13 +1,21 @@ package types -func NewGenesisState(vaults []Vault) *GenesisState { +func NewGenesisState(vaults []Vault, stableMintVault []StableMintVault, appExtendedPairVaultMapping []AppExtendedPairVaultMapping, userVaultAssetMapping []UserVaultAssetMapping) *GenesisState { return &GenesisState{ - Vaults: vaults, + Vaults: vaults, + StableMintVault: stableMintVault, + AppExtendedPairVaultMapping: appExtendedPairVaultMapping, + UserVaultAssetMapping: userVaultAssetMapping, } } func DefaultGenesisState() *GenesisState { - return NewGenesisState(nil) + return NewGenesisState( + []Vault{}, + []StableMintVault{}, + []AppExtendedPairVaultMapping{}, + []UserVaultAssetMapping{}, + ) } func (m *GenesisState) Validate() error { diff --git a/x/vault/types/genesis.pb.go b/x/vault/types/genesis.pb.go index 15f95223e..76b54d719 100644 --- a/x/vault/types/genesis.pb.go +++ b/x/vault/types/genesis.pb.go @@ -24,7 +24,10 @@ var _ = math.Inf const _ = proto.GoGoProtoPackageIsVersion3 // please upgrade the proto package type GenesisState struct { - Vaults []Vault `protobuf:"bytes,1,rep,name=vaults,proto3" json:"vaults" yaml:"vaults"` + Vaults []Vault `protobuf:"bytes,1,rep,name=vaults,proto3" json:"vaults" yaml:"vaults"` + StableMintVault []StableMintVault `protobuf:"bytes,2,rep,name=stableMintVault,proto3" json:"stableMintVault" yaml:"stableMintVault"` + AppExtendedPairVaultMapping []AppExtendedPairVaultMapping `protobuf:"bytes,3,rep,name=appExtendedPairVaultMapping,proto3" json:"appExtendedPairVaultMapping" yaml:"appExtendedPairVaultMapping"` + UserVaultAssetMapping []UserVaultAssetMapping `protobuf:"bytes,4,rep,name=userVaultAssetMapping,proto3" json:"userVaultAssetMapping" yaml:"userVaultAssetMapping"` } func (m *GenesisState) Reset() { *m = GenesisState{} } @@ -69,22 +72,30 @@ func init() { } var fileDescriptor_00ed468466e13f8a = []byte{ - // 229 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x52, 0x4a, 0xce, 0xcf, 0x4d, - 0x49, 0xad, 0xd0, 0x2f, 0x4b, 0x2c, 0xcd, 0x29, 0xd1, 0x2f, 0x33, 0x4c, 0x4a, 0x2d, 0x49, 0x34, - 0xd4, 0x4f, 0x4f, 0xcd, 0x4b, 0x2d, 0xce, 0x2c, 0xd6, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x12, - 0x81, 0xa8, 0xd1, 0x03, 0xab, 0xd1, 0x83, 0xaa, 0x91, 0x12, 0x49, 0xcf, 0x4f, 0xcf, 0x07, 0x2b, - 0xd0, 0x07, 0xb1, 0x20, 0x6a, 0xa5, 0x14, 0xb0, 0x9a, 0x07, 0xd1, 0x09, 0x56, 0xa1, 0x94, 0xc2, - 0xc5, 0xe3, 0x0e, 0x31, 0x3e, 0xb8, 0x24, 0xb1, 0x24, 0x55, 0x28, 0x84, 0x8b, 0x0d, 0x2c, 0x5d, - 0x2c, 0xc1, 0xa8, 0xc0, 0xac, 0xc1, 0x6d, 0x24, 0xad, 0x87, 0xcd, 0x3a, 0xbd, 0x30, 0x10, 0xcf, - 0x49, 0xfe, 0xc4, 0x3d, 0x79, 0x86, 0x47, 0xf7, 0xe4, 0xd9, 0xc0, 0xdc, 0xe2, 0x4f, 0xf7, 0xe4, - 0x79, 0x2b, 0x13, 0x73, 0x73, 0xac, 0x94, 0x20, 0x46, 0x28, 0x05, 0x41, 0xcd, 0x72, 0x0a, 0x3c, - 0xf1, 0x50, 0x8e, 0x61, 0xc5, 0x23, 0x39, 0x86, 0x13, 0x8f, 0xe4, 0x18, 0x2f, 0x3c, 0x92, 0x63, - 0x7c, 0xf0, 0x48, 0x8e, 0x71, 0xc2, 0x63, 0x39, 0x86, 0x0b, 0x8f, 0xe5, 0x18, 0x6e, 0x3c, 0x96, - 0x63, 0x88, 0xd2, 0x4f, 0xcf, 0x2c, 0xc9, 0x28, 0x4d, 0x02, 0xd9, 0xa6, 0x0f, 0xb1, 0x51, 0x37, - 0x3f, 0x2d, 0x2d, 0x33, 0x39, 0x33, 0x31, 0x07, 0xca, 0xd7, 0x87, 0x79, 0xa3, 0xa4, 0xb2, 0x20, - 0xb5, 0x38, 0x89, 0x0d, 0xec, 0x7e, 0x63, 0x40, 0x00, 0x00, 0x00, 0xff, 0xff, 0xdd, 0x6f, 0x2c, - 0x78, 0x33, 0x01, 0x00, 0x00, + // 365 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x92, 0x31, 0x4b, 0xf3, 0x40, + 0x18, 0xc7, 0x93, 0xb7, 0xa5, 0x43, 0x5e, 0x45, 0x08, 0x55, 0x4a, 0x2b, 0x97, 0x72, 0x28, 0x88, + 0x62, 0x8e, 0xea, 0xe6, 0xd6, 0x80, 0x38, 0x15, 0x34, 0x55, 0x07, 0xb7, 0x4b, 0x7b, 0x8d, 0x07, + 0x69, 0x2e, 0xf4, 0xae, 0xa5, 0x1d, 0x9d, 0x5c, 0xfd, 0x06, 0xae, 0x7e, 0x94, 0x8e, 0x1d, 0x9d, + 0x82, 0xa6, 0xdf, 0xa0, 0x9f, 0x40, 0x72, 0x17, 0x05, 0xcb, 0xd9, 0x2d, 0x4f, 0xee, 0xff, 0xfc, + 0xfe, 0xbf, 0xe1, 0xb1, 0x60, 0x8f, 0x0d, 0xfb, 0x64, 0x8a, 0x26, 0x78, 0x1c, 0x09, 0x34, 0x69, + 0x05, 0x44, 0xe0, 0x16, 0x0a, 0x49, 0x4c, 0x38, 0xe5, 0x6e, 0x32, 0x62, 0x82, 0xd9, 0x55, 0x95, + 0x71, 0x65, 0xc6, 0x2d, 0x32, 0xf5, 0x6a, 0xc8, 0x42, 0x26, 0x03, 0x28, 0xff, 0x52, 0xd9, 0x7a, + 0x53, 0xcb, 0x53, 0x9b, 0x32, 0x01, 0x9f, 0xca, 0xd6, 0xd6, 0x95, 0xe2, 0x77, 0x05, 0x16, 0xc4, + 0xbe, 0xb5, 0x2a, 0xf2, 0x9d, 0xd7, 0xcc, 0x66, 0xe9, 0xe8, 0xff, 0x59, 0xc3, 0xd5, 0xf5, 0xb9, + 0xf7, 0xf9, 0xe4, 0x39, 0xf3, 0xd4, 0x31, 0xb2, 0xd4, 0xa9, 0xc8, 0x91, 0xaf, 0x52, 0x67, 0x7b, + 0x86, 0x87, 0xd1, 0x05, 0x54, 0x08, 0xe8, 0x17, 0x2c, 0x9b, 0x59, 0x3b, 0x5c, 0xe0, 0x20, 0x22, + 0x1d, 0x1a, 0x0b, 0x19, 0xae, 0xfd, 0x93, 0xf8, 0x43, 0x3d, 0xbe, 0xfb, 0x3b, 0xec, 0x81, 0xbc, + 0x68, 0x95, 0x3a, 0x7b, 0x0a, 0xbf, 0xc6, 0x82, 0xfe, 0x3a, 0xdd, 0x7e, 0x35, 0xad, 0x06, 0x4e, + 0x92, 0xcb, 0xa9, 0x20, 0x71, 0x9f, 0xf4, 0xaf, 0x31, 0x1d, 0xc9, 0x87, 0x0e, 0x4e, 0x12, 0x1a, + 0x87, 0xb5, 0x92, 0x6c, 0x6f, 0xe9, 0xdb, 0xdb, 0x7f, 0x2f, 0x7a, 0xc7, 0x85, 0x09, 0x54, 0x26, + 0x1b, 0x3a, 0xa0, 0xbf, 0xc9, 0xc0, 0x7e, 0x36, 0xad, 0xdd, 0x31, 0x27, 0xea, 0x67, 0x9b, 0x73, + 0xf2, 0xe3, 0x56, 0x96, 0x6e, 0x27, 0x7a, 0xb7, 0x3b, 0xdd, 0x8a, 0x77, 0x50, 0x58, 0xed, 0x2b, + 0x2b, 0x2d, 0x17, 0xfa, 0xfa, 0x3e, 0xef, 0x66, 0xfe, 0x09, 0x8c, 0xb7, 0x0c, 0x18, 0xf3, 0x0c, + 0x98, 0x8b, 0x0c, 0x98, 0x1f, 0x19, 0x30, 0x5f, 0x96, 0xc0, 0x58, 0x2c, 0x81, 0xf1, 0xbe, 0x04, + 0xc6, 0x03, 0x0a, 0xa9, 0x78, 0x1c, 0x07, 0xb9, 0x11, 0x52, 0x56, 0xa7, 0x6c, 0x30, 0xa0, 0x3d, + 0x8a, 0xa3, 0x62, 0x46, 0xdf, 0x47, 0x26, 0x66, 0x09, 0xe1, 0x41, 0x45, 0x5e, 0xd7, 0xf9, 0x57, + 0x00, 0x00, 0x00, 0xff, 0xff, 0x5a, 0x84, 0x6a, 0x29, 0xd1, 0x02, 0x00, 0x00, } func (m *GenesisState) Marshal() (dAtA []byte, err error) { @@ -107,6 +118,48 @@ func (m *GenesisState) MarshalToSizedBuffer(dAtA []byte) (int, error) { _ = i var l int _ = l + if len(m.UserVaultAssetMapping) > 0 { + for iNdEx := len(m.UserVaultAssetMapping) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.UserVaultAssetMapping[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x22 + } + } + if len(m.AppExtendedPairVaultMapping) > 0 { + for iNdEx := len(m.AppExtendedPairVaultMapping) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.AppExtendedPairVaultMapping[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x1a + } + } + if len(m.StableMintVault) > 0 { + for iNdEx := len(m.StableMintVault) - 1; iNdEx >= 0; iNdEx-- { + { + size, err := m.StableMintVault[iNdEx].MarshalToSizedBuffer(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarintGenesis(dAtA, i, uint64(size)) + } + i-- + dAtA[i] = 0x12 + } + } if len(m.Vaults) > 0 { for iNdEx := len(m.Vaults) - 1; iNdEx >= 0; iNdEx-- { { @@ -147,6 +200,24 @@ func (m *GenesisState) Size() (n int) { n += 1 + l + sovGenesis(uint64(l)) } } + if len(m.StableMintVault) > 0 { + for _, e := range m.StableMintVault { + l = e.Size() + n += 1 + l + sovGenesis(uint64(l)) + } + } + if len(m.AppExtendedPairVaultMapping) > 0 { + for _, e := range m.AppExtendedPairVaultMapping { + l = e.Size() + n += 1 + l + sovGenesis(uint64(l)) + } + } + if len(m.UserVaultAssetMapping) > 0 { + for _, e := range m.UserVaultAssetMapping { + l = e.Size() + n += 1 + l + sovGenesis(uint64(l)) + } + } return n } @@ -219,6 +290,108 @@ func (m *GenesisState) Unmarshal(dAtA []byte) error { return err } iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field StableMintVault", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.StableMintVault = append(m.StableMintVault, StableMintVault{}) + if err := m.StableMintVault[len(m.StableMintVault)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AppExtendedPairVaultMapping", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.AppExtendedPairVaultMapping = append(m.AppExtendedPairVaultMapping, AppExtendedPairVaultMapping{}) + if err := m.AppExtendedPairVaultMapping[len(m.AppExtendedPairVaultMapping)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field UserVaultAssetMapping", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGenesis + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLengthGenesis + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLengthGenesis + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.UserVaultAssetMapping = append(m.UserVaultAssetMapping, UserVaultAssetMapping{}) + if err := m.UserVaultAssetMapping[len(m.UserVaultAssetMapping)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skipGenesis(dAtA[iNdEx:]) diff --git a/x/vault/types/msg_test.go b/x/vault/types/msg_test.go index 58d466e25..fafe11be3 100644 --- a/x/vault/types/msg_test.go +++ b/x/vault/types/msg_test.go @@ -99,7 +99,7 @@ func TestNewMsgDepositRequest(t *testing.T) { { name: "empty from", msg: types.NewMsgDepositRequest( - sdk.AccAddress([]byte("")), 1, 1, "appOne1", sdk.NewInt(50), + sdk.AccAddress([]byte("")), 1, 1, "appone1", sdk.NewInt(50), ), isErrExp: true, }, @@ -113,7 +113,7 @@ func TestNewMsgDepositRequest(t *testing.T) { { name: "amount nil", msg: types.NewMsgDepositRequest( - sdk.MustAccAddressFromBech32("cosmos1yq8lgssgxlx9smjhes6ryjasmqmd3ts2559g0t"), 1, 1, "appOne1", sdk.Int{}, + sdk.MustAccAddressFromBech32("cosmos1yq8lgssgxlx9smjhes6ryjasmqmd3ts2559g0t"), 1, 1, "appone1", sdk.Int{}, ), isErrExp: true, }, @@ -134,7 +134,7 @@ func TestNewMsgDepositRequest(t *testing.T) { { name: "valid case", msg: types.NewMsgDepositRequest( - sdk.MustAccAddressFromBech32("cosmos1yq8lgssgxlx9smjhes6ryjasmqmd3ts2559g0t"), 1, 1, "appOne1", sdk.NewInt(25), + sdk.MustAccAddressFromBech32("cosmos1yq8lgssgxlx9smjhes6ryjasmqmd3ts2559g0t"), 1, 1, "appone1", sdk.NewInt(25), ), isErrExp: false, }, @@ -167,7 +167,7 @@ func TestNewMsgWithdrawRequest(t *testing.T) { { name: "empty from", msg: types.NewMsgWithdrawRequest( - sdk.AccAddress([]byte("")), 1, 1, "appOne1", sdk.NewInt(50), + sdk.AccAddress([]byte("")), 1, 1, "appone1", sdk.NewInt(50), ), isErrExp: true, }, @@ -181,7 +181,7 @@ func TestNewMsgWithdrawRequest(t *testing.T) { { name: "amount nil", msg: types.NewMsgWithdrawRequest( - sdk.MustAccAddressFromBech32("cosmos1yq8lgssgxlx9smjhes6ryjasmqmd3ts2559g0t"), 1, 1, "appOne1", sdk.Int{}, + sdk.MustAccAddressFromBech32("cosmos1yq8lgssgxlx9smjhes6ryjasmqmd3ts2559g0t"), 1, 1, "appone1", sdk.Int{}, ), isErrExp: true, }, @@ -202,7 +202,7 @@ func TestNewMsgWithdrawRequest(t *testing.T) { { name: "valid case", msg: types.NewMsgWithdrawRequest( - sdk.MustAccAddressFromBech32("cosmos1yq8lgssgxlx9smjhes6ryjasmqmd3ts2559g0t"), 1, 1, "appOne1", sdk.NewInt(25), + sdk.MustAccAddressFromBech32("cosmos1yq8lgssgxlx9smjhes6ryjasmqmd3ts2559g0t"), 1, 1, "appone1", sdk.NewInt(25), ), isErrExp: false, }, @@ -235,7 +235,7 @@ func TestNewMsgDrawRequest(t *testing.T) { { name: "empty from", msg: types.NewMsgDrawRequest( - sdk.AccAddress([]byte("")), 1, 1, "appOne1", sdk.NewInt(50), + sdk.AccAddress([]byte("")), 1, 1, "appone1", sdk.NewInt(50), ), isErrExp: true, }, @@ -249,7 +249,7 @@ func TestNewMsgDrawRequest(t *testing.T) { { name: "amount nil", msg: types.NewMsgDrawRequest( - sdk.MustAccAddressFromBech32("cosmos1yq8lgssgxlx9smjhes6ryjasmqmd3ts2559g0t"), 1, 1, "appOne1", sdk.Int{}, + sdk.MustAccAddressFromBech32("cosmos1yq8lgssgxlx9smjhes6ryjasmqmd3ts2559g0t"), 1, 1, "appone1", sdk.Int{}, ), isErrExp: true, }, @@ -270,7 +270,7 @@ func TestNewMsgDrawRequest(t *testing.T) { { name: "valid case", msg: types.NewMsgDrawRequest( - sdk.MustAccAddressFromBech32("cosmos1yq8lgssgxlx9smjhes6ryjasmqmd3ts2559g0t"), 1, 1, "appOne1", sdk.NewInt(25), + sdk.MustAccAddressFromBech32("cosmos1yq8lgssgxlx9smjhes6ryjasmqmd3ts2559g0t"), 1, 1, "appone1", sdk.NewInt(25), ), isErrExp: false, }, @@ -303,7 +303,7 @@ func TestNewMsgRepayRequest(t *testing.T) { { name: "empty from", msg: types.NewMsgRepayRequest( - sdk.AccAddress([]byte("")), 1, 1, "appOne1", sdk.NewInt(50), + sdk.AccAddress([]byte("")), 1, 1, "appone1", sdk.NewInt(50), ), isErrExp: true, }, @@ -317,7 +317,7 @@ func TestNewMsgRepayRequest(t *testing.T) { { name: "amount nil", msg: types.NewMsgRepayRequest( - sdk.MustAccAddressFromBech32("cosmos1yq8lgssgxlx9smjhes6ryjasmqmd3ts2559g0t"), 1, 1, "appOne1", sdk.Int{}, + sdk.MustAccAddressFromBech32("cosmos1yq8lgssgxlx9smjhes6ryjasmqmd3ts2559g0t"), 1, 1, "appone1", sdk.Int{}, ), isErrExp: true, }, @@ -338,7 +338,7 @@ func TestNewMsgRepayRequest(t *testing.T) { { name: "valid case", msg: types.NewMsgRepayRequest( - sdk.MustAccAddressFromBech32("cosmos1yq8lgssgxlx9smjhes6ryjasmqmd3ts2559g0t"), 1, 1, "appOne1", sdk.NewInt(25), + sdk.MustAccAddressFromBech32("cosmos1yq8lgssgxlx9smjhes6ryjasmqmd3ts2559g0t"), 1, 1, "appone1", sdk.NewInt(25), ), isErrExp: false, }, @@ -371,7 +371,7 @@ func TestNewMsgLiquidateRequest(t *testing.T) { { name: "empty from", msg: types.NewMsgLiquidateRequest( - sdk.AccAddress([]byte("")), 1, 1, "appOne1", + sdk.AccAddress([]byte("")), 1, 1, "appone1", ), isErrExp: true, }, @@ -385,7 +385,7 @@ func TestNewMsgLiquidateRequest(t *testing.T) { { name: "valid case", msg: types.NewMsgLiquidateRequest( - sdk.MustAccAddressFromBech32("cosmos1yq8lgssgxlx9smjhes6ryjasmqmd3ts2559g0t"), 1, 1, "appOne1", + sdk.MustAccAddressFromBech32("cosmos1yq8lgssgxlx9smjhes6ryjasmqmd3ts2559g0t"), 1, 1, "appone1", ), isErrExp: false, }, @@ -479,35 +479,35 @@ func TestNewMsgDepositStableMintRequest(t *testing.T) { { name: "empty from", msg: types.NewMsgDepositStableMintRequest( - sdk.AccAddress([]byte("")), 1, 1, sdk.NewInt(50), "appOne1", + sdk.AccAddress([]byte("")), 1, 1, sdk.NewInt(50), "appone1", ), isErrExp: true, }, { name: "amount nil", msg: types.NewMsgDepositStableMintRequest( - sdk.MustAccAddressFromBech32("cosmos1yq8lgssgxlx9smjhes6ryjasmqmd3ts2559g0t"), 1, 1, sdk.Int{}, "appOne1", + sdk.MustAccAddressFromBech32("cosmos1yq8lgssgxlx9smjhes6ryjasmqmd3ts2559g0t"), 1, 1, sdk.Int{}, "appone1", ), isErrExp: true, }, { name: "amount negative", msg: types.NewMsgDepositStableMintRequest( - sdk.MustAccAddressFromBech32("cosmos1yq8lgssgxlx9smjhes6ryjasmqmd3ts2559g0t"), 1, 1, sdk.NewInt(-50), "appOne1", + sdk.MustAccAddressFromBech32("cosmos1yq8lgssgxlx9smjhes6ryjasmqmd3ts2559g0t"), 1, 1, sdk.NewInt(-50), "appone1", ), isErrExp: true, }, { name: "amount Zero", msg: types.NewMsgDepositStableMintRequest( - sdk.MustAccAddressFromBech32("cosmos1yq8lgssgxlx9smjhes6ryjasmqmd3ts2559g0t"), 1, 1, sdk.NewInt(0), "appOne1", + sdk.MustAccAddressFromBech32("cosmos1yq8lgssgxlx9smjhes6ryjasmqmd3ts2559g0t"), 1, 1, sdk.NewInt(0), "appone1", ), isErrExp: true, }, { name: "valid case", msg: types.NewMsgDepositStableMintRequest( - sdk.MustAccAddressFromBech32("cosmos1yq8lgssgxlx9smjhes6ryjasmqmd3ts2559g0t"), 1, 1, sdk.NewInt(25), "appOne1", + sdk.MustAccAddressFromBech32("cosmos1yq8lgssgxlx9smjhes6ryjasmqmd3ts2559g0t"), 1, 1, sdk.NewInt(25), "appone1", ), isErrExp: false, }, @@ -540,35 +540,35 @@ func TestNewMsgWithdrawStableMintRequest(t *testing.T) { { name: "empty from", msg: types.NewMsgWithdrawStableMintRequest( - sdk.AccAddress([]byte("")), 1, 1, sdk.NewInt(50), "appOne1", + sdk.AccAddress([]byte("")), 1, 1, sdk.NewInt(50), "appone1", ), isErrExp: true, }, { name: "amount nil", msg: types.NewMsgWithdrawStableMintRequest( - sdk.MustAccAddressFromBech32("cosmos1yq8lgssgxlx9smjhes6ryjasmqmd3ts2559g0t"), 1, 1, sdk.Int{}, "appOne1", + sdk.MustAccAddressFromBech32("cosmos1yq8lgssgxlx9smjhes6ryjasmqmd3ts2559g0t"), 1, 1, sdk.Int{}, "appone1", ), isErrExp: true, }, { name: "amount negative", msg: types.NewMsgWithdrawStableMintRequest( - sdk.MustAccAddressFromBech32("cosmos1yq8lgssgxlx9smjhes6ryjasmqmd3ts2559g0t"), 1, 1, sdk.NewInt(-50), "appOne1", + sdk.MustAccAddressFromBech32("cosmos1yq8lgssgxlx9smjhes6ryjasmqmd3ts2559g0t"), 1, 1, sdk.NewInt(-50), "appone1", ), isErrExp: true, }, { name: "amount Zero", msg: types.NewMsgWithdrawStableMintRequest( - sdk.MustAccAddressFromBech32("cosmos1yq8lgssgxlx9smjhes6ryjasmqmd3ts2559g0t"), 1, 1, sdk.NewInt(0), "appOne1", + sdk.MustAccAddressFromBech32("cosmos1yq8lgssgxlx9smjhes6ryjasmqmd3ts2559g0t"), 1, 1, sdk.NewInt(0), "appone1", ), isErrExp: true, }, { name: "valid case", msg: types.NewMsgWithdrawStableMintRequest( - sdk.MustAccAddressFromBech32("cosmos1yq8lgssgxlx9smjhes6ryjasmqmd3ts2559g0t"), 1, 1, sdk.NewInt(25), "appOne1", + sdk.MustAccAddressFromBech32("cosmos1yq8lgssgxlx9smjhes6ryjasmqmd3ts2559g0t"), 1, 1, sdk.NewInt(25), "appone1", ), isErrExp: false, }, diff --git a/x/vault/types/vault.go b/x/vault/types/vault.go index f6b9dda3f..1ee89ab18 100644 --- a/x/vault/types/vault.go +++ b/x/vault/types/vault.go @@ -7,6 +7,18 @@ import ( "github.com/cosmos/cosmos-sdk/types/errors" ) +const ( + CreateVaultGas = sdk.Gas(96329) + DepositVaultGas = sdk.Gas(53554) + WithdrawVaultGas = sdk.Gas(56473) + DrawVaultGas = sdk.Gas(77559) + RepayVaultGas = sdk.Gas(77559) + CloseVaultGas = sdk.Gas(77559) + CreateStableVaultGas = sdk.Gas(96329) + DepositStableVaultGas = sdk.Gas(53554) + WithdrawStableVaultGas = sdk.Gas(56473) +) + func (m *Vault) Validate() error { if m.ExtendedPairVaultID == 0 { return fmt.Errorf("pair_id cannot be empty")