ERC-1155トークン化フロー
ERC-1155トークン・プロジェクトをデプロイした後、トークン管理者およびトークン所有者は、トークンを作成し、ライフサイクル操作を完了するための一般的なフローに従います。
トークン・プロジェクトをデプロイすると、初期化メソッドに渡されるリスト内のユーザーが、チェーンコードのトークン管理者になります。デプロイメント後、トークンを作成し、ライフサイクル操作を完了するための一般的なフローは、次のステップに従います:
トークン管理者の操作:
- トークンを所有するユーザー、またはトークン関連の操作を実行するユーザーのユーザー・アカウントを作成します。
- ユーザー・アカウントごとに、トークン・アカウントを作成します。ユーザーは複数の代替可能トークン・アカウントを持つことができますが、非代替トークン(NFT)アカウントは1つのみです。トークン管理者は、
createAccount
メソッドを使用して、ユーザー・アカウントとトークン・アカウントを(別々に作成するのではなく)同時に作成できます。 - 必要に応じて、代替可能トークンを作成します。代替可能トークンを初期化するときに、関連付けるメタデータおよび動作をトークンに割り当てることができます。
- 代替可能トークンの場合、ユーザーの代替可能トークン・アカウントを特定の代替可能トークンに関連付けます。
- 必要に応じて、ユーザーのトークン・アカウントにミンターおよびバーナー・ロールを追加します。
トークン所有者の操作:
- 特定のトークンに対してミンター・ロールを持つユーザーは、NFTまたは代替可能トークンを作成(ミント)できます。
- ユーザーは、アカウント間でトークンを転送し、アカウント残高を確認できます。
- 特定のトークンのバーナー・ロールを持つユーザーは、NFTまたは代替可能トークンを破棄(バーン)できます。
ボールト・マネージャの操作:
- ボールト・ロールを持つユーザーは、NFTをロックできます。ロックされたNFTは、バーンしたり、他のユーザーに転送できません。
次の図は、ERC-1155トークン化シナリオの全体的なプロセス・フローを示しています。
次の表に、ERC-1155トークン・プロジェクトをスキャフォールドするときに自動的に生成されるメソッドの概要を示します。
メソッド・カテゴリ | 自動生成メソッド(TypeScript) | 自動生成メソッド(Go) | コール元 | 説明 |
---|---|---|---|---|
管理者の管理 | init |
Init |
管理者 | トークン・チェーンコードを初期化します |
isTokenAdmin |
IsTokenAdmin |
管理者 | コール元が管理者の場合はtrueを返します | |
addTokenAdmin |
AddTokenAdmin |
管理者 | 管理者を追加します | |
removeTokenAdmin |
RemoveTokenAdmin |
管理者 | 管理者を削除します | |
getAllTokenAdmins |
GetAllTokenAdmins |
管理者 | すべての管理者を返します | |
アカウントの管理 | createAccount |
CreateAccount |
管理者 | ユーザー・アカウントおよびトークン・アカウントを作成します |
createUserAccount |
CreateUserAccount |
管理者 | ユーザー・アカウントを作成します | |
createTokenAccount |
CreateTokenAccount |
管理者 | トークン・アカウントを作成します | |
associateFungibleTokenAccount |
AssociateFungibleTokenAccount |
管理者 | 代替可能トークン・アカウントを代替可能トークンに関連付けます | |
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 |
管理者(代替可能トークン) /ミンター・ロールを持つユーザー(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 |
管理者 | 指定されたトークンの小数点以下の桁数を返します |