Projet TypeScript échafaudé pour le cadre de taxonomie de jeton

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 Token, qui à son tour étend la classe OchainModel. La classe Token est importée à partir de ../lib/token. La fonctionnalité de persistance transparente, ou ORM simplifié, est capturée dans la classe OchainModel.

import * as yup from 'yup';
import { Id, Mandatory, Validate, ReadOnly } from '../lib/decorators';
import { Token } from '../lib/token';
 
@Id('token_id')
export class Digicur extends Token<Digicur> {
 
    public readonly assetType = 'otoken';
 
    @Mandatory()
    @Validate(yup.string().required().matches(/^[A-Za-z0-9][A-Za-z0-9_-]*$/).max(16))
    public token_id: string;
 
    @ReadOnly('digicur')
    public token_name: string;
 
    @Validate(yup.string().trim().max(256))
    public token_desc: string;
 
    @ReadOnly('fungible')
    public token_type: string;
 
    @ReadOnly(["divisible","mintable","transferable","burnable","holdable","roles"])
    public behaviors: string[];
 
    @ReadOnly({minter_role_name: "minter", burner_role_name: "burner", notary_role_name: "notary"})
    public roles: object;
 
    @ReadOnly({max_mint_quantity: 20000})
    public mintable: object;
 
    @ReadOnly({decimal: 1})
    public divisible: object;
 
    @Validate(yup.number())
    public token_to_currency_ratio: number;
 
    @Validate(yup.string())
    public currency_representation: string;
 
}

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

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(org_id: string, user_id: string) {
    await this.Ctx.Auth.checkAuthorization('ADMIN.addAdmin', 'TOKEN');
    return await this.Ctx.Admin.addAdmin(org_id, user_id);
}
Paramètres :
  • org_id: string : ID du fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation actuelle.
  • user_id: 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 (Org_Id: Org1MSP, User_Id: 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.
@Validator(yup.string(), yup.string())
public async removeTokenAdmin(org_id: string, user_id: string) {
    await this.Ctx.Auth.checkAuthorization('ADMIN.removeAdmin', 'TOKEN');
    return await this.Ctx.Admin.removeAdmin(org_id, user_id);
}
Paramètres :
  • org_id: string : ID du fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation actuelle.
  • user_id: 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 (Org_Id: Org1MSP, User_Id: User1)"}
isTokenAdmin
Cette méthode renvoie la valeur booléenne true si l'appelant de la fonction est un Token Admin, sinon elle renvoie false. Un élément Token Admin ou Org Admin peut appeler cette fonction sur n'importe quel autre utilisateur du réseau blockchain. Les autres utilisateurs ne peuvent appeler cette méthode que sur leur propre compte.
@Validator(yup.string(), yup.string())
  public async isTokenAdmin(org_id: string, user_id: string) {
    await this.Ctx.Auth.checkAuthorization("ADMIN.isUserTokenAdmin", "TOKEN");
    return await this.Ctx.Auth.isUserTokenAdmin(org_id, user_id);
  }
Paramètres :
  • org_id: string : ID du fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation actuelle.
  • user_id: 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.
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 Token Admin ou n'importe quelle valeur Org Admin du code chaîne.
@Validator()
public async getAllTokenAdmins() {
    await this.Ctx.Auth.checkAuthorization('ADMIN.getAllAdmins', 'TOKEN');
    return await this.Ctx.Admin.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":[{"org_id":"Org1MSP","user_id":"admin"}]}
addOrgAdmin
Cette méthode ajoute un utilisateur en tant qu'utilisateur Org Admin de l'organisation. Cette méthode peut uniquement être appelée par un élément Token Admin du code chaîne ou par un élément Org Admin de l'organisation indiquée.
@Validator(yup.string(), yup.string())
  public async addOrgAdmin(org_id: string, user_id: string) {
    await this.Ctx.Auth.checkAuthorization("ADMIN.addOrgAdmin", "TOKEN", { org_id });
    return await this.Ctx.Admin.addOrgAdmin(org_id, user_id);
  }
Paramètres :
  • org_id: string : ID du fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation actuelle.
  • user_id: 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é ajouté en tant que Org Admin de l'organisation.
Exemple de valeur renvoyée :
{
    "msg": "Successfully added Org Admin (Org_Id: Org1MSP, User_Id: orgAdmin)"
}
removeOrgAdmin
Cette méthode supprime un utilisateur en tant qu'utilisateur Org Admin de l'organisation. Cette méthode peut uniquement être appelée par un élément Token Admin du code chaîne ou par un élément Org Admin de l'organisation indiquée.
@Validator(yup.string(), yup.string())
  public async removeOrgAdmin(org_id: string, user_id: string) {
    await this.Ctx.Auth.checkAuthorization("ADMIN.removeOrgAdmin", "TOKEN", { org_id });
    return await this.Ctx.Admin.removeOrgAdmin(org_id, user_id);
  }
Paramètres :
  • org_id: string : ID du fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation actuelle.
  • user_id: 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 Org Admin de l'organisation.
Exemple de valeur renvoyée :
{
  "msg": "Successfully removed Org Admin (Org_Id Org1MSP User_Id orgAdmin)"
}
getOrgAdmins
Cette méthode renvoie la liste de tous les utilisateurs qui sont un Org Admin d'une organisation. Cette méthode ne peut être appelée que par un élément Token Admin du code chaîne ou par un élément Org Admin de n'importe quelle organisation.
  @Validator()
  public async getOrgAdmins() {
    await this.Ctx.Auth.checkAuthorization("ADMIN.getOrgAdmins", "TOKEN");
    return await this.Ctx.Admin.getAllOrgAdmins();
  }
Paramètres :
  • Aucun élément
Renvoie :
  • En cas de réussite, tableau au format JSON contenant des objets orgId et userId.
Exemple de valeur renvoyée :
{
    "admins": [
        {
            "org_id": "Org1MSP",
            "user_id": "orgadmin"
        },
        {
            "org_id": "Org1MSP",
            "user_id": "orgadmin1"
        },
        {
            "org_id": "Org1MSP",
            "user_id": "orgadmin2"
        }
    ]
}
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(org_id: string, user_id: string) {
    await this.Ctx.Auth.checkAuthorization('ADMIN.addAdmin', 'TOKEN');
    return await this.Ctx.Admin.addAdmin(org_id, user_id);
}
Paramètres :
  • org_id: string : ID du fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation actuelle.
  • user_id: 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 (Org_Id: Org1MSP, User_Id: 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.
@Validator(yup.string(), yup.string())
public async removeTokenAdmin(org_id: string, user_id: string) {
    await this.Ctx.Auth.checkAuthorization('ADMIN.removeAdmin', 'TOKEN');
    return await this.Ctx.Admin.removeAdmin(org_id, user_id);
}
Paramètres :
  • org_id: string : ID du fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation actuelle.
  • user_id: 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 (Org_Id: Org1MSP, User_Id: User1)"}
isTokenAdmin
Cette méthode renvoie la valeur booléenne true si l'appelant de la fonction est un Token Admin, sinon elle renvoie false. Un élément Token Admin, Token Auditor, Org Admin ou Org Auditor peut appeler cette fonction sur n'importe quel autre utilisateur du réseau de chaîne de blocs. Les autres utilisateurs ne peuvent appeler cette méthode que sur leur propre compte.
@Validator(yup.string(), yup.string())
  public async isTokenAdmin(org_id: string, user_id: string) {
    await this.Ctx.Auth.checkAuthorization("ADMIN.isUserTokenAdmin", "TOKEN");
    return await this.Ctx.Auth.isUserTokenAdmin(org_id, user_id);
  }
Paramètres :
  • org_id: string : ID du fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation actuelle.
  • user_id: 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.
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 l'élément Token Admin ou Token Auditor du code chaîne.
@Validator()
public async getAllTokenAdmins() {
    await this.Ctx.Auth.checkAuthorization('ADMIN.getAllAdmins', 'TOKEN');
    return await this.Ctx.Admin.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":[{"org_id":"Org1MSP","user_id":"admin"}]}
addOrgAdmin
Cette méthode ajoute un utilisateur en tant qu'utilisateur Org Admin de l'organisation. Cette méthode peut uniquement être appelée par un élément Token Admin du code chaîne ou par un élément Org Admin de l'organisation indiquée.
@Validator(yup.string(), yup.string())
  public async addOrgAdmin(org_id: string, user_id: string) {
    await this.Ctx.Auth.checkAuthorization("ADMIN.addOrgAdmin", "TOKEN", { org_id });
    return await this.Ctx.Admin.addOrgAdmin(org_id, user_id);
  }
Paramètres :
  • org_id: string : ID du fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation actuelle.
  • user_id: 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é ajouté en tant que Org Admin de l'organisation.
Exemple de valeur renvoyée :
{
    "msg": "Successfully added Org Admin (Org_Id: Org1MSP, User_Id: orgAdmin)"
}
removeOrgAdmin
Cette méthode supprime un utilisateur en tant qu'utilisateur Org Admin de l'organisation. Cette méthode peut uniquement être appelée par un élément Token Admin du code chaîne ou par un élément Org Admin de l'organisation indiquée.
@Validator(yup.string(), yup.string())
  public async removeOrgAdmin(org_id: string, user_id: string) {
    await this.Ctx.Auth.checkAuthorization("ADMIN.removeOrgAdmin", "TOKEN", { org_id });
    return await this.Ctx.Admin.removeOrgAdmin(org_id, user_id);
  }
Paramètres :
  • org_id: string : ID du fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation actuelle.
  • user_id: 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 Org Admin de l'organisation.
Exemple de valeur renvoyée :
{
  "msg": "Successfully removed Org Admin (Org_Id Org1MSP User_Id orgAdmin)"
}
getOrgAdmins
Cette méthode renvoie la liste de tous les utilisateurs qui sont un Org Admin d'une organisation. Cette méthode ne peut être appelée que par un élément Token Admin, Token Auditor, Org Admin ou Org Auditor.
  @Validator()
  public async getOrgAdmins() {
    await this.Ctx.Auth.checkAuthorization("ADMIN.getOrgAdmins", "TOKEN");
    return await this.Ctx.Admin.getAllOrgAdmins();
  }
Paramètres :
  • Aucun élément
Renvoie :
  • En cas de réussite, tableau au format JSON contenant des objets orgId et userId.
Exemple de valeur renvoyée :
{
    "admins": [
        {
            "org_id": "Org1MSP",
            "user_id": "orgadmin"
        },
        {
            "org_id": "Org1MSP",
            "user_id": "orgadmin1"
        },
        {
            "org_id": "Org1MSP",
            "user_id": "orgadmin2"
        }
    ]
}
addTokenAuditor
Cette méthode ajoute un utilisateur en tant que Token Auditor du code chaîne. Cette méthode ne peut être appelée que par un élément Token Admin du code chaîne.
public async addTokenAuditor(org_id: string, user_id: string)
Paramètres :
  • org_id: string : ID du fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation actuelle.
  • user_id: 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 Auditor du code chaîne.
Exemple de valeur renvoyée :
{
    "returnCode": "Success",
    "error": "",
    "result": {
        "txid": "cd81f6c4c9e7c18ece357dbf5c139ef66ef2d6566be3b14de5f6d0a3fd4bb2f0",
        "payload": {
            "msg": "Successfully added Token Auditor (Org_Id: CB, User_Id: cb)"
        },
        "encode": "JSON",
        "sourceURL": "cb-oabcs1-bom.blockchain.ocp.example.com:20009",
        "blockNumber": 196
    }
}
removeTokenAuditor
Cette méthode enlève un utilisateur en tant qu'élément Token Auditor du code chaîne. Cette méthode ne peut être appelée que par un élément Token Admin du code chaîne.
public async removeTokenAuditor(org_id: string, user_id: string)
Paramètres :
  • org_id: string : ID du fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation actuelle.
  • user_id: 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 Auditor du code chaîne.
Exemple de valeur renvoyée :
{
    "returnCode": "Success",
    "error": "",
    "result": {
        "txid": "a886a6040fbc76374a3c78c89ab0ffc9f7b8391cc5239b169bf3b878cf40c67b",
        "payload": {
            "msg": "Successfully removed Token Auditor (Org_Id: CB, User_Id: cb)"
        },
        "encode": "JSON",
        "sourceURL": "cb-oabcs1-bom.blockchain.ocp.example.com:20010",
        "blockNumber": 219
    }
}
getTokenAuditors
Cette méthode renvoie l'ensemble des éléments Token Auditors du code chaîne. Cette méthode ne peut être appelée que par un élément Token Admin ou Token Auditor du code chaîne.
public async getTokenAuditors()
Exemple de valeur renvoyée :
{
    "returnCode": "Success",
    "error": "",
    "result": {
        "payload": {
            "auditors": [
                {
                    "org_id": "CB",
                    "user_id": "auditor_user_cb"
                }
            ]
        },
        "encode": "JSON"
    }
}
addOrgAuditor
Cette méthode ajoute un utilisateur en tant que Org Auditor du code chaîne. Cette méthode ne peut être appelée que par un élément Token Admin ou Org Admin du code chaîne.
public async addOrgAuditor(org_id: string, user_id: string)
Paramètres :
  • org_id: string : ID du fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation actuelle.
  • user_id: 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 Org Auditor du code chaîne.
Exemple de valeur renvoyée :
{
    "returnCode": "Success",
    "error": "",
    "result": {
        "txid": "44bbad35a1478cb714e32f7cfd551897868a203520aab9cea5771d3aadc1cf03",
        "payload": {
            "msg": "Successfully added Org Auditor (Org_Id: CB, User_Id: cb)"
        },
        "encode": "JSON",
        "sourceURL": "cb-oabcs1-bom.blockchain.ocp.example.com:20009",
        "blockNumber": 198
    }
}
removeOrgAuditor
Cette méthode enlève un utilisateur en tant qu'élément Org Auditor du code chaîne. Cette méthode ne peut être appelée que par un élément Token Admin ou Org Admin du code chaîne.
public async removeOrgAuditor(org_id: string, user_id: string)
Paramètres :
  • org_id: string : ID du fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation actuelle.
  • user_id: 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 Org Auditor du code chaîne.
Exemple de valeur renvoyée :
{
    "returnCode": "Success",
    "error": "",
    "result": {
        "txid": "c3bc720461004a53b37c68d4bb264858b88d980bc093a0a3ebb62a32974fb306",
        "payload": {
            "msg": "Successfully removed Org Auditor (Org_Id: CB, User_Id: cb)"
        },
        "encode": "JSON",
        "sourceURL": "cb-oabcs1-bom.blockchain.ocp.example.com:20010",
        "blockNumber": 221
    }
}
getOrgAuditors
Cette méthode renvoie l'ensemble des éléments Org Auditors du code chaîne. Cette méthode ne peut être appelée que par Token Admin, Token Auditor, Org Admin ou Org Auditor.
public async getOrgAuditors()
Exemple de valeur renvoyée :
{
    "returnCode": "Success",
    "error": "",
    "result": {
        "payload": {
            "auditors": [
                {
                    "org_id": "FI1",
                    "user_id": "auditor_user_fi1"
                },
                {
                    "org_id": "FI2",
                    "user_id": "auditor_user_fi2"
                }
            ]
        },
        "encode": "JSON"
    }
}

Méthodes de gestion de la configuration des jetons

init
Cette méthode est appelée lorsque le code chaîne est déployé ou mis à niveau. Chaque élément Token Admin est identifié par les informations user_id et org_id dans le paramètre obligatoire adminList. user_id est le nom utilisateur ou l'ID courriel du propriétaire de l'instance ou de l'utilisateur qui est connecté à l'instance. org_id est l'ID du fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation réseau actuelle.
Tout utilisateur Token Admin peut ajouter et enlever d'autres utilisateurs Token Admin en appelant les méthodes addAdmin et removeAdmin.
public async init(adminList: TokenAdminAsset[]) {
    await this.Ctx.Admin.initAdmin(adminList);
    return;
}
Paramètres :
  • adminList array : tableau d'informations {user_id, org_id} qui indique la liste des administrateurs de jetons. Le tableau adminList est un paramètre obligatoire.
Exemple de paramètre, macOS et CLI Linux :
'[{"user_id":"userid", "org_id":"OrgMSPId"}]'
Exemple de paramètre, CLI Microsoft Windows :
"[{\"user_id\":\"userid\", \"org_id\":\"OrgMSPId\"}]"
Exemple de paramètre, console Oracle Blockchain Platform :
["[{\"user_id\":\"userid\", \"org_id\":\"OrgMSPId\"}]"]
initialize<Token Name>Token
Cette méthode crée un jeton et initialise les propriétés du jeton. La ressource et ses propriétés sont 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.
@Validator(Digicur)
    public async initializeDigicurToken(token_asset: Digicur) {
        await this.Ctx.Auth.checkAuthorization('TOKEN.save', 'TOKEN');
        return await this.Ctx.Token.save(token_asset)
    }
Paramètres :
  • asset <Token Class> : la ressource de jeton est transmise en tant que paramètre à cette méthode. Les propriétés de la ressource de jeton peuvent varier et sont décrites dans le fichier de spécification de jeton. N'incluez pas les paramètres marqués en lecture seule dans le fichier de spécification.

    Vous indiquez le paramètre asset dans un format différent si vous utilisez Visual Studio Code par rapport à l'interface de ligne de commande ou à une collection Postman.

    Visual Studio Code : utilisez l'interface graphique pour transmettre des paramètres individuels qui correspondent aux champs de classe de jeton.

    CLI / Postman : transmettez une chaîne JSON sérialisée qui inclut les champs de spécification de jeton, comme indiqué dans l'exemple suivant.

    "{\"token_id\":\"USD\",\"token_desc\":\"token_desc value\",\"Currency_Name\":\"Currency_Name value\"}"

Renvoie :
  • En cas de réussite, représentation JSON de la ressource de jeton créée.
Exemple de valeur renvoyée :
{
    "assetType": "otoken",
    "token_id": "digiCurr101",
    "token_name": "digicur",
    "token_type": "fungible",
    "behaviors": [
        "divisible",
        "mintable",
        "transferable",
        "burnable",
        "roles"
    ],
    "roles": {
        "minter_role_name": "minter"
    },
    "mintable": {
        "max_mint_quantity": 1000
    },
    "divisible": {
        "decimal": 2
    },
    "currency_name": "DOLLAR",
    "token_to_currency_ratio": 1
}
update<Token Name>Token
Cette méthode met à jour les propriétés de jeton. Une fois la ressource de jeton créée, seules la propriété token_desc et les propriétés personnalisées peuvent être mises à jour. Cette méthode ne peut être appelée que par un élément Token Admin du code chaîne.
@Validator(Digicur)
public async updateDigicurToken(token_asset: Digicur) {
    await this.Ctx.Auth.checkAuthorization('TOKEN.update', 'TOKEN');
    return await this.Ctx.Token.update(token_asset);
}
Paramètres :
  • asset <Token Class> : la ressource de jeton est transmise en tant que paramètre à cette méthode. Les propriétés de la ressource de jeton peuvent varier et sont décrites dans le fichier de spécification de jeton. N'incluez pas les paramètres marqués en lecture seule dans le fichier de spécification.

    Vous indiquez le paramètre asset dans un format différent si vous utilisez Visual Studio Code par rapport à l'interface de ligne de commande ou à une collection Postman.

    Visual Studio Code : utilisez l'interface graphique pour transmettre des paramètres individuels qui correspondent aux champs de classe de jeton.

    CLI / Postman : transmettez une chaîne JSON sérialisée qui inclut les champs de spécification de jeton, comme indiqué dans l'exemple suivant.

    "{\"token_id\":\"USD\",\"token_desc\":\"token_desc value\",\"Currency_Name\":\"Currency_Name value\"}"

Renvoie :
  • En cas de réussite, une représentation JSON mise à jour de la ressource de jeton.
Exemple de valeur renvoyée :
{
    "assetType": "otoken",
    "token_id": "digiCurr101",
    "token_name": "digicur",
    "token_desc": "Digital Currency equiv of dollar",
    "token_type": "fungible",
    "behaviors": [
        "divisible",
        "mintable",
        "transferable",
        "burnable",
        "roles"
    ],
    "roles": {
        "minter_role_name": "minter"
    },
    "mintable": {
        "max_mint_quantity": 1000
    },
    "divisible": {
        "decimal": 2
    },
    "currency_name": "DOLLAR",
    "token_to_currency_ratio": 1
}
getTokenDecimals
Cette méthode renvoie le nombre de décimales configurées pour un jeton fractionnaire. Si le comportement divisible n'a pas été indiqué pour le jeton, la valeur par défaut est 0. Cette méthode ne peut être appelée que par un élément Token Admin ou Org Admin du code chaîne.
@Validator(yup.string())
public async getTokenDecimals(token_id: string) {
    const token_asset = await this.getTokenObject(token_id);
    await this.Ctx.Auth.checkAuthorization('TOKEN.getDecimals', 'TOKEN');
    return {
        msg: `Token Id: ${token_id} has ${this.Ctx.Token.getDecimals(token_asset)} decimal places.`
    };
}
Paramètres :
  • token_id: string : ID du jeton.
Renvoie :
  • En cas de succès, chaîne JSON indiquant le nombre de décimales du jeton.
Exemple de valeur renvoyée :
{"msg":"Token Id: digiCurr101 has 1 decimal places."}
getTokenById
Cette méthode renvoie un objet de jeton s'il 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 ou Org Admin du code chaîne.
@Validator(yup.string())
public async getTokenById(token_id: string) {
    await this.Ctx.Auth.checkAuthorization('TOKEN.get', 'TOKEN');
    const token = await this.getTokenObject(token_id);
    return token;
}
Paramètres :
  • token_id: string : ID du jeton.
Renvoie :
  • En cas de réussite, objet JSON qui représente la ressource de jeton.
Exemple de valeur renvoyée :
{
    "assetType": "otoken",
    "token_id": "digiCurr101",
    "token_name": "digicur",
    "token_desc": "Digital Currency equiv of dollar",
    "token_type": "fungible",
    "behaviors": [
        "divisible",
        "mintable",
        "transferable",
        "burnable",
        "roles"
    ],
    "roles": {
        "minter_role_name": "minter"
        "burner_role_name": "burner",
        "notary_role_name": "notary"
    },
    "mintable": {
        "max_mint_quantity": 2000
    },
    "divisible": {
        "decimal": 1
    },
    "currency_name": "DOLLAR",
    "token_to_currency_ratio": 1
}
getTokenHistory
Cette méthode renvoie l'historique des jetons pour un ID de jeton spécifié. Tout utilisateur peut appeler cette méthode.
  @Validator(yup.string())
  public async getTokenHistory(tokenId: string) {
    await this.Ctx.Auth.checkAuthorization("TOKEN.getTokenHistory", "TOKEN");
    return await this.Ctx.Token.history(tokenId);
  }
Paramètres :
  • tokenId: string : ID du jeton.
Renvoie :
  • En cas de réussite, objet JSON qui représente l'historique des jetons.
Exemple de valeur renvoyée :

[
    {
        "trxId": "0d75f09446a60088afb948c6aca046e261fddcd43df416076201cdc5565f1a35",
        "timeStamp": "2023-09-01T16:48:41.000Z",
        "value": {
            "assetType": "otoken",
            "token_id": "token",
            "token_name": "fiatmoneytok",
            "token_desc": "updatedDesc",
            "token_standard": "ttf+",
            "token_type": "fungible",
            "token_unit": "fractional",
            "behaviors": [
                "divisible",
                "mintable",
                "transferable",
                "burnable",
                "roles"
            ],
            "roles": {
                "minter_role_name": "minter"
            },
            "mintable": {
                "max_mint_quantity": 1000
            },
            "divisible": {
                "decimal": 2
            }
        }
    },
    {
        "trxId": "3666344878b043b65d5b821cc79c042ba52aec467618800df5cf14eac69f72fa",
        "timeStamp": "2023-08-31T20:24:55.000Z",
        "value": {
            "assetType": "otoken",
            "token_id": "token",
            "token_name": "fiatmoneytok",
            "token_standard": "ttf+",
            "token_type": "fungible",
            "token_unit": "fractional",
            "behaviors": [
                "divisible",
                "mintable",
                "transferable",
                "burnable",
                "roles"
            ],
            "roles": {
                "minter_role_name": "minter"
            },
            "mintable": {
                "max_mint_quantity": 1000
            },
            "divisible": {
                "decimal": 2
            }
        }
    }
]
getAllTokens
Cette méthode renvoie tous les jetons stockés dans la base de données d'état. Cette méthode ne peut être appelée que par un élément Token Admin ou Org 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 Oracle Blockchain Platform distant.
@Validator()
public async getAllTokens() {
    await this.Ctx.Auth.checkAuthorization('TOKEN.getAllTokens', 'TOKEN');
    return await this.Ctx.Token.getAllTokens();
}
Paramètres :
  • Aucun élément
Renvoie :
  • En cas de réussite, objet JSON qui représente toutes les ressources de jeton.
getTokensByName
Cette méthode renvoie tous les objets de jeton portant le nom indiqué. Cette méthode ne peut être appelée que par un élément Token Admin ou Org 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 Oracle Blockchain Platform distant.
@Validator(yup.string())
public async getTokensByName(token_name: string) {
    await this.Ctx.Auth.checkAuthorization('TOKEN.getTokensByName', 'TOKEN');
    return await this.Ctx.Token.getTokensByName(token_name);
}
Paramètres :
  • token_name: string : nom des jetons à extraire. Le nom correspond à la propriété token_name dans le fichier de spécification. La valeur est le nom de classe du jeton.
Renvoie :
  • En cas de succès, objet JSON de toutes les ressources de jeton qui correspondent au nom.
init
Cette méthode est appelée lorsque le code chaîne est déployé ou mis à niveau. Chaque élément Token Admin est identifié par les informations user_id et org_id dans le paramètre obligatoire adminList. user_id est le nom utilisateur ou l'ID courriel du propriétaire de l'instance ou de l'utilisateur qui est connecté à l'instance. org_id est l'ID du fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation réseau actuelle.
Tout utilisateur Token Admin peut ajouter et enlever d'autres utilisateurs Token Admin en appelant les méthodes addAdmin et removeAdmin.
public async init(adminList: TokenAdminAsset[]) {
    await this.Ctx.Admin.initAdmin(adminList);
    return;
}
Paramètres :
  • adminList array : tableau d'informations {user_id, org_id} qui indique la liste des administrateurs de jetons. Le tableau adminList est un paramètre obligatoire.
Exemple de paramètre, macOS et CLI Linux :
'[{"user_id":"userid", "org_id":"OrgMSPId"}]'
Exemple de paramètre, CLI Microsoft Windows :
"[{\"user_id\":\"userid\", \"org_id\":\"OrgMSPId\"}]"
Exemple de paramètre, console Oracle Blockchain Platform :
["[{\"user_id\":\"userid\", \"org_id\":\"OrgMSPId\"}]"]
initialize<Token Name>Token
Cette méthode crée un jeton et initialise les propriétés du jeton. La ressource et ses propriétés sont 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.
@Validator(Digicur)
    public async initializeDigicurToken(token_asset: Digicur) {
        await this.Ctx.Auth.checkAuthorization('TOKEN.save', 'TOKEN');
        return await this.Ctx.Token.save(token_asset)
    }
Paramètres :
  • asset <Token Class> : la ressource de jeton est transmise en tant que paramètre à cette méthode. Les propriétés de la ressource de jeton peuvent varier et sont décrites dans le fichier de spécification de jeton. N'incluez pas les paramètres marqués en lecture seule dans le fichier de spécification.

    Vous indiquez le paramètre asset dans un format différent si vous utilisez Visual Studio Code par rapport à l'interface de ligne de commande ou à une collection Postman.

    Visual Studio Code : utilisez l'interface graphique pour transmettre des paramètres individuels qui correspondent aux champs de classe de jeton.

    CLI / Postman : transmettez une chaîne JSON sérialisée qui inclut les champs de spécification de jeton, comme indiqué dans l'exemple suivant.

    "{\"token_id\":\"USD\",\"token_desc\":\"token_desc value\",\"Currency_Name\":\"Currency_Name value\"}"

Renvoie :
  • En cas de réussite, représentation JSON de la ressource de jeton créée.
Exemple de valeur renvoyée :
{
    "assetType": "otoken",
    "token_id": "digiCurr101",
    "token_name": "digicur",
    "token_type": "fungible",
    "behaviors": [
        "divisible",
        "mintable",
        "transferable",
        "burnable",
        "roles"
    ],
    "roles": {
        "minter_role_name": "minter"
    },
    "mintable": {
        "max_mint_quantity": 1000
    },
    "divisible": {
        "decimal": 2
    },
    "currency_name": "DOLLAR",
    "token_to_currency_ratio": 1
}
update<Token Name>Token
Cette méthode met à jour les propriétés de jeton. Une fois la ressource de jeton créée, seules la propriété token_desc et les propriétés personnalisées peuvent être mises à jour. Cette méthode ne peut être appelée que par un élément Token Admin du code chaîne.
@Validator(Digicur)
public async updateDigicurToken(token_asset: Digicur) {
    await this.Ctx.Auth.checkAuthorization('TOKEN.update', 'TOKEN');
    return await this.Ctx.Token.update(token_asset);
}
Paramètres :
  • asset <Token Class> : la ressource de jeton est transmise en tant que paramètre à cette méthode. Les propriétés de la ressource de jeton peuvent varier et sont décrites dans le fichier de spécification de jeton. N'incluez pas les paramètres marqués en lecture seule dans le fichier de spécification.

    Vous indiquez le paramètre asset dans un format différent si vous utilisez Visual Studio Code par rapport à l'interface de ligne de commande ou à une collection Postman.

    Visual Studio Code : utilisez l'interface graphique pour transmettre des paramètres individuels qui correspondent aux champs de classe de jeton.

    CLI / Postman : transmettez une chaîne JSON sérialisée qui inclut les champs de spécification de jeton, comme indiqué dans l'exemple suivant.

    "{\"token_id\":\"USD\",\"token_desc\":\"token_desc value\",\"Currency_Name\":\"Currency_Name value\"}"

Renvoie :
  • En cas de réussite, une représentation JSON mise à jour de la ressource de jeton.
Exemple de valeur renvoyée :
{
    "assetType": "otoken",
    "token_id": "digiCurr101",
    "token_name": "digicur",
    "token_desc": "Digital Currency equiv of dollar",
    "token_type": "fungible",
    "behaviors": [
        "divisible",
        "mintable",
        "transferable",
        "burnable",
        "roles"
    ],
    "roles": {
        "minter_role_name": "minter"
    },
    "mintable": {
        "max_mint_quantity": 1000
    },
    "divisible": {
        "decimal": 2
    },
    "currency_name": "DOLLAR",
    "token_to_currency_ratio": 1
}
getTokenDecimals
Cette méthode renvoie le nombre de décimales configurées pour un jeton fractionnaire. Si le comportement divisible n'a pas été indiqué pour le jeton, la valeur par défaut est 0. Cette méthode ne peut être appelée que par Token Admin, Token Auditor, Org Admin ou Org Auditor.
@Validator(yup.string())
public async getTokenDecimals(token_id: string) {
    const token_asset = await this.getTokenObject(token_id);
    await this.Ctx.Auth.checkAuthorization('TOKEN.getDecimals', 'TOKEN');
    return {
        msg: `Token Id: ${token_id} has ${this.Ctx.Token.getDecimals(token_asset)} decimal places.`
    };
}
Paramètres :
  • token_id: string : ID du jeton.
Renvoie :
  • En cas de succès, chaîne JSON indiquant le nombre de décimales du jeton.
Exemple de valeur renvoyée :
{"msg":"Token Id: digiCurr101 has 1 decimal places."}
getTokenById
Cette méthode renvoie un objet de jeton s'il est présent dans la base de données d'état. Cette méthode ne peut être appelée que par Token Admin, Token Auditor, Org Admin ou Org Auditor.
@Validator(yup.string())
public async getTokenById(token_id: string) {
    await this.Ctx.Auth.checkAuthorization('TOKEN.get', 'TOKEN');
    const token = await this.getTokenObject(token_id);
    return token;
}
Paramètres :
  • token_id: string : ID du jeton.
Renvoie :
  • En cas de réussite, objet JSON qui représente la ressource de jeton.
Exemple de valeur renvoyée :
{
    "assetType": "otoken",
    "token_id": "digiCurr101",
    "token_name": "digicur",
    "token_desc": "Digital Currency equiv of dollar",
    "token_type": "fungible",
    "behaviors": [
        "divisible",
        "mintable",
        "transferable",
        "burnable",
        "roles"
    ],
    "roles": {
        "minter_role_name": "minter"
        "burner_role_name": "burner",
        "notary_role_name": "notary"
    },
    "mintable": {
        "max_mint_quantity": 2000
    },
    "divisible": {
        "decimal": 1
    },
    "currency_name": "DOLLAR",
    "token_to_currency_ratio": 1
}
getTokenHistory
Cette méthode renvoie l'historique des jetons pour un ID de jeton spécifié. Cette méthode ne peut être appelée que par Token Admin, Token Auditor, Org Admin ou Org Auditor.
  @Validator(yup.string())
  public async getTokenHistory(tokenId: string) {
    await this.Ctx.Auth.checkAuthorization("TOKEN.getTokenHistory", "TOKEN");
    return await this.Ctx.Token.history(tokenId);
  }
Paramètres :
  • tokenId: string : ID du jeton.
Renvoie :
  • En cas de réussite, objet JSON qui représente l'historique des jetons.
Exemple de valeur renvoyée :

[
    {
        "trxId": "0d75f09446a60088afb948c6aca046e261fddcd43df416076201cdc5565f1a35",
        "timeStamp": "2023-09-01T16:48:41.000Z",
        "value": {
            "assetType": "otoken",
            "token_id": "token",
            "token_name": "fiatmoneytok",
            "token_desc": "updatedDesc",
            "token_standard": "ttf+",
            "token_type": "fungible",
            "token_unit": "fractional",
            "behaviors": [
                "divisible",
                "mintable",
                "transferable",
                "burnable",
                "roles"
            ],
            "roles": {
                "minter_role_name": "minter"
            },
            "mintable": {
                "max_mint_quantity": 1000
            },
            "divisible": {
                "decimal": 2
            }
        }
    },
    {
        "trxId": "3666344878b043b65d5b821cc79c042ba52aec467618800df5cf14eac69f72fa",
        "timeStamp": "2023-08-31T20:24:55.000Z",
        "value": {
            "assetType": "otoken",
            "token_id": "token",
            "token_name": "fiatmoneytok",
            "token_standard": "ttf+",
            "token_type": "fungible",
            "token_unit": "fractional",
            "behaviors": [
                "divisible",
                "mintable",
                "transferable",
                "burnable",
                "roles"
            ],
            "roles": {
                "minter_role_name": "minter"
            },
            "mintable": {
                "max_mint_quantity": 1000
            },
            "divisible": {
                "decimal": 2
            }
        }
    }
]
getAllTokens
Cette méthode renvoie tous les jetons stockés dans la base de données d'état. Cette méthode ne peut être appelée que par Token Admin, Token Auditor, Org Admin ou Org Auditor. 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 Oracle Blockchain Platform distant.
@Validator()
public async getAllTokens() {
    await this.Ctx.Auth.checkAuthorization('TOKEN.getAllTokens', 'TOKEN');
    return await this.Ctx.Token.getAllTokens();
}
Paramètres :
  • Aucun élément
Renvoie :
  • En cas de réussite, objet JSON qui représente toutes les ressources de jeton.
getTokensByName
Cette méthode renvoie tous les objets de jeton portant le nom indiqué. Cette méthode ne peut être appelée que par Token Admin, Token Auditor, Org Admin ou Org Auditor. 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 Oracle Blockchain Platform distant.
@Validator(yup.string())
public async getTokensByName(token_name: string) {
    await this.Ctx.Auth.checkAuthorization('TOKEN.getTokensByName', 'TOKEN');
    return await this.Ctx.Token.getTokensByName(token_name);
}
Paramètres :
  • token_name: string : nom des jetons à extraire. Le nom correspond à la propriété token_name dans le fichier de spécification. La valeur est le nom de classe du jeton.
Renvoie :
  • En cas de succès, objet JSON de toutes les ressources de jeton qui correspondent au nom.

Méthodes de gestion des comptes

createAccount
Cette méthode crée un compte pour l'utilisateur et le jeton spécifiés. Un compte doit être créé pour tout utilisateur qui aura des jetons à tout moment. Les comptes assurent le suivi des soldes, des soldes bloqués et de l'historique des transactions. Un ID de compte est un ensemble alphanumérique de caractères, précédé de oaccount~<token asset name>~ et suivi d'un hachage du nom utilisateur ou de l'ID courriel (user_id) du propriétaire de l'instance ou de l'utilisateur qui est connecté à l'instance, l'ID de fournisseur de services d'adhésion (org_id) de l'utilisateur dans l'organisation réseau actuelle. Cette méthode peut uniquement être appelée par un élément Token Admin du code chaîne ou par un élément Org Admin de l'organisation indiquée.
  @Validator(yup.string(), yup.string(), yup.string())
  public async createAccount(org_id: string, user_id: string, token_type: string) {
    await this.Ctx.Auth.checkAuthorization("ACCOUNT.createAccount", "TOKEN", { org_id });
    return await this.Ctx.Account.createAccount(org_id, user_id, token_type);
  }
Paramètres :
  • org_id: string : ID du fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation actuelle.
  • user_id: string : nom d'utilisateur ou ID d'adresse électronique de l'utilisateur.
  • token_type: string : type du jeton, qui doit être fungible.
Renvoie :
  • En cas de succès, objet JSON du compte créé. Le paramètre bapAccountVersion est défini dans l'objet de compte pour une utilisation interne.
Exemple de valeur renvoyée :
{
  "assetType": "oaccount",
  "account_id": "oaccount~abc74791148b761352b98df58035601b6f5480448ac2b4a3a7eb54bdbebf48eb",
  "bapAccountVersion": 0,
  "user_id": "admin",
  "org_id": "Org1MSP",
  "token_type": "fungible",
  "token_id": "",
  "token_name": "",
  "balance": 0,
  "onhold_balance": 0
}
associateTokenToAccount
Cette méthode associe un jeton fongible à un compte. Cette méthode peut uniquement être appelée par un élément Token Admin du code chaîne ou par un élément Org Admin de l'organisation concernée.
  @Validator(yup.string(), yup.string())
  public async associateTokenToAccount(account_id: string, token_id: string) {
    await this.Ctx.Auth.checkAuthorization("ACCOUNT.associateToken", "TOKEN", { account_id });
    return await this.Ctx.Account.associateToken(account_id, token_id);
  }
Paramètres :
  • account_id: string : ID du compte.
  • token_id: string : ID du jeton.
Renvoie :
  • En cas de succès, objet JSON du compte mis à jour. Le paramètre bapAccountVersion est défini dans l'objet de compte pour une utilisation interne.
Exemple de valeur renvoyée :
{
    "assetType": "oaccount",
    "account_id": "oaccount~abc74791148b761352b98df58035601b6f5480448ac2b4a3a7eb54bdbebf48eb",
    "bapAccountVersion": 0,
    "user_id": "admin",
    "org_id": "Org1MSP",
    "token_type": "fungible",
    "token_id": "fungible",
    "token_name": "fiatmoneytok",
    "balance": 0,
    "onhold_balance": 0
}
getAccount
Cette méthode renvoie les détails de compte pour 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, un élément Org Admin de l'organisation indiquée ou l'élément AccountOwner du compte.
@Validator(yup.string(), yup.string(), yup.string())
public async getAccount(token_id: string, org_id: string, user_id: string) {
  const account_id = await this.Ctx.Account.generateAccountId(token_id, org_id, user_id);
  await this.Ctx.Auth.checkAuthorization("ACCOUNT.getAccount", "TOKEN", { account_id });
  return await this.Ctx.Account.getAccountWithStatus(account_id);
}
Paramètres :
  • token_id: string : ID du jeton.
  • org_id: string : ID du fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation actuelle.
  • user_id: string : nom d'utilisateur ou ID d'adresse électronique de l'utilisateur.
Renvoie :
  • En cas de succès, un objet de compte JSON qui inclut les propriétés suivantes :
  • account_id : ID du compte utilisateur.
  • user_id : nom d'utilisateur ou ID d'adresse électronique de l'utilisateur.
  • org_id : ID du fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation actuelle.
  • token_id : ID du jeton.
  • token_name : nom du jeton.
  • balance – Solde actuel du compte.
  • onhold_balance – Solde de blocage actuel du compte.
  • bapAccountVersion : paramètre d'objet de compte à usage interne.
  • status – Statut actuel du compte utilisateur.
Exemple de valeur renvoyée :
{
  "bapAccountVersion": 0,
  "assetType": "oaccount",
  "status": "active",
  "account_id": "oaccount~2de8db6b91964f8c9009136831126d3cfa94e1d00c4285c1ea3e6d1f36479ed4",
  "user_id": "idcqa",
  "org_id": "appdev",
  "token_type": "fungible",
  "token_id": "t1",
  "token_name": "obptok",
  "balance": 0,
  "onhold_balance": 0
}
getAccountHistory
Cette méthode renvoie les détails de l'historique du compte pour un utilisateur et un jeton spécifiés. Cette méthode ne peut être appelée que par une chaîne (Token Admin) du code chaîne ou par la chaîne (AccountOwner) du compte.
  @Validator(yup.string(), yup.string(), yup.string())
  public async getAccountHistory(token_id: string, org_id: string, user_id: string) {
    const account_id = await this.Ctx.Account.generateAccountId(token_id, org_id, user_id);
    await this.Ctx.Auth.checkAuthorization("ACCOUNT.history", "TOKEN", { account_id });
    return await this.Ctx.Account.history(account_id);
  }
Paramètres :
  • token_id: string : ID du jeton.
  • org_id: string : ID du fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation actuelle.
  • user_id: string : nom d'utilisateur ou ID d'adresse électronique de l'utilisateur.
Renvoie :
  • En cas de réussite, tableau d'objets de compte JSON incluant les propriétés suivantes :
  • trxId : ID de transaction renvoyé par le livre.
  • timeStamp : heure de la transaction.
  • value : chaîne JSON de l'objet de compte.
Exemple de valeur renvoyée :
[
    {
      "trxId":"2gsdh17fff222467e5667be042e33ce18e804b3e065cca15de306f837e416d7c3e",
      "timeStamp":1629718288,
      "value":{
         "assetType":"oaccount",
         "account_id":"oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f",
         "user_id":"user1",
         "org_id":"Org1MSP",
         "token_id":"digiCurr101",
         "token_name":"digicur",
         "balance":100,
         "onhold_balance":0,
         "bapAccountVersion": 1
   },
   {
      "trxId":"9fd07fff222467e5667be042e33ce18e804b3e065cca15de306f837e416d7c3e",
      "timeStamp":1629718288,
      "value":{
         "assetType":"oaccount",
         "account_id":"oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f",
         "user_id":"user1",
         "org_id":"Org1MSP",
         "token_id":"digiCurr101",
         "token_name":"digicur",
         "balance":0,
         "onhold_balance":0,
         "bapAccountVersion": 0
      }
   }
]
getAccountOnHoldBalance
Cette méthode renvoie le solde de blocage actuel pour un compte 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, un élément Org Admin de l'organisation indiquée ou l'élément AccountOwner du compte.
  @Validator(yup.string(), yup.string(), yup.string())
  public async getAccountOnHoldBalance(token_id: string, org_id: string, user_id: string) {
    const account_id = await this.Ctx.Account.generateAccountId(token_id, org_id, user_id);
    await this.Ctx.Auth.checkAuthorization("ACCOUNT.getAccountOnHoldBalance", "TOKEN", { account_id });
    return await this.Ctx.Account.getAccountOnHoldBalance(account_id);
  }
Paramètres :
  • token_id: string : ID du jeton.
  • org_id: string : ID du fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation actuelle.
  • user_id: string : nom d'utilisateur ou ID d'adresse électronique de l'utilisateur.
Renvoie :
  • En cas de succès, une représentation JSON du solde de blocage actuel.
Exemple de valeur renvoyée :
{"msg":"Total Holding Balance is: 0","holding_balance":0}
getAllAccounts
Cette méthode renvoie la liste de tous les comptes. 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 Oracle Blockchain Platform distant.
@Validator()
public async getAllAccounts() {
    await this.Ctx.Auth.checkAuthorization('ACCOUNT.getAllAccounts', 'TOKEN');
    return await this.Ctx.Account.getAllAccounts();
}
Paramètres :
  • Aucun élément
Renvoie :
  • En cas de succès, un tableau JSON de tous les comptes.
getUserByAccountId
Cette méthode renvoie les détails de l'utilisateur (org_id et user_id) pour un compte spécifié. Cette méthode peut être appelée par tout utilisateur du code chaîne.
@Validator(yup.string())
public async getUserByAccountId(account_id: string) {
    return await this.Ctx.Account.getUserByAccountId(account_id);
}
Paramètres :
  • account_id: string : ID du compte.
Renvoie :
  • En cas de réussite, objet JSON des détails de l'utilisateur (org_id, token_id et user_id).
Exemple de valeur renvoyée :
{
    "token_id": "digiCurr101",
    "user_id": "user1",
    "org_id": "Org1MSP"
}
getAccountBalance
Cette méthode renvoie le solde actuel pour un compte 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, un élément Org Admin de l'organisation indiquée ou l'élément AccountOwner du compte.
  @Validator(yup.string(), yup.string(), yup.string())
  public async getAccountBalance(token_id: string, org_id: string, user_id: string) {
    const account_id = await this.Ctx.Account.generateAccountId(token_id, org_id, user_id);
    await this.Ctx.Auth.checkAuthorization("ACCOUNT.getAccountBalance", "TOKEN", { account_id });
    return await this.Ctx.Account.getAccountBalance(account_id);
  }
Paramètres :
  • token_id: string : ID du jeton.
  • org_id: string : ID du fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation actuelle.
  • user_id: string : nom d'utilisateur ou ID d'adresse électronique de l'utilisateur.
Renvoie :
  • En cas de succès, une représentation JSON du solde du compte courant.
Exemple de valeur renvoyée :
{"msg":"Current Balance is: 0","user_balance":0}
getAllOrgAccounts
Cette méthode renvoie la liste de tous les comptes de jetons appartenant à une organisation spécifiée. Cette méthode peut uniquement être appelée par un élément Token Admin du code chaîne ou par un élément Org Admin de l'organisation indiquée.
  @Validator(yup.string())
  public async getAllOrgAccounts(org_id: string) {
    await this.Ctx.Auth.checkAuthorization("ACCOUNT.getAllOrgAccounts", "TOKEN", { org_id });
    return await this.Ctx.Account.getAllOrgAccounts(org_id);
  }
Paramètres :
  • org_id: string – ID du prestataire de services d'adhésion (MSP) de l'organisation.
Renvoie :
  • En cas de succès, une liste de tous les comptes pour l'organisation spécifiée.
Exemple de valeur renvoyée :
[
    {
        "key": "oaccount~2de8db6b91964f8c9009136831126d3cfa94e1d00c4285c1ea3e6d1f36479ed4",
        "valueJson": {
            "bapAccountVersion": 0,
            "assetType": "oaccount",
            "account_id": "oaccount~2de8db6b91964f8c9009136831126d3cfa94e1d00c4285c1ea3e6d1f36479ed4",
            "user_id": "idcqa",
            "org_id": "appdev",
            "token_type": "fungible",
            "token_id": "token",
            "token_name": "fiatmoneytok",
            "balance": 0,
            "onhold_balance": 0
        }
    },
    {
        "key": "oaccount~620fcf5deb5fd5a65c0b5b10fda129de0f629ccd232c5891c130e24a574df50a",
        "valueJson": {
            "bapAccountVersion": 0,
            "assetType": "oaccount",
            "account_id": "oaccount~620fcf5deb5fd5a65c0b5b10fda129de0f629ccd232c5891c130e24a574df50a",
            "user_id": "example_minter",
            "org_id": "appdev",
            "token_type": "fungible",
            "token_id": "token",
            "token_name": "fiatmoneytok",
            "balance": 0,
            "onhold_balance": 0
        }
    }
]
createAccount
Cette méthode crée un compte pour l'utilisateur et le jeton spécifiés. Un compte doit être créé pour tout utilisateur qui aura des jetons à tout moment. Les comptes assurent le suivi des soldes, des soldes bloqués et de l'historique des transactions. Un ID de compte est un ensemble alphanumérique de caractères, précédé de oaccount~<token asset name>~ et suivi d'un hachage du nom utilisateur ou de l'ID courriel (user_id) du propriétaire de l'instance ou de l'utilisateur qui est connecté à l'instance, l'ID de fournisseur de services d'adhésion (org_id) de l'utilisateur dans l'organisation réseau actuelle. Cette méthode peut uniquement être appelée par un élément Token Admin du code chaîne ou par un élément Org Admin de l'organisation indiquée.
@Validator(yup.string(), yup.string(), yup.string(), yup.object().nullable())

public async createAccount(org_id: string, user_id: string, token_type: string, daily_limits: DailyLimits) {
await this.Ctx.Auth.checkAuthorization("ACCOUNT.createAccount", "TOKEN", { org_id });
return await this.Ctx.Account.createAccount(org_id, user_id, token_type, daily_limits);
}
Paramètres :
  • org_id: string : ID du fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation actuelle.
  • user_id: string : nom d'utilisateur ou ID d'adresse électronique de l'utilisateur.
  • token_type: string : type du jeton, qui doit être fungible.
  • daily_limits: JSON : objet indiquant le nombre maximal de jetons pouvant être utilisés dans des transactions quotidiennes (max_daily_amount) et le nombre maximal de transactions pouvant être effectuées quotidiennement (max_daily_transactions).

    Vous indiquez le paramètre daily_limits dans un format différent si vous utilisez Visual Studio Code par rapport à l'interface de ligne de commande ou à une collection Postman.

    Visual Studio Code : { "max_daily_amount": 1000, "max_daily_transactions": 100 }

    CLI / Postman : "{\"max_daily_amount\":1000,\"max_daily_transactions\":100}"

Renvoie :
  • En cas de succès, objet JSON du compte créé. Le paramètre bapAccountVersion est défini dans l'objet de compte pour une utilisation interne.
Exemple de valeur renvoyée :
{
  "assetType": "oaccount",
  "account_id": "oaccount~abc74791148b761352b98df58035601b6f5480448ac2b4a3a7eb54bdbebf48eb",
  "bapAccountVersion": 0,
  "user_id": "admin",
  "org_id": "Org1MSP",
  "token_type": "fungible",
  "token_id": "",
  "token_name": "",
  "balance": 0,
  "onhold_balance": 0,
  "onhold_burn_balance": 0,
  "max_daily_amount": 1000,
  "max_daily_transactions": 100
}
associateTokenToAccount
Cette méthode associe un jeton fongible à un compte. Cette méthode peut uniquement être appelée par un élément Token Admin du code chaîne ou par un élément Org Admin de l'organisation concernée.
  @Validator(yup.string(), yup.string())
  public async associateTokenToAccount(account_id: string, token_id: string) {
    await this.Ctx.Auth.checkAuthorization("ACCOUNT.associateToken", "TOKEN", { account_id });
    return await this.Ctx.Account.associateToken(account_id, token_id);
  }
Paramètres :
  • account_id: string : ID du compte.
  • token_id: string : ID du jeton.
Renvoie :
  • En cas de succès, objet JSON du compte mis à jour. Le paramètre bapAccountVersion est défini dans l'objet de compte pour une utilisation interne.
Exemple de valeur renvoyée :
{
    "assetType": "oaccount",
    "account_id": "oaccount~abc74791148b761352b98df58035601b6f5480448ac2b4a3a7eb54bdbebf48eb",
    "bapAccountVersion": 0,
    "user_id": "admin",
    "org_id": "Org1MSP",
    "token_type": "fungible",
    "token_id": "fungible",
    "token_name": "fiatmoneytok",
    "balance": 0,
    "onhold_balance": 0
}
getAccount
Cette méthode renvoie les détails de compte pour un utilisateur et un jeton spécifiés. Cette méthode ne peut être appelée que par Token Admin ou Token Auditor, Org Admin ou Org Auditor de l'organisation indiquée ou AccountOwner du compte.
@Validator(yup.string(), yup.string(), yup.string())
public async getAccount(token_id: string, org_id: string, user_id: string) {
  const account_id = await this.Ctx.Account.generateAccountId(token_id, org_id, user_id);
  await this.Ctx.Auth.checkAuthorization("ACCOUNT.getAccount", "TOKEN", { account_id });
  return await this.Ctx.Account.getAccountWithStatus(account_id);
}
Paramètres :
  • token_id: string : ID du jeton.
  • org_id: string : ID du fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation actuelle.
  • user_id: string : nom d'utilisateur ou ID d'adresse électronique de l'utilisateur.
Renvoie :
  • En cas de succès, un objet de compte JSON qui inclut les propriétés suivantes :
  • account_id : ID du compte utilisateur.
  • user_id : nom d'utilisateur ou ID d'adresse électronique de l'utilisateur.
  • org_id : ID du fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation actuelle.
  • token_id : ID du jeton.
  • token_name : nom du jeton.
  • balance – Solde actuel du compte.
  • onhold_balance – Solde de blocage actuel du compte.
  • bapAccountVersion : paramètre d'objet de compte à usage interne.
  • status – Statut actuel du compte utilisateur.
Exemple de valeur renvoyée :
{
  "bapAccountVersion": 0,
  "assetType": "oaccount",
  "status": "active",
  "account_id": "oaccount~2de8db6b91964f8c9009136831126d3cfa94e1d00c4285c1ea3e6d1f36479ed4",
  "user_id": "idcqa",
  "org_id": "appdev",
  "token_type": "fungible",
  "token_id": "t1",
  "token_name": "obptok",
  "balance": 0,
  "onhold_balance": 0
}
getAccountHistory
Cette méthode renvoie les détails de l'historique du compte pour un utilisateur et un jeton spécifiés. Cette méthode ne peut être appelée que par une chaîne (Token Admin) du code chaîne ou par la chaîne (AccountOwner) du compte.
  @Validator(yup.string(), yup.string(), yup.string())
  public async getAccountHistory(token_id: string, org_id: string, user_id: string) {
    const account_id = await this.Ctx.Account.generateAccountId(token_id, org_id, user_id);
    await this.Ctx.Auth.checkAuthorization("ACCOUNT.history", "TOKEN", { account_id });
    return await this.Ctx.Account.history(account_id);
  }
Paramètres :
  • token_id: string : ID du jeton.
  • org_id: string : ID du fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation actuelle.
  • user_id: string : nom d'utilisateur ou ID d'adresse électronique de l'utilisateur.
Renvoie :
  • En cas de réussite, tableau d'objets de compte JSON incluant les propriétés suivantes :
  • trxId : ID de transaction renvoyé par le livre.
  • timeStamp : heure de la transaction.
  • value : chaîne JSON de l'objet de compte.
Exemple de valeur renvoyée :
[
    {
      "trxId":"2gsdh17fff222467e5667be042e33ce18e804b3e065cca15de306f837e416d7c3e",
      "timeStamp":1629718288,
      "value":{
         "assetType":"oaccount",
         "account_id":"oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f",
         "user_id":"user1",
         "org_id":"Org1MSP",
         "token_id":"digiCurr101",
         "token_name":"digicur",
         "balance":100,
         "onhold_balance":0,
         "bapAccountVersion": 1
   },
   {
      "trxId":"9fd07fff222467e5667be042e33ce18e804b3e065cca15de306f837e416d7c3e",
      "timeStamp":1629718288,
      "value":{
         "assetType":"oaccount",
         "account_id":"oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f",
         "user_id":"user1",
         "org_id":"Org1MSP",
         "token_id":"digiCurr101",
         "token_name":"digicur",
         "balance":0,
         "onhold_balance":0,
         "bapAccountVersion": 0
      }
   }
]
getAccountOnHoldBalance
Cette méthode renvoie le solde de blocage actuel pour un compte et un jeton spécifiés. Cette méthode ne peut être appelée que par Token Admin ou Token Auditor, Org Admin ou Org Auditor de l'organisation indiquée ou AccountOwner du compte.
  @Validator(yup.string(), yup.string(), yup.string())
  public async getAccountOnHoldBalance(token_id: string, org_id: string, user_id: string) {
    const account_id = await this.Ctx.Account.generateAccountId(token_id, org_id, user_id);
    await this.Ctx.Auth.checkAuthorization("ACCOUNT.getAccountOnHoldBalance", "TOKEN", { account_id });
    return await this.Ctx.Account.getAccountOnHoldBalance(account_id);
  }
Paramètres :
  • token_id: string : ID du jeton.
  • org_id: string : ID du fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation actuelle.
  • user_id: string : nom d'utilisateur ou ID d'adresse électronique de l'utilisateur.
Renvoie :
  • En cas de succès, une représentation JSON du solde de blocage actuel.
Exemple de valeur renvoyée :
{"msg":"Total Holding Balance is: 0","holding_balance":0}
getAllAccounts
Cette méthode renvoie la liste de tous les comptes. Cette méthode ne peut être appelée que par Token Admin ou Token Auditor. 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 Oracle Blockchain Platform distant.
@Validator()
public async getAllAccounts() {
    await this.Ctx.Auth.checkAuthorization('ACCOUNT.getAllAccounts', 'TOKEN');
    return await this.Ctx.Account.getAllAccounts();
}
Paramètres :
  • Aucun élément
Renvoie :
  • En cas de succès, un tableau JSON de tous les comptes.
getUserByAccountId
Cette méthode renvoie les détails de l'utilisateur (org_id et user_id) pour un compte spécifié. Cette méthode peut être appelée par un élément Token Admin ou Token Auditor, ou par un élément Org Admin ou Org Auditor de l'organisation indiquée.
@Validator(yup.string())
public async getUserByAccountId(account_id: string) {
    return await this.Ctx.Account.getUserByAccountId(account_id);
}
Paramètres :
  • account_id: string : ID du compte.
Renvoie :
  • En cas de réussite, objet JSON des détails de l'utilisateur (org_id, token_id et user_id).
Exemple de valeur renvoyée :
{
    "token_id": "digiCurr101",
    "user_id": "user1",
    "org_id": "Org1MSP"
}
getAccountBalance
Cette méthode renvoie le solde actuel pour un compte et un jeton spécifiés. Cette méthode ne peut être appelée que par Token Admin ou Token Auditor, Org Admin ou Org Auditor de l'organisation indiquée ou AccountOwner du compte.
  @Validator(yup.string(), yup.string(), yup.string())
  public async getAccountBalance(token_id: string, org_id: string, user_id: string) {
    const account_id = await this.Ctx.Account.generateAccountId(token_id, org_id, user_id);
    await this.Ctx.Auth.checkAuthorization("ACCOUNT.getAccountBalance", "TOKEN", { account_id });
    return await this.Ctx.Account.getAccountBalance(account_id);
  }
Paramètres :
  • token_id: string : ID du jeton.
  • org_id: string : ID du fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation actuelle.
  • user_id: string : nom d'utilisateur ou ID d'adresse électronique de l'utilisateur.
Renvoie :
  • En cas de succès, une représentation JSON du solde du compte courant.
Exemple de valeur renvoyée :
{"msg":"Current Balance is: 0","user_balance":0}
getAllOrgAccounts
Cette méthode renvoie la liste de tous les comptes de jetons appartenant à une organisation spécifiée. Cette méthode peut être appelée uniquement par un élément Token Admin ou Token Auditor, ou par un élément Org Admin ou Org Auditor de l'organisation indiquée.
  @Validator(yup.string())
  public async getAllOrgAccounts(org_id: string) {
    await this.Ctx.Auth.checkAuthorization("ACCOUNT.getAllOrgAccounts", "TOKEN", { org_id });
    return await this.Ctx.Account.getAllOrgAccounts(org_id);
  }
Paramètres :
  • org_id: string – ID du prestataire de services d'adhésion (MSP) de l'organisation.
Renvoie :
  • En cas de succès, une liste de tous les comptes pour l'organisation spécifiée.
Exemple de valeur renvoyée :
[
    {
        "key": "oaccount~2de8db6b91964f8c9009136831126d3cfa94e1d00c4285c1ea3e6d1f36479ed4",
        "valueJson": {
            "bapAccountVersion": 0,
            "assetType": "oaccount",
            "account_id": "oaccount~2de8db6b91964f8c9009136831126d3cfa94e1d00c4285c1ea3e6d1f36479ed4",
            "user_id": "idcqa",
            "org_id": "appdev",
            "token_type": "fungible",
            "token_id": "token",
            "token_name": "fiatmoneytok",
            "balance": 0,
            "onhold_balance": 0
        }
    },
    {
        "key": "oaccount~620fcf5deb5fd5a65c0b5b10fda129de0f629ccd232c5891c130e24a574df50a",
        "valueJson": {
            "bapAccountVersion": 0,
            "assetType": "oaccount",
            "account_id": "oaccount~620fcf5deb5fd5a65c0b5b10fda129de0f629ccd232c5891c130e24a574df50a",
            "user_id": "example_minter",
            "org_id": "appdev",
            "token_type": "fungible",
            "token_id": "token",
            "token_name": "fiatmoneytok",
            "balance": 0,
            "onhold_balance": 0
        }
    }
]

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 peut uniquement être appelée par un élément Token Admin du code chaîne ou par un élément Org Admin de l'organisation indiquée qui détient également le rôle indiqué.
  @Validator(yup.string(), yup.string(), yup.string(), yup.string())
  public async addRole(token_id: string, role: string, org_id: string, user_id: string) {
    const token_asset = await this.getTokenObject(token_id);
    const account_id = await this.Ctx.Account.generateAccountId(token_id, org_id, user_id);
    await this.Ctx.Auth.checkAuthorization("TOKEN.addRoleMember", "TOKEN", { token_id, org_id, role });
    return await this.Ctx.Token.addRoleMember(role, account_id, token_asset);
  }
Paramètres :
  • token_id: string : ID du jeton.
  • role: string : nom du rôle à ajouter à l'utilisateur indiqué. Les comportements mintable et burnable correspondent aux propriétés minter_role_name et burner_role_name du fichier de spécification. De même, le rôle notary correspond à la propriété notary_role_name du fichier de spécification.
  • org_id: string : ID du fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation actuelle.
  • user_id: string : nom d'utilisateur ou ID d'adresse électronique de l'utilisateur.
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~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f (Org-Id: Org1MSP, User-Id: user1)"}
removeRole
Cette méthode supprime un rôle d'un utilisateur et d'un jeton spécifiés. Cette méthode peut uniquement être appelée par un élément Token Admin du code chaîne ou par un élément Org Admin de l'organisation indiquée qui détient également le rôle indiqué.
  @Validator(yup.string(), yup.string(), yup.string(), yup.string())
  public async removeRole(token_id: string, role: string, org_id: string, user_id: string) {
    const token_asset = await this.getTokenObject(token_id);
    const account_id = await this.Ctx.Account.generateAccountId(token_id, org_id, user_id);
    await this.Ctx.Auth.checkAuthorization("TOKEN.removeRoleMember", "TOKEN", { token_id, org_id, role });
    return await this.Ctx.Token.removeRoleMember(role, account_id, token_asset);
  }
Paramètres :
  • token_id: string : ID du jeton.
  • role: string : nom du rôle à enlever de l'utilisateur indiqué. Les comportements mintable et burnable correspondent aux propriétés minter_role_name et burner_role_name du fichier de spécification. De même, le rôle notary correspond à la propriété notary_role_name du fichier de spécification.
  • org_id: string : ID du fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation actuelle.
  • user_id: string : nom d'utilisateur ou ID d'adresse électronique de l'utilisateur.
Renvoie :
  • En cas de succès, un message contenant les détails du compte.
Exemple de valeur renvoyée :
{"msg":"Successfully removed role 'minter' from Account Id: oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f (Org-Id: Org1MSP, 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. 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 getAccountsByRole(token_id: string, role: string) {
   await this.Ctx.Auth.checkAuthorization('ROLE.getAccountsByRole', 'TOKEN');
   return await this.Ctx.Role.getAccountsByRole(token_id, role);
}
Paramètres :
  • token_id: string : ID du jeton.
  • role: string : nom du rôle à rechercher.
Renvoie :
  • En cas de succès, tableau JSON d'ID de compte.
Exemple de valeur renvoyée :
{"accounts":["oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f"]}
getAccountsByUser
Cette méthode renvoie la liste de tous les ID de compte pour un ID d'organisation et un ID utilisateur donnés. Cette méthode ne peut être appelée que par le code chaîne Token Admin, par le code chaîne Org Admin de l'organisation indiquée ou par le code chaîne Account Owner indiqué dans les paramètres.
  @Validator(yup.string(), yup.string())
  public async getAccountsByUser(org_id: string, user_id: string) {
    await this.Ctx.Auth.checkAuthorization("ACCOUNT.getAccountsByUser", "TOKEN", { org_id, user_id });
    return await this.Ctx.Account.getAccountsByUser(org_id, user_id);
  }
Paramètres :
  • org_id string : ID du fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation actuelle.
  • user_id string : nom d'utilisateur ou ID d'adresse électronique de l'utilisateur.
Renvoie :
  • En cas de succès, tableau JSON d'ID de compte.
Exemple de valeur renvoyée :
{"accounts":["oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f"]}
getUsersByRole
Cette méthode renvoie la liste de tous les utilisateurs pour un rôle 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.
@Validator(yup.string(), yup.string())
public async getUsersByRole(token_id: string, role: string) {
    await this.Ctx.Auth.checkAuthorization('ROLE.getUsersByRole', 'TOKEN');
    return await this.Ctx.Role.getUsersByRole(token_id, role);
}
Paramètres :
  • token_id: string : ID du jeton.
  • role: string : nom du rôle à rechercher.
Renvoie :
  • En cas de réussite, tableau JSON des objets utilisateur (org_id, token_id et user_id).
Exemple de valeur renvoyée :
{"users":[{"token_id":"digiCurr101","user_id":"user1","org_id":"Org1MSP"}]}
isInRole
Cette méthode renvoie une valeur booléenne pour indiquer si un utilisateur et un jeton ont un rôle spécifié. Cette méthode peut uniquement être appelée par une chaîne (Token Admin) du code chaîne, par la chaîne (AccountOwner) du compte ou par une chaîne (Org Admin) de l'organisation indiquée.
  @Validator(yup.string(), yup.string(), yup.string(), yup.string())
  public async isInRole(token_id: string, org_id: string, user_id: string, role: string) {
    const token_asset = await this.getTokenObject(token_id);
    const account_id = await this.Ctx.Account.generateAccountId(token_id, org_id, user_id);
    await this.Ctx.Auth.checkAuthorization("TOKEN.isInRole", "TOKEN", { account_id });
    return { result: await this.Ctx.Token.isInRole(role, account_id, token_asset) };
  }
Paramètres :
  • token_id: string : ID du jeton.
  • org_id: string : ID du fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation actuelle.
  • user_id: string : nom d'utilisateur ou ID d'adresse électronique de l'utilisateur.
  • role: string : nom du rôle à rechercher.
Renvoie :
  • En cas de succès, chaîne JSON du résultat booléen.
Exemple de valeur renvoyée :
{"result":"false"}
getOrgAccountsByRole
Cette méthode renvoie des informations sur tous les comptes qui ont un rôle spécifié dans une organisation spécifiée. Cette méthode peut uniquement être appelée par un élément Token Admin du code chaîne ou par un élément Org Admin de l'organisation indiquée.
   @Validator(yup.string(), yup.string(), yup.string())
  public async getOrgAccountsByRole(token_id: string, role: string, org_id: string) {
    await this.Ctx.Auth.checkAuthorization("ROLE.getOrgAccountsByRole", "TOKEN", { org_id });
    return await this.Ctx.Role.getOrgAccountsByRole(token_id, role, org_id);
  }
Paramètres :
  • token_id: string : ID du jeton.
  • role: string : nom du rôle à vérifier.
  • org_id: string – ID du prestataire de services d'adhésion (MSP) de l'organisation.
Renvoie :
  • En cas de succès, une liste de tous les comptes ayant le rôle spécifié dans l'organisation spécifiée.
Exemple de valeur renvoyée :
{
    "accounts": [
        "oaccount~abc74791148b761352b98df58035601b6f5480448ac2b4a3a7eb54bdbebf48eb",
        "oaccount~9c650574af9025a6106c8d12a801b079eda9ae2e3399fc2fbd5bd683d738a850"
    ]
}
getOrgUsersByRole
Cette méthode renvoie des informations sur tous les utilisateurs qui ont un rôle spécifié dans une organisation donnée. Cette méthode peut uniquement être appelée par un élément Token Admin du code chaîne ou par un élément Org Admin de l'organisation indiquée.
  @Validator(yup.string(), yup.string(), yup.string())
  public async getOrgUsersByRole(token_id: string, role: string, org_id: string) {
    await this.Ctx.Auth.checkAuthorization("ROLE.getOrgUsersByRole", "TOKEN", { org_id });
    return await this.Ctx.Role.getOrgUsersByRole(token_id, role, org_id);
  }
Paramètres :
  • token_id: string : ID du jeton.
  • role: string : nom du rôle à vérifier.
  • org_id: string – ID du prestataire de services d'adhésion (MSP) de l'organisation.
Renvoie :
  • En cas de succès, liste de tous les utilisateurs ayant le rôle spécifié dans l'organisation spécifiée.
Exemple de valeur renvoyée :
{
    "users": [
        {
            "token_id": "token",
            "user_id": "admin",
            "org_id": "Org1MSP"
        },
        {
            "token_id": "token",
            "user_id": "orgAdmin",
            "org_id": "Org1MSP"
        }
    ]
}
addRole
Cette méthode ajoute un rôle à un utilisateur et un jeton spécifiés. Cette méthode peut uniquement être appelée par un élément Token Admin du code chaîne ou par un élément Org Admin de l'organisation indiquée qui détient également le rôle indiqué.
  @Validator(yup.string(), yup.string(), yup.string(), yup.string())
  public async addRole(token_id: string, role: string, org_id: string, user_id: string) {
    const token_asset = await this.getTokenObject(token_id);
    const account_id = await this.Ctx.Account.generateAccountId(token_id, org_id, user_id);
    await this.Ctx.Auth.checkAuthorization("TOKEN.addRoleMember", "TOKEN", { token_id, org_id, role });
    return await this.Ctx.Token.addRoleMember(role, account_id, token_asset);
  }
Paramètres :
  • token_id: string : ID du jeton.
  • role: string : nom du rôle à ajouter à l'utilisateur indiqué. Les comportements mintable et burnable correspondent aux propriétés minter_role_name et burner_role_name du fichier de spécification. De même, le rôle notary correspond à la propriété notary_role_name du fichier de spécification.
  • org_id: string : ID du fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation actuelle.
  • user_id: string : nom d'utilisateur ou ID d'adresse électronique de l'utilisateur.
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~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f (Org-Id: Org1MSP, User-Id: user1)"}
removeRole
Cette méthode supprime un rôle d'un utilisateur et d'un jeton spécifiés. Cette méthode peut uniquement être appelée par un élément Token Admin du code chaîne ou par un élément Org Admin de l'organisation indiquée qui détient également le rôle indiqué.
  @Validator(yup.string(), yup.string(), yup.string(), yup.string())
  public async removeRole(token_id: string, role: string, org_id: string, user_id: string) {
    const token_asset = await this.getTokenObject(token_id);
    const account_id = await this.Ctx.Account.generateAccountId(token_id, org_id, user_id);
    await this.Ctx.Auth.checkAuthorization("TOKEN.removeRoleMember", "TOKEN", { token_id, org_id, role });
    return await this.Ctx.Token.removeRoleMember(role, account_id, token_asset);
  }
Paramètres :
  • token_id: string : ID du jeton.
  • role: string : nom du rôle à enlever de l'utilisateur indiqué. Les comportements mintable et burnable correspondent aux propriétés minter_role_name et burner_role_name du fichier de spécification. De même, le rôle notary correspond à la propriété notary_role_name du fichier de spécification.
  • org_id: string : ID du fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation actuelle.
  • user_id: string : nom d'utilisateur ou ID d'adresse électronique de l'utilisateur.
Renvoie :
  • En cas de succès, un message contenant les détails du compte.
Exemple de valeur renvoyée :
{"msg":"Successfully removed role 'minter' from Account Id: oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f (Org-Id: Org1MSP, 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. Cette méthode ne peut être appelée que par Token Admin ou Token Auditor.
@Validator(yup.string(), yup.string())
public async getAccountsByRole(token_id: string, role: string) {
   await this.Ctx.Auth.checkAuthorization('ROLE.getAccountsByRole', 'TOKEN');
   return await this.Ctx.Role.getAccountsByRole(token_id, role);
}
Paramètres :
  • token_id: string : ID du jeton.
  • role: string : nom du rôle à rechercher.
Renvoie :
  • En cas de succès, tableau JSON d'ID de compte.
Exemple de valeur renvoyée :
{"accounts":["oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f"]}
getAccountsByUser
Cette méthode renvoie la liste de tous les ID de compte pour un ID d'organisation et un ID utilisateur donnés. Cette méthode peut être appelée uniquement par Token Admin ou Token Auditor, par Org Admin ou Org Auditor de l'organisation indiquée ou par Account Owner spécifié dans les paramètres.
  @Validator(yup.string(), yup.string())
  public async getAccountsByUser(org_id: string, user_id: string) {
    await this.Ctx.Auth.checkAuthorization("ACCOUNT.getAccountsByUser", "TOKEN", { org_id, user_id });
    return await this.Ctx.Account.getAccountsByUser(org_id, user_id);
  }
Paramètres :
  • org_id string : ID du fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation actuelle.
  • user_id string : nom d'utilisateur ou ID d'adresse électronique de l'utilisateur.
Renvoie :
  • En cas de succès, tableau JSON d'ID de compte.
Exemple de valeur renvoyée :
{"accounts":["oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f"]}
getUsersByRole
Cette méthode renvoie la liste de tous les utilisateurs pour un rôle et un jeton spécifiés. Cette méthode ne peut être appelée que par Token Admin ou Token Auditor.
@Validator(yup.string(), yup.string())
public async getUsersByRole(token_id: string, role: string) {
    await this.Ctx.Auth.checkAuthorization('ROLE.getUsersByRole', 'TOKEN');
    return await this.Ctx.Role.getUsersByRole(token_id, role);
}
Paramètres :
  • token_id: string : ID du jeton.
  • role: string : nom du rôle à rechercher.
Renvoie :
  • En cas de réussite, tableau JSON des objets utilisateur (org_id, token_id et user_id).
Exemple de valeur renvoyée :
{"users":[{"token_id":"digiCurr101","user_id":"user1","org_id":"Org1MSP"}]}
isInRole
Cette méthode renvoie une valeur booléenne pour indiquer si un utilisateur et un jeton ont un rôle spécifié. Cette méthode ne peut être appelée que par Token Admin ou Token Auditor, AccountOwner du compte ou Org Admin ou Org Auditor de l'organisation indiquée.
  @Validator(yup.string(), yup.string(), yup.string(), yup.string())
  public async isInRole(token_id: string, org_id: string, user_id: string, role: string) {
    const token_asset = await this.getTokenObject(token_id);
    const account_id = await this.Ctx.Account.generateAccountId(token_id, org_id, user_id);
    await this.Ctx.Auth.checkAuthorization("TOKEN.isInRole", "TOKEN", { account_id });
    return { result: await this.Ctx.Token.isInRole(role, account_id, token_asset) };
  }
Paramètres :
  • token_id: string : ID du jeton.
  • org_id: string : ID du fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation actuelle.
  • user_id: string : nom d'utilisateur ou ID d'adresse électronique de l'utilisateur.
  • role: string : nom du rôle à rechercher.
Renvoie :
  • En cas de succès, chaîne JSON du résultat booléen.
Exemple de valeur renvoyée :
{"result":"false"}
getOrgAccountsByRole
Cette méthode renvoie des informations sur tous les comptes qui ont un rôle spécifié dans une organisation spécifiée. Cette méthode ne peut être appelée que par Token Admin, Token Auditor, Org Admin ou Org Auditor.
   @Validator(yup.string(), yup.string(), yup.string())
  public async getOrgAccountsByRole(token_id: string, role: string, org_id: string) {
    await this.Ctx.Auth.checkAuthorization("ROLE.getOrgAccountsByRole", "TOKEN", { org_id });
    return await this.Ctx.Role.getOrgAccountsByRole(token_id, role, org_id);
  }
Paramètres :
  • token_id: string : ID du jeton.
  • role: string : nom du rôle à vérifier.
  • org_id: string – ID du prestataire de services d'adhésion (MSP) de l'organisation.
Renvoie :
  • En cas de succès, une liste de tous les comptes ayant le rôle spécifié dans l'organisation spécifiée.
Exemple de valeur renvoyée :
{
    "accounts": [
        "oaccount~abc74791148b761352b98df58035601b6f5480448ac2b4a3a7eb54bdbebf48eb",
        "oaccount~9c650574af9025a6106c8d12a801b079eda9ae2e3399fc2fbd5bd683d738a850"
    ]
}
getOrgUsersByRole
Cette méthode renvoie des informations sur tous les utilisateurs qui ont un rôle spécifié dans une organisation donnée. Cette méthode peut être appelée uniquement par un élément Token Admin ou Token Auditor, par un élément Org Admin ou Org Auditor de l'organisation indiquée.
  @Validator(yup.string(), yup.string(), yup.string())
  public async getOrgUsersByRole(token_id: string, role: string, org_id: string) {
    await this.Ctx.Auth.checkAuthorization("ROLE.getOrgUsersByRole", "TOKEN", { org_id });
    return await this.Ctx.Role.getOrgUsersByRole(token_id, role, org_id);
  }
Paramètres :
  • token_id: string : ID du jeton.
  • role: string : nom du rôle à vérifier.
  • org_id: string – ID du prestataire de services d'adhésion (MSP) de l'organisation.
Renvoie :
  • En cas de succès, liste de tous les utilisateurs ayant le rôle spécifié dans l'organisation spécifiée.
Exemple de valeur renvoyée :
{
    "users": [
        {
            "token_id": "token",
            "user_id": "admin",
            "org_id": "Org1MSP"
        },
        {
            "token_id": "token",
            "user_id": "orgAdmin",
            "org_id": "Org1MSP"
        }
    ]
}

Méthodes de gestion de l'historique des transactions

getAccountTransactionHistory
Cette méthode renvoie un tableau des détails de l'historique des transactions de compte pour un utilisateur et un jeton spécifiés. Cette méthode peut uniquement être appelée par l'élément Token Admin du code chaîne, par un élément Org Admin de l'organisation indiquée ou par l'élément AccountOwner du compte.
 @Validator(yup.string(), yup.string(), yup.string())
  public async getAccountTransactionHistory(token_id: string, org_id: string, user_id: string) {
    const account_id = await this.Ctx.Account.generateAccountId(token_id, org_id, user_id);
    await this.Ctx.Auth.checkAuthorization("ACCOUNT.getAccountTransactionHistory", "TOKEN", { account_id });
    return await this.Ctx.Account.getAccountTransactionHistory(account_id, org_id, user_id.toLowerCase());
  }
Paramètres :
  • token_id: string : ID du jeton.
  • org_id: string : ID du fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation actuelle.
  • user_id: string : nom d'utilisateur ou ID d'adresse électronique de l'utilisateur.
Renvoie :
  • En cas de réussite, tableau d'objets de transaction de compte JSON incluant les propriétés suivantes :
  • transaction_id : ID de la transaction.
  • transacted_account – Compte avec lequel la transaction a eu lieu.
  • transaction_type : type de transaction.
  • transacted_amount – Montant de la transaction.
  • timestamp : heure de la transaction.
  • balance – Solde du compte au moment de la transaction.
  • onhold_balance – Solde retenu au moment de la transaction.
  • token_id : ID du jeton.
  • holding_id : identificateur unique renvoyé par la méthode holdTokens.
Exemple de valeur renvoyée :
[
    {
        "transaction_id": "otransaction~68f46c90d0d8d6b93d827e6b9e0152b4845e6e42a61965e63a9bbf1d8e0fc775",
        "transacted_amount": 20,
        "timestamp": "2021-08-17T06:04:24.000Z",
        "balance": 930,
        "onhold_balance": 0,
        "token_id": "digiCurr101",
        "transaction_type": "BULKTRANSFER",
        "sub_transactions": [
            {
                "transacted_account": "oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f",
                "transaction_type": "DEBIT",
                "transaction_id": "otransaction~68f46c90d0d8d6b93d827e6b9e0152b4845e6e42a61965e63a9bbf1d8e0fc775~c4ca4238a0b923820dcc509a6f75849b",
                "transacted_amount": 10
            },
            {
                "transacted_account": "oaccount~digicur~38848e87296d67c8a90918f78cf55f9c9baab2cdc8c928535471aaa1210c706e",
                "transaction_type": "DEBIT",
                "transaction_id": "otransaction~68f46c90d0d8d6b93d827e6b9e0152b4845e6e42a61965e63a9bbf1d8e0fc775~c81e728d9d4c2f636f067f89cc14862c",
                "transacted_amount": 10
            }
        ]
    },
    {
        "transaction_id": "otransaction~757864d5369bd0539d044caeb3bb4898db310fd7aa740f45a9938771903d43da",
        "transacted_amount": 50,
        "timestamp": "2021-08-17T06:02:44.000Z",
        "balance": 950,
        "onhold_balance": 0,
        "token_id": "digiCurr101",
        "transacted_account": "oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f",
        "transaction_type": "DEBIT"
    }
]
getAccountTransactionHistoryWithFilters
Cette méthode renvoie un tableau des détails de l'historique des transactions de compte pour un utilisateur et un jeton spécifiés. Cette méthode peut uniquement être appelée par l'élément Token Admin du code chaîne, par un élément Org Admin de l'organisation indiquée ou par l'élément AccountOwner du compte. Cette méthode ne peut être appelée que lorsqu'elle est connectée au réseau Oracle Blockchain Platform distant.
  @Validator(yup.string(), yup.string(), yup.string(), yup.object().nullable())
  public async getAccountTransactionHistoryWithFilters(token_id: string, org_id: string, user_id: string, filters?: Filters) {
    const account_id = await this.Ctx.Account.generateAccountId(token_id, org_id, user_id);
    await this.Ctx.Auth.checkAuthorization("ACCOUNT.getAccountTransactionHistoryWithFilters", "TOKEN", { account_id });
    return await this.Ctx.Account.getAccountTransactionHistoryWithFilters(account_id, org_id, user_id.toLowerCase(), filters);
  }
Paramètres :
  • token_id: string : ID du jeton.
  • org_id: string : ID du fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation actuelle.
  • user_id: string : nom d'utilisateur ou ID d'adresse électronique de l'utilisateur.
  • filters: string : paramètre facultatif. S'il est vide, tous les enregistrements sont renvoyés. La propriété PageSize détermine le nombre d'enregistrements à renvoyer. Si PageSize a la valeur 0, la taille de page par défaut est 20. La propriété Bookmark détermine l'index de début des enregistrements à renvoyer. Pour plus d'informations, reportez-vous à la documentation d'Hyperledger Fabric. Les propriétés StartTime et EndTime doivent être spécifiées au format RFC-3339.
Par exemple :

ochain invoke GetAccountTransactionHistoryWithFilters 'token1' 'appbuilder12' 'user_minter' '{"PageSize":10,"Bookmark":"1","StartTime":"2022-01-25T17:41:42Z","EndTime":"2022-01-25T17:59:10Z"}'

[
  {
    "transaction_id": "otransaction~672897b5a4fa78b421c000e4d6d4f71f3d46529bfbb5b4be10bf5471dc35ce89",
    "transacted_amount": 5,
    "timestamp": "2022-04-20T15:46:04.000Z",
    "token_id": "tokenId",
    "transacted_account": "oaccount~16c38d804413ebabf416360d374f76c973d4e71c74adfde73cc40c7c274883b8",
    "transaction_type": "DEBIT",
    "balance": 90,
    "onhold_balance": 0
  },
  {
    "transaction_id": "otransaction~467bb67a33aaffca4487f33dcd46c9844efdb5421a2e7b6aa2d53152eb2c6d85",
    "transacted_amount": 5,
    "timestamp": "2022-04-20T15:45:47.000Z",
    "token_id": "tokenId",
    "transacted_account": "oaccount~fbf95683b21bbc91a22205819ac1e2e9c90355d536821ed3fe22b7d23915c248",
    "transaction_type": "DEBIT",
    "balance": 95,
    "onhold_balance": 0
  },
  {
    "transaction_id": "otransaction~c6d56ce54a9bbe24597d1d10448e39316dc6f16328bf3c5b0c8ef10e1dfeb397",
    "transacted_amount": 100,
    "timestamp": "2022-04-20T15:44:26.000Z",
    "token_id": "tokenId",
    "transacted_account": "oaccount~deb5fb0906c40506f6c2d00c573b774e01a53dd91499e651d92ac4778b6add6a",
    "transaction_type": "MINT",
    "balance": 100,
    "onhold_balance": 0
  }
]
getSubTransactionsById
Cette méthode renvoie un tableau des détails de l'historique des transactions de compte pour un utilisateur et un jeton spécifiés. Cette méthode ne peut être appelée que par l'élément Token Admin du code chaîne ou par l'élément AccountOwner du compte.
  @Validator(yup.string())
  public async getSubTransactionsById(transaction_id: string) {
    await this.Ctx.Auth.checkAuthorization("ACCOUNT.getSubTransactionsById", "TOKEN", { transaction_id });
    return await this.Ctx.Account.getSubTransactionsById(transaction_id);
  }
Paramètres :
  • transaction_id: string : ID de la transaction de transfert en masse.
Renvoie :
  • Tableau d'objets de sous-transaction de compte au format JSON pour un ID de transaction de transfert en masse spécifié.
Par exemple :

ochain invoke GetAccountSubTransactionHistory 'otransaction~21972b4d206bd52ea77924efb259c67217edb23b4386580d1bee696f6f864b9b'

[
    {
        "transacted_account": "oaccount~16c38d804413ebabf416360d374f76c973d4e71c74adfde73cc40c7c274883b8",
        "transaction_type": "DEBIT",
        "transaction_id": "otransaction~6e0f8fe4a6430322170b9c619b04b6c9f1c8d257923f611b866bdf69d7fe6cb8~c81e728d9d4c2f636f067f89cc14862c",
        "transacted_amount": 5,
        "timestamp": "2022-04-20T15:52:21.000Z",
        "token_id": "token1",
        "balance": 80,
        "onhold_balance": 0
    },
    {
        "transacted_account": "oaccount~fbf95683b21bbc91a22205819ac1e2e9c90355d536821ed3fe22b7d23915c248",
        "transaction_type": "DEBIT",
        "transaction_id": "otransaction~6e0f8fe4a6430322170b9c619b04b6c9f1c8d257923f611b866bdf69d7fe6cb8~c4ca4238a0b923820dcc509a6f75849b",
        "transacted_amount": 5,
        "timestamp": "2022-04-20T15:52:21.000Z",
        "token_id": "token1",
        "balance": 85,
        "onhold_balance": 0
    }
]
getSubTransactionsByIdWithFilters
Cette méthode renvoie un tableau des détails de l'historique des sous-transactions de compte pour une transaction spécifiée.
  @Validator(yup.string(), yup.object().nullable())
  public async getSubTransactionsByIdWithFilters(transaction_id: string, filters?: SubTransactionFilters) {
    await this.Ctx.Auth.checkAuthorization("ACCOUNT.getSubTransactionsByIdWithFilters", "TOKEN", { transaction_id });
    return await this.Ctx.Account.getSubTransactionsByIdWithFilters(transaction_id, filters);
  } 
Paramètres :
  • transaction_id: string : ID de la transaction.
  • filters: string : paramètre facultatif. S'il est vide, tous les enregistrements sont renvoyés. La propriété PageSize détermine le nombre d'enregistrements à renvoyer. Si PageSize a la valeur 0, la taille de page par défaut est 20. La propriété Bookmark détermine l'index de début des enregistrements à renvoyer. Pour plus d'informations, reportez-vous à la documentation d'Hyperledger Fabric. Les propriétés StartTime et EndTime doivent être spécifiées au format RFC-3339.
Renvoie :
  • Tableau d'objets de sous-transaction de compte au format JSON pour un ID de transaction de transfert en masse spécifié.
Par exemple :

ochain invoke GetAccountSubTransactionHistoryWithFilters 'otransaction~21972b4d206bd52ea77924efb259c67217edb23b4386580d1bee696f6f864b9b' '{"PageSize":10,"Bookmark":"1"}'

[
  {
    "transaction_id": "otransaction~6e0f8fe4a6430322170b9c619b04b6c9f1c8d257923f611b866bdf69d7fe6cb8~c81e728d9d4c2f636f067f89cc14862c",
    "transacted_amount": 5,
    "timestamp": "2022-04-20T15:52:21.000Z",
    "token_id": "tokenId",
    "transacted_account": "oaccount~16c38d804413ebabf416360d374f76c973d4e71c74adfde73cc40c7c274883b8",
    "transaction_type": "DEBIT",
    "balance": 80,
    "onhold_balance": 0
  },
  {
    "transaction_id": "otransaction~6e0f8fe4a6430322170b9c619b04b6c9f1c8d257923f611b866bdf69d7fe6cb8~c4ca4238a0b923820dcc509a6f75849b",
    "transacted_amount": 5,
    "timestamp": "2022-04-20T15:52:21.000Z",
    "token_id": "tokenId",
    "transacted_account": "oaccount~fbf95683b21bbc91a22205819ac1e2e9c90355d536821ed3fe22b7d23915c248",
    "transaction_type": "DEBIT",
    "balance": 85,
    "onhold_balance": 0
  }
]
getTransactionById
Cette méthode renvoie l'historique d'une ressource Transaction.
@Validator(yup.string())
    public async getTransactionById(transaction_id: string) {
        return await this.Ctx.Transaction.getTransactionById(transaction_id);
    }
Paramètres :
  • transaction_id string : ID de la ressource de transaction.
Renvoie :
  • En cas de succès, tableau JSON de l'historique de la transaction.
Exemple de valeur renvoyée :
{
    "transaction_id": "otransaction~68f46c90d0d8d6b93d827e6b9e0152b4845e6e42a61965e63a9bbf1d8e0fc775",
    "history": [
        {
            "trxId": "68f46c90d0d8d6b93d827e6b9e0152b4845e6e42a61965e63a9bbf1d8e0fc775",
            "timeStamp": 1629180264,
            "value": {
                "assetType": "otransaction",
                "transaction_id": "otransaction~68f46c90d0d8d6b93d827e6b9e0152b4845e6e42a61965e63a9bbf1d8e0fc775",
                "token_id": "digiCurr101",
                "from_account_id": "oaccount~digicur~682bb71de419602af74e3f226345ae308445ca51010737900c1d85f0376152df",
                "to_account_id": "",
                "transaction_type": "BULKTRANSFER",
                "amount": 20,
                "timestamp": "2021-08-17T06:04:24.000Z",
                "number_of_sub_transactions": 2,
                "holding_id": ""
            }
        }
    ],
    "sub_transactions": [
        {
            "transaction_id": "otransaction~68f46c90d0d8d6b93d827e6b9e0152b4845e6e42a61965e63a9bbf1d8e0fc775~c4ca4238a0b923820dcc509a6f75849b",
            "history": [
                {
                    "trxId": "68f46c90d0d8d6b93d827e6b9e0152b4845e6e42a61965e63a9bbf1d8e0fc775",
                    "timeStamp": 1629180264,
                    "value": {
                        "assetType": "otransaction",
                        "transaction_id": "otransaction~68f46c90d0d8d6b93d827e6b9e0152b4845e6e42a61965e63a9bbf1d8e0fc775~c4ca4238a0b923820dcc509a6f75849b",
                        "token_id": "digiCurr101",
                        "from_account_id": "oaccount~digicur~682bb71de419602af74e3f226345ae308445ca51010737900c1d85f0376152df",
                        "to_account_id": "oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f",
                        "transaction_type": "TRANSFER",
                        "amount": 10,
                        "timestamp": "2021-08-17T06:04:24.000Z",
                        "number_of_sub_transactions": 0,
                        "holding_id": ""
                    }
                }
            ]
        },
        {
            "transaction_id": "otransaction~68f46c90d0d8d6b93d827e6b9e0152b4845e6e42a61965e63a9bbf1d8e0fc775~c81e728d9d4c2f636f067f89cc14862c",
            "history": [
                {
                    "trxId": "68f46c90d0d8d6b93d827e6b9e0152b4845e6e42a61965e63a9bbf1d8e0fc775",
                    "timeStamp": 1629180264,
                    "value": {
                        "assetType": "otransaction",
                        "transaction_id": "otransaction~68f46c90d0d8d6b93d827e6b9e0152b4845e6e42a61965e63a9bbf1d8e0fc775~c81e728d9d4c2f636f067f89cc14862c",
                        "token_id": "digiCurr101",
                        "from_account_id": "oaccount~digicur~682bb71de419602af74e3f226345ae308445ca51010737900c1d85f0376152df",
                        "to_account_id": "oaccount~digicur~38848e87296d67c8a90918f78cf55f9c9baab2cdc8c928535471aaa1210c706e",
                        "transaction_type": "TRANSFER",
                        "amount": 10,
                        "timestamp": "2021-08-17T06:04:24.000Z",
                        "number_of_sub_transactions": 0,
                        "holding_id": ""
                    }
                }
            ]
        }
    ]
}
deleteHistoricalTransactions
Cette méthode supprime les anciennes transactions de la base de données d'état.
@Validator(yup.date())
    public async deleteHistoricalTransactions(time_to_expiration: Date) {
        await this.Ctx.Auth.checkAuthorization('TRANSACTION.deleteTransactions', 'TOKEN');
        return await this.Ctx.Transaction.deleteTransactions(time_to_expiration);
    }
Paramètres :
  • time_to_expiration Date : horodatage indiquant quand supprimer des transactions. Les ressources de transaction antérieures à l'heure indiquée seront supprimées.
Exemple de valeur renvoyée :
"payload": {
    "msg": "Successfuly deleted transaction older than date: Thu Aug 19 2021 11:19:36 GMT+0000 (Coordinated Universal Time).",
    "transactions": [
        "otransaction~ec3366dd48b4ce2838f820f2f138648e6e55a07226713e59b411ff31b0d21058"
    ]
}
getAccountTransactionHistoryWithFiltersFromRichHistDB
Vous pouvez synchroniser les données avec la base de données d'historique enrichie, puis extraire les données à l'aide d'appels d'API de code chaîne. Cette méthode extrait l'historique des transactions de la base de données d'historique enrichi. Pour pouvoir utiliser cette méthode, vous devez exécuter Oracle Autonomous Database avec Oracle REST Data Services (ORDS) et OAuth activé, comme décrit dans Oracle Database View Definitions for Wholesale CBDC dans Oracle Blockchain Platform Digital Assets Edition.
@GetMethod()
@Validator(yup.string(), yup.string(), yup.string(), yup.string(), yup.string(), yup.object().nullable())
public async getAccountTransactionHistoryWithFiltersFromRichHistDB(token_id: string, org_id: string, user_id: string, custom_endpoint: string, bearer_token: string, filters?: Filters) {
const account_id = await this.Ctx.Account.generateAccountId(token_id, org_id, user_id);
await this.Ctx.Auth.checkAuthorization("ACCOUNT.getAccountTransactionHistoryWithFilters", "TOKEN", { account_id });
return await this.Ctx.Account.getAccountTrxHistoryWithFiltersFromRichHistDB(account_id, org_id, user_id.toLowerCase(), custom_endpoint, bearer_token, filters);
}
Paramètres :
  • token_id: string : ID du jeton à mint.
  • org_id: string : ID du fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation actuelle.
  • user_id: string : nom d'utilisateur ou ID d'adresse électronique de l'utilisateur.
  • custom_endpoint : adresse de service RESTful de la base de données d'historique enrichie.
  • bearer_token : jeton d'autorisation d'accès pour l'adresse de service RESTful.
  • filters: string : paramètre facultatif. S'il est vide, tous les enregistrements sont renvoyés. La propriété PageSize détermine le nombre d'enregistrements à renvoyer. Si PageSize a la valeur 0, la taille de page par défaut est 20. La propriété Bookmark détermine l'index de début des enregistrements à renvoyer. Pour plus d'informations, reportez-vous à la documentation d'Hyperledger Fabric. Les propriétés StartTime et EndTime doivent être spécifiées au format RFC-3339.
getAccountTransactionHistory
Cette méthode renvoie un tableau des détails de l'historique des transactions de compte pour un utilisateur et un jeton spécifiés. Cette méthode ne peut être appelée que par Token Admin ou Token Auditor, Org Admin ou Org Auditor de l'organisation indiquée ou AccountOwner du compte.
@GetMethod()
@Validator(yup.string(), yup.string(), yup.string())
public async getAccountTransactionHistory(token_id: string, org_id: string, user_id: string) {
const account_id = await this.Ctx.Account.generateAccountId(token_id, org_id, user_id);
await this.Ctx.Auth.checkAuthorization("ACCOUNT.getAccountTransactionHistory", "TOKEN", { account_id });
return await this.Ctx.Account.getAccountTransactionHistory(account_id, org_id, user_id.toLowerCase());
}
Paramètres :
  • token_id: string : ID du jeton.
  • org_id: string : ID du fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation actuelle.
  • user_id: string : nom d'utilisateur ou ID d'adresse électronique de l'utilisateur.
Exemple de valeur renvoyée :
[
            {
                "transaction_id": "otransaction~64c5a4830949eae1424600f3d4a438c6f603a7c3ea31a68e374b899803999e22",
                "transacted_amount": 10,
                "timestamp": "2024-12-11T13:37:28.000Z",
                "balance": 550,
                "onhold_balance": 10,
                "token_id": "USD",
                "category": "category value",
                "description": "description value",
                "transacted_account": "oaccount~9d9806fa92aa0c4fdb34eaffac6e830181b5d47e64fbce752195e83024125ca0",
                "transaction_type": "REJECT_MINT",
                "transacted_org_id": "CB",
                "transacted_user_id'": "creator_user_cb"
            },
            {
                "transaction_id": "otransaction~a4537ef34a955b023b7c205b9abf06a6c79e4fdd761fb24f41b8eb34126b66c0",
                "transacted_amount": 10,
                "timestamp": "2024-12-11T13:36:32.000Z",
                "balance": 550,
                "onhold_balance": 10,
                "token_id": "USD",
                "description": "description value",
                "transacted_account": "oaccount~9d9806fa92aa0c4fdb34eaffac6e830181b5d47e64fbce752195e83024125ca0",
                "transaction_type": "APPROVE_MINT",
                "transacted_org_id": "CB",
                "transacted_user_id'": "creator_user_cb"
            },
            {
                "transaction_id": "otransaction~6237a759422bd9fb112742e8cd7e6450df5a74a32236d9b1005571afed8904a4",
                "transacted_amount": 10,
                "timestamp": "2024-12-11T13:36:18.000Z",
                "balance": 540,
                "onhold_balance": 10,
                "token_id": "USD",
                "category": "category value",
                "description": "description value",
                "transacted_account": "oaccount~9d9806fa92aa0c4fdb34eaffac6e830181b5d47e64fbce752195e83024125ca0",
                "transaction_type": "REQUEST_MINT",
                "transacted_org_id": "CB",
                "transacted_user_id'": "creator_user_cb"
            },
            {
                "transaction_id": "otransaction~06b35071415d74aa1a7c18449149c937d886cae76a832c44cf8d98e84586e76e",
                "transacted_amount": 10,
                "timestamp": "2024-12-11T13:35:46.000Z",
                "balance": 540,
                "onhold_balance": 10,
                "token_id": "USD",
                "category": "category value",
                "description": "description value",
                "transacted_account": "oaccount~9d9806fa92aa0c4fdb34eaffac6e830181b5d47e64fbce752195e83024125ca0",
                "transaction_type": "REQUEST_MINT",
                "transacted_org_id": "CB",
                "transacted_user_id'": "creator_user_cb"
            }
 ]
getAccountTransactionHistoryWithFilters
Cette méthode renvoie un tableau filtré des détails de l'historique des transactions de compte pour un utilisateur et un jeton spécifiés. Cette méthode ne peut être appelée que par Token Admin ou Token Auditor, Org Admin ou Org Auditor de l'organisation indiquée ou AccountOwner du compte.
@GetMethod()
@Validator(yup.string(), yup.string(), yup.string(), yup.object().nullable())
public async getAccountTransactionHistoryWithFilters(token_id: string, org_id: string, user_id: string, filters?: Filters) {
const account_id = await this.Ctx.Account.generateAccountId(token_id, org_id, user_id);
await this.Ctx.Auth.checkAuthorization("ACCOUNT.getAccountTransactionHistoryWithFilters", "TOKEN", { account_id });
return await this.Ctx.Account.getAccountTransactionHistoryWithFilters(account_id, org_id, user_id.toLowerCase(), filters);
}
Paramètres :
  • token_id: string : ID du jeton.
  • org_id: string : ID du fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation actuelle.
  • user_id: string : nom d'utilisateur ou ID d'adresse électronique de l'utilisateur.
  • filters: string : paramètre facultatif. S'il est vide, tous les enregistrements sont renvoyés. La propriété PageSize détermine le nombre d'enregistrements à renvoyer. Si PageSize a la valeur 0, la taille de page par défaut est 20. La propriété Bookmark détermine l'index de début des enregistrements à renvoyer. Pour plus d'informations, reportez-vous à la documentation d'Hyperledger Fabric. Les propriétés StartTime et EndTime doivent être spécifiées au format RFC-3339.
Exemple de valeur renvoyée :
[
            {
                "transaction_id": "otransaction~64c5a4830949eae1424600f3d4a438c6f603a7c3ea31a68e374b899803999e22",
                "transacted_amount": 10,
                "timestamp": "2024-12-11T13:37:28.000Z",
                "balance": 550,
                "onhold_balance": 10,
                "token_id": "USD",
                "category": "category value",
                "description": "description value",
                "transacted_account": "oaccount~9d9806fa92aa0c4fdb34eaffac6e830181b5d47e64fbce752195e83024125ca0",
                "transaction_type": "REJECT_MINT",
                "transacted_org_id": "CB",
                "transacted_user_id'": "creator_user_cb"
            },
            {
                "transaction_id": "otransaction~a4537ef34a955b023b7c205b9abf06a6c79e4fdd761fb24f41b8eb34126b66c0",
                "transacted_amount": 10,
                "timestamp": "2024-12-11T13:36:32.000Z",
                "balance": 550,
                "onhold_balance": 10,
                "token_id": "USD",
                "description": "description value",
                "transacted_account": "oaccount~9d9806fa92aa0c4fdb34eaffac6e830181b5d47e64fbce752195e83024125ca0",
                "transaction_type": "APPROVE_MINT",
                "transacted_org_id": "CB",
                "transacted_user_id'": "creator_user_cb"
            },
            {
                "transaction_id": "otransaction~6237a759422bd9fb112742e8cd7e6450df5a74a32236d9b1005571afed8904a4",
                "transacted_amount": 10,
                "timestamp": "2024-12-11T13:36:18.000Z",
                "balance": 540,
                "onhold_balance": 10,
                "token_id": "USD",
                "category": "category value",
                "description": "description value",
                "transacted_account": "oaccount~9d9806fa92aa0c4fdb34eaffac6e830181b5d47e64fbce752195e83024125ca0",
                "transaction_type": "REQUEST_MINT",
                "transacted_org_id": "CB",
                "transacted_user_id'": "creator_user_cb"
            },
            {
                "transaction_id": "otransaction~06b35071415d74aa1a7c18449149c937d886cae76a832c44cf8d98e84586e76e",
                "transacted_amount": 10,
                "timestamp": "2024-12-11T13:35:46.000Z",
                "balance": 540,
                "onhold_balance": 10,
                "token_id": "USD",
                "category": "category value",
                "description": "description value",
                "transacted_account": "oaccount~9d9806fa92aa0c4fdb34eaffac6e830181b5d47e64fbce752195e83024125ca0",
                "transaction_type": "REQUEST_MINT",
                "transacted_org_id": "CB",
                "transacted_user_id'": "creator_user_cb"
            }
 ]
getSubTransactionsById
Cette méthode renvoie un tableau des détails de l'historique des transactions de compte pour un utilisateur et un jeton spécifiés. Cette méthode ne peut être appelée que par Token Admin, Token Auditor ou AccountOwner qui a appelé la transaction.
  @Validator(yup.string())
  public async getSubTransactionsById(transaction_id: string) {
    await this.Ctx.Auth.checkAuthorization("ACCOUNT.getSubTransactionsById", "TOKEN", { transaction_id });
    return await this.Ctx.Account.getSubTransactionsById(transaction_id);
  }
Paramètres :
  • transaction_id: string : ID de la transaction de transfert en masse.
Renvoie :
  • Tableau d'objets de sous-transaction de compte au format JSON pour un ID de transaction de transfert en masse spécifié.
Par exemple :

ochain invoke GetAccountSubTransactionHistory 'otransaction~21972b4d206bd52ea77924efb259c67217edb23b4386580d1bee696f6f864b9b'

[
    {
        "transacted_account": "oaccount~16c38d804413ebabf416360d374f76c973d4e71c74adfde73cc40c7c274883b8",
        "transaction_type": "DEBIT",
        "transaction_id": "otransaction~6e0f8fe4a6430322170b9c619b04b6c9f1c8d257923f611b866bdf69d7fe6cb8~c81e728d9d4c2f636f067f89cc14862c",
        "transacted_amount": 5,
        "timestamp": "2022-04-20T15:52:21.000Z",
        "token_id": "token1",
        "balance": 80,
        "onhold_balance": 0
    },
    {
        "transacted_account": "oaccount~fbf95683b21bbc91a22205819ac1e2e9c90355d536821ed3fe22b7d23915c248",
        "transaction_type": "DEBIT",
        "transaction_id": "otransaction~6e0f8fe4a6430322170b9c619b04b6c9f1c8d257923f611b866bdf69d7fe6cb8~c4ca4238a0b923820dcc509a6f75849b",
        "transacted_amount": 5,
        "timestamp": "2022-04-20T15:52:21.000Z",
        "token_id": "token1",
        "balance": 85,
        "onhold_balance": 0
    }
]
getSubTransactionsByIdWithFilters
Cette méthode renvoie un tableau des détails de l'historique des sous-transactions de compte pour une transaction spécifiée.
  @Validator(yup.string(), yup.object().nullable())
  public async getSubTransactionsByIdWithFilters(transaction_id: string, filters?: SubTransactionFilters) {
    await this.Ctx.Auth.checkAuthorization("ACCOUNT.getSubTransactionsByIdWithFilters", "TOKEN", { transaction_id });
    return await this.Ctx.Account.getSubTransactionsByIdWithFilters(transaction_id, filters);
  } 
Paramètres :
  • transaction_id: string : ID de la transaction.
  • filters: string : paramètre facultatif. S'il est vide, tous les enregistrements sont renvoyés. La propriété PageSize détermine le nombre d'enregistrements à renvoyer. Si PageSize a la valeur 0, la taille de page par défaut est 20. La propriété Bookmark détermine l'index de début des enregistrements à renvoyer. Pour plus d'informations, reportez-vous à la documentation d'Hyperledger Fabric. Les propriétés StartTime et EndTime doivent être spécifiées au format RFC-3339.
Renvoie :
  • Tableau d'objets de sous-transaction de compte au format JSON pour un ID de transaction de transfert en masse spécifié.
Par exemple :

ochain invoke GetAccountSubTransactionHistoryWithFilters 'otransaction~21972b4d206bd52ea77924efb259c67217edb23b4386580d1bee696f6f864b9b' '{"PageSize":10,"Bookmark":"1"}'

[
  {
    "transaction_id": "otransaction~6e0f8fe4a6430322170b9c619b04b6c9f1c8d257923f611b866bdf69d7fe6cb8~c81e728d9d4c2f636f067f89cc14862c",
    "transacted_amount": 5,
    "timestamp": "2022-04-20T15:52:21.000Z",
    "token_id": "tokenId",
    "transacted_account": "oaccount~16c38d804413ebabf416360d374f76c973d4e71c74adfde73cc40c7c274883b8",
    "transaction_type": "DEBIT",
    "balance": 80,
    "onhold_balance": 0
  },
  {
    "transaction_id": "otransaction~6e0f8fe4a6430322170b9c619b04b6c9f1c8d257923f611b866bdf69d7fe6cb8~c4ca4238a0b923820dcc509a6f75849b",
    "transacted_amount": 5,
    "timestamp": "2022-04-20T15:52:21.000Z",
    "token_id": "tokenId",
    "transacted_account": "oaccount~fbf95683b21bbc91a22205819ac1e2e9c90355d536821ed3fe22b7d23915c248",
    "transaction_type": "DEBIT",
    "balance": 85,
    "onhold_balance": 0
  }
]
getTransactionById
Cette méthode renvoie l'historique d'une ressource Transaction. Cette méthode ne peut être appelée que par un élément Token Admin ou Token Auditor, par un élément Org Admin ou Org Auditor de l'organisation indiquée ou par un participant à la transaction (expéditeur, destinataire ou notaire).
@Validator(yup.string())
    public async getTransactionById(transaction_id: string) {
        return await this.Ctx.Transaction.getTransactionById(transaction_id);
    }
Paramètres :
  • transaction_id string : ID de la ressource de transaction.
Renvoie :
  • En cas de succès, tableau JSON de l'historique de la transaction.
Exemple de valeur renvoyée :
{
    "transaction_id": "otransaction~68f46c90d0d8d6b93d827e6b9e0152b4845e6e42a61965e63a9bbf1d8e0fc775",
    "history": [
        {
            "trxId": "68f46c90d0d8d6b93d827e6b9e0152b4845e6e42a61965e63a9bbf1d8e0fc775",
            "timeStamp": 1629180264,
            "value": {
                "assetType": "otransaction",
                "transaction_id": "otransaction~68f46c90d0d8d6b93d827e6b9e0152b4845e6e42a61965e63a9bbf1d8e0fc775",
                "token_id": "digiCurr101",
                "from_account_id": "oaccount~digicur~682bb71de419602af74e3f226345ae308445ca51010737900c1d85f0376152df",
                "to_account_id": "",
                "transaction_type": "BULKTRANSFER",
                "amount": 20,
                "timestamp": "2021-08-17T06:04:24.000Z",
                "number_of_sub_transactions": 2,
                "holding_id": ""
            }
        }
    ],
    "sub_transactions": [
        {
            "transaction_id": "otransaction~68f46c90d0d8d6b93d827e6b9e0152b4845e6e42a61965e63a9bbf1d8e0fc775~c4ca4238a0b923820dcc509a6f75849b",
            "history": [
                {
                    "trxId": "68f46c90d0d8d6b93d827e6b9e0152b4845e6e42a61965e63a9bbf1d8e0fc775",
                    "timeStamp": 1629180264,
                    "value": {
                        "assetType": "otransaction",
                        "transaction_id": "otransaction~68f46c90d0d8d6b93d827e6b9e0152b4845e6e42a61965e63a9bbf1d8e0fc775~c4ca4238a0b923820dcc509a6f75849b",
                        "token_id": "digiCurr101",
                        "from_account_id": "oaccount~digicur~682bb71de419602af74e3f226345ae308445ca51010737900c1d85f0376152df",
                        "to_account_id": "oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f",
                        "transaction_type": "TRANSFER",
                        "amount": 10,
                        "timestamp": "2021-08-17T06:04:24.000Z",
                        "number_of_sub_transactions": 0,
                        "holding_id": ""
                    }
                }
            ]
        },
        {
            "transaction_id": "otransaction~68f46c90d0d8d6b93d827e6b9e0152b4845e6e42a61965e63a9bbf1d8e0fc775~c81e728d9d4c2f636f067f89cc14862c",
            "history": [
                {
                    "trxId": "68f46c90d0d8d6b93d827e6b9e0152b4845e6e42a61965e63a9bbf1d8e0fc775",
                    "timeStamp": 1629180264,
                    "value": {
                        "assetType": "otransaction",
                        "transaction_id": "otransaction~68f46c90d0d8d6b93d827e6b9e0152b4845e6e42a61965e63a9bbf1d8e0fc775~c81e728d9d4c2f636f067f89cc14862c",
                        "token_id": "digiCurr101",
                        "from_account_id": "oaccount~digicur~682bb71de419602af74e3f226345ae308445ca51010737900c1d85f0376152df",
                        "to_account_id": "oaccount~digicur~38848e87296d67c8a90918f78cf55f9c9baab2cdc8c928535471aaa1210c706e",
                        "transaction_type": "TRANSFER",
                        "amount": 10,
                        "timestamp": "2021-08-17T06:04:24.000Z",
                        "number_of_sub_transactions": 0,
                        "holding_id": ""
                    }
                }
            ]
        }
    ]
}
deleteHistoricalTransactions
Cette méthode supprime les anciennes transactions de la base de données d'état.
@Validator(yup.date())
    public async deleteHistoricalTransactions(time_to_expiration: Date) {
        await this.Ctx.Auth.checkAuthorization('TRANSACTION.deleteTransactions', 'TOKEN');
        return await this.Ctx.Transaction.deleteTransactions(time_to_expiration);
    }
Paramètres :
  • time_to_expiration Date : horodatage indiquant quand supprimer des transactions. Les ressources de transaction antérieures à l'heure indiquée seront supprimées.
Exemple de valeur renvoyée :
"payload": {
    "msg": "Successfuly deleted transaction older than date: Thu Aug 19 2021 11:19:36 GMT+0000 (Coordinated Universal Time).",
    "transactions": [
        "otransaction~ec3366dd48b4ce2838f820f2f138648e6e55a07226713e59b411ff31b0d21058"
    ]
}

Méthodes de gestion du comportement des jetons - Comportement Mintable

issueTokens
Cette méthode extrait les jetons, qui sont ensuite détenus par l'appelant de la méthode. L'appelant doit avoir un compte et le rôle de mineur. Le nombre de jetons pouvant être extraits est limité par la propriété max_mint_quantity du comportement mintable dans le fichier de spécification. Si la propriété max_mint_quantity n'est pas spécifiée, un nombre illimité de jetons peut être extrait. La quantité doit être comprise dans les valeurs décimales spécifiées par le paramètre decimal du comportement divisible dans le fichier de spécification. Cette méthode ne peut être appelée que par l'élément AccountOwner du compte avec le rôle minter.
@Validator(yup.string(), yup.number().positive())
public async issueTokens(token_id: string, quantity: number) {
    const token_asset = await this.getTokenObject(token_id);
    return await this.Ctx.Token.mint(quantity, token_asset);
}
Paramètres :
  • token_id: string : ID du jeton.
  • quantity : nombre de sèmes devant correspondre.
Renvoie :
  • En cas de succès, un message contenant les détails du compte.
Exemple de valeur renvoyée :
{
    "msg": "Successfully minted 1000 tokens to Account Id: \
oaccount~digicur~682bb71de419602af74e3f226345ae308445ca51010737900c1d85f0376152df (Org-Id: Org1MSP, User-Id: user1)  ",
}
getTotalMintedTokens
Cette méthode renvoie le nombre total de jetons extraits pour un jeton spécifié. Cette méthode ne peut être appelée que par un élément Token Admin ou Org Admin du code chaîne.
@Validator(yup.string())
 public async getTotalMintedTokens(token_id: string) {
     const token_asset = await this.getTokenObject(token_id);
     await this.Ctx.Auth.checkAuthorization('TOKEN.getTotalMintedTokens', 'TOKEN');
     const totalMintedTokens = await this.Ctx.Token.getTotalMintedTokens(token_asset);
     return {
         msg: `Total minted token for Token Id: ${token_id} is ${totalMintedTokens} tokens.`,
         quantity: totalMintedTokens
     };
 }
Paramètres :
  • token_id: string : ID du jeton.
Renvoie :
  • En cas de succès, une chaîne JSON indiquant le nombre total de jetons.
Exemple de valeur renvoyée :
{"msg":"Total minted token for Token Id: digiCurr101 is 100 tokens.","quantity":100}
getNetTokens
Cette méthode renvoie le nombre total net de jetons disponibles dans le système pour un jeton spécifié. Le total net des jetons correspond à la quantité restante de jetons après leur gravure. Sous forme d'équation : jetons net = total des jetons minés - total des jetons brûlés. Si aucun jeton n'est brûlé, le nombre de jetons réseau est égal au nombre total de jetons extraits. Cette méthode ne peut être appelée que par un élément Token Admin ou Org Admin du code chaîne.
@Validator(yup.string())
public async getNetTokens(token_id: string) {
	const token_asset = await this.getTokenObject(token_id);
	await this.Ctx.Auth.checkAuthorization('TOKEN.getNetTokens', 'TOKEN');
	const netTokens = await this.Ctx.Token.getNetTokens(token_asset);
	return {
		msg: `Net supply of token for Token Id: ${token_id} is ${netTokens} tokens.`,
		quantity: netTokens
	};
}
Paramètres :
  • token_id: string : ID du jeton.
Renvoie :
  • En cas de succès, une chaîne JSON indiquant le nombre net de jetons.
Exemple de valeur renvoyée :
{"msg":"Net supply of token for Token Id: digiCurr101 is 0 tokens.","quantity":0}
requestMint
Cette méthode peut être appelée par un mineur pour envoyer une demande au notaire mineur pour créer une quantité spécifiée de jetons.
@Validator(yup.string(), yup.string(), yup.string(), yup.string(), yup.number().positive(), yup.date(), yup.object().nullable())
public async requestMint( token_id: string, operation_id: string, notary_org_id: string, notary_user_id: string, quantity: number, time_to_expiration: Date, info_details?: InfoDetails) {

const token_asset = await this.getTokenObject(token_id);
const notary_account_id = await this.Ctx.Account.generateAccountId(token_id, notary_org_id, notary_user_id);
return await this.Ctx.Token.hold(operation_id, null, notary_account_id, quantity, time_to_expiration, token_asset, HoldOperationType.MINT, info_details);

}
Paramètres :
  • token_id: string : ID du jeton à mint.
  • operation_id: string : ID d'opération unique qui représente la demande mint.
  • notary_org_id: string – ID du prestataire de services d'adhésion (MSP) du notaire mineur qui traitera la demande.
  • notary_user_id: string : nom d'utilisateur ou ID de courriel du notaire du mineur qui traitera la demande.
  • quantity: number – La quantité de jetons à la menthe.
  • time_to_expiration : heure après laquelle la demande d'extraction expire et n'est plus valide.
  • info_details: JSON : objet indiquant la catégorie (category) et la description (description) de la demande.

    Vous indiquez le paramètre info_details dans un format différent si vous utilisez Visual Studio Code par rapport à l'interface de ligne de commande ou à une collection Postman.

    Visual Studio Code : { "category": "category value", "description": "description value" }

    CLI / Postman : "{\"category\":\"category value\",\"description\":\"description value\"}"

Exemple de valeur renvoyée :
{
msg:
"AccountId oaccount~95be539b4e1e4136dd86a806020c97a930909325340481b8fd88d339874fa699 (Org-Id: Org1MSP, User-Id: admin) has successfully submitted request to mint 100 tokens",
}
approveMint
Cette méthode peut être appelée par un notaire de mineur pour approuver une demande de frappe.
@Validator(yup.string(), yup.string())
public async approveMint(token_id: string, operation_id: string) {
const token_asset = await this.getTokenObject(token_id);
return await this.Ctx.Token.executeHold(operation_id, token_asset);
}
Paramètres :
  • token_id: string : ID du jeton à mint.
  • operation_id: string : ID d'opération unique qui représente la demande mint.
Exemple de valeur renvoyée :
{
msg:
"Successfully minted 100 tokens to Account Id: oaccount~95be539b4e1e4136dd86a806020c97a930909325340481b8fd88d339874fa699 (Org-Id: Org1MSP, User-Id: admin)"
}
rejectMint
Cette méthode peut être appelée par un notaire de mineur pour rejeter une demande de frappe.
@Validator(yup.string(), yup.string())
public async rejectMint(token_id: string, operation_id: string) {
const token_asset = await this.getTokenObject(token_id);
return await this.Ctx.Token.releaseHold(operation_id, token_asset);
}
Paramètres :
  • token_id: string : ID du jeton à mint.
  • operation_id: string : ID d'opération unique qui représente la demande mint.
Exemple de valeur renvoyée :
{
 msg: "Successfully rejected mint request with Operation Id 'operation1' to mint 100 tokens of token id token"
}
issueTokens
Cette méthode extrait les jetons, qui sont ensuite détenus par l'appelant de la méthode.
@Validator(yup.string(), yup.number().positive(), yup.object().nullable())
public async issueTokens(token_id: string, quantity: number, info_details?: InfoDetails) {
const token_asset = await this.getTokenObject(token_id);
return await this.Ctx.Token.mint(quantity, token_asset, info_details);
}
Paramètres :
  • token_id: string : ID du jeton.
  • quantity : nombre de sèmes à traiter.
  • info_details: JSON : objet indiquant la catégorie (category) et la description (description) de la demande.

    Vous indiquez le paramètre info_details dans un format différent si vous utilisez Visual Studio Code par rapport à l'interface de ligne de commande ou à une collection Postman.

    Visual Studio Code : { "category": "category value", "description": "description value" }

    CLI / Postman : "{\"category\":\"category value\",\"description\":\"description value\"}"

Exemple de valeur renvoyée :
{
msg:
"Successfully minted 100 tokens to Account Id: oaccount~95be539b4e1e4136dd86a806020c97a930909325340481b8fd88d339874fa699 (Org-Id: Org1MSP, User-Id: admin)"
}
getTotalMintedTokens
Cette méthode renvoie le nombre total de jetons extraits pour un jeton spécifié. Cette méthode ne peut être appelée que par Token Admin, Token Auditor, Org Admin ou Org Auditor.
@Validator(yup.string())
 public async getTotalMintedTokens(token_id: string) {
     const token_asset = await this.getTokenObject(token_id);
     await this.Ctx.Auth.checkAuthorization('TOKEN.getTotalMintedTokens', 'TOKEN');
     const totalMintedTokens = await this.Ctx.Token.getTotalMintedTokens(token_asset);
     return {
         msg: `Total minted token for Token Id: ${token_id} is ${totalMintedTokens} tokens.`,
         quantity: totalMintedTokens
     };
 }
Paramètres :
  • token_id: string : ID du jeton.
Renvoie :
  • En cas de succès, une chaîne JSON indiquant le nombre total de jetons.
Exemple de valeur renvoyée :
{"msg":"Total minted token for Token Id: digiCurr101 is 100 tokens.","quantity":100}
getNetTokens
Cette méthode renvoie le nombre total net de jetons disponibles dans le système pour un jeton spécifié. Le total net des jetons correspond à la quantité restante de jetons après leur gravure. Sous forme d'équation : jetons net = total des jetons minés - total des jetons brûlés. Si aucun jeton n'est brûlé, le nombre de jetons réseau est égal au nombre total de jetons extraits. Cette méthode ne peut être appelée que par Token Admin, Token Auditor, Org Admin ou Org Auditor.
@Validator(yup.string())
public async getNetTokens(token_id: string) {
	const token_asset = await this.getTokenObject(token_id);
	await this.Ctx.Auth.checkAuthorization('TOKEN.getNetTokens', 'TOKEN');
	const netTokens = await this.Ctx.Token.getNetTokens(token_asset);
	return {
		msg: `Net supply of token for Token Id: ${token_id} is ${netTokens} tokens.`,
		quantity: netTokens
	};
}
Paramètres :
  • token_id: string : ID du jeton.
Renvoie :
  • En cas de succès, une chaîne JSON indiquant le nombre net de jetons.
Exemple de valeur renvoyée :
{"msg":"Net supply of token for Token Id: digiCurr101 is 0 tokens.","quantity":0}

Méthodes de gestion du comportement des jetons - Comportement transférable

transferTokens
Cette méthode transfère les jetons de l'appelant vers un compte spécifié. L'appelant de la méthode doit avoir un compte. La quantité doit être comprise dans les valeurs décimales spécifiées par le paramètre decimal du comportement divisible dans le fichier de spécification. Cette méthode ne peut être appelée que par le AccountOwner du compte.
@Validator(yup.string(), yup.string(), yup.string(), yup.number().positive())
public async transferTokens(token_id: string, to_org_id: string, to_user_id: string, quantity: number) {
   const token_asset = await this.getTokenObject(token_id);
   const to_account_id = await this.Ctx.Account.generateAccountId(token_id, to_org_id, to_user_id);
   return await this.Ctx.Token.transfer(to_account_id, quantity, token_asset);
}
Paramètres :
  • token_id: string : ID du jeton.
  • to_org_id: string – ID du prestataire de services d'adhésion (MSP) du bénéficiaire (bénéficiaire) dans l'organisation actuelle.
  • to_user_id: string : nom d'utilisateur ou ID de courriel du destinataire.
  • quantity: number : nombre de sèmes à transférer.
Renvoie :
  • En cas de succès, un message contenant les détails des comptes payeur et bénéficiaire.
Exemple de valeur renvoyée :
{
    "msg": "Successfully transferred 400 tokens from account id: oaccount~digicur~682bb71de419602af74e3f226345ae308445ca51010737900c1d85f0376152df (Org-Id: Org1MSP, User-Id: user1) to account id: oaccount~digicur~682bb71de419602af74e3f226345ef308445ca51010737900c112435f676152df (Org-Id: Org1MSP, User-Id: user2) ",
}
bulkTransferTokens
Cette méthode transfère les jetons en masse du compte de l'appelant vers les comptes indiqués dans l'objet flow. Les quantités doivent être comprises dans les valeurs décimales spécifiées par le paramètre decimal du comportement divisible dans l'appelant de spécification file.The de cette méthode doivent avoir un compte déjà créé. Cette méthode ne peut être appelée que par le AccountOwner du compte.
@Validator(yup.string(), yup.array().of(yup.object()))
public async bulkTransferTokens(token_id: string, flow: object[]) {
     const token_asset = await this.getTokenObject(token_id);
     return await this.Ctx.Token.bulkTransfer(flow, token_asset);
}
Paramètres :
  • token_id: string : ID du jeton.
  • flow : object[] : tableau d'objets JSON indiquant des récepteurs et des quantités.
    • to_orgId: string – ID du prestataire de services d'adhésion (MSP) du destinataire dans l'organisation actuelle.
    • userId: string : nom d'utilisateur ou ID de courriel du destinataire.
    • quantity: number : nombre de sèmes à transférer.
    Vous indiquez le paramètre flow dans un format différent si vous utilisez Visual Studio Code par rapport à l'interface de ligne de commande ou à une collection Postman.
    Code Visual Studio:
    [
      { "to_org_id": "Org1MSP", "to_user_id": "user1", "quantity": 10 },
      { "to_org_id": "Org1MSP", "to_user_id": "user2", "quantity": 10 }
    ]
    
    CLI/Postman :
    "[{ \"to_org_id\": \"Org1MSP\", \"to_user_id\": \"user1\", \"quantity\": 10 }, { \"to_org_id\": \"Org1MSP\", \"to_user_id\": \"user2\", \"quantity\": 10 }]"
Renvoie :
  • Message indiquant le succès.
Exemple de valeur renvoyée :
{
    "msg": "Successfully transferred 20 tokens from Account Id           'oaccount~digicur~682bb71de419602af74e3f226345ae308445ca51010737900c1d85f0376152df' (Org-Id: Org1MSP, User-Id: admin).",
    "from_account_id": "oaccount~digicur~682bb71de419602af74e3f226345ae308445ca51010737900c1d85f0376152df",
    "sub_transactions": [
        {
            "to_account_id": "oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f",
            "amount": 10
        },
        {
            "to_account_id": "oaccount~digicur~38848e87296d67c8a90918f78cf55f9c9baab2cdc8c928535471aaa1210c706e",
            "amount": 10
        }
    ]
}
transferTokens
Cette méthode transfère les jetons de l'appelant vers un compte spécifié.
@Validator(yup.string(), yup.string(), yup.string(), yup.number().positive(), yup.object().nullable())
public async transferTokens(token_id: string, to_org_id: string, to_user_id: string, quantity: number, info_details?: InfoDetails) {
const token_asset = await this.getTokenObject(token_id);
const to_account_id = await this.Ctx.Account.generateAccountId(token_id, to_org_id, to_user_id);
return await this.Ctx.Token.transfer(to_account_id, quantity, token_asset, info_details);
}
Paramètres :
  • token_id: string : ID du jeton.
  • to_org_id: string – ID du prestataire de services d'adhésion (MSP) du bénéficiaire (bénéficiaire) dans l'organisation actuelle.
  • to_user_id: string : nom d'utilisateur ou ID de courriel du destinataire.
  • quantity: number : nombre de sèmes à transférer.
  • info_details: JSON : objet indiquant la catégorie (category) et la description (description) de la demande.

    Vous indiquez le paramètre info_details dans un format différent si vous utilisez Visual Studio Code par rapport à l'interface de ligne de commande ou à une collection Postman.

    Visual Studio Code : { "category": "category value", "description": "description value" }

    CLI / Postman : "{\"category\":\"category value\",\"description\":\"description value\"}"

Exemple de valeur renvoyée :
{
 msg: "Successfully transferred 100 tokens from account id: oaccount~95be539b4e1e4136dd86a806020c97a930909325340481b8fd88d339874fa699 (Org-Id: Org1MSP, User-Id: admin) to account id: oaccount~7yuijg39b4e1e4136dd86a806020c97a930909325340481b8fdhjklliugbv699 (Org-Id: Org1MSP, User-Id: user)",
}
bulkTransferTokens
Cette méthode transfère les jetons en masse du compte de l'appelant vers les comptes indiqués dans l'objet flow. Les quantités doivent être comprises dans les valeurs décimales spécifiées par le paramètre decimal du comportement divisible dans l'appelant de spécification file.The de cette méthode doivent avoir un compte déjà créé. Cette méthode ne peut être appelée que par le AccountOwner du compte.
@Validator(yup.string(), yup.array().of(yup.object()))
public async bulkTransferTokens(token_id: string, flow: object[]) {
     const token_asset = await this.getTokenObject(token_id);
     return await this.Ctx.Token.bulkTransfer(flow, token_asset);
}
Paramètres :
  • token_id: string : ID du jeton.
  • flow : object[] : tableau d'objets JSON indiquant des récepteurs et des quantités.
    • to_orgId: string – ID du prestataire de services d'adhésion (MSP) du destinataire dans l'organisation actuelle.
    • userId: string : nom d'utilisateur ou ID de courriel du destinataire.
    • quantity: number : nombre de sèmes à transférer.
    Vous indiquez le paramètre flow dans un format différent si vous utilisez Visual Studio Code par rapport à l'interface de ligne de commande ou à une collection Postman.
    Code Visual Studio:
    [
      { "to_org_id": "Org1MSP", "to_user_id": "user1", "quantity": 10 },
      { "to_org_id": "Org1MSP", "to_user_id": "user2", "quantity": 10 }
    ]
    
    CLI/Postman :
    "[{ \"to_org_id\": \"Org1MSP\", \"to_user_id\": \"user1\", \"quantity\": 10 }, { \"to_org_id\": \"Org1MSP\", \"to_user_id\": \"user2\", \"quantity\": 10 }]"
Renvoie :
  • Message indiquant le succès.
Exemple de valeur renvoyée :
{
    "msg": "Successfully transferred 20 tokens from Account Id           'oaccount~digicur~682bb71de419602af74e3f226345ae308445ca51010737900c1d85f0376152df' (Org-Id: Org1MSP, User-Id: admin).",
    "from_account_id": "oaccount~digicur~682bb71de419602af74e3f226345ae308445ca51010737900c1d85f0376152df",
    "sub_transactions": [
        {
            "to_account_id": "oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f",
            "amount": 10
        },
        {
            "to_account_id": "oaccount~digicur~38848e87296d67c8a90918f78cf55f9c9baab2cdc8c928535471aaa1210c706e",
            "amount": 10
        }
    ]
}

Méthodes de gestion du comportement des jetons - Comportement pouvant être conservé

holdTokens
Cette méthode crée un blocage pour le compte du propriétaire des jetons avec le compte to_account_id. Un compte notaire est spécifié, qui est chargé de terminer ou de lever le blocage. Lorsque la mise en suspens est créée, le solde de token spécifié du payeur est mis en suspens. Un solde bloqué ne peut pas être transféré tant que le blocage n'est pas terminé ou levé. Un compte doit déjà être créé pour l'appelant de cette méthode. Cette méthode ne peut être appelée que par le AccountOwner du compte.
@Validator(yup.string(), yup.string(), yup.string(), yup.string(), yup.string(), yup.string(), yup.number().positive(), yup.date())
public async holdTokens(
    token_id: string,
    operation_id: string,
    to_org_id: string,
    to_user_id: string,
    notary_org_id: string,
    notary_user_id: string,
    quantity: number,
    time_to_expiration: Date
) {
    const token_asset = await this.getTokenObject(token_id);
    const to_account_id = await this.Ctx.Account.generateAccountId(token_id, to_org_id, to_user_id);
    const notary_account_id = await this.Ctx.Account.generateAccountId(token_id, notary_org_id, notary_user_id);
    return await this.Ctx.Token.hold(operation_id, to_account_id, notary_account_id, quantity, time_to_expiration, token_asset);
}
Paramètres :
  • token_id: string : ID du jeton.
  • operation_id: string : ID unique permettant d'identifier l'opération de blocage. En général, cet ID est transmis par l'application client.
  • to_org_id: string – ID du prestataire de services d'adhésion (MSP) du destinataire dans l'organisation actuelle.
  • to_user_id: string : nom d'utilisateur ou ID de courriel du destinataire.
  • notary_org_id: string – ID du prestataire de services d'adhésion (MSP) du notaire dans l'organisation actuelle.
  • notary_user_id: string : nom d'utilisateur ou ID de courriel du notaire.
  • quantity: number : nombre de jetons à bloquer.
  • time_to_expiration : heure à laquelle le blocage expire. Spécifiez 0 pour un blocage permanent. Sinon, utilisez le format RFC-3339. Par exemple, 2021-06-02T12 :46 :06Z.
Renvoie :
  • En cas de succès, un message avec le compte de l'appelant et les détails du blocage.
Exemple de valeur renvoyée :
{
  "msg":"AccountId oaccount~digicur~682bb71de419602af74e3f226345ae308445ca51010737900c1d85f0376152df (Org-Id: Org1MSP , User-Id: admin) is   successfully holding 10 tokens"
}
executeHoldTokens
Cette méthode met fin à un blocage sur un jeton. Une quantité de jetons précédemment détenus par un propriétaire de jeton est transférée à un récepteur. Si la valeur quantity est inférieure à la valeur de blocage réelle, le montant restant est à nouveau disponible pour le propriétaire d'origine des jetons. Cette méthode ne peut être appelée que par l'ID AccountOwner avec le rôle notary pour l'ID d'opération indiqué. La mise en attente ne peut être effectuée que par le notaire.
@Validator(yup.string(), yup.string(), yup.number().positive())
public async executeHoldTokens(token_id: string, operation_id: string, quantity: number) {
    const token_asset = await this.getTokenObject(token_id);
    return await this.Ctx.Token.executeHold(operation_id, quantity, token_asset);
}
Paramètres :
  • token_id: string : ID du jeton.
  • operation_id: string : ID unique permettant d'identifier l'opération de blocage. En général, cet ID est transmis par l'application client.
  • quantity: number : nombre de jetons bloqués à transférer.
Renvoie :
  • En cas de succès, un message avec l'ID de compte de l'appelant et la quantité de la transaction.
Exemple de valeur renvoyée :
{
 "msg":"Account Id: oaccount~digicur~682bb71de419602af74e3f226345ae308445ca51010737900c1d85f0376152df (Org-Id: Org1MSP, User-Id: admin) is successfully executed '10' tokens from Operation Id 'opr_121'."
}
releaseHoldTokens
Cette méthode permet de bloquer les jetons. Le transfert n'est pas terminé et tous les jetons détenus sont à nouveau disponibles pour le propriétaire d'origine. Cette méthode peut être appelée par l'ID AccountOwner avec le rôle notary dans la limite de temps spécifiée ou par le payeur, le bénéficiaire ou le notaire après la limite de temps spécifiée.
@Validator(yup.string(), yup.string())
public async releaseHoldTokens(token_id: string, operation_id: string) {
    const token_asset = await this.getTokenObject(token_id);
    return await this.Ctx.Token.releaseHold(operation_id, token_asset);
}
Paramètres :
  • token_id: string : ID du jeton.
  • operation_id: string : ID unique permettant d'identifier l'opération de blocage. En général, cet ID est transmis par l'application client.
Renvoie :
  • En cas de succès, un message indiquant que le blocage a été levé.
Exemple de valeur renvoyée :
{
 "msg":"Successfully released '10' tokens from Operation Id 'opr_121' to Account Id: oaccount~digicur~682bb71de419602af74e3f226345ae308445ca51010737900c1d85f0376152df (Org-Id: Org1MSP, User-Id: user1)."
}
getOnHoldIds
Cette méthode renvoie la liste de tous les ID blocage pour un compte donné. Cette méthode peut être appelée par un élément Token Admin du code chaîne, un élément Org Admin de l'organisation indiquée ou l'élément AccountOwner du compte.
  @Validator(yup.string(), yup.string(), yup.string())
  public async getOnHoldIds(token_id: string, org_id: string, user_id: string) {
    const account_id = await this.Ctx.Account.generateAccountId(token_id, org_id, user_id);
    await this.Ctx.Auth.checkAuthorization("ACCOUNT.getOnHoldIds", "TOKEN", { account_id });
    return await this.Ctx.Account.getOnHoldIds(account_id);
  }
Paramètres :
  • token_id: string : ID du jeton.
  • org_id: string : ID du fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation actuelle.
  • user_id: string : nom d'utilisateur ou ID d'adresse électronique de l'utilisateur.
Renvoie :
  • En cas de succès, une liste JSON contenant des ID.
Exemple de valeur renvoyée :
{"msg":"Holding Ids are: ohold~digicur~digiCurr101~opr_121","holding_ids":["ohold~digicur~digiCurr101~opr_121"]}
getOnHoldDetailsWithOperationId
Cette méthode renvoie les détails de la transaction bloquée pour un ID d'opération et un jeton spécifiés. Cette méthode peut être appelée par n'importe qui.
@Validator(yup.string(), yup.string())
public async getOnHoldDetailsWithOperationId(token_id: string, operation_id: string) {
    return await this.Ctx.Hold.getOnHoldDetailsWithOperationId(token_id, operation_id);
}
Paramètres :
  • token_id: string : ID du jeton.
  • operation_id: string : ID unique permettant d'identifier l'opération de blocage. En général, cet ID est transmis par l'application client.
Renvoie :
  • En cas de succès, un objet JSON contient les propriétés suivantes :
  • holding_id : ID de blocage de la transaction.
  • operation_id: string : ID unique permettant d'identifier l'opération de blocage. En général, cet ID est transmis par l'application client.
  • from_account_id : ID de compte du propriétaire actuel des jetons bloqués.
  • to_account_id : ID de compte du destinataire.
  • notary_account_id : ID de compte du notaire.
  • token_id: string : ID du jeton enregistré.
  • quantity : nombre de jetons bloqués pour l'ID de mise en attente.
  • time_to_expiration : durée jusqu'à l'expiration du blocage.
Exemple de valeur renvoyée :
{
    "assetType": "ohold",
    "holding_id": "ohold~digicur~digiCurr101~opr_121",
    "operation_id": "opr_121",
    "token_name": "digicur",
    "from_account_id": "oaccount~digicur~682bb71de419602af74e3f226345ae308445ca51010737900c1d85f0376152df",
    "to_account_id": "oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f",
    "notary_account_id": "oaccount~digicur~38848e87296d67c8a90918f78cf55f9c9baab2cdc8c928535471aaa1210c706e",
    "token_id": "digiCurr101",
    "quantity": 10,
    "time_to_expiration": "2022-08-01T18:30:00.000Z"
}
getOnHoldBalanceWithOperationId
Cette méthode renvoie le solde de blocage pour un ID d'opération et un jeton spécifiés. Cette méthode peut être appelée par n'importe qui.
@Validator(yup.string(), yup.string())
public async getOnHoldBalanceWithOperationId(token_id: string, operation_id: string) {
    return await this.Ctx.Hold.getOnHoldBalanceWithOperationId(token_id, operation_id);
}
Paramètres :
  • token_id: string : ID du jeton.
  • operation_id: string : ID unique permettant d'identifier l'opération de blocage. En général, cet ID est transmis par l'application client.
Renvoie :
  • En cas de succès, une chaîne JSON indiquant le solde d'attente.
Exemple de valeur renvoyée :
{
	"msg": "Current Holding Balance of Operation 'opr_121' for token 'digiCurr101' is: 10",
	"holding_balance": 10
}
holdTokens
Cette méthode crée un blocage pour le compte du propriétaire des jetons avec le compte to_account_id.
@Validator(yup.string(), yup.string(), yup.string(), yup.string(), yup.string(), yup.string(), yup.number().positive(), yup.date(), yup.object().nullable())
  public async holdTokens( token_id: string, operation_id: string, to_org_id: string, to_user_id: string, notary_org_id: string, notary_user_id: string, quantity: number, time_to_expiration: Date, info_details?: InfoDetails) {
    const token_asset = await this.getTokenObject(token_id);
    const to_account_id = await this.Ctx.Account.generateAccountId(token_id, to_org_id, to_user_id);
    const notary_account_id = await this.Ctx.Account.generateAccountId(token_id, notary_org_id, notary_user_id);
    return await this.Ctx.Token.hold(operation_id, to_account_id, notary_account_id, quantity, time_to_expiration, token_asset, HoldOperationType.TRANSFER, info_details);
  }
Paramètres :
  • token_id: string : ID du jeton.
  • operation_id: string : ID unique permettant d'identifier l'opération de blocage. En général, cet ID est transmis par l'application client.
  • to_org_id: string – ID du prestataire de services d'adhésion (MSP) du destinataire dans l'organisation actuelle.
  • to_user_id: string : nom d'utilisateur ou ID de courriel du destinataire.
  • notary_org_id: string – ID du prestataire de services d'adhésion (MSP) du notaire dans l'organisation actuelle.
  • notary_user_id: string : nom d'utilisateur ou ID de courriel du notaire.
  • quantity: number : nombre de jetons à bloquer.
  • time_to_expiration : heure à laquelle le blocage expire. Spécifiez 0 pour un blocage permanent. Sinon, utilisez le format RFC-3339. Par exemple, 2021-06-02T12 :46 :06Z.
  • info_details: JSON : objet indiquant la catégorie (category) et la description (description) de la demande.

    Vous indiquez le paramètre info_details dans un format différent si vous utilisez Visual Studio Code par rapport à l'interface de ligne de commande ou à une collection Postman.

    Visual Studio Code : { "category": "category value", "description": "description value" }

    CLI / Postman : "{\"category\":\"category value\",\"description\":\"description value\"}"

Exemple de valeur renvoyée :
{
msg:
"AccountId oaccount~95be539b4e1e4136dd86a806020c97a930909325340481b8fd88d339874fa699 (Org-Id: Org1MSP, User-Id: admin) is successfully holding 100 tokens",
}
executeHoldTokens
Cette méthode met fin à un blocage sur un jeton. Une quantité de jetons précédemment détenus par un propriétaire de jeton est transférée à un récepteur. Si la valeur quantity est inférieure à la valeur de blocage réelle, le montant restant est à nouveau disponible pour le propriétaire d'origine des jetons. Cette méthode ne peut être appelée que par l'ID AccountOwner avec le rôle notary pour l'ID d'opération indiqué. La mise en attente ne peut être effectuée que par le notaire.
@Validator(yup.string(), yup.string(), yup.number().positive())
public async executeHoldTokens(token_id: string, operation_id: string, quantity: number) {
    const token_asset = await this.getTokenObject(token_id);
    return await this.Ctx.Token.executeHold(operation_id, quantity, token_asset);
}
Paramètres :
  • token_id: string : ID du jeton.
  • operation_id: string : ID unique permettant d'identifier l'opération de blocage. En général, cet ID est transmis par l'application client.
  • quantity: number : nombre de jetons bloqués à transférer.
Renvoie :
  • En cas de succès, un message avec l'ID de compte de l'appelant et la quantité de la transaction.
Exemple de valeur renvoyée :
{
 "msg":"Account Id: oaccount~digicur~682bb71de419602af74e3f226345ae308445ca51010737900c1d85f0376152df (Org-Id: Org1MSP, User-Id: admin) is successfully executed '10' tokens from Operation Id 'opr_121'."
}
releaseHoldTokens
Cette méthode permet de bloquer les jetons. Le transfert n'est pas terminé et tous les jetons détenus sont à nouveau disponibles pour le propriétaire d'origine. Cette méthode peut être appelée par l'ID AccountOwner avec le rôle notary dans la limite de temps spécifiée ou par le payeur, le bénéficiaire ou le notaire après la limite de temps spécifiée.
@Validator(yup.string(), yup.string())
public async releaseHoldTokens(token_id: string, operation_id: string) {
    const token_asset = await this.getTokenObject(token_id);
    return await this.Ctx.Token.releaseHold(operation_id, token_asset);
}
Paramètres :
  • token_id: string : ID du jeton.
  • operation_id: string : ID unique permettant d'identifier l'opération de blocage. En général, cet ID est transmis par l'application client.
Renvoie :
  • En cas de succès, un message indiquant que le blocage a été levé.
Exemple de valeur renvoyée :
{
 "msg":"Successfully released '10' tokens from Operation Id 'opr_121' to Account Id: oaccount~digicur~682bb71de419602af74e3f226345ae308445ca51010737900c1d85f0376152df (Org-Id: Org1MSP, User-Id: user1)."
}
getOnHoldIds
Cette méthode renvoie la liste de tous les ID blocage pour un compte donné. Cette méthode peut être appelée par une chaîne (Token Admin) ou une chaîne (Token Auditor) du code chaîne, une chaîne (Org Admin) ou une chaîne (Org Auditor) de l'organisation indiquée, ou par la chaîne (AccountOwner) du compte.
  @Validator(yup.string(), yup.string(), yup.string())
  public async getOnHoldIds(token_id: string, org_id: string, user_id: string) {
    const account_id = await this.Ctx.Account.generateAccountId(token_id, org_id, user_id);
    await this.Ctx.Auth.checkAuthorization("ACCOUNT.getOnHoldIds", "TOKEN", { account_id });
    return await this.Ctx.Account.getOnHoldIds(account_id);
  }
Paramètres :
  • token_id: string : ID du jeton.
  • org_id: string : ID du fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation actuelle.
  • user_id: string : nom d'utilisateur ou ID d'adresse électronique de l'utilisateur.
Renvoie :
  • En cas de succès, une liste JSON contenant des ID.
Exemple de valeur renvoyée :
{"msg":"Holding Ids are: ohold~digicur~digiCurr101~opr_121","holding_ids":["ohold~digicur~digiCurr101~opr_121"]}
getOnHoldDetailsWithOperationId
Cette méthode renvoie les détails de la transaction bloquée pour un ID d'opération et un jeton spécifiés. Cette méthode peut être appelée par une chaîne (Token Admin) ou une chaîne (Token Auditor) du code chaîne, ou par un participant à la transaction (expéditeur, destinataire, notaire).
@Validator(yup.string(), yup.string())
public async getOnHoldDetailsWithOperationId(token_id: string, operation_id: string) {
    return await this.Ctx.Hold.getOnHoldDetailsWithOperationId(token_id, operation_id);
}
Paramètres :
  • token_id: string : ID du jeton.
  • operation_id: string : ID unique permettant d'identifier l'opération de blocage. En général, cet ID est transmis par l'application client.
Renvoie :
  • En cas de succès, un objet JSON contient les propriétés suivantes :
  • holding_id : ID de blocage de la transaction.
  • operation_id: string : ID unique permettant d'identifier l'opération de blocage. En général, cet ID est transmis par l'application client.
  • from_account_id : ID de compte du propriétaire actuel des jetons bloqués.
  • to_account_id : ID de compte du destinataire.
  • notary_account_id : ID de compte du notaire.
  • token_id: string : ID du jeton enregistré.
  • quantity : nombre de jetons bloqués pour l'ID de mise en attente.
  • time_to_expiration : durée jusqu'à l'expiration du blocage.
Exemple de valeur renvoyée :
{
    "assetType": "ohold",
    "holding_id": "ohold~digicur~digiCurr101~opr_121",
    "operation_id": "opr_121",
    "token_name": "digicur",
    "from_account_id": "oaccount~digicur~682bb71de419602af74e3f226345ae308445ca51010737900c1d85f0376152df",
    "to_account_id": "oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f",
    "notary_account_id": "oaccount~digicur~38848e87296d67c8a90918f78cf55f9c9baab2cdc8c928535471aaa1210c706e",
    "token_id": "digiCurr101",
    "quantity": 10,
    "time_to_expiration": "2022-08-01T18:30:00.000Z"
}
getOnHoldBalanceWithOperationId
Cette méthode renvoie le solde de blocage pour un ID d'opération et un jeton spécifiés. Cette méthode peut être appelée par une chaîne (Token Admin) ou une chaîne (Token Auditor) du code chaîne, ou par un participant à la transaction (expéditeur, destinataire, notaire).
@Validator(yup.string(), yup.string())
public async getOnHoldBalanceWithOperationId(token_id: string, operation_id: string) {
    return await this.Ctx.Hold.getOnHoldBalanceWithOperationId(token_id, operation_id);
}
Paramètres :
  • token_id: string : ID du jeton.
  • operation_id: string : ID unique permettant d'identifier l'opération de blocage. En général, cet ID est transmis par l'application client.
Renvoie :
  • En cas de succès, une chaîne JSON indiquant le solde d'attente.
Exemple de valeur renvoyée :
{
	"msg": "Current Holding Balance of Operation 'opr_121' for token 'digiCurr101' is: 10",
	"holding_balance": 10
}

Méthodes de gestion du comportement des jetons - Comportement gravable

burnTokens
Cette méthode désactive, ou brûle, les jetons du compte de l'appelant de transaction. L'appelant de cette méthode doit avoir un compte et le rôle de brûleur. La quantité doit être comprise dans les valeurs décimales spécifiées par le paramètre decimal du comportement divisible dans le fichier de spécification. Cette méthode peut être appelée par le AccountOwner du compte avec le rôle de brûleur.
@Validator(yup.string(), yup.number().positive())
public async burnTokens(token_id: string, quantity: number) {
    const token_asset = await this.getTokenObject(token_id);
    return await this.Ctx.Token.burn(quantity, token_asset);
}
Paramètres :
  • token_id: string : ID du jeton.
  • quantity : nombre de jetons à brûler.
Renvoie :
  • En cas de succès, un message de succès indiquant la quantité de jetons brûlés et l'ID du compte.
Exemple de valeur renvoyée :
{
    "msg": "Successfully burned 10 tokens from account id: oaccount~digicur~682bb71de419602af74e3f226345ae308445ca51010737900c1d85f0376152df (Org-Id: Org1MSP, User-Id: admin)"
}
requestBurn
Cette méthode peut être appelée par un brûleur pour envoyer une demande au notaire du brûleur de détruire une quantité spécifiée de jetons, qui doit être inférieure ou égale à leur solde disponible. Lorsqu'une demande de gravure démarre, le montant spécifié est immédiatement déduit du solde disponible et ajouté au champ onhold_burn_balance. Si la demande est approuvée, les jetons sont brûlés. Si la demande est rejetée, les jetons sont renvoyés du champ onhold_burn_balance vers le solde disponible.
@Validator(yup.string(), yup.string(), yup.string(), yup.string(), yup.number().positive(), yup.date(), yup.object().nullable())

public async requestBurn( token_id: string, operation_id: string, notary_org_id: string, notary_user_id: string, quantity: number, time_to_expiration: Date, info_details?: InfoDetails ) {

const token_asset = await this.getTokenObject(token_id);
const notary_account_id = await this.Ctx.Account.generateAccountId(token_id, notary_org_id, notary_user_id);
return await this.Ctx.Token.hold(operation_id, null, notary_account_id, quantity, time_to_expiration, token_asset, HoldOperationType.BURN, null, description);
}
Paramètres :
  • token_id: string : ID du jeton à brûler.
  • operation_id: string : ID d'opération unique qui représente la demande de gravure.
  • notary_org_id: string – ID du prestataire de services d'adhésion (MSP) du notaire du brûleur qui traitera la demande.
  • notary_user_id: string : nom d'utilisateur ou ID de courriel du notaire du brûleur qui traitera la demande.
  • quantity: number : quantité de jetons à brûler.
  • time_to_expiration : heure après laquelle la demande de gravure expire et n'est plus valide.
  • info_details: JSON : objet indiquant la catégorie (category) et la description (description) de la demande.

    Vous indiquez le paramètre info_details dans un format différent si vous utilisez Visual Studio Code par rapport à l'interface de ligne de commande ou à une collection Postman.

    Visual Studio Code : { "category": "category value", "description": "description value" }

    CLI / Postman : "{\"category\":\"category value\",\"description\":\"description value\"}"

Exemple de valeur renvoyée :
{
msg:
"AccountId oaccount~95be539b4e1e4136dd86a806020c97a930909325340481b8fd88d339874fa699 (Org-Id: Org1MSP, User-Id: admin) has successfully submitted request to mint 100 tokens",
}
approveBurn
Cette méthode peut être appelée par un notaire brûleur pour approuver une demande de gravure.
@Validator(yup.string(), yup.string())
public async approveBurn(token_id: string, operation_id: string) {
const token_asset = await this.getTokenObject(token_id);
return await this.Ctx.Token.executeHold(operation_id, token_asset);
}
Paramètres :
  • token_id: string : ID du jeton à brûler.
  • operation_id: string : ID d'opération unique qui représente la demande de gravure.
Exemple de valeur renvoyée :
{
msg:
"Successfully burned 100 tokens from account id: oaccount~95be539b4e1e4136dd86a806020c97a930909325340481b8fd88d339874fa699 (Org-Id: Org1MSP, User-Id: admin)"
}
rejectBurn
Cette méthode peut être appelée par un notaire brûleur pour rejeter une demande de gravure.
@Validator(yup.string(), yup.string())
public async rejectBurn(token_id: string, operation_id: string) {
const token_asset = await this.getTokenObject(token_id);
return await this.Ctx.Token.releaseHold(operation_id, token_asset);
}
Paramètres :
  • token_id: string : ID du jeton à brûler.
  • operation_id: string : ID d'opération unique qui représente la demande de gravure.
Exemple de valeur renvoyée :
{
 msg: "Successfully rejected burn request with Operation Id 'operation1' to burn 100 tokens of token id token",
}
getAccountOnHoldBurnBalance
Cette méthode renvoie le solde de consommation en attente pour un utilisateur donné. Cette méthode ne peut être appelée que par Token Admin, Token Auditor, Org Admin, Org Auditor ou par le propriétaire du compte.
@GetMethod()
@Validator(yup.string(), yup.string(), yup.string())
public async getAccountOnHoldBurnBalance(token_id: string, org_id: string, user_id: string) {
  const account_id = await this.Ctx.Account.generateAccountId(token_id, org_id, user_id);
  await this.Ctx.Auth.checkAuthorization("ACCOUNT.getAccountOnHoldBurnBalance", "TOKEN", { account_id });
  return await this.Ctx.Account.getAccountOnHoldBurnBalance(account_id);
}
Paramètres :
  • token_id: string : ID du jeton à brûler.
  • org_id string : ID du fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation actuelle.
  • user_id string : nom d'utilisateur ou ID d'adresse électronique de l'utilisateur.
Exemple de valeur renvoyée :
{
  "msg": "Total On Hold Burning Balance is: 10",
  "onhold_burn_balance": 10
}
burnTokens
Cette méthode désactive, ou brûle, les jetons du compte de l'appelant de transaction.
@Validator(yup.string(), yup.number().positive(), yup.object().nullable())

public async burnTokens(token_id: string, quantity: number, info_details?: InfoDetails) {
const token_asset = await this.getTokenObject(token_id);
return await this.Ctx.Token.burn(quantity, token_asset, info_details);
}
Paramètres :
  • token_id: string : ID du jeton.
  • quantity : nombre de sèmes à brûler.
  • info_details: JSON : objet indiquant la catégorie (category) et la description (description) de la demande.

    Vous indiquez le paramètre info_details dans un format différent si vous utilisez Visual Studio Code par rapport à l'interface de ligne de commande ou à une collection Postman.

    Visual Studio Code : { "category": "category value", "description": "description value" }

    CLI / Postman : "{\"category\":\"category value\",\"description\":\"description value\"}"

Exemple de valeur renvoyée :
{
msg:
"Successfully burned 100 tokens from account id: oaccount~95be539b4e1e4136dd86a806020c97a930909325340481b8fd88d339874fa699 (Org-Id: Org1MSP, User-Id: admin)"
}

Méthodes personnalisées

Vous pouvez utiliser les méthodes SDK de jeton pour écrire des méthodes personnalisées pour votre application métier.

Pour éviter les doubles dépenses, ne combinez pas plusieurs fonctions asynchrones qui fonctionnent sur les mêmes paires clé-valeur dans la base de données d'état. Utilisez plutôt la méthode bulkTransferTokens pour effectuer plusieurs transferts dans une seule méthode.

L'exemple suivant montre comment utiliser des méthodes SDK de jeton dans des méthodes personnalisées. Lorsque la méthode buyTicket est appelée, elle transfère 20 jetons du compte de l'appelant vers le compte du vendeur et renvoie le message de transaction du transfert.

@Validator(yup.string(), yup.string(), yup.string(), yup.string(), yup.string())
public async buyTicket(token_id: string, seller_org_id: string, seller_user_id: string) {
	const token = await this.getTokenObject(token_id);

	/**
	* The following method this.Ctx.Account.generateAccountId(token_id, seller_org_id, seller_user_id) generates account id of the seller.
	*/
	const seller_account_id = await this.Ctx.Account.generateAccountId(token_id, seller_org_id, seller_user_id);

	/**
	* The following method this.Ctx.Token.transfer(seller_account_id, 20, token) transfers the quantity 20 from caller's
	* account & to seller's account.
	*/
	const transaction = await this.Ctx.Token.transfer(seller_account_id, 20, token);

	return transaction;
}

Si vous utilisez plusieurs méthodes SDK de jeton dans une méthode personnalisée, n'utilisez pas de méthodes qui affecteront les mêmes paires clé-valeur dans la base de données d'état. L'exemple suivant montre la méthode incorrecte pour effectuer plusieurs transferts :

@Validator(yup.string(), yup.string(), yup.string(), yup.string(), yup.string())
public async sendTokens(token_id: string, user1_org_id: string, user1_user_id: string, user2_org_id: string, user2_user_id: string) {
    const token = await this.getTokenObject(token_id);
    const user1_account_id = await Account.generateAccountId(token_id, user1_org_id, user1_user_id);
    const user2_account_id = await Account.generateAccountId(token_id, user2_org_id, user2_user_id);
    await token.transfer(user1_account_id, 20);
    await token.transfer(user2_account_id, 30);
}

Utilisez plutôt la méthode bulkTransferTokens pour effectuer un transfert vers plusieurs comptes à partir du compte de l'appelant, comme indiqué dans le fragment de code suivant.

bulkTransferTokens(token_id: string, flow: object[])

Remarques :

Si vous utilisez plusieurs méthodes SDK de jeton dans une méthode personnalisée qui peut affecter les mêmes paires clé-valeur dans la base de données d'état, activez l'optimisation MVCC pour les codes chaîne de jeton. Pour plus d'informations, voir Optimisation MVCC.

Méthodes SDK de jeton

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

Le kit SDK de jeton fournit une fonction de contrôle d'accès. Certaines méthodes peuvent être appelées uniquement par un élément Token Admin, Org Admin ou AccountOwner du jeton. Vous pouvez utiliser cette fonctionnalité pour vous assurer que les opérations sont effectuées uniquement par les utilisateurs prévus. Tout accès non autorisé entraîne une erreur. Pour utiliser la fonction de contrôle d'accès, importez la classe Authorization à partir du module ../lib/auth.
import { Authorization } from '../lib/auth';
addAdmin
Cette méthode ajoute un utilisateur en tant que Token Admin du code chaîne de jeton.
Ctx.Admin.addAdmin(org_id: string, user_id: string)
Paramètres :
  • user_id : nom d'utilisateur ou ID d'adresse électronique de l'utilisateur.
  • org_id : ID du fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation réseau actuelle.
Renvoie :
  • En cas de réussite, message de promesse avec un objet JSON qui répertorie les détails de l'utilisateur ajouté en tant que Token Admin du code chaîne de jeton. En cas d'erreur, rejet avec un message d'erreur.
Exemple de valeur renvoyée :
{
    "msg": "Successfully added Admin (Org_Id: Org1MSP, User_Id: user1)"
}
removeAdmin
Cette méthode enlève un utilisateur en tant qu'utilisateur Token Admin du code chaîne de jeton.
Ctx.Admin.removeAdmin(org_id: string, user_id: string)
Paramètres :
  • user_id : nom d'utilisateur ou ID d'adresse électronique de l'utilisateur.
  • org_id : ID du fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation réseau actuelle.
Renvoie :
  • En cas de réussite, message de promesse avec un objet JSON qui répertorie les détails de l'utilisateur qui n'est plus un Token Admin du code chaîne de jeton. En cas d'erreur, rejet avec un message d'erreur.
Exemple de valeur renvoyée :
{
    "msg": "Successfully removed Admin (Org_Id: Org1MSP, User_Id: user1)"
}
isUserTokenAdmin
Cette méthode renvoie la valeur booléenne true si l'appelant de la fonction est un Token Admin. Sinon, la méthode renvoie false.
Ctx.Auth.isUserTokenAdmin()
Paramètres :
  • user_id : nom d'utilisateur ou ID d'adresse électronique de l'utilisateur.
  • org_id : ID du fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation réseau actuelle.
Renvoie :
  • Une réponse booléenne et un message d'erreur si une erreur est détectée.
getAllAdmins
Cette méthode renvoie la liste de tous les utilisateurs qui sont un Token Admin du code chaîne de jeton.
Ctx.Admin.getAllAdmins()
Paramètres :
  • Aucun élément
Renvoie :
  • En cas de réussite, une promesse avec un objet JSON qui répertorie les détails pour tous les utilisateurs qui sont un Token Admin du code chaîne de jeton. En cas d'erreur, rejet avec un message d'erreur.
Exemple de valeur renvoyée :
{
    "admins": [
        {
            "orgId": "Org1MSP",
            "userId": "admin"
        }
    ]
}
checkAuthorization
Utilisez cette méthode pour ajouter une vérification de contrôle d'accès à une opération. Certaines méthodes de jeton peuvent être exécutées uniquement par un é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.
export const TOKENACCESS = {
  ADMIN: {
    isUserTokenAdmin: ["Admin", "OrgAdmin"],
    addTokenAdmin: ["Admin"],
    removeTokenAdmin: ["Admin"],
    getAllAdmins: ["Admin", "OrgAdmin"],
    addOrgAdmin: ["Admin", "OrgAdminForOrgId"],
    removeOrgAdmin: ["Admin", "OrgAdminForOrgId"],
    getOrgAdmins: ["Admin", "OrgAdmin"],
  },
  TOKEN: {
    save: ["Admin"],
    getAllTokens: ["Admin", "OrgAdmin"],
    get: ["Admin", "OrgAdmin"],
    update: ["Admin"],
    getDecimals: ["Admin", "OrgAdmin"],
    getTokensByName: ["Admin", "OrgAdmin"],
    addRoleMember: ["Admin", "OrgAdminRoleCheck"],
    removeRoleMember: ["Admin", "OrgAdminRoleCheck"],
    isInRole: ["Admin", "OrgAdminForAccountId", "AccountOwner"],
    getTotalMintedTokens: ["Admin", "OrgAdmin"],
    getNetTokens: ["Admin", "OrgAdmin"],
    getTokenHistory: ["Admin", "OrgAdmin"],
  },
  ROLE: {
    getAccountsByRole: ["Admin"],
    getOrgAccountsByRole: ["Admin", "OrgAdminForOrgId"],
    getUsersByRole: ["Admin"],
    getOrgUsersByRole: ["Admin", "OrgAdminForOrgId"],
  },
  TRANSACTION: {
    deleteTransactions: ["Admin"],
  },ACCOUNT: {
    createAccount: ["Admin", "OrgAdminForOrgId"],
    associateToken: ["Admin", "OrgAdminForAccountId"],
    getAllAccounts: ["Admin"],
    getAllOrgAccounts: ["Admin", "OrgAdminForOrgId"],
    getAccountsByUser: ["Admin", "OrgAdminForOrgId", "MultipleAccountOwner"],
    getAccount: ["Admin", "OrgAdminForAccountId", "AccountOwner"],
    history: ["Admin", "AccountOwner"],
    getAccountTransactionHistory: ["Admin", "OrgAdminForAccountId", "AccountOwner"],
    getAccountTransactionHistoryWithFilters: ["Admin", "OrgAdminForAccountId", "AccountOwner"],
    getSubTransactionsById: ["Admin", "TransactionInvoker"],
    getSubTransactionsByIdWithFilters: ["Admin", "TransactionInvoker"],
    getAccountBalance: ["Admin", "OrgAdminForAccountId", "AccountOwner"],
    getAccountOnHoldBalance: ["Admin", "OrgAdminForAccountId", "AccountOwner"],
    getOnHoldIds: ["Admin", "OrgAdminForAccountId", "AccountOwner"],
    getConversionHistory: ["Admin", "OrgAdminForAccountId", "AccountOwner"],
  },
  ACCOUNT_STATUS: {
    get: ["Admin", "OrgAdminForAccountId", "AccountOwner"],
    history: ["Admin", "OrgAdminForAccountId", "AccountOwner"],
    activateAccount: ["Admin", "OrgAdminForOrgId"],
    suspendAccount: ["Admin", "OrgAdminForOrgId"],
    deleteAccount: ["Admin", "OrgAdminForOrgId"],
  },
  TOKEN_CONVERSION: {
    initializeExchangePoolUser: ["Admin"],
    addConversionRate: ["Admin"],
    updateConversionRate: ["Admin"],
    getConversionRate: ["Admin", "OrgAdmin", "AnyAccountOwner"],
    getConversionRateHistory: ["Admin", "OrgAdmin", "AnyAccountOwner"],
    tokenConversion: ["Admin", "AnyAccountOwner"],
    getExchangePoolUser: ["Admin"],
  },
}
await this.Ctx.Auth.checkAuthorization(<parameters>);
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.
addOrgAdmin
Cette méthode ajoute un utilisateur en tant qu'utilisateur Org Admin de l'organisation.
Ctx.Admin.addOrgAdmin(org_id, user_id)
Paramètres :
  • org_id: string : ID du fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation actuelle.
  • user_id: 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é ajouté en tant que Org Admin de l'organisation.
Exemple de valeur renvoyée :
{
    "msg": "Successfully added Org Admin (Org_Id: Org1MSP, User_Id: orgAdmin)"
}
removeOrgAdmin
Cette méthode supprime un utilisateur en tant qu'utilisateur Org Admin de l'organisation.
Ctx.Admin.removeOrgAdmin(org_id, user_id)
Paramètres :
  • org_id: string : ID du fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation actuelle.
  • user_id: 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 Org Admin de l'organisation.
Exemple de valeur renvoyée :
{
  "msg": "Successfully removed Org Admin (Org_Id Org1MSP User_Id orgAdmin)"
}
getOrgAdmins
Cette méthode renvoie la liste de tous les utilisateurs qui sont un Org Admin d'une organisation.
Ctx.Admin.getAllOrgAdmins()
Paramètres :
  • Aucun élément
Renvoie :
  • En cas de réussite, tableau au format JSON contenant des objets orgId et userId.
Exemple de valeur renvoyée :
{
    "admins": [
        {
            "org_id": "Org1MSP",
            "user_id": "orgadmin"
        },
        {
            "org_id": "Org1MSP",
            "user_id": "orgadmin1"
        },
        {
            "org_id": "Org1MSP",
            "user_id": "orgadmin2"
        }
    ]
}
addAdmin
Cette méthode ajoute un utilisateur en tant que Token Admin du code chaîne de jeton.
Ctx.Admin.addAdmin(org_id: string, user_id: string)
Paramètres :
  • user_id : nom d'utilisateur ou ID d'adresse électronique de l'utilisateur.
  • org_id : ID du fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation réseau actuelle.
Renvoie :
  • En cas de réussite, message de promesse avec un objet JSON qui répertorie les détails de l'utilisateur ajouté en tant que Token Admin du code chaîne de jeton. En cas d'erreur, rejet avec un message d'erreur.
Exemple de valeur renvoyée :
{
    "msg": "Successfully added Admin (Org_Id: Org1MSP, User_Id: user1)"
}
removeAdmin
Cette méthode enlève un utilisateur en tant qu'utilisateur Token Admin du code chaîne de jeton.
Ctx.Admin.removeAdmin(org_id: string, user_id: string)
Paramètres :
  • user_id : nom d'utilisateur ou ID d'adresse électronique de l'utilisateur.
  • org_id : ID du fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation réseau actuelle.
Renvoie :
  • En cas de réussite, message de promesse avec un objet JSON qui répertorie les détails de l'utilisateur qui n'est plus un Token Admin du code chaîne de jeton. En cas d'erreur, rejet avec un message d'erreur.
Exemple de valeur renvoyée :
{
    "msg": "Successfully removed Admin (Org_Id: Org1MSP, User_Id: user1)"
}
isUserTokenAdmin
Cette méthode renvoie la valeur booléenne true si l'appelant de la fonction est un Token Admin. Sinon, la méthode renvoie false.
Ctx.Auth.isUserTokenAdmin()
Paramètres :
  • user_id : nom d'utilisateur ou ID d'adresse électronique de l'utilisateur.
  • org_id : ID du fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation réseau actuelle.
Renvoie :
  • Une réponse booléenne et un message d'erreur si une erreur est détectée.
getAllAdmins
Cette méthode renvoie la liste de tous les utilisateurs qui sont un Token Admin du code chaîne de jeton.
Ctx.Admin.getAllAdmins()
Paramètres :
  • Aucun élément
Renvoie :
  • En cas de réussite, une promesse avec un objet JSON qui répertorie les détails pour tous les utilisateurs qui sont un Token Admin du code chaîne de jeton. En cas d'erreur, rejet avec un message d'erreur.
Exemple de valeur renvoyée :
{
    "admins": [
        {
            "orgId": "Org1MSP",
            "userId": "admin"
        }
    ]
}
checkAuthorization
Utilisez cette méthode pour ajouter une vérification de contrôle d'accès à une opération. Certaines méthodes de jeton peuvent être exécutées uniquement par un é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.
export const TOKENACCESS = {
  ADMIN: {
    isUserTokenAdmin: ["Admin", "OrgAdmin"],
    addTokenAdmin: ["Admin"],
    removeTokenAdmin: ["Admin"],
    getAllAdmins: ["Admin", "OrgAdmin"],
    addOrgAdmin: ["Admin", "OrgAdminForOrgId"],
    removeOrgAdmin: ["Admin", "OrgAdminForOrgId"],
    getOrgAdmins: ["Admin", "OrgAdmin"],
  },
  TOKEN: {
    save: ["Admin"],
    getAllTokens: ["Admin", "OrgAdmin"],
    get: ["Admin", "OrgAdmin"],
    update: ["Admin"],
    getDecimals: ["Admin", "OrgAdmin"],
    getTokensByName: ["Admin", "OrgAdmin"],
    addRoleMember: ["Admin", "OrgAdminRoleCheck"],
    removeRoleMember: ["Admin", "OrgAdminRoleCheck"],
    isInRole: ["Admin", "OrgAdminForAccountId", "AccountOwner"],
    getTotalMintedTokens: ["Admin", "OrgAdmin"],
    getNetTokens: ["Admin", "OrgAdmin"],
    getTokenHistory: ["Admin", "OrgAdmin"],
  },
  ROLE: {
    getAccountsByRole: ["Admin"],
    getOrgAccountsByRole: ["Admin", "OrgAdminForOrgId"],
    getUsersByRole: ["Admin"],
    getOrgUsersByRole: ["Admin", "OrgAdminForOrgId"],
  },
  TRANSACTION: {
    deleteTransactions: ["Admin"],
  },ACCOUNT: {
    createAccount: ["Admin", "OrgAdminForOrgId"],
    associateToken: ["Admin", "OrgAdminForAccountId"],
    getAllAccounts: ["Admin"],
    getAllOrgAccounts: ["Admin", "OrgAdminForOrgId"],
    getAccountsByUser: ["Admin", "OrgAdminForOrgId", "MultipleAccountOwner"],
    getAccount: ["Admin", "OrgAdminForAccountId", "AccountOwner"],
    history: ["Admin", "AccountOwner"],
    getAccountTransactionHistory: ["Admin", "OrgAdminForAccountId", "AccountOwner"],
    getAccountTransactionHistoryWithFilters: ["Admin", "OrgAdminForAccountId", "AccountOwner"],
    getSubTransactionsById: ["Admin", "TransactionInvoker"],
    getSubTransactionsByIdWithFilters: ["Admin", "TransactionInvoker"],
    getAccountBalance: ["Admin", "OrgAdminForAccountId", "AccountOwner"],
    getAccountOnHoldBalance: ["Admin", "OrgAdminForAccountId", "AccountOwner"],
    getOnHoldIds: ["Admin", "OrgAdminForAccountId", "AccountOwner"],
    getConversionHistory: ["Admin", "OrgAdminForAccountId", "AccountOwner"],
  },
  ACCOUNT_STATUS: {
    get: ["Admin", "OrgAdminForAccountId", "AccountOwner"],
    history: ["Admin", "OrgAdminForAccountId", "AccountOwner"],
    activateAccount: ["Admin", "OrgAdminForOrgId"],
    suspendAccount: ["Admin", "OrgAdminForOrgId"],
    deleteAccount: ["Admin", "OrgAdminForOrgId"],
  },
  TOKEN_CONVERSION: {
    initializeExchangePoolUser: ["Admin"],
    addConversionRate: ["Admin"],
    updateConversionRate: ["Admin"],
    getConversionRate: ["Admin", "OrgAdmin", "AnyAccountOwner"],
    getConversionRateHistory: ["Admin", "OrgAdmin", "AnyAccountOwner"],
    tokenConversion: ["Admin", "AnyAccountOwner"],
    getExchangePoolUser: ["Admin"],
  },
}
await this.Ctx.Auth.checkAuthorization(<parameters>);
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.
addOrgAdmin
Cette méthode ajoute un utilisateur en tant qu'utilisateur Org Admin de l'organisation.
Ctx.Admin.addOrgAdmin(org_id, user_id)
Paramètres :
  • org_id: string : ID du fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation actuelle.
  • user_id: 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é ajouté en tant que Org Admin de l'organisation.
Exemple de valeur renvoyée :
{
    "msg": "Successfully added Org Admin (Org_Id: Org1MSP, User_Id: orgAdmin)"
}
removeOrgAdmin
Cette méthode supprime un utilisateur en tant qu'utilisateur Org Admin de l'organisation.
Ctx.Admin.removeOrgAdmin(org_id, user_id)
Paramètres :
  • org_id: string : ID du fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation actuelle.
  • user_id: 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 Org Admin de l'organisation.
Exemple de valeur renvoyée :
{
  "msg": "Successfully removed Org Admin (Org_Id Org1MSP User_Id orgAdmin)"
}
getOrgAdmins
Cette méthode renvoie la liste de tous les utilisateurs qui sont un Org Admin d'une organisation.
Ctx.Admin.getAllOrgAdmins()
Paramètres :
  • Aucun élément
Renvoie :
  • En cas de réussite, tableau au format JSON contenant des objets orgId et userId.
Exemple de valeur renvoyée :
{
    "admins": [
        {
            "org_id": "Org1MSP",
            "user_id": "orgadmin"
        },
        {
            "org_id": "Org1MSP",
            "user_id": "orgadmin1"
        },
        {
            "org_id": "Org1MSP",
            "user_id": "orgadmin2"
        }
    ]
}
addTokenAuditor
Cette méthode ajoute un utilisateur en tant que Token Auditor du code chaîne.
this.Ctx.Admin.addTokenAuditor(org_id, user_id)
Paramètres :
  • org_id: string : ID du fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation actuelle.
  • user_id: 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 Auditor du code chaîne.
Exemple de valeur renvoyée :
{
    "returnCode": "Success",
    "error": "",
    "result": {
        "txid": "cd81f6c4c9e7c18ece357dbf5c139ef66ef2d6566be3b14de5f6d0a3fd4bb2f0",
        "payload": {
            "msg": "Successfully added Token Auditor (Org_Id: CB, User_Id: cb)"
        },
        "encode": "JSON",
        "sourceURL": "cb-oabcs1-bom.blockchain.ocp.example.com:20009",
        "blockNumber": 196
    }
}
removeTokenAuditor
Cette méthode enlève un utilisateur en tant qu'élément Token Auditor du code chaîne.
this.Ctx.Admin.removeTokenAuditor(org_id, user_id)
Paramètres :
  • org_id: string : ID du fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation actuelle.
  • user_id: 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 Auditor du code chaîne.
Exemple de valeur renvoyée :
{
    "returnCode": "Success",
    "error": "",
    "result": {
        "txid": "a886a6040fbc76374a3c78c89ab0ffc9f7b8391cc5239b169bf3b878cf40c67b",
        "payload": {
            "msg": "Successfully removed Token Auditor (Org_Id: CB, User_Id: cb)"
        },
        "encode": "JSON",
        "sourceURL": "cb-oabcs1-bom.blockchain.ocp.example.com:20010",
        "blockNumber": 219
    }
}
getTokenAuditors
Cette méthode renvoie l'ensemble des éléments Token Auditors du code chaîne.
this.Ctx.Admin.getAllTokenAuditors()
Exemple de valeur renvoyée :
{
    "returnCode": "Success",
    "error": "",
    "result": {
        "payload": {
            "auditors": [
                {
                    "org_id": "CB",
                    "user_id": "auditor_user_cb"
                }
            ]
        },
        "encode": "JSON"
    }
}
addOrgAuditor
Cette méthode ajoute un utilisateur en tant que Org Auditor du code chaîne.
this.Ctx.Admin.addOrgAuditor(org_id, user_id)
Paramètres :
  • org_id: string : ID du fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation actuelle.
  • user_id: 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 Org Auditor du code chaîne.
Exemple de valeur renvoyée :
{
    "returnCode": "Success",
    "error": "",
    "result": {
        "txid": "44bbad35a1478cb714e32f7cfd551897868a203520aab9cea5771d3aadc1cf03",
        "payload": {
            "msg": "Successfully added Org Auditor (Org_Id: CB, User_Id: cb)"
        },
        "encode": "JSON",
        "sourceURL": "cb-oabcs1-bom.blockchain.ocp.example.com:20009",
        "blockNumber": 198
    }
}
removeOrgAuditor
Cette méthode enlève un utilisateur en tant qu'élément Org Auditor du code chaîne.
this.Ctx.Admin.removeOrgAuditor(org_id, user_id)
Paramètres :
  • org_id: string : ID du fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation actuelle.
  • user_id: 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 Org Auditor du code chaîne.
Exemple de valeur renvoyée :
{
    "returnCode": "Success",
    "error": "",
    "result": {
        "txid": "c3bc720461004a53b37c68d4bb264858b88d980bc093a0a3ebb62a32974fb306",
        "payload": {
            "msg": "Successfully removed Org Auditor (Org_Id: CB, User_Id: cb)"
        },
        "encode": "JSON",
        "sourceURL": "cb-oabcs1-bom.blockchain.ocp.example.com:20010",
        "blockNumber": 221
    }
}
getOrgAuditors
Cette méthode renvoie l'ensemble des éléments Org Auditors du code chaîne.
this.Ctx.Admin.getAllOrgAuditors()
Exemple de valeur renvoyée :
{
    "returnCode": "Success",
    "error": "",
    "result": {
        "payload": {
            "auditors": [
                {
                    "org_id": "FI1",
                    "user_id": "auditor_user_fi1"
                },
                {
                    "org_id": "FI2",
                    "user_id": "auditor_user_fi2"
                }
            ]
        },
        "encode": "JSON"
    }
}

Méthodes de gestion de la configuration des jetons

save
Cette méthode crée un jeton et enregistre ses propriétés dans la base de données d'état.
Ctx.Token.save(token: <Instance of Token Class>,extraMetadata?:any)
Paramètres :
  • token: <Instance of Token Class> : ressource de jeton sur laquelle opérer.
Renvoie :
  • En cas de succès, message de promesse avec détails de jeton. En cas d'erreur, rejet avec un message d'erreur.
Exemple de valeur renvoyée :
{
   "assetType":"otoken",
   "token_id":"digiCurr101",
   "token_name":"digicur",
   "token_type":"fungible",
   "behaviors":[
      "divisible",
      "mintable",
      "transferable",
      "burnable",
      "roles"
   ],
   "roles":{
      "minter_role_name":"minter"
   },
   "mintable":{
      "max_mint_quantity":1000
   },
   "divisible":{
      "decimal":2
   },
   "currency_name":"DOLLAR",
   "token_to_currency_ratio":1
}
update
Cette méthode met à jour les propriétés de jeton. Une fois la ressource de jeton créée, vous mettez à jour uniquement la valeur token_desc et ses propriétés personnalisées.
Ctx.Token.update(token: <Instance of Token Class>)
Paramètres :
  • token: <Instance of Token Class> : ressource de jeton sur laquelle opérer.
Renvoie :
  • En cas de succès, message de promesse avec détails de jeton. En cas d'erreur, rejet avec un message d'erreur.
Exemple de valeur renvoyée :
{
   "assetType":"otoken",
   "token_id":"digiCurr101",
   "token_name":"digicur",
   "token_desc":"Digital Currency equiv of dollar",
   "token_type":"fungible",
   "behaviors":[
      "divisible",
      "mintable",
      "transferable",
      "burnable",
      "roles"
   ],
   "roles":{
      "minter_role_name":"minter"
   },
   "mintable":{
      "max_mint_quantity":1000
   },
   "divisible":{
      "decimal":2
   },
   "currency_name":"DOLLAR",
   "token_to_currency_ratio":1
}
getTokenDecimals
Cette méthode renvoie le nombre de décimales disponibles pour un jeton fractionnaire. Si le comportement divisible n'est pas indiqué, la valeur par défaut est 0.
Ctx.Token.getTokenDecimals(token_id: string)
Paramètres :
  • token_id: string : ID du jeton.
Renvoie :
  • En cas de succès, les décimales du jeton, dans le type de données numérique. En cas d'erreur, un message d'erreur s'affiche.
Exemple de valeur renvoyée :
1
get
Cette méthode renvoie un objet de jeton s'il est présent dans la base de données d'état.
Ctx.Token.get(token_id: string)
Paramètres :
  • token_id: string : ID du jeton à renvoyer.
Renvoie :
  • En cas de succès, une promesse avec la représentation JSON du jeton. En cas d'erreur, rejet avec un message d'erreur.
Exemple de valeur renvoyée :
{
    "assetType": "otoken",
    "token_id": "token1",
    "token_name": "account",
    "token_desc": "Token 1",
    "token_type": "fungible",
    "behaviors": [
        "divisible",
        "mintable",
        "transferable",
        "burnable",
        "holdable",
        "roles"
    ],
    "roles": {
        "minter_role_name": "minter",
        "burner_role_name": "burner",
        "notary_role_name": "notary"
    },
    "mintable": {
        "max_mint_quantity": 20000
    },
    "divisible": {
        "decimal": 1
    },
    "token_to_currency_ratio": 2,
    "currency_representation": "EURO"
}
history
Cette méthode renvoie l'historique du jeton spécifié.
Ctx.Token.history(tokenId)
Paramètres :
  • tokenId: string : ID du jeton.
Renvoie :
  • En cas de réussite, promesse avec tableau des détails de l'historique du compte pour le jeton spécifié. En cas d'erreur, rejet avec un message d'erreur.
Exemple de valeur renvoyée :
[
    {
        "trxId": "0d75f09446a60088afb948c6aca046e261fddcd43df416076201cdc5565f1a35",
        "timeStamp": "2023-09-01T16:48:41.000Z",
        "value": {
            "assetType": "otoken",
            "token_id": "token",
            "token_name": "fiatmoneytok",
            "token_desc": "updatedDesc",
            "token_standard": "ttf+",
            "token_type": "fungible",
            "token_unit": "fractional",
            "behaviors": [
                "divisible",
                "mintable",
                "transferable",
                "burnable",
                "roles"
            ],
            "roles": {
                "minter_role_name": "minter"
            },
            "mintable": {
                "max_mint_quantity": 1000
            },
            "divisible": {
                "decimal": 2
            }
        }
    },
    {
        "trxId": "3666344878b043b65d5b821cc79c042ba52aec467618800df5cf14eac69f72fa",
        "timeStamp": "2023-08-31T20:24:55.000Z",
        "value": {
            "assetType": "otoken",
            "token_id": "token",
            "token_name": "fiatmoneytok",
            "token_standard": "ttf+",
            "token_type": "fungible",
            "token_unit": "fractional",
            "behaviors": [
                "divisible",
                "mintable",
                "transferable",
                "burnable",
                "roles"
            ],
            "roles": {
                "minter_role_name": "minter"
            },
            "mintable": {
                "max_mint_quantity": 1000
            },
            "divisible": {
                "decimal": 2
            }
        }
    }
]
getAllTokens
Cette méthode renvoie toutes les ressources de jeton enregistrées dans la base de données d'état. 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 Oracle Blockchain Platform distant.
Ctx.Token.getAllTokens()
Paramètres :
  • Aucun élément
Renvoie :
  • En cas de succès, il renvoie une promesse avec tous les actifs de jeton. En cas d'erreur, un message d'erreur est renvoyé.
Exemple de valeur renvoyée :
{
    "returnCode": "Success",
    "error": "",
    "result": {
        "txid": "98e0a0a115803d25b843d630e6b23c435a192a03eb0a301fc9375f05da49a8b2",
        "payload": [
            {
                "key": "token1",
                "valueJson": {
                    "assetType": "otoken",
                    "token_id": "token1",
                    "token_name": "vtok",
                    "token_type": "fungible",
                    "behaviours": [
                        "divisible",
                        "mintable",
                        "transferable",
                        "burnable",
                        "holdable",
                        "roles"
                    ],
                    "roles": {
                        "burner_role_name": "burner",
                        "notary_role_name": "notary"
                    },
                    "mintable": {
                        "max_mint_quantity": 0
                    },
                    "divisible": {
                        "decimal": 1
                    }
                }
            }
        ],
        "encode": "JSON"
    }
}
getTokensByName
Cette méthode renvoie toutes les ressources de jeton portant le nom indiqué. 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 Oracle Blockchain Platform distant.
Ctx.Token.getTokensByName(token_name: string)
Paramètres :
  • token_name: string : nom du jeton, qui correspond à la propriété Token_name du modèle. La valeur est le nom de classe du jeton.
Renvoie :
  • Elle renvoie un tableau de toutes les ressources de jeton du nom indiqué, au format JSON.
Exemple de valeur renvoyée :
{
    "returnCode": "Success",
    "error": "",
    "result": {
        "txid": "98e0a0a115803d25b843d630e6b23c435a192a03eb0a301fc9375f05da49a8b2",
        "payload": [
            {
                "key": "token1",
                "valueJson": {
                    "assetType": "otoken",
                    "token_id": "token1",
                    "token_name": "vtok",
                    "token_type": "fungible",
                    "behaviours": [
                        "divisible",
                        "mintable",
                        "transferable",
                        "burnable",
                        "holdable",
                        "roles"
                    ],
                    "roles": {
                        "burner_role_name": "burner",
                        "notary_role_name": "notary"
                    },
                    "mintable": {
                        "max_mint_quantity": 0
                    },
                    "divisible": {
                        "decimal": 1
                    }
                }
            }
        ],
        "encode": "JSON"
    }
}
isTokenType
Cette méthode indique si une ressource de jeton existe avec l'ID spécifié.
Ctx.Token.isTokenType(token_id: string)
Paramètres :
  • token_id: string : ID du jeton à vérifier.
Renvoie :
  • En cas de réussite, promesse avec la valeur true si une ressource de jeton existe avec l'ID spécifié. En cas d'erreur, rejet avec un message d'erreur.
Exemple de valeur renvoyée :
true
getByRange
Cette méthode appelle la méthode fabric getStateByRange en interne. Même si une immobilisation avec le code indiqué est renvoyée à partir du livre, cette méthode convertit l'immobilisation dans le type d'immobilisation de l'appelant.
<Token ClassCtx.Token.getByRange(start_token_id: string, end_token_id: string, token_class_reference?: <Instance of Token Class> )
Paramètres :
  • startId: string : clé de début de la plage. Cette clé est incluse dans la plage.
  • endId: string : clé de fin de la plage. Cette clé est exclue de la plage.
  • token: <Instance of Token Class> : ressource de jeton sur laquelle opérer.
Renvoie :
  • En cas de réussite, une promesse avec un tableau de <Token Class>. En cas d'erreur, rejet avec un message d'erreur.
Par exemple :
@validator(yup.string(), yup.string())
public async getDigiCurrGetByRange(start_token_id: string, end_token_id: string) {
   return await this.Ctx.Token.getByRange(start_token_id, end_token_id, DigiCurr);
}
Exemple de valeur renvoyée :
[
    {
        "assetType": "otoken",
        "token_id": "token1",
        "token_name": "digicur",
        "token_desc": "Token 1",
        "token_type": "fungible",
        "behaviors": [
            "divisible",
            "mintable",
            "transferable",
            "burnable",
            "holdable",
            "roles"
        ],
        "roles": {
            "minter_role_name": "minter",
            "burner_role_name": "burner",
            "notary_role_name": "notary"
        },
        "mintable": {
            "max_mint_quantity": 20000
        },
        "divisible": {
            "decimal": 0
        },
        "token_to_currency_ratio": 1.5,
        "currency_representation": "USD"
    },
    {
        "assetType": "otoken",
        "token_id": "token2",
        "token_name": "digicur",
        "token_desc": "Token2",
        "token_type": "fungible",
        "behaviors": [
            "divisible",
            "mintable",
            "transferable",
            "burnable",
            "holdable",
            "roles"
        ],
        "roles": {
            "minter_role_name": "minter",
            "burner_role_name": "burner",
            "notary_role_name": "notary"
        },
        "mintable": {
            "max_mint_quantity": 20000
        },
        "divisible": {
            "decimal": 0
        },
        "token_to_currency_ratio": 1,
        "currency_representation": "EURO"
    }
]

Méthodes de gestion des comptes

getCallerAccountId
Cette méthode renvoie l'ID de compte de l'appelant.
Ctx.Account.getCallerAccountId(token_id: string)
Paramètres :
  • tokenId: string : ID du jeton.
Renvoie :
  • En cas de réussite, promesse avec l'ID compte de l'appelant. En cas d'erreur, rejet avec un message d'erreur.
Exemple de valeur renvoyée :
oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f
generateAccountId
Cette méthode renvoie un ID de compte, qui est un ensemble alphanumérique de caractères, précédé de oaccount~<token asset name>~ et suivi d'un hachage du nom utilisateur ou de l'ID de courriel (user_id) du propriétaire de l'instance ou de l'utilisateur qui est connecté à l'instance, de l'ID de fournisseur de service d'adhésion (org_id) de l'utilisateur dans l'organisation réseau actuelle et de l'ID de jeton unique (token_id).
Ctx.Account.generateAccountId(token_id: string, org_id: string, user_id: string)
Paramètres :
  • tokenId: string : ID du jeton.
  • 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, promesse avec l'ID compte généré. En cas d'erreur, rejet avec un message d'erreur.
Exemple de valeur renvoyée :
oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f
createAccount
Cette méthode crée un compte pour l'utilisateur et le jeton spécifiés. Chaque utilisateur qui a des jetons à un moment donné doit avoir un compte. Les comptes assurent le suivi du solde d'un utilisateur, du solde bloqué et de l'historique des transactions. Un ID de compte est un ensemble alphanumérique de caractères, précédé de oaccount~<token asset name>~ et suivi d'un hachage du nom utilisateur ou de l'ID courriel (user_id) du propriétaire de l'instance ou de l'utilisateur qui est connecté à l'instance, l'ID de fournisseur de services d'adhésion (org_id) de l'utilisateur dans l'organisation réseau actuelle. Cette méthode peut uniquement être appelée par l'élément Token Admin du code chaîne ou par un élément Org Admin de l'organisation indiquée.
this.Ctx.Account.createAccount(org_id: string, user_id: string, token_type: string)
Paramètres :
  • org_id: string : ID du fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation actuelle.
  • user_id: string : nom d'utilisateur ou ID d'adresse électronique de l'utilisateur.
  • token_type: string : type du jeton, qui doit être fungible.
Renvoie :
  • En cas de succès, le nouvel objet de compte au format JSON.
Exemple de valeur renvoyée :
{
  "assetType": "oaccount",
  "bapAccountVersion": 0,
  "account_id": "oaccount~abc74791148b761352b98df58035601b6f5480448ac2b4a3a7eb54bdbebf48eb",
  "user_id": "admin",
  "org_id": "Org1MSP",
  "token_type": "fungible",
  "token_id": "",
  "token_name": "",
  "balance": 0,
  "onhold_balance": 0
}
associateTokenToAccount
Cette méthode associe un jeton fongible à un compte. Cette méthode peut uniquement être appelée par un élément Token Admin du code chaîne ou par un élément Org Admin de l'organisation concernée.
async associateTokenToAccount(account_id: string, token_id: string)
Paramètres :
  • account_id: string : ID du compte.
  • token_id: string : ID du jeton.
Renvoie :
  • En cas de succès, objet JSON du compte mis à jour.
Exemple de valeur renvoyée :
{
    "assetType": "oaccount",
    "bapAccountVersion": 0,
    "account_id": "oaccount~abc74791148b761352b98df58035601b6f5480448ac2b4a3a7eb54bdbebf48eb",
    "user_id": "admin",
    "org_id": "Org1MSP",
    "token_type": "fungible",
    "token_id": "fungible",
    "token_name": "fiatmoneytok",
    "balance": 0,
    "onhold_balance": 0
}
getAccountWithStatus
Cette méthode renvoie les détails du compte pour un compte spécifié, y compris le statut du compte.
Ctx.Account.getAccountWithStatus(account_id: string)
Paramètres :
  • account_id: string : ID du compte.
Renvoie :
  • En cas de succès, une promesse avec les détails du compte. En cas d'erreur, rejet avec un message d'erreur.
Exemple de valeur renvoyée :
{
  "bapAccountVersion": 0,
  "assetType": "oaccount",
  "status": "active",
  "account_id": "oaccount~2de8db6b91964f8c9009136831126d3cfa94e1d00c4285c1ea3e6d1f36479ed4",
  "user_id": "idcqa",
  "org_id": "appdev",
  "token_type": "fungible",
  "token_id": "t1",
  "token_name": "obptok",
  "balance": 0,
  "onhold_balance": 0
}
getAccount
Cette méthode renvoie les détails du compte pour un compte spécifié.
Ctx.Account.getAccount(account_id: string)
Paramètres :
  • account_id: string : ID du compte.
Renvoie :
  • En cas de succès, une promesse avec les détails du compte. En cas d'erreur, rejet avec un message d'erreur.
Exemple de valeur renvoyée :
{
   "assetType":"oaccount",
   "bapAccountVersion": 0,
   "account_id":"oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f",
   "user_id":"user1",
   "org_id":"Org1MSP",
   "token_id":"digiCurr101",
   "token_name":"digicur",
   "balance":0,
   "onhold_balance":0
}
history
Cette méthode renvoie un tableau des détails de l'historique du compte pour un compte spécifié.
Ctx.Account.history(account_id: string)
Paramètres :
  • account_id: string : ID du compte.
Renvoie :
  • En cas de succès, promesse avec le tableau des détails de l'historique des comptes. En cas d'erreur, rejet avec un message d'erreur. La valeur renvoyée est identique à la méthode getAccountHistory.
Exemple de valeur renvoyée :
[
    {
      "trxId":"2gsdh17fff222467e5667be042e33ce18e804b3e065cca15de306f837e416d7c3e",
      "timeStamp":1629718288,
      "value":{
         "assetType":"oaccount",
         "account_id":"oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f",
         "user_id":"user1",
         "org_id":"Org1MSP",
         "token_id":"digiCurr101",
         "token_name":"digicur",
         "balance":100,
         "onhold_balance":0,
         "bapAccountVersion": 1
   },
   {
      "trxId":"9fd07fff222467e5667be042e33ce18e804b3e065cca15de306f837e416d7c3e",
      "timeStamp":1629718288,
      "value":{
         "assetType":"oaccount",
         "account_id":"oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f",
         "user_id":"user1",
         "org_id":"Org1MSP",
         "token_id":"digiCurr101",
         "token_name":"digicur",
         "balance":0,
         "onhold_balance":0,
         "bapAccountVersion": 0
      }
   }
]
getAccountOnHoldBalance
Cette méthode renvoie le solde de retenue pour un compte spécifié.
Ctx.Account.getAccountOnHoldBalance(account_id: string)
Paramètres :
  • account_id: string : ID du compte.
Renvoie :
  • En cas de réussite, promesse avec un objet JSON qui affiche le solde de blocage pour le compte spécifié. En cas d'erreur, rejet avec un message d'erreur.
Exemple de valeur renvoyée :
{
   "holding_balance":0,
   "msg":"Total Holding Balance of Account Id oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f (org_id: Org1MSP, user_id: user1) is 0"
}
getAllAccounts
Cette méthode renvoie la liste de tous les comptes. 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 Oracle Blockchain Platform distant.
Ctx.Account.getAllAccounts()
Paramètres :
  • Aucun élément
Renvoie :
  • En cas de réussite, promesse avec un objet JSON qui répertorie tous les comptes. En cas d'erreur, rejet avec un message d'erreur.
Exemple de valeur renvoyée :
[
           {
               "key": "oaccount~digicur~2e2ef3375ae347cbd7b4d3d7be5cece803f9c36a184aaf2b8d332c5d2dcead52",
               "valueJson": {
                   "assetType": "oaccount",
                   "account_id": "oaccount~digicur~2e2ef3375ae347cbd7b4d3d7be5cece803f9c36a184aaf2b8d332c5d2dcead52",
                   "user_id": "admin",
                   "org_id": "Org1MSP",
                   "token_id": "digiCurr101",
                   "token_name": "digicur",
                   "bapAccountVersion": 0,
                   "balance": 0,
                   "onhold_balance": 0
               }
           },
           {
               "key": "oaccount~digicur~30080c7e5ba94035af57fbbccbbb495e92515e4b2b3dbcd476eb1c0343e4da65",
               "valueJson": {
                   "assetType": "oaccount",
                   "account_id": "oaccount~digicur~30080c7e5ba94035af57fbbccbbb495e92515e4b2b3dbcd476eb1c0343e4da65",
                   "bapAccountVersion": 0,
                   "user_id": "user1",
                   "org_id": "Org1MSP",
                   "token_id": "digiCurr101",
                   "token_name": "digicur",
                   "balance": 0,
                   "onhold_balance": 0
               }
           },
           {
               "key": "oaccount~digicur~cbde438258cb01a82f71a9a9f8029243c40c6d836a505432120529c2b3c2ff0c",
               "valueJson": {
                   "assetType": "oaccount",
                   "account_id": "oaccount~digicur~cbde438258cb01a82f71a9a9f8029243c40c6d836a505432120529c2b3c2ff0c",
                   "bapAccountVersion": 0,
                   "user_id": "user2",
                   "org_id": "Org1MSP",
                   "token_id": "digiCurr101",
                   "token_name": "digicur",
                   "balance": 0,
                   "onhold_balance": 0
               }
           },
           {
               "key": "oaccount~digicur~ecbc3aefcc562d3049c988717940195b30297e95012b7824bbd33a57ca50a626",
               "valueJson": {
                   "assetType": "oaccount",
                   "account_id": "oaccount~digicur~ecbc3aefcc562d3049c988717940195b30297e95012b7824bbd33a57ca50a626",
                   "bapAccountVersion": 0,
                   "user_id": "user3",
                   "org_id": "Org1MSP",
                   "token_id": "digiCurr101",
                   "token_name": "digicur",
                   "balance": 500,
                   "onhold_balance": 0
               }
           }
       ]
getUserByAccountId
Cette méthode renvoie les détails de l'utilisateur pour un compte spécifié.
Ctx.Account.getUserByAccountId(account_id: string)
Paramètres :
  • account_id: string : ID du compte.
Renvoie :
  • En cas de réussite, promesse avec un objet JSON qui inclut trois propriétés :
    • user_id : nom d'utilisateur ou ID d'adresse électronique de l'utilisateur.
    • org_id : ID du fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation réseau actuelle.
    • token_id : ID du jeton.
  • En cas d'erreur, rejet avec un message d'erreur.
Exemple de valeur renvoyée :
{
   "token_id": "digiCurr101",
   "user_id": "user1",
   "org_id": "Org1MSP"
}
getAccountBalance
Cette méthode renvoie le solde du compte pour un compte spécifié.
Ctx.Account.getAccountBalance(account_id: string)
Paramètres :
  • account_id: string : ID du compte.
Renvoie :
  • En cas de succès, un message de promesse avec un objet JSON qui inclut deux propriétés :
    • msg : message indiquant le solde actuel.
    • user_balance : valeur numérique du solde actuel.
  • En cas d'erreur, rejet avec un message d'erreur.
Exemple de valeur renvoyée :
{
    "msg": "Current Balance is: 200",
    "user_balance": 200
}
getAllOrgAccounts
Cette méthode renvoie la liste de tous les comptes de jetons appartenant à une organisation spécifiée.
Ctx.Account.getAllOrgAccounts(org_id: string) 
Paramètres :
  • org_id: string – ID du prestataire de services d'adhésion (MSP) de l'organisation.
Renvoie :
  • En cas de succès, une liste de tous les comptes pour l'organisation spécifiée.
Exemple de valeur renvoyée :
[
    {
        "key": "oaccount~2de8db6b91964f8c9009136831126d3cfa94e1d00c4285c1ea3e6d1f36479ed4",
        "valueJson": {
            "bapAccountVersion": 0,
            "assetType": "oaccount",
            "account_id": "oaccount~2de8db6b91964f8c9009136831126d3cfa94e1d00c4285c1ea3e6d1f36479ed4",
            "user_id": "idcqa",
            "org_id": "appdev",
            "token_type": "fungible",
            "token_id": "token",
            "token_name": "fiatmoneytok",
            "balance": 0,
            "onhold_balance": 0
        }
    },
    {
        "key": "oaccount~620fcf5deb5fd5a65c0b5b10fda129de0f629ccd232c5891c130e24a574df50a",
        "valueJson": {
            "bapAccountVersion": 0,
            "assetType": "oaccount",
            "account_id": "oaccount~620fcf5deb5fd5a65c0b5b10fda129de0f629ccd232c5891c130e24a574df50a",
            "user_id": "example_minter",
            "org_id": "appdev",
            "token_type": "fungible",
            "token_id": "token",
            "token_name": "fiatmoneytok",
            "balance": 0,
            "onhold_balance": 0
        }
    }
]

Méthodes de gestion des rôles

addRoleMember
Cette méthode ajoute un rôle à un utilisateur et un jeton spécifiés.
Ctx.Token.addRoleMember(role: string, account_id: string, token: <Instance of Token Class>)
Paramètres :
  • role: string : nom du rôle à ajouter à l'utilisateur indiqué. Les comportements mintable et burnable correspondent aux propriétés minter_role_name et burner_role_name du fichier de spécification. De même, le rôle notary correspond à la propriété notary_role_name du fichier de spécification.
  • account_id: number – ID du compte auquel ajouter le rôle.
  • token: <Instance of Token Class> : ressource de jeton sur laquelle opérer.
Renvoie :
  • En cas de succès, une promesse avec un message de succès. En cas d'erreur, rejet avec un message d'erreur.
Exemple de valeur renvoyée :
{
    "msg":"Successfully added role minter to oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f (org_id :          Org1MSP, user_id : user1)"
}
removeRoleMember
Cette méthode supprime un rôle d'un utilisateur et d'un jeton spécifiés.
Ctx.Token.removeRoleMember(role: string, account_id: string, token: <Instance of Token Class>)
Paramètres :
  • role: string : nom du rôle à enlever de l'utilisateur indiqué. Les comportements mintable et burnable correspondent aux propriétés minter_role_name et burner_role_name du fichier de spécification. De même, le rôle notary correspond à la propriété notary_role_name du fichier de spécification.
  • account_id: number : ID de compte duquel enlever le rôle.
  • token: <Instance of Token Class> : ressource de jeton sur laquelle opérer.
Renvoie :
  • En cas de succès, une promesse avec un message de succès. En cas d'erreur, rejet avec un message d'erreur.
Exemple de valeur renvoyée :
{
  "msg":"successfully removed member_id oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f (org_id : Org1MSP, user_id : user1) from role minter"
}
getAccountsByRole
Cette méthode renvoie la liste de tous les comptes pour un rôle et un jeton spécifiés.
Ctx.Role.getAccountsByRole(token_id: string, role: string)
Paramètres :
  • token_id: string : ID du jeton.
  • role: string : nom du rôle à rechercher.
Renvoie :
  • En cas de réussite, promesse avec un objet JSON qui répertorie tous les comptes pour le rôle et le jeton spécifiés. En cas d'erreur, rejet avec un message d'erreur.
Exemple de valeur renvoyée :
{
    "accounts": [
        "oaccount~digicur~682bb71de419602af74e3f226345ae308445ca51010737900c1d85f0376152df",
        "oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f"
    ]
}
getAccountsByUser
Cette méthode renvoie la liste de tous les ID de compte d'un utilisateur donné.
async getAccountsByUser(org_id: string, user_id: string)
Paramètres :
  • org_id string : ID du fournisseur de services d'adhésion (MSP) de l'utilisateur dans l'organisation actuelle.
  • user_id string : nom d'utilisateur ou ID d'adresse électronique de l'utilisateur.
Renvoie :
  • En cas de succès, tableau JSON d'ID de compte.
Exemple de valeur renvoyée :
{"accounts":["oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f"]}
getUsersByRole
Cette méthode renvoie la liste de tous les utilisateurs pour un rôle et un jeton spécifiés.
Ctx.Role.getUsersByRole(token_id: string, role: string)
Paramètres :
  • token_id: string : ID du jeton.
  • role: string : nom du rôle à rechercher.
Renvoie :
  • En cas de réussite, promesse avec un objet JSON qui répertorie tous les utilisateurs pour le rôle et le jeton indiqués. En cas d'erreur, rejet avec un message d'erreur.
Exemple de valeur renvoyée :
{
   "users":[
      {
         "token_id":"digiCurr101",
         "user_id":"user1",
         "org_id":"Org1MSP"
      }
   ]
}
isInRole
Cette méthode indique si un utilisateur et un jeton ont un rôle spécifié.
Ctx.Token.isInRole(role: string, account_id: string, token: <Instance of Token Class>)
Paramètres :
  • role: string – Nom du rôle à vérifier.
  • account_id: number – ID de compte à vérifier.
  • token: <Instance of Token Class> : ressource de jeton sur laquelle opérer.
Renvoie :
  • En cas de réussite, une promesse avec true si l'utilisateur a le rôle et false si l'utilisateur n'a pas le rôle. En cas d'erreur, rejet avec un message d'erreur.
Exemple de valeur renvoyée :
{"result":"true"}
getOrgAccountsByRole
Cette méthode renvoie des informations sur tous les comptes qui ont un rôle spécifié dans une organisation spécifiée.
Ctx.Role.getOrgAccountsByRole(token_id: string, role: string, org_id: string)
Paramètres :
  • token_id: string : ID du jeton.
  • role: string : nom du rôle à vérifier.
  • org_id: string – ID du prestataire de services d'adhésion (MSP) de l'organisation.
Renvoie :
  • En cas de succès, une liste de tous les comptes ayant le rôle spécifié dans l'organisation spécifiée.
Exemple de valeur renvoyée :
{
    "accounts": [
        "oaccount~abc74791148b761352b98df58035601b6f5480448ac2b4a3a7eb54bdbebf48eb",
        "oaccount~9c650574af9025a6106c8d12a801b079eda9ae2e3399fc2fbd5bd683d738a850"
    ]
}
getOrgUsersByRole
Cette méthode renvoie des informations sur tous les utilisateurs qui ont un rôle spécifié dans une organisation donnée.
Ctx.Role.getOrgUsersByRole(token_id: string, role: string, org_id: string)
Paramètres :
  • token_id: string : ID du jeton.
  • role: string : nom du rôle à vérifier.
  • org_id: string – ID du prestataire de services d'adhésion (MSP) de l'organisation.
Renvoie :
  • En cas de succès, liste de tous les utilisateurs ayant le rôle spécifié dans l'organisation spécifiée.
Exemple de valeur renvoyée :
{
    "users": [
        {
            "token_id": "token",
            "user_id": "admin",
            "org_id": "Org1MSP"
        },
        {
            "token_id": "token",
            "user_id": "orgAdmin",
            "org_id": "Org1MSP"
        }
    ]
}
roleCheck
Cette méthode vérifie si l'ID de compte fourni est membre d'un rôle.
Ctx.Token.roleCheck(account_id: string, token: <Instance of Token Class>)
Paramètres :
  • account_id: string – ID de compte à vérifier.
  • token: <Instance of Token Class> : ressource de jeton sur laquelle opérer.
Renvoie :
  • Si l'ID de compte fait partie d'un rôle, il renvoie true. Renvoie false dans le cas contraire.
Exemple de valeur renvoyée :
{ result: true }

Méthodes de gestion de l'historique des transactions

getAccountTransactionHistory
Cette méthode renvoie un tableau des détails de l'historique des transactions pour un compte spécifié.
Ctx.Account.getAccountTransactionHistory(account_id: string)
Paramètres :
  • account_id: string : ID du compte.
Renvoie :
  • La valeur renvoyée est identique à la méthode getAccountTransactionHistory.
  • En cas de succès, une promesse avec le tableau des objets de transaction de compte :
    • transaction_id : ID de la transaction.
    • transacted_account – Compte avec lequel la transaction a eu lieu.
    • transaction_type : type de transaction.
    • transacted_amount – Montant de la transaction.
    • timestamp : heure de la transaction.
    • balance – Solde du compte au moment de la transaction.
    • onhold_balance – Solde retenu au moment de la transaction.
    • sub_transactions : pour les transferts en masse uniquement, liste des transactions qui font partie d'un transfert en masse.
    • holding_id : identificateur unique renvoyé par la méthode holdTokens.
    • token_id : ID du jeton.
  • En cas d'erreur, rejet avec un message d'erreur.
Exemple de valeur renvoyée :
[
   {
      "transaction_id":"otransaction~68f46c90d0d8d6b93d827e6b9e0152b4845e6e42a61965e63a9bbf1d8e0fc775",
      "transacted_amount":20,
      "timestamp":"2021-08-17T06:04:24.000Z",
      "balance":60,
      "onhold_balance":0,
      "token_id":"digiCurr101",
      "transaction_type":"BULKTRANSFER",
      "sub_transactions":[
         {
            "transacted_account":"oaccount~digicur~682bb71de419602af74e3f226345ae308445ca51010737900c1d85f0376152df",
            "transaction_type":"CREDIT",
            "transaction_id":"otransaction~68f46c90d0d8d6b93d827e6b9e0152b4845e6e42a61965e63a9bbf1d8e0fc775~c4ca4238a0b923820dcc509a6f75849b",
            "transacted_amount":10
         }
      ]
   },
   {
      "transaction_id":"otransaction~757864d5369bd0539d044caeb3bb4898db310fd7aa740f45a9938771903d43da",
      "transacted_amount":50,
      "timestamp":"2021-08-17T06:02:44.000Z",
      "balance":50,
      "onhold_balance":0,
      "token_id":"digiCurr101",
      "transacted_account":"oaccount~digicur~682bb71de419602af74e3f226345ae308445ca51010737900c1d85f0376152df",
      "transaction_type":"CREDIT"
   }
]
getAccountTransactionHistoryWithFilters
Cette méthode renvoie un tableau des détails de l'historique des transactions pour un compte spécifié. Cette méthode ne peut être appelée que lorsqu'elle est connectée au réseau Oracle Blockchain Platform distant.
await this.Ctx.Account.getAccountTransactionHistoryWithFilters(account_id: string, filters?: Filters)
Paramètres :
  • account_id: string : ID du compte.
  • filters: string : paramètre facultatif. S'il est vide, tous les enregistrements sont renvoyés. La propriété PageSize détermine le nombre d'enregistrements à renvoyer. Si PageSize a la valeur 0, la taille de page par défaut est 20. La propriété Bookmark détermine l'index de début des enregistrements à renvoyer. Pour plus d'informations, reportez-vous à la documentation d'Hyperledger Fabric. Les propriétés StartTime et EndTime doivent être spécifiées au format RFC-3339.
Par exemple :

ochain invoke getAccountTransactionHistoryWithFilters 'token1' 'appbuilder12' 'user_minter' '{"PageSize":10,"Bookmark":"1","StartTime":"2022-01-25T17:41:42Z","EndTime":"2022-01-25T17:59:10Z"}'

[
    {
        "transaction_id": "otransaction~672897b5a4fa78b421c000e4d6d4f71f3d46529bfbb5b4be10bf5471dc35ce89",
        "transacted_amount": 5,
        "timestamp": "2022-04-20T15:46:04.000Z",
        "token_id": "token1",
        "transacted_account": "oaccount~16c38d804413ebabf416360d374f76c973d4e71c74adfde73cc40c7c274883b8",
        "transaction_type": "DEBIT",
        "balance": 90,
        "onhold_balance": 0
    },
    {
        "transaction_id": "otransaction~467bb67a33aaffca4487f33dcd46c9844efdb5421a2e7b6aa2d53152eb2c6d85",
        "transacted_amount": 5,
        "timestamp": "2022-04-20T15:45:47.000Z",
        "token_id": "token1",
        "transacted_account": "oaccount~fbf95683b21bbc91a22205819ac1e2e9c90355d536821ed3fe22b7d23915c248",
        "transaction_type": "DEBIT",
        "balance": 95,
        "onhold_balance": 0
    },
    {
        "transaction_id": "otransaction~c6d56ce54a9bbe24597d1d10448e39316dc6f16328bf3c5b0c8ef10e1dfeb397",
        "transacted_amount": 100,
        "timestamp": "2022-04-20T15:44:26.000Z",
        "token_id": "token1",
        "transacted_account": "oaccount~deb5fb0906c40506f6c2d00c573b774e01a53dd91499e651d92ac4778b6add6a",
        "transaction_type": "MINT",
        "balance": 100,
        "onhold_balance": 0
    }
]
getSubTransactionHistory
Cette méthode renvoie un tableau des détails de l'historique des transactions pour une transaction donnée.
await this.Ctx.Account.getSubTransactionHistory(transaction_id)
Paramètres :
  • transaction_id: string : ID de la transaction de transfert en masse.
Par exemple :

ochain invoke GetAccountSubTransactionHistory 'otransaction~21972b4d206bd52ea77924efb259c67217edb23b4386580d1bee696f6f864b9b'

[
    {
        "transacted_account": "oaccount~16c38d804413ebabf416360d374f76c973d4e71c74adfde73cc40c7c274883b8",
        "transaction_type": "DEBIT",
        "transaction_id": "otransaction~6e0f8fe4a6430322170b9c619b04b6c9f1c8d257923f611b866bdf69d7fe6cb8~c81e728d9d4c2f636f067f89cc14862c",
        "transacted_amount": 5,
        "timestamp": "2022-04-20T15:52:21.000Z",
        "token_id": "token1",
        "balance": 80,
        "onhold_balance": 0
    },
    {
        "transacted_account": "oaccount~fbf95683b21bbc91a22205819ac1e2e9c90355d536821ed3fe22b7d23915c248",
        "transaction_type": "DEBIT",
        "transaction_id": "otransaction~6e0f8fe4a6430322170b9c619b04b6c9f1c8d257923f611b866bdf69d7fe6cb8~c4ca4238a0b923820dcc509a6f75849b",
        "transacted_amount": 5,
        "timestamp": "2022-04-20T15:52:21.000Z",
        "token_id": "token1",
        "balance": 85,
        "onhold_balance": 0
    }
]
getSubTransactionHistoryWithFilters
Cette méthode renvoie un tableau des détails de l'historique des sous-transactions pour une transaction spécifiée.
await this.Ctx.Account.getSubTransactionHistoryWithFilters(transaction_id: string, filters?: SubTransactionFilters)
Paramètres :
  • transaction_id: string : ID de la transaction de transfert en masse.
  • filters: string : paramètre facultatif. S'il est vide, tous les enregistrements sont renvoyés. La propriété PageSize détermine le nombre d'enregistrements à renvoyer. Si PageSize a la valeur 0, la taille de page par défaut est 20. La propriété Bookmark détermine l'index de début des enregistrements à renvoyer. Pour plus d'informations, reportez-vous à la documentation d'Hyperledger Fabric. Les propriétés StartTime et EndTime doivent être spécifiées au format RFC-3339.
Par exemple :

ochain invoke GetAccountSubTransactionHistoryWithFilters 'otransaction~21972b4d206bd52ea77924efb259c67217edb23b4386580d1bee696f6f864b9b' '{"PageSize":10,"Bookmark":"1"}'

[
    {
        "transaction_id": "otransaction~6e0f8fe4a6430322170b9c619b04b6c9f1c8d257923f611b866bdf69d7fe6cb8~c81e728d9d4c2f636f067f89cc14862c",
        "transacted_amount": 5,
        "timestamp": "2022-04-20T15:52:21.000Z",
        "token_id": "token1",
        "transacted_account": "oaccount~16c38d804413ebabf416360d374f76c973d4e71c74adfde73cc40c7c274883b8",
        "transaction_type": "DEBIT",
        "balance": 80,
        "onhold_balance": 0
    },
    {
        "transaction_id": "otransaction~6e0f8fe4a6430322170b9c619b04b6c9f1c8d257923f611b866bdf69d7fe6cb8~c4ca4238a0b923820dcc509a6f75849b",
        "transacted_amount": 5,
        "timestamp": "2022-04-20T15:52:21.000Z",
        "token_id": "token1",
        "transacted_account": "oaccount~fbf95683b21bbc91a22205819ac1e2e9c90355d536821ed3fe22b7d23915c248",
        "transaction_type": "DEBIT",
        "balance": 85,
        "onhold_balance": 0
    }
]
getTransactionById
Cette méthode renvoie l'historique d'une ressource Transaction.
async getTransactionById(transaction_id: string)
Paramètres :
  • transaction_id: string : ID de la ressource de transaction.
Renvoie :
  • En cas de succès, l'historique des immobilisations de la transaction.
Exemple de valeur renvoyée :
{
    "transaction_id": "otransaction~68f46c90d0d8d6b93d827e6b9e0152b4845e6e42a61965e63a9bbf1d8e0fc775",
    "history": [
        {
            "trxId": "68f46c90d0d8d6b93d827e6b9e0152b4845e6e42a61965e63a9bbf1d8e0fc775",
            "timeStamp": 1629180264,
            "value": {
                "assetType": "otransaction",
                "transaction_id": "otransaction~68f46c90d0d8d6b93d827e6b9e0152b4845e6e42a61965e63a9bbf1d8e0fc775",
                "token_id": "digiCurr101",
                "from_account_id": "oaccount~digicur~682bb71de419602af74e3f226345ae308445ca51010737900c1d85f0376152df",
                "to_account_id": "",
                "transaction_type": "BULKTRANSFER",
                "amount": 20,
                "timestamp": "2021-08-17T06:04:24.000Z",
                "number_of_sub_transactions": 2,
                "holding_id": ""
            }
        }
    ],
    "sub_transactions": [
        {
            "transaction_id": "otransaction~68f46c90d0d8d6b93d827e6b9e0152b4845e6e42a61965e63a9bbf1d8e0fc775~c4ca4238a0b923820dcc509a6f75849b",
            "history": [
                {
                    "trxId": "68f46c90d0d8d6b93d827e6b9e0152b4845e6e42a61965e63a9bbf1d8e0fc775",
                    "timeStamp": 1629180264,
                    "value": {
                        "assetType": "otransaction",
                        "transaction_id": "otransaction~68f46c90d0d8d6b93d827e6b9e0152b4845e6e42a61965e63a9bbf1d8e0fc775~c4ca4238a0b923820dcc509a6f75849b",
                        "token_id": "digiCurr101",
                        "from_account_id": "oaccount~digicur~682bb71de419602af74e3f226345ae308445ca51010737900c1d85f0376152df",
                        "to_account_id": "oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f",
                        "transaction_type": "TRANSFER",
                        "amount": 10,
                        "timestamp": "2021-08-17T06:04:24.000Z",
                        "number_of_sub_transactions": 0,
                        "holding_id": ""
                    }
                }
            ]
        },
        {
            "transaction_id": "otransaction~68f46c90d0d8d6b93d827e6b9e0152b4845e6e42a61965e63a9bbf1d8e0fc775~c81e728d9d4c2f636f067f89cc14862c",
            "history": [
                {
                    "trxId": "68f46c90d0d8d6b93d827e6b9e0152b4845e6e42a61965e63a9bbf1d8e0fc775",
                    "timeStamp": 1629180264,
                    "value": {
                        "assetType": "otransaction",
                        "transaction_id": "otransaction~68f46c90d0d8d6b93d827e6b9e0152b4845e6e42a61965e63a9bbf1d8e0fc775~c81e728d9d4c2f636f067f89cc14862c",
                        "token_id": "digiCurr101",
                        "from_account_id": "oaccount~digicur~682bb71de419602af74e3f226345ae308445ca51010737900c1d85f0376152df",
                        "to_account_id": "oaccount~digicur~38848e87296d67c8a90918f78cf55f9c9baab2cdc8c928535471aaa1210c706e",
                        "transaction_type": "TRANSFER",
                        "amount": 10,
                        "timestamp": "2021-08-17T06:04:24.000Z",
                        "number_of_sub_transactions": 0,
                        "holding_id": ""
                    }
                }
            ]
        }
    ]
}
deleteHistoricalTransactions
Cette méthode renvoie un tableau des détails de l'historique des transactions pour un compte spécifié.
async deleteHistoricalTransactions(time_to_expiration: Date)
Paramètres :
  • time_to_expiration: Date : horodatage indiquant quand supprimer des transactions. Les ressources de transaction antérieures à l'heure indiquée seront supprimées.
Renvoie :
  • La valeur renvoyée est identique à la méthode getAccountTransactionHistory.
  • En cas de succès, une promesse avec le tableau des objets de transaction de compte :
    • transaction_id : ID de la transaction.
    • transacted_account – Compte avec lequel la transaction a eu lieu.
    • transaction_type : type de transaction.
    • transacted_amount – Montant de la transaction.
    • timestamp : heure de la transaction.
    • balance – Solde du compte au moment de la transaction.
    • onhold_balance – Solde retenu au moment de la transaction.
    • sub_transactions : pour les transferts en masse uniquement, liste des transactions qui font partie d'un transfert en masse.
    • holding_id : identificateur unique renvoyé par la méthode holdTokens.
    • token_id : ID du jeton.
  • En cas d'erreur, rejet avec un message d'erreur.
Exemple de valeur renvoyée :
"payload": {
            "msg": "Successfuly deleted transaction older than date: Thu Aug 19 2021 11:19:36 GMT+0000 (Coordinated Universal Time).",
            "transactions": [
                "otransaction~ec3366dd48b4ce2838f820f2f138648e6e55a07226713e59b411ff31b0d21058"
            ]
        }

Gestion du comportement des jetons

Les méthodes de gestion du cycle de vie des jetons sont basées sur les normes de la structure de taxonomie des jetons. Pour utiliser les méthodes de cycle de vie de jeton, importez la classe Token à partir du module ../lib/token.
import { Token } from '../lib/token';

Méthodes de gestion du comportement des jetons - Comportement Mintable

mint
Cette méthode extrait une quantité de jetons, qui sont ensuite détenus par l'appelant de la méthode. L'appelant doit avoir un compte et le rôle de mineur. La quantité doit être comprise dans les valeurs décimales spécifiées par le paramètre decimal du comportement divisible dans le fichier de spécification.
Ctx.Token.mint(quantity: number, token: <Instance of Token Class>)
Paramètres :
  • quantity: number : nombre total de jetons à mint.
  • token: <Instance of Token Class> : ressource de jeton à extraire.
Renvoie :
  • En cas de réussite, une promesse avec un message de réussite et des détails toAccount. En cas d'erreur, rejet avec un message d'erreur.
Exemple de valeur renvoyée :
{
  "msg":"Successfully minted 1000 tokens to Account Id: oaccount~digicur~682bb71de419602af74e3f226345ae308445ca51010737900c1d85f0376152df (Org-Id: Org1MSP, User-Id: admin)"
}
getTotalMintedTokens
Cette méthode renvoie le nombre total de jetons extraits.
Ctx.Token.getTotalMintedTokens(token: <Instance of Token Class>)
Paramètres :
  • token: <Instance of Token Class> : ressource de jeton sur laquelle opérer.
Renvoie :
  • En cas de succès, la quantité de jetons extraits, dans le type de données Nombre. En cas d'erreur, un message d'erreur s'affiche.
Exemple de valeur renvoyée :
4000
getNetTokens
Cette méthode renvoie la quantité nette de jetons disponibles dans le système. Les jetons réseau sont la quantité de jetons restants après que les jetons sont brûlés. Sous forme d'équation : jetons net = total des jetons minés - total des jetons brûlés. Si aucun jeton n'est brûlé, le nombre de jetons réseau est égal au nombre total de jetons extraits.
Ctx.Token.getNetTokens(token: <Instance of Token Class>)
Paramètres :
  • token: <Instance of Token Class> : ressource de jeton sur laquelle opérer.
Renvoie :
  • En cas de succès, la quantité de jetons nets, dans le type de données Nombre. En cas d'erreur, un message d'erreur s'affiche.
Exemple de valeur renvoyée :
2000
getMaxMintQuantity
Cette méthode renvoie la quantité minimale maximale pour un jeton. Si le comportement max_mint_quantity n'est pas indiqué, la valeur par défaut est 0, ce qui autorise le nombre de jetons à extraire.
Ctx.Token.getMaxMintQuantity(token: <Instance of Token Class>)
Paramètres :
  • token: <Instance of Token Class> : ressource de jeton sur laquelle opérer.
Renvoie :
  • En cas de réussite, quantité minimale maximale du jeton, dans le type de données Nombre. En cas d'erreur, un message d'erreur s'affiche.
Exemple de valeur renvoyée :
20000

Méthodes de gestion du comportement des jetons - Comportement transférable

transfer
Cette méthode transfère les jetons de l'appelant de transaction vers le compte to_account_id. L'appelant de cette méthode doit avoir un compte et la quantité doit être comprise dans les valeurs décimales spécifiées par le paramètre decimal du comportement divisible dans le fichier de spécification.
Ctx.Token.transfer(to_account_id: string, quantity: number, token: <Instance of Token Class>)
Paramètres :
  • to_account_id: string : ID de compte destinataire des jetons.
  • quantity: number : nombre total de jetons à transférer.
Renvoie :
  • En cas de succès, une promesse avec un message de succès. En cas d'erreur, rejet avec un message d'erreur.
Exemple de valeur renvoyée :
{
 "msg":"Successfully transferred 50 tokens from account id: oaccount~digicur~682bb71de419602af74e3f226345ae308445ca51010737900c1d85f0376152df (Org-Id: Org1MSP, User-Id: admin) to account id: oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f (Org-Id: Org1MSP, User-Id: user1)"
}
bulkTransfer
Cette méthode transfère les jetons en masse du compte de l'appelant vers les comptes indiqués dans l'objet flow. Un compte doit déjà être créé pour l'appelant de cette méthode.
Ctx.Token.bulkTransfer(flow: object[], token: <Instance of Token Class>)
Paramètres :
  • flow: object[] : tableau d'objets JSON indiquant les détails et la quantité du destinataire. La quantité de transfert doit être comprise dans les valeurs décimales spécifiées par le paramètre decimal du comportement divisible dans le fichier de spécification. Exemple :
    [{
    	"to_org_id": "Org1MSP",
    	"to_user_id": "user1",
    	"quantity": 10
    }, {
    	"to_org_id": "Org1MSP",
    	"to_user_id": "user2",
    	"quantity": 10
    }]
  • token: <Instance of Token Class> : ressource de jeton sur laquelle opérer.
Renvoie :
  • En cas de réussite, une promesse avec un message de réussite et des informations de compte. En cas d'erreur, rejet avec un message d'erreur.
Exemple de valeur renvoyée :
{
    "from_account_id": "oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f",
    "msg": "Successfully transferred 2 tokens from Account Id oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f (Org-Id: Org1MSP, User-Id: user1)",
    "sub_transactions": [
        {
            "amount": 1,
            "to_account_id": "oaccount~digicur~38848e87296d67c8a90918f78cf55f9c9baab2cdc8c928535471aaa1210c706e"
        },
        {
            "amount": 1,
            "to_account_id": "oaccount~digicur~682bb71de419602af74e3f226345ae308445ca51010737900c1d85f0376152df"
        }
    ]
}

Méthodes de gestion du comportement des jetons - Comportement pouvant être conservé

hold
Cette méthode crée un blocage pour le compte du propriétaire des jetons avec le compte to_account_id. Un compte notaire est spécifié, qui est chargé de terminer ou de lever le blocage. Lorsque la mise en suspens est créée, le solde de token spécifié du payeur est mis en suspens. Un solde bloqué ne peut pas être transféré tant que le blocage n'est pas terminé ou levé. Un compte doit déjà être créé pour l'appelant de cette méthode.
Ctx.Token.hold(operation_id: string, to_account_id: string, notary_account_id: string, quantity: number, time_to_expiration: Date, token: <Instance of Token Class>)
Paramètres :
  • operation_id: string : ID unique permettant d'identifier l'opération de blocage. En général, cet ID est transmis par l'application client.
  • to_account_id: string : ID du compte destinataire des jetons.
  • notary__account_id: string : ID du compte notaire.
  • quantity: number : nombre total de jetons à bloquer.
  • time_to_expiration: Date : durée jusqu'à l'expiration du blocage. Spécifiez 0 pour un blocage permanent. Sinon, utilisez le format RFC-3339. Par exemple, 2021-06-02T12.
  • token: <Instance of Token Class> : ressource de jeton à conserver.
Renvoie :
  • En cas de succès, une promesse avec un message de succès. En cas d'erreur, rejet avec un message d'erreur.
Exemple de valeur renvoyée :
{
 "msg": "account id: oaccount~digicur~682bb71de419602af74e3f226345ae308445ca51010737900c1d85f0376152df (org_id : Org1MSP, user_id : user1) is successfully holding 10 tokens",
}
executeHold
Cette méthode effectue un blocage sur les jetons, en transférant la quantité spécifiée de jetons précédemment bloqués au récepteur. Si la valeur quantity est inférieure à la valeur de blocage réelle, le montant restant est à nouveau disponible pour le propriétaire d'origine des jetons. Cette méthode ne peut être appelée que par l'ID AccountOwner avec le rôle notary pour l'ID d'opération indiqué. La mise en attente ne peut être effectuée que par le notaire.
Ctx.Token.executeHold(operation_id: string, quantity: number, token: <Instance of Token Class>)
Paramètres :
  • operation_id: string : ID unique permettant d'identifier l'opération de blocage. En général, cet ID est transmis par l'application client.
  • quantity: number : nombre total de jetons à bloquer.
  • token: <Instance of Token Class> : ressource de jeton à bloquer.
Renvoie :
  • En cas de succès, une promesse avec un message de succès. En cas d'erreur, rejet avec un message d'erreur.
Exemple de valeur renvoyée :
{
 "msg": "user with accountId: oaccount~digicur~682bb71de419602af74e3f226345ae308445ca51010737900c1d85f0376152df (org_id : Org1MSP, user_id : user1) has successfully executed 5  tokens(digiCurr101) from the hold with Operation Id opr_121",
}
releaseHold
Cette méthode permet de bloquer les jetons. Le transfert n'est pas terminé et tous les jetons détenus sont à nouveau disponibles pour le propriétaire d'origine. Cette méthode peut être appelée par l'ID AccountOwner avec le rôle notary dans la limite de temps spécifiée ou par le payeur, le bénéficiaire ou le notaire après la limite de temps spécifiée.
Ctx.Token.releaseHold(operation_id: string, token: <Instance of Token Class>)
Paramètres :
  • operation_id: string : ID unique permettant d'identifier l'opération de blocage. En général, cet ID est transmis par l'application client.
  • token: <Instance of Token Class> : ressource de jeton sur laquelle lever un blocage.
Renvoie :
  • En cas de succès, une promesse avec un message de succès. En cas d'erreur, rejet avec un message d'erreur.
Exemple de valeur renvoyée :
{
  "msg": "Successfully released 5 tokens from Operation Id opr_121 to Account Id: oaccount~682bb71de419602af74e3f226345ae308445ca51010737900c1d85f0376152df (org_id : Org1MSP, user_id : user1)",
}
getOnHoldIds
Cette méthode renvoie la liste de tous les ID blocage pour un compte donné.
Ctx.Account.getOnHoldIds(account_id: string)
Paramètres :
  • account_id: string : ID du compte.
Renvoie :
  • En cas de réussite, promesse avec un objet JSON qui répertorie tous les ID de portefeuille pour le compte spécifié. En cas d'erreur, rejet avec un message d'erreur.
Exemple de valeur renvoyée :
{
   "msg":"Holding Ids are: ohold~digicur~digiCurr101~opr_121",
   "holding_ids":[
      "ohold~digicur~digiCurr101~opr_121"
   ]
}
getOnHoldDetailsWithOperationId
Cette méthode renvoie les détails de la transaction bloquée pour un ID d'opération et un jeton spécifiés.
Ctx.Hold.getOnHoldDetailsWithOperationId(token_id: string, operation_id: string)
Paramètres :
  • token_id: string : ID du jeton.
  • operation_id: string : ID unique permettant d'identifier l'opération de blocage. En général, cet ID est transmis par l'application client.
Renvoie :
  • En cas de succès, objet de blocage qui inclut les propriétés suivantes :
    • holding_id : ID de blocage de la transaction.
    • operation_id: string : ID unique permettant d'identifier l'opération de blocage. En général, cet ID est transmis par l'application client.
    • from_account_id : ID de compte du propriétaire actuel des jetons bloqués.
    • to_account_id : ID de compte du destinataire.
    • notary_account_id : ID de compte du notaire.
    • token_id: string : ID du jeton enregistré.
    • quantity : nombre de jetons bloqués pour l'ID de mise en attente.
    • time_to_expiration : durée jusqu'à l'expiration du blocage.
  • En cas d'erreur, rejet avec un message d'erreur.
Exemple de valeur renvoyée :
{
    "assetType": "ohold",
    "holding_id": "ohold~digicur~digiCurr101~opr_121",
    "operation_id": "opr_121",
    "token_name": "digicur",
    "from_account_id": "oaccount~digicur~682bb71de419602af74e3f226345ae308445ca51010737900c1d85f0376152df",
    "to_account_id": "oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f",
    "notary_account_id": "oaccount~digicur~38848e87296d67c8a90918f78cf55f9c9baab2cdc8c928535471aaa1210c706e",
    "token_id": "digiCurr101",
    "quantity": 10,
    "time_to_expiration": "2022-08-01T18:30:00.000Z"
}
getOnHoldBalanceWithOperationId
Cette méthode renvoie le solde de blocage pour un ID d'opération et un jeton spécifiés. Cette méthode peut être appelée par n'importe qui.
Ctx.Hold.getOnHoldBalanceWithOperationId(token_id: string, operation_id: string)
Paramètres :
  • token_id: string : ID du jeton.
  • operation_id: string : ID unique permettant d'identifier l'opération de blocage. En général, cet ID est transmis par l'application client.
Renvoie :
  • En cas de succès, objet promesse avec le solde bloqué pour l'ID opération et le jeton spécifiés. En cas d'erreur, un rejet avec un message d'erreur
Exemple de valeur renvoyée :
{
    "msg": "Current Holding Balance of Operation 'op1' for token 'token1' is: 10",
    "holding_balance": 10
}

Méthodes de gestion du comportement des jetons - Comportement gravable

burn
Cette méthode désactive, ou brûle, les jetons du compte de l'appelant de transaction. L'appelant de cette méthode doit avoir un compte et le rôle de brûleur. La quantité doit être comprise dans les valeurs décimales spécifiées par le paramètre decimal du comportement divisible dans le fichier de spécification.
Ctx.Token.burn(quantity: number, token: <Instance of Token Class>)
Paramètres :
  • quantity: number : nombre total de jetons à brûler.
  • token: <Instance of Token Class> : ressource de jeton à graver.
Renvoie :
  • En cas de succès, une promesse avec un message de succès. En cas d'erreur, rejet avec un message d'erreur.
Exemple de valeur renvoyée :
{
 "msg":"Successfully burned 10 tokens from account id: oaccount~digicur~682bb71de419602af74e3f226345ae308445ca51010737900c1d85f0376152df (Org-Id: Org1MSP, User-Id: admin)"
}