Miglioramenti per Token Taxonomy Framework
La versione avanzata di Blockchain App Builder include nuove funzionalità correlate allo standard esteso di Token Taxonomy Framework.
Limiti transazioni giornaliere
È possibile limitare il numero di transazioni che un conto può completare ogni giorno, nonché il numero di token su cui è possibile agire. I parametri di input max_daily_amount
e max_daily_transactions
per il metodo createAccount
controllano questo comportamento. Questi parametri sono facoltativi.
Se non si impostano i limiti delle transazioni giornaliere per un conto, è possibile ottenere un throughput più elevato.
-
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...) }
Requisiti di approvazione per la concimazione e la combustione
È possibile impostare le approvazioni per i token di conio e di masterizzazione, in modo che gli utenti con il ruolo di minter o burner debbano sottomettere una richiesta a un approvatore, invece di coniare o bruciare i token direttamente. Gli approvatori possono accettare o rifiutare le richieste di mentatura o masterizzazione dei token. Per abilitare le approvazioni per la conformazione e la masterizzazione, utilizzare i parametri mint_approval_required
e burn_approval_required
. È quindi necessario specificare anche i valori per mint_approver_role_name
e burn_approval_role_name
, come mostrato nell'esempio riportato di seguito.
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
I seguenti metodi supportano la richiesta, l'accettazione e il rifiuto delle approvazioni per coniare e masterizzare i token.TypeScript Metodi per l'approvazione di conio e combustione
-
requestMint
- Questo metodo può essere chiamato da un minter per inviare una richiesta al notaio del minter per creare una quantità specificata di token.
-
approveMint
- Questo metodo può essere chiamato da un notaio minatore per approvare una richiesta di conio.
-
rejectMint
- Questo metodo può essere chiamato da un notaio minter per rifiutare una richiesta di conio.
-
requestBurn
- Questo metodo può essere chiamato da un bruciatore per inviare una richiesta al notaio del bruciatore per distruggere una determinata quantità di token.
-
approveBurn
- Questo metodo può essere chiamato da un notaio del bruciatore per approvare una richiesta di masterizzazione.
-
rejectBurn
- Questo metodo può essere chiamato da un notaio del bruciatore per rifiutare una richiesta di masterizzazione.
Metodi di approvazione per conio e combustione
-
RequestMint
- Questo metodo può essere chiamato da un minter per inviare una richiesta al notaio del minter per creare una quantità specificata di token.
-
ApproveMint
- Questo metodo può essere chiamato da un notaio minatore per approvare una richiesta di conio.
-
RejectMint
- Questo metodo può essere chiamato da un notaio minter per rifiutare una richiesta di conio.
-
RequestBurn
- Questo metodo può essere chiamato da un bruciatore per inviare una richiesta al notaio del bruciatore per distruggere una determinata quantità di token.
-
ApproveBurn
- Questo metodo può essere chiamato da un notaio del bruciatore per approvare una richiesta di masterizzazione.
-
RejectBurn
- Questo metodo può essere chiamato da un notaio del bruciatore per rifiutare una richiesta di masterizzazione.
Recupero della cronologia delle transazioni dal database Rich History
È possibile sincronizzare i dati nel database Rich History e quindi recuperare i dati utilizzando le chiamate API del codice concatenato. Il seguente metodo, mostrato in TypeScript e in Go, recupera la cronologia delle transazioni dal database Rich History. Prima di poter utilizzare questi metodi, è necessario eseguire Oracle Autonomous Database con Oracle REST Data Services (ORDS) e OAuth abilitati, come descritto in 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 }
Attributi categoria e descrizione in oggetti transazione
- Gli attributi di categoria e descrizione devono essere inclusi nei metodi
transferTokens
,holdTokens
,issueTokens
,requestMint
,requestBurn
,burnTokens
erejectBurn
nel file del controller. I metodi SDK corrispondenti devono includere anche attributi di categoria e descrizione. - L'input dell'attributo di categoria e descrizione ha il formato di un oggetto JSON denominato
info_details
, come mostrato nell'esempio riportato di seguito.{ "category" : "category input", "description" : "description input" }
- Il campo
info_details
è facoltativo. È possibile passare solo una categoria o solo una descrizione in base alle esigenze. - I metodi GET correlati a qualsiasi transazione per
transferTokens
,holdTokens
,executeHold
,releaseHold
,requestMint
,approveMint
,rejectMint
,requestBurn
,approveBurn
erejectBurn
devono includere gli attributi di categoria e descrizione nella risposta del payload, se presenti. - Il campo della categoria è limitato a 20 caratteri e il campo della descrizione è limitato a 250 caratteri.
Metodi TypeScript con input modificati
I metodi riportati di seguito supportano gli attributi facoltativi di categoria e descrizione quando si utilizza la versione avanzata di Blockchain App Builder.
-
transferTokens
- Questo metodo trasferisce i token dal chiamante a un account specificato.
-
holdTokens
- Questo metodo crea un blocco per conto del proprietario dei token con l'account
to_account_id
. -
issueTokens
- Questo metodo coniuga i token, che sono quindi di proprietà del chiamante del metodo.
-
burnTokens
- Questo metodo disattiva o brucia i token dal conto del chiamante della transazione.
Metodi di Go con input modificati
I metodi riportati di seguito supportano gli attributi facoltativi di categoria e descrizione quando si utilizza la versione avanzata di Blockchain App Builder.
-
TransferTokens
- Questo metodo trasferisce i token dal chiamante a un account specificato.
-
HoldTokens
- Questo metodo crea un blocco per conto del proprietario dei token con l'account
to_account_id
. -
IssueTokens
- Questo metodo coniuga i token, che sono quindi di proprietà del chiamante del metodo.
-
BurnTokens
- Questo metodo disattiva o brucia i token dal conto del chiamante della transazione.
Metodi TypeScript con output modificati
I metodi riportati di seguito restituiscono l'organizzazione e gli ID utente pertinenti quando si utilizza la versione avanzata di Blockchain App Builder.
-
getAccountTransactionHistory
- Questo metodo restituisce un array di dettagli della cronologia delle transazioni conto per un utente e un token specificati.
-
getAccountTransactionHistoryWithFilters
- Questo metodo restituisce un array filtrato di dettagli della cronologia delle transazioni conto per un utente e un token specificati.
Metodi Go con output modificati
I metodi riportati di seguito restituiscono l'organizzazione e gli ID utente pertinenti quando si utilizza la versione avanzata di Blockchain App Builder.
-
GetAccountTransactionHistory
- Questo metodo restituisce un array di dettagli della cronologia delle transazioni conto per un utente e un token specificati.
-
GetAccountTransactionHistoryWithFilters
- Questo metodo restituisce un array filtrato di dettagli della cronologia delle transazioni conto per un utente e un token specificati.