Améliorations apportées au cadre de taxonomie de jetons
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 sur lesquels vous pouvez agir. 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 atteindre un débit plus élevé si vous ne définissez pas les limites de transaction 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 la combustion
Vous pouvez configurer des approbations pour la frappe et la gravure de jetons, de sorte que les utilisateurs dotés du rôle de mineur ou de brûleur doivent soumettre une demande à un approbateur, au lieu de frapper ou de brûler des jetons directement. Les approbateurs peuvent accepter ou rejeter des demandes de frappe ou de gravure de jetons. Pour activer les approbations pour la frappe et la gravure, vous utilisez les paramètres mint_approval_required
et burn_approval_required
. Vous devez ensuite spécifier des valeurs pour mint_approver_role_name
et burn_approval_role_name
, comme illustré 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 pour les jetons de menthe et de brûlure.TypeScript Méthodes d'approbation de la fusion et de la combustion
-
requestMint
- Cette méthode peut être appelée par un minter pour envoyer une demande au notaire du minter pour 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 brûleur pour approuver une demande de gravure.
-
rejectBurn
- Cette méthode peut être appelée par un notaire brûleur pour rejeter une demande de gravure.
Go Méthodes pour l'approbation de la menthe et de la combustion
-
RequestMint
- Cette méthode peut être appelée par un minter pour envoyer une demande au notaire du minter pour 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 brûleur pour approuver une demande de gravure.
-
RejectBurn
- Cette méthode peut être appelée par un notaire brûleur pour rejeter une demande de gravure.
Extraction de l'historique des transactions à partir de la base de données de l'historique enrichi
Vous pouvez synchroniser les données avec la base de données historique enrichie, puis extraire les données à l'aide d'appels d'API de code de chaîne. La méthode suivante, affichée dans TypeScript et dans Go, extrait l'historique des transactions de la base de données de l'historique enrichi. Avant de 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éfinition de vues Oracle Database pour CBDC de gros.-
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
du fichier de contrôleur. Les méthodes de trousse 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 illustré 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 seulement une description, au besoin. - Les méthodes GET liées à toutes les 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 des données utiles si elles sont présentes. - Le champ de catégorie est limité à 20 caractères et le champ de description est limité à 250 caractères.
TypeScript Méthodes avec entrées modifiées
Les méthodes suivantes prennent en charge les attributs de catégorie et de description facultatifs 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 responsable des jetons avec le compte
to_account_id
. -
issueTokens
- Cette méthode émet des jetons, qui sont alors détenus par l'appelant de la méthode.
-
burnTokens
- Cette méthode désactive ou grave 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 de catégorie et de description facultatifs 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 responsable des jetons avec le compte
to_account_id
. -
IssueTokens
- Cette méthode émet des jetons, qui sont alors détenus par l'appelant de la méthode.
-
BurnTokens
- Cette méthode désactive ou grave les jetons du compte de l'appelant de la transaction.
TypeScript Méthodes avec sorties modifiées
Les méthodes suivantes renvoient l'organisation et les ID utilisateur pertinents lorsque vous utilisez la version améliorée de Blockchain App Builder.
-
getAccountTransactionHistory
- Cette méthode retourne 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 retourne 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 l'organisation et les ID utilisateur pertinents lorsque vous utilisez la version améliorée de Blockchain App Builder.
-
GetAccountTransactionHistory
- Cette méthode retourne 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 retourne un tableau filtré des détails de l'historique des transactions de compte pour un utilisateur et un jeton spécifiés.