Proyecto NFT de andamios TypeScript para ERC-721
Blockchain App Builder toma la entrada de su archivo de especificación NFT y genera un proyecto de código de cadena andamiaje totalmente funcional.
El proyecto genera automáticamente clases y funciones de ciclo de vida de NFT, incluidos los métodos CRUD y no CRUD, así como un SDK de tokenización. La validación de argumentos, la canalización/anulación de canalización y la capacidad de persistencia transparente se admiten automáticamente.
Para obtener información sobre el proyecto andamiaje y los métodos que no están directamente relacionados con las NFT, consulte Scaffolded TypeScript Chaincode Project.
Modelo
Cada clase de modelo con token amplía la clase OchainModel
. La capacidad de persistencia transparente, o ORM simplificado, se captura en la clase OchainModel
.
import * as yup from 'yup';
import { Id, Mandatory, Validate, Default, Embedded, Derived, ReadOnly } from '../../lib/decorators';
import { OchainModel } from '../../lib/ochain-model';
import { STRATEGY } from '../../lib/utils';
import { EmbeddedModel } from '../../lib/ochain-embedded-model';
export class ArtCollectionMetadata extends EmbeddedModel<ArtCollectionMetadata> {
@Validate(yup.string())
public painting_name: string;
@Validate(yup.string())
public description: string;
@Validate(yup.string())
public image: string;
@Validate(yup.string())
public painter_name: string;
}
@Id('tokenId')
export class ArtCollection extends OchainModel<ArtCollection> {
public readonly assetType = 'otoken';
@Mandatory()
@Validate(yup.string().required().matches(/^[A-Za-z0-9][A-Za-z0-9_-]*$/).max(16))
public tokenId: string;
@ReadOnly('artcollection')
public tokenName: string;
@Validate(yup.string().trim().max(256))
public tokenDesc: string;
@ReadOnly('ART')
public symbol: string;
@ReadOnly('erc721+')
public tokenStandard: string;
@ReadOnly('nonfungible')
public tokenType: string;
@ReadOnly('whole')
public tokenUnit: string;
@ReadOnly(["indivisible","singleton","mintable","transferable","burnable","roles"])
public behaviors: string[];
@ReadOnly({minter_role_name: "minter"})
public roles: object;
@ReadOnly({max_mint_quantity: 20000})
public mintable: object;
@Validate(yup.string())
public owner: string;
@Validate(yup.string())
public createdBy: string;
@Validate(yup.string())
public transferredBy: string;
@Validate(yup.string())
public creationDate: string;
@Validate(yup.string())
public transferredDate: string;
@Validate(yup.bool())
public isBurned: boolean;
@Validate(yup.string())
public burnedBy: string;
@Validate(yup.string())
public burnedDate: string;
@Validate(yup.string().max(2000))
public tokenUri: string;
@Embedded(ArtCollectionMetadata)
public metadata: ArtCollectionMetadata;
@Validate(yup.number())
public price: number;
@Validate(yup.boolean())
public on_sale_flag: boolean;
}
Controlador
La clase de controlador principal amplía la clase OchainController
. Solo hay un controlador principal.
export class DigiCurrCCController extends OchainController{
Puede crear cualquier número de clases, funciones o archivos, pero solo se pueden invocar los métodos definidos en la clase de controlador principal. Los otros métodos están ocultos.
Puede utilizar los métodos SDK de token para escribir métodos personalizados para la aplicación de negocio.
Métodos de NFT generados automáticamente
Blockchain App Builder genera automáticamente métodos para admitir NFT y ciclos de vida de NFT. Puede utilizar estos métodos para inicializar NFT, gestionar roles y cuentas, y completar otras tareas del ciclo de vida de NFT sin necesidad de codificación adicional. Los métodos de controlador deben tener un decorador @Validator(...params)
que se pueda invocar.
- Gestión del Control de Acceso
- Gestión de configuración de token
- Gestión de cuentas
- Gestión de Roles
- Gestión de historial de transacciones
- Gestión de comportamiento de token
Métodos de Gestión de Control de Acceso
-
addTokenAdmin
- Este método agrega un usuario como
Token Admin
del código de cadena. Este método solo puede ser llamado por unToken Admin
del código de cadena. -
removeTokenAdmin
- Este método elimina un usuario como
Token Admin
del código de cadena. Este método solo puede ser llamado por unToken Admin
del código de cadena. -
isTokenAdmin
- Este método devuelve el valor booleano
true
si el emisor de llamada de la función esToken Admin
; de lo contrario, devuelvefalse
. UnToken Admin
puede llamar a esta función en cualquier otro usuario de la red blockchain. Otros usuarios pueden llamar a este método solo en sus propias cuentas. -
getAllTokenAdmins
- Este método devuelve una lista de todos los usuarios que son
Token Admin
del código de cadena. Este método solo puede ser llamado por elToken Admin
del código de cadena.
Métodos para la Gestión de Configuración de Token
-
init
- Este método se llama cuando se instancia el código de cadena. Cada
Token Admin
se identifica mediante la informaciónuserId
yorgId
en el parámetroadminList
.userId
es el nombre de usuario o el ID de correo electrónico del propietario de la instancia o del usuario conectado a la instancia.orgId
es el ID del proveedor de servicios de afiliación (MSP) del usuario en la organización de red actual. El parámetroadminList
es obligatorio la primera vez que despliegue el código de cadena. Si está actualizando el código de cadena, transfiera una lista vacía ([]
). Cualquier otra información en el parámetroadminList
se ignora durante las actualizaciones. -
getAllTokens
- Este método devuelve todos los activos de token que se guardan en la base de datos de estado. Este método solo puede ser llamado por un
Token Admin
del código de cadena. Este método utiliza consultas enriquecidas de Berkeley DB SQL y solo se puede llamar cuando se conecta a la red remota de Oracle Blockchain Platform. -
getAllTokensByUser
- Este método devuelve todos los activos de token que son propiedad de un usuario especificado. Este método utiliza consultas enriquecidas de Berkeley DB SQL y solo se puede llamar cuando se conecta a la red remota de Oracle Blockchain Platform. Este método solo lo puede llamar un
Token Admin
del código de cadena o el propietario de la cuenta. -
getTokenById
- Este método devuelve un objeto de token si el token está presente en la base de datos de estado. Este método solo puede ser llamado por un
Token Admin
del código de cadena o el propietario del token. -
getTokenHistory
- Este método devuelve el historial de un identificador de token especificado. Es un método asíncrono. Este método solo se puede llamar cuando está conectado a la red remota de Oracle Blockchain Platform. Cualquiera puede llamar a este método.
-
getTokenObject
- Este es un método de utilidad que devuelve una instancia del token para un ID de token especificado. Muchos de los métodos generados automáticamente utilizan este método para recuperar objetos de token. Puede llamar a este método según sea necesario desde sus métodos personalizados. Al crear un activo o una clase con token, actualice la caja del conmutador con la clase
Token
correspondiente para devolver el objeto de token correcto. El comandoochain sync
de Blockchain App Builder crea automáticamente una caja de cambio cuando se crea un activo con token en el archivo de especificación. Este método no tiene un decorador de método@Validator()
, lo que significa que este método no se puede invocar directamente y solo se puede llamar desde otros métodos. -
ownerOf
- Este método devuelve el ID de cuenta del propietario del ID de token especificado. Cualquiera puede llamar a este método.
-
name
- Este método devuelve el nombre de la clase de token. Cualquiera puede llamar a este método.
-
symbol
- Este método devuelve el símbolo de la clase de token. Cualquiera puede llamar a este método.
-
tokenURI
- Este método devuelve el URI de un token especificado. Cualquiera puede llamar a este método.
-
totalSupply
- Este método devuelve el número total de tokens acuñados. Este método solo puede ser llamado por un
Token Admin
del código de cadena. -
totalNetSupply
- Este método devuelve el número total de tokens acuñados menos el número de tokens quemados. Este método solo puede ser llamado por un
Token Admin
del código de cadena.
Métodos para la gestión de cuentas
-
createAccount
- Este método crea una cuenta para un usuario y token especificados. Se debe crear una cuenta para cualquier usuario que tenga tokens en cualquier momento. Las cuentas realizan un seguimiento del número de NFT que tiene un usuario. Los usuarios deben tener cuentas en la red para completar las operaciones relacionadas con los tokens. Solo puede crear una cuenta de NFT por usuario.
Un ID de cuenta es un juego alfanumérico de caracteres, con el prefijo
oaccount~
y seguido de un hash SHA-256 del ID de proveedor de servicios de miembros (orgId
) del usuario de la organización de red actual, el nombre de usuario o el ID de correo electrónico (userId
) del propietario de la instancia o del usuario conectado a la instancia, y la cadena constantenft
. Este método solo puede ser llamado por elToken Admin
del código de cadena. -
balanceOf
- Este método devuelve el número total de NFT que contiene un usuario especificado. Este método solo lo puede llamar un
Token Admin
del código de cadena o el propietario de la cuenta. -
getAllAccounts
- Este método devuelve una lista de todas las cuentas. Este método solo puede ser llamado por un
Token Admin
del código de cadena. Este método utiliza consultas enriquecidas de Berkeley DB SQL y solo se puede llamar cuando se conecta a la red remota de Oracle Blockchain Platform. -
getAccountByUser
- Este método devuelve los detalles de la cuenta de un usuario especificado. Este método solo puede ser llamado por un
Token Admin
del código de cadena o elAccount Owner
de la cuenta. -
getUserByAccountId
- Este método devuelve los detalles de usuario de una cuenta especificada. Este método puede ser llamado por cualquier usuario.
-
getAccountHistory
- Este método devuelve el historial de cuentas de un usuario especificado. Es un método asíncrono. Este método solo lo puede llamar el
Token Admin
del código de cadena o el propietario de la cuenta.
Métodos para la gestión de roles
-
addRole
- Este método agrega un rol a un usuario especificado. Este método solo puede ser llamado por un
Token Admin
del código de cadena. -
removeRole
- Este método elimina un rol de un usuario especificado. Este método solo puede ser llamado por un
Token Admin
del código de cadena. -
getAccountsByRole
- Este método devuelve una lista de todos los ID de cuenta para un rol especificado. Este método solo puede ser llamado por un
Token Admin
del código de cadena. -
getUsersByRole
- Este método devuelve una lista de todos los usuarios para un rol especificado. Este método solo puede ser llamado por un
Token Admin
del código de cadena. -
isInRole
- Este método devuelve un valor booleano para indicar si un usuario tiene un rol especificado. Este método solo puede ser llamado por un
Token Admin
del código de cadena o elAccount Owner
de la cuenta.
Métodos para la gestión del historial de transacciones
-
getAccountTransactionHistory
- Este método devuelve el historial de transacciones de la cuenta para un usuario especificado. Es un método asíncrono. Este método solo lo puede llamar el
Token Admin
del código de cadena o el propietario de la cuenta. -
getAccountTransactionHistoryWithFilters
- Este método devuelve el historial de transacciones de la cuenta para un usuario especificado, filtrado por
PageSize
,Bookmark
,startTime
yendTime
. Es un método asíncrono. Este método solo se puede llamar cuando está conectado a la red remota de Oracle Blockchain Platform. Este método solo lo puede llamar elToken Admin
del código de cadena o el propietario de la cuenta. -
getTransactionById
- Este método devuelve el historial de transacciones de un ID de transacción especificado. Es un método asíncrono. Este método solo lo puede llamar un
Token Admin
del código de cadena o el propietario de la cuenta. -
deleteHistoricalTransactions
- Este método suprime las transacciones anteriores a un registro de hora especificado en la base de datos de estado. Es un método asíncrono. Este método solo puede ser llamado por un
Token Admin
del código de cadena.
Métodos para la gestión del comportamiento del token: comportamiento minable
-
create<Token Name>Token
- Este método crea (minuta) una NFT. El activo y las propiedades asociadas se guardan en la base de datos de estado. El emisor de llamada de esta transacción debe tener una cuenta de token. El emisor de llamada de esta transacción se convierte en el propietario de la NFT. Si el archivo de especificación de token incluye la sección
roles
parabehaviors
y la propiedadminter_role_name
pararoles
, el emisor de llamada de la transacción debe tener el rol minter. De lo contrario, cualquier emisor de llamada puede acuñar NFT. -
update<Token Name>Token
- Este método actualiza las propiedades del token. Este método solo puede ser llamado por el usuario que es el propietario o creador del token. Después de crear un activo de token, solo el propietario del token puede actualizar las propiedades personalizadas del token. Si el usuario es propietario y creador de un token, también puede actualizar la propiedad
TokenDesc
. No se pueden actualizar los metadatos de token. Debe transferir todas las propiedades de token a este método, incluso si desea actualizar solo determinadas propiedades.
Métodos para la gestión del comportamiento del token - Comportamiento transferible
-
safeTransferFrom
- Se trata de una función asíncrona. Este método transfiere la propiedad de la NFT especificada de la persona que llama a otra cuenta. Este método incluye las siguientes validaciones:
- El token existe y no se quema.
- La cuenta de emisor y la cuenta de receptor existen y no son la misma cuenta.
- La cuenta del remitente es propietaria del token.
- El emisor de llamada de la función es el emisor.
-
transferFrom
- Se trata de una función asíncrona. Este método transfiere la propiedad de la NFT especificada de una cuenta de remitente a una cuenta de receptor. Es responsabilidad de la persona que llama pasar los parámetros correctos. Este método puede ser llamado por cualquier usuario, no solo por el propietario del token. Este método incluye las siguientes validaciones:
- El token existe y no se quema.
- La cuenta de emisor y la cuenta de receptor existen y no son la misma cuenta.
- La cuenta del remitente es propietaria del token.
Métodos para la Gestión del Comportamiento del Token - Comportamiento Quemable
-
burn
- Este método desactiva o quema el NFT especificado de la cuenta del emisor de llamada. El emisor de llamada de este método debe tener una cuenta. No se puede grabar un token a menos que el archivo de especificación de token incluya el comportamiento
burnable
. Si no se especifica ninguna propiedadburner_role_name
en la secciónroles
del archivo de especificación, el propietario del token puede grabar el token. Si se especifica una propiedadburner_role_name
en la secciónroles
, el usuario que ha asignado el rol de quemador que también es el minter (creador) o propietario del token puede grabar el token. -
burnNFT
- Este método desactiva o graba la NFT especificada de la cuenta del emisor de llamada y devuelve un objeto de token e historial de tokens. El emisor de llamada de este método debe tener una cuenta. No se puede grabar un token a menos que el archivo de especificación de token incluya el comportamiento
burnable
. Si no se especifica ninguna propiedadburner_role_name
en la secciónroles
del archivo de especificación, el propietario del token puede grabar el token. Si se especifica una propiedadburner_role_name
en la secciónroles
, el usuario que ha asignado el rol de quemador que también es el minter (creador) o propietario del token puede grabar el token.
Métodos personalizados
Puede utilizar los métodos SDK de token para escribir métodos personalizados para la aplicación de negocio.
En el siguiente ejemplo se muestra cómo utilizar métodos de SDK de token en métodos personalizados. Cuando se llama al método sell
, se publica un token para la venta a un precio especificado.
@Validator(yup.string(), yup.number())
public async sell(token_id: string, selling_price: number) {
try {
const token = await this.Ctx.ERC721Token.get(token_id);
const t = new ArtCollection(token)
/** * price is a custom asset
attribute to set the price of a non-fungible token in the
marketplace */
t.price = selling_price;
/** * on_sale_flag is a
custom asset attribute that maintains non-fungible token selling status in the
marketplace */
t.on_sale_flag = true;
await this.Ctx.ERC721Token.updateToken(t);
let msg = `Token ID : '${token_id}' has been posted for selling in the marketplace'`;
return {msg}
} catch(error) {
throw new Error(error.message);
}
}
Métodos de SDK de NFT
- Gestión del Control de Acceso
- Gestión de configuración de token
- Gestión de cuentas
- Gestión de Roles
- Gestión de historial de transacciones
- Gestión de comportamiento de token
Métodos de Gestión de Control de Acceso
Token Admin
o Account Owner
del token. Puede utilizar esta función para asegurarse de que las operaciones sólo las realizan los usuarios previstos. Cualquier acceso no autorizado genera un error. Para utilizar la función de control de acceso, importe la clase Authorization
desde el módulo ../lib/erc721-auth
.import { ERC721Authorization } from '../lib/erc721-auth';
-
addAdmin
- Este método agrega un usuario como
Token Admin
del código de cadena de token. -
removeAdmin
- Este método elimina un usuario como
Token Admin
del código de cadena de token. -
isUserTokenAdmin
- Este método devuelve el valor booleano
true
si el emisor de llamada de la función es unToken Admin
. De lo contrario, el método devuelvefalse
. Se trata de una función estática asíncrona. -
getAllAdmins
- Este método devuelve una lista de todos los usuarios
Token Admin
. -
checkAuthorization
- Utilice este método para agregar una comprobación de control de acceso a una operación. Se trata de una función asíncrona. La mayoría de los métodos generados automáticamente incluyen el control de acceso. Algunos métodos de token solo pueden ser ejecutados por
ERC721Admin
oAccount Owner
del token o porMultipleAccountOwner
para los usuarios con varias cuentas. El métodocheckAuthorization
forma parte de la claseAuthorization
, a la que se accede mediante el objetoCtx
. La asignación de control de acceso se describe en el archivo../lib/constant.ts
, como se muestra en el siguiente texto. Puede modificar el control de acceso editando el archivo../lib/constant.ts
. Para usar su propio control de acceso o desactivar el control de acceso, elimine el código de control de acceso de los métodos de controlador y métodos personalizados generados automáticamente.export const TOKENACCESS = { ADMIN: { isUserTokenAdmin: ['Admin', 'MultipleAccountOwner'], addAdmin: ['Admin'], removeAdmin: ['Admin'], getAllAdmins: ['Admin'], }, TOKEN: { save: ['Admin'], getAllTokens: ['Admin'], get: ['Admin'], update: ['Admin'], getDecimals: ['Admin'], getTokensByName: ['Admin'], addRoleMember: ['Admin'], removeRoleMember: ['Admin'], isInRole: ['Admin', 'AccountOwner'], getTotalMintedTokens: ['Admin'], getNetTokens: ['Admin'], }, ROLE: { getAccountsByRole: ['Admin'], getUsersByRole: ['Admin'], }, TRANSACTION: { deleteTransactions: ['Admin'], }, ACCOUNT: { createAccount: ['Admin'], getAllAccounts: ['Admin'], getAccountsByUser: ['Admin', 'MultipleAccountOwner'], getAccount: ['Admin', 'AccountOwner'], history: ['Admin', 'AccountOwner'], getAccountTransactionHistory: ['Admin', 'AccountOwner'], getAccountBalance: ['Admin', 'AccountOwner'], getAccountOnHoldBalance: ['Admin', 'AccountOwner'], getOnHoldIds: ['Admin', 'AccountOwner'], }, ERC721ADMIN: { isUserTokenAdmin: ['Admin'], addAdmin: ['Admin'], removeAdmin: ['Admin'], getAllAdmins: ['Admin'], }, ERC721TOKEN: { getAllTokens: ['Admin'], getAllTokensByUser: ['Admin', 'AccountOwner'], get: ['Admin', TOKEN_OWNER], getTokensByName: ['Admin'], addRoleMember: ['Admin'], removeRoleMember: ['Admin'], isInRole: ['Admin', 'AccountOwner'], totalSupply: ['Admin'], totalNetSupply: ['Admin'], history: ['Admin'], }, ERC721ROLE: { getAccountsByRole: ['Admin'], getUsersByRole: ['Admin'], }, ERC721TRANSACTION: { deleteTransactions: ['Admin'], }, ERC721ACCOUNT: { createAccount: ['Admin'], getAllAccounts: ['Admin'], getAccountsByUser: ['Admin', 'MultipleAccountOwner'], history: ['Admin', 'AccountOwner'], getAccountTransactionHistory: ['Admin', 'AccountOwner'], getAccountTransactionHistoryWithFilters: ['Admin', 'AccountOwner'], balanceOf: ['Admin', 'MultipleAccountOwner'], } }
Métodos para la Gestión de Configuración de Token
Los métodos de gestión de la configuración de tokens se basan en el estándar ERC-721. Para utilizar los métodos de gestión de configuración de token, importe la clase Token
del módulo ../lib/erc721-token
.
-
createToken
- Este método crea un token y guarda sus propiedades en la base de datos de estado. Este método solo lo pueden llamar los usuarios con el rol minter. Se trata de una función asíncrona.
-
getAllTokens
- Este método devuelve todos los activos de token que se guardan en la base de datos de estado. Este método utiliza consultas enriquecidas de Berkeley DB SQL y solo se puede llamar cuando se conecta a la red remota de Oracle Blockchain Platform. Se trata de una función estática asíncrona.
-
getAllTokensByUser
- Este método devuelve todos los tokens que son propiedad de un ID de cuenta especificado. Se trata de una función estática asíncrona.
-
getTokenUri
- Este método devuelve el URI para un token especificado. Se trata de una función estática asíncrona.
-
history
- Este método devuelve el historial para el token especificado. Se trata de una función estática asíncrona.
-
get
- Este método devuelve el objeto de token especificado si está presente en la base de datos de estado. Se trata de una función estática asíncrona.
-
ownerOf
- Este método devuelve el ID de cuenta del propietario de un token especificado. Se trata de una función estática asíncrona.
-
symbol
- Este método devuelve el símbolo de la clase de token.
-
tokenUri
- Este método devuelve el URI para un token especificado. Se trata de una función estática asíncrona.
-
totalSupply
- Este método devuelve el número total de NFT acuñadas. Se trata de una función asíncrona.
-
updateToken
- Este método actualiza las propiedades del token. Este método solo puede ser llamado por el propietario o creador del token. Después de crear un activo de token, solo el propietario del token puede actualizar las propiedades personalizadas del token. Si el usuario es propietario y creador de un token, también puede actualizar la propiedad
TokenDesc
. No se pueden actualizar los metadatos de token. Debe transferir todas las propiedades de token a este método, incluso si desea actualizar solo determinadas propiedades. Se trata de una función asíncrona. -
getByRange
- Este método llama al método
getStateByRange
del tejido internamente. Aunque cualquier activo con el ID determinado se devuelva desde la contabilidad, este método convierte el activo en el tipo de activo emisor de llamada. Se trata de una función estática asíncrona.@validator(yup.string(), yup.string()) public async getDigiCurrGetByRange(startId: string, endId: string) { return await this.Ctx.ERC721TOken.getByRange(startId, endId, PaintingNft); }
-
isTokenType
- Este método indica si existe un activo de token con el ID especificado. Se trata de una función estática asíncrona.
Métodos para la gestión de cuentas
-
generateAccountId
- Este método devuelve un ID de cuenta, formado por la concatenación del ID de proveedor de servicios de miembros (
orgId
) y el nombre de usuario o el ID de correo electrónico (userId
) y, a continuación, la creación de un hash SHA-256. -
createAccount
- Este método crea una cuenta para un usuario y token especificados. Se debe crear una cuenta para cualquier usuario que tenga tokens en cualquier momento. Las cuentas realizan un seguimiento del número de NFT que tiene un usuario. Los usuarios deben tener cuentas en la red para completar las operaciones relacionadas con los tokens. Solo puede crear una cuenta de NFT por usuario.
Un ID de cuenta es un juego alfanumérico de caracteres, con el prefijo
oaccount~
y seguido de un hash SHA-256 del ID de proveedor de servicios de miembros (orgId
) del usuario de la organización de red actual, el nombre de usuario o el ID de correo electrónico (userId
) del propietario de la instancia o del usuario conectado a la instancia, y la cadena constantenft
. Este método solo puede ser llamado por elToken Admin
del código de cadena. -
balanceOf
- Este método devuelve el número total de NFT que contiene el usuario especificado.
-
getAllAccounts
- Este método devuelve una lista de todas las cuentas. Este método utiliza consultas enriquecidas de Berkeley DB SQL y solo se puede llamar cuando se conecta a la red remota de Oracle Blockchain Platform.
-
getAccountByUser
- Este método devuelve los detalles de usuario de una cuenta especificada. Este método solo puede ser llamado por un
Token Admin
del código de cadena o elAccount Owner
de la cuenta. -
getUserByAccountId
- Este método devuelve los detalles de usuario de una cuenta especificada.
-
history
- Este método devuelve una matriz de los detalles del historial de cuentas para una cuenta especificada.
-
getAccountWithStatusByUser
- Este método devuelve los detalles de usuario de una cuenta especificada, incluido el estado de la cuenta. Este método solo puede ser llamado por un
Token Admin
del código de cadena o elAccount Owner
de la cuenta.
Métodos para la gestión de roles
-
addRoleMember
- Este método agrega un rol a un usuario y token especificados. Un ID de cuenta se forma creando un hash SHA-256 del ID de proveedor de servicios de afiliación concatenado (
orgId
) y el nombre de usuario o el ID de correo electrónico (userId
). Se trata de una función asíncrona. -
removeRoleMember
- Este método elimina un rol de un usuario y token especificados. Un ID de cuenta se forma creando un hash SHA-256 del ID de proveedor de servicios de afiliación concatenado (
orgId
) y el nombre de usuario o el ID de correo electrónico (userId
). Se trata de una función asíncrona. -
getAccountsByRole
- Este método devuelve una lista de todos los ID de cuenta para un rol especificado.
-
getUsersByRole
- Este método devuelve una lista de todos los usuarios para un rol especificado.
-
isInRole
- Este método devuelve un valor booleano para indicar si un usuario y un token tienen un rol especificado. Un ID de cuenta se forma creando un hash SHA-256 del ID de proveedor de servicios de afiliación concatenado (
orgId
) y el nombre de usuario o el ID de correo electrónico (userId
). Se trata de una función asíncrona.
Métodos para la gestión del historial de transacciones
-
getAccountTransactionHistory
- Este método devuelve una matriz de los detalles del historial de transacciones de una cuenta especificada.
-
getAccountTransactionHistoryWithFilters
- Este método devuelve el historial de transacciones de la cuenta para un usuario especificado, filtrado por
PageSize
,Bookmark
,startTime
yendTime
. Este método solo se puede llamar cuando está conectado a la red remota de Oracle Blockchain Platform. -
getTransactionById
- Este método devuelve el historial de un activo
Transaction
. -
deleteHistoricalTransactions
- Este método suprime las transacciones que son anteriores a una fecha especificada de la base de datos de estado.
Gestión de comportamiento de token - Comportamiento minable
-
getMaxMintQuantity
- Este método devuelve la cantidad mínima máxima de un token. Si el comportamiento
max_mint_quantity
no está configurado en el archivo de especificación, el valor por defecto es 0 y se puede extraer un número infinito de tokens. -
getTotalMintedTokens
- Este método devuelve el número total de tokens acuñados disponibles en el sistema para el token especificado. El número neto de tokens disponibles es el número total de tokens acuñados menos el número de tokens quemados. Se trata de una función asíncrona.
Gestión de comportamiento de token - Comportamiento transferible
-
safeTransferFrom
- Se trata de una función asíncrona. Este método transfiere la propiedad de la NFT especificada de la persona que llama a otra cuenta. Este método incluye las siguientes validaciones:
- El token existe y no se quema.
- La cuenta de emisor y la cuenta de receptor existen y no son la misma cuenta.
- La cuenta del remitente es propietaria del token.
- El emisor de llamada de la función es el emisor.
-
transferFrom
- Se trata de una función asíncrona. Este método transfiere la propiedad de la NFT especificada de una cuenta de remitente a una cuenta de receptor. Es responsabilidad de la persona que llama pasar los parámetros correctos. Este método puede ser llamado por cualquier usuario, no solo por el propietario del token. Este método incluye las siguientes validaciones:
- El token existe y no se quema.
- La cuenta de emisor y la cuenta de receptor existen y no son la misma cuenta.
- La cuenta del remitente es propietaria del token.
Gestión de comportamiento de token - Comportamiento que se puede grabar
-
burn
- Este método desactiva o quema el NFT especificado de la cuenta del emisor de llamada. El emisor de llamada de este método debe tener una cuenta. No se puede grabar un token a menos que el archivo de especificación de token incluya el comportamiento
burnable
. Si no se especifica ninguna propiedadburner_role_name
en la secciónroles
del archivo de especificación, el propietario del token puede grabar el token. Si se especifica una propiedadburner_role_name
en la secciónroles
, el usuario que ha asignado el rol de quemador, que también es el creador del token, puede grabar el token. Se trata de una función asíncrona.