标记分类框架增强功能
区块链应用程序构建器的增强版本包括与扩展的令牌分类框架标准相关的新功能。
每日交易限额
您可以限制账户每天可以完成的事务处理数,以及可以执行的标记数。createAccount
方法的 max_daily_amount
和 max_daily_transactions
输入参数控制此行为。这些参数是可选的。
如果未设置账户的每日事务处理限制,则可以获得更高的吞吐量。
-
createAccount (TypeScript)
@Validator(yup.string(), yup.string(), yup.string(), yup.object().nullable()) public async createAccount(org_id: string, user_id: string, token_type: string, daily_limits: DailyLimits) { await this.Ctx.Auth.checkAuthorization("ACCOUNT.createAccount", "TOKEN", { org_id }); return await this.Ctx.Account.createAccount(org_id, user_id, token_type, daily_limits); }
-
CreateAccount (Go)
func (t *Controller) CreateAccount(org_id string, user_id string, token_type string, daily_limits ...account.AccountDailyLimits) (interface{}, error) { auth, err := t.Ctx.Auth.CheckAuthorization("Account.CreateAccount", "TOKEN", map[string]string{"org_id": org_id}) if err != nil && !auth { return nil, fmt.Errorf("error in authorizing the caller %s", err.Error()) } return t.Ctx.Account.CreateAccount(org_id, user_id, token_type, daily_limits...) }
铸造和燃烧的审批要求
您可以为铸造和刻录令牌设置审批,以便具有矿工或刻录器角色的用户必须向审批人提交请求,而不是直接铸造或刻录令牌。审批者可以接受或拒绝对铸造或刻录令牌的请求。要启用铸造和刻录的审批,请使用 mint_approval_required
和 burn_approval_required
参数。然后,还必须为 mint_approver_role_name
和 burn_approval_role_name
指定值,如以下示例所示。
behavior: # Token behaviors
- divisible:
decimal: 2
- mintable:
max_mint_quantity: 1000
mint_approval_required: true
- transferable
- burnable
burn_approval_required: true
- holdable
- roles:
minter_role_name: minter
notary_role_name: notary
mint_approver_role_name: minter_notary
burn_approver_role_name: burner_notary
以下方法支持请求、接受和拒绝对铸币和刻录令牌的审批。TypeScript 铸造和燃烧审批的方法
执行铸造和燃烧审批的方法
从富历史记录数据库提取事务处理历史记录
您可以将数据同步到富历史记录数据库,然后使用链代码 API 调用提取数据。以下方法(显示在 TypeScript 和 Go 中)从富历史记录数据库中提取事务处理历史记录。在使用这些方法之前,必须运行启用了 Oracle REST Data Services (ORDS) 和 OAuth 的 Oracle Autonomous Database,如Oracle Database View Definitions for Wholesale CBDC 中所述。-
getAccountTransactionHistoryWithFiltersFromRichHistDB (TypeScript)
@GetMethod() @Validator(yup.string(), yup.string(), yup.string(), yup.string(), yup.string(), yup.object().nullable()) public async getAccountTransactionHistoryWithFiltersFromRichHistDB(token_id: string, org_id: string, user_id: string, custom_endpoint: string, bearer_token: string, filters?: Filters) { const account_id = await this.Ctx.Account.generateAccountId(token_id, org_id, user_id); await this.Ctx.Auth.checkAuthorization("ACCOUNT.getAccountTransactionHistoryWithFilters", "TOKEN", { account_id }); return await this.Ctx.Account.getAccountTrxHistoryWithFiltersFromRichHistDB(account_id, org_id, user_id.toLowerCase(), custom_endpoint, bearer_token, filters); }
-
GetAccountTransactionHistoryWithFiltersFromRichHistDB (Go)
func (t *Controller) GetAccountTransactionHistoryWithFiltersFromRichHistDB(token_id string, org_id string, user_id string, custom_endPoint string, bearer_token string, filters ...account.AccountHistoryFilters) (interface{}, error) { account_id, err := t.Ctx.Account.GenerateAccountId(token_id, org_id, user_id) if err != nil { return nil, err } auth, err := t.Ctx.Auth.CheckAuthorization("Account.GetAccountTransactionHistoryWithFilters", "TOKEN", map[string]string{"account_id": account_id}) if err != nil && !auth { return nil, fmt.Errorf("error in authorizing the caller %s", err.Error()) } // sample format of filter: []string{"3", "", "2022-01-16T15:16:36+00:00", "2022-01-17T15:16:36+00:00"} transactionArray, err := t.Ctx.Account.GetAccountTransactionHistoryWithFiltersFromRichHistDB(account_id, org_id, user_id, custom_endPoint, bearer_token, filters...) return transactionArray, err }
事务处理对象中的类别和说明属性
- 类别和说明属性必须包括在控制器文件中的
transferTokens
、holdTokens
、issueTokens
、requestMint
、requestBurn
、burnTokens
和rejectBurn
方法中。相应的 SDK 方法还必须包括类别和说明属性。 - 类别和说明属性输入采用名为
info_details
的 JSON 对象的形式,如以下示例中所示。{ "category" : "category input", "description" : "description input" }
info_details
字段是可选字段。您只能根据需要传递类别或仅传递说明。- 与
transferTokens
、holdTokens
、executeHold
、releaseHold
、requestMint
、approveMint
、rejectMint
、requestBurn
、approveBurn
和rejectBurn
的任何事务处理相关的 GET 方法必须包括有效负载响应中的类别和说明属性(如果存在)。 - 类别字段限制为 20 个字符,说明字段限制为 250 个字符。
TypeScript 具有已修改输入的方法
使用区块链应用程序构建器的增强版本时,以下方法支持可选类别和说明属性。
使用修改的输入执行方法
使用区块链应用程序构建器的增强版本时,以下方法支持可选类别和说明属性。
TypeScript 具有已修改输出的方法
使用增强版区块链应用程序构建器时,以下方法将返回相关的组织和用户 ID。