Projet de jetons TypeScript échafaudés pour ERC-1155

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

Le projet génère automatiquement des classes et des fonctions de cycle de vie de jeton, y compris les méthodes CRUD et non-CRUD. La validation des arguments, la sérialisation/désérialisation 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 aux jetons, reportez-vous à Projet de code chaîne TypeScript échafaudé.

Modèle

Chaque classe de modèle avec jeton étend la classe OchainModel. La fonctionnalité de persistance transparente, ou ORM simplifié, est capturée dans la classe OchainModel. Le modèle suivant montre 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 présente un jeton non fongible fractionnaire.
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'existe qu'un seul contrôleur principal.

export class DigiCurrCCController extends OchainController{

Vous pouvez créer autant de classes, de fonctions ou de fichiers que vous le souhaitez, 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 SDK de jeton pour écrire des méthodes personnalisées pour votre application métier.

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 de jeton sans codage supplémentaire. Les méthodes de contrôleur doivent avoir un décorateur @Validator(...params) pour pouvoir être appelées.

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

isTokenAdmin
Cette méthode renvoie la valeur booléenne true si l'appelant de la fonction est un Token Admin, sinon elle renvoie false. Cette méthode ne peut être appelée que par un élément Token Admin du code 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 du fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation actuelle.
  • userId: string : nom d'utilisateur ou ID d'adresse électronique de l'utilisateur.
Renvoie :
  • La méthode renvoie true si l'appelant est un Token Admin, sinon elle renvoie false.
Exemple de valeur renvoyée :
{"result": true}
addTokenAdmin
Cette méthode ajoute un utilisateur en tant que Token Admin du code chaîne. Cette méthode ne peut être appelée que par un élément Token Admin du code 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 du fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation actuelle.
  • userId: string : nom d'utilisateur ou ID d'adresse électronique de l'utilisateur.
Renvoie :
  • En cas de réussite, message qui inclut les détails de l'utilisateur ajouté en tant que Token Admin du code chaîne.
Exemple de valeur renvoyée :
{"msg":"Successfully added Admin (OrgId: appDev, UserId: user1)"}
removeTokenAdmin
Cette méthode enlève un utilisateur en tant qu'élément Token Admin du code chaîne. Cette méthode ne peut être appelée que par un élément Token Admin du code chaîne. Vous ne pouvez pas vous enlever vous-même 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 du fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation actuelle.
  • userId: string : nom d'utilisateur ou ID d'adresse électronique de l'utilisateur.
Renvoie :
  • En cas de réussite, message qui inclut les détails de l'utilisateur qui a été enlevé en tant que Token Admin du code chaîne.
Exemple de valeur renvoyée :
{"msg": "Successfully removed Admin (OrgId: appDev, UserId: user1)"}
getAllTokenAdmins
Cette méthode renvoie la liste de tous les utilisateurs qui sont un Token Admin du code chaîne. Cette méthode ne peut être appelée que par un élément Token Admin du code chaîne.
@GetMethod()
@Validator()
public async getAllTokenAdmins() {
  await this.Ctx.ERC1155Auth.checkAuthorization("ERC1155ADMIN.getAllAdmins", "TOKEN");
  return await this.Ctx.ERC1155Admin.getAllAdmins();
}
Paramètres :
  • Aucun élément
Renvoie :
  • En cas de réussite, 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 des jetons

init
Cette méthode est appelée lorsque le code chaîne est instancié. Chaque élément Token Admin est identifié par les informations userId et orgId dans le paramètre adminList. userId est le nom utilisateur ou l'ID courriel du propriétaire de l'instance ou de l'utilisateur qui est connecté à l'instance. orgId est l'ID du fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation réseau actuelle. Le paramètre adminList est obligatoire la première fois que vous déployez le code chaîne. Si vous mettez à niveau le code chaîne, transmettez une liste vide ([]). Si vous êtes l'utilisateur qui a initialement déployé le code chaîne, vous pouvez également indiquer de nouveaux administrateurs dans le paramètre adminList lorsque vous mettez à niveau le code 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 indique 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 possède 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 chaîne. Pour les jetons non fongibles, si le rôle minter est défini dans le fichier de spécification, tout utilisateur doté du rôle minter peut appeler cette méthode pour créer un NFT. Si le rôle de mineur n'est pas défini, tout utilisateur peut utiliser cette méthode pour créer des NFT (mint). L'utilisateur qui appelle cette méthode devient 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 à extraire. La seule valeur prise en charge pour ce paramètre est 1.
Renvoie :
  • En cas de réussite, la ressource de jeton au format JSON, qui inclut les informations suivantes, en fonction du type de jeton.
  • tokenMetadata : informations JSON décrivant le jeton.
  • createdBy : ID de compte de l'appelant, qui est l'utilisateur qui extrait le jeton. Cette propriété ne peut pas être modifiée.
  • creationDate : horodatage de la transaction d'extraction. Cette propriété ne peut pas être modifiée.
  • isBurned : cette propriété indique si le jeton est gravé. 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 (entière 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 : propriétés liées à l'extraction. La valeur max_mint_quantity définit le nombre maximal de jetons pouvant être créés pour la classe de jeton.
  • owner : ID de compte du propriétaire actuel, qui est l'appelant de la méthode.
  • tokenUri : URI du jeton.
  • quantity : quantité du jeton.
Exemple de valeur renvoyée (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 renvoyée (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 renvoyée (NFT fractionnaire) :
{
    "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 possède 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 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.
Renvoie :
  • En cas de réussite, la ressource de jeton mise à jour au format JSON.
Exemple de valeur renvoyée (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 renvoie l'historique d'un ID de 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.
Renvoie :
  • En cas de succès, tableau JSON contenant l'historique des jetons.
Exemple de valeur renvoyée (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 renvoyée (NFT fractionnaire) :
[
    {
        "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 renvoyée (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 renvoie 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 chaîne. Cette méthode utilise des requêtes enrichies Berkeley DB SQL et ne peut être appelée qu'en cas de connexion au réseau distant Oracle Blockchain Platform.
@GetMethod()
@Validator(yup.string())
public async getTokenHistory(tokenId: string) {
  return await this.Ctx.ERC1155Token.getTokenHistory(tokenId);
}
Paramètres :
  • Aucun élément
Renvoie :
  • 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 renvoie 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 renvoyée. Cette méthode ne peut être appelée que par un élément Token Admin du code chaîne ou du propriétaire 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 renvoyée (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 renvoyée (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 renvoyée (NFT fractionnaire) :
{
    "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 renvoie toutes les ressources de jeton détenues par un utilisateur spécifié. Cette méthode utilise des requêtes enrichies Berkeley DB SQL et ne peut être appelée qu'en cas de connexion au réseau distant Oracle Blockchain Platform. Cette méthode ne peut être appelée que par un élément Token Admin du code chaîne ou par le propriétaire 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 du fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation actuelle.
  • userId: string : nom d'utilisateur ou ID d'adresse électronique 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 renvoie l'ID de compte, l'ID d'organisation et l'ID utilisateur du propriétaire de l'ID de 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 renvoyée (NFT entier) :
{
    "accountId": "oaccount~76cb672eeb1bd535899562a840d0c15a356db89e24bc8b43ac1dba845a4282c6",
    "orgId": "appdev",
    "userId": "idcqa"
}
Exemple de valeur renvoyée (NFT fractionnaire) :
[
    {
        "accountId": "oaccount~42e89f4c72dfde9502814876423c6da630d466e87436dd1aae201d347ad1288d",
        "orgId": "Org1MSP",
        "userId": "admin"
    },
    {
        "accountId": "oaccount~74108eca702bab6d8548e740254f2cc7955d886885251d52d065042172a59db0",
        "orgId": "Org1MSP",
        "userId": "user"
    }
]
URI
Cette méthode renvoie 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 renvoie 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 renvoie le nombre total de jetons extraits. Les jetons fongibles sont spécifiés par l'ID de jeton. Les jetons non fongibles sont indiqués par le nom du jeton. Cette méthode ne peut être appelée que par un élément Token Admin du code 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 indiquant 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 renvoie le nombre total de jetons extraits moins le nombre de jetons brûlés. Les jetons fongibles sont spécifiés par l'ID de jeton. Les jetons non fongibles sont indiqués par le nom du jeton. Cette méthode ne peut être appelée que par un élément Token Admin du code 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 indiquant 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 renvoie toutes les ressources de jeton pour un nom de jeton spécifié. Cette méthode utilise des requêtes enrichies Berkeley DB SQL et ne peut être appelée qu'en cas de connexion au réseau distant Oracle Blockchain Platform. Cette méthode ne peut être appelée que par un élément Token Admin du code 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 renvoie 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 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 jetons 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 de jetons fongibles qu'un utilisateur détient. Les utilisateurs doivent avoir des comptes sur le réseau pour effectuer des opérations liées aux jetons. Cette méthode ne peut être appelée que par un élément Token Admin du code chaîne.

Un compte 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 jetons fongibles avec des ID de compte uniques. Les ID de compte de jetons fongibles sont formés d'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 nombre de compteurs qui signifie l'index du compte fongible créé séparé par le symbole tilde (~).

Un utilisateur ne peut avoir qu'un seul compte de jeton non fongible. Les ID de compte de jetons 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 de compte utilisateur commencent par ouaccount~. Les ID de 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 du fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation actuelle.
  • userId: string : nom d'utilisateur ou ID d'adresse électronique de l'utilisateur.
  • ftAccount: boolean : si la valeur est True, un compte de jeton fongible est créé et associé au compte utilisateur.
  • nftAccount: boolean : si la valeur est True, un compte de jeton non fongible est créé et associé au compte utilisateur.
Renvoie :
  • En cas de succès, objet JSON du compte 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 l'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 de jetons fongibles dont dispose un utilisateur. Les utilisateurs doivent avoir des comptes sur le réseau pour effectuer des opérations liées aux jetons.

Un ID de 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 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 du fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation actuelle.
  • userId: string : nom d'utilisateur ou ID d'adresse électronique de l'utilisateur.
Renvoie :
  • En cas de succès, objet JSON du compte utilisateur 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 utilisateur.

Un utilisateur peut avoir plusieurs comptes de jetons fongibles avec des ID de compte uniques. Les ID de compte de jetons fongibles sont formés d'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 nombre de compteurs qui signifie l'index du compte fongible créé séparé par le symbole tilde (~).

Un utilisateur ne peut avoir qu'un seul compte de jeton non fongible. Les ID de compte de jetons 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 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 du fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation actuelle.
  • userId: string : nom d'utilisateur ou ID d'adresse électronique de l'utilisateur.
  • tokenType: TokenType : type de compte de jeton à créer. Les seuls types de jeton pris en charge sont nonfungible et fungible.
Renvoie :
  • En cas de succès, 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 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 du fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation actuelle.
  • userId: string : nom d'utilisateur ou ID d'adresse électronique de l'utilisateur.
  • tokenId: string : ID du jeton.
Renvoie :
  • En cas de succès, objet JSON du compte 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 indique que l'ID de compte de jeton fongible et l'ID de 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 renvoie l'historique d'un compte de jetons spécifié. Cette méthode est asynchrone. Cette méthode ne peut être appelée que par un élément Token Admin du code chaîne ou par le propriétaire 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 du fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation actuelle.
  • userId: string : nom d'utilisateur ou ID d'adresse électronique de l'utilisateur.
  • tokenId?: string : pour un compte de jeton non fongible, chaîne vide. Pour un compte de jeton fongible, ID de jeton.
Renvoie :
  • En cas de succès, tableau d'objets JSON qui décrit 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 renvoie les détails du compte de jeton pour un utilisateur spécifié. Cette méthode ne peut être appelée que par une chaîne (Token Admin) du code chaîne ou par la chaîne (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 du fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation actuelle.
  • userId: string : nom d'utilisateur ou ID d'adresse électronique de l'utilisateur.
  • tokenId?: string : pour un compte de jeton non fongible, chaîne vide. Pour un compte de jeton fongible, ID de jeton.
Renvoie :
  • En cas de succès, 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 renvoyée (compte de jeton non fongible) :
{
  "assetType": "oaccount",
  "bapAccountVersion": 1,
  "status": "active",
  "accountId": "oaccount~cc301bee057f14236a97d434909ec1084970921b008f6baab09c2a0f5f419a9a",
  "userId": "idcqa",
  "orgId": "appdev",
  "tokenType": "nonfungible",
  "noOfNfts": 1
}
Exemple de valeur renvoyée (compte de jetons fongible) :
{
  "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 renvoie les détails de tous les comptes utilisateur. Cette méthode ne peut être appelée que par un élément Token Admin du code chaîne.
@GetMethod()
@Validator()
public async getAllAccounts() {
  await this.Ctx.ERC1155Auth.checkAuthorization("ERC1155ACCOUNT.getAllAccounts", "TOKEN");
  return await this.Ctx.ERC1155Account.getAllAccounts();
}
Paramètres :
  • Aucun élément
Renvoie :
  • 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 renvoie un récapitulatif de compte pour un utilisateur spécifié et les détails des jetons fongibles et non fongibles associés à l'utilisateur. Cette méthode ne peut être appelée que par une chaîne (Token Admin) du code chaîne ou par la chaîne (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 du fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation actuelle.
  • userId: string : nom d'utilisateur ou ID d'adresse électronique de l'utilisateur.
Renvoie :
  • En cas de succès, objet de compte JSON qui inclut et récapitule le compte pour l'utilisateur indiqué, ainsi que les détails des jetons fongibles et non fongibles associés à l'utilisateur. Pour les jetons fractionnaires non fongibles, la propriété tokenShare de la section associatedNFTs affiche le partage dont l'utilisateur est propriétaire.
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 renvoie les détails utilisateur d'un ID de 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.
Renvoie :
  • En cas de réussite, objet JSON des détails de l'utilisateur (orgId et userId).
Exemple de valeur renvoyée :
{
  "orgId": "appdev"
  "userId": "user2",
}

Méthodes de 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 chaîne. Les jetons fongibles sont spécifiés par l'ID de jeton. Les jetons non fongibles sont indiqués par le nom du jeton. L'utilisateur spécifié doit disposer d'un compte de jeton associé au jeton fongible ou d'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 du fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation actuelle.
  • userId: string : nom d'utilisateur ou ID d'adresse électronique de l'utilisateur.
  • role: string : nom du rôle à ajouter à l'utilisateur indiqué.
  • tokenDetails: TokenDetail : détails indiquant le jeton. Pour les jetons fongibles, utilisez le format suivant :
    {"tokenId":"token1"}
    Pour les jetons non fongibles, utilisez le format suivant :
    {"tokenName":"artCollection"}
Renvoie :
  • En cas de succès, un message contenant 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 renvoie 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 de jeton. Les jetons non fongibles sont indiqués par le nom du jeton. Cette méthode ne peut être appelée que par une chaîne (Token Admin) du code chaîne ou par la chaîne (Account Owner) du compte. L'utilisateur spécifié doit disposer d'un compte de jeton associé au jeton fongible ou d'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 du fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation actuelle.
  • userId: string : nom d'utilisateur ou ID d'adresse électronique de l'utilisateur.
  • role: string : nom du rôle à rechercher.
  • tokenDetails: TokenDetail : détails indiquant 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 de jeton. Les jetons non fongibles sont indiqués par le nom du jeton. Cette méthode ne peut être appelée que par un élément Token Admin du code chaîne. L'utilisateur spécifié doit disposer d'un compte de jeton associé au jeton fongible ou d'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 du fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation actuelle.
  • userId: string : nom d'utilisateur ou ID d'adresse électronique de l'utilisateur.
  • role: string : nom du rôle à enlever de l'utilisateur indiqué.
  • tokenDetails: TokenDetail : détails indiquant 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 renvoie la liste de tous les ID de compte pour un rôle et un jeton spécifiés. Les jetons fongibles sont spécifiés par l'ID de jeton. Les jetons non fongibles sont indiqués par le nom du jeton. Cette méthode ne peut être appelée que par un élément Token Admin du code 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 indiquant 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 renvoie la 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 de jeton. Les jetons non fongibles sont indiqués par le nom du jeton. Cette méthode ne peut être appelée que par un élément Token Admin du code 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 indiquant 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 renvoie l'historique des transactions du compte. Cette méthode ne peut être appelée que par un élément Token Admin du code chaîne ou par le propriétaire 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 du fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation actuelle.
  • userId: string : nom d'utilisateur ou ID d'adresse électronique de l'utilisateur.
  • tokenId?: string : pour un compte de jeton non fongible, chaîne vide. Pour un compte de jeton fongible, ID de 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 renvoie les détails de la transaction pour un ID 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 les transactions antérieures à un horodatage donné 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 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 (minte) plusieurs jetons dans une opération de batch. Cette méthode crée uniquement des jetons fongibles ou des jetons non fongibles fractionnaires.

Pour les jetons fongibles, si le rôle minter est défini dans le fichier de spécification, tout utilisateur doté du rôle minter peut appeler cette méthode. Sinon, n'importe quel utilisateur peut utiliser cette méthode pour extraire des jetons. Vous ne pouvez pas dépasser 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 mineur est défini dans le fichier de spécification, tout utilisateur doté du rôle mineur peut appeler cette méthode. Sinon, n'importe quel utilisateur peut utiliser cette méthode pour extraire 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 non fongibles fractionnaires qui peuvent être extraits.

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 du fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation actuelle.
  • userId: string : nom d'utilisateur ou ID d'adresse électronique de l'utilisateur.
  • tokenIds: string[] : liste des ID de jeton pour lesquels extraire des jetons.
  • quantity: number[] : liste des quantités de jetons à extraire, correspondant au tableau d'ID de jeton.
Renvoie :
  • En cas de succès, objet JSON qui inclut des détails sur les jetons extraits.
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 de jeton d'un utilisateur à un autre.

Pour les NFT, étant donné que la méthode transfère la propriété de la NFT, l'expéditeur de la NFT doit posséder le jeton.

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

Cette méthode ne valide pas le fait 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 du fournisseur de services d'adhésion de l'expéditeur et du propriétaire du jeton dans l'organisation actuelle.
  • fromUserId: string : nom utilisateur ou ID de courriel de l'expéditeur et du propriétaire du jeton.
  • toOrgId: string – ID du prestataire de services d'adhésion (MSP) du destinataire dans l'organisation actuelle.
  • toUserId: string : nom d'utilisateur ou ID de courriel du destinataire.
  • tokenIds: string[] : liste des ID de jeton pour les jetons à transférer.
  • quantity: number[] : liste des quantités de jetons à transférer, correspondant au tableau d'ID de jeton.
Renvoie :
  • En cas de réussite, 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 de jeton d'un utilisateur à un autre.

Pour les NFT, étant donné que la méthode transfère la propriété de la NFT, l'expéditeur de la NFT doit posséder le jeton.

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

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 du fournisseur de services d'adhésion de l'expéditeur et du propriétaire du jeton dans l'organisation actuelle.
  • fromUserId: string : nom utilisateur ou ID de courriel de l'expéditeur et du propriétaire du jeton.
  • toOrgId: string – ID du prestataire de services d'adhésion (MSP) du destinataire dans l'organisation actuelle.
  • toUserId: string : nom d'utilisateur ou ID de courriel du destinataire.
  • tokenIds: string[] : liste des ID de jeton pour les jetons à transférer.
  • quantity: number[] : liste des quantités de jetons à transférer, correspondant au tableau d'ID de jeton.
Renvoie :
  • En cas de réussite, 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 de batch qui obtient le solde des comptes de jetons. Les détails du compte sont indiqués dans trois listes distinctes d'ID d'organisation, d'ID utilisateur et d'ID de jeton. Cette méthode ne peut être appelée que par un élément Token Admin du code chaîne ou par des propriétaires de compte. Les propriétaires de compte ne peuvent voir les détails du solde que pour les comptes qu'ils possèdent.
@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 de fournisseur de services d'adhésion dans l'organisation actuelle.
  • userIds: string[] : liste des ID d'utilisateur ou d'e-mail.
  • tokenIds: string[] : liste des ID de jeton.
Exemple de valeur renvoyée :

Dans l'exemple suivant, l'ID de jeton FNFT représente un jeton non fongible fractionnaire et l'ID de 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 des comptes spécifiés. Cette méthode ne prend en charge que l'échange entre un jeton NFT et un jeton fongible ou un jeton fongible et un jeton NFT. Le NFT peut être entier ou fractionnaire. Cette méthode ne peut être appelée que par le propriétaire 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 détenu par l'expéditeur.
  • fromOrgId: string : ID du fournisseur de services d'adhésion (MSP) de l'expéditeur dans l'organisation actuelle.
  • fromUserId: string : nom utilisateur ou ID courriel de l'expéditeur.
  • fromTokenQuantity: number – Quantité de jetons de l'expéditeur à échanger avec le récepteur.
  • toTokenId: string : ID du jeton détenu par le récepteur.
  • toOrgId: string – ID du prestataire de services d'adhésion (MSP) du destinataire dans l'organisation actuelle.
  • toUserId: string : nom d'utilisateur ou ID de courriel du destinataire.
  • toTokenQuantity: number – Quantité de jetons du récepteur à échanger avec l'expéditeur.
Renvoie :
  • En cas de succès, un message contenant les détails de l'échange de jetons.
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 gravable

burnBatch
Cette méthode désactive ou brûle les jetons fongibles et non fongibles spécifiés. Tout utilisateur doté du 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 du fournisseur de services d'adhésion (MSP) dans l'organisation actuelle.
  • userId: string : nom utilisateur ou ID courriel.
  • tokenIds: string[] : liste des ID de jeton à graver
  • quantity: number[] : liste des quantités de jetons à graver, correspondant au tableau d'ID de jeton.
Renvoie :
  • En cas de réussite, 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 brûle le jeton non fongible spécifié et renvoie un objet de jeton et un historique de jeton. Tout utilisateur doté du 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 du fournisseur de services d'adhésion (MSP) dans l'organisation actuelle.
  • userId: string : nom utilisateur ou ID courriel.
  • tokenId: string : ID du jeton non fongible à brûler
Renvoie :
  • En cas de réussite, objet de jeton au format JSON qui inclut des 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 de gestion du contrôle d'accès

isUserTokenAdmin
Cette méthode renvoie la valeur booléenne true si l'utilisateur indiqué est Token Admin, et false dans le cas contraire. La méthode ne peut être appelée que par un élément Token Admin du code chaîne de jeton.
Ctx.ERC1155Auth.isUserTokenAdmin(orgId: string, userId: string)
Paramètres :
  • orgId: string : ID du fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation actuelle.
  • userId: string : nom d'utilisateur ou ID d'adresse électronique de l'utilisateur.
Exemple de valeur renvoyée :
{
  "result": true
}
addAdmin
Cette méthode ajoute un utilisateur en tant que Token Admin du code chaîne de jeton. La méthode ne peut être appelée que par un élément Token Admin du code chaîne de jeton.
Ctx.ERC1155Admin.addAdmin(orgId: string, userId: string)
Paramètres :
  • orgId: string : ID du fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation actuelle.
  • userId: string : nom d'utilisateur ou ID d'adresse électronique de l'utilisateur.
Renvoie :
  • En cas de réussite, message qui répertorie les détails de l'utilisateur ajouté en tant que Token Admin du code chaîne de jeton.
Exemple de valeur renvoyée :
{
  "msg": "Successfully added Admin (OrgId: appDev, UserId: user1)"
}
removeAdmin
Cette méthode enlève un utilisateur en tant qu'utilisateur Token Admin du code chaîne de jeton. La méthode ne peut être appelée que par un élément Token Admin du code chaîne de jeton. Vous ne pouvez pas vous enlever vous-même en tant que Token Admin.
Ctx.ERC1155Admin.removeAdmin(orgId: string, userId: string)
Paramètres :
  • orgId: string : ID du fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation actuelle.
  • userId: string : nom d'utilisateur ou ID d'adresse électronique de l'utilisateur.
Renvoie :
  • En cas de réussite, message qui répertorie les détails de l'utilisateur enlevé en tant que code chaîne de jeton Token Admin.
Exemple de valeur renvoyée :
{
  "msg": "Successfully removed Admin (OrgId: appDev, UserId: user1)"
}
getAllAdmins
Cette méthode renvoie la liste de tous les utilisateurs Token Admin.
Ctx.ERC1155Admin.getAllAdmins()
Paramètres :
  • Aucun élément
Renvoie :
  • En cas de succès, une liste de tous les utilisateurs Token Admin, identifiés par l'ID d'organisation et l'ID utilisateur.
Exemple de valeur renvoyée :
{
  "admins": [
    {
      "orgId": "appdev",
      "userId": "idcqa"
    },
    {
      "orgId": "appdev",
      "userId": "user1"
    }
  ]
}
checkAuthorization
Utilisez cette méthode pour ajouter une vérification de contrôle d'accès à une opération. Cette fonction est asynchrone. Certaines méthodes de jeton peuvent être exécutées uniquement par l'élément Token Admin ou AccountOwner du jeton ou par l'élément MultipleAccountOwner pour les utilisateurs ayant plusieurs comptes. Le mapping de 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 correspondance 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 une valeur AccountOwner. Pour ajouter une vérification de contrôle d'accès pour une valeur MultipleAccountOwner, args[1] prend la valeur org_id et args[2] prend la valeur user_id.
Renvoie :
  • En cas de réussite, une promesse. En cas d'erreur, rejet avec un message d'erreur.

Méthodes de gestion de la configuration des jetons

save
Cette méthode crée des jetons. Chaque jeton défini possède sa propre méthode de création. Pour les jetons non fongibles, si le rôle mineur est défini dans le fichier de spécification, tout utilisateur doté du rôle mineur peut appeler cette méthode pour créer un NFT. Si ce n'est pas le cas, tout utilisateur peut utiliser cette méthode pour créer 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 à extraire. La seule valeur prise en charge pour ce paramètre est 1.
Renvoie :
  • En cas de réussite, la ressource de jeton au format JSON, qui peut inclure les informations suivantes.
  • tokenMetadata : informations JSON décrivant le jeton.
  • createdBy : ID de compte de l'appelant, qui est l'utilisateur qui extrait le jeton. Cette propriété ne peut pas être modifiée.
  • creationDate : horodatage de la transaction d'extraction. Cette propriété ne peut pas être modifiée.
  • isBurned : cette propriété indique si le jeton est gravé. 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 (entière 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 : propriétés liées à l'extraction. La valeur max_mint_quantity définit le nombre maximal de jetons pouvant être créés pour la classe de jeton.
  • owner : ID de compte du propriétaire actuel, qui est l'appelant de la méthode.
  • tokenUri : URI du jeton.
  • quantity : quantité du jeton.
Exemple de valeur renvoyée (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 renvoyée (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 renvoyée (NFT fractionnaire) :
{
    "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.
Renvoie :
  • En cas de réussite, la ressource de jeton mise à jour au format JSON.
Exemple de valeur renvoyée (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 renvoie l'historique d'un ID de jeton spécifié.
Ctx.ERC1155Token.history(tokenId: string)
Paramètres :
  • tokenId: string : ID du jeton.
Renvoie :
  • En cas de succès, tableau JSON contenant l'historique des jetons.
Exemple de valeur renvoyée (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 renvoyée (NFT fractionnaire) :
[
    {
        "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 renvoyée (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 renvoie 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 chaîne. Cette méthode utilise des requêtes enrichies Berkeley DB SQL et ne peut être appelée qu'en cas de connexion au réseau distant Oracle Blockchain Platform.
Ctx.ERC1155Token.getAllTokens()
Paramètres :
  • Aucun élément
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 renvoie 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 un élément Token Admin du code chaîne ou du propriétaire du jeton.
this.Ctx.ERC1155Token.get(tokenId: string)
Paramètres :
  • tokenId: string : ID du jeton à obtenir.
Exemple de valeur renvoyée (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 renvoyée (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 renvoyée (NFT fractionnaire) :
{
    "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 renvoie toutes les ressources de jeton détenues par un utilisateur spécifié. Cette méthode utilise des requêtes enrichies Berkeley DB SQL et ne peut être appelée qu'en cas de connexion au réseau distant Oracle Blockchain Platform.
Ctx.ERC1155Token.getAllTokensByUser(accountId: string)
Paramètres :
  • accountId: string : ID de 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 renvoie l'ID de compte, l'ID d'organisation et l'ID utilisateur du propriétaire de l'ID de 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 renvoie 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 renvoie 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 renvoie le nombre total de jetons extraits. Les jetons fongibles sont spécifiés par l'ID de jeton. Les jetons non fongibles sont indiqué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 renvoie le nombre total de jetons extraits moins le nombre de jetons brûlés. Les jetons fongibles sont spécifiés par l'ID de jeton. Les jetons non fongibles sont indiqué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 renvoie toutes les ressources de jeton pour un nom de jeton spécifié. Cette méthode utilise des requêtes enrichies Berkeley DB SQL et ne peut être appelée qu'en cas de connexion au réseau distant Oracle Blockchain Platform.
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 renvoie 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 renvoyé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 jetons 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 de jetons fongibles dont dispose un utilisateur. Les utilisateurs doivent avoir des comptes sur le réseau pour effectuer des opérations liées aux jetons. Cette méthode ne peut être appelée que par un élément Token Admin du code chaîne.

Un compte 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 jetons fongibles avec des ID de compte uniques. Les ID de compte de jetons fongibles sont formés d'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 nombre de compteurs qui signifie l'index du compte fongible créé séparé par le symbole tilde (~).

Un utilisateur ne peut avoir qu'un seul compte de jeton non fongible. Les ID de compte de jetons 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 de jetons non fongibles unique.

Ctx.ERC1155Account.createAccount(orgId: string, userId: string, ftAccount: boolean, nftAccount: boolean)
Paramètres :
  • orgId: string : ID du fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation actuelle.
  • userId: string : nom d'utilisateur ou ID d'adresse électronique de l'utilisateur.
  • ftAccount: boolean : si la valeur est True, un compte de jeton fongible est créé et associé au compte utilisateur.
  • nftAccount: boolean : si la valeur est True, un compte de jeton non fongible est créé et associé au compte utilisateur.
Renvoie :
  • En cas de succès, objet JSON du compte 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 l'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 de jetons fongibles dont dispose un utilisateur. Les utilisateurs doivent avoir des comptes sur le réseau pour effectuer des opérations liées aux jetons.

Un ID de 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 chaîne.

Ctx.ERC1155Account.createUserAccount(orgId: string, userId: string)
Paramètres :
  • orgId: string : ID du fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation actuelle.
  • userId: string : nom d'utilisateur ou ID d'adresse électronique de l'utilisateur.
Renvoie :
  • En cas de succès, objet JSON du compte utilisateur 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 utilisateur.

Un utilisateur peut avoir plusieurs comptes de jetons fongibles avec des ID de compte uniques. Les ID de compte de jetons fongibles sont formés d'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 nombre de compteurs qui signifie l'index du compte fongible créé séparé par le symbole tilde (~).

Un utilisateur ne peut avoir qu'un seul compte de jeton non fongible. Les ID de compte de jetons 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 de jetons non fongibles unique.

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

Ctx.ERC1155Account.createTokenAccount(orgId: string, userId: string, tokenType: string)
Paramètres :
  • orgId: string : ID du fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation actuelle.
  • userId: string : nom d'utilisateur ou ID d'adresse électronique de l'utilisateur.
  • tokenType: TokenType : type de compte de jeton à créer. Les seuls types de jeton pris en charge sont nonfungible et fungible.
Renvoie :
  • En cas de succès, 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 du compte utilisateur.
  • tokenId: string : ID du jeton.
Renvoie :
  • En cas de succès, objet JSON du compte 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 indique que l'ID de compte de jeton fongible et l'ID de 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 renvoie l'historique d'un compte de jetons spécifié.
Ctx.ERC1155Account.getAccountHistory(accountId: string)
Paramètres :
  • accountId: string : ID du compte utilisateur.
Renvoie :
  • En cas de succès, tableau d'objets JSON qui décrit 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 renvoie 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 une chaîne (Token Admin) du code chaîne ou par la chaîne (Account Owner) du compte.
Ctx.ERC1155Account.GetAccountWithStatus(accountId, tokenId...)
Paramètres :
  • userAccountId: string : ID de compte de l'utilisateur.
  • tokenId?: string : pour un compte de jeton non fongible, chaîne vide. Pour un compte de jeton fongible, ID de jeton.
Renvoie :
  • En cas de succès, objet JSON qui inclut les détails du compte de jeton, y compris le statut du compte.
Exemple de valeur renvoyée (compte de jeton non fongible) :
{
    "assetType": "oaccount",
    "bapAccountVersion": 1,
    "status": "active",
    "accountId": "oaccount~cc301bee057f14236a97d434909ec1084970921b008f6baab09c2a0f5f419a9a",
    "userId": "idcqa",
    "orgId": "appdev",
    "tokenType": "nonfungible",
    "noOfNfts": 1
  }
Exemple de valeur renvoyée (compte de jetons fongible) :
{
  "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 renvoie les détails du compte de jeton pour un utilisateur spécifié. Cette méthode ne peut être appelée que par une chaîne (Token Admin) du code chaîne ou par la chaîne (Account Owner) du compte.
Ctx.ERC1155Account.getAccount(userAccountId: string, tokenId: string)
Paramètres :
  • userAccountId: string : ID de compte de l'utilisateur.
  • tokenId?: string : pour un compte de jeton non fongible, chaîne vide. Pour un compte de jeton fongible, ID de jeton.
Renvoie :
  • En cas de succès, 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 renvoyée (compte de jeton non fongible) :
{
    "assetType": "oaccount",
    "bapAccountVersion": 0,
    "accountId": "oaccount~e88276a3be547e31b567346bdddde52d37734da4d5fae83ab2e5c98a10097371",
    "userId": "idcqa",
    "orgId": "appdev",
    "tokenType": "nonfungible",
    "noOfNfts": 3
}
Exemple de valeur renvoyée (compte de jetons fongible) :
{
    "assetType": "oaccount",
    "bapAccountVersion": 0,
    "accountId": "oaccount~21206f309941a2a23c4f158a0fe1b8f12bb8e2b0c9a2e1358f5efebc0c7d410e",
    "userId": "idcqa",
    "orgId": "appdev",
    "tokenType": "fungible",
    "tokenId": "loy1",
    "tokenName": "loyalty",
    "balance": 50
}
getAllAccounts
Cette méthode renvoie les détails de tous les comptes utilisateur.
Ctx.ERC1155Account.getAllAccounts()
Paramètres :
  • Aucun élément
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 renvoie un récapitulatif de compte pour un utilisateur spécifié et les détails des jetons fongibles et non fongibles associés à l'utilisateur.
Ctx.ERC1155Account.getAccountDetailsByUser(orgId: string, userId: string)
Paramètres :
  • orgId: string : ID du fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation actuelle.
  • userId: string : nom d'utilisateur ou ID d'adresse électronique de l'utilisateur.
Renvoie :
  • En cas de succès, objet de compte JSON qui inclut et récapitule le compte pour l'utilisateur indiqué, ainsi que les détails des jetons fongibles et non fongibles associés à l'utilisateur. Pour les jetons fractionnaires non fongibles, la propriété tokenShare de la section associatedNFTs affiche le partage dont l'utilisateur est propriétaire.
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 renvoie les détails utilisateur d'un ID de compte spécifié.
Ctx.ERC1155Account.getUserByAccountId(accountId: string)
Paramètres :
  • accountId: string : ID du compte.
Renvoie :
  • En cas de réussite, objet JSON des détails de l'utilisateur (orgId et userId).
Exemple de valeur renvoyée :
{
    "orgId": "appdev",
    "userId": "idcqa"
}

Méthodes de 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 de jeton. Les jetons non fongibles sont indiqués par le nom du jeton.
Ctx.ERC1155Token.addRoleMember(role: string, userAccountId: string, token: any)
Paramètres :
  • userAccountId: string : ID de compte de l'utilisateur.
  • role: string : nom du rôle à ajouter à l'utilisateur indiqué.
  • token: any : ressource de jeton.
Renvoie :
  • En cas de succès, un message contenant 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 renvoie 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 de jeton. Les jetons non fongibles sont indiqués par le nom du jeton.
Ctx.ERC1155Token.isInRole(role: string, userAccountId: string, token: any)
Paramètres :
  • userAccountId: string : ID de 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 de jeton. Les jetons non fongibles sont indiqués par le nom du jeton.
Ctx.ERC1155Token.removeRoleMember(role: string, userAccountId: string, token: any)
Paramètres :
  • userAccountId: string : ID de compte de l'utilisateur.
  • role: string : nom du rôle à enlever de l'utilisateur indiqué.
  • 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 renvoie la liste de tous les ID de compte pour un rôle et un jeton spécifiés. Les jetons fongibles sont spécifiés par l'ID de jeton. Les jetons non fongibles sont indiqué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 renvoie la 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 de jeton. Les jetons non fongibles sont indiqué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 renvoie l'historique des transactions du compte. Cette méthode ne peut être appelée que par un élément Token Admin du code chaîne ou par le propriétaire 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 de compte de 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 renvoie les détails de la transaction pour un ID 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 les transactions antérieures à un horodatage donné 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 (minte) plusieurs jetons dans une opération de batch. Cette méthode crée uniquement des jetons fongibles ou des jetons non fongibles fractionnaires.

Pour les jetons fongibles, si le rôle minter est défini dans le fichier de spécification, tout utilisateur doté du rôle minter peut appeler cette méthode. Sinon, n'importe quel utilisateur peut utiliser cette méthode pour extraire des jetons. Vous ne pouvez pas dépasser 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 mineur est défini dans le fichier de spécification, tout utilisateur doté du rôle mineur peut appeler cette méthode. Sinon, n'importe quel utilisateur peut utiliser cette méthode pour extraire 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 non fongibles fractionnaires qui peuvent être extraits.

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 de compte de l'utilisateur.
  • tokenIds: string[] : liste des ID de jeton pour lesquels extraire des jetons.
  • quantity: number[] : liste des quantités de jetons à extraire, correspondant au tableau d'ID de jeton.
Renvoie :
  • En cas de succès, objet JSON qui inclut des détails sur les jetons extraits.
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 de jeton d'un utilisateur à un autre.

Pour les NFT, étant donné que la méthode transfère la propriété de la NFT, l'expéditeur de la NFT doit posséder le jeton.

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

Cette méthode ne valide pas le fait 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 de compte de l'expéditeur et du propriétaire du jeton dans l'organisation actuelle.
  • toUserAccountId: string : ID de compte du destinataire.
  • tokenIds: string[] : liste des ID de jeton pour les jetons à transférer.
  • quantity: number[] : liste des quantités de jetons à transférer, correspondant au tableau d'ID de jeton.
Renvoie :
  • En cas de réussite, 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 de jeton d'un utilisateur à un autre.

Pour les NFT, étant donné que la méthode transfère la propriété de la NFT, l'expéditeur de la NFT doit posséder le jeton.

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

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 de compte de l'expéditeur et du propriétaire du jeton dans l'organisation actuelle.
  • toUserAccountId: string : ID de compte du destinataire.
  • tokenIds: string[] : liste des ID de jeton pour les jetons à transférer.
  • quantity: number[] : liste des quantités de jetons à transférer, correspondant au tableau d'ID de jeton.
Renvoie :
  • En cas de réussite, 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 de batch qui obtient le solde des comptes de jetons. Les détails du compte sont indiqués dans trois listes distinctes d'ID d'organisation, d'ID utilisateur et d'ID de jeton. Cette méthode ne peut être appelée que par un élément Token Admin du code chaîne ou par des propriétaires de compte. Les propriétaires de compte ne peuvent voir les détails du solde que pour les comptes qu'ils possèdent.
Ctx.ERC1155Account.balanceOfBatch(accountIds: string[], tokenIds: string[])
Paramètres :
  • accountIds: string[] : liste des ID de compte utilisateur.
  • tokenIds: string[] : liste des ID de jeton.
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 des comptes spécifiés. Ce procédé 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 propriétaire du compte.
Ctx.ERC1155Token.exchangeToken( fromTokenId: string, fromUserAccountId: string, fromTokenQuantity: number, toTokenId: string, toUserAccountId: string, toTokenQuantity: number)
Paramètres :
  • fromTokenId: string : ID du jeton détenu par l'expéditeur.
  • fromUserAccountId: string : ID de compte de l'expéditeur.
  • fromTokenQuantity: number – Quantité de jetons de l'expéditeur à échanger avec le récepteur.
  • toTokenId: string : ID du jeton détenu par le récepteur.
  • toUserAccountId: string : ID de compte du destinataire.
  • toTokenQuantity: number – Quantité de jetons du récepteur à échanger avec l'expéditeur.
Renvoie :
  • En cas de succès, un message contenant les détails de l'échange de jetons.
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 gravable

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 de compte de l'utilisateur.
  • tokenIds: string[] : liste des ID de jeton à graver.
  • quantity: number[] : liste des quantités de jetons à graver, correspondant au tableau d'ID de jeton.
Renvoie :
  • En cas de réussite, 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)"
  }
]