アクセス制御
トークン化のサポートには、役割ベースの制御メカニズムと所有権ベースの制御メカニズムの両方をサポートするアクセス制御機能が含まれています。
ロールベースの制御では、ユーザーは、
Token Admin
やToken Minter
などのロールが関連付けられている特定のメソッドをコールできます。所有権ベースの制御では、ユーザーが所有していないアセットにアクセスできないように制限できます。所有権ベースのアクセス制御では、アセットを所有するユーザー(Token Owner
やAccount 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人のユーザーのみです。
所有権ベースのアクセス制御では、次のペルソナがサポートされます。
一部の方法では、ロールベースのアクセス制御と所有権ベースのアクセス制御も結合されています。たとえば、ロールベースのアクセス制御では、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プロジェクトから前のコード行を削除します。