Andamio TypeScript Proyecto NFT para ERC-721
Blockchain App Builder toma la entrada de su archivo de especificación NFT y genera un proyecto de código de cadenas de andamios 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 de andamios y los métodos que no están directamente relacionados con 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 de SDK de token para escribir métodos personalizados para la aplicación de negocio.
Métodos NFT generados automáticamente
Blockchain App Builder genera automáticamente métodos para soportar los ciclos de vida de NFT y 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)
para 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 del historial de transacciones
- Gestión del comportamiento de los tokens
Métodos para la gestión del control de acceso
-
addTokenAdmin
- Este método agrega un usuario como
Token Admin
del código de cadenas. 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 cadenas. 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 de 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 cadenas. 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 crea una instancia del 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 que está conectado a la instancia.orgId
es el ID de proveedor de servicios de miembros (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 va a actualizar el código de cadenas, pase una lista vacía ([]
). Cualquier otra información del 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 SQL de base de datos de Berkeley 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 SQL de base de datos de Berkeley y solo se puede llamar cuando se conecta a la red remota de Oracle Blockchain Platform. Este método solo puede ser llamado por un
Token Admin
del código de cadenas o por 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 ID de token especificado. Se trata de 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
- Se trata de 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 el caso de cambio con la clase
Token
correspondiente para devolver el objeto de token correcto. El comandoochain sync
del creador de aplicaciones de blockchain crea automáticamente un caso de cambio cuando se crea un activo tokenizado en el archivo de especificación. Este método no tiene ningún decorador de método@Validator()
, lo que significa que este método no es directamente invocable 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 minados 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 el token. 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 en 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 que está 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 transacciones de financiación de valores que tiene un usuario especificado. Este método solo puede ser llamado por un
Token Admin
del código de cadenas o por 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 SQL de base de datos de Berkeley y solo se puede llamar cuando se conecta a la red remota de Oracle Blockchain Platform. -
getAccountByUser
- Este método devuelve los detalles de 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. Cualquier usuario puede llamar a este método.
-
getAccountHistory
- Este método devuelve el historial de cuentas de un usuario especificado. Se trata de un método asíncrono. Este método solo puede ser llamado por el
Token Admin
del código de cadenas o por 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. Se trata de un método asíncrono. Este método solo puede ser llamado por el
Token Admin
del código de cadenas o por el propietario de la cuenta. -
getAccountTransactionHistoryWithFilters
- Este método devuelve el historial de transacciones de cuentas para un usuario especificado, filtrado por
PageSize
,Bookmark
,startTime
yendTime
. Se trata de 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 puede ser llamado por elToken Admin
del código de cadenas o por el propietario de la cuenta. -
getTransactionById
- Este método devuelve el historial de transacciones para un ID de transacción especificado. Se trata de un método asíncrono. Este método solo puede ser llamado por un
Token Admin
del código de cadenas o por 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. Se trata de 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 de los tokens: comportamiento de Mintable
-
create<Token Name>Token
- Este método crea (mintiza) una NFT. El activo y las propiedades asociadas se guardan en la base de datos de estado. El emisor de esta transacción debe tener una cuenta de token. El emisor 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 la 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 del token 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 de los tokens: comportamiento transferible
-
safeTransferFrom
- Esta es una función asíncrona. Este método transfiere la propiedad de la NFT especificada del emisor de la llamada a otra cuenta. Este método incluye las siguientes validaciones:
- El token existe y no se ha quemado.
- La cuenta del remitente y la cuenta del receptor existen y no son la misma cuenta.
- La cuenta del remitente es propietaria del token.
- El emisor de la llamada de la función es el remitente.
-
transferFrom
- Esta es 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. Cualquier usuario puede llamar a este método, no solo al propietario del token. Este método incluye las siguientes validaciones:
- El token existe y no se ha quemado.
- La cuenta del remitente y la cuenta del receptor existen y no son la misma cuenta.
- La cuenta del remitente es propietaria del token.
Métodos para la gestión del comportamiento de los tokens: comportamiento que se puede quemar
-
burn
- Este método desactiva o quema la NFT especificada de la cuenta del emisor de la llamada. El emisor de la llamada de este método debe tener una cuenta. Un token no se puede quemar 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 asignado al rol de quemador que también es el minter (creador) o el propietario del token puede grabar el token. -
burnNFT
- Este método desactiva o graba la NFT especificada de la cuenta del emisor de la llamada y devuelve un objeto de token y un historial de tokens. El emisor de la llamada de este método debe tener una cuenta. Un token no se puede quemar 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 asignado al rol de quemador que también es el minter (creador) o el propietario del token puede grabar el token.
Métodos personalizados
Puede utilizar los métodos de 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
, publica un token para la venta por 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 del historial de transacciones
- Gestión del comportamiento de los tokens
Métodos para la gestión del control de acceso
Token Admin
o Account Owner
del token. Puede utilizar esta función para asegurarse de que las operaciones solo las realizan los usuarios deseados. Cualquier acceso no autorizado genera un error. Para utilizar la función de control de acceso, importe la clase Authorization
del módulo ../lib/erc721-auth
.import { ERC721Authorization } from '../lib/erc721-auth';
-
checkAuthorization
- Utilice este método para agregar una comprobación de control de acceso a una operación. Esta es 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 los puede ejecutar
ERC721Admin
oAccount Owner
del token oMultipleAccountOwner
para 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 utilizar su propio control de acceso o para desactivar el control de acceso, elimine el código de control de acceso de los métodos de controlador generados automáticamente y los métodos personalizados.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'], } }
-
isUserTokenAdmin
- Este método devuelve el valor booleano
true
si el emisor de llamada de la función esToken Admin
. De lo contrario, el método devuelvefalse
. Se trata de una función estática asíncrona. -
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. -
getAllAdmins
- Este método devuelve una lista de todos los usuarios
Token Admin
.
Métodos para la gestión de configuración de token
Los métodos de gestión de configuración de token 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
.
-
totalSupply
- Este método devuelve el número total de NFT acuñadas. Esta es una función 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.
-
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.
-
createToken
- Este método crea un token y guarda sus propiedades en la base de datos de estado. Sólo los usuarios con el rol minter pueden llamar a este método. Esta es 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 del token 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. Esta es una función asíncrona. -
getByRange
- Este método llama internamente al método
getStateByRange
del tejido. Aunque el libro mayor devuelva cualquier activo con el ID especificado, este método convierte el activo en el tipo de activo de 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); }
-
history
- Este método devuelve el historial para el token especificado. Se trata de una función estática 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 SQL de base de datos de Berkeley 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.
-
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.
-
tokenUri
- Este método devuelve el URI de un token especificado. Se trata de una función estática asíncrona.
-
getTokenUri
- Este método devuelve el URI 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.
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 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 el token. 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 en 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 que está conectado a la instancia y la cadena constantenft
. Este método solo puede ser llamado por elToken Admin
del código de cadena. -
getAllAccounts
- Este método devuelve una lista de todas las cuentas. Este método utiliza consultas enriquecidas de SQL de base de datos de Berkeley y solo se puede llamar cuando se conecta a la red remota de Oracle Blockchain Platform.
-
history
- Este método devuelve una matriz de los detalles del historial de cuentas para una cuenta especificada.
-
getUserByAccountId
- Este método devuelve los detalles de usuario de 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. -
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. -
balanceOf
- Este método devuelve el número total de transacciones de financiación de valores que tiene el usuario especificado.
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 mediante la creación de un hash SHA-256 del ID de proveedor de servicios de miembros concatenado (
orgId
) y el nombre de usuario o ID de correo electrónico (userId
). Esta es una función asíncrona. -
removeRoleMember
- Este método elimina un rol de un usuario y token especificados. Un ID de cuenta se forma mediante la creación de un hash SHA-256 del ID de proveedor de servicios de miembros concatenado (
orgId
) y el nombre de usuario o ID de correo electrónico (userId
). Esta es una función asíncrona. -
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 mediante la creación de un hash SHA-256 del ID de proveedor de servicios de miembros concatenado (
orgId
) y el nombre de usuario o ID de correo electrónico (userId
). Esta es 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.
Métodos para la gestión del historial de transacciones
-
getAccountTransactionHistory
- Este método devuelve una matriz de los detalles del historial de transacciones para una cuenta especificada.
-
getAccountTransactionHistoryWithFilters
- Este método devuelve el historial de transacciones de cuentas 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 anteriores a una fecha especificada de la base de datos de estado.
Gestión del comportamiento de los tokens: comportamiento de Mintable
-
getMaxMintQuantity
- Este método devuelve la cantidad máxima mínima 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 minar un número infinito de tokens. -
getTotalMintedTokens
- Este método devuelve el número total minado de tokens disponibles en el sistema para el token especificado. El número neto de tokens disponibles es el número total de tokens minados menos el número de tokens quemados. Esta es una función asíncrona.
Gestión del comportamiento de los tokens: comportamiento transferible
-
safeTransferFrom
- Esta es una función asíncrona. Este método transfiere la propiedad de la NFT especificada del emisor de la llamada a otra cuenta. Este método incluye las siguientes validaciones:
- El token existe y no se ha quemado.
- La cuenta del remitente y la cuenta del receptor existen y no son la misma cuenta.
- La cuenta del remitente es propietaria del token.
- El emisor de la llamada de la función es el remitente.
-
transferFrom
- Esta es 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. Cualquier usuario puede llamar a este método, no solo al propietario del token. Este método incluye las siguientes validaciones:
- El token existe y no se ha quemado.
- La cuenta del remitente y la cuenta del receptor existen y no son la misma cuenta.
- La cuenta del remitente es propietaria del token.
Gestión del comportamiento de los tokens: comportamiento que se puede quemar
-
burn
- Este método desactiva o quema la NFT especificada de la cuenta del emisor de la llamada. El emisor de la llamada de este método debe tener una cuenta. Un token no se puede quemar 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 asignado al rol de quemador que también es el minter (creador) del token puede grabar el token. Esta es una función asíncrona.