Projet de jeton TypeScript échafaudé pour ERC-1155

Blockchain App Builder prend l'entrée de votre fichier de spécification de jeton et génère un projet de chaîne de blocs entièrement fonctionnel.

Le projet génère automatiquement des classes et des fonctions de cycle de vie de jeton, y compris des méthodes CRUD et non CRUD. La validation des arguments, la conversion de paramètres/déconversion des paramètres et la capacité de persistance transparente sont toutes prises en charge automatiquement.

Pour plus d'informations sur le projet échafaudé et les méthodes qui ne sont pas directement liées à des jetons, voir Projet de code de chaîne TypeScript échafaudé.

Modèle

Chaque classe de modèle segmentée en unités étend la classe OchainModel. La capacité de persistance transparente, ou ORM simplifié, est saisie dans la classe OchainModel. Le modèle suivant affiche un jeton non fongible entier.

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;
  
}
Le modèle suivant affiche un jeton fractionnaire non fongible.
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;
  
}

Contrôleur

La classe de contrôleur principale étend la classe OchainController. Il n'y a qu'un seul contrôleur principal.

export class DigiCurrCCController extends OchainController{

Vous pouvez créer n'importe quel nombre de classes, de fonctions ou de fichiers, mais seules les méthodes définies dans la classe de contrôleur principale peuvent être appelées. Les autres méthodes sont masquées.

Vous pouvez utiliser les méthodes de la trousse SDK de jeton pour écrire des méthodes personnalisées pour votre application d'affaires.

Méthodes de jeton générées automatiquement

Blockchain App Builder génère automatiquement des méthodes pour prendre en charge les jetons et les cycles de vie des jetons. Vous pouvez utiliser ces méthodes pour initialiser des jetons, gérer des rôles et des comptes et effectuer d'autres tâches de cycle de vie des jetons sans codage supplémentaire. Les méthodes de contrôleur doivent avoir un décorateur @Validator(...params) pour pouvoir être appelées.

Méthodes pour la gestion du contrôle d'accès

isTokenAdmin
Cette méthode retourne la valeur booléenne true si l'appelant de la fonction est Token Admin, sinon elle retourne false. Cette méthode ne peut être appelée que par un élément Token Admin du code de chaîne.
@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);
}
Paramètres :
  • orgId: string - ID fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation courante.
  • userId: string - Nom d'utilisateur ou ID courriel de l'utilisateur.
Retourne :
  • La méthode retourne true si l'appelant est un Token Admin, sinon elle retourne false.
Exemple de valeur renvoyée :
{"result": true}
addTokenAdmin
Cette méthode ajoute un utilisateur en tant que Token Admin du code de chaîne. Cette méthode ne peut être appelée que par un élément Token Admin du code de chaîne.
@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);
}
Paramètres :
  • orgId: string - ID fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation courante.
  • userId: string - Nom d'utilisateur ou ID courriel de l'utilisateur.
Retourne :
  • Au succès, un message comprend les détails de l'utilisateur qui a été ajouté comme Token Admin du code de chaîne.
Exemple de valeur renvoyée :
{"msg":"Successfully added Admin (OrgId: appDev, UserId: user1)"}
removeTokenAdmin
Cette méthode supprime un utilisateur en tant que Token Admin du code de chaîne. Cette méthode ne peut être appelée que par un élément Token Admin du code de chaîne. Vous ne pouvez pas vous supprimer en tant que 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);
}
Paramètres :
  • orgId: string - ID fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation courante.
  • userId: string - Nom d'utilisateur ou ID courriel de l'utilisateur.
Retourne :
  • En cas de réussite, un message contenant les détails de l'utilisateur qui a été supprimé comme Token Admin du code de chaîne.
Exemple de valeur renvoyée :
{"msg": "Successfully removed Admin (OrgId: appDev, UserId: user1)"}
getAllTokenAdmins
Cette méthode retourne une liste de tous les utilisateurs qui sont des Token Admin du code de chaîne. Cette méthode ne peut être appelée que par un élément Token Admin du code de chaîne.
@GetMethod()
@Validator()
public async getAllTokenAdmins() {
  await this.Ctx.ERC1155Auth.checkAuthorization("ERC1155ADMIN.getAllAdmins", "TOKEN");
  return await this.Ctx.ERC1155Admin.getAllAdmins();
}
Paramètres :
  • aucune
Retourne :
  • En cas de succès, un tableau admins au format JSON contenant les objets orgId et userId.
Exemple de valeur renvoyée :
{
  "admins": [
    {
      "orgId": "appdev",
      "userId": "user2"
    },
    {
      "orgId": "appdev",
      "userId": "user1"
    }
  ]
}

Méthodes de gestion de la configuration de jeton

init
Cette méthode est appelée lorsque le code de chaîne est instancié. Chaque valeur Token Admin est identifiée par les informations userId et orgId dans le paramètre adminList. userId est le nom d'utilisateur ou l'ID courriel du responsable de l'instance ou de l'utilisateur qui est connecté à l'instance. orgId est l'ID fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation de réseau courante. Le paramètre adminList est obligatoire lors du premier déploiement du code de chaîne. Si vous mettez à niveau le code de chaîne, transmettez une liste vide ([]). Si vous êtes l'utilisateur qui a initialement déployé le code de chaîne, vous pouvez également spécifier de nouveaux administrateurs dans le paramètre adminList lors de la mise à niveau du code de chaîne. Toutes les autres informations du paramètre adminList sont ignorées lors des mises à niveau.
@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;
}
Paramètres :
  • adminList array - Tableau d'informations {orgId, userId} qui spécifie la liste des administrateurs de jetons. Le tableau adminList est un paramètre obligatoire.
create<Token Name>Token
Cette méthode crée des jetons. Chaque jeton défini a sa propre méthode de création. Pour les jetons fongibles, cette méthode ne peut être appelée que par un élément Token Admin du code de chaîne. Pour les jetons non fongibles, si le rôle de mineur est défini dans le fichier de spécification, tout utilisateur doté du rôle de mineur peut appeler cette méthode pour créer un NFT. Si le rôle de mineur n'est pas défini, n'importe quel utilisateur peut utiliser cette méthode pour créer (mint) des NFT. L'utilisateur qui appelle cette méthode devient le propriétaire de la NFT.
Jetons fongibles :
@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);
}
Jetons non fongibles :
@Validator(<Token Class>, yup.number())
public async create<Token Name>Token(tokenAsset: <Token Class>, quantity: number) {
  return await this.Ctx.ERC1155Token.save(tokenAsset, quantity);
}
Paramètres :
  • tokenAsset: <Token Class> - Ressource de jeton. Les propriétés de la ressource sont définies dans le fichier de modèle.
  • quantity: number - Pour les jetons non fongibles uniquement, le nombre de jetons à menthe. La seule valeur prise en charge pour ce paramètre est 1.
Retourne :
  • En cas de succès, la ressource de jeton au format JSON, qui inclut les informations suivantes, selon le type de jeton.
  • tokenMetadata - Informations JSON décrivant le jeton.
  • createdBy - ID compte de l'appelant, qui est l'utilisateur frappant le jeton. Cette propriété ne peut pas être modifiée.
  • creationDate - Horodatage de la transaction de frappe. Cette propriété ne peut pas être modifiée.
  • isBurned - Cette propriété indique si le jeton est brûlé. Cette propriété ne peut pas être modifiée.
  • tokenName - Nom du jeton. Cette propriété ne peut pas être modifiée.
  • tokenDesc - Description du jeton.
  • symbol - Symbole du jeton. Cette propriété ne peut pas être modifiée.
  • tokenStandard - Norme du jeton. Cette propriété ne peut pas être modifiée.
  • tokenType - Type du jeton (fongible ou non fongible). Cette propriété ne peut pas être modifiée.
  • tokenUnit - Unité du jeton (entier ou fractionnaire). Cette propriété ne peut pas être modifiée.
  • behaviors - Liste des comportements de jeton. Cette propriété ne peut pas être modifiée.
  • mintable - Les propriétés liées à la frappe. La valeur max_mint_quantity définit le nombre maximal de jetons pouvant être créés pour la classe de jetons.
  • owner - ID compte du responsable courant, qui est l'appelant de la méthode.
  • tokenUri - URI du jeton.
  • quantity - Quantité du jeton.
Exemple de valeur de retour (NFT entier) :
{
    "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
}
Exemple de valeur de retour (jeton fongible) :
{
    "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"
}
Exemple de valeur de retour (FT partiel) :
{
    "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
Cette méthode met à jour les jetons. Chaque jeton défini a sa propre méthode de mise à jour. Vous ne pouvez pas mettre à jour les métadonnées de jeton ou l'URI de jeton des jetons non fongibles. Pour les jetons fongibles, cette méthode ne peut être appelée que par un élément Token Admin du code de chaîne. Pour les jetons non fongibles, cette méthode ne peut être appelée que par le propriétaire du jeton.
Jetons fongibles :
@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);
}
Jetons non fongibles :
@Validator(<Token Class>)
public async update<Token Name>Token(tokenAsset: <Token Class>) {
  return await this.Ctx.ERC1155Token.update(tokenAsset);
}
Paramètres :
  • tokenAsset: <Token Class> - Ressource de jeton. Les propriétés de la ressource sont définies dans le fichier de modèle.
Retourne :
  • En cas de succès, la ressource de jeton mise à jour au format JSON.
Exemple de valeur de retour (NFT entier) :
{
    "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
Cette méthode retourne l'historique pour un ID jeton spécifié. Tout le monde peut appeler cette méthode.
@GetMethod()
@Validator(yup.string())
public async getTokenHistory(tokenId: string) {
  return await this.Ctx.ERC1155Token.getTokenHistory(tokenId);
}
Paramètres :
  • tokenId: string - ID du jeton.
Retourne :
  • En cas de succès, un tableau JSON contenant l'historique des jetons.
Exemple de valeur de retour (jeton fongible) :
[
    {
        "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"
        }
    }
]
Exemple de valeur de retour (FT partiel) :
[
    {
        "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
                }
            ]
        }
    }
]
Exemple de valeur de retour (NFT entier) :
[
    {
        "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
Cette méthode retourne toutes les ressources de jeton enregistrées dans la base de données d'état. Cette méthode ne peut être appelée que par un élément Token Admin du code de chaîne. Cette méthode utilise des interrogations SQL enrichies Berkeley DB et ne peut être appelée que lorsqu'elle est connectée au réseau Oracle Blockchain Platform distant.
@GetMethod()
@Validator(yup.string())
public async getTokenHistory(tokenId: string) {
  return await this.Ctx.ERC1155Token.getTokenHistory(tokenId);
}
Paramètres :
  • aucune
Retourne :
  • Liste de toutes les ressources de jeton au format JSON.
Exemple de valeur renvoyée :
[
  {
    "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
Cette méthode retourne un objet de jeton si le jeton est présent dans la base de données d'état. Pour les NFT fractionnaires, la liste des propriétaires est également retournée. Cette méthode ne peut être appelée que par Token Admin du code de chaîne ou du responsable du jeton.
@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);
}
Paramètres :
  • tokenId: string - ID du jeton à obtenir.
Exemple de valeur de retour (NFT entier) :
{
  "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"
}
Exemple de valeur de retour (jeton fongible) :
{
    "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"
}
Exemple de valeur de retour (FT partiel) :
{
    "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
Cette méthode retourne toutes les ressources de jeton appartenant à un utilisateur spécifié. Cette méthode utilise des interrogations SQL enrichies Berkeley DB et ne peut être appelée que lorsqu'elle est connectée au réseau Oracle Blockchain Platform distant. Cette méthode ne peut être appelée que par un élément Token Admin du code de chaîne ou par le responsable du compte.
@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);
}
Paramètres :
  • orgId: string - ID fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation courante.
  • userId: string - Nom d'utilisateur ou ID courriel de l'utilisateur.
Exemple de valeur renvoyée :
[
  {
    "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
Cette méthode retourne l'ID compte, l'ID organisation et l'ID utilisateur du responsable de l'ID jeton spécifié. Tout le monde peut appeler cette méthode.
@GetMethod()
@Validator(yup.string())
public async ownerOf(tokenId: string) {
  return await this.Ctx.ERC1155Token.ownerOf(tokenId);
}
Paramètres :
  • tokenId: string - ID du jeton.
Exemple de valeur de retour (NFT entier) :
{
    "accountId": "oaccount~76cb672eeb1bd535899562a840d0c15a356db89e24bc8b43ac1dba845a4282c6",
    "orgId": "appdev",
    "userId": "idcqa"
}
Exemple de valeur de retour (FT partiel) :
[
    {
        "accountId": "oaccount~42e89f4c72dfde9502814876423c6da630d466e87436dd1aae201d347ad1288d",
        "orgId": "Org1MSP",
        "userId": "admin"
    },
    {
        "accountId": "oaccount~74108eca702bab6d8548e740254f2cc7955d886885251d52d065042172a59db0",
        "orgId": "Org1MSP",
        "userId": "user"
    }
]
URI
Cette méthode retourne l'URI d'un jeton spécifié. Tout le monde peut appeler cette méthode.
@GetMethod()
@Validator(yup.string())
public async URI(tokenId: string) {
  return await this.Ctx.ERC1155Token.tokenURI(tokenId);
}
Paramètres :
  • tokenId: string - ID du jeton.
Exemple de valeur renvoyée :
{
    "tokenUri": "example.com"
}
name
Cette méthode retourne le nom de la classe de jeton. Tout le monde peut appeler cette méthode.
@GetMethod()
@Validator(yup.string())
public async name(tokenId: string) {
  return await this.Ctx.ERC1155Token.name(tokenId);
}
Paramètres :
  • tokenId: string - ID du jeton.
Exemple de valeur renvoyée :
{"tokenName": "artcollection"}
totalSupply
Cette méthode retourne le nombre total de jetons frappés. Les jetons fongibles sont spécifiés par l'ID jeton. Les jetons non fongibles sont spécifiés par le nom du jeton. Cette méthode ne peut être appelée que par un élément Token Admin du code de chaîne.
@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);
}
Paramètres :
  • tokenDetails: TokenDetail - Détails qui spécifient le jeton. Pour les jetons fongibles, utilisez le format suivant :
    {"tokenId":"token1"}
    Pour les jetons non fongibles, utilisez le format suivant :
    {"tokenName":"artCollection"}
Exemple de valeur renvoyée :
{"totalSupply": 110}
totalNetSupply
Cette méthode retourne le nombre total de jetons frappés moins le nombre de jetons brûlés. Les jetons fongibles sont spécifiés par l'ID jeton. Les jetons non fongibles sont spécifiés par le nom du jeton. Cette méthode ne peut être appelée que par un élément Token Admin du code de chaîne.
@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);
}
Paramètres :
  • tokenDetails: TokenDetail - Détails qui spécifient le jeton. Pour les jetons fongibles, utilisez le format suivant :
    {"tokenId":"token1"}
    Pour les jetons non fongibles, utilisez le format suivant :
    {"tokenName":"artCollection"}
Exemple de valeur renvoyée :
{"totalNetSupply": 105}
getTokensByName
Cette méthode retourne toutes les ressources de jeton pour un nom de jeton spécifié. Cette méthode utilise des interrogations SQL enrichies Berkeley DB et ne peut être appelée que lorsqu'elle est connectée au réseau Oracle Blockchain Platform distant. Cette méthode ne peut être appelée que par un élément Token Admin du code de chaîne.
@GetMethod()
@Validator(yup.string())
public async getTokensByName(tokenName: string) {
  await this.Ctx.ERC1155Auth.checkAuthorization("ERC1155TOKEN.getTokensByName", "TOKEN");
  return await this.Ctx.ERC1155Token.getTokensByName(tokenName);
}
Paramètres :
  • tokenName: string - Nom du jeton.
Exemple de valeur renvoyée :
[
  {
    "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
Cette méthode retourne le nombre de décimales pour un jeton spécifié. Cette méthode ne peut être appelée que par un élément Token Admin du code de chaîne.
@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.`,
  };
}
Paramètres :
  • tokenId: string - ID du jeton.
Exemple de valeur renvoyée :
{
    "msg": "Token Id: tokenOne has 2 decimal places."
}

Méthodes de gestion des comptes

createAccount
Cette méthode crée un compte pour un utilisateur spécifié et les comptes de jeton associés pour les jetons fongibles ou non fongibles. Un compte doit être créé pour tout utilisateur qui aura des jetons à tout moment. Le compte utilisateur suit le compte NFT et les comptes jetons fongibles qu'un utilisateur détient. Les utilisateurs doivent avoir des comptes dans le réseau pour effectuer les opérations liées aux jetons. Cette méthode ne peut être appelée que par un élément Token Admin du code de chaîne.

Un compte d'utilisateur a un ID unique, qui est formé par un hachage SHA-256 du paramètre orgId et du paramètre userId.

Un utilisateur peut avoir plusieurs comptes de jeton fongibles avec des ID de compte uniques. Les ID compte de jeton fongible sont formés par un hachage SHA-256 du paramètre orgId, du paramètre userId, de la chaîne constante ft séparée par le symbole tilde (~), et d'un numéro de compteur qui signifie l'index du compte fongible en cours de création séparé par le symbole tilde (~).

Un utilisateur ne peut avoir qu'un seul compte de jeton non fongible. Les ID compte de jeton non fongibles sont uniques et sont formés par un hachage SHA-256 du paramètre orgId, du paramètre userId et de la chaîne constante nft séparés par le symbole tilde (~). Tous les jetons non fongibles qu'un utilisateur possède, qu'ils soient entiers ou fractionnaires, sont liés à ce compte.

Les ID compte d'utilisateur commencent par ouaccount~. Les ID compte de jeton commencent par 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);
}
Paramètres :
  • orgId: string - ID fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation courante.
  • userId: string - Nom d'utilisateur ou ID courriel de l'utilisateur.
  • ftAccount: boolean - Si la valeur est Vrai, un compte de jeton fongible est créé et associé au compte d'utilisateur.
  • nftAccount: boolean - Si la valeur est Vrai, un compte de jeton non fongible est créé et associé au compte d'utilisateur.
Retourne :
  • En cas de réussite, un objet JSON du compte qui a été créé.
Exemple de valeur renvoyée :
{
  "assetType": "ouaccount",
  "accountId": "ouaccount~cf20877546f52687f387e7c91d88b9722c97e1a456cc0484f40c747f7804feae",
  "userId": "user1",
  "orgId": "appdev",
  "totalAccounts": 2,
  "totalFtAccounts": 1,
  "associatedFtAccounts": [
    {
      "accountId": "oaccount~60bb20c14a83f6e426e1437c479c5891e1c6477dfd7ad18b73acac5d80bc504b",
      "tokenId": ""
    }
  ],
  "associatedNftAccount": "oaccount~73c3e835dac6d0a56ca9d8def08269f83cefd59b9d297fe2cdc5a9083828fa58"
}
createUserAccount
Cette méthode crée un compte pour un utilisateur spécifié. Un compte doit être créé pour tout utilisateur qui aura des jetons à tout moment. Le compte utilisateur suit le compte NFT et les comptes jetons fongibles qu'un utilisateur possède. Les utilisateurs doivent avoir des comptes dans le réseau pour effectuer les opérations liées aux jetons.

Un ID compte est un hachage SHA-256 du paramètre orgId et du paramètre userId. Cette méthode ne peut être appelée que par un élément Token Admin du code de chaîne.

@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);
  }
Paramètres :
  • orgId: string - ID fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation courante.
  • userId: string - Nom d'utilisateur ou ID courriel de l'utilisateur.
Retourne :
  • En cas de réussite, un objet JSON du compte d'utilisateur qui a été créé.
Exemple de valeur renvoyée :
{
  "assetType": "ouaccount",
  "accountId": "ouaccount~24ffd4d32a028a85b4b960f5d55536c837b5429bc7f346150adfa904ec2937cc",
  "userId": "user2",
  "orgId": "appdev",
  "totalAccounts": 0,
  "totalFtAccounts": 0,
  "associatedFtAccounts": [],
  "associatedNftAccount": ""
}
createTokenAccount
Cette méthode crée un compte de jeton fongible ou non fongible à associer à un compte d'utilisateur.

Un utilisateur peut avoir plusieurs comptes de jeton fongibles avec des ID de compte uniques. Les ID compte de jeton fongible sont formés par un hachage SHA-256 du paramètre orgId, du paramètre userId, de la chaîne constante ft séparée par le symbole tilde (~), et d'un numéro de compteur qui signifie l'index du compte fongible en cours de création séparé par le symbole tilde (~).

Un utilisateur ne peut avoir qu'un seul compte de jeton non fongible. Les ID compte de jeton non fongibles sont uniques et sont formés par un hachage SHA-256 du paramètre orgId, du paramètre userId et de la chaîne constante nft séparés par le symbole tilde (~). Tous les jetons non fongibles qu'un utilisateur possède, qu'ils soient entiers ou fractionnaires, sont liés à ce compte.

Cette méthode ne peut être appelée que par un élément Token Admin du code de chaîne.

@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);
  }
Paramètres :
  • orgId: string - ID fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation courante.
  • userId: string - Nom d'utilisateur ou ID courriel de l'utilisateur.
  • tokenType: TokenType - Type de compte de jeton à créer. Les seuls types de jeton pris en charge sont nonfungible et fungible.
Retourne :
  • En cas de réussite, un objet JSON du compte de jeton créé.
Exemple de valeur renvoyée :
{
  "assetType": "ouaccount",
  "accountId": "ouaccount~24ffd4d32a028a85b4b960f5d55536c837b5429bc7f346150adfa904ec2937cc",
  "userId": "user2",
  "orgId": "appdev",
  "totalAccounts": 1,
  "totalFtAccounts": 1,
  "associatedFtAccounts": [
    {
      "accountId": "oaccount~1422a74d262a3a55a37cd9023ef8836f765d0be7b49d397696b9961d7434d22a",
      "tokenId": ""
    }
  ],
  "associatedNftAccount": ""
}
associateFungibleTokenAccount
Cette méthode associe le compte de jeton fongible d'un utilisateur à un jeton fongible particulier.

Cette méthode ne peut être appelée que par un élément Token Admin du code de chaîne.

@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);
}
Paramètres :
  • orgId: string - ID fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation courante.
  • userId: string - Nom d'utilisateur ou ID courriel de l'utilisateur.
  • tokenId: string - ID du jeton.
Retourne :
  • En cas de succès, un objet JSON du compte d'utilisateur, qui indique que le jeton fongible a été associé au compte de jeton. Par exemple, dans l'exemple suivant, le premier objet du tableau associatedFtAccounts montre que l'ID compte de jeton fongible et l'ID jeton sont associés.
Exemple de valeur renvoyée :
{
  "assetType": "ouaccount",
  "accountId": "ouaccount~24ffd4d32a028a85b4b960f5d55536c837b5429bc7f346150adfa904ec2937cc",
  "userId": "user2",
  "orgId": "appdev",
  "totalAccounts": 1,
  "totalFtAccounts": 1,
  "associatedFtAccounts": [
    {
      "accountId": "oaccount~1422a74d262a3a55a37cd9023ef8836f765d0be7b49d397696b9961d7434d22a",
      "tokenId": "tokenOne"
    }
  ],
  "associatedNftAccount": ""
}
getAccountHistory
Cette méthode retourne l'historique pour un compte de jeton spécifié. Il s'agit d'une méthode asynchrone. Cette méthode ne peut être appelée que par un élément Token Admin du code de chaîne ou par le responsable du compte.
@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);
}
Paramètres :
  • orgId: string - ID fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation courante.
  • userId: string - Nom d'utilisateur ou ID courriel de l'utilisateur.
  • tokenId?: string - Pour un compte de jeton non fongible, une chaîne vide. Pour un compte de jeton fongible, l'ID jeton.
Retourne :
  • En cas de succès, un tableau d'objets JSON décrivant l'historique du compte.
Exemple de valeur renvoyée :
[
  {
    "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
Cette méthode retourne les détails du compte de jeton pour un utilisateur spécifié. Cette méthode ne peut être appelée que par Token Admin du code de chaîne ou par Account Owner du compte.
@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);
}
Paramètres :
  • orgId: string - ID fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation courante.
  • userId: string - Nom d'utilisateur ou ID courriel de l'utilisateur.
  • tokenId?: string - Pour un compte de jeton non fongible, une chaîne vide. Pour un compte de jeton fongible, l'ID jeton.
Retourne :
  • En cas de réussite, un objet JSON qui inclut les détails du compte de jeton. Le paramètre bapAccountVersion est défini dans l'objet de compte pour une utilisation interne.
Exemple de valeur de retour (compte de jeton non obligatoire) :
{
  "assetType": "oaccount",
  "bapAccountVersion": 1,
  "status": "active",
  "accountId": "oaccount~cc301bee057f14236a97d434909ec1084970921b008f6baab09c2a0f5f419a9a",
  "userId": "idcqa",
  "orgId": "appdev",
  "tokenType": "nonfungible",
  "noOfNfts": 1
}
Exemple de valeur de retour (compte de jeton obligatoire) :
{
  "bapAccountVersion": 0,
  "assetType": "oaccount",
  "status": "active",
  "accountId": "oaccount~2de8db6b91964f8c9009136831126d3cfa94e1d00c4285c1ea3e6d1f36479ed4",
  "userId": "idcqa",
  "orgId": "appdev",
  "tokenType": "fungible",
  "tokenId": "t1",
  "tokenName": "loyalty",
  "balance": 100
}
getAllAccounts
Cette méthode retourne les détails de tous les comptes d'utilisateur. Cette méthode ne peut être appelée que par un élément Token Admin du code de chaîne.
@GetMethod()
@Validator()
public async getAllAccounts() {
  await this.Ctx.ERC1155Auth.checkAuthorization("ERC1155ACCOUNT.getAllAccounts", "TOKEN");
  return await this.Ctx.ERC1155Account.getAllAccounts();
}
Paramètres :
  • aucune
Retourne :
  • En cas de succès, un tableau JSON de tous les comptes.
Exemple de valeur renvoyée :
[
        {
            "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
Cette méthode retourne un sommaire de compte pour un utilisateur spécifié et les détails des jetons fongibles et non fongibles qui sont associés à l'utilisateur. Cette méthode ne peut être appelée que par Token Admin du code de chaîne ou par Account Owner du compte.
@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);
}
Paramètres :
  • orgId: string - ID fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation courante.
  • userId: string - Nom d'utilisateur ou ID courriel de l'utilisateur.
Retourne :
  • En cas de succès, un objet de compte JSON qui inclut et récapitule le compte pour l'utilisateur spécifié et les détails des jetons fongibles et non fongibles associés à l'utilisateur. Pour les jetons non fongibles fractionnaires, la propriété tokenShare dans la section associatedNFTs affiche le partage dont l'utilisateur est responsable.
Exemple de valeur renvoyée :
{
    "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
Cette méthode retourne les détails de l'utilisateur pour un ID compte spécifié. Cette méthode peut être appelée par n'importe quel utilisateur.
@GetMethod()
@Validator(yup.string())
public async getUserByAccountId(accountId: string) {
  return await this.Ctx.ERC1155Account.getUserByAccountId(accountId);
}
Paramètres :
  • accountId: string - ID du compte.
Retourne :
  • En cas de réussite, un objet JSON contenant les détails de l'utilisateur (orgId et userId).
Exemple de valeur renvoyée :
{
  "orgId": "appdev"
  "userId": "user2",
}

Méthodes pour la gestion des rôles

addRole
Cette méthode ajoute un rôle à un utilisateur et à un jeton spécifiés. Cette méthode ne peut être appelée que par un élément Token Admin du code de chaîne. Les jetons fongibles sont spécifiés par l'ID jeton. Les jetons non fongibles sont spécifiés par le nom du jeton. L'utilisateur spécifié doit avoir un compte de jeton associé au jeton fongible ou un compte de jeton non fongible pour les rôles NFT. Le rôle spécifié doit exister dans le fichier de spécification pour le jeton.
@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);
}
Paramètres :
  • orgId: string - ID fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation courante.
  • userId: string - Nom d'utilisateur ou ID courriel de l'utilisateur.
  • role: string - Nom du rôle à ajouter à l'utilisateur spécifié.
  • tokenDetails: TokenDetail - Détails qui spécifient le jeton. Pour les jetons fongibles, utilisez le format suivant :
    {"tokenId":"token1"}
    Pour les jetons non fongibles, utilisez le format suivant :
    {"tokenName":"artCollection"}
Retourne :
  • En cas de réussite, un message avec les détails du compte.
Exemple de valeur renvoyée :
{
  "msg": "Successfully added role 'minter' to Account Id: oaccount~1422a74d262a3a55a37cd9023ef8836f765d0be7b49d397696b9961d7434d22a (Org-Id: appdev, User-Id: idcqa)"
}
isInRole
Cette méthode retourne une valeur booléenne pour indiquer si un utilisateur a un rôle spécifié. Les jetons fongibles sont spécifiés par l'ID jeton. Les jetons non fongibles sont spécifiés par le nom du jeton. Cette méthode ne peut être appelée que par Token Admin du code de chaîne ou par Account Owner du compte. L'utilisateur spécifié doit avoir un compte de jeton associé au jeton fongible ou un compte de jeton non fongible pour les rôles NFT. Le rôle spécifié doit exister dans le fichier de spécification pour le jeton.
@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);
}
Paramètres :
  • orgId: string - ID fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation courante.
  • userId: string - Nom d'utilisateur ou ID courriel de l'utilisateur.
  • role: string - Nom du rôle à rechercher.
  • tokenDetails: TokenDetail - Détails qui spécifient le jeton. Pour les jetons fongibles, utilisez le format suivant :
    {"tokenId":"token1"}
    Pour les jetons non fongibles, utilisez le format suivant :
    {"tokenName":"artCollection"}
Exemple de valeur renvoyée :
{
    "result": true,
    "msg": "Account Id oaccount~1422a74d262a3a55a37cd9023ef8836f765d0be7b49d397696b9961d7434d22a (Org-Id: appdev, User-Id: idcqa) has minter role"
}
removeRole
Cette méthode supprime un rôle d'un utilisateur et d'un jeton spécifiés. Les jetons fongibles sont spécifiés par l'ID jeton. Les jetons non fongibles sont spécifiés par le nom du jeton. Cette méthode ne peut être appelée que par un élément Token Admin du code de chaîne. L'utilisateur spécifié doit avoir un compte de jeton associé au jeton fongible ou un compte de jeton non fongible pour les rôles NFT. Le rôle spécifié doit exister dans le fichier de spécification pour le jeton.
@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);
}
Paramètres :
  • orgId: string - ID fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation courante.
  • userId: string - Nom d'utilisateur ou ID courriel de l'utilisateur.
  • role: string - Nom du rôle à supprimer de l'utilisateur spécifié.
  • tokenDetails: TokenDetail - Détails qui spécifient le jeton. Pour les jetons fongibles, utilisez le format suivant :
    {"tokenId":"token1"}
    Pour les jetons non fongibles, utilisez le format suivant :
    {"tokenName":"artCollection"}
Exemple de valeur renvoyée :
{
  "msg": "Successfully removed role 'minter' from Account Id: oaccount~60bb20c14a83f6e426e1437c479c5891e1c6477dfd7ad18b73acac5d80bc504b (Org-Id: appdev, User-Id: user1)"
}
getAccountsByRole
Cette méthode retourne une liste de tous les ID compte pour un rôle et un jeton spécifiés. Les jetons fongibles sont spécifiés par l'ID jeton. Les jetons non fongibles sont spécifiés par le nom du jeton. Cette méthode ne peut être appelée que par un élément Token Admin du code de chaîne.
@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);
}
Paramètres :
  • role: string - Nom du rôle à rechercher.
  • tokenDetails: TokenDetail - Détails qui spécifient le jeton. Pour les jetons fongibles, utilisez le format suivant :
    {"tokenId":"token1"}
    Pour les jetons non fongibles, utilisez le format suivant :
    {"tokenName":"artCollection"}
Exemple de valeur renvoyée :
{
  "accounts": [
    "oaccount~1422a74d262a3a55a37cd9023ef8836f765d0be7b49d397696b9961d7434d22a",
    "oaccount~60bb20c14a83f6e426e1437c479c5891e1c6477dfd7ad18b73acac5d80bc504b"
  ]
}
getUsersByRole
Cette méthode retourne une liste de tous les utilisateurs pour un rôle et un jeton spécifiés. Les jetons fongibles sont spécifiés par l'ID jeton. Les jetons non fongibles sont spécifiés par le nom du jeton. Cette méthode ne peut être appelée que par un élément Token Admin du code de chaîne.
@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);
}
Paramètres :
  • role: string - Nom du rôle à rechercher.
  • tokenDetails: TokenDetail - Détails qui spécifient le jeton. Pour les jetons fongibles, utilisez le format suivant :
    {"tokenId":"token1"}
    Pour les jetons non fongibles, utilisez le format suivant :
    {"tokenName":"artCollection"}
Exemple de valeur renvoyée :
{
    "users": [
        {
            "accountId": "oaccount~1422a74d262a3a55a37cd9023ef8836f765d0be7b49d397696b9961d7434d22a",
            "orgId": "appdev",
            "userId": "user2"
        },
        {
            "accountId": "oaccount~60bb20c14a83f6e426e1437c479c5891e1c6477dfd7ad18b73acac5d80bc504b",
            "orgId": "appdev",
            "userId": "user1"
        }
    ]
}

Méthodes de gestion de l'historique des transactions

getAccountTransactionHistory
Cette méthode retourne l'historique des transactions de compte. Cette méthode ne peut être appelée que par un élément Token Admin du code de chaîne ou par le responsable du compte. Pour les jetons non fongibles, cette méthode ne peut être appelée que lorsqu'elle est connectée au réseau Oracle Blockchain Platform distant.
@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);
}
Paramètres :
  • orgId: string - ID fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation courante.
  • userId: string - Nom d'utilisateur ou ID courriel de l'utilisateur.
  • tokenId?: string - Pour un compte de jeton non fongible, une chaîne vide. Pour un compte de jeton fongible, l'ID jeton.
Exemple de valeur renvoyée :
[
    {
        "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
Cette méthode retourne les détails de la transaction pour un code de transaction spécifié. Tout le monde peut appeler cette méthode.
@GetMethod()
@Validator(yup.string())
public async getTransactionById(transactionId: string) {
  return await this.Ctx.ERC1155Transaction.getTransactionById(transactionId);
}
Paramètres :
  • transactionId: string - ID de la transaction.
Exemple de valeur renvoyée :
{
  "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
Cette méthode supprime des transactions avant un horodatage spécifié de la base de données d'état. Cette méthode ne peut être appelée que par un élément Token Admin du code de chaîne.
@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);
}
Paramètres :
  • timestamp: string - Toutes les transactions antérieures à cet horodatage seront supprimées.
Exemple de valeur renvoyée :
{
  "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éthodes de gestion du comportement des jetons - Comportement mintable

mintBatch
Cette méthode crée (mine) plusieurs jetons dans une opération par lots. Cette méthode ne crée que des jetons fongibles ou des jetons fractionnaires non fongibles.

Pour les jetons fongibles, si le rôle de mineur est défini dans le fichier de spécification, tout utilisateur doté du rôle de mineur peut appeler cette méthode. Sinon, n'importe quel utilisateur peut utiliser cette méthode pour mentonner des jetons. Vous ne pouvez pas extraire plus de la propriété max_mint_quantity du jeton, si cette propriété a été spécifiée lors de la création ou de la mise à jour du jeton.

Pour les jetons non fongibles, si le rôle de mineur est défini dans le fichier de spécification, tout utilisateur doté du rôle de mineur peut appeler cette méthode. Sinon, n'importe quel utilisateur peut utiliser cette méthode pour mentonner des jetons. En outre, l'appelant doit également être le créateur du jeton. Il n'y a pas de limite supérieure à la quantité de jetons fractionnaires non fongibles qui peuvent être frappés.

Vous ne pouvez pas utiliser cette méthode pour extraire un jeton non fongible entier.

@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);
}
Paramètres :
  • orgId: string - ID fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation courante.
  • userId: string - Nom d'utilisateur ou ID courriel de l'utilisateur.
  • tokenIds: string[] - Liste des ID jetons pour lesquels créer des jetons.
  • quantity: number[] - Liste des quantités de jetons à menthe, correspondant au tableau d'ID jeton.
Retourne :
  • En cas de réussite, un objet JSON qui inclut les détails sur les jetons frappés.
Exemple de valeur renvoyée :
{
    "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éthodes de gestion du comportement des jetons - Comportement transférable

batchTransferFrom
Cette méthode termine une opération par lots qui transfère les jetons spécifiés dans une liste d'ID jeton d'un utilisateur à un autre.

Dans le cas des TNF, puisque la méthode transfère la propriété de la TNF, l'expéditeur de la TNF doit posséder le jeton.

Pour les NFT fractionnaires, si un utilisateur (y compris le créateur du jeton) transfère toutes les actions qu'il possède, il perd la propriété du jeton. Si une part d'un jeton est transférée à un utilisateur, cet utilisateur devient automatiquement l'un des propriétaires de la fraction NFT.

Cette méthode ne valide pas que l'appelant de la méthode est l'expéditeur spécifié. Cette méthode peut être appelée par n'importe quel utilisateur.

@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);
}
Paramètres :
  • fromOrgId: string - ID fournisseur de services d'adhésion (MSP) de l'expéditeur et du responsable du jeton dans l'organisation courante.
  • fromUserId: string - Nom d'utilisateur ou ID courriel de l'expéditeur et du responsable du jeton.
  • toOrgId: string - ID fournisseur de services d'adhésion (MSP) du destinataire dans l'organisation courante.
  • toUserId: string - Nom d'utilisateur ou ID courriel du destinataire.
  • tokenIds: string[] - Liste des ID jetons pour les jetons à transférer.
  • quantity: number[] - Liste des quantités de jetons à transférer, correspondant au tableau d'ID jeton.
Retourne :
  • En cas de succès, un message contenant les détails de chaque transfert de jeton.
Exemple de valeur renvoyée :
[
    {
        "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
Cette méthode termine une opération par lots qui transfère les jetons spécifiés dans une liste d'ID jeton d'un utilisateur à un autre.

Dans le cas des TNF, puisque la méthode transfère la propriété de la TNF, l'expéditeur de la TNF doit posséder le jeton.

Pour les NFT fractionnaires, si un utilisateur (y compris le créateur du jeton) transfère toutes les actions qu'il possède, il perd la propriété du jeton. Si une part d'un jeton est transférée à un utilisateur, cet utilisateur devient automatiquement l'un des propriétaires de la fraction NFT.

L'appelant de la méthode doit être l'expéditeur spécifié. Cette méthode peut être appelée par n'importe quel utilisateur.

@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);
}
Paramètres :
  • fromOrgId: string - ID fournisseur de services d'adhésion (MSP) de l'expéditeur et du responsable du jeton dans l'organisation courante.
  • fromUserId: string - Nom d'utilisateur ou ID courriel de l'expéditeur et du responsable du jeton.
  • toOrgId: string - ID fournisseur de services d'adhésion (MSP) du destinataire dans l'organisation courante.
  • toUserId: string - Nom d'utilisateur ou ID courriel du destinataire.
  • tokenIds: string[] - Liste des ID jetons pour les jetons à transférer.
  • quantity: number[] - Liste des quantités de jetons à transférer, correspondant au tableau d'ID jeton.
Retourne :
  • En cas de succès, un message contenant les détails de chaque transfert de jeton.
Exemple de valeur renvoyée :
[
    {
        "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
Cette méthode termine une opération par lots qui obtient le solde des comptes de jetons. Les détails du compte sont indiqués dans trois listes distinctes d'ID organisation, d'ID utilisateur et d'ID jeton. Cette méthode ne peut être appelée que par Token Admin du code de chaîne ou par les responsables de compte. Les responsables de compte ne peuvent voir les détails du solde que pour les comptes dont ils sont responsables.
@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);
}
Paramètres :
  • orgIds: string[] - Liste des ID fournisseur de services d'adhésion (MSP) dans l'organisation courante.
  • userIds: string[] - Liste du nom d'utilisateur ou des ID courriel.
  • tokenIds: string[] - Liste des ID jetons.
Exemple de valeur renvoyée :

Dans l'exemple suivant, l'ID jeton FNFT représente un jeton non fongible fractionnaire et l'ID jeton FT représente un jeton fongible.

[
    {
        "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
Cette méthode échange des jetons entre les comptes spécifiés. Cette méthode ne prend en charge que l'échange entre un NFT et un jeton fongible ou un jeton fongible et un NFT. Le NFT peut être entier ou fractionnaire. Cette méthode ne peut être appelée que par le responsable du compte.
@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
    );
  }
Paramètres :
  • fromTokenId: string - ID du jeton dont l'expéditeur est responsable.
  • fromOrgId: string - ID fournisseur de services d'adhésion (MSP) de l'expéditeur dans l'organisation courante.
  • fromUserId: string - Nom d'utilisateur ou ID courriel de l'expéditeur.
  • fromTokenQuantity: number - Quantité de jetons de l'expéditeur à échanger avec le destinataire.
  • toTokenId: string - ID du jeton dont le destinataire est responsable.
  • toOrgId: string - ID fournisseur de services d'adhésion (MSP) du destinataire dans l'organisation courante.
  • toUserId: string - Nom d'utilisateur ou ID courriel du destinataire.
  • toTokenQuantity: number - Quantité de jetons du récepteur à échanger avec l'expéditeur.
Retourne :
  • En cas de succès, un message contenant les détails de l'échange de jeton.
Exemple de valeur renvoyée :
{
    "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éthodes de gestion du comportement des jetons - Comportement brûlable

burnBatch
Cette méthode désactive ou brûle les jetons fongibles et non fongibles spécifiés. Tout utilisateur ayant le rôle de brûleur peut appeler cette méthode.
@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);
}
Paramètres :
  • orgId: string - ID fournisseur de services d'adhésion (MSP) dans l'organisation courante.
  • userId: string - Nom d'utilisateur ou ID courriel.
  • tokenIds: string[] - Liste des ID jetons à graver
  • quantity: number[] - Liste des quantités de jetons à graver, correspondant au tableau d'ID jeton.
Retourne :
  • En cas de succès, un message contenant des détails sur les opérations de gravure.
Exemple de valeur renvoyée :
[
  {
    "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
Cette méthode désactive ou grave le jeton non fongible spécifié et retourne un objet de jeton et un historique de jeton. Tout utilisateur ayant le rôle de brûleur peut appeler cette méthode.
@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)};
}
Paramètres :
  • orgId: string - ID fournisseur de services d'adhésion (MSP) dans l'organisation courante.
  • userId: string - Nom d'utilisateur ou ID courriel.
  • tokenId: string - ID du jeton non fongible à brûler
Retourne :
  • En cas de succès, un objet de jeton au format JSON qui inclut les informations d'historique de jeton.
Exemple de valeur renvoyée :
{
    "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éthodes SDK

Méthodes pour la gestion du contrôle d'accès

checkAuthorization
Utilisez cette méthode pour ajouter une vérification de contrôle d'accès à une opération. Il s'agit d'une fonction asynchrone. Certaines méthodes de jeton ne peuvent être exécutées que par Token Admin ou AccountOwner du jeton ou par MultipleAccountOwner pour les utilisateurs ayant plusieurs comptes. Le mappage du contrôle d'accès est décrit dans le fichier ../lib/constant.ts. Vous pouvez modifier le contrôle d'accès en modifiant le fichier ../lib/constant.ts. Pour utiliser votre propre contrôle d'accès ou pour désactiver le contrôle d'accès, supprimez le code de contrôle d'accès des méthodes de contrôleur et des méthodes personnalisées générées automatiquement.
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)
Paramètres :
  • classFuncName: string - Valeur de mappage entre la classe et les méthodes, comme décrit dans le fichier ../lib/constant.ts.
  • ...args - Argument de variable où args[0] prend la constante 'TOKEN' et args[1] prend account_id pour ajouter une vérification de contrôle d'accès pour AccountOwner. Pour ajouter une vérification de contrôle d'accès pour MultipleAccountOwner, args[1] prend org_id et args[2] prend user_id.
Retourne :
  • Sur le succès, une promesse. En cas d'erreur, un rejet avec un message d'erreur.
isUserTokenAdmin
Cette méthode retourne la valeur booléenne true si l'utilisateur spécifié est Token Admin et false dans le cas contraire. La méthode ne peut être appelée que par Token Admin du code de chaîne du jeton.
Ctx.ERC1155Auth.isUserTokenAdmin(orgId: string, userId: string)
Paramètres :
  • orgId: string - ID fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation courante.
  • userId: string - Nom d'utilisateur ou ID courriel de l'utilisateur.
Exemple de valeur renvoyée :
{
  "result": true
}
addAdmin
Cette méthode ajoute un utilisateur en tant que Token Admin du code de chaîne du jeton. La méthode ne peut être appelée que par Token Admin du code de chaîne du jeton.
Ctx.ERC1155Admin.addAdmin(orgId: string, userId: string)
Paramètres :
  • orgId: string - ID fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation courante.
  • userId: string - Nom d'utilisateur ou ID courriel de l'utilisateur.
Retourne :
  • En cas de réussite, un message listant les détails de l'utilisateur ajoutés comme Token Admin du code de chaîne du jeton.
Exemple de valeur renvoyée :
{
  "msg": "Successfully added Admin (OrgId: appDev, UserId: user1)"
}
removeAdmin
Cette méthode supprime un utilisateur en tant que Token Admin du code de chaîne du jeton. La méthode ne peut être appelée que par Token Admin du code de chaîne du jeton. Vous ne pouvez pas vous supprimer en tant que Token Admin.
Ctx.ERC1155Admin.removeAdmin(orgId: string, userId: string)
Paramètres :
  • orgId: string - ID fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation courante.
  • userId: string - Nom d'utilisateur ou ID courriel de l'utilisateur.
Retourne :
  • En cas de réussite, un message listant les détails de l'utilisateur supprimé en tant que Token Admin du code de chaîne du jeton.
Exemple de valeur renvoyée :
{
  "msg": "Successfully removed Admin (OrgId: appDev, UserId: user1)"
}
getAllAdmins
Cette méthode retourne une liste de tous les utilisateurs Token Admin.
Ctx.ERC1155Admin.getAllAdmins()
Paramètres :
  • aucune
Retourne :
  • Au succès, une liste de tous les utilisateurs Token Admin, identifiée par l'ID organisation et l'ID utilisateur.
Exemple de valeur renvoyée :
{
  "admins": [
    {
      "orgId": "appdev",
      "userId": "idcqa"
    },
    {
      "orgId": "appdev",
      "userId": "user1"
    }
  ]
}

Méthodes de gestion de la configuration de jeton

save
Cette méthode crée des jetons. Chaque jeton défini a sa propre méthode de création. Pour les jetons non fongibles, si le rôle de mineur est défini dans le fichier de spécification, tout utilisateur doté du rôle de mineur peut appeler cette méthode pour créer un NFT. Sinon, n'importe quel utilisateur peut utiliser cette méthode pour créer (mint) des NFT. L'utilisateur qui appelle cette méthode devient propriétaire du NFT (entier ou fractionnaire).
Ctx.ERC1155Token.save(tokenAsset: <Token Class>, quantity?: number);
Paramètres :
  • tokenAsset: <Token Class> - Ressource de jeton. Les propriétés de la ressource sont définies dans le fichier de modèle.
  • quantity: number - Pour les jetons non fongibles uniquement, le nombre de jetons à menthe. La seule valeur prise en charge pour ce paramètre est 1.
Retourne :
  • En cas de succès, la ressource de jeton au format JSON, qui peut inclure les informations suivantes.
  • tokenMetadata - Informations JSON décrivant le jeton.
  • createdBy - ID compte de l'appelant, qui est l'utilisateur frappant le jeton. Cette propriété ne peut pas être modifiée.
  • creationDate - Horodatage de la transaction de frappe. Cette propriété ne peut pas être modifiée.
  • isBurned - Cette propriété indique si le jeton est brûlé. Cette propriété ne peut pas être modifiée.
  • tokenName - Nom du jeton. Cette propriété ne peut pas être modifiée.
  • tokenDesc - Description du jeton.
  • symbol - Symbole du jeton. Cette propriété ne peut pas être modifiée.
  • tokenStandard - Norme du jeton. Cette propriété ne peut pas être modifiée.
  • tokenType - Type du jeton (fongible ou non fongible). Cette propriété ne peut pas être modifiée.
  • tokenUnit - Unité du jeton (entier ou fractionnaire). Cette propriété ne peut pas être modifiée.
  • behaviors - Liste des comportements de jeton. Cette propriété ne peut pas être modifiée.
  • mintable - Les propriétés liées à la frappe. La valeur max_mint_quantity définit le nombre maximal de jetons pouvant être créés pour la classe de jetons.
  • owner - ID compte du responsable courant, qui est l'appelant de la méthode.
  • tokenUri - URI du jeton.
  • quantity - Quantité du jeton.
Exemple de valeur de retour (NFT entier) :
{
    "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
}
Exemple de valeur de retour (jeton fongible) :
{
    "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"
}
Exemple de valeur de retour (FT partiel) :
{
    "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
Cette méthode met à jour les jetons. Vous ne pouvez pas mettre à jour les métadonnées de jeton ou l'URI de jeton des jetons non fongibles.
Ctx.ERC1155Token.update(tokenAsset: any);
Paramètres :
  • tokenAsset: <Token Class> - Ressource de jeton. Les propriétés de la ressource sont définies dans le fichier de modèle.
Retourne :
  • En cas de succès, la ressource de jeton mise à jour au format JSON.
Exemple de valeur de retour (NFT entier) :
{
    "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)
Cette méthode retourne l'historique pour un ID jeton spécifié.
Ctx.ERC1155Token.history(tokenId: string)
Paramètres :
  • tokenId: string - ID du jeton.
Retourne :
  • En cas de succès, un tableau JSON contenant l'historique des jetons.
Exemple de valeur de retour (jeton fongible) :
[
    {
        "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"
        }
    }
]
Exemple de valeur de retour (FT partiel) :
[
    {
        "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
                }
            ]
        }
    }
]
Exemple de valeur de retour (NFT entier) :
[
    {
        "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
Cette méthode retourne toutes les ressources de jeton enregistrées dans la base de données d'état. Cette méthode ne peut être appelée que par un élément Token Admin du code de chaîne. Cette méthode utilise des interrogations SQL enrichies Berkeley DB et ne peut être appelée que lorsqu'elle est connectée au réseau Oracle Blockchain Platform distant.
Ctx.ERC1155Token.getAllTokens()
Paramètres :
  • aucune
Exemple de valeur renvoyée :
[
  {
    "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)
Cette méthode retourne un objet de jeton si le jeton est présent dans la base de données d'état. Cette méthode ne peut être appelée que par Token Admin du code de chaîne ou du responsable du jeton.
this.Ctx.ERC1155Token.get(tokenId: string)
Paramètres :
  • tokenId: string - ID du jeton à obtenir.
Exemple de valeur de retour (NFT entier) :
{
  "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"
}
Exemple de valeur de retour (jeton fongible) :
{
    "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"
}
Exemple de valeur de retour (FT partiel) :
{
    "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
Cette méthode retourne toutes les ressources de jeton appartenant à un utilisateur spécifié. Cette méthode utilise des interrogations SQL enrichies Berkeley DB et ne peut être appelée que lorsqu'elle est connectée au réseau Oracle Blockchain Platform distant.
Ctx.ERC1155Token.getAllTokensByUser(accountId: string)
Paramètres :
  • accountId: string - ID compte de l'utilisateur.
Exemple de valeur renvoyée :
[
  {
    "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
Cette méthode retourne l'ID compte, l'ID organisation et l'ID utilisateur du responsable de l'ID jeton spécifié.
Ctx.ERC1155Token.ownerOf(tokenId: string)
Paramètres :
  • tokenId: string - ID du jeton.
Exemple de valeur renvoyée :
{
    "accountId": "oaccount~76cb672eeb1bd535899562a840d0c15a356db89e24bc8b43ac1dba845a4282c6",
    "orgId": "appdev",
    "userId": "idcqa"
}
tokenURI
Cette méthode retourne l'URI d'un jeton spécifié. Tout le monde peut appeler cette méthode.
Ctx.ERC1155Token.tokenURI(tokenId: string)
Paramètres :
  • tokenId: string - ID du jeton.
Exemple de valeur renvoyée :
{
    "tokenUri": "example.com"
}
name
Cette méthode retourne le nom de la classe de jeton. Tout le monde peut appeler cette méthode.
Ctx.ERC1155Token.name(tokenId: string)
Paramètres :
  • tokenId: string - ID du jeton.
Exemple de valeur renvoyée :
{"tokenName": "artcollection"}
totalSupply
Cette méthode retourne le nombre total de jetons frappés. Les jetons fongibles sont spécifiés par l'ID jeton. Les jetons non fongibles sont spécifiés par le nom du jeton.
Ctx.ERC1155Token.totalSupply(token: any)
Paramètres :
  • token: any - Ressource de jeton.
Exemple de valeur renvoyée :
{"totalSupply": 110}
totalNetSupply
Cette méthode retourne le nombre total de jetons frappés moins le nombre de jetons brûlés. Les jetons fongibles sont spécifiés par l'ID jeton. Les jetons non fongibles sont spécifiés par le nom du jeton.
Ctx.ERC1155Token.totalNetSupply(token: any)
Paramètres :
  • token: any - Ressource de jeton.
Exemple de valeur renvoyée :
{"totalNetSupply": 105}
getTokensByName
Cette méthode retourne toutes les ressources de jeton pour un nom de jeton spécifié. Cette méthode utilise des interrogations SQL enrichies Berkeley DB et ne peut être appelée que lorsqu'elle est connectée au réseau Oracle Blockchain Platform distant.
Ctx.ERC1155Token.getTokensByName(tokenName: string)
Paramètres :
  • tokenName: string - Nom du jeton.
Exemple de valeur renvoyée :
[
  {
    "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
Cette méthode retourne le nombre de décimales pour un jeton spécifié. Si le comportement divisible n'est pas spécifié pour le jeton, la valeur par défaut de zéro décimale est retournée.
Ctx.ERC1155Token.getDecimals(token)
Paramètres :
  • token: any - Ressource de jeton.
Exemple de valeur renvoyée :
2

Méthodes de gestion des comptes

createAccount
Cette méthode crée un compte pour un utilisateur spécifié et les comptes de jeton associés pour les jetons fongibles ou non fongibles. Un compte doit être créé pour tout utilisateur qui aura des jetons à tout moment. Le compte utilisateur suit le compte NFT et les comptes jetons fongibles qu'un utilisateur possède. Les utilisateurs doivent avoir des comptes dans le réseau pour effectuer les opérations liées aux jetons. Cette méthode ne peut être appelée que par un élément Token Admin du code de chaîne.

Un compte d'utilisateur a un ID unique, qui est formé par un hachage SHA-256 du paramètre orgId et du paramètre userId.

Un utilisateur peut avoir plusieurs comptes de jeton fongibles avec des ID de compte uniques. Les ID compte de jeton fongible sont formés par un hachage SHA-256 du paramètre orgId, du paramètre userId, de la chaîne constante ft séparée par le symbole tilde (~), et d'un numéro de compteur qui signifie l'index du compte fongible en cours de création séparé par le symbole tilde (~).

Un utilisateur ne peut avoir qu'un seul compte de jeton non fongible. Les ID compte de jeton non fongibles sont uniques et sont formés par un hachage SHA-256 du paramètre orgId, du paramètre userId et de la chaîne constante nft séparés par le symbole tilde (~). Tous les jetons non fongibles qu'un utilisateur possède, qu'ils soient entiers ou fractionnaires, sont liés à ce seul compte de jeton non fongible.

Ctx.ERC1155Account.createAccount(orgId: string, userId: string, ftAccount: boolean, nftAccount: boolean)
Paramètres :
  • orgId: string - ID fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation courante.
  • userId: string - Nom d'utilisateur ou ID courriel de l'utilisateur.
  • ftAccount: boolean - Si la valeur est Vrai, un compte de jeton fongible est créé et associé au compte d'utilisateur.
  • nftAccount: boolean - Si la valeur est Vrai, un compte de jeton non fongible est créé et associé au compte d'utilisateur.
Retourne :
  • En cas de réussite, un objet JSON du compte qui a été créé.
Exemple de valeur renvoyée :
{
  "assetType": "ouaccount",
  "accountId": "ouaccount~cf20877546f52687f387e7c91d88b9722c97e1a456cc0484f40c747f7804feae",
  "userId": "user1",
  "orgId": "appdev",
  "totalAccounts": 2,
  "totalFtAccounts": 1,
  "associatedFtAccounts": [
    {
      "accountId": "oaccount~60bb20c14a83f6e426e1437c479c5891e1c6477dfd7ad18b73acac5d80bc504b",
      "tokenId": ""
    }
  ],
  "associatedNftAccount": "oaccount~73c3e835dac6d0a56ca9d8def08269f83cefd59b9d297fe2cdc5a9083828fa58"
}
createUserAccount
Cette méthode crée un compte pour un utilisateur spécifié. Un compte doit être créé pour tout utilisateur qui aura des jetons à tout moment. Le compte utilisateur suit le compte NFT et les comptes jetons fongibles qu'un utilisateur possède. Les utilisateurs doivent avoir des comptes dans le réseau pour effectuer les opérations liées aux jetons.

Un ID compte est un hachage SHA-256 du paramètre orgId et du paramètre userId. Cette méthode ne peut être appelée que par un élément Token Admin du code de chaîne.

Ctx.ERC1155Account.createUserAccount(orgId: string, userId: string)
Paramètres :
  • orgId: string - ID fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation courante.
  • userId: string - Nom d'utilisateur ou ID courriel de l'utilisateur.
Retourne :
  • En cas de réussite, un objet JSON du compte d'utilisateur qui a été créé.
Exemple de valeur renvoyée :
{
  "assetType": "ouaccount",
  "accountId": "ouaccount~24ffd4d32a028a85b4b960f5d55536c837b5429bc7f346150adfa904ec2937cc",
  "userId": "idcqa",
  "orgId": "appdev",
  "totalAccounts": 0,
  "totalFtAccounts": 0,
  "associatedFtAccounts": [],
  "associatedNftAccount": ""
}
createTokenAccount
Cette méthode crée un compte de jeton fongible ou non fongible à associer à un compte d'utilisateur.

Un utilisateur peut avoir plusieurs comptes de jeton fongibles avec des ID de compte uniques. Les ID compte de jeton fongible sont formés par un hachage SHA-256 du paramètre orgId, du paramètre userId, de la chaîne constante ft séparée par le symbole tilde (~), et d'un numéro de compteur qui signifie l'index du compte fongible en cours de création séparé par le symbole tilde (~).

Un utilisateur ne peut avoir qu'un seul compte de jeton non fongible. Les ID compte de jeton non fongibles sont uniques et sont formés par un hachage SHA-256 du paramètre orgId, du paramètre userId et de la chaîne constante nft séparés par le symbole tilde (~). Tous les jetons non fongibles qu'un utilisateur possède, qu'ils soient entiers ou fractionnaires, sont liés à ce seul compte de jeton non fongible.

Cette méthode ne peut être appelée que par un élément Token Admin du code de chaîne.

Ctx.ERC1155Account.createTokenAccount(orgId: string, userId: string, tokenType: string)
Paramètres :
  • orgId: string - ID fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation courante.
  • userId: string - Nom d'utilisateur ou ID courriel de l'utilisateur.
  • tokenType: TokenType - Type de compte de jeton à créer. Les seuls types de jeton pris en charge sont nonfungible et fungible.
Retourne :
  • En cas de réussite, un objet JSON du compte de jeton créé.
Exemple de valeur renvoyée :
{
  "assetType": "ouaccount",
  "accountId": "ouaccount~24ffd4d32a028a85b4b960f5d55536c837b5429bc7f346150adfa904ec2937cc",
  "userId": "idcqa",
  "orgId": "appdev",
  "totalAccounts": 1,
  "totalFtAccounts": 1,
  "associatedFtAccounts": [
    {
      "accountId": "oaccount~1422a74d262a3a55a37cd9023ef8836f765d0be7b49d397696b9961d7434d22a",
      "tokenId": ""
    }
  ],
  "associatedNftAccount": ""
}
associateTokenToToken
Cette méthode associe le compte de jeton fongible d'un utilisateur à un jeton fongible particulier.
Ctx.ERC1155Account.associateTokenToToken(accountId: string, tokenId: string)
Paramètres :
  • accountId: string - ID compte d'utilisateur.
  • tokenId: string - ID du jeton.
Retourne :
  • En cas de succès, un objet JSON du compte d'utilisateur, qui indique que le jeton fongible a été associé au compte de jeton. Par exemple, dans l'exemple suivant, le premier objet du tableau associatedFtAccounts montre que l'ID compte de jeton fongible et l'ID jeton sont associés.
Exemple de valeur renvoyée :
{
  "assetType": "ouaccount",
  "accountId": "ouaccount~24ffd4d32a028a85b4b960f5d55536c837b5429bc7f346150adfa904ec2937cc",
  "userId": "idcqa",
  "orgId": "appdev",
  "totalAccounts": 1,
  "totalFtAccounts": 1,
  "associatedFtAccounts": [
    {
      "accountId": "oaccount~1422a74d262a3a55a37cd9023ef8836f765d0be7b49d397696b9961d7434d22a",
      "tokenId": "tokenOne"
    }
  ],
  "associatedNftAccount": ""
}
getAccountHistory
Cette méthode retourne l'historique pour un compte de jeton spécifié.
Ctx.ERC1155Account.getAccountHistory(accountId: string)
Paramètres :
  • accountId: string - ID compte d'utilisateur.
Retourne :
  • En cas de succès, un tableau d'objets JSON décrivant l'historique du compte.
Exemple de valeur renvoyée :
[
    {
        "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
Cette méthode retourne les détails du compte de jeton, y compris le statut du compte, pour un utilisateur spécifié. Cette méthode ne peut être appelée que par Token Admin du code de chaîne ou par Account Owner du compte.
Ctx.ERC1155Account.GetAccountWithStatus(accountId, tokenId...)
Paramètres :
  • userAccountId: string - ID compte de l'utilisateur.
  • tokenId?: string - Pour un compte de jeton non fongible, une chaîne vide. Pour un compte de jeton fongible, l'ID jeton.
Retourne :
  • En cas de réussite, un objet JSON qui inclut les détails du compte de jeton, y compris le statut du compte.
Exemple de valeur de retour (compte de jeton non obligatoire) :
{
    "assetType": "oaccount",
    "bapAccountVersion": 1,
    "status": "active",
    "accountId": "oaccount~cc301bee057f14236a97d434909ec1084970921b008f6baab09c2a0f5f419a9a",
    "userId": "idcqa",
    "orgId": "appdev",
    "tokenType": "nonfungible",
    "noOfNfts": 1
  }
Exemple de valeur de retour (compte de jeton obligatoire) :
{
  "bapAccountVersion": 0,
  "assetType": "oaccount",
  "status": "active",
  "accountId": "oaccount~2de8db6b91964f8c9009136831126d3cfa94e1d00c4285c1ea3e6d1f36479ed4",
  "userId": "idcqa",
  "orgId": "appdev",
  "tokenType": "fungible",
  "tokenId": "t1",
  "tokenName": "loyalty",
  "balance": 0
}
getAccount
Cette méthode retourne les détails du compte de jeton pour un utilisateur spécifié. Cette méthode ne peut être appelée que par Token Admin du code de chaîne ou par Account Owner du compte.
Ctx.ERC1155Account.getAccount(userAccountId: string, tokenId: string)
Paramètres :
  • userAccountId: string - ID compte de l'utilisateur.
  • tokenId?: string - Pour un compte de jeton non fongible, une chaîne vide. Pour un compte de jeton fongible, l'ID jeton.
Retourne :
  • En cas de réussite, un objet JSON qui inclut les détails du compte de jeton. Le paramètre bapAccountVersion est défini dans l'objet de compte pour une utilisation interne.
Exemple de valeur de retour (compte de jeton non obligatoire) :
{
    "assetType": "oaccount",
    "bapAccountVersion": 0,
    "accountId": "oaccount~e88276a3be547e31b567346bdddde52d37734da4d5fae83ab2e5c98a10097371",
    "userId": "idcqa",
    "orgId": "appdev",
    "tokenType": "nonfungible",
    "noOfNfts": 3
}
Exemple de valeur de retour (compte de jeton obligatoire) :
{
    "assetType": "oaccount",
    "bapAccountVersion": 0,
    "accountId": "oaccount~21206f309941a2a23c4f158a0fe1b8f12bb8e2b0c9a2e1358f5efebc0c7d410e",
    "userId": "idcqa",
    "orgId": "appdev",
    "tokenType": "fungible",
    "tokenId": "loy1",
    "tokenName": "loyalty",
    "balance": 50
}
getAllAccounts
Cette méthode retourne les détails de tous les comptes d'utilisateur.
Ctx.ERC1155Account.getAllAccounts()
Paramètres :
  • aucune
Exemple de valeur renvoyée :
[
        {
            "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
Cette méthode retourne un sommaire de compte pour un utilisateur spécifié et les détails des jetons fongibles et non fongibles qui sont associés à l'utilisateur.
Ctx.ERC1155Account.getAccountDetailsByUser(orgId: string, userId: string)
Paramètres :
  • orgId: string - ID fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation courante.
  • userId: string - Nom d'utilisateur ou ID courriel de l'utilisateur.
Retourne :
  • En cas de succès, un objet de compte JSON qui inclut et récapitule le compte pour l'utilisateur spécifié et les détails des jetons fongibles et non fongibles associés à l'utilisateur. Pour les jetons non fongibles fractionnaires, la propriété tokenShare dans la section associatedNFTs affiche le partage dont l'utilisateur est responsable
Exemple de valeur renvoyée :
{
    "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
Cette méthode retourne les détails de l'utilisateur pour un ID compte spécifié.
Ctx.ERC1155Account.getUserByAccountId(accountId: string)
Paramètres :
  • accountId: string - ID du compte.
Retourne :
  • En cas de réussite, un objet JSON contenant les détails de l'utilisateur (orgId et userId).
Exemple de valeur renvoyée :
{
    "orgId": "appdev",
    "userId": "idcqa"
}

Méthodes pour la gestion des rôles

AddRoleMember
Cette méthode ajoute un rôle à un utilisateur et à un jeton spécifiés. Les jetons fongibles sont spécifiés par l'ID jeton. Les jetons non fongibles sont spécifiés par le nom du jeton.
Ctx.ERC1155Token.addRoleMember(role: string, userAccountId: string, token: any)
Paramètres :
  • userAccountId: string - ID compte de l'utilisateur.
  • role: string - Nom du rôle à ajouter à l'utilisateur spécifié.
  • token: any - Ressource de jeton.
Retourne :
  • En cas de réussite, un message avec les détails du compte.
Exemple de valeur renvoyée :
{
  "msg": "Successfully added role 'minter' to Account Id: oaccount~1422a74d262a3a55a37cd9023ef8836f765d0be7b49d397696b9961d7434d22a (Org-Id: appdev, User-Id: idcqa)"
}
isInRole
Cette méthode retourne une valeur booléenne pour indiquer si un utilisateur a un rôle spécifié. Les jetons fongibles sont spécifiés par l'ID jeton. Les jetons non fongibles sont spécifiés par le nom du jeton.
Ctx.ERC1155Token.isInRole(role: string, userAccountId: string, token: any)
Paramètres :
  • userAccountId: string - ID compte de l'utilisateur.
  • role: string - Nom du rôle à rechercher.
  • token: any - Ressource de jeton.
Exemple de valeur renvoyée :
{
    "result": true,
    "msg": "Account Id oaccount~1422a74d262a3a55a37cd9023ef8836f765d0be7b49d397696b9961d7434d22a (Org-Id: appdev, User-Id: idcqa) has minter role"
}
removeRoleMember
Cette méthode supprime un rôle d'un utilisateur et d'un jeton spécifiés. Les jetons fongibles sont spécifiés par l'ID jeton. Les jetons non fongibles sont spécifiés par le nom du jeton.
Ctx.ERC1155Token.removeRoleMember(role: string, userAccountId: string, token: any)
Paramètres :
  • userAccountId: string - ID compte de l'utilisateur.
  • role: string - Nom du rôle à supprimer de l'utilisateur spécifié.
  • token: any - Ressource de jeton.
Exemple de valeur renvoyée :
{
  "msg": "Successfully removed role 'minter' from Account Id: oaccount~60bb20c14a83f6e426e1437c479c5891e1c6477dfd7ad18b73acac5d80bc504b (Org-Id: appdev, User-Id: user1)"
}
getAccountsByRole
Cette méthode retourne une liste de tous les ID compte pour un rôle et un jeton spécifiés. Les jetons fongibles sont spécifiés par l'ID jeton. Les jetons non fongibles sont spécifiés par le nom du jeton.
Ctx.ERC1155Token.getAccountsByRole(role: string, token: any)
Paramètres :
  • role: string - Nom du rôle à rechercher.
  • token: any - Ressource de jeton.
Exemple de valeur renvoyée :
{
  "accounts": [
    "oaccount~1422a74d262a3a55a37cd9023ef8836f765d0be7b49d397696b9961d7434d22a",
    "oaccount~60bb20c14a83f6e426e1437c479c5891e1c6477dfd7ad18b73acac5d80bc504b"
  ]
}
getUsersByRole
Cette méthode retourne une liste de tous les utilisateurs pour un rôle et un jeton spécifiés. Les jetons fongibles sont spécifiés par l'ID jeton. Les jetons non fongibles sont spécifiés par le nom du jeton.
Ctx.ERC1155Token.getUsersByRole(role: string, token: any)
Paramètres :
  • role: string - Nom du rôle à rechercher.
  • token: any - Ressource de jeton.
Exemple de valeur renvoyée :
{
    "users": [
        {
            "accountId": "oaccount~1422a74d262a3a55a37cd9023ef8836f765d0be7b49d397696b9961d7434d22a",
            "orgId": "appdev",
            "userId": "idcqa"
        },
        {
            "accountId": "oaccount~60bb20c14a83f6e426e1437c479c5891e1c6477dfd7ad18b73acac5d80bc504b",
            "orgId": "appdev",
            "userId": "user1"
        }
    ]
}

Méthodes de gestion de l'historique des transactions

getAccountTransactionHistory
Cette méthode retourne l'historique des transactions de compte. Cette méthode ne peut être appelée que par un élément Token Admin du code de chaîne ou par le responsable du compte. Pour les jetons non fongibles, cette méthode ne peut être appelée que lorsqu'elle est connectée au réseau Oracle Blockchain Platform distant.
Ctx.ERC1155Account.getAccountTransactionHistory(accountId: string)
Paramètres :
  • accountId: string - ID compte du jeton.
Exemple de valeur renvoyée :
[
    {
        "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
Cette méthode retourne les détails de la transaction pour un code de transaction spécifié.
Ctx.ERC1155Transaction.getTransactionById(transactionId: string)
Paramètres :
  • transactionId: string - ID de la transaction.
Exemple de valeur renvoyée :
{
  "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
Cette méthode supprime des transactions avant un horodatage spécifié de la base de données d'état.
Ctx.ERC1155Transaction.deleteTransactions(referenceTime: Date)
Paramètres :
  • referenceTime: Date - Toutes les transactions antérieures à cet horodatage seront supprimées.
Exemple de valeur renvoyée :
{
  "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éthodes de gestion du comportement des jetons - Comportement mintable

mintBatch
Cette méthode crée (mine) plusieurs jetons dans une opération par lots. Cette méthode ne crée que des jetons fongibles ou des jetons fractionnaires non fongibles.

Pour les jetons fongibles, si le rôle de mineur est défini dans le fichier de spécification, tout utilisateur doté du rôle de mineur peut appeler cette méthode. Sinon, n'importe quel utilisateur peut utiliser cette méthode pour mentonner des jetons. Vous ne pouvez pas extraire plus de la propriété max_mint_quantity du jeton, si cette propriété a été spécifiée lors de la création ou de la mise à jour du jeton.

Pour les jetons non fongibles, si le rôle de mineur est défini dans le fichier de spécification, tout utilisateur doté du rôle de mineur peut appeler cette méthode. Sinon, n'importe quel utilisateur peut utiliser cette méthode pour mentonner des jetons. En outre, l'appelant doit également être le créateur du jeton. Il n'y a pas de limite supérieure à la quantité de jetons fractionnaires non fongibles qui peuvent être frappés.

Vous ne pouvez pas utiliser cette méthode pour extraire un jeton non fongible entier.

Ctx.ERC1155Token.mintBatch(accountId: string, tokenIds: string[], quantities: number[])
Paramètres :
  • accountId: string - ID compte de l'utilisateur.
  • tokenIds: string[] - Liste des ID jetons pour lesquels créer des jetons.
  • quantity: number[] - Liste des quantités de jetons à menthe, correspondant au tableau d'ID jeton.
Retourne :
  • En cas de réussite, un objet JSON qui inclut les détails sur les jetons frappés.
Exemple de valeur renvoyée :
{
    "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éthodes de gestion du comportement des jetons - Comportement transférable

batchTransferFrom
Cette méthode termine une opération par lots qui transfère les jetons spécifiés dans une liste d'ID jeton d'un utilisateur à un autre.

Dans le cas des TNF, puisque la méthode transfère la propriété de la TNF, l'expéditeur de la TNF doit posséder le jeton.

Pour les NFT fractionnaires, si un utilisateur (y compris le créateur du jeton) transfère toutes les actions qu'il possède, il perd la propriété du jeton. Si une part d'un jeton est transférée à un utilisateur, cet utilisateur devient automatiquement l'un des propriétaires de la fraction NFT.

Cette méthode ne valide pas que l'appelant de la méthode est l'expéditeur spécifié.

Ctx.ERC1155Token.batchTransferFrom(fromUserAccountId: string, toUserAccountId: string, tokenIds: string[], quantities: number[])
Paramètres :
  • fromUserAccountId: string - ID compte de l'expéditeur et du responsable du jeton dans l'organisation courante.
  • toUserAccountId: string - ID compte du destinataire.
  • tokenIds: string[] - Liste des ID jetons pour les jetons à transférer.
  • quantity: number[] - Liste des quantités de jetons à transférer, correspondant au tableau d'ID jeton.
Retourne :
  • En cas de succès, un message contenant les détails de chaque transfert de jeton.
Exemple de valeur renvoyée :
[
    {
        "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
Cette méthode termine une opération par lots qui transfère les jetons spécifiés dans une liste d'ID jeton d'un utilisateur à un autre.

Dans le cas des TNF, puisque la méthode transfère la propriété de la TNF, l'expéditeur de la TNF doit posséder le jeton.

Pour les NFT fractionnaires, si un utilisateur (y compris le créateur du jeton) transfère toutes les actions qu'il possède, il perd la propriété du jeton. Si une part d'un jeton est transférée à un utilisateur, cet utilisateur devient automatiquement l'un des propriétaires de la fraction NFT.

L'appelant de la méthode doit être l'expéditeur spécifié.

Ctx.ERC1155Token.safeBatchTransferFrom(fromUserAccountId: string, toUserAccountId: string, tokenIds: string[], quantities: number[])
Paramètres :
  • fromUserAccountId: string - ID compte de l'expéditeur et du responsable du jeton dans l'organisation courante.
  • toUserAccountId: string - ID compte du destinataire.
  • tokenIds: string[] - Liste des ID jetons pour les jetons à transférer.
  • quantity: number[] - Liste des quantités de jetons à transférer, correspondant au tableau d'ID jeton.
Retourne :
  • En cas de succès, un message contenant les détails de chaque transfert de jeton.
Exemple de valeur renvoyée :
[
    {
        "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
Cette méthode termine une opération par lots qui obtient le solde des comptes de jetons. Les détails du compte sont indiqués dans trois listes distinctes d'ID organisation, d'ID utilisateur et d'ID jeton. Cette méthode ne peut être appelée que par Token Admin du code de chaîne ou par les responsables de compte. Les responsables de compte ne peuvent voir les détails du solde que pour les comptes dont ils sont responsables.
Ctx.ERC1155Account.balanceOfBatch(accountIds: string[], tokenIds: string[])
Paramètres :
  • accountIds: string[] - Liste des ID compte d'utilisateur.
  • tokenIds: string[] - Liste des ID jetons.
Exemple de valeur renvoyée :
[
    {
        "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
Cette méthode échange des jetons entre les comptes spécifiés. Cette méthode ne prend en charge que l'échange entre un NFT (entier ou fractionnaire) et un jeton fongible ou un jeton fongible et un NFT (entier ou fractionnaire). Cette méthode ne peut être appelée que par le responsable du compte.
Ctx.ERC1155Token.exchangeToken( fromTokenId: string, fromUserAccountId: string, fromTokenQuantity: number, toTokenId: string, toUserAccountId: string, toTokenQuantity: number)
Paramètres :
  • fromTokenId: string - ID du jeton dont l'expéditeur est responsable.
  • fromUserAccountId: string - ID compte de l'expéditeur.
  • fromTokenQuantity: number - Quantité de jetons de l'expéditeur à échanger avec le destinataire.
  • toTokenId: string - ID du jeton dont le destinataire est responsable.
  • toUserAccountId: string - ID compte du destinataire.
  • toTokenQuantity: number - Quantité de jetons du récepteur à échanger avec l'expéditeur.
Retourne :
  • En cas de succès, un message contenant les détails de l'échange de jeton.
Exemple de valeur renvoyée :
{
    "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éthodes de gestion du comportement des jetons - Comportement brûlable

burn
Cette méthode désactive ou brûle les jetons fongibles et non fongibles spécifiés.
Ctx.ERC1155Token.burn(accountId: string, tokenIds: string[], quantities: number[])
Paramètres :
  • accountId: string - ID compte de l'utilisateur.
  • tokenIds: string[] - Liste des ID jetons à graver.
  • quantity: number[] - Liste des quantités de jetons à graver, correspondant au tableau d'ID jeton.
Retourne :
  • En cas de succès, un message contenant des détails sur les opérations de gravure.
Exemple de valeur renvoyée :
[
  {
    "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)"
  }
]