ERC-1155のスキャフォールド済TypeScriptトークン・プロジェクト

ブロックチェーン・アプリケーション・ビルダーは、トークン仕様ファイルから入力を受け取り、完全に機能するチェーンコード・プロジェクトを生成します。

プロジェクトは、CRUDおよびCRUD以外のメソッドを含むトークン・ライフサイクル・クラスおよび関数を自動的に生成します。引数の検証、マーシャリング/アンマーシャリングおよび透過的な永続性機能はすべて自動的にサポートされます。

スキャフォールドされたプロジェクトおよびトークンに直接関連しないメソッドの詳細は、「スキャフォールドされたTypeScriptチェーンコード・プロジェクト」を参照してください。

モデル

トークン化されたすべてのモデル・クラスはOchainModelクラスを拡張します。透過的永続性機能(または簡素化されたORM)は、OchainModelクラスで取得されます。次のモデルは、完全で無限トークンを示しています。

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;
  
}
次のモデルは、小数不確定トークンを示しています。
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;
  
}

コントローラ

メイン・コントローラ・クラスは、OchainControllerクラスを拡張します。メインコントローラは1つのみです。

export class DigiCurrCCController extends OchainController{

クラス、関数またはファイルはいくつでも作成できますが、メイン・コントローラ・クラス内で定義されているメソッドのみが呼出し可能です。その他のメソッドは非表示です。

トークンSDKメソッドを使用して、ビジネス・アプリケーションのカスタム・メソッドを記述できます。

自動生成されたトークン・メソッド

ブロックチェーン・アプリケーション・ビルダーは、トークンおよびトークンのライフサイクルをサポートするメソッドを自動的に生成します。これらの方法を使用すると、追加のコーディングなしで、トークンの初期化、ロールとアカウントの管理、その他のトークン・ライフサイクル・タスクの完了を行うことができます。コントローラ・メソッドを起動するには、@Validator(...params)デコレータが必要です。

アクセス制御管理のメソッド

isTokenAdmin
このメソッドは、ファンクションのコール元がToken Adminの場合はブール値trueを戻し、それ以外の場合はfalseを戻します。このメソッドは、チェーンコードのToken Adminによってのみコールできます。
@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);
}
パラメータ:
  • orgId: string - 現在の組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) ID。
  • userId: string - ユーザーのユーザー名または電子メールID。
戻り値:
  • このメソッドは、コール元がToken Adminである場合はtrueを返し、そうでない場合はfalseを返します。
戻り値の例:
{"result": true}
addTokenAdmin
このメソッドは、ユーザーをチェーンコードのToken Adminとして追加します。このメソッドは、チェーンコードのToken Adminによってのみコールできます。
@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);
}
パラメータ:
  • orgId: string - 現在の組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) ID。
  • userId: string - ユーザーのユーザー名または電子メールID。
戻り値:
  • 成功すると、チェーンコードのToken Adminとして追加されたユーザーの詳細を含むメッセージ。
戻り値の例:
{"msg":"Successfully added Admin (OrgId: appDev, UserId: user1)"}
removeTokenAdmin
このメソッドは、チェーンコードのToken Adminとしてユーザーを削除します。このメソッドは、チェーンコードのToken Adminによってのみコールできます。自分をToken Adminとして削除することはできません。
@Validator(yup.string(), yup.string())
public async removeTokenAdmin(orgId: string, userId: string) {
  await this.Ctx.ERC1155Auth.checkAuthorization("ERC1155ADMIN.removeAdmin", "TOKEN");
  return await this.Ctx.ERC1155Admin.removeAdmin(orgId, userId);
}
パラメータ:
  • orgId: string - 現在の組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) ID。
  • userId: string - ユーザーのユーザー名または電子メールID。
戻り値:
  • 成功すると、チェーンコードのToken Adminとして削除されたユーザーの詳細を含むメッセージ。
戻り値の例:
{"msg": "Successfully removed Admin (OrgId: appDev, UserId: user1)"}
getAllTokenAdmins
このメソッドは、チェーンコードのToken Adminであるすべてのユーザーのリストを返します。このメソッドは、チェーンコードのToken Adminによってのみコールできます。
@GetMethod()
@Validator()
public async getAllTokenAdmins() {
  await this.Ctx.ERC1155Auth.checkAuthorization("ERC1155ADMIN.getAllAdmins", "TOKEN");
  return await this.Ctx.ERC1155Admin.getAllAdmins();
}
パラメータ:
  • なし
戻り値:
  • 成功すると、orgIdおよびuserIdオブジェクトを含むJSON形式のadmins配列。
戻り値の例:
{
  "admins": [
    {
      "orgId": "appdev",
      "userId": "user2"
    },
    {
      "orgId": "appdev",
      "userId": "user1"
    }
  ]
}

トークン構成管理のメソッド

init
このメソッドは、チェーンコードがインスタンス化されるときに呼び出されます。すべてのToken Adminは、adminListパラメータのuserIdおよびorgId情報によって識別されます。userIdは、インスタンス所有者またはインスタンスにログインしているユーザーのユーザー名または電子メールIDです。orgIdは、現在のネットワーク組織のユーザーのメンバーシップ・サービス・プロバイダ(MSP) IDです。チェーンコードを初めてデプロイする場合、adminListパラメータは必須です。チェーンコードをアップグレードする場合は、空のリスト([])を渡します。チェーンコードを最初にデプロイしたユーザーは、チェーンコードのアップグレード時にadminListパラメータに新しい管理者を指定することもできます。adminListパラメータ内のその他の情報は、アップグレード時に無視されます。
@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;
}
パラメータ:
  • adminList array - トークン管理者のリストを指定する{orgId, userId}情報の配列。adminList配列は必須パラメータです。
create<Token Name>Token
このメソッドはトークンを作成します。定義されるすべてのトークンには、独自のcreateメソッドがあります。可変トークンの場合、このメソッドはチェーンコードのToken Adminによってのみコールできます。真菌性のないトークンの場合、minter役割が仕様ファイルに定義されていれば、minter役割を持つすべてのユーザーがこのメソッドを呼び出してNFTを作成できます。マイナー・ロールが定義されていない場合、どのユーザーもこのメソッドを使用してNFTを作成できます(最小)。このメソッドを呼び出すユーザーがNFTの所有者になります。
真菌トークン:
@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);
}
真菌性のないトークン:
@Validator(<Token Class>, yup.number())
public async create<Token Name>Token(tokenAsset: <Token Class>, quantity: number) {
  return await this.Ctx.ERC1155Token.save(tokenAsset, quantity);
}
パラメータ:
  • tokenAsset: <Token Class> - トークン・アセット。アセットのプロパティは、モデル・ファイルで定義されます。
  • quantity: number - 真でないトークンのみで、ミントするトークンの数。このパラメータでサポートされる値は、1のみです。
戻り値:
  • 成功すると、トークン・タイプに応じて、次の情報を含むJSON形式のトークン・アセット。
  • tokenMetadata - トークンを説明するJSON情報。
  • createdBy - 呼出し元のアカウントID。トークンをマイニングするユーザーです。このプロパティは編集できません。
  • creationDate - ミント・トランザクションのタイムスタンプ。このプロパティは編集できません。
  • isBurned - このプロパティは、トークンが書き込まれるかどうかを示します。このプロパティは編集できません。
  • tokenName - トークンの名前。このプロパティは編集できません。
  • tokenDesc - トークンの説明。
  • symbol - トークンの記号。このプロパティは編集できません。
  • tokenStandard - トークンの標準。このプロパティは編集できません。
  • tokenType - トークンのタイプ(fungibleまたはnon-fungible)。このプロパティは編集できません。
  • tokenUnit - トークンの単位(全体または小数)。このプロパティは編集できません。
  • behaviors - トークン動作のリスト。このプロパティは編集できません。
  • mintable - ミントに関連するプロパティ。max_mint_quantity値は、トークン・クラスに対して作成できるトークンの最大数を定義します。
  • owner - メソッドのコール元である現在の所有者のアカウントID。
  • tokenUri - トークンのURI。
  • quantity - トークンの量。
戻り値の例(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
}
戻り値の例(Fungible 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"
}
戻り値の例(小数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
このメソッドはトークンを更新します。定義されるすべてのトークンには、独自の更新方法があります。トークン・メタデータまたは非fungibleトークンのトークンURIは更新できません。可変トークンの場合、このメソッドはチェーンコードのToken Adminによってのみコールできます。真でないトークンの場合、このメソッドを呼び出すことができるのはトークンの所有者のみです。
真菌トークン:
@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);
}
真菌性のないトークン:
@Validator(<Token Class>)
public async update<Token Name>Token(tokenAsset: <Token Class>) {
  return await this.Ctx.ERC1155Token.update(tokenAsset);
}
パラメータ:
  • tokenAsset: <Token Class> - トークン・アセット。アセットのプロパティは、モデル・ファイルで定義されます。
戻り値:
  • 成功すると、更新されたトークン・アセットがJSON形式で表示されます。
戻り値の例(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
このメソッドは、指定されたトークンIDの履歴を返します。誰でもこのメソッドを呼び出すことができます。
@GetMethod()
@Validator(yup.string())
public async getTokenHistory(tokenId: string) {
  return await this.Ctx.ERC1155Token.getTokenHistory(tokenId);
}
パラメータ:
  • tokenId: string - トークンのID。
戻り値:
  • 成功すると、トークン履歴を含むJSON配列。
戻り値の例(Fungible 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"
        }
    }
]
戻り値の例(小数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
                }
            ]
        }
    }
]
戻り値の例(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
このメソッドは、状態データベースに保存されているすべてのトークン・アセットを返します。このメソッドは、チェーンコードのToken Adminによってのみコールできます。この方法では、Berkeley DB SQLリッチ問合せが使用され、リモートのOracle Blockchain Platformネットワークに接続されている場合にのみコールできます。
@GetMethod()
@Validator(yup.string())
public async getTokenHistory(tokenId: string) {
  return await this.Ctx.ERC1155Token.getTokenHistory(tokenId);
}
パラメータ:
  • なし
戻り値:
  • JSON形式のすべてのトークン・アセットのリスト。
戻り値の例:
[
  {
    "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
このメソッドは、トークンが状態データベースに存在する場合、トークン・オブジェクトを返します。小数NFTの場合、所有者のリストも返されます。このメソッドは、チェーンコードのToken Adminまたはトークン所有者によってのみコールできます。
@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);
}
パラメータ:
  • tokenId: string - 取得するトークンのID。
戻り値の例(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"
}
戻り値の例(Fungible 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"
}
戻り値の例(小数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
このメソッドは、指定されたユーザーが所有するすべてのトークン・アセットを返します。この方法では、Berkeley DB SQLリッチ問合せが使用され、リモートのOracle Blockchain Platformネットワークに接続されている場合にのみコールできます。このメソッドは、チェーンコードのToken Adminまたはアカウント所有者によってのみコールできます。
@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);
}
パラメータ:
  • orgId: string - 現在の組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) ID。
  • userId: string - ユーザーのユーザー名または電子メールID。
戻り値の例:
[
  {
    "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
このメソッドは、指定されたトークンIDの所有者のアカウントID、組織IDおよびユーザーIDを返します。誰でもこのメソッドを呼び出すことができます。
@GetMethod()
@Validator(yup.string())
public async ownerOf(tokenId: string) {
  return await this.Ctx.ERC1155Token.ownerOf(tokenId);
}
パラメータ:
  • tokenId: string - トークンのID。
戻り値の例(NFT全体):
{
    "accountId": "oaccount~76cb672eeb1bd535899562a840d0c15a356db89e24bc8b43ac1dba845a4282c6",
    "orgId": "appdev",
    "userId": "idcqa"
}
戻り値の例(小数NFT):
[
    {
        "accountId": "oaccount~42e89f4c72dfde9502814876423c6da630d466e87436dd1aae201d347ad1288d",
        "orgId": "Org1MSP",
        "userId": "admin"
    },
    {
        "accountId": "oaccount~74108eca702bab6d8548e740254f2cc7955d886885251d52d065042172a59db0",
        "orgId": "Org1MSP",
        "userId": "user"
    }
]
URI
このメソッドは、指定されたトークンのURIを返します。誰でもこのメソッドを呼び出すことができます。
@GetMethod()
@Validator(yup.string())
public async URI(tokenId: string) {
  return await this.Ctx.ERC1155Token.tokenURI(tokenId);
}
パラメータ:
  • tokenId: string - トークンのID。
戻り値の例:
{
    "tokenUri": "example.com"
}
name
このメソッドは、トークン・クラスの名前を返します。誰でもこのメソッドを呼び出すことができます。
@GetMethod()
@Validator(yup.string())
public async name(tokenId: string) {
  return await this.Ctx.ERC1155Token.name(tokenId);
}
パラメータ:
  • tokenId: string - トークンのID。
戻り値の例:
{"tokenName": "artcollection"}
totalSupply
このメソッドは、ミント・トークンの合計数を返します。FungibleトークンはトークンIDで指定されます。トークン名によって、不確定トークンが指定されます。このメソッドは、チェーンコードのToken Adminによってのみコールできます。
@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);
}
パラメータ:
  • tokenDetails: TokenDetail - トークンを指定する詳細。可変トークンの場合、次の形式を使用します。
    {"tokenId":"token1"}
    真でないトークンの場合、次の形式を使用します。
    {"tokenName":"artCollection"}
戻り値の例:
{"totalSupply": 110}
totalNetSupply
このメソッドは、ミント・トークンの合計数からバーン・トークンの数を差し引いた数を返します。FungibleトークンはトークンIDで指定されます。トークン名によって、不確定トークンが指定されます。このメソッドは、チェーンコードのToken Adminによってのみコールできます。
@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);
}
パラメータ:
  • tokenDetails: TokenDetail - トークンを指定する詳細。可変トークンの場合、次の形式を使用します。
    {"tokenId":"token1"}
    真でないトークンの場合、次の形式を使用します。
    {"tokenName":"artCollection"}
戻り値の例:
{"totalNetSupply": 105}
getTokensByName
このメソッドは、指定されたトークン名のすべてのトークン・アセットを返します。この方法では、Berkeley DB SQLリッチ問合せが使用され、リモートのOracle Blockchain Platformネットワークに接続されている場合にのみコールできます。このメソッドは、チェーンコードのToken Adminによってのみコールできます。
@GetMethod()
@Validator(yup.string())
public async getTokensByName(tokenName: string) {
  await this.Ctx.ERC1155Auth.checkAuthorization("ERC1155TOKEN.getTokensByName", "TOKEN");
  return await this.Ctx.ERC1155Token.getTokensByName(tokenName);
}
パラメータ:
  • tokenName: string - トークンの名前。
戻り値の例:
[
  {
    "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
このメソッドは、指定されたトークンの小数点以下の桁数を返します。このメソッドは、チェーンコードのToken Adminによってのみコールできます。
@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.`,
  };
}
パラメータ:
  • tokenId: string - トークンのID。
戻り値の例:
{
    "msg": "Token Id: tokenOne has 2 decimal places."
}

アカウント管理の方法

createAccount
このメソッドは、指定されたユーザーのアカウントと、真菌トークンまたは非真菌トークンの関連トークン・アカウントを作成します。アカウントは、任意の時点でトークンを持つすべてのユーザーに対して作成する必要があります。ユーザー・アカウントは、NFTアカウントおよびユーザーが保持する実行可能なトークン・アカウントを追跡します。ユーザーは、トークン関連の操作を完了するためにネットワーク内にアカウントを持っている必要があります。このメソッドは、チェーンコードのToken Adminによってのみコールできます。

ユーザー・アカウントには、orgIdパラメータとuserIdパラメータのSHA-256ハッシュによって形成される一意のIDがあります。

ユーザーは、一意のアカウントIDを持つ複数の実行可能なトークン・アカウントを持つことができます。Fungibleトークン・アカウントIDは、orgIdパラメータのSHA-256ハッシュ、userIdパラメータ、チルド記号で区切られた定数文字列ft(~)、およびチルダ記号(~)で区切られた作成されているfungibleアカウントの索引を示すカウンタ番号によって形成されます。

ユーザーは、fungible以外のトークン・アカウントを1つのみ持つことができます。真菌性のないトークン・アカウントIDは一意であり、orgIdパラメータのSHA-256ハッシュ、userIdパラメータおよびチルダ記号(~)で区切られた定数文字列nftによって形成されます。ユーザーが所有するすべての非真菌性トークンは、全体または小数に関係なく、このアカウントにリンクされます。

ユーザー・アカウントIDは、ouaccount~で始まります。トークン・アカウントIDは、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);
}
パラメータ:
  • orgId: string - 現在の組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) ID。
  • userId: string - ユーザーのユーザー名または電子メールID。
  • ftAccount: boolean - trueの場合、実行可能なトークン・アカウントが作成され、ユーザー・アカウントに関連付けられます。
  • nftAccount: boolean - trueの場合、真でないトークン・アカウントが作成され、ユーザー・アカウントに関連付けられます。
戻り値:
  • 成功すると、作成されたアカウントのJSONオブジェクト。
戻り値の例:
{
  "assetType": "ouaccount",
  "accountId": "ouaccount~cf20877546f52687f387e7c91d88b9722c97e1a456cc0484f40c747f7804feae",
  "userId": "user1",
  "orgId": "appdev",
  "totalAccounts": 2,
  "totalFtAccounts": 1,
  "associatedFtAccounts": [
    {
      "accountId": "oaccount~60bb20c14a83f6e426e1437c479c5891e1c6477dfd7ad18b73acac5d80bc504b",
      "tokenId": ""
    }
  ],
  "associatedNftAccount": "oaccount~73c3e835dac6d0a56ca9d8def08269f83cefd59b9d297fe2cdc5a9083828fa58"
}
createUserAccount
このメソッドは、指定されたユーザーのアカウントを作成します。アカウントは、任意の時点でトークンを持つすべてのユーザーに対して作成する必要があります。ユーザー・アカウントは、NFTアカウントおよびユーザーが所有する実行可能なトークン・アカウントを追跡します。ユーザーは、トークン関連の操作を完了するためにネットワーク内にアカウントを持っている必要があります。

アカウントIDは、orgIdパラメータおよびuserIdパラメータのSHA-256ハッシュです。このメソッドは、チェーンコードのToken Adminによってのみコールできます。

@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);
  }
パラメータ:
  • orgId: string - 現在の組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) ID。
  • userId: string - ユーザーのユーザー名または電子メールID。
戻り値:
  • 成功すると、作成されたユーザー・アカウントのJSONオブジェクト。
戻り値の例:
{
  "assetType": "ouaccount",
  "accountId": "ouaccount~24ffd4d32a028a85b4b960f5d55536c837b5429bc7f346150adfa904ec2937cc",
  "userId": "user2",
  "orgId": "appdev",
  "totalAccounts": 0,
  "totalFtAccounts": 0,
  "associatedFtAccounts": [],
  "associatedNftAccount": ""
}
createTokenAccount
このメソッドは、ユーザー・アカウントに関連付ける、真菌トークン・アカウントまたは非真菌トークン・アカウントを作成します。

ユーザーは、一意のアカウントIDを持つ複数の実行可能なトークン・アカウントを持つことができます。Fungibleトークン・アカウントIDは、orgIdパラメータのSHA-256ハッシュ、userIdパラメータ、チルド記号で区切られた定数文字列ft(~)、およびチルダ記号(~)で区切られた作成されているfungibleアカウントの索引を示すカウンタ番号によって形成されます。

ユーザーは、fungible以外のトークン・アカウントを1つのみ持つことができます。真菌性のないトークン・アカウントIDは一意であり、orgIdパラメータのSHA-256ハッシュ、userIdパラメータおよびチルダ記号(~)で区切られた定数文字列nftによって形成されます。ユーザーが所有するすべての非真菌性トークンは、全体または小数に関係なく、このアカウントにリンクされます。

このメソッドは、チェーンコードのToken Adminによってのみコールできます。

@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);
  }
パラメータ:
  • orgId: string - 現在の組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) ID。
  • userId: string - ユーザーのユーザー名または電子メールID。
  • tokenType: TokenType - 作成するトークン・アカウントのタイプ。サポートされているトークン・タイプは、nonfungibleおよびfungibleのみです。
戻り値:
  • 成功すると、作成されたトークン・アカウントのJSONオブジェクト。
戻り値の例:
{
  "assetType": "ouaccount",
  "accountId": "ouaccount~24ffd4d32a028a85b4b960f5d55536c837b5429bc7f346150adfa904ec2937cc",
  "userId": "user2",
  "orgId": "appdev",
  "totalAccounts": 1,
  "totalFtAccounts": 1,
  "associatedFtAccounts": [
    {
      "accountId": "oaccount~1422a74d262a3a55a37cd9023ef8836f765d0be7b49d397696b9961d7434d22a",
      "tokenId": ""
    }
  ],
  "associatedNftAccount": ""
}
associateFungibleTokenAccount
このメソッドは、ユーザーのfungibleトークン・アカウントを特定のfungibleトークンに関連付けます。

このメソッドは、チェーンコードのToken Adminによってのみコールできます。

@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);
}
パラメータ:
  • orgId: string - 現在の組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) ID。
  • userId: string - ユーザーのユーザー名または電子メールID。
  • tokenId: string - トークンのID。
戻り値:
  • 成功すると、ユーザー・アカウントのJSONオブジェクトが、トークン・アカウントに関連付けられていることが示されます。たとえば、次の例で、associatedFtAccounts配列の最初のオブジェクトは、使用可能なトークン・アカウントIDとトークンIDが関連付けられていることを示しています。
戻り値の例:
{
  "assetType": "ouaccount",
  "accountId": "ouaccount~24ffd4d32a028a85b4b960f5d55536c837b5429bc7f346150adfa904ec2937cc",
  "userId": "user2",
  "orgId": "appdev",
  "totalAccounts": 1,
  "totalFtAccounts": 1,
  "associatedFtAccounts": [
    {
      "accountId": "oaccount~1422a74d262a3a55a37cd9023ef8836f765d0be7b49d397696b9961d7434d22a",
      "tokenId": "tokenOne"
    }
  ],
  "associatedNftAccount": ""
}
getAccountHistory
このメソッドは、指定されたトークン・アカウントの履歴を返します。これは非同期メソッドです。このメソッドは、チェーンコードのToken Adminまたはアカウント所有者によってのみコールできます。
@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);
}
パラメータ:
  • orgId: string - 現在の組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) ID。
  • userId: string - ユーザーのユーザー名または電子メールID。
  • tokenId?: string - 真でないトークン・アカウントの場合、空の文字列。楽しいトークン・アカウントの場合は、トークンID。
戻り値:
  • 成功すると、アカウント履歴を記述するJSONオブジェクトの配列。
戻り値の例:
[
  {
    "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
このメソッドは、指定されたユーザーのトークン・アカウント詳細を返します。このメソッドは、チェーンコードのToken AdminまたはアカウントのAccount Ownerによってのみコールできます。
@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);
}
パラメータ:
  • orgId: string - 現在の組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) ID。
  • userId: string - ユーザーのユーザー名または電子メールID。
  • tokenId?: string - 真でないトークン・アカウントの場合、空の文字列。楽しいトークン・アカウントの場合は、トークンID。
戻り値:
  • 成功すると、トークン・アカウントの詳細を含むJSONオブジェクト。bapAccountVersionパラメータは、内部使用のためにアカウント・オブジェクトで定義されます。
戻り値の例(Fungibleトークン・アカウント以外):
{
  "assetType": "oaccount",
  "bapAccountVersion": 1,
  "status": "active",
  "accountId": "oaccount~cc301bee057f14236a97d434909ec1084970921b008f6baab09c2a0f5f419a9a",
  "userId": "idcqa",
  "orgId": "appdev",
  "tokenType": "nonfungible",
  "noOfNfts": 1
}
戻り値の例(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
このメソッドは、すべてのユーザー・アカウントの詳細を返します。このメソッドは、チェーンコードのToken Adminによってのみコールできます。
@GetMethod()
@Validator()
public async getAllAccounts() {
  await this.Ctx.ERC1155Auth.checkAuthorization("ERC1155ACCOUNT.getAllAccounts", "TOKEN");
  return await this.Ctx.ERC1155Account.getAllAccounts();
}
パラメータ:
  • なし
戻り値:
  • 成功すると、すべてのアカウントのJSON配列になります。
戻り値の例:
[
        {
            "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
このメソッドは、指定されたユーザーのアカウント・サマリーと、そのユーザーに関連付けられているfungibleトークンおよびnon-fungibleトークンの詳細を返します。このメソッドは、チェーンコードのToken AdminまたはアカウントのAccount Ownerによってのみコールできます。
@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);
}
パラメータ:
  • orgId: string - 現在の組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) ID。
  • userId: string - ユーザーのユーザー名または電子メールID。
戻り値:
  • 成功すると、指定したユーザーのアカウント・サマリーと、そのユーザーに関連付けられた実行可能トークンおよび非永続トークンの詳細を含むJSONアカウント・オブジェクト。小数化不可トークンの場合、associatedNFTsセクションのtokenShareプロパティには、ユーザーが所有する共有が表示されます。
戻り値の例:
{
    "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
このメソッドは、指定されたアカウントIDのユーザー詳細を返します。このメソッドは、どのユーザーでもコールできます。
@GetMethod()
@Validator(yup.string())
public async getUserByAccountId(accountId: string) {
  return await this.Ctx.ERC1155Account.getUserByAccountId(accountId);
}
パラメータ:
  • accountId: string - アカウントのID。
戻り値:
  • 成功すると、ユーザー詳細のJSONオブジェクト(orgIdおよびuserId)。
戻り値の例:
{
  "orgId": "appdev"
  "userId": "user2",
}

ロール管理の方法

addRole
このメソッドは、指定されたユーザーおよびトークンにロールを追加します。このメソッドは、チェーンコードのToken Adminによってのみコールできます。FungibleトークンはトークンIDで指定されます。トークン名によって、不確定トークンが指定されます。指定したユーザーには、真菌トークンに関連付けられているトークン・アカウント、またはNFTロールの非真菌トークン・アカウントが必要です。指定された役割は、トークンの仕様ファイル内に存在する必要があります。
@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);
}
パラメータ:
  • orgId: string - 現在の組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) ID。
  • userId: string - ユーザーのユーザー名または電子メールID。
  • role: string - 指定したユーザーを追加するロールの名前。
  • tokenDetails: TokenDetail - トークンを指定する詳細。可変トークンの場合、次の形式を使用します。
    {"tokenId":"token1"}
    真でないトークンの場合、次の形式を使用します。
    {"tokenName":"artCollection"}
戻り値:
  • 成功すると、アカウントの詳細を含むメッセージが表示されます。
戻り値の例:
{
  "msg": "Successfully added role 'minter' to Account Id: oaccount~1422a74d262a3a55a37cd9023ef8836f765d0be7b49d397696b9961d7434d22a (Org-Id: appdev, User-Id: idcqa)"
}
isInRole
このメソッドは、ユーザーに指定されたロールがあるかどうかを示すブール値を返します。FungibleトークンはトークンIDで指定されます。トークン名によって、不確定トークンが指定されます。このメソッドは、チェーンコードのToken AdminまたはアカウントのAccount Ownerによってのみコールできます。指定したユーザーには、真菌トークンに関連付けられているトークン・アカウント、またはNFTロールの非真菌トークン・アカウントが必要です。指定された役割は、トークンの仕様ファイル内に存在する必要があります。
@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);
}
パラメータ:
  • orgId: string - 現在の組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) ID。
  • userId: string - ユーザーのユーザー名または電子メールID。
  • role: string - 検索するロールの名前。
  • tokenDetails: TokenDetail - トークンを指定する詳細。可変トークンの場合、次の形式を使用します。
    {"tokenId":"token1"}
    真でないトークンの場合、次の形式を使用します。
    {"tokenName":"artCollection"}
戻り値の例:
{
    "result": true,
    "msg": "Account Id oaccount~1422a74d262a3a55a37cd9023ef8836f765d0be7b49d397696b9961d7434d22a (Org-Id: appdev, User-Id: idcqa) has minter role"
}
removeRole
このメソッドは、指定されたユーザーおよびトークンからロールを削除します。FungibleトークンはトークンIDで指定されます。トークン名によって、不確定トークンが指定されます。このメソッドは、チェーンコードのToken Adminによってのみコールできます。指定したユーザーには、真菌トークンに関連付けられているトークン・アカウント、またはNFTロールの非真菌トークン・アカウントが必要です。指定された役割は、トークンの仕様ファイル内に存在する必要があります。
@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);
}
パラメータ:
  • orgId: string - 現在の組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) ID。
  • userId: string - ユーザーのユーザー名または電子メールID。
  • role: string - 指定したユーザーから削除するロールの名前。
  • tokenDetails: TokenDetail - トークンを指定する詳細。可変トークンの場合、次の形式を使用します。
    {"tokenId":"token1"}
    真でないトークンの場合、次の形式を使用します。
    {"tokenName":"artCollection"}
戻り値の例:
{
  "msg": "Successfully removed role 'minter' from Account Id: oaccount~60bb20c14a83f6e426e1437c479c5891e1c6477dfd7ad18b73acac5d80bc504b (Org-Id: appdev, User-Id: user1)"
}
getAccountsByRole
このメソッドは、指定されたロールおよびトークンのすべてのアカウントIDのリストを返します。FungibleトークンはトークンIDで指定されます。トークン名によって、不確定トークンが指定されます。このメソッドは、チェーンコードのToken Adminによってのみコールできます。
@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);
}
パラメータ:
  • role: string - 検索するロールの名前。
  • tokenDetails: TokenDetail - トークンを指定する詳細。可変トークンの場合、次の形式を使用します。
    {"tokenId":"token1"}
    真でないトークンの場合、次の形式を使用します。
    {"tokenName":"artCollection"}
戻り値の例:
{
  "accounts": [
    "oaccount~1422a74d262a3a55a37cd9023ef8836f765d0be7b49d397696b9961d7434d22a",
    "oaccount~60bb20c14a83f6e426e1437c479c5891e1c6477dfd7ad18b73acac5d80bc504b"
  ]
}
getUsersByRole
このメソッドは、指定されたロールおよびトークンのすべてのユーザーのリストを返します。FungibleトークンはトークンIDで指定されます。トークン名によって、不確定トークンが指定されます。このメソッドは、チェーンコードのToken Adminによってのみコールできます。
@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);
}
パラメータ:
  • role: string - 検索するロールの名前。
  • tokenDetails: TokenDetail - トークンを指定する詳細。可変トークンの場合、次の形式を使用します。
    {"tokenId":"token1"}
    真でないトークンの場合、次の形式を使用します。
    {"tokenName":"artCollection"}
戻り値の例:
{
    "users": [
        {
            "accountId": "oaccount~1422a74d262a3a55a37cd9023ef8836f765d0be7b49d397696b9961d7434d22a",
            "orgId": "appdev",
            "userId": "user2"
        },
        {
            "accountId": "oaccount~60bb20c14a83f6e426e1437c479c5891e1c6477dfd7ad18b73acac5d80bc504b",
            "orgId": "appdev",
            "userId": "user1"
        }
    ]
}

トランザクション履歴管理の方法

getAccountTransactionHistory
このメソッドは、勘定科目トランザクション履歴を返します。このメソッドは、チェーンコードのToken Adminまたはアカウント所有者によってのみコールできます。真菌性のないトークンの場合、このメソッドはリモートのOracle Blockchain Platformネットワークに接続されている場合にのみコールできます。
@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);
}
パラメータ:
  • orgId: string - 現在の組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) ID。
  • userId: string - ユーザーのユーザー名または電子メールID。
  • tokenId?: string - 真でないトークン・アカウントの場合、空の文字列。楽しいトークン・アカウントの場合は、トークンID。
戻り値の例:
[
    {
        "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
このメソッドは、指定されたトランザクションIDのトランザクション詳細を返します。誰でもこのメソッドを呼び出すことができます。
@GetMethod()
@Validator(yup.string())
public async getTransactionById(transactionId: string) {
  return await this.Ctx.ERC1155Transaction.getTransactionById(transactionId);
}
パラメータ:
  • transactionId: string - トランザクションのID。
戻り値の例:
{
  "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
このメソッドは、指定したタイムスタンプより前のトランザクションを状態データベースから削除します。このメソッドは、チェーンコードのToken Adminによってのみコールできます。
@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);
}
パラメータ:
  • timestamp: string - このタイムスタンプより前のすべてのトランザクションが削除されます。
戻り値の例:
{
  "msg": "Successfuly deleted transaction older than date: Thu Apr 07 2022 21:18:59 GMT+0000 (Coordinated Universal Time).",
  "transactions": [
    "otransaction~30513757d8b647fffaafac440d743635f5c1b2e41b25ebd6b70b5bbf78a2643f",
    "otransaction~ac0e908c735297941ba58bb208ee61ff4816a1e54c090d68024f82adf743892b"
  ]
}

トークン動作管理のメソッド- 最小化可能な動作

mintBatch
このメソッドは、バッチ操作で複数のトークンを作成します(分)。このメソッドは、関数型トークンまたは小数型非関数型トークンのみを作成します。

可変トークンの場合、minterロールが仕様ファイルで定義されている場合、minterロールを持つすべてのユーザーがこのメソッドを呼び出すことができます。そうでない場合は、どのユーザーもこのメソッドを使用してトークンをミントできます。トークンの作成または更新時にそのプロパティが指定されている場合、トークンのmax_mint_quantityプロパティを超えるミントはできません。

真菌性のないトークンの場合、minter役割が仕様ファイルに定義されていれば、minter役割を持つすべてのユーザーがこのメソッドを呼び出すことができます。そうでない場合は、どのユーザーもこのメソッドを使用してトークンをミントできます。また、呼出し側もトークンの作成者である必要があります。ミント可能な小数非真菌トークンの量に上限はありません。

このメソッドを使用して、真でないトークン全体をミントすることはできません。

@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);
}
パラメータ:
  • orgId: string - 現在の組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) ID。
  • userId: string - ユーザーのユーザー名または電子メールID。
  • tokenIds: string[] - ミント・トークンに対するトークンIDのリスト。
  • quantity: number[] - トークンID配列に対応する、ミントするトークンの量のリスト。
戻り値:
  • 成功すると、ミント・トークンの詳細を含むJSONオブジェクト。
戻り値の例:
{
    "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"
        }
    ]
}

トークン動作管理のメソッド- 転送可能な動作

batchTransferFrom
このメソッドは、トークンIDのリストで指定されたトークンをあるユーザーから別のユーザーに転送するバッチ操作を完了します。

NFTの場合、メソッドによってNFTの所有権が移動されるため、NFTの送信者はトークンを所有する必要があります。

小数NFTの場合、ユーザー(トークンの作成者を含む)が所有するすべての共有を転送すると、トークンの所有権が失われます。トークンのシェアがユーザーに転送されると、そのユーザーは自動的に小数NFTの所有者の1人になります。

このメソッドは、メソッドのコール元が指定された送信者であることを検証しません。このメソッドは、どのユーザーでもコールできます。

@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);
}
パラメータ:
  • fromOrgId: string - 現在の組織のセンダーおよびトークン所有者のメンバーシップ・サービス・プロバイダ(MSP) ID。
  • fromUserId: string - 送信者およびトークンの所有者のユーザー名または電子メールID。
  • toOrgId: string - 現在の組織の受信者のメンバーシップ・サービス・プロバイダ(MSP) ID。
  • toUserId: string - 受信者のユーザー名または電子メールID。
  • tokenIds: string[] - 転送するトークンのトークンIDのリスト。
  • quantity: number[] - トークンID配列に対応する、転送するトークンの量のリスト。
戻り値:
  • 成功すると、各トークン転送の詳細を含むメッセージが表示されます。
戻り値の例:
[
    {
        "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
このメソッドは、トークンIDのリストで指定されたトークンをあるユーザーから別のユーザーに転送するバッチ操作を完了します。

NFTの場合、メソッドによってNFTの所有権が移動されるため、NFTの送信者はトークンを所有する必要があります。

小数NFTの場合、ユーザー(トークンの作成者を含む)が所有するすべての共有を転送すると、トークンの所有権が失われます。トークンのシェアがユーザーに転送されると、そのユーザーは自動的に小数NFTの所有者の1人になります。

メソッドのコール元は、指定された送信者である必要があります。このメソッドは、どのユーザーでもコールできます。

@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);
}
パラメータ:
  • fromOrgId: string - 現在の組織のセンダーおよびトークン所有者のメンバーシップ・サービス・プロバイダ(MSP) ID。
  • fromUserId: string - 送信者およびトークンの所有者のユーザー名または電子メールID。
  • toOrgId: string - 現在の組織の受信者のメンバーシップ・サービス・プロバイダ(MSP) ID。
  • toUserId: string - 受信者のユーザー名または電子メールID。
  • tokenIds: string[] - 転送するトークンのトークンIDのリスト。
  • quantity: number[] - トークンID配列に対応する、転送するトークンの量のリスト。
戻り値:
  • 成功すると、各トークン転送の詳細を含むメッセージが表示されます。
戻り値の例:
[
    {
        "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
このメソッドは、トークン・アカウントの残高を取得するバッチ操作を完了します。アカウント詳細は、組織ID、ユーザーIDおよびトークンIDの3つの異なるリストで指定されます。このメソッドは、チェーンコードのToken Adminまたはアカウント所有者によってのみコールできます。アカウント所有者は、所有しているアカウントの残高詳細のみを表示できます。
@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);
}
パラメータ:
  • orgIds: string[] - 現在の組織のメンバーシップ・サービス・プロバイダ(MSP) IDのリスト。
  • userIds: string[] - ユーザー名または電子メールIDのリスト。
  • tokenIds: string[] - トークンIDのリスト。
戻り値の例:

次の例では、トークンID FNFTは小数非fungibleトークンを表し、トークンID FTはfungibleトークンを表します。

[
    {
        "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
このメソッドは、指定されたアカウント間でトークンを交換します。この方法では、NFTとFungibleトークンまたはFungibleトークンとNFT間の交換のみがサポートされます。NFTは全体でも小数でもかまいません。このメソッドは、アカウント所有者のみがコールできます。
@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
    );
  }
パラメータ:
  • fromTokenId: string - 送信者が所有するトークンのID。
  • fromOrgId: string - 現在の組織内の送信者のメンバーシップ・サービス・プロバイダ(MSP) ID。
  • fromUserId: string - 送信者のユーザー名または電子メールID。
  • fromTokenQuantity: number - 受信者と交換する送信者からのトークンの量。
  • toTokenId: string - 受信者が所有するトークンのID。
  • toOrgId: string - 現在の組織の受信者のメンバーシップ・サービス・プロバイダ(MSP) ID。
  • toUserId: string - 受信者のユーザー名または電子メールID。
  • toTokenQuantity: number - 送信者と交換する受信者からのトークンの量。
戻り値:
  • 成功すると、トークン交換の詳細を含むメッセージが表示されます。
戻り値の例:
{
    "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)"
}

トークン動作管理のメソッド- バーナブル動作

burnBatch
このメソッドは、指定されたfungibleトークンとnon-fungibleトークンを非アクティブ化または書き込みます。バーナ・ロールを持つすべてのユーザーがこのメソッドをコールできます。
@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);
}
パラメータ:
  • orgId: string - 現在の組織のメンバーシップ・サービス・プロバイダ(MSP) ID。
  • userId: string - ユーザー名または電子メールID。
  • tokenIds: string[] - 書き込むトークンIDのリスト
  • quantity: number[] - トークンID配列に対応する、書き込むトークンの量のリスト。
戻り値:
  • 成功すると、書き込み操作の詳細を示すメッセージが表示されます。
戻り値の例:
[
  {
    "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
このメソッドは、指定された非fungibleトークンを非アクティブ化または書き込み、トークン・オブジェクトおよびトークン履歴を返します。バーナ・ロールを持つすべてのユーザーがこのメソッドをコールできます。
@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)};
}
パラメータ:
  • orgId: string - 現在の組織のメンバーシップ・サービス・プロバイダ(MSP) ID。
  • userId: string - ユーザー名または電子メールID。
  • tokenId: string - 書き込む非fungibleトークンのID
戻り値:
  • 成功すると、トークン履歴情報を含むJSON形式のトークン・オブジェクト。
戻り値の例:
{
    "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メソッド

アクセス制御管理のメソッド

checkAuthorization
このメソッドは、アクセス制御チェックを操作に追加するために使用します。これは非同期関数です。特定のトークン・メソッドは、トークンのToken AdminまたはAccountOwner、または複数のアカウントを持つユーザーのMultipleAccountOwnerによってのみ実行できます。アクセス制御マッピングについては、../lib/constant.tsファイルを参照してください。アクセス制御は、../lib/constant.tsファイルを編集して変更できます。独自のアクセス制御を使用するか、アクセス制御を無効にするには、自動的に生成されたコントローラメソッドおよびカスタムメソッドからアクセス制御コードを削除します。
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)
パラメータ:
  • classFuncName: string - ../lib/constant.tsファイルに記述されているクラスとメソッド間のマップ値。
  • ...args - args[0]が定数'TOKEN'を取得し、args[1]account_idを取り、AccountOwnerのアクセス制御チェックを追加します。MultipleAccountOwnerのアクセス制御チェックを追加するには、args[1]org_idを取得し、args[2]user_idを取得します。
戻り値:
  • 成功したら、約束。エラーの場合、エラー・メッセージを含む拒否。
isUserTokenAdmin
このメソッドは、指定されたユーザーがToken Adminの場合はブール値trueを返し、それ以外の場合はfalseを返します。このメソッドは、トークン・チェーンコードのToken Adminによってのみコールできます。
Ctx.ERC1155Auth.isUserTokenAdmin(orgId: string, userId: string)
パラメータ:
  • orgId: string - 現在の組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) ID。
  • userId: string - ユーザーのユーザー名または電子メールID。
戻り値の例:
{
  "result": true
}
addAdmin
このメソッドは、トークン・チェーンコードのToken Adminとしてユーザーを追加します。このメソッドは、トークン・チェーンコードのToken Adminによってのみコールできます。
Ctx.ERC1155Admin.addAdmin(orgId: string, userId: string)
パラメータ:
  • orgId: string - 現在の組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) ID。
  • userId: string - ユーザーのユーザー名または電子メールID。
戻り値:
  • 成功すると、トークン・チェーンコードのToken Adminとして追加されたユーザーの詳細をリストするメッセージが表示されます。
戻り値の例:
{
  "msg": "Successfully added Admin (OrgId: appDev, UserId: user1)"
}
removeAdmin
このメソッドは、トークン・チェーンコードのToken Adminとしてユーザーを削除します。このメソッドは、トークン・チェーンコードのToken Adminによってのみコールできます。自分をToken Adminとして削除することはできません。
Ctx.ERC1155Admin.removeAdmin(orgId: string, userId: string)
パラメータ:
  • orgId: string - 現在の組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) ID。
  • userId: string - ユーザーのユーザー名または電子メールID。
戻り値:
  • 成功すると、トークン・チェーンコードのToken Adminとして削除されたユーザーの詳細をリストするメッセージが表示されます。
戻り値の例:
{
  "msg": "Successfully removed Admin (OrgId: appDev, UserId: user1)"
}
getAllAdmins
このメソッドは、すべてのToken Adminユーザーのリストを返します。
Ctx.ERC1155Admin.getAllAdmins()
パラメータ:
  • なし
戻り値:
  • 成功すると、組織IDおよびユーザーIDで識別されるすべてのToken Adminユーザーのリストが表示されます。
戻り値の例:
{
  "admins": [
    {
      "orgId": "appdev",
      "userId": "idcqa"
    },
    {
      "orgId": "appdev",
      "userId": "user1"
    }
  ]
}

トークン構成管理のメソッド

save
このメソッドはトークンを作成します。定義されるすべてのトークンには、独自のcreateメソッドがあります。真菌性のないトークンの場合、minterロールが仕様ファイルで定義されている場合、minterロールを持つすべてのユーザーがこのメソッドをコールしてNFTを作成できます。そうでない場合は、どのユーザーもこのメソッドを使用してNFTを作成できます(最小)。このメソッドを呼び出すユーザーは、NFTの所有者になります(全体または小数)。
Ctx.ERC1155Token.save(tokenAsset: <Token Class>, quantity?: number);
パラメータ:
  • tokenAsset: <Token Class> - トークン・アセット。アセットのプロパティは、モデル・ファイルで定義されます。
  • quantity: number - 真でないトークンのみで、ミントするトークンの数。このパラメータでサポートされる値は、1のみです。
戻り値:
  • 成功すると、次の情報を含むJSON形式のトークン・アセット。
  • tokenMetadata - トークンを説明するJSON情報。
  • createdBy - 呼出し元のアカウントID。トークンをマイニングするユーザーです。このプロパティは編集できません。
  • creationDate - ミント・トランザクションのタイムスタンプ。このプロパティは編集できません。
  • isBurned - このプロパティは、トークンが書き込まれるかどうかを示します。このプロパティは編集できません。
  • tokenName - トークンの名前。このプロパティは編集できません。
  • tokenDesc - トークンの説明。
  • symbol - トークンの記号。このプロパティは編集できません。
  • tokenStandard - トークンの標準。このプロパティは編集できません。
  • tokenType - トークンのタイプ(fungibleまたはnon-fungible)。このプロパティは編集できません。
  • tokenUnit - トークンの単位(全体または小数)。このプロパティは編集できません。
  • behaviors - トークン動作のリスト。このプロパティは編集できません。
  • mintable - ミントに関連するプロパティ。max_mint_quantity値は、トークン・クラスに対して作成できるトークンの最大数を定義します。
  • owner - メソッドのコール元である現在の所有者のアカウントID。
  • tokenUri - トークンのURI。
  • quantity - トークンの量。
戻り値の例(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
}
戻り値の例(Fungible 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"
}
戻り値の例(小数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
このメソッドはトークンを更新します。トークン・メタデータまたは非fungibleトークンのトークンURIは更新できません。
Ctx.ERC1155Token.update(tokenAsset: any);
パラメータ:
  • tokenAsset: <Token Class> - トークン・アセット。アセットのプロパティは、モデル・ファイルで定義されます。
戻り値:
  • 成功すると、更新されたトークン・アセットがJSON形式で表示されます。
戻り値の例(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)
このメソッドは、指定されたトークンIDの履歴を返します。
Ctx.ERC1155Token.history(tokenId: string)
パラメータ:
  • tokenId: string - トークンのID。
戻り値:
  • 成功すると、トークン履歴を含むJSON配列。
戻り値の例(Fungible 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"
        }
    }
]
戻り値の例(小数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
                }
            ]
        }
    }
]
戻り値の例(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
このメソッドは、状態データベースに保存されているすべてのトークン・アセットを返します。このメソッドは、チェーンコードのToken Adminによってのみコールできます。この方法では、Berkeley DB SQLリッチ問合せが使用され、リモートのOracle Blockchain Platformネットワークに接続されている場合にのみコールできます。
Ctx.ERC1155Token.getAllTokens()
パラメータ:
  • なし
戻り値の例:
[
  {
    "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)
このメソッドは、トークンが状態データベースに存在する場合、トークン・オブジェクトを返します。このメソッドは、チェーンコードのToken Adminまたはトークン所有者によってのみコールできます。
this.Ctx.ERC1155Token.get(tokenId: string)
パラメータ:
  • tokenId: string - 取得するトークンのID。
戻り値の例(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"
}
戻り値の例(Fungible 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"
}
戻り値の例(小数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
このメソッドは、指定されたユーザーが所有するすべてのトークン・アセットを返します。この方法では、Berkeley DB SQLリッチ問合せが使用され、リモートのOracle Blockchain Platformネットワークに接続されている場合にのみコールできます。
Ctx.ERC1155Token.getAllTokensByUser(accountId: string)
パラメータ:
  • accountId: string - ユーザーのアカウントID。
戻り値の例:
[
  {
    "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
このメソッドは、指定されたトークンIDの所有者のアカウントID、組織IDおよびユーザーIDを返します。
Ctx.ERC1155Token.ownerOf(tokenId: string)
パラメータ:
  • tokenId: string - トークンのID。
戻り値の例:
{
    "accountId": "oaccount~76cb672eeb1bd535899562a840d0c15a356db89e24bc8b43ac1dba845a4282c6",
    "orgId": "appdev",
    "userId": "idcqa"
}
tokenURI
このメソッドは、指定されたトークンのURIを返します。誰でもこのメソッドを呼び出すことができます。
Ctx.ERC1155Token.tokenURI(tokenId: string)
パラメータ:
  • tokenId: string - トークンのID。
戻り値の例:
{
    "tokenUri": "example.com"
}
name
このメソッドは、トークン・クラスの名前を返します。誰でもこのメソッドを呼び出すことができます。
Ctx.ERC1155Token.name(tokenId: string)
パラメータ:
  • tokenId: string - トークンのID。
戻り値の例:
{"tokenName": "artcollection"}
totalSupply
このメソッドは、ミント・トークンの合計数を返します。FungibleトークンはトークンIDで指定されます。トークン名によって、不確定トークンが指定されます。
Ctx.ERC1155Token.totalSupply(token: any)
パラメータ:
  • token: any - トークン・アセット。
戻り値の例:
{"totalSupply": 110}
totalNetSupply
このメソッドは、ミント・トークンの合計数からバーン・トークンの数を差し引いた数を返します。FungibleトークンはトークンIDで指定されます。トークン名によって、不確定トークンが指定されます。
Ctx.ERC1155Token.totalNetSupply(token: any)
パラメータ:
  • token: any - トークン・アセット。
戻り値の例:
{"totalNetSupply": 105}
getTokensByName
このメソッドは、指定されたトークン名のすべてのトークン・アセットを返します。この方法では、Berkeley DB SQLリッチ問合せが使用され、リモートのOracle Blockchain Platformネットワークに接続されている場合にのみコールできます。
Ctx.ERC1155Token.getTokensByName(tokenName: string)
パラメータ:
  • tokenName: string - トークンの名前。
戻り値の例:
[
  {
    "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
このメソッドは、指定されたトークンの小数点以下の桁数を返します。トークンに除算可能な動作が指定されていない場合、デフォルト値の小数点以下ゼロが返されます。
Ctx.ERC1155Token.getDecimals(token)
パラメータ:
  • token: any - トークン・アセット。
戻り値の例:
2

アカウント管理の方法

createAccount
このメソッドは、指定されたユーザーのアカウントと、真菌トークンまたは非真菌トークンの関連トークン・アカウントを作成します。アカウントは、任意の時点でトークンを持つすべてのユーザーに対して作成する必要があります。ユーザー・アカウントは、NFTアカウントおよびユーザーが所有する実行可能なトークン・アカウントを追跡します。ユーザーは、トークン関連の操作を完了するためにネットワーク内にアカウントを持っている必要があります。このメソッドは、チェーンコードのToken Adminによってのみコールできます。

ユーザー・アカウントには、orgIdパラメータとuserIdパラメータのSHA-256ハッシュによって形成される一意のIDがあります。

ユーザーは、一意のアカウントIDを持つ複数の実行可能なトークン・アカウントを持つことができます。Fungibleトークン・アカウントIDは、orgIdパラメータのSHA-256ハッシュ、userIdパラメータ、チルド記号で区切られた定数文字列ft(~)、およびチルダ記号(~)で区切られた作成されているfungibleアカウントの索引を示すカウンタ番号によって形成されます。

ユーザーは、fungible以外のトークン・アカウントを1つのみ持つことができます。真菌性のないトークン・アカウントIDは一意であり、orgIdパラメータのSHA-256ハッシュ、userIdパラメータおよびチルダ記号(~)で区切られた定数文字列nftによって形成されます。ユーザーが所有するすべての非真菌トークン(全体または小数)は、この単一の非真菌トークン・アカウントにリンクされます。

Ctx.ERC1155Account.createAccount(orgId: string, userId: string, ftAccount: boolean, nftAccount: boolean)
パラメータ:
  • orgId: string - 現在の組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) ID。
  • userId: string - ユーザーのユーザー名または電子メールID。
  • ftAccount: boolean - trueの場合、実行可能なトークン・アカウントが作成され、ユーザー・アカウントに関連付けられます。
  • nftAccount: boolean - trueの場合、真でないトークン・アカウントが作成され、ユーザー・アカウントに関連付けられます。
戻り値:
  • 成功すると、作成されたアカウントのJSONオブジェクト。
戻り値の例:
{
  "assetType": "ouaccount",
  "accountId": "ouaccount~cf20877546f52687f387e7c91d88b9722c97e1a456cc0484f40c747f7804feae",
  "userId": "user1",
  "orgId": "appdev",
  "totalAccounts": 2,
  "totalFtAccounts": 1,
  "associatedFtAccounts": [
    {
      "accountId": "oaccount~60bb20c14a83f6e426e1437c479c5891e1c6477dfd7ad18b73acac5d80bc504b",
      "tokenId": ""
    }
  ],
  "associatedNftAccount": "oaccount~73c3e835dac6d0a56ca9d8def08269f83cefd59b9d297fe2cdc5a9083828fa58"
}
createUserAccount
このメソッドは、指定されたユーザーのアカウントを作成します。アカウントは、任意の時点でトークンを持つすべてのユーザーに対して作成する必要があります。ユーザー・アカウントは、NFTアカウントおよびユーザーが所有する実行可能なトークン・アカウントを追跡します。ユーザーは、トークン関連の操作を完了するためにネットワーク内にアカウントを持っている必要があります。

アカウントIDは、orgIdパラメータおよびuserIdパラメータのSHA-256ハッシュです。このメソッドは、チェーンコードのToken Adminによってのみコールできます。

Ctx.ERC1155Account.createUserAccount(orgId: string, userId: string)
パラメータ:
  • orgId: string - 現在の組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) ID。
  • userId: string - ユーザーのユーザー名または電子メールID。
戻り値:
  • 成功すると、作成されたユーザー・アカウントのJSONオブジェクト。
戻り値の例:
{
  "assetType": "ouaccount",
  "accountId": "ouaccount~24ffd4d32a028a85b4b960f5d55536c837b5429bc7f346150adfa904ec2937cc",
  "userId": "idcqa",
  "orgId": "appdev",
  "totalAccounts": 0,
  "totalFtAccounts": 0,
  "associatedFtAccounts": [],
  "associatedNftAccount": ""
}
createTokenAccount
このメソッドは、ユーザー・アカウントに関連付ける、真菌トークン・アカウントまたは非真菌トークン・アカウントを作成します。

ユーザーは、一意のアカウントIDを持つ複数の実行可能なトークン・アカウントを持つことができます。Fungibleトークン・アカウントIDは、orgIdパラメータのSHA-256ハッシュ、userIdパラメータ、チルド記号で区切られた定数文字列ft(~)、およびチルダ記号(~)で区切られた作成されているfungibleアカウントの索引を示すカウンタ番号によって形成されます。

ユーザーは、fungible以外のトークン・アカウントを1つのみ持つことができます。真菌性のないトークン・アカウントIDは一意であり、orgIdパラメータのSHA-256ハッシュ、userIdパラメータおよびチルダ記号(~)で区切られた定数文字列nftによって形成されます。ユーザーが所有するすべての非真菌トークン(全体または小数)は、この単一の非真菌トークン・アカウントにリンクされます。

このメソッドは、チェーンコードのToken Adminによってのみコールできます。

Ctx.ERC1155Account.createTokenAccount(orgId: string, userId: string, tokenType: string)
パラメータ:
  • orgId: string - 現在の組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) ID。
  • userId: string - ユーザーのユーザー名または電子メールID。
  • tokenType: TokenType - 作成するトークン・アカウントのタイプ。サポートされているトークン・タイプは、nonfungibleおよびfungibleのみです。
戻り値:
  • 成功すると、作成されたトークン・アカウントのJSONオブジェクト。
戻り値の例:
{
  "assetType": "ouaccount",
  "accountId": "ouaccount~24ffd4d32a028a85b4b960f5d55536c837b5429bc7f346150adfa904ec2937cc",
  "userId": "idcqa",
  "orgId": "appdev",
  "totalAccounts": 1,
  "totalFtAccounts": 1,
  "associatedFtAccounts": [
    {
      "accountId": "oaccount~1422a74d262a3a55a37cd9023ef8836f765d0be7b49d397696b9961d7434d22a",
      "tokenId": ""
    }
  ],
  "associatedNftAccount": ""
}
associateTokenToToken
このメソッドは、ユーザーのfungibleトークン・アカウントを特定のfungibleトークンに関連付けます。
Ctx.ERC1155Account.associateTokenToToken(accountId: string, tokenId: string)
パラメータ:
  • accountId: string - ユーザー・アカウントID。
  • tokenId: string - トークンのID。
戻り値:
  • 成功すると、ユーザー・アカウントのJSONオブジェクトが、トークン・アカウントに関連付けられていることが示されます。たとえば、次の例で、associatedFtAccounts配列の最初のオブジェクトは、使用可能なトークン・アカウントIDとトークンIDが関連付けられていることを示しています。
戻り値の例:
{
  "assetType": "ouaccount",
  "accountId": "ouaccount~24ffd4d32a028a85b4b960f5d55536c837b5429bc7f346150adfa904ec2937cc",
  "userId": "idcqa",
  "orgId": "appdev",
  "totalAccounts": 1,
  "totalFtAccounts": 1,
  "associatedFtAccounts": [
    {
      "accountId": "oaccount~1422a74d262a3a55a37cd9023ef8836f765d0be7b49d397696b9961d7434d22a",
      "tokenId": "tokenOne"
    }
  ],
  "associatedNftAccount": ""
}
getAccountHistory
このメソッドは、指定されたトークン・アカウントの履歴を返します。
Ctx.ERC1155Account.getAccountHistory(accountId: string)
パラメータ:
  • accountId: string - ユーザー・アカウントID。
戻り値:
  • 成功すると、アカウント履歴を記述するJSONオブジェクトの配列。
戻り値の例:
[
    {
        "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
このメソッドは、指定されたユーザーのトークン・アカウントの詳細(アカウント・ステータスを含む)を返します。このメソッドは、チェーンコードのToken AdminまたはアカウントのAccount Ownerによってのみコールできます。
Ctx.ERC1155Account.GetAccountWithStatus(accountId, tokenId...)
パラメータ:
  • userAccountId: string - ユーザーのアカウントID。
  • tokenId?: string - 真でないトークン・アカウントの場合、空の文字列。楽しいトークン・アカウントの場合は、トークンID。
戻り値:
  • 成功すると、アカウント・ステータスを含むトークン・アカウントの詳細を含むJSONオブジェクト。
戻り値の例(Fungibleトークン・アカウント以外):
{
    "assetType": "oaccount",
    "bapAccountVersion": 1,
    "status": "active",
    "accountId": "oaccount~cc301bee057f14236a97d434909ec1084970921b008f6baab09c2a0f5f419a9a",
    "userId": "idcqa",
    "orgId": "appdev",
    "tokenType": "nonfungible",
    "noOfNfts": 1
  }
戻り値の例(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
このメソッドは、指定されたユーザーのトークン・アカウント詳細を返します。このメソッドは、チェーンコードのToken AdminまたはアカウントのAccount Ownerによってのみコールできます。
Ctx.ERC1155Account.getAccount(userAccountId: string, tokenId: string)
パラメータ:
  • userAccountId: string - ユーザーのアカウントID。
  • tokenId?: string - 真でないトークン・アカウントの場合、空の文字列。楽しいトークン・アカウントの場合は、トークンID。
戻り値:
  • 成功すると、トークン・アカウントの詳細を含むJSONオブジェクト。bapAccountVersionパラメータは、内部使用のためにアカウント・オブジェクトで定義されます。
戻り値の例(Fungibleトークン・アカウント以外):
{
    "assetType": "oaccount",
    "bapAccountVersion": 0,
    "accountId": "oaccount~e88276a3be547e31b567346bdddde52d37734da4d5fae83ab2e5c98a10097371",
    "userId": "idcqa",
    "orgId": "appdev",
    "tokenType": "nonfungible",
    "noOfNfts": 3
}
戻り値の例(Fungible Token Account):
{
    "assetType": "oaccount",
    "bapAccountVersion": 0,
    "accountId": "oaccount~21206f309941a2a23c4f158a0fe1b8f12bb8e2b0c9a2e1358f5efebc0c7d410e",
    "userId": "idcqa",
    "orgId": "appdev",
    "tokenType": "fungible",
    "tokenId": "loy1",
    "tokenName": "loyalty",
    "balance": 50
}
getAllAccounts
このメソッドは、すべてのユーザー・アカウントの詳細を返します。
Ctx.ERC1155Account.getAllAccounts()
パラメータ:
  • なし
戻り値の例:
[
        {
            "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
このメソッドは、指定されたユーザーのアカウント・サマリーと、そのユーザーに関連付けられているfungibleトークンおよびnon-fungibleトークンの詳細を返します。
Ctx.ERC1155Account.getAccountDetailsByUser(orgId: string, userId: string)
パラメータ:
  • orgId: string - 現在の組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) ID。
  • userId: string - ユーザーのユーザー名または電子メールID。
戻り値:
  • 成功すると、指定したユーザーのアカウント・サマリーと、そのユーザーに関連付けられた実行可能トークンおよび非永続トークンの詳細を含むJSONアカウント・オブジェクト。小数の非真菌トークンの場合、associatedNFTsセクションのtokenShareプロパティには、ユーザーが所有する共有が表示されます。
戻り値の例:
{
    "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
このメソッドは、指定されたアカウントIDのユーザー詳細を返します。
Ctx.ERC1155Account.getUserByAccountId(accountId: string)
パラメータ:
  • accountId: string - アカウントのID。
戻り値:
  • 成功すると、ユーザー詳細のJSONオブジェクト(orgIdおよびuserId)。
戻り値の例:
{
    "orgId": "appdev",
    "userId": "idcqa"
}

ロール管理の方法

AddRoleMember
このメソッドは、指定されたユーザーおよびトークンにロールを追加します。FungibleトークンはトークンIDで指定されます。トークン名によって、不確定トークンが指定されます。
Ctx.ERC1155Token.addRoleMember(role: string, userAccountId: string, token: any)
パラメータ:
  • userAccountId: string - ユーザーのアカウントID。
  • role: string - 指定したユーザーを追加するロールの名前。
  • token: any - トークン・アセット。
戻り値:
  • 成功すると、アカウントの詳細を含むメッセージが表示されます。
戻り値の例:
{
  "msg": "Successfully added role 'minter' to Account Id: oaccount~1422a74d262a3a55a37cd9023ef8836f765d0be7b49d397696b9961d7434d22a (Org-Id: appdev, User-Id: idcqa)"
}
isInRole
このメソッドは、ユーザーに指定されたロールがあるかどうかを示すブール値を返します。FungibleトークンはトークンIDで指定されます。トークン名によって、不確定トークンが指定されます。
Ctx.ERC1155Token.isInRole(role: string, userAccountId: string, token: any)
パラメータ:
  • userAccountId: string - ユーザーのアカウントID。
  • role: string - 検索するロールの名前。
  • token: any - トークン・アセット。
戻り値の例:
{
    "result": true,
    "msg": "Account Id oaccount~1422a74d262a3a55a37cd9023ef8836f765d0be7b49d397696b9961d7434d22a (Org-Id: appdev, User-Id: idcqa) has minter role"
}
removeRoleMember
このメソッドは、指定されたユーザーおよびトークンからロールを削除します。FungibleトークンはトークンIDで指定されます。トークン名によって、不確定トークンが指定されます。
Ctx.ERC1155Token.removeRoleMember(role: string, userAccountId: string, token: any)
パラメータ:
  • userAccountId: string - ユーザーのアカウントID。
  • role: string - 指定したユーザーから削除するロールの名前。
  • token: any - トークン・アセット。
戻り値の例:
{
  "msg": "Successfully removed role 'minter' from Account Id: oaccount~60bb20c14a83f6e426e1437c479c5891e1c6477dfd7ad18b73acac5d80bc504b (Org-Id: appdev, User-Id: user1)"
}
getAccountsByRole
このメソッドは、指定されたロールおよびトークンのすべてのアカウントIDのリストを返します。FungibleトークンはトークンIDで指定されます。トークン名によって、不確定トークンが指定されます。
Ctx.ERC1155Token.getAccountsByRole(role: string, token: any)
パラメータ:
  • role: string - 検索するロールの名前。
  • token: any - トークン・アセット。
戻り値の例:
{
  "accounts": [
    "oaccount~1422a74d262a3a55a37cd9023ef8836f765d0be7b49d397696b9961d7434d22a",
    "oaccount~60bb20c14a83f6e426e1437c479c5891e1c6477dfd7ad18b73acac5d80bc504b"
  ]
}
getUsersByRole
このメソッドは、指定されたロールおよびトークンのすべてのユーザーのリストを返します。FungibleトークンはトークンIDで指定されます。トークン名によって、不確定トークンが指定されます。
Ctx.ERC1155Token.getUsersByRole(role: string, token: any)
パラメータ:
  • role: string - 検索するロールの名前。
  • token: any - トークン・アセット。
戻り値の例:
{
    "users": [
        {
            "accountId": "oaccount~1422a74d262a3a55a37cd9023ef8836f765d0be7b49d397696b9961d7434d22a",
            "orgId": "appdev",
            "userId": "idcqa"
        },
        {
            "accountId": "oaccount~60bb20c14a83f6e426e1437c479c5891e1c6477dfd7ad18b73acac5d80bc504b",
            "orgId": "appdev",
            "userId": "user1"
        }
    ]
}

トランザクション履歴管理の方法

getAccountTransactionHistory
このメソッドは、勘定科目トランザクション履歴を返します。このメソッドは、チェーンコードのToken Adminまたはアカウント所有者によってのみコールできます。真菌性のないトークンの場合、このメソッドはリモートのOracle Blockchain Platformネットワークに接続されている場合にのみコールできます。
Ctx.ERC1155Account.getAccountTransactionHistory(accountId: string)
パラメータ:
  • accountId: string - トークン・アカウントID。
戻り値の例:
[
    {
        "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
このメソッドは、指定されたトランザクションIDのトランザクション詳細を返します。
Ctx.ERC1155Transaction.getTransactionById(transactionId: string)
パラメータ:
  • transactionId: string - トランザクションのID。
戻り値の例:
{
  "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
このメソッドは、指定したタイムスタンプより前のトランザクションを状態データベースから削除します。
Ctx.ERC1155Transaction.deleteTransactions(referenceTime: Date)
パラメータ:
  • referenceTime: Date - このタイムスタンプより前のすべてのトランザクションが削除されます。
戻り値の例:
{
  "msg": "Successfuly deleted transaction older than date: Thu Apr 07 2022 21:18:59 GMT+0000 (Coordinated Universal Time).",
  "transactions": [
    "otransaction~30513757d8b647fffaafac440d743635f5c1b2e41b25ebd6b70b5bbf78a2643f",
    "otransaction~ac0e908c735297941ba58bb208ee61ff4816a1e54c090d68024f82adf743892b"
  ]
}

トークン動作管理のメソッド- 最小化可能な動作

mintBatch
このメソッドは、バッチ操作で複数のトークンを作成します(分)。このメソッドは、関数型トークンまたは小数型非関数型トークンのみを作成します。

可変トークンの場合、minterロールが仕様ファイルで定義されている場合、minterロールを持つすべてのユーザーがこのメソッドを呼び出すことができます。そうでない場合は、どのユーザーもこのメソッドを使用してトークンをミントできます。トークンの作成または更新時にそのプロパティが指定されている場合、トークンのmax_mint_quantityプロパティを超えるミントはできません。

真菌性のないトークンの場合、minter役割が仕様ファイルに定義されていれば、minter役割を持つすべてのユーザーがこのメソッドを呼び出すことができます。そうでない場合は、どのユーザーもこのメソッドを使用してトークンをミントできます。また、呼出し側もトークンの作成者である必要があります。ミント可能な小数非真菌トークンの量に上限はありません。

このメソッドを使用して、真でないトークン全体をミントすることはできません。

Ctx.ERC1155Token.mintBatch(accountId: string, tokenIds: string[], quantities: number[])
パラメータ:
  • accountId: string - ユーザーのアカウントID。
  • tokenIds: string[] - ミント・トークンに対するトークンIDのリスト。
  • quantity: number[] - トークンID配列に対応する、ミントするトークンの量のリスト。
戻り値:
  • 成功すると、ミント・トークンの詳細を含むJSONオブジェクト。
戻り値の例:
{
    "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"
        }
    ]
}

トークン動作管理のメソッド- 転送可能な動作

batchTransferFrom
このメソッドは、トークンIDのリストで指定されたトークンをあるユーザーから別のユーザーに転送するバッチ操作を完了します。

NFTの場合、メソッドによってNFTの所有権が移動されるため、NFTの送信者はトークンを所有する必要があります。

小数NFTの場合、ユーザー(トークンの作成者を含む)が所有するすべての共有を転送すると、トークンの所有権が失われます。トークンのシェアがユーザーに転送されると、そのユーザーは自動的に小数NFTの所有者の1人になります。

このメソッドは、メソッドのコール元が指定された送信者であることを検証しません。

Ctx.ERC1155Token.batchTransferFrom(fromUserAccountId: string, toUserAccountId: string, tokenIds: string[], quantities: number[])
パラメータ:
  • fromUserAccountId: string - 現在の組織内の送信者およびトークン所有者のアカウントID。
  • toUserAccountId: string - 受信者のアカウントID。
  • tokenIds: string[] - 転送するトークンのトークンIDのリスト。
  • quantity: number[] - トークンID配列に対応する、転送するトークンの量のリスト。
戻り値:
  • 成功すると、各トークン転送の詳細を含むメッセージが表示されます。
戻り値の例:
[
    {
        "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
このメソッドは、トークンIDのリストで指定されたトークンをあるユーザーから別のユーザーに転送するバッチ操作を完了します。

NFTの場合、メソッドによってNFTの所有権が移動されるため、NFTの送信者はトークンを所有する必要があります。

小数NFTの場合、ユーザー(トークンの作成者を含む)が所有するすべての共有を転送すると、トークンの所有権が失われます。トークンのシェアがユーザーに転送されると、そのユーザーは自動的に小数NFTの所有者の1人になります。

メソッドのコール元は、指定された送信者である必要があります。

Ctx.ERC1155Token.safeBatchTransferFrom(fromUserAccountId: string, toUserAccountId: string, tokenIds: string[], quantities: number[])
パラメータ:
  • fromUserAccountId: string - 現在の組織内の送信者およびトークン所有者のアカウントID。
  • toUserAccountId: string - 受信者のアカウントID。
  • tokenIds: string[] - 転送するトークンのトークンIDのリスト。
  • quantity: number[] - トークンID配列に対応する、転送するトークンの量のリスト。
戻り値:
  • 成功すると、各トークン転送の詳細を含むメッセージが表示されます。
戻り値の例:
[
    {
        "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
このメソッドは、トークン・アカウントの残高を取得するバッチ操作を完了します。アカウント詳細は、組織ID、ユーザーIDおよびトークンIDの3つの異なるリストで指定されます。このメソッドは、チェーンコードのToken Adminまたはアカウント所有者によってのみコールできます。アカウント所有者は、所有しているアカウントの残高詳細のみを表示できます。
Ctx.ERC1155Account.balanceOfBatch(accountIds: string[], tokenIds: string[])
パラメータ:
  • accountIds: string[] - ユーザー・アカウントIDのリスト。
  • tokenIds: string[] - トークンIDのリスト。
戻り値の例:
[
    {
        "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
このメソッドは、指定されたアカウント間でトークンを交換します。この方法では、NFT (全体または小数)と、真菌トークンまたは真菌トークンとNFT (全体または小数)の間の交換のみがサポートされます。このメソッドは、アカウント所有者のみがコールできます。
Ctx.ERC1155Token.exchangeToken( fromTokenId: string, fromUserAccountId: string, fromTokenQuantity: number, toTokenId: string, toUserAccountId: string, toTokenQuantity: number)
パラメータ:
  • fromTokenId: string - 送信者が所有するトークンのID。
  • fromUserAccountId: string - 送信者のアカウントID。
  • fromTokenQuantity: number - 受信者と交換する送信者からのトークンの量。
  • toTokenId: string - 受信者が所有するトークンのID。
  • toUserAccountId: string - 受信者のアカウントID。
  • toTokenQuantity: number - 送信者と交換する受信者からのトークンの量。
戻り値:
  • 成功すると、トークン交換の詳細を含むメッセージが表示されます。
戻り値の例:
{
    "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)"
}

トークン動作管理のメソッド- バーナブル動作

burn
このメソッドは、指定されたfungibleトークンとnon-fungibleトークンを非アクティブ化または書き込みます。
Ctx.ERC1155Token.burn(accountId: string, tokenIds: string[], quantities: number[])
パラメータ:
  • accountId: string - ユーザーのアカウントID。
  • tokenIds: string[] - 書き込むトークンIDのリスト。
  • quantity: number[] - トークンID配列に対応する、書き込むトークンの量のリスト。
戻り値:
  • 成功すると、書き込み操作の詳細を示すメッセージが表示されます。
戻り値の例:
[
  {
    "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)"
  }
]