TypeScript Métodos para Status da Conta de Token

O Blockchain App Builder gera automaticamente métodos que você pode usar para gerenciar o status da conta para tokens fungíveis que usam o padrão Token Taxonomy Framework.

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, transferência e retenção de tokens. Além disso, outros usuários não podem transferir tokens ou reter tokens em 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

O Blockchain App Builder gera automaticamente métodos para gerenciar o status da conta de token. Os métodos da Controladora devem ter um decorador @Validator(...params) para serem invocáveis.

getAccountStatus
Esse método obtém o status atual da conta de token. Esse método pode ser chamado pelo Token Admin do chaincode, um Org Admin da organização especificada ou pelo proprietário da conta do token. Esse método também suporta migração de dados para o chaincode existente que é atualizado para uma versão mais recente.
@Validator(yup.string(), yup.string(), yup.string())
  public async getAccountStatus(token_id: string, org_id: string, user_id: string) {
    const account_id = await this.Ctx.Account.generateAccountId(token_id, org_id, user_id);
    await this.Ctx.Auth.checkAuthorization("ACCOUNT_STATUS.get", "TOKEN", { account_id });
    try {
      return await this.Ctx.AccountStatus.getAccountStatus(account_id);
    } catch (err) {
      return await this.Ctx.AccountStatus.getDefaultAccountStatus(account_id);
    }
  }
Parâmetros:
  • token_id: string – O ID do token.
  • org_id: string – O ID do prestador de serviço de associação (MSP) do usuário na organização atual.
  • user_id: string – O nome do usuário ou o ID do e-mail do usuário.
Retorna:
  • Em caso de êxito, uma mensagem que inclui detalhes do status da conta de token.
Exemplo de valor de retorno:
{
    "assetType": "oaccountStatus",
    "status_id": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7",
    "account_id": "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, um Org Admin da organização especificada ou pelo proprietário da conta do token.
  @Validator(yup.string(), yup.string(), yup.string())
  public async getAccountStatusHistory(token_id: string, org_id: string, user_id: string) {
    const account_id = await this.Ctx.Account.generateAccountId(token_id, org_id, user_id);
    await this.Ctx.Account.getAccount(account_id);
    await this.Ctx.Auth.checkAuthorization("ACCOUNT_STATUS.history", "TOKEN", { account_id });
    const status_id = await this.Ctx.AccountStatus.generateAccountStatusId(account_id);
    let account_status_history: any;
    try {
      account_status_history = await this.Ctx.AccountStatus.history(status_id);
    } catch (err) {
      return [];
    }
    return account_status_history;
  }
Parâmetros:
  • token_id: string – O ID do token.
  • org_id: string – O ID do prestador de serviço de associação (MSP) do usuário na organização atual.
  • user_id: string – O nome do usuário ou o ID do e-mail do usuário.
Retorna:
  • Em caso de êxito, uma mensagem que inclui detalhes do histórico de status da conta.
Exemplo de valor de retorno:
[
  {
    "trxId": "d5c6d6f601257ba9b6edaf5b7660f00adc13c37d5321b8f7d3a35afab2e93e63",
    "timeStamp": "2022-12-02T10:39:14.000Z",
    "value": {
      "assetType": "oaccountStatus",
      "status_id": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7",
      "account_id": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
      "status": "suspended"
    }
  },
  {
    "trxId": "e6c850cfa084dc20ad95fb2bb8165eef3a3bd62a0ac867cccee57c2003125183",
    "timeStamp": "2022-12-02T10:37:50.000Z",
    "value": {
      "assetType": "oaccountStatus",
      "status_id": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7",
      "account_id": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
      "status": "active"
    }
  }
]
activateAccount
Este método ativa uma conta de token. Esse método só pode ser chamado por um Token Admin do chaincode ou por um Org Admin da organização especificada. As contas excluídas não podem ser ativadas.
@Validator(yup.string(), yup.string(), yup.string())
  public async activateAccount(token_id: string, org_id: string, user_id: string) {
    await this.Ctx.Auth.checkAuthorization("ACCOUNT_STATUS.activateAccount", "TOKEN", { org_id });
    const account_id = await this.Ctx.Account.generateAccountId(token_id, org_id, user_id);
    return await this.Ctx.Account.activateAccount(account_id);
  }
Parâmetros:
  • token_id: string – O ID do token.
  • org_id: string – O ID do prestador de serviço de associação (MSP) do usuário na organização atual.
  • user_id: string – O nome do usuário ou o ID do e-mail do usuário.
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",
  "status_id": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7",
  "account_id": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
  "status": "active"
}
suspendAccount
Este método suspende uma conta de token. Esse método só pode ser chamado por um Token Admin do chaincode ou por um Org Admin da organização especificada. 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.
@Validator(yup.string(), yup.string(), yup.string())
  public async suspendAccount(token_id: string, org_id: string, user_id: string) {
    await this.Ctx.Auth.checkAuthorization("ACCOUNT_STATUS.suspendAccount", "TOKEN", { org_id });
    const account_id = await this.Ctx.Account.generateAccountId(token_id, org_id, user_id);
    return await this.Ctx.Account.suspendAccount(account_id);
  }
Parâmetros:
  • token_id: string – O ID do token.
  • org_id: string – O ID do prestador de serviço de associação (MSP) do usuário na organização atual.
  • user_id: string – O nome do usuário ou o ID do e-mail do usuário.
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",
    "status_id": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7",
    "account_id": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
    "status": "suspended"
}
deleteAccount
Este método exclui uma conta de token. Esse método só pode ser chamado por um Token Admin do chaincode ou por um Org Admin da organização especificada. 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 e o saldo em espera devem ser zero.
@Validator(yup.string(), yup.string(), yup.string())
  public async deleteAccount(token_id: string, org_id: string, user_id: string) {
    await this.Ctx.Auth.checkAuthorization("ACCOUNT_STATUS.deleteAccount", "TOKEN", { org_id });
    const account_id = await this.Ctx.Account.generateAccountId(token_id, org_id, user_id);
    return await this.Ctx.Account.deleteAccount(account_id);
  }
Parâmetros:
  • token_id: string – O ID do token.
  • org_id: string – O ID do prestador de serviço de associação (MSP) do usuário na organização atual.
  • user_id: string – O nome do usuário ou o ID do e-mail do usuário.
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",
  "status_id": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7",
  "account_id": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
  "status": "deleted"
}

Métodos SDK de Status da Conta

getAccountStatus
Esse método obtém o status atual da conta de token.
Ctx.AccountStatus.getAccountStatus(account_id: string)
Parâmetros:
  • account_id: string – O ID da conta de token.
Retorna:
  • Com êxito, uma representação JSON do objeto de status da conta.
Exemplo de valor de retorno:
{
    "assetType": "oaccountStatus",
    "status_id": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7",
    "account_id": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
    "status": "active"
}
saveAccountStatus
Esse método salva o objeto de status (se um objeto de status não estiver presente) para a conta de token e define o status para o valor especificado.
Ctx.AccountStatus.saveAccountStatus(account_id: string, status: AccountStatus)
Parâmetros:
  • account_id: string – O ID da conta de token.
  • status: AccountStatus – O status a ser definido para a conta especificada.

    AccountStatus é um tipo enum que deve ser active, suspended ou deleted.

Retorna:
  • Com êxito, uma representação JSON do objeto de status da conta.
Exemplo de valor de retorno:
{
    "assetType": "oaccountStatus",
    "status_id": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7",
    "account_id": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
    "status": "active"
}
getAccountStatusHistory
Este método obtém o histórico do status da conta.
Ctx.AccountStatus.history(status_id: string)
Parâmetros:
  • status_id: 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:
[
  {
    "trxId": "d5c6d6f601257ba9b6edaf5b7660f00adc13c37d5321b8f7d3a35afab2e93e63",
    "timeStamp": "2022-12-02T10:39:14.000Z",
    "value": {
      "assetType": "oaccountStatus",
      "status_id": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7",
      "account_id": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
      "status": "suspended"
    }
  },
  {
    "trxId": "e6c850cfa084dc20ad95fb2bb8165eef3a3bd62a0ac867cccee57c2003125183",
    "timeStamp": "2022-12-02T10:37:50.000Z",
    "value": {
      "assetType": "oaccountStatus",
      "status_id": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7",
      "account_id": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
      "status": "active"
    }
  }
]
activateAccount
Este método ativa uma conta de token.
Ctx.Account.activateAccount(account_id: string)
Parâmetros:
  • account_id: 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",
  "status_id": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7",
  "account_id": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
  "status": "active"
}
suspendAccount
Este método suspende uma conta de token.
Ctx.Account.suspendAccount(account_id: string)
Parâmetros:
  • account_id: 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",
    "status_id": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7",
    "account_id": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
    "status": "suspended"
}
deleteAccount
Este método exclui uma conta de token.
Ctx.Account.deleteAccount(account_id: string)
Parâmetros:
  • account_id: 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",
  "status_id": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7",
  "account_id": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
  "status": "deleted"
}