Mejoras en el marco de taxonomía de token
La versión mejorada de Blockchain App Builder incluye una nueva funcionalidad relacionada con el estándar ampliado de Token Taxonomy Framework.
Límites diarios de transacción
Puede restringir el número de transacciones que una cuenta puede completar diariamente, así como el número de tokens sobre los que se puede actuar. Los parámetros de entrada max_daily_amount
y max_daily_transactions
del método createAccount
controlan este comportamiento. Estos parámetros son opcionales.
Puede lograr un mayor rendimiento si no define los límites de transacción diarios para una cuenta.
-
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 aprobación para la menta y la quema
Puede configurar aprobaciones para acuñar y grabar tokens, de modo que los usuarios con el rol de mínimo o máximo responsable de grabación deben enviar una solicitud a un aprobador, en lugar de acuñar o grabar tokens directamente. Los aprobadores pueden aceptar o rechazar solicitudes para acuñar o grabar tokens. Para activar las aprobaciones de acuñación y grabación, utilice los parámetros mint_approval_required
y burn_approval_required
. A continuación, también debe especificar valores para mint_approver_role_name
y burn_approval_role_name
, como se muestra en el siguiente ejemplo.
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
Los siguientes métodos admiten solicitar, aceptar y rechazar aprobaciones para acuñar y grabar tokens.TypeScript Métodos de Aprobación de Minting y Burning
-
requestMint
- Este método puede ser llamado por un minter para enviar una solicitud al notario minter para crear una cantidad especificada de tokens.
-
approveMint
- Este método puede ser llamado por un notario de minter para aprobar una solicitud de acuñación.
-
rejectMint
- Este método puede ser llamado por un notario de minter para rechazar una solicitud de acuñación.
-
requestBurn
- Este método puede ser llamado por un quemador para enviar una solicitud al notario del quemador para destruir una cantidad especificada de tokens.
-
approveBurn
- Este método puede ser llamado por un notario quemador para aprobar una solicitud de grabación.
-
rejectBurn
- Este método puede ser llamado por un notario quemador para rechazar una solicitud de combustión.
Métodos Go para aprobación de menta y quema
-
RequestMint
- Este método puede ser llamado por un minter para enviar una solicitud al notario minter para crear una cantidad especificada de tokens.
-
ApproveMint
- Este método puede ser llamado por un notario de minter para aprobar una solicitud de acuñación.
-
RejectMint
- Este método puede ser llamado por un notario de minter para rechazar una solicitud de acuñación.
-
RequestBurn
- Este método puede ser llamado por un quemador para enviar una solicitud al notario del quemador para destruir una cantidad especificada de tokens.
-
ApproveBurn
- Este método puede ser llamado por un notario quemador para aprobar una solicitud de grabación.
-
RejectBurn
- Este método puede ser llamado por un notario quemador para rechazar una solicitud de combustión.
Recuperación del historial de transacciones de la base de datos de historial enriquecida
Puede sincronizar los datos con la base de datos de historial enriquecida y, a continuación, recuperar los datos mediante llamadas a la API de código de cadenas. El siguiente método, que se muestra en TypeScript y en Go, recupera el historial de transacciones de la base de datos de historial enriquecida. Para poder utilizar estos métodos, debe ejecutar Oracle Autonomous Database con Oracle REST Data Services (ORDS) y OAuth activados, como se describe en 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 categoría y descripción en objetos de transacción
- Los atributos de categoría y descripción se deben incluir en los métodos
transferTokens
,holdTokens
,issueTokens
,requestMint
,requestBurn
,burnTokens
yrejectBurn
del archivo de controlador. Los métodos SDK correspondientes también deben incluir atributos de categoría y descripción. - La entrada de atributo de categoría y descripción tiene el formato de un objeto JSON denominado
info_details
, como se muestra en el siguiente ejemplo.{ "category" : "category input", "description" : "description input" }
- El campo
info_details
es opcional. Solo puede transferir una categoría o solo una descripción según sea necesario. - Los métodos GET relacionados con cualquier transacción para
transferTokens
,holdTokens
,executeHold
,releaseHold
,requestMint
,approveMint
,rejectMint
,requestBurn
,approveBurn
yrejectBurn
deben incluir atributos de categoría y descripción en la respuesta de carga útil si están presentes. - El campo de categoría tiene un límite de 20 caracteres y el campo de descripción tiene un límite de 250 caracteres.
TypeScript Métodos con Entradas Modificadas
Los siguientes métodos admiten atributos opcionales de categoría y descripción cuando usa la versión mejorada de Blockchain App Builder.
-
transferTokens
- Este método transfiere tokens del emisor de llamada a una cuenta especificada.
-
holdTokens
- Este método crea una retención en nombre del propietario de los tokens con la cuenta
to_account_id
. -
issueTokens
- Este método acuña tokens, que luego son propiedad del emisor de llamada del método.
-
burnTokens
- Este método desactiva o graba tokens de la cuenta del emisor de llamada de transacción.
Ir a métodos con entradas modificadas
Los siguientes métodos admiten atributos opcionales de categoría y descripción cuando usa la versión mejorada de Blockchain App Builder.
-
TransferTokens
- Este método transfiere tokens del emisor de llamada a una cuenta especificada.
-
HoldTokens
- Este método crea una retención en nombre del propietario de los tokens con la cuenta
to_account_id
. -
IssueTokens
- Este método acuña tokens, que luego son propiedad del emisor de llamada del método.
-
BurnTokens
- Este método desactiva o graba tokens de la cuenta del emisor de llamada de transacción.
TypeScript Métodos con salidas modificadas
Los siguientes métodos devuelven los ID de usuario y organización relevantes cuando se utiliza la versión mejorada de Blockchain App Builder.
-
getAccountTransactionHistory
- Este método devuelve una matriz de detalles de historial de transacciones de cuenta para un usuario y un token especificados.
-
getAccountTransactionHistoryWithFilters
- Este método devuelve una matriz filtrada de detalles de historial de transacciones de cuenta para un usuario y un token especificados.
Métodos Go con salidas modificadas
Los siguientes métodos devuelven los ID de usuario y organización relevantes cuando se utiliza la versión mejorada de Blockchain App Builder.
-
GetAccountTransactionHistory
- Este método devuelve una matriz de detalles de historial de transacciones de cuenta para un usuario y un token especificados.
-
GetAccountTransactionHistoryWithFilters
- Este método devuelve una matriz filtrada de detalles de historial de transacciones de cuenta para un usuario y un token especificados.