ERC-721用スキャフォールドTypeScript NFTプロジェクト
ブロックチェーン・アプリケーション・ビルダーは、NFT仕様ファイルから入力を受け取り、完全に機能するチェーンコード・プロジェクトを生成します。
プロジェクトでは、CRUDおよびCRUD以外のメソッド、およびトークン化SDKを含むNFTライフサイクル・クラスおよび関数が自動的に生成されます。引数の検証、マーシャリング/アンマーシャリングおよび透過的な永続性機能はすべて自動的にサポートされます。
スキャフォールドされたプロジェクトおよびNFTに直接関連しないメソッドの詳細は、「スキャフォールドされた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('ART')
public symbol: string;
@ReadOnly('erc721+')
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;
@Validate(yup.string().max(2000))
public tokenUri: string;
@Embedded(ArtCollectionMetadata)
public metadata: ArtCollectionMetadata;
@Validate(yup.number())
public price: number;
@Validate(yup.boolean())
public on_sale_flag: boolean;
}
コントローラ
メイン・コントローラ・クラスは、OchainController
クラスを拡張します。メインコントローラは1つのみです。
export class DigiCurrCCController extends OchainController{
クラス、関数またはファイルはいくつでも作成できますが、メイン・コントローラ・クラス内で定義されているメソッドのみが呼出し可能です。その他のメソッドは非表示です。
トークンSDKメソッドを使用して、ビジネス・アプリケーションのカスタム・メソッドを記述できます。
自動生成されたNFTメソッド
ブロックチェーン・アプリケーション・ビルダーは、NFTおよびNFTライフサイクルをサポートするメソッドを自動的に生成します。これらの方法を使用すると、追加のコーディングなしでNFTの初期化、ロールとアカウントの管理、その他のNFTライフサイクル・タスクの完了を行うことができます。コントローラ・メソッドを起動するには、@Validator(...params)
デコレータが必要です。
アクセス制御管理のメソッド
-
addTokenAdmin
- このメソッドは、ユーザーをチェーンコードの
Token Admin
として追加します。このメソッドは、チェーンコードのToken Admin
によってのみコールできます。 -
removeTokenAdmin
- このメソッドは、チェーンコードの
Token Admin
としてユーザーを削除します。このメソッドは、チェーンコードのToken Admin
によってのみコールできます。 -
isTokenAdmin
- このメソッドは、ファンクションのコール元が
Token Admin
の場合はブール値true
を戻し、それ以外の場合はfalse
を戻します。Token Admin
は、ブロックチェーン・ネットワーク内の他のユーザーに対してこの関数をコールできます。他のユーザーは、自分のアカウントでのみこのメソッドを呼び出すことができます。 -
getAllTokenAdmins
- このメソッドは、チェーンコードの
Token Admin
であるすべてのユーザーのリストを返します。このメソッドは、チェーンコードのToken Admin
によってのみコールできます。
トークン構成管理のメソッド
-
init
- このメソッドは、チェーンコードがインスタンス化されるときに呼び出されます。すべての
Token Admin
は、adminList
パラメータのuserId
およびorgId
情報によって識別されます。userId
は、インスタンス所有者またはインスタンスにログインしているユーザーのユーザー名または電子メールIDです。orgId
は、現在のネットワーク組織のユーザーのメンバーシップ・サービス・プロバイダ(MSP) IDです。チェーンコードを初めてデプロイする場合、adminList
パラメータは必須です。チェーンコードをアップグレードする場合は、空のリスト([]
)を渡します。adminList
パラメータ内のその他の情報は、アップグレード時に無視されます。 -
getAllTokens
- このメソッドは、状態データベースに保存されているすべてのトークン・アセットを返します。このメソッドは、チェーンコードの
Token Admin
によってのみコールできます。この方法では、Berkeley DB SQLリッチ問合せが使用され、リモートのOracle Blockchain Platformネットワークに接続されている場合にのみコールできます。 -
getAllTokensByUser
- このメソッドは、指定されたユーザーが所有するすべてのトークン・アセットを返します。この方法では、Berkeley DB SQLリッチ問合せが使用され、リモートのOracle Blockchain Platformネットワークに接続されている場合にのみコールできます。このメソッドは、チェーンコードの
Token Admin
またはアカウント所有者によってのみコールできます。 -
getTokenById
- このメソッドは、トークンが状態データベースに存在する場合、トークン・オブジェクトを返します。このメソッドは、チェーンコードの
Token Admin
またはトークン所有者によってのみコールできます。 -
getTokenHistory
- このメソッドは、指定されたトークンIDの履歴を返します。これは非同期メソッドです。このメソッドは、リモートのOracle Blockchain Platformネットワークに接続されている場合にのみコールできます。誰でもこのメソッドを呼び出すことができます。
-
getTokenObject
- これは、指定されたトークンIDのトークンのインスタンスを返すユーティリティ・メソッドです。このメソッドは、トークン・オブジェクトをフェッチするために自動生成された多くのメソッドによって使用されます。このメソッドは、カスタム・メソッドから必要に応じてコールできます。トークン化されたアセットまたはクラスを作成する場合は、対応する
Token
クラスでスイッチ・ケースを更新して、正しいトークン・オブジェクトを返します。ブロックチェーン・アプリケーション・ビルダーのochain sync
コマンドは、トークン化されたアセットが仕様ファイルに作成されるときに、スイッチ・ケースを自動的に作成します。このメソッドには@Validator()
メソッド・デコレータがありません。つまり、このメソッドは直接起動できず、他のメソッドからのみコールできます。 -
ownerOf
- このメソッドは、指定されたトークンIDの所有者のアカウントIDを返します。誰でもこのメソッドを呼び出すことができます。
-
name
- このメソッドは、トークン・クラスの名前を返します。誰でもこのメソッドを呼び出すことができます。
-
symbol
- このメソッドは、トークン・クラスのシンボルを返します。誰でもこのメソッドを呼び出すことができます。
-
tokenURI
- このメソッドは、指定されたトークンのURIを返します。誰でもこのメソッドを呼び出すことができます。
-
totalSupply
- このメソッドは、ミント・トークンの合計数を返します。このメソッドは、チェーンコードの
Token Admin
によってのみコールできます。 -
totalNetSupply
- このメソッドは、ミント・トークンの合計数からバーン・トークンの数を差し引いた数を返します。このメソッドは、チェーンコードの
Token Admin
によってのみコールできます。
アカウント管理の方法
-
createAccount
- このメソッドは、指定されたユーザーおよびトークンのアカウントを作成します。アカウントは、任意の時点でトークンを持つすべてのユーザーに対して作成する必要があります。アカウントは、ユーザーが保有するNFTの数を追跡します。ユーザーは、トークン関連の操作を完了するためにネットワーク内にアカウントを持っている必要があります。作成できるNFTアカウントは、ユーザーごとに1つのみです。
アカウントIDは英数字のセットの文字で、先頭に
oaccount~
を付け、その後に現在のネットワーク組織内のユーザーのメンバーシップ・サービス・プロバイダID (orgId
)のSHA-256ハッシュ、インスタンス所有者またはインスタンスにログインしているユーザーのユーザー名または電子メールID (userId
)、および定数文字列nft
が続きます。このメソッドは、チェーンコードのToken Admin
によってのみコールできます。 -
balanceOf
- このメソッドは、指定されたユーザーが保持するNFTの合計数を返します。このメソッドは、チェーンコードの
Token Admin
またはアカウント所有者によってのみコールできます。 -
getAllAccounts
- このメソッドは、すべてのアカウントのリストを返します。このメソッドは、チェーンコードの
Token Admin
によってのみコールできます。この方法では、Berkeley DB SQLリッチ問合せが使用され、リモートのOracle Blockchain Platformネットワークに接続されている場合にのみコールできます。 -
getAccountByUser
- このメソッドは、指定されたユーザーのアカウント詳細を返します。このメソッドは、チェーンコードの
Token Admin
またはアカウントのAccount Owner
によってのみコールできます。 -
getUserByAccountId
- このメソッドは、指定されたアカウントのユーザー詳細を返します。このメソッドは、どのユーザーでもコールできます。
-
getAccountHistory
- このメソッドは、指定されたユーザーのアカウント履歴を返します。これは非同期メソッドです。このメソッドは、チェーンコードの
Token Admin
またはアカウント所有者によってのみコールできます。
ロール管理の方法
-
addRole
- このメソッドは、指定されたユーザーにロールを追加します。このメソッドは、チェーンコードの
Token Admin
によってのみコールできます。 -
removeRole
- このメソッドは、指定されたユーザーからロールを削除します。このメソッドは、チェーンコードの
Token Admin
によってのみコールできます。 -
getAccountsByRole
- このメソッドは、指定されたロールのすべてのアカウントIDのリストを返します。このメソッドは、チェーンコードの
Token Admin
によってのみコールできます。 -
getUsersByRole
- このメソッドは、指定されたロールのすべてのユーザーのリストを戻します。このメソッドは、チェーンコードの
Token Admin
によってのみコールできます。 -
isInRole
- このメソッドは、ユーザーに指定されたロールがあるかどうかを示すブール値を返します。このメソッドは、チェーンコードの
Token Admin
またはアカウントのAccount Owner
によってのみコールできます。
トランザクション履歴管理の方法
-
getAccountTransactionHistory
- このメソッドは、指定されたユーザーの勘定科目トランザクション履歴を返します。これは非同期メソッドです。このメソッドは、チェーンコードの
Token Admin
またはアカウント所有者によってのみコールできます。 -
getAccountTransactionHistoryWithFilters
- このメソッドは、
PageSize
、Bookmark
、startTime
およびendTime
でフィルタされた、指定されたユーザーのアカウント・トランザクション履歴を返します。これは非同期メソッドです。このメソッドは、リモートのOracle Blockchain Platformネットワークに接続されている場合にのみコールできます。このメソッドは、チェーンコードのToken Admin
またはアカウント所有者によってのみコールできます。 -
getTransactionById
- このメソッドは、指定されたトランザクションIDのトランザクション履歴を返します。これは非同期メソッドです。このメソッドは、チェーンコードの
Token Admin
またはアカウント所有者によってのみコールできます。 -
deleteHistoricalTransactions
- このメソッドは、状態データベースの指定されたタイムスタンプより古いトランザクションを削除します。これは非同期メソッドです。このメソッドは、チェーンコードの
Token Admin
によってのみコールできます。
トークン動作管理のメソッド- 最小化可能な動作
-
create<Token Name>Token
- このメソッドは、NFTを作成します(最小)。アセットと関連プロパティは、状態データベースに保存されます。このトランザクションのコール元にはトークン・アカウントが必要です。このトランザクションのコール元がNFTの所有者になります。トークン指定ファイルに
behaviors
のroles
セクションとroles
のminter_role_name
プロパティが含まれている場合、トランザクションのコール元にはminterロールが必要です。それ以外の場合は、すべての呼び出し元がNFTをミントできます。 -
update<Token Name>Token
- このメソッドは、トークン・プロパティを更新します。このメソッドは、トークンの所有者または作成者であるユーザーのみがコールできます。トークン・アセットの作成後は、トークン所有者のみがトークン・カスタム・プロパティを更新できます。ユーザーがトークンの所有者とトークンの作成者の両方である場合、
TokenDesc
プロパティを更新することもできます。トークン・メタデータは更新できません。特定のプロパティのみを更新する場合でも、すべてのトークン・プロパティをこのメソッドに渡す必要があります。
トークン動作管理のメソッド- 転送可能な動作
-
safeTransferFrom
- これは非同期関数です。このメソッドは、指定されたNFTの所有権をコール元から別のアカウントに転送します。このメソッドには、次の検証が含まれます。
- トークンは存在し、書き込みされません。
- 送信者アカウントと受信者アカウントが存在し、同じアカウントではありません。
- 送信者アカウントがトークンを所有します。
- 関数の呼び出し元は送信者です。
-
transferFrom
- これは非同期関数です。このメソッドは、指定されたNFTの所有権を送信者アカウントから受信者アカウントに転送します。呼出し側は、正しいパラメータを渡す必要があります。このメソッドは、トークン所有者だけでなく、どのユーザーでもコールできます。このメソッドには、次の検証が含まれます。
- トークンは存在し、書き込みされません。
- 送信者アカウントと受信者アカウントが存在し、同じアカウントではありません。
- 送信者アカウントがトークンを所有します。
トークン動作管理のメソッド- バーナブル動作
-
burn
- このメソッドは、指定されたNFTをコール元のアカウントから非アクティブ化または書き込みます。このメソッドのコール元にはアカウントが必要です。トークン指定ファイルに
burnable
動作が含まれていないかぎり、トークンは書き込めません。仕様ファイルのroles
セクションにburner_role_name
プロパティが指定されていない場合、トークンの所有者はトークンを燃やすことができます。roles
セクションにburner_role_name
プロパティが指定されている場合、ユーザーは、トークンのマイナー(作成者)または所有者でもあるバーナー・ロールを割り当てられ、トークンを燃やすことができます。 -
burnNFT
- このメソッドは、コール元のアカウントから指定されたNFTを非アクティブ化または書き込み、トークン・オブジェクトおよびトークン履歴を返します。このメソッドのコール元にはアカウントが必要です。トークン指定ファイルに
burnable
動作が含まれていないかぎり、トークンは書き込めません。仕様ファイルのroles
セクションにburner_role_name
プロパティが指定されていない場合、トークンの所有者はトークンを燃やすことができます。roles
セクションにburner_role_name
プロパティが指定されている場合、ユーザーは、トークンのマイナー(作成者)または所有者でもあるバーナー・ロールを割り当てられ、トークンを燃やすことができます。
カスタム・メソッド
トークンSDKメソッドを使用して、ビジネス・アプリケーションのカスタム・メソッドを記述できます。
次の例は、カスタム・メソッドでトークンSDKメソッドを使用する方法を示しています。sell
メソッドがコールされると、指定された価格で販売するトークンがポストされます。
@Validator(yup.string(), yup.number())
public async sell(token_id: string, selling_price: number) {
try {
const token = await this.Ctx.ERC721Token.get(token_id);
const t = new ArtCollection(token)
/** * price is a custom asset
attribute to set the price of a non-fungible token in the
marketplace */
t.price = selling_price;
/** * on_sale_flag is a
custom asset attribute that maintains non-fungible token selling status in the
marketplace */
t.on_sale_flag = true;
await this.Ctx.ERC721Token.updateToken(t);
let msg = `Token ID : '${token_id}' has been posted for selling in the marketplace'`;
return {msg}
} catch(error) {
throw new Error(error.message);
}
}
NFT SDKメソッド
アクセス制御管理のメソッド
Token Admin
またはAccount Owner
によってのみコールできます。この機能を使用して、操作が意図したユーザーのみが実行されるようにできます。未承認のアクセスはエラーになります。アクセス制御ファンクションを使用するには、../lib/erc721-auth
モジュールからAuthorization
クラスをインポートします。import { ERC721Authorization } from '../lib/erc721-auth';
-
checkAuthorization
- このメソッドは、アクセス制御チェックを操作に追加するために使用します。これは非同期関数です。自動的に生成されるほとんどのメソッドには、アクセス制御が含まれます。特定のトークン・メソッドは、トークンの
ERC721Admin
またはAccount Owner
、または複数のアカウントを持つユーザーのMultipleAccountOwner
によってのみ実行できます。checkAuthorization
メソッドは、Ctx
オブジェクトを介してアクセスするAuthorization
クラスの一部です。アクセス制御マッピングについては、次のテキストに示すように、../lib/constant.ts
ファイルを参照してください。アクセス制御は、../lib/constant.ts
ファイルを編集して変更できます。独自のアクセス制御を使用するか、アクセス制御を無効にするには、自動的に生成されたコントローラメソッドおよびカスタムメソッドからアクセス制御コードを削除します。export const TOKENACCESS = { ADMIN: { isUserTokenAdmin: ['Admin', 'MultipleAccountOwner'], 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'], }, ROLE: { getAccountsByRole: ['Admin'], getUsersByRole: ['Admin'], }, TRANSACTION: { deleteTransactions: ['Admin'], }, ACCOUNT: { createAccount: ['Admin'], getAllAccounts: ['Admin'], getAccountsByUser: ['Admin', 'MultipleAccountOwner'], getAccount: ['Admin', 'AccountOwner'], history: ['Admin', 'AccountOwner'], getAccountTransactionHistory: ['Admin', 'AccountOwner'], getAccountBalance: ['Admin', 'AccountOwner'], getAccountOnHoldBalance: ['Admin', 'AccountOwner'], getOnHoldIds: ['Admin', 'AccountOwner'], }, 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'], getAccountsByUser: ['Admin', 'MultipleAccountOwner'], history: ['Admin', 'AccountOwner'], getAccountTransactionHistory: ['Admin', 'AccountOwner'], getAccountTransactionHistoryWithFilters: ['Admin', 'AccountOwner'], balanceOf: ['Admin', 'MultipleAccountOwner'], } }
-
isUserTokenAdmin
- このメソッドは、ファンクションのコール元が
Token Admin
の場合、ブール値true
を返します。そうでない場合は、false
が戻されます。これは、非同期静的関数です。 -
addAdmin
- このメソッドは、トークン・チェーンコードの
Token Admin
としてユーザーを追加します。 -
removeAdmin
- このメソッドは、トークン・チェーンコードの
Token Admin
としてユーザーを削除します。 -
getAllAdmins
- このメソッドは、すべての
Token Admin
ユーザーのリストを返します。
トークン構成管理のメソッド
トークン構成管理方法は、ERC-721標準に基づいています。トークン構成管理メソッドを使用するには、../lib/erc721-token
モジュールからToken
クラスをインポートします。
-
totalSupply
- このメソッドは、ミントされたNFTの合計数を返します。これは非同期関数です。
-
get
- このメソッドは、指定されたトークン・オブジェクトが状態データベースに存在する場合、そのトークン・オブジェクトを返します。これは、非同期静的関数です。
-
isTokenType
- このメソッドは、指定されたIDのトークン・アセットが存在するかどうかを示します。これは、非同期静的関数です。
-
createToken
- このメソッドはトークンを作成し、そのプロパティを状態データベースに保存します。このメソッドは、minterロールを持つユーザーのみがコールできます。これは非同期関数です。
-
updateToken
- このメソッドは、トークン・プロパティを更新します。このメソッドは、トークンの所有者または作成者のみがコールできます。トークン・アセットの作成後は、トークン所有者のみがトークン・カスタム・プロパティを更新できます。ユーザーがトークンの所有者とトークンの作成者の両方である場合、
TokenDesc
プロパティを更新することもできます。トークン・メタデータは更新できません。特定のプロパティのみを更新する場合でも、すべてのトークン・プロパティをこのメソッドに渡す必要があります。これは非同期関数です。 -
getByRange
- このメソッドは、ファブリックの
getStateByRange
メソッドを内部的にコールします。指定されたIDを持つアセットがレジャーから返されても、このメソッドはアセットをコールヤ・アセット・タイプにキャストします。これは、非同期静的関数です。@validator(yup.string(), yup.string()) public async getDigiCurrGetByRange(startId: string, endId: string) { return await this.Ctx.ERC721TOken.getByRange(startId, endId, PaintingNft); }
-
history
- このメソッドは、指定されたトークンの履歴を返します。これは、非同期静的関数です。
-
getAllTokens
- このメソッドは、状態データベースに保存されているすべてのトークン・アセットを返します。この方法では、Berkeley DB SQLリッチ問合せが使用され、リモートのOracle Blockchain Platformネットワークに接続されている場合にのみコールできます。これは、非同期静的関数です。
-
getAllTokensByUser
- このメソッドは、指定されたアカウントIDが所有するすべてのトークンを返します。これは、非同期静的関数です。
-
ownerOf
- このメソッドは、指定されたトークンの所有者のアカウントIDを返します。これは、非同期静的関数です。
-
tokenUri
- このメソッドは、指定されたトークンのURIを返します。これは、非同期静的関数です。
-
getTokenUri
- このメソッドは、指定されたトークンのURIを返します。これは、非同期静的関数です。
-
symbol
- このメソッドは、トークン・クラスのシンボルを返します。
アカウント管理の方法
-
generateAccountId
- このメソッドは、アカウントIDを返します。アカウントIDは、メンバーシップ・サービス・プロバイダID (
orgId
)とユーザー名または電子メールID (userId
)を連結し、SHA-256ハッシュを作成することで形成されます。 -
createAccount
- このメソッドは、指定されたユーザーおよびトークンのアカウントを作成します。アカウントは、任意の時点でトークンを持つすべてのユーザーに対して作成する必要があります。アカウントは、ユーザーが保有するNFTの数を追跡します。ユーザーは、トークン関連の操作を完了するためにネットワーク内にアカウントを持っている必要があります。作成できるNFTアカウントは、ユーザーごとに1つのみです。
アカウントIDは英数字のセットの文字で、先頭に
oaccount~
を付け、その後に現在のネットワーク組織内のユーザーのメンバーシップ・サービス・プロバイダID (orgId
)のSHA-256ハッシュ、インスタンス所有者またはインスタンスにログインしているユーザーのユーザー名または電子メールID (userId
)、および定数文字列nft
が続きます。このメソッドは、チェーンコードのToken Admin
によってのみコールできます。 -
getAllAccounts
- このメソッドは、すべてのアカウントのリストを返します。この方法では、Berkeley DB SQLリッチ問合せが使用され、リモートのOracle Blockchain Platformネットワークに接続されている場合にのみコールできます。
-
history
- このメソッドは、指定されたアカウントのアカウント履歴詳細の配列を返します。
-
getUserByAccountId
- このメソッドは、指定されたアカウントのユーザー詳細を返します。
-
getAccountWithStatusByUser
- このメソッドは、アカウント・ステータスを含む、指定されたアカウントのユーザー詳細を返します。このメソッドは、チェーンコードの
Token Admin
またはアカウントのAccount Owner
によってのみコールできます。 -
getAccountByUser
- このメソッドは、指定されたアカウントのユーザー詳細を返します。このメソッドは、チェーンコードの
Token Admin
またはアカウントのAccount Owner
によってのみコールできます。 -
balanceOf
- このメソッドは、指定されたユーザーが保持するNFTの合計数を返します。
ロール管理の方法
-
addRoleMember
- このメソッドは、指定されたユーザーおよびトークンにロールを追加します。アカウントIDは、連結されたメンバーシップ・サービス・プロバイダID (
orgId
)とユーザー名または電子メールID (userId
)のSHA-256ハッシュを作成することによって形成されます。これは非同期関数です。 -
removeRoleMember
- このメソッドは、指定されたユーザーおよびトークンからロールを削除します。アカウントIDは、連結されたメンバーシップ・サービス・プロバイダID (
orgId
)とユーザー名または電子メールID (userId
)のSHA-256ハッシュを作成することによって形成されます。これは非同期関数です。 -
isInRole
- このメソッドは、ユーザーおよびトークンに指定したロールがあるかどうかを示すブール値を返します。アカウントIDは、連結されたメンバーシップ・サービス・プロバイダID (
orgId
)とユーザー名または電子メールID (userId
)のSHA-256ハッシュを作成することによって形成されます。これは非同期関数です。 -
getAccountsByRole
- このメソッドは、指定されたロールのすべてのアカウントIDのリストを返します。
-
getUsersByRole
- このメソッドは、指定されたロールのすべてのユーザーのリストを戻します。
トランザクション履歴管理の方法
-
getAccountTransactionHistory
- このメソッドは、指定された勘定科目のトランザクション履歴詳細の配列を返します。
-
getAccountTransactionHistoryWithFilters
- このメソッドは、
PageSize
、Bookmark
、startTime
およびendTime
でフィルタされた、指定されたユーザーのアカウント・トランザクション履歴を返します。このメソッドは、リモートのOracle Blockchain Platformネットワークに接続されている場合にのみコールできます。 -
getTransactionById
- このメソッドは、
Transaction
アセットの履歴を返します。 -
deleteHistoricalTransactions
- このメソッドは、指定した日付より古いトランザクションを状態データベースから削除します。
トークン動作管理- 最小化可能な動作
-
getMaxMintQuantity
- このメソッドは、トークンの最大最小テーブル量を返します。
max_mint_quantity
動作が仕様ファイルで構成されていない場合、デフォルト値は0で、無限の数のトークンをミントできます。 -
getTotalMintedTokens
- このメソッドは、指定されたトークンに対してシステムで使用可能なトークンの合計ミント数を返します。使用可能なトークンの正味数は、ミント・トークンの合計数から焼却されたトークンの数を引いた数です。これは非同期関数です。
トークン動作管理- 転送可能な動作
-
safeTransferFrom
- これは非同期関数です。このメソッドは、指定されたNFTの所有権をコール元から別のアカウントに転送します。このメソッドには、次の検証が含まれます。
- トークンは存在し、書き込みされません。
- 送信者アカウントと受信者アカウントが存在し、同じアカウントではありません。
- 送信者アカウントがトークンを所有します。
- 関数の呼び出し元は送信者です。
-
transferFrom
- これは非同期関数です。このメソッドは、指定されたNFTの所有権を送信者アカウントから受信者アカウントに転送します。呼出し側は、正しいパラメータを渡す必要があります。このメソッドは、トークン所有者だけでなく、どのユーザーでもコールできます。このメソッドには、次の検証が含まれます。
- トークンは存在し、書き込みされません。
- 送信者アカウントと受信者アカウントが存在し、同じアカウントではありません。
- 送信者アカウントがトークンを所有します。
トークン動作管理- バーナブル動作
-
burn
- このメソッドは、指定されたNFTをコール元のアカウントから非アクティブ化または書き込みます。このメソッドのコール元にはアカウントが必要です。トークン指定ファイルに
burnable
動作が含まれていないかぎり、トークンは書き込めません。仕様ファイルのroles
セクションにburner_role_name
プロパティが指定されていない場合、トークンの所有者はトークンを燃やすことができます。roles
セクションにburner_role_name
プロパティが指定されている場合、トークンのマイナー(作成者)でもあるバーナー・ロールを割り当てられたユーザーは、トークンを燃やすことができます。これは非同期関数です。