權杖分類架構的鷹架式 Go 專案
Blockchain App Builder 會從您的權杖規格檔案進行輸入,並產生功能完整的鷹架式鏈碼專案。
專案會自動產生權杖生命週期類別和函數,包括 CRUD 和非 CRUD 方法。系統會自動支援引數驗證、封送處理 (Marshall) / 取消封送處理 (unmarshal) 以及通透保存功能。
如需結構化專案與與變數替代字無關的方法相關資訊,請參閱 Scaffolded Go Chaincode Project 。
Model
「通透持續性功能 (Transparent Persistence Capability)」或簡化的 ORM 會擷取到 OchainModel
類別中。
package src
type Digicur struct {
AssetType string `json:"AssetType" final:"otoken"`
Token_id string `json:"Token_id" id:"true" mandatory:"true" validate:"regexp=^[A-Za-z0-9][A-Za-z0-9_-]*$,max=16"`
Token_name string `json:"Token_name" final:"digicur"`
Token_desc string `json:"Token_desc" validate:"max=256"`
Token_type string `json:"Token_type" final:"fungible" validate:"regexp=^fungible$"`
Behavior []string `json:"Behavior" final:"[\"divisible\",\"mintable\",\"transferable\",\"burnable\",\"holdable\",\"roles\"]"`
Roles map[string]interface{} `json:"Roles" final:"{\"minter_role_name\":\"minter\",\"burner_role_name\":\"burner\",\"notary_role_name\":\"notary\"}"`
Mintable map[string]interface{} `json:"Mintable" final:"{\"Max_mint_quantity\":20000}"`
Divisible map[string]interface{} `json:"Divisible" final:"{\"Decimal\":1}"`
Token_to_currency_ratio int `json:"Token_to_currency_ratio" validate:"int"`
Currency_representation string `json:"Currency_representation" validate:"string"`
Metadata interface{} `json:"Metadata,omitempty"`
}
控制器
只有一個主要控制器。
type Controller struct {
Ctx trxcontext.TrxContext
}
您可以建立不限數目的類別、函數或檔案,但只能呼叫在 main Controller 類別中定義的方法。其他方法則會隱藏。
您可以使用記號 SDK 方法,為您的商業應用程式撰寫自訂方法。
如果您在自訂方法中使用多個記號 SDK 方法,請不要使用會影響狀態資料庫中相同索引鍵 - 值組的方法。
請改用 BulkTransferTokens
方法,從呼叫者的帳戶轉移到多個帳戶,如以下程式碼片段所示。
BulkTransferTokens(token_id string, flow: []map[string]interface{})
附註:
如果您在可能影響狀態資料庫中相同索引鍵 - 值組的自訂方法中使用多個記號 SDK 方法,請對記號鏈碼啟用 MVCC 最佳化。如需詳細資訊,請參閱 MVCC Optimization 。自動產生的權杖方法
Blockchain App Builder 會自動產生支援權杖和權杖生命週期的方法。您可以使用這些方法來初始化記號、管理角色和帳戶,以及完成其他記號生命週期工作,而無需進行任何其他編碼。控制器方法必須為 public,才能呼叫。公用方法名稱的開頭是大寫字元。以小寫字元開頭的方法名稱是私密的。
存取控制管理方法
-
AddTokenAdmin
- 此方法會將使用者新增為鏈碼的
Token Admin
。只有鏈碼的Token Admin
才能呼叫此方法。 -
RemoveTokenAdmin
- 此方法會移除使用者作為鏈碼的
Token Admin
。只有鏈碼的Token Admin
才能呼叫此方法。 -
IsTokenAdmin
- 如果函數的呼叫程式是
Token Admin
,則此方法會傳回布林值true
,否則會傳回false
。Token Admin
或Org Admin
可以對區塊鏈網路中的任何其他使用者呼叫此功能。其他使用者只能在自己的帳戶上呼叫此方法。 -
GetAllTokenAdmins
- 此方法會傳回鏈碼為
Token Admin
的所有使用者清單。只有鏈碼的Token Admin
或Org Admin
才能呼叫此方法。 -
AddOrgAdmin
- 此方法會將使用者新增為組織的
Org Admin
。只有鏈碼的Token Admin
或指定的組織Org Admin
才能呼叫此方法。 -
RemoveOrgAdmin
- 此方法會移除使用者作為組織的
Org Admin
。只有鏈碼的Token Admin
或指定的組織Org Admin
才能呼叫此方法。 -
GetOrgAdmins
- 此方法會傳回屬於組織
Org Admin
的所有使用者清單。只有鏈碼的Token Admin
或任何Org Admin
才能呼叫此方法。
-
AddTokenAdmin
- 此方法會將使用者新增為鏈碼的
Token Admin
。只有鏈碼的Token Admin
才能呼叫此方法。 -
RemoveTokenAdmin
- 此方法會移除使用者作為鏈碼的
Token Admin
。只有鏈碼的Token Admin
才能呼叫此方法。 -
IsTokenAdmin
- 如果函數的呼叫程式是
Token Admin
,則此方法會傳回布林值true
,否則會傳回false
。此函數只能由Token Admin
、Token Auditor
、Org Admin
或Org Auditor
呼叫。 -
GetAllTokenAdmins
- 此方法會傳回鏈碼為
Token Admin
的所有使用者清單。只有Token Admin
或Token Auditor
才能呼叫此方法。 -
AddOrgAdmin
- 此方法會將使用者新增為組織的
Org Admin
。只有鏈碼的Token Admin
或指定的組織Org Admin
才能呼叫此方法。 -
RemoveOrgAdmin
- 此方法會移除使用者作為組織的
Org Admin
。只有鏈碼的Token Admin
或指定的組織Org Admin
才能呼叫此方法。 -
GetOrgAdmins
- 此方法會傳回屬於組織
Org Admin
的所有使用者清單。只有Token Admin
、Token Auditor
、Org Admin
或Org Auditor
才能呼叫此方法。 -
AddTokenAuditor
- 此方法會將使用者新增為鏈碼的
Token Auditor
。只有鏈碼的Token Admin
才能呼叫此方法。 -
RemoveTokenAuditor
- 此方法會移除使用者作為鏈碼的
Token Auditor
。只有鏈碼的Token Admin
才能呼叫此方法。 -
GetTokenAuditors
- 此方法會傳回鏈碼的所有
Token Auditors
。只有鏈碼的Token Admin
或Token Auditor
才能呼叫此方法。 -
AddOrgAuditor
- 此方法會將使用者新增為鏈碼的
Org Auditor
。只有鏈碼的Token Admin
或Org Admin
才能呼叫此方法。 -
RemoveOrgAuditor
- 此方法會移除使用者作為鏈碼的
Org Auditor
。只有鏈碼的Token Admin
或Org Admin
才能呼叫此方法。 -
GetOrgAuditors
- 此方法會傳回鏈碼的所有
Org Auditors
。只有Token Admin
、Token Auditor
、Org Admin
或Org Auditor
才能呼叫此方法。
權杖組態管理方法
-
Init
- 部署鏈碼時會呼叫此方法。每個
Token Admin
都是由必要adminList
參數中的user_id
和org_id
資訊所識別。user_id
是執行處理擁有者或登入執行處理之使用者的使用者名稱或電子郵件 ID。org_id
是目前網路組織中使用者的成員服務提供者 (MSP) ID。 -
Initialize<Token Name>Token
- 此方法會建立記號並初始化記號特性。資產及其特性會儲存在狀態資料庫中。只有鏈碼的
Token Admin
才能呼叫此方法。 -
Update<Token Name>Token
- 此方法會更新記號特性。記號資產建立後,只能更新
token_desc
特性和自訂特性。只有鏈碼的Token Admin
才能呼叫此方法。 -
GetTokenDecimals
- 此方法會傳回針對分數記號設定的小數位數。如果未指定記號的
divisible
行為,則預設值為 0。只有鏈碼的Token Admin
或Org Admin
才能呼叫此方法。 -
GetTokenById
- 如果某個記號物件存在於狀態資料庫中,這個方法會傳回該物件。只有鏈碼的
Token Admin
或Org Admin
才能呼叫此方法。 -
GetTokenHistory
- 此方法會傳回所指定記號 ID 的記號歷史記錄。所有使用者都可以呼叫此方法。
-
GetAllTokens
- 這個方法會傳回狀態資料庫中儲存的所有記號。只有鏈碼的
Token Admin
或Org Admin
才能呼叫此方法。 -
GetTokensByName
- 此方法會傳回具有指定名稱的所有記號物件。只有鏈碼的
Token Admin
或Org Admin
才能呼叫此方法。此方法使用 Berkeley DB SQL RTF 查詢,而且只能在連線至遠端 Oracle Blockchain Platform 網路時呼叫。
-
Init
- 部署鏈碼時會呼叫此方法。每個
Token Admin
都是由必要adminList
參數中的user_id
和org_id
資訊所識別。user_id
是執行處理擁有者或登入執行處理之使用者的使用者名稱或電子郵件 ID。org_id
是目前網路組織中使用者的成員服務提供者 (MSP) ID。 -
Initialize<Token Name>Token
- 此方法會建立記號並初始化記號特性。資產及其特性會儲存在狀態資料庫中。只有鏈碼的
Token Admin
才能呼叫此方法。 -
Update<Token Name>Token
- 此方法會更新記號特性。記號資產建立後,只能更新
token_desc
特性和自訂特性。只有鏈碼的Token Admin
才能呼叫此方法。 -
GetTokenDecimals
- 此方法會傳回針對分數記號設定的小數位數。如果未指定記號的
divisible
行為,則預設值為 0。只有Token Admin
、Token Auditor
、Org Admin
或Org Auditor
才能呼叫此方法。 -
GetTokenById
- 如果某個記號物件存在於狀態資料庫中,這個方法會傳回該物件。只有
Token Admin
、Token Auditor
、Org Admin
或Org Auditor
才能呼叫此方法。 -
GetTokenHistory
- 此方法會傳回所指定記號 ID 的記號歷史記錄。只有
Token Admin
、Token Auditor
、Org Admin
或Org Auditor
才能呼叫此方法。 -
GetAllTokens
- 這個方法會傳回狀態資料庫中儲存的所有記號。只有
Token Admin
、Token Auditor
、Org Admin
或Org Auditor
才能呼叫此方法。 -
GetTokensByName
- 此方法會傳回具有指定名稱的所有記號物件。只有
Token Admin
、Token Auditor
、Org Admin
或Org Auditor
才能呼叫此方法。此方法使用 Berkeley DB SQL RTF 查詢,而且只能在連線至遠端 Oracle Blockchain Platform 網路時呼叫。
帳戶管理方法
-
CreateAccount
- 這個方法會為指定的使用者與記號建立帳號。必須為任何需要記號的使用者建立帳戶。帳戶會追蹤餘額、保留餘額及交易歷史記錄。帳戶 ID 是一組英數字元,前面加上
oaccount~<token asset name>~
,後面接著執行處理擁有者的使用者名稱或電子郵件 ID (user_id
) 雜湊,或登入執行處理的使用者 (目前網路組織中使用者的成員服務提供者 ID (org_id
)。只有鏈碼的Token Admin
或指定組織的Org Admin
才能呼叫此方法。 -
AssociateTokenToAccount
- 此方法會將有趣的記號與帳戶建立關聯。只有鏈碼的
Token Admin
或相關組織的Org Admin
才能呼叫此方法。 -
GetAccount
- 此方法會傳回指定使用者和記號的帳戶詳細資訊。只有鏈碼的
Token Admin
、指定組織的Org Admin
或帳戶的AccountOwner
才能呼叫此方法。 -
GetAccountHistory
- 此方法會傳回指定使用者和權杖的帳戶歷史記錄詳細資訊。只有鏈碼的
Token Admin
或帳戶的AccountOwner
才能呼叫此方法。 -
GetAccountOnHoldBalance
- 此方法會傳回指定帳戶與變數替代字的目前保留餘額。只有鏈碼的
Token Admin
、指定組織的Org Admin
或帳戶的AccountOwner
才能呼叫此方法。 -
GetAllAccounts
- 這個方法會傳回所有帳號的清單。只有鏈碼的
Token Admin
才能呼叫此方法。此方法使用 Berkeley DB SQL RTF 查詢,而且只能在連線至遠端 Oracle Blockchain Platform 網路時呼叫。 -
GetUserByAccountId
- 此方法會傳回指定帳戶的使用者詳細資訊 (
org_id
和user_id
)。鏈碼的任何使用者都可以呼叫這個方法。 -
GetAccountBalance
- 此方法會傳回指定帳戶與變數替代字的目前餘額。只有鏈碼的
Token Admin
、指定組織的Org Admin
或帳戶的AccountOwner
才能呼叫此方法。 -
GetAllOrgAccounts
- 此方法會傳回屬於指定組織的所有記號帳戶清單。只有鏈碼的
Token Admin
或指定的組織Org Admin
才能呼叫此方法。
-
CreateAccount
- 這個方法會為指定的使用者與記號建立帳號。必須為任何需要記號的使用者建立帳戶。帳戶會追蹤餘額、保留餘額及交易歷史記錄。帳戶 ID 是一組英數字元,前面加上
oaccount~<token asset name>~
,後面接著執行處理擁有者的使用者名稱或電子郵件 ID (user_id
) 雜湊,或登入執行處理的使用者 (目前網路組織中使用者的成員服務提供者 ID (org_id
)。只有鏈碼的Token Admin
或指定組織的Org Admin
才能呼叫此方法。 -
AssociateTokenToAccount
- 此方法會將有趣的記號與帳戶建立關聯。只有鏈碼的
Token Admin
或相關組織的Org Admin
才能呼叫此方法。 -
GetAccount
- 此方法會傳回指定使用者和記號的帳戶詳細資訊。只有
Token Admin
或Token Auditor
、指定組織的Org Admin
或Org Auditor
或帳戶的AccountOwner
才能呼叫此方法。 -
GetAccountHistory
- 此方法會傳回指定使用者和權杖的帳戶歷史記錄詳細資訊。只有鏈碼的
Token Admin
或帳戶的AccountOwner
才能呼叫此方法。 -
GetAccountOnHoldBalance
- 此方法會傳回指定帳戶與變數替代字的目前保留餘額。此方法只能由指定組織的
Token Admin
或Token Auditor
、Org Admin
或Org Auditor
或指定的帳戶擁有者呼叫。 -
GetAllAccounts
- 這個方法會傳回所有帳號的清單。只有鏈碼的
Token Admin
或Token Auditor
才能呼叫此方法。此方法使用 Berkeley DB SQL RTF 查詢,而且只能在連線至遠端 Oracle Blockchain Platform 網路時呼叫。 -
GetUserByAccountId
- 此方法會傳回指定帳戶的使用者詳細資訊 (
org_id
和user_id
)。此方法只能由Token Admin
或Token Auditor
呼叫,或由指定組織的Org Admin
或Org Auditor
呼叫。 -
GetAccountBalance
- 此方法會傳回指定帳戶與變數替代字的目前餘額。此方法只能由指定組織的
Token Admin
或Token Auditor
、Org Admin
或Org Auditor
或指定的帳戶擁有者呼叫。 -
GetAllOrgAccounts
- 此方法會傳回屬於指定組織的所有記號帳戶清單。此方法只能由
Token Admin
或Token Auditor
呼叫,或由指定組織的Org Admin
或Org Auditor
呼叫。
角色管理方法
-
AddRole
- 此方法會新增角色至指定的使用者和記號。只有鏈碼的
Token Admin
或具有指定角色之指定組織的Org Admin
才能呼叫此方法。 -
RemoveRole
- 這個方法會從指定的使用者和記號中移除角色。只有鏈碼的
Token Admin
或同時具有指定角色之指定組織的Org Admin
才能呼叫此方法。 -
GetAccountsByRole
- 此方法會傳回指定角色和記號的所有帳戶 ID 清單。只有鏈碼的
Token Admin
才能呼叫此方法。 -
GetAccountsByUser
- 此方法會傳回指定組織 ID 與使用者 ID 之所有帳戶 ID 的清單。只有鏈碼的
Token Admin
、指定組織的Org Admin
或參數中指定的Account Owner
才能呼叫此方法。 -
GetUsersByRole
- 此方法會傳回指定角色和記號之所有使用者的清單。只有鏈碼的
Token Admin
或參數中指定的Account Owner
才能呼叫此方法。 -
IsInRole
- 此方法會傳回布林值,指示使用者和記號是否具有指定的角色。只有鏈碼的
Token Admin
、指定組織的Org Admin
或帳戶的AccountOwner
才能呼叫此方法。 -
GetOrgAccountsByRole
- 此方法會傳回指定組織中具有指定角色之所有帳戶的相關資訊。只有鏈碼的
Token Admin
或指定的組織Org Admin
才能呼叫此方法。 -
GetOrgUsersByRole
- 此方法會傳回指定組織中具有指定角色之所有使用者的相關資訊。只有鏈碼的
Token Admin
或指定的組織Org Admin
才能呼叫此方法。
-
AddRole
- 此方法會新增角色至指定的使用者和記號。只有鏈碼的
Token Admin
或具有指定角色之指定組織的Org Admin
才能呼叫此方法。 -
RemoveRole
- 這個方法會從指定的使用者和記號中移除角色。只有鏈碼的
Token Admin
或同時具有指定角色之指定組織的Org Admin
才能呼叫此方法。 -
GetAccountsByRole
- 此方法會傳回指定角色和記號的所有帳戶 ID 清單。只有
Token Admin
或Token Auditor
才能呼叫此方法。 -
GetAccountsByUser
- 此方法會傳回指定組織 ID 與使用者 ID 之所有帳戶 ID 的清單。只有
Token Admin
或Token Auditor
、指定組織的Org Admin
或Org Auditor
,或參數中指定的Account Owner
才能呼叫此方法。 -
GetUsersByRole
- 此方法會傳回指定角色和記號之所有使用者的清單。只有
Token Admin
或Token Auditor
才能呼叫此方法。 -
IsInRole
- 此方法會傳回布林值,指示使用者和記號是否具有指定的角色。只有
Token Admin
或Token Auditor
、指定組織的Org Admin
或Org Auditor
或指定的帳戶擁有者才能呼叫此方法。 -
GetOrgAccountsByRole
- 此方法會傳回指定組織中具有指定角色之所有帳戶的相關資訊。只有
Token Admin
、Token Auditor
、Org Admin
或Org Auditor
才能呼叫此方法。 -
GetOrgUsersByRole
- 此方法會傳回指定組織中具有指定角色之所有使用者的相關資訊。此方法只能由
Token Admin
或Token Auditor
呼叫,或由指定組織的Org Admin
或Org Auditor
呼叫。
交易歷史記錄管理的方式
-
GetAccountTransactionHistory
- 此方法會傳回指定使用者與變數替代字的帳戶交易歷史記錄明細陣列。只有鏈碼的
Token Admin
、指定組織的Org Admin
或帳戶的AccountOwner
才能呼叫此方法。 -
GetAccountTransactionHistoryWithFilters
- 此方法會傳回指定使用者與變數替代字的帳戶交易歷史記錄明細陣列。只有鏈碼的
Token Admin
、指定組織的Org Admin
或帳戶的AccountOwner
才能呼叫此方法。只有在連線至遠端 Oracle Blockchain Platform 網路時才能呼叫此方法。 -
GetSubTransactionsById
- 此方法會傳回指定異動的子異動歷史記錄明細陣列。
-
GetSubTransactionsByIdWithFilters
- 此方法會傳回指定異動的子異動歷史記錄明細陣列。
-
GetTransactionById
- 此方法會傳回
Transaction
資產的歷史記錄。 -
DeleteHistoricalTransactions
- 此方法會從狀態資料庫刪除較舊的交易。
-
GetAccountTransactionHistoryWithFiltersFromRichHistDB
func (t *Controller) GetAccountTransactionHistoryWithFiltersFromRichHistDB(token_id string, org_id string, user_id string, custom_endPoint string, bearer_token string, filters ...account.AccountHistoryFilters) (interface{}, error) { account_id, err := t.Ctx.Account.GenerateAccountId(token_id, org_id, user_id) if err != nil { return nil, err } auth, err := t.Ctx.Auth.CheckAuthorization("Account.GetAccountTransactionHistoryWithFilters", "TOKEN", map[string]string{"account_id": account_id}) if err != nil && !auth { return nil, fmt.Errorf("error in authorizing the caller %s", err.Error()) } // sample format of filter: []string{"3", "", "2022-01-16T15:16:36+00:00", "2022-01-17T15:16:36+00:00"} transactionArray, err := t.Ctx.Account.GetAccountTransactionHistoryWithFiltersFromRichHistDB(account_id, org_id, user_id, custom_endPoint, bearer_token, filters...) return transactionArray, err }
-
GetAccountTransactionHistory
- 此方法會傳回指定使用者與變數替代字的帳戶交易歷史記錄明細陣列。此方法只能由指定組織的
Token Admin
或Token Auditor
、Org Admin
或Org Auditor
,或由指定的帳戶擁有者呼叫。 -
GetAccountTransactionHistoryWithFilters
- 此方法會傳回指定使用者與變數替代字之科目交易歷史記錄明細的篩選陣列。此方法只能由指定組織的
Token Admin
或Token Auditor
、Org Admin
或Org Auditor
,或由指定的帳戶擁有者呼叫。 -
GetSubTransactionsById
- 此方法會傳回指定異動的子異動歷史記錄明細陣列。只有呼叫交易的
Token Admin
、Token Auditor
或AccountOwner
才能呼叫此方法。 -
GetSubTransactionsByIdWithFilters
- 此方法會傳回指定異動的子異動歷史記錄明細陣列。
-
GetTransactionById
- 此方法會傳回
Transaction
資產的歷史記錄。只有Token Admin
或Token Auditor
、指定組織的Org Admin
或Org Auditor
,或交易參與者 (寄件者、收件者、公證人) 才能呼叫此方法。 -
DeleteHistoricalTransactions
- 此方法會從狀態資料庫刪除較舊的交易。
權杖行為管理方法 - 可變行為
-
IssueTokens
- 這個方法會提示該方法的呼叫程式所擁有的記號。來電者必須具有帳戶與次要角色。可提示的記號數目受規格檔案中
mintable
行為的max_mint_quantity
特性所限制。如果未指定max_mint_quantity
特性,則可以提示不限數目的記號。數量必須在規格檔案中divisible
行為的decimal
參數所指定的小數值內。只有具備 minter 角色之帳戶的AccountOwner
才能呼叫此方法。 -
GetTotalMintedTokens
- 此方法會傳回指定記號的預期記號總數。只有鏈碼的
Token Admin
或Org Admin
才能呼叫此方法。 -
GetNetTokens
- 此方法會傳回系統中指定記號可用的記號總數。網路記號總計是記號燒錄後剩餘的記號數量。在方程式表單中,淨記號 = 總熔著記號 - 總燒錄記號。如果沒有燒錄記號,則網路記號的數目會等於總鑄幣的記號。只有鏈碼的
Token Admin
或Org Admin
才能呼叫此方法。
-
RequestMint
- 礦工可以呼叫此方法,以傳送要求給礦工公證人以建立指定數量的權杖。
-
ApproveMint
- 礦工公證人可呼叫此方法,以核准採礦請求。
-
RejectMint
- 礦物公證人可以呼叫此方法,以拒絕採礦要求。
-
IssueTokens
- 這個方法會提示該方法的呼叫程式所擁有的記號。
-
GetTotalMintedTokens
- 此方法會傳回指定記號的預期記號總數。只有
Token Admin
、Token Auditor
、Org Admin
或Org Auditor
才能呼叫此方法。 -
GetNetTokens
- 此方法會傳回系統中指定記號可用的記號總數。網路記號總計是記號燒錄後剩餘的記號數量。在方程式表單中,淨記號 = 總熔著記號 - 總燒錄記號。如果沒有燒錄記號,則網路記號的數目會等於總鑄幣的記號。只有
Token Admin
、Token Auditor
、Org Admin
或Org Auditor
才能呼叫此方法。
權杖行為管理方法 - 可轉移行為
權杖行為管理方法 - 可保留行為
-
HoldTokens
- 此方法使用
to_account_id
帳戶代表權杖的擁有者建立保留。已指定公證人帳戶,該帳戶負責完成或解除保留。建立保留時,系統會保留付款人的指定變數替代字餘額。保留完成或解除之前,無法移轉保留餘額。此方法的來電者必須已建立帳戶。只有帳戶的AccountOwner
才能呼叫此方法。 -
ExecuteHoldTokens
- 這個方法會完成記號的保留。權杖擁有者先前持有的權杖數量會移轉給接收者。如果
quantity
值小於實際保留值,則剩餘金額會再次提供給權杖的原始擁有者。只有具備notary
角色的AccountOwner
ID 才能呼叫此方法。只有公證人才能完成保留。 -
ReleaseHoldTokens
- 此方法會解除保留記號。轉帳未完成,所有保留的權杖都會再次提供給原始擁有者使用。具有
notary
角色的Account Owner
ID 可在指定的時間限制內呼叫此方法,或由付款人、受款人或公證人在指定的時間限制之後呼叫。 -
GetOnHoldIds
- 此方法會傳回指定帳戶之所有持有 ID 的清單。此方法可由鏈碼的
Token Admin
、指定組織的Org Admin
或帳戶的Account Owner
呼叫。 -
GetOnHoldDetailsWithOperationId
- 此方法會傳回指定作業 ID 與變數替代字的保留異動明細。任何人都可以呼叫這個方法。
-
GetOnHoldBalanceWithOperationId
- 此方法會傳回指定作業 ID 與變數替代字的保留餘額。任何人都可以呼叫這個方法。
-
HoldTokens
- 此方法使用
to_account_id
帳戶代表權杖的擁有者建立保留。 -
ExecuteHoldTokens
- 這個方法會完成記號的保留。權杖擁有者先前持有的權杖數量會移轉給接收者。如果
quantity
值小於實際保留值,則剩餘金額會再次提供給權杖的原始擁有者。只有具備notary
角色的AccountOwner
ID 才能呼叫此方法。只有公證人才能完成保留。 -
ReleaseHoldTokens
- 此方法會解除保留記號。轉帳未完成,所有保留的權杖都會再次提供給原始擁有者使用。具有
notary
角色的Account Owner
ID 可在指定的時間限制內呼叫此方法,或由付款人、受款人或公證人在指定的時間限制之後呼叫。 -
GetOnHoldIds
- 此方法會傳回指定帳戶之所有持有 ID 的清單。此方法可由指定組織的
Token Admin
或Token Auditor
、Org Admin
或Org Auditor
或指定的帳戶擁有者呼叫。 -
GetOnHoldDetailsWithOperationId
- 此方法會傳回指定作業 ID 與變數替代字的保留異動明細。只有
Token Admin
、Token Auditor
或交易參與者 (寄件者、收件者、公證人) 才能呼叫此方法。 -
GetOnHoldBalanceWithOperationId
- 此方法會傳回指定作業 ID 與變數替代字的保留餘額。只有
Token Admin
、Token Auditor
或交易參與者 (寄件者、收件者、公證人) 才能呼叫此方法。
記號行為管理方法 - 可燃行為
-
RequestBurn
- 燃燒器可以呼叫此方法,以傳送要求給燃燒器公證,以銷毀指定數量的記號,此記號必須小於或等於其可用餘額。當燒錄要求開始時,指定的金額會立即從可用餘額中扣除,並新增至
onhold_burn_balance
欄位。如果請求通過核准,則系統會燒錄權杖。如果要求被拒絕,則記號會從onhold_burn_balance
欄位傳回至可用餘額。 -
ApproveBurn
- 燒錄機公證人可以呼叫此方法來核准燒錄要求。
-
RejectBurn
- 燃燒器公證可以呼叫此方法,以拒絕燒錄請求。
-
GetAccountOnHoldBurnBalance
- 此方法會傳回指定使用者的暫停燒錄餘額。只有
Token Admin
、Token Auditor
、Org Admin
、Org Auditor
或帳戶擁有者才能呼叫此方法。 -
BurnTokens
- 此方法會停用或燒錄交易呼叫者帳戶中的記號。
自訂方式
您可以使用記號 SDK 方法,為您的商業應用程式撰寫自訂方法。
使用記號 SDK 方法時,請務必追蹤傳回值。此外,為了避免重複花費,請勿結合在狀態資料庫中相同索引鍵 - 值組上運作的多個非同步函數。請改用 BulkTransferTokens
方法,以一個方法進行多個傳輸。
下列範例顯示如何在自訂方法中使用記號 SDK 方法。呼叫 BuyTicket
方法時,會將 20 個權杖從來電者的帳戶轉移至賣方的帳戶,並傳回轉接的交易訊息。
func (t *Controller) BuyTicket(TokenId string, SellerOrgId string, SellerUserId string) (interface{}, error){
token, err := t.Ctx.Token.Get(TokenId)
if err != nil {
return nil, err
}
/**
* The following method t.Ctx.Account.GenerateAccountId(TokenId, SellerOrgId, SellerUserId) generates account id of the seller
*/
sellerAccountId, err := t.Ctx.Account.GenerateAccountId(TokenId, SellerOrgId, SellerUserId)
if err != nil {
return nil, err
}
/**
* The following method t.Ctx.Token.Transfer(sellerAccountId, 20, token) transfers the quantity 20 from caller's
* account & to seller's account.
*/
transaction, err := t.Ctx.Token.Transfer(sellerAccountId, 20, token)
if err != nil {
return nil, err
}
return transaction, nil
}
權杖 SDK 方法
存取控制管理方法
Token Admin
、Org Admin
或 AccountOwner
呼叫。您可以使用此功能來確保只由預期的使用者執行作業。任何未授權的存取都會導致錯誤。若要使用存取控制功能,請從 ../lib/auth
模組匯入 Authorization
類別。import { Authorization } from '../lib/auth';
-
AddAdmin
- 此方法會將使用者新增為權杖鏈碼的
Token Admin
。 -
RemoveAdmin
- 此方法會移除使用者作為記號鏈碼的
Token Admin
。 -
IsUserTokenAdmin
- 如果函數的呼叫程式是
Token Admin
,此方法會傳回布林值true
。否則,方法會傳回false
。 -
GetAllAdmins
- 此方法會傳回記號鏈碼
Token Admin
的所有使用者清單。 -
GetAllAdminUsers
- 此方法會傳回記號鏈碼
Token Admin
的所有使用者清單。 -
CheckAuthorization
- 使用此方法將存取控制新增至您的鏈碼。許多自動產生的記號方法都使用存取控制。
oChainUtil.go
檔案中描述 SDK 接收器與具有存取控制的方法之間的對應。若要使用自己的存取控制或停用存取控制,請從自動產生的控制器方法和自訂方法中移除存取控制碼。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 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"}
-
AddOrgAdmin
- 此方法會將使用者新增為組織的
Org Admin
。 -
RemoveOrgAdmin
- 此方法會移除使用者作為組織的
Org Admin
。 -
GetOrgAdmins
- 此方法會傳回屬於組織
Org Admin
的所有使用者清單。
-
AddAdmin
- 此方法會將使用者新增為權杖鏈碼的
Token Admin
。 -
RemoveAdmin
- 此方法會移除使用者作為記號鏈碼的
Token Admin
。 -
IsUserTokenAdmin
- 如果函數的呼叫程式是
Token Admin
,此方法會傳回布林值true
。否則,方法會傳回false
。 -
GetAllAdmins
- 此方法會傳回記號鏈碼
Token Admin
的所有使用者清單。 -
GetAllAdminUsers
- 此方法會傳回記號鏈碼
Token Admin
的所有使用者清單。 -
CheckAuthorization
- 使用此方法將存取控制新增至您的鏈碼。許多自動產生的記號方法都使用存取控制。
oChainUtil.go
檔案中描述 SDK 接收器與具有存取控制的方法之間的對應。若要使用自己的存取控制或停用存取控制,請從自動產生的控制器方法和自訂方法中移除存取控制碼。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 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"}
-
AddOrgAdmin
- 此方法會將使用者新增為組織的
Org Admin
。 -
RemoveOrgAdmin
- 此方法會移除使用者作為組織的
Org Admin
。 -
GetOrgAdmins
- 此方法會傳回屬於組織
Org Admin
的所有使用者清單。 -
AddTokenAuditor
- 此方法會將使用者新增為鏈碼的
Token Auditor
。 -
RemoveTokenAuditor
- 此方法會移除使用者作為鏈碼的
Token Auditor
。 -
GetTokenAuditors
- 此方法會傳回鏈碼的所有
Token Auditors
。 -
AddOrgAuditor
- 此方法會將使用者新增為鏈碼的
Org Auditor
。 -
RemoveOrgAuditor
- 此方法會移除使用者作為鏈碼的
Org Auditor
。 -
GetOrgAuditors
- 此方法會傳回鏈碼的所有
Org Auditors
。
權杖組態管理方法
-
Save
- 這個方法會建立一個記號,並將它的特性儲存到狀態資料庫中。
-
Update
- 此方法會更新記號特性。記號資產建立後,您只能更新
token_desc
值及其自訂特性。 -
GetTokenDecimals
- 此方法會傳回小數記號可用的小數位數。如果未指定
divisible
行為,則預設值為 0。 -
Get
- 如果某個記號物件存在於狀態資料庫中,這個方法會傳回該物件。只有記號鏈碼的
Token Admin
才能呼叫此方法。 -
History
- 此方法會傳回所指定記號 ID 的記號歷史記錄。
-
GetAllTokens
- 此方法會傳回狀態資料庫中儲存的所有記號資產。此方法使用 Berkeley DB SQL RTF 查詢,而且只能在連線至遠端 Oracle Blockchain Platform 網路時呼叫。
-
GetTokensByName
- 此方法會傳回具有指定名稱的所有記號資產。此方法使用 Berkeley DB SQL RTF 查詢,而且只能在連線至遠端 Oracle Blockchain Platform 網路時呼叫。
-
IsTokenType
- 此方法會測試指定之記號 ID 的記號資產是否存在。
-
GetByRange
- 此方法會在內部呼叫結構
getStateByRange
方法。即使分類帳傳回任何具有指定 ID 的資產,此方法仍會將資產轉換成呼叫者資產類型。
帳戶管理方法
-
GenerateAccountId
- 此方法會傳回帳戶 ID,這是一組英數字元,前面加上
oaccount~<token asset name>~
,後面接著執行處理擁有者的使用者名稱或電子郵件 ID (user_id
) 雜湊,或登入執行處理的使用者、目前網路組織中使用者的成員服務提供者 ID (org_id
) 以及唯一記號 ID (token_id
)。 -
CreateAccount
- 這個方法會為指定的使用者與記號建立帳號。每個在任何時間點都有權杖的使用者都必須有帳戶。帳戶會追蹤使用者的餘額、保留餘額和交易歷史記錄。帳戶 ID 是一組英數字元,前面加上
oaccount~<token asset name>~
,後面接著執行處理擁有者的使用者名稱或電子郵件 ID (user_id
) 雜湊,或登入執行處理的使用者 (目前網路組織中使用者的成員服務提供者 ID (org_id
)。只有鏈碼的Token Admin
才能呼叫此方法。 -
AssociateToken
- 此方法會將有趣的記號與帳戶建立關聯。只有鏈碼的
Token Admin
才能呼叫此方法。 -
GetAccountWithStatus
- 此方法會傳回指定帳戶的帳戶詳細資料,包括帳戶狀態。
-
GetAccount
- 此方法會傳回指定帳戶的帳戶詳細資料。
-
GetAccountHistory
- 此方法會傳回指定帳戶的帳戶歷史記錄詳細資料陣列。
-
GetAccountOnHoldBalance
- 此方法會傳回指定帳戶的保留結餘。
-
GetAllAccounts
- 這個方法會傳回所有帳號的清單。此方法使用 Berkeley DB SQL RTF 查詢,而且只能在連線至遠端 Oracle Blockchain Platform 網路時呼叫。
-
GetUserByAccountId
- 此方法會傳回指定帳戶的使用者詳細資料。
-
GetAccountBalance
- 此方法會傳回指定帳戶的帳戶餘額。
-
GetAllOrgAccounts
- 此方法會傳回屬於指定組織的所有記號帳戶清單。
角色管理方法
-
AddRoleMember
- 此方法會新增角色至指定的使用者和記號。
-
RemoveRoleMember
- 這個方法會從指定的使用者和記號中移除角色。
-
GetAccountsByRole
- 此方法會傳回指定角色和記號的所有帳戶清單。
-
GetUsersByRole
- 此方法會傳回指定角色和記號之所有使用者的清單。
-
IsInRole
- 此方法指示使用者和記號是否具有指定的角色。
-
GetOrgAccountsByRole
- 此方法會傳回指定組織中具有指定角色之所有帳戶的相關資訊。
-
GetOrgUsersByRole
- 此方法會傳回指定組織中具有指定角色之所有使用者的相關資訊。
-
RoleCheck
- 此方法會檢查提供的帳戶 ID 是否為任何角色的成員。
交易歷史記錄管理的方式
-
GetAccountTransactionHistory
- 此方法會傳回指定帳戶的交易記錄詳細資料陣列。
-
GetAccountTransactionHistoryWithFilters
- 此方法會傳回指定交易之交易歷史記錄詳細資訊的陣列。只有在連線至遠端 Oracle Blockchain Platform 網路時才能呼叫此方法。
-
GetSubTransactionsById
- 此方法會傳回指定交易之交易歷史記錄詳細資訊的陣列。
-
GetSubTransactionsByIdWithFilters
- 此方法會傳回指定交易之交易歷史記錄詳細資訊的陣列。
-
GetTransactionById
- 此方法會傳回
Transaction
資產的歷史記錄。 -
DeleteHistoricalTransactions
- 此方法會從狀態資料庫刪除較舊的交易。
權杖行為管理方法 - 可變行為
-
Mint
- 這個方法會提示該方法的呼叫程式所擁有的記號。來電者必須具有帳戶與次要角色。可提示的記號數目受規格檔案中
mintable
行為的max_mint_quantity
特性所限制。如果未指定max_mint_quantity
特性,則可以提示不限數目的記號。數量必須在規格檔案中divisible
行為的decimal
參數所指定的小數值內。只有具備 minter 角色之帳戶的AccountOwner
才能呼叫此方法。 -
GetTotalMintedTokens
- 此方法會傳回所提示的記號總數。
-
GetNetTokens
- 此方法會傳回系統中指定記號可用記號的淨數量。網路記號是記號燒錄後剩餘的記號數量。方程式形式:淨記號 = 總鑄幣記號 - 總燃燒記號。如果沒有燒錄記號,則網路記號的數目會等於總鑄幣的記號。
-
GetMaxMintQuantity
- 此方法會傳回記號的最大可移動數量。如果未指定
max_mint_quantity
行為,則預設值為 0,可提示任意數目的記號。
權杖行為管理方法 - 可轉移行為
-
Transfer
- 此方法會將記號從呼叫程式轉移至指定的帳戶。方法的呼叫程式必須要有帳戶。數量必須在規格檔案中
divisible
行為的decimal
參數所指定的小數值內。只有帳戶的AccountOwner
才能呼叫此方法。 -
BulkTransfer
- 此方法會將變數替代字從呼叫者帳戶大量傳輸至
flow
物件中指定的帳戶。此方法的來電者必須已建立帳戶。
權杖行為管理方法 - 可保留行為
-
Hold
- 此方法使用
to_account_id
帳戶代表權杖的擁有者建立保留。已指定公證人帳戶,該帳戶負責完成或解除保留。建立保留時,系統會保留付款人的指定變數替代字餘額。保留完成或解除之前,無法移轉保留餘額。此方法的來電者必須已建立帳戶。 -
ExecuteHold
- 此方法會完成記號的保留,將先前保留的指定記號數量轉移給接收者。如果
quantity
值小於實際保留值,則剩餘金額會再次提供給權杖的原始擁有者。只有具備notary
角色的AccountOwner
ID 才能呼叫此方法。 -
ReleaseHold
- 此方法會解除保留記號。轉帳未完成,所有保留的權杖都會再次提供給原始擁有者使用。具有
notary
角色的Account Owner
ID 可在指定的時間限制內呼叫此方法,或由付款人、受款人或公證人在指定的時間限制之後呼叫。 -
GetOnHoldIds
- 此方法會傳回指定使用者和記號之所有保留 ID 的清單。
-
GetOnHoldDetailsWithOperationID
- 此方法會傳回指定作業 ID 與變數替代字的保留異動明細。
-
GetOnHoldBalanceWithOperationID
- 此方法會傳回指定作業 ID 與變數替代字的保留餘額。
記號行為管理方法 - 可燃行為