Versión previa a Disponibilidad General: 2026-02-26

API de contratos inteligentes de Solidary

Oracle Blockchain Platform Enterprise Edition para Hyperledger Besu proporciona métodos de Solidity que puede utilizar para trabajar con contratos inteligentes de Solidity.

La API admite tokens según el estándar ERC-20 y el estándar ERC-1155. Las implementaciones de ERC-20 y ERC-1155 incluyen un contrato inteligente de cuenta y un contrato inteligente de token. El contrato inteligente de cuenta proporciona métodos de control de identidad y acceso. El contrato inteligente de tokens proporciona funciones específicamente relacionadas con tokens.

ERC-20 Métodos de contrato de cuenta

Métodos para la gestión de cuentas

createAccount
Este método crea una cuenta para un usuario especificado. Las cuentas realizan un seguimiento del saldo de token de un usuario y del saldo retenido, y se deben crear para todos los usuarios que tendrán tokens en cualquier momento. Este método solo lo puede llamar un Token Admin o un Org Admin de la organización especificada.
Parámetros:
  • userId: string: nombre de usuario o ID de correo electrónico del usuario. La cadena de ID de usuario no puede estar vacía.
  • orgId: string: ID del proveedor de servicios de afiliación (MSP) del usuario de la organización actual. El ID de organización no puede estar vacío.
  • userAddress: address: dirección de cartera del usuario. La dirección no puede ser cero.
  • maxDailyAmount: int256: cantidad máxima de tokens que se pueden utilizar en transacciones diariamente. Si maxDailyAmount es -1, no hay límite.
  • maxDailyTransactions: int256: número máximo de transacciones que se pueden completar diariamente. Si maxDailyTransactions es -1, no hay límite.
deleteAccount
Este método suprime la cuenta de un usuario especificado. Una cuenta solo se puede suprimir si el saldo del token es cero. Este método solo lo puede llamar un Token Admin o un Org Admin de la organización especificada.
Parámetros:
  • userAddress: address: dirección de cartera del usuario. La dirección no puede ser cero.
getAccountStatus
Este método obtiene el estado actual de la cuenta especificada. Este método solo puede ser llamado por un Token Admin, Token Auditor, Org Admin de la organización especificada o por el usuario especificado.
Parámetros:
  • userAddress: address: dirección de cartera del usuario. La dirección no puede ser cero.
Devuelve:
  • Un valor para el objeto enum AccountStatus, 0, 1 o 2.
    enum AccountStatus {
    active,
    suspended,
    deleted
    }
getAccountByAddress
Este método obtiene la información de cuenta de un usuario especificado. Este método solo puede ser llamado por un Token Admin, Token Auditor, Org Admin de la organización especificada o por el usuario especificado.
Parámetros:
  • userAddress: address: dirección de cartera del usuario. La dirección no puede ser cero.
Ejemplo de valor devuelto:
{
    "userId": "userA",
    "orgId": "orgA",
	"accountAddress": "0x0fbdc686b912d7722dc86510934589e0aaf3b55a",
    "dailyLimits": {
          "isMaxDailyTxnEnabled": true,
    	  "isMaxDailyAmtEnabled": true, 
		  "dailyAmount": 100,
    	  "dailyTransactions": 5,
		  "maxDailyAmount": 100000,
    	  "maxDailyTransactions": 50           
	},
	"status":0
}
getAllAccounts
Este método obtiene la información de cuenta de todas las cuentas que se encuentran en un rango especificado. Este método solo se puede llamar mediante Token Admin o Token Auditor.
Parámetros:
  • offset: uint256: índice de compensación del que se obtienen las cuentas.
  • limit: uint256: número de elementos que recuperar.
Ejemplo de valor devuelto:
Return (UserAccount[] memory items, uint256 total, uint256 nextOffset)
[{
    "userId": "userA",
    "orgId": "orgA",
	"accountAddress": "0x0fbdc686b912d7722dc86510934589e0aaf3b55a",
    "dailyLimits": {
          "isMaxDailyTxnEnabled": true,
    	  "isMaxDailyAmtEnabled": true, 
		  "dailyAmount": 100,
    	  "dailyTransactions": 5,
		  "maxDailyAmount": 100000,
    	  "maxDailyTransactions": 50           
	},
	"status":0
}]
total: 15
nextoffset: 6
activateAccount
Este método activa una cuenta de usuario. Este método solo puede ser llamado por un Token Admin o Org Admin de la organización especificada.
Parámetros:
  • userAddress: address: dirección de cartera del usuario. La dirección no puede ser cero.
suspendAccount
Este método suspende una cuenta de usuario. Para eliminar una cuenta, el saldo de la cuenta debe ser cero. Este método solo puede ser llamado por un Token Admin o Org Admin de la organización especificada.
Parámetros:
  • userAddress: address: dirección de cartera del usuario. La dirección no puede ser cero.
setMaxDailyAmount
Este método define la cantidad máxima de tokens que se pueden usar en transacciones diariamente. Este método solo puede ser llamado por un Token Admin o Org Admin de la organización especificada.
Parámetros:
  • count: int256: cantidad máxima de tokens que se pueden utilizar en transacciones diariamente.
  • userAddress: address: dirección de cartera del usuario. La dirección no puede ser cero.
setMaxDailyTransactionCount
Este método define el número máximo de transacciones que se pueden completar diariamente. Este método solo puede ser llamado por un Token Admin o Org Admin de la organización especificada.
Parámetros:
  • value: int256: número máximo de transacciones que se pueden completar diariamente.
  • userAddress: address: dirección de cartera del usuario. La dirección no puede ser cero.

Métodos para la gestión de administradores

addTokenAdmin
Este método agrega un usuario como Token Admin. Este método solo se puede llamar mediante Token Admin.
Parámetros:
  • adminDetails: JSON: objeto que contiene detalles sobre el usuario que se va a agregar como Token Admin, como se muestra en el siguiente ejemplo.
    {
        "userId": "tokenAdmin1",
        "orgId": "orgA",
    	"accountAddress": "0x0fbdc686b912d7722dc86510934589e0aaf3b55a"    
    }
removeTokenAdmin
Este método elimina un usuario como Token Admin. Este método solo se puede llamar mediante Token Admin.
Parámetros:
  • userAddress: address: dirección de cartera del usuario. La dirección no puede ser cero.
getAllTokenAdmins
Este método devuelve una lista de todos los usuarios que son Token Admin. Este método solo puede ser llamado por Token Admin o Token Auditor.
Parámetros:
  • ninguno
Ejemplo de valor devuelto:
[{
    "userId": "tokenadmin1",
    "orgId": "orgA",
	"accountAddress": "0x0fbdc686b912d7722dc86510934589e0aaf3b55a"
},
{
    "userId": "tokenadmin2",
    "orgId": "orgB",
	"accountAddress": "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73"
}]
isTokenAdmin
Este método comprueba si el usuario especificado es un Token Admin. Este método solo se puede llamar mediante Token Admin, Token Auditor, Org Admin o Org Auditor.
Parámetros:
  • userAddress: address: dirección de cartera del usuario. La dirección no puede ser cero.
Devuelve:
  • El método devuelve true si el usuario especificado es Token Admin; de lo contrario, devuelve false.
addOrgAdmin
Este método agrega un usuario como Org Admin. Este método solo puede ser llamado por un Token Admin o Org Admin de la organización especificada.
Parámetros:
  • adminDetails: JSON: objeto que contiene detalles sobre el usuario que se va a agregar como Org Admin, como se muestra en el siguiente ejemplo.
    {
        "userId": "tokenAdmin1",
        "orgId": "orgA",
    	"accountAddress": "0x0fbdc686b912d7722dc86510934589e0aaf3b55a"    
    }
removeOrgAdmin
Este método elimina un usuario como Org Admin. Este método solo puede ser llamado por un Token Admin o Org Admin de la organización especificada.
Parámetros:
  • userAddress: address: dirección de cartera del usuario. La dirección no puede ser cero.
getAllOrgAdmins
Este método devuelve una lista de todos los usuarios que son Org Admin. Este método solo puede ser llamado por Token Admin, Token Auditor, Org Admin o Org Auditor.
Parámetros:
  • ninguno
Ejemplo de valor devuelto:
[{
    "userId": "orgadmin1",
    "orgId": "orgA",
	"accountAddress": "0x0fbdc686b912d7722dc86510934589e0aaf3b55a"
},
{
    "userId": "orgadmin2",
    "orgId": "orgB",
	"accountAddress": "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73"
}]
isOrgAdmin
Este método comprueba si el usuario especificado es un Org Admin. Este método solo se puede llamar mediante Token Admin, Token Auditor, Org Admin o Org Auditor.
Parámetros:
  • userAddress: address: dirección de cartera del usuario. La dirección no puede ser cero.
Devuelve:
  • El método devuelve true si el usuario especificado es Org Admin; de lo contrario, devuelve false.

Métodos para la gestión de auditor

addTokenAuditor
Este método agrega un usuario como Token Auditor. Este método solo se puede llamar mediante Token Admin.
Parámetros:
  • adminDetails: JSON: objeto que contiene detalles sobre el usuario que se va a agregar como Token Auditor, como se muestra en el siguiente ejemplo.
    {
        "userId": "tokenAuditor1",
        "orgId": "orgA",
    	"accountAddress": "0x0fbdc686b912d7722dc86510934589e0aaf3b55a"    
    }
removeTokenAuditor
Este método elimina un usuario como Token Auditor. Este método solo se puede llamar mediante Token Admin.
Parámetros:
  • userAddress: address: dirección de cartera del usuario. La dirección no puede ser cero.
getAllTokenAuditors
Este método devuelve una lista de todos los usuarios que son Token Auditor. Este método solo puede ser llamado por Token Admin o Token Auditor.
Parámetros:
  • ninguno
Ejemplo de valor devuelto:
[{
    "userId": "tokenAuditor1",
    "orgId": "orgA",
	"accountAddress": "0x0fbdc686b912d7722dc86510934589e0aaf3b55a"
},
{
    "userId": "tokenAuditor2",
    "orgId": "orgB",
	"accountAddress": "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73"
}]
isTokenAuditor
Este método comprueba si el usuario especificado es un Token Auditor. Este método puede ser llamado por cualquier usuario.
Parámetros:
  • userAddress: address: dirección de cartera del usuario. La dirección no puede ser cero.
Devuelve:
  • El método devuelve true si el usuario especificado es Token Auditor; de lo contrario, devuelve false.
addOrgAuditor
Este método agrega un usuario como Org Auditor. Este método solo puede ser llamado por un Token Admin o Org Admin de la organización especificada.
Parámetros:
  • adminDetails: JSON: objeto que contiene detalles sobre el usuario que se va a agregar como Org Auditor, como se muestra en el siguiente ejemplo.
    {
        "userId": "tokenAuditor1",
        "orgId": "orgA",
    	"accountAddress": "0x0fbdc686b912d7722dc86510934589e0aaf3b55a"    
    }
removeOrgAuditor
Este método elimina un usuario como Org Auditor. Este método solo puede ser llamado por un Token Admin o Org Admin de la organización especificada.
Parámetros:
  • userAddress: address: dirección de cartera del usuario. La dirección no puede ser cero.
getAllOrgAuditors
Este método devuelve una lista de todos los usuarios que son Org Auditor. Este método solo puede ser llamado por Token Admin, Token Auditor, Org Admin o Org Auditor.
Parámetros:
  • ninguno
Ejemplo de valor devuelto:
[{
    "userId": "orgAuditor1",
    "orgId": "orgA",
	"accountAddress": "0x0fbdc686b912d7722dc86510934589e0aaf3b55a"
},
{
    "userId": "orgAuditor2",
    "orgId": "orgB",
	"accountAddress": "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73"
}]
isOrgAuditor
Este método comprueba si el usuario especificado es un Org Auditor. Este método puede ser llamado por cualquier usuario.
Parámetros:
  • userAddress: address: dirección de cartera del usuario. La dirección no puede ser cero.
Devuelve:
  • El método devuelve true si el usuario especificado es Org Auditor; de lo contrario, devuelve false.

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 o Org Admin de la organización especificada.
Parámetros:
  • userAddress: address: dirección de cartera del usuario. La dirección no puede ser cero.
  • role: string: nombre del rol que se va a agregar al usuario especificado. Por ejemplo, minter, burner o notary.
removeRole
Este método elimina un rol de un usuario especificado. Este método solo puede ser llamado por un Token Admin o Org Admin de la organización especificada.
Parámetros:
  • userAddress: address: dirección de cartera del usuario. La dirección no puede ser cero.
  • role: string: nombre del rol que se va a eliminar del usuario especificado. Por ejemplo, minter, burner o notary.
accountHasRole
Este método comprueba si un usuario tiene un rol especificado. Este método puede ser llamado por cualquier usuario.
Parámetros:
  • role: string: hash Keccak-256 del nombre del rol (minter, burner o notary) que desea buscar.
  • userAddress: address: dirección de cartera del usuario. La dirección no puede ser cero.
Devuelve:
  • El método devuelve true si el usuario tiene el rol especificado; de lo contrario, devuelve false.

Métodos de contrato de token ERC-20

Métodos para la Gestión de Configuración de Token

__ERC20Token_init
Este método se llama cuando se despliega el contrato de token. Este método solo se puede llamar mediante Token Admin.
Parámetros:
  • name: string: nombre del token.
  • symbol: string: símbolo del token.
  • accountContract: address – La dirección del contrato de cuenta.
initializeERC20Token
Este método inicializa un token ERC-20. Este método solo se puede llamar mediante Token Admin.
Parámetros:
  • token: JSON: objeto que define el token, como se muestra en el siguiente ejemplo.
    {
        "tokenId": "WCBDC-100",
        "tokenName": "wholesale cbdc",
        "tokenDesc": "this is wcbdc contract",
        "tokenStandard": "ttf+",
        "tokenType": "fungible",
        "tokenUnit": "fractional",
        "behaviors": ["mintable", "burnable", "transferable", "roles", "holdable", "pausable"],
        "decimals": 2,
        "mintable": { "maxMintQuantity": 1000000, "mintApprovalRequired": false },
        "burnable": { "burnApprovalRequired": false }
    }
getToken
Este método obtiene detalles para un token. Este método solo se puede llamar mediante Token Admin, Token Auditor, Org Admin o Org Auditor.
Parámetros:
  • ninguno
Ejemplo de valor devuelto:
{
    "tokenId": "WCBDC-100",
    "tokenName": "wholesale cbdc",
    "tokenDesc": "this is wcbdc contract",
    "tokenStandard": "ttf+",
    "tokenType": "fungible",
    "tokenUnit": "fractional",
    "behaviors": ["mintable", "burnable", "transferable", "roles", "holdable", "pausable"],
    "decimals": 2,
    "mintable": { "maxMintQuantity": 1000000, "mintApprovalRequired": false },
    "burnable": { "burnApprovalRequired": false }
}
decimals
Este método obtiene el valor decimal para un token. Este método solo se puede llamar mediante Token Admin, Token Auditor, Org Admin o Org Auditor.
Parámetros:
  • ninguno
Devuelve
  • Un valor uint8 del número de posiciones decimales.
__ERC20Token_init
Este método se llama cuando se despliega el contrato de token. Este método solo se puede llamar mediante Token Admin.
Parámetros:
  • name: string: nombre del token.
  • symbol: string: símbolo del token.
  • accountContract: address – La dirección del contrato de cuenta.
initializeERC20Token
Este método inicializa un token ERC-20. Este método solo se puede llamar mediante Token Admin.
Parámetros:
  • token: JSON: objeto que define el token, como se muestra en el siguiente ejemplo.
    {
        "tokenId": "WCBDC-100",
        "tokenName": "wholesale cbdc",
        "tokenDesc": "this is wcbdc contract",
        "tokenStandard": "ttf+",
        "tokenType": "fungible",
        "tokenUnit": "fractional",
        "behaviors": ["mintable", "burnable", "transferable", "roles", "holdable", "pausable"],
        "decimals": 2,
        "mintable": { "maxMintQuantity": 1000000, "mintApprovalRequired": false },
        "burnable": { "burnApprovalRequired": false }
    }
getToken
Este método obtiene detalles para un token. Este método solo se puede llamar mediante Token Admin, Token Auditor, Org Admin o Org Auditor.
Parámetros:
  • ninguno
Ejemplo de valor devuelto:
{
    "tokenId": "WCBDC-100",
    "tokenName": "wholesale cbdc",
    "tokenDesc": "this is wcbdc contract",
    "tokenStandard": "ttf+",
    "tokenType": "fungible",
    "tokenUnit": "fractional",
    "behaviors": ["mintable", "burnable", "transferable", "roles", "holdable", "pausable"],
    "decimals": 2,
    "mintable": { "maxMintQuantity": 1000000, "mintApprovalRequired": false },
    "burnable": { "burnApprovalRequired": false }
}
cap
Este método obtiene el suministro máximo de token (cap). Este método solo se puede llamar mediante Token Admin, Token Auditor, Org Admin o Org Auditor.
Parámetros:
  • ninguno
Devuelve
  • Un valor uint256 del límite de suministro de token.
balanceOf
Este método obtiene el saldo de token para el usuario especificado. Este método solo puede ser llamado por Token Admin, Token Auditor, Org Admin, Org Auditor o por el usuario especificado.
Parámetros:
  • userAddress: address: dirección de cartera del usuario. La dirección no puede ser cero.
Devuelve
  • Un valor uint256 del saldo de token.
Gestión de comportamiento de token - Comportamiento minable
mint
Este método crea (minte) tokens. Cualquier usuario con el rol minter puede llamar a este método.
Parámetros:
  • to: address: dirección de cartera del usuario. La dirección no puede ser cero.
  • value: uint256: cantidad de tokens que se deben acuñar.
batchMint
Este método crea (minuta) tokens para más de un usuario a la vez. Cualquier usuario con el rol minter puede llamar a este método.
Parámetros:
  • toList: address[]: lista de direcciones de cartera de los usuarios. Las direcciones no pueden ser cero.
  • amounts: uint256[]: lista de cantidades de tokens que se deben acuñar.
requestMint
Este método puede ser llamado por un minter para enviar una solicitud al notario para crear una cantidad especificada de tokens.
Parámetros:
  • notary: address: dirección de cartera del notario. La dirección no puede ser cero.
  • amount: uint256: cantidad de tokens que se deben acuñar.
  • expiration: uint256: hora de caducidad de la solicitud en formato de época.
  • opId: string: ID de operación de la solicitud.
  • info: InfoDetails: objeto que especifica la categoría (category) y la descripción (description) de la solicitud.
approveMint
Este método puede ser llamado por un notario para aprobar una solicitud de acuñación.
Parámetros:
  • opId: string: ID de operación de la solicitud.
rejectMint
Este método puede ser llamado por un notario para rechazar una solicitud de acuñación.
Parámetros:
  • opId: string: ID de operación de la solicitud.

Gestión de comportamiento de token - Comportamiento que se puede grabar

burn
Este método desactiva (quema) los tokens. Este método puede ser llamado por cualquier usuario con el rol de quemador.
Parámetros:
  • account: address: dirección de cartera del usuario. La dirección no puede ser cero.
  • value: uint256: cantidad de tokens que se queman.
batchBurn
Este método quema tokens para más de un usuario a la vez. Este método puede ser llamado por cualquier usuario con el rol de quemador.
Parámetros:
  • toList: address[]: lista de direcciones de cartera de los usuarios. Las direcciones no pueden ser cero.
  • amounts: uint256[]: lista de cantidades de tokens que se van a quemar.
requestBurn
Este método puede ser llamado por un quemador para enviar una solicitud al notario para quemar una cantidad especificada de tokens.
Parámetros:
  • notary: address: dirección de cartera del notario. La dirección no puede ser cero.
  • amount: uint256: cantidad de tokens que se queman.
  • expiration: uint256: hora de caducidad de la solicitud en formato de época.
  • opId: string: ID de operación de la solicitud.
  • info: InfoDetails: objeto que especifica la categoría (category) y la descripción (description) de la solicitud.
approveBurn
Este método puede ser llamado por un notario para aprobar una solicitud de grabación.
Parámetros:
  • opId: string: ID de operación de la solicitud.
rejectBurn
Este método puede ser llamado por un notario para rechazar una solicitud de grabación.
Parámetros:
  • opId: string: ID de operación de la solicitud.

Gestión de comportamiento de token - Comportamiento transferible

transfer
Este método transfiere tokens a un usuario especificado. Cualquier usuario con tokens puede llamar a este método.
Parámetros:
  • to: address: dirección de cartera del receptor. La dirección no puede ser cero.
  • value: uint256: cantidad de tokens que se deben transferir.
batchTransfer
Este método transfiere tokens a una lista especificada de usuarios. Cualquier usuario con tokens puede llamar a este método.
Parámetros:
  • toList: address[]: lista de direcciones de cartera de los receptores. Las direcciones no pueden ser cero.
  • amounts: uint256[]: lista de cantidades de tokens para transferir.

Gestión de comportamiento de token - Comportamiento delegable

allowance
Este método delega el gasto de token a un usuario especificado. Cualquier usuario con tokens puede llamar a este método.
Parámetros:
  • owner: address: dirección de la cartera del propietario que delega el gasto de los tokens. La dirección no puede ser cero.
  • spender: address: dirección de cartera del gastador de tokens. La dirección no puede ser cero.
Devuelve
  • Una cantidad de uint256 de los tokens que se delegaron para el gasto.
approve
Este método aprueba la cantidad de tokens para un gastador delegado especificado. Cualquier usuario con tokens puede llamar a este método.
Parámetros:
  • spender: address: dirección de cartera del gastador de tokens. La dirección no puede ser cero.
  • value: uint256: cantidad de tokens que el gastador puede gastar.
transferFrom
Los gastadores delegados utilizan este método para transferir tokens.
Parámetros:
  • from: address: dirección de cartera del remitente. La dirección no puede ser cero.
  • to: address: dirección de cartera del receptor. La dirección no puede ser cero.
  • value: uint256: cantidad de tokens que se deben transferir.

Gestión de comportamiento de token - Comportamiento utilizable

isPaused
Este método comprueba si el contrato está en pausa. Este método solo se puede llamar mediante Token Admin, Token Auditor, Org Admin o Org Auditor.
Parámetros:
  • ninguno
pause
Este método pausa el contrato. Este método solo se puede llamar mediante Token Admin.
Parámetros:
  • ninguno
unpause
Este método reanuda el contrato. Este método solo se puede llamar mediante Token Admin.
Parámetros:
  • ninguno

Gestión de comportamiento de token - Comportamiento retenible

hold
Este método crea una retención en nombre del propietario del token. Cualquier usuario con tokens puede llamar a este método.
Parámetros:
  • to: address: dirección de cartera del receptor. La dirección no puede ser cero.
  • notary: address: dirección de cartera del notario. La dirección no puede ser cero.
  • amount: uint256: cantidad de tokens que se deben transferir.
  • expiration: uint256: hora de caducidad de la solicitud en formato de época.
  • opId: string: ID de operación de la solicitud.
  • holdType: string: tipo de retención. Por ejemplo, transfer.
  • info: InfoDetails: objeto que especifica la categoría (category) y la descripción (description) de la solicitud.
executeHold
Este método aprueba una petición de retención. Este método sólo puede ser llamado por el notario previamente especificado.
Parámetros:
  • amount: uint256: cantidad de tokens que aprobar.
  • opId: string: ID de operación de la solicitud.
releaseHold
Este método rechaza una solicitud de retención. Este método sólo puede ser llamado por el notario previamente especificado.
Parámetros:
  • opId: string: ID de operación de la solicitud.
getOnHoldBalanceWithOperationId
Este método devuelve el saldo retenido para un ID de operación especificado. Este método puede ser llamado por un Token Admin o Token Auditor, Org Admin o Org Auditor de la organización especificada, o por un participante de la transacción (emisor, destinatario, notario).
Parámetros:
  • opId: string: ID de operación de la solicitud.
Devuelve
  • Un importe de uint256 del saldo retenido.
getAccountOnHoldBalance
Este método devuelve el saldo retenido de una cuenta especificada. Este método puede ser llamado por un Token Admin o Token Auditor, Org Admin o Org Auditor de la organización especificada, o por un participante de la transacción (emisor, destinatario, notario).
Parámetros:
  • account: address: dirección de la cartera de la cuenta. La dirección no puede ser cero.
Devuelve
  • Un importe de uint256 del saldo retenido.

ERC-1155 Métodos de contrato de cuenta

Métodos para la gestión de cuentas

createAccount
Este método crea una cuenta para un usuario especificado. Las cuentas realizan un seguimiento del saldo de token de un usuario y se deben crear para todos los usuarios que tendrán tokens en cualquier momento. Este método solo se puede llamar mediante Token Admin.
Parámetros:
  • userId: string: nombre de usuario o ID de correo electrónico del usuario. La cadena de ID de usuario no puede estar vacía.
  • orgId: string: ID del proveedor de servicios de afiliación (MSP) del usuario de la organización actual. El ID de organización no puede estar vacío.
  • userAddress: address: dirección de cartera del usuario. La dirección no puede ser cero.
deleteAccount
Este método suprime la cuenta de un usuario especificado. Una cuenta solo se puede suprimir si el saldo del token es cero. Este método solo se puede llamar mediante Token Admin.
Parámetros:
  • userAddress: address: dirección de cartera del usuario. La dirección no puede ser cero.
getAccountStatus
Este método obtiene el estado actual de la cuenta especificada. Este método solo lo puede llamar un Token Admin o el usuario especificado.
Parámetros:
  • userAddress: address: dirección de cartera del usuario. La dirección no puede ser cero.
Devuelve:
  • Un valor para el objeto enum AccountStatus, 0, 1 o 2.
    enum AccountStatus {
    active,
    suspended,
    deleted
    }
getAccountByAddress
Este método obtiene la información de cuenta de un usuario especificado. Este método solo lo puede llamar un Token Admin o el usuario especificado.
Parámetros:
  • userAddress: address: dirección de cartera del usuario. La dirección no puede ser cero.
Ejemplo de valor devuelto:
{
    "userId": "userA",
    "orgId": "orgA",
	"accountAddress": "0x0fbdc686b912d7722dc86510934589e0aaf3b55a",
	"status":0
}
getAllAccounts
Este método obtiene la información de cuenta de todas las cuentas que se encuentran en un rango especificado. Este método solo se puede llamar mediante Token Admin.
Parámetros:
  • offset: uint256: índice de compensación del que se obtienen las cuentas.
  • limit: uint256: número de elementos que se van a recuperar.
Ejemplo de valor devuelto:
Return (UserAccount[] memory items, uint256 total, uint256 nextOffset)
[{
    "userId": "userA",
    "orgId": "orgA",
	"accountAddress": "0x0fbdc686b912d7722dc86510934589e0aaf3b55a",
	"status":0
}]
total: 15
nextoffset: 6
activateAccount
Este método activa una cuenta de usuario. Este método solo se puede llamar mediante Token Admin.
Parámetros:
  • userAddress: address: dirección de cartera del usuario. La dirección no puede ser cero.
suspendAccount
Este método suspende una cuenta de usuario. Para eliminar una cuenta, el saldo de la cuenta debe ser cero. Este método solo se puede llamar mediante Token Admin.
Parámetros:
  • userAddress: address: dirección de cartera del usuario. La dirección no puede ser cero.

Métodos para la gestión de administradores

addTokenAdmin
Este método agrega un usuario como Token Admin. Este método solo se puede llamar mediante Token Admin.
Parámetros:
  • adminDetails: JSON: objeto que contiene detalles sobre el usuario que se va a agregar como Token Admin, como se muestra en el siguiente ejemplo.
    {
        "userId": "tokenAdmin1",
        "orgId": "orgA",
    	"accountAddress": "0x0fbdc686b912d7722dc86510934589e0aaf3b55a"    
    }
removeTokenAdmin
Este método elimina un usuario como Token Admin. Este método solo se puede llamar mediante Token Admin.
Parámetros:
  • userAddress: address: dirección de cartera del usuario. La dirección no puede ser cero.
getAllTokenAdmins
Este método devuelve una lista de todos los usuarios que son Token Admin. Este método solo puede ser llamado por Token Admin.
Parámetros:
  • ninguno
Ejemplo de valor devuelto:
[{
    "userId": "tokenadmin1",
    "orgId": "orgA",
	"accountAddress": "0x0fbdc686b912d7722dc86510934589e0aaf3b55a"
},
{
    "userId": "tokenadmin2",
    "orgId": "orgB",
	"accountAddress": "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73"
}]
isTokenAdmin
Este método comprueba si el usuario especificado es un Token Admin. Este método solo se puede llamar mediante Token Admin.
Parámetros:
  • userAddress: address: dirección de cartera del usuario. La dirección no puede ser cero.
Devuelve:
  • El método devuelve true si el usuario especificado es Token Admin; de lo contrario, devuelve false.

Métodos para la gestión de roles

addRole
Este método agrega un rol a un usuario especificado. Este método solo se puede llamar mediante Token Admin.
Parámetros:
  • userAddress: address: dirección de cartera del usuario. La dirección no puede ser cero.
  • role: string: nombre del rol que se va a agregar al usuario especificado. Por ejemplo, minter, burner o notary.
  • scopeId: uint256: ID de clase de token no fungible (NFT) o ID de token fungible.
removeRole
Este método elimina un rol de un usuario especificado. Este método solo puede ser llamado por un Token Admin o Org Admin de la organización especificada.
Parámetros:
  • userAddress: address: dirección de cartera del usuario. La dirección no puede ser cero.
  • role: string: nombre del rol que se va a eliminar del usuario especificado. Por ejemplo, minter, burner o notary.
  • scopeId: uint256: ID de clase de token no fungible (NFT) o ID de token fungible.
accountHasRole
Este método comprueba si un usuario tiene un rol especificado. Este método puede ser llamado por cualquier usuario.
Parámetros:
  • role: string: hash Keccak-256 del nombre del rol (minter, burner o notary) que desea buscar.
  • userAddress: address: dirección de cartera del usuario. La dirección no puede ser cero.
  • scopeId: uint256: ID de clase de token no fungible (NFT) o ID de token fungible.
Devuelve:
  • El método devuelve true si el usuario tiene el rol especificado; de lo contrario, devuelve false.
addTokenSysRole
Este método agrega el rol TOKEN_SYS_VAULT_ROLE a un usuario especificado. Este método solo se puede llamar mediante Token Admin.
Parámetros:
  • userAddress: address: dirección de cartera del usuario. La dirección no puede ser cero.
  • role: string: el único rol admitido es TOKEN_SYS_VAULT_ROLE.
Devuelve:
  • El método devuelve true si el rol se ha agregado correctamente; de lo contrario, devuelve false.
removeTokenSysRole
Este método elimina el rol TOKEN_SYS_VAULT_ROLE de un usuario especificado. Este método solo se puede llamar mediante Token Admin.
Parámetros:
  • userAddress: address: dirección de cartera del usuario. La dirección no puede ser cero.
  • role: string: el único rol admitido es TOKEN_SYS_VAULT_ROLE.
Devuelve:
  • El método devuelve true si el rol se ha eliminado correctamente; de lo contrario, devuelve false.
transferTokenSysRole
Este método transfiere el rol TOKEN_SYS_VAULT_ROLE de un usuario a otro. Este método solo se puede llamar mediante Token Admin.
Parámetros:
  • fromAddress: address: dirección de cartera del remitente. La dirección no puede ser cero.
  • toAddress: address: dirección de cartera del receptor. La dirección no puede ser cero.
  • role: string: el único rol admitido es TOKEN_SYS_VAULT_ROLE.
Devuelve:
  • El método devuelve true si el rol se ha transferido correctamente; de lo contrario, devuelve false.

ERC-1155 Métodos de contrato de token

Métodos para la Gestión de Configuración de Token

__ERC1155Token_init
Este método se llama cuando se despliega el contrato de token. Este método solo se puede llamar mediante Token Admin.
Parámetros:
  • accountContract: address – La dirección del contrato de cuenta.
  • uri: string: URI del tipo de token.
saveNFTClass
Este método guarda la información de clase de NFT en la contabilidad. Este método solo se puede llamar mediante Token Admin.
Parámetros:
  • classinfo: JSON: objeto de información de clase de cuenta de NFT. El siguiente código muestra un ejemplo para una NFT completa.
    {
        "nftClassId": (BigInt(1)),
        "tokenName": "ArtCollection2",
        "tokenDesc": "this is art collection contract",
        "tokenStandard": "erc1155",
        "tokenUnit": 0,
        "behaviors": ["mintable", "burnable", "transferable", "roles", "indivisible"],
        "divisible": { "decimals": 0 },
        "mintable": { "maxMintQuantity": 2 }
    }
    El siguiente código muestra un ejemplo para una NFT fraccional.
    {
      "nftClassId": (BigInt(0)),
      "tokenName": "ArtCollection",
      "tokenDesc": "this is art collection contract",
      "tokenStandard": "erc1155",
      "tokenUnit": 1,
      "behaviors": ["mintable", "burnable", "transferable", "roles", "divisible"],
      "divisible": { "decimals": 0 },
      "mintable": { "maxMintQuantity": 1 }
    }
createNonFungibleToken
Este método acuña NFT. Este método solo puede ser llamado por un usuario con el rol minter.
Parámetros:
  • tokenId: uint256: ID de token de NFT, que contiene información de clase de NFT. Los 128 bits superiores del ID representan el ID de clase NFT y los 128 bits inferiores representan el índice único del NFT.
  • quantity: uint256: cantidad de NFT que se debe acuñar (crear).
createFungibleToken
Este método se llama cuando se despliega el contrato de token. Este método solo se puede llamar mediante Token Admin.
Parámetros:
  • token: definición de token fungible que se debe registrar en el libro mayor, como se muestra en el siguiente ejemplo.
     "tokenId": BigInt(0),
     "tokenName": "wcbdc",
     "tokenDesc": "this is wcbdc token",
     "tokenStandard": "erc1155",
     "tokenType": 1,
     "tokenUnit": 1,
     "behaviors": ["mintable", "burnable", "transferable", "roles", "divisible"],
     "divisible": { "decimals": 2 },
     "quantity": 1,
     "mintable": { "maxMintQuantity": 1 }
getTokenById
Este método obtiene detalles para un token. Este método solo lo puede llamar un propietario de token o Token Admin.
Parámetros:
  • token: definición de token fungible, como se muestra en el siguiente ejemplo.
     "tokenId": BigInt(0),
     "tokenName": "wcbdc",
     "tokenDesc": "this is wcbdc token",
     "tokenStandard": "erc1155",
     "tokenType": 1,
     "tokenUnit": 1,
     "behaviors": ["mintable", "burnable", "transferable", "roles", "divisible"],
     "divisible": { "decimals": 2 },
     "quantity": 1,
     "mintable": { "maxMintQuantity": 1 }
  • metaInfo: bytes: si el token es fungible, especifique un valor vacío. Si el token es un NFT completo, especifique una versión codificada del siguiente objeto struct.
    struct ERC1155WholeNFT {
        bool isBurned;
        bool isLocked;
        uint256 creationDate;
        uint256 quantity;
        address createdBy;
        address owner;
    }
    Si el token es una NFT fraccional, especifique una versión codificada del siguiente objeto struct.
    struct ERC1155FractionalNFT {
        bool isBurned;
        bool isLocked;
        uint256 creationDate;
        uint256 quantity;
        address createdBy;
        Owners[] owners;
    }
geTokenDecimals
Este método obtiene el valor decimal para un token. Este método solo se puede llamar mediante Token Admin.
Parámetros:
  • id: uint256: ID de token.
Devuelve
  • Un valor uint8 del número de posiciones decimales.
tokenIdOf
Este método obtiene el ID de un token. Este método solo se puede llamar mediante Token Admin.
Parámetros:
  • classId: uint256: ID de clase de NFT.
  • serialId: uint256: el ID de serie de la clase NFT.
Devuelve
  • Un ID de token uint256.
balanceOf
Este método obtiene el saldo de token para el usuario especificado. Este método solo puede ser llamado por un Token Admin o por el propietario del token.
Parámetros:
  • account: address: dirección de cartera del usuario. La dirección no puede ser cero.
  • id: uint256: ID de token.
Devuelve
  • Un valor uint256 del saldo de token.
balanceOfBatch
Este método obtiene el saldo de token para una lista de usuarios. Este método solo puede ser llamado por un Token Admin o por el propietario del token.
Parámetros:
  • account: address[]: lista de las direcciones de cartera de los usuarios.
  • id: uint256[]: lista de ID de token.
Devuelve
  • Una lista uint256[] de balances de token.
exists
Este método comprueba si existe un token especificado. Este método solo se puede llamar mediante Token Admin.
Parámetros:
  • id: uint256: un ID de token.
Devuelve:
  • El método devuelve true si el token especificado existe; de lo contrario, devuelve false.
totalSupply
Este método comprueba el suministro total de todos los tokens del contrato. Este método solo se puede llamar mediante Token Admin.
Parámetros:
  • ninguno
Devuelve:
  • Un valor uint256[] del suministro total de token.
totalSupply
Este método comprueba el suministro total de un token especificado en el contrato. Este método solo se puede llamar mediante Token Admin.
Parámetros:
  • id: uint256: un ID de token.
Devuelve:
  • Un valor uint256[] del suministro total del token especificado.
Gestión de comportamiento de token - Comportamiento minable
mintBatch
Este método crea (minuta) tokens ERC-1155 en modo por lotes. Se deben inicializar los tokens. Cualquier usuario con el rol minter puede llamar a este método.
Parámetros:
  • tokenIds: uint256[]: lista de tokens que se deben acuñar.
  • quantity: uint256[]: lista de cantidades de token que se deben acuñar.
  • data: byte: bytes de datos adicionales.

Gestión de comportamiento de token - Comportamiento que se puede grabar

burnBatch
Este método destruye (quema) los tokens ERC-1155 en modo por lotes. Se deben inicializar los tokens. Este método puede ser llamado por cualquier usuario con el rol de quemador.
Parámetros:
  • tokenIds: uint256[]: lista de tokens que se van a quemar.
  • quantity: uint256[]: lista de cantidades de token que se van a grabar.
  • data: byte: bytes de datos adicionales.
burnNFT
Este método destruye (quema) un token no fungible. Se deben inicializar los tokens. Este método puede ser llamado por cualquier usuario con el rol de quemador.
Parámetros:
  • tokenId: uint256: ID del token que se va a grabar.

Gestión de comportamiento de token - Comportamiento transferible

safeTransferFrom
Este método transfiere tokens de un remitente a un receptor. Este método puede ser llamado por cualquier usuario que tenga tokens.
Parámetros:
  • from: address: dirección de cartera del remitente. La dirección no puede ser cero.
  • to: address: dirección de cartera del receptor. La dirección no puede ser cero.
  • id: uint256: ID del token ERC-1155 que se va a transferir.
  • value: uint256: cantidad de tokens que se van a transferir.
  • data: byte: bytes de datos adicionales.
safeBatchTransferFrom
Este método transfiere tokens de un remitente a un receptor. Este método puede ser llamado por cualquier usuario que tenga tokens.
Parámetros:
  • from: address: dirección de cartera del remitente. La dirección no puede ser cero.
  • to: address: dirección de cartera del receptor. La dirección no puede ser cero.
  • id: uint256: ID del token ERC-1155 que se va a transferir.
  • value: uint256: cantidad de tokens que se van a transferir.
  • data: byte: bytes de datos adicionales.

Gestión de comportamiento de token - Comportamiento delegable

setApprovalForAll
Este método otorga o revoca el permiso para que un operador transfiera los tokens del emisor de llamada, según el parámetro approved. Este método puede ser llamado por cualquier usuario que tenga tokens.
Parámetros:
  • operator: address: dirección de cartera del operador al que se le están otorgando o revocando permisos. La dirección no puede ser cero.
  • approved: bool: un indicador booleano indica si el operador tiene permiso para transferir los tokens del emisor de llamada.
isApprovedForAll
Este método comprueba si un operador está aprobado para transferir tokens para una cuenta especificada. Este método puede ser llamado por cualquier usuario que tenga tokens.
Parámetros:
  • account: address: dirección de cartera de los usuarios que han otorgado o revocado permisos al operador para transferir sus tokens. La dirección no puede ser cero.
  • operator: address: dirección de cartera del operador al que se le han otorgado o revocado permisos. La dirección no puede ser cero.
Devuelve:
  • Valor booleano que indica si el operador está aprobado para transferir tokens para la cuenta especificada.

Gestión de comportamiento de token - Comportamiento utilizable

paused
Este método comprueba si el contrato está en pausa. Este método puede ser llamado por cualquier usuario.
Parámetros:
  • ninguno
pause
Este método pausa el contrato. Este método solo se puede llamar mediante Token Admin.
Parámetros:
  • ninguno
unpause
Este método reanuda un contrato en pausa. Este método solo se puede llamar mediante Token Admin.
Parámetros:
  • ninguno

Gestión de comportamiento de token - Comportamiento bloqueable

lockNFT
Este método bloquea un token no fungible. Este método solo lo puede llamar un usuario con el rol TOKEN_SYS_VAULT_ROLE.
Parámetros:
  • tokenId: uint256: ID del token que se va a bloquear.
isNFTLocked
Este método comprueba si un token no fungible está bloqueado. Este método solo lo puede llamar un usuario con el rol TOKEN_SYS_VAULT_ROLE o Token Admin.
Parámetros:
  • tokenId: uint256: ID del token que se va a comprobar.
Devuelve:
  • Valor booleano que indica si el token está bloqueado.