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")
16 errEmptyAmount = errors.New("nil amount in the request actions")
17 errBadAmount = errors.New("bad amount in the request actions")
20 // BuildRequest is main struct when building transactions
21 type BuildRequest struct {
22 Tx *types.TxData `json:"base_transaction"`
23 Actions []map[string]interface{} `json:"actions"`
24 TTL json.Duration `json:"ttl"`
25 TimeRange uint64 `json:"time_range"`
28 func (a *API) filterAliases(ctx context.Context, br *BuildRequest) error {
29 for i, m := range br.Actions {
30 id, _ := m["asset_id"].(string)
31 alias, _ := m["asset_alias"].(string)
32 alias = strings.ToUpper(alias)
33 if id == "" && alias != "" {
35 case consensus.BTMAlias:
36 m["asset_id"] = consensus.BTMAssetID.String()
38 asset, err := a.wallet.AssetReg.FindByAlias(alias)
40 return errors.WithDetailf(err, "invalid asset alias %s on action %d", alias, i)
42 m["asset_id"] = asset.AssetID.String()
46 id, _ = m["account_id"].(string)
47 alias, _ = m["account_alias"].(string)
48 if id == "" && alias != "" {
49 acc, err := a.wallet.AccountMgr.FindByAlias(ctx, alias)
51 return errors.WithDetailf(err, "invalid account alias %s on action %d", alias, i)
53 m["account_id"] = acc.ID