ERC-1155トークン化フロー
ERC-1155トークン・プロジェクトをデプロイすると、トークン管理者およびトークン所有者は、トークンを作成してライフサイクル操作を完了するための一般的なフローに従います。
トークン・プロジェクトをデプロイすると、初期化メソッドに渡されるリスト内のユーザーがチェーンコードのトークン管理者になります。デプロイメント後、トークンを作成してライフサイクル操作を完了するための一般的なフローは、次のステップに従います。
トークン管理者操作:
- トークンを所有したり、トークン関連の操作を完了するユーザー・アカウントを作成します。
- ユーザー・アカウントごとに、トークン・アカウントを作成します。ユーザーは複数の実行可能なトークン・アカウントを持つことができますが、実行できないトークン(NFT)アカウントは1つのみです。トークン管理者は、
createAccount
メソッドを使用して、ユーザー・アカウントとトークン・アカウントを個別に作成するのではなく、同時に作成できます。 - 必要に応じて、実行可能トークンを作成します。可変トークンを初期化するときに、関連するメタデータおよび動作をトークンに割り当てることができます。
- 実行可能トークンの場合は、ユーザーの実行可能なトークン・アカウントを特定の実行可能なトークンに関連付けます。
- 必要に応じて、ユーザーのトークン・アカウントにminterロールとburnerロールを追加します。
トークン所有者操作:
- 特定のトークンに対してminterロールを持つユーザーは、NFTまたはfungibleトークンを作成できます(mint)。
- ユーザーは、アカウント間でトークンを転送し、アカウント残高を確認できます。
- 特定のトークンに対してバーナ・ロールを持つユーザーは、NFTまたはファニブル・トークンを破棄(バーン)できます。
Vaultマネージャの操作:
- ボールト・ロールを持つユーザーは、NFTをロックできます。ロックされたNFTは、他のユーザーに焼却または転送できません。
次の図は、ERC-1155トークン化シナリオのプロセス・フロー全体を示しています。
次の表に、ERC-1155トークン・プロジェクトのスキャフォールド時に自動的に生成されるメソッドの概要を示します。
メソッド・カテゴリ | 自動生成メソッド(TypeScript) | 自動生成方法(実行) | コール元 | 説明 |
---|---|---|---|---|
管理者管理 | init |
Init |
管理者 | トークン・チェーンコードを初期化します |
isTokenAdmin |
IsTokenAdmin |
管理者 | コール元が管理の場合はtrueを返します | |
addTokenAdmin |
AddTokenAdmin |
管理者 | 管理者を追加します | |
removeTokenAdmin |
RemoveTokenAdmin |
管理者 | 管理者の削除 | |
getAllTokenAdmins |
GetAllTokenAdmins |
管理者 | すべての管理者を返します | |
アカウント管理 | createAccount |
CreateAccount |
管理者 | ユーザー・アカウントおよびトークン・アカウントを作成します。 |
createUserAccount |
CreateUserAccount |
管理者 | ユーザー・アカウントを作成します。 | |
createTokenAccount |
CreateTokenAccount |
管理者 | トークン・アカウントを作成します。 | |
associateFungibleTokenAccount |
AssociateFungibleTokenAccount |
管理者 | 楽しいトークン・アカウントをfungibleトークンに関連付けます。 | |
getAccountHistory |
GetAccountHistory |
管理者/アカウント所有者 | トークン・アカウントの履歴を返します | |
getAccountTransactionHistory |
GetAccountTransactionHistory |
管理者/アカウント所有者 | アカウントのトランザクション履歴を返します | |
getAccount |
GetAccount |
管理者/アカウント所有者 | トークン・アカウントの詳細を返します | |
getAllAccounts |
GetAllAccounts |
管理者 | すべてのユーザー・アカウントの詳細を返します | |
getAccountDetailsByUser |
GetAccountDetailsByUser |
管理者/アカウント所有者 | ユーザー・アカウントおよび関連するすべてのトークンの詳細を返します | |
getUserByAccountId |
GetUserByAccountId |
すべてのユーザー | アカウントIDのユーザー詳細を返します | |
ロール管理 | addRole |
AddRole |
管理者 | ユーザーおよびトークンにロールを追加します。 |
isInRole |
IsInRole |
管理者/アカウント所有者 | ユーザーがトークンの指定されたロールを持っているかどうかを返します | |
removeRole |
RemoveRole |
管理者 | ユーザーおよびトークンからロールを削除します。 | |
getAccountsByRole |
GetAccountsByRole |
管理者 | 指定されたロールおよびトークンのアカウントIDを返します | |
getUsersByRole |
GetUsersByRole |
管理者 | 指定されたロールおよびトークンのユーザーのリストを返します | |
最小化可能な動作 | mintBatch |
MintBatch |
最小ロールを持つユーザー | 複数のトークンをミント |
転送可能な動作 | batchTransferFrom |
BatchTransferFrom |
すべてのユーザー | ユーザー間でトークンを転送します |
safeBatchTransferFrom |
SafeBatchTransferFrom |
すべてのユーザー | メソッド・コール元と別のユーザーの間でトークンを転送します。 | |
balanceOfBatch |
BalanceOfBatch |
管理者/アカウント所有者 | 複数のユーザーとトークンのトークン口座残高を返します | |
exchangeToken |
ExchangeToken |
アカウント所有者 | トークン・アカウント間でトークンを交換します。 | |
バーナブル動作 | burnBatch |
BurnBatch |
バーナー・ロールを持つユーザー | トークンを書き込み |
トークン管理 | create<Token Name>Token |
Create<Token Name>Token |
Admin (Fungible Token) / Minterロールを持つユーザー(NFT) | トークンを作成します |
update<Token Name>Token |
Update<Token Name>Token |
管理(有形トークン) /トークン所有者(NFT) | トークンの更新 | |
getTokenHistory |
GetTokenHistory |
すべてのユーザー | トークンの履歴を返します | |
getTransactionById |
GetTransactionById |
すべてのユーザー | 指定されたトランザクションの詳細を返します | |
deleteHistoricalTransactions |
DeleteHistoricalTransactions |
管理者 | 指定した時間より前にトランザクションを削除します | |
getAllTokens |
GetAllTokens |
管理者 | すべてのトークン・アセットを返します | |
getTokenById |
GetTokenById |
管理者/トークン所有者 | トークンを返します | |
getAllTokensByUser |
GetAllTokensByUser |
管理者/アカウント所有者 | 指定したユーザーが所有するすべてのトークンを返します。 | |
ownerOf |
OwnerOf |
すべてのユーザー | 指定されたトークンの所有者のユーザー詳細を返します | |
URI |
URI |
すべてのユーザー | 指定されたトークンのURIを返します | |
name |
Name |
すべてのユーザー | 指定されたトークンの名前を返します | |
totalSupply |
TotalSupply |
管理者 | 指定されたトークンのミント・トークンの数を返します | |
totalNetSupply |
TotalNetSupply |
管理者 | ミント・トークンの数から、指定したトークンの焼却トークンの数を差し引いた数を返します | |
getTokensByName |
getTokensByName |
管理者 | 指定されたトークン名のすべてのトークン・アセットを返します | |
getTokenDecimal |
getTokenDecimal |
管理者 | 指定されたトークンの小数点以下の桁数を返します |