トークン・タクソノミ・フレームワーク用のスキャフォールドされたTypeScriptプロジェクト
ブロックチェーン・アプリケーション・ビルダーは、トークン仕様ファイルから入力を受け取り、完全に機能するチェーンコード・プロジェクトを生成します。
プロジェクトは、CRUDおよびCRUD以外のメソッドを含むトークン・ライフサイクル・クラスおよび関数を自動的に生成します。引数の検証、マーシャリング/アンマーシャリングおよび透過的な永続性機能はすべて自動的にサポートされます。
スキャフォールドされたプロジェクトおよびトークンに直接関連しないメソッドの詳細は、「スキャフォールドされたTypeScriptチェーンコード・プロジェクト」を参照してください。
モデル
トークン化されたすべてのモデル・クラスはToken
クラスを拡張し、次にOchainModel
クラスを拡張します。Token
クラスは、../lib/token
からインポートされます。透過的永続性機能(または簡素化されたORM)は、OchainModel
クラスで取得されます。
import * as yup from 'yup';
import { Id, Mandatory, Validate, ReadOnly } from '../lib/decorators';
import { Token } from '../lib/token';
@Id('token_id')
export class Digicur extends Token<Digicur> {
public readonly assetType = 'otoken';
@Mandatory()
@Validate(yup.string().required().matches(/^[A-Za-z0-9][A-Za-z0-9_-]*$/).max(16))
public token_id: string;
@ReadOnly('digicur')
public token_name: string;
@Validate(yup.string().trim().max(256))
public token_desc: string;
@ReadOnly('fungible')
public token_type: string;
@ReadOnly(["divisible","mintable","transferable","burnable","holdable","roles"])
public behaviors: string[];
@ReadOnly({minter_role_name: "minter", burner_role_name: "burner", notary_role_name: "notary"})
public roles: object;
@ReadOnly({max_mint_quantity: 20000})
public mintable: object;
@ReadOnly({decimal: 1})
public divisible: object;
@Validate(yup.number())
public token_to_currency_ratio: number;
@Validate(yup.string())
public currency_representation: string;
}
コントローラ
メイン・コントローラ・クラスは、OchainController
クラスを拡張します。メインコントローラは1つのみです。
export class DigiCurrCCController extends OchainController{
クラス、関数またはファイルはいくつでも作成できますが、メイン・コントローラ・クラス内で定義されているメソッドのみが呼出し可能です。その他のメソッドは非表示です。
トークンSDKメソッドを使用して、ビジネス・アプリケーションのカスタム・メソッドを記述できます。
自動生成されたトークン・メソッド
ブロックチェーン・アプリケーション・ビルダーは、トークンおよびトークンのライフサイクルをサポートするメソッドを自動的に生成します。これらの方法を使用すると、追加のコーディングなしで、トークンの初期化、ロールとアカウントの管理、その他のトークン・ライフサイクル・タスクの完了を行うことができます。コントローラ・メソッドを起動するには、@Validator(...params)
デコレータが必要です。
アクセス制御管理のメソッド
-
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
によってのみコールできます。
トークン構成管理のメソッド
-
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
によってのみコールできます。この方法では、Berkeley DB SQLリッチ問合せが使用され、リモートのOracle Blockchain Platformネットワークに接続されている場合にのみコールできます。 -
getTokensByName
- このメソッドは、指定された名前を持つすべてのトークン・オブジェクトを返します。このメソッドは、チェーンコードの
Token Admin
またはOrg Admin
によってのみコールできます。この方法では、Berkeley DB SQLリッチ問合せが使用され、リモートのOracle Blockchain Platformネットワークに接続されている場合にのみコールできます。
アカウント管理の方法
-
createAccount
- このメソッドは、指定されたユーザーおよびトークンのアカウントを作成します。アカウントは、任意の時点でトークンを持つすべてのユーザーに対して作成する必要があります。勘定科目は、残高と保留残高、取引履歴を追跡します。アカウントIDは英数字のセットの文字で、先頭に
oaccount~<token asset name>~
を付け、インスタンス所有者またはインスタンスにログインしているユーザーのユーザー名または電子メールID (user_id
)、現在のネットワーク組織内のユーザーのメンバーシップ・サービス・プロバイダID (org_id
)のハッシュが続きます。このメソッドは、チェーンコードのToken Admin
または指定された組織のOrg Admin
によってのみコールできます。 -
associateTokenToAccount
- このメソッドは、fungibleトークンをアカウントに関連付けます。このメソッドは、チェーンコードの
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リッチ問合せが使用され、リモートのOracle Blockchain Platformネットワークに接続されている場合にのみコールできます。 -
getUserByAccountId
- このメソッドは、指定されたアカウントのユーザー詳細(
org_id
およびuser_id
)を返します。このメソッドは、チェーンコードの任意のユーザーがコールできます。 -
getAccountBalance
- このメソッドは、指定されたアカウントおよびトークンの現在の残高を返します。このメソッドは、チェーンコードの
Token Admin
、指定された組織のOrg Admin
またはアカウントのAccountOwner
によってのみコールできます。 -
getAllOrgAccounts
- このメソッドは、指定された組織に属するすべてのトークン・アカウントのリストを返します。このメソッドは、チェーンコードの
Token Admin
または指定された組織のOrg Admin
によってのみコールできます。
ロール管理の方法
-
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
によってのみコールできます。 -
isInRole
- このメソッドは、ユーザーおよびトークンに指定したロールがあるかどうかを示すブール値を返します。このメソッドは、チェーンコードの
Token Admin
、アカウントのAccountOwner
または指定された組織のOrg Admin
によってのみコールできます。 -
getOrgAccountsByRole
- このメソッドは、指定された組織内で指定されたロールを持つすべてのアカウントに関する情報を返します。このメソッドは、チェーンコードの
Token Admin
または指定された組織のOrg Admin
によってのみコールできます。 -
getOrgUsersByRole
- このメソッドは、指定された組織内で指定されたロールを持つすべてのユーザーに関する情報を返します。このメソッドは、チェーンコードの
Token Admin
または指定された組織のOrg Admin
によってのみコールできます。
トランザクション履歴管理の方法
-
getAccountTransactionHistory
- このメソッドは、指定されたユーザーおよびトークンのアカウント・トランザクション履歴詳細の配列を返します。このメソッドは、チェーンコードの
Token Admin
、指定された組織のOrg Admin
またはアカウントのAccountOwner
によってのみコールできます。 -
getAccountTransactionHistoryWithFilters
- このメソッドは、指定されたユーザーおよびトークンのアカウント・トランザクション履歴詳細の配列を返します。このメソッドは、チェーンコードの
Token Admin
、指定された組織のOrg Admin
またはアカウントのAccountOwner
によってのみコールできます。このメソッドは、リモートのOracle Blockchain Platformネットワークに接続されている場合にのみコールできます。 -
getSubTransactionById
- このメソッドは、指定されたユーザーおよびトークンのアカウント・トランザクション履歴詳細の配列を返します。このメソッドは、チェーンコードの
Token Admin
またはアカウントのAccountOwner
によってのみコールできます。 -
getSubTransactionsByIdWithFilters
- このメソッドは、指定されたトランザクションの勘定科目サブトランザクション履歴詳細の配列を返します。
-
getTransactionById
- このメソッドは、
Transaction
アセットの履歴を返します。 -
deleteHistoricalTransactions
- このメソッドは、状態データベースから古いトランザクションを削除します。
トークン動作管理のメソッド- 最小化可能な動作
-
issueTokens
- このメソッドはトークンをミントし、そのトークンはメソッドの呼出し元によって所有されます。発信者にはアカウントとマイナー・ロールが必要です。ミントできるトークンの数は、仕様ファイルの
mintable
動作のmax_mint_quantity
プロパティによって制限されます。max_mint_quantity
プロパティが指定されていない場合、無制限の数のトークンをミントできます。数量は、仕様ファイルのdivisible
動作のdecimal
パラメータで指定された10進値内である必要があります。このメソッドは、minterロールを持つアカウントのAccountOwner
によってのみコールできます。 -
getTotalMintedTokens
- このメソッドは、指定されたトークンのミント・トークンの合計数を返します。このメソッドは、チェーンコードの
Token Admin
または任意のOrg Admin
によってのみコールできます。 -
getNetTokens
- このメソッドは、指定されたトークンのシステムで使用可能なトークンの合計正味数を返します。ネット・トークンの合計は、トークンが消費された後に残ったトークンの量です。方程式形式: net tokens = total minted tokens - total burned tokens。トークンが書き込まれていない場合、ネット・トークンの数は、ミント・トークンの合計数に等しくなります。このメソッドは、チェーンコードの
Token Admin
または任意のOrg Admin
によってのみコールできます。
トークン動作管理のメソッド- 転送可能な動作
-
transferTokens
- このメソッドは、呼び出し元から指定されたアカウントにトークンを転送します。メソッドのコール元にはアカウントが必要です。数量は、仕様ファイルの
divisible
動作のdecimal
パラメータで指定された10進値内である必要があります。このメソッドは、アカウントのAccountOwner
によってのみコールできます。 -
bulkTransferTokens
- このメソッドは、呼出し元アカウントから
flow
オブジェクトで指定されたアカウントへのトークンの一括転送を実行するために使用されます。数量は、このメソッドの仕様file.Theコール元にあるdivisible
動作のdecimal
パラメータで指定された10進値内に、アカウントがすでに作成されている必要があります。このメソッドは、アカウントのAccountOwner
によってのみコールできます。
トークン動作管理のメソッド- 保持可能な動作
-
holdTokens
- このメソッドは、
to_account_id
アカウントを持つトークンの所有者のかわりに保留を作成します。公証人勘定が指定されており、保留の完了または解除を担当します。保留が作成されると、支払人から指定されたトークン残高が保留になります。保留残高は、保留が完了または解除されるまで転送できません。このメソッドのコール元には、アカウントがすでに作成されている必要があります。このメソッドは、アカウントのAccountOwner
によってのみコールできます。 -
executeHoldTokens
- このメソッドは、トークンの保留を完了します。トークン所有者が以前に保持していたトークンの数量は、受信者に転送されます。
quantity
値が実際の保留値より小さい場合、残りの金額はトークンの元の所有者が再度使用できます。このメソッドは、指定された操作IDのnotary
ロールを持つAccountOwner
IDによってのみコールできます。保留は公証人によってのみ完了できます。 -
releaseHoldTokens
- このメソッドは、トークンの保留を解除します。転送が完了しておらず、保持されているすべてのトークンを元の所有者が再度使用できます。このメソッドは、指定された制限時間内に
notary
ロールを持つAccountOwner
ID、または指定された制限時間後に支払者、受取人または公証人によってコールできます。 -
getOnHoldIds
- このメソッドは、指定されたアカウントのすべての保持IDのリストを返します。このメソッドは、チェーンコードの
Token Admin
、指定された組織のOrg Admin
、またはアカウントのAccountOwner
によってコールできます。 -
getOnHoldDetailsWithOperationId
- このメソッドは、指定された操作IDおよびトークンの保留トランザクション詳細を返します。このメソッドは誰でも呼び出すことができます。
-
getOnHoldBalanceWithOperationId
- このメソッドは、指定された操作IDおよびトークンの保留残高を返します。このメソッドは誰でも呼び出すことができます。
トークン動作管理のメソッド- バーナブル動作
カスタム・メソッド
トークンSDKメソッドを使用して、ビジネス・アプリケーションのカスタム・メソッドを記述できます。
二重支出を回避するには、状態データベースで同じキーと値のペアを操作する複数の非同期関数を組み合せないでください。かわりに、bulkTransferTokens
メソッドを使用して、1つの方法で複数の転送を行います。
次の例は、カスタム・メソッドでトークンSDKメソッドを使用する方法を示しています。buyTicket
メソッドがコールされると、コール元のアカウントから販売者のアカウントに20個のトークンが転送され、転送のトランザクション・メッセージが返されます。
@Validator(yup.string(), yup.string(), yup.string(), yup.string(), yup.string())
public async buyTicket(token_id: string, seller_org_id: string, seller_user_id: string) {
const token = await this.getTokenObject(token_id);
/**
* The following method this.Ctx.Account.generateAccountId(token_id, seller_org_id, seller_user_id) generates account id of the seller.
*/
const seller_account_id = await this.Ctx.Account.generateAccountId(token_id, seller_org_id, seller_user_id);
/**
* The following method this.Ctx.Token.transfer(seller_account_id, 20, token) transfers the quantity 20 from caller's
* account & to seller's account.
*/
const transaction = await this.Ctx.Token.transfer(seller_account_id, 20, token);
return transaction;
}
カスタム・メソッドで複数のトークンSDKメソッドを使用する場合は、状態データベースの同じキーと値のペアに影響するメソッドを使用しないでください。次の例は、複数の転送を行う不正な方法を示しています。
@Validator(yup.string(), yup.string(), yup.string(), yup.string(), yup.string())
public async sendTokens(token_id: string, user1_org_id: string, user1_user_id: string, user2_org_id: string, user2_user_id: string) {
const token = await this.getTokenObject(token_id);
const user1_account_id = await Account.generateAccountId(token_id, user1_org_id, user1_user_id);
const user2_account_id = await Account.generateAccountId(token_id, user2_org_id, user2_user_id);
await token.transfer(user1_account_id, 20);
await token.transfer(user2_account_id, 30);
}
かわりに、次のコード・スニペットに示すように、bulkTransferTokens
メソッドを使用して、コール元のアカウントから複数のアカウントに転送します。
bulkTransferTokens(token_id: string, flow: object[])
ノート:
状態データベースの同じキーと値のペアに影響を与える可能性があるカスタム・メソッドで複数のトークンSDKメソッドを使用する場合は、トークン・チェーンコードのMVCC最適化を有効にします。詳細は、MVCC Optimizationを参照してください。トークンSDKメソッド
アクセス制御管理のメソッド
Token Admin
、Org Admin
またはAccountOwner
によってのみコールできます。この機能を使用して、操作が意図したユーザーのみが実行されるようにできます。未承認のアクセスはエラーになります。アクセス制御ファンクションを使用するには、../lib/auth
モジュールからAuthorization
クラスをインポートします。import { Authorization } from '../lib/auth';
-
addAdmin
- このメソッドは、トークン・チェーンコードの
Token Admin
としてユーザーを追加します。 -
removeAdmin
- このメソッドは、トークン・チェーンコードの
Token Admin
としてユーザーを削除します。 -
getAllAdmins
- このメソッドは、トークン・チェーンコードの
Token Admin
であるすべてのユーザーのリストを返します。 -
checkAuthorization
- このメソッドは、アクセス制御チェックを操作に追加するために使用します。特定のトークン・メソッドは、トークンの
Token Admin
またはAccountOwner
、または複数のアカウントを持つユーザーのMultipleAccountOwner
によってのみ実行できます。アクセス制御マッピングについては、../lib/constant.ts
ファイルを参照してください。アクセス制御は、../lib/constant.ts
ファイルを編集して変更できます。独自のアクセス制御を使用するか、アクセス制御を無効にするには、自動的に生成されたコントローラメソッドおよびカスタムメソッドからアクセス制御コードを削除します。export const TOKENACCESS = { ADMIN: { isUserTokenAdmin: ["Admin", "OrgAdmin"], addTokenAdmin: ["Admin"], removeTokenAdmin: ["Admin"], getAllAdmins: ["Admin", "OrgAdmin"], addOrgAdmin: ["Admin", "OrgAdminForOrgId"], removeOrgAdmin: ["Admin", "OrgAdminForOrgId"], getOrgAdmins: ["Admin", "OrgAdmin"], }, TOKEN: { save: ["Admin"], getAllTokens: ["Admin", "OrgAdmin"], get: ["Admin", "OrgAdmin"], update: ["Admin"], getDecimals: ["Admin", "OrgAdmin"], getTokensByName: ["Admin", "OrgAdmin"], addRoleMember: ["Admin", "OrgAdminRoleCheck"], removeRoleMember: ["Admin", "OrgAdminRoleCheck"], isInRole: ["Admin", "OrgAdminForAccountId", "AccountOwner"], getTotalMintedTokens: ["Admin", "OrgAdmin"], getNetTokens: ["Admin", "OrgAdmin"], getTokenHistory: ["Admin", "OrgAdmin"], }, ROLE: { getAccountsByRole: ["Admin"], getOrgAccountsByRole: ["Admin", "OrgAdminForOrgId"], getUsersByRole: ["Admin"], getOrgUsersByRole: ["Admin", "OrgAdminForOrgId"], }, TRANSACTION: { deleteTransactions: ["Admin"], },ACCOUNT: { createAccount: ["Admin", "OrgAdminForOrgId"], associateToken: ["Admin", "OrgAdminForAccountId"], getAllAccounts: ["Admin"], getAllOrgAccounts: ["Admin", "OrgAdminForOrgId"], getAccountsByUser: ["Admin", "OrgAdminForOrgId", "MultipleAccountOwner"], getAccount: ["Admin", "OrgAdminForAccountId", "AccountOwner"], history: ["Admin", "AccountOwner"], getAccountTransactionHistory: ["Admin", "OrgAdminForAccountId", "AccountOwner"], getAccountTransactionHistoryWithFilters: ["Admin", "OrgAdminForAccountId", "AccountOwner"], getSubTransactionsById: ["Admin", "TransactionInvoker"], getSubTransactionsByIdWithFilters: ["Admin", "TransactionInvoker"], getAccountBalance: ["Admin", "OrgAdminForAccountId", "AccountOwner"], getAccountOnHoldBalance: ["Admin", "OrgAdminForAccountId", "AccountOwner"], getOnHoldIds: ["Admin", "OrgAdminForAccountId", "AccountOwner"], getConversionHistory: ["Admin", "OrgAdminForAccountId", "AccountOwner"], }, ACCOUNT_STATUS: { get: ["Admin", "OrgAdminForAccountId", "AccountOwner"], history: ["Admin", "OrgAdminForAccountId", "AccountOwner"], activateAccount: ["Admin", "OrgAdminForOrgId"], suspendAccount: ["Admin", "OrgAdminForOrgId"], deleteAccount: ["Admin", "OrgAdminForOrgId"], }, TOKEN_CONVERSION: { initializeExchangePoolUser: ["Admin"], addConversionRate: ["Admin"], updateConversionRate: ["Admin"], getConversionRate: ["Admin", "OrgAdmin", "AnyAccountOwner"], getConversionRateHistory: ["Admin", "OrgAdmin", "AnyAccountOwner"], tokenConversion: ["Admin", "AnyAccountOwner"], getExchangePoolUser: ["Admin"], }, }
-
isUserTokenAdmin
- このメソッドは、ファンクションのコール元が
Token Admin
の場合、ブール値true
を返します。そうでない場合は、false
が戻されます。 -
addOrgAdmin
- このメソッドは、ユーザーを組織の
Org Admin
として追加します。 -
removeOrgAdmin
- このメソッドは、組織の
Org Admin
としてユーザーを削除します。 -
getOrgAdmins
- このメソッドは、組織の
Org Admin
であるすべてのユーザーのリストを返します。
トークン構成管理のメソッド
-
getTokenDecimals
- このメソッドは、小数トークンで使用可能な小数点以下の桁数を返します。
divisible
動作が指定されていない場合、デフォルト値は0です。 -
getAllTokens
- このメソッドは、状態データベースに保存されたすべてのトークン・アセットを返します。この方法では、Berkeley DB SQLリッチ問合せが使用され、リモートのOracle Blockchain Platformネットワークに接続されている場合にのみコールできます。
-
getTokensByName
- このメソッドは、指定された名前のすべてのトークン・アセットを返します。この方法では、Berkeley DB SQLリッチ問合せが使用され、リモートのOracle Blockchain Platformネットワークに接続されている場合にのみコールできます。
-
get
- このメソッドは、トークン・オブジェクトが状態データベースに存在する場合、トークン・オブジェクトを返します。
-
isTokenType
- このメソッドは、指定されたIDのトークン・アセットが存在するかどうかを示します。
-
save
- このメソッドはトークンを作成し、そのプロパティを状態データベースに保存します。
-
update
- このメソッドは、トークン・プロパティを更新します。トークン・アセットの作成後は、
token_desc
値とそのカスタム・プロパティのみを更新します。 -
getByRange
- このメソッドは、ファブリックの
getStateByRange
メソッドを内部的にコールします。指定されたIDを持つアセットがレジャーから返されても、このメソッドはアセットをコールヤ・アセット・タイプにキャストします。 -
history
- このメソッドは、指定されたトークンの履歴を返します。
アカウント管理の方法
-
getCallerAccountId
- このメソッドは、コール元のアカウント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
または指定された組織のOrg Admin
によってのみコールできます。 -
associateTokenToAccount
- このメソッドは、fungibleトークンをアカウントに関連付けます。このメソッドは、チェーンコードの
Token Admin
または関連する組織のOrg Admin
によってのみコールできます。 -
getAccountWithStatus
- このメソッドは、指定されたアカウントのアカウントの詳細(アカウント・ステータスを含む)を返します。
-
getAccount
- このメソッドは、指定されたアカウントのアカウントの詳細を返します。
-
history
- このメソッドは、指定されたアカウントのアカウント履歴詳細の配列を返します。
-
getAccountOnHoldBalance
- このメソッドは、指定された勘定科目の保留残高を返します。
-
getAllAccounts
- このメソッドは、すべてのアカウントのリストを返します。この方法では、Berkeley DB SQLリッチ問合せが使用され、リモートのOracle Blockchain Platformネットワークに接続されている場合にのみコールできます。
-
getUserByAccountId
- このメソッドは、指定されたアカウントのユーザー詳細を返します。
-
getAccountBalance
- このメソッドは、指定された勘定科目の勘定科目残高を返します。
-
getAllOrgAccounts
- このメソッドは、指定された組織に属するすべてのトークン・アカウントのリストを返します。
ロール管理の方法
-
addRoleMember
- このメソッドは、指定されたユーザーおよびトークンにロールを追加します。
-
removeRoleMember
- このメソッドは、指定されたユーザーおよびトークンからロールを削除します。
-
getAccountsByRole
- このメソッドは、指定されたロールおよびトークンのすべてのアカウントのリストを返します。
-
getAccountsByUser
- このメソッドは、指定されたユーザーのすべてのアカウントIDのリストを返します。
-
getUsersByRole
- このメソッドは、指定されたロールおよびトークンのすべてのユーザーのリストを返します。
-
isInRole
- このメソッドは、ユーザーおよびトークンに指定されたロールがあるかどうかを示します。
-
roleCheck
- このメソッドは、指定されたアカウントIDが任意のロールのメンバーかどうかを確認します。
-
getOrgUsersByRole
- このメソッドは、指定された組織内で指定されたロールを持つすべてのユーザーに関する情報を返します。
-
getOrgAccountsByRole
- このメソッドは、指定された組織内で指定されたロールを持つすべてのアカウントに関する情報を返します。
トランザクション履歴管理の方法
-
getTransactionById
- このメソッドは、
Transaction
アセットの履歴を返します。 -
deleteHistoricalTransactions
- このメソッドは、指定された勘定科目のトランザクション履歴詳細の配列を返します。
-
getAccountTransactionHistory
- このメソッドは、指定された勘定科目のトランザクション履歴詳細の配列を返します。
-
getAccountTransactionHistoryWithFilters
- このメソッドは、指定された勘定科目のトランザクション履歴詳細の配列を返します。このメソッドは、リモートのOracle Blockchain Platformネットワークに接続されている場合にのみコールできます。
-
getSubTransactionHistory
- このメソッドは、指定されたトランザクションのトランザクション履歴詳細の配列を返します。
-
getSubTransactionHistoryWithFilters
- このメソッドは、指定されたトランザクションのサブトランザクション履歴詳細の配列を返します。
トークン動作管理
../lib/token
モジュールからToken
クラスをインポートします。
import { Token } from '../lib/token';
トークン動作管理のメソッド- 最小化可能な動作
-
mint
- このメソッドは、メソッドの呼出し元が所有するトークンの量をミントします。発信者にはアカウントとマイナー・ロールが必要です。数量は、仕様ファイルの
divisible
動作のdecimal
パラメータで指定された10進値内である必要があります。 -
getTotalMintedTokens
- このメソッドは、ミントされたトークンの合計数を返します。
-
getNetTokens
- このメソッドは、システムで使用可能なトークンの正味数量を返します。ネット・トークンは、トークンが書き込まれた後に残るトークンの量です。方程式形式: net tokens = total minted tokens - total burned tokens。トークンが書き込まれていない場合、ネット・トークンの数は、ミント・トークンの合計数に等しくなります。
-
getMaxMintQuantity
- このメソッドは、トークンの最大最小テーブル数量を返します。
max_mint_quantity
動作が指定されていない場合、デフォルト値は0で、任意の数のトークンをミントできます。
トークン動作管理のメソッド- 転送可能な動作
-
transfer
- このメソッドは、トランザクション・コール元から
to_account_id
アカウントにトークンを転送します。このメソッドの呼出し側にはアカウントが必要であり、数量は仕様ファイルのdivisible
動作のdecimal
パラメータで指定された10進値内にある必要があります。 -
bulkTransfer
- このメソッドは、呼出し元アカウントから
flow
オブジェクトで指定されたアカウントへのトークンの一括転送を実行するために使用されます。このメソッドのコール元には、アカウントがすでに作成されている必要があります。
トークン動作管理のメソッド- 保持可能な動作
-
hold
- このメソッドは、
to_account_id
アカウントを持つトークンの所有者のかわりに保留を作成します。公証人勘定が指定されており、保留の完了または解除を担当します。保留が作成されると、支払人から指定されたトークン残高が保留になります。保留残高は、保留が完了または解除されるまで転送できません。このメソッドのコール元には、アカウントがすでに作成されている必要があります。 -
executeHold
- このメソッドはトークンの保留を完了し、以前に保留されていた特定数のトークンを受領者に転送します。
quantity
値が実際の保留値より小さい場合、残りの金額はトークンの元の所有者が再度使用できます。このメソッドは、指定された操作IDのnotary
ロールを持つAccountOwner
IDによってのみコールできます。保留は公証人によってのみ完了できます。 -
releaseHold
- このメソッドは、トークンの保留を解除します。転送が完了しておらず、保持されているすべてのトークンを元の所有者が再度使用できます。このメソッドは、指定された制限時間内に
notary
ロールを持つAccountOwner
ID、または指定された制限時間後に支払者、受取人または公証人によってコールできます。 -
getOnHoldIds
- このメソッドは、指定されたアカウントのすべての保持IDのリストを返します。
-
getOnHoldDetailsWithOperationId
- このメソッドは、指定された操作IDおよびトークンの保留トランザクション詳細を返します。
-
getOnHoldBalanceWithOperationId
- このメソッドは、指定された操作IDおよびトークンの保留残高を返します。このメソッドは誰でも呼び出すことができます。
トークン動作管理のメソッド- バーナブル動作