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