ERC-721 的脚手架 Go NFT 项目
Blockchain App Builder 从你的 NFT 规范文件中获取输入,并生成一个功能齐全的链码项目。
该项目自动生成 NFT 生命周期类和函数,包括 CRUD 和非 CRUD 方法。自动支持参数验证、编集/解编集以及透明的持久性功能。
有关与 NFT 不直接相关的基架项目和方法的信息,请参见 Scaffolded Go Chaincode Project 。
型号
透明持久性功能(或简化的 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"`
}
控制器
只有一个主控制器。
type Controller struct {
Ctx trxcontext.TrxContext
}
您可以创建任意数量的类、函数或文件,但只能调用在主控制器类中定义的那些方法。其他方法被隐藏。
您可以使用令牌 SDK 方法为业务应用程序编写定制方法。
自动生成的 NFT 方法
Blockchain App Builder 自动生成支持 NFT 和 NFT 生命周期的方法。您可以使用这些方法来初始化 NFT、管理角色和账户,以及完成其他 NFT 生命周期任务,而无需额外编码。
Blockchain App Builder 自动生成支持 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
是当前网络组织中用户的成员服务提供商 (Membership Service Provider,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
类更新交换机用例以返回正确的标记对象。在规范文件中创建标记化资产时,Blockchain App Builder 中的ochain sync
命令会自动创建切换案例。因为此方法为 private,所以它不可直接调用,并且只能从其他方法调用。 -
OwnerOf
- 此方法返回指定令牌 ID 的所有者的账户 ID。任何人都可以调用此方法。
-
Name
- 此方法返回令牌类的名称。任何人都可以调用此方法。
-
Symbol
- 此方法返回令牌类的符号。任何人都可以调用此方法。
-
TokenURI
- 此方法返回指定标记的 URI。任何人都可以调用此方法。
-
TotalSupply
- 此方法返回铸币的总数。此方法只能由链代码的
Token Admin
调用。 -
TotalNetSupply
- 此方法返回铸造的令牌总数减去烧毁的令牌数。此方法只能由链代码的
Token Admin
调用。
账户管理方法
-
CreateAccount
- 此方法为指定的用户和令牌创建帐户。必须为在任何时候将具有令牌的任何用户创建账户。帐户跟踪用户拥有的 NFT 数。用户必须在网络中具有帐户才能完成与令牌相关的操作。每个用户只能创建一个 NFT 账户。
帐户 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
- 此方法创建 (mint) 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
属性,则分配了同时也是令牌的 minter(创建者)的刻录角色的用户可以刻录该令牌。 -
BurnNFT
- 此方法从调用者的帐户中停用或烧毁指定的 NFT,并返回令牌对象和令牌历史记录。此方法的调用方必须具有帐户。除非令牌规范文件包含
burnable
行为,否则无法刻录令牌。如果未在规范文件的roles
部分中指定burner_role_name
属性,则令牌的所有者可以刻录该令牌。如果在roles
部分中指定了burner_role_name
属性,则分配了同时是令牌的 minter(创建者)或所有者的刻录角色的用户可以刻录令牌。
自定义方法
您可以使用令牌 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';
-
AddAdmin
- 此方法将用户添加为令牌链代码的
Token Admin
。 -
RemoveAdmin
- 此方法将用户删除为令牌链代码的
Token Admin
。 -
IsUserTokenAdmin
- 如果函数的调用方为
Token Admin
,则此方法返回布尔值为true
的映射。否则,该方法将返回false
。 -
GetAllAdmins
- 此方法返回所有
Token Admin
用户的列表。 -
GetAllAdminUsers
- 此方法返回所有
Token Admin
用户的列表。 -
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
标记配置管理的方法
-
CreateToken
- 此方法创建令牌并将其属性保存在状态数据库中。此方法只能由具有 minter 角色的用户调用。
-
GetAllTokens
- 此方法返回保存在状态数据库中的所有令牌资产。此方法使用 Berkeley DB SQL 丰富的查询,并且只能在连接到远程 Oracle Blockchain Platform 网络时调用。
-
GetAllTokensByUser
- 此方法返回由指定帐户 ID 拥有的所有令牌。此方法使用 Berkeley DB SQL 丰富的查询,并且只能在连接到远程 Oracle Blockchain Platform 网络时调用。
-
GetTokenUri
- 此方法返回指定标记的标记 URI。
-
History
- 此方法返回指定标记的历史记录。
-
Get
- 如果指定的标记对象存在于状态数据库中,则此方法将返回该对象。
-
OwnerOf
- 此方法返回指定令牌所有者的帐户 ID。
-
Name
- 此方法返回令牌类的名称。
-
Symbol
- 此方法返回令牌类的符号。
-
TokenUri
- 此方法返回指定标记的标记 URI。
-
TotalSupply
- 此方法返回铸造 NFT 的总数。
-
UpdateToken
- 此方法更新令牌属性。此方法只能由标记的所有者或创建者调用。创建令牌资产后,只有令牌所有者可以更新令牌定制属性。如果用户既是令牌所有者又是令牌的创建者,则他们还可以更新
TokenDesc
属性。无法更新标记元数据。您必须将所有标记属性传递到此方法,即使您只想更新某些属性也是如此。 -
GetNewCtx
- 此方法返回一个新的
TrxContext
对象。trxcontext
结构包含对所有 SDK 库的引用。仅使用此对象访问 sdk 方法。trxcontext
对象在并发事务运行时维护 SDK 库中事务存根的互斥性。
账户管理方法
-
GenerateAccountId
- 此方法返回帐户 ID,该 ID 通过连接成员服务供应商 ID (
orgId
) 和用户名或电子邮件 ID (userId
),然后创建 SHA-256 散列来形成。 -
CreateAccount
- 此方法为指定的用户创建帐户。必须为在任何时候将具有令牌的任何用户创建账户。帐户跟踪用户拥有的 NFT 数。用户必须在网络中具有帐户才能完成与令牌相关的操作。每个用户只能创建一个 NFT 账户。
帐户 ID 是一组字母数字字符,以
oaccount~
为前缀,后跟当前网络组织中用户的成员服务提供者 ID (org_id
) 的 SHA-256 散列、实例所有者或登录到实例的用户的用户的用户名或电子邮件 ID (userId
) 以及常量字符串nft
。 -
BalanceOf
- 此方法返回指定用户保留的 NFT 总数。
-
GetAllAccounts
- 此方法返回所有帐户的列表。此方法使用 Berkeley DB SQL 丰富的查询,并且只能在连接到远程 Oracle Blockchain Platform 网络时调用。
-
GetAccountByUser
- 此方法返回指定用户的帐户详细信息。此方法只能由链代码的
Token Admin
或帐户的Account Owner
调用。 -
GetUserByAccountId
- 此方法返回指定帐户的用户详细信息。
-
History
- 此方法返回指定帐户的帐户历史记录详细信息数组。
-
GetAccountWithStatusByUser
- 此方法返回指定用户的帐户详细信息,包括帐户状态。此方法只能由链代码的
Token Admin
或帐户的Account Owner
调用。
角色管理的方法
-
AddRoleMember
- 此方法向指定用户添加角色。
-
RemoveRoleMember
- 此方法从指定用户和令牌中删除角色。通过创建串联成员服务供应商 ID (
orgId
) 和用户名或电子邮件 ID (userId
) 的 SHA-256 散列来形成帐户 ID。 -
GetAccountsByRole
- 此方法返回指定角色的所有帐户 ID 的列表。
-
GetUsersByRole
- 此方法返回指定角色的所有用户的列表。
-
IsInRole
- 此方法返回布尔值以指示用户和令牌是否具有指定的角色。通过创建串联成员服务供应商 ID (
orgId
) 和用户名或电子邮件 ID (userId
) 的 SHA-256 散列来形成帐户 ID。
事务处理历史记录管理的方法
-
GetAccountTransactionHistory
- 此方法返回指定账户的事务处理历史记录详细信息数组。
-
GetAccountTransactionHistoryWithFilters
- 此方法返回由
PageSize
、Bookmark
、startTime
和endTime
筛选的指定用户的账户事务处理历史记录。仅当连接到远程 Oracle Blockchain Platform 网络时,才能调用此方法。 -
GetTransactionById
- 此方法返回
Transaction
资产的历史记录。 -
DeleteHistoricalTransactions
- 此方法从状态数据库中删除早于指定日期的事务处理。
令牌行为管理 - 可铸造行为
-
GetMaxMintQuantity
- 此方法返回标记的最大可铸件数量。如果未在规范文件中配置
max_mint_quantity
行为,则默认值为 0,并且可以铸造无限数量的标记。 -
GetTotalMintedTokens
- 此方法返回系统中用于指定令牌的可用令牌的净总数。可用代币的净数量是铸造代币的总数减去烧毁代币的数量。
令牌行为管理 - 可转移行为
-
SafeTransferFrom
- 此方法将指定 NFT 的所有权从调用方转移到其他帐户。此方法包括以下验证:
- 令牌存在且未刻录。
- 发送方账户和接收方账户存在,并且不是同一账户。
- 发件人帐户拥有该令牌。
- 该函数的调用方是发送方。
-
TransferFrom
- 此方法将指定 NFT 的所有权从发送方账户转移到接收方账户。调用方有责任传递正确的参数。此方法可由任何用户调用,而不仅仅是令牌所有者。此方法包括以下验证:
- 令牌存在且未刻录。
- 发送方账户和接收方账户存在,并且不是同一账户。
- 发件人帐户拥有该令牌。
令牌行为管理 - 可燃行为