Gestaffeltes TypeScript-Projekt für Token Taxonomy Framework

Blockchain App Builder übernimmt die Eingabe aus Ihrer Tokenspezifikationsdatei und generiert ein voll funktionsfähiges gerüstetes Chaincode-Projekt.

Das Projekt generiert automatisch Tokenlebenszyklusklassen und -funktionen, einschließlich CRUD- und Nicht-CRUD-Methoden. Validierung von Argumenten, Marshalling/Unmarshalling und transparente Persistenzfähigkeit werden automatisch unterstützt.

Informationen zum gerüsteten Projekt und zu Methoden, die nicht direkt mit Token zusammenhängen, finden Sie unter Scaffolded TypeScript Chaincode Project.

Modell

Jede tokenisierte Modellklasse erweitert die Klasse Token, die wiederum die Klasse OchainModel erweitert. Die Klasse Token wird aus ../lib/token importiert. Transparent Persistence Capability (transparente Persistenzfunktion) oder vereinfachtes ORM wird in der Klasse OchainModel erfasst.

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;
 
}

Controller

Die Hauptcontrollerklasse erweitert die Klasse OchainController. Es gibt nur einen Hauptcontroller.

export class DigiCurrCCController extends OchainController{

Sie können eine beliebige Anzahl von Klassen, Funktionen oder Dateien erstellen, aber nur die Methoden, die in der Hauptcontrollerklasse definiert sind, können aufgerufen werden. Die anderen Methoden sind versteckt.

Mit den Token-SDK-Methoden können Sie benutzerdefinierte Methoden für Ihre Geschäftsanwendung schreiben.

Automatisch generierte Token-Methoden

Blockchain App Builder generiert automatisch Methoden zur Unterstützung von Token und Tokenlebenszyklen. Mit diesen Methoden können Sie Token initialisieren, Rollen und Konten verwalten und andere Tokenlebenszyklusaufgaben ohne zusätzliche Codierung ausführen. Controller-Methoden müssen über einen @Validator(...params)-Dekorator verfügen, damit sie aufgerufen werden können.

Methoden für Access Control Management

addTokenAdmin
Mit dieser Methode wird ein Benutzer als Token Admin des Chaincodes hinzugefügt. Diese Methode kann nur von einem Token Admin des Chaincodes aufgerufen werden.
@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);
}
Parameter:
  • org_id: string - Die Mitgliedschaftsserviceanbieter-ID (MSP) des Benutzers in der aktuellen Organisation.
  • user_id: string: Der Benutzername oder die E-Mail-ID des Benutzers.
Rückgabewert:
  • Bei erfolgreicher Ausführung eine Meldung mit Details des Benutzers, der als Token Admin des Chaincodes hinzugefügt wurde.
Beispiel für einen Rückgabewert:
{"msg":"Successfully added Admin (Org_Id: Org1MSP, User_Id: User1)"}
removeTokenAdmin
Mit dieser Methode wird ein Benutzer als Token Admin des Chaincodes entfernt. Diese Methode kann nur von einem Token Admin des Chaincodes aufgerufen werden.
@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);
}
Parameter:
  • org_id: string - Die Mitgliedschaftsserviceanbieter-ID (MSP) des Benutzers in der aktuellen Organisation.
  • user_id: string: Der Benutzername oder die E-Mail-ID des Benutzers.
Rückgabewert:
  • Bei erfolgreicher Ausführung eine Meldung mit Details des Benutzers, der als Token Admin des Chaincodes entfernt wurde.
Beispiel für einen Rückgabewert:
{"msg": "Successfully removed Admin (Org_Id: Org1MSP, User_Id: User1)"}
isTokenAdmin
Diese Methode gibt den booleschen Wert true zurück, wenn der Aufrufer der Funktion ein Token Admin ist. Andernfalls wird false zurückgegeben. Eine Token Admin oder Org Admin kann diese Funktion für jeden anderen Benutzer im Blockchain-Netzwerk aufrufen. Andere Benutzer können diese Methode nur für ihre eigenen Konten aufrufen.
@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);
  }
Parameter:
  • org_id: string - Die Mitgliedschaftsserviceanbieter-ID (MSP) des Benutzers in der aktuellen Organisation.
  • user_id: string: Der Benutzername oder die E-Mail-ID des Benutzers.
Rückgabewert:
  • Die Methode gibt true zurück, wenn der Aufrufer ein Token Admin ist. Andernfalls wird false zurückgegeben.
getAllTokenAdmins
Diese Methode gibt eine Liste aller Benutzer zurück, die ein Token Admin des Chaincodes sind. Diese Methode kann nur vom Token Admin oder einem beliebigen Org Admin des Chaincodes aufgerufen werden.
@Validator()
public async getAllTokenAdmins() {
    await this.Ctx.Auth.checkAuthorization('ADMIN.getAllAdmins', 'TOKEN');
    return await this.Ctx.Admin.getAllAdmins();
}
Parameter:
  • Kein
Rückgabewert:
  • Bei Erfolg ein admins-Array im JSON-Format, das orgId- und userId-Objekte enthält.
Beispiel für einen Rückgabewert:
{"admins":[{"org_id":"Org1MSP","user_id":"admin"}]}
addOrgAdmin
Mit dieser Methode wird ein Benutzer als Org Admin der Organisation hinzugefügt. Diese Methode kann nur von einem Token Admin des Chaincodes oder einem Org Admin der angegebenen Organisation aufgerufen werden.
@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);
  }
Parameter:
  • org_id: string - Die Mitgliedschaftsserviceanbieter-ID (MSP) des Benutzers in der aktuellen Organisation.
  • user_id: string: Der Benutzername oder die E-Mail-ID des Benutzers.
Rückgabewert:
  • Bei Erfolg eine Meldung, die Details des Benutzers enthält, der als Org Admin der Organisation hinzugefügt wurde.
Beispiel für einen Rückgabewert:
{
    "msg": "Successfully added Org Admin (Org_Id: Org1MSP, User_Id: orgAdmin)"
}
removeOrgAdmin
Mit dieser Methode wird ein Benutzer als Org Admin der Organisation entfernt. Diese Methode kann nur von einem Token Admin des Chaincodes oder von einem Org Admin der angegebenen Organisation aufgerufen werden.
@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);
  }
Parameter:
  • org_id: string - Die Mitgliedschaftsserviceanbieter-ID (MSP) des Benutzers in der aktuellen Organisation.
  • user_id: string: Der Benutzername oder die E-Mail-ID des Benutzers.
Rückgabewert:
  • Bei Erfolg eine Meldung, die Details des Benutzers enthält, der als Org Admin der Organisation entfernt wurde.
Beispiel für einen Rückgabewert:
{
  "msg": "Successfully removed Org Admin (Org_Id Org1MSP User_Id orgAdmin)"
}
getOrgAdmins
Diese Methode gibt eine Liste aller Benutzer zurück, die eine Org Admin einer Organisation sind. Diese Methode kann nur von einem Token Admin des Chaincodes oder von einem Org Admin einer beliebigen Organisation aufgerufen werden.
  @Validator()
  public async getOrgAdmins() {
    await this.Ctx.Auth.checkAuthorization("ADMIN.getOrgAdmins", "TOKEN");
    return await this.Ctx.Admin.getAllOrgAdmins();
  }
Parameter:
  • Kein
Rückgabewert:
  • Bei Erfolg ein Array im JSON-Format, das orgId- und userId-Objekte enthält.
Beispiel für einen Rückgabewert:
{
    "admins": [
        {
            "org_id": "Org1MSP",
            "user_id": "orgadmin"
        },
        {
            "org_id": "Org1MSP",
            "user_id": "orgadmin1"
        },
        {
            "org_id": "Org1MSP",
            "user_id": "orgadmin2"
        }
    ]
}

Methoden für die Verwaltung der Tokenkonfiguration

init
Diese Methode wird aufgerufen, wenn der Chaincode bereitgestellt oder aktualisiert wird. Jede Token Admin wird durch die Informationen user_id und org_id im obligatorischen Parameter adminList identifiziert. user_id ist der Benutzername oder die E-Mail-ID des Instanzeigentümers oder des Benutzers, der bei der Instanz angemeldet ist. org_id ist die Mitgliedschaftsserviceprovider-(MSP-)ID des Benutzers in der aktuellen Netzwerkorganisation.
Jeder Token Admin-Benutzer kann andere Token Admin-Benutzer hinzufügen und entfernen, indem er die Methoden addAdmin und removeAdmin aufruft.
public async init(adminList: TokenAdminAsset[]) {
    await this.Ctx.Admin.initAdmin(adminList);
    return;
}
Parameter:
  • adminList array: Ein Array mit {user_id, org_id}-Informationen, das die Liste der Tokenadministratoren angibt. Das Array adminList ist ein obligatorischer Parameter.
Parameterbeispiel: Mac OSX und Linux CLI:
'[{"user_id":"userid", "org_id":"OrgMSPId"}]'
Parameterbeispiel, Microsoft Windows-CLI:
"[{\"user_id\":\"userid\", \"org_id\":\"OrgMSPId\"}]"
Parameterbeispiel, Oracle Blockchain Platform-Konsole:
["[{\"user_id\":\"userid\", \"org_id\":\"OrgMSPId\"}]"]
initialize<Token Name>Token
Diese Methode erstellt ein Token und initialisiert die Tokeneigenschaften. Das Asset und seine Eigenschaften werden in der Statusdatenbank gespeichert. Diese Methode kann nur von einem Token Admin des Chaincodes aufgerufen werden.
@Validator(Digicur)
    public async initializeDigicurToken(token_asset: Digicur) {
        await this.Ctx.Auth.checkAuthorization('TOKEN.save', 'TOKEN');
        return await this.Ctx.Token.save(token_asset)
    }
Parameter:
  • asset: <Token Class>: Das Tokenasset wird als Parameter an diese Methode übergeben. Die Eigenschaften des Tokenassets werden in der Modelldatei beschrieben.
Rückgabewert:
  • Bei Erfolg eine JSON-Darstellung des erstellten Tokenassets.
Beispiel für einen Rückgabewert:
{
    "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
Diese Methode aktualisiert Tokeneigenschaften. Nachdem ein Tokenasset erstellt wurde, können nur die Eigenschaft token_desc und benutzerdefinierte Eigenschaften aktualisiert werden. Diese Methode kann nur von einem Token Admin des Chaincodes aufgerufen werden.
@Validator(Digicur)
public async updateDigicurToken(token_asset: Digicur) {
    await this.Ctx.Auth.checkAuthorization('TOKEN.update', 'TOKEN');
    return await this.Ctx.Token.update(token_asset);
}
Parameter:
  • asset: <Token Class>: Das Tokenasset wird als Parameter an diese Methode übergeben. Die Eigenschaften des Tokenassets werden in der Modelldatei beschrieben.
Rückgabewert:
  • Bei Erfolg eine aktualisierte JSON-Darstellung des Tokenassets.
Beispiel für einen Rückgabewert:
{
    "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
Diese Methode gibt die Anzahl der Dezimalstellen zurück, die für ein partielles Token konfiguriert wurden. Wenn das divisible-Verhalten für das Token nicht angegeben wurde, ist der Standardwert 0. Diese Methode kann nur von einem Token Admin oder Org Admin des Chaincodes aufgerufen werden.
@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.`
    };
}
Parameter:
  • token_id: string: Die ID des Tokens.
Rückgabewert:
  • Bei Erfolg eine JSON-Zeichenfolge mit der Anzahl der Dezimalstellen für Token.
Beispiel für einen Rückgabewert:
{"msg":"Token Id: digiCurr101 has 1 decimal places."}
getTokenById
Diese Methode gibt ein Tokenobjekt zurück, wenn es in der Statusdatenbank vorhanden ist. Diese Methode kann nur von einem Token Admin oder einem Org Admin des Chaincodes aufgerufen werden.
@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;
}
Parameter:
  • token_id: string: Die ID des Tokens.
Rückgabewert:
  • Bei Erfolg ein JSON-Objekt, das das Tokenasset darstellt.
Beispiel für einen Rückgabewert:
{
    "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
Diese Methode gibt die Tokenhistorie für eine angegebene Token-ID zurück. Jeder Benutzer kann diese Methode aufrufen.
  @Validator(yup.string())
  public async getTokenHistory(tokenId: string) {
    await this.Ctx.Auth.checkAuthorization("TOKEN.getTokenHistory", "TOKEN");
    return await this.Ctx.Token.history(tokenId);
  }
Parameter:
  • tokenId: string: Die ID des Tokens.
Rückgabewert:
  • Bei Erfolg ein JSON-Objekt, das die Tokenhistorie darstellt.
Beispiel für einen Rückgabewert:

[
    {
        "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
Diese Methode gibt alle Token zurück, die in der Statusdatenbank gespeichert sind. Diese Methode kann nur von einem Token Admin oder einem Org Admin des Chaincodes aufgerufen werden. Diese Methode verwendet SQL-Rich-Abfragen von Berkeley DB und kann nur aufgerufen werden, wenn eine Verbindung zum Remote-Netzwerk von Oracle Blockchain Platform besteht.
@Validator()
public async getAllTokens() {
    await this.Ctx.Auth.checkAuthorization('TOKEN.getAllTokens', 'TOKEN');
    return await this.Ctx.Token.getAllTokens();
}
Parameter:
  • Kein
Rückgabewert:
  • Bei Erfolg ein JSON-Objekt, das alle Tokenassets darstellt.
getTokensByName
Diese Methode gibt alle Tokenobjekte mit einem angegebenen Namen zurück. Diese Methode kann nur von einem Token Admin oder Org Admin des Chaincodes aufgerufen werden. Diese Methode verwendet SQL-Rich-Abfragen von Berkeley DB und kann nur aufgerufen werden, wenn eine Verbindung zum Remote-Netzwerk von Oracle Blockchain Platform besteht.
@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);
}
Parameter:
  • token_name: string: Der Name der abzurufenden Token. Der Name entspricht der Eigenschaft token_name in der Spezifikationsdatei. Der Wert ist der Klassenname des Tokens.
Rückgabewert:
  • Bei Erfolg ein JSON-Objekt aller Tokenassets, die mit dem Namen übereinstimmen.

Methoden für die Accountverwaltung

createAccount
Diese Methode erstellt einen Account für einen angegebenen Benutzer und ein bestimmtes Token. Ein Konto muss für jeden Benutzer erstellt werden, der zu einem beliebigen Zeitpunkt Token hat. Konten verfolgen Salden, gesperrte Salden und die Transaktionshistorie. Eine Account-ID ist ein alphanumerisches Zeichenset mit dem Präfix oaccount~<token asset name>~, gefolgt von einem Hash des Benutzernamens oder der E-Mail-ID (user_id) des Instanzeigentümers oder des Benutzers, der bei der Instanz angemeldet ist, der Mitgliedschaftsserviceprovider-ID (org_id) des Benutzers in der aktuellen Netzwerkorganisation. Diese Methode kann nur von einem Token Admin des Chaincodes oder von einem Org Admin der angegebenen Organisation aufgerufen werden.
  @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);
  }
Parameter:
  • org_id: string - Die Mitgliedschaftsserviceanbieter-ID (MSP) des Benutzers in der aktuellen Organisation.
  • user_id: string: Der Benutzername oder die E-Mail-ID des Benutzers.
  • token_type: string: Der Typ des Tokens, der fungible sein muss.
Rückgabewert:
  • Bei Erfolg ein JSON-Objekt des erstellten Accounts. Der Parameter bapAccountVersion wird im Accountobjekt zur internen Verwendung definiert.
Beispiel für einen Rückgabewert:
{
  "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
Diese Methode verknüpft ein fungibles Token mit einem Konto. Diese Methode kann nur von einem Token Admin des Chaincodes oder von einem Org Admin der relevanten Organisation aufgerufen werden.
  @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);
  }
Parameter:
  • account_id: string: Die ID des Accounts.
  • token_id: string: Die ID des Tokens.
Rückgabewert:
  • Bei Erfolg ein JSON-Objekt des aktualisierten Accounts. Der Parameter bapAccountVersion wird im Accountobjekt zur internen Verwendung definiert.
Beispiel für einen Rückgabewert:
{
    "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
Diese Methode gibt Kontodetails für einen angegebenen Benutzer und ein bestimmtes Token zurück. Diese Methode kann nur von einem Token Admin des Chaincodes, einem Org Admin der angegebenen Organisation oder dem AccountOwner des Accounts aufgerufen werden.
@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);
}
Parameter:
  • token_id: string: Die ID des Tokens.
  • org_id: string - Die Mitgliedschaftsserviceanbieter-ID (MSP) des Benutzers in der aktuellen Organisation.
  • user_id: string: Der Benutzername oder die E-Mail-ID des Benutzers.
Rückgabewert:
  • Bei Erfolg ein JSON-Accountobjekt, das die folgenden Eigenschaften enthält:
  • account_id: Die ID des Benutzeraccounts.
  • user_id: Der Benutzername oder die E-Mail-ID des Benutzers.
  • org_id - Die Mitgliedschaftsserviceanbieter-ID (MSP) des Benutzers in der aktuellen Organisation.
  • token_id: Die ID des Tokens.
  • token_name: Der Name des Tokens.
  • balance: Der aktuelle Saldo des Kontos.
  • onhold_balance: Der aktuelle gesperrte Saldo des Kontos.
  • bapAccountVersion: Ein Accountobjektparameter für die interne Verwendung.
  • status: Der aktuelle Status des Benutzeraccounts.
Beispiel für einen Rückgabewert:
{
  "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
Diese Methode gibt Accounthistoriendetails für einen angegebenen Benutzer und ein bestimmtes Token zurück. Diese Methode kann nur von einem Token Admin des Chaincodes oder dem AccountOwner des Accounts aufgerufen werden.
  @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);
  }
Parameter:
  • token_id: string: Die ID des Tokens.
  • org_id: string - Die Mitgliedschaftsserviceanbieter-ID (MSP) des Benutzers in der aktuellen Organisation.
  • user_id: string: Der Benutzername oder die E-Mail-ID des Benutzers.
Rückgabewert:
  • Bei Erfolg ein Array von JSON-Accountobjekten, das die folgenden Eigenschaften enthält:
  • trxId: Die Transaktions-ID der vom Buch zurückgegebenen Transaktion.
  • timeStamp: Der Zeitpunkt der Transaktion.
  • value: Eine JSON-Zeichenfolge des Accountobjekts.
Beispiel für einen Rückgabewert:
[
    {
      "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
Diese Methode gibt den aktuellen gesperrten Saldo für ein angegebenes Konto und Token zurück. Diese Methode kann nur von einem Token Admin des Chaincodes, einem Org Admin der angegebenen Organisation oder dem AccountOwner des Accounts aufgerufen werden.
  @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);
  }
Parameter:
  • token_id: string: Die ID des Tokens.
  • org_id: string - Die Mitgliedschaftsserviceanbieter-ID (MSP) des Benutzers in der aktuellen Organisation.
  • user_id: string: Der Benutzername oder die E-Mail-ID des Benutzers.
Rückgabewert:
  • Bei Erfolg eine JSON-Darstellung des aktuellen Zurückbehaltungssaldos.
Beispiel für einen Rückgabewert:
{"msg":"Total Holding Balance is: 0","holding_balance":0}
getAllAccounts
Diese Methode gibt eine Liste aller Konten zurück. Diese Methode kann nur von einem Token Admin des Chaincodes aufgerufen werden. Diese Methode verwendet SQL-Rich-Abfragen von Berkeley DB und kann nur aufgerufen werden, wenn eine Verbindung zum Remote-Netzwerk von Oracle Blockchain Platform besteht.
@Validator()
public async getAllAccounts() {
    await this.Ctx.Auth.checkAuthorization('ACCOUNT.getAllAccounts', 'TOKEN');
    return await this.Ctx.Account.getAllAccounts();
}
Parameter:
  • Kein
Rückgabewert:
  • Bei Erfolg ein JSON-Array aller Konten.
getUserByAccountId
Diese Methode gibt Benutzerdetails (org_id und user_id) für einen angegebenen Account zurück. Diese Methode kann von jedem Benutzer des Chaincodes aufgerufen werden.
@Validator(yup.string())
public async getUserByAccountId(account_id: string) {
    return await this.Ctx.Account.getUserByAccountId(account_id);
}
Parameter:
  • account_id: string: Die ID des Accounts.
Rückgabewert:
  • Bei Erfolg ein JSON-Objekt der Benutzerdetails (org_id, token_id und user_id).
Beispiel für einen Rückgabewert:
{
    "token_id": "digiCurr101",
    "user_id": "user1",
    "org_id": "Org1MSP"
}
getAccountBalance
Diese Methode gibt den aktuellen Saldo für ein angegebenes Konto und Token zurück. Diese Methode kann nur von einem Token Admin des Chaincodes, einem Org Admin der angegebenen Organisation oder dem AccountOwner des Accounts aufgerufen werden.
  @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);
  }
Parameter:
  • token_id: string: Die ID des Tokens.
  • org_id: string - Die Mitgliedschaftsserviceanbieter-ID (MSP) des Benutzers in der aktuellen Organisation.
  • user_id: string: Der Benutzername oder die E-Mail-ID des Benutzers.
Rückgabewert:
  • Bei Erfolg eine JSON-Darstellung des aktuellen Kontosaldos.
Beispiel für einen Rückgabewert:
{"msg":"Current Balance is: 0","user_balance":0}
getAllOrgAccounts
Diese Methode gibt eine Liste aller Tokenaccounts zurück, die zu einer angegebenen Organisation gehören. Diese Methode kann nur von einem Token Admin des Chaincodes oder von einem Org Admin der angegebenen Organisation aufgerufen werden.
  @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);
  }
Parameter:
  • org_id: string – Die Mitgliedschaftsdienstleister-ID (MSP) der Organisation.
Rückgabewert:
  • Bei Erfolg eine Liste aller Accounts für die angegebene Organisation.
Beispiel für einen Rückgabewert:
[
    {
        "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
        }
    }
]

Methoden für die Rollenverwaltung

addRole
Mit dieser Methode wird eine Rolle zu einem angegebenen Benutzer und Token hinzugefügt. Diese Methode kann nur von einer Token Admin des Chaincodes oder von einer Org Admin der angegebenen Organisation aufgerufen werden, die auch die angegebene Rolle innehat.
  @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);
  }
Parameter:
  • token_id: string: Die ID des Tokens.
  • role: string: Der Name der Rolle, die dem angegebenen Benutzer hinzugefügt werden soll. Die Verhaltensweisen mintable und burnable entsprechen den Eigenschaften minter_role_name und burner_role_name der Spezifikationsdatei. Ebenso entspricht die Rolle notary der Eigenschaft notary_role_name der Spezifikationsdatei.
  • org_id: string - Die Mitgliedschaftsserviceanbieter-ID (MSP) des Benutzers in der aktuellen Organisation.
  • user_id: string: Der Benutzername oder die E-Mail-ID des Benutzers.
Rückgabewert:
  • Bei Erfolg eine Nachricht mit Accountdetails.
Beispiel für einen Rückgabewert:
{"msg":"Successfully added role 'minter' to Account Id: oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f (Org-Id: Org1MSP, User-Id: user1)"}
removeRole
Diese Methode entfernt eine Rolle aus einem angegebenen Benutzer und Token. Diese Methode kann nur von einer Token Admin des Chaincodes oder von einer Org Admin der angegebenen Organisation aufgerufen werden, die auch die angegebene Rolle innehat.
  @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);
  }
Parameter:
  • token_id: string: Die ID des Tokens.
  • role: string: Der Name der Rolle, die vom angegebenen Benutzer entfernt werden soll. Die Verhaltensweisen mintable und burnable entsprechen den Eigenschaften minter_role_name und burner_role_name der Spezifikationsdatei. Ebenso entspricht die Rolle notary der Eigenschaft notary_role_name der Spezifikationsdatei.
  • org_id: string - Die Mitgliedschaftsserviceanbieter-ID (MSP) des Benutzers in der aktuellen Organisation.
  • user_id: string: Der Benutzername oder die E-Mail-ID des Benutzers.
Rückgabewert:
  • Bei Erfolg eine Nachricht mit Accountdetails.
Beispiel für einen Rückgabewert:
{"msg":"Successfully removed role 'minter' from Account Id: oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f (Org-Id: Org1MSP, User-Id: user1)"}
getAccountsByRole
Diese Methode gibt eine Liste aller Konto-IDs für eine angegebene Rolle und ein bestimmtes Token zurück. Diese Methode kann nur von einem Token Admin des Chaincodes aufgerufen werden.
@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);
}
Parameter:
  • token_id: string: Die ID des Tokens.
  • role: string: Der Name der Rolle, nach der gesucht werden soll.
Rückgabewert:
  • Bei Erfolg ein JSON-Array mit Konto-IDs.
Beispiel für einen Rückgabewert:
{"accounts":["oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f"]}
getAccountsByUser
Diese Methode gibt eine Liste aller Konto-IDs für eine bestimmte Organisationskennung und Benutzerkennung zurück. Diese Methode kann nur von der Token Admin des Chaincodes, von der Org Admin der angegebenen Organisation oder von der in den Parametern angegebenen Account Owner aufgerufen werden.
  @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);
  }
Parameter:
  • org_id string - Die Mitgliedschaftsserviceanbieter-ID (MSP) des Benutzers in der aktuellen Organisation.
  • user_id string: Der Benutzername oder die E-Mail-ID des Benutzers.
Rückgabewert:
  • Bei Erfolg ein JSON-Array mit Konto-IDs.
Beispiel für einen Rückgabewert:
{"accounts":["oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f"]}
getUsersByRole
Diese Methode gibt eine Liste aller Benutzer für eine angegebene Rolle und ein bestimmtes Token zurück. Diese Methode kann nur von einem Token Admin des Chaincodes aufgerufen werden.
@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);
}
Parameter:
  • token_id: string: Die ID des Tokens.
  • role: string: Der Name der Rolle, nach der gesucht werden soll.
Rückgabewert:
  • Bei Erfolg ein JSON-Array der Benutzerobjekte (org_id, token_id und user_id).
Beispiel für einen Rückgabewert:
{"users":[{"token_id":"digiCurr101","user_id":"user1","org_id":"Org1MSP"}]}
isInRole
Diese Methode gibt einen booleschen Wert zurück, um anzugeben, ob ein Benutzer und ein Token über eine angegebene Rolle verfügen. Diese Methode kann nur von einem Token Admin des Chaincodes, dem AccountOwner des Accounts oder einem Org Admin der angegebenen Organisation aufgerufen werden.
  @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) };
  }
Parameter:
  • token_id: string: Die ID des Tokens.
  • org_id: string - Die Mitgliedschaftsserviceanbieter-ID (MSP) des Benutzers in der aktuellen Organisation.
  • user_id: string: Der Benutzername oder die E-Mail-ID des Benutzers.
  • role: string: Der Name der Rolle, nach der gesucht werden soll.
Rückgabewert:
  • Bei Erfolg eine JSON-Zeichenfolge des booleschen Ergebnisses.
Beispiel für einen Rückgabewert:
{"result":"false"}
getOrgAccountsByRole
Diese Methode gibt Informationen zu allen Firmen zurück, die eine bestimmte Rolle in einer bestimmten Organisation haben. Diese Methode kann nur von einem Token Admin des Chaincodes oder von einem Org Admin der angegebenen Organisation aufgerufen werden.
   @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);
  }
Parameter:
  • token_id: string: Die ID des Tokens.
  • role: string: Der Name der zu prüfenden Rolle.
  • org_id: string – Die Mitgliedschaftsdienstleister-ID (MSP) der Organisation.
Rückgabewert:
  • Bei Erfolg eine Liste aller Firmen mit der angegebenen Rolle in der angegebenen Organisation.
Beispiel für einen Rückgabewert:
{
    "accounts": [
        "oaccount~abc74791148b761352b98df58035601b6f5480448ac2b4a3a7eb54bdbebf48eb",
        "oaccount~9c650574af9025a6106c8d12a801b079eda9ae2e3399fc2fbd5bd683d738a850"
    ]
}
getOrgUsersByRole
Diese Methode gibt Informationen zu allen Benutzern zurück, die eine bestimmte Rolle in einer bestimmten Organisation haben. Diese Methode kann nur von einem Token Admin des Chaincodes oder von einem Org Admin der angegebenen Organisation aufgerufen werden.
  @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);
  }
Parameter:
  • token_id: string: Die ID des Tokens.
  • role: string: Der Name der zu prüfenden Rolle.
  • org_id: string – Die Mitgliedschaftsdienstleister-ID (MSP) der Organisation.
Rückgabewert:
  • Bei Erfolg eine Liste aller Benutzer mit der angegebenen Rolle in der angegebenen Organisation.
Beispiel für einen Rückgabewert:
{
    "users": [
        {
            "token_id": "token",
            "user_id": "admin",
            "org_id": "Org1MSP"
        },
        {
            "token_id": "token",
            "user_id": "orgAdmin",
            "org_id": "Org1MSP"
        }
    ]
}

Methoden für das Transaktionshistorienmanagement

getAccountTransactionHistory
Diese Methode gibt ein Array von Kontotransaktionshistoriendetails für einen angegebenen Benutzer und ein bestimmtes Token zurück. Diese Methode kann nur von der Token Admin des Chaincodes, einer Org Admin der angegebenen Organisation oder der AccountOwner des Accounts aufgerufen werden.
 @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());
  }
Parameter:
  • token_id: string: Die ID des Tokens.
  • org_id: string - Die Mitgliedschaftsserviceanbieter-ID (MSP) des Benutzers in der aktuellen Organisation.
  • user_id: string: Der Benutzername oder die E-Mail-ID des Benutzers.
Rückgabewert:
  • Bei Erfolg ein Array von JSON-Kontotransaktionsobjekten, das die folgenden Eigenschaften enthält:
  • transaction_id: Die ID der Transaktion.
  • transacted_account: Das Konto, mit dem die Transaktion stattgefunden hat.
  • transaction_type: Der Transaktionstyp.
  • transacted_amount: Der Betrag der Transaktion.
  • timestamp: Der Zeitpunkt der Transaktion.
  • balance: Der Kontosaldo zum Zeitpunkt der Transaktion.
  • onhold_balance: Der gesperrte Saldo zum Zeitpunkt der Transaktion.
  • token_id: Die ID des Tokens.
  • holding_id: Eine eindeutige ID, die von der Methode holdTokens zurückgegeben wird.
Beispiel für einen Rückgabewert:
[
    {
        "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
Diese Methode gibt ein Array von Kontotransaktionshistoriendetails für einen angegebenen Benutzer und ein bestimmtes Token zurück. Diese Methode kann nur von der Token Admin des Chaincodes, einer Org Admin der angegebenen Organisation oder der AccountOwner des Accounts aufgerufen werden. Diese Methode kann nur aufgerufen werden, wenn eine Verbindung zum Remote-Oracle Blockchain Platform-Netzwerk besteht.
  @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);
  }
Parameter:
  • token_id: string: Die ID des Tokens.
  • org_id: string - Die Mitgliedschaftsserviceanbieter-ID (MSP) des Benutzers in der aktuellen Organisation.
  • user_id: string: Der Benutzername oder die E-Mail-ID des Benutzers.
  • filters: string: Ein optionaler Parameter. Wenn leer, werden alle Datensätze zurückgegeben. Die Eigenschaft PageSize bestimmt die Anzahl der zurückzugebenden Datensätze. Wenn PageSize 0 ist, ist die Standardseitengröße 20. Die Eigenschaft Bookmark bestimmt den Anfangsindex der zurückzugebenden Datensätze. Weitere Informationen finden Sie in der Hyperledger Fabric-Dokumentation. Die Eigenschaften StartTime und EndTime müssen im RFC-3339-Format angegeben werden.
Beispiel:

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
  }
]
getSubTransactionById
Diese Methode gibt ein Array von Kontotransaktionshistoriendetails für einen angegebenen Benutzer und ein bestimmtes Token zurück. Diese Methode kann nur vom Token Admin des Chaincodes oder vom AccountOwner des Accounts aufgerufen werden.
  @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);
  }
Parameter:
  • transaction_id: string: Die ID der Massentransfertransaktion.
Rückgabewert:
  • Ein Array von untergeordneten Kontotransaktionsobjekten im JSON-Format für eine angegebene Massentransaktions-ID.
Beispiel:

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
Diese Methode gibt ein Array von Kontotransaktionshistoriendetails für eine angegebene Transaktion zurück.
  @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);
  } 
Parameter:
  • transaction_id: string: Die ID der Transaktion.
  • filters: string: Ein optionaler Parameter. Wenn leer, werden alle Datensätze zurückgegeben. Die Eigenschaft PageSize bestimmt die Anzahl der zurückzugebenden Datensätze. Wenn PageSize 0 ist, ist die Standardseitengröße 20. Die Eigenschaft Bookmark bestimmt den Anfangsindex der zurückzugebenden Datensätze. Weitere Informationen finden Sie in der Hyperledger Fabric-Dokumentation. Die Eigenschaften StartTime und EndTime müssen im RFC-3339-Format angegeben werden.
Rückgabewert:
  • Ein Array von untergeordneten Kontotransaktionsobjekten im JSON-Format für eine angegebene Massentransaktions-ID.
Beispiel:

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
Diese Methode gibt die Historie eines Transaction-Assets zurück.
@Validator(yup.string())
    public async getTransactionById(transaction_id: string) {
        return await this.Ctx.Transaction.getTransactionById(transaction_id);
    }
Parameter:
  • transaction_id string: Die ID des Transaktionsassets.
Rückgabewert:
  • Bei Erfolg ein JSON-Array der Historie für die Transaktion.
Beispiel für einen Rückgabewert:
{
    "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
Diese Methode löscht ältere Transaktionen aus der Statusdatenbank.
@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);
    }
Parameter:
  • time_to_expiration Date: Ein Zeitstempel, der angibt, wann Transaktionen gelöscht werden sollen. Transaktionsassets, die älter als die angegebene Zeit sind, werden gelöscht.
Beispiel für einen Rückgabewert:
"payload": {
    "msg": "Successfuly deleted transaction older than date: Thu Aug 19 2021 11:19:36 GMT+0000 (Coordinated Universal Time).",
    "transactions": [
        "otransaction~ec3366dd48b4ce2838f820f2f138648e6e55a07226713e59b411ff31b0d21058"
    ]
}

Methoden für das Tokenverhaltensmanagement - Mintable Behavior

issueTokens
Diese Methode bildet Token ab, die dann dem Aufrufer der Methode gehören. Der Anrufer muss über einen Account und die Minter-Rolle verfügen. Die Anzahl der Token, die geprägt werden können, wird durch die Eigenschaft max_mint_quantity des Verhaltens mintable in der Spezifikationsdatei begrenzt. Wenn die Eigenschaft max_mint_quantity nicht angegeben ist, kann eine unbegrenzte Anzahl von Token geprägt werden. Die Menge muss innerhalb der Dezimalwerte liegen, die durch den Parameter decimal des Verhaltens divisible in der Spezifikationsdatei angegeben werden. Diese Methode kann nur von der AccountOwner des Accounts mit der Minter-Rolle aufgerufen werden.
@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);
}
Parameter:
  • token_id: string: Die ID des Tokens.
  • quantity: Die Anzahl der zu prägenden Token.
Rückgabewert:
  • Bei Erfolg eine Nachricht mit Accountdetails.
Beispiel für einen Rückgabewert:
{
    "msg": "Successfully minted 1000 tokens to Account Id: \
oaccount~digicur~682bb71de419602af74e3f226345ae308445ca51010737900c1d85f0376152df (Org-Id: Org1MSP, User-Id: user1)  ",
}
getTotalMintedTokens
Diese Methode gibt die Gesamtanzahl der geminteten Token für ein angegebenes Token zurück. Diese Methode kann nur von einem Token Admin oder einem beliebigen Org Admin des Chaincodes aufgerufen werden.
@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
     };
 }
Parameter:
  • token_id: string: Die ID des Tokens.
Rückgabewert:
  • Bei Erfolg eine JSON-Zeichenfolge, die die Gesamtanzahl der Token angibt.
Beispiel für einen Rückgabewert:
{"msg":"Total minted token for Token Id: digiCurr101 is 100 tokens.","quantity":100}
getNetTokens
Diese Methode gibt die Gesamtanzahl der im System verfügbaren Token für ein angegebenes Token zurück. Die Nettotokensumme ist die Anzahl der verbleibenden Token, nachdem Token verbrannt wurden. In Gleichungsform: net tokens = insgesamt geprägte tokens - insgesamt gebrannte tokens. Wenn keine Token gebrannt werden, entspricht die Anzahl der Net Token der Gesamtanzahl der geprägten Token. Diese Methode kann nur von einem Token Admin oder einem beliebigen Org Admin des Chaincodes aufgerufen werden.
@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
	};
}
Parameter:
  • token_id: string: Die ID des Tokens.
Rückgabewert:
  • Bei Erfolg eine JSON-Zeichenfolge, die die Nettoanzahl von Token angibt.
Beispiel für einen Rückgabewert:
{"msg":"Net supply of token for Token Id: digiCurr101 is 0 tokens.","quantity":0}

Methoden für das Tokenverhaltensmanagement - Übertragbares Verhalten

transferTokens
Diese Methode überträgt Token vom Aufrufer auf ein angegebenes Konto. Der Aufrufer der Methode muss einen Account haben. Die Menge muss innerhalb der Dezimalwerte liegen, die durch den Parameter decimal des Verhaltens divisible in der Spezifikationsdatei angegeben werden. Diese Methode kann nur von der AccountOwner des Accounts aufgerufen werden.
@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);
}
Parameter:
  • token_id: string: Die ID des Tokens.
  • to_org_id: string – Die Mitgliedschaftsdienstleister-ID (MSP) des Empfängers (Zahlungsempfängers) in der aktuellen Organisation.
  • to_user_id: string: Der Benutzername oder die E-Mail-ID des Empfängers.
  • quantity: number: Die Anzahl der zu übertragenden Token.
Rückgabewert:
  • Bei Erfolg eine Meldung mit Details für Zahler- und Zahlungsempfängerkonten.
Beispiel für einen Rückgabewert:
{
    "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
Diese Methode wird verwendet, um eine Massenübertragung von Token aus dem Aufruferkonto auf die Konten durchzuführen, die im Objekt flow angegeben sind. Die Mengen müssen innerhalb der Dezimalwerte liegen, die durch den Parameter decimal des Verhaltens divisible im Aufrufer der Spezifikation file.The dieser Methode angegeben werden, und ein Account muss bereits erstellt sein. Diese Methode kann nur von der AccountOwner des Accounts aufgerufen werden.
@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);
}
Parameter:
  • token_id: string: Die ID des Tokens.
  • flow : object[]: Ein Array von JSON-Objekten, die Empfänger und Mengen angeben.
    [{
    	"to_org_id": "Org1MSP",
    	"to_user_id": "user1",
    	"quantity": 10
    }, {
    	"to_org_id": "Org1MSP",
    	"to_user_id": "user2",
    	"quantity": 10
    }]
    • to_orgId: string: Die Mitgliedschaftsdienstleister-ID (MSP) des Empfängers in der aktuellen Organisation.
    • userId: string: Der Benutzername oder die E-Mail-ID des Empfängers.
    • quantity: number: Die Anzahl der zu übertragenden Token.
Rückgabewert:
  • Eine Meldung, die auf Erfolg hinweist.
Beispiel für einen Rückgabewert:
{
    "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
        }
    ]
}

Methoden für das Tokenverhaltensmanagement - Zurückstellbares Verhalten

holdTokens
Diese Methode erstellt eine Sperre im Namen des Eigentümers der Token mit dem Konto to_account_id. Es wird ein Notarkonto angegeben, das für den Abschluss oder die Freigabe der Sperre verantwortlich ist. Wenn die Sperre erstellt wird, wird der angegebene Tokensaldo des Zahlers gesperrt. Ein gesperrter Saldo kann erst übertragen werden, wenn die Sperre abgeschlossen oder freigegeben wurde. Für den Aufrufer dieser Methode muss bereits ein Account erstellt sein. Diese Methode kann nur von der AccountOwner des Accounts aufgerufen werden.
@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);
}
Parameter:
  • token_id: string: Die ID des Tokens.
  • operation_id: string: Eine eindeutige ID zur Identifizierung des Sperrvorgangs. In der Regel wird diese ID von der Clientanwendung übergeben.
  • to_org_id: string: Die Mitgliedschaftsdienstleister-ID (MSP) des Empfängers in der aktuellen Organisation.
  • to_user_id: string: Der Benutzername oder die E-Mail-ID des Empfängers.
  • notary_org_id: string – Die Mitgliedschaftsdienstleister-ID (MSP) des Notars in der aktuellen Organisation.
  • notary_user_id: string: Der Benutzername oder die E-Mail-ID des Notars.
  • quantity: number: Die Anzahl der Token, die gesperrt werden sollen.
  • time_to_expiration: Die Zeit, zu der die Sperre abläuft. Geben Sie 0 für eine permanente Sperre an. Andernfalls verwenden Sie das RFC-3339-Format. Beispiel: 2021-06-02T12:46:06Z
Rückgabewert:
  • Bei Erfolg eine Nachricht mit dem Account des Anrufers und Details zur Sperre.
Beispiel für einen Rückgabewert:
{
  "msg":"AccountId oaccount~digicur~682bb71de419602af74e3f226345ae308445ca51010737900c1d85f0376152df (Org-Id: Org1MSP , User-Id: admin) is   successfully holding 10 tokens"
}
executeHoldTokens
Diese Methode schließt eine Sperre eines Tokens ab. Eine Menge von Token, die zuvor von einem Token-Eigentümer gehalten wurden, wird an einen Empfänger übertragen. Wenn der Wert quantity kleiner als der tatsächliche Sperrwert ist, ist der Restbetrag wieder für den ursprünglichen Eigentümer der Token verfügbar. Diese Methode kann nur von der AccountOwner-ID mit der Rolle notary für die angegebene Vorgangs-ID aufgerufen werden. Die Sperre kann nur durch den Notar abgeschlossen werden.
@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);
}
Parameter:
  • token_id: string: Die ID des Tokens.
  • operation_id: string: Eine eindeutige ID zur Identifizierung des Sperrvorgangs. In der Regel wird diese ID von der Clientanwendung übergeben.
  • quantity: number: Die Anzahl der zurückgestellten Token, die übertragen werden sollen.
Rückgabewert:
  • Bei Erfolg eine Meldung mit der Konto-ID des Anrufers und der Transaktionsmenge.
Beispiel für einen Rückgabewert:
{
 "msg":"Account Id: oaccount~digicur~682bb71de419602af74e3f226345ae308445ca51010737900c1d85f0376152df (Org-Id: Org1MSP, User-Id: admin) is successfully executed '10' tokens from Operation Id 'opr_121'."
}
releaseHoldTokens
Diese Methode gibt eine Sperre für Token frei. Die Übertragung ist nicht abgeschlossen, und alle gespeicherten Token stehen dem ursprünglichen Eigentümer wieder zur Verfügung. Diese Methode kann von der AccountOwner-ID mit der Rolle notary innerhalb der angegebenen Frist oder vom Zahler, Zahlungsempfänger oder Notar nach der angegebenen Frist aufgerufen werden.
@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);
}
Parameter:
  • token_id: string: Die ID des Tokens.
  • operation_id: string: Eine eindeutige ID zur Identifizierung des Sperrvorgangs. In der Regel wird diese ID von der Clientanwendung übergeben.
Rückgabewert:
  • Bei Erfolg eine Meldung, in der angegeben wird, dass die Sperre freigegeben wurde.
Beispiel für einen Rückgabewert:
{
 "msg":"Successfully released '10' tokens from Operation Id 'opr_121' to Account Id: oaccount~digicur~682bb71de419602af74e3f226345ae308445ca51010737900c1d85f0376152df (Org-Id: Org1MSP, User-Id: user1)."
}
getOnHoldIds
Diese Methode gibt eine Liste aller Halte-IDs für ein angegebenes Konto zurück. Diese Methode kann von einer Token Admin des Chaincodes, einer Org Admin der angegebenen Organisation oder der AccountOwner des Accounts aufgerufen werden.
  @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);
  }
Parameter:
  • token_id: string: Die ID des Tokens.
  • org_id: string - Die Mitgliedschaftsserviceanbieter-ID (MSP) des Benutzers in der aktuellen Organisation.
  • user_id: string: Der Benutzername oder die E-Mail-ID des Benutzers.
Rückgabewert:
  • Bei Erfolg eine JSON-Liste mit IDs.
Beispiel für einen Rückgabewert:
{"msg":"Holding Ids are: ohold~digicur~digiCurr101~opr_121","holding_ids":["ohold~digicur~digiCurr101~opr_121"]}
getOnHoldDetailsWithOperationId
Diese Methode gibt die zurückgestellten Transaktionsdetails für eine angegebene Vorgangs-ID und ein bestimmtes Token zurück. Diese Methode kann von jedem aufgerufen werden.
@Validator(yup.string(), yup.string())
public async getOnHoldDetailsWithOperationId(token_id: string, operation_id: string) {
    return await this.Ctx.Hold.getOnHoldDetailsWithOperationId(token_id, operation_id);
}
Parameter:
  • token_id: string: Die ID des Tokens.
  • operation_id: string: Eine eindeutige ID zur Identifizierung des Sperrvorgangs. In der Regel wird diese ID von der Clientanwendung übergeben.
Rückgabewert:
  • Bei Erfolg ein JSON-Halteobjekt, das die folgenden Eigenschaften enthält:
  • holding_id: Die Holding-ID der Transaktion.
  • operation_id: string: Eine eindeutige ID zur Identifizierung des Sperrvorgangs. In der Regel wird diese ID von der Clientanwendung übergeben.
  • from_account_id: Die Konto-ID des aktuellen Eigentümers der zurückgestellten Token.
  • to_account_id: Die Konto-ID des Empfängers.
  • notary_account_id: Die Konto-ID des Notars.
  • token_id: string: Die ID des gespeicherten Tokens.
  • quantity: Die Anzahl der Token, die für die Holding-ID gesperrt sind.
  • time_to_expiration: Die Dauer bis zum Ablauf der Sperre.
Beispiel für einen Rückgabewert:
{
    "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
Diese Methode gibt den gesperrten Saldo für eine angegebene Vorgangs-ID und ein Token zurück. Diese Methode kann von jedem aufgerufen werden.
@Validator(yup.string(), yup.string())
public async getOnHoldBalanceWithOperationId(token_id: string, operation_id: string) {
    return await this.Ctx.Hold.getOnHoldBalanceWithOperationId(token_id, operation_id);
}
Parameter:
  • token_id: string: Die ID des Tokens.
  • operation_id: string: Eine eindeutige ID zur Identifizierung des Sperrvorgangs. In der Regel wird diese ID von der Clientanwendung übergeben.
Rückgabewert:
  • Bei Erfolg eine JSON-Zeichenfolge, die den Haltebalance angibt.
Beispiel für einen Rückgabewert:
{
	"msg": "Current Holding Balance of Operation 'opr_121' for token 'digiCurr101' is: 10",
	"holding_balance": 10
}

Methoden für das Tokenverhaltensmanagement - Burnable Behavior

burnTokens
Diese Methode deaktiviert oder verbrennt Token aus dem Konto des Transaktionsaufrufers. Der Aufrufer dieser Methode muss über einen Account und die Brennerrolle verfügen. Die Menge muss innerhalb der Dezimalwerte liegen, die durch den Parameter decimal des Verhaltens divisible in der Spezifikationsdatei angegeben werden. Diese Methode kann von der AccountOwner des Accounts mit der Brennerrolle aufgerufen werden.
@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);
}
Parameter:
  • token_id: string: Die ID des Tokens.
  • quantity: Die Anzahl der zu brennenden Token.
Rückgabewert:
  • Bei Erfolg eine Erfolgsmeldung mit der Anzahl der verbrannten Token und der Konto-ID.
Beispiel für einen Rückgabewert:
{
    "msg": "Successfully burned 10 tokens from account id: oaccount~digicur~682bb71de419602af74e3f226345ae308445ca51010737900c1d85f0376152df (Org-Id: Org1MSP, User-Id: admin)"
}

Benutzerdefinierte Methoden

Mit den Token-SDK-Methoden können Sie benutzerdefinierte Methoden für Ihre Geschäftsanwendung schreiben.

Um doppelte Ausgaben zu vermeiden, kombinieren Sie nicht mehrere asynchrone Funktionen, die auf denselben Schlüssel/Wert-Paaren in der Statusdatenbank arbeiten. Verwenden Sie stattdessen die Methode bulkTransferTokens, um mehrere Übertragungen in einer Methode vorzunehmen.

Das folgende Beispiel zeigt, wie Sie Token-SDK-Methoden in benutzerdefinierten Methoden verwenden. Wenn die Methode buyTicket aufgerufen wird, überträgt sie 20 Token vom Konto des Anrufers auf das Konto des Verkäufers und gibt die Transaktionsnachricht der Übertragung zurück.

@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;
}

Wenn Sie in einer benutzerdefinierten Methode mehrere Token-SDK-Methoden verwenden, verwenden Sie keine Methoden, die sich auf dieselben Schlüssel/Wert-Paare in der Statusdatenbank auswirken. Das folgende Beispiel zeigt die falsche Möglichkeit, mehrere Übertragungen vorzunehmen:

@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);
}

Verwenden Sie stattdessen die Methode bulkTransferTokens, um aus dem Konto des Anrufers auf mehrere Konten zu übertragen, wie im folgenden Code-Snippet dargestellt.

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

Hinweis:

Wenn Sie in einer benutzerdefinierten Methode mehrere Token-SDK-Methoden verwenden, die sich auf dieselben Schlüssel/Wert-Paare in der Statusdatenbank auswirken können, aktivieren Sie die MVCC-Optimierung für Token Chaincodes. Weitere Informationen finden Sie unter MVCC-Optimierung.

Token-SDK-Methoden

Methoden für die Zugriffskontrolle

Das Token-SDK stellt eine Zugriffskontrollfunktion bereit. Einige Methoden können nur von einem Token Admin, Org Admin oder AccountOwner des Tokens aufgerufen werden. Mit dieser Funktion können Sie sicherstellen, dass Vorgänge nur von den beabsichtigten Benutzern ausgeführt werden. Jeder nicht autorisierte Zugriff führt zu einem Fehler. Um die Zugriffskontrollfunktion zu verwenden, importieren Sie die Klasse Authorization aus dem Modul ../lib/auth.
import { Authorization } from '../lib/auth';
addAdmin
Diese Methode fügt einen Benutzer als Token Admin des Token Chaincodes hinzu.
Ctx.Admin.addAdmin(org_id: string, user_id: string)
Parameter:
  • user_id: Der Benutzername oder die E-Mail-ID des Benutzers.
  • org_id – Die Mitgliedschaftsdienstleister-ID (MSP) des Benutzers in der aktuellen Netzwerkorganisation.
Rückgabewert:
  • Bei Erfolg eine Promise-Nachricht mit einem JSON-Objekt, das Details für den Benutzer auflistet, der als Token Admin des Token Chaincodes hinzugefügt wurde. Bei Fehler eine Ablehnung mit einer Fehlermeldung.
Beispiel für einen Rückgabewert:
{
    "msg": "Successfully added Admin (Org_Id: Org1MSP, User_Id: user1)"
}
removeAdmin
Diese Methode entfernt einen Benutzer als Token Admin des Token Chaincodes.
Ctx.Admin.removeAdmin(org_id: string, user_id: string)
Parameter:
  • user_id: Der Benutzername oder die E-Mail-ID des Benutzers.
  • org_id – Die Mitgliedschaftsdienstleister-ID (MSP) des Benutzers in der aktuellen Netzwerkorganisation.
Rückgabewert:
  • Bei Erfolg eine Promise-Nachricht mit einem JSON-Objekt, das Details für den Benutzer auflistet, der nicht mehr Token Admin des Tokenkettencodes ist. Bei Fehler eine Ablehnung mit einer Fehlermeldung.
Beispiel für einen Rückgabewert:
{
    "msg": "Successfully removed Admin (Org_Id: Org1MSP, User_Id: user1)"
}
getAllAdmins
Diese Methode gibt eine Liste aller Benutzer zurück, die ein Token Admin des Token Chaincodes sind.
Ctx.Admin.getAllAdmins()
Parameter:
  • Kein
Rückgabewert:
  • Bei Erfolg ein Promise mit einem JSON-Objekt, das Details für alle Benutzer auflistet, die eine Token Admin des Token Chaincodes sind. Bei Fehler eine Ablehnung mit einer Fehlermeldung.
Beispiel für einen Rückgabewert:
{
    "admins": [
        {
            "orgId": "Org1MSP",
            "userId": "admin"
        }
    ]
}
checkAuthorization
Mit dieser Methode können Sie einem Vorgang eine Zugriffskontrollprüfung hinzufügen. Bestimmte Tokenmethoden können nur von einem Token Admin oder AccountOwner des Tokens oder von MultipleAccountOwner für Benutzer mit mehreren Accounts ausgeführt werden. Die Zugriffskontrollzuordnung wird in der Datei ../lib/constant.ts beschrieben. Sie können die Zugriffskontrolle ändern, indem Sie die Datei ../lib/constant.ts bearbeiten. Um Ihre eigene Zugriffskontrolle zu verwenden oder die Zugriffskontrolle zu deaktivieren, entfernen Sie den Zugriffskontrollcode aus den automatisch generierten Controllermethoden und benutzerdefinierten Methoden.
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>);
Parameter:
  • classFuncName: string: Der Zuordnungswert zwischen der Klasse und den Methoden, wie in der Datei ../lib/constant.ts beschrieben.
  • ...args: Ein Variablenargument, bei dem args[0] die Konstante 'TOKEN' übernimmt und args[1] die account_id übernimmt, um eine Zugriffskontrollprüfung für eine AccountOwner hinzuzufügen. Um eine Zugriffskontrollprüfung für eine MultipleAccountOwner hinzuzufügen, nimmt args[1] die org_id und args[2] die user_id an.
Rückgabewert:
  • Auf Erfolg, ein Versprechen. Bei Fehler eine Ablehnung mit einer Fehlermeldung.
isUserTokenAdmin
Diese Methode gibt den booleschen Wert true zurück, wenn der Aufrufer der Funktion ein Token Admin ist. Andernfalls gibt die Methode false zurück.
Ctx.Auth.isUserTokenAdmin()
Parameter:
  • user_id: Der Benutzername oder die E-Mail-ID des Benutzers.
  • org_id – Die Mitgliedschaftsdienstleister-ID (MSP) des Benutzers in der aktuellen Netzwerkorganisation.
Rückgabewert:
  • Eine boolesche Antwort und eine Fehlermeldung, wenn ein Fehler auftritt.
addOrgAdmin
Mit dieser Methode wird ein Benutzer als Org Admin der Organisation hinzugefügt.
Ctx.Admin.addOrgAdmin(org_id, user_id)
Parameter:
  • org_id: string - Die Mitgliedschaftsserviceanbieter-ID (MSP) des Benutzers in der aktuellen Organisation.
  • user_id: string: Der Benutzername oder die E-Mail-ID des Benutzers.
Rückgabewert:
  • Bei Erfolg eine Meldung, die Details des Benutzers enthält, der als Org Admin der Organisation hinzugefügt wurde.
Beispiel für einen Rückgabewert:
{
    "msg": "Successfully added Org Admin (Org_Id: Org1MSP, User_Id: orgAdmin)"
}
removeOrgAdmin
Mit dieser Methode wird ein Benutzer als Org Admin der Organisation entfernt.
Ctx.Admin.removeOrgAdmin(org_id, user_id)
Parameter:
  • org_id: string - Die Mitgliedschaftsserviceanbieter-ID (MSP) des Benutzers in der aktuellen Organisation.
  • user_id: string: Der Benutzername oder die E-Mail-ID des Benutzers.
Rückgabewert:
  • Bei Erfolg eine Meldung, die Details des Benutzers enthält, der als Org Admin der Organisation entfernt wurde.
Beispiel für einen Rückgabewert:
{
  "msg": "Successfully removed Org Admin (Org_Id Org1MSP User_Id orgAdmin)"
}
getOrgAdmins
Diese Methode gibt eine Liste aller Benutzer zurück, die eine Org Admin einer Organisation sind.
Ctx.Admin.getAllOrgAdmins()
Parameter:
  • Kein
Rückgabewert:
  • Bei Erfolg ein Array im JSON-Format, das orgId- und userId-Objekte enthält.
Beispiel für einen Rückgabewert:
{
    "admins": [
        {
            "org_id": "Org1MSP",
            "user_id": "orgadmin"
        },
        {
            "org_id": "Org1MSP",
            "user_id": "orgadmin1"
        },
        {
            "org_id": "Org1MSP",
            "user_id": "orgadmin2"
        }
    ]
}

Methoden für die Verwaltung der Tokenkonfiguration

getTokenDecimals
Diese Methode gibt die Anzahl der Dezimalstellen zurück, die für ein partielles Token verfügbar sind. Wenn das divisible-Verhalten nicht angegeben ist, ist der Standardwert 0.
Ctx.Token.getTokenDecimals(token_id: string)
Parameter:
  • token_id: string: Die ID des Tokens.
Rückgabewert:
  • Bei Erfolg die Dezimalstellen des Tokens im Datentyp "Zahl". Bei einem Fehler wird eine Fehlermeldung ausgegeben.
Beispiel für einen Rückgabewert:
1
getAllTokens
Diese Methode gibt alle in der Statusdatenbank gespeicherten Tokenassets zurück. Diese Methode verwendet SQL-Rich-Abfragen von Berkeley DB und kann nur aufgerufen werden, wenn eine Verbindung zum Remote-Netzwerk von Oracle Blockchain Platform besteht.
Ctx.Token.getAllTokens()
Parameter:
  • Kein
Rückgabewert:
  • Bei Erfolg gibt es ein Versprechen mit allen Token-Assets zurück. Bei einem Fehler wird eine Fehlermeldung zurückgegeben.
Beispiel für einen Rückgabewert:
{
    "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
Diese Methode gibt alle Tokenassets mit dem angegebenen Namen zurück. Diese Methode verwendet SQL-Rich-Abfragen von Berkeley DB und kann nur aufgerufen werden, wenn eine Verbindung zum Remote-Netzwerk von Oracle Blockchain Platform besteht.
Ctx.Token.getTokensByName(token_name: string)
Parameter:
  • token_name: string: Der Name des Tokens, der der Eigenschaft Token_name des Modells entspricht. Der Wert ist der Klassenname des Tokens.
Rückgabewert:
  • Es gibt ein Array aller Tokenassets des angegebenen Namens im JSON-Format zurück.
Beispiel für einen Rückgabewert:
{
    "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"
    }
}
get
Diese Methode gibt ein Tokenobjekt zurück, wenn es in der Statusdatenbank vorhanden ist.
Ctx.Token.get(token_id: string)
Parameter:
  • token_id: string: Die ID des zurückzugebenden Tokens.
Rückgabewert:
  • Bei Erfolg ein Versprechen mit der JSON-Darstellung des Tokens. Bei Fehler eine Ablehnung mit einer Fehlermeldung.
Beispiel für einen Rückgabewert:
{
    "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"
}
isTokenType
Diese Methode gibt an, ob ein Tokenasset mit der angegebenen ID vorhanden ist.
Ctx.Token.isTokenType(token_id: string)
Parameter:
  • token_id: string: Die ID des zu prüfenden Tokens.
Rückgabewert:
  • Bei Erfolg eine Zusage mit true, wenn ein Tokenasset mit der angegebenen ID vorhanden ist. Bei Fehler eine Ablehnung mit einer Fehlermeldung.
Beispiel für einen Rückgabewert:
true
save
Diese Methode erstellt ein Token und speichert seine Eigenschaften in der Statusdatenbank.
Ctx.Token.save(token: <Instance of Token Class>,extraMetadata?:any)
Parameter:
  • token: <Instance of Token Class>: Das zu bearbeitende Tokenasset.
Rückgabewert:
  • Bei Erfolg eine Promise-Nachricht mit Tokendetails. Bei Fehler eine Ablehnung mit einer Fehlermeldung.
Beispiel für einen Rückgabewert:
{
   "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
Diese Methode aktualisiert Tokeneigenschaften. Nachdem ein Tokenasset erstellt wurde, aktualisieren Sie nur den Wert token_desc und die zugehörigen benutzerdefinierten Eigenschaften.
Ctx.Token.update(token: <Instance of Token Class>)
Parameter:
  • token: <Instance of Token Class>: Das zu bearbeitende Tokenasset.
Rückgabewert:
  • Bei Erfolg eine Promise-Nachricht mit Tokendetails. Bei Fehler eine Ablehnung mit einer Fehlermeldung.
Beispiel für einen Rückgabewert:
{
   "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
}
getByRange
Diese Methode ruft die Stoffmethode getStateByRange intern auf. Obwohl ein Vermögensgegenstand mit der angegebenen ID aus dem Buch zurückgegeben wird, überträgt diese Methode den Vermögensgegenstand in den aufrufenden Vermögensgegenstandstyp.
<Token ClassCtx.Token.getByRange(start_token_id: string, end_token_id: string, token_class_reference?: <Instance of Token Class> )
Parameter:
  • startId: string: Der Startschlüssel des Bereichs. Dieser Schlüssel ist im Bereich enthalten.
  • endId: string: Der Endschlüssel des Bereichs. Dieser Schlüssel ist aus dem Bereich ausgeschlossen.
  • token: <Instance of Token Class>: Das zu bearbeitende Tokenasset.
Rückgabewert:
  • Bei Erfolg ein Versprechen mit einem Array von <Token Class>. Bei Fehler eine Ablehnung mit einer Fehlermeldung.
Beispiel:
@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);
}
Beispiel für einen Rückgabewert:
[
    {
        "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"
    }
]
history
Diese Methode gibt die Historie für das angegebene Token zurück.
Ctx.Token.history(tokenId)
Parameter:
  • tokenId: string: Die ID des Tokens.
Rückgabewert:
  • Bei Erfolg eine Zusage mit einem Array der Kontohistoriendetails für das angegebene Token. Bei Fehler eine Ablehnung mit einer Fehlermeldung.
Beispiel für einen Rückgabewert:
[
    {
        "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
            }
        }
    }
]

Methoden für die Accountverwaltung

getCallerAccountId
Diese Methode gibt die Konto-ID des Aufrufers zurück.
Ctx.Account.getCallerAccountId(token_id: string)
Parameter:
  • tokenId: string: Die ID des Tokens.
Rückgabewert:
  • Bei Erfolg ein Versprechen mit der Anruferaccount-ID. Bei Fehler eine Ablehnung mit einer Fehlermeldung.
Beispiel für einen Rückgabewert:
oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f
generateAccountId
Diese Methode gibt eine Konto-ID zurück, die aus einem alphanumerischen Zeichensatz mit dem Präfix oaccount~<token asset name>~ besteht, gefolgt von einem Hash des Benutzernamens oder der E-Mail-ID (user_id) des Instanzeigentümers oder des Benutzers, der bei der Instanz angemeldet ist, der Mitgliedschaftsserviceprovider-ID (org_id) des Benutzers in der aktuellen Netzwerkorganisation und der eindeutigen Token-ID (token_id).
Ctx.Account.generateAccountId(token_id: string, org_id: string, user_id: string)
Parameter:
  • tokenId: string: Die ID des Tokens.
  • orgId: string - Die Mitgliedschaftsserviceanbieter-ID (MSP) des Benutzers in der aktuellen Organisation.
  • userId: string: Der Benutzername oder die E-Mail-ID des Benutzers.
Rückgabewert:
  • Bei Erfolg eine Zusage mit der generierten Konto-ID. Bei Fehler eine Ablehnung mit einer Fehlermeldung.
Beispiel für einen Rückgabewert:
oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f
createAccount
Diese Methode erstellt einen Account für einen angegebenen Benutzer und ein bestimmtes Token. Jeder Benutzer, der Token hat, muss ein Konto haben. Konten verfolgen den Saldo, den gesperrten Saldo und die Transaktionshistorie eines Benutzers. Eine Account-ID ist ein alphanumerisches Zeichenset mit dem Präfix oaccount~<token asset name>~, gefolgt von einem Hash des Benutzernamens oder der E-Mail-ID (user_id) des Instanzeigentümers oder des Benutzers, der bei der Instanz angemeldet ist, der Mitgliedschaftsserviceprovider-ID (org_id) des Benutzers in der aktuellen Netzwerkorganisation. Diese Methode kann nur vom Token Admin des Chaincodes oder von einem Org Admin der angegebenen Organisation aufgerufen werden.
this.Ctx.Account.createAccount(org_id: string, user_id: string, token_type: string)
Parameter:
  • org_id: string - Die Mitgliedschaftsserviceanbieter-ID (MSP) des Benutzers in der aktuellen Organisation.
  • user_id: string: Der Benutzername oder die E-Mail-ID des Benutzers.
  • token_type: string: Der Typ des Tokens, der fungible sein muss.
Rückgabewert:
  • Bei Erfolg das neue Accountobjekt im JSON-Format.
Beispiel für einen Rückgabewert:
{
  "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
Diese Methode verknüpft ein fungibles Token mit einem Konto. Diese Methode kann nur von einem Token Admin des Chaincodes oder von einem Org Admin der relevanten Organisation aufgerufen werden.
async associateTokenToAccount(account_id: string, token_id: string)
Parameter:
  • account_id: string: Die ID des Accounts.
  • token_id: string: Die ID des Tokens.
Rückgabewert:
  • Bei Erfolg ein JSON-Objekt des aktualisierten Accounts.
Beispiel für einen Rückgabewert:
{
    "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
Diese Methode gibt Kontodetails für ein bestimmtes Konto zurück, einschließlich Kontostatus.
Ctx.Account.getAccountWithStatus(account_id: string)
Parameter:
  • account_id: string: Die ID des Accounts.
Rückgabewert:
  • Bei Erfolg ein Versprechen mit den Accountdetails. Bei Fehler eine Ablehnung mit einer Fehlermeldung.
Beispiel für einen Rückgabewert:
{
  "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
Diese Methode gibt Kontodetails für ein angegebenes Konto zurück.
Ctx.Account.getAccount(account_id: string)
Parameter:
  • account_id: string: Die ID des Accounts.
Rückgabewert:
  • Bei Erfolg ein Versprechen mit den Accountdetails. Bei Fehler eine Ablehnung mit einer Fehlermeldung.
Beispiel für einen Rückgabewert:
{
   "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
Diese Methode gibt ein Array der Kontohistoriendetails für ein angegebenes Konto zurück.
Ctx.Account.history(account_id: string)
Parameter:
  • account_id: string: Die ID des Accounts.
Rückgabewert:
  • Bei Erfolg ein Versprechen mit dem Array von Kontohistoriendetails. Bei Fehler eine Ablehnung mit einer Fehlermeldung. Der Rückgabewert entspricht der "getAccountHistory"-Methode.
Beispiel für einen Rückgabewert:
[
    {
      "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
Diese Methode gibt den gesperrten Saldo für ein angegebenes Konto zurück.
Ctx.Account.getAccountOnHoldBalance(account_id: string)
Parameter:
  • account_id: string: Die ID des Accounts.
Rückgabewert:
  • Bei Erfolg eine Zusage mit einem JSON-Objekt, das den gesperrten Saldo für das angegebene Konto anzeigt. Bei Fehler eine Ablehnung mit einer Fehlermeldung.
Beispiel für einen Rückgabewert:
{
   "holding_balance":0,
   "msg":"Total Holding Balance of Account Id oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f (org_id: Org1MSP, user_id: user1) is 0"
}
getAllAccounts
Diese Methode gibt eine Liste aller Konten zurück. Diese Methode verwendet SQL-Rich-Abfragen von Berkeley DB und kann nur aufgerufen werden, wenn eine Verbindung zum Remote-Netzwerk von Oracle Blockchain Platform besteht.
Ctx.Account.getAllAccounts()
Parameter:
  • Kein
Rückgabewert:
  • Bei Erfolg eine Zusage mit einem JSON-Objekt, das alle Accounts auflistet. Bei Fehler eine Ablehnung mit einer Fehlermeldung.
Beispiel für einen Rückgabewert:
[
           {
               "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
Diese Methode gibt die Benutzerdetails für einen angegebenen Account zurück.
Ctx.Account.getUserByAccountId(account_id: string)
Parameter:
  • account_id: string: Die ID des Accounts.
Rückgabewert:
  • Bei Erfolg ein Versprechen mit einem JSON-Objekt, das drei Eigenschaften enthält:
    • user_id: Der Benutzername oder die E-Mail-ID des Benutzers.
    • org_id – Die Mitgliedschaftsdienstleister-ID (MSP) des Benutzers in der aktuellen Netzwerkorganisation.
    • token_id: Die ID des Tokens.
  • Bei Fehler eine Ablehnung mit einer Fehlermeldung.
Beispiel für einen Rückgabewert:
{
   "token_id": "digiCurr101",
   "user_id": "user1",
   "org_id": "Org1MSP"
}
getAccountBalance
Diese Methode gibt den Kontensaldo für ein bestimmtes Konto zurück.
Ctx.Account.getAccountBalance(account_id: string)
Parameter:
  • account_id: string: Die ID des Accounts.
Rückgabewert:
  • Bei Erfolg eine Promise-Nachricht mit einem JSON-Objekt, das zwei Eigenschaften enthält:
    • msg: Eine Meldung mit dem aktuellen Saldo.
    • user_balance: Der numerische Wert des aktuellen Saldos.
  • Bei Fehler eine Ablehnung mit einer Fehlermeldung.
Beispiel für einen Rückgabewert:
{
    "msg": "Current Balance is: 200",
    "user_balance": 200
}
getAllOrgAccounts
Diese Methode gibt eine Liste aller Tokenaccounts zurück, die zu einer angegebenen Organisation gehören.
Ctx.Account.getAllOrgAccounts(org_id: string) 
Parameter:
  • org_id: string – Die Mitgliedschaftsdienstleister-ID (MSP) der Organisation.
Rückgabewert:
  • Bei Erfolg eine Liste aller Accounts für die angegebene Organisation.
Beispiel für einen Rückgabewert:
[
    {
        "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
        }
    }
]

Methoden für die Rollenverwaltung

addRoleMember
Mit dieser Methode wird eine Rolle zu einem angegebenen Benutzer und Token hinzugefügt.
Ctx.Token.addRoleMember(role: string, account_id: string, token: <Instance of Token Class>)
Parameter:
  • role: string: Der Name der Rolle, die dem angegebenen Benutzer hinzugefügt werden soll. Die Verhaltensweisen mintable und burnable entsprechen den Eigenschaften minter_role_name und burner_role_name der Spezifikationsdatei. Ebenso entspricht die Rolle notary der Eigenschaft notary_role_name der Spezifikationsdatei.
  • account_id: number: Die Account-ID, der die Rolle hinzugefügt werden soll.
  • token: <Instance of Token Class>: Das zu bearbeitende Tokenasset.
Rückgabewert:
  • Bei Erfolg ein Versprechen mit einer Erfolgsmeldung. Bei Fehler eine Ablehnung mit einer Fehlermeldung.
Beispiel für einen Rückgabewert:
{
    "msg":"Successfully added role minter to oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f (org_id :          Org1MSP, user_id : user1)"
}
removeRoleMember
Diese Methode entfernt eine Rolle aus einem angegebenen Benutzer und Token.
Ctx.Token.removeRoleMember(role: string, account_id: string, token: <Instance of Token Class>)
Parameter:
  • role: string: Der Name der Rolle, die für den angegebenen Benutzer entfernt werden soll. Die Verhaltensweisen mintable und burnable entsprechen den Eigenschaften minter_role_name und burner_role_name der Spezifikationsdatei. Ebenso entspricht die Rolle notary der Eigenschaft notary_role_name der Spezifikationsdatei.
  • account_id: number: Die Konto-ID, aus der die Rolle entfernt werden soll.
  • token: <Instance of Token Class>: Das zu bearbeitende Tokenasset.
Rückgabewert:
  • Bei Erfolg ein Versprechen mit einer Erfolgsmeldung. Bei Fehler eine Ablehnung mit einer Fehlermeldung.
Beispiel für einen Rückgabewert:
{
  "msg":"successfully removed member_id oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f (org_id : Org1MSP, user_id : user1) from role minter"
}
getAccountsByRole
Diese Methode gibt eine Liste aller Konten für eine angegebene Rolle und ein bestimmtes Token zurück.
Ctx.Role.getAccountsByRole(token_id: string, role: string)
Parameter:
  • token_id: string: Die ID des Tokens.
  • role: string: Der Name der Rolle, nach der gesucht werden soll.
Rückgabewert:
  • Bei Erfolg eine Zusage mit einem JSON-Objekt, das alle Konten für die angegebene Rolle und das angegebene Token auflistet. Bei Fehler eine Ablehnung mit einer Fehlermeldung.
Beispiel für einen Rückgabewert:
{
    "accounts": [
        "oaccount~digicur~682bb71de419602af74e3f226345ae308445ca51010737900c1d85f0376152df",
        "oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f"
    ]
}
getAccountsByUser
Diese Methode gibt eine Liste aller Konto-IDs für einen angegebenen Benutzer zurück.
async getAccountsByUser(org_id: string, user_id: string)
Parameter:
  • org_id string - Die Mitgliedschaftsserviceanbieter-ID (MSP) des Benutzers in der aktuellen Organisation.
  • user_id string: Der Benutzername oder die E-Mail-ID des Benutzers.
Rückgabewert:
  • Bei Erfolg ein JSON-Array mit Konto-IDs.
Beispiel für einen Rückgabewert:
{"accounts":["oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f"]}
getUsersByRole
Diese Methode gibt eine Liste aller Benutzer für eine angegebene Rolle und ein bestimmtes Token zurück.
Ctx.Role.getUsersByRole(token_id: string, role: string)
Parameter:
  • token_id: string: Die ID des Tokens.
  • role: string: Der Name der Rolle, nach der gesucht werden soll.
Rückgabewert:
  • Bei Erfolg eine Zusage mit einem JSON-Objekt, das alle Benutzer für die angegebene Rolle und das angegebene Token auflistet. Bei Fehler eine Ablehnung mit einer Fehlermeldung.
Beispiel für einen Rückgabewert:
{
   "users":[
      {
         "token_id":"digiCurr101",
         "user_id":"user1",
         "org_id":"Org1MSP"
      }
   ]
}
isInRole
Diese Methode gibt an, ob ein Benutzer und ein Token über eine angegebene Rolle verfügen.
Ctx.Token.isInRole(role: string, account_id: string, token: <Instance of Token Class>)
Parameter:
  • role: string: Der Name der zu prüfenden Rolle.
  • account_id: number: Die zu prüfende Account-ID.
  • token: <Instance of Token Class>: Das zu bearbeitende Tokenasset.
Rückgabewert:
  • Bei Erfolg eine Zusage mit true, wenn der Benutzer über die Rolle verfügt, und false, wenn der Benutzer nicht über die Rolle verfügt. Bei Fehler eine Ablehnung mit einer Fehlermeldung.
Beispiel für einen Rückgabewert:
{"result":"true"}
roleCheck
Diese Methode prüft, ob die angegebene Konto-ID Mitglied einer beliebigen Rolle ist.
Ctx.Token.roleCheck(account_id: string, token: <Instance of Token Class>)
Parameter:
  • account_id: string: Die zu prüfende Account-ID.
  • token: <Instance of Token Class>: Das zu bearbeitende Tokenasset.
Rückgabewert:
  • Wenn die Konto-ID Teil einer Rolle ist, gibt sie true zurück. Andernfalls wird false zurückgegeben.
Beispiel für einen Rückgabewert:
{ result: true }
getOrgUsersByRole
Diese Methode gibt Informationen zu allen Benutzern zurück, die eine bestimmte Rolle in einer bestimmten Organisation haben.
Ctx.Role.getOrgUsersByRole(token_id: string, role: string, org_id: string)
Parameter:
  • token_id: string: Die ID des Tokens.
  • role: string: Der Name der zu prüfenden Rolle.
  • org_id: string – Die Mitgliedschaftsdienstleister-ID (MSP) der Organisation.
Rückgabewert:
  • Bei Erfolg eine Liste aller Benutzer mit der angegebenen Rolle in der angegebenen Organisation.
Beispiel für einen Rückgabewert:
{
    "users": [
        {
            "token_id": "token",
            "user_id": "admin",
            "org_id": "Org1MSP"
        },
        {
            "token_id": "token",
            "user_id": "orgAdmin",
            "org_id": "Org1MSP"
        }
    ]
}
getOrgAccountsByRole
Diese Methode gibt Informationen zu allen Firmen zurück, die eine bestimmte Rolle in einer bestimmten Organisation haben.
Ctx.Role.getOrgAccountsByRole(token_id: string, role: string, org_id: string)
Parameter:
  • token_id: string: Die ID des Tokens.
  • role: string: Der Name der zu prüfenden Rolle.
  • org_id: string – Die Mitgliedschaftsdienstleister-ID (MSP) der Organisation.
Rückgabewert:
  • Bei Erfolg eine Liste aller Firmen mit der angegebenen Rolle in der angegebenen Organisation.
Beispiel für einen Rückgabewert:
{
    "accounts": [
        "oaccount~abc74791148b761352b98df58035601b6f5480448ac2b4a3a7eb54bdbebf48eb",
        "oaccount~9c650574af9025a6106c8d12a801b079eda9ae2e3399fc2fbd5bd683d738a850"
    ]
}

Methoden für das Transaktionshistorienmanagement

getTransactionById
Diese Methode gibt die Historie eines Transaction-Assets zurück.
async getTransactionById(transaction_id: string)
Parameter:
  • transaction_id: string: Die ID des Transaktionsassets.
Rückgabewert:
  • Bei Erfolg die Transaktionsanlagenhistorie.
Beispiel für einen Rückgabewert:
{
    "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
Diese Methode gibt ein Array der Transaktionshistoriendetails für ein angegebenes Konto zurück.
async deleteHistoricalTransactions(time_to_expiration: Date)
Parameter:
  • time_to_expiration: Date: Ein Zeitstempel, der angibt, wann Transaktionen gelöscht werden sollen. Transaktionsassets, die älter als die angegebene Zeit sind, werden gelöscht.
Rückgabewert:
  • Der Rückgabewert entspricht der "getAccountTransactionHistory"-Methode.
  • Bei Erfolg eine Zusage mit dem Array von Kontotransaktionsobjekten:
    • transaction_id: Die ID der Transaktion.
    • transacted_account: Das Konto, mit dem die Transaktion stattgefunden hat.
    • transaction_type: Der Transaktionstyp.
    • transacted_amount: Der Betrag der Transaktion.
    • timestamp: Der Zeitpunkt der Transaktion.
    • balance: Der Kontosaldo zum Zeitpunkt der Transaktion.
    • onhold_balance: Der gesperrte Saldo zum Zeitpunkt der Transaktion.
    • sub_transactions - Nur für Massentransfers eine Liste der Transaktionen, die Teil eines Massentransfers sind.
    • holding_id: Eine eindeutige ID, die von der Methode holdTokens zurückgegeben wird.
    • token_id: Die ID des Tokens.
  • Bei Fehler eine Ablehnung mit einer Fehlermeldung.
Beispiel für einen Rückgabewert:
"payload": {
            "msg": "Successfuly deleted transaction older than date: Thu Aug 19 2021 11:19:36 GMT+0000 (Coordinated Universal Time).",
            "transactions": [
                "otransaction~ec3366dd48b4ce2838f820f2f138648e6e55a07226713e59b411ff31b0d21058"
            ]
        }
getAccountTransactionHistory
Diese Methode gibt ein Array der Transaktionshistoriendetails für ein angegebenes Konto zurück.
Ctx.Account.getAccountTransactionHistory(account_id: string)
Parameter:
  • account_id: string: Die ID des Accounts.
Rückgabewert:
  • Der Rückgabewert entspricht der "getAccountTransactionHistory"-Methode.
  • Bei Erfolg eine Zusage mit dem Array von Kontotransaktionsobjekten:
    • transaction_id: Die ID der Transaktion.
    • transacted_account: Das Konto, mit dem die Transaktion stattgefunden hat.
    • transaction_type: Der Transaktionstyp.
    • transacted_amount: Der Betrag der Transaktion.
    • timestamp: Der Zeitpunkt der Transaktion.
    • balance: Der Kontosaldo zum Zeitpunkt der Transaktion.
    • onhold_balance: Der gesperrte Saldo zum Zeitpunkt der Transaktion.
    • sub_transactions - Nur für Massentransfers eine Liste der Transaktionen, die Teil eines Massentransfers sind.
    • holding_id: Eine eindeutige ID, die von der Methode holdTokens zurückgegeben wird.
    • token_id: Die ID des Tokens.
  • Bei Fehler eine Ablehnung mit einer Fehlermeldung.
Beispiel für einen Rückgabewert:
[
   {
      "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
Diese Methode gibt ein Array der Transaktionshistoriendetails für ein angegebenes Konto zurück. Diese Methode kann nur aufgerufen werden, wenn eine Verbindung zum Remote-Oracle Blockchain Platform-Netzwerk besteht.
await this.Ctx.Account.getAccountTransactionHistoryWithFilters(account_id: string, filters?: Filters)
Parameter:
  • account_id: string: Die ID des Accounts.
  • filters: string: Ein optionaler Parameter. Wenn leer, werden alle Datensätze zurückgegeben. Die Eigenschaft PageSize bestimmt die Anzahl der zurückzugebenden Datensätze. Wenn PageSize 0 ist, ist die Standardseitengröße 20. Die Eigenschaft Bookmark bestimmt den Anfangsindex der zurückzugebenden Datensätze. Weitere Informationen finden Sie in der Hyperledger Fabric-Dokumentation. Die Eigenschaften StartTime und EndTime müssen im RFC-3339-Format angegeben werden.
Beispiel:

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
Diese Methode gibt ein Array der Transaktionshistoriendetails für eine angegebene Transaktion zurück.
await this.Ctx.Account.getSubTransactionHistory(transaction_id)
Parameter:
  • transaction_id: string: Die ID der Massentransfertransaktion.
Beispiel:

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
Diese Methode gibt ein Array der Details der Untertransaktionshistorie für eine angegebene Transaktion zurück.
await this.Ctx.Account.getSubTransactionHistoryWithFilters(transaction_id: string, filters?: SubTransactionFilters)
Parameter:
  • transaction_id: string: Die ID der Massentransfertransaktion.
  • filters: string: Ein optionaler Parameter. Wenn leer, werden alle Datensätze zurückgegeben. Die Eigenschaft PageSize bestimmt die Anzahl der zurückzugebenden Datensätze. Wenn PageSize 0 ist, ist die Standardseitengröße 20. Die Eigenschaft Bookmark bestimmt den Anfangsindex der zurückzugebenden Datensätze. Weitere Informationen finden Sie in der Hyperledger Fabric-Dokumentation. Die Eigenschaften StartTime und EndTime müssen im RFC-3339-Format angegeben werden.
Beispiel:

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
    }
]

Tokenverhaltensverwaltung

Die Methoden für das Tokenlebenszyklusmanagement basieren auf den Standards des Token Taxonomy Frameworks. Um die Tokenlebenszyklusmethoden zu verwenden, importieren Sie die Klasse Token aus dem Modul ../lib/token.
import { Token } from '../lib/token';

Methoden für das Tokenverhaltensmanagement - Mintable Behavior

mint
Mit dieser Methode wird eine Anzahl von Token abgebaut, die dann dem Aufrufer der Methode gehören. Der Anrufer muss über einen Account und die Minter-Rolle verfügen. Die Menge muss innerhalb der Dezimalwerte liegen, die durch den Parameter decimal des Verhaltens divisible in der Spezifikationsdatei angegeben werden.
Ctx.Token.mint(quantity: number, token: <Instance of Token Class>)
Parameter:
  • quantity: number: Die Gesamtanzahl der Token für die Minze.
  • token: <Instance of Token Class>: Das Tokenasset für die Minze.
Rückgabewert:
  • Bei Erfolg ein Versprechen mit einer Erfolgsmeldung und toAccount Details. Bei Fehler eine Ablehnung mit einer Fehlermeldung.
Beispiel für einen Rückgabewert:
{
  "msg":"Successfully minted 1000 tokens to Account Id: oaccount~digicur~682bb71de419602af74e3f226345ae308445ca51010737900c1d85f0376152df (Org-Id: Org1MSP, User-Id: admin)"
}
getTotalMintedTokens
Diese Methode gibt die Gesamtanzahl der Token zurück, die geprägt wurden.
Ctx.Token.getTotalMintedTokens(token: <Instance of Token Class>)
Parameter:
  • token: <Instance of Token Class>: Das zu bearbeitende Tokenasset.
Rückgabewert:
  • Bei Erfolg die Menge der geprägten Token im Datentyp "Number". Bei einem Fehler wird eine Fehlermeldung ausgegeben.
Beispiel für einen Rückgabewert:
4000
getNetTokens
Diese Methode gibt die Nettomenge der im System verfügbaren Token zurück. Die Netto-Token sind die Anzahl der verbleibenden Token, nachdem Token verbrannt wurden. In Gleichungsform: net tokens = insgesamt geprägte tokens - insgesamt gebrannte tokens. Wenn keine Token gebrannt werden, entspricht die Anzahl der Net Token der Gesamtanzahl der geprägten Token.
Ctx.Token.getNetTokens(token: <Instance of Token Class>)
Parameter:
  • token: <Instance of Token Class>: Das zu bearbeitende Tokenasset.
Rückgabewert:
  • Bei Erfolg die Menge der Nettotokens im Datentyp "Zahl". Bei einem Fehler wird eine Fehlermeldung ausgegeben.
Beispiel für einen Rückgabewert:
2000
getMaxMintQuantity
Diese Methode gibt die maximale Münzmenge für ein Token zurück. Wenn das max_mint_quantity-Verhalten nicht angegeben ist, ist der Standardwert 0. Dadurch kann eine beliebige Anzahl von Token geprägt werden.
Ctx.Token.getMaxMintQuantity(token: <Instance of Token Class>)
Parameter:
  • token: <Instance of Token Class>: Das zu bearbeitende Tokenasset.
Rückgabewert:
  • Bei Erfolg die maximale mintable Menge des Tokens im Datentyp "Number". Bei einem Fehler wird eine Fehlermeldung ausgegeben.
Beispiel für einen Rückgabewert:
20000

Methoden für das Tokenverhaltensmanagement - Übertragbares Verhalten

transfer
Diese Methode überträgt Token vom Transaktionsaufrufer auf das Konto to_account_id. Der Aufrufer dieser Methode muss einen Account haben, und die Menge muss innerhalb der Dezimalwerte liegen, die durch den Parameter decimal des Verhaltens divisible in der Spezifikationsdatei angegeben werden.
Ctx.Token.transfer(to_account_id: string, quantity: number, token: <Instance of Token Class>)
Parameter:
  • to_account_id: string: Die Konto-ID für den Empfang der Token.
  • quantity: number: Die Gesamtanzahl der zu übertragenden Token.
Rückgabewert:
  • Bei Erfolg ein Versprechen mit einer Erfolgsmeldung. Bei Fehler eine Ablehnung mit einer Fehlermeldung.
Beispiel für einen Rückgabewert:
{
 "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
Diese Methode wird verwendet, um eine Massenübertragung von Token aus dem Aufruferkonto auf die Konten durchzuführen, die im Objekt flow angegeben sind. Für den Aufrufer dieser Methode muss bereits ein Account erstellt sein.
Ctx.Token.bulkTransfer(flow: object[], token: <Instance of Token Class>)
Parameter:
  • flow: object[]: Ein Array von JSON-Objekten, das die Empfängerdetails und -menge angibt. Die Transfermenge muss innerhalb der Dezimalwerte liegen, die durch den Parameter decimal des Verhaltens divisible in der Spezifikationsdatei angegeben werden. Beispiel:
    [{
    	"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>: Das zu bearbeitende Tokenasset.
Rückgabewert:
  • Bei Erfolg ein Versprechen mit einer Erfolgsmeldung und Accountinformationen. Bei Fehler eine Ablehnung mit einer Fehlermeldung.
Beispiel für einen Rückgabewert:
{
    "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"
        }
    ]
}

Methoden für das Tokenverhaltensmanagement - Zurückstellbares Verhalten

hold
Diese Methode erstellt eine Sperre im Namen des Eigentümers der Token mit dem Konto to_account_id. Es wird ein Notarkonto angegeben, das für den Abschluss oder die Freigabe der Sperre verantwortlich ist. Wenn die Sperre erstellt wird, wird der angegebene Tokensaldo des Zahlers gesperrt. Ein gesperrter Saldo kann erst übertragen werden, wenn die Sperre abgeschlossen oder freigegeben wurde. Für den Aufrufer dieser Methode muss bereits ein Account erstellt sein.
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>)
Parameter:
  • operation_id: string: Eine eindeutige ID zur Identifizierung des Sperrvorgangs. In der Regel wird diese ID von der Clientanwendung übergeben.
  • to_account_id: string: Die ID des Kontos, das die Token erhalten soll.
  • notary__account_id: string: Die ID des Notarkontos.
  • quantity: number: Die Gesamtanzahl der Token, die gesperrt werden müssen.
  • time_to_expiration: Date: Die Dauer bis zum Ablauf der Sperre. Geben Sie 0 für eine permanente Sperre an. Andernfalls verwenden Sie das RFC-3339-Format. Beispiel: 2021-06-02T12.
  • token: <Instance of Token Class>: Das zu speichernde Tokenasset.
Rückgabewert:
  • Bei Erfolg ein Versprechen mit einer Erfolgsmeldung. Bei Fehler eine Ablehnung mit einer Fehlermeldung.
Beispiel für einen Rückgabewert:
{
 "msg": "account id: oaccount~digicur~682bb71de419602af74e3f226345ae308445ca51010737900c1d85f0376152df (org_id : Org1MSP, user_id : user1) is successfully holding 10 tokens",
}
executeHold
Diese Methode schließt eine Tokensperre ab und überträgt die angegebene Anzahl zuvor gesperrter Token an den Empfänger. Wenn der Wert quantity kleiner als der tatsächliche Sperrwert ist, ist der Restbetrag wieder für den ursprünglichen Eigentümer der Token verfügbar. Diese Methode kann nur von der AccountOwner-ID mit der Rolle notary für die angegebene Vorgangs-ID aufgerufen werden. Die Sperre kann nur durch den Notar abgeschlossen werden.
Ctx.Token.executeHold(operation_id: string, quantity: number, token: <Instance of Token Class>)
Parameter:
  • operation_id: string: Eine eindeutige ID zur Identifizierung des Sperrvorgangs. In der Regel wird diese ID von der Clientanwendung übergeben.
  • quantity: number: Die Gesamtanzahl der Token, die eine Sperre abschließen müssen.
  • token: <Instance of Token Class>: Das Tokenasset zum Abschließen einer Sperre.
Rückgabewert:
  • Bei Erfolg ein Versprechen mit einer Erfolgsmeldung. Bei Fehler eine Ablehnung mit einer Fehlermeldung.
Beispiel für einen Rückgabewert:
{
 "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
Diese Methode gibt eine Sperre für Token frei. Die Übertragung ist nicht abgeschlossen, und alle gespeicherten Token stehen dem ursprünglichen Eigentümer wieder zur Verfügung. Diese Methode kann von der AccountOwner-ID mit der Rolle notary innerhalb der angegebenen Frist oder vom Zahler, Zahlungsempfänger oder Notar nach der angegebenen Frist aufgerufen werden.
Ctx.Token.releaseHold(operation_id: string, token: <Instance of Token Class>)
Parameter:
  • operation_id: string: Eine eindeutige ID zur Identifizierung des Sperrvorgangs. In der Regel wird diese ID von der Clientanwendung übergeben.
  • token: <Instance of Token Class>: Das Tokenasset zur Freigabe einer Sperre.
Rückgabewert:
  • Bei Erfolg ein Versprechen mit einer Erfolgsmeldung. Bei Fehler eine Ablehnung mit einer Fehlermeldung.
Beispiel für einen Rückgabewert:
{
  "msg": "Successfully released 5 tokens from Operation Id opr_121 to Account Id: oaccount~682bb71de419602af74e3f226345ae308445ca51010737900c1d85f0376152df (org_id : Org1MSP, user_id : user1)",
}
getOnHoldIds
Diese Methode gibt eine Liste aller Halte-IDs für ein angegebenes Konto zurück.
Ctx.Account.getOnHoldIds(account_id: string)
Parameter:
  • account_id: string: Die ID des Accounts.
Rückgabewert:
  • Bei Erfolg ein Promise mit einem JSON-Objekt, das alle Hold-IDs für den angegebenen Account auflistet. Bei Fehler eine Ablehnung mit einer Fehlermeldung.
Beispiel für einen Rückgabewert:
{
   "msg":"Holding Ids are: ohold~digicur~digiCurr101~opr_121",
   "holding_ids":[
      "ohold~digicur~digiCurr101~opr_121"
   ]
}
getOnHoldDetailsWithOperationId
Diese Methode gibt die zurückgestellten Transaktionsdetails für eine angegebene Vorgangs-ID und ein bestimmtes Token zurück.
Ctx.Hold.getOnHoldDetailsWithOperationId(token_id: string, operation_id: string)
Parameter:
  • token_id: string: Die ID des Tokens.
  • operation_id: string: Eine eindeutige ID zur Identifizierung des Sperrvorgangs. In der Regel wird diese ID von der Clientanwendung übergeben.
Rückgabewert:
  • Bei Erfolg ein Hold-Objekt, das die folgenden Eigenschaften enthält:
    • holding_id: Die Holding-ID der Transaktion.
    • operation_id: string: Eine eindeutige ID zur Identifizierung des Sperrvorgangs. In der Regel wird diese ID von der Clientanwendung übergeben.
    • from_account_id: Die Konto-ID des aktuellen Eigentümers der zurückgestellten Token.
    • to_account_id: Die Konto-ID des Empfängers.
    • notary_account_id: Die Konto-ID des Notars.
    • token_id: string: Die ID des gespeicherten Tokens.
    • quantity: Die Anzahl der Token, die für die Holding-ID gesperrt sind.
    • time_to_expiration: Die Dauer bis zum Ablauf der Sperre.
  • Bei Fehler eine Ablehnung mit einer Fehlermeldung.
Beispiel für einen Rückgabewert:
{
    "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
Diese Methode gibt den gesperrten Saldo für eine angegebene Vorgangs-ID und ein Token zurück. Diese Methode kann von jedem aufgerufen werden.
Ctx.Hold.getOnHoldBalanceWithOperationId(token_id: string, operation_id: string)
Parameter:
  • token_id: string: Die ID des Tokens.
  • operation_id: string: Eine eindeutige ID zur Identifizierung des Sperrvorgangs. In der Regel wird diese ID von der Clientanwendung übergeben.
Rückgabewert:
  • Bei Erfolg ein Zusageobjekt mit dem zurückgestellten Saldo für die angegebene Vorgangs-ID und das angegebene Token. Bei Fehler eine Ablehnung mit einer Fehlermeldung
Beispiel für einen Rückgabewert:
{
    "msg": "Current Holding Balance of Operation 'op1' for token 'token1' is: 10",
    "holding_balance": 10
}

Methoden für das Tokenverhaltensmanagement - Burnable Behavior

burn
Diese Methode deaktiviert oder verbrennt Token aus dem Konto des Transaktionsaufrufers. Der Aufrufer dieser Methode muss über einen Account und die Brennerrolle verfügen. Die Menge muss innerhalb der Dezimalwerte liegen, die durch den Parameter decimal des Verhaltens divisible in der Spezifikationsdatei angegeben werden.
Ctx.Token.burn(quantity: number, token: <Instance of Token Class>)
Parameter:
  • quantity: number: Die Gesamtanzahl der zu brennenden Token.
  • token: <Instance of Token Class>: Das zu brennende Tokenasset.
Rückgabewert:
  • Bei Erfolg ein Versprechen mit einer Erfolgsmeldung. Bei Fehler eine Ablehnung mit einer Fehlermeldung.
Beispiel für einen Rückgabewert:
{
 "msg":"Successfully burned 10 tokens from account id: oaccount~digicur~682bb71de419602af74e3f226345ae308445ca51010737900c1d85f0376152df (Org-Id: Org1MSP, User-Id: admin)"
}