Skip to content

Commit

Permalink
feat!: bring back the cliff vesting command (#111) (backport #271) (#272
Browse files Browse the repository at this point in the history
)

* feat!: bring back the cliff vesting command (#111) (#271)

* Bring back the cliff vesting command #111

* Wrap error

(cherry picked from commit bf5b163)

# Conflicts:
#	x/auth/vesting/client/cli/tx.go

* fix conflict

* Fix merge conflict

Co-authored-by: Dev Ojha <ValarDragon@users.noreply.github.com>
Co-authored-by: Dev Ojha <dojha@berkeley.edu>
  • Loading branch information
3 people authored Jun 23, 2022
1 parent 9236d5a commit 6209434
Showing 1 changed file with 50 additions and 0 deletions.
50 changes: 50 additions & 0 deletions x/auth/vesting/client/cli/tx.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,15 @@ package cli

import (
"strconv"
"time"

"github.com/spf13/cobra"

"github.com/cosmos/cosmos-sdk/client"
"github.com/cosmos/cosmos-sdk/client/flags"
"github.com/cosmos/cosmos-sdk/client/tx"
sdk "github.com/cosmos/cosmos-sdk/types"
"github.com/cosmos/cosmos-sdk/types/errors"
"github.com/cosmos/cosmos-sdk/x/auth/vesting/types"
)

Expand All @@ -29,6 +31,7 @@ func GetTxCmd() *cobra.Command {

txCmd.AddCommand(
NewMsgCreateVestingAccountCmd(),
NewMsgCreateCliffVestingAccountCmd(),
)

return txCmd
Expand Down Expand Up @@ -79,3 +82,50 @@ timestamp.`,

return cmd
}

// NewMsgCreateDelayedVestingAccountCmd returns a CLI command handler for creating a
// NewMsgCreateDelayedVestingAccountCmd transaction.
// This is hacky, but meant to mitigate the pain of a very specific use case.
// Namely, make it easy to make cliff locks to an address.
func NewMsgCreateCliffVestingAccountCmd() *cobra.Command {
cmd := &cobra.Command{
Use: "create-cliff-vesting-account [to_address] [amount] [cliff_duration]",
Short: "Create a new cliff vesting account funded with an allocation of tokens.",
Long: `Create a new delayed vesting account funded with an allocation of tokens. All vesting accouts created will have their start time
set by the committed block's time. The cliff duration should be specified in hours.`,
Args: cobra.ExactArgs(3),
RunE: func(cmd *cobra.Command, args []string) error {
clientCtx, err := client.GetClientTxContext(cmd)
if err != nil {
return err
}
toAddr, err := sdk.AccAddressFromBech32(args[0])
if err != nil {
return err
}

amount, err := sdk.ParseCoinsNormalized(args[1])
if err != nil {
return err
}

cliffDuration, err := time.ParseDuration(args[2])
if err != nil {
err = errors.Wrap(err, "duration incorrectly formatted, see https://pkg.go.dev/time#ParseDuration")
return err
}
cliffVesting := true

endTime := time.Now().Add(cliffDuration)
endEpochTime := endTime.Unix()

msg := types.NewMsgCreateVestingAccount(clientCtx.GetFromAddress(), toAddr, amount, endEpochTime, cliffVesting)

return tx.GenerateOrBroadcastTxCLI(clientCtx, cmd.Flags(), msg)
},
}

flags.AddTxFlagsToCmd(cmd)

return cmd
}

0 comments on commit 6209434

Please sign in to comment.