Gerüstetes Tokenprojekt TypeScript für ERC-1155

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

Das Projekt generiert automatisch Tokenlebenszyklusklassen und -funktionen, einschließlich CRUD- und Nicht-CRUD-Methoden. Die Validierung von Argumenten, das Marshalling/Unmarshalling und die transparente Persistenzfunktion werden automatisch unterstützt.

Informationen zum Gerüstprojekt und zu Methoden, die nicht direkt mit Token in Zusammenhang stehen, finden Sie unter Kettencodeprojekt mit Gerüst TypeScript.

Modell

Jede tokenisierte Modellklasse erweitert die Klasse OchainModel. Transparente Persistenzfähigkeit oder vereinfachtes ORM wird in der Klasse OchainModel erfasst. Das folgende Modell zeigt ein ganzes nicht fungibles Token.

import * as yup from "yup";
import { Id, Mandatory, Validate, Default, Embedded, Derived, ReadOnly } from "../../lib/decorators";
import { OchainModel } from "../../lib/ochain-model";
import { STRATEGY } from "../../lib/utils";
import { EmbeddedModel } from "../../lib/ochain-embedded-model";

export class ArtCollectionMetadata extends EmbeddedModel<ArtCollectionMetadata> {
  @Validate(yup.string())
  public painting_name: string;

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  @Embedded(ArtCollectionMetadata)
  public tokenMetadata: ArtCollectionMetadata;

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

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

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

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

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

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

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

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

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

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

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

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

  @Validate(yup.string())
  public currency_name: string;
  
  @Validate(yup.number())
  public token_to_currency_ratio: number;
  
}
Das folgende Modell zeigt ein fraktioniertes nicht fungibles Token.
export class RealEstatePropertyMetadata extends EmbeddedModel<RealEstatePropertyMetadata> {
  @Validate(yup.string())
  public propertyType: string;
  
  @Validate(yup.string())
  public propertyName: string;
  
  @Validate(yup.string())
  public propertyAddress: string;
  
  @Validate(yup.string())
  public propertyImage: string;
  
}
    
@Id("tokenId")
export class RealEstateProperty extends OchainModel<RealEstateProperty> {
  public readonly assetType = "otoken";

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  @Embedded(RealEstatePropertyMetadata)
  public tokenMetadata: RealEstatePropertyMetadata;

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

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 nicht verwendet werden. Die anderen Methoden sind verborgen.

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 Accounts verwalten und andere Tokenlebenszyklusaufgaben ohne zusätzliche Codierung abschließen. Controller-Methoden müssen einen @Validator(...params)-Dekorator aufweisen, damit sie aufgerufen werden können.

Methoden für Access Control Management

isTokenAdmin
Diese Methode gibt den booleschen Wert true zurück, wenn der Aufrufer der Funktion ein Token Admin ist. Andernfalls wird false zurückgegeben. Diese Methode kann nur von einem Token Admin des Chaincodes aufgerufen werden.
@GetMethod()
@Validator(yup.string(), yup.string())
public async getAccountDetailsByUser(orgId: string, userId: string) {
  const userAccountId = this.Ctx.ERC1155Account.generateAccountId(orgId, userId, ACCOUNT_TYPE.USER_ACCOUNT);
  await this.Ctx.ERC1155Auth.checkAuthorization("ERC1155ACCOUNT.getAccountDetailsByUser", "TOKEN", {
    accountId: userAccountId,
  });
  return await this.Ctx.ERC1155Account.getAccountDetailsByUser(orgId, userId);
}
Parameter:
  • orgId: string: Die Mitgliedschaftsserviceprovider-(MSP-)ID des Benutzers in der aktuellen Organisation.
  • userId: 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.
Beispiel für den Rückgabewert:
{"result": true}
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(orgId: string, userId: string) {
  await this.Ctx.ERC1155Auth.checkAuthorization("ERC1155ADMIN.addAdmin", "TOKEN");
  return await this.Ctx.ERC1155Admin.addAdmin(orgId, userId);
}
Parameter:
  • orgId: string: Die Mitgliedschaftsserviceprovider-(MSP-)ID des Benutzers in der aktuellen Organisation.
  • userId: string: Der Benutzername oder die E-Mail-ID des Benutzers.
Rückgabewert:
  • Bei Erfolg eine Meldung, die Details des Benutzers enthält, der als Token Admin des Chaincodes hinzugefügt wurde.
Beispiel für den Rückgabewert:
{"msg":"Successfully added Admin (OrgId: appDev, UserId: 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. Sie können sich nicht selbst als Token Admin entfernen.
@Validator(yup.string(), yup.string())
public async removeTokenAdmin(orgId: string, userId: string) {
  await this.Ctx.ERC1155Auth.checkAuthorization("ERC1155ADMIN.removeAdmin", "TOKEN");
  return await this.Ctx.ERC1155Admin.removeAdmin(orgId, userId);
}
Parameter:
  • orgId: string: Die Mitgliedschaftsserviceprovider-(MSP-)ID des Benutzers in der aktuellen Organisation.
  • userId: string: Der Benutzername oder die E-Mail-ID des Benutzers.
Rückgabewert:
  • Bei Erfolg eine Meldung, die Details des Benutzers enthält, der als Token Admin des Chaincodes entfernt wurde.
Beispiel für den Rückgabewert:
{"msg": "Successfully removed Admin (OrgId: appDev, UserId: user1)"}
getAllTokenAdmins
Diese Methode gibt eine Liste aller Benutzer zurück, die ein Token Admin des Chaincodes sind. Diese Methode kann nur von einem Token Admin des Chaincodes aufgerufen werden.
@GetMethod()
@Validator()
public async getAllTokenAdmins() {
  await this.Ctx.ERC1155Auth.checkAuthorization("ERC1155ADMIN.getAllAdmins", "TOKEN");
  return await this.Ctx.ERC1155Admin.getAllAdmins();
}
Parameter:
  • Kein
Rückgabewert:
  • Bei Erfolg ein admins-Array im JSON-Format, das die Objekte orgId und userId enthält.
Beispiel für den Rückgabewert:
{
  "admins": [
    {
      "orgId": "appdev",
      "userId": "user2"
    },
    {
      "orgId": "appdev",
      "userId": "user1"
    }
  ]
}

Methoden für die Tokenkonfigurationsverwaltung

init
Diese Methode wird aufgerufen, wenn der Chaincode instanziiert wird. Alle Token Admin werden durch die Informationen userId und orgId im Parameter adminList identifiziert. userId ist der Benutzername oder die E-Mail-ID des Instanzeigentümers oder des bei der Instanz angemeldeten Benutzers. Die orgId ist die Membership Service Provider-(MSP-)ID des Benutzers in der aktuellen Netzwerkorganisation. Der Parameter adminList ist beim ersten Deployment des Chaincodes obligatorisch. Wenn Sie den Chaincode upgraden, übergeben Sie eine leere Liste ([]). Wenn Sie der Benutzer sind, der den Chaincode ursprünglich bereitgestellt hat, können Sie beim Upgrade des Chaincodes auch neue Admins im Parameter adminList angeben. Alle anderen Informationen im Parameter adminList werden bei Upgrades ignoriert.
@Validator(yup.array().of(yup.object()).nullable())
public async init(adminList: ERC1155TokenAdminAsset[]) {
  await this.Ctx.ERC1155Admin.initAdmin(adminList);
  await this.Ctx.ERC1155Token.saveClassInfo(<1st NFT Token Name>);
  await this.Ctx.ERC1155Token.saveClassInfo(<2nd NFT Token Name>);
  .
  .
  await this.Ctx.ERC1155Token.saveClassInfo(<nth NFT Token Name>);
  // await this.Ctx.ERC1155Token.saveDeleteTransactionInfo();
  return;
}
Parameter:
  • adminList array: Ein Array mit {orgId, userId}-Informationen, das die Liste der Tokenadministratoren angibt. Das Array adminList ist ein obligatorischer Parameter.
create<Token Name>Token
Diese Methode erstellt Token. Jedes definierte Token verfügt über eine eigene Erstellungsmethode. Bei fungiblen Token kann diese Methode nur von einem Token Admin des Chaincodes aufgerufen werden. Wenn bei nicht fungiblen Token die Minter-Rolle in der Spezifikationsdatei definiert ist, kann jeder Benutzer mit der Minter-Rolle diese Methode aufrufen, um eine NFT zu erstellen. Wenn die Minter-Rolle nicht definiert ist, kann jeder Benutzer mit dieser Methode NFTs (mint) erstellen. Der Benutzer, der diese Methode aufruft, wird zum Eigentümer der NFT.
Fungible Token:
@Validator(<Token Class>)
public async create<Token Name>Token(tokenAsset: <Token Class>) {
  await this.Ctx.ERC1155Auth.checkAuthorization("ERC1155TOKEN.save", "TOKEN");
  return await this.Ctx.ERC1155Token.save(tokenAsset);
}
Nicht-unglaubliche Token:
@Validator(<Token Class>, yup.number())
public async create<Token Name>Token(tokenAsset: <Token Class>, quantity: number) {
  return await this.Ctx.ERC1155Token.save(tokenAsset, quantity);
}
Parameter:
  • tokenAsset: <Token Class>: Das Tokenasset. Die Eigenschaften des Assets werden in der Modelldatei definiert.
  • quantity: number - Nur für nicht fungible Token die Anzahl der Token, die geprägt werden sollen. Der einzige unterstützte Wert für diesen Parameter ist 1.
Rückgabewert:
  • Bei Erfolg das Tokenasset im JSON-Format, das je nach Tokentyp die folgenden Informationen enthält.
  • tokenMetadata: JSON-Informationen, die das Token beschreiben.
  • createdBy: Die Account-ID des Aufrufers, der als Benutzer das Token mintet. Diese Eigenschaft kann nicht bearbeitet werden.
  • creationDate: Der Zeitstempel der Münztransaktion. Diese Eigenschaft kann nicht bearbeitet werden.
  • isBurned: Diese Eigenschaft gibt an, ob das Token gebrannt wird. Diese Eigenschaft kann nicht bearbeitet werden.
  • tokenName: Der Name des Tokens. Diese Eigenschaft kann nicht bearbeitet werden.
  • tokenDesc: Die Beschreibung des Tokens.
  • symbol: Das Symbol des Tokens. Diese Eigenschaft kann nicht bearbeitet werden.
  • tokenStandard: Der Standard des Tokens. Diese Eigenschaft kann nicht bearbeitet werden.
  • tokenType: Der Tokentyp ( fungibel oder nicht fungibel). Diese Eigenschaft kann nicht bearbeitet werden.
  • tokenUnit: Die Einheit des Tokens (ganz oder Bruchteil). Diese Eigenschaft kann nicht bearbeitet werden.
  • behaviors: Eine Liste mit Tokenverhalten. Diese Eigenschaft kann nicht bearbeitet werden.
  • mintable: Die Eigenschaften für das Prägen. Der Wert max_mint_quantity definiert die maximale Anzahl von Token, die für die Tokenklasse erstellt werden können.
  • owner: Die Account-ID des aktuellen Eigentümers, der als Aufrufer der Methode fungiert.
  • tokenUri: Die URI des Tokens.
  • quantity: Die Menge des Tokens.
Beispiel für Rückgabewert (ganze NFT):
{
    "tokenMetadata": {
        "paintingName": "monalisa",
        "description": "monalisa painting",
        "image": "image link",
        "painterName": "Leonardo da Vinci"
    },
    "assetType": "otoken",
    "quantity": 1,
    "tokenId": "artnft",
    "tokenName": "artcollection",
    "tokenDesc": "artcollection nft",
    "tokenStandard": "erc1155+",
    "tokenType": "nonfungible",
    "tokenUnit": "whole",
    "behaviors": [
        "indivisible",
        "singleton",
        "mintable",
        "transferable",
        "burnable",
        "roles"
    ],
    "roles": {
        "minter_role_name": "minter",
        "burner_role_name": "burner"
    },
    "mintable": {
        "max_mint_quantity": 500
    },
    "owner": "oaccount~42e89f4c72dfde9502814876423c6da630d466e87436dd1aae201d347ad1288d",
    "createdBy": "oaccount~42e89f4c72dfde9502814876423c6da630d466e87436dd1aae201d347ad1288d",
    "creationDate": "2022-12-29T04:08:35.000Z",
    "isBurned": false,
    "tokenUri": "tu",
    "price": 10000,
    "onSaleFlag": false
}
Beispiel für Rückgabewert (unglaubliches Token):
{
    "assetType": "otoken",
    "tokenId": "Loyalty",
    "tokenName": "loyalty",
    "tokenDesc": "Token Description",
    "tokenStandard": "erc1155+",
    "tokenType": "fungible",
    "tokenUnit": "fractional",
    "behaviors": [
        "divisible",
        "mintable",
        "transferable",
        "burnable",
        "roles"
    ],
    "roles": {
        "minter_role_name": "minter",
        "burner_role_name": "burner"
    },
    "mintable": {
        "max_mint_quantity": 10000
    },
    "divisible": {
        "decimal": 2
    },
    "currency_name": "Dollar"
}
Beispiel für Rückgabewert (Fractional NFT):
{
    "tokenMetadata": {
        "painting_name": "paint",
        "description": "Painting Description"
    },
    "assetType": "otoken",
    "tokenId": "realEstate",
    "tokenName": "realestate",
    "tokenDesc": "Token Description",
    "tokenStandard": "erc1155+",
    "tokenType": "nonfungible",
    "tokenUnit": "fractional",
    "behaviors": [
        "divisible",
        "mintable",
        "transferable",
        "burnable",
        "roles"
    ],
    "roles": {
        "minter_role_name": "minter",
        "burner_role_name": "burner"
    },
    "mintable": {
        "max_mint_quantity": 20000
    },
    "quantity": 100,
    "createdBy": "oaccount~42e89f4c72dfde9502814876423c6da630d466e87436dd1aae201d347ad1288d",
    "creationDate": "2023-06-14T04:20:14.000Z",
    "divisible": {
        "decimal": 2
    },
    "isBurned": false,
    "tokenUri": "www.realestate.example.com",
    "price": 1000,
    "on_sale_flag": true
}
update<Token Name>Token
Diese Methode aktualisiert Token. Jedes definierte Token verfügt über eine eigene Aktualisierungsmethode. Sie können keine Tokenmetadaten oder die Token-URI von nicht fungiblen Token aktualisieren. Bei fungiblen Token kann diese Methode nur von einem Token Admin des Chaincodes aufgerufen werden. Bei nicht fungiblen Token kann diese Methode nur vom Token-Eigentümer aufgerufen werden.
Fungible Token:
@Validator(<Token Class>)
public async update<Token Name>Token(tokenAsset: <Token Class>) {
  await this.Ctx.ERC1155Auth.checkAuthorization("ERC1155TOKEN.update", "TOKEN");
  return await this.Ctx.ERC1155Token.update(tokenAsset);
}
Nicht-unglaubliche Token:
@Validator(<Token Class>)
public async update<Token Name>Token(tokenAsset: <Token Class>) {
  return await this.Ctx.ERC1155Token.update(tokenAsset);
}
Parameter:
  • tokenAsset: <Token Class>: Das Tokenasset. Die Eigenschaften des Assets werden in der Modelldatei definiert.
Rückgabewert:
  • Bei Erfolg das aktualisierte Tokenasset im JSON-Format.
Beispiel für Rückgabewert (ganze NFT):
{
    "tokenMetadata": {
        "paintingName": "monalisa",
        "description": "monalisa painting",
        "image": "image link",
        "painterName": "Leonardo da Vinci"
    },
    "assetType": "otoken",
    "quantity": 1,
    "tokenId": "artnft",
    "tokenName": "artcollection",
    "tokenDesc": "artcollection nft",
    "tokenStandard": "erc1155+",
    "tokenType": "nonfungible",
    "tokenUnit": "whole",
    "behaviors": [
        "indivisible",
        "singleton",
        "mintable",
        "transferable",
        "burnable",
        "roles"
    ],
    "roles": {
        "minter_role_name": "minter",
        "burner_role_name": "burner"
    },
    "mintable": {
        "max_mint_quantity": 500
    },
    "owner": "oaccount~42e89f4c72dfde9502814876423c6da630d466e87436dd1aae201d347ad1288d",
    "createdBy": "oaccount~42e89f4c72dfde9502814876423c6da630d466e87436dd1aae201d347ad1288d",
    "creationDate": "2022-12-29T04:08:35.000Z",
    "isBurned": false,
    "tokenUri": "tu",
    "price": 10000,
    "onSaleFlag": false
}
getTokenHistory
Diese Methode gibt die Historie für eine angegebene Token-ID zurück. Jeder kann diese Methode nennen.
@GetMethod()
@Validator(yup.string())
public async getTokenHistory(tokenId: string) {
  return await this.Ctx.ERC1155Token.getTokenHistory(tokenId);
}
Parameter:
  • tokenId: string: Die ID des Tokens.
Rückgabewert:
  • Bei Erfolg ein JSON-Array, das die Tokenhistorie enthält.
Beispiel für Rückgabewert (unglaubliches Token):
[
    {
        "trxId": "ef4af760c3d7ee5e273196231d59fb91cafe6ca0f78c64747e87bc9bcbb3334b",
        "timeStamp": "2023-09-04T02:36:20.000Z",
        "value": {
            "assetType": "otoken",
            "tokenId": "LoyaltyToken",
            "tokenName": "loyalty",
            "tokenDesc": "Updated Fungible Whole",
            "tokenStandard": "erc1155+",
            "tokenType": "fungible",
            "tokenUnit": "fractional",
            "behaviors": [
                "divisible",
                "mintable",
                "transferable",
                "burnable",
                "roles"
            ],
            "roles": {
                "minter_role_name": "minter",
                "burner_role_name": "burner"
            },
            "mintable": {
                "max_mint_quantity": 10000
            },
            "divisible": {
                "decimal": 2
            },
            "currency_name": "Rupees"
        }
    },
    {
        "trxId": "4fb391a8903633a12a545cd2ecfb57f5575241325abf59995e2a4ed96572bb09",
        "timeStamp": "2023-09-04T02:35:07.000Z",
        "value": {
            "assetType": "otoken",
            "tokenId": "LoyaltyToken",
            "tokenName": "loyalty",
            "tokenDesc": "Fungible Whole",
            "tokenStandard": "erc1155+",
            "tokenType": "fungible",
            "tokenUnit": "fractional",
            "behaviors": [
                "divisible",
                "mintable",
                "transferable",
                "burnable",
                "roles"
            ],
            "roles": {
                "minter_role_name": "minter",
                "burner_role_name": "burner"
            },
            "mintable": {
                "max_mint_quantity": 10000
            },
            "divisible": {
                "decimal": 2
            },
            "currency_name": "Dollar"
        }
    }
]
Beispiel für Rückgabewert (Fractional NFT):
[
    {
        "txId": "99bca74f401465206da7499cbf704dd443b3c3d94e348b1d6682ab5ee1864a08",
        "timestamp": "2023-06-20T01:09:18.000Z",
        "value": {
            "assetType": "otoken",
            "tokenId": "FNFT",
            "tokenName": "realestate",
            "tokenStandard": "erc1155+",
            "tokenType": "nonfungible",
            "tokenUnit": "fractional",
            "behaviors": [
                "divisible",
                "mintable",
                "transferable",
                "burnable",
                "roles"
            ],
            "roles": {
                "minter_role_name": "minter",
                "burner_role_name": "burner"
            },
            "mintable": {
                "max_mint_quantity": 20000
            },
            "quantity": 100,
            "createdBy": "oaccount~87bcb699d507368ee3966cd03ee6d7736ffc55dde8c0f0e16b14866334ac504a",
            "creationDate": "2023-06-20T00:53:13.000Z",
            "divisible": {
                "decimal": 2
            },
            "isBurned": false,
            "tokenUri": "www.FNFT.example.com",
            "price": 2000,
            "on_sale_flag": true,
            "owners": [
                {
                    "accountId": "oaccount~87bcb699d507368ee3966cd03ee6d7736ffc55dde8c0f0e16b14866334ac504a",
                    "tokenShare": 90
                },
                {
                    "accountId": "oaccount~3cddfdaa855900579d963aa6f755a4aed1f3a474a2462c1b45bd7f36df673224",
                    "tokenShare": 10
                }
            ]
        }
    },
    {
        "txId": "d517c61f40e7d6af2f04fe6d337b3e5108eb57030c9dc823793498fd4fed671b",
        "timestamp": "2023-06-20T00:53:13.000Z",
        "value": {
            "assetType": "otoken",
            "tokenId": "FNFT",
            "tokenName": "realestate",
            "tokenStandard": "erc1155+",
            "tokenType": "nonfungible",
            "tokenUnit": "fractional",
            "behaviors": [
                "divisible",
                "mintable",
                "transferable",
                "burnable",
                "roles"
            ],
            "roles": {
                "minter_role_name": "minter",
                "burner_role_name": "burner"
            },
            "mintable": {
                "max_mint_quantity": 20000
            },
            "quantity": 100,
            "createdBy": "oaccount~87bcb699d507368ee3966cd03ee6d7736ffc55dde8c0f0e16b14866334ac504a",
            "creationDate": "2023-06-20T00:53:13.000Z",
            "divisible": {
                "decimal": 2
            },
            "isBurned": false,
            "tokenUri": "www.FNFT.example.com",
            "price": 2000,
            "on_sale_flag": true,
            "owners": [
                {
                    "accountId": "oaccount~87bcb699d507368ee3966cd03ee6d7736ffc55dde8c0f0e16b14866334ac504a",
                    "tokenShare": 100
                }
            ]
        }
    }
]
Beispiel für Rückgabewert (ganze NFT):
[
    {
        "trxId": "92ac6b56112acdba724dd49924d2420a7899c013c61aa40d272e8ab391a65e0f",
        "timeStamp": "2023-09-04T02:28:48.000Z",
        "value": {
            "tokenMetadata": {
                "painting_name": "monalisa",
                "description": "monalisa painting",
                "image": "image link",
                "painter_name": "Leonardo da Vinci"
            },
            "assetType": "otoken",
            "tokenId": "artnft",
            "tokenName": "artcollection",
            "tokenDesc": "Updated Token Description",
            "tokenStandard": "erc1155+",
            "tokenType": "nonfungible",
            "tokenUnit": "whole",
            "behaviors": [
                "indivisible",
                "mintable",
                "transferable",
                "burnable",
                "roles"
            ],
            "roles": {
                "minter_role_name": "minter",
                "burner_role_name": "burner"
            },
            "mintable": {
                "max_mint_quantity": 20000
            },
            "quantity": 1,
            "createdBy": "oaccount~42e89f4c72dfde9502814876423c6da630d466e87436dd1aae201d347ad1288d",
            "creationDate": "2023-09-04T02:27:19.000Z",
            "owner": "oaccount~42e89f4c72dfde9502814876423c6da630d466e87436dd1aae201d347ad1288d",
            "isBurned": false,
            "tokenUri": "www.FNFT.example.com",
            "price": 10000,
            "on_sale_flag": true
        }
    },
    {
        "trxId": "27697dd4a8dba53bad073aa95587cd1ef173b02fd95d771a60273d301fd3bcbe",
        "timeStamp": "2023-09-04T02:27:19.000Z",
        "value": {
            "tokenMetadata": {
                "painting_name": "monalisa",
                "description": "monalisa painting",
                "image": "image link",
                "painter_name": "Leonardo da Vinci"
            },
            "assetType": "otoken",
            "tokenId": "artnft",
            "tokenName": "artcollection",
            "tokenDesc": "artcollection nft",
            "tokenStandard": "erc1155+",
            "tokenType": "nonfungible",
            "tokenUnit": "whole",
            "behaviors": [
                "indivisible",
                "mintable",
                "transferable",
                "burnable",
                "roles"
            ],
            "roles": {
                "minter_role_name": "minter",
                "burner_role_name": "burner"
            },
            "mintable": {
                "max_mint_quantity": 20000
            },
            "quantity": 1,
            "createdBy": "oaccount~42e89f4c72dfde9502814876423c6da630d466e87436dd1aae201d347ad1288d",
            "creationDate": "2023-09-04T02:27:19.000Z",
            "owner": "oaccount~42e89f4c72dfde9502814876423c6da630d466e87436dd1aae201d347ad1288d",
            "isBurned": false,
            "tokenUri": "www.FNFT.example.com",
            "price": 10000,
            "on_sale_flag": true
        }
    }
]
[
    {
        "trxId": "ebda1f31543f8906b7ec50a631afff6b8318a3d63c84f3e73be6785cc2ff31ff",
        "timeStamp": "2023-06-20T01:14:08.000Z",
        "value": {
            "assetType": "otoken",
            "tokenId": "NFT",
            "tokenName": "artcollection",
            "tokenStandard": "erc1155+",
            "tokenType": "nonfungible",
            "tokenUnit": "whole",
            "behaviors": [
                "indivisible",
                "singleton",
                "mintable",
                "transferable",
                "roles"
            ],
            "roles": {
                "minter_role_name": "minter",
                "burner_role_name": "burner"
            },
            "mintable": {
                "max_mint_quantity": 20000
            },
            "quantity": 1,
            "createdBy": "oaccount~87bcb699d507368ee3966cd03ee6d7736ffc55dde8c0f0e16b14866334ac504a",
            "creationDate": "2023-06-20T01:14:08.000Z",
            "owner": "oaccount~87bcb699d507368ee3966cd03ee6d7736ffc55dde8c0f0e16b14866334ac504a",
            "isBurned": false,
            "tokenUri": "www.NFT.example.com",
            "price": 2000,
            "on_sale_flag": true
        }
    }
]
getAllTokens
Diese Methode gibt alle Tokenassets zurück, die in der Statusdatenbank gespeichert sind. Diese Methode kann nur von einem Token Admin des Chaincodes aufgerufen werden. Diese Methode verwendet SQL-reiche Berkeley DB-Abfragen und kann nur aufgerufen werden, wenn eine Verbindung zum Remote-Oracle Blockchain Platform-Netzwerk besteht.
@GetMethod()
@Validator(yup.string())
public async getTokenHistory(tokenId: string) {
  return await this.Ctx.ERC1155Token.getTokenHistory(tokenId);
}
Parameter:
  • Kein
Rückgabewert:
  • Eine Liste aller Tokenassets im JSON-Format.
Beispiel für den Rückgabewert:
[
  {
    "key": "tokenOne",
    "valueJson": {
      "assetType": "otoken",
      "tokenId": "tokenOne",
      "tokenName": "moneytok",
      "tokenStandard": "erc1155+",
      "tokenType": "fungible",
      "tokenUnit": "fractional",
      "behaviors": [
        "divisible",
        "mintable",
        "transferable",
        "roles"
      ],
      "roles": {
        "minter_role_name": "minter",
        "burner_role_name": "burner"
      },
      "mintable": {
        "max_mint_quantity": 1000
      },
      "divisible": {
        "decimal": 2
      }
    }
  },
  {
    "key": "tokenTwo",
    "valueJson": {
      "assetType": "otoken",
      "tokenId": "tokenTwo",
      "tokenName": "moneytok",
      "tokenStandard": "erc1155+",
      "tokenType": "fungible",
      "tokenUnit": "fractional",
      "behaviors": [
        "divisible",
        "mintable",
        "transferable",
        "roles"
      ],
      "roles": {
        "minter_role_name": "minter",
        "burner_role_name": "burner"
      },
      "mintable": {
        "max_mint_quantity": 1000
      },
      "divisible": {
        "decimal": 2
      }
    }
  },
  {
    "key": "art",
    "valueJson": {
      "assetType": "otoken",
      "quantity": 1,
      "tokenId": "art",
      "tokenName": "artcollection",
      "tokenStandard": "erc1155+",
      "tokenType": "nonfungible",
      "tokenUnit": "whole",
      "behaviors": [
        "indivisible",
        "singleton",
        "mintable",
        "transferable",
        "burnable",
        "roles"
      ],
      "roles": {
        "minter_role_name": "minter"
      },
      "mintable": {
        "max_mint_quantity": 20000
      },
      "owner": "oaccount~76cb672eeb1bd535899562a840d0c15a356db89e24bc8b43ac1dba845a4282c6",
      "createdBy": "oaccount~76cb672eeb1bd535899562a840d0c15a356db89e24bc8b43ac1dba845a4282c6",
      "creationDate": "2022-12-08T08:52:57.000Z",
      "isBurned": true,
      "tokenUri": "art.example.com",
      "transferredBy": "ouaccount~24ffd4d32a028a85b4b960f5d55536c837b5429bc7f346150adfa904ec2937cc",
      "transferredDate": "2022-12-08T08:59:17.000Z",
      "burnedBy": "oaccount~76cb672eeb1bd535899562a840d0c15a356db89e24bc8b43ac1dba845a4282c6",
      "burnedDate": "2022-12-08T09:01:28.000Z"
    }
  },
  {
    "key": "FNFT",
    "valueJson": {
        "assetType": "otoken",
        "tokenId": "FNFT",
        "tokenName": "realestate",
        "tokenStandard": "erc1155+",
        "tokenType": "nonfungible",
        "tokenUnit": "fractional",
        "behaviors": [
            "divisible",
            "mintable",
            "transferable",
            "burnable",
            "roles"
        ],
        "roles": {
            "minter_role_name": "minter",
            "burner_role_name": "burner"
        },
        "mintable": {
            "max_mint_quantity": 20000
        },
        "quantity": 100,
        "createdBy": "oaccount~87bcb699d507368ee3966cd03ee6d7736ffc55dde8c0f0e16b14866334ac504a",
        "creationDate": "2023-06-20T00:53:13.000Z",
        "divisible": {
            "decimal": 2
        },
        "isBurned": false,
        "tokenUri": "www.FNFT.example.com",
        "price": 2000,
        "on_sale_flag": true
    }
  }
]
getTokenById
Diese Methode gibt ein Tokenobjekt zurück, wenn das Token in der Statusdatenbank vorhanden ist. Bei partiellen NFTs wird auch die Liste der Eigentümer zurückgegeben. Diese Methode kann nur von einem Token Admin des Chaincodes oder des Tokeneigentümers aufgerufen werden.
@GetMethod()
@Validator(yup.string())
public async getTokenById(tokenId: string) {
  await this.Ctx.ERC1155Auth.checkAuthorization("ERC1155TOKEN.getTokenById", "TOKEN", { tokenId });
  return await this.Ctx.ERC1155Token.getTokenById(tokenId);
}
Parameter:
  • tokenId: string: Die ID des abzurufenden Tokens.
Beispiel für Rückgabewert (ganze NFT):
{
  "assetType": "otoken",
  "quantity": 1,
  "tokenId": "art",
  "tokenName": "artcollection",
  "tokenStandard": "erc1155+",
  "tokenType": "nonfungible",
  "tokenUnit": "whole",
  "behaviors": [
    "indivisible",
    "singleton",
    "mintable",
    "transferable",
    "burnable",
    "roles"
  ],
  "roles": {
    "minter_role_name": "minter"
  },
  "mintable": {
    "max_mint_quantity": 20000
  },
  "owner": "oaccount~76cb672eeb1bd535899562a840d0c15a356db89e24bc8b43ac1dba845a4282c6",
  "createdBy": "oaccount~76cb672eeb1bd535899562a840d0c15a356db89e24bc8b43ac1dba845a4282c6",
  "creationDate": "2022-12-08T08:52:57.000Z",
  "isBurned": true,
  "tokenUri": "art.example.com",
  "transferredBy": "ouaccount~24ffd4d32a028a85b4b960f5d55536c837b5429bc7f346150adfa904ec2937cc",
  "transferredDate": "2022-12-08T08:59:17.000Z",
  "burnedBy": "oaccount~76cb672eeb1bd535899562a840d0c15a356db89e24bc8b43ac1dba845a4282c6",
  "burnedDate": "2022-12-08T09:01:28.000Z"
}
Beispiel für Rückgabewert (unglaubliches Token):
{
    "assetType": "otoken",
    "tokenId": "Loyalty",
    "tokenName": "loyalty",
    "tokenDesc": "Token Description",
    "tokenStandard": "erc1155+",
    "tokenType": "fungible",
    "tokenUnit": "fractional",
    "behaviors": [
        "divisible",
        "mintable",
        "transferable",
        "burnable",
        "roles"
    ],
    "roles": {
        "minter_role_name": "minter",
        "burner_role_name": "burner"
    },
    "mintable": {
        "max_mint_quantity": 10000
    },
    "divisible": {
        "decimal": 2
    },
    "currency_name": "Dollar"
}
Beispiel für Rückgabewert (Fractional NFT):
{
    "tokenMetadata": {
        "painting_name": "paint",
        "description": "Painting Description"
    },
    "assetType": "otoken",
    "tokenId": "realEstate",
    "tokenName": "realestate",
    "tokenDesc": "Token Description",
    "tokenStandard": "erc1155+",
    "tokenType": "nonfungible",
    "tokenUnit": "fractional",
    "behaviors": [
        "divisible",
        "mintable",
        "transferable",
        "burnable",
        "roles"
    ],
    "roles": {
        "minter_role_name": "minter",
        "burner_role_name": "burner"
    },
    "mintable": {
        "max_mint_quantity": 20000
    },
    "quantity": 100,
    "createdBy": "oaccount~42e89f4c72dfde9502814876423c6da630d466e87436dd1aae201d347ad1288d",
    "creationDate": "2023-06-14T04:20:14.000Z",
    "divisible": {
        "decimal": 2
    },
    "isBurned": false,
    "tokenUri": "www.realestate.example.com",
    "price": 1000,
    "on_sale_flag": true,
    "owners": [
        {
            "accountId": "oaccount~42e89f4c72dfde9502814876423c6da630d466e87436dd1aae201d347ad1288d",
            "tokenShare": 100
        }
    ]
}
getAllTokensByUser
Diese Methode gibt alle Tokenassets zurück, deren Eigentümer ein angegebener Benutzer ist. Diese Methode verwendet SQL-reiche Berkeley DB-Abfragen und kann nur aufgerufen werden, wenn eine Verbindung zum Remote-Oracle Blockchain Platform-Netzwerk besteht. Diese Methode kann nur von einem Token Admin des Chaincodes oder vom Accounteigentümer aufgerufen werden.
@GetMethod()
@Validator(yup.string(), yup.string())
public async getAllTokensByUser(orgId: string, userId: string) {
  const accountId = this.Ctx.ERC1155Account.generateAccountId(orgId, userId, ACCOUNT_TYPE.USER_ACCOUNT);
  await this.Ctx.ERC1155Auth.checkAuthorization("ERC1155TOKEN.getAllTokensByUser", "TOKEN", { accountId });
  return await this.Ctx.ERC1155Token.getAllTokensByUser(accountId);
}
Parameter:
  • orgId: string: Die Mitgliedschaftsserviceprovider-(MSP-)ID des Benutzers in der aktuellen Organisation.
  • userId: string: Der Benutzername oder die E-Mail-ID des Benutzers.
Beispiel für den Rückgabewert:
[
  {
    "key": "tokenOne",
    "valueJson": {
      "assetType": "otoken",
      "tokenId": "tokenOne",
      "tokenName": "moneytok",
      "tokenStandard": "erc1155+",
      "tokenType": "fungible",
      "tokenUnit": "fractional",
      "behaviors": [
        "divisible",
        "mintable",
        "transferable",
        "roles"
      ],
      "roles": {
        "minter_role_name": "minter",
        "burner_role_name": "burner"
      },
      "mintable": {
        "max_mint_quantity": 1000
      },
      "divisible": {
        "decimal": 2
      }
    }
  },
  {
    "key": "nftToken",
    "valueJson": {
      "assetType": "otoken",
      "quantity": 1,
      "tokenId": "nftToken",
      "tokenName": "artcollection",
      "tokenStandard": "erc1155+",
      "tokenType": "nonfungible",
      "tokenUnit": "whole",
      "behaviors": [
        "indivisible",
        "singleton",
        "mintable",
        "transferable",
        "burnable",
        "roles"
      ],
      "roles": {
        "minter_role_name": "minter"
      },
      "mintable": {
        "max_mint_quantity": 20000
      },
      "owner": "oaccount~76cb672eeb1bd535899562a840d0c15a356db89e24bc8b43ac1dba845a4282c6",
      "createdBy": "oaccount~76cb672eeb1bd535899562a840d0c15a356db89e24bc8b43ac1dba845a4282c6",
      "creationDate": "2022-12-08T09:10:21.000Z",
      "isBurned": false,
      "tokenUri": "example.com"
    }
  }
]
ownerOf
Diese Methode gibt die Konto-ID, Organisations-ID und Benutzer-ID des Eigentümers der angegebenen Token-ID zurück. Jeder kann diese Methode nennen.
@GetMethod()
@Validator(yup.string())
public async ownerOf(tokenId: string) {
  return await this.Ctx.ERC1155Token.ownerOf(tokenId);
}
Parameter:
  • tokenId: string: Die ID des Tokens.
Beispiel für Rückgabewert (ganze NFT):
{
    "accountId": "oaccount~76cb672eeb1bd535899562a840d0c15a356db89e24bc8b43ac1dba845a4282c6",
    "orgId": "appdev",
    "userId": "idcqa"
}
Beispiel für Rückgabewert (Fractional NFT):
[
    {
        "accountId": "oaccount~42e89f4c72dfde9502814876423c6da630d466e87436dd1aae201d347ad1288d",
        "orgId": "Org1MSP",
        "userId": "admin"
    },
    {
        "accountId": "oaccount~74108eca702bab6d8548e740254f2cc7955d886885251d52d065042172a59db0",
        "orgId": "Org1MSP",
        "userId": "user"
    }
]
URI
Diese Methode gibt den URI eines angegebenen Tokens zurück. Jeder kann diese Methode nennen.
@GetMethod()
@Validator(yup.string())
public async URI(tokenId: string) {
  return await this.Ctx.ERC1155Token.tokenURI(tokenId);
}
Parameter:
  • tokenId: string: Die ID des Tokens.
Beispiel für den Rückgabewert:
{
    "tokenUri": "example.com"
}
name
Diese Methode gibt den Namen der Token-Klasse zurück. Jeder kann diese Methode nennen.
@GetMethod()
@Validator(yup.string())
public async name(tokenId: string) {
  return await this.Ctx.ERC1155Token.name(tokenId);
}
Parameter:
  • tokenId: string: Die ID des Tokens.
Beispiel für den Rückgabewert:
{"tokenName": "artcollection"}
totalSupply
Diese Methode gibt die Gesamtanzahl der Münztoken zurück. Mögliche Token werden durch die Token-ID angegeben. Nicht fungible Token werden durch den Tokennamen angegeben. Diese Methode kann nur von einem Token Admin des Chaincodes aufgerufen werden.
@GetMethod()
@Validator(yup.object())
public async totalSupply(tokenDetail: TokenDetail) {
  await this.Ctx.ERC1155Auth.checkAuthorization("ERC1155TOKEN.totalSupply", "TOKEN");
  const token = await this.Ctx.ERC1155Token.getTokenByIdOrName(tokenDetail);
  return await this.Ctx.ERC1155Token.totalSupply(token);
}
Parameter:
  • tokenDetails: TokenDetail: Die Details, die das Token angeben. Verwenden Sie für fungible Token das folgende Format:
    {"tokenId":"token1"}
    Verwenden Sie für nicht fungible Token das folgende Format:
    {"tokenName":"artCollection"}
Beispiel für den Rückgabewert:
{"totalSupply": 110}
totalNetSupply
Diese Methode gibt die Gesamtanzahl der Münztoken abzüglich der Anzahl der gebrannten Token zurück. Mögliche Token werden durch die Token-ID angegeben. Nicht fungible Token werden durch den Tokennamen angegeben. Diese Methode kann nur von einem Token Admin des Chaincodes aufgerufen werden.
@GetMethod()
@Validator(yup.object())
public async totalNetSupply(tokenDetail: TokenDetail) {
  await this.Ctx.ERC1155Auth.checkAuthorization("ERC1155TOKEN.totalNetSupply", "TOKEN");
  const token = await this.Ctx.ERC1155Token.getTokenByIdOrName(tokenDetail);
  return await this.Ctx.ERC1155Token.totalNetSupply(token);
}
Parameter:
  • tokenDetails: TokenDetail: Die Details, die das Token angeben. Verwenden Sie für fungible Token das folgende Format:
    {"tokenId":"token1"}
    Verwenden Sie für nicht fungible Token das folgende Format:
    {"tokenName":"artCollection"}
Beispiel für den Rückgabewert:
{"totalNetSupply": 105}
getTokensByName
Diese Methode gibt alle Tokenassets für einen angegebenen Tokennamen zurück. Diese Methode verwendet SQL-reiche Berkeley DB-Abfragen und kann nur aufgerufen werden, wenn eine Verbindung zum Remote-Oracle Blockchain Platform-Netzwerk besteht. Diese Methode kann nur von einem Token Admin des Chaincodes aufgerufen werden.
@GetMethod()
@Validator(yup.string())
public async getTokensByName(tokenName: string) {
  await this.Ctx.ERC1155Auth.checkAuthorization("ERC1155TOKEN.getTokensByName", "TOKEN");
  return await this.Ctx.ERC1155Token.getTokensByName(tokenName);
}
Parameter:
  • tokenName: string: Der Name des Tokens.
Beispiel für den Rückgabewert:
[
  {
    "key": "tokenOne",
    "valueJson": {
      "assetType": "otoken",
      "tokenId": "tokenOne",
      "tokenName": "moneytok",
      "tokenStandard": "erc1155+",
      "tokenType": "fungible",
      "tokenUnit": "fractional",
      "behaviors": [
        "divisible",
        "mintable",
        "transferable",
        "roles"
      ],
      "roles": {
        "minter_role_name": "minter",
        "burner_role_name": "burner"
      },
      "mintable": {
        "max_mint_quantity": 1000
      },
      "divisible": {
        "decimal": 2
      }
    }
  },
  {
    "key": "tokenTwo",
    "valueJson": {
      "assetType": "otoken",
      "tokenId": "tokenTwo",
      "tokenName": "moneytok",
      "tokenStandard": "erc1155+",
      "tokenType": "fungible",
      "tokenUnit": "fractional",
      "behaviors": [
        "divisible",
        "mintable",
        "transferable",
        "roles"
      ],
      "roles": {
        "minter_role_name": "minter",
        "burner_role_name": "burner"
      },
      "mintable": {
        "max_mint_quantity": 1000
      },
      "divisible": {
        "decimal": 2
      }
    }
  }
]
getTokenDecimal
Diese Methode gibt die Anzahl der Dezimalstellen für ein angegebenes Token zurück. Diese Methode kann nur von einem Token Admin des Chaincodes aufgerufen werden.
@GetMethod()
@Validator(yup.string())
public async getTokenDecimal(tokenId: string) {
  const token = await this.Ctx.ERC1155Token.get(tokenId);
  await this.Ctx.ERC1155Auth.checkAuthorization("ERC1155TOKEN.getDecimals", "TOKEN");
  return {
    msg: `Token Id: ${tokenId} has ${this.Ctx.ERC1155Token.getDecimals(token)} decimal places.`,
  };
}
Parameter:
  • tokenId: string: Die ID des Tokens.
Beispiel für den Rückgabewert:
{
    "msg": "Token Id: tokenOne has 2 decimal places."
}

Methoden für die Accountverwaltung

createAccount
Mit dieser Methode wird ein Konto für einen angegebenen Benutzer erstellt, und das zugehörige Token berücksichtigt fungible oder nicht fungible Token. Ein Konto muss für jeden Benutzer erstellt werden, der jederzeit Token hat. Das Benutzerkonto verfolgt das NFT-Konto und die fungiblen Token-Konten, die ein Benutzer besitzt. Benutzer müssen über Konten im Netzwerk verfügen, um tokenbezogene Vorgänge abzuschließen. Diese Methode kann nur von einem Token Admin des Chaincodes aufgerufen werden.

Ein Benutzerkonto hat eine eindeutige ID, die durch einen SHA-256-Hash des Parameters orgId und des Parameters userId gebildet wird.

Ein Benutzer kann mehrere fungible Token-Konten mit eindeutigen Konto-IDs haben. Unsichtbare Token-Konto-IDs werden durch einen SHA-256-Hash des Parameters orgId, den Parameter userId, die durch das Tilde-Symbol (~) getrennte Konstantenzeichenfolge ft und eine Zählernummer gebildet, die den Index des fungiblen Kontos angibt, das durch das Tilde-Symbol (~) getrennt erstellt wird.

Ein Benutzer kann nur ein nicht fungibles Token-Konto haben. Konten-IDs für nicht fungible Token sind eindeutig und werden durch einen SHA-256-Hash des Parameters orgId, den Parameter userId und die Konstantenzeichenfolge nft gebildet, die durch das Tilde-Symbol (~) getrennt sind. Alle nicht fungiblen Token, die einem Benutzer gehören, ob ganz oder teilweise, sind mit diesem Konto verknüpft.

Benutzeraccount-IDs beginnen mit ouaccount~. Tokenaccount-IDs beginnen mit oaccount~.

@Validator(yup.string(), yup.string(), yup.boolean(), yup.boolean())
public async createAccount(orgId: string, userId: string, ftAccount: boolean, nftAccount: boolean) {
  await this.Ctx.ERC1155Auth.checkAuthorization("ERC1155ACCOUNT.createAccount", "TOKEN");
  return await this.Ctx.ERC1155Account.createAccount(orgId, userId, ftAccount, nftAccount);
}
Parameter:
  • orgId: string: Die Mitgliedschaftsserviceprovider-(MSP-)ID des Benutzers in der aktuellen Organisation.
  • userId: string: Der Benutzername oder die E-Mail-ID des Benutzers.
  • ftAccount: boolean: Bei "true" wird ein fungibler Tokenaccount erstellt und mit dem Benutzeraccount verknüpft.
  • nftAccount: boolean: Bei "true" wird ein nicht fungibler Tokenaccount erstellt und mit dem Benutzeraccount verknüpft.
Rückgabewert:
  • Bei Erfolg ein JSON-Objekt des erstellten Accounts.
Beispiel für den Rückgabewert:
{
  "assetType": "ouaccount",
  "accountId": "ouaccount~cf20877546f52687f387e7c91d88b9722c97e1a456cc0484f40c747f7804feae",
  "userId": "user1",
  "orgId": "appdev",
  "totalAccounts": 2,
  "totalFtAccounts": 1,
  "associatedFtAccounts": [
    {
      "accountId": "oaccount~60bb20c14a83f6e426e1437c479c5891e1c6477dfd7ad18b73acac5d80bc504b",
      "tokenId": ""
    }
  ],
  "associatedNftAccount": "oaccount~73c3e835dac6d0a56ca9d8def08269f83cefd59b9d297fe2cdc5a9083828fa58"
}
createUserAccount
Mit dieser Methode wird ein Account für einen angegebenen Benutzer erstellt. Ein Konto muss für jeden Benutzer erstellt werden, der jederzeit Token hat. Das Benutzerkonto verfolgt das NFT-Konto und die fungiblen Token-Konten, über die ein Benutzer verfügt. Benutzer müssen über Konten im Netzwerk verfügen, um tokenbezogene Vorgänge abzuschließen.

Eine Account-ID ist ein SHA-256-Hash mit dem Parameter orgId und dem Parameter userId. Diese Methode kann nur von einem Token Admin des Chaincodes aufgerufen werden.

@Validator(yup.string(), yup.string())
  public async createUserAccount(orgId: string, userId: string) {
    await this.Ctx.ERC1155Auth.checkAuthorization("ERC1155ACCOUNT.createUserAccount", "TOKEN");
    return await this.Ctx.ERC1155Account.createUserAccount(orgId, userId);
  }
Parameter:
  • orgId: string: Die Mitgliedschaftsserviceprovider-(MSP-)ID des Benutzers in der aktuellen Organisation.
  • userId: string: Der Benutzername oder die E-Mail-ID des Benutzers.
Rückgabewert:
  • Bei Erfolg ein JSON-Objekt des erstellten Benutzeraccounts.
Beispiel für den Rückgabewert:
{
  "assetType": "ouaccount",
  "accountId": "ouaccount~24ffd4d32a028a85b4b960f5d55536c837b5429bc7f346150adfa904ec2937cc",
  "userId": "user2",
  "orgId": "appdev",
  "totalAccounts": 0,
  "totalFtAccounts": 0,
  "associatedFtAccounts": [],
  "associatedNftAccount": ""
}
createTokenAccount
Diese Methode erstellt ein fungibles oder nicht fungibles Token-Konto, das einem Benutzerkonto zugeordnet werden kann.

Ein Benutzer kann mehrere fungible Token-Konten mit eindeutigen Konto-IDs haben. Unsichtbare Token-Konto-IDs werden durch einen SHA-256-Hash des Parameters orgId, den Parameter userId, die durch das Tilde-Symbol (~) getrennte Konstantenzeichenfolge ft und eine Zählernummer gebildet, die den Index des fungiblen Kontos angibt, das durch das Tilde-Symbol (~) getrennt erstellt wird.

Ein Benutzer kann nur ein nicht fungibles Token-Konto haben. Konten-IDs für nicht fungible Token sind eindeutig und werden durch einen SHA-256-Hash des Parameters orgId, den Parameter userId und die Konstantenzeichenfolge nft gebildet, die durch das Tilde-Symbol (~) getrennt sind. Alle nicht fungiblen Token, die einem Benutzer gehören, ob ganz oder teilweise, sind mit diesem Konto verknüpft.

Diese Methode kann nur von einem Token Admin des Chaincodes aufgerufen werden.

@Validator(yup.string(), yup.string(), yup.string())
  public async createTokenAccount(orgId: string, userId: string, tokenType: TokenType) {
    await this.Ctx.ERC1155Auth.checkAuthorization("ERC1155ACCOUNT.createTokenAccount", "TOKEN");
    return await this.Ctx.ERC1155Account.createTokenAccount(orgId, userId, tokenType);
  }
Parameter:
  • orgId: string: Die Mitgliedschaftsserviceprovider-(MSP-)ID des Benutzers in der aktuellen Organisation.
  • userId: string: Der Benutzername oder die E-Mail-ID des Benutzers.
  • tokenType: TokenType: Der Typ des zu erstellenden Tokenaccounts. Die einzigen unterstützten Tokentypen sind nonfungible und fungible.
Rückgabewert:
  • Bei Erfolg ein JSON-Objekt des erstellten Tokenaccounts.
Beispiel für den Rückgabewert:
{
  "assetType": "ouaccount",
  "accountId": "ouaccount~24ffd4d32a028a85b4b960f5d55536c837b5429bc7f346150adfa904ec2937cc",
  "userId": "user2",
  "orgId": "appdev",
  "totalAccounts": 1,
  "totalFtAccounts": 1,
  "associatedFtAccounts": [
    {
      "accountId": "oaccount~1422a74d262a3a55a37cd9023ef8836f765d0be7b49d397696b9961d7434d22a",
      "tokenId": ""
    }
  ],
  "associatedNftAccount": ""
}
associateFungibleTokenAccount
Diese Methode verknüpft das fungible Token-Konto eines Benutzers mit einem bestimmten fungiblen Token.

Diese Methode kann nur von einem Token Admin des Chaincodes aufgerufen werden.

@Validator(yup.string(), yup.string(), yup.string())
public async associateFungibleTokenToAccount(orgId: string, userId: string, tokenId: string) {
  const accountId = this.Ctx.ERC1155Account.generateAccountId(orgId, userId, ACCOUNT_TYPE.USER_ACCOUNT);
  await this.Ctx.ERC1155Auth.checkAuthorization("ERC1155ACCOUNT.associateFungibleTokenToAccount", "TOKEN", { accountId });
  return await this.Ctx.ERC1155Account.associateTokenToToken(accountId, tokenId);
}
Parameter:
  • orgId: string: Die Mitgliedschaftsserviceprovider-(MSP-)ID des Benutzers in der aktuellen Organisation.
  • userId: string: Der Benutzername oder die E-Mail-ID des Benutzers.
  • tokenId: string: Die ID des Tokens.
Rückgabewert:
  • Bei Erfolg ein JSON-Objekt des Benutzerkontos, das zeigt, dass das fungible Token dem Tokenaccount zugeordnet wurde. Beispiel: Im folgenden Beispiel zeigt das erste Objekt im Array associatedFtAccounts, dass die fungible Tokenaccount-ID und die Token-ID verknüpft sind.
Beispiel für den Rückgabewert:
{
  "assetType": "ouaccount",
  "accountId": "ouaccount~24ffd4d32a028a85b4b960f5d55536c837b5429bc7f346150adfa904ec2937cc",
  "userId": "user2",
  "orgId": "appdev",
  "totalAccounts": 1,
  "totalFtAccounts": 1,
  "associatedFtAccounts": [
    {
      "accountId": "oaccount~1422a74d262a3a55a37cd9023ef8836f765d0be7b49d397696b9961d7434d22a",
      "tokenId": "tokenOne"
    }
  ],
  "associatedNftAccount": ""
}
getAccountHistory
Diese Methode gibt die Historie für ein angegebenes Tokenkonto zurück. Dies ist eine asynchrone Methode. Diese Methode kann nur von einem Token Admin des Chaincodes oder vom Accounteigentümer aufgerufen werden.
@GetMethod()
@Validator(yup.string(), yup.string(), yup.string())
public async getAccountHistory(orgId: string, userId: string, tokenId?: string) {
  const userAccountId = await this.Ctx.ERC1155Account.generateAccountId(orgId, userId, ACCOUNT_TYPE.USER_ACCOUNT);
  const userAccount = await this.Ctx.ERC1155Account.getAccount(userAccountId, tokenId);
  await this.Ctx.ERC1155Auth.checkAuthorization("ERC1155ACCOUNT.history", "TOKEN", { accountId: userAccountId });
  return await this.Ctx.ERC1155Account.getAccountHistory(userAccount.accountId);
}
Parameter:
  • orgId: string: Die Mitgliedschaftsserviceprovider-(MSP-)ID des Benutzers in der aktuellen Organisation.
  • userId: string: Der Benutzername oder die E-Mail-ID des Benutzers.
  • tokenId?: string: Bei einem nicht fungiblen Tokenaccount eine leere Zeichenfolge. Bei einem fungiblen Token-Konto die Token-ID.
Rückgabewert:
  • Bei Erfolg ein Array von JSON-Objekten, das die Accounthistorie beschreibt.
Beispiel für den Rückgabewert:
[
  {
    "trxId": "89f462697f3c988024b2c248cbda21f9eb7e96567e56dd8db64ada96a4845a7f",
    "timeStamp": "2022-12-08T07:15:10.000Z",
    "value": {
      "assetType": "oaccount",
      "bapAccountVersion": 1,
      "accountId": "oaccount~1422a74d262a3a55a37cd9023ef8836f765d0be7b49d397696b9961d7434d22a",
      "userId": "user2",
      "orgId": "appdev",
      "tokenType": "fungible",
      "tokenId": "tokenOne",
      "tokenName": "moneytok",
      "balance": 110
    }
  },
  {
    "trxId": "30dd4fe0746350c85a5000996974487010a0a8fee73d6b2e480c3ca330a6d31f",
    "timeStamp": "2022-12-08T06:43:10.000Z",
    "value": {
      "assetType": "oaccount",
      "bapAccountVersion": 0,
      "accountId": "oaccount~1422a74d262a3a55a37cd9023ef8836f765d0be7b49d397696b9961d7434d22a",
      "userId": "user2",
      "orgId": "appdev",
      "tokenType": "fungible",
      "tokenId": "tokenOne",
      "tokenName": "moneytok",
      "balance": 0
    }
  },
  {
    "trxId": "6226c0455cc3a4f99c3fd7ed8b1d36b8e93f863e42ab61a9b0d399f2d69d2f3d",
    "timeStamp": "2022-12-08T06:41:51.000Z",
    "value": {
      "assetType": "oaccount",
      "bapAccountVersion": 0,
      "accountId": "oaccount~1422a74d262a3a55a37cd9023ef8836f765d0be7b49d397696b9961d7434d22a",
      "userId": "user2",
      "orgId": "appdev",
      "tokenType": "fungible",
      "tokenId": "",
      "balance": 0
    }
  }
]
getAccount
Diese Methode gibt Tokenaccountdetails für einen angegebenen Benutzer zurück. Diese Methode kann nur von einem Token Admin des Chaincodes oder dem Account Owner des Accounts aufgerufen werden.
@GetMethod()
@Validator(yup.string(), yup.string(), yup.string())
public async getAccount(orgId: string, userId: string, tokenId?: string) {
  const userAccountId = this.Ctx.ERC1155Account.generateAccountId(orgId, userId, ACCOUNT_TYPE.USER_ACCOUNT);
  await this.Ctx.ERC1155Auth.checkAuthorization("ERC1155ACCOUNT.getAccount", "TOKEN", { accountId: userAccountId });
  return await this.Ctx.ERC1155Account.getAccountWithStatus(userAccountId, tokenId);
}
Parameter:
  • orgId: string: Die Mitgliedschaftsserviceprovider-(MSP-)ID des Benutzers in der aktuellen Organisation.
  • userId: string: Der Benutzername oder die E-Mail-ID des Benutzers.
  • tokenId?: string: Bei einem nicht fungiblen Tokenaccount eine leere Zeichenfolge. Bei einem fungiblen Token-Konto die Token-ID.
Rückgabewert:
  • Bei Erfolg ein JSON-Objekt, das Tokenaccountdetails enthält. Der Parameter bapAccountVersion ist im Accountobjekt zur internen Verwendung definiert.
Beispiel für Rückgabewert (Nicht-ungbares Token-Konto):
{
  "assetType": "oaccount",
  "bapAccountVersion": 1,
  "status": "active",
  "accountId": "oaccount~cc301bee057f14236a97d434909ec1084970921b008f6baab09c2a0f5f419a9a",
  "userId": "idcqa",
  "orgId": "appdev",
  "tokenType": "nonfungible",
  "noOfNfts": 1
}
Beispiel für Rückgabewert (Fungible Token Account):
{
  "bapAccountVersion": 0,
  "assetType": "oaccount",
  "status": "active",
  "accountId": "oaccount~2de8db6b91964f8c9009136831126d3cfa94e1d00c4285c1ea3e6d1f36479ed4",
  "userId": "idcqa",
  "orgId": "appdev",
  "tokenType": "fungible",
  "tokenId": "t1",
  "tokenName": "loyalty",
  "balance": 100
}
getAllAccounts
Diese Methode gibt Details aller Benutzeraccounts zurück. Diese Methode kann nur von einem Token Admin des Chaincodes aufgerufen werden.
@GetMethod()
@Validator()
public async getAllAccounts() {
  await this.Ctx.ERC1155Auth.checkAuthorization("ERC1155ACCOUNT.getAllAccounts", "TOKEN");
  return await this.Ctx.ERC1155Account.getAllAccounts();
}
Parameter:
  • Kein
Rückgabewert:
  • Bei Erfolg ein JSON-Array aller Konten.
Beispiel für den Rückgabewert:
[
        {
            "assetType": "ouaccount",
            "accountId": "ouaccount~412de5e3998dcd100973e1bad6e8729fddc1c7ff610beab8376d733a35c51f38",
            "userId": "idcqa",
            "orgId": "appdev",
            "totalAccounts": 2,
            "totalFtAccounts": 1,
            "associatedFtAccounts": [
                {
                    "accountId": "oaccount~21206f309941a2a23c4f158a0fe1b8f12bb8e2b0c9a2e1358f5efebc0c7d410e",
                    "tokenId": "loy1"
                }
            ],
            "associatedNftAccount": "oaccount~e88276a3be547e31b567346bdddde52d37734da4d5fae83ab2e5c98a10097371"
        },
        {
            "assetType": "ouaccount",
            "accountId": "ouaccount~9501bb774c156eb8354dfe489250ea91f757523d70f08ee494bda98bb352003b",
            "userId": "user1_minter",
            "orgId": "appdev",
            "totalAccounts": 2,
            "totalFtAccounts": 1,
            "associatedFtAccounts": [
                {
                    "accountId": "oaccount~1089ee5122f367ee0ca38c6660298f4b81f199627e4f67f3691c0f628237974c",
                    "tokenId": "loy1"
                }
            ],
            "associatedNftAccount": "oaccount~dcee860665db8740cb77b846e823752185a1e9a185814d0acb305890f5903446"
        },
    ]
getAccountDetailsByUser
Diese Methode gibt eine Kontenübersicht für einen angegebenen Benutzer und Details zu fungiblen und nicht fungiblen Token zurück, die dem Benutzer zugeordnet sind. Diese Methode kann nur von einem Token Admin des Chaincodes oder dem Account Owner des Accounts aufgerufen werden.
@GetMethod()
@Validator(yup.string(), yup.string())
public async getAccountDetailsByUser(orgId: string, userId: string) {
  const userAccountId = this.Ctx.ERC1155Account.generateAccountId(orgId, userId, ACCOUNT_TYPE.USER_ACCOUNT);
  await this.Ctx.ERC1155Auth.checkAuthorization("ERC1155ACCOUNT.getAccountDetailsByUser", "TOKEN", {
    accountId: userAccountId,
  });
  return await this.Ctx.ERC1155Account.getAccountDetailsByUser(orgId, userId);
}
Parameter:
  • orgId: string: Die Mitgliedschaftsserviceprovider-(MSP-)ID des Benutzers in der aktuellen Organisation.
  • userId: string: Der Benutzername oder die E-Mail-ID des Benutzers.
Rückgabewert:
  • Bei Erfolg ein JSON-Accountobjekt, das eine Accountübersicht für den angegebenen Benutzer und Details von fungiblen und nicht fungiblen Token enthält, die dem Benutzer zugeordnet sind. Bei nicht fungiblen Token für Bruchteile zeigt die Eigenschaft tokenShare im Abschnitt associatedNFTs die Freigabe an, die dem Benutzer gehört.
Beispiel für den Rückgabewert:
{
    "userAccountId": "ouaccount~412de5e3998dcd100973e1bad6e8729fddc1c7ff610beab8376d733a35c51f38",
    "associatedFTAccounts": [
        {
            "accountId": "oaccount~21206f309941a2a23c4f158a0fe1b8f12bb8e2b0c9a2e1358f5efebc0c7d410e",
            "tokenId": "FT",
            "balance": 50
        }
    ],
    "associatedNFTAccount": {
        "accountId": "oaccount~e88276a3be547e31b567346bdddde52d37734da4d5fae83ab2e5c98a10097371",
        "associatedNFTs": [
            {
                "nftTokenId": "FNFT",
                "tokenShare": 100
            },
            {
                "nftTokenId": "FNFT2",
                "tokenShare": 110
            },
            {
                "nftTokenId": "NFT"
            }
        ]
    }
}
getUserByAccountId
Diese Methode gibt die Benutzerdetails einer angegebenen Account-ID zurück. Diese Methode kann von jedem Benutzer aufgerufen werden.
@GetMethod()
@Validator(yup.string())
public async getUserByAccountId(accountId: string) {
  return await this.Ctx.ERC1155Account.getUserByAccountId(accountId);
}
Parameter:
  • accountId: string: Die ID des Accounts.
Rückgabewert:
  • Bei Erfolg ein JSON-Objekt der Benutzerdetails (orgId und userId).
Beispiel für den Rückgabewert:
{
  "orgId": "appdev"
  "userId": "user2",
}

Methoden für die Rollenverwaltung

addRole
Diese Methode fügt einem angegebenen Benutzer und Token eine Rolle hinzu. Diese Methode kann nur von einem Token Admin des Chaincodes aufgerufen werden. Mögliche Token werden durch die Token-ID angegeben. Nicht fungible Token werden durch den Tokennamen angegeben. Der angegebene Benutzer muss über ein Token-Konto verfügen, das mit dem fungiblen Token verknüpft ist, oder über ein nicht fungibles Token-Konto für NFT-Rollen. Die angegebene Rolle muss in der Spezifikationsdatei für das Token vorhanden sein.
@Validator(yup.string(), yup.string(), yup.string(), yup.object())
public async addRole(orgId: string, userId: string, role: string, tokenDetail: TokenDetail) {
  await this.Ctx.ERC1155Auth.checkAuthorization("ERC1155TOKEN.addRoleMember", "TOKEN");
  const userAccountId = this.Ctx.ERC1155Account.generateAccountId(orgId, userId, ACCOUNT_TYPE.USER_ACCOUNT);
  const token = await this.Ctx.ERC1155Token.getTokenByIdOrName(tokenDetail);
  return await this.Ctx.ERC1155Token.addRoleMember(role, userAccountId, token);
}
Parameter:
  • orgId: string: Die Mitgliedschaftsserviceprovider-(MSP-)ID des Benutzers in der aktuellen Organisation.
  • userId: string: Der Benutzername oder die E-Mail-ID des Benutzers.
  • role: string: Der Name der Rolle, die dem angegebenen Benutzer hinzugefügt werden soll.
  • tokenDetails: TokenDetail: Die Details, die das Token angeben. Verwenden Sie für fungible Token das folgende Format:
    {"tokenId":"token1"}
    Verwenden Sie für nicht fungible Token das folgende Format:
    {"tokenName":"artCollection"}
Rückgabewert:
  • Bei Erfolg eine Nachricht mit Accountdetails.
Beispiel für den Rückgabewert:
{
  "msg": "Successfully added role 'minter' to Account Id: oaccount~1422a74d262a3a55a37cd9023ef8836f765d0be7b49d397696b9961d7434d22a (Org-Id: appdev, User-Id: idcqa)"
}
isInRole
Diese Methode gibt einen booleschen Wert zurück, der angibt, ob ein Benutzer eine angegebene Rolle hat. Mögliche Token werden durch die Token-ID angegeben. Nicht fungible Token werden durch den Tokennamen angegeben. Diese Methode kann nur von einem Token Admin des Chaincodes oder dem Account Owner des Accounts aufgerufen werden. Der angegebene Benutzer muss über ein Token-Konto verfügen, das mit dem fungiblen Token verknüpft ist, oder über ein nicht fungibles Token-Konto für NFT-Rollen. Die angegebene Rolle muss in der Spezifikationsdatei für das Token vorhanden sein.
@GetMethod()
@Validator(yup.string(), yup.string(), yup.string(), yup.object())
public async isInRole(orgId: string, userId: string, role: string, tokenDetail: TokenDetail) {
  await this.Ctx.ERC1155Auth.checkAuthorization("ERC1155TOKEN.removeRoleMember", "TOKEN");
  const userAccountId = this.Ctx.ERC1155Account.generateAccountId(orgId, userId, ACCOUNT_TYPE.USER_ACCOUNT);
  const token = await this.Ctx.ERC1155Token.getTokenByIdOrName(tokenDetail);
  return await this.Ctx.ERC1155Token.isInRole(role, userAccountId, token);
}
Parameter:
  • orgId: string: Die Mitgliedschaftsserviceprovider-(MSP-)ID des Benutzers in der aktuellen Organisation.
  • userId: string: Der Benutzername oder die E-Mail-ID des Benutzers.
  • role: string: Der Name der zu suchenden Rolle.
  • tokenDetails: TokenDetail: Die Details, die das Token angeben. Verwenden Sie für fungible Token das folgende Format:
    {"tokenId":"token1"}
    Verwenden Sie für nicht fungible Token das folgende Format:
    {"tokenName":"artCollection"}
Beispiel für den Rückgabewert:
{
    "result": true,
    "msg": "Account Id oaccount~1422a74d262a3a55a37cd9023ef8836f765d0be7b49d397696b9961d7434d22a (Org-Id: appdev, User-Id: idcqa) has minter role"
}
removeRole
Diese Methode entfernt eine Rolle von einem angegebenen Benutzer und Token. Mögliche Token werden durch die Token-ID angegeben. Nicht fungible Token werden durch den Tokennamen angegeben. Diese Methode kann nur von einem Token Admin des Chaincodes aufgerufen werden. Der angegebene Benutzer muss über ein Token-Konto verfügen, das mit dem fungiblen Token verknüpft ist, oder über ein nicht fungibles Token-Konto für NFT-Rollen. Die angegebene Rolle muss in der Spezifikationsdatei für das Token vorhanden sein.
@Validator(yup.string(), yup.string(), yup.string(), yup.object())
public async removeRole(orgId: string, userId: string, role: string, tokenDetail: TokenDetail) {
  await this.Ctx.ERC1155Auth.checkAuthorization("ERC1155TOKEN.removeRoleMember", "TOKEN");
  const userAccountId = this.Ctx.ERC1155Account.generateAccountId(orgId, userId, ACCOUNT_TYPE.USER_ACCOUNT);
  const token = await this.Ctx.ERC1155Token.getTokenByIdOrName(tokenDetail);
  return await this.Ctx.ERC1155Token.removeRoleMember(role, userAccountId, token);
}
Parameter:
  • orgId: string: Die Mitgliedschaftsserviceprovider-(MSP-)ID des Benutzers in der aktuellen Organisation.
  • userId: string: Der Benutzername oder die E-Mail-ID des Benutzers.
  • role: string: Der Name der Rolle, die vom angegebenen Benutzer entfernt werden soll.
  • tokenDetails: TokenDetail: Die Details, die das Token angeben. Verwenden Sie für fungible Token das folgende Format:
    {"tokenId":"token1"}
    Verwenden Sie für nicht fungible Token das folgende Format:
    {"tokenName":"artCollection"}
Beispiel für den Rückgabewert:
{
  "msg": "Successfully removed role 'minter' from Account Id: oaccount~60bb20c14a83f6e426e1437c479c5891e1c6477dfd7ad18b73acac5d80bc504b (Org-Id: appdev, User-Id: user1)"
}
getAccountsByRole
Diese Methode gibt eine Liste aller Konto-IDs für eine angegebene Rolle und ein bestimmtes Token zurück. Mögliche Token werden durch die Token-ID angegeben. Nicht fungible Token werden durch den Tokennamen angegeben. Diese Methode kann nur von einem Token Admin des Chaincodes aufgerufen werden.
@GetMethod()
@Validator(yup.string(), yup.object())
public async getAccountsByRole(role: string, tokenDetail: TokenDetail) {
  await this.Ctx.ERC1155Auth.checkAuthorization("ERC1155ROLE.getAccountsByRole", "TOKEN");
  const token = await this.Ctx.ERC1155Token.getTokenByIdOrName(tokenDetail);
  return await this.Ctx.ERC1155Token.getAccountsByRole(role, token);
}
Parameter:
  • role: string: Der Name der zu suchenden Rolle.
  • tokenDetails: TokenDetail: Die Details, die das Token angeben. Verwenden Sie für fungible Token das folgende Format:
    {"tokenId":"token1"}
    Verwenden Sie für nicht fungible Token das folgende Format:
    {"tokenName":"artCollection"}
Beispiel für den Rückgabewert:
{
  "accounts": [
    "oaccount~1422a74d262a3a55a37cd9023ef8836f765d0be7b49d397696b9961d7434d22a",
    "oaccount~60bb20c14a83f6e426e1437c479c5891e1c6477dfd7ad18b73acac5d80bc504b"
  ]
}
getUsersByRole
Diese Methode gibt eine Liste aller Benutzer für eine angegebene Rolle und ein bestimmtes Token zurück. Mögliche Token werden durch die Token-ID angegeben. Nicht fungible Token werden durch den Tokennamen angegeben. Diese Methode kann nur von einem Token Admin des Chaincodes aufgerufen werden.
@GetMethod()
@Validator(yup.string(), yup.object())
public async getUsersByRole(role: string, tokenDetail: TokenDetail) {
  await this.Ctx.ERC1155Auth.checkAuthorization("ERC1155ROLE.getUsersByRole", "TOKEN");
  const token = await this.Ctx.ERC1155Token.getTokenByIdOrName(tokenDetail);
  return await this.Ctx.ERC1155Token.getUsersByRole(role, token);
}
Parameter:
  • role: string: Der Name der zu suchenden Rolle.
  • tokenDetails: TokenDetail: Die Details, die das Token angeben. Verwenden Sie für fungible Token das folgende Format:
    {"tokenId":"token1"}
    Verwenden Sie für nicht fungible Token das folgende Format:
    {"tokenName":"artCollection"}
Beispiel für den Rückgabewert:
{
    "users": [
        {
            "accountId": "oaccount~1422a74d262a3a55a37cd9023ef8836f765d0be7b49d397696b9961d7434d22a",
            "orgId": "appdev",
            "userId": "user2"
        },
        {
            "accountId": "oaccount~60bb20c14a83f6e426e1437c479c5891e1c6477dfd7ad18b73acac5d80bc504b",
            "orgId": "appdev",
            "userId": "user1"
        }
    ]
}

Methoden für das Transaktionshistorienmanagement

getAccountTransactionHistory
Diese Methode gibt die Kontotransaktionshistorie zurück. Diese Methode kann nur von einem Token Admin des Chaincodes oder vom Accounteigentümer aufgerufen werden. Bei nicht fungiblen Token kann diese Methode nur aufgerufen werden, wenn sie mit dem Remote-Oracle Blockchain Platform-Netzwerk verbunden ist.
@GetMethod()
@Validator(yup.string(), yup.string(), yup.string())
public async getAccountTransactionHistory(orgId: string, userId: string, tokenId?: string) {
  const userAccountId = await this.Ctx.ERC1155Account.generateAccountId(orgId, userId, ACCOUNT_TYPE.USER_ACCOUNT);
  await this.Ctx.ERC1155Auth.checkAuthorization("ERC1155ACCOUNT.getAccountTransactionHistory", "TOKEN", {
    accountId: userAccountId,
  });
  const account = await this.Ctx.ERC1155Account.getAccount(userAccountId, tokenId);
  return await this.Ctx.ERC1155Account.getAccountTransactionHistory(account.accountId);
}
Parameter:
  • orgId: string: Die Mitgliedschaftsserviceprovider-(MSP-)ID des Benutzers in der aktuellen Organisation.
  • userId: string: Der Benutzername oder die E-Mail-ID des Benutzers.
  • tokenId?: string: Bei einem nicht fungiblen Tokenaccount eine leere Zeichenfolge. Bei einem fungiblen Token-Konto die Token-ID.
Beispiel für den Rückgabewert:
[
    {
        "transactionId": "otransaction~3a6b23c3003626f3947e990eddbd7ac23398d2200e2eb3eac745e6ddfae140bc~7c88c736df38d5622512f1e8dcdd50710eb47c953f1ecb24ac44790a9e2f475b",
        "timestamp": "2023-06-06T14:48:08.000Z",
        "tokenId": "FNFT",
        "transactedAmount": 10,
        "triggeredByUserAccountId": "ouaccount~412de5e3998dcd100973e1bad6e8729fddc1c7ff610beab8376d733a35c51f38",
        "transactedAccount": "oaccount~dcee860665db8740cb77b846e823752185a1e9a185814d0acb305890f5903446",
        "transactionType": "DEBIT",
        "balance": 90
    },
    {
        "transactionId": "otransaction~3a6b23c3003626f3947e990eddbd7ac23398d2200e2eb3eac745e6ddfae140bc~178e3730bc5bee50d02f1464a4eebf733a051905f651e5789039adb4a3edc114",
        "timestamp": "2023-06-06T14:48:08.000Z",
        "tokenId": "NFT",
        "triggeredByUserAccountId": "ouaccount~412de5e3998dcd100973e1bad6e8729fddc1c7ff610beab8376d733a35c51f38",
        "transactedAccount": "oaccount~dcee860665db8740cb77b846e823752185a1e9a185814d0acb305890f5903446",
        "transactionType": "DEBIT"
    },
    {
        "transactionId": "otransaction~c369929e28e78de06c72d020f1418c9a154a7dd280b2e22ebb4ea4485e249124~a7cefb22ff39ee7e36967be71de27da6798548c872061a62dabc56d88d50b930",
        "timestamp": "2023-06-06T14:47:08.000Z",
        "tokenId": "NFT",
        "triggeredByUserAccountId": "ouaccount~412de5e3998dcd100973e1bad6e8729fddc1c7ff610beab8376d733a35c51f38",
        "transactedAccount": "oaccount~e88276a3be547e31b567346bdddde52d37734da4d5fae83ab2e5c98a10097371",
        "transactionType": "MINT"
    },
    {
        "transactionId": "otransaction~114a1bc78d04be48ee6dc140c32c042ee9481cb118959626f090eec744522422~e4eb15d9354f694230df8835ade012100d82aa43672896a2c7125a86e3048f9f",
        "timestamp": "2023-06-05T17:17:57.000Z",
        "tokenId": "FNFT",
        "transactedAmount": 100,
        "triggeredByUserAccountId": "ouaccount~412de5e3998dcd100973e1bad6e8729fddc1c7ff610beab8376d733a35c51f38",
        "transactedAccount": "oaccount~e88276a3be547e31b567346bdddde52d37734da4d5fae83ab2e5c98a10097371",
        "transactionType": "MINT",
        "balance": 100
    }
]
getTransactionById
Diese Methode gibt die Transaktionsdetails für eine angegebene Transaktions-ID zurück. Jeder kann diese Methode nennen.
@GetMethod()
@Validator(yup.string())
public async getTransactionById(transactionId: string) {
  return await this.Ctx.ERC1155Transaction.getTransactionById(transactionId);
}
Parameter:
  • transactionId: string: Die ID der Transaktion.
Beispiel für den Rückgabewert:
{
  "transactionId": "otransaction~9ea7b05ab099f7ff4db8342b8c3609031f1d54f11205906e7f1fe88661fe3cbe~33b59ce0c89e96c1e16449f24301581e8e71954f38ad977c7eb6f065e87f2a53",
  "history": [
    {
      "trxId": "9ea7b05ab099f7ff4db8342b8c3609031f1d54f11205906e7f1fe88661fe3cbe",
      "timeStamp": "2022-12-08T09:01:28.000Z",
      "value": {
        "assetType": "otransaction",
        "transactionId": "otransaction~9ea7b05ab099f7ff4db8342b8c3609031f1d54f11205906e7f1fe88661fe3cbe~33b59ce0c89e96c1e16449f24301581e8e71954f38ad977c7eb6f065e87f2a53",
        "tokenId": "tokenOne",
        "fromAccountId": "oaccount~1422a74d262a3a55a37cd9023ef8836f765d0be7b49d397696b9961d7434d22a",
        "toAccountId": "",
        "transactionType": "BURN",
        "amount": 5,
        "timestamp": "2022-12-08T09:01:28.000Z",
        "triggeredByUserAccountId": "ouaccount~24ffd4d32a028a85b4b960f5d55536c837b5429bc7f346150adfa904ec2937cc"
      }
    }
  ]
}
deleteHistoricalTransactions
Diese Methode löscht Transaktionen vor einem angegebenen Zeitstempel aus der Statusdatenbank. Diese Methode kann nur von einem Token Admin des Chaincodes aufgerufen werden.
@Validator(yup.date())
public async deleteHistoricalTransactions(time_to_expiration: Date) {
  await this.Ctx.ERC1155Auth.checkAuthorization("TRANSACTION.deleteTransactions", "TOKEN");
  return await this.Ctx.ERC1155Transaction.deleteTransactions(time_to_expiration);
}
Parameter:
  • timestamp: string: Alle Transaktionen vor diesem Zeitstempel werden gelöscht.
Beispiel für den Rückgabewert:
{
  "msg": "Successfuly deleted transaction older than date: Thu Apr 07 2022 21:18:59 GMT+0000 (Coordinated Universal Time).",
  "transactions": [
    "otransaction~30513757d8b647fffaafac440d743635f5c1b2e41b25ebd6b70b5bbf78a2643f",
    "otransaction~ac0e908c735297941ba58bb208ee61ff4816a1e54c090d68024f82adf743892b"
  ]
}

Methoden für Token Behavior Management - Mintable Behavior

mintBatch
Diese Methode erstellt (Minuten) mehrere Token in einem Batchvorgang. Diese Methode erstellt nur fungible Token oder fraktionierte nicht fungible Token.

Wenn für fungible Token die Minter-Rolle in der Spezifikationsdatei definiert ist, kann jeder Benutzer mit der Minter-Rolle diese Methode aufrufen. Wenn nicht, kann jeder Benutzer diese Methode verwenden, um Token zu kennzeichnen. Sie können nicht mehr als die Eigenschaft max_mint_quantity des Tokens mint, wenn diese Eigenschaft beim Erstellen oder Aktualisieren des Tokens angegeben wurde.

Wenn bei nicht fungiblen Token die Minter-Rolle in der Spezifikationsdatei definiert ist, kann jeder Benutzer mit der Minter-Rolle diese Methode aufrufen. Wenn nicht, kann jeder Benutzer diese Methode verwenden, um Token zu kennzeichnen. Darüber hinaus muss der Anrufer auch der Ersteller des Tokens sein. Es gibt keine obere Grenze für die Menge der fraktionierten nicht fungiblen Token, die geprägt werden können.

Sie können diese Methode nicht verwenden, um ein ganzes nicht fungibles Token zu prägen.

@Validator(yup.string(), yup.string(), yup.array().of(yup.string()), yup.array().of(yup.number()))
public async mintBatch(orgId: string, userId: string, tokenIds: string[], quantity: number[]) {
  const accountId = this.Ctx.ERC1155Account.generateAccountId(orgId, userId, ACCOUNT_TYPE.USER_ACCOUNT);
  return await this.Ctx.ERC1155Token.mintBatch(accountId, tokenIds, quantity);
}
Parameter:
  • orgId: string: Die Mitgliedschaftsserviceprovider-(MSP-)ID des Benutzers in der aktuellen Organisation.
  • userId: string: Der Benutzername oder die E-Mail-ID des Benutzers.
  • tokenIds: string[]: Die Liste der Token-IDs, für die Token verwendet werden sollen.
  • quantity: number[]: Die Liste der Mengen der Token, die neu generiert werden sollen, entsprechend dem Token-ID-Array.
Rückgabewert:
  • Bei Erfolg ein JSON-Objekt, das Details zu den geprägten Token enthält.
Beispiel für den Rückgabewert:
{
    "msg": "Successfully minted batch of tokens for User-Account-Id ouaccount~412de5e3998dcd100973e1bad6e8729fddc1c7ff610beab8376d733a35c51f38 (Org-Id: appdev, User-Id: idcqa).",
    "details": [
        {
            "msg": "Successfully minted 100 tokens of fractional tokenId: plot55 to Org-Id: appdev, User-Id: idcqa"
        },
        {
            "msg": "Successfully minted 100 tokens of tokenId: loyalty to Token-Account-Id oaccount~21206f309941a2a23c4f158a0fe1b8f12bb8e2b0c9a2e1358f5efebc0c7d410e"
        }
    ]
}

Methoden für die Verwaltung des Tokenverhaltens - Übertragbares Verhalten

batchTransferFrom
Mit dieser Methode wird ein Batchvorgang abgeschlossen, bei dem Token, die in einer Liste mit Token-IDs angegeben sind, von einem Benutzer an einen anderen übertragen werden.

Bei NFTs muss der Absender der NFT das Token besitzen, da die Methode das Eigentum an der NFT überträgt.

Bei partiellen NFTs verliert ein Benutzer (einschließlich des Erstellers des Tokens) alle Aktien, die er besitzt, das Eigentum an dem Token. Wenn ein Anteil eines Tokens an einen Benutzer übertragen wird, wird dieser Benutzer automatisch zu einem der Eigentümer der partiellen NFT.

Diese Methode validiert nicht, ob der Aufrufer der Methode der angegebene Absender ist. Diese Methode kann von jedem Benutzer aufgerufen werden.

@Validator(yup.string(), yup.string(), yup.string(), yup.string(), yup.array().of(yup.string()), yup.array().of(yup.number()))
public async batchTransferFrom(
  fromOrgId: string,
  fromUserId: string,
  toOrgId: string,
  toUserId: string,
  tokenIds: string[],
  quantity: number[]
) {
  const fromAccountId = this.Ctx.ERC1155Account.generateAccountId(fromOrgId, fromUserId, ACCOUNT_TYPE.USER_ACCOUNT);
  const toAccountId = this.Ctx.ERC1155Account.generateAccountId(toOrgId, toUserId, ACCOUNT_TYPE.USER_ACCOUNT);
  return await this.Ctx.ERC1155Token.batchTransferFrom(fromAccountId, toAccountId, tokenIds, quantity);
}
Parameter:
  • fromOrgId: string: Die Mitgliedschaftsserviceprovider-(MSP-)ID des Absenders und Tokeneigentümers in der aktuellen Organisation.
  • fromUserId: string: Der Benutzername oder die E-Mail-ID des Absenders und Tokeneigentümers.
  • toOrgId: string: Die ID des Membership Service Providers (MSP) des Empfängers in der aktuellen Organisation.
  • toUserId: string: Der Benutzername oder die E-Mail-ID des Empfängers.
  • tokenIds: string[]: Eine Liste der Token-IDs für die zu übertragenden Token.
  • quantity: number[]: Die Liste der Mengen der zu übertragenden Token, die dem Token-ID-Array entsprechen.
Rückgabewert:
  • Bei Erfolg eine Meldung mit Details für jede Tokenübertragung.
Beispiel für den Rückgabewert:
[
    {
        "msg": "Successfully transferred NFT token: 'FNFT' of '10' quantity from Account-Id: oaccount~e88276a3be547e31b567346bdddde52d37734da4d5fae83ab2e5c98a10097371 (Org-Id: appdev, User-Id: idcqa) to Account-Id: oaccount~dcee860665db8740cb77b846e823752185a1e9a185814d0acb305890f5903446 (Org-Id: appdev, User-Id: user1_minter)"
    },
    {
        "msg": "Successfully transferred 10 FT token: 'FT' from Account-Id: oaccount~21206f309941a2a23c4f158a0fe1b8f12bb8e2b0c9a2e1358f5efebc0c7d410e (Org-Id: appdev, User-Id: idcqa) to Account-Id: oaccount~1089ee5122f367ee0ca38c6660298f4b81f199627e4f67f3691c0f628237974c (Org-Id: appdev, User-Id: user1_minter)"
    },
    {
        "msg": "Successfully transferred NFT token: 'NFT' from Account-Id: oaccount~e88276a3be547e31b567346bdddde52d37734da4d5fae83ab2e5c98a10097371 (Org-Id: appdev, User-Id: idcqa) to Account-Id: oaccount~dcee860665db8740cb77b846e823752185a1e9a185814d0acb305890f5903446 (Org-Id: appdev, User-Id: user1_minter)"
    }
]
safeBatchTransferFrom
Mit dieser Methode wird ein Batchvorgang abgeschlossen, bei dem Token, die in einer Liste mit Token-IDs angegeben sind, von einem Benutzer an einen anderen übertragen werden.

Bei NFTs muss der Absender der NFT das Token besitzen, da die Methode das Eigentum an der NFT überträgt.

Bei partiellen NFTs verliert ein Benutzer (einschließlich des Erstellers des Tokens) alle Aktien, die er besitzt, das Eigentum an dem Token. Wenn ein Anteil eines Tokens an einen Benutzer übertragen wird, wird dieser Benutzer automatisch zu einem der Eigentümer der partiellen NFT.

Der Aufrufer der Methode muss der angegebene Absender sein. Diese Methode kann von jedem Benutzer aufgerufen werden.

@Validator(yup.string(), yup.string(), yup.string(), yup.string(), yup.array().of(yup.string()), yup.array().of(yup.number()))
public async safeBatchTransferFrom(
  fromOrgId: string,
  fromUserId: string,
  toOrgId: string,
  toUserId: string,
  tokenIds: string[],
  quantity: number[]
) {
  const fromAccountId = this.Ctx.ERC1155Account.generateAccountId(fromOrgId, fromUserId, ACCOUNT_TYPE.USER_ACCOUNT);
  const toAccountId = this.Ctx.ERC1155Account.generateAccountId(toOrgId, toUserId, ACCOUNT_TYPE.USER_ACCOUNT);
  return await this.Ctx.ERC1155Token.safeBatchTransferFrom(fromAccountId, toAccountId, tokenIds, quantity);
}
Parameter:
  • fromOrgId: string: Die Mitgliedschaftsserviceprovider-(MSP-)ID des Absenders und Tokeneigentümers in der aktuellen Organisation.
  • fromUserId: string: Der Benutzername oder die E-Mail-ID des Absenders und Tokeneigentümers.
  • toOrgId: string: Die ID des Membership Service Providers (MSP) des Empfängers in der aktuellen Organisation.
  • toUserId: string: Der Benutzername oder die E-Mail-ID des Empfängers.
  • tokenIds: string[]: Eine Liste der Token-IDs für die zu übertragenden Token.
  • quantity: number[]: Die Liste der Mengen der zu übertragenden Token, die dem Token-ID-Array entsprechen.
Rückgabewert:
  • Bei Erfolg eine Meldung mit Details für jede Tokenübertragung.
Beispiel für den Rückgabewert:
[
    {
        "msg": "Successfully transferred NFT token: 'FNFT' of '10' quantity from Account-Id: oaccount~e88276a3be547e31b567346bdddde52d37734da4d5fae83ab2e5c98a10097371 (Org-Id: appdev, User-Id: idcqa) to Account-Id: oaccount~dcee860665db8740cb77b846e823752185a1e9a185814d0acb305890f5903446 (Org-Id: appdev, User-Id: user1_minter)"
    },
    {
        "msg": "Successfully transferred 10 FT token: 'FT' from Account-Id: oaccount~21206f309941a2a23c4f158a0fe1b8f12bb8e2b0c9a2e1358f5efebc0c7d410e (Org-Id: appdev, User-Id: idcqa) to Account-Id: oaccount~1089ee5122f367ee0ca38c6660298f4b81f199627e4f67f3691c0f628237974c (Org-Id: appdev, User-Id: user1_minter)"
    },
    {
        "msg": "Successfully transferred NFT token: 'NFT' from Account-Id: oaccount~e88276a3be547e31b567346bdddde52d37734da4d5fae83ab2e5c98a10097371 (Org-Id: appdev, User-Id: idcqa) to Account-Id: oaccount~dcee860665db8740cb77b846e823752185a1e9a185814d0acb305890f5903446 (Org-Id: appdev, User-Id: user1_minter)"
    }
]
balanceOfBatch
Mit dieser Methode wird ein Batchvorgang abgeschlossen, der den Saldo von Tokenkonten abruft. Die Kontodetails werden in drei separaten Listen mit Organisations-IDs, Benutzer-IDs und Token-IDs angegeben. Diese Methode kann nur von einem Token Admin des Chaincodes oder von Kontoinhabern aufgerufen werden. Kontoinhaber können Saldendetails nur für Konten anzeigen, für die sie verantwortlich sind.
@GetMethod()
@Validator(yup.array().of(yup.string()), yup.array().of(yup.string()), yup.array().of(yup.string()))
public async balanceOfBatch(orgIds: string[], userIds: string[], tokenIds: string[]) {
  let callerAccountCheck = false;
  try {
    await this.Ctx.ERC1155Auth.checkAuthorization("ERC1155ACCOUNT.balanceOfBatch", "TOKEN");
  } catch (err) {
    callerAccountCheck = true;
  }
  const accountIds = await this.Ctx.ERC1155Account.generateAccountIds(orgIds, userIds, callerAccountCheck);
  return await this.Ctx.ERC1155Account.balanceOfBatch(accountIds, tokenIds);
}
Parameter:
  • orgIds: string[] - Eine Liste der Mitgliedschaftsserviceprovider-(MSP-)IDs in der aktuellen Organisation.
  • userIds: string[]: Eine Liste des Benutzernamens oder der E-Mail-IDs.
  • tokenIds: string[]: Eine Liste der Token-IDs.
Beispiel für den Rückgabewert:

Im folgenden Beispiel stellt die Token-ID FNFT ein fraktioniertes nicht fungibles Token dar, und die Token-ID FT stellt ein fungibles Token dar.

[
    {
        "orgId": "appdev",
        "userId": "idcqa",
        "userAccountId": "ouaccount~412de5e3998dcd100973e1bad6e8729fddc1c7ff610beab8376d733a35c51f38",
        "tokenAccountId": "oaccount~e88276a3be547e31b567346bdddde52d37734da4d5fae83ab2e5c98a10097371",
        "tokenId": "FNFT",
        "balance": 100
    },
    {
        "orgId": "appdev",
        "userId": "idcqa",
        "userAccountId": "ouaccount~412de5e3998dcd100973e1bad6e8729fddc1c7ff610beab8376d733a35c51f38",
        "tokenAccountId": "oaccount~21206f309941a2a23c4f158a0fe1b8f12bb8e2b0c9a2e1358f5efebc0c7d410e",
        "tokenId": "FT",
        "balance": 50
    },
    {
        "orgId": "appdev",
        "userId": "user1_minter",
        "userAccountId": "ouaccount~9501bb774c156eb8354dfe489250ea91f757523d70f08ee494bda98bb352003b",
        "tokenAccountId": "oaccount~dcee860665db8740cb77b846e823752185a1e9a185814d0acb305890f5903446",
        "tokenId": "FNFT",
        "balance": 10
    }
]
exchangeToken
Diese Methode tauscht Token zwischen angegebenen Konten aus. Diese Methode unterstützt nur den Austausch zwischen einem NFT und einem fungiblen Token oder einem fungiblen Token und einem NFT. Die NFT kann ganz oder teilweise sein. Diese Methode kann nur vom Kontoinhaber aufgerufen werden.
@Validator(yup.string(), yup.string(), yup.string(), yup.number(), yup.string(), yup.string(), yup.string(), yup.number())
  public async exchangeToken(
    fromTokenId: string,
    fromOrgId: string,
    fromUserId: string,
    fromTokenQuantity: number,
    toTokenId: string,
    toOrgId: string,
    toUserId: string,
    toTokenQuantity: number
  ) {
    const fromUserAccountId = this.Ctx.ERC1155Account.generateAccountId(fromOrgId, fromUserId, ACCOUNT_TYPE.USER_ACCOUNT);
    await this.Ctx.ERC1155Auth.checkAuthorization("ERC1155ACCOUNT.exchangeToken", "TOKEN", { accountId: fromUserAccountId });
    const toUserAccountId = this.Ctx.ERC1155Account.generateAccountId(toOrgId, toUserId, ACCOUNT_TYPE.USER_ACCOUNT);
    return await this.Ctx.ERC1155Token.exchangeToken(
      fromTokenId,
      fromUserAccountId,
      fromTokenQuantity,
      toTokenId,
      toUserAccountId,
      toTokenQuantity
    );
  }
Parameter:
  • fromTokenId: string: Die ID des Tokens, dessen Eigentümer der Absender ist.
  • fromOrgId: string: Die ID des Mitgliedschaftsserviceproviders (MSP) des Absenders in der aktuellen Organisation.
  • fromUserId: string: Der Benutzername oder die E-Mail-ID des Absenders.
  • fromTokenQuantity: number - Die Anzahl der Token vom Absender, die mit dem Empfänger ausgetauscht werden sollen.
  • toTokenId: string: Die ID des Tokens, für das der Empfänger verantwortlich ist.
  • toOrgId: string: Die ID des Membership Service Providers (MSP) des Empfängers in der aktuellen Organisation.
  • toUserId: string: Der Benutzername oder die E-Mail-ID des Empfängers.
  • toTokenQuantity: number - Die Anzahl der Token vom Empfänger, die mit dem Absender ausgetauscht werden sollen.
Rückgabewert:
  • Bei Erfolg eine Nachricht mit Tokenaustauschdetails.
Beispiel für den Rückgabewert:
{
    "msg": "Succesfully exchanged 10 tokens of type nonfungible with tokenId: [r1] from Account oaccount~e88276a3be547e31b567346bdddde52d37734da4d5fae83ab2e5c98a10097371 (OrgId: appdev, UserId: idcqa) to 10 tokens of type fungible with tokenId: [loy1] from Account oaccount~1089ee5122f367ee0ca38c6660298f4b81f199627e4f67f3691c0f628237974c (OrgId: appdev, UserId: user1_minter)"
}

Methoden für die Verwaltung des Tokenverhaltens - Burnable Behavior

burnBatch
Diese Methode deaktiviert oder verbrennt die angegebenen fungiblen und nicht fungiblen Token. Jeder Benutzer mit der Brennerrolle kann diese Methode aufrufen.
@Validator(yup.string(), yup.string(), yup.array().of(yup.string()), yup.array().of(yup.number()))
public async burnBatch(orgId: string, userId: string, tokenIds: string[], quantity: number[]) {
    const accountId = this.Ctx.ERC1155Account.generateAccountId(orgId, userId, ACCOUNT_TYPE.USER_ACCOUNT);
    return await this.Ctx.ERC1155Token.burn(accountId, tokenIds, quantity);
}
Parameter:
  • orgId: string: Die ID des Membership Service Providers (MSP) in der aktuellen Organisation.
  • userId: string: Der Benutzername oder die E-Mail-ID.
  • tokenIds: string[]: Die Liste der zu brennenden Token-IDs.
  • quantity: number[] - Die Liste der Mengen der zu brennenden Token, die dem Token-ID-Array entsprechen.
Rückgabewert:
  • Bei Erfolg eine Meldung mit Details zu den Burn-Vorgängen.
Beispiel für den Rückgabewert:
[
  {
    "msg": "Successfully burned NFT token: 'art' from Account-Id: oaccount~76cb672eeb1bd535899562a840d0c15a356db89e24bc8b43ac1dba845a4282c6 (Org-Id: appdev, User-Id: idcqa)"
  },
  {
    "msg": "Successfully burned 5 tokens of tokenId: tokenOne from Account-ID oaccount~1422a74d262a3a55a37cd9023ef8836f765d0be7b49d397696b9961d7434d22a (Org-Id: appdev, User-Id: idcqa)"
  },
  {
    "msg": "Successfully burned 2 token share of tokenId: FNFT from Account-ID oaccount~87bcb699d507368ee3966cd03ee6d7736ffc55dde8c0f0e16b14866334ac504a (Org-Id: AutoF1377358917, User-Id: idcqa)"
  }
]
burnNFT
Diese Methode deaktiviert oder verbrennt das angegebene nicht fungible Token und gibt ein Tokenobjekt und eine Tokenhistorie zurück. Jeder Benutzer mit der Brennerrolle kann diese Methode aufrufen.
@Validator(yup.string(), yup.string(), yup.string())
public async burnNFT(orgId: string, userId: string, tokenId: string): Promise<any> {
    const userAccountId = this.Ctx.ERC1155Account.generateAccountId(orgId, userId);
    const token = await this.Ctx.ERC1155Token.get(tokenId);
    if (token.tokenType !== TOKEN_TYPE.NON_FUNGIBLE) {
      
      throw new Error(`The Token with id ${tokenId} is not a nonfungible token`);
    }
    if (token.isBurned === true) {
      throw new Error(`token with tokenId ${tokenId} is already burned`);
    }
    let tokenBurnQuantity = 1;
    const tokenUnit = token.tokenUnit;
    if (tokenUnit === TOKEN_UNIT.FRACTIONAL) {
       const owners = await this.Ctx.ERC1155Token.getFractionalNFTOwners(tokenId);
       if (owners.length !== 1) {
         throw new Error(`Token with tokenId ${tokenId} has multiple owners`);
       }
      tokenBurnQuantity = token.quantity;
    }
    const tokenHistory = await this.Ctx.ERC1155Token.getTokenHistory(tokenId);
    await this.Ctx.ERC1155Token.burn(userAccountId, [tokenId], [tokenBurnQuantity]);
    token.tokenId = parseInt(token.tokenId);
    if(Number.isNaN(token.tokenId)) {
      throw new Error(`tokenId is expected to be integer but found ${tokenId}`)
    }
    token.isBurned = true;
    return {...token, tokenHistory: JSON.stringify(tokenHistory)};
}
Parameter:
  • orgId: string: Die ID des Membership Service Providers (MSP) in der aktuellen Organisation.
  • userId: string: Der Benutzername oder die E-Mail-ID.
  • tokenId: string: Die ID des zu brennenden nicht fungiblen Tokens
Rückgabewert:
  • Bei Erfolg ein Tokenobjekt im JSON-Format, das Informationen zur Tokenhistorie enthält.
Beispiel für den Rückgabewert:
{
    "assetType": "otoken",
    "tokenId": 1,
    "tokenName": "artcollection",
    "tokenStandard": "erc1155+",
    "tokenType": "nonfungible",
    "tokenUnit": "whole",
    "behaviors": [
        "indivisible",
        "singleton",
        "mintable",
        "transferable",
        "burnable",
        "roles"
    ],
    "roles": {
        "minter_role_name": "minter"
    },
    "mintable": {
        "max_mint_quantity": 20000
    },
    "quantity": 1,
    "createdBy": "oaccount~42e89f4c72dfde9502814876423c6da630d466e87436dd1aae201d347ad1288d",
    "creationDate": "2023-08-22T07:32:40.000Z",
    "owner": "oaccount~42e89f4c72dfde9502814876423c6da630d466e87436dd1aae201d347ad1288d",
    "isBurned": true,
    "tokenUri": "example.com",
    "price": 120,
    "onSaleFlag": false,
    "tokenHistory": "[{\"trxId\":\"21a932750f2d4ccffd62eda5678a577cadde0513ed7c7a307f24cd7713a1818b\",\"timeStamp\":\"2023-08-22T07:32:40.000Z\",\"value\":{\"assetType\":\"otoken\",\"tokenId\":\"1\",\"tokenName\":\"artcollection\",\"tokenStandard\":\"erc1155+\",\"tokenType\":\"nonfungible\",\"tokenUnit\":\"whole\",\"behaviors\":[\"indivisible\",\"singleton\",\"mintable\",\"transferable\",\"burnable\",\"roles\"],\"roles\":{\"minter_role_name\":\"minter\"},\"mintable\":{\"max_mint_quantity\":20000},\"quantity\":1,\"createdBy\":\"oaccount~42e89f4c72dfde9502814876423c6da630d466e87436dd1aae201d347ad1288d\",\"creationDate\":\"2023-08-22T07:32:40.000Z\",\"owner\":\"oaccount~42e89f4c72dfde9502814876423c6da630d466e87436dd1aae201d347ad1288d\",\"isBurned\":false,\"tokenUri\":\"example.com\",\"price\":120,\"onSaleFlag\":false}}]"
}

SDK-Methoden

Methoden für Access Control Management

checkAuthorization
Mit dieser Methode können Sie einem Vorgang eine Zugriffskontrollprüfung hinzufügen. Dies ist eine asynchrone Funktion. Bestimmte Tokenmethoden können nur vom Token Token Admin oder AccountOwner oder vom Token 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.
ADMIN: {
   isUserTokenAdmin: ["Admin"],
   addAdmin: ["Admin"],
   removeAdmin: ["Admin"],
   getAllAdmins: ["Admin"],
 },
 TOKEN: {
   save: ["Admin"],
   getAllTokens: ["Admin"],
   get: ["Admin"],
   update: ["Admin"],
   getDecimals: ["Admin"],
   getTokensByName: ["Admin"],
   addRoleMember: ["Admin"],
   removeRoleMember: ["Admin"],
   isInRole: ["Admin", "AccountOwner"],
   getTotalMintedTokens: ["Admin"],
   getNetTokens: ["Admin"],
   getTokenHistory: ["Admin"],
 },
 ROLE: {
   getAccountsByRole: ["Admin"],
   getUsersByRole: ["Admin"],
 },
 TRANSACTION: {
   deleteTransactions: ["Admin"],
 },
 ACCOUNT: {
   createAccount: ["Admin"],
   associateToken: ["Admin"],
   getAllAccounts: ["Admin"],
   getAccountsByUser: ["Admin", "MultipleAccountOwner"],
   getAccount: ["Admin", "AccountOwner"],
   history: ["Admin", "AccountOwner"],
   getAccountTransactionHistory: ["Admin", "AccountOwner"],
   getAccountTransactionHistoryWithFilters: ["Admin", "AccountOwner"],
   getSubTransactionsById: ["Admin", TRANSACTION_INVOKER],
   getSubTransactionsByIdWithFilters: ["Admin", TRANSACTION_INVOKER],
   getAccountBalance: ["Admin", "AccountOwner"],
   getAccountOnHoldBalance: ["Admin", "AccountOwner"],
   getOnHoldIds: ["Admin", "AccountOwner"],
   getConversionHistory: ["Admin", "AccountOwner"],
 },
 ACCOUNT_STATUS: {
   get: ["Admin", "AccountOwner"],
   history: ["Admin", "AccountOwner"],
   activateAccount: ["Admin"],
   suspendAccount: ["Admin"],
   deleteAccount: ["Admin"],
 },
 TOKEN_CONVERSION: {
   initializeExchangePoolUser: ["Admin"],
   addConversionRate: ["Admin"],
   updateConversionRate: ["Admin"],
   getConversionRate: ["Admin", "AnyAccountOwner"],
   getConversionRateHistory: ["Admin", "AnyAccountOwner"],
   tokenConversion: ["Admin", "AnyAccountOwner"],
   getExchangePoolUser: ["Admin"],
 },
 ERC721ADMIN: {
   isUserTokenAdmin: ["Admin"],
   addAdmin: ["Admin"],
   removeAdmin: ["Admin"],
   getAllAdmins: ["Admin"],
 },
 ERC721TOKEN: {
   getAllTokens: ["Admin"],
   getAllTokensByUser: ["Admin", "AccountOwner"],
   get: ["Admin", TOKEN_OWNER],
   getTokensByName: ["Admin"],
   addRoleMember: ["Admin"],
   removeRoleMember: ["Admin"],
   isInRole: ["Admin", "AccountOwner"],
   totalSupply: ["Admin"],
   totalNetSupply: ["Admin"],
   history: ["Admin"],
 },
 ERC721ROLE: {
   getAccountsByRole: ["Admin"],
   getUsersByRole: ["Admin"],
 },
 ERC721TRANSACTION: {
   deleteTransactions: ["Admin"],
 },
 ERC721ACCOUNT: {
   createAccount: ["Admin"],
   getAllAccounts: ["Admin"],
   getAccountByUser: ["Admin", "MultipleAccountOwner"],
   history: ["Admin", "AccountOwner"],
   getAccountTransactionHistory: ["Admin", "AccountOwner"],
   getAccountTransactionHistoryWithFilters: ["Admin", "AccountOwner"],
   balanceOf: ["Admin", "MultipleAccountOwner"],
 },
 ERC1155ADMIN: {
   isUserTokenAdmin: ["Admin"],
   addAdmin: ["Admin"],
   removeAdmin: ["Admin"],
   getAllAdmins: ["Admin"],
 },
 ERC1155TOKEN: {
   getAllTokens: ["Admin"],
   get: ["Admin", TOKEN_OWNER],
   getAllTokensByUser: ["Admin", "AccountOwner"],
   totalSupply: ["Admin"],
   totalNetSupply: ["Admin"],
   getTokensByName: ["Admin"],
   getDecimals: ["Admin"],
   addRoleMember: ["Admin"],
   removeRoleMember: ["Admin"],
   isInRole: ["Admin", "AccountOwner"],
   save: ["Admin"],
   update: ["Admin"],
 },
 ERC1155ACCOUNT: {
   createAccount: ["Admin"],
   createUserAccount: ["Admin"],
   createTokenAccount: ["Admin"],
   associateFungibleTokenToAccount: ["Admin", "AccountOwner"],
   getAccountsByUser: ["Admin", "AccountOwner"],
   getAccount: ["Admin", "AccountOwner"],
   history: ["Admin", "AccountOwner"],
   getAllAccounts: ["Admin"],
   balanceOfBatch: ["Admin"],
   getAccountTransactionHistory: ["Admin", "AccountOwner"],
   getAccountTransactionHistoryWithFilters: ["Admin", "AccountOwner"],
   exchangeToken: ["AccountOwner"],
   getAccountDetailsByUser: ["Admin", "AccountOwner"],
 },
 ERC1155ROLE: {
   getAccountsByRole: ["Admin"],
   getUsersByRole: ["Admin"],
 },
Ctx.ERC1155Auth.checkAuthorization(classFuncName: string, ...args)
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' annimmt und args[1] die account_id verwendet, um eine Zugriffskontrollprüfung für eine AccountOwner hinzuzufügen. Um eine Zugriffskontrollprüfung für eine MultipleAccountOwner hinzuzufügen, verwendet args[1] die org_id, und args[2] die user_id.
Rückgabewert:
  • Auf Erfolg, ein Versprechen. Bei einem Fehler eine Ablehnung mit einer Fehlermeldung.
isUserTokenAdmin
Diese Methode gibt den booleschen Wert true zurück, wenn der angegebene Benutzer ein Token Admin ist, und andernfalls false. Die Methode kann nur von einem Token Admin des Token Chaincodes aufgerufen werden.
Ctx.ERC1155Auth.isUserTokenAdmin(orgId: string, userId: string)
Parameter:
  • orgId: string: Die Mitgliedschaftsserviceprovider-(MSP-)ID des Benutzers in der aktuellen Organisation.
  • userId: string: Der Benutzername oder die E-Mail-ID des Benutzers.
Beispiel für den Rückgabewert:
{
  "result": true
}
addAdmin
Mit dieser Methode wird ein Benutzer als Token Admin des Token Chaincodes hinzugefügt. Die Methode kann nur von einem Token Admin des Token Chaincodes aufgerufen werden.
Ctx.ERC1155Admin.addAdmin(orgId: string, userId: string)
Parameter:
  • orgId: string: Die Mitgliedschaftsserviceprovider-(MSP-)ID des Benutzers in der aktuellen Organisation.
  • userId: string: Der Benutzername oder die E-Mail-ID des Benutzers.
Rückgabewert:
  • Bei Erfolg eine Meldung, die Details für den Benutzer auflistet, der als Token Admin des Token Chaincodes hinzugefügt wurde.
Beispiel für den Rückgabewert:
{
  "msg": "Successfully added Admin (OrgId: appDev, UserId: user1)"
}
removeAdmin
Mit dieser Methode wird ein Benutzer als Token Admin des Token Chaincodes entfernt. Die Methode kann nur von einem Token Admin des Token Chaincodes aufgerufen werden. Sie können sich nicht selbst als Token Admin entfernen.
Ctx.ERC1155Admin.removeAdmin(orgId: string, userId: string)
Parameter:
  • orgId: string: Die Mitgliedschaftsserviceprovider-(MSP-)ID des Benutzers in der aktuellen Organisation.
  • userId: string: Der Benutzername oder die E-Mail-ID des Benutzers.
Rückgabewert:
  • Bei Erfolg eine Meldung, in der Details für den Benutzer aufgeführt werden, die als Token Admin des Token Chaincodes entfernt wurden.
Beispiel für den Rückgabewert:
{
  "msg": "Successfully removed Admin (OrgId: appDev, UserId: user1)"
}
getAllAdmins
Diese Methode gibt eine Liste aller Token Admin-Benutzer zurück.
Ctx.ERC1155Admin.getAllAdmins()
Parameter:
  • Kein
Rückgabewert:
  • Bei Erfolg eine Liste aller Token Admin-Benutzer, identifiziert nach Organisations-ID und Benutzer-ID.
Beispiel für den Rückgabewert:
{
  "admins": [
    {
      "orgId": "appdev",
      "userId": "idcqa"
    },
    {
      "orgId": "appdev",
      "userId": "user1"
    }
  ]
}

Methoden für die Tokenkonfigurationsverwaltung

save
Diese Methode erstellt Token. Jedes definierte Token verfügt über eine eigene Erstellungsmethode. Wenn für nicht fungible Token die Minter-Rolle in der Spezifikationsdatei definiert ist, kann jeder Benutzer mit der Minter-Rolle diese Methode aufrufen, um eine NFT zu erstellen. Ist dies nicht der Fall, kann jeder Benutzer mit dieser Methode NFTs erstellen. Der Benutzer, der diese Methode aufruft, wird zum Eigentümer der NFT (ganz oder Bruchteil).
Ctx.ERC1155Token.save(tokenAsset: <Token Class>, quantity?: number);
Parameter:
  • tokenAsset: <Token Class>: Das Tokenasset. Die Eigenschaften des Assets werden in der Modelldatei definiert.
  • quantity: number - Nur für nicht fungible Token die Anzahl der Token, die geprägt werden sollen. Der einzige unterstützte Wert für diesen Parameter ist 1.
Rückgabewert:
  • Bei Erfolg das Tokenasset im JSON-Format, das die folgenden Informationen enthalten kann.
  • tokenMetadata: JSON-Informationen, die das Token beschreiben.
  • createdBy: Die Account-ID des Aufrufers, der als Benutzer das Token mintet. Diese Eigenschaft kann nicht bearbeitet werden.
  • creationDate: Der Zeitstempel der Münztransaktion. Diese Eigenschaft kann nicht bearbeitet werden.
  • isBurned: Diese Eigenschaft gibt an, ob das Token gebrannt wird. Diese Eigenschaft kann nicht bearbeitet werden.
  • tokenName: Der Name des Tokens. Diese Eigenschaft kann nicht bearbeitet werden.
  • tokenDesc: Die Beschreibung des Tokens.
  • symbol: Das Symbol des Tokens. Diese Eigenschaft kann nicht bearbeitet werden.
  • tokenStandard: Der Standard des Tokens. Diese Eigenschaft kann nicht bearbeitet werden.
  • tokenType: Der Tokentyp ( fungibel oder nicht fungibel). Diese Eigenschaft kann nicht bearbeitet werden.
  • tokenUnit: Die Einheit des Tokens (ganz oder Bruchteil). Diese Eigenschaft kann nicht bearbeitet werden.
  • behaviors: Eine Liste mit Tokenverhalten. Diese Eigenschaft kann nicht bearbeitet werden.
  • mintable: Die Eigenschaften für das Prägen. Der Wert max_mint_quantity definiert die maximale Anzahl von Token, die für die Tokenklasse erstellt werden können.
  • owner: Die Account-ID des aktuellen Eigentümers, der als Aufrufer der Methode fungiert.
  • tokenUri: Die URI des Tokens.
  • quantity: Die Menge des Tokens.
Beispiel für Rückgabewert (ganze NFT):
{
    "tokenMetadata": {
        "paintingName": "monalisa",
        "description": "monalisa painting",
        "image": "image link",
        "painterName": "Leonardo da Vinci"
    },
    "assetType": "otoken",
    "quantity": 1,
    "tokenId": "artnft",
    "tokenName": "artcollection",
    "tokenDesc": "artcollection nft",
    "tokenStandard": "erc1155+",
    "tokenType": "nonfungible",
    "tokenUnit": "whole",
    "behaviors": [
        "indivisible",
        "singleton",
        "mintable",
        "transferable",
        "burnable",
        "roles"
    ],
    "roles": {
        "minter_role_name": "minter",
        "burner_role_name": "burner"
    },
    "mintable": {
        "max_mint_quantity": 500
    },
    "owner": "oaccount~42e89f4c72dfde9502814876423c6da630d466e87436dd1aae201d347ad1288d",
    "createdBy": "oaccount~42e89f4c72dfde9502814876423c6da630d466e87436dd1aae201d347ad1288d",
    "creationDate": "2022-12-29T04:08:35.000Z",
    "isBurned": false,
    "tokenUri": "tu",
    "price": 10000,
    "onSaleFlag": false
}
Beispiel für Rückgabewert (unglaubliches Token):
{
    "assetType": "otoken",
    "tokenId": "Loyalty",
    "tokenName": "loyalty",
    "tokenDesc": "Token Description",
    "tokenStandard": "erc1155+",
    "tokenType": "fungible",
    "tokenUnit": "fractional",
    "behaviors": [
        "divisible",
        "mintable",
        "transferable",
        "burnable",
        "roles"
    ],
    "roles": {
        "minter_role_name": "minter",
        "burner_role_name": "burner"
    },
    "mintable": {
        "max_mint_quantity": 10000
    },
    "divisible": {
        "decimal": 2
    },
    "currency_name": "Dollar"
}
Beispiel für Rückgabewert (Fractional NFT):
{
    "tokenMetadata": {
        "painting_name": "paint",
        "description": "Painting Description"
    },
    "assetType": "otoken",
    "tokenId": "realEstate",
    "tokenName": "realestate",
    "tokenDesc": "Token Description",
    "tokenStandard": "erc1155+",
    "tokenType": "nonfungible",
    "tokenUnit": "fractional",
    "behaviors": [
        "divisible",
        "mintable",
        "transferable",
        "burnable",
        "roles"
    ],
    "roles": {
        "minter_role_name": "minter",
        "burner_role_name": "burner"
    },
    "mintable": {
        "max_mint_quantity": 20000
    },
    "quantity": 100,
    "createdBy": "oaccount~42e89f4c72dfde9502814876423c6da630d466e87436dd1aae201d347ad1288d",
    "creationDate": "2023-06-14T04:20:14.000Z",
    "divisible": {
        "decimal": 2
    },
    "isBurned": false,
    "tokenUri": "www.realestate.example.com",
    "price": 1000,
    "on_sale_flag": true
}
update
Diese Methode aktualisiert Token. Sie können keine Tokenmetadaten oder die Token-URI von nicht fungiblen Token aktualisieren.
Ctx.ERC1155Token.update(tokenAsset: any);
Parameter:
  • tokenAsset: <Token Class>: Das Tokenasset. Die Eigenschaften des Assets werden in der Modelldatei definiert.
Rückgabewert:
  • Bei Erfolg das aktualisierte Tokenasset im JSON-Format.
Beispiel für Rückgabewert (ganze NFT):
{
    "tokenMetadata": {
        "paintingName": "monalisa",
        "description": "monalisa painting",
        "image": "image link",
        "painterName": "Leonardo da Vinci"
    },
    "assetType": "otoken",
    "quantity": 1,
    "tokenId": "artnft",
    "tokenName": "artcollection",
    "tokenDesc": "artcollection nft",
    "tokenStandard": "erc1155+",
    "tokenType": "nonfungible",
    "tokenUnit": "whole",
    "behaviors": [
        "indivisible",
        "singleton",
        "mintable",
        "transferable",
        "burnable",
        "roles"
    ],
    "roles": {
        "minter_role_name": "minter",
        "burner_role_name": "burner"
    },
    "mintable": {
        "max_mint_quantity": 500
    },
    "owner": "oaccount~42e89f4c72dfde9502814876423c6da630d466e87436dd1aae201d347ad1288d",
    "createdBy": "oaccount~42e89f4c72dfde9502814876423c6da630d466e87436dd1aae201d347ad1288d",
    "creationDate": "2022-12-29T04:08:35.000Z",
    "isBurned": false,
    "tokenUri": "tu",
    "price": 10000,
    "onSaleFlag": false
}
history (Token)
Diese Methode gibt die Historie für eine angegebene Token-ID zurück.
Ctx.ERC1155Token.history(tokenId: string)
Parameter:
  • tokenId: string: Die ID des Tokens.
Rückgabewert:
  • Bei Erfolg ein JSON-Array, das die Tokenhistorie enthält.
Beispiel für Rückgabewert (unglaubliches Token):
[
    {
        "trxId": "ef4af760c3d7ee5e273196231d59fb91cafe6ca0f78c64747e87bc9bcbb3334b",
        "timeStamp": "2023-09-04T02:36:20.000Z",
        "value": {
            "assetType": "otoken",
            "tokenId": "LoyaltyToken",
            "tokenName": "loyalty",
            "tokenDesc": "Updated Fungible Whole",
            "tokenStandard": "erc1155+",
            "tokenType": "fungible",
            "tokenUnit": "fractional",
            "behaviors": [
                "divisible",
                "mintable",
                "transferable",
                "burnable",
                "roles"
            ],
            "roles": {
                "minter_role_name": "minter",
                "burner_role_name": "burner"
            },
            "mintable": {
                "max_mint_quantity": 10000
            },
            "divisible": {
                "decimal": 2
            },
            "currency_name": "Rupees"
        }
    },
    {
        "trxId": "4fb391a8903633a12a545cd2ecfb57f5575241325abf59995e2a4ed96572bb09",
        "timeStamp": "2023-09-04T02:35:07.000Z",
        "value": {
            "assetType": "otoken",
            "tokenId": "LoyaltyToken",
            "tokenName": "loyalty",
            "tokenDesc": "Fungible Whole",
            "tokenStandard": "erc1155+",
            "tokenType": "fungible",
            "tokenUnit": "fractional",
            "behaviors": [
                "divisible",
                "mintable",
                "transferable",
                "burnable",
                "roles"
            ],
            "roles": {
                "minter_role_name": "minter",
                "burner_role_name": "burner"
            },
            "mintable": {
                "max_mint_quantity": 10000
            },
            "divisible": {
                "decimal": 2
            },
            "currency_name": "Dollar"
        }
    }
]
Beispiel für Rückgabewert (Fractional NFT):
[
    {
        "txId": "99bca74f401465206da7499cbf704dd443b3c3d94e348b1d6682ab5ee1864a08",
        "timestamp": "2023-06-20T01:09:18.000Z",
        "value": {
            "assetType": "otoken",
            "tokenId": "FNFT",
            "tokenName": "realestate",
            "tokenStandard": "erc1155+",
            "tokenType": "nonfungible",
            "tokenUnit": "fractional",
            "behaviors": [
                "divisible",
                "mintable",
                "transferable",
                "burnable",
                "roles"
            ],
            "roles": {
                "minter_role_name": "minter",
                "burner_role_name": "burner"
            },
            "mintable": {
                "max_mint_quantity": 20000
            },
            "quantity": 100,
            "createdBy": "oaccount~87bcb699d507368ee3966cd03ee6d7736ffc55dde8c0f0e16b14866334ac504a",
            "creationDate": "2023-06-20T00:53:13.000Z",
            "divisible": {
                "decimal": 2
            },
            "isBurned": false,
            "tokenUri": "www.FNFT.example.com",
            "price": 2000,
            "on_sale_flag": true,
            "owners": [
                {
                    "accountId": "oaccount~87bcb699d507368ee3966cd03ee6d7736ffc55dde8c0f0e16b14866334ac504a",
                    "tokenShare": 90
                },
                {
                    "accountId": "oaccount~3cddfdaa855900579d963aa6f755a4aed1f3a474a2462c1b45bd7f36df673224",
                    "tokenShare": 10
                }
            ]
        }
    },
    {
        "txId": "d517c61f40e7d6af2f04fe6d337b3e5108eb57030c9dc823793498fd4fed671b",
        "timestamp": "2023-06-20T00:53:13.000Z",
        "value": {
            "assetType": "otoken",
            "tokenId": "FNFT",
            "tokenName": "realestate",
            "tokenStandard": "erc1155+",
            "tokenType": "nonfungible",
            "tokenUnit": "fractional",
            "behaviors": [
                "divisible",
                "mintable",
                "transferable",
                "burnable",
                "roles"
            ],
            "roles": {
                "minter_role_name": "minter",
                "burner_role_name": "burner"
            },
            "mintable": {
                "max_mint_quantity": 20000
            },
            "quantity": 100,
            "createdBy": "oaccount~87bcb699d507368ee3966cd03ee6d7736ffc55dde8c0f0e16b14866334ac504a",
            "creationDate": "2023-06-20T00:53:13.000Z",
            "divisible": {
                "decimal": 2
            },
            "isBurned": false,
            "tokenUri": "www.FNFT.example.com",
            "price": 2000,
            "on_sale_flag": true,
            "owners": [
                {
                    "accountId": "oaccount~87bcb699d507368ee3966cd03ee6d7736ffc55dde8c0f0e16b14866334ac504a",
                    "tokenShare": 100
                }
            ]
        }
    }
]
Beispiel für Rückgabewert (ganze NFT):
[
    {
        "trxId": "92ac6b56112acdba724dd49924d2420a7899c013c61aa40d272e8ab391a65e0f",
        "timeStamp": "2023-09-04T02:28:48.000Z",
        "value": {
            "tokenMetadata": {
                "painting_name": "monalisa",
                "description": "monalisa painting",
                "image": "image link",
                "painter_name": "Leonardo da Vinci"
            },
            "assetType": "otoken",
            "tokenId": "artnft",
            "tokenName": "artcollection",
            "tokenDesc": "Updated Token Description",
            "tokenStandard": "erc1155+",
            "tokenType": "nonfungible",
            "tokenUnit": "whole",
            "behaviors": [
                "indivisible",
                "mintable",
                "transferable",
                "burnable",
                "roles"
            ],
            "roles": {
                "minter_role_name": "minter",
                "burner_role_name": "burner"
            },
            "mintable": {
                "max_mint_quantity": 20000
            },
            "quantity": 1,
            "createdBy": "oaccount~42e89f4c72dfde9502814876423c6da630d466e87436dd1aae201d347ad1288d",
            "creationDate": "2023-09-04T02:27:19.000Z",
            "owner": "oaccount~42e89f4c72dfde9502814876423c6da630d466e87436dd1aae201d347ad1288d",
            "isBurned": false,
            "tokenUri": "www.FNFT.example.com",
            "price": 10000,
            "on_sale_flag": true
        }
    },
    {
        "trxId": "27697dd4a8dba53bad073aa95587cd1ef173b02fd95d771a60273d301fd3bcbe",
        "timeStamp": "2023-09-04T02:27:19.000Z",
        "value": {
            "tokenMetadata": {
                "painting_name": "monalisa",
                "description": "monalisa painting",
                "image": "image link",
                "painter_name": "Leonardo da Vinci"
            },
            "assetType": "otoken",
            "tokenId": "artnft",
            "tokenName": "artcollection",
            "tokenDesc": "artcollection nft",
            "tokenStandard": "erc1155+",
            "tokenType": "nonfungible",
            "tokenUnit": "whole",
            "behaviors": [
                "indivisible",
                "mintable",
                "transferable",
                "burnable",
                "roles"
            ],
            "roles": {
                "minter_role_name": "minter",
                "burner_role_name": "burner"
            },
            "mintable": {
                "max_mint_quantity": 20000
            },
            "quantity": 1,
            "createdBy": "oaccount~42e89f4c72dfde9502814876423c6da630d466e87436dd1aae201d347ad1288d",
            "creationDate": "2023-09-04T02:27:19.000Z",
            "owner": "oaccount~42e89f4c72dfde9502814876423c6da630d466e87436dd1aae201d347ad1288d",
            "isBurned": false,
            "tokenUri": "www.FNFT.example.com",
            "price": 10000,
            "on_sale_flag": true
        }
    }
]
getAllTokens
Diese Methode gibt alle Tokenassets zurück, die in der Statusdatenbank gespeichert sind. Diese Methode kann nur von einem Token Admin des Chaincodes aufgerufen werden. Diese Methode verwendet SQL-reiche Berkeley DB-Abfragen und kann nur aufgerufen werden, wenn eine Verbindung zum Remote-Oracle Blockchain Platform-Netzwerk besteht.
Ctx.ERC1155Token.getAllTokens()
Parameter:
  • Kein
Beispiel für den Rückgabewert:
[
  {
    "key": "tokenOne",
    "valueJson": {
      "assetType": "otoken",
      "tokenId": "tokenOne",
      "tokenName": "moneytok",
      "tokenStandard": "erc1155+",
      "tokenType": "fungible",
      "tokenUnit": "fractional",
      "behaviors": [
        "divisible",
        "mintable",
        "transferable",
        "roles"
      ],
      "roles": {
        "minter_role_name": "minter",
        "burner_role_name": "burner"
      },
      "mintable": {
        "max_mint_quantity": 1000
      },
      "divisible": {
        "decimal": 2
      }
    }
  },
  {
    "key": "tokenTwo",
    "valueJson": {
      "assetType": "otoken",
      "tokenId": "tokenTwo",
      "tokenName": "moneytok",
      "tokenStandard": "erc1155+",
      "tokenType": "fungible",
      "tokenUnit": "fractional",
      "behaviors": [
        "divisible",
        "mintable",
        "transferable",
        "roles"
      ],
      "roles": {
        "minter_role_name": "minter",
        "burner_role_name": "burner"
      },
      "mintable": {
        "max_mint_quantity": 1000
      },
      "divisible": {
        "decimal": 2
      }
    }
  },
  {
    "key": "art",
    "valueJson": {
      "assetType": "otoken",
      "quantity": 1,
      "tokenId": "art",
      "tokenName": "artcollection",
      "tokenStandard": "erc1155+",
      "tokenType": "nonfungible",
      "tokenUnit": "whole",
      "behaviors": [
        "indivisible",
        "singleton",
        "mintable",
        "transferable",
        "burnable",
        "roles"
      ],
      "roles": {
        "minter_role_name": "minter"
      },
      "mintable": {
        "max_mint_quantity": 20000
      },
      "owner": "oaccount~76cb672eeb1bd535899562a840d0c15a356db89e24bc8b43ac1dba845a4282c6",
      "createdBy": "oaccount~76cb672eeb1bd535899562a840d0c15a356db89e24bc8b43ac1dba845a4282c6",
      "creationDate": "2022-12-08T08:52:57.000Z",
      "isBurned": true,
      "tokenUri": "art.example.com",
      "transferredBy": "ouaccount~24ffd4d32a028a85b4b960f5d55536c837b5429bc7f346150adfa904ec2937cc",
      "transferredDate": "2022-12-08T08:59:17.000Z",
      "burnedBy": "oaccount~76cb672eeb1bd535899562a840d0c15a356db89e24bc8b43ac1dba845a4282c6",
      "burnedDate": "2022-12-08T09:01:28.000Z"
    }
  },
  {
    "key": "FNFT",
    "valueJson": {
        "assetType": "otoken",
        "tokenId": "FNFT",
        "tokenName": "realestate",
        "tokenStandard": "erc1155+",
        "tokenType": "nonfungible",
        "tokenUnit": "fractional",
        "behaviors": [
            "divisible",
            "mintable",
            "transferable",
            "burnable",
            "roles"
        ],
        "roles": {
            "minter_role_name": "minter",
            "burner_role_name": "burner"
        },
        "mintable": {
            "max_mint_quantity": 20000
        },
        "quantity": 100,
        "createdBy": "oaccount~87bcb699d507368ee3966cd03ee6d7736ffc55dde8c0f0e16b14866334ac504a",
        "creationDate": "2023-06-20T00:53:13.000Z",
        "divisible": {
            "decimal": 2
        },
        "isBurned": false,
        "tokenUri": "www.FNFT.example.com",
        "price": 2000,
        "on_sale_flag": true
    }
  },
]
get (Token)
Diese Methode gibt ein Tokenobjekt zurück, wenn das Token in der Statusdatenbank vorhanden ist. Diese Methode kann nur von einem Token Admin des Chaincodes oder des Tokeneigentümers aufgerufen werden.
this.Ctx.ERC1155Token.get(tokenId: string)
Parameter:
  • tokenId: string: Die ID des abzurufenden Tokens.
Beispiel für Rückgabewert (ganze NFT):
{
  "assetType": "otoken",
  "quantity": 1,
  "tokenId": "art",
  "tokenName": "artcollection",
  "tokenStandard": "erc1155+",
  "tokenType": "nonfungible",
  "tokenUnit": "whole",
  "behaviors": [
    "indivisible",
    "singleton",
    "mintable",
    "transferable",
    "burnable",
    "roles"
  ],
  "roles": {
    "minter_role_name": "minter"
  },
  "mintable": {
    "max_mint_quantity": 20000
  },
  "owner": "oaccount~76cb672eeb1bd535899562a840d0c15a356db89e24bc8b43ac1dba845a4282c6",
  "createdBy": "oaccount~76cb672eeb1bd535899562a840d0c15a356db89e24bc8b43ac1dba845a4282c6",
  "creationDate": "2022-12-08T08:52:57.000Z",
  "isBurned": true,
  "tokenUri": "example.com",
  "transferredBy": "ouaccount~24ffd4d32a028a85b4b960f5d55536c837b5429bc7f346150adfa904ec2937cc",
  "transferredDate": "2022-12-08T08:59:17.000Z",
  "burnedBy": "oaccount~76cb672eeb1bd535899562a840d0c15a356db89e24bc8b43ac1dba845a4282c6",
  "burnedDate": "2022-12-08T09:01:28.000Z"
}
Beispiel für Rückgabewert (unglaubliches Token):
{
    "assetType": "otoken",
    "tokenId": "Loyalty",
    "tokenName": "loyalty",
    "tokenDesc": "Token Description",
    "tokenStandard": "erc1155+",
    "tokenType": "fungible",
    "tokenUnit": "fractional",
    "behaviors": [
        "divisible",
        "mintable",
        "transferable",
        "burnable",
        "roles"
    ],
    "roles": {
        "minter_role_name": "minter",
        "burner_role_name": "burner"
    },
    "mintable": {
        "max_mint_quantity": 10000
    },
    "divisible": {
        "decimal": 2
    },
    "currency_name": "Dollar"
}
Beispiel für Rückgabewert (Fractional NFT):
{
    "tokenMetadata": {
        "painting_name": "paint",
        "description": "Painting Description"
    },
    "assetType": "otoken",
    "tokenId": "realEstate",
    "tokenName": "realestate",
    "tokenDesc": "Token Description",
    "tokenStandard": "erc1155+",
    "tokenType": "nonfungible",
    "tokenUnit": "fractional",
    "behaviors": [
        "divisible",
        "mintable",
        "transferable",
        "burnable",
        "roles"
    ],
    "roles": {
        "minter_role_name": "minter",
        "burner_role_name": "burner"
    },
    "mintable": {
        "max_mint_quantity": 20000
    },
    "quantity": 100,
    "createdBy": "oaccount~42e89f4c72dfde9502814876423c6da630d466e87436dd1aae201d347ad1288d",
    "creationDate": "2023-06-14T04:20:14.000Z",
    "divisible": {
        "decimal": 2
    },
    "isBurned": false,
    "tokenUri": "www.realestate.example.com",
    "price": 1000,
    "on_sale_flag": true,
    "owners": [
        {
            "accountId": "oaccount~42e89f4c72dfde9502814876423c6da630d466e87436dd1aae201d347ad1288d",
            "tokenShare": 100
        }
    ]
}
getAllTokensByUser
Diese Methode gibt alle Tokenassets zurück, deren Eigentümer ein angegebener Benutzer ist. Diese Methode verwendet SQL-reiche Berkeley DB-Abfragen und kann nur aufgerufen werden, wenn eine Verbindung zum Remote-Oracle Blockchain Platform-Netzwerk besteht.
Ctx.ERC1155Token.getAllTokensByUser(accountId: string)
Parameter:
  • accountId: string: Die Account-ID des Benutzers.
Beispiel für den Rückgabewert:
[
  {
    "key": "tokenOne",
    "valueJson": {
      "assetType": "otoken",
      "tokenId": "tokenOne",
      "tokenName": "moneytok",
      "tokenStandard": "erc1155+",
      "tokenType": "fungible",
      "tokenUnit": "fractional",
      "behaviors": [
        "divisible",
        "mintable",
        "transferable",
        "roles"
      ],
      "roles": {
        "minter_role_name": "minter",
        "burner_role_name": "burner"
      },
      "mintable": {
        "max_mint_quantity": 1000
      },
      "divisible": {
        "decimal": 2
      }
    }
  },
  {
    "key": "nftToken",
    "valueJson": {
      "assetType": "otoken",
      "quantity": 1,
      "tokenId": "nftToken",
      "tokenName": "artcollection",
      "tokenStandard": "erc1155+",
      "tokenType": "nonfungible",
      "tokenUnit": "whole",
      "behaviors": [
        "indivisible",
        "singleton",
        "mintable",
        "transferable",
        "burnable",
        "roles"
      ],
      "roles": {
        "minter_role_name": "minter"
      },
      "mintable": {
        "max_mint_quantity": 20000
      },
      "owner": "oaccount~76cb672eeb1bd535899562a840d0c15a356db89e24bc8b43ac1dba845a4282c6",
      "createdBy": "oaccount~76cb672eeb1bd535899562a840d0c15a356db89e24bc8b43ac1dba845a4282c6",
      "creationDate": "2022-12-08T09:10:21.000Z",
      "isBurned": false,
      "tokenUri": "example.com"
    }
  }
]
ownerOf
Diese Methode gibt die Konto-ID, Organisations-ID und Benutzer-ID des Eigentümers der angegebenen Token-ID zurück.
Ctx.ERC1155Token.ownerOf(tokenId: string)
Parameter:
  • tokenId: string: Die ID des Tokens.
Beispiel für den Rückgabewert:
{
    "accountId": "oaccount~76cb672eeb1bd535899562a840d0c15a356db89e24bc8b43ac1dba845a4282c6",
    "orgId": "appdev",
    "userId": "idcqa"
}
tokenURI
Diese Methode gibt den URI eines angegebenen Tokens zurück. Jeder kann diese Methode nennen.
Ctx.ERC1155Token.tokenURI(tokenId: string)
Parameter:
  • tokenId: string: Die ID des Tokens.
Beispiel für den Rückgabewert:
{
    "tokenUri": "example.com"
}
name
Diese Methode gibt den Namen der Token-Klasse zurück. Jeder kann diese Methode nennen.
Ctx.ERC1155Token.name(tokenId: string)
Parameter:
  • tokenId: string: Die ID des Tokens.
Beispiel für den Rückgabewert:
{"tokenName": "artcollection"}
totalSupply
Diese Methode gibt die Gesamtanzahl der Münztoken zurück. Mögliche Token werden durch die Token-ID angegeben. Nicht fungible Token werden durch den Tokennamen angegeben.
Ctx.ERC1155Token.totalSupply(token: any)
Parameter:
  • token: any: Das Tokenasset.
Beispiel für den Rückgabewert:
{"totalSupply": 110}
totalNetSupply
Diese Methode gibt die Gesamtanzahl der Münztoken abzüglich der Anzahl der gebrannten Token zurück. Mögliche Token werden durch die Token-ID angegeben. Nicht fungible Token werden durch den Tokennamen angegeben.
Ctx.ERC1155Token.totalNetSupply(token: any)
Parameter:
  • token: any: Das Tokenasset.
Beispiel für den Rückgabewert:
{"totalNetSupply": 105}
getTokensByName
Diese Methode gibt alle Tokenassets für einen angegebenen Tokennamen zurück. Diese Methode verwendet SQL-reiche Berkeley DB-Abfragen und kann nur aufgerufen werden, wenn eine Verbindung zum Remote-Oracle Blockchain Platform-Netzwerk besteht.
Ctx.ERC1155Token.getTokensByName(tokenName: string)
Parameter:
  • tokenName: string: Der Name des Tokens.
Beispiel für den Rückgabewert:
[
  {
    "key": "tokenOne",
    "valueJson": {
      "assetType": "otoken",
      "tokenId": "tokenOne",
      "tokenName": "moneytok",
      "tokenStandard": "erc1155+",
      "tokenType": "fungible",
      "tokenUnit": "fractional",
      "behaviors": [
        "divisible",
        "mintable",
        "transferable",
        "roles"
      ],
      "roles": {
        "minter_role_name": "minter",
        "burner_role_name": "burner"
      },
      "mintable": {
        "max_mint_quantity": 1000
      },
      "divisible": {
        "decimal": 2
      }
    }
  },
  {
    "key": "tokenTwo",
    "valueJson": {
      "assetType": "otoken",
      "tokenId": "tokenTwo",
      "tokenName": "moneytok",
      "tokenStandard": "erc1155+",
      "tokenType": "fungible",
      "tokenUnit": "fractional",
      "behaviors": [
        "divisible",
        "mintable",
        "transferable",
        "roles"
      ],
      "roles": {
        "minter_role_name": "minter",
        "burner_role_name": "burner"
      },
      "mintable": {
        "max_mint_quantity": 1000
      },
      "divisible": {
        "decimal": 2
      }
    }
  }
]
getDecimals
Diese Methode gibt die Anzahl der Dezimalstellen für ein angegebenes Token zurück. Wenn das teilbare Verhalten für das Token nicht angegeben ist, wird der Standardwert mit null Dezimalstellen zurückgegeben.
Ctx.ERC1155Token.getDecimals(token)
Parameter:
  • token: any: Das Tokenasset.
Beispiel für den Rückgabewert:
2

Methoden für die Accountverwaltung

createAccount
Mit dieser Methode wird ein Konto für einen angegebenen Benutzer erstellt, und das zugehörige Token berücksichtigt fungible oder nicht fungible Token. Ein Konto muss für jeden Benutzer erstellt werden, der jederzeit Token hat. Das Benutzerkonto verfolgt das NFT-Konto und die fungiblen Token-Konten, über die ein Benutzer verfügt. Benutzer müssen über Konten im Netzwerk verfügen, um tokenbezogene Vorgänge abzuschließen. Diese Methode kann nur von einem Token Admin des Chaincodes aufgerufen werden.

Ein Benutzerkonto hat eine eindeutige ID, die durch einen SHA-256-Hash des Parameters orgId und des Parameters userId gebildet wird.

Ein Benutzer kann mehrere fungible Token-Konten mit eindeutigen Konto-IDs haben. Unsichtbare Token-Konto-IDs werden durch einen SHA-256-Hash des Parameters orgId, den Parameter userId, die durch das Tilde-Symbol (~) getrennte Konstantenzeichenfolge ft und eine Zählernummer gebildet, die den Index des fungiblen Kontos angibt, das durch das Tilde-Symbol (~) getrennt erstellt wird.

Ein Benutzer kann nur ein nicht fungibles Token-Konto haben. Konten-IDs für nicht fungible Token sind eindeutig und werden durch einen SHA-256-Hash des Parameters orgId, den Parameter userId und die Konstantenzeichenfolge nft gebildet, die durch das Tilde-Symbol (~) getrennt sind. Alle nicht fungiblen Token, die ein Benutzer besitzt, unabhängig davon, ob sie ganz oder teilweise sind, sind mit diesem einzelnen nicht fungiblen Token-Konto verknüpft.

Ctx.ERC1155Account.createAccount(orgId: string, userId: string, ftAccount: boolean, nftAccount: boolean)
Parameter:
  • orgId: string: Die Mitgliedschaftsserviceprovider-(MSP-)ID des Benutzers in der aktuellen Organisation.
  • userId: string: Der Benutzername oder die E-Mail-ID des Benutzers.
  • ftAccount: boolean: Bei "true" wird ein fungibler Tokenaccount erstellt und mit dem Benutzeraccount verknüpft.
  • nftAccount: boolean: Bei "true" wird ein nicht fungibler Tokenaccount erstellt und mit dem Benutzeraccount verknüpft.
Rückgabewert:
  • Bei Erfolg ein JSON-Objekt des erstellten Accounts.
Beispiel für den Rückgabewert:
{
  "assetType": "ouaccount",
  "accountId": "ouaccount~cf20877546f52687f387e7c91d88b9722c97e1a456cc0484f40c747f7804feae",
  "userId": "user1",
  "orgId": "appdev",
  "totalAccounts": 2,
  "totalFtAccounts": 1,
  "associatedFtAccounts": [
    {
      "accountId": "oaccount~60bb20c14a83f6e426e1437c479c5891e1c6477dfd7ad18b73acac5d80bc504b",
      "tokenId": ""
    }
  ],
  "associatedNftAccount": "oaccount~73c3e835dac6d0a56ca9d8def08269f83cefd59b9d297fe2cdc5a9083828fa58"
}
createUserAccount
Mit dieser Methode wird ein Account für einen angegebenen Benutzer erstellt. Ein Konto muss für jeden Benutzer erstellt werden, der jederzeit Token hat. Das Benutzerkonto verfolgt das NFT-Konto und die fungiblen Token-Konten, über die ein Benutzer verfügt. Benutzer müssen über Konten im Netzwerk verfügen, um tokenbezogene Vorgänge abzuschließen.

Eine Konto-ID ist ein SHA-256-Hash mit dem Parameter orgId und dem Parameter userId. Diese Methode kann nur von einem Token Admin des Chaincodes aufgerufen werden.

Ctx.ERC1155Account.createUserAccount(orgId: string, userId: string)
Parameter:
  • orgId: string: Die Mitgliedschaftsserviceprovider-(MSP-)ID des Benutzers in der aktuellen Organisation.
  • userId: string: Der Benutzername oder die E-Mail-ID des Benutzers.
Rückgabewert:
  • Bei Erfolg ein JSON-Objekt des erstellten Benutzeraccounts.
Beispiel für den Rückgabewert:
{
  "assetType": "ouaccount",
  "accountId": "ouaccount~24ffd4d32a028a85b4b960f5d55536c837b5429bc7f346150adfa904ec2937cc",
  "userId": "idcqa",
  "orgId": "appdev",
  "totalAccounts": 0,
  "totalFtAccounts": 0,
  "associatedFtAccounts": [],
  "associatedNftAccount": ""
}
createTokenAccount
Diese Methode erstellt ein fungibles oder nicht fungibles Token-Konto, das einem Benutzerkonto zugeordnet werden kann.

Ein Benutzer kann mehrere fungible Token-Konten mit eindeutigen Konto-IDs haben. Unsichtbare Token-Konto-IDs werden durch einen SHA-256-Hash des Parameters orgId, den Parameter userId, die durch das Tilde-Symbol (~) getrennte Konstantenzeichenfolge ft und eine Zählernummer gebildet, die den Index des fungiblen Kontos angibt, das durch das Tilde-Symbol (~) getrennt erstellt wird.

Ein Benutzer kann nur ein nicht fungibles Token-Konto haben. Konten-IDs für nicht fungible Token sind eindeutig und werden durch einen SHA-256-Hash des Parameters orgId, den Parameter userId und die Konstantenzeichenfolge nft gebildet, die durch das Tilde-Symbol (~) getrennt sind. Alle nicht fungiblen Token, die ein Benutzer besitzt, unabhängig davon, ob sie ganz oder teilweise sind, sind mit diesem einzelnen nicht fungiblen Token-Konto verknüpft.

Diese Methode kann nur von einem Token Admin des Chaincodes aufgerufen werden.

Ctx.ERC1155Account.createTokenAccount(orgId: string, userId: string, tokenType: string)
Parameter:
  • orgId: string: Die Mitgliedschaftsserviceprovider-(MSP-)ID des Benutzers in der aktuellen Organisation.
  • userId: string: Der Benutzername oder die E-Mail-ID des Benutzers.
  • tokenType: TokenType: Der Typ des zu erstellenden Tokenaccounts. Die einzigen unterstützten Tokentypen sind nonfungible und fungible.
Rückgabewert:
  • Bei Erfolg ein JSON-Objekt des erstellten Tokenaccounts.
Beispiel für den Rückgabewert:
{
  "assetType": "ouaccount",
  "accountId": "ouaccount~24ffd4d32a028a85b4b960f5d55536c837b5429bc7f346150adfa904ec2937cc",
  "userId": "idcqa",
  "orgId": "appdev",
  "totalAccounts": 1,
  "totalFtAccounts": 1,
  "associatedFtAccounts": [
    {
      "accountId": "oaccount~1422a74d262a3a55a37cd9023ef8836f765d0be7b49d397696b9961d7434d22a",
      "tokenId": ""
    }
  ],
  "associatedNftAccount": ""
}
associateTokenToToken
Diese Methode verknüpft das fungible Token-Konto eines Benutzers mit einem bestimmten fungiblen Token.
Ctx.ERC1155Account.associateTokenToToken(accountId: string, tokenId: string)
Parameter:
  • accountId: string: Die Benutzeraccount-ID.
  • tokenId: string: Die ID des Tokens.
Rückgabewert:
  • Bei Erfolg ein JSON-Objekt des Benutzerkontos, das zeigt, dass das fungible Token dem Tokenaccount zugeordnet wurde. Beispiel: Im folgenden Beispiel zeigt das erste Objekt im Array associatedFtAccounts, dass die fungible Tokenaccount-ID und die Token-ID verknüpft sind.
Beispiel für den Rückgabewert:
{
  "assetType": "ouaccount",
  "accountId": "ouaccount~24ffd4d32a028a85b4b960f5d55536c837b5429bc7f346150adfa904ec2937cc",
  "userId": "idcqa",
  "orgId": "appdev",
  "totalAccounts": 1,
  "totalFtAccounts": 1,
  "associatedFtAccounts": [
    {
      "accountId": "oaccount~1422a74d262a3a55a37cd9023ef8836f765d0be7b49d397696b9961d7434d22a",
      "tokenId": "tokenOne"
    }
  ],
  "associatedNftAccount": ""
}
getAccountHistory
Diese Methode gibt die Historie für ein angegebenes Tokenkonto zurück.
Ctx.ERC1155Account.getAccountHistory(accountId: string)
Parameter:
  • accountId: string: Die Benutzeraccount-ID.
Rückgabewert:
  • Bei Erfolg ein Array von JSON-Objekten, das die Accounthistorie beschreibt.
Beispiel für den Rückgabewert:
[
    {
        "trxId": "a2cfc6fc064334d6b9931cdf67193711ec2ff5c50a4714f11855fe7384f00e35",
        "timeStamp": "2023-06-06T14:44:31.000Z",
        "value": {
            "accountId": "oaccount~21206f309941a2a23c4f158a0fe1b8f12bb8e2b0c9a2e1358f5efebc0c7d410e",
            "assetType": "oaccount",
            "bapAccountVersion": 1,
            "balance": 100,
            "orgId": "appdev",
            "tokenId": "loy1",
            "tokenName": "loyalty",
            "tokenType": "fungible",
            "userId": "idcqa"
        }
    },
    {
        "trxId": "de483cf7505ae4e7018c4b604c3ab9327c2fb1f802d9408e22735667c1d6997f",
        "timeStamp": "2023-06-06T14:43:23.000Z",
        "value": {
            "assetType": "oaccount",
            "bapAccountVersion": 0,
            "accountId": "oaccount~21206f309941a2a23c4f158a0fe1b8f12bb8e2b0c9a2e1358f5efebc0c7d410e",
            "userId": "idcqa",
            "orgId": "appdev",
            "tokenType": "fungible",
            "tokenId": "loy1",
            "tokenName": "loyalty",
            "balance": 0
        }
    },
    {
        "trxId": "db053e653d3ad9aa5b7b6e04b7cd51aacfbb413272d857a155b60d2a6a12bf4d",
        "timeStamp": "2023-06-05T16:59:08.000Z",
        "value": {
            "assetType": "oaccount",
            "bapAccountVersion": 0,
            "accountId": "oaccount~21206f309941a2a23c4f158a0fe1b8f12bb8e2b0c9a2e1358f5efebc0c7d410e",
            "userId": "idcqa",
            "orgId": "appdev",
            "tokenType": "fungible",
            "tokenId": "",
            "balance": 0
        }
    }
]
getAccountWithStatus
Diese Methode gibt Tokenaccountdetails, einschließlich Accountstatus, für einen angegebenen Benutzer zurück. Diese Methode kann nur von einem Token Admin des Chaincodes oder dem Account Owner des Accounts aufgerufen werden.
Ctx.ERC1155Account.GetAccountWithStatus(accountId, tokenId...)
Parameter:
  • userAccountId: string: Die Account-ID des Benutzers.
  • tokenId?: string: Bei einem nicht fungiblen Tokenaccount eine leere Zeichenfolge. Bei einem fungiblen Token-Konto die Token-ID.
Rückgabewert:
  • Bei Erfolg ein JSON-Objekt, das Tokenaccountdetails einschließlich des Accountstatus enthält.
Beispiel für Rückgabewert (Nicht-ungbares Token-Konto):
{
    "assetType": "oaccount",
    "bapAccountVersion": 1,
    "status": "active",
    "accountId": "oaccount~cc301bee057f14236a97d434909ec1084970921b008f6baab09c2a0f5f419a9a",
    "userId": "idcqa",
    "orgId": "appdev",
    "tokenType": "nonfungible",
    "noOfNfts": 1
  }
Beispiel für Rückgabewert (Fungible Token Account):
{
  "bapAccountVersion": 0,
  "assetType": "oaccount",
  "status": "active",
  "accountId": "oaccount~2de8db6b91964f8c9009136831126d3cfa94e1d00c4285c1ea3e6d1f36479ed4",
  "userId": "idcqa",
  "orgId": "appdev",
  "tokenType": "fungible",
  "tokenId": "t1",
  "tokenName": "loyalty",
  "balance": 0
}
getAccount
Diese Methode gibt Tokenaccountdetails für einen angegebenen Benutzer zurück. Diese Methode kann nur von einem Token Admin des Chaincodes oder dem Account Owner des Accounts aufgerufen werden.
Ctx.ERC1155Account.getAccount(userAccountId: string, tokenId: string)
Parameter:
  • userAccountId: string: Die Account-ID des Benutzers.
  • tokenId?: string: Bei einem nicht fungiblen Tokenaccount eine leere Zeichenfolge. Bei einem fungiblen Token-Konto die Token-ID.
Rückgabewert:
  • Bei Erfolg ein JSON-Objekt, das Tokenaccountdetails enthält. Der Parameter bapAccountVersion ist im Accountobjekt zur internen Verwendung definiert.
Beispiel für Rückgabewert (Nicht-ungbares Token-Konto):
{
    "assetType": "oaccount",
    "bapAccountVersion": 0,
    "accountId": "oaccount~e88276a3be547e31b567346bdddde52d37734da4d5fae83ab2e5c98a10097371",
    "userId": "idcqa",
    "orgId": "appdev",
    "tokenType": "nonfungible",
    "noOfNfts": 3
}
Beispiel für Rückgabewert (Fungible Token Account):
{
    "assetType": "oaccount",
    "bapAccountVersion": 0,
    "accountId": "oaccount~21206f309941a2a23c4f158a0fe1b8f12bb8e2b0c9a2e1358f5efebc0c7d410e",
    "userId": "idcqa",
    "orgId": "appdev",
    "tokenType": "fungible",
    "tokenId": "loy1",
    "tokenName": "loyalty",
    "balance": 50
}
getAllAccounts
Diese Methode gibt Details aller Benutzeraccounts zurück.
Ctx.ERC1155Account.getAllAccounts()
Parameter:
  • Kein
Beispiel für den Rückgabewert:
[
        {
            "assetType": "ouaccount",
            "accountId": "ouaccount~412de5e3998dcd100973e1bad6e8729fddc1c7ff610beab8376d733a35c51f38",
            "userId": "idcqa",
            "orgId": "appdev",
            "totalAccounts": 2,
            "totalFtAccounts": 1,
            "associatedFtAccounts": [
                {
                    "accountId": "oaccount~21206f309941a2a23c4f158a0fe1b8f12bb8e2b0c9a2e1358f5efebc0c7d410e",
                    "tokenId": "loy1"
                }
            ],
            "associatedNftAccount": "oaccount~e88276a3be547e31b567346bdddde52d37734da4d5fae83ab2e5c98a10097371"
        },
        {
            "assetType": "ouaccount",
            "accountId": "ouaccount~9501bb774c156eb8354dfe489250ea91f757523d70f08ee494bda98bb352003b",
            "userId": "user1_minter",
            "orgId": "appdev",
            "totalAccounts": 2,
            "totalFtAccounts": 1,
            "associatedFtAccounts": [
                {
                    "accountId": "oaccount~1089ee5122f367ee0ca38c6660298f4b81f199627e4f67f3691c0f628237974c",
                    "tokenId": "loy1"
                }
            ],
            "associatedNftAccount": "oaccount~dcee860665db8740cb77b846e823752185a1e9a185814d0acb305890f5903446"
        },
    ]
getAccountDetailsByUser
Diese Methode gibt eine Kontenübersicht für einen angegebenen Benutzer und Details von fungiblen und nicht fungiblen Token zurück, die dem Benutzer zugeordnet sind.
Ctx.ERC1155Account.getAccountDetailsByUser(orgId: string, userId: string)
Parameter:
  • orgId: string: Die Mitgliedschaftsserviceprovider-(MSP-)ID des Benutzers in der aktuellen Organisation.
  • userId: string: Der Benutzername oder die E-Mail-ID des Benutzers.
Rückgabewert:
  • Bei Erfolg ein JSON-Accountobjekt, das eine Accountübersicht für den angegebenen Benutzer und Details von fungiblen und nicht fungiblen Token enthält, die dem Benutzer zugeordnet sind. Bei nicht fungiblen Token für Bruchteile zeigt die Eigenschaft tokenShare im Abschnitt associatedNFTs die Freigabe an, die dem Benutzer gehört
Beispiel für den Rückgabewert:
{
    "userAccountId": "ouaccount~412de5e3998dcd100973e1bad6e8729fddc1c7ff610beab8376d733a35c51f38",
    "associatedFTAccounts": [
        {
            "accountId": "oaccount~21206f309941a2a23c4f158a0fe1b8f12bb8e2b0c9a2e1358f5efebc0c7d410e",
            "tokenId": "FT",
            "balance": 50
        }
    ],
    "associatedNFTAccount": {
        "accountId": "oaccount~e88276a3be547e31b567346bdddde52d37734da4d5fae83ab2e5c98a10097371",
        "associatedNFTs": [
            {
                "nftTokenId": "FNFT",
                "tokenShare": 100
            },
            {
                "nftTokenId": "FNFT2",
                "tokenShare": 110
            },
            {
                "nftTokenId": "NFT"
            }
        ]
    }
}
getUserByAccountId
Diese Methode gibt die Benutzerdetails einer angegebenen Account-ID zurück.
Ctx.ERC1155Account.getUserByAccountId(accountId: string)
Parameter:
  • accountId: string: Die ID des Accounts.
Rückgabewert:
  • Bei Erfolg ein JSON-Objekt der Benutzerdetails (orgId und userId).
Beispiel für den Rückgabewert:
{
    "orgId": "appdev",
    "userId": "idcqa"
}

Methoden für die Rollenverwaltung

AddRoleMember
Diese Methode fügt einem angegebenen Benutzer und Token eine Rolle hinzu. Mögliche Token werden durch die Token-ID angegeben. Nicht fungible Token werden durch den Tokennamen angegeben.
Ctx.ERC1155Token.addRoleMember(role: string, userAccountId: string, token: any)
Parameter:
  • userAccountId: string: Die Account-ID des Benutzers.
  • role: string: Der Name der Rolle, die dem angegebenen Benutzer hinzugefügt werden soll.
  • token: any: Das Tokenasset.
Rückgabewert:
  • Bei Erfolg eine Nachricht mit Accountdetails.
Beispiel für den Rückgabewert:
{
  "msg": "Successfully added role 'minter' to Account Id: oaccount~1422a74d262a3a55a37cd9023ef8836f765d0be7b49d397696b9961d7434d22a (Org-Id: appdev, User-Id: idcqa)"
}
isInRole
Diese Methode gibt einen booleschen Wert zurück, der angibt, ob ein Benutzer eine angegebene Rolle hat. Mögliche Token werden durch die Token-ID angegeben. Nicht fungible Token werden durch den Tokennamen angegeben.
Ctx.ERC1155Token.isInRole(role: string, userAccountId: string, token: any)
Parameter:
  • userAccountId: string: Die Account-ID des Benutzers.
  • role: string: Der Name der zu suchenden Rolle.
  • token: any: Das Tokenasset.
Beispiel für den Rückgabewert:
{
    "result": true,
    "msg": "Account Id oaccount~1422a74d262a3a55a37cd9023ef8836f765d0be7b49d397696b9961d7434d22a (Org-Id: appdev, User-Id: idcqa) has minter role"
}
removeRoleMember
Diese Methode entfernt eine Rolle von einem angegebenen Benutzer und Token. Mögliche Token werden durch die Token-ID angegeben. Nicht fungible Token werden durch den Tokennamen angegeben.
Ctx.ERC1155Token.removeRoleMember(role: string, userAccountId: string, token: any)
Parameter:
  • userAccountId: string: Die Account-ID des Benutzers.
  • role: string: Der Name der Rolle, die vom angegebenen Benutzer entfernt werden soll.
  • token: any: Das Tokenasset.
Beispiel für den Rückgabewert:
{
  "msg": "Successfully removed role 'minter' from Account Id: oaccount~60bb20c14a83f6e426e1437c479c5891e1c6477dfd7ad18b73acac5d80bc504b (Org-Id: appdev, User-Id: user1)"
}
getAccountsByRole
Diese Methode gibt eine Liste aller Konto-IDs für eine angegebene Rolle und ein bestimmtes Token zurück. Mögliche Token werden durch die Token-ID angegeben. Nicht fungible Token werden durch den Tokennamen angegeben.
Ctx.ERC1155Token.getAccountsByRole(role: string, token: any)
Parameter:
  • role: string: Der Name der zu suchenden Rolle.
  • token: any: Das Tokenasset.
Beispiel für den Rückgabewert:
{
  "accounts": [
    "oaccount~1422a74d262a3a55a37cd9023ef8836f765d0be7b49d397696b9961d7434d22a",
    "oaccount~60bb20c14a83f6e426e1437c479c5891e1c6477dfd7ad18b73acac5d80bc504b"
  ]
}
getUsersByRole
Diese Methode gibt eine Liste aller Benutzer für eine angegebene Rolle und ein bestimmtes Token zurück. Mögliche Token werden durch die Token-ID angegeben. Nicht fungible Token werden durch den Tokennamen angegeben.
Ctx.ERC1155Token.getUsersByRole(role: string, token: any)
Parameter:
  • role: string: Der Name der zu suchenden Rolle.
  • token: any: Das Tokenasset.
Beispiel für den Rückgabewert:
{
    "users": [
        {
            "accountId": "oaccount~1422a74d262a3a55a37cd9023ef8836f765d0be7b49d397696b9961d7434d22a",
            "orgId": "appdev",
            "userId": "idcqa"
        },
        {
            "accountId": "oaccount~60bb20c14a83f6e426e1437c479c5891e1c6477dfd7ad18b73acac5d80bc504b",
            "orgId": "appdev",
            "userId": "user1"
        }
    ]
}

Methoden für das Transaktionshistorienmanagement

getAccountTransactionHistory
Diese Methode gibt die Kontotransaktionshistorie zurück. Diese Methode kann nur von einem Token Admin des Chaincodes oder vom Accounteigentümer aufgerufen werden. Bei nicht fungiblen Token kann diese Methode nur aufgerufen werden, wenn sie mit dem Remote-Oracle Blockchain Platform-Netzwerk verbunden ist.
Ctx.ERC1155Account.getAccountTransactionHistory(accountId: string)
Parameter:
  • accountId: string: Die Tokenaccount-ID.
Beispiel für den Rückgabewert:
[
    {
        "transactionId": "otransaction~3a6b23c3003626f3947e990eddbd7ac23398d2200e2eb3eac745e6ddfae140bc~7c88c736df38d5622512f1e8dcdd50710eb47c953f1ecb24ac44790a9e2f475b",
        "timestamp": "2023-06-06T14:48:08.000Z",
        "tokenId": "FNFT",
        "transactedAmount": 10,
        "triggeredByUserAccountId": "ouaccount~412de5e3998dcd100973e1bad6e8729fddc1c7ff610beab8376d733a35c51f38",
        "transactedAccount": "oaccount~dcee860665db8740cb77b846e823752185a1e9a185814d0acb305890f5903446",
        "transactionType": "DEBIT",
        "balance": 90
    },
    {
        "transactionId": "otransaction~3a6b23c3003626f3947e990eddbd7ac23398d2200e2eb3eac745e6ddfae140bc~178e3730bc5bee50d02f1464a4eebf733a051905f651e5789039adb4a3edc114",
        "timestamp": "2023-06-06T14:48:08.000Z",
        "tokenId": "NFT",
        "triggeredByUserAccountId": "ouaccount~412de5e3998dcd100973e1bad6e8729fddc1c7ff610beab8376d733a35c51f38",
        "transactedAccount": "oaccount~dcee860665db8740cb77b846e823752185a1e9a185814d0acb305890f5903446",
        "transactionType": "DEBIT"
    },
    {
        "transactionId": "otransaction~c369929e28e78de06c72d020f1418c9a154a7dd280b2e22ebb4ea4485e249124~a7cefb22ff39ee7e36967be71de27da6798548c872061a62dabc56d88d50b930",
        "timestamp": "2023-06-06T14:47:08.000Z",
        "tokenId": "NFT",
        "triggeredByUserAccountId": "ouaccount~412de5e3998dcd100973e1bad6e8729fddc1c7ff610beab8376d733a35c51f38",
        "transactedAccount": "oaccount~e88276a3be547e31b567346bdddde52d37734da4d5fae83ab2e5c98a10097371",
        "transactionType": "MINT"
    },
    {
        "transactionId": "otransaction~114a1bc78d04be48ee6dc140c32c042ee9481cb118959626f090eec744522422~e4eb15d9354f694230df8835ade012100d82aa43672896a2c7125a86e3048f9f",
        "timestamp": "2023-06-05T17:17:57.000Z",
        "tokenId": "FNFT",
        "transactedAmount": 100,
        "triggeredByUserAccountId": "ouaccount~412de5e3998dcd100973e1bad6e8729fddc1c7ff610beab8376d733a35c51f38",
        "transactedAccount": "oaccount~e88276a3be547e31b567346bdddde52d37734da4d5fae83ab2e5c98a10097371",
        "transactionType": "MINT",
        "balance": 100
    }
]
getTransactionById
Diese Methode gibt die Transaktionsdetails für eine angegebene Transaktions-ID zurück.
Ctx.ERC1155Transaction.getTransactionById(transactionId: string)
Parameter:
  • transactionId: string: Die ID der Transaktion.
Beispiel für den Rückgabewert:
{
  "transactionId": "otransaction~9ea7b05ab099f7ff4db8342b8c3609031f1d54f11205906e7f1fe88661fe3cbe~33b59ce0c89e96c1e16449f24301581e8e71954f38ad977c7eb6f065e87f2a53",
  "history": [
    {
      "trxId": "9ea7b05ab099f7ff4db8342b8c3609031f1d54f11205906e7f1fe88661fe3cbe",
      "timeStamp": "2022-12-08T09:01:28.000Z",
      "value": {
        "assetType": "otransaction",
        "transactionId": "otransaction~9ea7b05ab099f7ff4db8342b8c3609031f1d54f11205906e7f1fe88661fe3cbe~33b59ce0c89e96c1e16449f24301581e8e71954f38ad977c7eb6f065e87f2a53",
        "tokenId": "tokenOne",
        "fromAccountId": "oaccount~1422a74d262a3a55a37cd9023ef8836f765d0be7b49d397696b9961d7434d22a",
        "toAccountId": "",
        "transactionType": "BURN",
        "amount": 5,
        "timestamp": "2022-12-08T09:01:28.000Z",
        "triggeredByUserAccountId": "ouaccount~24ffd4d32a028a85b4b960f5d55536c837b5429bc7f346150adfa904ec2937cc"
      }
    }
  ]
}
deleteTransactions
Diese Methode löscht Transaktionen vor einem angegebenen Zeitstempel aus der Statusdatenbank.
Ctx.ERC1155Transaction.deleteTransactions(referenceTime: Date)
Parameter:
  • referenceTime: Date: Alle Transaktionen vor diesem Zeitstempel werden gelöscht.
Beispiel für den Rückgabewert:
{
  "msg": "Successfuly deleted transaction older than date: Thu Apr 07 2022 21:18:59 GMT+0000 (Coordinated Universal Time).",
  "transactions": [
    "otransaction~30513757d8b647fffaafac440d743635f5c1b2e41b25ebd6b70b5bbf78a2643f",
    "otransaction~ac0e908c735297941ba58bb208ee61ff4816a1e54c090d68024f82adf743892b"
  ]
}

Methoden für Token Behavior Management - Mintable Behavior

mintBatch
Diese Methode erstellt (Minuten) mehrere Token in einem Batchvorgang. Diese Methode erstellt nur fungible Token oder fraktionierte nicht fungible Token.

Wenn für fungible Token die Minter-Rolle in der Spezifikationsdatei definiert ist, kann jeder Benutzer mit der Minter-Rolle diese Methode aufrufen. Wenn nicht, kann jeder Benutzer diese Methode verwenden, um Token zu kennzeichnen. Sie können nicht mehr als die Eigenschaft max_mint_quantity des Tokens mint, wenn diese Eigenschaft beim Erstellen oder Aktualisieren des Tokens angegeben wurde.

Wenn bei nicht fungiblen Token die Minter-Rolle in der Spezifikationsdatei definiert ist, kann jeder Benutzer mit der Minter-Rolle diese Methode aufrufen. Wenn nicht, kann jeder Benutzer diese Methode verwenden, um Token zu kennzeichnen. Darüber hinaus muss der Anrufer auch der Ersteller des Tokens sein. Es gibt keine obere Grenze für die Menge der fraktionierten nicht fungiblen Token, die geprägt werden können.

Sie können diese Methode nicht verwenden, um ein ganzes nicht fungibles Token zu prägen.

Ctx.ERC1155Token.mintBatch(accountId: string, tokenIds: string[], quantities: number[])
Parameter:
  • accountId: string: Die Account-ID des Benutzers.
  • tokenIds: string[]: Die Liste der Token-IDs, für die Token verwendet werden sollen.
  • quantity: number[]: Die Liste der Mengen der Token, die neu generiert werden sollen, entsprechend dem Token-ID-Array.
Rückgabewert:
  • Bei Erfolg ein JSON-Objekt, das Details zu den geprägten Token enthält.
Beispiel für den Rückgabewert:
{
    "msg": "Successfully minted batch of tokens for User-Account-Id ouaccount~412de5e3998dcd100973e1bad6e8729fddc1c7ff610beab8376d733a35c51f38 (Org-Id: appdev, User-Id: idcqa).",
    "details": [
        {
            "msg": "Successfully minted 100 tokens of fractional tokenId: plot55 to Org-Id: appdev, User-Id: idcqa"
        },
        {
            "msg": "Successfully minted 100 tokens of tokenId: loyalty to Token-Account-Id oaccount~21206f309941a2a23c4f158a0fe1b8f12bb8e2b0c9a2e1358f5efebc0c7d410e"
        }
    ]
}

Methoden für die Verwaltung des Tokenverhaltens - Übertragbares Verhalten

batchTransferFrom
Mit dieser Methode wird ein Batchvorgang abgeschlossen, bei dem Token, die in einer Liste mit Token-IDs angegeben sind, von einem Benutzer an einen anderen übertragen werden.

Bei NFTs muss der Absender der NFT das Token besitzen, da die Methode das Eigentum an der NFT überträgt.

Bei partiellen NFTs verliert ein Benutzer (einschließlich des Erstellers des Tokens) alle Aktien, die er besitzt, das Eigentum an dem Token. Wenn ein Anteil eines Tokens an einen Benutzer übertragen wird, wird dieser Benutzer automatisch zu einem der Eigentümer der partiellen NFT.

Diese Methode validiert nicht, ob der Aufrufer der Methode der angegebene Absender ist.

Ctx.ERC1155Token.batchTransferFrom(fromUserAccountId: string, toUserAccountId: string, tokenIds: string[], quantities: number[])
Parameter:
  • fromUserAccountId: string: Die Account-ID des Absenders und Tokeneigentümers in der aktuellen Organisation.
  • toUserAccountId: string: Die Konto-ID des Empfängers.
  • tokenIds: string[]: Eine Liste der Token-IDs für die zu übertragenden Token.
  • quantity: number[]: Die Liste der Mengen der zu übertragenden Token, die dem Token-ID-Array entsprechen.
Rückgabewert:
  • Bei Erfolg eine Meldung mit Details für jede Tokenübertragung.
Beispiel für den Rückgabewert:
[
    {
        "msg": "Successfully transferred NFT token: 'FNFT' of '10' quantity from Account-Id: oaccount~e88276a3be547e31b567346bdddde52d37734da4d5fae83ab2e5c98a10097371 (Org-Id: appdev, User-Id: idcqa) to Account-Id: oaccount~dcee860665db8740cb77b846e823752185a1e9a185814d0acb305890f5903446 (Org-Id: appdev, User-Id: user1_minter)"
    },
    {
        "msg": "Successfully transferred 10 FT token: 'FT' from Account-Id: oaccount~21206f309941a2a23c4f158a0fe1b8f12bb8e2b0c9a2e1358f5efebc0c7d410e (Org-Id: appdev, User-Id: idcqa) to Account-Id: oaccount~1089ee5122f367ee0ca38c6660298f4b81f199627e4f67f3691c0f628237974c (Org-Id: appdev, User-Id: user1_minter)"
    },
    {
        "msg": "Successfully transferred NFT token: 'NFT' from Account-Id: oaccount~e88276a3be547e31b567346bdddde52d37734da4d5fae83ab2e5c98a10097371 (Org-Id: appdev, User-Id: idcqa) to Account-Id: oaccount~dcee860665db8740cb77b846e823752185a1e9a185814d0acb305890f5903446 (Org-Id: appdev, User-Id: user1_minter)"
    }
]
safeBatchtransferFrom
Mit dieser Methode wird ein Batchvorgang abgeschlossen, bei dem Token, die in einer Liste mit Token-IDs angegeben sind, von einem Benutzer an einen anderen übertragen werden.

Bei NFTs muss der Absender der NFT das Token besitzen, da die Methode das Eigentum an der NFT überträgt.

Bei partiellen NFTs verliert ein Benutzer (einschließlich des Erstellers des Tokens) alle Aktien, die er besitzt, das Eigentum an dem Token. Wenn ein Anteil eines Tokens an einen Benutzer übertragen wird, wird dieser Benutzer automatisch zu einem der Eigentümer der partiellen NFT.

Der Aufrufer der Methode muss der angegebene Absender sein.

Ctx.ERC1155Token.safeBatchTransferFrom(fromUserAccountId: string, toUserAccountId: string, tokenIds: string[], quantities: number[])
Parameter:
  • fromUserAccountId: string: Die Account-ID des Absenders und Tokeneigentümers in der aktuellen Organisation.
  • toUserAccountId: string: Die Konto-ID des Empfängers.
  • tokenIds: string[]: Eine Liste der Token-IDs für die zu übertragenden Token.
  • quantity: number[]: Die Liste der Mengen der zu übertragenden Token, die dem Token-ID-Array entsprechen.
Rückgabewert:
  • Bei Erfolg eine Meldung mit Details für jede Tokenübertragung.
Beispiel für den Rückgabewert:
[
    {
        "msg": "Successfully transferred NFT token: 'FNFT' of '10' quantity from Account-Id: oaccount~e88276a3be547e31b567346bdddde52d37734da4d5fae83ab2e5c98a10097371 (Org-Id: appdev, User-Id: idcqa) to Account-Id: oaccount~dcee860665db8740cb77b846e823752185a1e9a185814d0acb305890f5903446 (Org-Id: appdev, User-Id: user1_minter)"
    },
    {
        "msg": "Successfully transferred 10 FT token: 'FT' from Account-Id: oaccount~21206f309941a2a23c4f158a0fe1b8f12bb8e2b0c9a2e1358f5efebc0c7d410e (Org-Id: appdev, User-Id: idcqa) to Account-Id: oaccount~1089ee5122f367ee0ca38c6660298f4b81f199627e4f67f3691c0f628237974c (Org-Id: appdev, User-Id: user1_minter)"
    },
    {
        "msg": "Successfully transferred NFT token: 'NFT' from Account-Id: oaccount~e88276a3be547e31b567346bdddde52d37734da4d5fae83ab2e5c98a10097371 (Org-Id: appdev, User-Id: idcqa) to Account-Id: oaccount~dcee860665db8740cb77b846e823752185a1e9a185814d0acb305890f5903446 (Org-Id: appdev, User-Id: user1_minter)"
    }
]
balanceOfBatch
Mit dieser Methode wird ein Batchvorgang abgeschlossen, der den Saldo von Tokenkonten abruft. Die Kontodetails werden in drei separaten Listen mit Organisations-IDs, Benutzer-IDs und Token-IDs angegeben. Diese Methode kann nur von einem Token Admin des Chaincodes oder von Kontoinhabern aufgerufen werden. Kontoinhaber können Saldendetails nur für Konten anzeigen, für die sie verantwortlich sind.
Ctx.ERC1155Account.balanceOfBatch(accountIds: string[], tokenIds: string[])
Parameter:
  • accountIds: string[]: Eine Liste der Benutzeraccount-IDs.
  • tokenIds: string[]: Eine Liste der Token-IDs.
Beispiel für den Rückgabewert:
[
    {
        "orgId": "appdev",
        "userId": "idcqa",
        "userAccountId": "ouaccount~412de5e3998dcd100973e1bad6e8729fddc1c7ff610beab8376d733a35c51f38",
        "tokenAccountId": "oaccount~e88276a3be547e31b567346bdddde52d37734da4d5fae83ab2e5c98a10097371",
        "tokenId": "FNFT",
        "balance": 100
    },
    {
        "orgId": "appdev",
        "userId": "idcqa",
        "userAccountId": "ouaccount~412de5e3998dcd100973e1bad6e8729fddc1c7ff610beab8376d733a35c51f38",
        "tokenAccountId": "oaccount~21206f309941a2a23c4f158a0fe1b8f12bb8e2b0c9a2e1358f5efebc0c7d410e",
        "tokenId": "FT",
        "balance": 50
    },
    {
        "orgId": "appdev",
        "userId": "user1_minter",
        "userAccountId": "ouaccount~9501bb774c156eb8354dfe489250ea91f757523d70f08ee494bda98bb352003b",
        "tokenAccountId": "oaccount~dcee860665db8740cb77b846e823752185a1e9a185814d0acb305890f5903446",
        "tokenId": "FNFT",
        "balance": 10
    }
]
exchangeToken
Diese Methode tauscht Token zwischen angegebenen Konten aus. Diese Methode unterstützt nur den Austausch zwischen einem NFT (Ganz oder Bruch) und einem fungiblen Token oder einem fungiblen Token und einem NFT (Ganz oder Bruch). Diese Methode kann nur vom Kontoinhaber aufgerufen werden.
Ctx.ERC1155Token.exchangeToken( fromTokenId: string, fromUserAccountId: string, fromTokenQuantity: number, toTokenId: string, toUserAccountId: string, toTokenQuantity: number)
Parameter:
  • fromTokenId: string: Die ID des Tokens, dessen Eigentümer der Absender ist.
  • fromUserAccountId: string: Die Konto-ID des Absenders.
  • fromTokenQuantity: number - Die Anzahl der Token vom Absender, die mit dem Empfänger ausgetauscht werden sollen.
  • toTokenId: string: Die ID des Tokens, für das der Empfänger verantwortlich ist.
  • toUserAccountId: string: Die Konto-ID des Empfängers.
  • toTokenQuantity: number - Die Anzahl der Token vom Empfänger, die mit dem Absender ausgetauscht werden sollen.
Rückgabewert:
  • Bei Erfolg eine Nachricht mit Tokenaustauschdetails.
Beispiel für den Rückgabewert:
{
    "msg": "Succesfully exchanged 10 tokens of type nonfungible with tokenId: [r1] from Account oaccount~e88276a3be547e31b567346bdddde52d37734da4d5fae83ab2e5c98a10097371 (OrgId: appdev, UserId: idcqa) to 10 tokens of type fungible with tokenId: [loy1] from Account oaccount~1089ee5122f367ee0ca38c6660298f4b81f199627e4f67f3691c0f628237974c (OrgId: appdev, UserId: user1_minter)"
}

Methoden für die Verwaltung des Tokenverhaltens - Burnable Behavior

burn
Diese Methode deaktiviert oder verbrennt die angegebenen fungiblen und nicht fungiblen Token.
Ctx.ERC1155Token.burn(accountId: string, tokenIds: string[], quantities: number[])
Parameter:
  • accountId: string: Die Account-ID des Benutzers.
  • tokenIds: string[]: Die Liste der zu brennenden Token-IDs.
  • quantity: number[]: Die Liste der Mengen an zu brennenden Token, die dem Token-ID-Array entsprechen.
Rückgabewert:
  • Bei Erfolg eine Meldung mit Details zu den Burn-Vorgängen.
Beispiel für den Rückgabewert:
[
  {
    "msg": "Successfully burned NFT token: 'art' from Account-Id: oaccount~76cb672eeb1bd535899562a840d0c15a356db89e24bc8b43ac1dba845a4282c6 (Org-Id: appdev, User-Id: idcqa)"
  },
  {
    "msg": "Successfully burned 5 tokens of tokenId: tokenOne from Account-ID oaccount~1422a74d262a3a55a37cd9023ef8836f765d0be7b49d397696b9961d7434d22a (Org-Id: appdev, User-Id: idcqa)"
  },
  {
    "msg": "Successfully burned 2 token share of tokenId: FNFT from Account-ID oaccount~87bcb699d507368ee3966cd03ee6d7736ffc55dde8c0f0e16b14866334ac504a (Org-Id: AutoF1377358917, User-Id: idcqa)"
  }
]