diff --git a/app/app.go b/app/app.go index 482bef673..a99d35666 100644 --- a/app/app.go +++ b/app/app.go @@ -191,6 +191,7 @@ import ( cwasm "github.com/comdex-official/comdex/app/wasm" mv12 "github.com/comdex-official/comdex/app/upgrades/mainnet/v12" + tv12_1 "github.com/comdex-official/comdex/app/upgrades/testnet/v12_1" ) const ( @@ -842,7 +843,7 @@ func New( } supportedFeatures := "iterator,staking,stargate,comdex,cosmwasm_1_1" - wasmOpts = append(cwasm.RegisterCustomPlugins(&app.LockerKeeper, &app.TokenmintKeeper, &app.AssetKeeper, &app.Rewardskeeper, &app.CollectorKeeper, &app.LiquidationKeeper, &app.AuctionKeeper, &app.EsmKeeper, &app.VaultKeeper, &app.LendKeeper, &app.LiquidityKeeper), wasmOpts...) + wasmOpts = append(cwasm.RegisterCustomPlugins(&app.LockerKeeper, &app.TokenmintKeeper, &app.AssetKeeper, &app.Rewardskeeper, &app.CollectorKeeper, &app.LiquidationKeeper, &app.AuctionKeeper, &app.EsmKeeper, &app.VaultKeeper, &app.LendKeeper, &app.LiquidityKeeper, &app.MarketKeeper), wasmOpts...) app.WasmKeeper = wasmkeeper.NewKeeper( app.cdc, @@ -1456,6 +1457,11 @@ func (a *App) registerUpgradeHandlers() { mv12.UpgradeName, mv12.CreateUpgradeHandlerV12(a.mm, a.configurator, a.ICQKeeper, a.NewliqKeeper, a.NewaucKeeper, a.BankKeeper, a.CollectorKeeper, a.LendKeeper, a.AuctionKeeper, a.LiquidationKeeper, a.AssetKeeper), ) + case upgradeInfo.Name == tv12_1.UpgradeName: + a.UpgradeKeeper.SetUpgradeHandler( + tv12_1.UpgradeName, + tv12_1.CreateUpgradeHandlerV121(a.mm, a.configurator, a.WasmKeeper), + ) } var storeUpgrades *storetypes.StoreUpgrades @@ -1479,6 +1485,10 @@ func upgradeHandlers(upgradeInfo storetypes.UpgradeInfo, a *App, storeUpgrades * auctionsV2types.ModuleName, }, } + case upgradeInfo.Name == tv12_1.UpgradeName && !a.UpgradeKeeper.IsSkipHeight(upgradeInfo.Height): + storeUpgrades = &storetypes.StoreUpgrades{ + Added: []string{}, + } } return storeUpgrades } diff --git a/app/upgrades/testnet/v12_1/constants.go b/app/upgrades/testnet/v12_1/constants.go new file mode 100644 index 000000000..681585830 --- /dev/null +++ b/app/upgrades/testnet/v12_1/constants.go @@ -0,0 +1,15 @@ +package v12_1 + +const ( + UpgradeName = "v12.1.0" + UpgradeHeight = "" + UpgradeInfo = `'{ + "binaries": { + "darwin/arm64":"", + "darwin/x86_64":"", + "linux/arm64":"", + "linux/x86_64":"", + "windows/x86_64":"" + } + }'` +) diff --git a/app/upgrades/testnet/v12_1/upgrades.go b/app/upgrades/testnet/v12_1/upgrades.go new file mode 100644 index 000000000..e2b8e97b6 --- /dev/null +++ b/app/upgrades/testnet/v12_1/upgrades.go @@ -0,0 +1,36 @@ +package v12_1 + +import ( + sdk "github.com/cosmos/cosmos-sdk/types" + "github.com/cosmos/cosmos-sdk/types/module" + upgradetypes "github.com/cosmos/cosmos-sdk/x/upgrade/types" + wasmkeeper "github.com/CosmWasm/wasmd/x/wasm/keeper" + wasmtypes "github.com/CosmWasm/wasmd/x/wasm/types" +) + +// An error occurred during the creation of the CMST/STJUNO pair, as it was mistakenly created in the Harbor app (ID-2) instead of the cSwap app (ID-1). +// As a result, the transaction fee was charged to the creator of the pair, who is entitled to a refund. +// The provided code is designed to initiate the refund process. +// The transaction hash for the pair creation is EF408AD53B8BB0469C2A593E4792CB45552BD6495753CC2C810A1E4D82F3982F. +// MintScan - https://www.mintscan.io/comdex/txs/EF408AD53B8BB0469C2A593E4792CB45552BD6495753CC2C810A1E4D82F3982F + +func CreateUpgradeHandlerV121( + mm *module.Manager, + configurator module.Configurator, + wasmKeeper wasmkeeper.Keeper, +) upgradetypes.UpgradeHandler { + return func(ctx sdk.Context, _ upgradetypes.Plan, fromVM module.VersionMap) (module.VersionMap, error) { + ctx.Logger().Info("Applying test net upgrade - v.12.1.0") + + vm, err := mm.RunMigrations(ctx, configurator, fromVM) + if err != nil { + return nil, err + } + + // update wasm to permissionless + wasmParams := wasmKeeper.GetParams(ctx) + wasmParams.CodeUploadAccess = wasmtypes.AllowEverybody + wasmKeeper.SetParams(ctx, wasmParams) + return vm, err + } +} diff --git a/app/wasm/bindings/query.go b/app/wasm/bindings/query.go index 0a89449dd..8a6e1061b 100644 --- a/app/wasm/bindings/query.go +++ b/app/wasm/bindings/query.go @@ -30,6 +30,7 @@ type ComdexQuery struct { CheckBorrowed *CheckBorrowed `json:"check_borrowed,omitempty"` CheckLiquidityProvided *CheckLiquidityProvided `json:"check_liquidity_provided,omitempty"` GetPoolByApp *GetPoolByApp `json:"get_pool_by_app,omitempty"` + GetAssetPrice *GetAssetPrice `json:"get_asset_price,omitempty"` } type AppData struct { @@ -291,3 +292,11 @@ type GetPoolByApp struct { type GetPoolByAppResponse struct { Pools []uint64 `json:"pools"` } + +type GetAssetPrice struct { + AssetID uint64 `json:"asset_id"` +} + +type GetAssetPriceResponse struct { + Price uint64 `json:"price"` +} diff --git a/app/wasm/message_plugin.go b/app/wasm/message_plugin.go index abc545ea5..4eeef075d 100644 --- a/app/wasm/message_plugin.go +++ b/app/wasm/message_plugin.go @@ -62,6 +62,9 @@ type CustomMessenger struct { var _ wasmkeeper.Messenger = (*CustomMessenger)(nil) +var comdex1 = []string{"comdex17p9rzwnnfxcjp32un9ug7yhhzgtkhvl9jfksztgw5uh69wac2pgs4jg6dx", "comdex1nc5tatafv6eyq7llkr2gv50ff9e22mnf70qgjlv737ktmt4eswrqdfklyz"} +var testnet3 = []string{"comdex1qwlgtx52gsdu7dtp0cekka5zehdl0uj3fhp9acg325fvgs8jdzksjvgq6q", "comdex1ghd753shjuwexxywmgs4xz7x2q732vcnkm6h2pyv9s6ah3hylvrqfy9rd8"} + func (m *CustomMessenger) DispatchMsg(ctx sdk.Context, contractAddr sdk.AccAddress, contractIBCPortID string, msg wasmvmtypes.CosmosMsg) ([]sdk.Event, [][]byte, error) { if msg.Custom != nil { // only handle the happy path where this is really minting / swapping ... @@ -135,6 +138,15 @@ func (m *CustomMessenger) DispatchMsg(ctx sdk.Context, contractAddr sdk.AccAddre } func (m *CustomMessenger) whitelistAssetLocker(ctx sdk.Context, contractAddr sdk.AccAddress, whiteListAsset *bindings.MsgWhiteListAssetLocker) ([]sdk.Event, [][]byte, error) { + if ctx.ChainID() == "comdex-1" { + if contractAddr.String() != comdex1[0] { + return nil, nil, sdkerrors.ErrInvalidAddress + } + } else if ctx.ChainID() == "comdex-test3" { + if contractAddr.String() != testnet3[0] { + return nil, nil, sdkerrors.ErrInvalidAddress + } + } err := WhiteListAsset(m.lockerKeeper, ctx, contractAddr.String(), whiteListAsset) if err != nil { return nil, nil, sdkerrors.Wrap(err, "white list asset") @@ -159,6 +171,15 @@ func WhiteListAsset(lockerKeeper lockerkeeper.Keeper, ctx sdk.Context, contractA } func (m *CustomMessenger) whitelistAppIDLockerRewards(ctx sdk.Context, contractAddr sdk.AccAddress, whiteListAsset *bindings.MsgWhitelistAppIDLockerRewards) ([]sdk.Event, [][]byte, error) { + if ctx.ChainID() == "comdex-1" { + if contractAddr.String() != comdex1[0] { + return nil, nil, sdkerrors.ErrInvalidAddress + } + } else if ctx.ChainID() == "comdex-test3" { + if contractAddr.String() != testnet3[0] { + return nil, nil, sdkerrors.ErrInvalidAddress + } + } err := WhitelistAppIDLockerRewards(m.rewardsKeeper, ctx, contractAddr.String(), whiteListAsset) if err != nil { return nil, nil, sdkerrors.Wrap(err, "white list appId locker rewards") @@ -183,6 +204,15 @@ func WhitelistAppIDLockerRewards(rewardsKeeper rewardskeeper.Keeper, ctx sdk.Con } func (m *CustomMessenger) whitelistAppIDVaultInterest(ctx sdk.Context, contractAddr sdk.AccAddress, whiteListAsset *bindings.MsgWhitelistAppIDVaultInterest) ([]sdk.Event, [][]byte, error) { + if ctx.ChainID() == "comdex-1" { + if contractAddr.String() != comdex1[0] { + return nil, nil, sdkerrors.ErrInvalidAddress + } + } else if ctx.ChainID() == "comdex-test3" { + if contractAddr.String() != testnet3[0] { + return nil, nil, sdkerrors.ErrInvalidAddress + } + } err := WhitelistAppIDVaultInterest(m.rewardsKeeper, ctx, contractAddr.String(), whiteListAsset) if err != nil { return nil, nil, sdkerrors.Wrap(err, "white list appId vault Interest") @@ -206,6 +236,15 @@ func WhitelistAppIDVaultInterest(rewardsKeeper rewardskeeper.Keeper, ctx sdk.Con } func (m *CustomMessenger) AddExtendedPairsVault(ctx sdk.Context, contractAddr sdk.AccAddress, a *bindings.MsgAddExtendedPairsVault) ([]sdk.Event, [][]byte, error) { + if ctx.ChainID() == "comdex-1" { + if contractAddr.String() != comdex1[0] { + return nil, nil, sdkerrors.ErrInvalidAddress + } + } else if ctx.ChainID() == "comdex-test3" { + if contractAddr.String() != testnet3[0] { + return nil, nil, sdkerrors.ErrInvalidAddress + } + } err := MsgAddExtendedPairsVault(m.assetKeeper, ctx, contractAddr, a) if err != nil { return nil, nil, sdkerrors.Wrap(err, "AddExtendedPairsVault error") @@ -224,6 +263,15 @@ func MsgAddExtendedPairsVault(assetKeeper assetkeeper.Keeper, ctx sdk.Context, c } func (m *CustomMessenger) SetCollectorLookupTable(ctx sdk.Context, contractAddr sdk.AccAddress, a *bindings.MsgSetCollectorLookupTable) ([]sdk.Event, [][]byte, error) { + if ctx.ChainID() == "comdex-1" { + if contractAddr.String() != comdex1[0] { + return nil, nil, sdkerrors.ErrInvalidAddress + } + } else if ctx.ChainID() == "comdex-test3" { + if contractAddr.String() != testnet3[0] { + return nil, nil, sdkerrors.ErrInvalidAddress + } + } err := MsgSetCollectorLookupTable(m.collectorKeeper, ctx, contractAddr, a) if err != nil { return nil, nil, sdkerrors.Wrap(err, "SetCollectorLookupTable error") @@ -242,6 +290,15 @@ func MsgSetCollectorLookupTable(collectorKeeper collectorkeeper.Keeper, ctx sdk. } func (m *CustomMessenger) SetAuctionMappingForApp(ctx sdk.Context, contractAddr sdk.AccAddress, a *bindings.MsgSetAuctionMappingForApp) ([]sdk.Event, [][]byte, error) { + if ctx.ChainID() == "comdex-1" { + if contractAddr.String() != comdex1[0] { + return nil, nil, sdkerrors.ErrInvalidAddress + } + } else if ctx.ChainID() == "comdex-test3" { + if contractAddr.String() != testnet3[0] { + return nil, nil, sdkerrors.ErrInvalidAddress + } + } err := MsgSetAuctionMappingForApp(m.collectorKeeper, ctx, contractAddr, a) if err != nil { return nil, nil, sdkerrors.Wrap(err, "SetAuctionMappingForApp error") @@ -260,6 +317,15 @@ func MsgSetAuctionMappingForApp(collectorKeeper collectorkeeper.Keeper, ctx sdk. } func (m *CustomMessenger) UpdatePairsVault(ctx sdk.Context, contractAddr sdk.AccAddress, a *bindings.MsgUpdatePairsVault) ([]sdk.Event, [][]byte, error) { + if ctx.ChainID() == "comdex-1" { + if contractAddr.String() != comdex1[0] { + return nil, nil, sdkerrors.ErrInvalidAddress + } + } else if ctx.ChainID() == "comdex-test3" { + if contractAddr.String() != testnet3[0] { + return nil, nil, sdkerrors.ErrInvalidAddress + } + } err := MsgUpdatePairsVault(m.assetKeeper, ctx, contractAddr, a) if err != nil { return nil, nil, sdkerrors.Wrap(err, "UpdatePairsVault error") @@ -278,6 +344,15 @@ func MsgUpdatePairsVault(assetKeeper assetkeeper.Keeper, ctx sdk.Context, contra } func (m *CustomMessenger) UpdateCollectorLookupTable(ctx sdk.Context, contractAddr sdk.AccAddress, a *bindings.MsgUpdateCollectorLookupTable) ([]sdk.Event, [][]byte, error) { + if ctx.ChainID() == "comdex-1" { + if contractAddr.String() != comdex1[0] { + return nil, nil, sdkerrors.ErrInvalidAddress + } + } else if ctx.ChainID() == "comdex-test3" { + if contractAddr.String() != testnet3[0] { + return nil, nil, sdkerrors.ErrInvalidAddress + } + } err := MsgUpdateCollectorLookupTable(m.collectorKeeper, ctx, contractAddr, a) if err != nil { return nil, nil, sdkerrors.Wrap(err, "UpdateCollectorLookupTable error") @@ -296,6 +371,15 @@ func MsgUpdateCollectorLookupTable(collectorKeeper collectorkeeper.Keeper, ctx s } func (m *CustomMessenger) RemoveWhitelistAssetLocker(ctx sdk.Context, contractAddr sdk.AccAddress, a *bindings.MsgRemoveWhitelistAssetLocker) ([]sdk.Event, [][]byte, error) { + if ctx.ChainID() == "comdex-1" { + if contractAddr.String() != comdex1[0] { + return nil, nil, sdkerrors.ErrInvalidAddress + } + } else if ctx.ChainID() == "comdex-test3" { + if contractAddr.String() != testnet3[0] { + return nil, nil, sdkerrors.ErrInvalidAddress + } + } err := MsgRemoveWhitelistAssetLocker(m.rewardsKeeper, ctx, contractAddr, a) if err != nil { return nil, nil, sdkerrors.Wrap(err, "RemoveWhitelistAssetRewards error") @@ -314,6 +398,15 @@ func MsgRemoveWhitelistAssetLocker(rewardsKeeper rewardskeeper.Keeper, ctx sdk.C } func (m *CustomMessenger) RemoveWhitelistAppIDVaultInterest(ctx sdk.Context, contractAddr sdk.AccAddress, a *bindings.MsgRemoveWhitelistAppIDVaultInterest) ([]sdk.Event, [][]byte, error) { + if ctx.ChainID() == "comdex-1" { + if contractAddr.String() != comdex1[0] { + return nil, nil, sdkerrors.ErrInvalidAddress + } + } else if ctx.ChainID() == "comdex-test3" { + if contractAddr.String() != testnet3[0] { + return nil, nil, sdkerrors.ErrInvalidAddress + } + } err := MsgRemoveWhitelistAppIDVaultInterest(m.rewardsKeeper, ctx, contractAddr, a) if err != nil { return nil, nil, sdkerrors.Wrap(err, "RemoveWhitelistAppIdVaultInterest error") @@ -332,6 +425,15 @@ func MsgRemoveWhitelistAppIDVaultInterest(rewardsKeeper rewardskeeper.Keeper, ct } func (m *CustomMessenger) WhitelistAppIDLiquidation(ctx sdk.Context, contractAddr sdk.AccAddress, a *bindings.MsgWhitelistAppIDLiquidation) ([]sdk.Event, [][]byte, error) { + if ctx.ChainID() == "comdex-1" { + if contractAddr.String() != comdex1[0] { + return nil, nil, sdkerrors.ErrInvalidAddress + } + } else if ctx.ChainID() == "comdex-test3" { + if contractAddr.String() != testnet3[0] { + return nil, nil, sdkerrors.ErrInvalidAddress + } + } err := MsgWhitelistAppIDLiquidation(m.liquidationKeeper, ctx, contractAddr, a) if err != nil { return nil, nil, sdkerrors.Wrap(err, "WhitelistAppIdLiquidation error") @@ -350,6 +452,15 @@ func MsgWhitelistAppIDLiquidation(liquidationKeeper liquidationkeeper.Keeper, ct } func (m *CustomMessenger) RemoveWhitelistAppIDLiquidation(ctx sdk.Context, contractAddr sdk.AccAddress, a *bindings.MsgRemoveWhitelistAppIDLiquidation) ([]sdk.Event, [][]byte, error) { + if ctx.ChainID() == "comdex-1" { + if contractAddr.String() != comdex1[0] { + return nil, nil, sdkerrors.ErrInvalidAddress + } + } else if ctx.ChainID() == "comdex-test3" { + if contractAddr.String() != testnet3[0] { + return nil, nil, sdkerrors.ErrInvalidAddress + } + } err := MsgRemoveWhitelistAppIDLiquidation(m.liquidationKeeper, ctx, contractAddr, a) if err != nil { return nil, nil, sdkerrors.Wrap(err, "RemoveWhitelistAppIdLiquidation error") @@ -368,6 +479,15 @@ func MsgRemoveWhitelistAppIDLiquidation(liquidationKeeper liquidationkeeper.Keep } func (m *CustomMessenger) AddAuctionParams(ctx sdk.Context, contractAddr sdk.AccAddress, a *bindings.MsgAddAuctionParams) ([]sdk.Event, [][]byte, error) { + if ctx.ChainID() == "comdex-1" { + if contractAddr.String() != comdex1[0] { + return nil, nil, sdkerrors.ErrInvalidAddress + } + } else if ctx.ChainID() == "comdex-test3" { + if contractAddr.String() != testnet3[0] { + return nil, nil, sdkerrors.ErrInvalidAddress + } + } err := MsgAddAuctionParams(m.auctionKeeper, ctx, contractAddr, a) if err != nil { return nil, nil, sdkerrors.Wrap(err, "AddAuctionParams error") @@ -386,6 +506,15 @@ func MsgAddAuctionParams(auctionKeeper auctionkeeper.Keeper, ctx sdk.Context, co } func (m *CustomMessenger) BurnGovTokensForApp(ctx sdk.Context, contractAddr sdk.AccAddress, a *bindings.MsgBurnGovTokensForApp) ([]sdk.Event, [][]byte, error) { + if ctx.ChainID() == "comdex-1" { + if contractAddr.String() != comdex1[0] { + return nil, nil, sdkerrors.ErrInvalidAddress + } + } else if ctx.ChainID() == "comdex-test3" { + if contractAddr.String() != testnet3[0] { + return nil, nil, sdkerrors.ErrInvalidAddress + } + } err := MsgBurnGovTokensForApp(m.tokenMintKeeper, ctx, contractAddr, a) if err != nil { return nil, nil, sdkerrors.Wrap(err, "BurnGovTokensForApp error") @@ -404,6 +533,15 @@ func MsgBurnGovTokensForApp(tokenMintKeeper tokenmintkeeper.Keeper, ctx sdk.Cont } func (m *CustomMessenger) AddESMTriggerParams(ctx sdk.Context, contractAddr sdk.AccAddress, a *bindings.MsgAddESMTriggerParams) ([]sdk.Event, [][]byte, error) { + if ctx.ChainID() == "comdex-1" { + if contractAddr.String() != comdex1[0] { + return nil, nil, sdkerrors.ErrInvalidAddress + } + } else if ctx.ChainID() == "comdex-test3" { + if contractAddr.String() != testnet3[0] { + return nil, nil, sdkerrors.ErrInvalidAddress + } + } err := MsgAddESMTriggerParams(m.esmKeeper, ctx, contractAddr, a) if err != nil { return nil, nil, sdkerrors.Wrap(err, "BurnGovTokensForApp error") @@ -422,6 +560,15 @@ func MsgAddESMTriggerParams(esmKeeper esmkeeper.Keeper, ctx sdk.Context, contrac } func (m *CustomMessenger) ExecuteAddEmissionRewards(ctx sdk.Context, contractAddr sdk.AccAddress, a *bindings.MsgEmissionRewards) ([]sdk.Event, [][]byte, error) { + if ctx.ChainID() == "comdex-1" { + if contractAddr.String() != comdex1[1] { + return nil, nil, sdkerrors.ErrInvalidAddress + } + }else if ctx.ChainID() == "comdex-test3" { + if contractAddr.String() != testnet3[1] { + return nil, nil, sdkerrors.ErrInvalidAddress + } + } err := MsgAddEmissionRewards(m.vaultKeeper, ctx, a) if err != nil { return nil, nil, sdkerrors.Wrap(err, "Emission rewards error") @@ -430,6 +577,15 @@ func (m *CustomMessenger) ExecuteAddEmissionRewards(ctx sdk.Context, contractAdd } func (m *CustomMessenger) ExecuteAddEmissionPoolRewards(ctx sdk.Context, contractAddr sdk.AccAddress, a *bindings.MsgEmissionPoolRewards) ([]sdk.Event, [][]byte, error) { + if ctx.ChainID() == "comdex-1" { + if contractAddr.String() != comdex1[1] { + return nil, nil, sdkerrors.ErrInvalidAddress + } + } else if ctx.ChainID() == "comdex-test3" { + if contractAddr.String() != testnet3[1] { + return nil, nil, sdkerrors.ErrInvalidAddress + } + } err := MsgAddEmissionPoolRewards(m.liquiditykeeper, ctx, a) if err != nil { return nil, nil, sdkerrors.Wrap(err, "Emission pool rewards error") @@ -458,6 +614,15 @@ func MsgAddEmissionPoolRewards(liquiditykeeper liquidityKeeper.Keeper, ctx sdk.C } func (m *CustomMessenger) ExecuteFoundationEmission(ctx sdk.Context, contractAddr sdk.AccAddress, a *bindings.MsgFoundationEmission) ([]sdk.Event, [][]byte, error) { + if ctx.ChainID() == "comdex-1" { + if contractAddr.String() != comdex1[1] { + return nil, nil, sdkerrors.ErrInvalidAddress + } + } else if ctx.ChainID() == "comdex-test3" { + if contractAddr.String() != testnet3[1] { + return nil, nil, sdkerrors.ErrInvalidAddress + } + } err := MsgFoundationEmission(m.tokenMintKeeper, ctx, a) if err != nil { return nil, nil, sdkerrors.Wrap(err, "Foundation Emission rewards error") @@ -476,6 +641,15 @@ func MsgFoundationEmission(tokenmintKeeper tokenmintkeeper.Keeper, ctx sdk.Conte } func (m *CustomMessenger) ExecuteMsgRebaseMint(ctx sdk.Context, contractAddr sdk.AccAddress, a *bindings.MsgRebaseMint) ([]sdk.Event, [][]byte, error) { + if ctx.ChainID() == "comdex-1" { + if contractAddr.String() != comdex1[1] { + return nil, nil, sdkerrors.ErrInvalidAddress + } + } else if ctx.ChainID() == "comdex-test3" { + if contractAddr.String() != testnet3[1] { + return nil, nil, sdkerrors.ErrInvalidAddress + } + } err := MsgRebaseMint(m.tokenMintKeeper, ctx, a) if err != nil { return nil, nil, sdkerrors.Wrap(err, "Foundation Emission rewards error") @@ -494,6 +668,15 @@ func MsgRebaseMint(tokenmintKeeper tokenmintkeeper.Keeper, ctx sdk.Context, } func (m *CustomMessenger) ExecuteMsgGetSurplusFund(ctx sdk.Context, contractAddr sdk.AccAddress, a *bindings.MsgGetSurplusFund) ([]sdk.Event, [][]byte, error) { + if ctx.ChainID() == "comdex-1" { + if contractAddr.String() != comdex1[1] { + return nil, nil, sdkerrors.ErrInvalidAddress + } + } else if ctx.ChainID() == "comdex-test3" { + if contractAddr.String() != testnet3[1] { + return nil, nil, sdkerrors.ErrInvalidAddress + } + } err := MsgGetSurplusFund(m.collectorKeeper, ctx, a, contractAddr) if err != nil { return nil, nil, sdkerrors.Wrap(err, "Execute surplus fund rewards error") diff --git a/app/wasm/queries.go b/app/wasm/queries.go index 88fb36a30..cb9de874f 100644 --- a/app/wasm/queries.go +++ b/app/wasm/queries.go @@ -1,8 +1,6 @@ package wasm import ( - sdk "github.com/cosmos/cosmos-sdk/types" - assetKeeper "github.com/comdex-official/comdex/x/asset/keeper" collectorkeeper "github.com/comdex-official/comdex/x/collector/keeper" esmKeeper "github.com/comdex-official/comdex/x/esm/keeper" @@ -10,9 +8,11 @@ import ( liquidationKeeper "github.com/comdex-official/comdex/x/liquidation/keeper" liquidityKeeper "github.com/comdex-official/comdex/x/liquidity/keeper" lockerkeeper "github.com/comdex-official/comdex/x/locker/keeper" + marketKeeper "github.com/comdex-official/comdex/x/market/keeper" rewardsKeeper "github.com/comdex-official/comdex/x/rewards/keeper" tokenMintKeeper "github.com/comdex-official/comdex/x/tokenmint/keeper" vaultKeeper "github.com/comdex-official/comdex/x/vault/keeper" + sdk "github.com/cosmos/cosmos-sdk/types" ) type QueryPlugin struct { @@ -26,6 +26,7 @@ type QueryPlugin struct { vaultKeeper *vaultKeeper.Keeper lendKeeper *lendKeeper.Keeper liquidityKeeper *liquidityKeeper.Keeper + marketKeeper *marketKeeper.Keeper } func NewQueryPlugin( @@ -39,6 +40,7 @@ func NewQueryPlugin( vaultKeeper *vaultKeeper.Keeper, lendKeeper *lendKeeper.Keeper, liquidityKeeper *liquidityKeeper.Keeper, + marketKeeper *marketKeeper.Keeper, ) *QueryPlugin { return &QueryPlugin{ assetKeeper: assetKeeper, @@ -51,6 +53,7 @@ func NewQueryPlugin( vaultKeeper: vaultKeeper, lendKeeper: lendKeeper, liquidityKeeper: liquidityKeeper, + marketKeeper: marketKeeper, } } @@ -203,3 +206,11 @@ func (qp QueryPlugin) WasmGetPools(ctx sdk.Context, appID uint64) (pools []uint6 } return pools } + +func (qp QueryPlugin) WasmGetAssetPrice(ctx sdk.Context, assetID uint64) (twa uint64, found bool) { + assetTwa, found := qp.marketKeeper.GetTwa(ctx, assetID) + if found && assetTwa.IsPriceActive{ + return assetTwa.Twa, true + } + return 0, false +} diff --git a/app/wasm/query_plugin.go b/app/wasm/query_plugin.go index 09ba1a98d..015933e3f 100644 --- a/app/wasm/query_plugin.go +++ b/app/wasm/query_plugin.go @@ -355,6 +355,17 @@ func CustomQuerier(queryPlugin *QueryPlugin) func(ctx sdk.Context, request json. return nil, sdkerrors.Wrap(err, "GetPoolByApp query response") } return bz, nil + } else if comdexQuery.GetAssetPrice != nil { + assetID := comdexQuery.GetAssetPrice.AssetID + assetPrice, _ := queryPlugin.WasmGetAssetPrice(ctx, assetID) + res := bindings.GetAssetPriceResponse{ + Price: assetPrice, + } + bz, err := json.Marshal(res) + if err != nil { + return nil, sdkerrors.Wrap(err, "GetAssetPrice query response") + } + return bz, nil } return nil, wasmvmtypes.UnsupportedRequest{Kind: "unknown App Data query variant"} } diff --git a/app/wasm/test/messages_test.go b/app/wasm/test/messages_test.go index 74c91efab..bc6e1c5a7 100644 --- a/app/wasm/test/messages_test.go +++ b/app/wasm/test/messages_test.go @@ -22,7 +22,8 @@ func TestWhitelistAssetLocker(t *testing.T) { &comdex.EsmKeeper, &comdex.VaultKeeper, &comdex.LendKeeper, - &comdex.LiquidityKeeper) + &comdex.LiquidityKeeper, + &comdex.MarketKeeper) for _, tc := range []struct { name string msg *bindings.MsgWhiteListAssetLocker @@ -65,7 +66,8 @@ func TestAddMsgAddExtendedPairsVault(t *testing.T) { &comdex.EsmKeeper, &comdex.VaultKeeper, &comdex.LendKeeper, - &comdex.LiquidityKeeper) + &comdex.LiquidityKeeper, + &comdex.MarketKeeper) for _, tc := range []struct { name string msg *bindings.MsgAddExtendedPairsVault @@ -122,7 +124,8 @@ func TestMsgSetCollectorLookupTable(t *testing.T) { &comdex.EsmKeeper, &comdex.VaultKeeper, &comdex.LendKeeper, - &comdex.LiquidityKeeper) + &comdex.LiquidityKeeper, + &comdex.MarketKeeper) for _, tc := range []struct { name string msg *bindings.MsgSetCollectorLookupTable @@ -173,7 +176,8 @@ func TestMsgSetAuctionMappingForApp(t *testing.T) { &comdex.EsmKeeper, &comdex.VaultKeeper, &comdex.LendKeeper, - &comdex.LiquidityKeeper) + &comdex.LiquidityKeeper, + &comdex.MarketKeeper) for _, tc := range []struct { name string msg *bindings.MsgSetAuctionMappingForApp @@ -223,7 +227,8 @@ func TestMsgUpdateCollectorLookupTable(t *testing.T) { &comdex.EsmKeeper, &comdex.VaultKeeper, &comdex.LendKeeper, - &comdex.LiquidityKeeper) + &comdex.LiquidityKeeper, + &comdex.MarketKeeper) for _, tc := range []struct { name string msg *bindings.MsgUpdateCollectorLookupTable @@ -274,7 +279,8 @@ func TestMsgUpdatePairsVault(t *testing.T) { &comdex.EsmKeeper, &comdex.VaultKeeper, &comdex.LendKeeper, - &comdex.LiquidityKeeper) + &comdex.LiquidityKeeper, + &comdex.MarketKeeper) for _, tc := range []struct { name string msg *bindings.MsgUpdatePairsVault @@ -329,7 +335,8 @@ func TestMsgWhitelistAppIDLiquidation(t *testing.T) { &comdex.EsmKeeper, &comdex.VaultKeeper, &comdex.LendKeeper, - &comdex.LiquidityKeeper) + &comdex.LiquidityKeeper, + &comdex.MarketKeeper) for _, tc := range []struct { name string msg *bindings.MsgWhitelistAppIDLiquidation @@ -376,7 +383,8 @@ func TestMsgRemoveWhitelistAppIDLiquidation(t *testing.T) { &comdex.EsmKeeper, &comdex.VaultKeeper, &comdex.LendKeeper, - &comdex.LiquidityKeeper) + &comdex.LiquidityKeeper, + &comdex.MarketKeeper) for _, tc := range []struct { name string msg *bindings.MsgRemoveWhitelistAppIDLiquidation @@ -419,7 +427,8 @@ func TestMsgAddAuctionParams(t *testing.T) { &comdex.EsmKeeper, &comdex.VaultKeeper, &comdex.LendKeeper, - &comdex.LiquidityKeeper) + &comdex.LiquidityKeeper, + &comdex.MarketKeeper) for _, tc := range []struct { name string msg *bindings.MsgAddAuctionParams diff --git a/app/wasm/wasm.go b/app/wasm/wasm.go index 8c33c186b..3aab22cce 100644 --- a/app/wasm/wasm.go +++ b/app/wasm/wasm.go @@ -15,6 +15,7 @@ import ( rewardsKeeper "github.com/comdex-official/comdex/x/rewards/keeper" tokenMintkeeper "github.com/comdex-official/comdex/x/tokenmint/keeper" vaultKeeper "github.com/comdex-official/comdex/x/vault/keeper" + marketKeeper "github.com/comdex-official/comdex/x/market/keeper" ) func RegisterCustomPlugins( @@ -29,8 +30,9 @@ func RegisterCustomPlugins( vault *vaultKeeper.Keeper, lend *lendKeeper.Keeper, liquidity *liquidityKeeper.Keeper, + market *marketKeeper.Keeper, ) []wasmkeeper.Option { - comdexQueryPlugin := NewQueryPlugin(asset, locker, tokenMint, rewards, collector, liquidation, esm, vault, lend, liquidity) + comdexQueryPlugin := NewQueryPlugin(asset, locker, tokenMint, rewards, collector, liquidation, esm, vault, lend, liquidity, market) appDataQueryPluginOpt := wasmkeeper.WithQueryPlugins(&wasmkeeper.QueryPlugins{ Custom: CustomQuerier(comdexQueryPlugin),