Aprimoramentos do Token Taxonomy Framework
A versão aprimorada do Blockchain App Builder inclui novas funcionalidades relacionadas ao padrão estendido do Token Taxonomy Framework.
Limites de Transação Diária
Você pode restringir o número de transações que uma conta pode concluir diariamente, bem como o número de tokens que podem ser usados. Os parâmetros de entrada max_daily_amount
e max_daily_transactions
do método createAccount
controlam esse comportamento. Esses parâmetros são opcionais.
Você poderá obter um throughput mais alto se não definir os limites de transação diários para uma conta.
-
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...) }
Requisitos de aprovação para mineração e queima
Você pode configurar aprovações para cunhar e gravar tokens, de modo que os usuários com o papel de mineiro ou gravador devem enviar uma solicitação a um aprovador, em vez de cunhar ou gravar tokens diretamente. Os aprovadores podem aceitar ou rejeitar solicitações de menta ou queimar tokens. Para ativar aprovações para cunhagem e gravação, use os parâmetros mint_approval_required
e burn_approval_required
. Você também deve especificar valores para mint_approver_role_name
e burn_approval_role_name
, conforme mostrado no exemplo a seguir.
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
Os métodos a seguir suportam a solicitação, aceitação e rejeição de aprovações para gerar e queimar tokens.TypeScript Métodos para Aprovação de Minting e Burning
-
requestMint
- Este método pode ser chamado por um minter para enviar uma solicitação ao notário do minter para criar uma quantidade especificada de tokens.
-
approveMint
- Este método pode ser chamado por um notário mineiro para aprovar uma solicitação de cunhagem.
-
rejectMint
- Este método pode ser chamado por um notário mineiro para rejeitar uma solicitação de cunhagem.
-
requestBurn
- Este método pode ser chamado por um gravador para enviar um pedido ao notário do gravador para destruir uma quantidade especificada de tokens.
-
approveBurn
- Este método pode ser chamado por um notário queimador para aprovar um pedido de queima.
-
rejectBurn
- Este método pode ser chamado por um notário queimador para rejeitar um pedido de queima.
Métodos Go para Minting e aprovação de queima
-
RequestMint
- Este método pode ser chamado por um minter para enviar uma solicitação ao notário do minter para criar uma quantidade especificada de tokens.
-
ApproveMint
- Este método pode ser chamado por um notário mineiro para aprovar uma solicitação de cunhagem.
-
RejectMint
- Este método pode ser chamado por um notário mineiro para rejeitar uma solicitação de cunhagem.
-
RequestBurn
- Este método pode ser chamado por um gravador para enviar um pedido ao notário do gravador para destruir uma quantidade especificada de tokens.
-
ApproveBurn
- Este método pode ser chamado por um notário queimador para aprovar um pedido de queima.
-
RejectBurn
- Este método pode ser chamado por um notário queimador para rejeitar um pedido de queima.
Extraindo o Histórico de Transações do Banco de Dados do Rich History
Você pode sincronizar dados com o banco de dados de histórico avançado e extrair os dados usando chamadas de API de chaincode. O método a seguir, mostrado em TypeScript e em Go, extrai o histórico de transações do banco de dados de histórico avançado. Para poder usar esses métodos, execute o Oracle Autonomous Database com o Oracle REST Data Services (ORDS) e o OAuth ativado, conforme descrito em 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 }
Atributos de Categoria e Descrição em Objetos de Transação
- Os atributos de categoria e descrição devem ser incluídos nos métodos
transferTokens
,holdTokens
,issueTokens
,requestMint
,requestBurn
,burnTokens
erejectBurn
no arquivo do controlador. Os métodos SDK correspondentes também devem incluir atributos de categoria e descrição. - A entrada do atributo de categoria e descrição está no formato de um objeto JSON chamado
info_details
, conforme mostrado no exemplo a seguir.{ "category" : "category input", "description" : "description input" }
- O campo
info_details
é opcional. Você pode passar apenas uma categoria ou apenas uma descrição, conforme necessário. - Os métodos GET relacionados a qualquer transação para
transferTokens
,holdTokens
,executeHold
,releaseHold
,requestMint
,approveMint
,rejectMint
,requestBurn
,approveBurn
erejectBurn
devem incluir atributos de categoria e descrição na resposta do payload, se eles estiverem presentes. - O campo de categoria é limitado a 20 caracteres e o campo de descrição é limitado a 250 caracteres.
TypeScript Métodos com Entradas Modificadas
Os métodos a seguir suportam atributos opcionais de categoria e descrição quando você usa a versão aprimorada do Blockchain App Builder.
-
transferTokens
- Este método transfere tokens do chamador para uma conta especificada.
-
holdTokens
- Este método cria uma retenção em nome do proprietário dos tokens com a conta
to_account_id
. -
issueTokens
- Esse método mina tokens, que pertencem ao chamador do método.
-
burnTokens
- Este método desativa ou queima tokens da conta do chamador da transação.
Métodos Go com Entradas Modificadas
Os métodos a seguir suportam atributos opcionais de categoria e descrição quando você usa a versão aprimorada do Blockchain App Builder.
-
TransferTokens
- Este método transfere tokens do chamador para uma conta especificada.
-
HoldTokens
- Este método cria uma retenção em nome do proprietário dos tokens com a conta
to_account_id
. -
IssueTokens
- Esse método mina tokens, que pertencem ao chamador do método.
-
BurnTokens
- Este método desativa ou queima tokens da conta do chamador da transação.
TypeScript Métodos com Saídas Modificadas
Os métodos a seguir retornam a organização relevante e os IDs de usuário quando você usa a versão aprimorada do Blockchain App Builder.
-
getAccountTransactionHistory
- Esse método retorna um array de detalhes do histórico de transações da conta para um usuário e token especificados.
-
getAccountTransactionHistoryWithFilters
- Esse método retorna um array filtrado de detalhes do histórico de transações da conta para um usuário e token especificados.
Métodos Go com Saídas Modificadas
Os métodos a seguir retornam a organização relevante e os IDs de usuário quando você usa a versão aprimorada do Blockchain App Builder.
-
GetAccountTransactionHistory
- Esse método retorna um array de detalhes do histórico de transações da conta para um usuário e token especificados.
-
GetAccountTransactionHistoryWithFilters
- Esse método retorna um array filtrado de detalhes do histórico de transações da conta para um usuário e token especificados.