Ir a métodos para estado de 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 poner 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 acuñar, grabar, transferir y retener tokens. Además, otros usuarios no pueden transferir ni retener tokens en una cuenta suspendida. 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 de una cuenta para poder eliminar la cuenta. Una vez que una cuenta está en estado suprimido, el estado de la cuenta no se puede volver a activar ni suspender.

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 ser públicos para que se puedan invocar. Los nombres de métodos públicos comienzan con un carácter en mayúscula. Los nombres de método que comienzan con un carácter en minúscula son privados.

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 cadenas, 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 cadenas existente que se actualiza a una versión más reciente.
func (t *Controller) GetAccountStatus(token_id string, org_id string, user_id string) (interface{}, error) {
      account_id, err := t.Ctx.Account.GenerateAccountId(token_id, org_id, user_id)
      if err != nil {
            return nil, fmt.Errorf("error in getting the generating account_id of (Org-Id: %s, User-Id: %s)", org_id, user_id)
      }
      auth, err := t.Ctx.Auth.CheckAuthorization("AccountStatus.Get", "TOKEN", map[string]string{"account_id": account_id})
      if err != nil && !auth {
            return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
      }
      accountStatus, err := t.Ctx.AccountStatus.GetAccountStatus(account_id)
      if err != nil {
            return t.Ctx.AccountStatus.GetDefaultAccountStatus(account_id)
      }
      return accountStatus, nil
}
Parámetros:
  • token_id: string: ID del token.
  • org_id: string: ID del proveedor de servicios de afiliación (MSP) del usuario en la organización actual.
  • user_id: string: nombre de usuario o ID de correo electrónico del usuario.
Devuelve:
  • Cuando se realiza correctamente, un mensaje que incluye detalles del estado de la cuenta del token.
Ejemplo de Valor de Devolución:
{
    "AssetType": "oaccountStatus",
    "StatusId": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7",
    "AccountId": "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 cadenas, un Org Admin de la organización especificada o por el propietario de la cuenta de token.
func (t *Controller) GetAccountStatusHistory(token_id string, org_id string, user_id string) (interface{}, error) {
      account_id, err := t.Ctx.Account.GenerateAccountId(token_id, org_id, user_id)
      if err != nil {
            return nil, fmt.Errorf("error in getting the generating account_id of (Org-Id: %s, User-Id: %s)", org_id, user_id)
      }
      _, err = t.Ctx.Account.GetAccount(account_id)
      if err != nil {
            return nil, fmt.Errorf("error in GetAccountStatusHistory: %s", err)
      }
      auth, err := t.Ctx.Auth.CheckAuthorization("AccountStatus.Get", "TOKEN", map[string]string{"account_id": account_id})
      if err != nil && !auth {
            return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
      }
      status_id, err := t.Ctx.AccountStatus.GenerateAccountStatusId(account_id)
      if err != nil {
            return nil, err
      }
      account_status_history, err := t.Ctx.AccountStatus.History(status_id)
      if err != nil {
            return []map[string]interface{}{}, nil
      }
      return account_status_history, nil
}
Parámetros:
  • token_id: string: ID del token.
  • org_id: string: ID del proveedor de servicios de afiliación (MSP) del usuario en la organización actual.
  • user_id: string: nombre de usuario o ID de correo electrónico del usuario.
Devuelve:
  • Cuando se realiza correctamente, un mensaje que incluye detalles del historial de estado de la cuenta.
Ejemplo de Valor de Devolución:
[
  {
    "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 activa una cuenta de token. Este método sólo puede ser llamado por un Token Admin del código de cadenas o por un Org Admin de la organización especificada. No se pueden activar las cuentas suprimidas.
func (t *Controller) ActivateAccount(token_id string, org_id string, user_id string) (interface{}, error) {
      account_id, err := t.Ctx.Account.GenerateAccountId(token_id, org_id, user_id)
      if err != nil {
            return nil, fmt.Errorf("error in getting the generating account_id of (Org-Id: %s, User-Id: %s)", org_id, user_id)
      }
      auth, err := t.Ctx.Auth.CheckAuthorization("AccountStatus.ActivateAccount", "TOKEN", map[string]string{"org_id": org_id})
      if err != nil && !auth {
            return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
      }
      return t.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 en la organización actual.
  • user_id: string: nombre de usuario o ID de correo electrónico del usuario.
Devuelve:
  • Una representación JSON del objeto de estado de cuenta para la cuenta de token especificada.
Ejemplo de Valor de Devolución:
{
    "AssetType": "oaccountStatus",
    "StatusId": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7",
    "AccountId": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
    "Status": "active"
}
SuspendAccount
Este método suspende una cuenta de token. Las cuentas suspendidas aún pueden completar las operaciones de lectura. Los usuarios con cuentas suspendidas no pueden enviar, recibir, acuñar ni grabar tokens. Este método sólo puede ser llamado por un Token Admin del código de cadenas o por 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 suprimida.
func (t *Controller) SuspendAccount(token_id string, org_id string, user_id string) (interface{}, error) {
      account_id, err := t.Ctx.Account.GenerateAccountId(token_id, org_id, user_id)
      if err != nil {
            return nil, fmt.Errorf("error in getting the generating account_id of (Org-Id: %s, User-Id: %s)", org_id, user_id)
      }
      auth, err := t.Ctx.Auth.CheckAuthorization("AccountStatus.SuspendAccount", "TOKEN", map[string]string{"org_id": org_id})
      if err != nil && !auth {
            return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
      }
      return t.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 en la organización actual.
  • user_id: string: nombre de usuario o ID de correo electrónico del usuario.
Devuelve:
  • Una representación JSON del objeto de estado de cuenta para la cuenta de token especificada.
Ejemplo de Valor de Devolución:
{
    "AssetType": "oaccountStatus",
    "StatusId": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7",
    "AccountId": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
    "Status": "suspended"
}
DeleteAccount
Este método suprime una cuenta de token. Este método sólo puede ser llamado por un Token Admin del código de cadenas o por un Org Admin de la organización especificada. Después de suprimir una cuenta, no puede completar ninguna operación que actualice la cuenta. La cuenta suprimida tiene el estado final y no se puede cambiar a ningún otro estado. Para suprimir una cuenta, el saldo de cuenta y el saldo retenido deben ser cero.
func (t *Controller) DeleteAccount(token_id string, org_id string, user_id string) (interface{}, error) {
      account_id, err := t.Ctx.Account.GenerateAccountId(token_id, org_id, user_id)
      if err != nil {
            return nil, fmt.Errorf("error in getting the generating account_id of (Org-Id: %s, User-Id: %s)", org_id, user_id)
      }
      auth, err := t.Ctx.Auth.CheckAuthorization("AccountStatus.DeleteAccount", "TOKEN", map[string]string{"org_id": org_id})
      if err != nil && !auth {
            return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
      }
      return t.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 en la organización actual.
  • user_id: string: nombre de usuario o ID de correo electrónico del usuario.
Devuelve:
  • Una representación JSON del objeto de estado de cuenta para la cuenta de token especificada.
Ejemplo de Valor de Devolución:
{
    "AssetType": "oaccountStatus",
    "StatusId": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7",
    "AccountId": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
    "Status": "deleted"
}

Métodos SDK de estado de cuenta

GetDefaultAccountStatus
Este método obtiene el estado actual de una cuenta de token, con el estado active para cualquier cuenta que no tenga el estado de cuenta almacenado en el libro mayor (porque la cuenta se creó antes de la funcionalidad de estado de cuenta).
Ctx.AccountStatus.GetDefaultAccountStatus(account_id string) (FungibleAccountStatus, error)
Parámetros:
  • account_id: string: ID de la cuenta de token.
Devuelve:
  • Una representación JSON correcta del objeto de estado de cuenta.
Ejemplo de Valor de Devolución:
{
    "AssetType": "oaccountStatus",
    "StatusId": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7",
    "AccountId": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
    "Status": "active"
}
GetAccountStatus
Este método obtiene el estado actual de la cuenta de token.
Ctx.AccountStatus.GetAccountStatus(account_id string) (FungibleAccountStatus, error)
Parámetros:
  • account_id: string: ID de la cuenta de token.
Devuelve:
  • Una representación JSON correcta del objeto de estado de cuenta.
Ejemplo de Valor de Devolución:
{
    "AssetType": "oaccountStatus",
    "StatusId": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7",
    "AccountId": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
    "Status": "active"
}
SaveAccountStatus
Este método guarda el objeto de estado (si no hay un objeto de estado) para la cuenta de token y define el estado en el valor especificado.
Ctx.AccountStatus.SaveAccountStatus(account_id string, status string)
Parámetros:
  • account_id: string: ID de la cuenta de token.
  • status: string: estado que se debe definir para la cuenta especificada. Solo están soportados tres valores: active, suspended o deleted.
Devuelve:
  • Una representación JSON correcta del objeto de estado de cuenta.
Ejemplo de Valor de Devolución:
{
    "AssetType": "oaccountStatus",
    "StatusId": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7",
    "AccountId": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
    "Status": "active"
}
GetAccountStatusHistory
Este método obtiene el historial del estado de la cuenta.
Ctx.AccountStatus.History(status_id string) (interface{}, error)
Parámetros:
  • status_id: string: ID del objeto de estado de cuenta.
Devuelve:
  • Una representación JSON del historial de estado de la cuenta.
Ejemplo de Valor de Devolución:
[
  {
    "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 activa una cuenta de token.
Ctx.Account.ActivateAccount(account_id: string) (interface{}, error)
Parámetros:
  • account_id: string: ID de la cuenta de token.
Devuelve:
  • Una representación JSON del objeto de estado de cuenta para la cuenta de token especificada.
Ejemplo de Valor de Devolución:
{
    "AssetType": "oaccountStatus",
    "StatusId": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7",
    "AccountId": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
    "Status": "active"
}
SuspendAccount
Este método suspende una cuenta de token.
Ctx.Account.SuspendAccount(account_id string) (interface{}, error)
Parámetros:
  • account_id: string: ID de la cuenta de token.
Devuelve:
  • Una representación JSON del objeto de estado de cuenta para la cuenta de token especificada.
Ejemplo de Valor de Devolución:
{
    "AssetType": "oaccountStatus",
    "StatusId": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7",
    "AccountId": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
    "Status": "suspended"
}
DeleteAccount
Este método suprime una cuenta de token.
Ctx.Account.DeleteAccount(account_id string) (interface{}, error)
Parámetros:
  • account_id: string: ID de la cuenta de token.
Devuelve:
  • Una representación JSON del objeto de estado de cuenta para la cuenta de token especificada.
Ejemplo de Valor de Devolución:
{
    "AssetType": "oaccountStatus",
    "StatusId": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7",
    "AccountId": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
    "Status": "deleted"
}