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
- このメソッドはトークンを作成します。定義されるすべてのトークンには、独自のcreateメソッドがあります。可変トークンの場合、このメソッドはチェーンコードの
Token Admin
によってのみコールできます。真菌性のないトークンの場合、minter役割が仕様ファイルに定義されていれば、minter役割を持つすべてのユーザーがこのメソッドを呼び出してNFTを作成できます。マイナー・ロールが定義されていない場合、どのユーザーもこのメソッドを使用してNFTを作成できます(最小)。このメソッドを呼び出すユーザーがNFTの所有者になります。 -
update<Token Name>Token
- このメソッドはトークンを更新します。定義されるすべてのトークンには、独自の更新方法があります。トークン・メタデータまたは非fungibleトークンのトークン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
- このメソッドは、ミント・トークンの合計数を返します。FungibleトークンはトークンIDで指定されます。トークン名によって、不確定トークンが指定されます。このメソッドは、チェーンコードの
Token Admin
によってのみコールできます。 -
totalNetSupply
- このメソッドは、ミント・トークンの合計数からバーン・トークンの数を差し引いた数を返します。Fungibleトークンはトークン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を持つ複数の実行可能なトークン・アカウントを持つことができます。Fungibleトークン・アカウントIDは、
orgId
パラメータのSHA-256ハッシュ、userId
パラメータ、チルド記号で区切られた定数文字列ft
(~
)、およびチルダ記号(~
)で区切られた作成されているfungibleアカウントの索引を示すカウンタ番号によって形成されます。ユーザーは、fungible以外のトークン・アカウントを1つのみ持つことができます。真菌性のないトークン・アカウントIDは一意であり、
orgId
パラメータのSHA-256ハッシュ、userId
パラメータおよびチルダ記号(~
)で区切られた定数文字列nft
によって形成されます。ユーザーが所有するすべての非真菌性トークンは、全体または小数に関係なく、このアカウントにリンクされます。ユーザー・アカウントIDは、
ouaccount~
で始まります。トークン・アカウントIDは、oaccount~
で始まります。 -
createUserAccount
- このメソッドは、指定されたユーザーのアカウントを作成します。アカウントは、任意の時点でトークンを持つすべてのユーザーに対して作成する必要があります。ユーザー・アカウントは、NFTアカウントおよびユーザーが所有する実行可能なトークン・アカウントを追跡します。ユーザーは、トークン関連の操作を完了するためにネットワーク内にアカウントを持っている必要があります。
アカウントIDは、
orgId
パラメータおよびuserId
パラメータのSHA-256ハッシュです。このメソッドは、チェーンコードのToken Admin
によってのみコールできます。 -
createTokenAccount
- このメソッドは、ユーザー・アカウントに関連付ける、真菌トークン・アカウントまたは非真菌トークン・アカウントを作成します。
ユーザーは、一意のアカウントIDを持つ複数の実行可能なトークン・アカウントを持つことができます。Fungibleトークン・アカウントIDは、
orgId
パラメータのSHA-256ハッシュ、userId
パラメータ、チルド記号で区切られた定数文字列ft
(~
)、およびチルダ記号(~
)で区切られた作成されているfungibleアカウントの索引を示すカウンタ番号によって形成されます。ユーザーは、fungible以外のトークン・アカウントを1つのみ持つことができます。真菌性のないトークン・アカウントIDは一意であり、
orgId
パラメータのSHA-256ハッシュ、userId
パラメータおよびチルダ記号(~
)で区切られた定数文字列nft
によって形成されます。ユーザーが所有するすべての非真菌性トークンは、全体または小数に関係なく、このアカウントにリンクされます。このメソッドは、チェーンコードの
Token Admin
によってのみコールできます。 -
associateFungibleTokenAccount
- このメソッドは、ユーザーのfungibleトークン・アカウントを特定のfungibleトークンに関連付けます。
このメソッドは、チェーンコードの
Token Admin
によってのみコールできます。 -
getAccountHistory
- このメソッドは、指定されたトークン・アカウントの履歴を返します。これは非同期メソッドです。このメソッドは、チェーンコードの
Token Admin
またはアカウント所有者によってのみコールできます。 -
getAccount
- このメソッドは、指定されたユーザーのトークン・アカウント詳細を返します。このメソッドは、チェーンコードの
Token Admin
またはアカウントのAccount Owner
によってのみコールできます。 -
getAllAccounts
- このメソッドは、すべてのユーザー・アカウントの詳細を返します。このメソッドは、チェーンコードの
Token Admin
によってのみコールできます。 -
getAccountDetailsByUser
- このメソッドは、指定されたユーザーのアカウント・サマリーと、そのユーザーに関連付けられているfungibleトークンおよびnon-fungibleトークンの詳細を返します。このメソッドは、チェーンコードの
Token Admin
またはアカウントのAccount Owner
によってのみコールできます。 -
getUserByAccountId
- このメソッドは、指定されたアカウントIDのユーザー詳細を返します。このメソッドは、どのユーザーでもコールできます。
ロール管理の方法
-
addRole
- このメソッドは、指定されたユーザーおよびトークンにロールを追加します。このメソッドは、チェーンコードの
Token Admin
によってのみコールできます。FungibleトークンはトークンIDで指定されます。トークン名によって、不確定トークンが指定されます。指定したユーザーには、真菌トークンに関連付けられているトークン・アカウント、またはNFTロールの非真菌トークン・アカウントが必要です。指定された役割は、トークンの仕様ファイル内に存在する必要があります。 -
isInRole
- このメソッドは、ユーザーに指定されたロールがあるかどうかを示すブール値を返します。FungibleトークンはトークンIDで指定されます。トークン名によって、不確定トークンが指定されます。このメソッドは、チェーンコードの
Token Admin
またはアカウントのAccount Owner
によってのみコールできます。指定したユーザーには、真菌トークンに関連付けられているトークン・アカウント、またはNFTロールの非真菌トークン・アカウントが必要です。指定された役割は、トークンの仕様ファイル内に存在する必要があります。 -
removeRole
- このメソッドは、指定されたユーザーおよびトークンからロールを削除します。FungibleトークンはトークンIDで指定されます。トークン名によって、不確定トークンが指定されます。このメソッドは、チェーンコードの
Token Admin
によってのみコールできます。指定したユーザーには、真菌トークンに関連付けられているトークン・アカウント、またはNFTロールの非真菌トークン・アカウントが必要です。指定された役割は、トークンの仕様ファイル内に存在する必要があります。 -
getAccountsByRole
- このメソッドは、指定されたロールおよびトークンのすべてのアカウントIDのリストを返します。FungibleトークンはトークンIDで指定されます。トークン名によって、不確定トークンが指定されます。このメソッドは、チェーンコードの
Token Admin
によってのみコールできます。 -
getUsersByRole
- このメソッドは、指定されたロールおよびトークンのすべてのユーザーのリストを返します。FungibleトークンはトークンIDで指定されます。トークン名によって、不確定トークンが指定されます。このメソッドは、チェーンコードの
Token Admin
によってのみコールできます。
トランザクション履歴管理の方法
-
getAccountTransactionHistory
- このメソッドは、勘定科目トランザクション履歴を返します。このメソッドは、チェーンコードの
Token Admin
またはアカウント所有者によってのみコールできます。真菌性のないトークンの場合、このメソッドはリモートのOracle Blockchain Platformネットワークに接続されている場合にのみコールできます。 -
getTransactionById
- このメソッドは、指定されたトランザクションIDのトランザクション詳細を返します。誰でもこのメソッドを呼び出すことができます。
-
deleteHistoricalTransactions
- このメソッドは、指定したタイムスタンプより前のトランザクションを状態データベースから削除します。このメソッドは、チェーンコードの
Token Admin
によってのみコールできます。
トークン動作管理のメソッド- 最小化可能な動作
-
mintBatch
- このメソッドは、バッチ操作で複数のトークンを作成します(分)。このメソッドは、関数型トークンまたは小数型非関数型トークンのみを作成します。
可変トークンの場合、minterロールが仕様ファイルで定義されている場合、minterロールを持つすべてのユーザーがこのメソッドを呼び出すことができます。そうでない場合は、どのユーザーもこのメソッドを使用してトークンをミントできます。トークンの作成または更新時にそのプロパティが指定されている場合、トークンの
max_mint_quantity
プロパティを超えるミントはできません。真菌性のないトークンの場合、minter役割が仕様ファイルに定義されていれば、minter役割を持つすべてのユーザーがこのメソッドを呼び出すことができます。そうでない場合は、どのユーザーもこのメソッドを使用してトークンをミントできます。また、呼出し側もトークンの作成者である必要があります。ミント可能な小数非真菌トークンの量に上限はありません。
このメソッドを使用して、真でないトークン全体をミントすることはできません。
トークン動作管理のメソッド- 転送可能な動作
-
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とFungibleトークンまたはFungibleトークンと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
- このメソッドはトークンを作成します。定義されるすべてのトークンには、独自のcreateメソッドがあります。真菌性のないトークンの場合、minterロールが仕様ファイルで定義されている場合、minterロールを持つすべてのユーザーがこのメソッドをコールしてNFTを作成できます。そうでない場合は、どのユーザーもこのメソッドを使用してNFTを作成できます(最小)。このメソッドを呼び出すユーザーは、NFTの所有者になります(全体または小数)。
-
update
- このメソッドはトークンを更新します。トークン・メタデータまたは非fungibleトークンのトークン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
- このメソッドは、ミント・トークンの合計数を返します。FungibleトークンはトークンIDで指定されます。トークン名によって、不確定トークンが指定されます。
-
totalNetSupply
- このメソッドは、ミント・トークンの合計数からバーン・トークンの数を差し引いた数を返します。FungibleトークンはトークンIDで指定されます。トークン名によって、不確定トークンが指定されます。
-
getTokensByName
- このメソッドは、指定されたトークン名のすべてのトークン・アセットを返します。この方法では、Berkeley DB SQLリッチ問合せが使用され、リモートのOracle Blockchain Platformネットワークに接続されている場合にのみコールできます。
-
getDecimals
- このメソッドは、指定されたトークンの小数点以下の桁数を返します。トークンに除算可能な動作が指定されていない場合、デフォルト値の小数点以下ゼロが返されます。
アカウント管理の方法
-
createAccount
- このメソッドは、指定されたユーザーのアカウントと、真菌トークンまたは非真菌トークンの関連トークン・アカウントを作成します。アカウントは、任意の時点でトークンを持つすべてのユーザーに対して作成する必要があります。ユーザー・アカウントは、NFTアカウントおよびユーザーが所有する実行可能なトークン・アカウントを追跡します。ユーザーは、トークン関連の操作を完了するためにネットワーク内にアカウントを持っている必要があります。このメソッドは、チェーンコードの
Token Admin
によってのみコールできます。ユーザー・アカウントには、
orgId
パラメータとuserId
パラメータのSHA-256ハッシュによって形成される一意のIDがあります。ユーザーは、一意のアカウントIDを持つ複数の実行可能なトークン・アカウントを持つことができます。Fungibleトークン・アカウントIDは、
orgId
パラメータのSHA-256ハッシュ、userId
パラメータ、チルド記号で区切られた定数文字列ft
(~
)、およびチルダ記号(~
)で区切られた作成されているfungibleアカウントの索引を示すカウンタ番号によって形成されます。ユーザーは、fungible以外のトークン・アカウントを1つのみ持つことができます。真菌性のないトークン・アカウントIDは一意であり、
orgId
パラメータのSHA-256ハッシュ、userId
パラメータおよびチルダ記号(~
)で区切られた定数文字列nft
によって形成されます。ユーザーが所有するすべての非真菌トークン(全体または小数)は、この単一の非真菌トークン・アカウントにリンクされます。 -
createUserAccount
- このメソッドは、指定されたユーザーのアカウントを作成します。アカウントは、任意の時点でトークンを持つすべてのユーザーに対して作成する必要があります。ユーザー・アカウントは、NFTアカウントおよびユーザーが所有する実行可能なトークン・アカウントを追跡します。ユーザーは、トークン関連の操作を完了するためにネットワーク内にアカウントを持っている必要があります。
アカウントIDは、
orgId
パラメータおよびuserId
パラメータのSHA-256ハッシュです。このメソッドは、チェーンコードのToken Admin
によってのみコールできます。 -
createTokenAccount
- このメソッドは、ユーザー・アカウントに関連付ける、真菌トークン・アカウントまたは非真菌トークン・アカウントを作成します。
ユーザーは、一意のアカウントIDを持つ複数の実行可能なトークン・アカウントを持つことができます。Fungibleトークン・アカウントIDは、
orgId
パラメータのSHA-256ハッシュ、userId
パラメータ、チルド記号で区切られた定数文字列ft
(~
)、およびチルダ記号(~
)で区切られた作成されているfungibleアカウントの索引を示すカウンタ番号によって形成されます。ユーザーは、fungible以外のトークン・アカウントを1つのみ持つことができます。真菌性のないトークン・アカウントIDは一意であり、
orgId
パラメータのSHA-256ハッシュ、userId
パラメータおよびチルダ記号(~
)で区切られた定数文字列nft
によって形成されます。ユーザーが所有するすべての非真菌トークン(全体または小数)は、この単一の非真菌トークン・アカウントにリンクされます。このメソッドは、チェーンコードの
Token Admin
によってのみコールできます。 -
associateTokenToToken
- このメソッドは、ユーザーのfungibleトークン・アカウントを特定のfungibleトークンに関連付けます。
-
getAccountHistory
- このメソッドは、指定されたトークン・アカウントの履歴を返します。
-
getAccountWithStatus
- このメソッドは、指定されたユーザーのトークン・アカウントの詳細(アカウント・ステータスを含む)を返します。このメソッドは、チェーンコードの
Token Admin
またはアカウントのAccount Owner
によってのみコールできます。 -
getAccount
- このメソッドは、指定されたユーザーのトークン・アカウント詳細を返します。このメソッドは、チェーンコードの
Token Admin
またはアカウントのAccount Owner
によってのみコールできます。 -
getAllAccounts
- このメソッドは、すべてのユーザー・アカウントの詳細を返します。
-
getAccountDetailsByUser
- このメソッドは、指定されたユーザーのアカウント・サマリーと、そのユーザーに関連付けられているfungibleトークンおよびnon-fungibleトークンの詳細を返します。
-
getUserByAccountId
- このメソッドは、指定されたアカウントIDのユーザー詳細を返します。
ロール管理の方法
-
AddRoleMember
- このメソッドは、指定されたユーザーおよびトークンにロールを追加します。FungibleトークンはトークンIDで指定されます。トークン名によって、不確定トークンが指定されます。
-
isInRole
- このメソッドは、ユーザーに指定されたロールがあるかどうかを示すブール値を返します。FungibleトークンはトークンIDで指定されます。トークン名によって、不確定トークンが指定されます。
-
removeRoleMember
- このメソッドは、指定されたユーザーおよびトークンからロールを削除します。FungibleトークンはトークンIDで指定されます。トークン名によって、不確定トークンが指定されます。
-
getAccountsByRole
- このメソッドは、指定されたロールおよびトークンのすべてのアカウントIDのリストを返します。FungibleトークンはトークンIDで指定されます。トークン名によって、不確定トークンが指定されます。
-
getUsersByRole
- このメソッドは、指定されたロールおよびトークンのすべてのユーザーのリストを返します。FungibleトークンはトークンIDで指定されます。トークン名によって、不確定トークンが指定されます。
トランザクション履歴管理の方法
-
getAccountTransactionHistory
- このメソッドは、勘定科目トランザクション履歴を返します。このメソッドは、チェーンコードの
Token Admin
またはアカウント所有者によってのみコールできます。真菌性のないトークンの場合、このメソッドはリモートのOracle Blockchain Platformネットワークに接続されている場合にのみコールできます。 -
getTransactionById
- このメソッドは、指定されたトランザクションIDのトランザクション詳細を返します。
-
deleteTransactions
- このメソッドは、指定したタイムスタンプより前のトランザクションを状態データベースから削除します。
トークン動作管理のメソッド- 最小化可能な動作
-
mintBatch
- このメソッドは、バッチ操作で複数のトークンを作成します(分)。このメソッドは、関数型トークンまたは小数型非関数型トークンのみを作成します。
可変トークンの場合、minterロールが仕様ファイルで定義されている場合、minterロールを持つすべてのユーザーがこのメソッドを呼び出すことができます。そうでない場合は、どのユーザーもこのメソッドを使用してトークンをミントできます。トークンの作成または更新時にそのプロパティが指定されている場合、トークンの
max_mint_quantity
プロパティを超えるミントはできません。真菌性のないトークンの場合、minter役割が仕様ファイルに定義されていれば、minter役割を持つすべてのユーザーがこのメソッドを呼び出すことができます。そうでない場合は、どのユーザーもこのメソッドを使用してトークンをミントできます。また、呼出し側もトークンの作成者である必要があります。ミント可能な小数非真菌トークンの量に上限はありません。
このメソッドを使用して、真でないトークン全体をミントすることはできません。
トークン動作管理のメソッド- 転送可能な動作
-
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 (全体または小数)の間の交換のみがサポートされます。このメソッドは、アカウント所有者のみがコールできます。
トークン動作管理のメソッド- バーナブル動作