ERC-1155 的鷹架式 TypeScript 記號專案
Blockchain App Builder 會從您的權杖規格檔案進行輸入,並產生功能完整的鷹架式鏈碼專案。
專案會自動產生權杖生命週期類別和函數,包括 CRUD 和非 CRUD 方法。自動支援引數、封送處理 (Marshalling/unmarshalling) 及透明保存功能。
如需鷹架式專案和方法與記號無關的資訊,請參閱 Scaffolded TypeScript Chaincode Project 。
Model
每個記號化模型類別都會擴充 OchainModel
類別。「通透持續性功能」或簡化的 ORM 會擷取在 OchainModel
類別中。下列模型顯示整個不可執行的記號。
import * as yup from "yup";
import { Id, Mandatory, Validate, Default, Embedded, Derived, ReadOnly } from "../../lib/decorators";
import { OchainModel } from "../../lib/ochain-model";
import { STRATEGY } from "../../lib/utils";
import { EmbeddedModel } from "../../lib/ochain-embedded-model";
export class ArtCollectionMetadata extends EmbeddedModel<ArtCollectionMetadata> {
@Validate(yup.string())
public painting_name: string;
@Validate(yup.string())
public description: string;
@Validate(yup.string())
public image: string;
@Validate(yup.string())
public painter_name: string;
}
@Id("tokenId")
export class ArtCollection extends OchainModel<ArtCollection> {
public readonly assetType = "otoken";
@Mandatory()
@Validate(
yup
.string()
.required()
.matches(/^[A-Za-z0-9][A-Za-z0-9_-]*$/)
.max(16)
)
public tokenId: string;
@ReadOnly("artcollection")
public tokenName: string;
@Validate(yup.string().trim().max(256))
public tokenDesc: string;
@ReadOnly("erc1155+")
public tokenStandard: string;
@ReadOnly("nonfungible")
public tokenType: string;
@ReadOnly("whole")
public tokenUnit: string;
@ReadOnly(["indivisible","singleton","mintable","transferable","burnable","roles"])
public behaviors: string[];
@ReadOnly({ minter_role_name: "minter" })
public roles: object;
@ReadOnly({ max_mint_quantity: 20000 })
public mintable: object;
@Validate(yup.string())
public owner: string;
@Validate(yup.string())
public createdBy: string;
@Validate(yup.string())
public transferredBy: string;
@Validate(yup.string())
public creationDate: string;
@Validate(yup.string())
public transferredDate: string;
@Validate(yup.bool())
public isBurned: boolean;
@Validate(yup.string())
public burnedBy: string;
@Validate(yup.string())
public burnedDate: string;
@Mandatory()
@Validate(yup.string().required().max(2000))
public tokenUri: string;
@Embedded(ArtCollectionMetadata)
public tokenMetadata: ArtCollectionMetadata;
@Validate(yup.number())
public price: number;
@Validate(yup.boolean())
public on_sale_flag: boolean;
}
@Id("tokenId")
export class Loyalty extends OchainModel<Loyalty> {
public readonly assetType = "otoken";
@Mandatory()
@Validate(
yup
.string()
.required()
.matches(/^[A-Za-z0-9][A-Za-z0-9_-]*$/)
.max(16)
)
public tokenId: string;
@ReadOnly("loyalty")
public tokenName: string;
@Validate(yup.string().trim().max(256))
public tokenDesc: string;
@ReadOnly("erc1155+")
public tokenStandard: string;
@ReadOnly("fungible")
public tokenType: string;
@ReadOnly("fractional")
public tokenUnit: string;
@ReadOnly(["divisible","mintable","transferable","burnable","roles"])
public behaviors: string[];
@ReadOnly({ minter_role_name: "minter" })
public roles: object;
@ReadOnly({ max_mint_quantity: 10000 })
public mintable: object;
@ReadOnly({ decimal: 2 })
public divisible: object;
@Validate(yup.string())
public currency_name: string;
@Validate(yup.number())
public token_to_currency_ratio: number;
}
下列模型顯示部分不可行的記號。export class RealEstatePropertyMetadata extends EmbeddedModel<RealEstatePropertyMetadata> {
@Validate(yup.string())
public propertyType: string;
@Validate(yup.string())
public propertyName: string;
@Validate(yup.string())
public propertyAddress: string;
@Validate(yup.string())
public propertyImage: string;
}
@Id("tokenId")
export class RealEstateProperty extends OchainModel<RealEstateProperty> {
public readonly assetType = "otoken";
@Mandatory()
@Validate(
yup
.string()
.required()
.matches(/^[A-Za-z0-9][A-Za-z0-9_-]*$/)
.max(16)
)
public tokenId: string;
@ReadOnly("realestateproperty")
public tokenName: string;
@Validate(yup.string().trim().max(256))
public tokenDesc: string;
@ReadOnly("erc1155+")
public tokenStandard: string;
@ReadOnly("nonfungible")
public tokenType: string;
@ReadOnly("fractional")
public tokenUnit: string;
@ReadOnly(["divisible","mintable","transferable","roles"])
public behaviors: string[];
@ReadOnly({ minter_role_name: "minter" })
public roles: object;
@ReadOnly({ max_mint_quantity: 0 })
public mintable: object;
@Validate(yup.number().positive())
public quantity: number;
@Validate(yup.string())
public createdBy: string;
@Validate(yup.string())
public creationDate: string;
@ReadOnly({ decimal: 0 })
public divisible: object;
@Validate(yup.bool())
public isBurned: boolean;
@Mandatory()
@Validate(yup.string().required().max(2000))
public tokenUri: string;
@Embedded(RealEstatePropertyMetadata)
public tokenMetadata: RealEstatePropertyMetadata;
@Validate(yup.number())
public propertySellingPrice: number;
@Validate(yup.number())
public propertyRentingPrice: number;
}
控制器
主要控制器類別會擴充 OchainController
類別。只有一個主要控制器。
export class DigiCurrCCController extends OchainController{
您可以建立任意數量的類別、函數或檔案,但只有在主要控制器類別中定義的方法才能進行呼叫。其他方法為隱藏。
您可以使用記號 SDK 方法,為您的商業應用程式撰寫自訂方法。
自動產生的權杖方法
Blockchain App Builder 會自動產生支援權杖和權杖生命週期的方法。您可以使用這些方法來初始化記號、管理角色和帳戶,以及完成其他記號生命週期工作,而無需進行任何其他編碼。控制器方法必須要有 @Validator(...params)
修飾器才能呼叫。
存取控制管理的方法
-
isTokenAdmin
- 如果函數的呼叫程式是
Token Admin
,此方法會傳回布林值true
,否則會傳回false
。此方法只能由鏈碼的Token Admin
呼叫。 -
addTokenAdmin
- 此方法會將使用者新增為鏈碼的
Token Admin
。此方法只能由鏈碼的Token Admin
呼叫。 -
removeTokenAdmin
- 此方法會將使用者移除為鏈碼的
Token Admin
。此方法只能由鏈碼的Token Admin
呼叫。您無法將自己移除為Token Admin
。 -
getAllTokenAdmins
- 此方法會傳回屬於鏈碼之
Token Admin
的所有使用者清單。此方法只能由鏈碼的Token Admin
呼叫。
權杖組態管理方法
-
init
- 建立鏈碼時會呼叫此方法。每個
Token Admin
都是由adminList
參數中的userId
和orgId
資訊來識別。userId
是執行處理擁有者或登入執行處理之使用者的使用者名稱或電子郵件 ID。orgId
是目前網路組織中使用者的成員身分服務提供者 (MSP) ID。第一次部署鏈碼時,必須提供adminList
參數。如果您要升級鏈碼,請傳送空白清單 ([]
)。如果您是初始部署鏈碼的使用者,您也可以在升級鏈碼時,在adminList
參數中指定新的管理員。升級時會忽略adminList
參數中的任何其他資訊。 -
create<Token Name>Token
- 此方法會建立記號。每個定義的記號都有自己的建立方法。對於有趣的記號,此方法只能由鏈碼的
Token Admin
呼叫。對於非有趣的記號,如果在規格檔案中定義了 minter 角色,則具有 minter 角色的任何使用者都可以呼叫此方法來建立 NFT。若未定義 minter 角色,則任何使用者都可使用此方法來建立 (mint) NFT。呼叫此方法的使用者會成為 NFT 的擁有者。 -
update<Token Name>Token
- 此方法會更新記號。每個定義的記號都有自己的更新方法。您無法更新變數替代字的變數替代字中繼資料或變數替代字 URI。對於有趣的記號,此方法只能由鏈碼的
Token Admin
呼叫。對於非可行的記號,此方法只能由記號擁有者呼叫。 -
getTokenHistory
- 此方法會傳回指定記號 ID 的歷史記錄。任何人都可以呼叫這個方法。
-
getAllTokens
- 此方法會傳回儲存在狀態資料庫中的所有記號資產。此方法只能由鏈碼的
Token Admin
呼叫。此方法使用 Berkeley DB SQL Rich Query,且只能在連線至遠端 Oracle Blockchain Platform 網路時呼叫。 -
getTokenById
- 如果憑證存在於狀態資料庫中,則此方法會傳回記號物件。如果是分數 NFT,也會傳回擁有者清單。只有鏈碼或記號擁有者的
Token Admin
才能呼叫此方法。 -
getAllTokensByUser
- 此方法會傳回指定使用者擁有的所有權杖資產。此方法使用 Berkeley DB SQL Rich Query,且只能在連線至遠端 Oracle Blockchain Platform 網路時呼叫。只有鏈碼的
Token Admin
或帳戶擁有者才能呼叫此方法。 -
ownerOf
- 此方法會傳回指定記號 ID 之擁有者的帳戶 ID、組織 ID 和使用者 ID。任何人都可以呼叫這個方法。
-
URI
- 此方法會傳回指定記號的 URI。任何人都可以呼叫這個方法。
-
name
- 此方法會傳回記號類別的名稱。任何人都可以呼叫這個方法。
-
totalSupply
- 此方法會傳回提示的記號總數。有趣的記號是由記號 ID 指定。記號名稱會指定不可使用的記號。此方法只能由鏈碼的
Token Admin
呼叫。 -
totalNetSupply
- 此方法會傳回有提示記號的總數減去已燒錄記號的數目。有趣的記號是由記號 ID 指定。記號名稱會指定不可使用的記號。此方法只能由鏈碼的
Token Admin
呼叫。 -
getTokensByName
- 此方法會傳回指定權杖名稱的所有權杖資產。此方法使用 Berkeley DB SQL Rich Query,且只能在連線至遠端 Oracle Blockchain Platform 網路時呼叫。此方法只能由鏈碼的
Token Admin
呼叫。 -
getTokenDecimal
- 此方法會傳回指定記號的小數位數。此方法只能由鏈碼的
Token Admin
呼叫。
帳戶管理方法
-
createAccount
- 此方法會為指定的使用者建立帳戶,並為有趣或不可行的記號建立關聯的記號帳戶。必須為任何需要記號的使用者建立帳戶。使用者帳戶會追蹤使用者持有的 NFT 帳戶和有趣的記號帳戶。使用者必須擁有網路中的帳號,才能完成記號相關的作業。此方法只能由鏈碼的
Token Admin
呼叫。使用者帳戶具有唯一 ID,由
orgId
參數的 SHA-256 雜湊和userId
參數組成。使用者可以有多個具有唯一帳戶 ID 的可行權杖帳戶。有趣的記號帳戶 ID 是由
orgId
參數的 SHA-256 雜湊、userId
參數、以波狀符號 (~
) 區隔的常數字串ft
,以及代表正由波狀符號 (~
) 區隔之有趣帳戶索引的計數器編號所組成。使用者只能有一個不可執行的權杖帳戶。非可行的記號帳戶 ID 是唯一的,由
orgId
參數的 SHA-256 雜湊、userId
參數以及以波狀符號 (~
) 區隔的常數字串nft
組成。使用者擁有的所有非可行權杖 (不論是全部或小數) 都會連結至此帳戶。使用者帳戶 ID 開頭為
ouaccount~
。記號帳戶 ID 開頭為oaccount~
。 -
createUserAccount
- 此方法會為指定的使用者建立帳戶。必須為任何需要記號的使用者建立帳戶。使用者帳戶會追蹤使用者擁有的 NFT 帳戶和有趣的記號帳戶。使用者必須擁有網路中的帳號,才能完成記號相關的作業。
帳戶 ID 是
orgId
參數和userId
參數的 SHA-256 雜湊。此方法只能由鏈碼的Token Admin
呼叫。 -
createTokenAccount
- 此方法會建立有趣或不可行的記號帳戶,以與使用者帳戶建立關聯。
使用者可以有多個具有唯一帳戶 ID 的可行權杖帳戶。有趣的記號帳戶 ID 是由
orgId
參數的 SHA-256 雜湊、userId
參數、以波狀符號 (~
) 區隔的常數字串ft
,以及代表正由波狀符號 (~
) 區隔之有趣帳戶索引的計數器編號所組成。使用者只能有一個不可執行的權杖帳戶。非可行的記號帳戶 ID 是唯一的,由
orgId
參數的 SHA-256 雜湊、userId
參數以及以波狀符號 (~
) 區隔的常數字串nft
組成。使用者擁有的所有非可行權杖 (不論是全部或小數) 都會連結至此帳戶。此方法只能由鏈碼的
Token Admin
呼叫。 -
associateFungibleTokenAccount
- 此方法會將使用者有趣的記號帳戶與特定有趣的記號建立關聯。
此方法只能由鏈碼的
Token Admin
呼叫。 -
getAccountHistory
- 此方法會傳回指定記號帳戶的歷史記錄。此為非同步方法。只有鏈碼的
Token Admin
或帳戶擁有者才能呼叫此方法。 -
getAccount
- 此方法會傳回指定使用者的權杖帳戶詳細資訊。只有鏈碼的
Token Admin
或帳戶的Account Owner
才能呼叫此方法。 -
getAllAccounts
- 此方法會傳回所有使用者帳戶的詳細資訊。只有鏈碼的
Token Admin
才能呼叫此方法。 -
getAccountDetailsByUser
- 此方法會傳回指定使用者的帳戶摘要,以及與使用者相關聯之有趣和不可行記號的詳細資料。只有鏈碼的
Token Admin
或帳戶的Account Owner
才能呼叫此方法。 -
getUserByAccountId
- 此方法會傳回指定帳戶 ID 的使用者詳細資訊。任何使用者都可以呼叫這個方法。
角色管理方法
-
addRole
- 此方法會將角色新增至指定的使用者和記號。此方法只能由鏈碼的
Token Admin
呼叫。有趣的記號是由記號 ID 指定。記號名稱會指定不可使用的記號。指定的使用者必須要有與不合法權杖關聯的權杖帳戶,或是 NFT 角色的不可行權杖帳戶。指定的角色必須存在於權杖的規格檔案中。 -
isInRole
- 此方法會傳回布林值,指示使用者是否具有指定的角色。有趣的記號是由記號 ID 指定。記號名稱會指定不可使用的記號。只有鏈碼的
Token Admin
或帳戶的Account Owner
才能呼叫此方法。指定的使用者必須要有與不合法權杖關聯的權杖帳戶,或是 NFT 角色的不可行權杖帳戶。指定的角色必須存在於權杖的規格檔案中。 -
removeRole
- 此方法會從指定的使用者和記號移除角色。有趣的記號是由記號 ID 指定。記號名稱會指定不可使用的記號。此方法只能由鏈碼的
Token Admin
呼叫。指定的使用者必須要有與不合法權杖關聯的權杖帳戶,或是 NFT 角色的不可行權杖帳戶。指定的角色必須存在於權杖的規格檔案中。 -
getAccountsByRole
- 此方法會傳回指定角色和記號的所有帳戶 ID 清單。有趣的記號是由記號 ID 指定。記號名稱會指定不可使用的記號。此方法只能由鏈碼的
Token Admin
呼叫。 -
getUsersByRole
- 此方法會傳回指定角色和記號的所有使用者清單。有趣的記號是由記號 ID 指定。記號名稱會指定不可使用的記號。此方法只能由鏈碼的
Token Admin
呼叫。
交易歷史記錄管理的方法
-
getAccountTransactionHistory
- 此方式會傳回科目交易歷史記錄。只有鏈碼的
Token Admin
或帳戶擁有者才能呼叫此方法。對於非有趣的權杖,只有在連線至遠端 Oracle Blockchain Platform 網路時才能呼叫此方法。 -
getTransactionById
- 此方法會傳回指定交易 ID 的交易詳細資訊。任何人都可以呼叫這個方法。
-
deleteHistoricalTransactions
- 此方法會從狀態資料庫中刪除指定時戳之前的交易。此方法只能由鏈碼的
Token Admin
呼叫。
記號行為管理的方法 - 易懂的行為
-
mintBatch
- 此方法會在批次作業中建立 (mints) 多個記號。此方法只會建立有趣的記號或分數非有趣的記號。
對於有趣的記號,如果在規格檔案中定義了 minter 角色,則具有 minter 角色的任何使用者都可以呼叫此方法。如果不是,任何使用者都可以使用此方法來提示記號。如果在建立或更新記號時指定了該特性,您就不能超出記號的
max_mint_quantity
特性。對於非有趣的記號,如果在規格檔案中定義了 minter 角色,則具有 minter 角色的任何使用者都可以呼叫此方法。如果不是,任何使用者都可以使用此方法來提示記號。此外,呼叫者也必須是記號的建立者。部分不可行記號的數量沒有上限,無法加以提示。
您無法使用此方法來鑄造整個不適用的記號。
權杖行為管理方法 - 可傳輸行為
-
batchTransferFrom
- 此方法完成批次作業,會將變數替代字 ID 清單中指定的變數替代字從一個使用者傳輸至另一個使用者。
對於 NFT,因為該方法轉移了 NFT 的所有權,所以 NFT 的發送方必須擁有該記號。
對於分數 NFT,如果使用者 (包括記號的建立者) 傳輸他們擁有的所有共用,則會失去記號的所有權。如果將任何記號的共用傳輸給使用者,則該使用者會自動成為分數 NFT 的其中一個擁有者。
此方法無法驗證方法的呼叫程式是指定的傳送者。任何使用者都可以呼叫這個方法。
-
safeBatchTransferFrom
- 此方法完成批次作業,會將變數替代字 ID 清單中指定的變數替代字從一個使用者傳輸至另一個使用者。
對於 NFT,因為該方法轉移了 NFT 的所有權,所以 NFT 的發送方必須擁有該記號。
對於分數 NFT,如果使用者 (包括記號的建立者) 傳輸他們擁有的所有共用,則會失去記號的所有權。如果將任何記號的共用傳輸給使用者,則該使用者會自動成為分數 NFT 的其中一個擁有者。
方法的呼叫程式必須是指定的寄件者。任何使用者都可以呼叫這個方法。
-
balanceOfBatch
- 此方法會完成取得權杖帳戶餘額的批次作業。帳戶詳細資料指定於三個不同的組織 ID、使用者 ID 與憑證 ID 清單。此方法只能由鏈碼的
Token Admin
或帳戶擁有者呼叫。帳戶擁有者只能查看自己擁有之帳戶的餘額明細。 -
exchangeToken
- 此方法會在指定的帳戶之間交換記號。此方法僅支援在 NFT、真菌記號或真菌記號與 NFT 之間交換。NFT 可為整體或分數。只有帳戶擁有者才能呼叫此方法。
權杖行為管理方法 - 可燒錄行為
SDK 方法
存取控制管理的方法
-
checkAuthorization
- 使用此方法將存取控制檢查新增至作業。此為非同步函數。某些記號方法只能由記號的
Token Admin
或AccountOwner
執行,或由MultipleAccountOwner
為具有多個帳戶的使用者執行。存取控制對應會在../lib/constant.ts
檔案中描述。您可以編輯../lib/constant.ts
檔案來修改存取控制。若要使用自己的存取控制或停用存取控制,請從自動產生的控制器方法和自訂方法中移除存取控制程式碼。ADMIN: { isUserTokenAdmin: ["Admin"], addAdmin: ["Admin"], removeAdmin: ["Admin"], getAllAdmins: ["Admin"], }, TOKEN: { save: ["Admin"], getAllTokens: ["Admin"], get: ["Admin"], update: ["Admin"], getDecimals: ["Admin"], getTokensByName: ["Admin"], addRoleMember: ["Admin"], removeRoleMember: ["Admin"], isInRole: ["Admin", "AccountOwner"], getTotalMintedTokens: ["Admin"], getNetTokens: ["Admin"], getTokenHistory: ["Admin"], }, ROLE: { getAccountsByRole: ["Admin"], getUsersByRole: ["Admin"], }, TRANSACTION: { deleteTransactions: ["Admin"], }, ACCOUNT: { createAccount: ["Admin"], associateToken: ["Admin"], getAllAccounts: ["Admin"], getAccountsByUser: ["Admin", "MultipleAccountOwner"], getAccount: ["Admin", "AccountOwner"], history: ["Admin", "AccountOwner"], getAccountTransactionHistory: ["Admin", "AccountOwner"], getAccountTransactionHistoryWithFilters: ["Admin", "AccountOwner"], getSubTransactionsById: ["Admin", TRANSACTION_INVOKER], getSubTransactionsByIdWithFilters: ["Admin", TRANSACTION_INVOKER], getAccountBalance: ["Admin", "AccountOwner"], getAccountOnHoldBalance: ["Admin", "AccountOwner"], getOnHoldIds: ["Admin", "AccountOwner"], getConversionHistory: ["Admin", "AccountOwner"], }, ACCOUNT_STATUS: { get: ["Admin", "AccountOwner"], history: ["Admin", "AccountOwner"], activateAccount: ["Admin"], suspendAccount: ["Admin"], deleteAccount: ["Admin"], }, TOKEN_CONVERSION: { initializeExchangePoolUser: ["Admin"], addConversionRate: ["Admin"], updateConversionRate: ["Admin"], getConversionRate: ["Admin", "AnyAccountOwner"], getConversionRateHistory: ["Admin", "AnyAccountOwner"], tokenConversion: ["Admin", "AnyAccountOwner"], getExchangePoolUser: ["Admin"], }, ERC721ADMIN: { isUserTokenAdmin: ["Admin"], addAdmin: ["Admin"], removeAdmin: ["Admin"], getAllAdmins: ["Admin"], }, ERC721TOKEN: { getAllTokens: ["Admin"], getAllTokensByUser: ["Admin", "AccountOwner"], get: ["Admin", TOKEN_OWNER], getTokensByName: ["Admin"], addRoleMember: ["Admin"], removeRoleMember: ["Admin"], isInRole: ["Admin", "AccountOwner"], totalSupply: ["Admin"], totalNetSupply: ["Admin"], history: ["Admin"], }, ERC721ROLE: { getAccountsByRole: ["Admin"], getUsersByRole: ["Admin"], }, ERC721TRANSACTION: { deleteTransactions: ["Admin"], }, ERC721ACCOUNT: { createAccount: ["Admin"], getAllAccounts: ["Admin"], getAccountByUser: ["Admin", "MultipleAccountOwner"], history: ["Admin", "AccountOwner"], getAccountTransactionHistory: ["Admin", "AccountOwner"], getAccountTransactionHistoryWithFilters: ["Admin", "AccountOwner"], balanceOf: ["Admin", "MultipleAccountOwner"], }, ERC1155ADMIN: { isUserTokenAdmin: ["Admin"], addAdmin: ["Admin"], removeAdmin: ["Admin"], getAllAdmins: ["Admin"], }, ERC1155TOKEN: { getAllTokens: ["Admin"], get: ["Admin", TOKEN_OWNER], getAllTokensByUser: ["Admin", "AccountOwner"], totalSupply: ["Admin"], totalNetSupply: ["Admin"], getTokensByName: ["Admin"], getDecimals: ["Admin"], addRoleMember: ["Admin"], removeRoleMember: ["Admin"], isInRole: ["Admin", "AccountOwner"], save: ["Admin"], update: ["Admin"], }, ERC1155ACCOUNT: { createAccount: ["Admin"], createUserAccount: ["Admin"], createTokenAccount: ["Admin"], associateFungibleTokenToAccount: ["Admin", "AccountOwner"], getAccountsByUser: ["Admin", "AccountOwner"], getAccount: ["Admin", "AccountOwner"], history: ["Admin", "AccountOwner"], getAllAccounts: ["Admin"], balanceOfBatch: ["Admin"], getAccountTransactionHistory: ["Admin", "AccountOwner"], getAccountTransactionHistoryWithFilters: ["Admin", "AccountOwner"], exchangeToken: ["AccountOwner"], getAccountDetailsByUser: ["Admin", "AccountOwner"], }, ERC1155ROLE: { getAccountsByRole: ["Admin"], getUsersByRole: ["Admin"], },
-
isUserTokenAdmin
- 如果指定的使用者是
Token Admin
,此方法會傳回布林值true
,否則會傳回false
。此方法只能由權杖鏈碼的Token Admin
呼叫。 -
addAdmin
- 此方法會將使用者新增為記號鏈碼的
Token Admin
。此方法只能由權杖鏈碼的Token Admin
呼叫。 -
removeAdmin
- 此方法會將使用者移除為記號鏈碼的
Token Admin
。此方法只能由權杖鏈碼的Token Admin
呼叫。您無法將自己移除為Token Admin
。 -
getAllAdmins
- 此方法會傳回所有
Token Admin
使用者的清單。
權杖組態管理方法
-
save
- 此方法會建立記號。每個定義的記號都有自己的建立方法。對於非有趣的記號,如果在規格檔案中定義了 minter 角色,則具有 minter 角色的任何使用者都可以呼叫此方法來建立 NFT。如果不是,任何使用者都可以使用此方法來建立 (mint) NFT。呼叫此方法的使用者會成為 NFT 的擁有者 (全部或小數)。
-
update
- 此方法會更新記號。您無法更新變數替代字的變數替代字中繼資料或變數替代字 URI。
-
history (Token)
- 此方法會傳回指定記號 ID 的歷史記錄。
-
getAllTokens
- 此方法會傳回儲存在狀態資料庫中的所有記號資產。此方法只能由鏈碼的
Token Admin
呼叫。此方法使用 Berkeley DB SQL Rich Query,且只能在連線至遠端 Oracle Blockchain Platform 網路時呼叫。 -
get (Token)
- 如果憑證存在於狀態資料庫中,則此方法會傳回記號物件。只有鏈碼或記號擁有者的
Token Admin
才能呼叫此方法。 -
getAllTokensByUser
- 此方法會傳回指定使用者擁有的所有權杖資產。此方法使用 Berkeley DB SQL Rich Query,且只能在連線至遠端 Oracle Blockchain Platform 網路時呼叫。
-
ownerOf
- 此方法會傳回指定記號 ID 之擁有者的帳戶 ID、組織 ID 和使用者 ID。
-
tokenURI
- 此方法會傳回指定記號的 URI。任何人都可以呼叫這個方法。
-
name
- 此方法會傳回記號類別的名稱。任何人都可以呼叫這個方法。
-
totalSupply
- 此方法會傳回提示的記號總數。有趣的記號是由記號 ID 指定。記號名稱會指定不可使用的記號。
-
totalNetSupply
- 此方法會傳回有提示記號的總數減去已燒錄記號的數目。有趣的記號是由記號 ID 指定。記號名稱會指定不可使用的記號。
-
getTokensByName
- 此方法會傳回指定權杖名稱的所有權杖資產。此方法使用 Berkeley DB SQL Rich Query,且只能在連線至遠端 Oracle Blockchain Platform 網路時呼叫。
-
getDecimals
- 此方法會傳回指定記號的小數位數。如果未指定變數替代字的可分割行為,則會傳回零小數位數的預設值。
帳戶管理方法
-
createAccount
- 此方法會為指定的使用者建立帳戶,並為有趣或不可行的記號建立關聯的記號帳戶。必須為任何需要記號的使用者建立帳戶。使用者帳戶會追蹤使用者擁有的 NFT 帳戶和有趣的記號帳戶。使用者必須擁有網路中的帳號,才能完成記號相關的作業。此方法只能由鏈碼的
Token Admin
呼叫。使用者帳戶具有唯一 ID,由
orgId
參數的 SHA-256 雜湊和userId
參數組成。使用者可以有多個具有唯一帳戶 ID 的可行權杖帳戶。有趣的記號帳戶 ID 是由
orgId
參數的 SHA-256 雜湊、userId
參數、以波狀符號 (~
) 區隔的常數字串ft
,以及代表正由波狀符號 (~
) 區隔之有趣帳戶索引的計數器編號所組成。使用者只能有一個不可執行的權杖帳戶。非可行的記號帳戶 ID 是唯一的,由
orgId
參數的 SHA-256 雜湊、userId
參數以及以波狀符號 (~
) 區隔的常數字串nft
組成。使用者擁有的所有非可行權杖 (不論是全部或小數) 都會連結至此單一非可行權杖帳戶。 -
createUserAccount
- 此方法會為指定的使用者建立帳戶。必須為任何需要記號的使用者建立帳戶。使用者帳戶會追蹤使用者擁有的 NFT 帳戶和有趣的記號帳戶。使用者必須擁有網路中的帳號,才能完成記號相關的作業。
帳戶 ID 是
orgId
參數和userId
參數的 SHA-256 雜湊。此方法只能由鏈碼的Token Admin
呼叫。 -
createTokenAccount
- 此方法會建立有趣或不可行的記號帳戶,以與使用者帳戶建立關聯。
使用者可以有多個具有唯一帳戶 ID 的可行權杖帳戶。有趣的記號帳戶 ID 是由
orgId
參數的 SHA-256 雜湊、userId
參數、以波狀符號 (~
) 區隔的常數字串ft
,以及代表正由波狀符號 (~
) 區隔之有趣帳戶索引的計數器編號所組成。使用者只能有一個不可執行的權杖帳戶。非可行的記號帳戶 ID 是唯一的,由
orgId
參數的 SHA-256 雜湊、userId
參數以及以波狀符號 (~
) 區隔的常數字串nft
組成。使用者擁有的所有非可行權杖 (不論是全部或小數) 都會連結至此單一非可行權杖帳戶。此方法只能由鏈碼的
Token Admin
呼叫。 -
associateTokenToToken
- 此方法會將使用者有趣的記號帳戶與特定有趣的記號建立關聯。
-
getAccountHistory
- 此方法會傳回指定記號帳戶的歷史記錄。
-
getAccountWithStatus
- 此方法會傳回指定使用者的權杖帳戶詳細資訊 (包括帳戶狀態)。只有鏈碼的
Token Admin
或帳戶的Account Owner
才能呼叫此方法。 -
getAccount
- 此方法會傳回指定使用者的權杖帳戶詳細資訊。只有鏈碼的
Token Admin
或帳戶的Account Owner
才能呼叫此方法。 -
getAllAccounts
- 此方法會傳回所有使用者帳戶的詳細資訊。
-
getAccountDetailsByUser
- 此方法會傳回指定使用者的帳戶摘要,以及與使用者相關聯之有趣和不可行記號的詳細資料。
-
getUserByAccountId
- 此方法會傳回指定帳戶 ID 的使用者詳細資訊。
角色管理方法
-
AddRoleMember
- 此方法會將角色新增至指定的使用者和記號。有趣的記號是由記號 ID 指定。記號名稱會指定不可使用的記號。
-
isInRole
- 此方法會傳回布林值,指示使用者是否具有指定的角色。有趣的記號是由記號 ID 指定。記號名稱會指定不可使用的記號。
-
removeRoleMember
- 此方法會從指定的使用者和記號移除角色。有趣的記號是由記號 ID 指定。記號名稱會指定不可使用的記號。
-
getAccountsByRole
- 此方法會傳回指定角色和記號的所有帳戶 ID 清單。有趣的記號是由記號 ID 指定。記號名稱會指定不可使用的記號。
-
getUsersByRole
- 此方法會傳回指定角色和記號的所有使用者清單。有趣的記號是由記號 ID 指定。記號名稱會指定不可使用的記號。
交易歷史記錄管理的方法
-
getAccountTransactionHistory
- 此方式會傳回科目交易歷史記錄。只有鏈碼的
Token Admin
或帳戶擁有者才能呼叫此方法。對於非有趣的權杖,只有在連線至遠端 Oracle Blockchain Platform 網路時才能呼叫此方法。 -
getTransactionById
- 此方法會傳回指定交易 ID 的交易詳細資訊。
-
deleteTransactions
- 此方法會從狀態資料庫中刪除指定時戳之前的交易。
記號行為管理的方法 - 易懂的行為
-
mintBatch
- 此方法會在批次作業中建立 (mints) 多個記號。此方法只會建立有趣的記號或分數非有趣的記號。
對於有趣的記號,如果在規格檔案中定義了 minter 角色,則具有 minter 角色的任何使用者都可以呼叫此方法。如果不是,任何使用者都可以使用此方法來提示記號。如果在建立或更新記號時指定了該特性,您就不能超出記號的
max_mint_quantity
特性。對於非有趣的記號,如果在規格檔案中定義了 minter 角色,則具有 minter 角色的任何使用者都可以呼叫此方法。如果不是,任何使用者都可以使用此方法來提示記號。此外,呼叫者也必須是記號的建立者。部分不可行記號的數量沒有上限,無法加以提示。
您無法使用此方法來鑄造整個不適用的記號。
權杖行為管理方法 - 可傳輸行為
-
batchTransferFrom
- 此方法完成批次作業,會將變數替代字 ID 清單中指定的變數替代字從一個使用者傳輸至另一個使用者。
對於 NFT,因為該方法轉移了 NFT 的所有權,所以 NFT 的發送方必須擁有該記號。
對於分數 NFT,如果使用者 (包括記號的建立者) 傳輸他們擁有的所有共用,則會失去記號的所有權。如果將任何記號的共用傳輸給使用者,則該使用者會自動成為分數 NFT 的其中一個擁有者。
此方法無法驗證方法的呼叫程式是指定的傳送者。
-
safeBatchtransferFrom
- 此方法完成批次作業,會將變數替代字 ID 清單中指定的變數替代字從一個使用者傳輸至另一個使用者。
對於 NFT,因為該方法轉移了 NFT 的所有權,所以 NFT 的發送方必須擁有該記號。
對於分數 NFT,如果使用者 (包括記號的建立者) 傳輸他們擁有的所有共用,則會失去記號的所有權。如果將任何記號的共用傳輸給使用者,則該使用者會自動成為分數 NFT 的其中一個擁有者。
方法的呼叫程式必須是指定的寄件者。
-
balanceOfBatch
- 此方法會完成取得權杖帳戶餘額的批次作業。帳戶詳細資料指定於三個不同的組織 ID、使用者 ID 與憑證 ID 清單。此方法只能由鏈碼的
Token Admin
或帳戶擁有者呼叫。帳戶擁有者只能查看自己擁有之帳戶的餘額明細。 -
exchangeToken
- 此方法會在指定的帳戶之間交換記號。此方法僅支援在 NFT (完整或小數) 與真菌記號或真菌記號與 NFT (完整或小數) 之間交換。只有帳戶擁有者才能呼叫此方法。
權杖行為管理方法 - 可燒錄行為