github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/x/staking/client/cli/tx_distr_proposal.go (about)

     1  package cli
     2  
     3  import (
     4  	"bufio"
     5  	"fmt"
     6  
     7  	"github.com/fibonacci-chain/fbc/libs/cosmos-sdk/client/context"
     8  	"github.com/fibonacci-chain/fbc/libs/cosmos-sdk/codec"
     9  	sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types"
    10  	"github.com/fibonacci-chain/fbc/libs/cosmos-sdk/x/auth"
    11  	"github.com/fibonacci-chain/fbc/libs/cosmos-sdk/x/auth/client/utils"
    12  	"github.com/fibonacci-chain/fbc/x/staking/types"
    13  	"github.com/spf13/cobra"
    14  )
    15  
    16  // GetCmdEditValidatorCommissionRate gets the edit validator commission rate command
    17  func GetCmdEditValidatorCommissionRate(cdc *codec.Codec) *cobra.Command {
    18  	cmd := &cobra.Command{
    19  		Use:   "edit-validator-commission-rate [commission-rate]",
    20  		Args:  cobra.ExactArgs(1),
    21  		Short: "edit an existing validator commission rate",
    22  		RunE: func(cmd *cobra.Command, args []string) error {
    23  			inBuf := bufio.NewReader(cmd.InOrStdin())
    24  			txBldr := auth.NewTxBuilderFromCLI(inBuf).WithTxEncoder(auth.DefaultTxEncoder(cdc))
    25  			cliCtx := context.NewCLIContext().WithCodec(cdc)
    26  
    27  			valAddr := cliCtx.GetFromAddress()
    28  
    29  			rate, err := sdk.NewDecFromStr(args[0])
    30  			if err != nil {
    31  				return fmt.Errorf("invalid new commission rate: %v", err)
    32  			}
    33  
    34  			msg := types.NewMsgEditValidatorCommissionRate(sdk.ValAddress(valAddr), rate)
    35  
    36  			// build and sign the transaction, then broadcast to Tendermint
    37  			return utils.GenerateOrBroadcastMsgs(cliCtx, txBldr, []sdk.Msg{msg})
    38  		},
    39  	}
    40  
    41  	return cmd
    42  }