ERC-721用スキャフォールドNFTプロジェクト
ブロックチェーン・アプリケーション・ビルダーは、NFT仕様ファイルから入力を受け取り、完全に機能するチェーンコード・プロジェクトを生成します。
プロジェクトでは、CRUDおよび非CRUDメソッドを含むNFTライフサイクル・クラスおよび関数が自動的に生成されます。引数の検証、マーシャリング/アンマーシャリングおよび透過的な永続性機能はすべて自動的にサポートされます。
スキャフォールドされたプロジェクトおよびNFTに直接関連しないメソッドの詳細は、「スキャフォールドされた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"`
Symbol string `json:"Symbol" final:"ART"`
TokenStandard string `json:"TokenStandard" final:"erc721+"`
TokenType string `json:"TokenType" final:"nonfungible" validate:"regexp=^nonfungible$"`
TokenUnit string `json:"TokenUnit" final:"whole" validate:"regexp=^whole$"`
Behavior []string `json:"Behavior" final:"[\"indivisible\",\"singleton\",\"mintable\",\"transferable\",\"burnable\",\"roles\"]"`
Roles map[string]interface{} `json:"Roles" final:"{\"minter_role_name\":\"minter\"}"`
Mintable map[string]interface{} `json:"Mintable" final:"{\"Max_mint_quantity\":20000}"`
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" 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"`
}
コントローラ
メインコントローラは1つのみです。
type Controller struct {
Ctx trxcontext.TrxContext
}
クラス、関数またはファイルはいくつでも作成できますが、メイン・コントローラ・クラス内で定義されているメソッドのみが呼出し可能です。その他のメソッドは非表示です。
トークンSDKメソッドを使用して、ビジネス・アプリケーションのカスタム・メソッドを記述できます。
自動生成されたNFTメソッド
ブロックチェーン・アプリケーション・ビルダーは、NFTおよびNFTライフサイクルをサポートするメソッドを自動的に生成します。これらの方法を使用すると、追加のコーディングなしでNFTの初期化、ロールとアカウントの管理、その他のNFTライフサイクル・タスクの完了を行うことができます。
ブロックチェーン・アプリケーション・ビルダーは、NFTおよびNFTライフサイクルをサポートするメソッドを自動的に生成します。これらの方法を使用すると、追加のコーディングなしでNFTの初期化、ロールとアカウントの管理、その他のNFTライフサイクル・タスクの完了を行うことができます。コントローラメソッドを呼び出すには、publicである必要があります。パブリック・メソッド名は大文字で始まります。小文字で始まるメソッド名はprivateです。
アクセス制御管理のメソッド
-
AddTokenAdmin
- このメソッドは、ユーザーをチェーンコードの
Token Admin
として追加します。このメソッドは、チェーンコードのToken Admin
によってのみコールできます。 -
RemoveTokenAdmin
- このメソッドは、チェーンコードの
Token Admin
としてユーザーを削除します。このメソッドは、チェーンコードの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
コマンドは、トークン化されたアセットが仕様ファイルに作成されるときに、スイッチ・ケースを自動的に作成します。このメソッドはprivateであるため、直接呼び出すことはできず、他のメソッドからのみ呼び出すことができます。 -
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
メソッドがコールされると、指定された価格で販売するトークンがポストされます。
func (t *Controller) Sell(tokenId string, sellingPrice int) (interface{}, error) {
var tokenAsset ArtCollection
_, err := t.Ctx.ERC721Token.Get(tokenId, &tokenAsset)
if err != nil {
return nil, err
}
/** * price is a custom asset
attribute to set the price of a non-fungible token in the
marketplace */
tokenAsset.Price = sellingPrice
/** * on_sale_flag is a
custom asset attribute that maintains non-fungible token selling status in the
marketplace */
tokenAsset.On_sale_flag = true
_, err = t.Ctx.ERC721Token.UpdateToken(tokenAsset)
if err != nil {
return nil, err
}
msg := fmt.Sprintf("Token ID : %s has been posted for selling in the marketplace", tokenId)
return msg, nil
}
NFT SDKメソッド
アクセス制御管理のメソッド
Token Admin
またはAccount Owner
によってのみコールできます。この機能を使用して、操作が意図したユーザーのみが実行されるようにできます。未承認のアクセスはエラーになります。アクセス制御ファンクションを使用するには、../lib/auth
モジュールからAuthorization
クラスをインポートします。import { ERC721Authorization } from '../lib/erc721-auth';
-
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 auth.IsTokenAdmin = []string{"Admin", "MultipleAccountOwner"} 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"} 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
-
IsUserTokenAdmin
- このメソッドは、ファンクションのコール元が
Token Admin
の場合、ブール値true
を持つマップを返します。そうでない場合は、false
が戻されます。 -
AddAdmin
- このメソッドは、トークン・チェーンコードの
Token Admin
としてユーザーを追加します。 -
RemoveAdmin
- このメソッドは、トークン・チェーンコードの
Token Admin
としてユーザーを削除します。 -
GetAllAdmins
- このメソッドは、すべての
Token Admin
ユーザーのリストを返します。 -
GetAllAdminUsers
- このメソッドは、すべての
Token Admin
ユーザーのリストを返します。
トークン構成管理のメソッド
-
CreateToken
- このメソッドはトークンを作成し、そのプロパティを状態データベースに保存します。このメソッドは、minterロールを持つユーザーのみがコールできます。
-
GetTokenUri
- このメソッドは、指定されたトークンのトークンURIを返します。
-
TokenUri
- このメソッドは、指定されたトークンのトークンURIを返します。
-
Symbol
- このメソッドは、トークン・クラスのシンボルを返します。
-
Name
- このメソッドは、トークン・クラスの名前を返します。
-
OwnerOf
- このメソッドは、指定されたトークンの所有者のアカウントIDを返します。
-
TotalSupply
- このメソッドは、ミントされたNFTの合計数を返します。
-
GetAllTokens
- このメソッドは、状態データベースに保存されているすべてのトークン・アセットを返します。この方法では、Berkeley DB SQLリッチ問合せが使用され、リモートのOracle Blockchain Platformネットワークに接続されている場合にのみコールできます。
-
GetAllTokensByUser
- このメソッドは、指定されたアカウントIDが所有するすべてのトークンを返します。この方法では、Berkeley DB SQLリッチ問合せが使用され、リモートのOracle Blockchain Platformネットワークに接続されている場合にのみコールできます。
-
Get
- このメソッドは、指定されたトークン・オブジェクトが状態データベースに存在する場合、そのトークン・オブジェクトを返します。
-
UpdateToken
- このメソッドは、トークン・プロパティを更新します。このメソッドは、トークンの所有者または作成者のみがコールできます。トークン・アセットの作成後は、トークン所有者のみがトークン・カスタム・プロパティを更新できます。ユーザーがトークンの所有者とトークンの作成者の両方である場合、
TokenDesc
プロパティを更新することもできます。トークン・メタデータは更新できません。特定のプロパティのみを更新する場合でも、すべてのトークン・プロパティをこのメソッドに渡す必要があります。 -
History
- このメソッドは、指定されたトークンの履歴を返します。
-
GetNewCtx
- このメソッドは、新しい
TrxContext
オブジェクトを戻します。trxcontext
構造体は、すべてのSDKライブラリへの参照を保持します。このオブジェクトのみを使用してsdkメソッドにアクセスします。trxcontext
オブジェクトは、同時トランザクションの実行時に、SDKライブラリ内のトランザクション・スタブの相互排他性を維持します。
アカウント管理の方法
-
GenerateAccountId
- このメソッドは、アカウントIDを返します。アカウントIDは、メンバーシップ・サービス・プロバイダID (
orgId
)とユーザー名または電子メールID (userId
)を連結し、SHA-256ハッシュを作成することで形成されます。 -
CreateAccount
- このメソッドは、指定されたユーザーのアカウントを作成します。アカウントは、任意の時点でトークンを持つすべてのユーザーに対して作成する必要があります。アカウントは、ユーザーが保有するNFTの数を追跡します。ユーザーは、トークン関連の操作を完了するためにネットワーク内にアカウントを持っている必要があります。作成できるNFTアカウントは、ユーザーごとに1つのみです。
アカウントIDは英数字のセットの文字で、先頭に
oaccount~
を付け、その後に現在のネットワーク組織内のユーザーのメンバーシップ・サービス・プロバイダID (org_id
)のSHA-256ハッシュ、インスタンス所有者またはインスタンスにログインしているユーザーのユーザー名または電子メールID (userId
)、および定数文字列nft
が続きます。 -
GetAllAccounts
- このメソッドは、すべてのアカウントのリストを返します。この方法では、Berkeley DB SQLリッチ問合せが使用され、リモートのOracle Blockchain Platformネットワークに接続されている場合にのみコールできます。
-
History
- このメソッドは、指定されたアカウントのアカウント履歴詳細の配列を返します。
-
GetUserByAccountId
- このメソッドは、指定されたアカウントのユーザー詳細を返します。
-
GetAccountWithStatusByUser
- このメソッドは、アカウント・ステータスを含む、指定されたユーザーのアカウント詳細を返します。このメソッドは、チェーンコードの
Token Admin
またはアカウントのAccount Owner
によってのみコールできます。 -
GetAccountByUser
- このメソッドは、指定されたユーザーのアカウント詳細を返します。このメソッドは、チェーンコードの
Token Admin
またはアカウントのAccount Owner
によってのみコールできます。 -
BalanceOf
- このメソッドは、指定されたユーザーが保持するNFTの合計数を返します。
ロール管理の方法
-
AddRoleMember
- このメソッドは、指定されたユーザーにロールを追加します。
-
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
プロパティが指定されている場合、トークンのマイナー(作成者)でもあるバーナー・ロールを割り当てられたユーザーは、トークンを燃やすことができます。burn
メソッドは、Ctx
構造体のレシーバを介してアクセスするERC721Token
パッケージの一部です。