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ライフサイクル・タスクの追加コーディングなしで完了できます。コントローラメソッドを起動可能にするには、publicである必要があります。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
)、インスタンス所有者またはインスタンスにログインしているユーザーのユーザー名または電子メール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
プロパティが含まれている場合、トランザクションのコール元には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
メソッドは、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
- このメソッドはトークンを作成し、そのプロパティを状態データベースに保存します。このメソッドは、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 (
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
構造体の受信側からアクセスします。