Métodos Go para estado de cuenta de token ERC-721

Blockchain App Builder genera automáticamente métodos que puede utilizar para gestionar el estado de la cuenta de los tokens que utilizan el estándar ERC-721 ampliado.

Puede utilizar los siguientes métodos para poner las cuentas de usuario de token en estado 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 y la transferencia de tokens. Además, otros usuarios no pueden transferir tokens a una cuenta suspendida. Una cuenta suspendida aún puede completar 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

GetAccountStatus
Este método obtiene el estado actual de la cuenta de token. El Token Admin del código de cadenas o el propietario de la cuenta de token pueden llamar a este método.
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: ID del proveedor de servicios de miembros (MSP) del usuario en la organización actual.
  • userId: string: nombre de usuario o ID de correo electrónico del usuario.
Devuelve:
  • Una vez realizada correctamente, una representación JSON del estado de la cuenta de token. Si no se encuentra ningún estado en el libro mayor de la cuenta porque la cuenta se creó antes de que la funcionalidad de estado de cuenta estuviera disponible, el estado se muestra como active en la respuesta.
Ejemplo de valor de retorno:
{
    "AssetType": "oaccountStatus",
    "StatusId": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7",
    "AccountId": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
    "Status": "active"
}
GetAccountStatusHistory
Este método obtiene el historial del estado de la cuenta. El Token Admin del código de cadenas o el propietario de la cuenta de token pueden llamar a este método.
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: ID del proveedor de servicios de miembros (MSP) del usuario en la organización actual.
  • userId: string: nombre de usuario o ID de correo electrónico del usuario.
Devuelve:
  • En caso de éxito, el historial de estado de la cuenta en formato JSON.
Ejemplo 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 activa una cuenta de token. Este método solo puede ser llamado por un Token Admin del código de cadena. Las cuentas eliminadas no se pueden activar. Para cualquier cuenta creada antes de que la funcionalidad de estado de cuenta esté disponible, debe llamar a este método para definir el estado de cuenta 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: ID del proveedor de servicios de miembros (MSP) del usuario en la organización actual.
  • userId: string: nombre de usuario o ID de correo electrónico del usuario.
Devuelve:
  • Una vez realizada correctamente, una representación JSON del estado de la cuenta de token.
Ejemplo de valor de retorno:
{
    "AssetType": "oaccountStatus",
    "StatusId": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7",
    "AccountId": "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. Después de suspender una cuenta, no puede completar ninguna operación que actualice la cuenta. Una cuenta eliminada no se puede suspender.
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: ID del proveedor de servicios de miembros (MSP) del usuario en la organización actual.
  • userId: string: nombre de usuario o ID de correo electrónico del usuario.
Devuelve:
  • Una vez realizada correctamente, una representación JSON del estado de la cuenta de token.
Ejemplo de valor de retorno:
{
    "AssetType": "oaccountStatus",
    "StatusId": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7",
    "AccountId": "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. 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 suprimir una cuenta, el saldo de cuenta debe ser cero.
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: ID del proveedor de servicios de miembros (MSP) del usuario en la organización actual.
  • userId: string: nombre de usuario o ID de correo electrónico del usuario.
Devuelve:
  • Una vez realizada correctamente, una representación JSON del estado de la cuenta de token.
Ejemplo de valor de retorno:
{
    "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.ERC721AccountStatus.GetDefaultAccountStatus(accountId string) (NFTAccountStatus, error)
Parámetros:
  • accountId: string: ID de la cuenta de token.
Devuelve:
  • Una vez realizada correctamente, una representación JSON del estado de la cuenta de token.
Ejemplo de valor de retorno:
{
      "AssetType": "oaccountStatus",
      "StatusId": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7",
      "AccountId": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
      "Status": "active"
}
GetAccountStatus
Este método obtiene el estado actual de la cuenta de token.
Ctx.ERC721AccountStatus.GetAccountStatus(accountId string) (NFTAccountStatus, error)
Parámetros:
  • accountId: string: ID de la cuenta de token.
Devuelve:
  • Una vez realizada correctamente, una representación JSON del estado de la cuenta de token. Si no se encuentra ningún estado en el libro mayor de la cuenta porque la cuenta se creó antes de que la funcionalidad de estado de cuenta estuviera disponible, el estado se muestra como active en la respuesta.
Ejemplo de valor de retorno:
{
    "AssetType": "oaccountStatus",
    "StatusId": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7",
    "AccountId": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
    "Status": "active"
}
GetAccountStatusHistory
Este método obtiene el historial del estado de la cuenta.
Ctx.ERC721AccountStatus.History(statusId string) (interface{}, error) 
Parámetros:
  • statusId: string: ID del objeto de estado de cuenta.
Devuelve:
  • Una vez realizada correctamente, una representación JSON del historial de estado de la cuenta.
Ejemplo 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 activa una cuenta de token. Para cualquier cuenta creada antes de que la funcionalidad de estado de cuenta esté disponible, debe llamar a este método para definir el estado de cuenta como active.
Ctx.ERC721Account.ActivateAccount(accountId string) (interface{}, error)
Parámetros:
  • accountId: string: ID de la cuenta de token.
Devuelve:
  • Una vez realizada correctamente, una representación JSON del objeto de estado de cuenta para la cuenta de token especificada.
Ejemplo de valor de retorno:
{
    "AssetType": "oaccountStatus",
    "StatusId": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7",
    "AccountId": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
    "Status": "active"
}
SuspendAccount
Este método suspende una cuenta de token.
Ctx.ERC721Account.SuspendAccount(accountId string) (interface{}, error)
Parámetros:
  • accountId: string: ID de la cuenta de token.
Devuelve:
  • Una vez realizada correctamente, una representación JSON del objeto de estado de cuenta para la cuenta de token especificada.
Ejemplo de valor de retorno:
{
    "AssetType": "oaccountStatus",
    "StatusId": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7",
    "AccountId": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
    "Status": "suspended"
}
DeleteAccount
Este método suprime una cuenta de token.
Ctx.ERC721Account.DeleteAccount(accountId string) (interface{}, error)
Parámetros:
  • accountId: string: ID de la cuenta de token.
Devuelve:
  • Una vez realizada correctamente, una representación JSON del objeto de estado de cuenta para la cuenta de token especificada.
Ejemplo de valor de retorno:
{
    "AssetType": "oaccountStatus",
    "StatusId": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7",
    "AccountId": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
    "Status": "deleted"
}