访问控制
令牌化支持包括访问控制功能,该功能支持基于角色的控制机制和基于所有权的控制机制。
通过基于角色的控制,用户可以调用具有关联角色的特定方法,例如
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、刻录器或公证人角色分配给任何用户。 - 组织管理员
- 扩展的标记分类框架方法支持
Org Admin
角色。Token Admin
用户可以将Org Admin
角色分配给任何用户。Org Admin
用户具有管理权限,但仅在其组织内。他们可以创建帐户或查看帐户余额,但只能为其组织中的用户创建帐户或查看帐户余额。具有矿工、燃烧器或公证人角色的Org Admin
用户可以将该角色分配给其组织中的其他用户。 - 令牌 Minter
- 分配了 minter 角色的用户是
Token Minter
,并且可以 mint 标记。 - Token Burner
- 分配有刻录器角色的用户是
Token Burner
,并且可以刻录令牌。 - 令牌公证
- 分配有公证人角色的用户是
Token Notary
。Token Notary
在付款人与收款人之间的交易中充当第三方。Token Notary
可以触发从付款人到收款人的令牌转移完成,也可以将令牌返回到付款人的账户。 - Vault Manager
- 分配有 Vault 角色的用户是
Vault Manager
。Vault Manager
可以解锁锁的 NFT。Vault 角色仅适用于扩展的 ERC-721 和 ERC-1155 标准。将 Vault 角色分配给用户是锁定 NFT 的先决条件。每个链代码只能向一个用户分配 Vault 角色。
在某些方法中,还结合了基于角色的访问控制和基于所有权的访问控制。例如,基于角色的访问控制允许具有 minter 角色的用户创建令牌。通过基于所有权的访问控制,不可替代的令牌所有者可以修改令牌的定制属性,但不能修改令牌元数据。当具有 minter 角色的用户创建不可替换令牌 (non-fungible token,NFT) 时,它们将成为 NFT 的所有者。作为该 NFT 的所有者,他们可以修改自定义属性(对于艺术品集合令牌,令牌价格是一个自定义属性)。令牌创建者将 NFT 传输给其他用户后,第二个用户将成为所有者,创建令牌的用户不再是令牌的所有者。由于基于所有权的访问控制,新所有者现在可以更新定制属性值,但以前的所有者不再可以。由于基于角色的访问控制,以前的所有者仍然可以铸造 NFT,但新用户不能。
您还可以编写自己的访问控制功能,或禁用访问控制。以下示例显示了控制访问的自动生成的代码。
TypeScript:
await this.Ctx.<Token Standard>Auth.checkAuthorization(...)
开始:
auth, err := t.Ctx.<Token Standard>Auth.CheckAuthorization(...)
注意:
要删除自动生成的访问控制函数,请从 TypeScript 或 Go 项目中删除上一行代码。