7 "github.com/spf13/cobra"
8 jww "github.com/spf13/jwalterweatherman"
10 "github.com/bytom/vapor/crypto/ed25519/chainkd"
11 "github.com/bytom/vapor/util"
15 createAccountCmd.PersistentFlags().IntVarP(&accountQuorum, "quorom", "q", 1, "quorum must be greater than 0 and less than or equal to the number of signers")
16 createAccountCmd.PersistentFlags().StringVarP(&accountToken, "access", "a", "", "access token")
18 updateAccountAliasCmd.PersistentFlags().StringVar(&accountID, "id", "", "account ID")
19 updateAccountAliasCmd.PersistentFlags().StringVar(&accountAlias, "alias", "", "account alias")
21 listAccountsCmd.PersistentFlags().StringVar(&accountID, "id", "", "account ID")
22 listAccountsCmd.PersistentFlags().StringVar(&accountAlias, "alias", "", "account alias")
24 deleteAccountCmd.PersistentFlags().StringVar(&accountID, "id", "", "account ID")
25 deleteAccountCmd.PersistentFlags().StringVar(&accountAlias, "alias", "", "account alias")
27 listAddressesCmd.PersistentFlags().StringVar(&accountID, "id", "", "account ID")
28 listAddressesCmd.PersistentFlags().StringVar(&accountAlias, "alias", "", "account alias")
30 listBalancesCmd.PersistentFlags().StringVar(&accountID, "id", "", "account ID")
31 listBalancesCmd.PersistentFlags().StringVar(&accountAlias, "alias", "", "account alias")
33 listUnspentOutputsCmd.PersistentFlags().StringVar(&accountID, "account_id", "", "account ID")
34 listUnspentOutputsCmd.PersistentFlags().StringVar(&accountAlias, "account_alias", "", "account alias")
35 listUnspentOutputsCmd.PersistentFlags().StringVar(&outputID, "id", "", "ID of unspent output")
36 listUnspentOutputsCmd.PersistentFlags().BoolVar(&unconfirmed, "unconfirmed", false, "list unconfirmed unspent outputs")
37 listUnspentOutputsCmd.PersistentFlags().BoolVar(&smartContract, "contract", false, "list smart contract unspent outputs")
38 listUnspentOutputsCmd.PersistentFlags().IntVar(&from, "from", 0, "the starting position of a page")
39 listUnspentOutputsCmd.PersistentFlags().IntVar(&count, "count", 0, "the longest count per page")
53 var createAccountCmd = &cobra.Command{
54 Use: "create-account <alias> <xpub(s)>",
55 Short: "Create an account",
56 Args: cobra.MinimumNArgs(2),
57 Run: func(cmd *cobra.Command, args []string) {
60 for _, x := range args[1:] {
61 xpub := chainkd.XPub{}
62 if err := xpub.UnmarshalText([]byte(x)); err != nil {
63 jww.ERROR.Println(err)
64 os.Exit(util.ErrLocalExe)
66 ins.RootXPubs = append(ins.RootXPubs, xpub)
69 ins.Quorum = accountQuorum
71 ins.AccessToken = accountToken
73 data, exitCode := util.ClientCall("/create-account", &ins)
74 if exitCode != util.Success {
82 var updateAccountAliasCmd = &cobra.Command{
83 Use: "update-account-alias <newAlias>",
84 Short: "update account alias",
85 Args: cobra.ExactArgs(1),
86 Run: func(cmd *cobra.Command, args []string) {
88 AccountID string `json:"account_id"`
89 AccountAlias string `json:"account_alias"`
90 NewAlias string `json:"new_alias"`
91 }{AccountID: accountID, AccountAlias: accountAlias, NewAlias: args[0]}
93 _, exitCode := util.ClientCall("/update-account-alias", &ins)
94 if exitCode != util.Success {
98 jww.FEEDBACK.Println("Successfully update account alias")
102 var listAccountsCmd = &cobra.Command{
103 Use: "list-accounts",
104 Short: "List the existing accounts",
106 Run: func(cmd *cobra.Command, args []string) {
108 ID string `json:"id"`
109 Alias string `json:"alias"`
110 }{ID: accountID, Alias: accountAlias}
112 data, exitCode := util.ClientCall("/list-accounts", &filter)
113 if exitCode != util.Success {
121 var deleteAccountCmd = &cobra.Command{
122 Use: "delete-account <[accountAlias]|[accountID]>",
123 Short: "Delete the existing account",
125 Run: func(cmd *cobra.Command, args []string) {
127 AccountID string `json:"account_id"`
128 AccountAlias string `json:"account_alias"`
129 }{AccountID: accountID, AccountAlias: accountAlias}
131 if _, exitCode := util.ClientCall("/delete-account", &ins); exitCode != util.Success {
135 jww.FEEDBACK.Println("Successfully delete account")
139 var createAccountReceiverCmd = &cobra.Command{
140 Use: "create-account-receiver <accountAlias> [accountID]",
141 Short: "Create an account receiver",
142 Args: cobra.RangeArgs(1, 2),
143 Run: func(cmd *cobra.Command, args []string) {
145 AccountID string `json:"account_id"`
146 AccountAlias string `json:"account_alias"`
147 }{AccountAlias: args[0]}
150 ins.AccountID = args[1]
153 data, exitCode := util.ClientCall("/create-account-receiver", &ins)
154 if exitCode != util.Success {
162 var listAddressesCmd = &cobra.Command{
163 Use: "list-addresses",
164 Short: "List the account addresses",
166 Run: func(cmd *cobra.Command, args []string) {
168 AccountID string `json:"account_id"`
169 AccountAlias string `json:"account_alias"`
170 }{AccountID: accountID, AccountAlias: accountAlias}
172 data, exitCode := util.ClientCall("/list-addresses", &ins)
173 if exitCode != util.Success {
181 var validateAddressCmd = &cobra.Command{
182 Use: "validate-address <address>",
183 Short: "validate the account addresses",
184 Args: cobra.ExactArgs(1),
185 Run: func(cmd *cobra.Command, args []string) {
187 Address string `json:"address"`
190 data, exitCode := util.ClientCall("/validate-address", &ins)
191 if exitCode != util.Success {
199 var listPubKeysCmd = &cobra.Command{
200 Use: "list-pubkeys <accountInfo> [publicKey]",
201 Short: "list the account pubkeys",
202 Args: cobra.RangeArgs(1, 2),
203 Run: func(cmd *cobra.Command, args []string) {
205 AccountID string `json:"account_id"`
206 AccountAlias string `json:"account_alias"`
207 PublicKey string `json:"public_key"`
210 if len(args[0]) == 13 && strings.HasPrefix(args[0], "0") {
211 ins.AccountID = args[0]
213 ins.AccountAlias = args[0]
217 ins.PublicKey = args[1]
220 data, exitCode := util.ClientCall("/list-pubkeys", &ins)
221 if exitCode != util.Success {
229 var listBalancesCmd = &cobra.Command{
230 Use: "list-balances",
231 Short: "List the accounts balances",
233 Run: func(cmd *cobra.Command, args []string) {
234 var filter = struct {
235 AccountID string `json:"account_id"`
236 AccountAlias string `json:"account_alias"`
237 }{AccountID: accountID, AccountAlias: accountAlias}
239 data, exitCode := util.ClientCall("/list-balances", &filter)
240 if exitCode != util.Success {
248 var listUnspentOutputsCmd = &cobra.Command{
249 Use: "list-unspent-outputs",
250 Short: "List the accounts unspent outputs",
252 Run: func(cmd *cobra.Command, args []string) {
254 AccountID string `json:"account_id"`
255 AccountAlias string `json:"account_alias"`
256 ID string `json:"id"`
257 Unconfirmed bool `json:"unconfirmed"`
258 SmartContract bool `json:"smart_contract"`
259 From uint `json:"from"`
260 Count uint `json:"count"`
262 AccountID: accountID,
263 AccountAlias: accountAlias,
265 Unconfirmed: unconfirmed,
266 SmartContract: smartContract,
271 data, exitCode := util.ClientCall("/list-unspent-outputs", &filter)
272 if exitCode != util.Success {