ERC-721用のスキャフォールド済Go 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ライフサイクル・タスクを追加コーディングなしで行えます。コントローラ・メソッドを呼び出し可能にするには、パブリックである必要があります。パブリック・メソッド名は大文字で始まります。小文字で始まるメソッド名はプライベートです。
アクセス制御管理のメソッド
-
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
クラスでswitch caseを更新します。ブロックチェーン・アプリケーション・ビルダーのochain sync
コマンドは、仕様ファイルでトークン化されたアセットが作成されると、switch caseを自動的に作成します。このメソッドはプライベートであるため、直接呼び出すことはできず、他のメソッドからのみコールできます。 -
OwnerOf
- このメソッドは、指定されたトークンIDの所有者のアカウントIDを返します。だれでもこのメソッドをコールできます。
-
Name
- このメソッドは、トークン・クラスの名前を返します。だれでもこのメソッドをコールできます。
-
Symbol
- このメソッドは、トークン・クラスの記号を返します。だれでもこのメソッドをコールできます。
-
TokenURI
- このメソッドは、指定されたトークンのURIを返します。だれでもこのメソッドをコールできます。
-
TotalSupply
- このメソッドは、ミントされたトークンの合計数を返します。このメソッドは、チェーンコードの
Token Admin
のみがコールできます。 -
TotalNetSupply
- このメソッドは、ミントされたトークンの合計数からバーンされたトークンの数を引いた数を返します。このメソッドは、チェーンコードの
Token Admin
のみがコールできます。
アカウント管理のメソッド
-
CreateAccount
- このメソッドは、指定されたユーザーおよびトークンのアカウントを作成します。任意の時点でトークンを持つすべてのユーザーに対してアカウントを作成する必要があります。アカウントは、ユーザーが持つNFTの数を追跡します。ユーザーは、トークン関連の操作を完了するためにネットワーク内にアカウントを持っている必要があります。ユーザーごとに作成できるNFTアカウントは1つのみです。
アカウントIDは英数字のセットで、
oaccount~
が先頭に付き、現在のネットワーク組織内のユーザーのメンバーシップ・サービス・プロバイダID (OrgId
)、インスタンス所有者またはインスタンスにログインしているユーザーのユーザー名または電子メールID (UserId
)、および定数文字列nft
のSHA-256ハッシュが続きます。このメソッドは、チェーンコードの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
プロパティが含まれている場合、トランザクションのコール元にミンター・ロールが必要です。それ以外の場合、どのコール元も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
メソッドは、erc721Auth
パッケージの一部であり、Ctx
構造体(レシーバ)を介してアクセスします。アクセス制御マッピングは、次のテキストに示すように、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
- このメソッドはトークンを作成し、そのプロパティを状態データベースに保存します。このメソッドは、ミンター・ロールを持つユーザーのみがコールできます。
-
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 (
orgId
)とユーザー名または電子メールID (userId
)を連結してSHA-256ハッシュを作成することによって形成されるアカウントIDを返します。 -
CreateAccount
- このメソッドは、指定されたユーザーのアカウントを作成します。任意の時点でトークンを持つすべてのユーザーに対してアカウントを作成する必要があります。アカウントは、ユーザーが持つNFTの数を追跡します。ユーザーは、トークン関連の操作を完了するためにネットワーク内にアカウントを持っている必要があります。ユーザーごとに作成できるNFTアカウントは1つのみです。
アカウントIDは英数字のセットで、
oaccount~
が先頭に付き、現在のネットワーク組織内のユーザーのメンバーシップ・サービス・プロバイダID (org_id
)、インスタンス所有者またはインスタンスにログインしているユーザーのユーザー名または電子メールID (userId
)、および定数文字列nft
のSHA-256ハッシュが続きます。 -
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
メソッドは、ERC721Token
パッケージの一部であり、Ctx
構造体の受信側からアクセスします。