6 "github.com/bytom/consensus"
7 "github.com/bytom/encoding/json"
8 "github.com/bytom/errors"
9 "github.com/bytom/protocol/bc/types"
13 errBadActionType = errors.New("bad action type")
14 errBadAction = errors.New("bad action object")
17 // BuildRequest is main struct when building transactions
18 type BuildRequest struct {
19 Tx *types.TxData `json:"base_transaction"`
20 Actions []map[string]interface{} `json:"actions"`
21 TTL json.Duration `json:"ttl"`
22 TimeRange uint64 `json:"time_range"`
25 func (a *API) filterAliases(ctx context.Context, br *BuildRequest) error {
26 for i, m := range br.Actions {
27 id, _ := m["asset_id"].(string)
28 alias, _ := m["asset_alias"].(string)
29 if id == "" && alias != "" {
31 case consensus.BTMAlias:
32 m["asset_id"] = consensus.BTMAssetID.String()
34 id, err := a.wallet.AssetReg.GetIDByAlias(alias)
36 return errors.WithDetailf(err, "invalid asset alias %s on action %d", alias, i)
42 id, _ = m["account_id"].(string)
43 alias, _ = m["account_alias"].(string)
44 if id == "" && alias != "" {
45 acc, err := a.wallet.AccountMgr.FindByAlias(ctx, alias)
47 return errors.WithDetailf(err, "invalid account alias %s on action %d", alias, i)
49 m["account_id"] = acc.ID