ERC-1155用のスキャフォールド済TypeScriptトークン・プロジェクト
ブロックチェーン・アプリケーション・ビルダーは、トークン仕様ファイルから入力を受け取り、完全に機能するスキャフォールド済チェーンコード・プロジェクトを生成します。
プロジェクトは、CRUDおよび非CRUDメソッドを含むトークン・ライフサイクル・クラスおよび関数を自動的に生成します。引数の検証、マーシャリング/アンマーシャリングおよび透過的永続性機能はすべて自動的にサポートされます。
トークンに直接関連しない、スキャフォールドされたプロジェクトおよびメソッドの詳細は、「スキャフォールド済TypeScriptチェーンコード・プロジェクト」を参照してください。
モデル
すべてのトークン化されたモデル・クラスはOchainModel
クラスを拡張します。透過的永続性機能(または簡略化されたORM)は、OchainModel
クラスで取得されます。次のモデルは、ホール非代替トークンを示しています。
import * as yup from "yup";
import { Id, Mandatory, Validate, Default, Embedded, Derived, ReadOnly } from "../../lib/decorators";
import { OchainModel } from "../../lib/ochain-model";
import { STRATEGY } from "../../lib/utils";
import { EmbeddedModel } from "../../lib/ochain-embedded-model";
export class ArtCollectionMetadata extends EmbeddedModel<ArtCollectionMetadata> {
@Validate(yup.string())
public painting_name: string;
@Validate(yup.string())
public description: string;
@Validate(yup.string())
public image: string;
@Validate(yup.string())
public painter_name: string;
}
@Id("tokenId")
export class ArtCollection extends OchainModel<ArtCollection> {
public readonly assetType = "otoken";
@Mandatory()
@Validate(
yup
.string()
.required()
.matches(/^[A-Za-z0-9][A-Za-z0-9_-]*$/)
.max(16)
)
public tokenId: string;
@ReadOnly("artcollection")
public tokenName: string;
@Validate(yup.string().trim().max(256))
public tokenDesc: string;
@ReadOnly("erc1155+")
public tokenStandard: string;
@ReadOnly("nonfungible")
public tokenType: string;
@ReadOnly("whole")
public tokenUnit: string;
@ReadOnly(["indivisible","singleton","mintable","transferable","burnable","roles"])
public behaviors: string[];
@ReadOnly({ minter_role_name: "minter" })
public roles: object;
@ReadOnly({ max_mint_quantity: 20000 })
public mintable: object;
@Validate(yup.string())
public owner: string;
@Validate(yup.string())
public createdBy: string;
@Validate(yup.string())
public transferredBy: string;
@Validate(yup.string())
public creationDate: string;
@Validate(yup.string())
public transferredDate: string;
@Validate(yup.bool())
public isBurned: boolean;
@Validate(yup.string())
public burnedBy: string;
@Validate(yup.string())
public burnedDate: string;
@Mandatory()
@Validate(yup.string().required().max(2000))
public tokenUri: string;
@Embedded(ArtCollectionMetadata)
public tokenMetadata: ArtCollectionMetadata;
@Validate(yup.number())
public price: number;
@Validate(yup.boolean())
public on_sale_flag: boolean;
}
@Id("tokenId")
export class Loyalty extends OchainModel<Loyalty> {
public readonly assetType = "otoken";
@Mandatory()
@Validate(
yup
.string()
.required()
.matches(/^[A-Za-z0-9][A-Za-z0-9_-]*$/)
.max(16)
)
public tokenId: string;
@ReadOnly("loyalty")
public tokenName: string;
@Validate(yup.string().trim().max(256))
public tokenDesc: string;
@ReadOnly("erc1155+")
public tokenStandard: string;
@ReadOnly("fungible")
public tokenType: string;
@ReadOnly("fractional")
public tokenUnit: string;
@ReadOnly(["divisible","mintable","transferable","burnable","roles"])
public behaviors: string[];
@ReadOnly({ minter_role_name: "minter" })
public roles: object;
@ReadOnly({ max_mint_quantity: 10000 })
public mintable: object;
@ReadOnly({ decimal: 2 })
public divisible: object;
@Validate(yup.string())
public currency_name: string;
@Validate(yup.number())
public token_to_currency_ratio: number;
}
次のモデルは、フラクショナル非代替トークンを示しています。export class RealEstatePropertyMetadata extends EmbeddedModel<RealEstatePropertyMetadata> {
@Validate(yup.string())
public propertyType: string;
@Validate(yup.string())
public propertyName: string;
@Validate(yup.string())
public propertyAddress: string;
@Validate(yup.string())
public propertyImage: string;
}
@Id("tokenId")
export class RealEstateProperty extends OchainModel<RealEstateProperty> {
public readonly assetType = "otoken";
@Mandatory()
@Validate(
yup
.string()
.required()
.matches(/^[A-Za-z0-9][A-Za-z0-9_-]*$/)
.max(16)
)
public tokenId: string;
@ReadOnly("realestateproperty")
public tokenName: string;
@Validate(yup.string().trim().max(256))
public tokenDesc: string;
@ReadOnly("erc1155+")
public tokenStandard: string;
@ReadOnly("nonfungible")
public tokenType: string;
@ReadOnly("fractional")
public tokenUnit: string;
@ReadOnly(["divisible","mintable","transferable","roles"])
public behaviors: string[];
@ReadOnly({ minter_role_name: "minter" })
public roles: object;
@ReadOnly({ max_mint_quantity: 0 })
public mintable: object;
@Validate(yup.number().positive())
public quantity: number;
@Validate(yup.string())
public createdBy: string;
@Validate(yup.string())
public creationDate: string;
@ReadOnly({ decimal: 0 })
public divisible: object;
@Validate(yup.bool())
public isBurned: boolean;
@Mandatory()
@Validate(yup.string().required().max(2000))
public tokenUri: string;
@Embedded(RealEstatePropertyMetadata)
public tokenMetadata: RealEstatePropertyMetadata;
@Validate(yup.number())
public propertySellingPrice: number;
@Validate(yup.number())
public propertyRentingPrice: number;
}
コントローラ
メイン・コントローラ・クラスは、OchainController
クラスを拡張します。メインコントローラは1つのみです。
export class DigiCurrCCController extends OchainController{
クラス、関数またはファイルはいくつでも作成できますが、メイン・コントローラ・クラス内で定義されているメソッドのみが呼出し可能です。その他のメソッドは非表示です。
トークンSDKメソッドを使用して、ビジネス・アプリケーションのカスタム・メソッドを記述できます。
自動生成されたトークン・メソッド
ブロックチェーン・アプリケーション・ビルダーは、トークンおよびトークン・ライフサイクルをサポートするメソッドを自動的に生成します。これらのメソッドを使用して、トークンの初期化、ロールとアカウントの管理、およびその他のトークン・ライフサイクル・タスクを追加コーディングなしで行えます。コントローラ・メソッドを呼び出すには、@Validator(...params)
デコレータが必要です。
アクセス制御管理のメソッド
-
isTokenAdmin
- このメソッドは、関数のコール元が
Token Admin
の場合はブール値true
を返し、それ以外の場合はfalse
を返します。このメソッドは、チェーンコードのToken Admin
のみがコールできます。 -
addTokenAdmin
- このメソッドは、ユーザーをチェーンコードの
Token Admin
として追加します。このメソッドは、チェーンコードのToken Admin
のみがコールできます。 -
removeTokenAdmin
- このメソッドは、チェーンコードの
Token Admin
であるユーザーを削除します。このメソッドは、チェーンコードのToken Admin
のみがコールできます。Token Admin
である自分自身を削除することはできません。 -
getAllTokenAdmins
- このメソッドは、チェーンコードの
Token Admin
であるすべてのユーザーのリストを返します。このメソッドは、チェーンコードのToken Admin
のみがコールできます。
トークン構成管理のメソッド
-
init
- このメソッドは、チェーンコードがインスタンス化されるときにコールされます。すべての
Token Admin
は、adminList
パラメータのuserId
およびorgId
情報によって識別されます。userId
は、インスタンス所有者またはインスタンスにログインしているユーザーのユーザー名または電子メールIDです。orgId
は、現在のネットワーク組織内のユーザーのメンバーシップ・サービス・プロバイダ(MSP) IDです。チェーンコードを初めてデプロイする場合、adminList
パラメータは必須です。チェーンコードをアップグレードする場合は、空のリスト([]
)を渡します。チェーンコードを最初にデプロイしたユーザーの場合、チェーンコードのアップグレード時にadminList
パラメータに新しい管理者を指定することもできます。adminList
パラメータ内のその他の情報は、アップグレード時に無視されます。 -
create<Token Name>Token
- このメソッドはトークンを作成します。定義されているすべてのトークンには、独自の作成メソッドがあります。代替可能トークンの場合、このメソッドはチェーンコードの
Token Admin
のみがコールできます。非代替トークンの場合、ミンター・ロールが仕様ファイルに定義されていれば、ミンター・ロールを持つすべてのユーザーがこのメソッドをコールしてNFTを作成できます。ミンター・ロールが定義されていない場合、どのユーザーもこのメソッドを使用してNFTを作成(ミント)できます。このメソッドをコールするユーザーがNFTの所有者になります。 -
update<Token Name>Token
- このメソッドはトークンを更新します。定義されているすべてのトークンには、独自の更新メソッドがあります。非代替トークンのトークン・メタデータまたはトークンURIは更新できません。代替可能トークンの場合、このメソッドはチェーンコードの
Token Admin
のみがコールできます。非代替トークンの場合、このメソッドはトークン所有者のみがコールできます。 -
getTokenHistory
- このメソッドは、指定されたトークンIDの履歴を返します。だれでもこのメソッドをコールできます。
-
getAllTokens
- このメソッドは、状態データベースに保存されているすべてのトークン・アセットを返します。このメソッドは、チェーンコードの
Token Admin
のみがコールできます。このメソッドでは、Berkeley DB SQLリッチ問合せが使用され、リモートOracle Blockchain Platformネットワークに接続されている場合にのみコールできます。 -
getTokenById
- このメソッドは、トークンが状態データベースに存在する場合、トークン・オブジェクトを返します。フラクショナルNFTの場合、所有者のリストも返されます。このメソッドは、チェーンコードの
Token Admin
またはトークン所有者のみがコールできます。 -
getAllTokensByUser
- このメソッドは、指定されたユーザーが所有するすべてのトークン・アセットを返します。このメソッドでは、Berkeley DB SQLリッチ問合せが使用され、リモートOracle Blockchain Platformネットワークに接続されている場合にのみコールできます。このメソッドは、チェーンコードの
Token Admin
またはアカウント所有者のみがコールできます。 -
ownerOf
- このメソッドは、指定されたトークンIDの所有者のアカウントID、組織IDおよびユーザーIDを返します。だれでもこのメソッドをコールできます。
-
URI
- このメソッドは、指定されたトークンのURIを返します。だれでもこのメソッドをコールできます。
-
name
- このメソッドは、トークン・クラスの名前を返します。だれでもこのメソッドをコールできます。
-
totalSupply
- このメソッドは、ミントされたトークンの合計数を返します。代替可能トークンはトークンIDで指定されます。非代替トークンは、トークン名で指定されます。このメソッドは、チェーンコードの
Token Admin
のみがコールできます。 -
totalNetSupply
- このメソッドは、ミントされたトークンの合計数からバーンされたトークンの数を引いた数を返します。代替可能トークンはトークンIDで指定されます。非代替トークンは、トークン名で指定されます。このメソッドは、チェーンコードの
Token Admin
のみがコールできます。 -
getTokensByName
- このメソッドは、指定されたトークン名のすべてのトークン・アセットを返します。このメソッドでは、Berkeley DB SQLリッチ問合せが使用され、リモートOracle Blockchain Platformネットワークに接続されている場合にのみコールできます。このメソッドは、チェーンコードの
Token Admin
のみがコールできます。 -
getTokenDecimal
- このメソッドは、指定されたトークンの小数点以下の桁数を返します。このメソッドは、チェーンコードの
Token Admin
のみがコールできます。
アカウント管理のメソッド
-
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~
で始まります。 -
createUserAccount
- このメソッドは、指定されたユーザーのアカウントを作成します。任意の時点でトークンを持つすべてのユーザーに対してアカウントを作成する必要があります。ユーザー・アカウントは、ユーザーが保持するNFTアカウントおよび代替可能トークン・アカウントを追跡します。ユーザーは、トークン関連の操作を完了するためにネットワーク内にアカウントを持っている必要があります。
アカウントIDは、
orgId
パラメータおよびuserId
パラメータのSHA-256ハッシュです。このメソッドは、チェーンコードのToken Admin
のみがコールできます。 -
createTokenAccount
- このメソッドは、ユーザー・アカウントに関連付ける代替可能または非代替トークン・アカウントを作成します。
ユーザーは、一意のアカウントIDを持つ複数の代替可能トークン・アカウントを持つことができます。代替可能トークン・アカウントIDは、
orgId
パラメータ、userId
パラメータ、チルダ記号(~
)で区切られた定数文字列ft
、およびチルダ記号(~
)で区切られた作成中の代替可能アカウントの索引を示すカウンタ番号のSHA-256ハッシュによって形成されます。ユーザーが所有できる非代替トークン・アカウントは1つのみです。非代替トークン・アカウントIDは一意であり、
orgId
パラメータ、userId
パラメータおよびチルダ記号(~
)で区切られた定数文字列nft
のSHA-256ハッシュによって形成されます。ユーザーが所有するすべての非代替トークン(ホールまたはフラクショナル)は、このアカウントにリンクされます。このメソッドは、チェーンコードの
Token Admin
のみがコールできます。 -
associateFungibleTokenAccount
- このメソッドは、ユーザーの代替可能トークン・アカウントを特定の代替可能トークンに関連付けます。
このメソッドは、チェーンコードの
Token Admin
のみがコールできます。 -
getAccountHistory
- このメソッドは、指定されたトークン・アカウントの履歴を返します。これは非同期メソッドです。このメソッドは、チェーンコードの
Token Admin
またはアカウント所有者のみがコールできます。 -
getAccount
- このメソッドは、指定されたユーザーのトークン・アカウント詳細を返します。このメソッドは、チェーンコードの
Token Admin
またはアカウントのAccount Owner
のみがコールできます。 -
getAllAccounts
- このメソッドは、すべてのユーザー・アカウントの詳細を返します。このメソッドは、チェーンコードの
Token Admin
のみがコールできます。 -
getAccountDetailsByUser
- このメソッドは、指定されたユーザーのアカウント・サマリーと、ユーザーに関連付けられた代替可能トークンおよび非代替トークンの詳細を返します。このメソッドは、チェーンコードの
Token Admin
またはアカウントのAccount Owner
のみがコールできます。 -
getUserByAccountId
- このメソッドは、指定されたアカウントIDのユーザーの詳細を返します。このメソッドは、どのユーザーでもコールできます。
ロール管理のメソッド
-
addRole
- このメソッドは、指定されたユーザーおよびトークンにロールを追加します。このメソッドは、チェーンコードの
Token Admin
のみがコールできます。代替可能トークンはトークンIDで指定されます。非代替トークンは、トークン名で指定されます。指定されたユーザーには、代替可能トークンに関連付けられたトークン・アカウント、またはNFTロールの非代替トークン・アカウントが必要です。トークンの仕様ファイルに、指定されたロールが存在する必要があります。 -
isInRole
- このメソッドは、ユーザーに指定されたロールがあるかどうかを示すブール値を返します。代替可能トークンはトークンIDで指定されます。非代替トークンは、トークン名で指定されます。このメソッドは、チェーンコードの
Token Admin
またはアカウントのAccount Owner
のみがコールできます。指定されたユーザーには、代替可能トークンに関連付けられたトークン・アカウント、またはNFTロールの非代替トークン・アカウントが必要です。トークンの仕様ファイルに、指定されたロールが存在する必要があります。 -
removeRole
- このメソッドは、指定されたユーザーおよびトークンからロールを削除します。代替可能トークンはトークンIDで指定されます。非代替トークンは、トークン名で指定されます。このメソッドは、チェーンコードの
Token Admin
のみがコールできます。指定されたユーザーには、代替可能トークンに関連付けられたトークン・アカウント、またはNFTロールの非代替トークン・アカウントが必要です。トークンの仕様ファイルに、指定されたロールが存在する必要があります。 -
getAccountsByRole
- このメソッドは、指定されたロールおよびトークンのすべてのアカウントIDのリストを返します。代替可能トークンはトークンIDで指定されます。非代替トークンは、トークン名で指定されます。このメソッドは、チェーンコードの
Token Admin
のみがコールできます。 -
getUsersByRole
- このメソッドは、指定されたロールおよびトークンのすべてのユーザーのリストを返します。代替可能トークンはトークンIDで指定されます。非代替トークンは、トークン名で指定されます。このメソッドは、チェーンコードの
Token Admin
のみがコールできます。
トランザクション履歴管理のメソッド
-
getAccountTransactionHistory
- このメソッドは、アカウント・トランザクション履歴を返します。このメソッドは、チェーンコードの
Token Admin
またはアカウント所有者のみがコールできます。非代替トークンの場合、このメソッドはリモートのOracle Blockchain Platformネットワークに接続されている場合にのみコールできます。 -
getTransactionById
- このメソッドは、指定されたトランザクションIDのトランザクション詳細を返します。だれでもこのメソッドをコールできます。
-
deleteHistoricalTransactions
- このメソッドは、指定したタイムスタンプより前のトランザクションを状態データベースから削除します。このメソッドは、チェーンコードの
Token Admin
のみがコールできます。
トークン動作管理のメソッド - ミント可能動作
-
mintBatch
- このメソッドは、バッチ操作で複数のトークンを作成(ミント)します。このメソッドは、代替可能トークンまたはフラクショナル非代替トークンのみを作成します。
代替可能トークンの場合、ミンター・ロールが仕様ファイルに定義されていれば、ミンター・ロールを持つすべてのユーザーがこのメソッドをコールできます。そうでない場合は、どのユーザーもこのメソッドを使用してトークンをミントできます。トークンの作成または更新時にトークンの
max_mint_quantity
プロパティが指定されていた場合、このプロパティを超えるミントはできません。非代替トークンの場合、ミンター・ロールが仕様ファイルに定義されていれば、ミンター・ロールを持つすべてのユーザーがこのメソッドをコールできます。そうでない場合は、どのユーザーもこのメソッドを使用してトークンをミントできます。また、コール元はトークンの作成者でもある必要があります。ミントできるフラクショナル非代替トークンの数量に上限はありません。
このメソッドを使用して、ホール非代替トークンをミントすることはできません。
トークン動作管理のメソッド - 転送可能動作
-
batchTransferFrom
- このメソッドは、トークンIDのリストで指定されたトークンを、あるユーザーから別のユーザーに転送するバッチ操作を完了します。
NFTの場合、メソッドによってNFTの所有権が移転されるため、NFTの送信者はトークンを所有している必要があります。
フラクショナルNFTの場合、ユーザー(トークンの作成者を含む)が所有するすべてのシェアを転送すると、トークンの所有権が失われます。トークンのいずれかのシェアがユーザーに転送されると、そのユーザーは自動的にフラクショナルNFTの所有者の1人になります。
このメソッドは、メソッドのコール元が指定された送信者であることを検証しません。このメソッドは、どのユーザーでもコールできます。
-
safeBatchTransferFrom
- このメソッドは、トークンIDのリストで指定されたトークンを、あるユーザーから別のユーザーに転送するバッチ操作を完了します。
NFTの場合、メソッドによってNFTの所有権が移転されるため、NFTの送信者はトークンを所有している必要があります。
フラクショナルNFTの場合、ユーザー(トークンの作成者を含む)が所有するすべてのシェアを転送すると、トークンの所有権が失われます。トークンのいずれかのシェアがユーザーに転送されると、そのユーザーは自動的にフラクショナルNFTの所有者の1人になります。
メソッドのコール元は、指定された送信者である必要があります。このメソッドは、どのユーザーでもコールできます。
-
balanceOfBatch
- このメソッドは、トークン・アカウントの残高を取得するバッチ操作を完了します。アカウント詳細は、組織ID、ユーザーIDおよびトークンIDの3つの個別のリストで指定されます。このメソッドは、チェーンコードの
Token Admin
またはアカウント所有者のみがコールできます。アカウント所有者は、自分が所有するアカウントの残高詳細のみを表示できます。 -
exchangeToken
- このメソッドは、指定されたアカウント間でトークンを交換します。この方メソッドは、NFTと代替可能トークン、または代替可能トークンとNFTとの間の交換のみをサポートします。NFTはホールまたはフラクショナルにできます。このメソッドは、アカウント所有者のみがコールできます。
トークン動作管理のメソッド - バーン可能動作
SDKメソッド
アクセス制御管理のメソッド
-
checkAuthorization
- このメソッドは、操作にアクセス制御チェックを追加するために使用します。これは非同期関数です。特定のトークン・メソッドは、トークンの
Token Admin
またはAccountOwner
、または複数のアカウントを持つユーザーのMultipleAccountOwner
のみが実行できます。アクセス制御マッピングは、../lib/constant.ts
ファイルに記述されています。アクセス制御を変更するには、../lib/constant.ts
ファイルを編集します。独自のアクセス制御を使用したり、アクセス制御を無効にするには、自動生成されたコントローラ・メソッドおよびカスタム・メソッドからアクセス制御コードを削除します。ADMIN: { isUserTokenAdmin: ["Admin"], addAdmin: ["Admin"], removeAdmin: ["Admin"], getAllAdmins: ["Admin"], }, TOKEN: { save: ["Admin"], getAllTokens: ["Admin"], get: ["Admin"], update: ["Admin"], getDecimals: ["Admin"], getTokensByName: ["Admin"], addRoleMember: ["Admin"], removeRoleMember: ["Admin"], isInRole: ["Admin", "AccountOwner"], getTotalMintedTokens: ["Admin"], getNetTokens: ["Admin"], getTokenHistory: ["Admin"], }, ROLE: { getAccountsByRole: ["Admin"], getUsersByRole: ["Admin"], }, TRANSACTION: { deleteTransactions: ["Admin"], }, ACCOUNT: { createAccount: ["Admin"], associateToken: ["Admin"], getAllAccounts: ["Admin"], getAccountsByUser: ["Admin", "MultipleAccountOwner"], getAccount: ["Admin", "AccountOwner"], history: ["Admin", "AccountOwner"], getAccountTransactionHistory: ["Admin", "AccountOwner"], getAccountTransactionHistoryWithFilters: ["Admin", "AccountOwner"], getSubTransactionsById: ["Admin", TRANSACTION_INVOKER], getSubTransactionsByIdWithFilters: ["Admin", TRANSACTION_INVOKER], getAccountBalance: ["Admin", "AccountOwner"], getAccountOnHoldBalance: ["Admin", "AccountOwner"], getOnHoldIds: ["Admin", "AccountOwner"], getConversionHistory: ["Admin", "AccountOwner"], }, ACCOUNT_STATUS: { get: ["Admin", "AccountOwner"], history: ["Admin", "AccountOwner"], activateAccount: ["Admin"], suspendAccount: ["Admin"], deleteAccount: ["Admin"], }, TOKEN_CONVERSION: { initializeExchangePoolUser: ["Admin"], addConversionRate: ["Admin"], updateConversionRate: ["Admin"], getConversionRate: ["Admin", "AnyAccountOwner"], getConversionRateHistory: ["Admin", "AnyAccountOwner"], tokenConversion: ["Admin", "AnyAccountOwner"], getExchangePoolUser: ["Admin"], }, ERC721ADMIN: { isUserTokenAdmin: ["Admin"], addAdmin: ["Admin"], removeAdmin: ["Admin"], getAllAdmins: ["Admin"], }, ERC721TOKEN: { getAllTokens: ["Admin"], getAllTokensByUser: ["Admin", "AccountOwner"], get: ["Admin", TOKEN_OWNER], getTokensByName: ["Admin"], addRoleMember: ["Admin"], removeRoleMember: ["Admin"], isInRole: ["Admin", "AccountOwner"], totalSupply: ["Admin"], totalNetSupply: ["Admin"], history: ["Admin"], }, ERC721ROLE: { getAccountsByRole: ["Admin"], getUsersByRole: ["Admin"], }, ERC721TRANSACTION: { deleteTransactions: ["Admin"], }, ERC721ACCOUNT: { createAccount: ["Admin"], getAllAccounts: ["Admin"], getAccountByUser: ["Admin", "MultipleAccountOwner"], history: ["Admin", "AccountOwner"], getAccountTransactionHistory: ["Admin", "AccountOwner"], getAccountTransactionHistoryWithFilters: ["Admin", "AccountOwner"], balanceOf: ["Admin", "MultipleAccountOwner"], }, ERC1155ADMIN: { isUserTokenAdmin: ["Admin"], addAdmin: ["Admin"], removeAdmin: ["Admin"], getAllAdmins: ["Admin"], }, ERC1155TOKEN: { getAllTokens: ["Admin"], get: ["Admin", TOKEN_OWNER], getAllTokensByUser: ["Admin", "AccountOwner"], totalSupply: ["Admin"], totalNetSupply: ["Admin"], getTokensByName: ["Admin"], getDecimals: ["Admin"], addRoleMember: ["Admin"], removeRoleMember: ["Admin"], isInRole: ["Admin", "AccountOwner"], save: ["Admin"], update: ["Admin"], }, ERC1155ACCOUNT: { createAccount: ["Admin"], createUserAccount: ["Admin"], createTokenAccount: ["Admin"], associateFungibleTokenToAccount: ["Admin", "AccountOwner"], getAccountsByUser: ["Admin", "AccountOwner"], getAccount: ["Admin", "AccountOwner"], history: ["Admin", "AccountOwner"], getAllAccounts: ["Admin"], balanceOfBatch: ["Admin"], getAccountTransactionHistory: ["Admin", "AccountOwner"], getAccountTransactionHistoryWithFilters: ["Admin", "AccountOwner"], exchangeToken: ["AccountOwner"], getAccountDetailsByUser: ["Admin", "AccountOwner"], }, ERC1155ROLE: { getAccountsByRole: ["Admin"], getUsersByRole: ["Admin"], },
-
isUserTokenAdmin
- このメソッドは、指定されたユーザーが
Token Admin
の場合はブール値true
を、それ以外の場合はfalse
を返します。このメソッドは、トークン・チェーンコードのToken Admin
のみがコールできます。 -
addAdmin
- このメソッドは、トークン・チェーンコードの
Token Admin
としてユーザーを追加します。このメソッドは、トークン・チェーンコードのToken Admin
のみがコールできます。 -
removeAdmin
- このメソッドは、トークン・チェーンコードの
Token Admin
であるユーザーを削除します。このメソッドは、トークン・チェーンコードのToken Admin
のみがコールできます。Token Admin
である自分自身を削除することはできません。 -
getAllAdmins
- このメソッドは、すべての
Token Admin
ユーザーのリストを返します。
トークン構成管理のメソッド
-
save
- このメソッドはトークンを作成します。定義されているすべてのトークンには、独自の作成メソッドがあります。非代替トークンの場合、ミンター・ロールが仕様ファイルに定義されていれば、ミンター・ロールを持つすべてのユーザーがこのメソッドをコールしてNFTを作成できます。そうでない場合は、どのユーザーもこのメソッドを使用してNFTを作成(ミント)できます。このメソッドをコールしたユーザーが、NFTの所有者(ホールまたはフラクショナル)になります。
-
update
- このメソッドはトークンを更新します。非代替トークンのトークン・メタデータまたはトークンURIは更新できません。
-
history (Token)
- このメソッドは、指定されたトークンIDの履歴を返します。
-
getAllTokens
- このメソッドは、状態データベースに保存されているすべてのトークン・アセットを返します。このメソッドは、チェーンコードの
Token Admin
のみがコールできます。このメソッドでは、Berkeley DB SQLリッチ問合せが使用され、リモートOracle Blockchain Platformネットワークに接続されている場合にのみコールできます。 -
get (Token)
- このメソッドは、トークンが状態データベースに存在する場合、トークン・オブジェクトを返します。このメソッドは、チェーンコードの
Token Admin
またはトークン所有者のみがコールできます。 -
getAllTokensByUser
- このメソッドは、指定されたユーザーが所有するすべてのトークン・アセットを返します。このメソッドでは、Berkeley DB SQLリッチ問合せが使用され、リモートOracle Blockchain Platformネットワークに接続されている場合にのみコールできます。
-
ownerOf
- このメソッドは、指定されたトークンIDの所有者のアカウントID、組織IDおよびユーザーIDを返します。
-
tokenURI
- このメソッドは、指定されたトークンのURIを返します。だれでもこのメソッドをコールできます。
-
name
- このメソッドは、トークン・クラスの名前を返します。だれでもこのメソッドをコールできます。
-
totalSupply
- このメソッドは、ミントされたトークンの合計数を返します。代替可能トークンはトークンIDで指定されます。非代替トークンは、トークン名で指定されます。
-
totalNetSupply
- このメソッドは、ミントされたトークンの合計数からバーンされたトークンの数を引いた数を返します。代替可能トークンはトークンIDで指定されます。非代替トークンは、トークン名で指定されます。
-
getTokensByName
- このメソッドは、指定されたトークン名のすべてのトークン・アセットを返します。このメソッドでは、Berkeley DB SQLリッチ問合せが使用され、リモートOracle Blockchain Platformネットワークに接続されている場合にのみコールできます。
-
getDecimals
- このメソッドは、指定されたトークンの小数点以下の桁数を返します。トークンに対して分割可能動作が指定されていない場合は、小数点以下の桁数のデフォルト値ゼロが返されます。
アカウント管理のメソッド
-
createAccount
- このメソッドは、指定されたユーザーおよび関連するトークン・アカウントのアカウントを、代替可能トークンまたは非代替トークンに対して作成します。任意の時点でトークンを持つすべてのユーザーに対してアカウントを作成する必要があります。ユーザー・アカウントは、ユーザーが保持するNFTアカウントおよび代替可能トークン・アカウントを追跡します。ユーザーは、トークン関連の操作を完了するためにネットワーク内にアカウントを持っている必要があります。このメソッドは、チェーンコードの
Token Admin
のみがコールできます。ユーザー・アカウントには、
orgId
パラメータおよびuserId
パラメータのSHA-256ハッシュによって形成される一意のIDがあります。ユーザーは、一意のアカウントIDを持つ複数の代替可能トークン・アカウントを持つことができます。代替可能トークン・アカウントIDは、
orgId
パラメータ、userId
パラメータ、チルダ記号(~
)で区切られた定数文字列ft
、およびチルダ記号(~
)で区切られた作成中の代替可能アカウントの索引を示すカウンタ番号のSHA-256ハッシュによって形成されます。ユーザーが所有できる非代替トークン・アカウントは1つのみです。非代替トークン・アカウントIDは一意であり、
orgId
パラメータ、userId
パラメータおよびチルダ記号(~
)で区切られた定数文字列nft
のSHA-256ハッシュによって形成されます。ユーザーが所有するすべての非代替トークン(ホールまたはフラクショナル)は、この単一の非代替トークン・アカウントにリンクされます。 -
createUserAccount
- このメソッドは、指定されたユーザーのアカウントを作成します。任意の時点でトークンを持つすべてのユーザーに対してアカウントを作成する必要があります。ユーザー・アカウントは、ユーザーが保持するNFTアカウントおよび代替可能トークン・アカウントを追跡します。ユーザーは、トークン関連の操作を完了するためにネットワーク内にアカウントを持っている必要があります。
アカウントIDは、
orgId
パラメータおよびuserId
パラメータのSHA-256ハッシュです。このメソッドは、チェーンコードのToken Admin
のみがコールできます。 -
createTokenAccount
- このメソッドは、ユーザー・アカウントに関連付ける代替可能または非代替トークン・アカウントを作成します。
ユーザーは、一意のアカウントIDを持つ複数の代替可能トークン・アカウントを持つことができます。代替可能トークン・アカウントIDは、
orgId
パラメータ、userId
パラメータ、チルダ記号(~
)で区切られた定数文字列ft
、およびチルダ記号(~
)で区切られた作成中の代替可能アカウントの索引を示すカウンタ番号のSHA-256ハッシュによって形成されます。ユーザーが所有できる非代替トークン・アカウントは1つのみです。非代替トークン・アカウントIDは一意であり、
orgId
パラメータ、userId
パラメータおよびチルダ記号(~
)で区切られた定数文字列nft
のSHA-256ハッシュによって形成されます。ユーザーが所有するすべての非代替トークン(ホールまたはフラクショナル)は、この単一の非代替トークン・アカウントにリンクされます。このメソッドは、チェーンコードの
Token Admin
のみがコールできます。 -
associateTokenToToken
- このメソッドは、ユーザーの代替可能トークン・アカウントを特定の代替可能トークンに関連付けます。
-
getAccountHistory
- このメソッドは、指定されたトークン・アカウントの履歴を返します。
-
getAccountWithStatus
- このメソッドは、指定されたユーザーのトークン・アカウント詳細(アカウント・ステータスを含む)を返します。このメソッドは、チェーンコードの
Token Admin
またはアカウントのAccount Owner
のみがコールできます。 -
getAccount
- このメソッドは、指定されたユーザーのトークン・アカウント詳細を返します。このメソッドは、チェーンコードの
Token Admin
またはアカウントのAccount Owner
のみがコールできます。 -
getAllAccounts
- このメソッドは、すべてのユーザー・アカウントの詳細を返します。
-
getAccountDetailsByUser
- このメソッドは、指定されたユーザーのアカウント・サマリーと、ユーザーに関連付けられた代替可能トークンおよび非代替トークンの詳細を返します。
-
getUserByAccountId
- このメソッドは、指定されたアカウントIDのユーザーの詳細を返します。
ロール管理のメソッド
-
AddRoleMember
- このメソッドは、指定されたユーザーおよびトークンにロールを追加します。代替可能トークンはトークンIDで指定されます。非代替トークンは、トークン名で指定されます。
-
isInRole
- このメソッドは、ユーザーに指定されたロールがあるかどうかを示すブール値を返します。代替可能トークンはトークンIDで指定されます。非代替トークンは、トークン名で指定されます。
-
removeRoleMember
- このメソッドは、指定されたユーザーおよびトークンからロールを削除します。代替可能トークンはトークンIDで指定されます。非代替トークンは、トークン名で指定されます。
-
getAccountsByRole
- このメソッドは、指定されたロールおよびトークンのすべてのアカウントIDのリストを返します。代替可能トークンはトークンIDで指定されます。非代替トークンは、トークン名で指定されます。
-
getUsersByRole
- このメソッドは、指定されたロールおよびトークンのすべてのユーザーのリストを返します。代替可能トークンはトークンIDで指定されます。非代替トークンは、トークン名で指定されます。
トランザクション履歴管理のメソッド
-
getAccountTransactionHistory
- このメソッドは、アカウント・トランザクション履歴を返します。このメソッドは、チェーンコードの
Token Admin
またはアカウント所有者のみがコールできます。非代替トークンの場合、このメソッドはリモートのOracle Blockchain Platformネットワークに接続されている場合にのみコールできます。 -
getTransactionById
- このメソッドは、指定されたトランザクションIDのトランザクション詳細を返します。
-
deleteTransactions
- このメソッドは、指定したタイムスタンプより前のトランザクションを状態データベースから削除します。
トークン動作管理のメソッド - ミント可能動作
-
mintBatch
- このメソッドは、バッチ操作で複数のトークンを作成(ミント)します。このメソッドは、代替可能トークンまたはフラクショナル非代替トークンのみを作成します。
代替可能トークンの場合、ミンター・ロールが仕様ファイルに定義されていれば、ミンター・ロールを持つすべてのユーザーがこのメソッドをコールできます。そうでない場合は、どのユーザーもこのメソッドを使用してトークンをミントできます。トークンの作成または更新時にトークンの
max_mint_quantity
プロパティが指定されていた場合、このプロパティを超えるミントはできません。非代替トークンの場合、ミンター・ロールが仕様ファイルに定義されていれば、ミンター・ロールを持つすべてのユーザーがこのメソッドをコールできます。そうでない場合は、どのユーザーもこのメソッドを使用してトークンをミントできます。また、コール元はトークンの作成者でもある必要があります。ミントできるフラクショナル非代替トークンの数量に上限はありません。
このメソッドを使用して、ホール非代替トークンをミントすることはできません。
トークン動作管理のメソッド - 転送可能動作
-
batchTransferFrom
- このメソッドは、トークンIDのリストで指定されたトークンを、あるユーザーから別のユーザーに転送するバッチ操作を完了します。
NFTの場合、メソッドによってNFTの所有権が移転されるため、NFTの送信者はトークンを所有している必要があります。
フラクショナルNFTの場合、ユーザー(トークンの作成者を含む)が所有するすべてのシェアを転送すると、トークンの所有権が失われます。トークンのいずれかのシェアがユーザーに転送されると、そのユーザーは自動的にフラクショナルNFTの所有者の1人になります。
このメソッドは、メソッドのコール元が指定された送信者であることを検証しません。
-
safeBatchtransferFrom
- このメソッドは、トークンIDのリストで指定されたトークンを、あるユーザーから別のユーザーに転送するバッチ操作を完了します。
NFTの場合、メソッドによってNFTの所有権が移転されるため、NFTの送信者はトークンを所有している必要があります。
フラクショナルNFTの場合、ユーザー(トークンの作成者を含む)が所有するすべてのシェアを転送すると、トークンの所有権が失われます。トークンのいずれかのシェアがユーザーに転送されると、そのユーザーは自動的にフラクショナルNFTの所有者の1人になります。
メソッドのコール元は、指定された送信者である必要があります。
-
balanceOfBatch
- このメソッドは、トークン・アカウントの残高を取得するバッチ操作を完了します。アカウント詳細は、組織ID、ユーザーIDおよびトークンIDの3つの個別のリストで指定されます。このメソッドは、チェーンコードの
Token Admin
またはアカウント所有者のみがコールできます。アカウント所有者は、自分が所有するアカウントの残高詳細のみを表示できます。 -
exchangeToken
- このメソッドは、指定されたアカウント間でトークンを交換します。このメソッドは、NFT(ホールまたはフラクショナル)と代替可能トークンまたは代替可能トークンとNFT(ホールまたはフラクショナル)の間の交換のみをサポートします。このメソッドは、アカウント所有者のみがコールできます。
トークン動作管理のメソッド - バーン可能動作