アクセス制御

トークン化のサポートには、役割ベースの制御メカニズムと所有権ベースの制御メカニズムの両方をサポートするアクセス制御機能が含まれています。

ロールベースの制御では、ユーザーは、Token AdminToken Minterなどのロールが関連付けられている特定のメソッドをコールできます。所有権ベースの制御では、ユーザーが所有していないアセットにアクセスできないように制限できます。所有権ベースのアクセス制御では、アセットを所有するユーザー(Token OwnerAccount Ownerなど)が特定のメソッドをコールできます。メソッドのアクセス制御の詳細は、次のトピックで説明するメソッドの個々のエントリを参照してください。
ロールベースのアクセス制御では、次のペルソナがサポートされます。
トークン管理
Token Adminユーザーは、トークン・チェーンコードのデプロイ時に割り当てることができます。Token Adminユーザー情報は、状態データベースに保存されます。Token Adminユーザーは、他のユーザーに対してToken Admin権限を付与および削除できます。Token Adminユーザーは、独自のToken Admin権限を削除できません。Token Adminユーザーは、任意のユーザーにOrg Admin、minter、burnerまたはnotaryロールを割り当てることができます。
組織管理
拡張トークン・タクソノミ・フレームワーク・メソッドでは、Org Adminロールがサポートされます。Token Adminユーザーは、Org Adminロールを任意のユーザーに割り当てることができます。Org Adminユーザーは、組織内でのみ管理権限を持ちます。勘定科目を作成したり、勘定科目残高を表示できますが、組織内のユーザーのみが表示できます。マイナー・ロール、バーナー・ロールまたは公証ロールを持つOrg Adminユーザーは、そのロールを組織内の他のユーザーに割り当てることができます。
トークン・ミンター
minterロールが割り当てられているユーザーはToken Minterで、トークンをミントできます。
トークン・バーナー
バーナー・ロールが割り当てられているユーザーはToken Burnerで、トークンを書き込むことができます。
トークン公証人
公証ロールが割り当てられているユーザーは、Token Notaryです。Token Notaryは、支払者と受取人の間のトランザクションにおいてサード・パーティとして機能します。Token Notaryは、支払者から受取人へのトークン転送の完了をトリガーするか、かわりに支払者のアカウントにトークンを返すことができます。
Vaultマネージャ
ボールト・ロールが割り当てられているユーザーは、Vault Managerです。Vault Managerは、ロックされたNFTのロックを解除できます。ボールト役割は、拡張されたERC-721およびERC-1155標準にのみ適用できます。NFTをロックするための前提条件は、ボールト・ロールをユーザーに割り当てることです。ボールト・ロールを割り当てることができるのは、チェーンコードごとに1人のユーザーのみです。
所有権ベースのアクセス制御では、次のペルソナがサポートされます。
アカウント所有者
アカウントを持つユーザーは、Account Ownerです。
トークン所有者
現在、非代替トークンを所有しているユーザーは、そのトークンのToken Ownerです。

一部の方法では、ロールベースのアクセス制御と所有権ベースのアクセス制御も結合されています。たとえば、ロールベースのアクセス制御では、minterロールを持つユーザーがトークンを作成できます。所有権ベースのアクセス制御では、非代替トークン所有者はトークンのカスタムプロパティーを変更できますが、トークンメタデータは変更できません。minterロールを持つユーザーが非代替トークン(NFT)を作成すると、そのユーザーはNFTの所有者になります。そのNFTの所有者として、カスタム・プロパティを変更できます(アート・コレクション・トークンの場合、トークン価格はカスタム・プロパティです)。トークン作成者がNFTを別のユーザーに転送すると、2番目のユーザーが所有者となり、トークンを作成したユーザーがトークンの所有者ではなくなります。所有権ベースのアクセス制御により、新しい所有者はカスタム・プロパティ値を更新できるようになりましたが、前の所有者は更新できなくなります。ロールベースのアクセス制御のため、前の所有者は引き続きNFTをミントできますが、新しいユーザーはできません。

独自のアクセス制御関数を作成したり、アクセス制御を無効にしたりすることもできます。アクセスを制御する自動生成されたコードを次の例に示します。

TypeScript:
await this.Ctx.<Token Standard>Auth.checkAuthorization(...)
移動:
auth, err := t.Ctx.<Token Standard>Auth.CheckAuthorization(...)

ノート:

自動生成されたアクセス制御関数を削除するには、TypeScriptまたはGoプロジェクトから前のコード行を削除します。