Améliorations apportées à Token Taxonomy Framework
La version améliorée de Blockchain App Builder inclut de nouvelles fonctionnalités liées à la norme étendue Token Taxonomy Framework.
Limites de transaction quotidiennes
Vous pouvez limiter le nombre de transactions qu'un compte peut effectuer quotidiennement, ainsi que le nombre de jetons pouvant faire l'objet d'une action. Les paramètres d'entrée max_daily_amount
et max_daily_transactions
de la méthode createAccount
contrôlent ce comportement. Ces paramètres sont facultatifs.
Vous pouvez obtenir un débit plus élevé si vous ne définissez pas les limites de transactions quotidiennes pour un compte.
-
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...) }
Exigences d'approbation pour la menthe et l'utilisation
Vous pouvez configurer des approbations pour l'extraction et la gravure de jetons, de sorte que les utilisateurs dotés du rôle d'extraction ou de brûleur doivent soumettre une demande à un approbateur, au lieu d'extraire ou de brûler des jetons directement. Les approbateurs peuvent accepter ou rejeter les demandes de mise à jour ou de gravure de jetons. Afin d'activer les approbations pour l'extraction et la gravure, utilisez les paramètres mint_approval_required
et burn_approval_required
. Vous devez ensuite également indiquer des valeurs pour mint_approver_role_name
et burn_approval_role_name
, comme indiqué dans l'exemple suivant.
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
Les méthodes suivantes prennent en charge la demande, l'acceptation et le rejet des approbations de jetons de menthe et de brûlage.TypeScript Méthodes d'approbation de la menthe et de l'utilisation
-
requestMint
- Cette méthode peut être appelée par un minter pour envoyer une demande au notaire minter afin de créer une quantité spécifiée de jetons.
-
approveMint
- Cette méthode peut être appelée par un notaire mineur pour approuver une demande de frappe.
-
rejectMint
- Cette méthode peut être appelée par un notaire mineur pour rejeter une demande de frappe.
-
requestBurn
- Cette méthode peut être appelée par un brûleur pour envoyer une demande au notaire du brûleur de détruire une quantité spécifiée de jetons.
-
approveBurn
- Cette méthode peut être appelée par un notaire de brûleur pour approuver une demande de gravure.
-
rejectBurn
- Cette méthode peut être appelée par un notaire de brûleur pour rejeter une demande de gravure.
Méthodes Go pour l'approbation de menthe et d'utilisation
-
RequestMint
- Cette méthode peut être appelée par un minter pour envoyer une demande au notaire minter afin de créer une quantité spécifiée de jetons.
-
ApproveMint
- Cette méthode peut être appelée par un notaire mineur pour approuver une demande de frappe.
-
RejectMint
- Cette méthode peut être appelée par un notaire mineur pour rejeter une demande de frappe.
-
RequestBurn
- Cette méthode peut être appelée par un brûleur pour envoyer une demande au notaire du brûleur de détruire une quantité spécifiée de jetons.
-
ApproveBurn
- Cette méthode peut être appelée par un notaire de brûleur pour approuver une demande de gravure.
-
RejectBurn
- Cette méthode peut être appelée par un notaire de brûleur pour rejeter une demande de gravure.
Extraction de l'historique des transactions à partir de la base de données Rich History
Vous pouvez synchroniser les données avec la base de données d'historique enrichi, puis les extraire à l'aide des appels d'API de code chaîne. La méthode suivante, présentée dans TypeScript et dans Go, extrait l'historique des transactions de la base de données d'historique enrichi. Pour pouvoir utiliser ces méthodes, vous devez exécuter Oracle Autonomous Database avec Oracle REST Data Services (ORDS) et OAuth activés, comme décrit dans Définitions de vue Oracle Database pour 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 }
Attributs de catégorie et de description dans les objets de transaction
- Les attributs de catégorie et de description doivent être inclus dans les méthodes
transferTokens
,holdTokens
,issueTokens
,requestMint
,requestBurn
,burnTokens
etrejectBurn
dans le fichier de contrôleur. Les méthodes SDK correspondantes doivent également inclure des attributs de catégorie et de description. - L'entrée d'attribut de catégorie et de description se présente sous la forme d'un objet JSON nommé
info_details
, comme indiqué dans l'exemple suivant.{ "category" : "category input", "description" : "description input" }
- Le champ
info_details
est facultatif. Vous ne pouvez transmettre qu'une catégorie ou une description si nécessaire. - Les méthodes GET associées à des transactions pour
transferTokens
,holdTokens
,executeHold
,releaseHold
,requestMint
,approveMint
,rejectMint
,requestBurn
,approveBurn
etrejectBurn
doivent inclure des attributs de catégorie et de description dans la réponse de charge utile s'ils sont présents. - Le champ de catégorie est limité à 20 caractères et le champ de description est limité à 250 caractères.
Méthodes TypeScript avec entrées modifiées
Les méthodes suivantes prennent en charge les attributs facultatifs de catégorie et de description lorsque vous utilisez la version améliorée de Blockchain App Builder.
-
transferTokens
- Cette méthode transfère les jetons de l'appelant vers un compte spécifié.
-
holdTokens
- Cette méthode crée un blocage pour le compte du propriétaire des jetons avec le compte
to_account_id
. -
issueTokens
- Cette méthode extrait des jetons, qui appartiennent ensuite à l'appelant de la méthode.
-
burnTokens
- Cette méthode désactive ou brûle les jetons du compte de l'appelant de la transaction.
Méthodes Go avec entrées modifiées
Les méthodes suivantes prennent en charge les attributs facultatifs de catégorie et de description lorsque vous utilisez la version améliorée de Blockchain App Builder.
-
TransferTokens
- Cette méthode transfère les jetons de l'appelant vers un compte spécifié.
-
HoldTokens
- Cette méthode crée un blocage pour le compte du propriétaire des jetons avec le compte
to_account_id
. -
IssueTokens
- Cette méthode extrait des jetons, qui appartiennent ensuite à l'appelant de la méthode.
-
BurnTokens
- Cette méthode désactive ou brûle les jetons du compte de l'appelant de la transaction.
TypeScript Méthodes avec sorties modifiées
Les méthodes suivantes renvoient les ID d'organisation et d'utilisateur pertinents lorsque vous utilisez la version améliorée de Blockchain App Builder.
-
getAccountTransactionHistory
- Cette méthode renvoie un tableau des détails de l'historique des transactions de compte pour un utilisateur et un jeton spécifiés.
-
getAccountTransactionHistoryWithFilters
- Cette méthode renvoie un tableau filtré des détails de l'historique des transactions de compte pour un utilisateur et un jeton spécifiés.
Méthodes Go avec sorties modifiées
Les méthodes suivantes renvoient les ID d'organisation et d'utilisateur pertinents lorsque vous utilisez la version améliorée de Blockchain App Builder.
-
GetAccountTransactionHistory
- Cette méthode renvoie un tableau des détails de l'historique des transactions de compte pour un utilisateur et un jeton spécifiés.
-
GetAccountTransactionHistoryWithFilters
- Cette méthode renvoie un tableau filtré des détails de l'historique des transactions de compte pour un utilisateur et un jeton spécifiés.