访问控制

令牌化支持包括访问控制功能,该功能支持基于角色的控制机制和基于所有权的控制机制。

通过基于角色的控制,用户可以调用具有关联角色的特定方法,例如 Token AdminToken Minter。通过基于所有权的控制,您可以限制用户访问他们不拥有的资产。通过基于所有权的访问控制,拥有资产的用户可以调用特定方法,例如 Token OwnerAccount 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 NotaryToken Notary 在付款人与收款人之间的交易中充当第三方。Token Notary 可以触发从付款人到收款人的令牌转移完成,也可以将令牌返回到付款人的账户。
Vault Manager
分配有 Vault 角色的用户是 Vault ManagerVault Manager 可以解锁锁的 NFT。Vault 角色仅适用于扩展的 ERC-721 和 ERC-1155 标准。将 Vault 角色分配给用户是锁定 NFT 的先决条件。每个链代码只能向一个用户分配 Vault 角色。
基于所有权的访问控制支持以下角色:
账户所有者
任何具有帐户的用户都是 Account Owner
令牌所有者
当前拥有不可替换令牌的任何用户都是该令牌的 Token Owner

在某些方法中,还结合了基于角色的访问控制和基于所有权的访问控制。例如,基于角色的访问控制允许具有 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 项目中删除上一行代码。