diff --git a/cli/send.go b/cli/send.go index 3e390584d7c..0b4b210eff5 100644 --- a/cli/send.go +++ b/cli/send.go @@ -85,7 +85,7 @@ var sendCmd = &cli.Command{ ctx := ReqContext(cctx) var params SendParams - params.To, err = address.NewFromString(cctx.Args().Get(0)) + toAddr, err := address.NewFromString(cctx.Args().Get(0)) if err != nil { return ShowHelp(cctx, fmt.Errorf("failed to parse target address: %w", err)) } @@ -117,6 +117,17 @@ var sendCmd = &cli.Command{ params.From = faddr } + if params.From.Protocol() == address.Delegated { + if !(params.To.Protocol() == address.ID || params.To.Protocol() == address.Delegated) { + api := srv.FullNodeAPI() + // Resolve id addr if possible. + params.To, err = api.StateLookupID(ctx, toAddr, types.EmptyTSK) + if err != nil { + return xerrors.Errorf("f4 addresses can only send to other f4 or id addresses. could not find id address for %s", toAddr.String()) + } + } + } + if cctx.IsSet("gas-premium") { gp, err := types.BigFromString(cctx.String("gas-premium")) if err != nil {