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

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

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

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

モデル

透過的永続性機能(または簡略化されたORM)は、OchainModelクラスで取得されます。次のモデルは、ホール非代替トークンを示しています。

package model

type ArtCollection struct {
	AssetType     string `json:"AssetType" final:"otoken"`
	TokenId       string `json:"TokenId" id:"true" mandatory:"true" validate:"regexp=^[A-Za-z0-9][A-Za-z0-9_-]*$,max=16"`
	TokenName     string `json:"TokenName" final:"artcollection"`
	TokenDesc     string `json:"TokenDesc" validate:"max=256"`
	TokenStandard string `json:"TokenStandard" final:"erc1155+"`
	TokenType     string `json:"TokenType" final:"nonfungible" validate:"regexp=^nonfungible$"`
	TokenUnit     string `json:"TokenUnit" final:"whole" validate:"regexp=^whole$"`

	Mintable map[string]interface{} `json:"Mintable" final:"{\"Max_mint_quantity\":20000}"`

	Behaviors []string `json:"Behaviors" final:"[\"indivisible\",\"singleton\",\"mintable\",\"transferable\",\"burnable\",\"roles\"]"`

	Roles map[string]interface{} `json:"Roles" final:"{\"minter_role_name\":\"minter\"}"`

	Owner           string `json:"Owner,omitempty" validate:"string"`
	CreatedBy       string `json:"CreatedBy,omitempty" validate:"string"`
	TransferredBy   string `json:"TransferredBy,omitempty" validate:"string"`
	CreationDate    string `json:"CreationDate,omitempty" validate:"string"`
	TransferredDate string `json:"TransferredDate,omitempty" validate:"string"`
	IsBurned        bool   `json:"IsBurned" validate:"bool"`
	BurnedBy        string `json:"BurnedBy,omitempty" validate:"string"`
	BurnedDate      string `json:"BurnedDate,omitempty" validate:"string"`
	TokenUri        string `json:"TokenUri" mandatory:"true" validate:"string,max=2000"`

	TokenMetadata ArtCollectionMetadata `json:"TokenMetadata"`

	Price        int  `json:"Price" validate:"int"`
	On_sale_flag bool `json:"On_sale_flag" validate:"bool"`
}

type ArtCollectionMetadata struct {
	Painting_name string `json:"Painting_name" validate:"string"`
	Description   string `json:"Description" validate:"string"`
	Image         string `json:"Image" validate:"string"`
	Painter_name  string `json:"Painter_name" validate:"string"`
}

type Loyalty struct {
	AssetType     string `json:"AssetType" final:"otoken"`
	TokenId       string `json:"TokenId" id:"true" mandatory:"true" validate:"regexp=^[A-Za-z0-9][A-Za-z0-9_-]*$,max=16"`
	TokenName     string `json:"TokenName" final:"loyalty"`
	TokenDesc     string `json:"TokenDesc" validate:"max=256"`
	TokenStandard string `json:"TokenStandard" final:"erc1155+"`
	TokenType     string `json:"TokenType" final:"fungible" validate:"regexp=^fungible$"`
	TokenUnit     string `json:"TokenUnit" final:"fractional" validate:"regexp=^fractional$"`

	Mintable map[string]interface{} `json:"Mintable" final:"{\"Max_mint_quantity\":10000}"`

	Divisible map[string]interface{} `json:"Divisible" final:"{\"Decimal\":2}"`

	Behaviors []string `json:"Behaviors" final:"[\"divisible\",\"mintable\",\"transferable\",\"burnable\",\"roles\"]"`

	Roles map[string]interface{} `json:"Roles" final:"{\"minter_role_name\":\"minter\"}"`

	Currency_name           string      `json:"Currency_name" validate:"string"`
	Token_to_currency_ratio int         `json:"Token_to_currency_ratio" validate:"int"`
	Metadata                interface{} `json:"Metadata,omitempty"`
}
次のモデルは、フラクショナル非代替トークンを示しています。
type RealEstateProperty struct {
      AssetType string `json:"AssetType" final:"otoken"`
      TokenId string `json:"TokenId" id:"true" mandatory:"true" validate:"regexp=^[A-Za-z0-9][A-Za-z0-9_-]*$,max=16"`
      TokenName string `json:"TokenName" final:"realestateproperty"`
      TokenDesc string `json:"TokenDesc" validate:"max=256"`
      TokenStandard string `json:"TokenStandard" final:"erc1155+"`
      TokenType string `json:"TokenType" final:"nonfungible" validate:"regexp=^nonfungible$"`
      TokenUnit string `json:"TokenUnit" final:"fractional" validate:"regexp=^fractional$"`

      Mintable map[string]interface{} `json:"Mintable" final:"{\"Max_mint_quantity\":0}"`
      Behaviors []string `json:"Behaviors" final:"[\"divisible\",\"mintable\",\"transferable\",\"roles\"]"`

      Divisible map[string]interface{} `json:"Divisible" final:"{\"Decimal\":0}"`

      Roles map[string]interface{} `json:"Roles" final:"{\"minter_role_name\":\"minter\"}"`

      CreatedBy string `json:"CreatedBy,omitempty" validate:"string"`
      CreationDate string `json:"CreationDate,omitempty" validate:"string"`
      IsBurned bool `json:"IsBurned" validate:"bool"`
      TokenUri string `json:"TokenUri" mandatory:"true" validate:"string,max=2000"`
      Quantity float64 `json:"Quantity,omitempty"`
      TokenMetadata RealEstatePropertyMetadata `json:"TokenMetadata"`

      PropertySellingPrice int `json:"PropertySellingPrice" validate:"int"`
      PropertyRentingPrice int `json:"PropertyRentingPrice" validate:"int"`
}

type RealEstatePropertyMetadata struct {
      PropertyType string `json:"PropertyType" validate:"string"`
      PropertyName string `json:"PropertyName" validate:"string"`
      PropertyAddress string `json:"PropertyAddress" validate:"string"`
      PropertyImage string `json:"PropertyImage" validate:"string"`
}

コントローラ

メインコントローラは1つのみです。

type Controller struct {
    Ctx trxcontext.TrxContext
}

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

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

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

ブロックチェーン・アプリケーション・ビルダーは、トークンおよびトークン・ライフサイクルをサポートするメソッドを自動的に生成します。これらのメソッドを使用して、トークンの初期化、ロールとアカウントの管理、およびその他のトークン・ライフサイクル・タスクを追加コーディングなしで行えます。コントローラ・メソッドを呼び出し可能にするには、パブリックである必要があります。パブリック・メソッド名は大文字で始まります。小文字で始まるメソッド名はプライベートです。

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

IsTokenAdmin
このメソッドは、関数のコール元がToken Adminの場合はブール値trueを返し、それ以外の場合はfalseを返します。このメソッドは、チェーンコードのToken Adminのみがコールできます。
func (t *Controller) IsTokenAdmin(orgId string, userId string) (interface{}, error) {
            auth, err := t.Ctx.ERC1155Auth.CheckAuthorization("ERC1155Admin.IsUserTokenAdmin", "TOKEN", map[string]string{"orgId": orgId, "userId": userId})
            if err != nil || !auth {
                  return false, fmt.Errorf("error in authorizing the caller %s", err.Error())
            }
            return t.Ctx.ERC1155Auth.IsUserTokenAdmin(orgId, userId)
      }
パラメータ:
  • orgId: string – 現在の組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) ID。
  • userId: string – ユーザーのユーザー名または電子メールID。
戻り値:
  • コール元がToken Adminの場合はtrueを返し、そうでない場合はfalseを返します。
戻り値の例:
{"result": true}
AddTokenAdmin
このメソッドは、ユーザーをチェーンコードのToken Adminとして追加します。このメソッドは、チェーンコードのToken Adminのみがコールできます。
func (t *Controller) AddTokenAdmin(orgId string, userId string) (interface{}, error) {
            auth, err := t.Ctx.ERC1155Auth.CheckAuthorization("ERC1155Admin.AddAdmin", "TOKEN")
            if err != nil && !auth {
                  return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
            }
            return t.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である自分自身を削除することはできません。
func (t *Controller) RemoveTokenAdmin(orgId string, userId string) (interface{}, error) {
            auth, err := t.Ctx.ERC1155Auth.CheckAuthorization("ERC1155Admin.RemoveAdmin", "TOKEN")
            if err != nil && !auth {
                  return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
            }
            return t.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のみがコールできます。
func (t *Controller) GetAllTokenAdmins() (interface{}, error) {
            auth, err := t.Ctx.ERC1155Auth.CheckAuthorization("ERC1155Admin.GetAllAdmins", "TOKEN")
            if err != nil && !auth {
                  return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
            }
            return t.Ctx.ERC1155Admin.GetAllAdminUsers()
      }
パラメータ:
  • none
戻り値:
  • 成功の場合、JSON形式のadmins配列。
戻り値
{
  "admins": [
    {
      "OrgId": "appdev",
      "UserId": "idcqa"
    },
    {
      "OrgId": "appdev",
      "UserId": "user1"
    }
  ]
}

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

Init
このメソッドは、チェーンコードがインスタンス化されるときにコールされます。すべてのToken Adminは、adminListパラメータのuserIdおよびorgId情報によって識別されます。userIdは、インスタンス所有者またはインスタンスにログインしているユーザーのユーザー名または電子メールIDです。orgIdは、現在のネットワーク組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) IDです。チェーンコードを初めてデプロイする場合、adminListパラメータは必須です。チェーンコードをアップグレードする場合は、空のリスト([])を渡します。チェーンコードを最初にデプロイしたユーザーの場合、チェーンコードのアップグレード時にadminListパラメータに新しい管理者を指定することもできます。adminListパラメータ内のその他の情報は、アップグレード時に無視されます。
func (t *Controller) Init(adminList []erc1155Admin.ERC1155TokenAdminAsset) (interface{}, error) {
      list, err := t.Ctx.ERC1155Admin.InitAdmin(adminList)
      if err != nil {
            return nil, fmt.Errorf("initialising admin list failed %s", err.Error())
      }
      <1st Token Name> := <1st TokenClassName>{}
      _, err = t.Ctx.ERC1155Token.SaveClassInfo(&<1st Token Name>)
      if err != nil {
            return nil, err
      }
         .
         .
      <nth Token Name> := <nth TokenClassName>{}
      _, err = t.Ctx.ERC1155Token.SaveClassInfo(&<nth Token Name>)
      if err != nil {
            return nil, err
      }
      _, err = t.Ctx.ERC1155Token.SaveDeleteTransactionInfo()
      if err != nil {
            fmt.Println("error: ", err)
      }
      return list, err
}
パラメータ:
  • adminList array – トークン管理者のリストを指定する{OrgId, UserId}情報の配列。adminList配列は必須パラメータです。
Create<Token Name>Token
このメソッドはトークンを作成します。定義されているすべてのトークンには、独自の作成メソッドがあります。代替可能トークンの場合、このメソッドはチェーンコードのToken Adminのみがコールできます。非代替トークンの場合、ミンター・ロールが仕様ファイルに定義されていれば、ミンター・ロールを持つすべてのユーザーがこのメソッドをコールしてNFTを作成できます。ミンター・ロールが定義されていない場合、どのユーザーもこのメソッドを使用してNFTを作成(ミント)できます。このメソッドをコールするユーザーがNFTの所有者になります。
代替可能トークン:
func (t *Controller) Create<Token Name>Token(tokenAsset <Token Class>) (interface{}, error) {
            auth, err := t.Ctx.ERC1155Auth.CheckAuthorization("ERC1155Token.Save", "TOKEN")
            if err != nil && !auth {
                  return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
            }
            return t.Ctx.ERC1155Token.Save(&tokenAsset)
    }
非代替トークン:
func (t *Controller) Create<Token Name>Token(tokenAsset <Token Class>, quantity float64) (interface{}, error) {
         quantityToPass := []float64{quantity}
          return t.Ctx.ERC1155Token.Save(&tokenAsset, quantityToPass...)
    }
パラメータ:
  • tokenAsset: <Token Class> – トークン・アセット。アセットのプロパティは、モデル・ファイルで定義されます。
  • quantity: number – 非代替トークンの場合のみ、ミントするトークンの数。このパラメータでサポートされている値は、1のみです。
戻り値:
  • 成功の場合、トークン・タイプに応じて、次の情報を含むJSON形式のトークン・アセット。
  • Behaviors – トークン動作のリスト。このプロパティは編集できません。
  • CreatedBy – トークンをミントするユーザーであるコール元のアカウントID。このプロパティは編集できません。
  • CreationDate – ミント・トランザクションのタイムスタンプ。このプロパティは編集できません。
  • IsBurned – このプロパティは、トークンがバーンされたかどうかを示します。このプロパティは編集できません。
  • Mintable – ミントに関連するプロパティ。max_mint_quantity値は、トークン・クラスに対して作成できるトークンの最大数を定義します。
  • Owner – メソッドのコール元である現在の所有者のアカウントID。
  • Symbol – トークンの記号。このプロパティは編集できません。
  • TokenDesc – トークンの説明。
  • TokenMetadata – トークンを説明するJSON情報。
  • TokenName – トークンの名前。このプロパティは編集できません。
  • TokenStandard – トークンの標準。このプロパティは編集できません。
  • TokenType – トークンのタイプ(代替可能または非代替)。このプロパティは編集できません。
  • TokenUnit – トークンの単位(ホールまたはフラクショナル)。このプロパティは編集できません。
  • TokenUri – トークンのURI。
  • Quantity – トークンの数量。
戻り値の例(ホールNFT)
{
    "AssetType": "otoken",
    "Behaviors": [
        "indivisible",
        "singleton",
        "mintable",
        "transferable",
        "burnable",
        "roles"
    ],
    "CreatedBy": "oaccount~42e89f4c72dfde9502814876423c6da630d466e87436dd1aae201d347ad1288d",
    "CreationDate": "2022-12-29T09:57:03+05:30",
    "IsBurned": false,
    "Mintable": {
        "Max_mint_quantity": 500
    },
    "OnSaleFlag": false,
    "Owner": "oaccount~42e89f4c72dfde9502814876423c6da630d466e87436dd1aae201d347ad1288d",
    "Price": 100,
    "Quantity": 1,
    "Roles": {
        "burner_role_name": "burner",
        "minter_role_name": "minter"
    },
    "TokenDesc": "token description",
    "TokenId": "monalisa",
    "TokenMetadata": {
        "Description": "Mona Lisa Painting",
        "Image": "monalisa.jpeg",
        "PainterName": "Leonardo_da_Vinci",
        "PaintingName": "Mona_Lisa"
    },
    "TokenName": "artcollection",
    "TokenStandard": "erc1155+",
    "TokenType": "nonfungible",
    "TokenUnit": "whole",
    "TokenUri": "https://bafybeid6pmpp62bongoip5iy2skosvyxh3gr7r2e35x3ctvawjco6ddmsq\\\\ .ipfs.infura-ipfs.io/?filename=MonaLisa.jpeg"
}
戻り値の例(代替可能トークン)
{
    "AssetType": "otoken",
    "Behaviors": [
        "divisible",
        "mintable",
        "transferable",
        "burnable",
        "roles"
    ],
    "Currency_name": "Dollar",
    "Divisible": {
        "Decimal": 2
    },
    "Mintable": {
        "Max_mint_quantity": 10000
    },
    "Roles": {
        "burner_role_name": "burner",
        "minter_role_name": "minter"
    },
    "TokenDesc": "Token Description",
    "TokenId": "Loyalty",
    "TokenName": "loyalty",
    "TokenStandard": "erc1155+",
    "TokenType": "fungible",
    "TokenUnit": "fractional",
    "Token_to_currency_ratio": 0
}
戻り値の例(フラクショナルNFT)
{
    "AssetType": "otoken",
    "Behaviors": [
        "divisible",
        "mintable",
        "transferable",
        "burnable",
        "roles"
    ],
    "CreatedBy": "oaccount~42e89f4c72dfde9502814876423c6da630d466e87436dd1aae201d347ad1288d",
    "CreationDate": "2023-06-14T09:53:53+05:30",
    "Divisible": {
        "Decimal": 2
    },
    "IsBurned": false,
    "Mintable": {
        "Max_mint_quantity": 20000
    },
    "On_sale_flag": false,
    "Price": 1000,
    "Quantity": 100,
    "Roles": {
        "burner_role_name": "burner",
        "minter_role_name": "minter"
    },
    "TokenDesc": "Token Description",
    "TokenId": "realEstate",
    "TokenMetadata": {
        "Description": "Painting Description",
        "Image": "",
        "Painter_name": "",
        "Painting_name": "Paint"
    },
    "TokenName": "realestate",
    "TokenStandard": "erc1155+",
    "TokenType": "nonfungible",
    "TokenUnit": "fractional",
    "TokenUri": "www.realestate.example.com"
}
Update<Token Name>Token
このメソッドはトークンを更新します。定義されているすべてのトークンには、独自の更新メソッドがあります。非代替トークンのトークン・メタデータまたはトークンURIは更新できません。代替可能トークンの場合、このメソッドはチェーンコードのToken Adminのみがコールできます。非代替トークンの場合、このメソッドはトークン所有者のみがコールできます。
代替可能トークン:
func (t *Controller) Update<%=tokenModelName%>Token(tokenAsset <%=tokenModelName%>) (interface{}, error) {
        auth, err := t.Ctx.ERC1155Auth.CheckAuthorization("ERC1155Token.Update", "TOKEN")
            if err != nil && !auth {
                  return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
            }
            return t.Ctx.ERC1155Token.Update(&tokenAsset)
    }
非代替トークン:
func (t *Controller) Update<%=tokenModelName%>Token(tokenAsset <%=tokenModelName%>) (interface{}, error) {
            return t.Ctx.ERC1155Token.Update(&tokenAsset)
    }
パラメータ:
  • tokenAsset: <Token Class> – トークン・アセット。アセットのプロパティは、モデル・ファイルで定義されます。
戻り値:
  • 成功の場合、更新されたJSON形式のトークン・アセット。
戻り値の例(ホールNFT)
{
    "AssetType": "otoken",
    "Behaviors": [
        "indivisible",
        "singleton",
        "mintable",
        "transferable",
        "burnable",
        "roles"
    ],
    "CreatedBy": "oaccount~42e89f4c72dfde9502814876423c6da630d466e87436dd1aae201d347ad1288d",
    "CreationDate": "2022-12-29T09:57:03+05:30",
    "IsBurned": false,
    "Mintable": {
        "Max_mint_quantity": 500
    },
    "OnSaleFlag": false,
    "Owner": "oaccount~42e89f4c72dfde9502814876423c6da630d466e87436dd1aae201d347ad1288d",
    "Price": 100,
    "Quantity": 1,
    "Roles": {
        "burner_role_name": "burner",
        "minter_role_name": "minter"
    },
    "TokenDesc": "token description",
    "TokenId": "monalisa",
    "TokenMetadata": {
        "Description": "Mona Lisa Painting",
        "Image": "monalisa.jpeg",
        "PainterName": "Leonardo_da_Vinci",
        "PaintingName": "Mona_Lisa"
    },
    "TokenName": "artcollection",
    "TokenStandard": "erc1155+",
    "TokenType": "nonfungible",
    "TokenUnit": "whole",
    "TokenUri": "https://bafybeid6pmpp62bongoip5iy2skosvyxh3gr7r2e35x3ctvawjco6ddmsq\\\\ .ipfs.infura-ipfs.io/?filename=MonaLisa.jpeg"
}
GetTokenHistory
このメソッドは、指定されたトークンIDの履歴を返します。だれでもこのメソッドをコールできます。
func (t *Controller) GetTokenHistory(tokenId string) (interface{}, error) {
            return t.Ctx.ERC1155Token.GetTokenHistory(tokenId)
      }
パラメータ:
  • tokenId: string – トークンのID。
戻り値:
  • 成功の場合、トークン履歴を含むJSON配列。
戻り値の例(代替可能トークン)
[
  {
    "IsDelete": "false",
    "Timestamp": "2022-12-08T09:54:11Z",
    "TxId": "823sa7c7a00941c62285c86f922bc4d3f5326a20f4bf2f82daa5bc661e4682e8",
    "Value": {
      "AssetType": "otoken",
      "Behaviors": [
        "divisible",
        "mintable",
        "transferable",
        "roles"
      ],
      "Currency_name": "Rupees",
      "Divisible": {
        "Decimal": 2
      },
      "Mintable": {
        "Max_mint_quantity": 1000
      },
      "Roles": {
        "burner_role_name": "burner",
        "minter_role_name": "minter"
      },
      "TokenDesc": "Updated Token Description",
      "TokenId": "tokenOne",
      "TokenName": "moneytok",
      "TokenStandard": "erc1155+",
      "TokenType": "fungible",
      "TokenUnit": "fractional",
      "Token_to_currency_ratio": 0
    }
  },
  {
    "IsDelete": "false",
    "Timestamp": "2022-12-08T09:54:11Z",
    "TxId": "711bb7c7a00941c62285c86f922bc3b3f5326a20f4bf2f82daa5bc661e4682e8",
    "Value": {
      "AssetType": "otoken",
      "Behaviors": [
        "divisible",
        "mintable",
        "transferable",
        "roles"
      ],
      "Currency_name": "Dollar",
      "Divisible": {
        "Decimal": 2
      },
      "Mintable": {
        "Max_mint_quantity": 1000
      },
      "Roles": {
        "burner_role_name": "burner",
        "minter_role_name": "minter"
      },
      "TokenDesc": "",
      "TokenId": "tokenOne",
      "TokenName": "moneytok",
      "TokenStandard": "erc1155+",
      "TokenType": "fungible",
      "TokenUnit": "fractional",
      "Token_to_currency_ratio": 0
    }
  }
]
戻り値の例(フラクショナルNFT)
[
    {
        "Timestamp": "2023-06-20T01:06:33Z",
        "TrxId": "16e53db4f8107f9634b7c3a0a2a81a00f69b634f2a52902b809e544d07f272b1",
        "Value": {
            "AssetType": "otoken",
            "Behaviors": [
                "divisible",
                "mintable",
                "transferable",
                "burnable",
                "roles"
            ],
            "CreatedBy": "oaccount~87bcb699d507368ee3966cd03ee6d7736ffc55dde8c0f0e16b14866334ac504a",
            "CreationDate": "2023-06-20T01:02:27Z",
            "Divisible": {
                "Decimal": 2
            },
            "IsBurned": false,
            "Mintable": {
                "Max_mint_quantity": 20000
            },
            "On_sale_flag": true,
            "Owners": [
                {
                    "AccountId": "oaccount~87bcb699d507368ee3966cd03ee6d7736ffc55dde8c0f0e16b14866334ac504a",
                    "TokenShare": 10
                },
                {
                    "AccountId": "oaccount~3cddfdaa855900579d963aa6f755a4aed1f3a474a2462c1b45bd7f36df673224",
                    "TokenShare": 10
                }
            ],
            "Price": 2000,
            "Quantity": 20,
            "Roles": {
                "burner_role_name": "burner",
                "minter_role_name": "minter"
            },
            "TokenDesc": "",
            "TokenId": "FNFT",
            "TokenMetadata": {
                "Description": "",
                "Image": "",
                "Painter_name": "",
                "Painting_name": ""
            },
            "TokenName": "realestate",
            "TokenStandard": "erc1155+",
            "TokenType": "nonfungible",
            "TokenUnit": "fractional",
            "TokenUri": "www.FNFT.example.com"
        }
    },
    {
        "Timestamp": "2023-06-20T01:02:27Z",
        "TrxId": "cec80910d087682554048f911d2cf98b66382bbcf1615483fa1c96c7ea08077c",
        "Value": {
            "AssetType": "otoken",
            "Behaviors": [
                "divisible",
                "mintable",
                "transferable",
                "burnable",
                "roles"
            ],
            "CreatedBy": "oaccount~87bcb699d507368ee3966cd03ee6d7736ffc55dde8c0f0e16b14866334ac504a",
            "CreationDate": "2023-06-20T01:02:27Z",
            "Divisible": {
                "Decimal": 2
            },
            "IsBurned": false,
            "Mintable": {
                "Max_mint_quantity": 20000
            },
            "On_sale_flag": true,
            "Owners": [
                {
                    "AccountId": "oaccount~87bcb699d507368ee3966cd03ee6d7736ffc55dde8c0f0e16b14866334ac504a",
                    "TokenShare": 20
                }
            ],
            "Price": 2000,
            "Quantity": 20,
            "Roles": {
                "burner_role_name": "burner",
                "minter_role_name": "minter"
            },
            "TokenDesc": "",
            "TokenId": "FNFT",
            "TokenMetadata": {
                "Description": "",
                "Image": "",
                "Painter_name": "",
                "Painting_name": ""
            },
            "TokenName": "realestate",
            "TokenStandard": "erc1155+",
            "TokenType": "nonfungible",
            "TokenUnit": "fractional",
            "TokenUri": "www.FNFT.example.com"
        }
    }
]
戻り値の例(ホールNFT)
[
    {
        "IsDelete": "false",
        "Timestamp": "2023-06-20T01:15:56Z",
        "TxId": "89a3df3ebbe6dca2bcfbd51fc7dca9aab818a2af746b79a92dc8155b729ab22d",
        "Value": {
            "AssetType": "otoken",
            "Behaviors": [
                "indivisible",
                "singleton",
                "mintable",
                "transferable",
                "roles"
            ],
            "CreatedBy": "oaccount~87bcb699d507368ee3966cd03ee6d7736ffc55dde8c0f0e16b14866334ac504a",
            "CreationDate": "2023-06-20T01:15:56Z",
            "IsBurned": false,
            "Mintable": {
                "Max_mint_quantity": 20000
            },
            "On_sale_flag": true,
            "Owner": "oaccount~87bcb699d507368ee3966cd03ee6d7736ffc55dde8c0f0e16b14866334ac504a",
            "Price": 2000,
            "Quantity": 1,
            "Roles": {
                "burner_role_name": "burner",
                "minter_role_name": "minter"
            },
            "TokenDesc": "Updated Token Description",
            "TokenId": "NFT",
            "TokenMetadata": {
                "Description": "",
                "Image": "",
                "Painter_name": "",
                "Painting_name": ""
            },
            "TokenName": "artcollection",
            "TokenStandard": "erc1155+",
            "TokenType": "nonfungible",
            "TokenUnit": "whole",
            "TokenUri": "www.NFT.example.com"
        }
    },
    {
        "IsDelete": "false",
        "Timestamp": "2023-06-20T01:15:56Z",
        "TxId": "90d6af3ebbe6dca2bcfbd51fc7dca9aab818a2af746b79a92dc8155b729ab22d",
        "Value": {
            "AssetType": "otoken",
            "Behaviors": [
                "indivisible",
                "singleton",
                "mintable",
                "transferable",
                "roles"
            ],
            "CreatedBy": "oaccount~87bcb699d507368ee3966cd03ee6d7736ffc55dde8c0f0e16b14866334ac504a",
            "CreationDate": "2023-06-20T01:15:56Z",
            "IsBurned": false,
            "Mintable": {
                "Max_mint_quantity": 20000
            },
            "On_sale_flag": true,
            "Owner": "oaccount~87bcb699d507368ee3966cd03ee6d7736ffc55dde8c0f0e16b14866334ac504a",
            "Price": 2000,
            "Quantity": 1,
            "Roles": {
                "burner_role_name": "burner",
                "minter_role_name": "minter"
            },
            "TokenDesc": "",
            "TokenId": "NFT",
            "TokenMetadata": {
                "Description": "",
                "Image": "",
                "Painter_name": "",
                "Painting_name": ""
            },
            "TokenName": "artcollection",
            "TokenStandard": "erc1155+",
            "TokenType": "nonfungible",
            "TokenUnit": "whole",
            "TokenUri": "www.NFT.example.com"
        }
    }
]
GetAllTokens
このメソッドは、状態データベースに保存されているすべてのトークン・アセットを返します。このメソッドは、チェーンコードのToken Adminのみがコールできます。このメソッドでは、Berkeley DB SQLリッチ問合せが使用され、リモートOracle Blockchain Platformネットワークに接続されている場合にのみコールできます。
func (t *Controller) GetAllTokens() (interface{}, error) {
            auth, err := t.Ctx.ERC1155Auth.CheckAuthorization("ERC1155Token.GetAllTokens", "TOKEN")
            if err != nil && !auth {
                  return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
            }
            return t.Ctx.ERC1155Token.GetAllTokens()
      }
パラメータ:
  • none
戻り値:
  • JSON形式のすべてのトークン・アセットのリスト。
戻り値
[
  {
    "key": "tokenOne",
    "valueJson": {
      "AssetType": "otoken",
      "Behaviors": [
        "divisible",
        "mintable",
        "transferable",
        "roles"
      ],
      "Currency_name": "",
      "Divisible": {
        "Decimal": 2
      },
      "Mintable": {
        "Max_mint_quantity": 1000
      },
      "Roles": {
        "burner_role_name": "burner",
        "minter_role_name": "minter"
      },
      "TokenDesc": "",
      "TokenId": "tokenOne",
      "TokenName": "moneytok",
      "TokenStandard": "erc1155+",
      "TokenType": "fungible",
      "TokenUnit": "fractional",
      "Token_to_currency_ratio": 0
    }
  },
  {
    "key": "tokenTwo",
    "valueJson": {
      "AssetType": "otoken",
      "Behaviors": [
        "divisible",
        "mintable",
        "transferable",
        "roles"
      ],
      "Currency_name": "",
      "Divisible": {
        "Decimal": 2
      },
      "Mintable": {
        "Max_mint_quantity": 1000
      },
      "Roles": {
        "burner_role_name": "burner",
        "minter_role_name": "minter"
      },
      "TokenDesc": "",
      "TokenId": "tokenTwo",
      "TokenName": "moneytok",
      "TokenStandard": "erc1155+",
      "TokenType": "fungible",
      "TokenUnit": "fractional",
      "Token_to_currency_ratio": 0
    }
  },
  {
    "key": "art",
    "valueJson": {
      "AssetType": "otoken",
      "Behaviors": [
        "indivisible",
        "singleton",
        "mintable",
        "transferable",
        "burnable",
        "roles"
      ],
      "BurnedBy": "oaccount~76cb672eeb1bd535899562a840d0c15a356db89e24bc8b43ac1dba845a4282c6",
      "BurnedDate": "2022-12-08T10:49:37Z",
      "CreatedBy": "oaccount~76cb672eeb1bd535899562a840d0c15a356db89e24bc8b43ac1dba845a4282c6",
      "CreationDate": "2022-12-08T10:45:10Z",
      "IsBurned": true,
      "Mintable": {
        "Max_mint_quantity": 20000
      },
      "OnSaleFlag": false,
      "Owner": "",
      "Price": 0,
      "Roles": {
        "minter_role_name": "minter"
      },
      "TokenDesc": "",
      "TokenId": "art",
      "TokenMetadata": {
        "Description": "",
        "Image": "",
        "PainterName": "",
        "PaintingName": ""
      },
      "TokenName": "artcollection",
      "TokenStandard": "erc1155+",
      "TokenType": "nonfungible",
      "TokenUnit": "whole",
      "TokenUri": "art.example.com",
      "TransferredBy": "ouaccount~24ffd4d32a028a85b4b960f5d55536c837b5429bc7f346150adfa904ec2937cc",
      "TransferredDate": "2022-12-08T10:47:04Z"
    }
  },
  {
    "key": "FNFT",
    "valueJson": {
        "AssetType": "otoken",
        "Behaviors": [
            "divisible",
            "mintable",
            "transferable",
            "burnable",
            "roles"
        ],
        "CreatedBy": "oaccount~87bcb699d507368ee3966cd03ee6d7736ffc55dde8c0f0e16b14866334ac504a",
        "CreationDate": "2023-06-20T01:02:27Z",
        "Divisible": {
            "Decimal": 2
        },
        "IsBurned": false,
        "Mintable": {
            "Max_mint_quantity": 20000
        },
        "On_sale_flag": true,
        "Price": 2000,
        "Quantity": 20,
        "Roles": {
            "burner_role_name": "burner",
            "minter_role_name": "minter"
        },
        "TokenDesc": "",
        "TokenId": "FNFT",
        "TokenMetadata": {
            "Description": "",
            "Image": "",
            "Painter_name": "",
            "Painting_name": ""
        },
        "TokenName": "realestate",
        "TokenStandard": "erc1155+",
        "TokenType": "nonfungible",
        "TokenUnit": "fractional",
        "TokenUri": "www.FNFT.example.com"
    }
  },
  {
    "key": "FNFT",
    "valueJson": {
        "AssetType": "otoken",
        "Behaviors": [
            "divisible",
            "mintable",
            "transferable",
            "burnable",
            "roles"
        ],
        "CreatedBy": "oaccount~87bcb699d507368ee3966cd03ee6d7736ffc55dde8c0f0e16b14866334ac504a",
        "CreationDate": "2023-06-20T01:02:27Z",
        "Divisible": {
            "Decimal": 2
        },
        "IsBurned": false,
        "Mintable": {
            "Max_mint_quantity": 20000
        },
        "On_sale_flag": true,
        "Price": 2000,
        "Quantity": 20,
        "Roles": {
            "burner_role_name": "burner",
            "minter_role_name": "minter"
        },
        "TokenDesc": "",
        "TokenId": "FNFT",
        "TokenMetadata": {
            "Description": "",
            "Image": "",
            "Painter_name": "",
            "Painting_name": ""
        },
        "TokenName": "realestate",
        "TokenStandard": "erc1155+",
        "TokenType": "nonfungible",
        "TokenUnit": "fractional",
        "TokenUri": "www.FNFT.example.com"
    }
  }
]
GetTokenById
このメソッドは、トークンが状態データベースに存在する場合、トークン・オブジェクトを返します。フラクショナルNFTの場合、所有者のリストも返されます。このメソッドは、チェーンコードのToken Adminまたはトークン所有者のみがコールできます。
func (t *Controller) GetTokenById(tokenId string) (interface{}, error) {
            auth, err := t.Ctx.ERC1155Auth.CheckAuthorization("ERC1155Token.Get", "TOKEN", map[string]string{"tokenId": tokenId})
            if err != nil && !auth {
                  return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
            }
            return t.Ctx.ERC1155Token.GetTokenById(tokenId)
      }
パラメータ:
  • tokenId string – 取得するトークンのID。
戻り値の例(ホールNFT)
{
  "AssetType": "otoken",
  "Behaviors": [
    "indivisible",
    "singleton",
    "mintable",
    "transferable",
    "burnable",
    "roles"
  ],
  "CreatedBy": "oaccount~76cb672eeb1bd535899562a840d0c15a356db89e24bc8b43ac1dba845a4282c6",
  "CreationDate": "2022-12-08T10:55:29Z",
  "IsBurned": false,
  "Mintable": {
    "Max_mint_quantity": 20000
  },
  "OnSaleFlag": false,
  "Owner": "oaccount~76cb672eeb1bd535899562a840d0c15a356db89e24bc8b43ac1dba845a4282c6",
  "Price": 0,
  "Quantity": 1,
  "Roles": {
    "minter_role_name": "minter"
  },
  "TokenDesc": "",
  "TokenId": "nftToken",
  "TokenMetadata": {
    "Description": "",
    "Image": "",
    "PainterName": "",
    "PaintingName": ""
  },
  "TokenName": "artcollection",
  "TokenStandard": "erc1155+",
  "TokenType": "nonfungible",
  "TokenUnit": "whole",
  "TokenUri": "nftToken.example.com"
}
戻り値の例(代替可能トークン)
{
    "AssetType": "otoken",
    "Behaviors": [
        "divisible",
        "mintable",
        "transferable",
        "burnable",
        "roles"
    ],
    "Currency_name": "Dollar",
    "Divisible": {
        "Decimal": 2
    },
    "Mintable": {
        "Max_mint_quantity": 10000
    },
    "Roles": {
        "burner_role_name": "burner",
        "minter_role_name": "minter"
    },
    "TokenDesc": "Token Description",
    "TokenId": "Loyalty",
    "TokenName": "loyalty",
    "TokenStandard": "erc1155+",
    "TokenType": "fungible",
    "TokenUnit": "fractional",
    "Token_to_currency_ratio": 0
}
戻り値の例(フラクショナルNFT)
{
    "AssetType": "otoken",
    "Behaviors": [
        "divisible",
        "mintable",
        "transferable",
        "burnable",
        "roles"
    ],
    "CreatedBy": "oaccount~42e89f4c72dfde9502814876423c6da630d466e87436dd1aae201d347ad1288d",
    "CreationDate": "2023-06-14T09:53:53+05:30",
    "Divisible": {
        "Decimal": 2
    },
    "IsBurned": false,
    "Mintable": {
        "Max_mint_quantity": 20000
    },
    "On_sale_flag": false,
    "Owners": [
        {
            "AccountId": "oaccount~42e89f4c72dfde9502814876423c6da630d466e87436dd1aae201d347ad1288d",
            "TokenShare": 100
        }
    ],
    "Price": 1000,
    "Quantity": 100,
    "Roles": {
        "burner_role_name": "burner",
        "minter_role_name": "minter"
    },
    "TokenDesc": "Token Description",
    "TokenId": "realEstate",
    "TokenMetadata": {
        "Description": "Painting Description",
        "Image": "",
        "Painter_name": "",
        "Painting_name": "Paint"
    },
    "TokenName": "realestate",
    "TokenStandard": "erc1155+",
    "TokenType": "nonfungible",
    "TokenUnit": "fractional",
    "TokenUri": "www.realestate.example.com"
}
GetAllTokensByUser
このメソッドは、指定されたユーザーが所有するすべてのトークン・アセットを返します。このメソッドでは、Berkeley DB SQLリッチ問合せが使用され、リモートOracle Blockchain Platformネットワークに接続されている場合にのみコールできます。このメソッドは、チェーンコードのToken Adminまたはアカウント所有者のみがコールできます。
func (t *Controller) GetAllTokensByUser(orgId string, userId string) (interface{}, error) {
            accountId, err := t.Ctx.ERC1155Account.GenerateAccountId(orgId, userId, constants.UserAccount)
            if err != nil {
                  return nil, fmt.Errorf("error in GetAllTokensByUser. Error: %s", err)
            }
            auth, err := t.Ctx.ERC1155Auth.CheckAuthorization("ERC1155Token.GetAllTokensByUser", "TOKEN", map[string]string{"accountId": accountId})
            if err != nil && !auth {
                  return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
            }
            return t.Ctx.ERC1155Token.GetAllTokensByUser(accountId)
      }
パラメータ:
  • orgId string – 現在の組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) ID。
  • userId string – ユーザーのユーザー名または電子メールID。
戻り値
[
  {
    "key": "tokenOne",
    "valueJson": {
      "AssetType": "otoken",
      "Behaviors": [
        "divisible",
        "mintable",
        "transferable",
        "roles"
      ],
      "Currency_name": "",
      "Divisible": {
        "Decimal": 2
      },
      "Mintable": {
        "Max_mint_quantity": 1000
      },
      "Roles": {
        "burner_role_name": "burner",
        "minter_role_name": "minter"
      },
      "TokenDesc": "",
      "TokenId": "tokenOne",
      "TokenName": "moneytok",
      "TokenStandard": "erc1155+",
      "TokenType": "fungible",
      "TokenUnit": "fractional",
      "Token_to_currency_ratio": 0
    }
  },
  {
    "key": "nftToken",
    "valueJson": {
      "AssetType": "otoken",
      "Behaviors": [
        "indivisible",
        "singleton",
        "mintable",
        "transferable",
        "burnable",
        "roles"
      ],
      "CreatedBy": "oaccount~76cb672eeb1bd535899562a840d0c15a356db89e24bc8b43ac1dba845a4282c6",
      "CreationDate": "2022-12-08T10:55:29Z",
      "IsBurned": false,
      "Mintable": {
        "Max_mint_quantity": 20000
      },
      "OnSaleFlag": false,
      "Owner": "oaccount~76cb672eeb1bd535899562a840d0c15a356db89e24bc8b43ac1dba845a4282c6",
      "Price": 0,
      "Quantity": 1,
      "Roles": {
        "minter_role_name": "minter"
      },
      "TokenDesc": "",
      "TokenId": "nftToken",
      "TokenMetadata": {
        "Description": "",
        "Image": "",
        "PainterName": "",
        "PaintingName": ""
      },
      "TokenName": "artcollection",
      "TokenStandard": "erc1155+",
      "TokenType": "nonfungible",
      "TokenUnit": "whole",
      "TokenUri": "example.com"
    }
  }
]
OwnerOf
このメソッドは、指定されたトークンIDの所有者のアカウントID、組織IDおよびユーザーIDを返します。だれでもこのメソッドをコールできます。
func (t *Controller) OwnerOf(tokenId string) (interface{}, error) {
            return t.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を返します。だれでもこのメソッドをコールできます。
func (t *Controller) URI(tokenId string) (interface{}, error) {
            return t.Ctx.ERC1155Token.TokenURI(tokenId)
      }
パラメータ:
  • tokenId string – トークンのID。
戻り値
{
    "TokenUri": "example.com"
}
Name
このメソッドは、トークン・クラスの名前を返します。だれでもこのメソッドをコールできます。
func (t *Controller) Name(tokenId string) (interface{}, error) {
            return t.Ctx.ERC1155Token.Name(tokenId)
      }
パラメータ:
  • tokenId string – トークンのID。
戻り値
{"TokenName": "artcollection"}
TotalSupply
このメソッドは、ミントされたトークンの合計数を返します。代替可能トークンはトークンIDで指定されます。非代替トークンは、トークン名で指定されます。このメソッドは、チェーンコードのToken Adminのみがコールできます。
func (t *Controller) TotalSupply(tokenDetail erc1155Role.TokenDetail) (interface{}, error) {
            auth, err := t.Ctx.ERC1155Auth.CheckAuthorization("ERC1155Token.TotalSupply", "TOKEN")
            if err != nil && !auth {
                  return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
            }
            token, err := t.Ctx.ERC1155Token.GetTokenByIdOrName(tokenDetail)
            if err != nil {
                  return nil, err
            }
            return t.Ctx.ERC1155Token.TotalSupply(token)
      }
パラメータ:
  • tokenDetails erc1155Role.TokenDetail – トークンを指定する詳細。代替可能トークンの場合は、次の形式を使用します:
    {"TokenId":"token1"}
    非代替トークンの場合は、次の形式を使用します:
    {"TokenName":"artCollection"}
戻り値
{
    "TotalSupply": 100
}
TotalNetSupply
このメソッドは、ミントされたトークンの合計数からバーンされたトークンの数を引いた数を返します。代替可能トークンはトークンIDで指定されます。非代替トークンは、トークン名で指定されます。このメソッドは、チェーンコードのToken Adminのみがコールできます。
func (t *Controller) TotalNetSupply(tokenDetail erc1155Role.TokenDetail) (interface{}, error) {
            auth, err := t.Ctx.ERC1155Auth.CheckAuthorization("ERC1155Token.TotalNetSupply", "TOKEN")
            if err != nil && !auth {
                  return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
            }
            token, err := t.Ctx.ERC1155Token.GetTokenByIdOrName(tokenDetail)
            if err != nil {
                  return nil, err
            }
            return t.Ctx.ERC1155Token.TotalNetSupply(token)
      }
パラメータ:
  • tokenDetails erc1155Role.TokenDetail – トークンを指定する詳細。代替可能トークンの場合は、次の形式を使用します:
    {"TokenId":"token1"}
    非代替トークンの場合は、次の形式を使用します:
    {"TokenName":"artCollection"}
戻り値
{
   "TotalNetSupply": 900
}
GetTokensByName
このメソッドは、指定されたトークン名のすべてのトークン・アセットを返します。このメソッドでは、Berkeley DB SQLリッチ問合せが使用され、リモートOracle Blockchain Platformネットワークに接続されている場合にのみコールできます。このメソッドは、チェーンコードのToken Adminのみがコールできます。
func (t *Controller) GetTokensByName(tokenName string) (interface{}, error) {
            auth, err := t.Ctx.ERC1155Auth.CheckAuthorization("ERC1155Token.GetTokensByName", "TOKEN")
            if err != nil && !auth {
                  return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
            }
            return t.Ctx.ERC1155Token.GetTokensByName(tokenName)
      }
パラメータ:
  • tokenName: string – トークンの名前。
戻り値
[
  {
    "key": "tokenOne",
    "valueJson": {
      "AssetType": "otoken",
      "Behaviors": [
        "divisible",
        "mintable",
        "transferable",
        "roles"
      ],
      "Currency_name": "",
      "Divisible": {
        "Decimal": 2
      },
      "Mintable": {
        "Max_mint_quantity": 1000
      },
      "Roles": {
        "burner_role_name": "burner",
        "minter_role_name": "minter"
      },
      "TokenDesc": "",
      "TokenId": "tokenOne",
      "TokenName": "moneytok",
      "TokenStandard": "erc1155+",
      "TokenType": "fungible",
      "TokenUnit": "fractional",
      "Token_to_currency_ratio": 0
    }
  },
  {
    "key": "tokenTwo",
    "valueJson": {
      "AssetType": "otoken",
      "Behaviors": [
        "divisible",
        "mintable",
        "transferable",
        "roles"
      ],
      "Currency_name": "",
      "Divisible": {
        "Decimal": 2
      },
      "Mintable": {
        "Max_mint_quantity": 1000
      },
      "Roles": {
        "burner_role_name": "burner",
        "minter_role_name": "minter"
      },
      "TokenDesc": "",
      "TokenId": "tokenTwo",
      "TokenName": "moneytok",
      "TokenStandard": "erc1155+",
      "TokenType": "fungible",
      "TokenUnit": "fractional",
      "Token_to_currency_ratio": 0
    }
  }
]
GetTokenDecimal
このメソッドは、指定されたトークンの小数点以下の桁数を返します。このメソッドは、チェーンコードのToken Adminのみがコールできます。
func (t *Controller) GetTokenDecimal(tokenId string) (interface{}, error) {
            auth, err := t.Ctx.ERC1155Auth.CheckAuthorization("ERC1155Token.GetTokenDecimal", "TOKEN")
            if err != nil && !auth {
                  return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
            }
            tokenDecimal, err := t.Ctx.ERC1155Token.GetDecimals(tokenId)
            if err != nil {
                  return nil, fmt.Errorf("error in GetTokenDecimal: %s", err.Error())
            }
            response := make(map[string]interface{})
            response["msg"] = fmt.Sprintf("Token Id: %s has %d decimal places.", tokenId, tokenDecimal)
            return response, nil
      }
パラメータ:
  • tokenId string – トークンのID。
戻り値
{
    "msg": "Token Id: tokenOne has 2 decimal places."
}

アカウント管理のメソッド

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

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

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

ユーザーが所有できる非代替トークン・アカウントは1つのみです。非代替トークン・アカウントIDは一意であり、orgIdパラメータ、userIdパラメータおよびチルダ記号(~)で区切られた定数文字列nftのSHA-256ハッシュによって形成されます。ユーザーが所有するすべての非代替トークン(ホールまたはフラクショナル)は、このアカウントにリンクされます。

ユーザー・アカウントIDはouaccount~で始まります。トークン・アカウントIDはoaccount~で始まります。

func (t *Controller) CreateAccount(orgId string, userId string, ftAccount bool, nftAccount bool) (interface{}, error) {
            auth, err := t.Ctx.ERC1155Auth.CheckAuthorization("ERC1155Account.CreateAccount", "TOKEN")
            if err != nil && !auth {
                  return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
            }
            return t.Ctx.ERC1155Account.CreateAccount(orgId, userId, ftAccount, nftAccount)
      }
パラメータ:
  • orgId string – 現在の組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) ID。
  • userId string – ユーザーのユーザー名または電子メールID。
  • ftAccount bool – trueの場合、代替可能なトークン・アカウントが作成され、ユーザー・アカウントに関連付けられます。
  • nftAccount bool – 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のみがコールできます。

func (t *Controller) CreateUserAccount(orgId string, userId string) (interface{}, error) {
            auth, err := t.Ctx.ERC1155Auth.CheckAuthorization("ERC1155Account.CreateUserAccount", "TOKEN")
            if err != nil && !auth {
                  return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
            }
            return t.Ctx.ERC1155Account.CreateUserAccount(orgId, userId)
      }
パラメータ:
  • 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を持つ複数の代替可能トークン・アカウントを持つことができます。代替可能トークン・アカウントIDは、orgIdパラメータ、userIdパラメータ、チルダ記号(~)で区切られた定数文字列ft、およびチルダ記号(~)で区切られた作成中の代替可能アカウントの索引を示すカウンタ番号のSHA-256ハッシュによって形成されます。

ユーザーが所有できる非代替トークン・アカウントは1つのみです。非代替トークン・アカウントIDは一意であり、orgIdパラメータ、userIdパラメータおよびチルダ記号(~)で区切られた定数文字列nftのSHA-256ハッシュによって形成されます。ユーザーが所有するすべての非代替トークン(ホールまたはフラクショナル)は、このアカウントにリンクされます。

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

func (t *Controller) CreateTokenAccount(orgId string, userId string, tokenType erc1155Token.TokenType) (interface{}, error) {
            auth, err := t.Ctx.ERC1155Auth.CheckAuthorization("ERC1155Account.CreateTokenAccount", "TOKEN")
            if err != nil && !auth {
                  return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
            }
            typeOfToken, err := tokenType.GetTokenType()
          if err != nil {
                  return nil, err
            }
            return t.Ctx.ERC1155Account.CreateTokenAccount(orgId, userId, typeOfToken)
      }
パラメータ:
  • orgId string – 現在の組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) ID。
  • userId string – ユーザーのユーザー名または電子メールID。
  • tokenType erc1155Token.TokenType – 作成するトークン・アカウントのタイプ。サポートされているトークン・タイプは、nonfungibleおよびfungibleのみです。
戻り値:
  • 成功の場合、作成されたトークン・アカウントのJSONオブジェクト。
戻り値
{
    "AssetType": "ouaccount",
    "AccountId": "ouaccount~24ffd4d32a028a85b4b960f5d55536c837b5429bc7f346150adfa904ec2937cc",
    "UserId": "idcqa",
    "OrgId": "appdev",
    "TotalAccounts": 1,
    "TotalFtAccounts": 1,
    "AssociatedFtAccounts": [
        {
            "AccountId": "oaccount~1422a74d262a3a55a37cd9023ef8836f765d0be7b49d397696b9961d7434d22a",
            "TokenId": ""
        }
    ],
    "AssociatedNftAccount": ""
}
AssociateFungibleTokenAccount
このメソッドは、ユーザーの代替可能トークン・アカウントを特定の代替可能トークンに関連付けます。

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

func (t *Controller) AssociateFungibleTokenToAccount(orgId string, userId string, tokenId string) (interface{}, error) {
            accountId, err := t.Ctx.ERC1155Account.GenerateAccountId(orgId, userId, constants.UserAccount)
            if err != nil {
                  return nil, fmt.Errorf("error in generating accountId. Error: %s", err)
            }
            auth, err := t.Ctx.ERC1155Auth.CheckAuthorization("ERC1155Account.AssociateFungibleTokenToAccount", "TOKEN", map[string]string{"accountId": accountId})
            if err != nil && !auth {
                  return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
            }
            return t.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": "idcqa",
    "OrgId": "appdev",
    "TotalAccounts": 1,
    "TotalFtAccounts": 1,
    "AssociatedFtAccounts": [
        {
            "AccountId": "oaccount~1422a74d262a3a55a37cd9023ef8836f765d0be7b49d397696b9961d7434d22a",
            "TokenId": "tokenOne"
        }
    ],
    "AssociatedNftAccount": ""
}
GetAccountHistory
このメソッドは、指定されたトークン・アカウントの履歴を返します。これは非同期メソッドです。このメソッドは、チェーンコードのToken Adminまたはアカウント所有者のみがコールできます。
func (t *Controller) GetAccountHistory(orgId string, userId string, tokenId ...string) (interface{}, error) {
            userAccountId, err := t.Ctx.ERC1155Account.GenerateAccountId(orgId, userId, constants.UserAccount)
            if err != nil {
                  return nil, fmt.Errorf("error in GetAccountHistory. Error: %s", err)
            }
            _, err = t.Ctx.ERC1155Auth.CheckAuthorization("ERC1155Account.History", "TOKEN", map[string]string{"accountId": userAccountId})
            if err != nil {
                  return nil, fmt.Errorf("error in GetAccountHistory. Error: %s", err)
            }
            tokenAccount, err := t.Ctx.ERC1155Account.Get(userAccountId, tokenId...)
            if err != nil {
                  return nil, fmt.Errorf("error in GetAccountHistory. Error: %s", err)
            }
            tokenAccountId, err := util.GetAccountProperty(tokenAccount, constants.AccountId)
            if err != nil {
                  return nil, fmt.Errorf("error in GetAccountHistory. Error: %s", err)
            }
            return t.Ctx.ERC1155Account.GetAccountHistory(tokenAccountId)
      }
パラメータ:
  • orgId string – 現在の組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) ID。
  • userId string – ユーザーのユーザー名または電子メールID。
  • tokenId ...string – 非代替トークン・アカウントの場合、空の文字列。代替可能トークン・アカウントの場合、トークンID。
戻り値:
  • 成功の場合、アカウント履歴を記述するJSONオブジェクトの配列。
戻り値
[
    {
        "IsDelete": "false",
        "Timestamp": "2023-06-06T11:03:48Z",
        "TxId": "c5180f3be3d9130f25a4b4e866f38a4283117dcbfbffb4f55e2c5b03dba0dd29",
        "Value": {
            "AccountCategory": "",
            "AccountId": "oaccount~21206f309941a2a23c4f158a0fe1b8f12bb8e2b0c9a2e1358f5efebc0c7d410e",
            "AssetType": "oaccount",
            "Balance": 100,
            "BapAccountVersion": 1
            "OrgId": "appdev",
            "TokenId": "loy1",
            "TokenName": "loyalty",
            "TokenType": "fungible",
            "UserId": "idcqa"
        }
    },
    {
        "IsDelete": "false",
        "Timestamp": "2023-06-06T11:02:39Z",
        "TxId": "6f81b0c94b451d375a3892446aefbdf78d9fd1ac43699daa89f0dff10db5fd22",
        "Value": {
            "AccountCategory": "",
            "AccountId": "oaccount~21206f309941a2a23c4f158a0fe1b8f12bb8e2b0c9a2e1358f5efebc0c7d410e",
            "AssetType": "oaccount",
            "Balance": 0,
            "BapAccountVersion": 0
            "OrgId": "appdev",
            "TokenId": "loy1",
            "TokenName": "loyalty",
            "TokenType": "fungible",
            "UserId": "idcqa"
        }
    },
    {
        "IsDelete": "false",
        "Timestamp": "2023-06-05T16:28:46Z",
        "TxId": "8185af648546e909488e72149be497b210f74f95ada252c42da9c35cb9d98691",
        "Value": {
            "AccountCategory": "",
            "AccountId": "oaccount~21206f309941a2a23c4f158a0fe1b8f12bb8e2b0c9a2e1358f5efebc0c7d410e",
            "AssetType": "oaccount",
            "Balance": 0,
            "BapAccountVersion": 0
            "OrgId": "appdev",
            "TokenId": "",
            "TokenName": "",
            "TokenType": "fungible",
            "UserId": "idcqa"
        }
    }
]
GetAccount
このメソッドは、指定されたユーザーのトークン・アカウント詳細を返します。このメソッドは、チェーンコードのToken AdminまたはアカウントのAccount Ownerのみがコールできます。
func (t *Controller) GetAccount(orgId string, userId string, tokenId ...string) (interface{}, error) {
            accountId, err := t.Ctx.ERC1155Account.GenerateAccountId(orgId, userId, constants.UserAccount)
            if err != nil {
                  return nil, err
            }
            auth, err := t.Ctx.ERC1155Auth.CheckAuthorization("ERC1155Account.GetAccount", "TOKEN", map[string]string{"accountId": accountId})
            if err != nil && !auth {
                  return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
            }
            return t.Ctx.ERC1155Account.GetAccountWithStatus(accountId, tokenId...)
      }
パラメータ:
  • orgId string – 現在の組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) ID。
  • userId string – ユーザーのユーザー名または電子メールID。
  • tokenId ...string – 非代替トークン・アカウントの場合、空の文字列。代替可能トークン・アカウントの場合、トークンID。
戻り値:
  • 成功の場合、トークン・アカウントの詳細を含むJSONオブジェクト。BapAccountVersionおよびAccountCategoryパラメータは、内部使用のためにアカウント・オブジェクトで定義されます。
戻り値の例(非代替トークン・アカウント)
{
  "AccountId": "oaccount~cc301bee057f14236a97d434909ec1084970921b008f6baab09c2a0f5f419a9a",
  "AssetType": "oaccount",
  "BapAccountVersion": 1,
  "NoOfNfts": 1,
  "OrgId": "appdev",
  "Status": "active",
  "TokenType": "nonfungible",
  "UserId": "idcqa"
}
戻り値の例(代替可能トークン・アカウント)
{
  "AccountCategory": "",
  "AccountId": "oaccount~2de8db6b91964f8c9009136831126d3cfa94e1d00c4285c1ea3e6d1f36479ed4",
  "AssetType": "oaccount",
  "Balance": 0,
  "BapAccountVersion": 0,
  "OrgId": "appdev",
  "Status": "active",
  "TokenId": "t1",
  "TokenName": "loyalty",
  "TokenType": "fungible",
  "UserId": "idcqa"
}
GetAllAccounts
このメソッドは、すべてのユーザー・アカウントの詳細を返します。このメソッドは、チェーンコードのToken Adminのみがコールできます。
func (t *Controller) GetAllAccounts() (interface{}, error) {
            auth, err := t.Ctx.ERC1155Auth.CheckAuthorization("ERC1155Account.GetAllAccounts", "TOKEN")
            if err != nil && !auth {
                  return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
            }
            return t.Ctx.ERC1155Account.GetAllAccounts()
      }
パラメータ:
  • none
戻り値:
  • 成功の場合、すべてのアカウントのJSON配列。
戻り値
[
    {
        "AssetType": "ouaccount",
        "AccountId": "ouaccount~412de5e3998dcd100973e1bad6e8729fddc1c7ff610beab8376d733a35c51f38",
        "UserId": "idcqa",
        "OrgId": "appdev",
        "TotalAccounts": 3,
        "TotalFtAccounts": 2,
        "AssociatedFtAccounts": [
            {
                "AccountId": "oaccount~21206f309941a2a23c4f158a0fe1b8f12bb8e2b0c9a2e1358f5efebc0c7d410e",
                "TokenId": "loy1"
            },
            {
                "AccountId": "oaccount~58c5a6b09a41befca2a9ea2550439838c4dcf4d8a2a4f7c98e9319cf8479bfc4",
                "TokenId": ""
            }
        ],
        "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
このメソッドは、指定されたユーザーのアカウント・サマリーと、ユーザーに関連付けられた代替可能トークンおよび非代替トークンの詳細を返します。このメソッドは、チェーンコードのToken AdminまたはアカウントのAccount Ownerのみがコールできます。
func (t *Controller) GetAccountDetailsByUser(orgId string, userId string) (interface{}, error) {
            accountId, err := t.Ctx.ERC1155Account.GenerateAccountId(orgId, userId, constants.UserAccount)
            if err != nil {
                  return nil, err
            }
            auth, err := t.Ctx.ERC1155Auth.CheckAuthorization("ERC1155Account.GetAccountDetailsByUser", "TOKEN", map[string]string{"accountId": accountId})
            if err != nil && !auth {
                  return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
            }
            return t.Ctx.ERC1155Account.GetAccountDetailsByUser(orgId, userId)
      }
パラメータ:
  • orgId string – 現在の組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) ID。
  • userId string – ユーザーのユーザー名または電子メールID。
戻り値:
  • 成功の場合、指定されたユーザーのアカウント・サマリー、およびユーザーに関連付けられている代替可能トークンと非代替トークンの詳細を含むJSONアカウント・オブジェクト。フラクショナル非代替トークンの場合、AssociatedNFTsセクションのTokenShareプロパティには、ユーザーが所有するシェアが示されます。
戻り値
{
    "AssociatedFTAccounts": [
        {
            "AccountId": "oaccount~21206f309941a2a23c4f158a0fe1b8f12bb8e2b0c9a2e1358f5efebc0c7d410e",
            "Balance": 90,
          "TokenId": "FT"
        },
    ],
    "AssociatedNFTAccount": {
        "AccountId": "oaccount~e88276a3be547e31b567346bdddde52d37734da4d5fae83ab2e5c98a10097371",
        "AssociatedNFTs": [
            {
              "NFTTokenId": "FNFT",
                "TokenShare": 230
            },
            {
              "NFTTokenId": "NFT"
            },
            {
              "NFTTokenId": "NFT2"
            }
        ]
    },
    "UserAccountId": "ouaccount~412de5e3998dcd100973e1bad6e8729fddc1c7ff610beab8376d733a35c51f38"
}
GetUserByAccountId
このメソッドは、指定されたアカウントIDのユーザーの詳細を返します。このメソッドは、どのユーザーでもコールできます。
func (t *Controller) GetUserByAccountId(accountId string) (interface{}, error) {
            return t.Ctx.ERC1155Account.GetUserByAccountById(accountId)
      }
パラメータ:
  • accountId string – アカウントのID。
戻り値:
  • 成功の場合、ユーザー詳細のJSONオブジェクト(orgIdおよびuserId)。
戻り値
{
    "OrgId": "appdev",
    "UserId": "user2"
}

ロール管理のメソッド

AddRole
このメソッドは、指定されたユーザーおよびトークンにロールを追加します。このメソッドは、チェーンコードのToken Adminのみがコールできます。代替可能トークンはトークンIDで指定されます。非代替トークンは、トークン名で指定されます。指定されたユーザーには、代替可能トークンに関連付けられたトークン・アカウント、またはNFTロールの非代替トークン・アカウントが必要です。トークンの仕様ファイルに、指定されたロールが存在する必要があります。
func (t *Controller) AddRole(orgId string, userId string, role string, tokenDetail erc1155Role.TokenDetail) (interface{}, error) {
            userAccountId, err := t.Ctx.ERC1155Account.GenerateAccountId(orgId, userId, constants.UserAccount)
            if err != nil {
                  return nil, err
            }
            auth, err := t.Ctx.ERC1155Auth.CheckAuthorization("ERC1155Token.AddRoleMember", "TOKEN", map[string]string{"accountId": userAccountId})
            if err != nil && !auth {
                  return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
            }
            token, err := t.Ctx.ERC1155Token.GetTokenByIdOrName(tokenDetail)
            if err != nil {
                  return nil, err
            }
            return t.Ctx.ERC1155Token.AddRoleMember(role, userAccountId, token)
      }
パラメータ:
  • orgId string – 現在の組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) ID。
  • userId string – ユーザーのユーザー名または電子メールID。
  • role: string – 指定したユーザーに追加するロールの名前。
  • tokenDetails erc1155Role.TokenDetail – トークンを指定する詳細。代替可能トークンの場合は、次の形式を使用します:
    {"TokenId":"token1"}
    非代替トークンの場合は、次の形式を使用します:
    {"TokenName":"artCollection"}
戻り値:
  • 成功の場合、アカウント詳細を含むメッセージ。
戻り値
{
    "msg": "Successfully added role minter to oaccount~1422a74d262a3a55a37cd9023ef8836f765d0be7b49d397696b9961d7434d22a (orgId : appdev, userId : idcqa)"
}
IsInRole
このメソッドは、ユーザーに指定されたロールがあるかどうかを示すブール値を返します。代替可能トークンはトークンIDで指定されます。非代替トークンは、トークン名で指定されます。このメソッドは、チェーンコードのToken AdminまたはアカウントのAccountOwnerのみがコールできます。指定されたユーザーには、代替可能トークンに関連付けられたトークン・アカウント、またはNFTロールの非代替トークン・アカウントが必要です。トークンの仕様ファイルに、指定されたロールが存在する必要があります。
func (t *Controller) IsInRole(orgId string, userId string, role string, tokenDetail erc1155Role.TokenDetail) (interface{}, error) {
            userAccountId, err := t.Ctx.ERC1155Account.GenerateAccountId(orgId, userId, constants.UserAccount)
            if err != nil {
                  return nil, err
            }
            auth, err := t.Ctx.ERC1155Auth.CheckAuthorization("ERC1155Token.IsInRole", "TOKEN")
            if err != nil && !auth {
                  return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
            }
            token, err := t.Ctx.ERC1155Token.GetTokenByIdOrName(tokenDetail)
            if err != nil {
                  return nil, err
            }
            var result bool
            result, err = t.Ctx.ERC1155Token.IsInRole(role, userAccountId, token)
            if err != nil {
                  return nil, fmt.Errorf("error in IsInRole %s", err.Error())
            }
            response := make(map[string]interface{})
            response["result"] = result
            return response, nil
      }
パラメータ:
  • orgId string – 現在の組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) ID。
  • userId string – ユーザーのユーザー名または電子メールID。
  • role: string – 検索するロールの名前。
  • tokenDetails erc1155Role.TokenDetail – トークンを指定する詳細。代替可能トークンの場合は、次の形式を使用します:
    {"TokenId":"token1"}
    非代替トークンの場合は、次の形式を使用します:
    {"TokenName":"artCollection"}
戻り値
{
    "result": true
}
RemoveRole
このメソッドは、指定されたユーザーおよびトークンからロールを削除します。代替可能トークンはトークンIDで指定されます。非代替トークンは、トークン名で指定されます。このメソッドは、チェーンコードのToken Adminのみがコールできます。指定されたユーザーには、代替可能トークンに関連付けられたトークン・アカウント、またはNFTロールの非代替トークン・アカウントが必要です。トークンの仕様ファイルに、指定されたロールが存在する必要があります。
func (t *Controller) RemoveRole(orgId string, userId string, role string, tokenDetail erc1155Role.TokenDetail) (interface{}, error) {
            userAccountId, err := t.Ctx.ERC1155Account.GenerateAccountId(orgId, userId, constants.UserAccount)
            if err != nil {
                  return nil, err
            }
            auth, err := t.Ctx.ERC1155Auth.CheckAuthorization("ERC1155Token.RemoveRoleMember", "TOKEN")
            if err != nil && !auth {
                  return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
            }
            token, err := t.Ctx.ERC1155Token.GetTokenByIdOrName(tokenDetail)
            if err != nil {
                  return nil, err
            }
            return t.Ctx.ERC1155Token.RemoveRoleMember(role, userAccountId, token)
      }
パラメータ:
  • orgId string – 現在の組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) ID。
  • userId string – ユーザーのユーザー名または電子メールID。
  • role: string – 指定したユーザーから削除するロールの名前。
  • tokenDetails erc1155Role.TokenDetail – トークンを指定する詳細。代替可能トークンの場合は、次の形式を使用します:
    {"TokenId":"token1"}
    非代替トークンの場合は、次の形式を使用します:
    {"TokenName":"artCollection"}
戻り値
{
    "msg": "Successfully removed role 'minter' from Account Id: oaccount~ec7e4de2f81e3ea071710e07b6ff7d9346e84ef665ca4650885dbe8c3e2bd4c0 (Org-Id: appdev, User-Id: idcqa)"
}
GetAccountsByRole
このメソッドは、指定されたロールおよびトークンのすべてのアカウントIDのリストを返します。代替可能トークンはトークンIDで指定されます。非代替トークンは、トークン名で指定されます。このメソッドは、チェーンコードのToken Adminのみがコールできます。
func (t *Controller) GetAccountsByRole(role string, tokenDetail erc1155Role.TokenDetail) (interface{}, error) {
            auth, err := t.Ctx.ERC1155Auth.CheckAuthorization("ERC1155Role.GetAccountsByRole", "TOKEN")
            if err != nil && !auth {
                  return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
            }
            token, err := t.Ctx.ERC1155Token.GetTokenByIdOrName(tokenDetail)
            if err != nil {
                  return nil, err
            }
            return t.Ctx.ERC1155Role.GetAccountsByRole(role, token)
      }
パラメータ:
  • role: string – 検索するロールの名前。
  • tokenDetails erc1155Role.TokenDetail – トークンを指定する詳細。代替可能トークンの場合は、次の形式を使用します:
    {"TokenId":"token1"}
    非代替トークンの場合は、次の形式を使用します:
    {"TokenName":"artCollection"}
戻り値
{
    "accounts": [
        "oaccount~1422a74d262a3a55a37cd9023ef8836f765d0be7b49d397696b9961d7434d22a",
        "oaccount~60bb20c14a83f6e426e1437c479c5891e1c6477dfd7ad18b73acac5d80bc504b"
    ]
}
GetUsersByRole
このメソッドは、指定されたロールおよびトークンのすべてのユーザーのリストを返します。代替可能トークンはトークンIDで指定されます。非代替トークンは、トークン名で指定されます。このメソッドは、チェーンコードのToken Adminのみがコールできます。
func (t *Controller) GetUsersByRole(role string, tokenDetail erc1155Role.TokenDetail) (interface{}, error) {
            auth, err := t.Ctx.ERC1155Auth.CheckAuthorization("ERC1155Role.GetUsersByRole", "TOKEN")
            if err != nil && !auth {
                  return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
            }
            token, err := t.Ctx.ERC1155Token.GetTokenByIdOrName(tokenDetail)
            if err != nil {
                  return nil, err
            }
            return t.Ctx.ERC1155Role.GetUsersByRole(role, token)
      }
パラメータ:
  • role: string – 検索するロールの名前。
  • tokenDetails erc1155Role.TokenDetail – トークンを指定する詳細。代替可能トークンの場合は、次の形式を使用します:
    {"TokenId":"token1"}
    非代替トークンの場合は、次の形式を使用します:
    {"TokenName":"artCollection"}
戻り値
{
    "Users": [
        {
            "AccountId": "oaccount~1422a74d262a3a55a37cd9023ef8836f765d0be7b49d397696b9961d7434d22a",
            "OrgId": "appdev",
            "UserId": "idcqa"
        },
        {
            "AccountId": "oaccount~60bb20c14a83f6e426e1437c479c5891e1c6477dfd7ad18b73acac5d80bc504b",
            "OrgId": "appdev",
            "UserId": "user1"
        }
    ]
}

トランザクション履歴管理のメソッド

GetAccountTransactionHistory
このメソッドは、アカウント・トランザクション履歴を返します。このメソッドは、チェーンコードのToken Adminまたはアカウント所有者のみがコールできます。非代替トークンの場合、このメソッドはリモートのOracle Blockchain Platformネットワークに接続されている場合にのみコールできます。
func (t *Controller) GetAccountTransactionHistory(orgId string, userId string, tokenId ...string) (interface{}, error) {
            userAccountId, err := t.Ctx.ERC1155Account.GenerateAccountId(orgId, userId, constants.UserAccount)
            if err != nil {
                  return nil, fmt.Errorf("error in GetAccountTransactionHistory. Error: %s", err)
            }
            auth, err := t.Ctx.ERC1155Auth.CheckAuthorization("ERC1155Account.GetAccountTransactionHistory", "TOKEN", map[string]string{"accountId": userAccountId})
            if err != nil && !auth {
                  return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
            }
            tokenAccount, err := t.Ctx.ERC1155Account.Get(userAccountId, tokenId...)
            if err != nil {
                  return nil, fmt.Errorf("error in GetAccountTransactionHistory. Error: %s", err)
            }
            tokenAccountId, err := util.GetAccountProperty(tokenAccount, constants.AccountId)
            if err != nil {
                  return nil, fmt.Errorf("error in GetAccountTransactionHistory. Error: %s", err)
            }
            return t.Ctx.ERC1155Account.GetAccountTransactionHistory(tokenAccountId)
      }
パラメータ:
  • orgId string – 現在の組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) ID。
  • userId string – ユーザーのユーザー名または電子メールID。
  • tokenId ...string – 非代替トークン・アカウントの場合、空の文字列。代替可能トークン・アカウントの場合、トークンID。
戻り値
[
    {
        "Balance": 90,
        "Timestamp": "2023-06-06T11:11:09Z",
        "TokenId": "FNFT",
        "TransactedAccount": "oaccount~dcee860665db8740cb77b846e823752185a1e9a185814d0acb305890f5903446",
        "TransactedAmount": 10,
        "TransactionId": "otransaction~0f4d96fbf8fed88ea8a3133428977721091467c701848d595ebc3fffa88b3657~7c88c736df38d5622512f1e8dcdd50710eb47c953f1ecb24ac44790a9e2f475b",
        "TransactionType": "DEBIT",
        "TriggeredByUserAccountId": "ouaccount~412de5e3998dcd100973e1bad6e8729fddc1c7ff610beab8376d733a35c51f38"
    },
    {
        "Timestamp": "2023-06-06T11:11:09Z",
        "TokenId": "NFT",
        "TransactedAccount": "oaccount~dcee860665db8740cb77b846e823752185a1e9a185814d0acb305890f5903446",
        "TransactionId": "otransaction~0f4d96fbf8fed88ea8a3133428977721091467c701848d595ebc3fffa88b3657~178e3730bc5bee50d02f1464a4eebf733a051905f651e5789039adb4a3edc114",
        "TransactionType": "DEBIT",
        "TriggeredByUserAccountId": "ouaccount~412de5e3998dcd100973e1bad6e8729fddc1c7ff610beab8376d733a35c51f38"
    },
    {
        "Timestamp": "2023-06-06T11:06:54Z",
        "TokenId": "NFT",
        "TransactedAccount": "oaccount~e88276a3be547e31b567346bdddde52d37734da4d5fae83ab2e5c98a10097371",
        "TransactionId": "otransaction~6a13667ea3f6edc4c854e85b127526eccb58783f653c348b42a3869f0f29a4fb~a7cefb22ff39ee7e36967be71de27da6798548c872061a62dabc56d88d50b930",
        "TransactionType": "MINT",
        "TriggeredByUserAccountId": "ouaccount~412de5e3998dcd100973e1bad6e8729fddc1c7ff610beab8376d733a35c51f38"
    },
    {
        "Balance": 100,
        "Timestamp": "2023-06-05T16:34:33Z",
        "TokenId": "FNFT",
        "TransactedAccount": "oaccount~e88276a3be547e31b567346bdddde52d37734da4d5fae83ab2e5c98a10097371",
        "TransactedAmount": 100,
        "TransactionId": "otransaction~2bc15de1766d582d821bd8d61756bca02837dc683c0aa61f69657ccd1d95e335~e4eb15d9354f694230df8835ade012100d82aa43672896a2c7125a86e3048f9f",
        "TransactionType": "MINT",
        "TriggeredByUserAccountId": "ouaccount~412de5e3998dcd100973e1bad6e8729fddc1c7ff610beab8376d733a35c51f38"
    }
]
GetTransactionById
このメソッドは、指定されたトランザクションIDのトランザクション詳細を返します。だれでもこのメソッドをコールできます。
func (t *Controller) GetTransactionById(transactionId string) (interface{}, error) {
            return t.Ctx.ERC1155Transaction.GetTransactionById(transactionId)
      }
パラメータ:
  • transactionId: string – トランザクションのID。
戻り値
{
    "history": [
        {
            "IsDelete": "false",
            "Timestamp": "2022-12-08T10:45:56Z",
            "TxId": "2da02a53aa1032602df6c68c5628a4ab8b22ba107c0201520ce495948901aa98",
            "Value": {
                "Amount": 5,
                "AssetType": "otransaction",
                "FromAccountId": "oaccount~60bb20c14a83f6e426e1437c479c5891e1c6477dfd7ad18b73acac5d80bc504b",
                "Timestamp": "2022-12-08T10:45:56Z",
                "ToAccountId": "oaccount~1422a74d262a3a55a37cd9023ef8836f765d0be7b49d397696b9961d7434d22a",
                "TokenId": "tokenOne",
                "TransactionId": "otransaction~2da02a53aa1032602df6c68c5628a4ab8b22ba107c0201520ce495948901aa98~9c3ce5f21abd98ca018c196086d73a812f2f49dba323f1de4f6867eecfeec8ff",
                "TransactionType": "TRANSFER",
                "TriggeredByUserAccountId": "ouaccount~24ffd4d32a028a85b4b960f5d55536c837b5429bc7f346150adfa904ec2937cc"
            }
        }
    ],
    "transactionId": "otransaction~2da02a53aa1032602df6c68c5628a4ab8b22ba107c0201520ce495948901aa98~9c3ce5f21abd98ca018c196086d73a812f2f49dba323f1de4f6867eecfeec8ff"
}
DeleteHistoricalTransactions
このメソッドは、指定したタイムスタンプより前のトランザクションを状態データベースから削除します。このメソッドは、チェーンコードのToken Adminのみがコールできます。
func (t *Controller) DeleteHistoricalTransactions(timestamp string) (interface{}, error) {
            auth, err := t.Ctx.ERC1155Auth.CheckAuthorization("ERC1155Transaction.DeleteHistoricalTransactions", "TOKEN")
            if err != nil && !auth {
                  return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
            }
            return t.Ctx.ERC1155Transaction.DeleteHistoricalTransactions(timestamp)
      }
パラメータ:
  • timestamp: string – このタイムスタンプより前のすべてのトランザクションが削除されます。
戻り値
{
    "Transactions": [
        "otransaction~750f68538451847f57948f7d5261dcb81570cd9e429f928a4cb7bfa76392ecf7"
    ],
    "msg": "Successfuly deleted transaction older than date:2022-04-06T08:17:53Z"
}

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

MintBatch
このメソッドは、バッチ操作で複数のトークンを作成(ミント)します。このメソッドは、代替可能トークンまたはフラクショナル非代替トークンのみを作成します。

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

非代替トークンの場合、ミンター・ロールが仕様ファイルに定義されていれば、ミンター・ロールを持つすべてのユーザーがこのメソッドをコールできます。そうでない場合は、どのユーザーもこのメソッドを使用してトークンをミントできます。また、コール元はトークンの作成者でもある必要があります。ミントできるフラクショナル非代替トークンの数量に上限はありません。

このメソッドを使用して、ホール非代替トークンをミントすることはできません。

func (t *Controller) MintBatch(orgId string, userId string, tokenIds []string, quantity []float64) (interface{}, error) {
            accountId, err := t.Ctx.ERC1155Account.GenerateAccountId(orgId, userId, constants.UserAccount)
            if err != nil {
                  return nil, fmt.Errorf("error in generating the accountId. Error: %s", err)
            }
            var tokens []interface{}
            for _, tokenId := range tokenIds {
                  tokenAssetValue, err := t.getTokenObject(tokenId)
                  if err != nil {
                        return nil, err
                  }
                  tokens = append(tokens, tokenAssetValue.Interface())
            }
            return t.Ctx.ERC1155Token.MintBatch(accountId, tokens, quantity)
      }
パラメータ:
  • orgId string – 現在の組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) ID。
  • userId string – ユーザーのユーザー名または電子メールID。
  • tokenIds []string – トークンをミントするトークンIDのリスト。
  • quantity []float64 – ミントするトークンの数量のリストで、トークンID配列に対応します。
戻り値:
  • 成功の場合、ミントされたトークンの詳細を含むJSONオブジェクト。
戻り値
{
    "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'"
        }
    ],
    "msg": "Successfully minted batch of tokens for User-Account-Id 'ouaccount~412de5e3998dcd100973e1bad6e8729fddc1c7ff610beab8376d733a35c51f38' (Org-Id: 'appdev', User-Id: 'idcqa')"
}

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

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

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

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

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

func (t *Controller) BatchTransferFrom(fromOrgId string, fromUserId string, toOrgId string, toUserId string, tokenIds []string, quantity []float64) (interface{}, error) {
            fromAccountId, err := t.Ctx.ERC1155Account.GenerateAccountId(fromOrgId, fromUserId, constants.UserAccount)
            if err != nil {
                  return nil, fmt.Errorf("error in BatachTransferFrom. Error: %s", err)
            }
            toAccountId, err := t.Ctx.ERC1155Account.GenerateAccountId(toOrgId, toUserId, constants.UserAccount)
            if err != nil {
                  return nil, fmt.Errorf("error in BatachTransferFrom. Error: %s", err)
            }
            var tokens []interface{}
            for _, tokenId := range tokenIds {
                  tokenAssetValue, err := t.getTokenObject(tokenId)
                  if err != nil {
                        return nil, err
                  }
                  tokens = append(tokens, tokenAssetValue.Interface())
            }
            return t.Ctx.ERC1155Token.BatchTransferFrom(fromAccountId, toAccountId, tokens, quantity)
      }
パラメータ:
  • fromOrgId string – 現在の組織内の送信者およびトークン所有者のメンバーシップ・サービス・プロバイダ(MSP) ID。
  • fromUserId string – 送信者およびトークン所有者のユーザー名または電子メールID。
  • toOrgId string – 現在の組織内の受信者のメンバーシップ・サービス・プロバイダ(MSP) ID。
  • toUserId string – 受信者のユーザー名または電子メールID。
  • tokenIds string[] – 転送するトークンのトークンIDのリスト。
  • quantity float64[] – 転送するトークンの数量のリストで、トークン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人になります。

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

func (t *Controller) SafeBatchTransferFrom(fromOrgId string, fromUserId string, toOrgId string, toUserId string, tokenIds []string, quantity []float64) (interface{}, error) {
            fromAccountId, err := t.Ctx.ERC1155Account.GenerateAccountId(fromOrgId, fromUserId, constants.UserAccount)
            if err != nil {
                  return nil, fmt.Errorf("error in BatachTransferFrom. Error: %s", err)
            }
            toAccountId, err := t.Ctx.ERC1155Account.GenerateAccountId(toOrgId, toUserId, constants.UserAccount)
            if err != nil {
                  return nil, fmt.Errorf("error in BatachTransferFrom. Error: %s", err)
            }
            var tokens []interface{}
            for _, tokenId := range tokenIds {
                  tokenAssetValue, err := t.getTokenObject(tokenId)
                  if err != nil {
                        return nil, err
                  }
                  tokens = append(tokens, tokenAssetValue.Interface())
            }
            return t.Ctx.ERC1155Token.SafeBatchTransferFrom(fromAccountId, toAccountId, tokens, quantity)
      }
パラメータ:
  • fromOrgId string – 現在の組織内の送信者およびトークン所有者のメンバーシップ・サービス・プロバイダ(MSP) ID。
  • fromUserId string – 送信者およびトークン所有者のユーザー名または電子メールID。
  • toOrgId string – 現在の組織内の受信者のメンバーシップ・サービス・プロバイダ(MSP) ID。
  • toUserId string – 受信者のユーザー名または電子メールID。
  • tokenIds string[] – 転送するトークンのトークンIDのリスト。
  • quantity float64[] – 転送するトークンの数量のリストで、トークン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またはアカウント所有者のみがコールできます。アカウント所有者は、自分が所有するアカウントの残高詳細のみを表示できます。
func (t *Controller) BalanceOfBatch(orgIds []string, userIds []string, tokenIds []string) (interface{}, error) {
            callerAccountCheck := false
            _, err := t.Ctx.ERC1155Auth.CheckAuthorization("ERC1155Account.BalanceOfBatch", "TOKEN")
            if err != nil {
                  callerAccountCheck = true
            }
            accountIds, err := t.Ctx.ERC1155Account.GenerateAccountIds(orgIds, userIds, callerAccountCheck)
            if err != nil {
                  return nil, fmt.Errorf("error in BalanceOfBatch. Error: %s", err)
            }
            var tokens []interface{}
            for _, tokenId := range tokenIds {
                  tokenAssetValue, err := t.getTokenObject(tokenId)
                  if err != nil {
                        tokens = append(tokens, map[string]interface{}{"TokenId": tokenId})
                  } else {
                        tokens = append(tokens, tokenAssetValue.Interface())
                  }
            }
            return t.Ctx.ERC1155Account.BalanceOfBatch(accountIds, tokens)
      }
パラメータ:
  • orgIds []string – 現在の組織のメンバーシップ・サービス・プロバイダ(MSP) IDのリスト。
  • userIds []string – ユーザー名または電子メールIDのリスト。
  • tokenIds []string – トークンIDのリスト。
戻り値の例:

次の例では、トークンID FNFTはフラクショナル非代替トークンを表し、トークンID FTは代替可能トークンを表します。

[
    {
        "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との間の交換のみをサポートします。このメソッドは、アカウント所有者のみがコールできます。
func (t *Controller) ExchangeToken(fromTokenId string, fromOrgId string, fromUserId string, fromTokenQuantity float64, toTokenId string, toOrgId string, toUserId string, toTokenQuantity float64) (interface{}, error) {
            fromUserAccountId, err := t.Ctx.ERC1155Account.GenerateAccountId(fromOrgId, fromUserId, constants.UserAccount)
            if err != nil {
                  return nil, fmt.Errorf("error in BatachTransferFrom. Error: %s", err)
            }
            auth, err := t.Ctx.ERC1155Auth.CheckAuthorization("ERC1155Account.ExchangeToken", "TOKEN", map[string]string{"accountId": fromUserAccountId})
            if err != nil && !auth {
                  return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
            }
            toUserAccountId, err := t.Ctx.ERC1155Account.GenerateAccountId(toOrgId, toUserId, constants.UserAccount)
            if err != nil {
                  return nil, fmt.Errorf("error in BatachTransferFrom. Error: %s", err)
            }
            return t.Ctx.ERC1155Token.ExchangeToken(fromTokenId, fromUserAccountId, fromTokenQuantity, toTokenId, toUserAccountId, toTokenQuantity)
      }
パラメータ:
  • fromTokenId string – 送信者が所有するトークンのID。
  • fromOrgId string – 現在の組織内の送信者のメンバーシップ・サービス・プロバイダ(MSP) ID。
  • fromUserId string – 送信者のユーザー名または電子メールID。
  • fromTokenQuantity float64 – 受信者と交換する送信者からのトークンの数量。
  • toTokenId string – 受信者が所有するトークンのID。
  • toOrgId string – 現在の組織内の受信者のメンバーシップ・サービス・プロバイダ(MSP) ID。
  • toUserId string – 受信者のユーザー名または電子メールID。
  • toTokenQuantity float64 – 送信者と交換する受信者からのトークンの数量。
戻り値:
  • 成功の場合、トークン交換の詳細を含むメッセージ。
戻り値
{
    "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
このメソッドは、指定された代替可能トークンおよび非代替トークンを非アクティブ化(バーン)します。すべてのユーザーがこのメソッドをコールできます。
func (t *Controller) BurnBatch(orgId string, userId string, tokenIds []string, quantity []float64) (interface{}, error) {
            accountId, err := t.Ctx.ERC1155Account.GenerateAccountId(orgId, userId, constants.UserAccount)
            if err != nil {
                  return nil, fmt.Errorf("error in BatachTransferFrom. Error: %s", err)
            }
            var tokens []interface{}
            for _, tokenId := range tokenIds {
                  tokenAssetValue, err := t.getTokenObject(tokenId)
                  if err != nil {
                        return nil, err
                  }
                  tokens = append(tokens, tokenAssetValue.Interface())
            }
            return t.Ctx.ERC1155Token.Burn(accountId, tokens, quantity)
      }
パラメータ:
  • orgId string – 現在の組織のメンバーシップ・サービス・プロバイダ(MSP) ID。
  • userId string – ユーザー名または電子メールID。
  • tokenIds []string – バーンするトークンIDのリスト
  • quantity []float64 – バーンするトークンの数量のリストで、トークンID配列に対応します。
戻り値:
  • 成功の場合、バーン操作の詳細を含むメッセージ。
戻り値
[
    {
        "msg": "Successfully burned NFT token: 'art' from Account-Id: oaccount~76cb672eeb1bd535899562a840d0c15a356db89e24bc8b43ac1dba845a4282c6 (Org-Id: appdev, User-Id: idcqa)"
    },
    {
        "msg": "Successfully burned 2 tokens of tokenId: FT from Account-ID oaccount~9a940587fd322ccc8400233244cd3b13f3aa2a52e418e4c71fb819a2217bc49e (Org-Id: AutoF1377358917, User-Id: idcqa)"
    },
    {
        "msg": "Successfully burned 2 token share of tokenId: FNFT from Account-ID oaccount~87bcb699d507368ee3966cd03ee6d7736ffc55dde8c0f0e16b14866334ac504a (Org-Id: AutoF1377358917, User-Id: idcqa)"
    }
]
BurnNFT
このメソッドは、指定された非代替トークンを非アクティブ化(バーン)し、トークン・オブジェクトおよびトークン履歴を返します。バーナー・ロールを持つすべてのユーザーがこのメソッドをコールできます。
func (t *Controller) BurnNFT(orgId string, userId string, tokenId string) (interface{}, error) {
            tokenAsset, err := t.Ctx.ERC1155Token.Get(tokenId)
            if err != nil {
                  return nil, err
            }
            token := tokenAsset.(map[string]interface{})
            if token[constants.TokenType] != constants.NonFungible {
                  return nil, fmt.Errorf("only nonfungible tokens are allowed")
            }
            if token[constants.IsBurned] == true {
                  return nil, fmt.Errorf("token with tokenId %s is already burned", tokenId)
            }
            tokenQuantity := float64(1)
            tokenUnit := token[constants.TokenUnit]
            tokenHistory, err := t.Ctx.ERC1155Token.History(tokenId)
            if err != nil {
                  return nil, err
            }
            if tokenUnit == constants.Fractional {
                  owners, err := t.Ctx.ERC1155Token.OwnerOf(tokenId)
                  if err != nil {
                        return nil, err
                  }
                  ownersList := owners.([]map[string]interface{})
                  if len(ownersList) != 1 {
                        return nil, fmt.Errorf("NFT has multiple owners, to completely burn this NFT it should have only one owner")
                  }
                  tokenQuantity = token[constants.Quantity].(float64)
            }
            token[constants.TokenId], err = strconv.Atoi(token[constants.TokenId].(string))
            if err != nil {
                  return nil, fmt.Errorf("tokenId is expected to be integer but found %s", tokenId)
            }
            tokenHistoryBytes, err := json.Marshal(tokenHistory)
            if err != nil {
                  return nil, err
            }
            var tokenHistoryAsRawJson json.RawMessage
            err = json.Unmarshal(tokenHistoryBytes, &tokenHistoryAsRawJson)
            if err != nil {
                  return nil, err
            }
            token[constants.TokenHistory] = string(tokenHistoryAsRawJson)
            tokenIds := []string{tokenId}
            tokenQuantities := []float64{tokenQuantity}
            token[constants.IsBurned] = true
            _, err = t.BurnBatch(orgId, userId, tokenIds, tokenQuantities)
            if err != nil {
                  return nil, err
            }
            return token, nil
      }
パラメータ:
  • orgId: string – 現在の組織のメンバーシップ・サービス・プロバイダ(MSP) ID。
  • userId: string – ユーザー名または電子メールID。
  • tokenId: string – バーンする非代替トークンのID
戻り値:
  • 成功の場合、トークン履歴情報を含むJSON形式のトークン・オブジェクト。
戻り値
{
    "AssetType": "otoken",
    "Behaviors": [
        "indivisible",
        "singleton",
        "mintable",
        "transferable",
        "burnable",
        "roles"
    ],
    "CreatedBy": "oaccount~42e89f4c72dfde9502814876423c6da630d466e87436dd1aae201d347ad1288d",
    "CreationDate": "2023-08-22T13:14:46+05:30",
    "IsBurned": true,
    "Mintable": {
        "Max_mint_quantity": 20000
    },
    "On_sale_flag": false,
    "Owner": "oaccount~42e89f4c72dfde9502814876423c6da630d466e87436dd1aae201d347ad1288d",
    "Price": 120,
    "Quantity": 1,
    "Roles": {
        "minter_role_name": "minter"
    },
    "TokenDesc": "",
    "TokenHistory": "[{\"IsDelete\":\"false\",\"Timestamp\":\"2023-08-22T13:14:46+05:30\",\"TxId\":\"c0ea212f19197c5b86323bfca11c6ca545aa0af5d40cd04f9e955b5371fd40ae\",\"Value\":{\"AssetType\":\"otoken\",\"Behaviors\":[\"indivisible\",\"singleton\",\"mintable\",\"transferable\",\"burnable\",\"roles\"],\"CreatedBy\":\"oaccount~42e89f4c72dfde9502814876423c6da630d466e87436dd1aae201d347ad1288d\",\"CreationDate\":\"2023-08-22T13:14:46+05:30\",\"IsBurned\":false,\"Mintable\":{\"Max_mint_quantity\":20000},\"On_sale_flag\":false,\"Owner\":\"oaccount~42e89f4c72dfde9502814876423c6da630d466e87436dd1aae201d347ad1288d\",\"Price\":120,\"Quantity\":1,\"Roles\":{\"minter_role_name\":\"minter\"},\"TokenDesc\":\"\",\"TokenId\":\"1\",\"TokenMetadata\":{\"Description\":\"\",\"Image\":\"\",\"Painter_name\":\"\",\"Painting_name\":\"\"},\"TokenName\":\"artcollection\",\"TokenStandard\":\"erc1155+\",\"TokenType\":\"nonfungible\",\"TokenUnit\":\"whole\",\"TokenUri\":\"example.com\"}}]",
    "TokenId": 1,
    "TokenMetadata": {
        "Description": "",
        "Image": "",
        "Painter_name": "",
        "Painting_name": ""
    },
    "TokenName": "artcollection",
    "TokenStandard": "erc1155+",
    "TokenType": "nonfungible",
    "TokenUnit": "whole",
    "TokenUri": "example.com"
}

SDKメソッド

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

CheckAuthorization
このメソッドは、操作にアクセス制御チェックを追加するために使用します。これは非同期関数です。自動生成されるほとんどのメソッドに、アクセス制御が含まれます。特定のトークン・メソッドは、トークンのERC721AdminまたはAccount Owner、または複数のアカウントを持つユーザーのMultipleAccountOwnerのみが実行できます。CheckAuthorizationメソッドは、Ctxオブジェクトを介してアクセスするerc721Authクラスの一部です。アクセス制御マッピングは、次のテキストに示すように、oChainUtil.goファイルに記述されています。アクセス制御を変更するには、oChainUtil.goファイルを編集します。
  var t TokenAccess
      var r RoleAccess
      var a AccountAccess
      var as AccountStatusAccess
      var h HoldAccess
      var ad AdminAccess
      var trx TransactionAccess
      var tc TokenConversionAccess
      var auth AuthAccess
      var erc721ad ERC721AdminAccess
      var erc721t ERC721TokenAccess
      var erc721r ERC721RoleAccess
      var erc721a ERC721AccountAccess
      var erc721as ERC721AccountStatusAccess
      var erc721trx ERC721TransactionAccess

      var erc1155ad ERC1155AdminAccess
      var erc1155t ERC1155TokenAccess
      var erc1155a ERC1155AccountAccess
      var erc1155as ERC1155AccountStatusAccess
      var erc1155trx ERC1155TransactionAccess
      var erc1155role ERC1155RoleAccess
      trx.DeleteHistoricalTransactions = []string{"Admin"}
      ad.AddAdmin = []string{"Admin"}
      ad.RemoveAdmin = []string{"Admin"}
      ad.GetAllAdmins = []string{"Admin", "OrgAdmin"}
      ad.AddOrgAdmin = []string{"Admin", "OrgAdminOrgIdCheck"}
      ad.RemoveOrgAdmin = []string{"Admin", "OrgAdminOrgIdCheck"}
      ad.GetOrgAdmins = []string{"Admin", "OrgAdmin"}
      ad.IsTokenAdmin = []string{"Admin", "MultipleAccountOwner", "OrgAdmin"}
      t.Save = []string{"Admin"}
      t.GetAllTokens = []string{"Admin", "OrgAdmin"}
      t.Update = []string{"Admin"}
      t.GetTokenDecimals = []string{"Admin", "OrgAdmin"}
      t.GetTokensByName = []string{"Admin", "OrgAdmin"}
      t.AddRoleMember = []string{"Admin", "OrgAdminRoleCheck"}
      t.RemoveRoleMember = []string{"Admin", "OrgAdminRoleCheck"}
      t.IsInRole = []string{"Admin", "OrgAdminAccountIdCheck", "AccountOwner"}
      t.GetTotalMintedTokens = []string{"Admin", "OrgAdmin"}
      t.GetNetTokens = []string{"Admin", "OrgAdmin"}
      t.Get = []string{"Admin", "OrgAdmin"}
      t.GetTokenHistory = []string{"Admin", "OrgAdmin"}
      a.CreateAccount = []string{"Admin", "OrgAdminOrgIdCheck"}
      a.AssociateToken = []string{"Admin", "OrgAdminAccountIdCheck"}
      a.GetAllAccounts = []string{"Admin"}
      a.GetAllOrgAccounts = []string{"Admin", "OrgAdminOrgIdCheck"}
      a.GetAccount = []string{"Admin", "OrgAdminAccountIdCheck", "AccountOwner"}
      a.History = []string{"Admin", "AccountOwner"}
      a.GetAccountTransactionHistory = []string{"Admin", "OrgAdminAccountIdCheck", "AccountOwner"}
      a.GetAccountTransactionHistoryWithFilters = []string{"Admin", "OrgAdminAccountIdCheck", "AccountOwner"}
      a.GetSubTransactionsById = []string{"Admin", "TransactionInvoker"}
      a.GetSubTransactionsByIdWithFilters = []string{"Admin", "TransactionInvoker"}
      a.GetAccountBalance = []string{"Admin", "OrgAdminAccountIdCheck", "AccountOwner"}
      a.GetAccountOnHoldBalance = []string{"Admin", "OrgAdminAccountIdCheck", "AccountOwner"}
      a.GetOnHoldIds = []string{"Admin", "OrgAdminAccountIdCheck", "AccountOwner"}
      a.GetAccountsByUser = []string{"Admin", "OrgAdminOrgIdCheck", "MultipleAccountOwner"}

      as.Get = []string{"Admin", "OrgAdminAccountIdCheck", "AccountOwner"}
      as.ActivateAccount = []string{"Admin", "OrgAdminOrgIdCheck"}
      as.SuspendAccount = []string{"Admin", "OrgAdminOrgIdCheck"}
      as.DeleteAccount = []string{"Admin", "OrgAdminOrgIdCheck"}

      r.GetAccountsByRole = []string{"Admin"}
      r.GetUsersByRole = []string{"Admin"}
      r.GetOrgAccountsByRole = []string{"Admin", "OrgAdminOrgIdCheck"}
      r.GetOrgUsersByRole = []string{"Admin", "OrgAdminOrgIdCheck"}
      tc.InitializeExchangePoolUser = []string{"Admin"}
      tc.AddConversionRate = []string{"Admin"}
      tc.UpdateConversionRate = []string{"Admin"}
      tc.GetConversionRate = []string{"Admin", "OrgAdmin", "AnyAccountOwner"}
      tc.GetConversionRateHistory = []string{"Admin", "OrgAdmin", "AnyAccountOwner"}
      tc.TokenConversion = []string{"Admin", "AnyAccountOwner"}
      tc.GetExchangePoolUser = []string{"Admin"}

      erc721ad.AddAdmin = []string{"Admin"}
      erc721ad.GetAllAdmins = []string{"Admin"}
      erc721ad.IsTokenAdmin = []string{"Admin"}
      erc721ad.RemoveAdmin = []string{"Admin"}
      erc721trx.DeleteHistoricalTransactions = []string{"Admin"}
      erc721t.Save = []string{"Admin"}
      erc721t.GetAllTokens = []string{"Admin"}
      erc721t.Update = []string{"Admin"}
      erc721t.GetTokensByName = []string{"Admin"}
      erc721t.AddRoleMember = []string{"Admin"}
      erc721t.RemoveRoleMember = []string{"Admin"}
      erc721t.IsInRole = []string{"Admin", "AccountOwner"}
      erc721t.Get = []string{"Admin", "TokenOwner"}
      erc721t.GetAllTokensByUser = []string{"Admin", "AccountOwner"}
      erc721t.TotalSupply = []string{"Admin"}
      erc721t.TotalNetSupply = []string{"Admin"}
      erc721t.History = []string{"Admin"}
      erc721a.CreateAccount = []string{"Admin"}
      erc721a.CreateUserAccount = []string{"Admin"}
      erc721a.CreateTokenAccount = []string{"Admin"}
      erc721a.AssociateFungibleTokenToAccount = []string{"Admin", "AccountOwner"}
      erc721a.GetAllAccounts = []string{"Admin"}
      erc721a.History = []string{"Admin", "AccountOwner"}
      erc721a.GetAccountTransactionHistory = []string{"Admin", "AccountOwner"}
      erc721a.GetAccountTransactionHistoryWithFilters = []string{"Admin", "AccountOwner"}
      erc721a.GetAccountByUser = []string{"Admin", "MultipleAccountOwner"}
      erc721a.BalanceOf = []string{"Admin", "MultipleAccountOwner"}

      erc721as.Get = []string{"Admin", "AccountOwner"}
      erc721as.ActivateAccount = []string{"Admin"}
      erc721as.SuspendAccount = []string{"Admin"}
      erc721as.DeleteAccount = []string{"Admin"}

      erc721r.GetAccountsByRole = []string{"Admin"}
      erc721r.GetUsersByRole = []string{"Admin"}

      erc1155ad.AddAdmin = []string{"Admin"}
      erc1155ad.GetAllAdmins = []string{"Admin"}
      erc1155ad.IsUserTokenAdmin = []string{"Admin"}
      erc1155ad.RemoveAdmin = []string{"Admin"}
      erc1155t.AddRoleMember = []string{"Admin"}
      erc1155t.IsInRole = []string{"Admin"}
      erc1155t.GetAllTokens = []string{"Admin"}
      erc1155t.GetAllTokensByUser = []string{"Admin", "AccountOwner"}
      erc1155t.Get = []string{"Admin", "TokenOwner"}
      erc1155t.RemoveRoleMember = []string{"Admin"}
      erc1155t.TotalNetSupply = []string{"Admin"}
      erc1155t.TotalSupply = []string{"Admin"}
      erc1155t.GetTokenDecimal = []string{"Admin"}
      erc1155t.GetTokensByName = []string{"Admin"}
      erc1155t.GetTotalMintedTokens = []string{"Admin"}
      erc1155t.GetNetTokens = []string{"Admin"}
      erc1155t.Save = []string{"Admin"}
      erc1155t.Update = []string{"Admin"}

      erc1155trx.DeleteHistoricalTransactions = []string{"Admin"}

      erc1155role.GetAccountsByRole = []string{"Admin"}
      erc1155role.GetUsersByRole = []string{"Admin"}
      erc1155a.AssociateFungibleTokenToAccount = []string{"Admin", "AccountOwner"}
      erc1155a.BalanceOfBatch = []string{"Admin"}
      erc1155a.CreateAccount = []string{"Admin"}
      erc1155a.CreateTokenAccount = []string{"Admin"}
      erc1155a.CreateUserAccount = []string{"Admin"}
      erc1155a.GetAccountTransactionHistory = []string{"Admin", "AccountOwner"}
      erc1155a.GetAccountTransactionHistoryWithFilters = []string{"Admin", "AccountOwner"}
      erc1155a.GetAccountsByUser = []string{"Admin", "AccountOwner"}
      erc1155a.GetAccount = []string{"Admin", "AccountOwner"}
      erc1155a.History = []string{"Admin", "AccountOwner"}
      erc1155a.GetAllAccounts = []string{"Admin"}
      erc1155a.ExchangeToken = []string{"AccountOwner"}
      erc1155a.GetAccountDetailsByUser = []string{"Admin", "AccountOwner"}

      erc1155as.Get = []string{"Admin", "AccountOwner"}
      erc1155as.ActivateAccount = []string{"Admin"}
      erc1155as.SuspendAccount = []string{"Admin"}
      erc1155as.DeleteAccount = []string{"Admin"}
      var accessMap TokenAccessControl
      accessMap.Token = t
      accessMap.Account = a
      accessMap.AccountStatus = as
      accessMap.Hold = h
      accessMap.Role = r
      accessMap.Admin = ad
      accessMap.Auth = auth
      accessMap.TokenConversion = tc
      accessMap.ERC721ADMIN = erc721ad
      accessMap.ERC721TOKEN = erc721t
      accessMap.ERC721ACCOUNT = erc721a
      accessMap.ERC721AccountStatus = erc721as
      accessMap.ERC721ROLE = erc721r
      accessMap.ERC721TRANSACTION = erc721trx
      accessMap.ERC1155Account = erc1155a
      accessMap.ERC1155AccountStatus = erc1155as
      accessMap.ERC1155Admin = erc1155ad
      accessMap.ERC1155Token = erc1155t
      accessMap.ERC1155Transaction = erc1155trx
      accessMap.ERC1155Role = erc1155role
Ctx.ERC1155Auth.CheckAuthorization(funcName string, args []string) (bool, error)
パラメータ:
  • funcName string – 受信者とメソッドの間のマップ値(oChainUtil.goファイルを参照)。
  • args – 可変引数。args[0]には定数'TOKEN'を指定し、args[1]には、AccountOwnerのアクセス制御チェックを追加する場合、accountIdパラメータを指定します。MultipleAccountOwnerのアクセス制御チェックを追加するには、args[1]orgIdパラメータを指定し、args[2]userIdパラメータを指定します。TokenOwnerのアクセス制御チェックを追加するには、args[1]にトークンIDパラメータを指定します。
戻り値:
  • 必要に応じて、エラーのboolレスポンス。
IsUserTokenAdmin
このメソッドは、指定されたユーザーがToken Adminの場合はブール値trueを、それ以外の場合はfalseを返します。このメソッドは、トークン・チェーンコードのToken Adminのみがコールできます。
Ctx.ERC1155Auth.IsUserTokenAdmin(orgId string, userId string) (interface{}, error)
パラメータ:
  • orgId: string – 現在の組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) ID。
  • userId: string – ユーザーのユーザー名または電子メールID。
戻り値
{
  "result": true
}
AddAdmin
このメソッドは、トークン・チェーンコードのToken Adminとしてユーザーを追加します。このメソッドは、トークン・チェーンコードのToken Adminのみがコールできます。
Ctx.ERC1155Admin.AddAdmin(orgId string, userId string) (interface{}, error)
パラメータ:
  • 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) (interface{}, error)
パラメータ:
  • orgId: string – 現在の組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) ID。
  • userId: string – ユーザーのユーザー名または電子メールID。
戻り値:
  • 成功の場合、トークン・チェーンコードのToken Adminとして削除されたユーザーの詳細をリストするメッセージ。
戻り値
{
    "msg": "Successfully removed Admin (orgId appdev userId user1)"
}
GetAllAdminUsers
このメソッドは、すべてのToken Adminユーザーのリストを返します。
Ctx.ERC1155Admin.GetAllAdminUsers() (interface{}, error)
パラメータ:
  • none
戻り値:
  • 成功の場合、組織IDおよびユーザーIDで識別されるすべてのToken Adminユーザーのリスト。
戻り値
{
  "admins": [
    {
      "OrgId": "appdev",
      "UserId": "idcqa"
    },
    {
      "OrgId": "appdev",
      "UserId": "user1"
    }
  ]
}

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

Save
このメソッドはトークンを作成します。定義されているすべてのトークンには、独自の作成メソッドがあります。非代替トークンの場合、ミンター・ロールが仕様ファイルに定義されていれば、ミンター・ロールを持つすべてのユーザーがこのメソッドをコールしてNFTを作成できます。そうでない場合は、どのユーザーもこのメソッドを使用してNFTを作成(ミント)できます。このメソッドをコールしたユーザーが、NFTの所有者(ホールまたはフラクショナル)になります。
Ctx.ERC1155Token.Save(token interface{}, quantity ...float64) (interface{}, error)
パラメータ:
  • tokenAsset: interface{} – トークン・アセット。アセットのプロパティは、モデル・ファイルで定義されます。
  • quantity: number – 非代替トークンの場合のみ、ミントするトークンの数。このパラメータでサポートされている値は、1のみです。
戻り値:
  • 成功の場合、次の情報を含むJSON形式のトークン・アセット。
  • BehaviorまたはBehaviors – トークンの動作のリスト。このプロパティは編集できません。
  • CreatedBy – トークンをミントするユーザーであるコール元のアカウントID。このプロパティは編集できません。
  • CreationDate – ミント・トランザクションのタイムスタンプ。このプロパティは編集できません。
  • IsBurned – このプロパティは、トークンがバーンされたかどうかを示します。このプロパティは編集できません。
  • Mintable – ミントに関連するプロパティ。max_mint_quantity値は、トークン・クラスに対して作成できるトークンの最大数を定義します。
  • Owner – メソッドのコール元である現在の所有者のアカウントID。
  • Symbol – トークンの記号。このプロパティは編集できません。
  • TokenDesc – トークンの説明。
  • TokenMetadata – トークンを説明するJSON情報。
  • TokenName – トークンの名前。このプロパティは編集できません。
  • TokenStandard – トークンの標準。このプロパティは編集できません。
  • TokenType – トークンのタイプ(代替可能または非代替)。このプロパティは編集できません。
  • TokenUnit – トークンの単位(ホールまたはフラクショナル)。このプロパティは編集できません。
  • TokenUri – トークンのURI。
  • Quantity – トークンの数量。
戻り値の例(ホールNFT)
{
    "AssetType": "otoken",
    "Behaviors": [
        "indivisible",
        "singleton",
        "mintable",
        "transferable",
        "burnable",
        "roles"
    ],
    "CreatedBy": "oaccount~42e89f4c72dfde9502814876423c6da630d466e87436dd1aae201d347ad1288d",
    "CreationDate": "2022-12-29T09:57:03+05:30",
    "IsBurned": false,
    "Mintable": {
        "Max_mint_quantity": 500
    },
    "OnSaleFlag": false,
    "Owner": "oaccount~42e89f4c72dfde9502814876423c6da630d466e87436dd1aae201d347ad1288d",
    "Price": 100,
    "Quantity": 1,
    "Roles": {
        "burner_role_name": "burner",
        "minter_role_name": "minter"
    },
    "TokenDesc": "token description",
    "TokenId": "monalisa",
    "TokenMetadata": {
        "Description": "Mona Lisa Painting",
        "Image": "monalisa.jpeg",
        "PainterName": "Leonardo_da_Vinci",
        "PaintingName": "Mona_Lisa"
    },
    "TokenName": "artcollection",
    "TokenStandard": "erc1155+",
    "TokenType": "nonfungible",
    "TokenUnit": "whole",
    "TokenUri": "https://bafybeid6pmpp62bongoip5iy2skosvyxh3gr7r2e35x3ctvawjco6ddmsq\\\\ .ipfs.infura-ipfs.io/?filename=MonaLisa.jpeg"
}
戻り値の例(代替可能トークン)
{
    "AssetType": "otoken",
    "Behaviors": [
        "divisible",
        "mintable",
        "transferable",
        "burnable",
        "roles"
    ],
    "Currency_name": "Dollar",
    "Divisible": {
        "Decimal": 2
    },
    "Mintable": {
        "Max_mint_quantity": 10000
    },
    "Roles": {
        "burner_role_name": "burner",
        "minter_role_name": "minter"
    },
    "TokenDesc": "Token Description",
    "TokenId": "Loyalty",
    "TokenName": "loyalty",
    "TokenStandard": "erc1155+",
    "TokenType": "fungible",
    "TokenUnit": "fractional",
    "Token_to_currency_ratio": 0
}
戻り値の例(フラクショナルNFT)
{
    "AssetType": "otoken",
    "Behaviors": [
        "divisible",
        "mintable",
        "transferable",
        "burnable",
        "roles"
    ],
    "CreatedBy": "oaccount~42e89f4c72dfde9502814876423c6da630d466e87436dd1aae201d347ad1288d",
    "CreationDate": "2023-06-14T09:53:53+05:30",
    "Divisible": {
        "Decimal": 2
    },
    "IsBurned": false,
    "Mintable": {
        "Max_mint_quantity": 20000
    },
    "On_sale_flag": false,
    "Price": 1000,
    "Quantity": 100,
    "Roles": {
        "burner_role_name": "burner",
        "minter_role_name": "minter"
    },
    "TokenDesc": "Token Description",
    "TokenId": "realEstate",
    "TokenMetadata": {
        "Description": "Painting Description",
        "Image": "",
        "Painter_name": "",
        "Painting_name": "Paint"
    },
    "TokenName": "realestate",
    "TokenStandard": "erc1155+",
    "TokenType": "nonfungible",
    "TokenUnit": "fractional",
    "TokenUri": "www.realestate.example.com"
}
Update
このメソッドはトークンを更新します。非代替トークンのトークン・メタデータまたはトークンURIは更新できません。
Ctx.ERC1155Token.Update(tokenAsset interface{}) (interface{}, error)
パラメータ:
  • tokenAsset: interface{} – トークン・アセット。アセットのプロパティは、モデル・ファイルで定義されます。
戻り値:
  • 成功の場合、更新されたJSON形式のトークン・アセット。
戻り値の例(ホールNFT)
{
    "AssetType": "otoken",
    "Behaviors": [
        "indivisible",
        "singleton",
        "mintable",
        "transferable",
        "burnable",
        "roles"
    ],
    "CreatedBy": "oaccount~42e89f4c72dfde9502814876423c6da630d466e87436dd1aae201d347ad1288d",
    "CreationDate": "2022-12-29T09:57:03+05:30",
    "IsBurned": false,
    "Mintable": {
        "Max_mint_quantity": 500
    },
    "OnSaleFlag": false,
    "Owner": "oaccount~42e89f4c72dfde9502814876423c6da630d466e87436dd1aae201d347ad1288d",
    "Price": 100,
    "Quantity": 1,
    "Roles": {
        "burner_role_name": "burner",
        "minter_role_name": "minter"
    },
    "TokenDesc": "token description",
    "TokenId": "monalisa",
    "TokenMetadata": {
        "Description": "Mona Lisa Painting",
        "Image": "monalisa.jpeg",
        "PainterName": "Leonardo_da_Vinci",
        "PaintingName": "Mona_Lisa"
    },
    "TokenName": "artcollection",
    "TokenStandard": "erc1155+",
    "TokenType": "nonfungible",
    "TokenUnit": "whole",
    "TokenUri": "https://bafybeid6pmpp62bongoip5iy2skosvyxh3gr7r2e35x3ctvawjco6ddmsq\\\\ .ipfs.infura-ipfs.io/?filename=MonaLisa.jpeg"
}
History (Token)
このメソッドは、指定されたトークンIDの履歴を返します。
Ctx.ERC1155Token.History(tokenId string) (interface{}, error)
パラメータ:
  • tokenId string – トークンのID。
戻り値:
  • 成功の場合、トークン履歴を含むJSON配列。
戻り値の例(代替可能トークン)
[
  {
    "IsDelete": "false",
    "Timestamp": "2022-12-08T09:54:11Z",
    "TxId": "823sa7c7a00941c62285c86f922bc4d3f5326a20f4bf2f82daa5bc661e4682e8",
    "Value": {
      "AssetType": "otoken",
      "Behaviors": [
        "divisible",
        "mintable",
        "transferable",
        "roles"
      ],
      "Currency_name": "Rupees",
      "Divisible": {
        "Decimal": 2
      },
      "Mintable": {
        "Max_mint_quantity": 1000
      },
      "Roles": {
        "burner_role_name": "burner",
        "minter_role_name": "minter"
      },
      "TokenDesc": "Updated Token Description",
      "TokenId": "tokenOne",
      "TokenName": "moneytok",
      "TokenStandard": "erc1155+",
      "TokenType": "fungible",
      "TokenUnit": "fractional",
      "Token_to_currency_ratio": 0
    }
  },
  {
    "IsDelete": "false",
    "Timestamp": "2022-12-08T09:54:11Z",
    "TxId": "711bb7c7a00941c62285c86f922bc3b3f5326a20f4bf2f82daa5bc661e4682e8",
    "Value": {
      "AssetType": "otoken",
      "Behaviors": [
        "divisible",
        "mintable",
        "transferable",
        "roles"
      ],
      "Currency_name": "Dollar",
      "Divisible": {
        "Decimal": 2
      },
      "Mintable": {
        "Max_mint_quantity": 1000
      },
      "Roles": {
        "burner_role_name": "burner",
        "minter_role_name": "minter"
      },
      "TokenDesc": "",
      "TokenId": "tokenOne",
      "TokenName": "moneytok",
      "TokenStandard": "erc1155+",
      "TokenType": "fungible",
      "TokenUnit": "fractional",
      "Token_to_currency_ratio": 0
    }
  }
]
戻り値の例(フラクショナルNFT)
[
    {
        "Timestamp": "2023-06-20T01:06:33Z",
        "TrxId": "16e53db4f8107f9634b7c3a0a2a81a00f69b634f2a52902b809e544d07f272b1",
        "Value": {
            "AssetType": "otoken",
            "Behaviors": [
                "divisible",
                "mintable",
                "transferable",
                "burnable",
                "roles"
            ],
            "CreatedBy": "oaccount~87bcb699d507368ee3966cd03ee6d7736ffc55dde8c0f0e16b14866334ac504a",
            "CreationDate": "2023-06-20T01:02:27Z",
            "Divisible": {
                "Decimal": 2
            },
            "IsBurned": false,
            "Mintable": {
                "Max_mint_quantity": 20000
            },
            "On_sale_flag": true,
            "Owners": [
                {
                    "AccountId": "oaccount~87bcb699d507368ee3966cd03ee6d7736ffc55dde8c0f0e16b14866334ac504a",
                    "TokenShare": 10
                },
                {
                    "AccountId": "oaccount~3cddfdaa855900579d963aa6f755a4aed1f3a474a2462c1b45bd7f36df673224",
                    "TokenShare": 10
                }
            ],
            "Price": 2000,
            "Quantity": 20,
            "Roles": {
                "burner_role_name": "burner",
                "minter_role_name": "minter"
            },
            "TokenDesc": "",
            "TokenId": "FNFT",
            "TokenMetadata": {
                "Description": "",
                "Image": "",
                "Painter_name": "",
                "Painting_name": ""
            },
            "TokenName": "realestate",
            "TokenStandard": "erc1155+",
            "TokenType": "nonfungible",
            "TokenUnit": "fractional",
            "TokenUri": "www.FNFT.example.com"
        }
    },
    {
        "Timestamp": "2023-06-20T01:02:27Z",
        "TrxId": "cec80910d087682554048f911d2cf98b66382bbcf1615483fa1c96c7ea08077c",
        "Value": {
            "AssetType": "otoken",
            "Behaviors": [
                "divisible",
                "mintable",
                "transferable",
                "burnable",
                "roles"
            ],
            "CreatedBy": "oaccount~87bcb699d507368ee3966cd03ee6d7736ffc55dde8c0f0e16b14866334ac504a",
            "CreationDate": "2023-06-20T01:02:27Z",
            "Divisible": {
                "Decimal": 2
            },
            "IsBurned": false,
            "Mintable": {
                "Max_mint_quantity": 20000
            },
            "On_sale_flag": true,
            "Owners": [
                {
                    "AccountId": "oaccount~87bcb699d507368ee3966cd03ee6d7736ffc55dde8c0f0e16b14866334ac504a",
                    "TokenShare": 20
                }
            ],
            "Price": 2000,
            "Quantity": 20,
            "Roles": {
                "burner_role_name": "burner",
                "minter_role_name": "minter"
            },
            "TokenDesc": "",
            "TokenId": "FNFT",
            "TokenMetadata": {
                "Description": "",
                "Image": "",
                "Painter_name": "",
                "Painting_name": ""
            },
            "TokenName": "realestate",
            "TokenStandard": "erc1155+",
            "TokenType": "nonfungible",
            "TokenUnit": "fractional",
            "TokenUri": "www.FNFT.example.com"
        }
    }
]
戻り値の例(ホールNFT)
[
    {
        "IsDelete": "false",
        "Timestamp": "2023-06-20T01:15:56Z",
        "TxId": "89a3df3ebbe6dca2bcfbd51fc7dca9aab818a2af746b79a92dc8155b729ab22d",
        "Value": {
            "AssetType": "otoken",
            "Behaviors": [
                "indivisible",
                "singleton",
                "mintable",
                "transferable",
                "roles"
            ],
            "CreatedBy": "oaccount~87bcb699d507368ee3966cd03ee6d7736ffc55dde8c0f0e16b14866334ac504a",
            "CreationDate": "2023-06-20T01:15:56Z",
            "IsBurned": false,
            "Mintable": {
                "Max_mint_quantity": 20000
            },
            "On_sale_flag": true,
            "Owner": "oaccount~87bcb699d507368ee3966cd03ee6d7736ffc55dde8c0f0e16b14866334ac504a",
            "Price": 2000,
            "Quantity": 1,
            "Roles": {
                "burner_role_name": "burner",
                "minter_role_name": "minter"
            },
            "TokenDesc": "Updated Token Description",
            "TokenId": "NFT",
            "TokenMetadata": {
                "Description": "",
                "Image": "",
                "Painter_name": "",
                "Painting_name": ""
            },
            "TokenName": "artcollection",
            "TokenStandard": "erc1155+",
            "TokenType": "nonfungible",
            "TokenUnit": "whole",
            "TokenUri": "www.NFT.example.com"
        }
    },
    {
        "IsDelete": "false",
        "Timestamp": "2023-06-20T01:15:56Z",
        "TxId": "90d6af3ebbe6dca2bcfbd51fc7dca9aab818a2af746b79a92dc8155b729ab22d",
        "Value": {
            "AssetType": "otoken",
            "Behaviors": [
                "indivisible",
                "singleton",
                "mintable",
                "transferable",
                "roles"
            ],
            "CreatedBy": "oaccount~87bcb699d507368ee3966cd03ee6d7736ffc55dde8c0f0e16b14866334ac504a",
            "CreationDate": "2023-06-20T01:15:56Z",
            "IsBurned": false,
            "Mintable": {
                "Max_mint_quantity": 20000
            },
            "On_sale_flag": true,
            "Owner": "oaccount~87bcb699d507368ee3966cd03ee6d7736ffc55dde8c0f0e16b14866334ac504a",
            "Price": 2000,
            "Quantity": 1,
            "Roles": {
                "burner_role_name": "burner",
                "minter_role_name": "minter"
            },
            "TokenDesc": "",
            "TokenId": "NFT",
            "TokenMetadata": {
                "Description": "",
                "Image": "",
                "Painter_name": "",
                "Painting_name": ""
            },
            "TokenName": "artcollection",
            "TokenStandard": "erc1155+",
            "TokenType": "nonfungible",
            "TokenUnit": "whole",
            "TokenUri": "www.NFT.example.com"
        }
    }
]
GetAllTokens
このメソッドは、状態データベースに保存されているすべてのトークン・アセットを返します。このメソッドは、チェーンコードのToken Adminのみがコールできます。このメソッドでは、Berkeley DB SQLリッチ問合せが使用され、リモートOracle Blockchain Platformネットワークに接続されている場合にのみコールできます。
Ctx.ERC1155Token.GetAllTokens()() (interface{}, error)
パラメータ:
  • none
戻り値
[
  {
    "key": "tokenOne",
    "valueJson": {
      "AssetType": "otoken",
      "Behaviors": [
        "divisible",
        "mintable",
        "transferable",
        "roles"
      ],
      "Currency_name": "",
      "Divisible": {
        "Decimal": 2
      },
      "Mintable": {
        "Max_mint_quantity": 1000
      },
      "Roles": {
        "burner_role_name": "burner",
        "minter_role_name": "minter"
      },
      "TokenDesc": "",
      "TokenId": "tokenOne",
      "TokenName": "moneytok",
      "TokenStandard": "erc1155+",
      "TokenType": "fungible",
      "TokenUnit": "fractional",
      "Token_to_currency_ratio": 0
    }
  },
  {
    "key": "tokenTwo",
    "valueJson": {
      "AssetType": "otoken",
      "Behaviors": [
        "divisible",
        "mintable",
        "transferable",
        "roles"
      ],
      "Currency_name": "",
      "Divisible": {
        "Decimal": 2
      },
      "Mintable": {
        "Max_mint_quantity": 1000
      },
      "Roles": {
        "burner_role_name": "burner",
        "minter_role_name": "minter"
      },
      "TokenDesc": "",
      "TokenId": "tokenTwo",
      "TokenName": "moneytok",
      "TokenStandard": "erc1155+",
      "TokenType": "fungible",
      "TokenUnit": "fractional",
      "Token_to_currency_ratio": 0
    }
  },
  {
    "key": "art",
    "valueJson": {
      "AssetType": "otoken",
      "Behaviors": [
        "indivisible",
        "singleton",
        "mintable",
        "transferable",
        "burnable",
        "roles"
      ],
      "BurnedBy": "oaccount~76cb672eeb1bd535899562a840d0c15a356db89e24bc8b43ac1dba845a4282c6",
      "BurnedDate": "2022-12-08T10:49:37Z",
      "CreatedBy": "oaccount~76cb672eeb1bd535899562a840d0c15a356db89e24bc8b43ac1dba845a4282c6",
      "CreationDate": "2022-12-08T10:45:10Z",
      "IsBurned": true,
      "Mintable": {
        "Max_mint_quantity": 20000
      },
      "OnSaleFlag": false,
      "Owner": "",
      "Price": 0,
      "Roles": {
        "minter_role_name": "minter"
      },
      "TokenDesc": "",
      "TokenId": "art",
      "TokenMetadata": {
        "Description": "",
        "Image": "",
        "PainterName": "",
        "PaintingName": ""
      },
      "TokenName": "artcollection",
      "TokenStandard": "erc1155+",
      "TokenType": "nonfungible",
      "TokenUnit": "whole",
      "TokenUri": "art.example.com",
      "TransferredBy": "ouaccount~24ffd4d32a028a85b4b960f5d55536c837b5429bc7f346150adfa904ec2937cc",
      "TransferredDate": "2022-12-08T10:47:04Z"
    }
  },
  {
    "key": "FNFT",
    "valueJson": {
        "AssetType": "otoken",
        "Behaviors": [
            "divisible",
            "mintable",
            "transferable",
            "burnable",
            "roles"
        ],
        "CreatedBy": "oaccount~87bcb699d507368ee3966cd03ee6d7736ffc55dde8c0f0e16b14866334ac504a",
        "CreationDate": "2023-06-20T01:02:27Z",
        "Divisible": {
            "Decimal": 2
        },
        "IsBurned": false,
        "Mintable": {
            "Max_mint_quantity": 20000
        },
        "On_sale_flag": true,
        "Price": 2000,
        "Quantity": 20,
        "Roles": {
            "burner_role_name": "burner",
            "minter_role_name": "minter"
        },
        "TokenDesc": "",
        "TokenId": "FNFT",
        "TokenMetadata": {
            "Description": "",
            "Image": "",
            "Painter_name": "",
            "Painting_name": ""
        },
        "TokenName": "realestate",
        "TokenStandard": "erc1155+",
        "TokenType": "nonfungible",
        "TokenUnit": "fractional",
        "TokenUri": "www.FNFT.example.com"
    }
  },
  {
    "key": "FNFT",
    "valueJson": {
        "AssetType": "otoken",
        "Behaviors": [
            "divisible",
            "mintable",
            "transferable",
            "burnable",
            "roles"
        ],
        "CreatedBy": "oaccount~87bcb699d507368ee3966cd03ee6d7736ffc55dde8c0f0e16b14866334ac504a",
        "CreationDate": "2023-06-20T01:02:27Z",
        "Divisible": {
            "Decimal": 2
        },
        "IsBurned": false,
        "Mintable": {
            "Max_mint_quantity": 20000
        },
        "On_sale_flag": true,
        "Price": 2000,
        "Quantity": 20,
        "Roles": {
            "burner_role_name": "burner",
            "minter_role_name": "minter"
        },
        "TokenDesc": "",
        "TokenId": "FNFT",
        "TokenMetadata": {
            "Description": "",
            "Image": "",
            "Painter_name": "",
            "Painting_name": ""
        },
        "TokenName": "realestate",
        "TokenStandard": "erc1155+",
        "TokenType": "nonfungible",
        "TokenUnit": "fractional",
        "TokenUri": "www.FNFT.example.com"
    }
  }
]
Get (Token)
このメソッドは、トークンが状態データベースに存在する場合、トークン・オブジェクトを返します。このメソッドは、チェーンコードのToken Adminまたはトークン所有者のみがコールできます。フラクショナルNFTの場合、所有者のリストも返されます。
Ctx.ERC1155Token.Get(id string, result ...interface{}) (interface{}, error)
パラメータ:
  • id string – 取得するトークンのID。
戻り値の例(ホールNFT)
{
  "AssetType": "otoken",
  "Behaviors": [
    "indivisible",
    "singleton",
    "mintable",
    "transferable",
    "burnable",
    "roles"
  ],
  "CreatedBy": "oaccount~76cb672eeb1bd535899562a840d0c15a356db89e24bc8b43ac1dba845a4282c6",
  "CreationDate": "2022-12-08T10:55:29Z",
  "IsBurned": false,
  "Mintable": {
    "Max_mint_quantity": 20000
  },
  "OnSaleFlag": false,
  "Owner": "oaccount~76cb672eeb1bd535899562a840d0c15a356db89e24bc8b43ac1dba845a4282c6",
  "Price": 0,
  "Quantity": 1,
  "Roles": {
    "minter_role_name": "minter"
  },
  "TokenDesc": "",
  "TokenId": "nftToken",
  "TokenMetadata": {
    "Description": "",
    "Image": "",
    "PainterName": "",
    "PaintingName": ""
  },
  "TokenName": "artcollection",
  "TokenStandard": "erc1155+",
  "TokenType": "nonfungible",
  "TokenUnit": "whole",
  "TokenUri": "example.com"
}
戻り値の例(代替可能トークン)
{
    "AssetType": "otoken",
    "Behaviors": [
        "divisible",
        "mintable",
        "transferable",
        "burnable",
        "roles"
    ],
    "Currency_name": "Dollar",
    "Divisible": {
        "Decimal": 2
    },
    "Mintable": {
        "Max_mint_quantity": 10000
    },
    "Roles": {
        "burner_role_name": "burner",
        "minter_role_name": "minter"
    },
    "TokenDesc": "Token Description",
    "TokenId": "Loyalty",
    "TokenName": "loyalty",
    "TokenStandard": "erc1155+",
    "TokenType": "fungible",
    "TokenUnit": "fractional",
    "Token_to_currency_ratio": 0
}
戻り値の例(フラクショナルNFT)
{
    "AssetType": "otoken",
    "Behaviors": [
        "divisible",
        "mintable",
        "transferable",
        "burnable",
        "roles"
    ],
    "CreatedBy": "oaccount~42e89f4c72dfde9502814876423c6da630d466e87436dd1aae201d347ad1288d",
    "CreationDate": "2023-06-14T09:53:53+05:30",
    "Divisible": {
        "Decimal": 2
    },
    "IsBurned": false,
    "Mintable": {
        "Max_mint_quantity": 20000
    },
    "On_sale_flag": false,
    "Owners": [
        {
            "AccountId": "oaccount~42e89f4c72dfde9502814876423c6da630d466e87436dd1aae201d347ad1288d",
            "TokenShare": 100
        }
    ],
    "Price": 1000,
    "Quantity": 100,
    "Roles": {
        "burner_role_name": "burner",
        "minter_role_name": "minter"
    },
    "TokenDesc": "Token Description",
    "TokenId": "realEstate",
    "TokenMetadata": {
        "Description": "Painting Description",
        "Image": "",
        "Painter_name": "",
        "Painting_name": "Paint"
    },
    "TokenName": "realestate",
    "TokenStandard": "erc1155+",
    "TokenType": "nonfungible",
    "TokenUnit": "fractional",
    "TokenUri": "www.realestate.example.com"
}
GetAllTokensByUser
このメソッドは、指定されたユーザーが所有するすべてのトークン・アセットを返します。このメソッドでは、Berkeley DB SQLリッチ問合せが使用され、リモートOracle Blockchain Platformネットワークに接続されている場合にのみコールできます。
Ctx.ERC1155Token.GetAllTokensByUser(accountId string) (interface{}, error)
パラメータ:
  • accountId string – ユーザーのアカウントID。
戻り値
[
  {
    "key": "tokenOne",
    "valueJson": {
      "AssetType": "otoken",
      "Behaviors": [
        "divisible",
        "mintable",
        "transferable",
        "roles"
      ],
      "Currency_name": "",
      "Divisible": {
        "Decimal": 2
      },
      "Mintable": {
        "Max_mint_quantity": 1000
      },
      "Roles": {
        "burner_role_name": "burner",
        "minter_role_name": "minter"
      },
      "TokenDesc": "",
      "TokenId": "tokenOne",
      "TokenName": "moneytok",
      "TokenStandard": "erc1155+",
      "TokenType": "fungible",
      "TokenUnit": "fractional",
      "Token_to_currency_ratio": 0
    }
  },
  {
    "key": "nftToken",
    "valueJson": {
      "AssetType": "otoken",
      "Behaviors": [
        "indivisible",
        "singleton",
        "mintable",
        "transferable",
        "burnable",
        "roles"
      ],
      "CreatedBy": "oaccount~76cb672eeb1bd535899562a840d0c15a356db89e24bc8b43ac1dba845a4282c6",
      "CreationDate": "2022-12-08T10:55:29Z",
      "IsBurned": false,
      "Mintable": {
        "Max_mint_quantity": 20000
      },
      "OnSaleFlag": false,
      "Owner": "oaccount~76cb672eeb1bd535899562a840d0c15a356db89e24bc8b43ac1dba845a4282c6",
      "Price": 0,
      "Quantity": 1,
      "Roles": {
        "minter_role_name": "minter"
      },
      "TokenDesc": "",
      "TokenId": "nftToken",
      "TokenMetadata": {
        "Description": "",
        "Image": "",
        "PainterName": "",
        "PaintingName": ""
      },
      "TokenName": "artcollection",
      "TokenStandard": "erc1155+",
      "TokenType": "nonfungible",
      "TokenUnit": "whole",
      "TokenUri": "example.com"
    }
  }
]
OwnerOf
このメソッドは、指定されたトークンIDの所有者のアカウントID、組織IDおよびユーザーIDを返します。
Ctx.ERC1155Token.OwnerOf(tokenId string) (interface{}, error)
パラメータ:
  • tokenId string – トークンのID。
戻り値
{
  "AccountId": "oaccount~76cb672eeb1bd535899562a840d0c15a356db89e24bc8b43ac1dba845a4282c6",
  "OrgId": "appdev",
  "UserId": "idcqa"
}
TokenURI
このメソッドは、指定されたトークンのURIを返します。だれでもこのメソッドをコールできます。
Ctx.ERC1155Token.TokenURI(tokenId string) (interface{}, error)
パラメータ:
  • tokenId string – トークンのID。
戻り値
{
    "TokenUri": "example.com"
}
Name
このメソッドは、トークン・クラスの名前を返します。だれでもこのメソッドをコールできます。
Ctx.ERC1155Token.Name(tokenId string) (interface{}, error)
パラメータ:
  • tokenId string – トークンのID。
戻り値
{"TokenName": "artcollection"}
TotalSupply
このメソッドは、ミントされたトークンの合計数を返します。代替可能トークンはトークンIDで指定されます。非代替トークンは、トークン名で指定されます。
Ctx.ERC1155Token.TotalSupply(tokenAsset interface{}) (map[string]interface{}, error)
パラメータ:
  • tokenAsset interface{} – トークン・アセット。
戻り値
{"TotalSupply": 100}
TotalNetSupply
このメソッドは、ミントされたトークンの合計数からバーンされたトークンの数を引いた数を返します。代替可能トークンはトークンIDで指定されます。非代替トークンは、トークン名で指定されます。
Ctx.ERC1155Token.TotalNetSupply(token interface{}) (interface{}, error)
パラメータ:
  • token interface{} – トークン・アセット。
戻り値
{"TotalNetSupply": 100}
GetTokensByName
このメソッドは、指定されたトークン名のすべてのトークン・アセットを返します。このメソッドでは、Berkeley DB SQLリッチ問合せが使用され、リモートOracle Blockchain Platformネットワークに接続されている場合にのみコールできます。
Ctx.ERC1155Token.GetTokensByName(tokenName string) (interface{}, error)
パラメータ:
  • tokenName: string – トークンの名前。
戻り値
[
  {
    "key": "tokenOne",
    "valueJson": {
      "AssetType": "otoken",
      "Behaviors": [
        "divisible",
        "mintable",
        "transferable",
        "roles"
      ],
      "Currency_name": "",
      "Divisible": {
        "Decimal": 2
      },
      "Mintable": {
        "Max_mint_quantity": 1000
      },
      "Roles": {
        "burner_role_name": "burner",
        "minter_role_name": "minter"
      },
      "TokenDesc": "",
      "TokenId": "tokenOne",
      "TokenName": "moneytok",
      "TokenStandard": "erc1155+",
      "TokenType": "fungible",
      "TokenUnit": "fractional",
      "Token_to_currency_ratio": 0
    }
  },
  {
    "key": "tokenTwo",
    "valueJson": {
      "AssetType": "otoken",
      "Behaviors": [
        "divisible",
        "mintable",
        "transferable",
        "roles"
      ],
      "Currency_name": "",
      "Divisible": {
        "Decimal": 2
      },
      "Mintable": {
        "Max_mint_quantity": 1000
      },
      "Roles": {
        "burner_role_name": "burner",
        "minter_role_name": "minter"
      },
      "TokenDesc": "",
      "TokenId": "tokenTwo",
      "TokenName": "moneytok",
      "TokenStandard": "erc1155+",
      "TokenType": "fungible",
      "TokenUnit": "fractional",
      "Token_to_currency_ratio": 0
    }
  }
]
GetDecimals
このメソッドは、指定されたトークンの小数点以下の桁数を返します。トークンに対して分割可能動作が指定されていない場合は、小数点以下の桁数のデフォルト値ゼロが返されます。
Ctx.ERC1155Token.GetDecimals(tokenId string) (int, error)
パラメータ:
  • tokenId: string – トークンのID。
戻り値
2

アカウント管理のメソッド

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

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

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

ユーザーが所有できる非代替トークン・アカウントは1つのみです。非代替トークン・アカウントIDは一意であり、orgIdパラメータ、userIdパラメータおよびチルダ記号(~)で区切られた定数文字列nftのSHA-256ハッシュによって形成されます。ユーザーが所有するすべての非代替トークン(ホールまたはフラクショナル)は、この単一の非代替トークン・アカウントにリンクされます。

Ctx.ERC1155Account.CreateAccount(orgId string, userId string, ftAccount bool, nftAccount bool) (ERC1155UserAccount, error)
パラメータ:
  • orgId string – 現在の組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) ID。
  • userId string – ユーザーのユーザー名または電子メールID。
  • ftAccount bool – trueの場合、代替可能なトークン・アカウントが作成され、ユーザー・アカウントに関連付けられます。
  • nftAccount bool – 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) (interface{}, error)
パラメータ:
  • 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を持つ複数の代替可能トークン・アカウントを持つことができます。代替可能トークン・アカウントIDは、orgIdパラメータ、userIdパラメータ、チルダ記号(~)で区切られた定数文字列ft、およびチルダ記号(~)で区切られた作成中の代替可能アカウントの索引を示すカウンタ番号のSHA-256ハッシュによって形成されます。

ユーザーが所有できる非代替トークン・アカウントは1つのみです。非代替トークン・アカウントIDは一意であり、orgIdパラメータ、userIdパラメータおよびチルダ記号(~)で区切られた定数文字列nftのSHA-256ハッシュによって形成されます。ユーザーが所有するすべての非代替トークン(ホールまたはフラクショナル)は、この単一の非代替トークン・アカウントにリンクされます。

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

Ctx.ERC1155Account.CreateTokenAccount(orgId string, userId string, tokenType string) (ERC1155UserAccount, error)
パラメータ:
  • orgId string – 現在の組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) ID。
  • userId string – ユーザーのユーザー名または電子メールID。
  • tokenType erc1155Token.TokenType – 作成するトークン・アカウントのタイプ。サポートされているトークン・タイプは、nonfungibleおよびfungibleのみです。
戻り値:
  • 成功の場合、作成されたトークン・アカウントのJSONオブジェクト。
戻り値
{
    "AssetType": "ouaccount",
    "AccountId": "ouaccount~24ffd4d32a028a85b4b960f5d55536c837b5429bc7f346150adfa904ec2937cc",
    "UserId": "idcqa",
    "OrgId": "appdev",
    "TotalAccounts": 1,
    "TotalFtAccounts": 1,
    "AssociatedFtAccounts": [
        {
            "AccountId": "oaccount~1422a74d262a3a55a37cd9023ef8836f765d0be7b49d397696b9961d7434d22a",
            "TokenId": ""
        }
    ],
    "AssociatedNftAccount": ""
}
AssociateTokenToToken
このメソッドは、ユーザーの代替可能トークン・アカウントを特定の代替可能トークンに関連付けます。
Ctx.ERC1155Account.AssociateTokenToToken(accountId string, tokenId string) (interface{}, error)
パラメータ:
  • 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オブジェクトの配列。
戻り値
[
    {
        "IsDelete": "false",
        "Timestamp": "2023-06-06T11:03:48Z",
        "TxId": "c5180f3be3d9130f25a4b4e866f38a4283117dcbfbffb4f55e2c5b03dba0dd29",
        "Value": {
            "AccountCategory": "",
            "AccountId": "oaccount~21206f309941a2a23c4f158a0fe1b8f12bb8e2b0c9a2e1358f5efebc0c7d410e",
            "AssetType": "oaccount",
            "Balance": 100,
            "BapAccountVersion": 1
            "OrgId": "appdev",
            "TokenId": "loy1",
            "TokenName": "loyalty",
            "TokenType": "fungible",
            "UserId": "idcqa"
        }
    },
    {
        "IsDelete": "false",
        "Timestamp": "2023-06-06T11:02:39Z",
        "TxId": "6f81b0c94b451d375a3892446aefbdf78d9fd1ac43699daa89f0dff10db5fd22",
        "Value": {
            "AccountCategory": "",
            "AccountId": "oaccount~21206f309941a2a23c4f158a0fe1b8f12bb8e2b0c9a2e1358f5efebc0c7d410e",
            "AssetType": "oaccount",
            "Balance": 0,
            "BapAccountVersion": 0
            "OrgId": "appdev",
            "TokenId": "loy1",
            "TokenName": "loyalty",
            "TokenType": "fungible",
            "UserId": "idcqa"
        }
    },
    {
        "IsDelete": "false",
        "Timestamp": "2023-06-05T16:28:46Z",
        "TxId": "8185af648546e909488e72149be497b210f74f95ada252c42da9c35cb9d98691",
        "Value": {
            "AccountCategory": "",
            "AccountId": "oaccount~21206f309941a2a23c4f158a0fe1b8f12bb8e2b0c9a2e1358f5efebc0c7d410e",
            "AssetType": "oaccount",
            "Balance": 0,
            "BapAccountVersion": 0
            "OrgId": "appdev",
            "TokenId": "",
            "TokenName": "",
            "TokenType": "fungible",
            "UserId": "idcqa"
        }
    }
]
GetAccountWithStatus
このメソッドは、アカウント・ステータスを含む、指定されたユーザーのトークン・アカウント詳細を返します。このメソッドは、チェーンコードのToken AdminまたはアカウントのAccount Ownerのみがコールできます。
Ctx.ERC1155Account.GetAccountWithStatus(userAccountId string, tokenId ...string) (interface{}, error)
パラメータ:
  • userAccountId string – ユーザーのアカウントID。
  • tokenId ...string – 非代替トークン・アカウントの場合、空の文字列。代替可能トークン・アカウントの場合、トークンID。
戻り値:
  • 成功の場合、トークン・アカウントの詳細(アカウント・ステータスを含む)を含むJSONオブジェクト。
戻り値の例(非代替トークン・アカウント)
{
    "AccountId": "oaccount~cc301bee057f14236a97d434909ec1084970921b008f6baab09c2a0f5f419a9a",
    "AssetType": "oaccount",
    "BapAccountVersion": 1,
    "NoOfNfts": 1,
    "OrgId": "appdev",
    "Status": "active",
    "TokenType": "nonfungible",
    "UserId": "idcqa"
}
戻り値の例(代替可能トークン・アカウント)
{
    "AccountCategory": "",
    "AccountId": "oaccount~2de8db6b91964f8c9009136831126d3cfa94e1d00c4285c1ea3e6d1f36479ed4",
    "AssetType": "oaccount",
    "Balance": 0,
    "BapAccountVersion": 0,
    "OrgId": "appdev",
    "Status": "active",
    "TokenId": "t1",
    "TokenName": "loyalty",
    "TokenType": "fungible",
    "UserId": "idcqa"
}
GetAccount
このメソッドは、指定されたユーザーのトークン・アカウント詳細を返します。このメソッドは、チェーンコードのToken AdminまたはアカウントのAccount Ownerのみがコールできます。
Ctx.ERC1155Account.Get(accountId string, tokenId ...string) (interface{}, error) 
パラメータ:
  • userAccountId string – ユーザーのアカウントID。
  • tokenId ...string – 非代替トークン・アカウントの場合、空の文字列。代替可能トークン・アカウントの場合、トークンID。
戻り値:
  • 成功の場合、トークン・アカウントの詳細を含むJSONオブジェクト。
戻り値の例(非代替トークン・アカウント)
{
    "AccountId": "oaccount~e88276a3be547e31b567346bdddde52d37734da4d5fae83ab2e5c98a10097371",
    "BapAccountVersion": 0,
    "AssetType": "oaccount",
    "NoOfNfts": 4,
    "OrgId": "appdev",
    "TokenType": "nonfungible",
    "UserId": "idcqa"
}
戻り値の例(代替可能トークン・アカウント)
{
    "AssetType": "oaccount",
    "AccountId": "oaccount~21206f309941a2a23c4f158a0fe1b8f12bb8e2b0c9a2e1358f5efebc0c7d410e",
    "UserId": "idcqa",
    "OrgId": "appdev",
    "BapAccountVersion": 0,
    "TokenType": "fungible",
    "TokenId": "loy1",
    "TokenName": "loyalty",
    "Balance": 90,
    "AccountCategory": ""
}
GetAllAccounts
このメソッドは、すべてのユーザー・アカウントの詳細を返します。
Ctx.ERC1155Account.GetAllAccounts() (interface{}, error)
パラメータ:
  • none
戻り値
[
    {
        "AssetType": "ouaccount",
        "AccountId": "ouaccount~412de5e3998dcd100973e1bad6e8729fddc1c7ff610beab8376d733a35c51f38",
        "UserId": "idcqa",
        "OrgId": "appdev",
        "TotalAccounts": 3,
        "TotalFtAccounts": 2,
        "AssociatedFtAccounts": [
            {
                "AccountId": "oaccount~21206f309941a2a23c4f158a0fe1b8f12bb8e2b0c9a2e1358f5efebc0c7d410e",
                "TokenId": "loy1"
            },
            {
                "AccountId": "oaccount~58c5a6b09a41befca2a9ea2550439838c4dcf4d8a2a4f7c98e9319cf8479bfc4",
                "TokenId": ""
            }
        ],
        "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
このメソッドは、指定されたユーザーのアカウント・サマリーと、ユーザーに関連付けられた代替可能トークンおよび非代替トークンの詳細を返します。
Ctx.ERC1155Account.GetAccountDetailsByUser(orgId string, userId string) (interface{}, error)
パラメータ:
  • orgId string – 現在の組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) ID。
  • userId string – ユーザーのユーザー名または電子メールID。
戻り値:
  • 成功の場合、指定されたユーザーのアカウント・サマリー、およびユーザーに関連付けられている代替可能トークンと非代替トークンの詳細を含むJSONアカウント・オブジェクト。フラクショナル非代替トークンの場合、associatedNFTsセクションのtokenShareプロパティには、ユーザーが所有するシェアが示されます。
戻り値
{
    "AssociatedFTAccounts": [
        {
            "AccountId": "oaccount~21206f309941a2a23c4f158a0fe1b8f12bb8e2b0c9a2e1358f5efebc0c7d410e",
            "Balance": 90,
            "TokenId": "FT"
        },
    ],
    "AssociatedNFTAccount": {
        "AccountId": "oaccount~e88276a3be547e31b567346bdddde52d37734da4d5fae83ab2e5c98a10097371",
        "AssociatedNFTs": [
            {
                "NFTTokenId": "FNFT",
                "TokenShare": 230
            },
            {
                "NFTTokenId": "NFT"
            },
            {
                "NFTTokenId": "NFT2"
            }
        ]
    },
    "UserAccountId": "ouaccount~412de5e3998dcd100973e1bad6e8729fddc1c7ff610beab8376d733a35c51f38"
}
GetUserByAccountId
このメソッドは、指定されたアカウントIDのユーザーの詳細を返します。
Ctx.ERC1155Account.GetUserByAccountById(accountId string) (map[string]interface{}, error)
パラメータ:
  • accountId string – アカウントのID。
戻り値:
  • 成功の場合、ユーザー詳細のJSONオブジェクト(orgIdおよびuserId)。
戻り値
{
    "OrgId": "appdev",
    "UserId": "idcqa"
}

ロール管理のメソッド

AddRoleMember
このメソッドは、指定されたユーザーおよびトークンにロールを追加します。代替可能トークンはトークンIDで指定されます。非代替トークンは、トークン名で指定されます。
Ctx.ERC1155Token.AddRoleMember(userRole string, userAccountId string, asset interface{}) (interface{}, error)
パラメータ:
  • userRole: string – 指定したユーザーに追加するロールの名前。
  • userAccountId: string – ユーザーのアカウントID。
  • asset: interface{} – トークン・アセット。
戻り値:
  • 成功の場合、アカウント詳細を含むメッセージ。
戻り値
{
    "msg": "Successfully added role minter to oaccount~1422a74d262a3a55a37cd9023ef8836f765d0be7b49d397696b9961d7434d22a (orgId : appdev, userId : idcqa)"
}
IsInRole
このメソッドは、ユーザーに指定されたロールがあるかどうかを示すブール値を返します。代替可能トークンはトークンIDで指定されます。非代替トークンは、トークン名で指定されます。
Ctx.ERC1155Token.IsInRole(userRole string, userAccountId string, asset interface{}) (bool, error)
パラメータ:
  • userRole: string – 検索するロールの名前。
  • userAccountId: string – ユーザーのアカウントID。
  • asset: interface{} – トークン・アセット。
戻り値
{
    "result": true
}
RemoveRoleMember
このメソッドは、指定されたユーザーおよびトークンからロールを削除します。代替可能トークンはトークンIDで指定されます。非代替トークンは、トークン名で指定されます。
Ctx.ERC1155Token.RemoveRoleMember(userRole string, userAccountId string, asset interface{}) (interface{}, error) 
パラメータ:
  • userRole: string – 削除するロールの名前。
  • userAccountId: string – ユーザーのアカウントID。
  • asset: interface{} – トークン・アセット。
戻り値
{
    "msg": "Successfully removed role 'minter' from Account Id: oaccount~ec7e4de2f81e3ea071710e07b6ff7d9346e84ef665ca4650885dbe8c3e2bd4c0 (Org-Id: appdev, User-Id: idcqa)"
}
GetAccountsByRole
このメソッドは、指定されたロールおよびトークンのすべてのアカウントIDのリストを返します。代替可能トークンはトークンIDで指定されます。非代替トークンは、トークン名で指定されます。
Ctx.ERC1155Role.GetAccountsByRole(roleName string, token interface{}) (interface{}, error)
パラメータ:
  • roleName: string – 検索するロールの名前。
  • token: interface{} – トークン・アセット。
戻り値
{
    "accounts": [
        "oaccount~1422a74d262a3a55a37cd9023ef8836f765d0be7b49d397696b9961d7434d22a",
        "oaccount~60bb20c14a83f6e426e1437c479c5891e1c6477dfd7ad18b73acac5d80bc504b"
    ]
}
GetUsersByRole
このメソッドは、指定されたロールおよびトークンのすべてのユーザーのリストを返します。代替可能トークンはトークンIDで指定されます。非代替トークンは、トークン名で指定されます。
Ctx.ERC1155Role.GetUsersByRole(roleName string, token interface{}) (interface{}, error)
パラメータ:
  • roleName: string – 検索するロールの名前。
  • token: interface{} – トークン・アセット。
戻り値
{
    "Users": [
        {
            "AccountId": "oaccount~1422a74d262a3a55a37cd9023ef8836f765d0be7b49d397696b9961d7434d22a",
            "OrgId": "appdev",
            "UserId": "idcqa"
        },
        {
            "AccountId": "oaccount~60bb20c14a83f6e426e1437c479c5891e1c6477dfd7ad18b73acac5d80bc504b",
            "OrgId": "appdev",
            "UserId": "user1"
        }
    ]
}

トランザクション履歴管理のメソッド

GetAccountTransactionHistory
このメソッドは、アカウント・トランザクション履歴を返します。このメソッドは、チェーンコードのToken Adminまたはアカウント所有者のみがコールできます。非代替トークンの場合、このメソッドはリモートのOracle Blockchain Platformネットワークに接続されている場合にのみコールできます。
Ctx.ERC1155Account.GetAccountTransactionHistory(tokenAccountId string) (interface{}, error)
パラメータ:
  • accountId string – ユーザー・アカウントID。
戻り値
[
    {
        "Balance": 90,
        "Timestamp": "2023-06-06T11:11:09Z",
        "TokenId": "FNFT",
        "TransactedAccount": "oaccount~dcee860665db8740cb77b846e823752185a1e9a185814d0acb305890f5903446",
        "TransactedAmount": 10,
        "TransactionId": "otransaction~0f4d96fbf8fed88ea8a3133428977721091467c701848d595ebc3fffa88b3657~7c88c736df38d5622512f1e8dcdd50710eb47c953f1ecb24ac44790a9e2f475b",
        "TransactionType": "DEBIT",
        "TriggeredByUserAccountId": "ouaccount~412de5e3998dcd100973e1bad6e8729fddc1c7ff610beab8376d733a35c51f38"
    },
    {
        "Timestamp": "2023-06-06T11:11:09Z",
        "TokenId": "NFT",
        "TransactedAccount": "oaccount~dcee860665db8740cb77b846e823752185a1e9a185814d0acb305890f5903446",
        "TransactionId": "otransaction~0f4d96fbf8fed88ea8a3133428977721091467c701848d595ebc3fffa88b3657~178e3730bc5bee50d02f1464a4eebf733a051905f651e5789039adb4a3edc114",
        "TransactionType": "DEBIT",
        "TriggeredByUserAccountId": "ouaccount~412de5e3998dcd100973e1bad6e8729fddc1c7ff610beab8376d733a35c51f38"
    },
    {
        "Timestamp": "2023-06-06T11:06:54Z",
        "TokenId": "NFT",
        "TransactedAccount": "oaccount~e88276a3be547e31b567346bdddde52d37734da4d5fae83ab2e5c98a10097371",
        "TransactionId": "otransaction~6a13667ea3f6edc4c854e85b127526eccb58783f653c348b42a3869f0f29a4fb~a7cefb22ff39ee7e36967be71de27da6798548c872061a62dabc56d88d50b930",
        "TransactionType": "MINT",
        "TriggeredByUserAccountId": "ouaccount~412de5e3998dcd100973e1bad6e8729fddc1c7ff610beab8376d733a35c51f38"
    },
    {
        "Balance": 100,
        "Timestamp": "2023-06-05T16:34:33Z",
        "TokenId": "FNFT",
        "TransactedAccount": "oaccount~e88276a3be547e31b567346bdddde52d37734da4d5fae83ab2e5c98a10097371",
        "TransactedAmount": 100,
        "TransactionId": "otransaction~2bc15de1766d582d821bd8d61756bca02837dc683c0aa61f69657ccd1d95e335~e4eb15d9354f694230df8835ade012100d82aa43672896a2c7125a86e3048f9f",
        "TransactionType": "MINT",
        "TriggeredByUserAccountId": "ouaccount~412de5e3998dcd100973e1bad6e8729fddc1c7ff610beab8376d733a35c51f38"
    }
]
GetTransactionById
このメソッドは、指定されたトランザクションIDのトランザクション詳細を返します。
Ctx.ERC1155Transaction.GetTransactionById(trxId string) (interface{}, error)
パラメータ:
  • trxId string – トランザクションのID。
戻り値
{
    "history": [
        {
            "IsDelete": "false",
            "Timestamp": "2022-12-08T10:45:56Z",
            "TxId": "2da02a53aa1032602df6c68c5628a4ab8b22ba107c0201520ce495948901aa98",
            "Value": {
                "Amount": 5,
                "AssetType": "otransaction",
                "FromAccountId": "oaccount~60bb20c14a83f6e426e1437c479c5891e1c6477dfd7ad18b73acac5d80bc504b",
                "Timestamp": "2022-12-08T10:45:56Z",
                "ToAccountId": "oaccount~1422a74d262a3a55a37cd9023ef8836f765d0be7b49d397696b9961d7434d22a",
                "TokenId": "tokenOne",
                "TransactionId": "otransaction~2da02a53aa1032602df6c68c5628a4ab8b22ba107c0201520ce495948901aa98~9c3ce5f21abd98ca018c196086d73a812f2f49dba323f1de4f6867eecfeec8ff",
                "TransactionType": "TRANSFER",
                "TriggeredByUserAccountId": "ouaccount~24ffd4d32a028a85b4b960f5d55536c837b5429bc7f346150adfa904ec2937cc"
            }
        }
    ],
    "transactionId": "otransaction~2da02a53aa1032602df6c68c5628a4ab8b22ba107c0201520ce495948901aa98~9c3ce5f21abd98ca018c196086d73a812f2f49dba323f1de4f6867eecfeec8ff"
}
DeleteHistoricalTransactions
このメソッドは、指定したタイムスタンプより前のトランザクションを状態データベースから削除します。
Ctx.ERC1155Transaction.DeleteHistoricalTransactions(referenceTime string) (interface{}, error)
パラメータ:
  • referenceTime string – このタイムスタンプより前のすべてのトランザクションが削除されます。
戻り値
{
    "Transactions": [
        "otransaction~750f68538451847f57948f7d5261dcb81570cd9e429f928a4cb7bfa76392ecf7"
    ],
    "msg": "Successfuly deleted transaction older than date:2022-04-06T08:17:53Z"
}

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

MintBatch
このメソッドは、バッチ操作で複数のトークンを作成(ミント)します。このメソッドは、代替可能トークンまたはフラクショナル非代替トークンのみを作成します。

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

非代替トークンの場合、ミンター・ロールが仕様ファイルに定義されていれば、ミンター・ロールを持つすべてのユーザーがこのメソッドをコールできます。そうでない場合は、どのユーザーもこのメソッドを使用してトークンをミントできます。また、コール元はトークンの作成者でもある必要があります。ミントできるフラクショナル非代替トークンの数量に上限はありません。

このメソッドを使用して、ホール非代替トークンをミントすることはできません。

Ctx.ERC1155Token.MintBatch(accountId string, tokens []interface{}, quantities []float64) (interface{}, error)
パラメータ:
  • accountId string – ユーザーのアカウントID。
  • tokenIds []string – トークンをミントするトークンIDのリスト。
  • quantity []float64 – ミントするトークンの数量のリストで、トークンID配列に対応します。
戻り値:
  • 成功の場合、ミントされたトークンの詳細を含むJSONオブジェクト。
戻り値
{
    "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'"
        }
    ],
    "msg": "Successfully minted batch of tokens for User-Account-Id 'ouaccount~412de5e3998dcd100973e1bad6e8729fddc1c7ff610beab8376d733a35c51f38' (Org-Id: 'appdev', User-Id: 'idcqa')"
}

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

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

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

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

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

Ctx.ERC1155Token.BatchTransferFrom(fromAccountId string, toAccountId string, tokens []interface{}, quantities []float64) (interface{}, error) 
パラメータ:
  • fromUserAccountId string – 現在の組織の送信者およびトークン所有者のアカウントID。
  • toUserAccountId string – 受信者のアカウントID。
  • tokenIds string[] – 転送するトークンのトークンIDのリスト。
  • quantity float64[] – 転送するトークンの数量のリストで、トークン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(fromAccountId string, toAccountId string, tokens []interface{}, quantities []float64) (interface{}, error)
パラメータ:
  • fromUserAccountId string – 現在の組織の送信者およびトークン所有者のアカウントID。
  • toUserAccountId string – 受信者のアカウントID。
  • tokenIds string[] – 転送するトークンのトークンIDのリスト。
  • quantity float64[] – 転送するトークンの数量のリストで、トークン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, tokens []interface{}) (interface{}, error)
パラメータ:
  • 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 float64, toTokenId string, toUserAccountId string, toTokenQuantity float64) (interface{}, error) 
パラメータ:
  • fromTokenId string – 送信者が所有するトークンのID。
  • fromUserAccountId string – 送信者のアカウントID。
  • fromTokenQuantity float64 – 受信者と交換する送信者からのトークンの数量。
  • toTokenId string – 受信者が所有するトークンのID。
  • toUserAccountId string – 受信者のアカウントID。
  • toTokenQuantity float64 – 送信者と交換する受信者からのトークンの数量。
戻り値:
  • 成功の場合、トークン交換の詳細を含むメッセージ。
戻り値
{
    "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
このメソッドは、指定された代替可能トークンおよび非代替トークンを非アクティブ化(バーン)します。
Ctx.ERC1155Token.Burn(accountId string, tokens []interface{}, quantities []float64) (interface{}, error)
パラメータ:
  • accountId string – ユーザーのアカウントID。
  • tokenIds []string – バーンするトークンIDのリスト。
  • quantity []float64 – バーンするトークンの数量のリストで、トークンID配列に対応します。
戻り値:
  • 成功の場合、バーン操作の詳細を含むメッセージ。
戻り値
[
    {
        "msg": "Successfully burned NFT token: 'art' from Account-Id: oaccount~76cb672eeb1bd535899562a840d0c15a356db89e24bc8b43ac1dba845a4282c6 (Org-Id: appdev, User-Id: idcqa)"
    },
    {
        "msg": "Successfully burned 2 tokens of tokenId: FT from Account-ID oaccount~9a940587fd322ccc8400233244cd3b13f3aa2a52e418e4c71fb819a2217bc49e (Org-Id: AutoF1377358917, User-Id: idcqa)"
    },
    {
        "msg": "Successfully burned 2 token share of tokenId: FNFT from Account-ID oaccount~87bcb699d507368ee3966cd03ee6d7736ffc55dde8c0f0e16b14866334ac504a (Org-Id: AutoF1377358917, User-Id: idcqa)"
    }
]