package cli import ( "fmt" "github.com/filecoin-project/go-address" "github.com/filecoin-project/lotus/chain/types" "gopkg.in/urfave/cli.v2" ) var sendCmd = &cli.Command{ Name: "send", Usage: "Send funds between accounts", ArgsUsage: "[targetAddress] [amount]", Flags: []cli.Flag{ &cli.StringFlag{ Name: "source", Usage: "optionally specify the account to send funds from", }, }, Action: func(cctx *cli.Context) error { api, closer, err := GetFullNodeAPI(cctx) if err != nil { return err } defer closer() ctx := ReqContext(cctx) if cctx.Args().Len() != 2 { return fmt.Errorf("'send' expects two arguments, target and amount") } toAddr, err := address.NewFromString(cctx.Args().Get(0)) if err != nil { return err } val, err := types.ParseFIL(cctx.Args().Get(1)) if err != nil { return err } var fromAddr address.Address if from := cctx.String("source"); from == "" { defaddr, err := api.WalletDefaultAddress(ctx) if err != nil { return err } fromAddr = defaddr } else { addr, err := address.NewFromString(from) if err != nil { return err } fromAddr = addr } msg := &types.Message{ From: fromAddr, To: toAddr, Value: types.BigInt(val), GasLimit: 1000, GasPrice: types.NewInt(0), } _, err = api.MpoolPushMessage(ctx, msg) if err != nil { return err } return nil }, }