正式上市前 (階段):2026-02-26

穩固智能合約 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 – 目前組織中使用者的會員服務提供者 (MSP) ID。組織 ID 不得空白。
  • userAddress: address – 使用者的公事包位址。地址不能為 0 。
  • maxDailyAmount: int256 – 每日交易中可使用的權杖數量上限。如果 maxDailyAmount-1,則沒有限制。
  • maxDailyTransactions: int256 – 每日可完成的交易數上限。如果 maxDailyTransactions-1,則沒有限制。
deleteAccount
此方法會刪除指定使用者的帳戶。只有在權杖餘額為零時,才能刪除帳戶。只有指定的組織之 Token AdminOrg Admin 才能呼叫此方法。
參數:
  • userAddress: address – 使用者的公事包位址。地址不能為 0 。
getAccountStatus
此方法會取得指定帳戶的目前狀態。此方法只能由指定組織的 Token AdminToken AuditorOrg Admin 或指定的使用者呼叫。
參數:
  • userAddress: address – 使用者的公事包位址。地址不能為 0 。
傳回值:
  • enum AccountStatus 物件、012 的值。
    enum AccountStatus {
    active,
    suspended,
    deleted
    }
getAccountByAddress
此方法會取得指定使用者的帳戶資訊。此方法只能由指定組織的 Token AdminToken AuditorOrg Admin 或指定的使用者呼叫。
參數:
  • userAddress: address – 使用者的公事包位址。地址不能為 0 。
傳回值範例:
{
    "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 – 使用者的公事包位址。地址不能為 0 。
suspendAccount
此方法會暫停使用者帳戶。若要刪除科目,科目餘額必須為零。只有指定的組織之 Token AdminOrg Admin 才能呼叫此方法。
參數:
  • userAddress: address – 使用者的公事包位址。地址不能為 0 。
setMaxDailyAmount
此方法會設定每日交易中可使用的記號數量上限。只有指定的組織之 Token AdminOrg Admin 才能呼叫此方法。
參數:
  • count: int256 – 每日交易中可使用的權杖數量上限。
  • userAddress: address – 使用者的公事包位址。地址不能為 0 。
setMaxDailyTransactionCount
此方法會設定每日可完成的交易數上限。只有指定的組織之 Token AdminOrg Admin 才能呼叫此方法。
參數:
  • value: int256 – 每日可完成的交易數上限。
  • userAddress: address – 使用者的公事包位址。地址不能為 0 。

管理員管理方法

addTokenAdmin
此方法會將使用者新增為 Token Admin。只有 Token Admin 才能呼叫此方法。
參數:
  • adminDetails: JSON – 包含要新增為 Token Admin 之使用者詳細資訊的物件,如下列範例所示。
    {
        "userId": "tokenAdmin1",
        "orgId": "orgA",
    	"accountAddress": "0x0fbdc686b912d7722dc86510934589e0aaf3b55a"    
    }
removeTokenAdmin
此方法會移除使用者作為 Token Admin。只有 Token Admin 才能呼叫此方法。
參數:
  • userAddress: address – 使用者的公事包位址。地址不能為 0 。
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 – 使用者的公事包位址。地址不能為 0 。
傳回值:
  • 如果指定的使用者是 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 – 使用者的公事包位址。地址不能為 0 。
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 – 使用者的公事包位址。地址不能為 0 。
傳回值:
  • 如果指定的使用者是 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 – 使用者的公事包位址。地址不能為 0 。
getAllTokenAuditors
此方法會傳回所有 Token Auditor 使用者的清單。只有 Token AdminToken Auditor 才能呼叫此方法。
參數:
傳回值範例:
[{
    "userId": "tokenAuditor1",
    "orgId": "orgA",
	"accountAddress": "0x0fbdc686b912d7722dc86510934589e0aaf3b55a"
},
{
    "userId": "tokenAuditor2",
    "orgId": "orgB",
	"accountAddress": "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73"
}]
isTokenAuditor
此方法會檢查指定的使用者是否為 Token Auditor。任何使用者都可以呼叫這個方法。
參數:
  • userAddress: address – 使用者的公事包位址。地址不能為 0 。
傳回值:
  • 如果指定的使用者是 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 – 使用者的公事包位址。地址不能為 0 。
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 – 使用者的公事包位址。地址不能為 0 。
傳回值:
  • 如果指定的使用者是 Org Auditor,則方法會傳回 true,否則會傳回 false

角色管理方法

addRole
此方法會將角色新增至指定的使用者。只有指定的組織之 Token AdminOrg Admin 才能呼叫此方法。
參數:
  • userAddress: address – 使用者的公事包位址。地址不能為 0 。
  • role: string – 要新增至指定使用者的角色名稱。例如,minterburnernotary
removeRole
此方法會從指定的使用者移除角色。只有指定的組織之 Token AdminOrg Admin 才能呼叫此方法。
參數:
  • userAddress: address – 使用者的公事包位址。地址不能為 0 。
  • role: string – 要從指定使用者移除的角色名稱。例如,minterburnernotary
accountHasRole
此方法會檢查使用者是否具有指定的角色。任何使用者都可以呼叫這個方法。
參數:
  • role: string – 要搜尋之角色 (minterburnernotary) 名稱的 Keccak-256 雜湊。
  • userAddress: address – 使用者的公事包位址。地址不能為 0 。
傳回值:
  • 如果使用者具有指定的角色,此方法會傳回 true,否則會傳回 false

ERC-20 權杖合約方式

權杖組態管理方法

__ERC20Token_init
建置記號合約時,會呼叫此方法。只有 Token Admin 才能呼叫此方法。
參數:
  • name: string – 權杖的名稱。
  • symbol: string – 記號的符號。
  • accountContract: address – 帳戶合約的地址。
initializeERC20Token
這個方法會初始化 ERC-20 token。只有 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。只有 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 – 使用者的公事包位址。地址不能為 0 。
傳回
  • 記號餘額的 uint256 值。
權杖行為管理 - 可變行為
mint
此方法會建立 (mints) 記號。任何具備 minter 角色的使用者都可以呼叫這個方法。
參數:
  • to: address – 使用者的公事包位址。地址不能為 0 。
  • value: uint256 – 要提示的記號數量。
batchMint
此方法一次會為多個使用者建立 (mints) 記號。任何具備 minter 角色的使用者都可以呼叫這個方法。
參數:
  • toList: address[] – 使用者的公事包位址清單。地址不能為零。
  • amounts: uint256[] – 要提示的記號數量清單。
requestMint
礦工可以呼叫此方法,以傳送要求給公證人以建立指定數量的權杖。
參數:
  • notary: address – 公證人的公事包位址。地址不能為 0 。
  • amount: uint256 – 要提示的記號數量。
  • expiration: uint256 – Epoch 格式的要求到期時間。
  • opId: string – 要求的作業 ID。
  • info: InfoDetails – 指定要求之類別 (category) 和描述 (description) 的物件。
approveMint
公證人可以呼叫此方法來核准 Minting 要求。
參數:
  • opId: string – 要求的作業 ID。
rejectMint
公證人可以呼叫此方法來拒絕 Minting 要求。
參數:
  • opId: string – 要求的作業 ID。

權杖行為管理 - 可燒錄行為

burn
此方法會停用 (燒錄) 記號。具有燒錄機角色的任何使用者都可以呼叫此方法。
參數:
  • account: address – 使用者的公事包位址。地址不能為 0 。
  • value: uint256 – 要燒錄的記號數量。
batchBurn
此方法一次會燒錄一個以上的使用者記號。具有燒錄機角色的任何使用者都可以呼叫此方法。
參數:
  • toList: address[] – 使用者的公事包位址清單。地址不能為零。
  • amounts: uint256[] – 要燒錄的記號數量清單。
requestBurn
燒錄機可以呼叫此方法,以傳送要求給公證人以燒錄指定數量的記號。
參數:
  • notary: address – 公證人的公事包位址。地址不能為 0 。
  • amount: uint256 – 要燒錄的記號數量。
  • expiration: uint256 – Epoch 格式的要求到期時間。
  • opId: string – 要求的作業 ID。
  • info: InfoDetails – 指定要求之類別 (category) 和描述 (description) 的物件。
approveBurn
公證人可以呼叫此方法來核准燒錄要求。
參數:
  • opId: string – 要求的作業 ID。
rejectBurn
公證人可呼叫此方法以拒絕燒錄要求。
參數:
  • opId: string – 要求的作業 ID。

權杖行為管理 - 可傳輸行為

transfer
這個方法會將記號傳輸給指定的使用者。任何有記號的使用者都可以呼叫此方法。
參數:
  • to: address – 接收者的公事包位址。地址不能為 0 。
  • value: uint256 – 要移轉的權杖數量。
batchTransfer
此方法會將記號傳輸至指定的使用者清單。任何有記號的使用者都可以呼叫此方法。
參數:
  • toList: address[] – 接收者的公事包位址清單。地址不能為零。
  • amounts: uint256[] – 要傳輸之記號的數量清單。

權杖行為管理 - 可委派行為

allowance
此方法會將記號支出委派給指定的使用者。任何有記號的使用者都可以呼叫此方法。
參數:
  • owner: address – 委派權杖支出的擁有者公事包位址。地址不能為 0 。
  • spender: address – 記號轉譯的公事包位址。地址不能為 0 。
傳回
  • 委派進行支出的 uint256 記號數量。
approve
此方法會核准指定委派之轉譯的記號數量。任何有記號的使用者都可以呼叫此方法。
參數:
  • spender: address – 記號轉譯的公事包位址。地址不能為 0 。
  • value: uint256 – 允許支出使用的權杖數量。
transferFrom
委派的支出者使用此方法來轉移權杖。
參數:
  • from: address – 寄件者的公事包位址。地址不能為 0 。
  • to: address – 接收者的公事包位址。地址不能為 0 。
  • value: uint256 – 要移轉的權杖數量。

權杖行為管理 - 暫停的行為

isPaused
此方法會檢查合約是否已暫停。只有 Token AdminToken AuditorOrg AdminOrg Auditor 才能呼叫此方法。
參數:
pause
此方法會暫停合約。只有 Token Admin 才能呼叫此方法。
參數:
unpause
此方法會恢復合約。只有 Token Admin 才能呼叫此方法。
參數:

權杖行為管理 - 可保留行為

hold
此方法會代表記號擁有者建立保留。任何有記號的使用者都可以呼叫此方法。
參數:
  • to: address – 接收者的公事包位址。地址不能為 0 。
  • notary: address – 公證人的公事包位址。地址不能為 0 。
  • amount: uint256 – 要移轉的權杖數量。
  • expiration: uint256 – Epoch 格式的要求到期時間。
  • 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 – 帳戶的公事包位址。地址不能為 0 。
傳回
  • 保留餘額的 uint256 金額。

ERC-1155 帳戶合約方式

帳戶管理方法

createAccount
此方法會為指定的使用者建立帳戶。帳戶會追蹤使用者的權杖餘額,而且必須針對任何時間點都必須有權杖的所有使用者建立。只有 Token Admin 才能呼叫此方法。
參數:
  • userId: string – 使用者的使用者名稱或電子郵件 ID。使用者 ID 字串不得空白。
  • orgId: string – 目前組織中使用者的會員服務提供者 (MSP) ID。組織 ID 不得空白。
  • userAddress: address – 使用者的公事包位址。地址不能為 0 。
deleteAccount
此方法會刪除指定使用者的帳戶。只有在權杖餘額為零時,才能刪除帳戶。只有 Token Admin 才能呼叫此方法。
參數:
  • userAddress: address – 使用者的公事包位址。地址不能為 0 。
getAccountStatus
此方法會取得指定帳戶的目前狀態。只有 Token Admin 或指定的使用者才能呼叫此方法。
參數:
  • userAddress: address – 使用者的公事包位址。地址不能為 0 。
傳回值:
  • enum AccountStatus 物件、012 的值。
    enum AccountStatus {
    active,
    suspended,
    deleted
    }
getAccountByAddress
此方法會取得指定使用者的帳戶資訊。只有 Token Admin 或指定的使用者才能呼叫此方法。
參數:
  • userAddress: address – 使用者的公事包位址。地址不能為 0 。
傳回值範例:
{
    "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 – 使用者的公事包位址。地址不能為 0 。
suspendAccount
此方法會暫停使用者帳戶。若要刪除科目,科目餘額必須為零。只有 Token Admin 才能呼叫此方法。
參數:
  • userAddress: address – 使用者的公事包位址。地址不能為 0 。

管理員管理方法

addTokenAdmin
此方法會將使用者新增為 Token Admin。只有 Token Admin 才能呼叫此方法。
參數:
  • adminDetails: JSON – 包含要新增為 Token Admin 之使用者詳細資訊的物件,如下列範例所示。
    {
        "userId": "tokenAdmin1",
        "orgId": "orgA",
    	"accountAddress": "0x0fbdc686b912d7722dc86510934589e0aaf3b55a"    
    }
removeTokenAdmin
此方法會移除使用者作為 Token Admin。只有 Token Admin 才能呼叫此方法。
參數:
  • userAddress: address – 使用者的公事包位址。地址不能為 0 。
getAllTokenAdmins
此方法會傳回所有 Token Admin 使用者的清單。只有 Token Admin 才能呼叫此方法。
參數:
傳回值範例:
[{
    "userId": "tokenadmin1",
    "orgId": "orgA",
	"accountAddress": "0x0fbdc686b912d7722dc86510934589e0aaf3b55a"
},
{
    "userId": "tokenadmin2",
    "orgId": "orgB",
	"accountAddress": "0xfe3b557e8fb62b89f4916b721be55ceb828dbd73"
}]
isTokenAdmin
此方法會檢查指定的使用者是否為 Token Admin。只有 Token Admin 才能呼叫此方法。
參數:
  • userAddress: address – 使用者的公事包位址。地址不能為 0 。
傳回值:
  • 如果指定的使用者是 Token Admin,則方法會傳回 true,否則會傳回 false

角色管理方法

addRole
此方法會將角色新增至指定的使用者。只有 Token Admin 才能呼叫此方法。
參數:
  • userAddress: address – 使用者的公事包位址。地址不能為 0 。
  • role: string – 要新增至指定使用者的角色名稱。例如,minterburnernotary
  • scopeId: uint256 – 不可執行的記號 (NFT) 類別 ID 或有趣的記號 ID。
removeRole
此方法會從指定的使用者移除角色。只有指定的組織之 Token AdminOrg Admin 才能呼叫此方法。
參數:
  • userAddress: address – 使用者的公事包位址。地址不能為 0 。
  • role: string – 要從指定使用者移除的角色名稱。例如,minterburnernotary
  • scopeId: uint256 – 不可執行的記號 (NFT) 類別 ID 或有趣的記號 ID。
accountHasRole
此方法會檢查使用者是否具有指定的角色。任何使用者都可以呼叫這個方法。
參數:
  • role: string – 要搜尋之角色 (minterburnernotary) 名稱的 Keccak-256 雜湊。
  • userAddress: address – 使用者的公事包位址。地址不能為 0 。
  • scopeId: uint256 – 不可執行的記號 (NFT) 類別 ID 或有趣的記號 ID。
傳回值:
  • 如果使用者具有指定的角色,此方法會傳回 true,否則會傳回 false
addTokenSysRole
此方法會將 TOKEN_SYS_VAULT_ROLE 角色新增至指定的使用者。只有 Token Admin 才能呼叫此方法。
參數:
  • userAddress: address – 使用者的公事包位址。地址不能為 0 。
  • role: string – 唯一支援的角色是 TOKEN_SYS_VAULT_ROLE
傳回值:
  • 如果角色已順利新增,方法會傳回 true,否則會傳回 false
removeTokenSysRole
此方法會從指定的使用者移除 TOKEN_SYS_VAULT_ROLE 角色。只有 Token Admin 才能呼叫此方法。
參數:
  • userAddress: address – 使用者的公事包位址。地址不能為 0 。
  • role: string – 唯一支援的角色是 TOKEN_SYS_VAULT_ROLE
傳回值:
  • 如果角色已順利移除,則方法會傳回 true,否則會傳回 false
transferTokenSysRole
此方法會將 TOKEN_SYS_VAULT_ROLE 角色從某個使用者傳輸到另一個使用者。只有 Token Admin 才能呼叫此方法。
參數:
  • fromAddress: address – 寄件者的公事包位址。地址不能為 0 。
  • toAddress: address – 接收者的公事包位址。地址不能為 0 。
  • 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 – 使用者的公事包位址。地址不能為 0 。
  • id: uint256 – 記號 ID。
傳回
  • 記號餘額的 uint256 值。
balanceOfBatch
此方法會取得使用者清單的變數替代字餘額。只有 Token Admin 或記號擁有者才能呼叫此方法。
參數:
  • account: address[] – 使用者的公事包位址清單。
  • id: uint256[] – 記號 ID 清單。
傳回
  • 記號餘額的 uint256[] 清單。
exists
此方法會檢查指定的記號是否存在。只有 Token Admin 才能呼叫此方法。
參數:
  • id: uint256 – 記號 ID。
傳回值:
  • 如果指定的記號存在,方法會傳回 true,否則會傳回 false
totalSupply
此方法檢查會取得合約中所有記號的供給總計。只有 Token Admin 才能呼叫此方法。
參數:
傳回值:
  • 權杖供應總計的 uint256[] 值。
totalSupply
此方法檢查會取得合約中指定記號的供給總計。只有 Token Admin 才能呼叫此方法。
參數:
  • id: uint256 – 記號 ID。
傳回值:
  • 指定記號之總供應量的 uint256[] 值。
權杖行為管理 - 可變行為
mintBatch
此方法會在批次模式中建立 (mints) ERC-1155 記號。記號必須初始化。任何具備 minter 角色的使用者都可以呼叫這個方法。
參數:
  • tokenIds: uint256[] – 要提示的記號清單。
  • quantity: uint256[] – 要提示的記號數量清單。
  • data: byte – 額外的資料位元組。

權杖行為管理 - 可燒錄行為

burnBatch
此方法會銷毀批次模式中的 ERC-1155 記號。記號必須初始化。具有燒錄機角色的任何使用者都可以呼叫此方法。
參數:
  • tokenIds: uint256[] – 要燒錄的記號清單。
  • quantity: uint256[] – 要燒錄的記號數量清單。
  • data: byte – 額外的資料位元組。
burnNFT
這個方法會銷毀一個不可見的記號 (burns)。記號必須初始化。具有燒錄機角色的任何使用者都可以呼叫此方法。
參數:
  • tokenId: uint256 – 要燒錄的記號 ID。

權杖行為管理 - 可傳輸行為

safeTransferFrom
此方法會將記號從寄件者傳輸給接收者。擁有記號的任何使用者都可以呼叫此方法。
參數:
  • from: address – 寄件者的公事包位址。地址不能為 0 。
  • to: address – 接收者的公事包位址。地址不能為 0 。
  • id: uint256 – 要傳輸之 ERC-1155 權杖的 ID。
  • value: uint256 – 要轉移的記號數量。
  • data: byte – 額外的資料位元組。
safeBatchTransferFrom
此方法會將記號從寄件者傳輸給接收者。擁有記號的任何使用者都可以呼叫此方法。
參數:
  • from: address – 寄件者的公事包位址。地址不能為 0 。
  • to: address – 接收者的公事包位址。地址不能為 0 。
  • id: uint256 – 要傳輸之 ERC-1155 權杖的 ID。
  • value: uint256 – 要轉移的記號數量。
  • data: byte – 額外的資料位元組。

權杖行為管理 - 可委派行為

setApprovalForAll
此方法會授予或撤銷權限,讓運算子根據 approved 參數傳輸呼叫者的記號。擁有記號的任何使用者都可以呼叫此方法。
參數:
  • operator: address – 被授與或撤銷權限之運算子的公事包位址。地址不能為 0 。
  • approved: bool – 布林值旗標,指出操作員是否具有轉接呼叫者記號的權限。
isApprovedForAll
此方法會檢查是否已核准操作員移轉指定帳戶的權杖。擁有記號的任何使用者都可以呼叫此方法。
參數:
  • account: address – 授予或撤銷權限給操作員以進行權杖傳輸之使用者的公事包位址。地址不能為 0 。
  • operator: address – 被授予或撤銷權限之運算子的公事包位址。地址不能為 0 。
傳回值:
  • 表示操作員是否已核准移轉指定帳戶之權杖的布林值。

權杖行為管理 - 暫停的行為

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。
傳回值:
  • 指示記號是否被鎖定的布林值。