Ir Métodos para Status da Conta de Token ERC-721

O Blockchain App Builder gera automaticamente métodos que você pode usar para gerenciar o status da conta para tokens que usam o padrão ERC-721 estendido.

Você pode usar os métodos a seguir para colocar contas de usuário de token nos estados ativo, suspenso ou excluído.

Quando uma conta é suspensa, o usuário da conta não pode concluir nenhuma operação de gravação, que inclui cunhagem, gravação e transferência de tokens. Além disso, outros usuários não podem transferir tokens para uma conta suspensa. Uma conta suspensa ainda pode concluir as operações de leitura.

Uma conta com um saldo de token diferente de zero não pode ser excluída. Você deve transferir ou gravar todos os tokens em uma conta antes de excluir a conta. Depois que uma conta estiver no estado excluída, o estado da conta não poderá ser alterado de volta para ativo ou suspenso.

Métodos de Status da Conta Gerados Automaticamente

GetAccountStatus
Esse método obtém o status atual da conta de token. Esse método pode ser chamado pelo Token Admin do chaincode ou pelo proprietário da conta do token.
func (t *Controller) GetAccountStatus(orgId string, userId string) (interface{}, error) {
      accountId, err := t.Ctx.ERC721Account.GenerateAccountId(orgId, userId)
      if err != nil {
            return nil, fmt.Errorf("error in getting the generating accountId of (Org-Id: %s, User-Id: %s)", orgId, userId)
      }
      auth, err := t.Ctx.ERC721Auth.CheckAuthorization("ERC721AccountStatus.Get", "TOKEN", map[string]string{"accountId": accountId})
      if err != nil && !auth {
            return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
      }
      accountStatus, err := t.Ctx.ERC721AccountStatus.GetAccountStatus(accountId)
      if err != nil {
            return t.Ctx.ERC721AccountStatus.GetDefaultAccountStatus(accountId)
      }
      return accountStatus, nil
}
Parâmetros:
  • orgId: string – O ID do prestador de serviço de associação (MSP) do usuário na organização atual.
  • userId: string – O nome de usuário ou o ID de e-mail do usuário.
Retorna:
  • Com êxito, uma representação JSON do status da conta de token. Se nenhum status for encontrado no razão da conta porque a conta foi criada antes da funcionalidade de status da conta estar disponível, o status será listado como active na resposta.
Exemplo de valor de retorno:
{
    "AssetType": "oaccountStatus",
    "StatusId": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7",
    "AccountId": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
    "Status": "active"
}
GetAccountStatusHistory
Este método obtém o histórico do status da conta. Esse método pode ser chamado pelo Token Admin do chaincode ou pelo proprietário da conta do token.
func (t *Controller) GetAccountStatusHistory(orgId string, userId string) (interface{}, error) {
      accountId, err := t.Ctx.ERC721Account.GenerateAccountId(orgId, userId)
      if err != nil {
            return nil, fmt.Errorf("error in getting the generating accountId of (Org-Id: %s, User-Id: %s)", orgId, userId)
      }
      _, err = t.Ctx.ERC721Account.GetAccount(accountId)
      if err != nil {
            return nil, fmt.Errorf("error in GetAccountStatusHistory: %s", err)
      }
      auth, err := t.Ctx.ERC721Auth.CheckAuthorization("ERC721AccountStatus.Get", "TOKEN", map[string]string{"accountId": accountId})
      if err != nil && !auth {
            return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
      }
      statusId, err := t.Ctx.ERC721AccountStatus.GenerateAccountStatusId(accountId)
      if err != nil {
            return nil, err
      }
      accountStatusHistory, err := t.Ctx.ERC721AccountStatus.History(statusId)
      if err != nil {
            return []map[string]interface{}{}, nil
      }
      return accountStatusHistory, nil
}
Parâmetros:
  • orgId: string – O ID do prestador de serviço de associação (MSP) do usuário na organização atual.
  • userId: string – O nome de usuário ou o ID de e-mail do usuário.
Retorna:
  • Com êxito, o histórico de status da conta no formato JSON.
Exemplo de valor de retorno:
[
  {
    "IsDelete": "false",
    "Timestamp": "2022-12-02T16:20:34+05:30",
    "TxId": "af1601c7a14b4becf4bb3b285d85553b39bf234caaf1cd488a284a31a2d9df78",
    "Value": {
      "AccountId": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
      "AssetType": "oaccountStatus",
      "Status": "suspended",
      "StatusId": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7"
    }
  },
  {
    "IsDelete": "false",
    "Timestamp": "2022-12-02T16:19:15+05:30",
    "TxId": "4b307b989063e43add5357ab110e19174d586b9746cc8a30c9aa3a2b0b48a34e",
    "Value": {
      "AccountId": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
      "AssetType": "oaccountStatus",
      "Status": "active",
      "StatusId": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7"
    }
  }
]
ActivateAccount
Este método ativa uma conta de token. Este método pode ser chamado somente por um Token Admin do chaincode. As contas excluídas não podem ser ativadas. Para todas as contas criadas antes da funcionalidade de status da conta estar disponível, você deve chamar esse método para definir o status da conta como active.
func (t *Controller) ActivateAccount(orgId string, userId string) (interface{}, error) {
    accountId, err := t.Ctx.ERC721Account.GenerateAccountId(orgId, userId)
    if err != nil {
        return nil, fmt.Errorf("error in getting the generating accountId of (Org-Id: %s, User-Id: %s)", orgId, userId)
    }
    auth, err := t.Ctx.ERC721Auth.CheckAuthorization("ERC721AccountStatus.ActivateAccount", "TOKEN")
    if err != nil && !auth {
        return nil, fmt.Errorf("error in authorizing the caller  %s", err.Error())
    }
    return t.Ctx.ERC721Account.ActivateAccount(accountId)
}
Parâmetros:
  • orgId: string – O ID do prestador de serviço de associação (MSP) do usuário na organização atual.
  • userId: string – O nome de usuário ou o ID de e-mail do usuário.
Retorna:
  • Com êxito, uma representação JSON do status da conta de token.
Exemplo de valor de retorno:
{
    "AssetType": "oaccountStatus",
    "StatusId": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7",
    "AccountId": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
    "Status": "active"
}
SuspendAccount
Este método suspende uma conta de token. Este método pode ser chamado somente por um Token Admin do chaincode. Depois que uma conta for suspensa, você não poderá concluir nenhuma operação que atualize a conta. Uma conta excluída não pode ser suspensa.
func (t *Controller) SuspendAccount(orgId string, userId string) (interface{}, error) {
    accountId, err := t.Ctx.ERC721Account.GenerateAccountId(orgId, userId)
    if err != nil {
        return nil, fmt.Errorf("error in getting the generating accountId of (Org-Id: %s, User-Id: %s)", orgId, userId)
    }
    auth, err := t.Ctx.ERC721Auth.CheckAuthorization("ERC721AccountStatus.SuspendAccount", "TOKEN")
    if err != nil && !auth {
        return nil, fmt.Errorf("error in authorizing the caller  %s", err.Error())
    }
    return t.Ctx.ERC721Account.SuspendAccount(accountId)
}
Parâmetros:
  • orgId: string – O ID do prestador de serviço de associação (MSP) do usuário na organização atual.
  • userId: string – O nome de usuário ou o ID de e-mail do usuário.
Retorna:
  • Com êxito, uma representação JSON do status da conta de token.
Exemplo de valor de retorno:
{
    "AssetType": "oaccountStatus",
    "StatusId": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7",
    "AccountId": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
    "Status": "suspended"
}
DeleteAccount
Este método exclui uma conta de token. Este método pode ser chamado somente por um Token Admin do chaincode. Depois que uma conta for excluída, você não poderá concluir nenhuma operação que atualize a conta. A conta excluída está em um estado final e não pode ser alterada para nenhum outro estado. Para excluir uma conta, o saldo da conta deve ser zero.
func (t *Controller) DeleteAccount(orgId string, userId string) (interface{}, error) {
    accountId, err := t.Ctx.ERC721Account.GenerateAccountId(orgId, userId)
    if err != nil {
        return nil, fmt.Errorf("error in getting the generating accountId of (Org-Id: %s, User-Id: %s)", orgId, userId)
    }
    auth, err := t.Ctx.ERC721Auth.CheckAuthorization("ERC721AccountStatus.DeleteAccount", "TOKEN")
    if err != nil && !auth {
        return nil, fmt.Errorf("error in authorizing the caller  %s", err.Error())
    }
    return t.Ctx.ERC721Account.DeleteAccount(accountId)
}
Parâmetros:
  • orgId: string – O ID do prestador de serviço de associação (MSP) do usuário na organização atual.
  • userId: string – O nome de usuário ou o ID de e-mail do usuário.
Retorna:
  • Com êxito, uma representação JSON do status da conta de token.
Exemplo de valor de retorno:
{
    "AssetType": "oaccountStatus",
    "StatusId": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7",
    "AccountId": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
    "Status": "deleted"
}

Métodos SDK de Status da Conta

GetDefaultAccountStatus
Esse método obtém o status atual de uma conta de token, com o status active para qualquer conta que não tenha o status de conta armazenado no razão (porque a conta foi criada antes da funcionalidade de status da conta).
Ctx.ERC721AccountStatus.GetDefaultAccountStatus(accountId string) (NFTAccountStatus, error)
Parâmetros:
  • accountId: string – O ID da conta de token.
Retorna:
  • Com êxito, uma representação JSON do status da conta de token.
Exemplo de valor de retorno:
{
      "AssetType": "oaccountStatus",
      "StatusId": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7",
      "AccountId": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
      "Status": "active"
}
GetAccountStatus
Esse método obtém o status atual da conta de token.
Ctx.ERC721AccountStatus.GetAccountStatus(accountId string) (NFTAccountStatus, error)
Parâmetros:
  • accountId: string – O ID da conta de token.
Retorna:
  • Com êxito, uma representação JSON do status da conta de token. Se nenhum status for encontrado no razão da conta porque a conta foi criada antes da funcionalidade de status da conta estar disponível, o status será listado como active na resposta.
Exemplo de valor de retorno:
{
    "AssetType": "oaccountStatus",
    "StatusId": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7",
    "AccountId": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
    "Status": "active"
}
GetAccountStatusHistory
Este método obtém o histórico do status da conta.
Ctx.ERC721AccountStatus.History(statusId string) (interface{}, error) 
Parâmetros:
  • statusId: string – O ID do objeto de status da conta.
Retorna:
  • Com êxito, uma representação JSON do histórico de status da conta.
Exemplo de valor de retorno:
[
  {
    "IsDelete": "false",
    "Timestamp": "2022-12-02T16:20:34+05:30",
    "TxId": "af1601c7a14b4becf4bb3b285d85553b39bf234caaf1cd488a284a31a2d9df78",
    "Value": {
      "AccountId": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
      "AssetType": "oaccountStatus",
      "Status": "suspended",
      "StatusId": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7"
    }
  },
  {
    "IsDelete": "false",
    "Timestamp": "2022-12-02T16:19:15+05:30",
    "TxId": "4b307b989063e43add5357ab110e19174d586b9746cc8a30c9aa3a2b0b48a34e",
    "Value": {
      "AccountId": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
      "AssetType": "oaccountStatus",
      "Status": "active",
      "StatusId": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7"
    }
  }
]
ActivateAccount
Este método ativa uma conta de token. Para todas as contas criadas antes da funcionalidade de status da conta estar disponível, você deve chamar esse método para definir o status da conta como active.
Ctx.ERC721Account.ActivateAccount(accountId string) (interface{}, error)
Parâmetros:
  • accountId: string – O ID da conta de token.
Retorna:
  • Com êxito, uma representação JSON do objeto de status da conta para a conta de token especificada.
Exemplo de valor de retorno:
{
    "AssetType": "oaccountStatus",
    "StatusId": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7",
    "AccountId": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
    "Status": "active"
}
SuspendAccount
Este método suspende uma conta de token.
Ctx.ERC721Account.SuspendAccount(accountId string) (interface{}, error)
Parâmetros:
  • accountId: string – O ID da conta de token.
Retorna:
  • Com êxito, uma representação JSON do objeto de status da conta para a conta de token especificada.
Exemplo de valor de retorno:
{
    "AssetType": "oaccountStatus",
    "StatusId": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7",
    "AccountId": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
    "Status": "suspended"
}
DeleteAccount
Este método exclui uma conta de token.
Ctx.ERC721Account.DeleteAccount(accountId string) (interface{}, error)
Parâmetros:
  • accountId: string – O ID da conta de token.
Retorna:
  • Com êxito, uma representação JSON do objeto de status da conta para a conta de token especificada.
Exemplo de valor de retorno:
{
    "AssetType": "oaccountStatus",
    "StatusId": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7",
    "AccountId": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
    "Status": "deleted"
}