MCPcopy Create free account
hub / github.com/DNAProject/DNA / transfer

Function transfer

cmd/asset_cmd.go:118–200  ·  view source on GitHub ↗
(ctx *cli.Context)

Source from the content-addressed store, hash-verified

116}
117
118func transfer(ctx *cli.Context) error {
119 SetRpcPort(ctx)
120 if !ctx.IsSet(utils.GetFlagName(utils.TransactionToFlag)) ||
121 !ctx.IsSet(utils.GetFlagName(utils.TransactionFromFlag)) ||
122 !ctx.IsSet(utils.GetFlagName(utils.TransactionAmountFlag)) {
123 PrintErrorMsg("Missing %s %s or %s argument.", utils.TransactionToFlag.Name, utils.TransactionFromFlag.Name, utils.TransactionAmountFlag.Name)
124 cli.ShowSubcommandHelp(ctx)
125 return nil
126 }
127
128 asset := ctx.String(utils.GetFlagName(utils.TransactionAssetFlag))
129 if asset == "" {
130 asset = utils.ASSET_GAS
131 }
132 from := ctx.String(utils.TransactionFromFlag.Name)
133 fromAddr, err := cmdcom.ParseAddress(from, ctx)
134 if err != nil {
135 return err
136 }
137 to := ctx.String(utils.TransactionToFlag.Name)
138 toAddr, err := cmdcom.ParseAddress(to, ctx)
139 if err != nil {
140 return err
141 }
142
143 var amount uint64
144 amountStr := ctx.String(utils.TransactionAmountFlag.Name)
145 switch strings.ToLower(asset) {
146 case "gas":
147 amount = utils.ParseOng(amountStr)
148 amountStr = utils.FormatOng(amount)
149 default:
150 return fmt.Errorf("unsupport asset:%s", asset)
151 }
152
153 err = utils.CheckAssetAmount(asset, amount)
154 if err != nil {
155 return err
156 }
157
158 force := ctx.Bool(utils.GetFlagName(utils.ForceSendTxFlag))
159 if !force {
160 balance, err := utils.GetAccountBalance(fromAddr, asset)
161 if err != nil {
162 return err
163 }
164 if balance < amount {
165 PrintErrorMsg("Account:%s balance not enough.", fromAddr)
166 PrintInfoMsg("\nTip:")
167 PrintInfoMsg(" If you want to send transaction compulsively, please using %s flag.", utils.GetFlagName(utils.ForceSendTxFlag))
168 return nil
169 }
170 }
171
172 gasPrice := ctx.Uint64(utils.TransactionGasPriceFlag.Name)
173 gasLimit := ctx.Uint64(utils.TransactionGasLimitFlag.Name)
174
175 networkId, err := utils.GetNetworkId()

Callers

nothing calls this directly

Calls 13

GetFlagNameFunction · 0.92
ParseOngFunction · 0.92
FormatOngFunction · 0.92
CheckAssetAmountFunction · 0.92
GetAccountBalanceFunction · 0.92
GetNetworkIdFunction · 0.92
TransferFunction · 0.92
SetRpcPortFunction · 0.85
PrintErrorMsgFunction · 0.85
PrintInfoMsgFunction · 0.85
ErrorfMethod · 0.80
GetAccountMethod · 0.80

Tested by

no test coverage detected