mirror of
				https://github.com/0glabs/0g-chain.git
				synced 2025-10-31 21:18:59 +00:00 
			
		
		
		
	 fcfcd36740
			
		
	
	
		fcfcd36740
		
			
		
	
	
	
	
		
			
			* add total supply endpoint to x/liquid * add test of x/liquid total supply query * refactor x/savings test * add total supply endpoint for x/savings (w/ test) * add total supply endpoint for x/earn * handle converting bkava to underlying staked amount * aggregate bkava underlying values in x/earn * aggregate underlying value of bkava in x/savings
		
			
				
	
	
		
			209 lines
		
	
	
		
			5.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			209 lines
		
	
	
		
			5.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package cli
 | |
| 
 | |
| import (
 | |
| 	"context"
 | |
| 	"fmt"
 | |
| 
 | |
| 	"github.com/spf13/cobra"
 | |
| 
 | |
| 	"github.com/cosmos/cosmos-sdk/client"
 | |
| 	"github.com/cosmos/cosmos-sdk/client/flags"
 | |
| 	"github.com/cosmos/cosmos-sdk/version"
 | |
| 
 | |
| 	"github.com/kava-labs/kava/x/earn/types"
 | |
| )
 | |
| 
 | |
| // flags for cli queries
 | |
| const (
 | |
| 	flagDenom               = "denom"
 | |
| 	flagOwner               = "owner"
 | |
| 	flagValueInStakedTokens = "value_in_staked_tokens"
 | |
| )
 | |
| 
 | |
| // GetQueryCmd returns the cli query commands for the earn module
 | |
| func GetQueryCmd() *cobra.Command {
 | |
| 	earnQueryCommand := &cobra.Command{
 | |
| 		Use:                        types.ModuleName,
 | |
| 		Short:                      "Querying commands for the earn module",
 | |
| 		DisableFlagParsing:         true,
 | |
| 		SuggestionsMinimumDistance: 2,
 | |
| 		RunE:                       client.ValidateCmd,
 | |
| 	}
 | |
| 
 | |
| 	cmds := []*cobra.Command{
 | |
| 		queryParamsCmd(),
 | |
| 		queryVaultsCmd(),
 | |
| 		queryVaultCmd(),
 | |
| 		queryDepositsCmd(),
 | |
| 		queryTotalSupplyCmd(),
 | |
| 	}
 | |
| 
 | |
| 	for _, cmd := range cmds {
 | |
| 		flags.AddQueryFlagsToCmd(cmd)
 | |
| 	}
 | |
| 
 | |
| 	earnQueryCommand.AddCommand(cmds...)
 | |
| 
 | |
| 	return earnQueryCommand
 | |
| }
 | |
| 
 | |
| func queryParamsCmd() *cobra.Command {
 | |
| 	return &cobra.Command{
 | |
| 		Use:   "params",
 | |
| 		Short: "get the earn module parameters",
 | |
| 		Long:  "Get the current earn module parameters.",
 | |
| 		Args:  cobra.NoArgs,
 | |
| 		RunE: func(cmd *cobra.Command, args []string) error {
 | |
| 			clientCtx, err := client.GetClientQueryContext(cmd)
 | |
| 			if err != nil {
 | |
| 				return err
 | |
| 			}
 | |
| 
 | |
| 			queryClient := types.NewQueryClient(clientCtx)
 | |
| 
 | |
| 			req := types.NewQueryParamsRequest()
 | |
| 			res, err := queryClient.Params(context.Background(), req)
 | |
| 			if err != nil {
 | |
| 				return err
 | |
| 			}
 | |
| 
 | |
| 			return clientCtx.PrintProto(&res.Params)
 | |
| 		},
 | |
| 	}
 | |
| }
 | |
| 
 | |
| func queryVaultsCmd() *cobra.Command {
 | |
| 	return &cobra.Command{
 | |
| 		Use:     "vaults",
 | |
| 		Short:   "get all earn vaults",
 | |
| 		Long:    "Get all earn module vaults.",
 | |
| 		Args:    cobra.NoArgs,
 | |
| 		Example: fmt.Sprintf(`%[1]s q %[2]s vaults`, version.AppName, types.ModuleName),
 | |
| 		RunE: func(cmd *cobra.Command, args []string) error {
 | |
| 			clientCtx, err := client.GetClientQueryContext(cmd)
 | |
| 			if err != nil {
 | |
| 				return err
 | |
| 			}
 | |
| 
 | |
| 			queryClient := types.NewQueryClient(clientCtx)
 | |
| 
 | |
| 			req := types.NewQueryVaultsRequest()
 | |
| 			res, err := queryClient.Vaults(context.Background(), req)
 | |
| 			if err != nil {
 | |
| 				return err
 | |
| 			}
 | |
| 
 | |
| 			return clientCtx.PrintProto(res)
 | |
| 		},
 | |
| 	}
 | |
| }
 | |
| 
 | |
| func queryVaultCmd() *cobra.Command {
 | |
| 	return &cobra.Command{
 | |
| 		Use:     "vault",
 | |
| 		Short:   "get a earn vault",
 | |
| 		Long:    "Get a specific earn module vault by denom.",
 | |
| 		Args:    cobra.ExactArgs(1),
 | |
| 		Example: fmt.Sprintf(`%[1]s q %[2]s vault usdx`, version.AppName, types.ModuleName),
 | |
| 		RunE: func(cmd *cobra.Command, args []string) error {
 | |
| 			clientCtx, err := client.GetClientQueryContext(cmd)
 | |
| 			if err != nil {
 | |
| 				return err
 | |
| 			}
 | |
| 
 | |
| 			queryClient := types.NewQueryClient(clientCtx)
 | |
| 
 | |
| 			req := types.NewQueryVaultRequest(args[0])
 | |
| 			res, err := queryClient.Vault(context.Background(), req)
 | |
| 			if err != nil {
 | |
| 				return err
 | |
| 			}
 | |
| 
 | |
| 			return clientCtx.PrintProto(res)
 | |
| 		},
 | |
| 	}
 | |
| }
 | |
| 
 | |
| func queryDepositsCmd() *cobra.Command {
 | |
| 	cmd := &cobra.Command{
 | |
| 		Use:   "deposits",
 | |
| 		Short: "get earn vault deposits",
 | |
| 		Long:  "Get earn vault deposits for all or specific accounts and vaults.",
 | |
| 		Args:  cobra.NoArgs,
 | |
| 		Example: fmt.Sprintf(`%[1]s q %[2]s deposits
 | |
| %[1]s q %[2]s deposits --owner kava1l0xsq2z7gqd7yly0g40y5836g0appumark77ny --denom usdx
 | |
| %[1]s q %[2]s deposits --denom usdx`, version.AppName, types.ModuleName),
 | |
| 		RunE: func(cmd *cobra.Command, args []string) error {
 | |
| 			clientCtx, err := client.GetClientQueryContext(cmd)
 | |
| 			if err != nil {
 | |
| 				return err
 | |
| 			}
 | |
| 
 | |
| 			ownerBech, err := cmd.Flags().GetString(flagOwner)
 | |
| 			if err != nil {
 | |
| 				return err
 | |
| 			}
 | |
| 			denom, err := cmd.Flags().GetString(flagDenom)
 | |
| 			if err != nil {
 | |
| 				return err
 | |
| 			}
 | |
| 			valueInStakedTokens, err := cmd.Flags().GetBool(flagValueInStakedTokens)
 | |
| 			if err != nil {
 | |
| 				return err
 | |
| 			}
 | |
| 
 | |
| 			pageReq, err := client.ReadPageRequest(cmd.Flags())
 | |
| 			if err != nil {
 | |
| 				return err
 | |
| 			}
 | |
| 
 | |
| 			queryClient := types.NewQueryClient(clientCtx)
 | |
| 
 | |
| 			req := types.NewQueryDepositsRequest(
 | |
| 				ownerBech,
 | |
| 				denom,
 | |
| 				valueInStakedTokens,
 | |
| 				pageReq,
 | |
| 			)
 | |
| 			res, err := queryClient.Deposits(context.Background(), req)
 | |
| 			if err != nil {
 | |
| 				return err
 | |
| 			}
 | |
| 
 | |
| 			return clientCtx.PrintProto(res)
 | |
| 		},
 | |
| 	}
 | |
| 
 | |
| 	flags.AddPaginationFlagsToCmd(cmd, "deposits")
 | |
| 
 | |
| 	cmd.Flags().String(flagOwner, "", "(optional) filter for deposits by owner address")
 | |
| 	cmd.Flags().String(flagDenom, "", "(optional) filter for deposits by vault denom")
 | |
| 	cmd.Flags().Bool(flagValueInStakedTokens, false, "(optional) get underlying staked tokens for staking derivative vaults")
 | |
| 
 | |
| 	return cmd
 | |
| }
 | |
| 
 | |
| func queryTotalSupplyCmd() *cobra.Command {
 | |
| 	return &cobra.Command{
 | |
| 		Use:   "total-supply",
 | |
| 		Short: "get total supply across all savings strategy vaults",
 | |
| 		Long:  "Get the sum of all denoms locking into vaults that allow the savings strategy.",
 | |
| 		Args:  cobra.NoArgs,
 | |
| 		RunE: func(cmd *cobra.Command, args []string) error {
 | |
| 			clientCtx, err := client.GetClientQueryContext(cmd)
 | |
| 			if err != nil {
 | |
| 				return err
 | |
| 			}
 | |
| 
 | |
| 			queryClient := types.NewQueryClient(clientCtx)
 | |
| 
 | |
| 			res, err := queryClient.TotalSupply(context.Background(), &types.QueryTotalSupplyRequest{})
 | |
| 			if err != nil {
 | |
| 				return err
 | |
| 			}
 | |
| 
 | |
| 			return clientCtx.PrintProto(res)
 | |
| 		},
 | |
| 	}
 | |
| }
 |