正式上市前版本:2026-02-26

Solidity Smart Contract API

Oracle Blockchain Platform Enterprise Edition for Hyperledger Besu 提供了 Solidity 方法,可用于处理 Solidity 智能合约。

API 支持基于 ERC-20 标准和 ERC-1155 标准的令牌。ERC-20 和 ERC-1155 实现包括一个帐户智能合约和一个令牌智能合约。账户智能合同提供身份和访问控制方法。令牌智能合约提供专门与令牌相关的功能。

ERC-20 账户合同方法

账户管理方法

createAccount
此方法为指定的用户创建帐户。账户跟踪用户的令牌余额和暂挂余额,并且必须为在任何时候具有令牌的所有用户创建该账户。此方法只能由指定组织的 Token AdminOrg Admin 调用。
参数:
  • userId: string- 用户的用户名或电子邮件 ID。用户 ID 字符串不能为空。
  • orgId: string- 当前组织中用户的成员服务提供商 (membership service provider,MSP) ID。组织 ID 不能为空。
  • userAddress: address- 用户的 wallet 地址。地址不能为零。
  • maxDailyAmount: int256 –每天可以在交易中使用的最大令牌数量。如果 maxDailyAmount-1,则没有限制。
  • maxDailyTransactions: int256- 每天可以完成的最大事务处理数。如果 maxDailyTransactions-1,则没有限制。
deleteAccount
此方法将删除指定用户的帐户。仅当令牌余额为零时,才能删除账户。此方法只能由指定组织的 Token AdminOrg Admin 调用。
参数:
  • userAddress: address- 用户的 wallet 地址。地址不能为零。
getAccountStatus
此方法获取指定帐户的当前状态。此方法只能由指定组织的 Token AdminToken AuditorOrg Admin 或指定用户调用。
参数:
  • userAddress: address- 用户的 wallet 地址。地址不能为零。
返回:
  • enum AccountStatus 对象、012 的值。
    enum AccountStatus {
    active,
    suspended,
    deleted
    }
getAccountByAddress
此方法获取指定用户的帐户信息。此方法只能由指定组织的 Token AdminToken AuditorOrg Admin 或指定用户调用。
参数:
  • userAddress: address- 用户的 wallet 地址。地址不能为零。
返回值示例:
{
    "userId": "userA",
    "orgId": "orgA",
	"accountAddress": "0x0fbdc686b912d7722dc86510934589e0aaf3b55a",
    "dailyLimits": {
          "isMaxDailyTxnEnabled": true,
    	  "isMaxDailyAmtEnabled": true, 
		  "dailyAmount": 100,
    	  "dailyTransactions": 5,
		  "maxDailyAmount": 100000,
    	  "maxDailyTransactions": 50           
	},
	"status":0
}
getAllAccounts
此方法获取属于指定范围的所有帐户的帐户信息。此方法只能由 Token AdminToken Auditor 调用。
参数:
  • offset: uint256- 用于获取帐户的偏移索引。
  • limit: uint256- 要检索的项数。
返回值示例:
Return (UserAccount[] memory items, uint256 total, uint256 nextOffset)
[{
    "userId": "userA",
    "orgId": "orgA",
	"accountAddress": "0x0fbdc686b912d7722dc86510934589e0aaf3b55a",
    "dailyLimits": {
          "isMaxDailyTxnEnabled": true,
    	  "isMaxDailyAmtEnabled": true, 
		  "dailyAmount": 100,
    	  "dailyTransactions": 5,
		  "maxDailyAmount": 100000,
    	  "maxDailyTransactions": 50           
	},
	"status":0
}]
total: 15
nextoffset: 6
activateAccount
此方法激活用户帐户。此方法只能由指定组织的 Token AdminOrg Admin 调用。
参数:
  • userAddress: address- 用户的 wallet 地址。地址不能为零。
suspendAccount
此方法将暂停用户帐户。要删除帐户,帐户余额必须为零。此方法只能由指定组织的 Token AdminOrg Admin 调用。
参数:
  • userAddress: address- 用户的 wallet 地址。地址不能为零。
setMaxDailyAmount
此方法设置每日可在事务处理中使用的标记的最大数量。此方法只能由指定组织的 Token AdminOrg Admin 调用。
参数:
  • count: int256 –每天可以在交易中使用的最大令牌数量。
  • userAddress: address- 用户的 wallet 地址。地址不能为零。
setMaxDailyTransactionCount
此方法设置每天可以完成的最大事务处理数。此方法只能由指定组织的 Token AdminOrg Admin 调用。
参数:
  • value: int256- 每天可以完成的最大事务处理数。
  • userAddress: address- 用户的 wallet 地址。地址不能为零。

管理员管理的方法

addTokenAdmin
此方法将用户添加为 Token Admin。此方法只能由 Token Admin 调用。
参数:
  • adminDetails: JSON- 包含要添加为 Token Admin 的用户的详细信息的对象,如以下示例中所示。
    {
        "userId": "tokenAdmin1",
        "orgId": "orgA",
    	"accountAddress": "0x0fbdc686b912d7722dc86510934589e0aaf3b55a"    
    }
removeTokenAdmin
此方法将用户删除为 Token Admin。此方法只能由 Token Admin 调用。
参数:
  • userAddress: address- 用户的 wallet 地址。地址不能为零。
getAllTokenAdmins
此方法返回属于 Token Admin 的所有用户的列表。此方法只能由 Token AdminToken Auditor 调用。
参数:
返回值示例:
[{
    "userId": "tokenadmin1",
    "orgId": "orgA",
	"accountAddress": "0x0fbdc686b912d7722dc86510934589e0aaf3b55a"
},
{
    "userId": "tokenadmin2",
    "orgId": "orgB",
	"accountAddress": "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73"
}]
isTokenAdmin
此方法检查指定用户是否为 Token Admin。此方法只能由 Token AdminToken AuditorOrg AdminOrg Auditor 调用。
参数:
  • userAddress: address- 用户的 wallet 地址。地址不能为零。
返回:
  • 如果指定用户为 Token Admin,则该方法返回 true,否则返回 false
addOrgAdmin
此方法将用户添加为 Org Admin。此方法只能由指定组织的 Token AdminOrg Admin 调用。
参数:
  • adminDetails: JSON- 包含要添加为 Org Admin 的用户的详细信息的对象,如以下示例中所示。
    {
        "userId": "tokenAdmin1",
        "orgId": "orgA",
    	"accountAddress": "0x0fbdc686b912d7722dc86510934589e0aaf3b55a"    
    }
removeOrgAdmin
此方法将用户删除为 Org Admin。此方法只能由指定组织的 Token AdminOrg Admin 调用。
参数:
  • userAddress: address- 用户的 wallet 地址。地址不能为零。
getAllOrgAdmins
此方法返回属于 Org Admin 的所有用户的列表。此方法只能由 Token AdminToken AuditorOrg AdminOrg Auditor 调用。
参数:
返回值示例:
[{
    "userId": "orgadmin1",
    "orgId": "orgA",
	"accountAddress": "0x0fbdc686b912d7722dc86510934589e0aaf3b55a"
},
{
    "userId": "orgadmin2",
    "orgId": "orgB",
	"accountAddress": "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73"
}]
isOrgAdmin
此方法检查指定用户是否为 Org Admin。此方法只能由 Token AdminToken AuditorOrg AdminOrg Auditor 调用。
参数:
  • userAddress: address- 用户的 wallet 地址。地址不能为零。
返回:
  • 如果指定用户为 Org Admin,则该方法返回 true,否则返回 false

审计员管理方法

addTokenAuditor
此方法将用户添加为 Token Auditor。此方法只能由 Token Admin 调用。
参数:
  • adminDetails: JSON- 包含要添加为 Token Auditor 的用户的详细信息的对象,如以下示例中所示。
    {
        "userId": "tokenAuditor1",
        "orgId": "orgA",
    	"accountAddress": "0x0fbdc686b912d7722dc86510934589e0aaf3b55a"    
    }
removeTokenAuditor
此方法将用户删除为 Token Auditor。此方法只能由 Token Admin 调用。
参数:
  • userAddress: address- 用户的 wallet 地址。地址不能为零。
getAllTokenAuditors
此方法返回属于 Token Auditor 的所有用户的列表。此方法只能由 Token AdminToken Auditor 调用。
参数:
返回值示例:
[{
    "userId": "tokenAuditor1",
    "orgId": "orgA",
	"accountAddress": "0x0fbdc686b912d7722dc86510934589e0aaf3b55a"
},
{
    "userId": "tokenAuditor2",
    "orgId": "orgB",
	"accountAddress": "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73"
}]
isTokenAuditor
此方法检查指定用户是否为 Token Auditor。此方法可由任何用户调用。
参数:
  • userAddress: address- 用户的 wallet 地址。地址不能为零。
返回:
  • 如果指定用户为 Token Auditor,则该方法返回 true,否则返回 false
addOrgAuditor
此方法将用户添加为 Org Auditor。此方法只能由指定组织的 Token AdminOrg Admin 调用。
参数:
  • adminDetails: JSON- 包含要添加为 Org Auditor 的用户的详细信息的对象,如以下示例中所示。
    {
        "userId": "tokenAuditor1",
        "orgId": "orgA",
    	"accountAddress": "0x0fbdc686b912d7722dc86510934589e0aaf3b55a"    
    }
removeOrgAuditor
此方法将用户删除为 Org Auditor。此方法只能由指定组织的 Token AdminOrg Admin 调用。
参数:
  • userAddress: address- 用户的 wallet 地址。地址不能为零。
getAllOrgAuditors
此方法返回属于 Org Auditor 的所有用户的列表。此方法只能由 Token AdminToken AuditorOrg AdminOrg Auditor 调用。
参数:
返回值示例:
[{
    "userId": "orgAuditor1",
    "orgId": "orgA",
	"accountAddress": "0x0fbdc686b912d7722dc86510934589e0aaf3b55a"
},
{
    "userId": "orgAuditor2",
    "orgId": "orgB",
	"accountAddress": "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73"
}]
isOrgAuditor
此方法检查指定用户是否为 Org Auditor。此方法可由任何用户调用。
参数:
  • userAddress: address- 用户的 wallet 地址。地址不能为零。
返回:
  • 如果指定用户为 Org Auditor,则该方法返回 true,否则返回 false

角色管理的方法

addRole
此方法向指定用户添加角色。此方法只能由指定组织的 Token AdminOrg Admin 调用。
参数:
  • userAddress: address- 用户的 wallet 地址。地址不能为零。
  • role: string- 要添加到指定用户的角色的名称。例如,minterburnernotary
removeRole
此方法从指定用户中删除角色。此方法只能由指定组织的 Token AdminOrg Admin 调用。
参数:
  • userAddress: address- 用户的 wallet 地址。地址不能为零。
  • role: string- 要从指定用户中删除的角色的名称。例如,minterburnernotary
accountHasRole
此方法检查用户是否具有指定的角色。此方法可由任何用户调用。
参数:
  • role: string- 要搜索的角色名称(minterburnernotary)的 Keccak-256 散列。
  • userAddress: address- 用户的 wallet 地址。地址不能为零。
返回:
  • 如果用户具有指定的角色,该方法将返回 true,否则将返回 false

ERC-20 标记合同方法

标记配置管理的方法

__ERC20Token_init
部署令牌合同时会调用此方法。此方法只能由 Token Admin 调用。
参数:
  • name: string- 令牌的名称。
  • symbol: string- 标记的符号。
  • accountContract: address- 客户合同的地址。
initializeERC20Token
此方法初始化 ERC-20 令牌。此方法只能由 Token Admin 调用。
参数:
  • token: JSON- 定义标记的对象,如以下示例中所示。
    {
        "tokenId": "WCBDC-100",
        "tokenName": "wholesale cbdc",
        "tokenDesc": "this is wcbdc contract",
        "tokenStandard": "ttf+",
        "tokenType": "fungible",
        "tokenUnit": "fractional",
        "behaviors": ["mintable", "burnable", "transferable", "roles", "holdable", "pausable"],
        "decimals": 2,
        "mintable": { "maxMintQuantity": 1000000, "mintApprovalRequired": false },
        "burnable": { "burnApprovalRequired": false }
    }
getToken
此方法获取令牌的详细信息。此方法只能由 Token AdminToken AuditorOrg AdminOrg Auditor 调用。
参数:
返回值示例:
{
    "tokenId": "WCBDC-100",
    "tokenName": "wholesale cbdc",
    "tokenDesc": "this is wcbdc contract",
    "tokenStandard": "ttf+",
    "tokenType": "fungible",
    "tokenUnit": "fractional",
    "behaviors": ["mintable", "burnable", "transferable", "roles", "holdable", "pausable"],
    "decimals": 2,
    "mintable": { "maxMintQuantity": 1000000, "mintApprovalRequired": false },
    "burnable": { "burnApprovalRequired": false }
}
decimals
此方法获取令牌的十进制值。此方法只能由 Token AdminToken AuditorOrg AdminOrg Auditor 调用。
参数:
返回值
  • 小数位数的 uint8 值。
__ERC20Token_init
部署令牌合同时会调用此方法。此方法只能由 Token Admin 调用。
参数:
  • name: string- 令牌的名称。
  • symbol: string- 标记的符号。
  • accountContract: address- 客户合同的地址。
initializeERC20Token
此方法初始化 ERC-20 令牌。此方法只能由 Token Admin 调用。
参数:
  • token: JSON- 定义标记的对象,如以下示例中所示。
    {
        "tokenId": "WCBDC-100",
        "tokenName": "wholesale cbdc",
        "tokenDesc": "this is wcbdc contract",
        "tokenStandard": "ttf+",
        "tokenType": "fungible",
        "tokenUnit": "fractional",
        "behaviors": ["mintable", "burnable", "transferable", "roles", "holdable", "pausable"],
        "decimals": 2,
        "mintable": { "maxMintQuantity": 1000000, "mintApprovalRequired": false },
        "burnable": { "burnApprovalRequired": false }
    }
getToken
此方法获取令牌的详细信息。此方法只能由 Token AdminToken AuditorOrg AdminOrg Auditor 调用。
参数:
返回值示例:
{
    "tokenId": "WCBDC-100",
    "tokenName": "wholesale cbdc",
    "tokenDesc": "this is wcbdc contract",
    "tokenStandard": "ttf+",
    "tokenType": "fungible",
    "tokenUnit": "fractional",
    "behaviors": ["mintable", "burnable", "transferable", "roles", "holdable", "pausable"],
    "decimals": 2,
    "mintable": { "maxMintQuantity": 1000000, "mintApprovalRequired": false },
    "burnable": { "burnApprovalRequired": false }
}
cap
此方法获取最大令牌供应量 (cap)。此方法只能由 Token AdminToken AuditorOrg AdminOrg Auditor 调用。
参数:
返回值
  • 标记供应上限的 uint256 值。
balanceOf
此方法获取指定用户的令牌余额。此方法只能由 Token AdminToken AuditorOrg AdminOrg Auditor 或指定用户调用。
参数:
  • userAddress: address- 用户的 wallet 地址。地址不能为零。
返回值
  • 标记余额的 uint256 值。
令牌行为管理 - 可铸造行为
mint
此方法创建 (mint) 令牌。具有 minter 角色的任何用户都可以调用此方法。
参数:
  • to: address- 用户的 wallet 地址。地址不能为零。
  • value: uint256 - 要铸造的令牌数量。
batchMint
此方法一次为多个用户创建 (mint) 令牌。具有 minter 角色的任何用户都可以调用此方法。
参数:
  • toList: address[]- 用户的 wallet 地址列表。地址不能为零。
  • amounts: uint256[] - 要铸币的数量列表。
requestMint
minter 可以调用此方法,向公证人发送请求以创建指定数量的令牌。
参数:
  • notary: address –公证人的钱包地址。地址不能为零。
  • amount: uint256 - 要铸造的令牌数量。
  • expiration: uint256- 以纪元格式表示请求的到期时间。
  • opId: string- 请求的操作 ID。
  • info: InfoDetails- 指定请求类别 (category) 和说明 (description) 的对象。
approveMint
公证人可以调用此方法来批准铸造请求。
参数:
  • opId: string- 请求的操作 ID。
rejectMint
公证人可以调用此方法来拒绝铸造请求。
参数:
  • opId: string- 请求的操作 ID。

令牌行为管理 - 可燃行为

burn
此方法将停用(刻录)令牌。具有刻录器角色的任何用户都可以调用此方法。
参数:
  • account: address- 用户的 wallet 地址。地址不能为零。
  • value: uint256 - 要燃烧的令牌数量。
batchBurn
此方法一次为多个用户刻录令牌。具有刻录器角色的任何用户都可以调用此方法。
参数:
  • toList: address[]- 用户的 wallet 地址列表。地址不能为零。
  • amounts: uint256[] —要燃烧的令牌数量列表。
requestBurn
刻录器可以调用此方法,向公证人发送请求以刻录指定数量的令牌。
参数:
  • notary: address –公证人的钱包地址。地址不能为零。
  • amount: uint256 - 要燃烧的令牌数量。
  • expiration: uint256- 以纪元格式表示请求的到期时间。
  • opId: string- 请求的操作 ID。
  • info: InfoDetails- 指定请求类别 (category) 和说明 (description) 的对象。
approveBurn
公证人可以调用此方法来批准刻录请求。
参数:
  • opId: string- 请求的操作 ID。
rejectBurn
公证人可以调用此方法来拒绝刻录请求。
参数:
  • opId: string- 请求的操作 ID。

令牌行为管理 - 可转移行为

transfer
此方法将令牌传输给指定用户。任何具有令牌的用户都可以调用此方法。
参数:
  • to: address - 接收者的 wallet 地址。地址不能为零。
  • value: uint256 –要转移的令牌数量。
batchTransfer
此方法将令牌传输到指定的用户列表。任何具有令牌的用户都可以调用此方法。
参数:
  • toList: address[]- 接收器的 wallet 地址列表。地址不能为零。
  • amounts: uint256[]- 要传输的令牌数量列表。

令牌行为管理 - 可委托行为

allowance
此方法将令牌支出委托给指定用户。任何具有令牌的用户都可以调用此方法。
参数:
  • owner: address –委托代币支出的所有者的钱包地址。地址不能为零。
  • spender: address- 令牌使用者的 wallet 地址。地址不能为零。
返回值
  • 委托用于支出的令牌的 uint256 金额。
approve
此方法批准指定委托支付者的令牌数量。任何具有令牌的用户都可以调用此方法。
参数:
  • spender: address- 令牌使用者的 wallet 地址。地址不能为零。
  • value: uint256 –允许支出者的令牌数量。
transferFrom
授权的支出者使用此方法传输令牌。
参数:
  • from: address –发送者的钱包地址。地址不能为零。
  • to: address - 接收者的 wallet 地址。地址不能为零。
  • value: uint256 –要转移的令牌数量。

令牌行为管理 - 可暂停行为

isPaused
此方法检查合同是否已暂停。此方法只能由 Token AdminToken AuditorOrg AdminOrg Auditor 调用。
参数:
pause
此方法将暂停合同。此方法只能由 Token Admin 调用。
参数:
unpause
此方法将恢复合同。此方法只能由 Token Admin 调用。
参数:

令牌行为管理 - 可暂挂行为

hold
此方法代表令牌所有者创建暂挂。任何具有令牌的用户都可以调用此方法。
参数:
  • to: address - 接收者的 wallet 地址。地址不能为零。
  • notary: address –公证人的钱包地址。地址不能为零。
  • amount: uint256 –要转移的令牌数量。
  • expiration: uint256- 以纪元格式表示请求的到期时间。
  • opId: string- 请求的操作 ID。
  • holdType: string - 暂挂类型。例如,transfer
  • info: InfoDetails- 指定请求类别 (category) 和说明 (description) 的对象。
executeHold
此方法批准暂挂请求。此方法只能由以前指定的公证人调用。
参数:
  • amount: uint256 –要批准的令牌数量。
  • opId: string- 请求的操作 ID。
releaseHold
此方法拒绝暂挂请求。此方法只能由以前指定的公证人调用。
参数:
  • opId: string- 请求的操作 ID。
getOnHoldBalanceWithOperationId
此方法返回指定工序 ID 的暂挂余额。此方法可由指定组织的 Token AdminToken AuditorOrg AdminOrg Auditor 调用,也可由交易参与者(发件人、收件人、公证人)调用。
参数:
  • opId: string- 请求的操作 ID。
返回值
  • 预扣余额的 uint256 金额。
getAccountOnHoldBalance
此方法返回指定账户的暂挂余额。此方法可由指定组织的 Token AdminToken AuditorOrg AdminOrg Auditor 调用,也可由交易参与者(发件人、收件人、公证人)调用。
参数:
  • account: address- 帐户的 wallet 地址。地址不能为零。
返回值
  • 预扣余额的 uint256 金额。

ERC-1155 账户合同方法

账户管理方法

createAccount
此方法为指定的用户创建帐户。帐户跟踪用户的令牌余额,并且必须为在任何时候具有令牌的所有用户创建该帐户。此方法只能由 Token Admin 调用。
参数:
  • userId: string- 用户的用户名或电子邮件 ID。用户 ID 字符串不能为空。
  • orgId: string- 当前组织中用户的成员服务提供商 (membership service provider,MSP) ID。组织 ID 不能为空。
  • userAddress: address- 用户的 wallet 地址。地址不能为零。
deleteAccount
此方法将删除指定用户的帐户。仅当令牌余额为零时,才能删除账户。此方法只能由 Token Admin 调用。
参数:
  • userAddress: address- 用户的 wallet 地址。地址不能为零。
getAccountStatus
此方法获取指定帐户的当前状态。此方法只能由 Token Admin 或指定用户调用。
参数:
  • userAddress: address- 用户的 wallet 地址。地址不能为零。
返回:
  • enum AccountStatus 对象、012 的值。
    enum AccountStatus {
    active,
    suspended,
    deleted
    }
getAccountByAddress
此方法获取指定用户的帐户信息。此方法只能由 Token Admin 或指定用户调用。
参数:
  • userAddress: address- 用户的 wallet 地址。地址不能为零。
返回值示例:
{
    "userId": "userA",
    "orgId": "orgA",
	"accountAddress": "0x0fbdc686b912d7722dc86510934589e0aaf3b55a",
	"status":0
}
getAllAccounts
此方法获取属于指定范围的所有帐户的帐户信息。此方法只能由 Token Admin 调用。
参数:
  • offset: uint256- 用于获取帐户的偏移索引。
  • limit: uint256- 要检索的项数。
返回值示例:
Return (UserAccount[] memory items, uint256 total, uint256 nextOffset)
[{
    "userId": "userA",
    "orgId": "orgA",
	"accountAddress": "0x0fbdc686b912d7722dc86510934589e0aaf3b55a",
	"status":0
}]
total: 15
nextoffset: 6
activateAccount
此方法激活用户帐户。此方法只能由 Token Admin 调用。
参数:
  • userAddress: address- 用户的 wallet 地址。地址不能为零。
suspendAccount
此方法将暂停用户帐户。要删除帐户,帐户余额必须为零。此方法只能由 Token Admin 调用。
参数:
  • userAddress: address- 用户的 wallet 地址。地址不能为零。

管理员管理的方法

addTokenAdmin
此方法将用户添加为 Token Admin。此方法只能由 Token Admin 调用。
参数:
  • adminDetails: JSON- 包含要添加为 Token Admin 的用户的详细信息的对象,如以下示例中所示。
    {
        "userId": "tokenAdmin1",
        "orgId": "orgA",
    	"accountAddress": "0x0fbdc686b912d7722dc86510934589e0aaf3b55a"    
    }
removeTokenAdmin
此方法将用户删除为 Token Admin。此方法只能由 Token Admin 调用。
参数:
  • userAddress: address- 用户的 wallet 地址。地址不能为零。
getAllTokenAdmins
此方法返回属于 Token Admin 的所有用户的列表。此方法只能由 Token Admin 调用。
参数:
返回值示例:
[{
    "userId": "tokenadmin1",
    "orgId": "orgA",
	"accountAddress": "0x0fbdc686b912d7722dc86510934589e0aaf3b55a"
},
{
    "userId": "tokenadmin2",
    "orgId": "orgB",
	"accountAddress": "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73"
}]
isTokenAdmin
此方法检查指定用户是否为 Token Admin。此方法只能由 Token Admin 调用。
参数:
  • userAddress: address- 用户的 wallet 地址。地址不能为零。
返回:
  • 如果指定用户为 Token Admin,则该方法返回 true,否则返回 false

角色管理的方法

addRole
此方法向指定用户添加角色。此方法只能由 Token Admin 调用。
参数:
  • userAddress: address- 用户的 wallet 地址。地址不能为零。
  • role: string- 要添加到指定用户的角色的名称。例如,minterburnernotary
  • scopeId: uint256- 不可替换令牌 (non-fungible token,NFT) 类 ID 或可替换令牌 ID。
removeRole
此方法从指定用户中删除角色。此方法只能由指定组织的 Token AdminOrg Admin 调用。
参数:
  • userAddress: address- 用户的 wallet 地址。地址不能为零。
  • role: string- 要从指定用户中删除的角色的名称。例如,minterburnernotary
  • scopeId: uint256- 不可替换令牌 (non-fungible token,NFT) 类 ID 或可替换令牌 ID。
accountHasRole
此方法检查用户是否具有指定的角色。此方法可由任何用户调用。
参数:
  • role: string- 要搜索的角色名称(minterburnernotary)的 Keccak-256 散列。
  • userAddress: address- 用户的 wallet 地址。地址不能为零。
  • scopeId: uint256- 不可替换令牌 (non-fungible token,NFT) 类 ID 或可替换令牌 ID。
返回:
  • 如果用户具有指定的角色,该方法将返回 true,否则将返回 false
addTokenSysRole
此方法将 TOKEN_SYS_VAULT_ROLE 角色添加到指定的用户。此方法只能由 Token Admin 调用。
参数:
  • userAddress: address- 用户的 wallet 地址。地址不能为零。
  • role: string- 唯一支持的角色是 TOKEN_SYS_VAULT_ROLE
返回:
  • 如果成功添加了角色,该方法将返回 true,否则将返回 false
removeTokenSysRole
此方法从指定用户中删除 TOKEN_SYS_VAULT_ROLE 角色。此方法只能由 Token Admin 调用。
参数:
  • userAddress: address- 用户的 wallet 地址。地址不能为零。
  • role: string- 唯一支持的角色是 TOKEN_SYS_VAULT_ROLE
返回:
  • 如果成功删除了角色,该方法将返回 true,否则将返回 false
transferTokenSysRole
此方法将 TOKEN_SYS_VAULT_ROLE 角色从一个用户转移到另一个用户。此方法只能由 Token Admin 调用。
参数:
  • fromAddress: address –发送者的钱包地址。地址不能为零。
  • toAddress: address - 接收者的 wallet 地址。地址不能为零。
  • role: string- 唯一支持的角色是 TOKEN_SYS_VAULT_ROLE
返回:
  • 如果角色被成功践踏,该方法将返回 true,否则将返回 false

ERC-1155 标记合同方法

标记配置管理的方法

__ERC1155Token_init
部署令牌合同时会调用此方法。此方法只能由 Token Admin 调用。
参数:
  • accountContract: address- 客户合同的地址。
  • uri: string- 标记类型 URI。
saveNFTClass
此方法将 NFT 分类信息保存到分类帐。此方法只能由 Token Admin 调用。
参数:
  • classinfo: JSON-NFT 帐户分类信息对象。以下代码显示了整个 NFT 的示例。
    {
        "nftClassId": (BigInt(1)),
        "tokenName": "ArtCollection2",
        "tokenDesc": "this is art collection contract",
        "tokenStandard": "erc1155",
        "tokenUnit": 0,
        "behaviors": ["mintable", "burnable", "transferable", "roles", "indivisible"],
        "divisible": { "decimals": 0 },
        "mintable": { "maxMintQuantity": 2 }
    }
    以下代码显示了小数 NFT 的示例。
    {
      "nftClassId": (BigInt(0)),
      "tokenName": "ArtCollection",
      "tokenDesc": "this is art collection contract",
      "tokenStandard": "erc1155",
      "tokenUnit": 1,
      "behaviors": ["mintable", "burnable", "transferable", "roles", "divisible"],
      "divisible": { "decimals": 0 },
      "mintable": { "maxMintQuantity": 1 }
    }
createNonFungibleToken
此方法用于模拟 NFT。此方法只能由具有 minter 角色的用户调用。
参数:
  • tokenId: uint256-NFT 的令牌 ID,其中包含 NFT 类信息。ID 的前 128 位表示 NFT 类 ID,后 128 位表示 NFT 的唯一索引。
  • quantity: uint256- 要铸造的 NFT 数量(创建)。
createFungibleToken
部署令牌合同时会调用此方法。此方法只能由 Token Admin 调用。
参数:
  • token- 要记录在分类账中的可替换标记定义,如以下示例中所示。
     "tokenId": BigInt(0),
     "tokenName": "wcbdc",
     "tokenDesc": "this is wcbdc token",
     "tokenStandard": "erc1155",
     "tokenType": 1,
     "tokenUnit": 1,
     "behaviors": ["mintable", "burnable", "transferable", "roles", "divisible"],
     "divisible": { "decimals": 2 },
     "quantity": 1,
     "mintable": { "maxMintQuantity": 1 }
getTokenById
此方法获取令牌的详细信息。此方法只能由 Token Admin 或令牌所有者调用。
参数:
  • token- 可替换标记定义,如以下示例中所示。
     "tokenId": BigInt(0),
     "tokenName": "wcbdc",
     "tokenDesc": "this is wcbdc token",
     "tokenStandard": "erc1155",
     "tokenType": 1,
     "tokenUnit": 1,
     "behaviors": ["mintable", "burnable", "transferable", "roles", "divisible"],
     "divisible": { "decimals": 2 },
     "quantity": 1,
     "mintable": { "maxMintQuantity": 1 }
  • metaInfo: bytes- 如果令牌是可变的,则指定一个空值。如果令牌是整个 NFT,请指定以下 struct 对象的编码版本。
    struct ERC1155WholeNFT {
        bool isBurned;
        bool isLocked;
        uint256 creationDate;
        uint256 quantity;
        address createdBy;
        address owner;
    }
    如果令牌是小数 NFT,请指定以下 struct 对象的编码版本。
    struct ERC1155FractionalNFT {
        bool isBurned;
        bool isLocked;
        uint256 creationDate;
        uint256 quantity;
        address createdBy;
        Owners[] owners;
    }
geTokenDecimals
此方法获取令牌的十进制值。此方法只能由 Token Admin 调用。
参数:
  • id: uint256- 令牌 ID。
返回值
  • 小数位数的 uint8 值。
tokenIdOf
此方法获取令牌的 ID。此方法只能由 Token Admin 调用。
参数:
  • classId: uint256-NFT 类 ID。
  • serialId: uint256-NFT 类中的串行 ID。
返回值
  • uint256 标记 ID。
balanceOf
此方法获取指定用户的令牌余额。此方法只能由 Token Admin 或令牌所有者调用。
参数:
  • account: address- 用户的 wallet 地址。地址不能为零。
  • id: uint256- 令牌 ID。
返回值
  • 标记余额的 uint256 值。
balanceOfBatch
此方法获取用户列表的令牌余额。此方法只能由 Token Admin 或令牌所有者调用。
参数:
  • account: address[]- 用户的 wallet 地址列表。
  • id: uint256[]- 令牌 ID 的列表。
返回值
  • 标记余额的 uint256[] 列表。
exists
此方法检查指定的标记是否存在。此方法只能由 Token Admin 调用。
参数:
  • id: uint256- 令牌 ID。
返回:
  • 如果指定的标记存在,则该方法返回 true,否则返回 false
totalSupply
此方法检查将获取合同中所有令牌的总供应。此方法只能由 Token Admin 调用。
参数:
返回:
  • 令牌总供应的 uint256[] 值。
totalSupply
此方法检查获取合同中指定标记的总供应。此方法只能由 Token Admin 调用。
参数:
  • id: uint256- 令牌 ID。
返回:
  • 指定标记的总供应的 uint256[] 值。
令牌行为管理 - 可铸造行为
mintBatch
此方法在批处理模式下创建 (mint) ERC-1155 令牌。必须初始化标记。具有 minter 角色的任何用户都可以调用此方法。
参数:
  • tokenIds: uint256[] - 要铸币的标记列表。
  • quantity: uint256[]- 要铸币的令牌数量列表。
  • data: byte- 其他字节的数据。

令牌行为管理 - 可燃行为

burnBatch
此方法在批处理模式下销毁(烧毁)ERC-1155 令牌。必须初始化标记。具有刻录器角色的任何用户都可以调用此方法。
参数:
  • tokenIds: uint256[]- 要燃烧的令牌列表。
  • quantity: uint256[]- 要消耗的令牌数量列表。
  • data: byte- 其他字节的数据。
burnNFT
此方法销毁(刻录)非可换代币。必须初始化标记。具有刻录器角色的任何用户都可以调用此方法。
参数:
  • tokenId: uint256- 要燃烧的令牌的 ID。

令牌行为管理 - 可转移行为

safeTransferFrom
此方法将令牌从发送方传输到接收方。任何持有令牌的用户都可以调用此方法。
参数:
  • from: address –发送者的钱包地址。地址不能为零。
  • to: address - 接收者的 wallet 地址。地址不能为零。
  • id: uint256- 要传输的 ERC-1155 标记的 ID。
  • value: uint256 –要传输的令牌数量。
  • data: byte- 其他字节的数据。
safeBatchTransferFrom
此方法将令牌从发送方传输到接收方。任何持有令牌的用户都可以调用此方法。
参数:
  • from: address –发送者的钱包地址。地址不能为零。
  • to: address - 接收者的 wallet 地址。地址不能为零。
  • id: uint256- 要传输的 ERC-1155 标记的 ID。
  • value: uint256 –要传输的令牌数量。
  • data: byte- 其他字节的数据。

令牌行为管理 - 可委托行为

setApprovalForAll
此方法授予或撤消操作员根据 approved 参数转移调用者的令牌的权限。任何持有令牌的用户都可以调用此方法。
参数:
  • operator: address- 被授予或撤销权限的操作员的 wallet 地址。地址不能为零。
  • approved: bool –布尔值标志指示操作员是否有权转移调用者的令牌。
isApprovedForAll
此方法检查操作员是否已获批准转移指定账户的令牌。任何持有令牌的用户都可以调用此方法。
参数:
  • account: address- 向操作员授予或撤销其令牌传输权限的用户的 wallet 地址。地址不能为零。
  • operator: address- 被授予或撤销权限的操作员的 wallet 地址。地址不能为零。
返回:
  • 一个布尔值,指示操作员是否已获批准转移指定账户的令牌。

令牌行为管理 - 可暂停行为

paused
此方法检查合同是否已暂停。此方法可由任何用户调用。
参数:
pause
此方法将暂停合同。此方法只能由 Token Admin 调用。
参数:
unpause
此方法恢复已暂停的合同。此方法只能由 Token Admin 调用。
参数:

令牌行为管理 - 可锁定行为

lockNFT
此方法锁定不可替换的令牌。此方法只能由具有 TOKEN_SYS_VAULT_ROLE 角色的用户调用。
参数:
  • tokenId: uint256- 要锁定的令牌的 ID。
isNFTLocked
此方法检查非可换令牌是否已锁定。此方法只能由具有 TOKEN_SYS_VAULT_ROLE 角色的用户或由 Token Admin 调用。
参数:
  • tokenId: uint256- 要检查的令牌的 ID。
返回:
  • 指示标记是否锁定的布尔值。