TypeScript Métodos para el estado de la cuenta de token

Blockchain App Builder genera automáticamente métodos que puede utilizar para gestionar el estado de la cuenta para tokens fungibles que utilizan el estándar Token Taxonomy Framework.

Puede utilizar los siguientes métodos para colocar las cuentas de usuario de token en los estados activo, suspendido o suprimido.

Cuando se suspende una cuenta, el usuario de la cuenta no puede completar ninguna operación de escritura, que incluye la extracción, la grabación, la transferencia y la retención de tokens. Además, otros usuarios no pueden transferir tokens a una cuenta suspendida ni retenerlos. Una cuenta suspendida aún puede completar las operaciones de lectura.

No se puede suprimir una cuenta con un saldo de token distinto de cero. Debe transferir o grabar todos los tokens en una cuenta antes de poder eliminar la cuenta. Una vez que una cuenta se encuentra en estado suprimido, el estado de la cuenta no se puede volver a cambiar a activo o suspendido.

Métodos de estado de cuenta generados automáticamente

Blockchain App Builder genera automáticamente métodos para gestionar el estado de la cuenta de token. Los métodos de controlador deben tener un decorador @Validator(...params) que se pueda invocar.

getAccountStatus
Este método obtiene el estado actual de la cuenta de token. Este método puede ser llamado por el Token Admin del código de cadena, un Org Admin de la organización especificada o por el propietario de la cuenta de token. Este método también admite la migración de datos para el código de cadena existente que se actualiza a una versión más reciente.
@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: ID del token.
  • org_id: string: ID del proveedor de servicios de afiliación (MSP) del usuario de la organización actual.
  • user_id: string: nombre de usuario o ID de correo electrónico del usuario.
Devuelve:
  • En caso de éxito, un mensaje que incluye detalles del estado de la cuenta de token.
Ejemplo de valor devuelto:
{
    "assetType": "oaccountStatus",
    "status_id": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7",
    "account_id": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
    "status": "active"
}
getAccountStatusHistory
Este método obtiene el historial del estado de la cuenta. Este método puede ser llamado por el Token Admin del código de cadena, un Org Admin de la organización especificada o por el propietario de la cuenta de 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: ID del token.
  • org_id: string: ID del proveedor de servicios de afiliación (MSP) del usuario de la organización actual.
  • user_id: string: nombre de usuario o ID de correo electrónico del usuario.
Devuelve:
  • En caso de éxito, un mensaje que incluye detalles del historial de estado de la cuenta.
Ejemplo de valor devuelto:
[
  {
    "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 activa una cuenta de token. Este método solo puede ser llamado por un Token Admin del código de cadena o un Org Admin de la organización especificada. Las cuentas eliminadas no se pueden activar.
@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: ID del token.
  • org_id: string: ID del proveedor de servicios de afiliación (MSP) del usuario de la organización actual.
  • user_id: string: nombre de usuario o ID de correo electrónico del usuario.
Devuelve:
  • Una vez realizado correctamente, una representación JSON del objeto de estado de cuenta para la cuenta de token especificada.
Ejemplo de valor devuelto:
{
  "assetType": "oaccountStatus",
  "status_id": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7",
  "account_id": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
  "status": "active"
}
suspendAccount
Este método suspende una cuenta de token. Este método solo puede ser llamado por un Token Admin del código de cadena o un Org Admin de la organización especificada. Después de suspender una cuenta, no puede completar ninguna operación que actualice la cuenta. No se puede suspender una cuenta eliminada.
@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: ID del token.
  • org_id: string: ID del proveedor de servicios de afiliación (MSP) del usuario de la organización actual.
  • user_id: string: nombre de usuario o ID de correo electrónico del usuario.
Devuelve:
  • Una vez realizado correctamente, una representación JSON del objeto de estado de cuenta para la cuenta de token especificada.
Ejemplo de valor devuelto:
{
    "assetType": "oaccountStatus",
    "status_id": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7",
    "account_id": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
    "status": "suspended"
}
deleteAccount
Este método suprime una cuenta de token. Este método solo puede ser llamado por un Token Admin del código de cadena o un Org Admin de la organización especificada. Después de eliminar una cuenta, no puede completar ninguna operación que actualice la cuenta. La cuenta eliminada tiene un estado final y no se puede cambiar a ningún otro estado. Para eliminar una cuenta, el saldo de cuenta y el saldo retenido deben ser cero.
@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: ID del token.
  • org_id: string: ID del proveedor de servicios de afiliación (MSP) del usuario de la organización actual.
  • user_id: string: nombre de usuario o ID de correo electrónico del usuario.
Devuelve:
  • Una vez realizado correctamente, una representación JSON del objeto de estado de cuenta para la cuenta de token especificada.
Ejemplo de valor devuelto:
{
  "assetType": "oaccountStatus",
  "status_id": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7",
  "account_id": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
  "status": "deleted"
}
getAccountStatus
Este método obtiene el estado actual de la cuenta de token. Este método puede ser llamado por Token Admin o Token Auditor, Org Admin o Org Auditor de la organización especificada, o por el propietario de la cuenta de token. Este método también admite la migración de datos para el código de cadena existente que se actualiza a una versión más reciente.
@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: ID del token.
  • org_id: string: ID del proveedor de servicios de afiliación (MSP) del usuario de la organización actual.
  • user_id: string: nombre de usuario o ID de correo electrónico del usuario.
Devuelve:
  • En caso de éxito, un mensaje que incluye detalles del estado de la cuenta de token.
Ejemplo de valor devuelto:
{
    "assetType": "oaccountStatus",
    "status_id": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7",
    "account_id": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
    "status": "active"
}
getAccountStatusHistory
Este método obtiene el historial del estado de la cuenta. Este método puede ser llamado por Token Admin o Token Auditor, Org Admin o Org Auditor de la organización especificada, o por el propietario de la cuenta de 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: ID del token.
  • org_id: string: ID del proveedor de servicios de afiliación (MSP) del usuario de la organización actual.
  • user_id: string: nombre de usuario o ID de correo electrónico del usuario.
Devuelve:
  • En caso de éxito, un mensaje que incluye detalles del historial de estado de la cuenta.
Ejemplo de valor devuelto:
[
  {
    "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 activa una cuenta de token. Este método solo puede ser llamado por un Token Admin del código de cadena o un Org Admin de la organización especificada. Las cuentas eliminadas no se pueden activar.
@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: ID del token.
  • org_id: string: ID del proveedor de servicios de afiliación (MSP) del usuario de la organización actual.
  • user_id: string: nombre de usuario o ID de correo electrónico del usuario.
Devuelve:
  • Una vez realizado correctamente, una representación JSON del objeto de estado de cuenta para la cuenta de token especificada.
Ejemplo de valor devuelto:
{
  "assetType": "oaccountStatus",
  "status_id": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7",
  "account_id": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
  "status": "active"
}
suspendAccount
Este método suspende una cuenta de token. Este método solo puede ser llamado por un Token Admin del código de cadena o un Org Admin de la organización especificada. Después de suspender una cuenta, no puede completar ninguna operación que actualice la cuenta. No se puede suspender una cuenta eliminada.
@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: ID del token.
  • org_id: string: ID del proveedor de servicios de afiliación (MSP) del usuario de la organización actual.
  • user_id: string: nombre de usuario o ID de correo electrónico del usuario.
Devuelve:
  • Una vez realizado correctamente, una representación JSON del objeto de estado de cuenta para la cuenta de token especificada.
Ejemplo de valor devuelto:
{
    "assetType": "oaccountStatus",
    "status_id": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7",
    "account_id": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
    "status": "suspended"
}
deleteAccount
Este método suprime una cuenta de token. Este método solo puede ser llamado por un Token Admin del código de cadena o un Org Admin de la organización especificada. Después de eliminar una cuenta, no puede completar ninguna operación que actualice la cuenta. La cuenta eliminada tiene un estado final y no se puede cambiar a ningún otro estado. Para eliminar una cuenta, el saldo de cuenta y el saldo retenido deben ser cero.
@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: ID del token.
  • org_id: string: ID del proveedor de servicios de afiliación (MSP) del usuario de la organización actual.
  • user_id: string: nombre de usuario o ID de correo electrónico del usuario.
Devuelve:
  • Una vez realizado correctamente, una representación JSON del objeto de estado de cuenta para la cuenta de token especificada.
Ejemplo de valor devuelto:
{
  "assetType": "oaccountStatus",
  "status_id": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7",
  "account_id": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
  "status": "deleted"
}

Métodos de SDK de estado de cuenta

getAccountStatus
Este método obtiene el estado actual de la cuenta de token.
Ctx.AccountStatus.getAccountStatus(account_id: string)
Parámetros:
  • account_id: string: ID de la cuenta de token.
Devuelve:
  • En caso de éxito, una representación JSON del objeto de estado de cuenta.
Ejemplo de valor devuelto:
{
    "assetType": "oaccountStatus",
    "status_id": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7",
    "account_id": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
    "status": "active"
}
saveAccountStatus
Este método guarda el objeto de estado (si no hay ningún objeto de estado) para la cuenta de token y define el estado en el valor especificado.
Ctx.AccountStatus.saveAccountStatus(account_id: string, status: AccountStatus)
Parámetros:
  • account_id: string: ID de la cuenta de token.
  • status: AccountStatus: estado que se define para la cuenta especificada.

    AccountStatus es un tipo enum que debe ser active, suspended o deleted.

Devuelve:
  • En caso de éxito, una representación JSON del objeto de estado de cuenta.
Ejemplo de valor devuelto:
{
    "assetType": "oaccountStatus",
    "status_id": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7",
    "account_id": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
    "status": "active"
}
getAccountStatusHistory
Este método obtiene el historial del estado de la cuenta.
Ctx.AccountStatus.history(status_id: string)
Parámetros:
  • status_id: string: ID del objeto de estado de cuenta.
Devuelve:
  • En caso de éxito, una representación JSON del historial de estado de la cuenta.
Ejemplo de valor devuelto:
[
  {
    "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 activa una cuenta de token.
Ctx.Account.activateAccount(account_id: string)
Parámetros:
  • account_id: string: ID de la cuenta de token.
Devuelve:
  • Una vez realizado correctamente, una representación JSON del objeto de estado de cuenta para la cuenta de token especificada.
Ejemplo de valor devuelto:
{
  "assetType": "oaccountStatus",
  "status_id": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7",
  "account_id": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
  "status": "active"
}
suspendAccount
Este método suspende una cuenta de token.
Ctx.Account.suspendAccount(account_id: string)
Parámetros:
  • account_id: string: ID de la cuenta de token.
Devuelve:
  • Una vez realizado correctamente, una representación JSON del objeto de estado de cuenta para la cuenta de token especificada.
Ejemplo de valor devuelto:
{
    "assetType": "oaccountStatus",
    "status_id": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7",
    "account_id": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
    "status": "suspended"
}
deleteAccount
Este método suprime una cuenta de token.
Ctx.Account.deleteAccount(account_id: string)
Parámetros:
  • account_id: string: ID de la cuenta de token.
Devuelve:
  • Una vez realizado correctamente, una representación JSON del objeto de estado de cuenta para la cuenta de token especificada.
Ejemplo de valor devuelto:
{
  "assetType": "oaccountStatus",
  "status_id": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7",
  "account_id": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
  "status": "deleted"
}