Controle de Acesso
O suporte à tokenização inclui um recurso de controle de acesso que suporta mecanismos de controle baseados em função e em propriedade.
Token Admin
ou Token Minter
. Com o controle baseado em propriedade, você pode restringir o acesso dos usuários aos ativos que eles não possuem. Com o controle de acesso baseado em propriedade, métodos específicos podem ser chamados pelos usuários que possuem os ativos, como Token Owner
ou Account Owner
. Para obter informações específicas sobre o controle de acesso para métodos, consulte as entradas individuais para os métodos documentados nos seguintes tópicos:
- Administrador de Tokens
- Os usuários
Token Admin
podem ser designados quando um chaincode de token é implantado. As informações do usuárioToken Admin
são salvas no banco de dados de estado. Um usuárioToken Admin
pode conceder e remover privilégiosToken Admin
para outros usuários. Um usuárioToken Admin
não pode remover seus próprios privilégiosToken Admin
. Um usuárioToken Admin
pode designar a atribuiçãoOrg Admin
, minter, burner ou notary a qualquer usuário. - Administração da Organização
- Os métodos estendidos do Token Taxonomy Framework suportam a função
Org Admin
. Um usuárioToken Admin
pode designar a atribuiçãoOrg Admin
a qualquer usuário. Os usuáriosOrg Admin
têm privilégios administrativos, mas somente dentro de sua organização. Eles podem criar contas ou ver saldos de contas, mas apenas para usuários em sua organização. Os usuáriosOrg Admin
que têm uma atribuição de mineiro, gravador ou notário podem atribuir essa atribuição a outros usuários em sua organização. - Token Minter
- Um usuário com a atribuição de minter é
Token Minter
e pode usar tokens de mint. - Gravador de Token
- Um usuário que recebe a atribuição de gravador é um
Token Burner
e pode gravar tokens. - Token Notary
- Um usuário que recebe a atribuição de notário é um
Token Notary
. UmToken Notary
atua como um terceiro nas transações entre pagadores e favorecidos. UmToken Notary
pode acionar a conclusão de uma transferência de token de um pagador para um favorecido ou pode devolver os tokens à conta do pagador. - Gerenciador de Vault
- Um usuário que recebeu a atribuição de vault é o
Vault Manager
. OVault Manager
pode desbloquear um NFT bloqueado. A função de cofre é aplicável apenas para os padrões ERC-721 e ERC-1155 estendidos. A atribuição da atribuição de vault a um usuário é um pré-requisito para bloquear NFTs. Somente um usuário por chaincode pode receber a atribuição de vault.
O controle de acesso baseado em atribuição e o controle de acesso baseado em propriedade também são combinados em alguns métodos. Por exemplo, o controle de acesso baseado em função permite que um usuário com a função de mineiro crie tokens. Com o controle de acesso baseado em propriedade, um proprietário de token não fungível pode modificar as propriedades personalizadas de um token, mas não pode modificar os metadados do token. Quando um usuário com a atribuição de minter cria um token não fungível (NFT), ele se torna o proprietário do NFT. Como proprietário desse NFT, eles podem modificar as propriedades personalizadas (para um token de coleção de arte, o preço do token é uma propriedade personalizada). Depois que o criador do token transfere o NFT para outro usuário, o segundo usuário se torna o proprietário e o usuário que criou o token não é mais o proprietário do token. Por causa do controle de acesso baseado em propriedade, o novo proprietário agora pode atualizar um valor de propriedade personalizado, mas o proprietário anterior não pode mais. Por causa do controle de acesso baseado em função, o proprietário anterior ainda pode criar um NFT, mas o novo usuário não pode.
Você também pode criar suas próprias funções de controle de acesso ou desativar o controle de acesso. O código gerado automaticamente que controla o acesso é mostrado nos exemplos a seguir.
await this.Ctx.<Token Standard>Auth.checkAuthorization(...)
auth, err := t.Ctx.<Token Standard>Auth.CheckAuthorization(...)
Observação:
Para remover a função de controle de acesso gerada automaticamente, remova a linha de código anterior do seu projeto TypeScript ou Go.