Proyecto de token TypeScript andamiado para ERC-1155

Blockchain App Builder toma la entrada de su archivo de especificación de token y genera un proyecto de código de cadena de andamios totalmente funcional.

El proyecto genera automáticamente clases y funciones de ciclo de vida de token, incluidos los métodos CRUD y no CRUD. 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 los tokens, 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. El siguiente modelo muestra un token no fungible completo.

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("erc1155+")
  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;

  @Mandatory()
  @Validate(yup.string().required().max(2000)) 
  public tokenUri: string;

  @Embedded(ArtCollectionMetadata)
  public tokenMetadata: ArtCollectionMetadata;

  @Validate(yup.number())
  public price: number;
  
  @Validate(yup.boolean())
  public on_sale_flag: boolean;
  
}

@Id("tokenId")
export class Loyalty extends OchainModel<Loyalty> {
  public readonly assetType = "otoken";

  @Mandatory()
  @Validate(
    yup
      .string()
      .required()
      .matches(/^[A-Za-z0-9][A-Za-z0-9_-]*$/)
      .max(16)
  )
  public tokenId: string;

  @ReadOnly("loyalty")
  public tokenName: string;

  @Validate(yup.string().trim().max(256))
  public tokenDesc: string;

  @ReadOnly("erc1155+")
  public tokenStandard: string;

  @ReadOnly("fungible")
  public tokenType: string;

  @ReadOnly("fractional")
  public tokenUnit: string;

  @ReadOnly(["divisible","mintable","transferable","burnable","roles"])
  public behaviors: string[];

  @ReadOnly({ minter_role_name: "minter" })
  public roles: object;

  @ReadOnly({ max_mint_quantity: 10000 })
  public mintable: object;

  @ReadOnly({ decimal: 2 })
  public divisible: object;

  @Validate(yup.string())
  public currency_name: string;
  
  @Validate(yup.number())
  public token_to_currency_ratio: number;
  
}
El siguiente modelo muestra un token fraccional no fungible.
export class RealEstatePropertyMetadata extends EmbeddedModel<RealEstatePropertyMetadata> {
  @Validate(yup.string())
  public propertyType: string;
  
  @Validate(yup.string())
  public propertyName: string;
  
  @Validate(yup.string())
  public propertyAddress: string;
  
  @Validate(yup.string())
  public propertyImage: string;
  
}
    
@Id("tokenId")
export class RealEstateProperty extends OchainModel<RealEstateProperty> {
  public readonly assetType = "otoken";

  @Mandatory()
  @Validate(
    yup
      .string()
      .required()
      .matches(/^[A-Za-z0-9][A-Za-z0-9_-]*$/)
      .max(16)
  )
  public tokenId: string;

  @ReadOnly("realestateproperty")
  public tokenName: string;

  @Validate(yup.string().trim().max(256))
  public tokenDesc: string;

  @ReadOnly("erc1155+")
  public tokenStandard: string;

  @ReadOnly("nonfungible")
  public tokenType: string;

  @ReadOnly("fractional")
  public tokenUnit: string;

  @ReadOnly(["divisible","mintable","transferable","roles"])
  public behaviors: string[];

  @ReadOnly({ minter_role_name: "minter" })
  public roles: object;

  @ReadOnly({ max_mint_quantity: 0 })
  public mintable: object;

  @Validate(yup.number().positive())
  public quantity: number;

  @Validate(yup.string())
  public createdBy: string;

  @Validate(yup.string())
  public creationDate: string;

  @ReadOnly({ decimal: 0 })
  public divisible: object;

  @Validate(yup.bool())
  public isBurned: boolean;

  @Mandatory()
  @Validate(yup.string().required().max(2000))
  public tokenUri: string;

  @Embedded(RealEstatePropertyMetadata)
  public tokenMetadata: RealEstatePropertyMetadata;

  @Validate(yup.number())
  public propertySellingPrice: number;
  
  @Validate(yup.number())
  public propertyRentingPrice: number;
  
}

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 token generados automáticamente

Blockchain App Builder genera automáticamente métodos para admitir tokens y ciclos de vida de tokens. Puede utilizar estos métodos para inicializar tokens, gestionar roles y cuentas, y completar otras tareas del ciclo de vida del token sin ninguna codificación adicional. Los métodos de controlador deben tener un decorador @Validator(...params) que se pueda invocar.

Métodos de Gestión de Control de Acceso

isTokenAdmin
Este método devuelve el valor booleano true si el emisor de llamada de la función es Token Admin; de lo contrario, devuelve false. Este método solo puede ser llamado por un Token Admin del código de cadena.
@GetMethod()
@Validator(yup.string(), yup.string())
public async getAccountDetailsByUser(orgId: string, userId: string) {
  const userAccountId = this.Ctx.ERC1155Account.generateAccountId(orgId, userId, ACCOUNT_TYPE.USER_ACCOUNT);
  await this.Ctx.ERC1155Auth.checkAuthorization("ERC1155ACCOUNT.getAccountDetailsByUser", "TOKEN", {
    accountId: userAccountId,
  });
  return await this.Ctx.ERC1155Account.getAccountDetailsByUser(orgId, userId);
}
Parámetros:
  • orgId: string: ID del proveedor de servicios de afiliación (MSP) del usuario de la organización actual.
  • userId: string: nombre de usuario o ID de correo electrónico del usuario.
Devuelve:
  • El método devuelve true si el emisor de llamada es Token Admin; de lo contrario, devuelve false.
Ejemplo de valor devuelto:
{"result": true}
addTokenAdmin
Este método agrega un usuario como Token Admin del código de cadena. Este método solo puede ser llamado por un Token Admin del código de cadena.
@Validator(yup.string(), yup.string())
public async addTokenAdmin(orgId: string, userId: string) {
  await this.Ctx.ERC1155Auth.checkAuthorization("ERC1155ADMIN.addAdmin", "TOKEN");
  return await this.Ctx.ERC1155Admin.addAdmin(orgId, userId);
}
Parámetros:
  • orgId: string: ID del proveedor de servicios de afiliación (MSP) del usuario de la organización actual.
  • userId: string: nombre de usuario o ID de correo electrónico del usuario.
Devuelve:
  • Si se ha realizado correctamente, un mensaje que incluye detalles del usuario que se ha agregado como Token Admin del código de cadena.
Ejemplo de valor devuelto:
{"msg":"Successfully added Admin (OrgId: appDev, UserId: user1)"}
removeTokenAdmin
Este método elimina un usuario como Token Admin del código de cadena. Este método solo puede ser llamado por un Token Admin del código de cadena. No puede eliminarse como Token Admin.
@Validator(yup.string(), yup.string())
public async removeTokenAdmin(orgId: string, userId: string) {
  await this.Ctx.ERC1155Auth.checkAuthorization("ERC1155ADMIN.removeAdmin", "TOKEN");
  return await this.Ctx.ERC1155Admin.removeAdmin(orgId, userId);
}
Parámetros:
  • orgId: string: ID del proveedor de servicios de afiliación (MSP) del usuario de la organización actual.
  • userId: string: nombre de usuario o ID de correo electrónico del usuario.
Devuelve:
  • En caso de éxito, un mensaje que incluye detalles del usuario que se ha eliminado como Token Admin del código de cadena.
Ejemplo de valor devuelto:
{"msg": "Successfully removed Admin (OrgId: appDev, UserId: user1)"}
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 un Token Admin del código de cadena.
@GetMethod()
@Validator()
public async getAllTokenAdmins() {
  await this.Ctx.ERC1155Auth.checkAuthorization("ERC1155ADMIN.getAllAdmins", "TOKEN");
  return await this.Ctx.ERC1155Admin.getAllAdmins();
}
Parámetros:
  • ninguno
Devuelve:
  • Una vez realizada correctamente, una matriz admins en formato JSON que contiene objetos orgId y userId.
Ejemplo de valor devuelto:
{
  "admins": [
    {
      "orgId": "appdev",
      "userId": "user2"
    },
    {
      "orgId": "appdev",
      "userId": "user1"
    }
  ]
}

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ón userId y orgId en el parámetro adminList. 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ámetro adminList 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 ([]). Si es el usuario que desplegó inicialmente el código de cadena, también puede especificar nuevos administradores en el parámetro adminList al actualizar el código de cadena. Cualquier otra información en el parámetro adminList se ignora durante las actualizaciones.
@Validator(yup.array().of(yup.object()).nullable())
public async init(adminList: ERC1155TokenAdminAsset[]) {
  await this.Ctx.ERC1155Admin.initAdmin(adminList);
  await this.Ctx.ERC1155Token.saveClassInfo(<1st NFT Token Name>);
  await this.Ctx.ERC1155Token.saveClassInfo(<2nd NFT Token Name>);
  .
  .
  await this.Ctx.ERC1155Token.saveClassInfo(<nth NFT Token Name>);
  // await this.Ctx.ERC1155Token.saveDeleteTransactionInfo();
  return;
}
Parámetros:
  • adminList array: matriz de información {orgId, userId} que especifica la lista de administradores de tokens. La matriz adminList es un parámetro obligatorio.
create<Token Name>Token
Este método crea tokens. Cada token definido tiene su propio método de creación. Para los tokens fungibles, este método solo puede ser llamado por un Token Admin del código de cadenas. Para los tokens no fungibles, si el rol minter está definido en el archivo de especificación, cualquier usuario con el rol minter puede llamar a este método para crear un NFT. Si no se define el rol minter, cualquier usuario puede utilizar este método para crear (mint) NFT. El usuario que llama a este método se convierte en el propietario de la NFT.
Tokens fungibles:
@Validator(<Token Class>)
public async create<Token Name>Token(tokenAsset: <Token Class>) {
  await this.Ctx.ERC1155Auth.checkAuthorization("ERC1155TOKEN.save", "TOKEN");
  return await this.Ctx.ERC1155Token.save(tokenAsset);
}
Tokens no fungibles:
@Validator(<Token Class>, yup.number())
public async create<Token Name>Token(tokenAsset: <Token Class>, quantity: number) {
  return await this.Ctx.ERC1155Token.save(tokenAsset, quantity);
}
Parámetros:
  • tokenAsset: <Token Class>: el activo de token. Las propiedades del activo se definen en el archivo de modelo.
  • quantity: number: solo para tokens no fungibles, el número de tokens que se deben acuñar. El único valor soportado para este parámetro es 1.
Devuelve:
  • En caso de éxito, el activo de token en formato JSON, que incluye la siguiente información, según el tipo de token.
  • tokenMetadata: información de JSON que describe el token.
  • createdBy: ID de cuenta del emisor de llamada, que es el usuario que está minando el token. Esta propiedad no se puede editar.
  • creationDate: registro de hora de la transacción de acuñación. Esta propiedad no se puede editar.
  • isBurned: esta propiedad indica si el token se ha quemado. Esta propiedad no se puede editar.
  • tokenName: nombre del token. Esta propiedad no se puede editar.
  • tokenDesc: descripción del token.
  • symbol: símbolo del token. Esta propiedad no se puede editar.
  • tokenStandard: el estándar del token. Esta propiedad no se puede editar.
  • tokenType: tipo de token (fungible o no fungible). Esta propiedad no se puede editar.
  • tokenUnit: unidad del token (total o fraccional). Esta propiedad no se puede editar.
  • behaviors: lista de comportamientos de token. Esta propiedad no se puede editar.
  • mintable: propiedades relacionadas con la minería. El valor max_mint_quantity define el número máximo de tokens que se pueden crear para la clase de token.
  • owner: ID de cuenta del propietario actual, que es el emisor de la llamada del método.
  • tokenUri: el URI del token.
  • quantity: cantidad del token.
Ejemplo de valor devuelto (NFT total):
{
    "tokenMetadata": {
        "paintingName": "monalisa",
        "description": "monalisa painting",
        "image": "image link",
        "painterName": "Leonardo da Vinci"
    },
    "assetType": "otoken",
    "quantity": 1,
    "tokenId": "artnft",
    "tokenName": "artcollection",
    "tokenDesc": "artcollection nft",
    "tokenStandard": "erc1155+",
    "tokenType": "nonfungible",
    "tokenUnit": "whole",
    "behaviors": [
        "indivisible",
        "singleton",
        "mintable",
        "transferable",
        "burnable",
        "roles"
    ],
    "roles": {
        "minter_role_name": "minter",
        "burner_role_name": "burner"
    },
    "mintable": {
        "max_mint_quantity": 500
    },
    "owner": "oaccount~42e89f4c72dfde9502814876423c6da630d466e87436dd1aae201d347ad1288d",
    "createdBy": "oaccount~42e89f4c72dfde9502814876423c6da630d466e87436dd1aae201d347ad1288d",
    "creationDate": "2022-12-29T04:08:35.000Z",
    "isBurned": false,
    "tokenUri": "tu",
    "price": 10000,
    "onSaleFlag": false
}
Ejemplo de valor de devolución (token fungible):
{
    "assetType": "otoken",
    "tokenId": "Loyalty",
    "tokenName": "loyalty",
    "tokenDesc": "Token Description",
    "tokenStandard": "erc1155+",
    "tokenType": "fungible",
    "tokenUnit": "fractional",
    "behaviors": [
        "divisible",
        "mintable",
        "transferable",
        "burnable",
        "roles"
    ],
    "roles": {
        "minter_role_name": "minter",
        "burner_role_name": "burner"
    },
    "mintable": {
        "max_mint_quantity": 10000
    },
    "divisible": {
        "decimal": 2
    },
    "currency_name": "Dollar"
}
Ejemplo de valor de retorno (NFT fraccional):
{
    "tokenMetadata": {
        "painting_name": "paint",
        "description": "Painting Description"
    },
    "assetType": "otoken",
    "tokenId": "realEstate",
    "tokenName": "realestate",
    "tokenDesc": "Token Description",
    "tokenStandard": "erc1155+",
    "tokenType": "nonfungible",
    "tokenUnit": "fractional",
    "behaviors": [
        "divisible",
        "mintable",
        "transferable",
        "burnable",
        "roles"
    ],
    "roles": {
        "minter_role_name": "minter",
        "burner_role_name": "burner"
    },
    "mintable": {
        "max_mint_quantity": 20000
    },
    "quantity": 100,
    "createdBy": "oaccount~42e89f4c72dfde9502814876423c6da630d466e87436dd1aae201d347ad1288d",
    "creationDate": "2023-06-14T04:20:14.000Z",
    "divisible": {
        "decimal": 2
    },
    "isBurned": false,
    "tokenUri": "www.realestate.example.com",
    "price": 1000,
    "on_sale_flag": true
}
update<Token Name>Token
Este método actualiza tokens. Cada token que se define tiene su propio método de actualización. No puede actualizar los metadatos de token ni el URI de token de tokens no fungibles. Para los tokens fungibles, este método solo puede ser llamado por un Token Admin del código de cadenas. Para los tokens no fungibles, este método solo puede ser llamado por el propietario del token.
Tokens fungibles:
@Validator(<Token Class>)
public async update<Token Name>Token(tokenAsset: <Token Class>) {
  await this.Ctx.ERC1155Auth.checkAuthorization("ERC1155TOKEN.update", "TOKEN");
  return await this.Ctx.ERC1155Token.update(tokenAsset);
}
Tokens no fungibles:
@Validator(<Token Class>)
public async update<Token Name>Token(tokenAsset: <Token Class>) {
  return await this.Ctx.ERC1155Token.update(tokenAsset);
}
Parámetros:
  • tokenAsset: <Token Class>: el activo de token. Las propiedades del activo se definen en el archivo de modelo.
Devuelve:
  • Cuando se realiza correctamente, el activo de token actualizado está en formato JSON.
Ejemplo de valor devuelto (NFT total):
{
    "tokenMetadata": {
        "paintingName": "monalisa",
        "description": "monalisa painting",
        "image": "image link",
        "painterName": "Leonardo da Vinci"
    },
    "assetType": "otoken",
    "quantity": 1,
    "tokenId": "artnft",
    "tokenName": "artcollection",
    "tokenDesc": "artcollection nft",
    "tokenStandard": "erc1155+",
    "tokenType": "nonfungible",
    "tokenUnit": "whole",
    "behaviors": [
        "indivisible",
        "singleton",
        "mintable",
        "transferable",
        "burnable",
        "roles"
    ],
    "roles": {
        "minter_role_name": "minter",
        "burner_role_name": "burner"
    },
    "mintable": {
        "max_mint_quantity": 500
    },
    "owner": "oaccount~42e89f4c72dfde9502814876423c6da630d466e87436dd1aae201d347ad1288d",
    "createdBy": "oaccount~42e89f4c72dfde9502814876423c6da630d466e87436dd1aae201d347ad1288d",
    "creationDate": "2022-12-29T04:08:35.000Z",
    "isBurned": false,
    "tokenUri": "tu",
    "price": 10000,
    "onSaleFlag": false
}
getTokenHistory
Este método devuelve el historial de un identificador de token especificado. Cualquiera puede llamar a este método.
@GetMethod()
@Validator(yup.string())
public async getTokenHistory(tokenId: string) {
  return await this.Ctx.ERC1155Token.getTokenHistory(tokenId);
}
Parámetros:
  • tokenId: string: ID del token.
Devuelve:
  • En caso de éxito, una matriz de JSON que contiene el historial de tokens.
Ejemplo de valor de devolución (token fungible):
[
    {
        "trxId": "ef4af760c3d7ee5e273196231d59fb91cafe6ca0f78c64747e87bc9bcbb3334b",
        "timeStamp": "2023-09-04T02:36:20.000Z",
        "value": {
            "assetType": "otoken",
            "tokenId": "LoyaltyToken",
            "tokenName": "loyalty",
            "tokenDesc": "Updated Fungible Whole",
            "tokenStandard": "erc1155+",
            "tokenType": "fungible",
            "tokenUnit": "fractional",
            "behaviors": [
                "divisible",
                "mintable",
                "transferable",
                "burnable",
                "roles"
            ],
            "roles": {
                "minter_role_name": "minter",
                "burner_role_name": "burner"
            },
            "mintable": {
                "max_mint_quantity": 10000
            },
            "divisible": {
                "decimal": 2
            },
            "currency_name": "Rupees"
        }
    },
    {
        "trxId": "4fb391a8903633a12a545cd2ecfb57f5575241325abf59995e2a4ed96572bb09",
        "timeStamp": "2023-09-04T02:35:07.000Z",
        "value": {
            "assetType": "otoken",
            "tokenId": "LoyaltyToken",
            "tokenName": "loyalty",
            "tokenDesc": "Fungible Whole",
            "tokenStandard": "erc1155+",
            "tokenType": "fungible",
            "tokenUnit": "fractional",
            "behaviors": [
                "divisible",
                "mintable",
                "transferable",
                "burnable",
                "roles"
            ],
            "roles": {
                "minter_role_name": "minter",
                "burner_role_name": "burner"
            },
            "mintable": {
                "max_mint_quantity": 10000
            },
            "divisible": {
                "decimal": 2
            },
            "currency_name": "Dollar"
        }
    }
]
Ejemplo de valor de retorno (NFT fraccional):
[
    {
        "txId": "99bca74f401465206da7499cbf704dd443b3c3d94e348b1d6682ab5ee1864a08",
        "timestamp": "2023-06-20T01:09:18.000Z",
        "value": {
            "assetType": "otoken",
            "tokenId": "FNFT",
            "tokenName": "realestate",
            "tokenStandard": "erc1155+",
            "tokenType": "nonfungible",
            "tokenUnit": "fractional",
            "behaviors": [
                "divisible",
                "mintable",
                "transferable",
                "burnable",
                "roles"
            ],
            "roles": {
                "minter_role_name": "minter",
                "burner_role_name": "burner"
            },
            "mintable": {
                "max_mint_quantity": 20000
            },
            "quantity": 100,
            "createdBy": "oaccount~87bcb699d507368ee3966cd03ee6d7736ffc55dde8c0f0e16b14866334ac504a",
            "creationDate": "2023-06-20T00:53:13.000Z",
            "divisible": {
                "decimal": 2
            },
            "isBurned": false,
            "tokenUri": "www.FNFT.example.com",
            "price": 2000,
            "on_sale_flag": true,
            "owners": [
                {
                    "accountId": "oaccount~87bcb699d507368ee3966cd03ee6d7736ffc55dde8c0f0e16b14866334ac504a",
                    "tokenShare": 90
                },
                {
                    "accountId": "oaccount~3cddfdaa855900579d963aa6f755a4aed1f3a474a2462c1b45bd7f36df673224",
                    "tokenShare": 10
                }
            ]
        }
    },
    {
        "txId": "d517c61f40e7d6af2f04fe6d337b3e5108eb57030c9dc823793498fd4fed671b",
        "timestamp": "2023-06-20T00:53:13.000Z",
        "value": {
            "assetType": "otoken",
            "tokenId": "FNFT",
            "tokenName": "realestate",
            "tokenStandard": "erc1155+",
            "tokenType": "nonfungible",
            "tokenUnit": "fractional",
            "behaviors": [
                "divisible",
                "mintable",
                "transferable",
                "burnable",
                "roles"
            ],
            "roles": {
                "minter_role_name": "minter",
                "burner_role_name": "burner"
            },
            "mintable": {
                "max_mint_quantity": 20000
            },
            "quantity": 100,
            "createdBy": "oaccount~87bcb699d507368ee3966cd03ee6d7736ffc55dde8c0f0e16b14866334ac504a",
            "creationDate": "2023-06-20T00:53:13.000Z",
            "divisible": {
                "decimal": 2
            },
            "isBurned": false,
            "tokenUri": "www.FNFT.example.com",
            "price": 2000,
            "on_sale_flag": true,
            "owners": [
                {
                    "accountId": "oaccount~87bcb699d507368ee3966cd03ee6d7736ffc55dde8c0f0e16b14866334ac504a",
                    "tokenShare": 100
                }
            ]
        }
    }
]
Ejemplo de valor devuelto (NFT total):
[
    {
        "trxId": "92ac6b56112acdba724dd49924d2420a7899c013c61aa40d272e8ab391a65e0f",
        "timeStamp": "2023-09-04T02:28:48.000Z",
        "value": {
            "tokenMetadata": {
                "painting_name": "monalisa",
                "description": "monalisa painting",
                "image": "image link",
                "painter_name": "Leonardo da Vinci"
            },
            "assetType": "otoken",
            "tokenId": "artnft",
            "tokenName": "artcollection",
            "tokenDesc": "Updated Token Description",
            "tokenStandard": "erc1155+",
            "tokenType": "nonfungible",
            "tokenUnit": "whole",
            "behaviors": [
                "indivisible",
                "mintable",
                "transferable",
                "burnable",
                "roles"
            ],
            "roles": {
                "minter_role_name": "minter",
                "burner_role_name": "burner"
            },
            "mintable": {
                "max_mint_quantity": 20000
            },
            "quantity": 1,
            "createdBy": "oaccount~42e89f4c72dfde9502814876423c6da630d466e87436dd1aae201d347ad1288d",
            "creationDate": "2023-09-04T02:27:19.000Z",
            "owner": "oaccount~42e89f4c72dfde9502814876423c6da630d466e87436dd1aae201d347ad1288d",
            "isBurned": false,
            "tokenUri": "www.FNFT.example.com",
            "price": 10000,
            "on_sale_flag": true
        }
    },
    {
        "trxId": "27697dd4a8dba53bad073aa95587cd1ef173b02fd95d771a60273d301fd3bcbe",
        "timeStamp": "2023-09-04T02:27:19.000Z",
        "value": {
            "tokenMetadata": {
                "painting_name": "monalisa",
                "description": "monalisa painting",
                "image": "image link",
                "painter_name": "Leonardo da Vinci"
            },
            "assetType": "otoken",
            "tokenId": "artnft",
            "tokenName": "artcollection",
            "tokenDesc": "artcollection nft",
            "tokenStandard": "erc1155+",
            "tokenType": "nonfungible",
            "tokenUnit": "whole",
            "behaviors": [
                "indivisible",
                "mintable",
                "transferable",
                "burnable",
                "roles"
            ],
            "roles": {
                "minter_role_name": "minter",
                "burner_role_name": "burner"
            },
            "mintable": {
                "max_mint_quantity": 20000
            },
            "quantity": 1,
            "createdBy": "oaccount~42e89f4c72dfde9502814876423c6da630d466e87436dd1aae201d347ad1288d",
            "creationDate": "2023-09-04T02:27:19.000Z",
            "owner": "oaccount~42e89f4c72dfde9502814876423c6da630d466e87436dd1aae201d347ad1288d",
            "isBurned": false,
            "tokenUri": "www.FNFT.example.com",
            "price": 10000,
            "on_sale_flag": true
        }
    }
]
[
    {
        "trxId": "ebda1f31543f8906b7ec50a631afff6b8318a3d63c84f3e73be6785cc2ff31ff",
        "timeStamp": "2023-06-20T01:14:08.000Z",
        "value": {
            "assetType": "otoken",
            "tokenId": "NFT",
            "tokenName": "artcollection",
            "tokenStandard": "erc1155+",
            "tokenType": "nonfungible",
            "tokenUnit": "whole",
            "behaviors": [
                "indivisible",
                "singleton",
                "mintable",
                "transferable",
                "roles"
            ],
            "roles": {
                "minter_role_name": "minter",
                "burner_role_name": "burner"
            },
            "mintable": {
                "max_mint_quantity": 20000
            },
            "quantity": 1,
            "createdBy": "oaccount~87bcb699d507368ee3966cd03ee6d7736ffc55dde8c0f0e16b14866334ac504a",
            "creationDate": "2023-06-20T01:14:08.000Z",
            "owner": "oaccount~87bcb699d507368ee3966cd03ee6d7736ffc55dde8c0f0e16b14866334ac504a",
            "isBurned": false,
            "tokenUri": "www.NFT.example.com",
            "price": 2000,
            "on_sale_flag": true
        }
    }
]
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.
@GetMethod()
@Validator(yup.string())
public async getTokenHistory(tokenId: string) {
  return await this.Ctx.ERC1155Token.getTokenHistory(tokenId);
}
Parámetros:
  • ninguno
Devuelve:
  • Lista de todos los activos de token en formato JSON.
Ejemplo de valor devuelto:
[
  {
    "key": "tokenOne",
    "valueJson": {
      "assetType": "otoken",
      "tokenId": "tokenOne",
      "tokenName": "moneytok",
      "tokenStandard": "erc1155+",
      "tokenType": "fungible",
      "tokenUnit": "fractional",
      "behaviors": [
        "divisible",
        "mintable",
        "transferable",
        "roles"
      ],
      "roles": {
        "minter_role_name": "minter",
        "burner_role_name": "burner"
      },
      "mintable": {
        "max_mint_quantity": 1000
      },
      "divisible": {
        "decimal": 2
      }
    }
  },
  {
    "key": "tokenTwo",
    "valueJson": {
      "assetType": "otoken",
      "tokenId": "tokenTwo",
      "tokenName": "moneytok",
      "tokenStandard": "erc1155+",
      "tokenType": "fungible",
      "tokenUnit": "fractional",
      "behaviors": [
        "divisible",
        "mintable",
        "transferable",
        "roles"
      ],
      "roles": {
        "minter_role_name": "minter",
        "burner_role_name": "burner"
      },
      "mintable": {
        "max_mint_quantity": 1000
      },
      "divisible": {
        "decimal": 2
      }
    }
  },
  {
    "key": "art",
    "valueJson": {
      "assetType": "otoken",
      "quantity": 1,
      "tokenId": "art",
      "tokenName": "artcollection",
      "tokenStandard": "erc1155+",
      "tokenType": "nonfungible",
      "tokenUnit": "whole",
      "behaviors": [
        "indivisible",
        "singleton",
        "mintable",
        "transferable",
        "burnable",
        "roles"
      ],
      "roles": {
        "minter_role_name": "minter"
      },
      "mintable": {
        "max_mint_quantity": 20000
      },
      "owner": "oaccount~76cb672eeb1bd535899562a840d0c15a356db89e24bc8b43ac1dba845a4282c6",
      "createdBy": "oaccount~76cb672eeb1bd535899562a840d0c15a356db89e24bc8b43ac1dba845a4282c6",
      "creationDate": "2022-12-08T08:52:57.000Z",
      "isBurned": true,
      "tokenUri": "art.example.com",
      "transferredBy": "ouaccount~24ffd4d32a028a85b4b960f5d55536c837b5429bc7f346150adfa904ec2937cc",
      "transferredDate": "2022-12-08T08:59:17.000Z",
      "burnedBy": "oaccount~76cb672eeb1bd535899562a840d0c15a356db89e24bc8b43ac1dba845a4282c6",
      "burnedDate": "2022-12-08T09:01:28.000Z"
    }
  },
  {
    "key": "FNFT",
    "valueJson": {
        "assetType": "otoken",
        "tokenId": "FNFT",
        "tokenName": "realestate",
        "tokenStandard": "erc1155+",
        "tokenType": "nonfungible",
        "tokenUnit": "fractional",
        "behaviors": [
            "divisible",
            "mintable",
            "transferable",
            "burnable",
            "roles"
        ],
        "roles": {
            "minter_role_name": "minter",
            "burner_role_name": "burner"
        },
        "mintable": {
            "max_mint_quantity": 20000
        },
        "quantity": 100,
        "createdBy": "oaccount~87bcb699d507368ee3966cd03ee6d7736ffc55dde8c0f0e16b14866334ac504a",
        "creationDate": "2023-06-20T00:53:13.000Z",
        "divisible": {
            "decimal": 2
        },
        "isBurned": false,
        "tokenUri": "www.FNFT.example.com",
        "price": 2000,
        "on_sale_flag": true
    }
  }
]
getTokenById
Este método devuelve un objeto de token si el token está presente en la base de datos de estado. Para las NFT fraccionadas, también se devuelve la lista de propietarios. Este método solo puede ser llamado por un Token Admin del código de cadena o el propietario del token.
@GetMethod()
@Validator(yup.string())
public async getTokenById(tokenId: string) {
  await this.Ctx.ERC1155Auth.checkAuthorization("ERC1155TOKEN.getTokenById", "TOKEN", { tokenId });
  return await this.Ctx.ERC1155Token.getTokenById(tokenId);
}
Parámetros:
  • tokenId: string: ID del token que se va a obtener.
Ejemplo de valor devuelto (NFT total):
{
  "assetType": "otoken",
  "quantity": 1,
  "tokenId": "art",
  "tokenName": "artcollection",
  "tokenStandard": "erc1155+",
  "tokenType": "nonfungible",
  "tokenUnit": "whole",
  "behaviors": [
    "indivisible",
    "singleton",
    "mintable",
    "transferable",
    "burnable",
    "roles"
  ],
  "roles": {
    "minter_role_name": "minter"
  },
  "mintable": {
    "max_mint_quantity": 20000
  },
  "owner": "oaccount~76cb672eeb1bd535899562a840d0c15a356db89e24bc8b43ac1dba845a4282c6",
  "createdBy": "oaccount~76cb672eeb1bd535899562a840d0c15a356db89e24bc8b43ac1dba845a4282c6",
  "creationDate": "2022-12-08T08:52:57.000Z",
  "isBurned": true,
  "tokenUri": "art.example.com",
  "transferredBy": "ouaccount~24ffd4d32a028a85b4b960f5d55536c837b5429bc7f346150adfa904ec2937cc",
  "transferredDate": "2022-12-08T08:59:17.000Z",
  "burnedBy": "oaccount~76cb672eeb1bd535899562a840d0c15a356db89e24bc8b43ac1dba845a4282c6",
  "burnedDate": "2022-12-08T09:01:28.000Z"
}
Ejemplo de valor de devolución (token fungible):
{
    "assetType": "otoken",
    "tokenId": "Loyalty",
    "tokenName": "loyalty",
    "tokenDesc": "Token Description",
    "tokenStandard": "erc1155+",
    "tokenType": "fungible",
    "tokenUnit": "fractional",
    "behaviors": [
        "divisible",
        "mintable",
        "transferable",
        "burnable",
        "roles"
    ],
    "roles": {
        "minter_role_name": "minter",
        "burner_role_name": "burner"
    },
    "mintable": {
        "max_mint_quantity": 10000
    },
    "divisible": {
        "decimal": 2
    },
    "currency_name": "Dollar"
}
Ejemplo de valor de retorno (NFT fraccional):
{
    "tokenMetadata": {
        "painting_name": "paint",
        "description": "Painting Description"
    },
    "assetType": "otoken",
    "tokenId": "realEstate",
    "tokenName": "realestate",
    "tokenDesc": "Token Description",
    "tokenStandard": "erc1155+",
    "tokenType": "nonfungible",
    "tokenUnit": "fractional",
    "behaviors": [
        "divisible",
        "mintable",
        "transferable",
        "burnable",
        "roles"
    ],
    "roles": {
        "minter_role_name": "minter",
        "burner_role_name": "burner"
    },
    "mintable": {
        "max_mint_quantity": 20000
    },
    "quantity": 100,
    "createdBy": "oaccount~42e89f4c72dfde9502814876423c6da630d466e87436dd1aae201d347ad1288d",
    "creationDate": "2023-06-14T04:20:14.000Z",
    "divisible": {
        "decimal": 2
    },
    "isBurned": false,
    "tokenUri": "www.realestate.example.com",
    "price": 1000,
    "on_sale_flag": true,
    "owners": [
        {
            "accountId": "oaccount~42e89f4c72dfde9502814876423c6da630d466e87436dd1aae201d347ad1288d",
            "tokenShare": 100
        }
    ]
}
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 lo puede llamar un Token Admin del código de cadena o el propietario de la cuenta.
@GetMethod()
@Validator(yup.string(), yup.string())
public async getAllTokensByUser(orgId: string, userId: string) {
  const accountId = this.Ctx.ERC1155Account.generateAccountId(orgId, userId, ACCOUNT_TYPE.USER_ACCOUNT);
  await this.Ctx.ERC1155Auth.checkAuthorization("ERC1155TOKEN.getAllTokensByUser", "TOKEN", { accountId });
  return await this.Ctx.ERC1155Token.getAllTokensByUser(accountId);
}
Parámetros:
  • orgId: string: ID del proveedor de servicios de afiliación (MSP) del usuario de la organización actual.
  • userId: string: nombre de usuario o ID de correo electrónico del usuario.
Ejemplo de valor devuelto:
[
  {
    "key": "tokenOne",
    "valueJson": {
      "assetType": "otoken",
      "tokenId": "tokenOne",
      "tokenName": "moneytok",
      "tokenStandard": "erc1155+",
      "tokenType": "fungible",
      "tokenUnit": "fractional",
      "behaviors": [
        "divisible",
        "mintable",
        "transferable",
        "roles"
      ],
      "roles": {
        "minter_role_name": "minter",
        "burner_role_name": "burner"
      },
      "mintable": {
        "max_mint_quantity": 1000
      },
      "divisible": {
        "decimal": 2
      }
    }
  },
  {
    "key": "nftToken",
    "valueJson": {
      "assetType": "otoken",
      "quantity": 1,
      "tokenId": "nftToken",
      "tokenName": "artcollection",
      "tokenStandard": "erc1155+",
      "tokenType": "nonfungible",
      "tokenUnit": "whole",
      "behaviors": [
        "indivisible",
        "singleton",
        "mintable",
        "transferable",
        "burnable",
        "roles"
      ],
      "roles": {
        "minter_role_name": "minter"
      },
      "mintable": {
        "max_mint_quantity": 20000
      },
      "owner": "oaccount~76cb672eeb1bd535899562a840d0c15a356db89e24bc8b43ac1dba845a4282c6",
      "createdBy": "oaccount~76cb672eeb1bd535899562a840d0c15a356db89e24bc8b43ac1dba845a4282c6",
      "creationDate": "2022-12-08T09:10:21.000Z",
      "isBurned": false,
      "tokenUri": "example.com"
    }
  }
]
ownerOf
Este método devuelve el ID de cuenta, el ID de organización y el ID de usuario del propietario del ID de token especificado. Cualquiera puede llamar a este método.
@GetMethod()
@Validator(yup.string())
public async ownerOf(tokenId: string) {
  return await this.Ctx.ERC1155Token.ownerOf(tokenId);
}
Parámetros:
  • tokenId: string: ID del token.
Ejemplo de valor devuelto (NFT total):
{
    "accountId": "oaccount~76cb672eeb1bd535899562a840d0c15a356db89e24bc8b43ac1dba845a4282c6",
    "orgId": "appdev",
    "userId": "idcqa"
}
Ejemplo de valor de retorno (NFT fraccional):
[
    {
        "accountId": "oaccount~42e89f4c72dfde9502814876423c6da630d466e87436dd1aae201d347ad1288d",
        "orgId": "Org1MSP",
        "userId": "admin"
    },
    {
        "accountId": "oaccount~74108eca702bab6d8548e740254f2cc7955d886885251d52d065042172a59db0",
        "orgId": "Org1MSP",
        "userId": "user"
    }
]
URI
Este método devuelve el URI de un token especificado. Cualquiera puede llamar a este método.
@GetMethod()
@Validator(yup.string())
public async URI(tokenId: string) {
  return await this.Ctx.ERC1155Token.tokenURI(tokenId);
}
Parámetros:
  • tokenId: string: ID del token.
Ejemplo de valor devuelto:
{
    "tokenUri": "example.com"
}
name
Este método devuelve el nombre de la clase de token. Cualquiera puede llamar a este método.
@GetMethod()
@Validator(yup.string())
public async name(tokenId: string) {
  return await this.Ctx.ERC1155Token.name(tokenId);
}
Parámetros:
  • tokenId: string: ID del token.
Ejemplo de valor devuelto:
{"tokenName": "artcollection"}
totalSupply
Este método devuelve el número total de tokens acuñados. Los tokens fungibles se especifican mediante el ID de token. Los tokens no fungibles se especifican mediante el nombre del token. Este método solo puede ser llamado por un Token Admin del código de cadena.
@GetMethod()
@Validator(yup.object())
public async totalSupply(tokenDetail: TokenDetail) {
  await this.Ctx.ERC1155Auth.checkAuthorization("ERC1155TOKEN.totalSupply", "TOKEN");
  const token = await this.Ctx.ERC1155Token.getTokenByIdOrName(tokenDetail);
  return await this.Ctx.ERC1155Token.totalSupply(token);
}
Parámetros:
  • tokenDetails: TokenDetail: detalles que especifican el token. Para los tokens fungibles, utilice el siguiente formato:
    {"tokenId":"token1"}
    Para los tokens no fungibles, utilice el siguiente formato:
    {"tokenName":"artCollection"}
Ejemplo de valor devuelto:
{"totalSupply": 110}
totalNetSupply
Este método devuelve el número total de tokens acuñados menos el número de tokens quemados. Los tokens fungibles se especifican mediante el ID de token. Los tokens no fungibles se especifican mediante el nombre del token. Este método solo puede ser llamado por un Token Admin del código de cadena.
@GetMethod()
@Validator(yup.object())
public async totalNetSupply(tokenDetail: TokenDetail) {
  await this.Ctx.ERC1155Auth.checkAuthorization("ERC1155TOKEN.totalNetSupply", "TOKEN");
  const token = await this.Ctx.ERC1155Token.getTokenByIdOrName(tokenDetail);
  return await this.Ctx.ERC1155Token.totalNetSupply(token);
}
Parámetros:
  • tokenDetails: TokenDetail: detalles que especifican el token. Para los tokens fungibles, utilice el siguiente formato:
    {"tokenId":"token1"}
    Para los tokens no fungibles, utilice el siguiente formato:
    {"tokenName":"artCollection"}
Ejemplo de valor devuelto:
{"totalNetSupply": 105}
getTokensByName
Este método devuelve todos los activos de token para un nombre de token 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 cadena.
@GetMethod()
@Validator(yup.string())
public async getTokensByName(tokenName: string) {
  await this.Ctx.ERC1155Auth.checkAuthorization("ERC1155TOKEN.getTokensByName", "TOKEN");
  return await this.Ctx.ERC1155Token.getTokensByName(tokenName);
}
Parámetros:
  • tokenName: string: nombre del token.
Ejemplo de valor devuelto:
[
  {
    "key": "tokenOne",
    "valueJson": {
      "assetType": "otoken",
      "tokenId": "tokenOne",
      "tokenName": "moneytok",
      "tokenStandard": "erc1155+",
      "tokenType": "fungible",
      "tokenUnit": "fractional",
      "behaviors": [
        "divisible",
        "mintable",
        "transferable",
        "roles"
      ],
      "roles": {
        "minter_role_name": "minter",
        "burner_role_name": "burner"
      },
      "mintable": {
        "max_mint_quantity": 1000
      },
      "divisible": {
        "decimal": 2
      }
    }
  },
  {
    "key": "tokenTwo",
    "valueJson": {
      "assetType": "otoken",
      "tokenId": "tokenTwo",
      "tokenName": "moneytok",
      "tokenStandard": "erc1155+",
      "tokenType": "fungible",
      "tokenUnit": "fractional",
      "behaviors": [
        "divisible",
        "mintable",
        "transferable",
        "roles"
      ],
      "roles": {
        "minter_role_name": "minter",
        "burner_role_name": "burner"
      },
      "mintable": {
        "max_mint_quantity": 1000
      },
      "divisible": {
        "decimal": 2
      }
    }
  }
]
getTokenDecimal
Este método devuelve el número de decimales para un token especificado. Este método solo puede ser llamado por un Token Admin del código de cadena.
@GetMethod()
@Validator(yup.string())
public async getTokenDecimal(tokenId: string) {
  const token = await this.Ctx.ERC1155Token.get(tokenId);
  await this.Ctx.ERC1155Auth.checkAuthorization("ERC1155TOKEN.getDecimals", "TOKEN");
  return {
    msg: `Token Id: ${tokenId} has ${this.Ctx.ERC1155Token.getDecimals(token)} decimal places.`,
  };
}
Parámetros:
  • tokenId: string: ID del token.
Ejemplo de valor devuelto:
{
    "msg": "Token Id: tokenOne has 2 decimal places."
}

Métodos para la gestión de cuentas

createAccount
Este método crea una cuenta para un usuario especificado y cuentas de token asociadas para tokens fungibles o no fungibles. Se debe crear una cuenta para cualquier usuario que tenga tokens en cualquier momento. La cuenta de usuario realiza un seguimiento de la cuenta de NFT y las cuentas de token fungibles que tiene un usuario. Los usuarios deben tener cuentas en la red para completar las operaciones relacionadas con los tokens. Este método solo puede ser llamado por un Token Admin del código de cadena.

Una cuenta de usuario tiene un ID único, formado por un hash SHA-256 del parámetro orgId y el parámetro userId.

Un usuario puede tener varias cuentas de token fungibles con ID de cuenta únicos. Los identificadores de cuentas de token fungibles están formados por un hash SHA-256 del parámetro orgId, el parámetro userId, la cadena constante ft separada por el símbolo tilde (~) y un número de contador que significa el índice de la cuenta fungible que se está creando separado por el símbolo tilde (~).

Un usuario solo puede tener una cuenta de token no fungible. Los ID de cuenta de token no fungibles son únicos y están formados por un hash SHA-256 del parámetro orgId, el parámetro userId y la cadena constante nft separados por el símbolo tilde (~). Todos los tokens no fungibles que posee un usuario, ya sean completos o fraccionarios, están vinculados a esta cuenta.

Los ID de cuenta de usuario comienzan con ouaccount~. Los ID de cuenta de token comienzan con oaccount~.

@Validator(yup.string(), yup.string(), yup.boolean(), yup.boolean())
public async createAccount(orgId: string, userId: string, ftAccount: boolean, nftAccount: boolean) {
  await this.Ctx.ERC1155Auth.checkAuthorization("ERC1155ACCOUNT.createAccount", "TOKEN");
  return await this.Ctx.ERC1155Account.createAccount(orgId, userId, ftAccount, nftAccount);
}
Parámetros:
  • orgId: string: ID del proveedor de servicios de afiliación (MSP) del usuario de la organización actual.
  • userId: string: nombre de usuario o ID de correo electrónico del usuario.
  • ftAccount: boolean: si es verdadero, se crea una cuenta de token fungible y se asocia con la cuenta de usuario.
  • nftAccount: boolean: si se define en true, se crea una cuenta de token no fungible y se asocia a la cuenta de usuario.
Devuelve:
  • En caso de éxito, un objeto JSON de la cuenta que se creó.
Ejemplo de valor devuelto:
{
  "assetType": "ouaccount",
  "accountId": "ouaccount~cf20877546f52687f387e7c91d88b9722c97e1a456cc0484f40c747f7804feae",
  "userId": "user1",
  "orgId": "appdev",
  "totalAccounts": 2,
  "totalFtAccounts": 1,
  "associatedFtAccounts": [
    {
      "accountId": "oaccount~60bb20c14a83f6e426e1437c479c5891e1c6477dfd7ad18b73acac5d80bc504b",
      "tokenId": ""
    }
  ],
  "associatedNftAccount": "oaccount~73c3e835dac6d0a56ca9d8def08269f83cefd59b9d297fe2cdc5a9083828fa58"
}
createUserAccount
Este método crea una cuenta para un usuario especificado. Se debe crear una cuenta para cualquier usuario que tenga tokens en cualquier momento. La cuenta de usuario realiza un seguimiento de la cuenta de NFT y las cuentas de token fungibles que tiene un usuario. Los usuarios deben tener cuentas en la red para completar las operaciones relacionadas con los tokens.

Un ID de cuenta es un hash SHA-256 del parámetro orgId y el parámetro userId. Este método solo puede ser llamado por un Token Admin del código de cadena.

@Validator(yup.string(), yup.string())
  public async createUserAccount(orgId: string, userId: string) {
    await this.Ctx.ERC1155Auth.checkAuthorization("ERC1155ACCOUNT.createUserAccount", "TOKEN");
    return await this.Ctx.ERC1155Account.createUserAccount(orgId, userId);
  }
Parámetros:
  • orgId: string: ID del proveedor de servicios de afiliación (MSP) del usuario de la organización actual.
  • userId: string: nombre de usuario o ID de correo electrónico del usuario.
Devuelve:
  • Si se ha realizado correctamente, se ha creado un objeto JSON de la cuenta de usuario.
Ejemplo de valor devuelto:
{
  "assetType": "ouaccount",
  "accountId": "ouaccount~24ffd4d32a028a85b4b960f5d55536c837b5429bc7f346150adfa904ec2937cc",
  "userId": "user2",
  "orgId": "appdev",
  "totalAccounts": 0,
  "totalFtAccounts": 0,
  "associatedFtAccounts": [],
  "associatedNftAccount": ""
}
createTokenAccount
Este método crea una cuenta de token fungible o no fungible para asociarla a una cuenta de usuario.

Un usuario puede tener varias cuentas de token fungibles con ID de cuenta únicos. Los identificadores de cuentas de token fungibles están formados por un hash SHA-256 del parámetro orgId, el parámetro userId, la cadena constante ft separada por el símbolo tilde (~) y un número de contador que significa el índice de la cuenta fungible que se está creando separado por el símbolo tilde (~).

Un usuario solo puede tener una cuenta de token no fungible. Los ID de cuenta de token no fungibles son únicos y están formados por un hash SHA-256 del parámetro orgId, el parámetro userId y la cadena constante nft separados por el símbolo tilde (~). Todos los tokens no fungibles que posee un usuario, ya sean completos o fraccionarios, están vinculados a esta cuenta.

Este método solo puede ser llamado por un Token Admin del código de cadena.

@Validator(yup.string(), yup.string(), yup.string())
  public async createTokenAccount(orgId: string, userId: string, tokenType: TokenType) {
    await this.Ctx.ERC1155Auth.checkAuthorization("ERC1155ACCOUNT.createTokenAccount", "TOKEN");
    return await this.Ctx.ERC1155Account.createTokenAccount(orgId, userId, tokenType);
  }
Parámetros:
  • orgId: string: ID del proveedor de servicios de afiliación (MSP) del usuario de la organización actual.
  • userId: string: nombre de usuario o ID de correo electrónico del usuario.
  • tokenType: TokenType: tipo de cuenta de token que se va a crear. Los únicos tipos de token soportados son nonfungible y fungible.
Devuelve:
  • Si se ha realizado correctamente, se ha creado un objeto JSON de la cuenta de token.
Ejemplo de valor devuelto:
{
  "assetType": "ouaccount",
  "accountId": "ouaccount~24ffd4d32a028a85b4b960f5d55536c837b5429bc7f346150adfa904ec2937cc",
  "userId": "user2",
  "orgId": "appdev",
  "totalAccounts": 1,
  "totalFtAccounts": 1,
  "associatedFtAccounts": [
    {
      "accountId": "oaccount~1422a74d262a3a55a37cd9023ef8836f765d0be7b49d397696b9961d7434d22a",
      "tokenId": ""
    }
  ],
  "associatedNftAccount": ""
}
associateFungibleTokenAccount
Este método asocia la cuenta de token fungible de un usuario a un token fungible en particular.

Este método solo puede ser llamado por un Token Admin del código de cadena.

@Validator(yup.string(), yup.string(), yup.string())
public async associateFungibleTokenToAccount(orgId: string, userId: string, tokenId: string) {
  const accountId = this.Ctx.ERC1155Account.generateAccountId(orgId, userId, ACCOUNT_TYPE.USER_ACCOUNT);
  await this.Ctx.ERC1155Auth.checkAuthorization("ERC1155ACCOUNT.associateFungibleTokenToAccount", "TOKEN", { accountId });
  return await this.Ctx.ERC1155Account.associateTokenToToken(accountId, tokenId);
}
Parámetros:
  • orgId: string: ID del proveedor de servicios de afiliación (MSP) del usuario de la organización actual.
  • userId: string: nombre de usuario o ID de correo electrónico del usuario.
  • tokenId: string: ID del token.
Devuelve:
  • En caso de éxito, un objeto JSON de la cuenta de usuario, que muestra que el token fungible se asoció a la cuenta de token. Por ejemplo, en el siguiente ejemplo, el primer objeto de la matriz associatedFtAccounts muestra que el ID de cuenta de token fungible y el ID de token están asociados.
Ejemplo de valor devuelto:
{
  "assetType": "ouaccount",
  "accountId": "ouaccount~24ffd4d32a028a85b4b960f5d55536c837b5429bc7f346150adfa904ec2937cc",
  "userId": "user2",
  "orgId": "appdev",
  "totalAccounts": 1,
  "totalFtAccounts": 1,
  "associatedFtAccounts": [
    {
      "accountId": "oaccount~1422a74d262a3a55a37cd9023ef8836f765d0be7b49d397696b9961d7434d22a",
      "tokenId": "tokenOne"
    }
  ],
  "associatedNftAccount": ""
}
getAccountHistory
Este método devuelve el historial de una cuenta de token especificada. 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.
@GetMethod()
@Validator(yup.string(), yup.string(), yup.string())
public async getAccountHistory(orgId: string, userId: string, tokenId?: string) {
  const userAccountId = await this.Ctx.ERC1155Account.generateAccountId(orgId, userId, ACCOUNT_TYPE.USER_ACCOUNT);
  const userAccount = await this.Ctx.ERC1155Account.getAccount(userAccountId, tokenId);
  await this.Ctx.ERC1155Auth.checkAuthorization("ERC1155ACCOUNT.history", "TOKEN", { accountId: userAccountId });
  return await this.Ctx.ERC1155Account.getAccountHistory(userAccount.accountId);
}
Parámetros:
  • orgId: string: ID del proveedor de servicios de afiliación (MSP) del usuario de la organización actual.
  • userId: string: nombre de usuario o ID de correo electrónico del usuario.
  • tokenId?: string: para una cuenta de token no fungible, una cadena vacía. Para una cuenta de token fungible, el ID de token.
Devuelve:
  • En caso de éxito, una matriz de objetos JSON que describe el historial de cuentas.
Ejemplo de valor devuelto:
[
  {
    "trxId": "89f462697f3c988024b2c248cbda21f9eb7e96567e56dd8db64ada96a4845a7f",
    "timeStamp": "2022-12-08T07:15:10.000Z",
    "value": {
      "assetType": "oaccount",
      "bapAccountVersion": 1,
      "accountId": "oaccount~1422a74d262a3a55a37cd9023ef8836f765d0be7b49d397696b9961d7434d22a",
      "userId": "user2",
      "orgId": "appdev",
      "tokenType": "fungible",
      "tokenId": "tokenOne",
      "tokenName": "moneytok",
      "balance": 110
    }
  },
  {
    "trxId": "30dd4fe0746350c85a5000996974487010a0a8fee73d6b2e480c3ca330a6d31f",
    "timeStamp": "2022-12-08T06:43:10.000Z",
    "value": {
      "assetType": "oaccount",
      "bapAccountVersion": 0,
      "accountId": "oaccount~1422a74d262a3a55a37cd9023ef8836f765d0be7b49d397696b9961d7434d22a",
      "userId": "user2",
      "orgId": "appdev",
      "tokenType": "fungible",
      "tokenId": "tokenOne",
      "tokenName": "moneytok",
      "balance": 0
    }
  },
  {
    "trxId": "6226c0455cc3a4f99c3fd7ed8b1d36b8e93f863e42ab61a9b0d399f2d69d2f3d",
    "timeStamp": "2022-12-08T06:41:51.000Z",
    "value": {
      "assetType": "oaccount",
      "bapAccountVersion": 0,
      "accountId": "oaccount~1422a74d262a3a55a37cd9023ef8836f765d0be7b49d397696b9961d7434d22a",
      "userId": "user2",
      "orgId": "appdev",
      "tokenType": "fungible",
      "tokenId": "",
      "balance": 0
    }
  }
]
getAccount
Este método devuelve los detalles de la cuenta de token para un usuario especificado. Este método solo puede ser llamado por un Token Admin del código de cadena o el Account Owner de la cuenta.
@GetMethod()
@Validator(yup.string(), yup.string(), yup.string())
public async getAccount(orgId: string, userId: string, tokenId?: string) {
  const userAccountId = this.Ctx.ERC1155Account.generateAccountId(orgId, userId, ACCOUNT_TYPE.USER_ACCOUNT);
  await this.Ctx.ERC1155Auth.checkAuthorization("ERC1155ACCOUNT.getAccount", "TOKEN", { accountId: userAccountId });
  return await this.Ctx.ERC1155Account.getAccountWithStatus(userAccountId, tokenId);
}
Parámetros:
  • orgId: string: ID del proveedor de servicios de afiliación (MSP) del usuario de la organización actual.
  • userId: string: nombre de usuario o ID de correo electrónico del usuario.
  • tokenId?: string: para una cuenta de token no fungible, una cadena vacía. Para una cuenta de token fungible, el ID de token.
Devuelve:
  • En caso de éxito, un objeto JSON que incluya detalles de cuenta de token. El parámetro bapAccountVersion se define en el objeto de cuenta para uso interno.
Ejemplo de valor de devolución (cuenta de token no fungible):
{
  "assetType": "oaccount",
  "bapAccountVersion": 1,
  "status": "active",
  "accountId": "oaccount~cc301bee057f14236a97d434909ec1084970921b008f6baab09c2a0f5f419a9a",
  "userId": "idcqa",
  "orgId": "appdev",
  "tokenType": "nonfungible",
  "noOfNfts": 1
}
Ejemplo de valor de devolución (cuenta de token fungible):
{
  "bapAccountVersion": 0,
  "assetType": "oaccount",
  "status": "active",
  "accountId": "oaccount~2de8db6b91964f8c9009136831126d3cfa94e1d00c4285c1ea3e6d1f36479ed4",
  "userId": "idcqa",
  "orgId": "appdev",
  "tokenType": "fungible",
  "tokenId": "t1",
  "tokenName": "loyalty",
  "balance": 100
}
getAllAccounts
Este método devuelve detalles de todas las cuentas de usuario. Este método solo puede ser llamado por un Token Admin del código de cadena.
@GetMethod()
@Validator()
public async getAllAccounts() {
  await this.Ctx.ERC1155Auth.checkAuthorization("ERC1155ACCOUNT.getAllAccounts", "TOKEN");
  return await this.Ctx.ERC1155Account.getAllAccounts();
}
Parámetros:
  • ninguno
Devuelve:
  • En caso de éxito, una matriz JSON de todas las cuentas.
Ejemplo de valor devuelto:
[
        {
            "assetType": "ouaccount",
            "accountId": "ouaccount~412de5e3998dcd100973e1bad6e8729fddc1c7ff610beab8376d733a35c51f38",
            "userId": "idcqa",
            "orgId": "appdev",
            "totalAccounts": 2,
            "totalFtAccounts": 1,
            "associatedFtAccounts": [
                {
                    "accountId": "oaccount~21206f309941a2a23c4f158a0fe1b8f12bb8e2b0c9a2e1358f5efebc0c7d410e",
                    "tokenId": "loy1"
                }
            ],
            "associatedNftAccount": "oaccount~e88276a3be547e31b567346bdddde52d37734da4d5fae83ab2e5c98a10097371"
        },
        {
            "assetType": "ouaccount",
            "accountId": "ouaccount~9501bb774c156eb8354dfe489250ea91f757523d70f08ee494bda98bb352003b",
            "userId": "user1_minter",
            "orgId": "appdev",
            "totalAccounts": 2,
            "totalFtAccounts": 1,
            "associatedFtAccounts": [
                {
                    "accountId": "oaccount~1089ee5122f367ee0ca38c6660298f4b81f199627e4f67f3691c0f628237974c",
                    "tokenId": "loy1"
                }
            ],
            "associatedNftAccount": "oaccount~dcee860665db8740cb77b846e823752185a1e9a185814d0acb305890f5903446"
        },
    ]
getAccountDetailsByUser
Este método devuelve un resumen de cuenta para un usuario especificado y detalles de tokens fungibles y no fungibles que están asociados al usuario. Este método solo puede ser llamado por un Token Admin del código de cadena o el Account Owner de la cuenta.
@GetMethod()
@Validator(yup.string(), yup.string())
public async getAccountDetailsByUser(orgId: string, userId: string) {
  const userAccountId = this.Ctx.ERC1155Account.generateAccountId(orgId, userId, ACCOUNT_TYPE.USER_ACCOUNT);
  await this.Ctx.ERC1155Auth.checkAuthorization("ERC1155ACCOUNT.getAccountDetailsByUser", "TOKEN", {
    accountId: userAccountId,
  });
  return await this.Ctx.ERC1155Account.getAccountDetailsByUser(orgId, userId);
}
Parámetros:
  • orgId: string: ID del proveedor de servicios de afiliación (MSP) del usuario de la organización actual.
  • userId: string: nombre de usuario o ID de correo electrónico del usuario.
Devuelve:
  • En caso de éxito, un objeto de cuenta JSON que incluye un resumen de cuenta para el usuario especificado y detalles de tokens fungibles y no fungibles que están asociados al usuario. Para los tokens fraccionarios no fungibles, la propiedad tokenShare de la sección associatedNFTs muestra el recurso compartido que posee el usuario.
Ejemplo de valor devuelto:
{
    "userAccountId": "ouaccount~412de5e3998dcd100973e1bad6e8729fddc1c7ff610beab8376d733a35c51f38",
    "associatedFTAccounts": [
        {
            "accountId": "oaccount~21206f309941a2a23c4f158a0fe1b8f12bb8e2b0c9a2e1358f5efebc0c7d410e",
            "tokenId": "FT",
            "balance": 50
        }
    ],
    "associatedNFTAccount": {
        "accountId": "oaccount~e88276a3be547e31b567346bdddde52d37734da4d5fae83ab2e5c98a10097371",
        "associatedNFTs": [
            {
                "nftTokenId": "FNFT",
                "tokenShare": 100
            },
            {
                "nftTokenId": "FNFT2",
                "tokenShare": 110
            },
            {
                "nftTokenId": "NFT"
            }
        ]
    }
}
getUserByAccountId
Este método devuelve los detalles de usuario de un ID de cuenta especificado. Este método puede ser llamado por cualquier usuario.
@GetMethod()
@Validator(yup.string())
public async getUserByAccountId(accountId: string) {
  return await this.Ctx.ERC1155Account.getUserByAccountId(accountId);
}
Parámetros:
  • accountId: string: ID de la cuenta.
Devuelve:
  • Cuando se realiza correctamente, un objeto JSON de los detalles del usuario (orgId y userId).
Ejemplo de valor devuelto:
{
  "orgId": "appdev"
  "userId": "user2",
}

Métodos para la gestión de roles

addRole
Este método agrega un rol a un usuario y token especificados. Este método solo puede ser llamado por un Token Admin del código de cadena. Los tokens fungibles se especifican mediante el ID de token. Los tokens no fungibles se especifican mediante el nombre del token. El usuario especificado debe tener una cuenta de token que esté asociada al token fungible o una cuenta de token no fungible para los roles de NFT. El rol especificado debe existir en el archivo de especificación para el token.
@Validator(yup.string(), yup.string(), yup.string(), yup.object())
public async addRole(orgId: string, userId: string, role: string, tokenDetail: TokenDetail) {
  await this.Ctx.ERC1155Auth.checkAuthorization("ERC1155TOKEN.addRoleMember", "TOKEN");
  const userAccountId = this.Ctx.ERC1155Account.generateAccountId(orgId, userId, ACCOUNT_TYPE.USER_ACCOUNT);
  const token = await this.Ctx.ERC1155Token.getTokenByIdOrName(tokenDetail);
  return await this.Ctx.ERC1155Token.addRoleMember(role, userAccountId, token);
}
Parámetros:
  • orgId: string: ID del proveedor de servicios de afiliación (MSP) del usuario de la organización actual.
  • userId: string: nombre de usuario o ID de correo electrónico del usuario.
  • role: string: nombre del rol que se va a agregar al usuario especificado.
  • tokenDetails: TokenDetail: detalles que especifican el token. Para los tokens fungibles, utilice el siguiente formato:
    {"tokenId":"token1"}
    Para los tokens no fungibles, utilice el siguiente formato:
    {"tokenName":"artCollection"}
Devuelve:
  • En caso de éxito, se mostrará un mensaje con los detalles de la cuenta.
Ejemplo de valor devuelto:
{
  "msg": "Successfully added role 'minter' to Account Id: oaccount~1422a74d262a3a55a37cd9023ef8836f765d0be7b49d397696b9961d7434d22a (Org-Id: appdev, User-Id: idcqa)"
}
isInRole
Este método devuelve un valor booleano para indicar si un usuario tiene un rol especificado. Los tokens fungibles se especifican mediante el ID de token. Los tokens no fungibles se especifican mediante el nombre del token. Este método solo puede ser llamado por un Token Admin del código de cadena o el Account Owner de la cuenta. El usuario especificado debe tener una cuenta de token que esté asociada al token fungible o una cuenta de token no fungible para los roles de NFT. El rol especificado debe existir en el archivo de especificación para el token.
@GetMethod()
@Validator(yup.string(), yup.string(), yup.string(), yup.object())
public async isInRole(orgId: string, userId: string, role: string, tokenDetail: TokenDetail) {
  await this.Ctx.ERC1155Auth.checkAuthorization("ERC1155TOKEN.removeRoleMember", "TOKEN");
  const userAccountId = this.Ctx.ERC1155Account.generateAccountId(orgId, userId, ACCOUNT_TYPE.USER_ACCOUNT);
  const token = await this.Ctx.ERC1155Token.getTokenByIdOrName(tokenDetail);
  return await this.Ctx.ERC1155Token.isInRole(role, userAccountId, token);
}
Parámetros:
  • orgId: string: ID del proveedor de servicios de afiliación (MSP) del usuario de la organización actual.
  • userId: string: nombre de usuario o ID de correo electrónico del usuario.
  • role: string: nombre del rol que se va a buscar.
  • tokenDetails: TokenDetail: detalles que especifican el token. Para los tokens fungibles, utilice el siguiente formato:
    {"tokenId":"token1"}
    Para los tokens no fungibles, utilice el siguiente formato:
    {"tokenName":"artCollection"}
Ejemplo de valor devuelto:
{
    "result": true,
    "msg": "Account Id oaccount~1422a74d262a3a55a37cd9023ef8836f765d0be7b49d397696b9961d7434d22a (Org-Id: appdev, User-Id: idcqa) has minter role"
}
removeRole
Este método elimina un rol de un usuario y token especificados. Los tokens fungibles se especifican mediante el ID de token. Los tokens no fungibles se especifican mediante el nombre del token. Este método solo puede ser llamado por un Token Admin del código de cadena. El usuario especificado debe tener una cuenta de token que esté asociada al token fungible o una cuenta de token no fungible para los roles de NFT. El rol especificado debe existir en el archivo de especificación para el token.
@Validator(yup.string(), yup.string(), yup.string(), yup.object())
public async removeRole(orgId: string, userId: string, role: string, tokenDetail: TokenDetail) {
  await this.Ctx.ERC1155Auth.checkAuthorization("ERC1155TOKEN.removeRoleMember", "TOKEN");
  const userAccountId = this.Ctx.ERC1155Account.generateAccountId(orgId, userId, ACCOUNT_TYPE.USER_ACCOUNT);
  const token = await this.Ctx.ERC1155Token.getTokenByIdOrName(tokenDetail);
  return await this.Ctx.ERC1155Token.removeRoleMember(role, userAccountId, token);
}
Parámetros:
  • orgId: string: ID del proveedor de servicios de afiliación (MSP) del usuario de la organización actual.
  • userId: string: nombre de usuario o ID de correo electrónico del usuario.
  • role: string: nombre del rol que se va a eliminar del usuario especificado.
  • tokenDetails: TokenDetail: detalles que especifican el token. Para los tokens fungibles, utilice el siguiente formato:
    {"tokenId":"token1"}
    Para los tokens no fungibles, utilice el siguiente formato:
    {"tokenName":"artCollection"}
Ejemplo de valor devuelto:
{
  "msg": "Successfully removed role 'minter' from Account Id: oaccount~60bb20c14a83f6e426e1437c479c5891e1c6477dfd7ad18b73acac5d80bc504b (Org-Id: appdev, User-Id: user1)"
}
getAccountsByRole
Este método devuelve una lista de todos los ID de cuenta para un rol y token especificados. Los tokens fungibles se especifican mediante el ID de token. Los tokens no fungibles se especifican mediante el nombre del token. Este método solo puede ser llamado por un Token Admin del código de cadena.
@GetMethod()
@Validator(yup.string(), yup.object())
public async getAccountsByRole(role: string, tokenDetail: TokenDetail) {
  await this.Ctx.ERC1155Auth.checkAuthorization("ERC1155ROLE.getAccountsByRole", "TOKEN");
  const token = await this.Ctx.ERC1155Token.getTokenByIdOrName(tokenDetail);
  return await this.Ctx.ERC1155Token.getAccountsByRole(role, token);
}
Parámetros:
  • role: string: nombre del rol que se va a buscar.
  • tokenDetails: TokenDetail: detalles que especifican el token. Para los tokens fungibles, utilice el siguiente formato:
    {"tokenId":"token1"}
    Para los tokens no fungibles, utilice el siguiente formato:
    {"tokenName":"artCollection"}
Ejemplo de valor devuelto:
{
  "accounts": [
    "oaccount~1422a74d262a3a55a37cd9023ef8836f765d0be7b49d397696b9961d7434d22a",
    "oaccount~60bb20c14a83f6e426e1437c479c5891e1c6477dfd7ad18b73acac5d80bc504b"
  ]
}
getUsersByRole
Este método devuelve una lista de todos los usuarios para un rol y token especificados. Los tokens fungibles se especifican mediante el ID de token. Los tokens no fungibles se especifican mediante el nombre del token. Este método solo puede ser llamado por un Token Admin del código de cadena.
@GetMethod()
@Validator(yup.string(), yup.object())
public async getUsersByRole(role: string, tokenDetail: TokenDetail) {
  await this.Ctx.ERC1155Auth.checkAuthorization("ERC1155ROLE.getUsersByRole", "TOKEN");
  const token = await this.Ctx.ERC1155Token.getTokenByIdOrName(tokenDetail);
  return await this.Ctx.ERC1155Token.getUsersByRole(role, token);
}
Parámetros:
  • role: string: nombre del rol que se va a buscar.
  • tokenDetails: TokenDetail: detalles que especifican el token. Para los tokens fungibles, utilice el siguiente formato:
    {"tokenId":"token1"}
    Para los tokens no fungibles, utilice el siguiente formato:
    {"tokenName":"artCollection"}
Ejemplo de valor devuelto:
{
    "users": [
        {
            "accountId": "oaccount~1422a74d262a3a55a37cd9023ef8836f765d0be7b49d397696b9961d7434d22a",
            "orgId": "appdev",
            "userId": "user2"
        },
        {
            "accountId": "oaccount~60bb20c14a83f6e426e1437c479c5891e1c6477dfd7ad18b73acac5d80bc504b",
            "orgId": "appdev",
            "userId": "user1"
        }
    ]
}

Métodos para la gestión del historial de transacciones

getAccountTransactionHistory
Este método devuelve el historial de transacciones de la cuenta. Este método solo lo puede llamar un Token Admin del código de cadena o el propietario de la cuenta. Para los tokens no fungibles, este método solo se puede llamar cuando se conecta a la red remota de Oracle Blockchain Platform.
@GetMethod()
@Validator(yup.string(), yup.string(), yup.string())
public async getAccountTransactionHistory(orgId: string, userId: string, tokenId?: string) {
  const userAccountId = await this.Ctx.ERC1155Account.generateAccountId(orgId, userId, ACCOUNT_TYPE.USER_ACCOUNT);
  await this.Ctx.ERC1155Auth.checkAuthorization("ERC1155ACCOUNT.getAccountTransactionHistory", "TOKEN", {
    accountId: userAccountId,
  });
  const account = await this.Ctx.ERC1155Account.getAccount(userAccountId, tokenId);
  return await this.Ctx.ERC1155Account.getAccountTransactionHistory(account.accountId);
}
Parámetros:
  • orgId: string: ID del proveedor de servicios de afiliación (MSP) del usuario de la organización actual.
  • userId: string: nombre de usuario o ID de correo electrónico del usuario.
  • tokenId?: string: para una cuenta de token no fungible, una cadena vacía. Para una cuenta de token fungible, el ID de token.
Ejemplo de valor devuelto:
[
    {
        "transactionId": "otransaction~3a6b23c3003626f3947e990eddbd7ac23398d2200e2eb3eac745e6ddfae140bc~7c88c736df38d5622512f1e8dcdd50710eb47c953f1ecb24ac44790a9e2f475b",
        "timestamp": "2023-06-06T14:48:08.000Z",
        "tokenId": "FNFT",
        "transactedAmount": 10,
        "triggeredByUserAccountId": "ouaccount~412de5e3998dcd100973e1bad6e8729fddc1c7ff610beab8376d733a35c51f38",
        "transactedAccount": "oaccount~dcee860665db8740cb77b846e823752185a1e9a185814d0acb305890f5903446",
        "transactionType": "DEBIT",
        "balance": 90
    },
    {
        "transactionId": "otransaction~3a6b23c3003626f3947e990eddbd7ac23398d2200e2eb3eac745e6ddfae140bc~178e3730bc5bee50d02f1464a4eebf733a051905f651e5789039adb4a3edc114",
        "timestamp": "2023-06-06T14:48:08.000Z",
        "tokenId": "NFT",
        "triggeredByUserAccountId": "ouaccount~412de5e3998dcd100973e1bad6e8729fddc1c7ff610beab8376d733a35c51f38",
        "transactedAccount": "oaccount~dcee860665db8740cb77b846e823752185a1e9a185814d0acb305890f5903446",
        "transactionType": "DEBIT"
    },
    {
        "transactionId": "otransaction~c369929e28e78de06c72d020f1418c9a154a7dd280b2e22ebb4ea4485e249124~a7cefb22ff39ee7e36967be71de27da6798548c872061a62dabc56d88d50b930",
        "timestamp": "2023-06-06T14:47:08.000Z",
        "tokenId": "NFT",
        "triggeredByUserAccountId": "ouaccount~412de5e3998dcd100973e1bad6e8729fddc1c7ff610beab8376d733a35c51f38",
        "transactedAccount": "oaccount~e88276a3be547e31b567346bdddde52d37734da4d5fae83ab2e5c98a10097371",
        "transactionType": "MINT"
    },
    {
        "transactionId": "otransaction~114a1bc78d04be48ee6dc140c32c042ee9481cb118959626f090eec744522422~e4eb15d9354f694230df8835ade012100d82aa43672896a2c7125a86e3048f9f",
        "timestamp": "2023-06-05T17:17:57.000Z",
        "tokenId": "FNFT",
        "transactedAmount": 100,
        "triggeredByUserAccountId": "ouaccount~412de5e3998dcd100973e1bad6e8729fddc1c7ff610beab8376d733a35c51f38",
        "transactedAccount": "oaccount~e88276a3be547e31b567346bdddde52d37734da4d5fae83ab2e5c98a10097371",
        "transactionType": "MINT",
        "balance": 100
    }
]
getTransactionById
Este método devuelve los detalles de la transacción para un ID de transacción especificado. Cualquiera puede llamar a este método.
@GetMethod()
@Validator(yup.string())
public async getTransactionById(transactionId: string) {
  return await this.Ctx.ERC1155Transaction.getTransactionById(transactionId);
}
Parámetros:
  • transactionId: string: ID de la transacción.
Ejemplo de valor devuelto:
{
  "transactionId": "otransaction~9ea7b05ab099f7ff4db8342b8c3609031f1d54f11205906e7f1fe88661fe3cbe~33b59ce0c89e96c1e16449f24301581e8e71954f38ad977c7eb6f065e87f2a53",
  "history": [
    {
      "trxId": "9ea7b05ab099f7ff4db8342b8c3609031f1d54f11205906e7f1fe88661fe3cbe",
      "timeStamp": "2022-12-08T09:01:28.000Z",
      "value": {
        "assetType": "otransaction",
        "transactionId": "otransaction~9ea7b05ab099f7ff4db8342b8c3609031f1d54f11205906e7f1fe88661fe3cbe~33b59ce0c89e96c1e16449f24301581e8e71954f38ad977c7eb6f065e87f2a53",
        "tokenId": "tokenOne",
        "fromAccountId": "oaccount~1422a74d262a3a55a37cd9023ef8836f765d0be7b49d397696b9961d7434d22a",
        "toAccountId": "",
        "transactionType": "BURN",
        "amount": 5,
        "timestamp": "2022-12-08T09:01:28.000Z",
        "triggeredByUserAccountId": "ouaccount~24ffd4d32a028a85b4b960f5d55536c837b5429bc7f346150adfa904ec2937cc"
      }
    }
  ]
}
deleteHistoricalTransactions
Este método suprime las transacciones antes de un registro de hora especificado de la base de datos de estado. Este método solo puede ser llamado por un Token Admin del código de cadena.
@Validator(yup.date())
public async deleteHistoricalTransactions(time_to_expiration: Date) {
  await this.Ctx.ERC1155Auth.checkAuthorization("TRANSACTION.deleteTransactions", "TOKEN");
  return await this.Ctx.ERC1155Transaction.deleteTransactions(time_to_expiration);
}
Parámetros:
  • timestamp: string: todas las transacciones anteriores a este registro de hora se suprimirán.
Ejemplo de valor devuelto:
{
  "msg": "Successfuly deleted transaction older than date: Thu Apr 07 2022 21:18:59 GMT+0000 (Coordinated Universal Time).",
  "transactions": [
    "otransaction~30513757d8b647fffaafac440d743635f5c1b2e41b25ebd6b70b5bbf78a2643f",
    "otransaction~ac0e908c735297941ba58bb208ee61ff4816a1e54c090d68024f82adf743892b"
  ]
}

Métodos para la gestión del comportamiento del token: comportamiento minable

mintBatch
Este método crea (minuta) varios tokens en una operación por lotes. Este método crea solo tokens fungibles o tokens fraccionarios no fungibles.

Para los tokens fungibles, si el rol minter está definido en el archivo de especificación, cualquier usuario con el rol minter puede llamar a este método. De lo contrario, cualquier usuario puede utilizar este método para acuñar tokens. No puede acuñar más que la propiedad max_mint_quantity del token, si esa propiedad se especificó cuando se creó o actualizó el token.

Para los tokens no fungibles, si el rol minter está definido en el archivo de especificación, cualquier usuario con el rol minter puede llamar a este método. De lo contrario, cualquier usuario puede utilizar este método para acuñar tokens. Además, el emisor de llamada también debe ser el creador del token. No hay límite superior para la cantidad de tokens fraccionarios no fungibles que se pueden acuñar.

No puede utilizar este método para acuñar un token no fungible completo.

@Validator(yup.string(), yup.string(), yup.array().of(yup.string()), yup.array().of(yup.number()))
public async mintBatch(orgId: string, userId: string, tokenIds: string[], quantity: number[]) {
  const accountId = this.Ctx.ERC1155Account.generateAccountId(orgId, userId, ACCOUNT_TYPE.USER_ACCOUNT);
  return await this.Ctx.ERC1155Token.mintBatch(accountId, tokenIds, quantity);
}
Parámetros:
  • orgId: string: ID del proveedor de servicios de afiliación (MSP) del usuario de la organización actual.
  • userId: string: nombre de usuario o ID de correo electrónico del usuario.
  • tokenIds: string[]: lista de ID de token para los que se deben acuñar tokens.
  • quantity: number[]: lista de cantidades de tokens que se deben acuñar, que corresponde a la matriz de ID de token.
Devuelve:
  • En caso de éxito, un objeto JSON que incluya detalles sobre los tokens extraídos.
Ejemplo de valor devuelto:
{
    "msg": "Successfully minted batch of tokens for User-Account-Id ouaccount~412de5e3998dcd100973e1bad6e8729fddc1c7ff610beab8376d733a35c51f38 (Org-Id: appdev, User-Id: idcqa).",
    "details": [
        {
            "msg": "Successfully minted 100 tokens of fractional tokenId: plot55 to Org-Id: appdev, User-Id: idcqa"
        },
        {
            "msg": "Successfully minted 100 tokens of tokenId: loyalty to Token-Account-Id oaccount~21206f309941a2a23c4f158a0fe1b8f12bb8e2b0c9a2e1358f5efebc0c7d410e"
        }
    ]
}

Métodos para la gestión del comportamiento del token - Comportamiento transferible

batchTransferFrom
Este método completa una operación por lotes que transfiere tokens especificados en una lista de ID de token de un usuario a otro usuario.

Para las NFT, dado que el método transfiere la propiedad de la NFT, el remitente de la NFT debe ser el propietario del token.

En el caso de los NFT fraccionarios, si un usuario (incluido el creador del token) transfiere todas las acciones que posee, perderá la propiedad del token. Si cualquier parte de un token se transfiere a un usuario, ese usuario se convierte automáticamente en uno de los propietarios de la NFT fraccional.

Este método no valida que el emisor de llamada del método sea el remitente especificado. Este método puede ser llamado por cualquier usuario.

@Validator(yup.string(), yup.string(), yup.string(), yup.string(), yup.array().of(yup.string()), yup.array().of(yup.number()))
public async batchTransferFrom(
  fromOrgId: string,
  fromUserId: string,
  toOrgId: string,
  toUserId: string,
  tokenIds: string[],
  quantity: number[]
) {
  const fromAccountId = this.Ctx.ERC1155Account.generateAccountId(fromOrgId, fromUserId, ACCOUNT_TYPE.USER_ACCOUNT);
  const toAccountId = this.Ctx.ERC1155Account.generateAccountId(toOrgId, toUserId, ACCOUNT_TYPE.USER_ACCOUNT);
  return await this.Ctx.ERC1155Token.batchTransferFrom(fromAccountId, toAccountId, tokenIds, quantity);
}
Parámetros:
  • fromOrgId: string: ID del proveedor de servicios de afiliación (MSP) del remitente y el propietario del token en la organización actual.
  • fromUserId: string: nombre de usuario o ID de correo electrónico del remitente y el propietario del token.
  • toOrgId: string: ID del proveedor de servicios de membresía (MSP) del receptor en la organización actual.
  • toUserId: string: nombre de usuario o ID de correo electrónico del receptor.
  • tokenIds: string[]: lista de ID de token para los tokens que se van a transferir.
  • quantity: number[]: lista de cantidades de tokens que se deben transferir, correspondiente a la matriz de ID de token.
Devuelve:
  • Si se realiza correctamente, se muestra un mensaje con detalles para cada transferencia de token.
Ejemplo de valor devuelto:
[
    {
        "msg": "Successfully transferred NFT token: 'FNFT' of '10' quantity from Account-Id: oaccount~e88276a3be547e31b567346bdddde52d37734da4d5fae83ab2e5c98a10097371 (Org-Id: appdev, User-Id: idcqa) to Account-Id: oaccount~dcee860665db8740cb77b846e823752185a1e9a185814d0acb305890f5903446 (Org-Id: appdev, User-Id: user1_minter)"
    },
    {
        "msg": "Successfully transferred 10 FT token: 'FT' from Account-Id: oaccount~21206f309941a2a23c4f158a0fe1b8f12bb8e2b0c9a2e1358f5efebc0c7d410e (Org-Id: appdev, User-Id: idcqa) to Account-Id: oaccount~1089ee5122f367ee0ca38c6660298f4b81f199627e4f67f3691c0f628237974c (Org-Id: appdev, User-Id: user1_minter)"
    },
    {
        "msg": "Successfully transferred NFT token: 'NFT' from Account-Id: oaccount~e88276a3be547e31b567346bdddde52d37734da4d5fae83ab2e5c98a10097371 (Org-Id: appdev, User-Id: idcqa) to Account-Id: oaccount~dcee860665db8740cb77b846e823752185a1e9a185814d0acb305890f5903446 (Org-Id: appdev, User-Id: user1_minter)"
    }
]
safeBatchTransferFrom
Este método completa una operación por lotes que transfiere tokens especificados en una lista de ID de token de un usuario a otro usuario.

Para las NFT, dado que el método transfiere la propiedad de la NFT, el remitente de la NFT debe ser el propietario del token.

En el caso de los NFT fraccionarios, si un usuario (incluido el creador del token) transfiere todas las acciones que posee, perderá la propiedad del token. Si cualquier parte de un token se transfiere a un usuario, ese usuario se convierte automáticamente en uno de los propietarios de la NFT fraccional.

El emisor de llamada del método debe ser el remitente especificado. Este método puede ser llamado por cualquier usuario.

@Validator(yup.string(), yup.string(), yup.string(), yup.string(), yup.array().of(yup.string()), yup.array().of(yup.number()))
public async safeBatchTransferFrom(
  fromOrgId: string,
  fromUserId: string,
  toOrgId: string,
  toUserId: string,
  tokenIds: string[],
  quantity: number[]
) {
  const fromAccountId = this.Ctx.ERC1155Account.generateAccountId(fromOrgId, fromUserId, ACCOUNT_TYPE.USER_ACCOUNT);
  const toAccountId = this.Ctx.ERC1155Account.generateAccountId(toOrgId, toUserId, ACCOUNT_TYPE.USER_ACCOUNT);
  return await this.Ctx.ERC1155Token.safeBatchTransferFrom(fromAccountId, toAccountId, tokenIds, quantity);
}
Parámetros:
  • fromOrgId: string: ID del proveedor de servicios de afiliación (MSP) del remitente y el propietario del token en la organización actual.
  • fromUserId: string: nombre de usuario o ID de correo electrónico del remitente y el propietario del token.
  • toOrgId: string: ID del proveedor de servicios de membresía (MSP) del receptor en la organización actual.
  • toUserId: string: nombre de usuario o ID de correo electrónico del receptor.
  • tokenIds: string[]: lista de ID de token para los tokens que se van a transferir.
  • quantity: number[]: lista de cantidades de tokens que se deben transferir, correspondiente a la matriz de ID de token.
Devuelve:
  • Si se realiza correctamente, se muestra un mensaje con detalles para cada transferencia de token.
Ejemplo de valor devuelto:
[
    {
        "msg": "Successfully transferred NFT token: 'FNFT' of '10' quantity from Account-Id: oaccount~e88276a3be547e31b567346bdddde52d37734da4d5fae83ab2e5c98a10097371 (Org-Id: appdev, User-Id: idcqa) to Account-Id: oaccount~dcee860665db8740cb77b846e823752185a1e9a185814d0acb305890f5903446 (Org-Id: appdev, User-Id: user1_minter)"
    },
    {
        "msg": "Successfully transferred 10 FT token: 'FT' from Account-Id: oaccount~21206f309941a2a23c4f158a0fe1b8f12bb8e2b0c9a2e1358f5efebc0c7d410e (Org-Id: appdev, User-Id: idcqa) to Account-Id: oaccount~1089ee5122f367ee0ca38c6660298f4b81f199627e4f67f3691c0f628237974c (Org-Id: appdev, User-Id: user1_minter)"
    },
    {
        "msg": "Successfully transferred NFT token: 'NFT' from Account-Id: oaccount~e88276a3be547e31b567346bdddde52d37734da4d5fae83ab2e5c98a10097371 (Org-Id: appdev, User-Id: idcqa) to Account-Id: oaccount~dcee860665db8740cb77b846e823752185a1e9a185814d0acb305890f5903446 (Org-Id: appdev, User-Id: user1_minter)"
    }
]
balanceOfBatch
Este método completa una operación por lotes que obtiene el saldo de las cuentas de token. Los detalles de la cuenta se especifican en tres listas separadas de IDs de organización, IDs de usuario e IDs de token. Este método solo puede ser llamado por un Token Admin del código de cadena o por propietarios de cuenta. Los propietarios de cuentas solo pueden ver los detalles del saldo de las cuentas de las que son propietarios.
@GetMethod()
@Validator(yup.array().of(yup.string()), yup.array().of(yup.string()), yup.array().of(yup.string()))
public async balanceOfBatch(orgIds: string[], userIds: string[], tokenIds: string[]) {
  let callerAccountCheck = false;
  try {
    await this.Ctx.ERC1155Auth.checkAuthorization("ERC1155ACCOUNT.balanceOfBatch", "TOKEN");
  } catch (err) {
    callerAccountCheck = true;
  }
  const accountIds = await this.Ctx.ERC1155Account.generateAccountIds(orgIds, userIds, callerAccountCheck);
  return await this.Ctx.ERC1155Account.balanceOfBatch(accountIds, tokenIds);
}
Parámetros:
  • orgIds: string[]: lista de los ID de proveedor de servicios de afiliación (MSP) de la organización actual.
  • userIds: string[]: lista del nombre de usuario o los ID de correo electrónico.
  • tokenIds: string[]: lista de los ID de token.
Ejemplo de valor devuelto:

En el siguiente ejemplo, el ID de token FNFT representa un token no fungible fraccional y el ID de token FT representa un token fungible.

[
    {
        "orgId": "appdev",
        "userId": "idcqa",
        "userAccountId": "ouaccount~412de5e3998dcd100973e1bad6e8729fddc1c7ff610beab8376d733a35c51f38",
        "tokenAccountId": "oaccount~e88276a3be547e31b567346bdddde52d37734da4d5fae83ab2e5c98a10097371",
        "tokenId": "FNFT",
        "balance": 100
    },
    {
        "orgId": "appdev",
        "userId": "idcqa",
        "userAccountId": "ouaccount~412de5e3998dcd100973e1bad6e8729fddc1c7ff610beab8376d733a35c51f38",
        "tokenAccountId": "oaccount~21206f309941a2a23c4f158a0fe1b8f12bb8e2b0c9a2e1358f5efebc0c7d410e",
        "tokenId": "FT",
        "balance": 50
    },
    {
        "orgId": "appdev",
        "userId": "user1_minter",
        "userAccountId": "ouaccount~9501bb774c156eb8354dfe489250ea91f757523d70f08ee494bda98bb352003b",
        "tokenAccountId": "oaccount~dcee860665db8740cb77b846e823752185a1e9a185814d0acb305890f5903446",
        "tokenId": "FNFT",
        "balance": 10
    }
]
exchangeToken
Este método intercambia tokens entre cuentas especificadas. Este método solo admite el intercambio entre un NFT y un token fungible o un token fungible y un NFT. La NFT puede ser total o fraccional. Este método solo puede ser llamado por el propietario de la cuenta.
@Validator(yup.string(), yup.string(), yup.string(), yup.number(), yup.string(), yup.string(), yup.string(), yup.number())
  public async exchangeToken(
    fromTokenId: string,
    fromOrgId: string,
    fromUserId: string,
    fromTokenQuantity: number,
    toTokenId: string,
    toOrgId: string,
    toUserId: string,
    toTokenQuantity: number
  ) {
    const fromUserAccountId = this.Ctx.ERC1155Account.generateAccountId(fromOrgId, fromUserId, ACCOUNT_TYPE.USER_ACCOUNT);
    await this.Ctx.ERC1155Auth.checkAuthorization("ERC1155ACCOUNT.exchangeToken", "TOKEN", { accountId: fromUserAccountId });
    const toUserAccountId = this.Ctx.ERC1155Account.generateAccountId(toOrgId, toUserId, ACCOUNT_TYPE.USER_ACCOUNT);
    return await this.Ctx.ERC1155Token.exchangeToken(
      fromTokenId,
      fromUserAccountId,
      fromTokenQuantity,
      toTokenId,
      toUserAccountId,
      toTokenQuantity
    );
  }
Parámetros:
  • fromTokenId: string: ID del token que posee el remitente.
  • fromOrgId: string: ID del proveedor de servicios de membresía (MSP) del remitente en la organización actual.
  • fromUserId: string: nombre de usuario o ID de correo electrónico del remitente.
  • fromTokenQuantity: number: cantidad de tokens del remitente para intercambiar con el receptor.
  • toTokenId: string: ID del token que posee el receptor.
  • toOrgId: string: ID del proveedor de servicios de membresía (MSP) del receptor en la organización actual.
  • toUserId: string: nombre de usuario o ID de correo electrónico del receptor.
  • toTokenQuantity: number: cantidad de tokens del receptor para intercambiar con el remitente.
Devuelve:
  • En caso de éxito, un mensaje con detalles de intercambio de token.
Ejemplo de valor devuelto:
{
    "msg": "Succesfully exchanged 10 tokens of type nonfungible with tokenId: [r1] from Account oaccount~e88276a3be547e31b567346bdddde52d37734da4d5fae83ab2e5c98a10097371 (OrgId: appdev, UserId: idcqa) to 10 tokens of type fungible with tokenId: [loy1] from Account oaccount~1089ee5122f367ee0ca38c6660298f4b81f199627e4f67f3691c0f628237974c (OrgId: appdev, UserId: user1_minter)"
}

Métodos para la Gestión del Comportamiento del Token - Comportamiento Quemable

burnBatch
Este método desactiva, o quema, los tokens fungibles y no fungibles especificados. Cualquier usuario con el rol de quemador puede llamar a este método.
@Validator(yup.string(), yup.string(), yup.array().of(yup.string()), yup.array().of(yup.number()))
public async burnBatch(orgId: string, userId: string, tokenIds: string[], quantity: number[]) {
    const accountId = this.Ctx.ERC1155Account.generateAccountId(orgId, userId, ACCOUNT_TYPE.USER_ACCOUNT);
    return await this.Ctx.ERC1155Token.burn(accountId, tokenIds, quantity);
}
Parámetros:
  • orgId: string: ID del proveedor de servicios de membresía (MSP) en la organización actual.
  • userId: string: nombre de usuario o ID de correo electrónico.
  • tokenIds: string[]: lista de los ID de token que se van a grabar
  • quantity: number[]: lista de cantidades de tokens que se van a grabar, que corresponde a la matriz de ID de token.
Devuelve:
  • En caso de éxito, un mensaje con detalles sobre las operaciones de grabación.
Ejemplo de valor devuelto:
[
  {
    "msg": "Successfully burned NFT token: 'art' from Account-Id: oaccount~76cb672eeb1bd535899562a840d0c15a356db89e24bc8b43ac1dba845a4282c6 (Org-Id: appdev, User-Id: idcqa)"
  },
  {
    "msg": "Successfully burned 5 tokens of tokenId: tokenOne from Account-ID oaccount~1422a74d262a3a55a37cd9023ef8836f765d0be7b49d397696b9961d7434d22a (Org-Id: appdev, User-Id: idcqa)"
  },
  {
    "msg": "Successfully burned 2 token share of tokenId: FNFT from Account-ID oaccount~87bcb699d507368ee3966cd03ee6d7736ffc55dde8c0f0e16b14866334ac504a (Org-Id: AutoF1377358917, User-Id: idcqa)"
  }
]
burnNFT
Este método desactiva o quema el token no fungible especificado y devuelve un objeto de token y un historial de tokens. Cualquier usuario con el rol de quemador puede llamar a este método.
@Validator(yup.string(), yup.string(), yup.string())
public async burnNFT(orgId: string, userId: string, tokenId: string): Promise<any> {
    const userAccountId = this.Ctx.ERC1155Account.generateAccountId(orgId, userId);
    const token = await this.Ctx.ERC1155Token.get(tokenId);
    if (token.tokenType !== TOKEN_TYPE.NON_FUNGIBLE) {
      
      throw new Error(`The Token with id ${tokenId} is not a nonfungible token`);
    }
    if (token.isBurned === true) {
      throw new Error(`token with tokenId ${tokenId} is already burned`);
    }
    let tokenBurnQuantity = 1;
    const tokenUnit = token.tokenUnit;
    if (tokenUnit === TOKEN_UNIT.FRACTIONAL) {
       const owners = await this.Ctx.ERC1155Token.getFractionalNFTOwners(tokenId);
       if (owners.length !== 1) {
         throw new Error(`Token with tokenId ${tokenId} has multiple owners`);
       }
      tokenBurnQuantity = token.quantity;
    }
    const tokenHistory = await this.Ctx.ERC1155Token.getTokenHistory(tokenId);
    await this.Ctx.ERC1155Token.burn(userAccountId, [tokenId], [tokenBurnQuantity]);
    token.tokenId = parseInt(token.tokenId);
    if(Number.isNaN(token.tokenId)) {
      throw new Error(`tokenId is expected to be integer but found ${tokenId}`)
    }
    token.isBurned = true;
    return {...token, tokenHistory: JSON.stringify(tokenHistory)};
}
Parámetros:
  • orgId: string: ID del proveedor de servicios de membresía (MSP) en la organización actual.
  • userId: string: nombre de usuario o ID de correo electrónico.
  • tokenId: string: ID del token no fungible que se va a grabar
Devuelve:
  • Cuando se realiza correctamente, un objeto de token en formato JSON que incluye información del historial de tokens.
Ejemplo de valor devuelto:
{
    "assetType": "otoken",
    "tokenId": 1,
    "tokenName": "artcollection",
    "tokenStandard": "erc1155+",
    "tokenType": "nonfungible",
    "tokenUnit": "whole",
    "behaviors": [
        "indivisible",
        "singleton",
        "mintable",
        "transferable",
        "burnable",
        "roles"
    ],
    "roles": {
        "minter_role_name": "minter"
    },
    "mintable": {
        "max_mint_quantity": 20000
    },
    "quantity": 1,
    "createdBy": "oaccount~42e89f4c72dfde9502814876423c6da630d466e87436dd1aae201d347ad1288d",
    "creationDate": "2023-08-22T07:32:40.000Z",
    "owner": "oaccount~42e89f4c72dfde9502814876423c6da630d466e87436dd1aae201d347ad1288d",
    "isBurned": true,
    "tokenUri": "example.com",
    "price": 120,
    "onSaleFlag": false,
    "tokenHistory": "[{\"trxId\":\"21a932750f2d4ccffd62eda5678a577cadde0513ed7c7a307f24cd7713a1818b\",\"timeStamp\":\"2023-08-22T07:32:40.000Z\",\"value\":{\"assetType\":\"otoken\",\"tokenId\":\"1\",\"tokenName\":\"artcollection\",\"tokenStandard\":\"erc1155+\",\"tokenType\":\"nonfungible\",\"tokenUnit\":\"whole\",\"behaviors\":[\"indivisible\",\"singleton\",\"mintable\",\"transferable\",\"burnable\",\"roles\"],\"roles\":{\"minter_role_name\":\"minter\"},\"mintable\":{\"max_mint_quantity\":20000},\"quantity\":1,\"createdBy\":\"oaccount~42e89f4c72dfde9502814876423c6da630d466e87436dd1aae201d347ad1288d\",\"creationDate\":\"2023-08-22T07:32:40.000Z\",\"owner\":\"oaccount~42e89f4c72dfde9502814876423c6da630d466e87436dd1aae201d347ad1288d\",\"isBurned\":false,\"tokenUri\":\"example.com\",\"price\":120,\"onSaleFlag\":false}}]"
}

Métodos de SDK

Métodos de Gestión de Control de Acceso

isUserTokenAdmin
Este método devuelve el valor booleano true si el usuario especificado es Token Admin y false de lo contrario. El método solo puede ser llamado por un Token Admin del código de cadena de token.
Ctx.ERC1155Auth.isUserTokenAdmin(orgId: string, userId: string)
Parámetros:
  • orgId: string: ID del proveedor de servicios de afiliación (MSP) del usuario de la organización actual.
  • userId: string: nombre de usuario o ID de correo electrónico del usuario.
Ejemplo de valor devuelto:
{
  "result": true
}
addAdmin
Este método agrega un usuario como Token Admin del código de cadena de token. El método solo puede ser llamado por un Token Admin del código de cadena de token.
Ctx.ERC1155Admin.addAdmin(orgId: string, userId: string)
Parámetros:
  • orgId: string: ID del proveedor de servicios de afiliación (MSP) del usuario de la organización actual.
  • userId: string: nombre de usuario o ID de correo electrónico del usuario.
Devuelve:
  • Si se realiza correctamente, un mensaje que muestra los detalles del usuario agregado como Token Admin del código de cadena de token.
Ejemplo de valor devuelto:
{
  "msg": "Successfully added Admin (OrgId: appDev, UserId: user1)"
}
removeAdmin
Este método elimina un usuario como Token Admin del código de cadena de token. El método solo puede ser llamado por un Token Admin del código de cadena de token. No puede eliminarse como Token Admin.
Ctx.ERC1155Admin.removeAdmin(orgId: string, userId: string)
Parámetros:
  • orgId: string: ID del proveedor de servicios de afiliación (MSP) del usuario de la organización actual.
  • userId: string: nombre de usuario o ID de correo electrónico del usuario.
Devuelve:
  • En caso de éxito, un mensaje que muestra los detalles del usuario eliminado como Token Admin del código de cadena de token.
Ejemplo de valor devuelto:
{
  "msg": "Successfully removed Admin (OrgId: appDev, UserId: user1)"
}
getAllAdmins
Este método devuelve una lista de todos los usuarios Token Admin.
Ctx.ERC1155Admin.getAllAdmins()
Parámetros:
  • ninguno
Devuelve:
  • Una vez realizada correctamente, se muestra una lista de todos los usuarios Token Admin, identificada por el ID de organización y el ID de usuario.
Ejemplo de valor devuelto:
{
  "admins": [
    {
      "orgId": "appdev",
      "userId": "idcqa"
    },
    {
      "orgId": "appdev",
      "userId": "user1"
    }
  ]
}
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. Algunos métodos de token solo pueden ser ejecutados por Token Admin o AccountOwner del token o por MultipleAccountOwner para los usuarios con varias cuentas. La asignación de control de acceso se describe en el archivo ../lib/constant.ts. 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.
ADMIN: {
   isUserTokenAdmin: ["Admin"],
   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"],
   getTokenHistory: ["Admin"],
 },
 ROLE: {
   getAccountsByRole: ["Admin"],
   getUsersByRole: ["Admin"],
 },
 TRANSACTION: {
   deleteTransactions: ["Admin"],
 },
 ACCOUNT: {
   createAccount: ["Admin"],
   associateToken: ["Admin"],
   getAllAccounts: ["Admin"],
   getAccountsByUser: ["Admin", "MultipleAccountOwner"],
   getAccount: ["Admin", "AccountOwner"],
   history: ["Admin", "AccountOwner"],
   getAccountTransactionHistory: ["Admin", "AccountOwner"],
   getAccountTransactionHistoryWithFilters: ["Admin", "AccountOwner"],
   getSubTransactionsById: ["Admin", TRANSACTION_INVOKER],
   getSubTransactionsByIdWithFilters: ["Admin", TRANSACTION_INVOKER],
   getAccountBalance: ["Admin", "AccountOwner"],
   getAccountOnHoldBalance: ["Admin", "AccountOwner"],
   getOnHoldIds: ["Admin", "AccountOwner"],
   getConversionHistory: ["Admin", "AccountOwner"],
 },
 ACCOUNT_STATUS: {
   get: ["Admin", "AccountOwner"],
   history: ["Admin", "AccountOwner"],
   activateAccount: ["Admin"],
   suspendAccount: ["Admin"],
   deleteAccount: ["Admin"],
 },
 TOKEN_CONVERSION: {
   initializeExchangePoolUser: ["Admin"],
   addConversionRate: ["Admin"],
   updateConversionRate: ["Admin"],
   getConversionRate: ["Admin", "AnyAccountOwner"],
   getConversionRateHistory: ["Admin", "AnyAccountOwner"],
   tokenConversion: ["Admin", "AnyAccountOwner"],
   getExchangePoolUser: ["Admin"],
 },
 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"],
   getAccountByUser: ["Admin", "MultipleAccountOwner"],
   history: ["Admin", "AccountOwner"],
   getAccountTransactionHistory: ["Admin", "AccountOwner"],
   getAccountTransactionHistoryWithFilters: ["Admin", "AccountOwner"],
   balanceOf: ["Admin", "MultipleAccountOwner"],
 },
 ERC1155ADMIN: {
   isUserTokenAdmin: ["Admin"],
   addAdmin: ["Admin"],
   removeAdmin: ["Admin"],
   getAllAdmins: ["Admin"],
 },
 ERC1155TOKEN: {
   getAllTokens: ["Admin"],
   get: ["Admin", TOKEN_OWNER],
   getAllTokensByUser: ["Admin", "AccountOwner"],
   totalSupply: ["Admin"],
   totalNetSupply: ["Admin"],
   getTokensByName: ["Admin"],
   getDecimals: ["Admin"],
   addRoleMember: ["Admin"],
   removeRoleMember: ["Admin"],
   isInRole: ["Admin", "AccountOwner"],
   save: ["Admin"],
   update: ["Admin"],
 },
 ERC1155ACCOUNT: {
   createAccount: ["Admin"],
   createUserAccount: ["Admin"],
   createTokenAccount: ["Admin"],
   associateFungibleTokenToAccount: ["Admin", "AccountOwner"],
   getAccountsByUser: ["Admin", "AccountOwner"],
   getAccount: ["Admin", "AccountOwner"],
   history: ["Admin", "AccountOwner"],
   getAllAccounts: ["Admin"],
   balanceOfBatch: ["Admin"],
   getAccountTransactionHistory: ["Admin", "AccountOwner"],
   getAccountTransactionHistoryWithFilters: ["Admin", "AccountOwner"],
   exchangeToken: ["AccountOwner"],
   getAccountDetailsByUser: ["Admin", "AccountOwner"],
 },
 ERC1155ROLE: {
   getAccountsByRole: ["Admin"],
   getUsersByRole: ["Admin"],
 },
Ctx.ERC1155Auth.checkAuthorization(classFuncName: string, ...args)
Parámetros:
  • classFuncName: string: valor de asignación entre la clase y los métodos, como se describe en el archivo ../lib/constant.ts.
  • ...args: argumento de variable donde args[0] toma la constante 'TOKEN' y args[1] toma account_id para agregar una comprobación de control de acceso para un AccountOwner. Para agregar una comprobación de control de acceso para MultipleAccountOwner, args[1] toma org_id y args[2] toma user_id.
Devuelve:
  • En caso de éxito, una promesa. En caso de error, rechazo con un mensaje de error.

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

save
Este método crea tokens. Cada token definido tiene su propio método de creación. Para los tokens no fungibles, si el rol minter está definido en el archivo de especificación, cualquier usuario con el rol minter puede llamar a este método para crear un NFT. De lo contrario, cualquier usuario puede utilizar este método para crear (mint) NFT. El usuario que llama a este método se convierte en el propietario de la NFT (total o fraccional).
Ctx.ERC1155Token.save(tokenAsset: <Token Class>, quantity?: number);
Parámetros:
  • tokenAsset: <Token Class>: el activo de token. Las propiedades del activo se definen en el archivo de modelo.
  • quantity: number: solo para tokens no fungibles, el número de tokens que se deben acuñar. El único valor soportado para este parámetro es 1.
Devuelve:
  • En caso de éxito, el activo de token en formato JSON, que puede incluir la siguiente información.
  • tokenMetadata: información de JSON que describe el token.
  • createdBy: ID de cuenta del emisor de llamada, que es el usuario que está minando el token. Esta propiedad no se puede editar.
  • creationDate: registro de hora de la transacción de acuñación. Esta propiedad no se puede editar.
  • isBurned: esta propiedad indica si el token se ha quemado. Esta propiedad no se puede editar.
  • tokenName: nombre del token. Esta propiedad no se puede editar.
  • tokenDesc: descripción del token.
  • symbol: símbolo del token. Esta propiedad no se puede editar.
  • tokenStandard: el estándar del token. Esta propiedad no se puede editar.
  • tokenType: tipo de token (fungible o no fungible). Esta propiedad no se puede editar.
  • tokenUnit: unidad del token (total o fraccional). Esta propiedad no se puede editar.
  • behaviors: lista de comportamientos de token. Esta propiedad no se puede editar.
  • mintable: propiedades relacionadas con la minería. El valor max_mint_quantity define el número máximo de tokens que se pueden crear para la clase de token.
  • owner: ID de cuenta del propietario actual, que es el emisor de la llamada del método.
  • tokenUri: el URI del token.
  • quantity: cantidad del token.
Ejemplo de valor devuelto (NFT total):
{
    "tokenMetadata": {
        "paintingName": "monalisa",
        "description": "monalisa painting",
        "image": "image link",
        "painterName": "Leonardo da Vinci"
    },
    "assetType": "otoken",
    "quantity": 1,
    "tokenId": "artnft",
    "tokenName": "artcollection",
    "tokenDesc": "artcollection nft",
    "tokenStandard": "erc1155+",
    "tokenType": "nonfungible",
    "tokenUnit": "whole",
    "behaviors": [
        "indivisible",
        "singleton",
        "mintable",
        "transferable",
        "burnable",
        "roles"
    ],
    "roles": {
        "minter_role_name": "minter",
        "burner_role_name": "burner"
    },
    "mintable": {
        "max_mint_quantity": 500
    },
    "owner": "oaccount~42e89f4c72dfde9502814876423c6da630d466e87436dd1aae201d347ad1288d",
    "createdBy": "oaccount~42e89f4c72dfde9502814876423c6da630d466e87436dd1aae201d347ad1288d",
    "creationDate": "2022-12-29T04:08:35.000Z",
    "isBurned": false,
    "tokenUri": "tu",
    "price": 10000,
    "onSaleFlag": false
}
Ejemplo de valor de devolución (token fungible):
{
    "assetType": "otoken",
    "tokenId": "Loyalty",
    "tokenName": "loyalty",
    "tokenDesc": "Token Description",
    "tokenStandard": "erc1155+",
    "tokenType": "fungible",
    "tokenUnit": "fractional",
    "behaviors": [
        "divisible",
        "mintable",
        "transferable",
        "burnable",
        "roles"
    ],
    "roles": {
        "minter_role_name": "minter",
        "burner_role_name": "burner"
    },
    "mintable": {
        "max_mint_quantity": 10000
    },
    "divisible": {
        "decimal": 2
    },
    "currency_name": "Dollar"
}
Ejemplo de valor de retorno (NFT fraccional):
{
    "tokenMetadata": {
        "painting_name": "paint",
        "description": "Painting Description"
    },
    "assetType": "otoken",
    "tokenId": "realEstate",
    "tokenName": "realestate",
    "tokenDesc": "Token Description",
    "tokenStandard": "erc1155+",
    "tokenType": "nonfungible",
    "tokenUnit": "fractional",
    "behaviors": [
        "divisible",
        "mintable",
        "transferable",
        "burnable",
        "roles"
    ],
    "roles": {
        "minter_role_name": "minter",
        "burner_role_name": "burner"
    },
    "mintable": {
        "max_mint_quantity": 20000
    },
    "quantity": 100,
    "createdBy": "oaccount~42e89f4c72dfde9502814876423c6da630d466e87436dd1aae201d347ad1288d",
    "creationDate": "2023-06-14T04:20:14.000Z",
    "divisible": {
        "decimal": 2
    },
    "isBurned": false,
    "tokenUri": "www.realestate.example.com",
    "price": 1000,
    "on_sale_flag": true
}
update
Este método actualiza tokens. No puede actualizar los metadatos de token ni el URI de token de tokens no fungibles.
Ctx.ERC1155Token.update(tokenAsset: any);
Parámetros:
  • tokenAsset: <Token Class>: el activo de token. Las propiedades del activo se definen en el archivo de modelo.
Devuelve:
  • Cuando se realiza correctamente, el activo de token actualizado está en formato JSON.
Ejemplo de valor devuelto (NFT total):
{
    "tokenMetadata": {
        "paintingName": "monalisa",
        "description": "monalisa painting",
        "image": "image link",
        "painterName": "Leonardo da Vinci"
    },
    "assetType": "otoken",
    "quantity": 1,
    "tokenId": "artnft",
    "tokenName": "artcollection",
    "tokenDesc": "artcollection nft",
    "tokenStandard": "erc1155+",
    "tokenType": "nonfungible",
    "tokenUnit": "whole",
    "behaviors": [
        "indivisible",
        "singleton",
        "mintable",
        "transferable",
        "burnable",
        "roles"
    ],
    "roles": {
        "minter_role_name": "minter",
        "burner_role_name": "burner"
    },
    "mintable": {
        "max_mint_quantity": 500
    },
    "owner": "oaccount~42e89f4c72dfde9502814876423c6da630d466e87436dd1aae201d347ad1288d",
    "createdBy": "oaccount~42e89f4c72dfde9502814876423c6da630d466e87436dd1aae201d347ad1288d",
    "creationDate": "2022-12-29T04:08:35.000Z",
    "isBurned": false,
    "tokenUri": "tu",
    "price": 10000,
    "onSaleFlag": false
}
history (Token)
Este método devuelve el historial de un identificador de token especificado.
Ctx.ERC1155Token.history(tokenId: string)
Parámetros:
  • tokenId: string: ID del token.
Devuelve:
  • En caso de éxito, una matriz de JSON que contiene el historial de tokens.
Ejemplo de valor de devolución (token fungible):
[
    {
        "trxId": "ef4af760c3d7ee5e273196231d59fb91cafe6ca0f78c64747e87bc9bcbb3334b",
        "timeStamp": "2023-09-04T02:36:20.000Z",
        "value": {
            "assetType": "otoken",
            "tokenId": "LoyaltyToken",
            "tokenName": "loyalty",
            "tokenDesc": "Updated Fungible Whole",
            "tokenStandard": "erc1155+",
            "tokenType": "fungible",
            "tokenUnit": "fractional",
            "behaviors": [
                "divisible",
                "mintable",
                "transferable",
                "burnable",
                "roles"
            ],
            "roles": {
                "minter_role_name": "minter",
                "burner_role_name": "burner"
            },
            "mintable": {
                "max_mint_quantity": 10000
            },
            "divisible": {
                "decimal": 2
            },
            "currency_name": "Rupees"
        }
    },
    {
        "trxId": "4fb391a8903633a12a545cd2ecfb57f5575241325abf59995e2a4ed96572bb09",
        "timeStamp": "2023-09-04T02:35:07.000Z",
        "value": {
            "assetType": "otoken",
            "tokenId": "LoyaltyToken",
            "tokenName": "loyalty",
            "tokenDesc": "Fungible Whole",
            "tokenStandard": "erc1155+",
            "tokenType": "fungible",
            "tokenUnit": "fractional",
            "behaviors": [
                "divisible",
                "mintable",
                "transferable",
                "burnable",
                "roles"
            ],
            "roles": {
                "minter_role_name": "minter",
                "burner_role_name": "burner"
            },
            "mintable": {
                "max_mint_quantity": 10000
            },
            "divisible": {
                "decimal": 2
            },
            "currency_name": "Dollar"
        }
    }
]
Ejemplo de valor de retorno (NFT fraccional):
[
    {
        "txId": "99bca74f401465206da7499cbf704dd443b3c3d94e348b1d6682ab5ee1864a08",
        "timestamp": "2023-06-20T01:09:18.000Z",
        "value": {
            "assetType": "otoken",
            "tokenId": "FNFT",
            "tokenName": "realestate",
            "tokenStandard": "erc1155+",
            "tokenType": "nonfungible",
            "tokenUnit": "fractional",
            "behaviors": [
                "divisible",
                "mintable",
                "transferable",
                "burnable",
                "roles"
            ],
            "roles": {
                "minter_role_name": "minter",
                "burner_role_name": "burner"
            },
            "mintable": {
                "max_mint_quantity": 20000
            },
            "quantity": 100,
            "createdBy": "oaccount~87bcb699d507368ee3966cd03ee6d7736ffc55dde8c0f0e16b14866334ac504a",
            "creationDate": "2023-06-20T00:53:13.000Z",
            "divisible": {
                "decimal": 2
            },
            "isBurned": false,
            "tokenUri": "www.FNFT.example.com",
            "price": 2000,
            "on_sale_flag": true,
            "owners": [
                {
                    "accountId": "oaccount~87bcb699d507368ee3966cd03ee6d7736ffc55dde8c0f0e16b14866334ac504a",
                    "tokenShare": 90
                },
                {
                    "accountId": "oaccount~3cddfdaa855900579d963aa6f755a4aed1f3a474a2462c1b45bd7f36df673224",
                    "tokenShare": 10
                }
            ]
        }
    },
    {
        "txId": "d517c61f40e7d6af2f04fe6d337b3e5108eb57030c9dc823793498fd4fed671b",
        "timestamp": "2023-06-20T00:53:13.000Z",
        "value": {
            "assetType": "otoken",
            "tokenId": "FNFT",
            "tokenName": "realestate",
            "tokenStandard": "erc1155+",
            "tokenType": "nonfungible",
            "tokenUnit": "fractional",
            "behaviors": [
                "divisible",
                "mintable",
                "transferable",
                "burnable",
                "roles"
            ],
            "roles": {
                "minter_role_name": "minter",
                "burner_role_name": "burner"
            },
            "mintable": {
                "max_mint_quantity": 20000
            },
            "quantity": 100,
            "createdBy": "oaccount~87bcb699d507368ee3966cd03ee6d7736ffc55dde8c0f0e16b14866334ac504a",
            "creationDate": "2023-06-20T00:53:13.000Z",
            "divisible": {
                "decimal": 2
            },
            "isBurned": false,
            "tokenUri": "www.FNFT.example.com",
            "price": 2000,
            "on_sale_flag": true,
            "owners": [
                {
                    "accountId": "oaccount~87bcb699d507368ee3966cd03ee6d7736ffc55dde8c0f0e16b14866334ac504a",
                    "tokenShare": 100
                }
            ]
        }
    }
]
Ejemplo de valor devuelto (NFT total):
[
    {
        "trxId": "92ac6b56112acdba724dd49924d2420a7899c013c61aa40d272e8ab391a65e0f",
        "timeStamp": "2023-09-04T02:28:48.000Z",
        "value": {
            "tokenMetadata": {
                "painting_name": "monalisa",
                "description": "monalisa painting",
                "image": "image link",
                "painter_name": "Leonardo da Vinci"
            },
            "assetType": "otoken",
            "tokenId": "artnft",
            "tokenName": "artcollection",
            "tokenDesc": "Updated Token Description",
            "tokenStandard": "erc1155+",
            "tokenType": "nonfungible",
            "tokenUnit": "whole",
            "behaviors": [
                "indivisible",
                "mintable",
                "transferable",
                "burnable",
                "roles"
            ],
            "roles": {
                "minter_role_name": "minter",
                "burner_role_name": "burner"
            },
            "mintable": {
                "max_mint_quantity": 20000
            },
            "quantity": 1,
            "createdBy": "oaccount~42e89f4c72dfde9502814876423c6da630d466e87436dd1aae201d347ad1288d",
            "creationDate": "2023-09-04T02:27:19.000Z",
            "owner": "oaccount~42e89f4c72dfde9502814876423c6da630d466e87436dd1aae201d347ad1288d",
            "isBurned": false,
            "tokenUri": "www.FNFT.example.com",
            "price": 10000,
            "on_sale_flag": true
        }
    },
    {
        "trxId": "27697dd4a8dba53bad073aa95587cd1ef173b02fd95d771a60273d301fd3bcbe",
        "timeStamp": "2023-09-04T02:27:19.000Z",
        "value": {
            "tokenMetadata": {
                "painting_name": "monalisa",
                "description": "monalisa painting",
                "image": "image link",
                "painter_name": "Leonardo da Vinci"
            },
            "assetType": "otoken",
            "tokenId": "artnft",
            "tokenName": "artcollection",
            "tokenDesc": "artcollection nft",
            "tokenStandard": "erc1155+",
            "tokenType": "nonfungible",
            "tokenUnit": "whole",
            "behaviors": [
                "indivisible",
                "mintable",
                "transferable",
                "burnable",
                "roles"
            ],
            "roles": {
                "minter_role_name": "minter",
                "burner_role_name": "burner"
            },
            "mintable": {
                "max_mint_quantity": 20000
            },
            "quantity": 1,
            "createdBy": "oaccount~42e89f4c72dfde9502814876423c6da630d466e87436dd1aae201d347ad1288d",
            "creationDate": "2023-09-04T02:27:19.000Z",
            "owner": "oaccount~42e89f4c72dfde9502814876423c6da630d466e87436dd1aae201d347ad1288d",
            "isBurned": false,
            "tokenUri": "www.FNFT.example.com",
            "price": 10000,
            "on_sale_flag": true
        }
    }
]
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.
Ctx.ERC1155Token.getAllTokens()
Parámetros:
  • ninguno
Ejemplo de valor devuelto:
[
  {
    "key": "tokenOne",
    "valueJson": {
      "assetType": "otoken",
      "tokenId": "tokenOne",
      "tokenName": "moneytok",
      "tokenStandard": "erc1155+",
      "tokenType": "fungible",
      "tokenUnit": "fractional",
      "behaviors": [
        "divisible",
        "mintable",
        "transferable",
        "roles"
      ],
      "roles": {
        "minter_role_name": "minter",
        "burner_role_name": "burner"
      },
      "mintable": {
        "max_mint_quantity": 1000
      },
      "divisible": {
        "decimal": 2
      }
    }
  },
  {
    "key": "tokenTwo",
    "valueJson": {
      "assetType": "otoken",
      "tokenId": "tokenTwo",
      "tokenName": "moneytok",
      "tokenStandard": "erc1155+",
      "tokenType": "fungible",
      "tokenUnit": "fractional",
      "behaviors": [
        "divisible",
        "mintable",
        "transferable",
        "roles"
      ],
      "roles": {
        "minter_role_name": "minter",
        "burner_role_name": "burner"
      },
      "mintable": {
        "max_mint_quantity": 1000
      },
      "divisible": {
        "decimal": 2
      }
    }
  },
  {
    "key": "art",
    "valueJson": {
      "assetType": "otoken",
      "quantity": 1,
      "tokenId": "art",
      "tokenName": "artcollection",
      "tokenStandard": "erc1155+",
      "tokenType": "nonfungible",
      "tokenUnit": "whole",
      "behaviors": [
        "indivisible",
        "singleton",
        "mintable",
        "transferable",
        "burnable",
        "roles"
      ],
      "roles": {
        "minter_role_name": "minter"
      },
      "mintable": {
        "max_mint_quantity": 20000
      },
      "owner": "oaccount~76cb672eeb1bd535899562a840d0c15a356db89e24bc8b43ac1dba845a4282c6",
      "createdBy": "oaccount~76cb672eeb1bd535899562a840d0c15a356db89e24bc8b43ac1dba845a4282c6",
      "creationDate": "2022-12-08T08:52:57.000Z",
      "isBurned": true,
      "tokenUri": "art.example.com",
      "transferredBy": "ouaccount~24ffd4d32a028a85b4b960f5d55536c837b5429bc7f346150adfa904ec2937cc",
      "transferredDate": "2022-12-08T08:59:17.000Z",
      "burnedBy": "oaccount~76cb672eeb1bd535899562a840d0c15a356db89e24bc8b43ac1dba845a4282c6",
      "burnedDate": "2022-12-08T09:01:28.000Z"
    }
  },
  {
    "key": "FNFT",
    "valueJson": {
        "assetType": "otoken",
        "tokenId": "FNFT",
        "tokenName": "realestate",
        "tokenStandard": "erc1155+",
        "tokenType": "nonfungible",
        "tokenUnit": "fractional",
        "behaviors": [
            "divisible",
            "mintable",
            "transferable",
            "burnable",
            "roles"
        ],
        "roles": {
            "minter_role_name": "minter",
            "burner_role_name": "burner"
        },
        "mintable": {
            "max_mint_quantity": 20000
        },
        "quantity": 100,
        "createdBy": "oaccount~87bcb699d507368ee3966cd03ee6d7736ffc55dde8c0f0e16b14866334ac504a",
        "creationDate": "2023-06-20T00:53:13.000Z",
        "divisible": {
            "decimal": 2
        },
        "isBurned": false,
        "tokenUri": "www.FNFT.example.com",
        "price": 2000,
        "on_sale_flag": true
    }
  },
]
get (Token)
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.
this.Ctx.ERC1155Token.get(tokenId: string)
Parámetros:
  • tokenId: string: ID del token que se va a obtener.
Ejemplo de valor devuelto (NFT total):
{
  "assetType": "otoken",
  "quantity": 1,
  "tokenId": "art",
  "tokenName": "artcollection",
  "tokenStandard": "erc1155+",
  "tokenType": "nonfungible",
  "tokenUnit": "whole",
  "behaviors": [
    "indivisible",
    "singleton",
    "mintable",
    "transferable",
    "burnable",
    "roles"
  ],
  "roles": {
    "minter_role_name": "minter"
  },
  "mintable": {
    "max_mint_quantity": 20000
  },
  "owner": "oaccount~76cb672eeb1bd535899562a840d0c15a356db89e24bc8b43ac1dba845a4282c6",
  "createdBy": "oaccount~76cb672eeb1bd535899562a840d0c15a356db89e24bc8b43ac1dba845a4282c6",
  "creationDate": "2022-12-08T08:52:57.000Z",
  "isBurned": true,
  "tokenUri": "example.com",
  "transferredBy": "ouaccount~24ffd4d32a028a85b4b960f5d55536c837b5429bc7f346150adfa904ec2937cc",
  "transferredDate": "2022-12-08T08:59:17.000Z",
  "burnedBy": "oaccount~76cb672eeb1bd535899562a840d0c15a356db89e24bc8b43ac1dba845a4282c6",
  "burnedDate": "2022-12-08T09:01:28.000Z"
}
Ejemplo de valor de devolución (token fungible):
{
    "assetType": "otoken",
    "tokenId": "Loyalty",
    "tokenName": "loyalty",
    "tokenDesc": "Token Description",
    "tokenStandard": "erc1155+",
    "tokenType": "fungible",
    "tokenUnit": "fractional",
    "behaviors": [
        "divisible",
        "mintable",
        "transferable",
        "burnable",
        "roles"
    ],
    "roles": {
        "minter_role_name": "minter",
        "burner_role_name": "burner"
    },
    "mintable": {
        "max_mint_quantity": 10000
    },
    "divisible": {
        "decimal": 2
    },
    "currency_name": "Dollar"
}
Ejemplo de valor de retorno (NFT fraccional):
{
    "tokenMetadata": {
        "painting_name": "paint",
        "description": "Painting Description"
    },
    "assetType": "otoken",
    "tokenId": "realEstate",
    "tokenName": "realestate",
    "tokenDesc": "Token Description",
    "tokenStandard": "erc1155+",
    "tokenType": "nonfungible",
    "tokenUnit": "fractional",
    "behaviors": [
        "divisible",
        "mintable",
        "transferable",
        "burnable",
        "roles"
    ],
    "roles": {
        "minter_role_name": "minter",
        "burner_role_name": "burner"
    },
    "mintable": {
        "max_mint_quantity": 20000
    },
    "quantity": 100,
    "createdBy": "oaccount~42e89f4c72dfde9502814876423c6da630d466e87436dd1aae201d347ad1288d",
    "creationDate": "2023-06-14T04:20:14.000Z",
    "divisible": {
        "decimal": 2
    },
    "isBurned": false,
    "tokenUri": "www.realestate.example.com",
    "price": 1000,
    "on_sale_flag": true,
    "owners": [
        {
            "accountId": "oaccount~42e89f4c72dfde9502814876423c6da630d466e87436dd1aae201d347ad1288d",
            "tokenShare": 100
        }
    ]
}
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.
Ctx.ERC1155Token.getAllTokensByUser(accountId: string)
Parámetros:
  • accountId: string: ID de cuenta del usuario.
Ejemplo de valor devuelto:
[
  {
    "key": "tokenOne",
    "valueJson": {
      "assetType": "otoken",
      "tokenId": "tokenOne",
      "tokenName": "moneytok",
      "tokenStandard": "erc1155+",
      "tokenType": "fungible",
      "tokenUnit": "fractional",
      "behaviors": [
        "divisible",
        "mintable",
        "transferable",
        "roles"
      ],
      "roles": {
        "minter_role_name": "minter",
        "burner_role_name": "burner"
      },
      "mintable": {
        "max_mint_quantity": 1000
      },
      "divisible": {
        "decimal": 2
      }
    }
  },
  {
    "key": "nftToken",
    "valueJson": {
      "assetType": "otoken",
      "quantity": 1,
      "tokenId": "nftToken",
      "tokenName": "artcollection",
      "tokenStandard": "erc1155+",
      "tokenType": "nonfungible",
      "tokenUnit": "whole",
      "behaviors": [
        "indivisible",
        "singleton",
        "mintable",
        "transferable",
        "burnable",
        "roles"
      ],
      "roles": {
        "minter_role_name": "minter"
      },
      "mintable": {
        "max_mint_quantity": 20000
      },
      "owner": "oaccount~76cb672eeb1bd535899562a840d0c15a356db89e24bc8b43ac1dba845a4282c6",
      "createdBy": "oaccount~76cb672eeb1bd535899562a840d0c15a356db89e24bc8b43ac1dba845a4282c6",
      "creationDate": "2022-12-08T09:10:21.000Z",
      "isBurned": false,
      "tokenUri": "example.com"
    }
  }
]
ownerOf
Este método devuelve el ID de cuenta, el ID de organización y el ID de usuario del propietario del ID de token especificado.
Ctx.ERC1155Token.ownerOf(tokenId: string)
Parámetros:
  • tokenId: string: ID del token.
Ejemplo de valor devuelto:
{
    "accountId": "oaccount~76cb672eeb1bd535899562a840d0c15a356db89e24bc8b43ac1dba845a4282c6",
    "orgId": "appdev",
    "userId": "idcqa"
}
tokenURI
Este método devuelve el URI de un token especificado. Cualquiera puede llamar a este método.
Ctx.ERC1155Token.tokenURI(tokenId: string)
Parámetros:
  • tokenId: string: ID del token.
Ejemplo de valor devuelto:
{
    "tokenUri": "example.com"
}
name
Este método devuelve el nombre de la clase de token. Cualquiera puede llamar a este método.
Ctx.ERC1155Token.name(tokenId: string)
Parámetros:
  • tokenId: string: ID del token.
Ejemplo de valor devuelto:
{"tokenName": "artcollection"}
totalSupply
Este método devuelve el número total de tokens acuñados. Los tokens fungibles se especifican mediante el ID de token. Los tokens no fungibles se especifican mediante el nombre del token.
Ctx.ERC1155Token.totalSupply(token: any)
Parámetros:
  • token: any: el activo de token.
Ejemplo de valor devuelto:
{"totalSupply": 110}
totalNetSupply
Este método devuelve el número total de tokens acuñados menos el número de tokens quemados. Los tokens fungibles se especifican mediante el ID de token. Los tokens no fungibles se especifican mediante el nombre del token.
Ctx.ERC1155Token.totalNetSupply(token: any)
Parámetros:
  • token: any: el activo de token.
Ejemplo de valor devuelto:
{"totalNetSupply": 105}
getTokensByName
Este método devuelve todos los activos de token para un nombre de token 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.
Ctx.ERC1155Token.getTokensByName(tokenName: string)
Parámetros:
  • tokenName: string: nombre del token.
Ejemplo de valor devuelto:
[
  {
    "key": "tokenOne",
    "valueJson": {
      "assetType": "otoken",
      "tokenId": "tokenOne",
      "tokenName": "moneytok",
      "tokenStandard": "erc1155+",
      "tokenType": "fungible",
      "tokenUnit": "fractional",
      "behaviors": [
        "divisible",
        "mintable",
        "transferable",
        "roles"
      ],
      "roles": {
        "minter_role_name": "minter",
        "burner_role_name": "burner"
      },
      "mintable": {
        "max_mint_quantity": 1000
      },
      "divisible": {
        "decimal": 2
      }
    }
  },
  {
    "key": "tokenTwo",
    "valueJson": {
      "assetType": "otoken",
      "tokenId": "tokenTwo",
      "tokenName": "moneytok",
      "tokenStandard": "erc1155+",
      "tokenType": "fungible",
      "tokenUnit": "fractional",
      "behaviors": [
        "divisible",
        "mintable",
        "transferable",
        "roles"
      ],
      "roles": {
        "minter_role_name": "minter",
        "burner_role_name": "burner"
      },
      "mintable": {
        "max_mint_quantity": 1000
      },
      "divisible": {
        "decimal": 2
      }
    }
  }
]
getDecimals
Este método devuelve el número de decimales para un token especificado. Si no se especifica el comportamiento divisible para el token, se devuelve el valor predeterminado de cero decimales.
Ctx.ERC1155Token.getDecimals(token)
Parámetros:
  • token: any: el activo de token.
Ejemplo de valor devuelto:
2

Métodos para la gestión de cuentas

createAccount
Este método crea una cuenta para un usuario especificado y cuentas de token asociadas para tokens fungibles o no fungibles. Se debe crear una cuenta para cualquier usuario que tenga tokens en cualquier momento. La cuenta de usuario realiza un seguimiento de la cuenta de NFT y las cuentas de token fungibles que tiene un usuario. Los usuarios deben tener cuentas en la red para completar las operaciones relacionadas con los tokens. Este método solo puede ser llamado por un Token Admin del código de cadena.

Una cuenta de usuario tiene un ID único, formado por un hash SHA-256 del parámetro orgId y el parámetro userId.

Un usuario puede tener varias cuentas de token fungibles con ID de cuenta únicos. Los identificadores de cuentas de token fungibles están formados por un hash SHA-256 del parámetro orgId, el parámetro userId, la cadena constante ft separada por el símbolo tilde (~) y un número de contador que significa el índice de la cuenta fungible que se está creando separado por el símbolo tilde (~).

Un usuario solo puede tener una cuenta de token no fungible. Los ID de cuenta de token no fungibles son únicos y están formados por un hash SHA-256 del parámetro orgId, el parámetro userId y la cadena constante nft separados por el símbolo tilde (~). Todos los tokens no fungibles que posee un usuario, ya sean completos o fraccionarios, están vinculados a esta única cuenta de token no fungible.

Ctx.ERC1155Account.createAccount(orgId: string, userId: string, ftAccount: boolean, nftAccount: boolean)
Parámetros:
  • orgId: string: ID del proveedor de servicios de afiliación (MSP) del usuario de la organización actual.
  • userId: string: nombre de usuario o ID de correo electrónico del usuario.
  • ftAccount: boolean: si es verdadero, se crea una cuenta de token fungible y se asocia con la cuenta de usuario.
  • nftAccount: boolean: si se define en true, se crea una cuenta de token no fungible y se asocia a la cuenta de usuario.
Devuelve:
  • En caso de éxito, un objeto JSON de la cuenta que se creó.
Ejemplo de valor devuelto:
{
  "assetType": "ouaccount",
  "accountId": "ouaccount~cf20877546f52687f387e7c91d88b9722c97e1a456cc0484f40c747f7804feae",
  "userId": "user1",
  "orgId": "appdev",
  "totalAccounts": 2,
  "totalFtAccounts": 1,
  "associatedFtAccounts": [
    {
      "accountId": "oaccount~60bb20c14a83f6e426e1437c479c5891e1c6477dfd7ad18b73acac5d80bc504b",
      "tokenId": ""
    }
  ],
  "associatedNftAccount": "oaccount~73c3e835dac6d0a56ca9d8def08269f83cefd59b9d297fe2cdc5a9083828fa58"
}
createUserAccount
Este método crea una cuenta para un usuario especificado. Se debe crear una cuenta para cualquier usuario que tenga tokens en cualquier momento. La cuenta de usuario realiza un seguimiento de la cuenta de NFT y las cuentas de token fungibles que tiene un usuario. Los usuarios deben tener cuentas en la red para completar las operaciones relacionadas con los tokens.

Un ID de cuenta es un hash SHA-256 del parámetro orgId y el parámetro userId. Este método solo puede ser llamado por un Token Admin del código de cadena.

Ctx.ERC1155Account.createUserAccount(orgId: string, userId: string)
Parámetros:
  • orgId: string: ID del proveedor de servicios de afiliación (MSP) del usuario de la organización actual.
  • userId: string: nombre de usuario o ID de correo electrónico del usuario.
Devuelve:
  • Si se ha realizado correctamente, se ha creado un objeto JSON de la cuenta de usuario.
Ejemplo de valor devuelto:
{
  "assetType": "ouaccount",
  "accountId": "ouaccount~24ffd4d32a028a85b4b960f5d55536c837b5429bc7f346150adfa904ec2937cc",
  "userId": "idcqa",
  "orgId": "appdev",
  "totalAccounts": 0,
  "totalFtAccounts": 0,
  "associatedFtAccounts": [],
  "associatedNftAccount": ""
}
createTokenAccount
Este método crea una cuenta de token fungible o no fungible para asociarla a una cuenta de usuario.

Un usuario puede tener varias cuentas de token fungibles con ID de cuenta únicos. Los identificadores de cuentas de token fungibles están formados por un hash SHA-256 del parámetro orgId, el parámetro userId, la cadena constante ft separada por el símbolo tilde (~) y un número de contador que significa el índice de la cuenta fungible que se está creando separado por el símbolo tilde (~).

Un usuario solo puede tener una cuenta de token no fungible. Los ID de cuenta de token no fungibles son únicos y están formados por un hash SHA-256 del parámetro orgId, el parámetro userId y la cadena constante nft separados por el símbolo tilde (~). Todos los tokens no fungibles que posee un usuario, ya sean completos o fraccionarios, están vinculados a esta única cuenta de token no fungible.

Este método solo puede ser llamado por un Token Admin del código de cadena.

Ctx.ERC1155Account.createTokenAccount(orgId: string, userId: string, tokenType: string)
Parámetros:
  • orgId: string: ID del proveedor de servicios de afiliación (MSP) del usuario de la organización actual.
  • userId: string: nombre de usuario o ID de correo electrónico del usuario.
  • tokenType: TokenType: tipo de cuenta de token que se va a crear. Los únicos tipos de token soportados son nonfungible y fungible.
Devuelve:
  • Si se ha realizado correctamente, se ha creado un objeto JSON de la cuenta de token.
Ejemplo de valor devuelto:
{
  "assetType": "ouaccount",
  "accountId": "ouaccount~24ffd4d32a028a85b4b960f5d55536c837b5429bc7f346150adfa904ec2937cc",
  "userId": "idcqa",
  "orgId": "appdev",
  "totalAccounts": 1,
  "totalFtAccounts": 1,
  "associatedFtAccounts": [
    {
      "accountId": "oaccount~1422a74d262a3a55a37cd9023ef8836f765d0be7b49d397696b9961d7434d22a",
      "tokenId": ""
    }
  ],
  "associatedNftAccount": ""
}
associateTokenToToken
Este método asocia la cuenta de token fungible de un usuario a un token fungible en particular.
Ctx.ERC1155Account.associateTokenToToken(accountId: string, tokenId: string)
Parámetros:
  • accountId: string: ID de cuenta de usuario.
  • tokenId: string: ID del token.
Devuelve:
  • En caso de éxito, un objeto JSON de la cuenta de usuario, que muestra que el token fungible se asoció a la cuenta de token. Por ejemplo, en el siguiente ejemplo, el primer objeto de la matriz associatedFtAccounts muestra que el ID de cuenta de token fungible y el ID de token están asociados.
Ejemplo de valor devuelto:
{
  "assetType": "ouaccount",
  "accountId": "ouaccount~24ffd4d32a028a85b4b960f5d55536c837b5429bc7f346150adfa904ec2937cc",
  "userId": "idcqa",
  "orgId": "appdev",
  "totalAccounts": 1,
  "totalFtAccounts": 1,
  "associatedFtAccounts": [
    {
      "accountId": "oaccount~1422a74d262a3a55a37cd9023ef8836f765d0be7b49d397696b9961d7434d22a",
      "tokenId": "tokenOne"
    }
  ],
  "associatedNftAccount": ""
}
getAccountHistory
Este método devuelve el historial de una cuenta de token especificada.
Ctx.ERC1155Account.getAccountHistory(accountId: string)
Parámetros:
  • accountId: string: ID de cuenta de usuario.
Devuelve:
  • En caso de éxito, una matriz de objetos JSON que describe el historial de cuentas.
Ejemplo de valor devuelto:
[
    {
        "trxId": "a2cfc6fc064334d6b9931cdf67193711ec2ff5c50a4714f11855fe7384f00e35",
        "timeStamp": "2023-06-06T14:44:31.000Z",
        "value": {
            "accountId": "oaccount~21206f309941a2a23c4f158a0fe1b8f12bb8e2b0c9a2e1358f5efebc0c7d410e",
            "assetType": "oaccount",
            "bapAccountVersion": 1,
            "balance": 100,
            "orgId": "appdev",
            "tokenId": "loy1",
            "tokenName": "loyalty",
            "tokenType": "fungible",
            "userId": "idcqa"
        }
    },
    {
        "trxId": "de483cf7505ae4e7018c4b604c3ab9327c2fb1f802d9408e22735667c1d6997f",
        "timeStamp": "2023-06-06T14:43:23.000Z",
        "value": {
            "assetType": "oaccount",
            "bapAccountVersion": 0,
            "accountId": "oaccount~21206f309941a2a23c4f158a0fe1b8f12bb8e2b0c9a2e1358f5efebc0c7d410e",
            "userId": "idcqa",
            "orgId": "appdev",
            "tokenType": "fungible",
            "tokenId": "loy1",
            "tokenName": "loyalty",
            "balance": 0
        }
    },
    {
        "trxId": "db053e653d3ad9aa5b7b6e04b7cd51aacfbb413272d857a155b60d2a6a12bf4d",
        "timeStamp": "2023-06-05T16:59:08.000Z",
        "value": {
            "assetType": "oaccount",
            "bapAccountVersion": 0,
            "accountId": "oaccount~21206f309941a2a23c4f158a0fe1b8f12bb8e2b0c9a2e1358f5efebc0c7d410e",
            "userId": "idcqa",
            "orgId": "appdev",
            "tokenType": "fungible",
            "tokenId": "",
            "balance": 0
        }
    }
]
getAccountWithStatus
Este método devuelve los detalles de la cuenta de token, incluido el estado de la cuenta, para un usuario especificado. Este método solo puede ser llamado por un Token Admin del código de cadena o el Account Owner de la cuenta.
Ctx.ERC1155Account.GetAccountWithStatus(accountId, tokenId...)
Parámetros:
  • userAccountId: string: ID de cuenta del usuario.
  • tokenId?: string: para una cuenta de token no fungible, una cadena vacía. Para una cuenta de token fungible, el ID de token.
Devuelve:
  • En caso de éxito, un objeto JSON que incluya detalles de cuenta de token, incluido el estado de la cuenta.
Ejemplo de valor de devolución (cuenta de token no fungible):
{
    "assetType": "oaccount",
    "bapAccountVersion": 1,
    "status": "active",
    "accountId": "oaccount~cc301bee057f14236a97d434909ec1084970921b008f6baab09c2a0f5f419a9a",
    "userId": "idcqa",
    "orgId": "appdev",
    "tokenType": "nonfungible",
    "noOfNfts": 1
  }
Ejemplo de valor de devolución (cuenta de token fungible):
{
  "bapAccountVersion": 0,
  "assetType": "oaccount",
  "status": "active",
  "accountId": "oaccount~2de8db6b91964f8c9009136831126d3cfa94e1d00c4285c1ea3e6d1f36479ed4",
  "userId": "idcqa",
  "orgId": "appdev",
  "tokenType": "fungible",
  "tokenId": "t1",
  "tokenName": "loyalty",
  "balance": 0
}
getAccount
Este método devuelve los detalles de la cuenta de token para un usuario especificado. Este método solo puede ser llamado por un Token Admin del código de cadena o el Account Owner de la cuenta.
Ctx.ERC1155Account.getAccount(userAccountId: string, tokenId: string)
Parámetros:
  • userAccountId: string: ID de cuenta del usuario.
  • tokenId?: string: para una cuenta de token no fungible, una cadena vacía. Para una cuenta de token fungible, el ID de token.
Devuelve:
  • En caso de éxito, un objeto JSON que incluya detalles de cuenta de token. El parámetro bapAccountVersion se define en el objeto de cuenta para uso interno.
Ejemplo de valor de devolución (cuenta de token no fungible):
{
    "assetType": "oaccount",
    "bapAccountVersion": 0,
    "accountId": "oaccount~e88276a3be547e31b567346bdddde52d37734da4d5fae83ab2e5c98a10097371",
    "userId": "idcqa",
    "orgId": "appdev",
    "tokenType": "nonfungible",
    "noOfNfts": 3
}
Ejemplo de valor de devolución (cuenta de token fungible):
{
    "assetType": "oaccount",
    "bapAccountVersion": 0,
    "accountId": "oaccount~21206f309941a2a23c4f158a0fe1b8f12bb8e2b0c9a2e1358f5efebc0c7d410e",
    "userId": "idcqa",
    "orgId": "appdev",
    "tokenType": "fungible",
    "tokenId": "loy1",
    "tokenName": "loyalty",
    "balance": 50
}
getAllAccounts
Este método devuelve detalles de todas las cuentas de usuario.
Ctx.ERC1155Account.getAllAccounts()
Parámetros:
  • ninguno
Ejemplo de valor devuelto:
[
        {
            "assetType": "ouaccount",
            "accountId": "ouaccount~412de5e3998dcd100973e1bad6e8729fddc1c7ff610beab8376d733a35c51f38",
            "userId": "idcqa",
            "orgId": "appdev",
            "totalAccounts": 2,
            "totalFtAccounts": 1,
            "associatedFtAccounts": [
                {
                    "accountId": "oaccount~21206f309941a2a23c4f158a0fe1b8f12bb8e2b0c9a2e1358f5efebc0c7d410e",
                    "tokenId": "loy1"
                }
            ],
            "associatedNftAccount": "oaccount~e88276a3be547e31b567346bdddde52d37734da4d5fae83ab2e5c98a10097371"
        },
        {
            "assetType": "ouaccount",
            "accountId": "ouaccount~9501bb774c156eb8354dfe489250ea91f757523d70f08ee494bda98bb352003b",
            "userId": "user1_minter",
            "orgId": "appdev",
            "totalAccounts": 2,
            "totalFtAccounts": 1,
            "associatedFtAccounts": [
                {
                    "accountId": "oaccount~1089ee5122f367ee0ca38c6660298f4b81f199627e4f67f3691c0f628237974c",
                    "tokenId": "loy1"
                }
            ],
            "associatedNftAccount": "oaccount~dcee860665db8740cb77b846e823752185a1e9a185814d0acb305890f5903446"
        },
    ]
getAccountDetailsByUser
Este método devuelve un resumen de cuenta para un usuario especificado y detalles de tokens fungibles y no fungibles que están asociados al usuario.
Ctx.ERC1155Account.getAccountDetailsByUser(orgId: string, userId: string)
Parámetros:
  • orgId: string: ID del proveedor de servicios de afiliación (MSP) del usuario de la organización actual.
  • userId: string: nombre de usuario o ID de correo electrónico del usuario.
Devuelve:
  • En caso de éxito, un objeto de cuenta JSON que incluye un resumen de cuenta para el usuario especificado y detalles de tokens fungibles y no fungibles que están asociados al usuario. Para los tokens fraccionarios no fungibles, la propiedad tokenShare de la sección associatedNFTs muestra el recurso compartido que posee el usuario
Ejemplo de valor devuelto:
{
    "userAccountId": "ouaccount~412de5e3998dcd100973e1bad6e8729fddc1c7ff610beab8376d733a35c51f38",
    "associatedFTAccounts": [
        {
            "accountId": "oaccount~21206f309941a2a23c4f158a0fe1b8f12bb8e2b0c9a2e1358f5efebc0c7d410e",
            "tokenId": "FT",
            "balance": 50
        }
    ],
    "associatedNFTAccount": {
        "accountId": "oaccount~e88276a3be547e31b567346bdddde52d37734da4d5fae83ab2e5c98a10097371",
        "associatedNFTs": [
            {
                "nftTokenId": "FNFT",
                "tokenShare": 100
            },
            {
                "nftTokenId": "FNFT2",
                "tokenShare": 110
            },
            {
                "nftTokenId": "NFT"
            }
        ]
    }
}
getUserByAccountId
Este método devuelve los detalles de usuario de un ID de cuenta especificado.
Ctx.ERC1155Account.getUserByAccountId(accountId: string)
Parámetros:
  • accountId: string: ID de la cuenta.
Devuelve:
  • Cuando se realiza correctamente, un objeto JSON de los detalles del usuario (orgId y userId).
Ejemplo de valor devuelto:
{
    "orgId": "appdev",
    "userId": "idcqa"
}

Métodos para la gestión de roles

AddRoleMember
Este método agrega un rol a un usuario y token especificados. Los tokens fungibles se especifican mediante el ID de token. Los tokens no fungibles se especifican mediante el nombre del token.
Ctx.ERC1155Token.addRoleMember(role: string, userAccountId: string, token: any)
Parámetros:
  • userAccountId: string: ID de cuenta del usuario.
  • role: string: nombre del rol que se va a agregar al usuario especificado.
  • token: any: el activo de token.
Devuelve:
  • En caso de éxito, se mostrará un mensaje con los detalles de la cuenta.
Ejemplo de valor devuelto:
{
  "msg": "Successfully added role 'minter' to Account Id: oaccount~1422a74d262a3a55a37cd9023ef8836f765d0be7b49d397696b9961d7434d22a (Org-Id: appdev, User-Id: idcqa)"
}
isInRole
Este método devuelve un valor booleano para indicar si un usuario tiene un rol especificado. Los tokens fungibles se especifican mediante el ID de token. Los tokens no fungibles se especifican mediante el nombre del token.
Ctx.ERC1155Token.isInRole(role: string, userAccountId: string, token: any)
Parámetros:
  • userAccountId: string: ID de cuenta del usuario.
  • role: string: nombre del rol que se va a buscar.
  • token: any: el activo de token.
Ejemplo de valor devuelto:
{
    "result": true,
    "msg": "Account Id oaccount~1422a74d262a3a55a37cd9023ef8836f765d0be7b49d397696b9961d7434d22a (Org-Id: appdev, User-Id: idcqa) has minter role"
}
removeRoleMember
Este método elimina un rol de un usuario y token especificados. Los tokens fungibles se especifican mediante el ID de token. Los tokens no fungibles se especifican mediante el nombre del token.
Ctx.ERC1155Token.removeRoleMember(role: string, userAccountId: string, token: any)
Parámetros:
  • userAccountId: string: ID de cuenta del usuario.
  • role: string: nombre del rol que se va a eliminar del usuario especificado.
  • token: any: el activo de token.
Ejemplo de valor devuelto:
{
  "msg": "Successfully removed role 'minter' from Account Id: oaccount~60bb20c14a83f6e426e1437c479c5891e1c6477dfd7ad18b73acac5d80bc504b (Org-Id: appdev, User-Id: user1)"
}
getAccountsByRole
Este método devuelve una lista de todos los ID de cuenta para un rol y token especificados. Los tokens fungibles se especifican mediante el ID de token. Los tokens no fungibles se especifican mediante el nombre del token.
Ctx.ERC1155Token.getAccountsByRole(role: string, token: any)
Parámetros:
  • role: string: nombre del rol que se va a buscar.
  • token: any: el activo de token.
Ejemplo de valor devuelto:
{
  "accounts": [
    "oaccount~1422a74d262a3a55a37cd9023ef8836f765d0be7b49d397696b9961d7434d22a",
    "oaccount~60bb20c14a83f6e426e1437c479c5891e1c6477dfd7ad18b73acac5d80bc504b"
  ]
}
getUsersByRole
Este método devuelve una lista de todos los usuarios para un rol y token especificados. Los tokens fungibles se especifican mediante el ID de token. Los tokens no fungibles se especifican mediante el nombre del token.
Ctx.ERC1155Token.getUsersByRole(role: string, token: any)
Parámetros:
  • role: string: nombre del rol que se va a buscar.
  • token: any: el activo de token.
Ejemplo de valor devuelto:
{
    "users": [
        {
            "accountId": "oaccount~1422a74d262a3a55a37cd9023ef8836f765d0be7b49d397696b9961d7434d22a",
            "orgId": "appdev",
            "userId": "idcqa"
        },
        {
            "accountId": "oaccount~60bb20c14a83f6e426e1437c479c5891e1c6477dfd7ad18b73acac5d80bc504b",
            "orgId": "appdev",
            "userId": "user1"
        }
    ]
}

Métodos para la gestión del historial de transacciones

getAccountTransactionHistory
Este método devuelve el historial de transacciones de la cuenta. Este método solo lo puede llamar un Token Admin del código de cadena o el propietario de la cuenta. Para los tokens no fungibles, este método solo se puede llamar cuando se conecta a la red remota de Oracle Blockchain Platform.
Ctx.ERC1155Account.getAccountTransactionHistory(accountId: string)
Parámetros:
  • accountId: string: ID de cuenta de token.
Ejemplo de valor devuelto:
[
    {
        "transactionId": "otransaction~3a6b23c3003626f3947e990eddbd7ac23398d2200e2eb3eac745e6ddfae140bc~7c88c736df38d5622512f1e8dcdd50710eb47c953f1ecb24ac44790a9e2f475b",
        "timestamp": "2023-06-06T14:48:08.000Z",
        "tokenId": "FNFT",
        "transactedAmount": 10,
        "triggeredByUserAccountId": "ouaccount~412de5e3998dcd100973e1bad6e8729fddc1c7ff610beab8376d733a35c51f38",
        "transactedAccount": "oaccount~dcee860665db8740cb77b846e823752185a1e9a185814d0acb305890f5903446",
        "transactionType": "DEBIT",
        "balance": 90
    },
    {
        "transactionId": "otransaction~3a6b23c3003626f3947e990eddbd7ac23398d2200e2eb3eac745e6ddfae140bc~178e3730bc5bee50d02f1464a4eebf733a051905f651e5789039adb4a3edc114",
        "timestamp": "2023-06-06T14:48:08.000Z",
        "tokenId": "NFT",
        "triggeredByUserAccountId": "ouaccount~412de5e3998dcd100973e1bad6e8729fddc1c7ff610beab8376d733a35c51f38",
        "transactedAccount": "oaccount~dcee860665db8740cb77b846e823752185a1e9a185814d0acb305890f5903446",
        "transactionType": "DEBIT"
    },
    {
        "transactionId": "otransaction~c369929e28e78de06c72d020f1418c9a154a7dd280b2e22ebb4ea4485e249124~a7cefb22ff39ee7e36967be71de27da6798548c872061a62dabc56d88d50b930",
        "timestamp": "2023-06-06T14:47:08.000Z",
        "tokenId": "NFT",
        "triggeredByUserAccountId": "ouaccount~412de5e3998dcd100973e1bad6e8729fddc1c7ff610beab8376d733a35c51f38",
        "transactedAccount": "oaccount~e88276a3be547e31b567346bdddde52d37734da4d5fae83ab2e5c98a10097371",
        "transactionType": "MINT"
    },
    {
        "transactionId": "otransaction~114a1bc78d04be48ee6dc140c32c042ee9481cb118959626f090eec744522422~e4eb15d9354f694230df8835ade012100d82aa43672896a2c7125a86e3048f9f",
        "timestamp": "2023-06-05T17:17:57.000Z",
        "tokenId": "FNFT",
        "transactedAmount": 100,
        "triggeredByUserAccountId": "ouaccount~412de5e3998dcd100973e1bad6e8729fddc1c7ff610beab8376d733a35c51f38",
        "transactedAccount": "oaccount~e88276a3be547e31b567346bdddde52d37734da4d5fae83ab2e5c98a10097371",
        "transactionType": "MINT",
        "balance": 100
    }
]
getTransactionById
Este método devuelve los detalles de la transacción para un ID de transacción especificado.
Ctx.ERC1155Transaction.getTransactionById(transactionId: string)
Parámetros:
  • transactionId: string: ID de la transacción.
Ejemplo de valor devuelto:
{
  "transactionId": "otransaction~9ea7b05ab099f7ff4db8342b8c3609031f1d54f11205906e7f1fe88661fe3cbe~33b59ce0c89e96c1e16449f24301581e8e71954f38ad977c7eb6f065e87f2a53",
  "history": [
    {
      "trxId": "9ea7b05ab099f7ff4db8342b8c3609031f1d54f11205906e7f1fe88661fe3cbe",
      "timeStamp": "2022-12-08T09:01:28.000Z",
      "value": {
        "assetType": "otransaction",
        "transactionId": "otransaction~9ea7b05ab099f7ff4db8342b8c3609031f1d54f11205906e7f1fe88661fe3cbe~33b59ce0c89e96c1e16449f24301581e8e71954f38ad977c7eb6f065e87f2a53",
        "tokenId": "tokenOne",
        "fromAccountId": "oaccount~1422a74d262a3a55a37cd9023ef8836f765d0be7b49d397696b9961d7434d22a",
        "toAccountId": "",
        "transactionType": "BURN",
        "amount": 5,
        "timestamp": "2022-12-08T09:01:28.000Z",
        "triggeredByUserAccountId": "ouaccount~24ffd4d32a028a85b4b960f5d55536c837b5429bc7f346150adfa904ec2937cc"
      }
    }
  ]
}
deleteTransactions
Este método suprime las transacciones antes de un registro de hora especificado de la base de datos de estado.
Ctx.ERC1155Transaction.deleteTransactions(referenceTime: Date)
Parámetros:
  • referenceTime: Date: todas las transacciones anteriores a este registro de hora se suprimirán.
Ejemplo de valor devuelto:
{
  "msg": "Successfuly deleted transaction older than date: Thu Apr 07 2022 21:18:59 GMT+0000 (Coordinated Universal Time).",
  "transactions": [
    "otransaction~30513757d8b647fffaafac440d743635f5c1b2e41b25ebd6b70b5bbf78a2643f",
    "otransaction~ac0e908c735297941ba58bb208ee61ff4816a1e54c090d68024f82adf743892b"
  ]
}

Métodos para la gestión del comportamiento del token: comportamiento minable

mintBatch
Este método crea (minuta) varios tokens en una operación por lotes. Este método crea solo tokens fungibles o tokens fraccionarios no fungibles.

Para los tokens fungibles, si el rol minter está definido en el archivo de especificación, cualquier usuario con el rol minter puede llamar a este método. De lo contrario, cualquier usuario puede utilizar este método para acuñar tokens. No puede acuñar más que la propiedad max_mint_quantity del token, si esa propiedad se especificó cuando se creó o actualizó el token.

Para los tokens no fungibles, si el rol minter está definido en el archivo de especificación, cualquier usuario con el rol minter puede llamar a este método. De lo contrario, cualquier usuario puede utilizar este método para acuñar tokens. Además, el emisor de llamada también debe ser el creador del token. No hay límite superior para la cantidad de tokens fraccionarios no fungibles que se pueden acuñar.

No puede utilizar este método para acuñar un token no fungible completo.

Ctx.ERC1155Token.mintBatch(accountId: string, tokenIds: string[], quantities: number[])
Parámetros:
  • accountId: string: ID de cuenta del usuario.
  • tokenIds: string[]: lista de ID de token para los que se deben acuñar tokens.
  • quantity: number[]: lista de cantidades de tokens que se deben acuñar, que corresponde a la matriz de ID de token.
Devuelve:
  • En caso de éxito, un objeto JSON que incluya detalles sobre los tokens extraídos.
Ejemplo de valor devuelto:
{
    "msg": "Successfully minted batch of tokens for User-Account-Id ouaccount~412de5e3998dcd100973e1bad6e8729fddc1c7ff610beab8376d733a35c51f38 (Org-Id: appdev, User-Id: idcqa).",
    "details": [
        {
            "msg": "Successfully minted 100 tokens of fractional tokenId: plot55 to Org-Id: appdev, User-Id: idcqa"
        },
        {
            "msg": "Successfully minted 100 tokens of tokenId: loyalty to Token-Account-Id oaccount~21206f309941a2a23c4f158a0fe1b8f12bb8e2b0c9a2e1358f5efebc0c7d410e"
        }
    ]
}

Métodos para la gestión del comportamiento del token - Comportamiento transferible

batchTransferFrom
Este método completa una operación por lotes que transfiere tokens especificados en una lista de ID de token de un usuario a otro usuario.

Para las NFT, dado que el método transfiere la propiedad de la NFT, el remitente de la NFT debe ser el propietario del token.

En el caso de los NFT fraccionarios, si un usuario (incluido el creador del token) transfiere todas las acciones que posee, perderá la propiedad del token. Si cualquier parte de un token se transfiere a un usuario, ese usuario se convierte automáticamente en uno de los propietarios de la NFT fraccional.

Este método no valida que el emisor de llamada del método sea el remitente especificado.

Ctx.ERC1155Token.batchTransferFrom(fromUserAccountId: string, toUserAccountId: string, tokenIds: string[], quantities: number[])
Parámetros:
  • fromUserAccountId: string: ID de cuenta del remitente y el propietario del token en la organización actual.
  • toUserAccountId: string: ID de cuenta del receptor.
  • tokenIds: string[]: lista de ID de token para los tokens que se van a transferir.
  • quantity: number[]: lista de cantidades de tokens que se deben transferir, correspondiente a la matriz de ID de token.
Devuelve:
  • Si se realiza correctamente, se muestra un mensaje con detalles para cada transferencia de token.
Ejemplo de valor devuelto:
[
    {
        "msg": "Successfully transferred NFT token: 'FNFT' of '10' quantity from Account-Id: oaccount~e88276a3be547e31b567346bdddde52d37734da4d5fae83ab2e5c98a10097371 (Org-Id: appdev, User-Id: idcqa) to Account-Id: oaccount~dcee860665db8740cb77b846e823752185a1e9a185814d0acb305890f5903446 (Org-Id: appdev, User-Id: user1_minter)"
    },
    {
        "msg": "Successfully transferred 10 FT token: 'FT' from Account-Id: oaccount~21206f309941a2a23c4f158a0fe1b8f12bb8e2b0c9a2e1358f5efebc0c7d410e (Org-Id: appdev, User-Id: idcqa) to Account-Id: oaccount~1089ee5122f367ee0ca38c6660298f4b81f199627e4f67f3691c0f628237974c (Org-Id: appdev, User-Id: user1_minter)"
    },
    {
        "msg": "Successfully transferred NFT token: 'NFT' from Account-Id: oaccount~e88276a3be547e31b567346bdddde52d37734da4d5fae83ab2e5c98a10097371 (Org-Id: appdev, User-Id: idcqa) to Account-Id: oaccount~dcee860665db8740cb77b846e823752185a1e9a185814d0acb305890f5903446 (Org-Id: appdev, User-Id: user1_minter)"
    }
]
safeBatchtransferFrom
Este método completa una operación por lotes que transfiere tokens especificados en una lista de ID de token de un usuario a otro usuario.

Para las NFT, dado que el método transfiere la propiedad de la NFT, el remitente de la NFT debe ser el propietario del token.

En el caso de los NFT fraccionarios, si un usuario (incluido el creador del token) transfiere todas las acciones que posee, perderá la propiedad del token. Si cualquier parte de un token se transfiere a un usuario, ese usuario se convierte automáticamente en uno de los propietarios de la NFT fraccional.

El emisor de llamada del método debe ser el remitente especificado.

Ctx.ERC1155Token.safeBatchTransferFrom(fromUserAccountId: string, toUserAccountId: string, tokenIds: string[], quantities: number[])
Parámetros:
  • fromUserAccountId: string: ID de cuenta del remitente y el propietario del token en la organización actual.
  • toUserAccountId: string: ID de cuenta del receptor.
  • tokenIds: string[]: lista de ID de token para los tokens que se van a transferir.
  • quantity: number[]: lista de cantidades de tokens que se deben transferir, correspondiente a la matriz de ID de token.
Devuelve:
  • Si se realiza correctamente, se muestra un mensaje con detalles para cada transferencia de token.
Ejemplo de valor devuelto:
[
    {
        "msg": "Successfully transferred NFT token: 'FNFT' of '10' quantity from Account-Id: oaccount~e88276a3be547e31b567346bdddde52d37734da4d5fae83ab2e5c98a10097371 (Org-Id: appdev, User-Id: idcqa) to Account-Id: oaccount~dcee860665db8740cb77b846e823752185a1e9a185814d0acb305890f5903446 (Org-Id: appdev, User-Id: user1_minter)"
    },
    {
        "msg": "Successfully transferred 10 FT token: 'FT' from Account-Id: oaccount~21206f309941a2a23c4f158a0fe1b8f12bb8e2b0c9a2e1358f5efebc0c7d410e (Org-Id: appdev, User-Id: idcqa) to Account-Id: oaccount~1089ee5122f367ee0ca38c6660298f4b81f199627e4f67f3691c0f628237974c (Org-Id: appdev, User-Id: user1_minter)"
    },
    {
        "msg": "Successfully transferred NFT token: 'NFT' from Account-Id: oaccount~e88276a3be547e31b567346bdddde52d37734da4d5fae83ab2e5c98a10097371 (Org-Id: appdev, User-Id: idcqa) to Account-Id: oaccount~dcee860665db8740cb77b846e823752185a1e9a185814d0acb305890f5903446 (Org-Id: appdev, User-Id: user1_minter)"
    }
]
balanceOfBatch
Este método completa una operación por lotes que obtiene el saldo de las cuentas de token. Los detalles de la cuenta se especifican en tres listas separadas de IDs de organización, IDs de usuario e IDs de token. Este método solo puede ser llamado por un Token Admin del código de cadena o por propietarios de cuenta. Los propietarios de cuentas solo pueden ver los detalles del saldo de las cuentas de las que son propietarios.
Ctx.ERC1155Account.balanceOfBatch(accountIds: string[], tokenIds: string[])
Parámetros:
  • accountIds: string[]: lista de los ID de cuenta de usuario.
  • tokenIds: string[]: lista de los ID de token.
Ejemplo de valor devuelto:
[
    {
        "orgId": "appdev",
        "userId": "idcqa",
        "userAccountId": "ouaccount~412de5e3998dcd100973e1bad6e8729fddc1c7ff610beab8376d733a35c51f38",
        "tokenAccountId": "oaccount~e88276a3be547e31b567346bdddde52d37734da4d5fae83ab2e5c98a10097371",
        "tokenId": "FNFT",
        "balance": 100
    },
    {
        "orgId": "appdev",
        "userId": "idcqa",
        "userAccountId": "ouaccount~412de5e3998dcd100973e1bad6e8729fddc1c7ff610beab8376d733a35c51f38",
        "tokenAccountId": "oaccount~21206f309941a2a23c4f158a0fe1b8f12bb8e2b0c9a2e1358f5efebc0c7d410e",
        "tokenId": "FT",
        "balance": 50
    },
    {
        "orgId": "appdev",
        "userId": "user1_minter",
        "userAccountId": "ouaccount~9501bb774c156eb8354dfe489250ea91f757523d70f08ee494bda98bb352003b",
        "tokenAccountId": "oaccount~dcee860665db8740cb77b846e823752185a1e9a185814d0acb305890f5903446",
        "tokenId": "FNFT",
        "balance": 10
    }
]
exchangeToken
Este método intercambia tokens entre cuentas especificadas. Este método solo admite el intercambio entre un NFT (completo o fraccional) y un token fungible o un token fungible y un NFT (completo o fraccional). Este método solo puede ser llamado por el propietario de la cuenta.
Ctx.ERC1155Token.exchangeToken( fromTokenId: string, fromUserAccountId: string, fromTokenQuantity: number, toTokenId: string, toUserAccountId: string, toTokenQuantity: number)
Parámetros:
  • fromTokenId: string: ID del token que posee el remitente.
  • fromUserAccountId: string: ID de cuenta del remitente.
  • fromTokenQuantity: number: cantidad de tokens del remitente para intercambiar con el receptor.
  • toTokenId: string: ID del token que posee el receptor.
  • toUserAccountId: string: ID de cuenta del receptor.
  • toTokenQuantity: number: cantidad de tokens del receptor para intercambiar con el remitente.
Devuelve:
  • En caso de éxito, un mensaje con detalles de intercambio de token.
Ejemplo de valor devuelto:
{
    "msg": "Succesfully exchanged 10 tokens of type nonfungible with tokenId: [r1] from Account oaccount~e88276a3be547e31b567346bdddde52d37734da4d5fae83ab2e5c98a10097371 (OrgId: appdev, UserId: idcqa) to 10 tokens of type fungible with tokenId: [loy1] from Account oaccount~1089ee5122f367ee0ca38c6660298f4b81f199627e4f67f3691c0f628237974c (OrgId: appdev, UserId: user1_minter)"
}

Métodos para la Gestión del Comportamiento del Token - Comportamiento Quemable

burn
Este método desactiva, o quema, los tokens fungibles y no fungibles especificados.
Ctx.ERC1155Token.burn(accountId: string, tokenIds: string[], quantities: number[])
Parámetros:
  • accountId: string: ID de cuenta del usuario.
  • tokenIds: string[]: lista de los ID de token que se van a grabar.
  • quantity: number[]: lista de cantidades de tokens que se van a grabar, que corresponde a la matriz de ID de token.
Devuelve:
  • En caso de éxito, un mensaje con detalles sobre las operaciones de grabación.
Ejemplo de valor devuelto:
[
  {
    "msg": "Successfully burned NFT token: 'art' from Account-Id: oaccount~76cb672eeb1bd535899562a840d0c15a356db89e24bc8b43ac1dba845a4282c6 (Org-Id: appdev, User-Id: idcqa)"
  },
  {
    "msg": "Successfully burned 5 tokens of tokenId: tokenOne from Account-ID oaccount~1422a74d262a3a55a37cd9023ef8836f765d0be7b49d397696b9961d7434d22a (Org-Id: appdev, User-Id: idcqa)"
  },
  {
    "msg": "Successfully burned 2 token share of tokenId: FNFT from Account-ID oaccount~87bcb699d507368ee3966cd03ee6d7736ffc55dde8c0f0e16b14866334ac504a (Org-Id: AutoF1377358917, User-Id: idcqa)"
  }
]