6 "github.com/bytom/vapor/api"
7 "github.com/bytom/vapor/blockchain/pseudohsm"
8 "github.com/bytom/vapor/blockchain/query"
9 "github.com/bytom/vapor/blockchain/txbuilder"
10 "github.com/bytom/vapor/crypto/ed25519/chainkd"
11 "github.com/bytom/vapor/errors"
14 func (n *Node) CreateKey(alias, password string) (*api.CreateKeyResp, error) {
16 payload, err := json.Marshal(api.CreateKeyReq{Alias: alias, Password: password})
18 return nil, errors.Wrap(err, "json marshal")
21 res := &api.CreateKeyResp{}
22 return res, n.request(url, payload, res)
25 func (n *Node) ListKeys() (*[]pseudohsm.XPub, error) {
27 res := &[]pseudohsm.XPub{}
28 return res, n.request(url, nil, res)
32 func (n *Node) CreateAccount(keyAlias, accountAlias string) (*query.AnnotatedAccount, error) {
33 xPub, err := n.ListKeys()
38 var rootXPub *chainkd.XPub
39 for _, x := range *xPub {
40 if x.Alias == keyAlias {
47 return nil, errors.New("keyAlias not found!")
50 return n.postCreateAccount(accountAlias, 1, []chainkd.XPub{*rootXPub})
54 func (n *Node) CreateMultiSignAccount(alias string, quorum int, rootXPubs []chainkd.XPub) (*query.AnnotatedAccount, error) {
55 return n.postCreateAccount(alias, quorum, rootXPubs)
58 func (n *Node) postCreateAccount(alias string, quorum int, rootXPubs []chainkd.XPub) (*query.AnnotatedAccount, error) {
59 url := "/create-account"
60 payload, err := json.Marshal(api.CreateAccountReq{
66 return nil, errors.Wrap(err, "json marshal")
69 res := &query.AnnotatedAccount{}
70 return res, n.request(url, payload, res)
73 func (n *Node) ListAccounts() (*[]query.AnnotatedAccount, error) {
74 url := "/list-accounts"
75 payload, err := json.Marshal(struct{}{})
77 return nil, errors.Wrap(err, "json marshal")
80 res := &[]query.AnnotatedAccount{}
81 return res, n.request(url, payload, res)
84 func (n *Node) CreateAccountReceiver(alias string) (*txbuilder.Receiver, error) {
85 url := "/create-account-receiver"
86 payload, err := json.Marshal(api.AccountFilter{
90 return nil, errors.Wrap(err, "json marshal")
93 res := &txbuilder.Receiver{}
94 return res, n.request(url, payload, res)