Méthodes Go pour le statut du compte de jeton

Blockchain App Builder génère automatiquement des méthodes que vous pouvez utiliser pour gérer le statut du compte pour les jetons fongibles qui utilisent la norme Token Taxonomy Framework.

Vous pouvez utiliser les méthodes suivantes pour placer les comptes utilisateur de jeton dans l'état actif, suspendu ou supprimé.

Lorsqu'un compte est suspendu, l'utilisateur du compte ne peut effectuer aucune opération d'écriture, notamment la frappe, la gravure, le transfert et la détention de jetons. En outre, d'autres utilisateurs ne peuvent pas transférer de jetons vers un compte suspendu ou le conserver. Un compte suspendu peut toujours effectuer des opérations de lecture.

Un compte avec un solde de jeton différent de zéro ne peut pas être supprimé. Vous devez transférer ou graver tous les jetons d'un compte avant de pouvoir supprimer le compte. Une fois qu'un compte a l'état Supprimé, il ne peut plus être remis à l'état Actif ou Suspendu.

Méthodes de statut de compte générées automatiquement

Blockchain App Builder génère automatiquement des méthodes pour gérer le statut du compte de jeton. Les méthodes de contrôleur doivent être publiques pour être invocables. Les noms de méthode publics commencent par un caractère majuscule. Les noms de méthode qui commencent par un caractère minuscule sont privés.

GetAccountStatus
Cette méthode obtient le statut actuel du compte de jeton. Cette méthode peut être appelée par Token Admin du code chaîne, par Org Admin de l'organisation indiquée ou par le propriétaire du compte de jeton. Cette méthode prend également en charge la migration des données pour le code chaîne existant mis à niveau vers une version plus récente.
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
}
Paramètres :
  • token_id: string : ID du jeton.
  • org_id: string : ID du fournisseur de services d'adhésion de l'utilisateur dans l'organisation actuelle.
  • user_id: string : nom d'utilisateur ou ID de courriel de l'utilisateur.
Renvoie :
  • En cas de succès, message contenant les détails du statut du compte de jeton.
Exemple de valeur renvoyée :
{
    "AssetType": "oaccountStatus",
    "StatusId": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7",
    "AccountId": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
    "Status": "active"
}
GetAccountStatusHistory
Cette méthode extrait l'historique du statut du compte. Cette méthode peut être appelée par Token Admin du code chaîne, par Org Admin de l'organisation indiquée ou par le propriétaire du compte de jeton.
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
}
Paramètres :
  • token_id: string : ID du jeton.
  • org_id: string : ID du fournisseur de services d'adhésion de l'utilisateur dans l'organisation actuelle.
  • user_id: string : nom d'utilisateur ou ID de courriel de l'utilisateur.
Renvoie :
  • En cas de succès, message contenant les détails de l'historique du statut du compte.
Exemple de valeur renvoyée :
[
  {
    "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
Cette méthode active un compte de jeton. Cette méthode peut être appelée uniquement par Token Admin du code chaîne ou par Org Admin de l'organisation indiquée. Les comptes supprimés ne peuvent pas être activés.
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)
}
Paramètres :
  • token_id: string : ID du jeton.
  • org_id: string : ID du fournisseur de services d'adhésion de l'utilisateur dans l'organisation actuelle.
  • user_id: string : nom d'utilisateur ou ID de courriel de l'utilisateur.
Renvoie :
  • En cas de succès, représentation JSON de l'objet de statut de compte pour le compte de jeton spécifié.
Exemple de valeur renvoyée :
{
    "AssetType": "oaccountStatus",
    "StatusId": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7",
    "AccountId": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
    "Status": "active"
}
SuspendAccount
Cette méthode suspend un compte de jeton. Les comptes suspendus peuvent toujours effectuer des opérations de lecture. Les utilisateurs ayant des comptes suspendus ne peuvent pas envoyer, recevoir, mentir ou brûler des jetons. Cette méthode peut être appelée uniquement par Token Admin du code chaîne ou par Org Admin de l'organisation indiquée. Une fois qu'un compte est suspendu, vous ne pouvez effectuer aucune opération mettant à jour le compte. Un compte supprimé ne peut pas être suspendu.
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)
}
Paramètres :
  • token_id: string : ID du jeton.
  • org_id: string : ID du fournisseur de services d'adhésion de l'utilisateur dans l'organisation actuelle.
  • user_id: string : nom d'utilisateur ou ID de courriel de l'utilisateur.
Renvoie :
  • En cas de succès, représentation JSON de l'objet de statut de compte pour le compte de jeton spécifié.
Exemple de valeur renvoyée :
{
    "AssetType": "oaccountStatus",
    "StatusId": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7",
    "AccountId": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
    "Status": "suspended"
}
DeleteAccount
Cette méthode supprime un compte de jeton. Cette méthode peut être appelée uniquement par Token Admin du code chaîne ou par Org Admin de l'organisation indiquée. Une fois qu'un compte a été supprimé, vous ne pouvez effectuer aucune opération de mise à jour du compte. Le compte supprimé est dans un état final et ne peut pas passer à un autre état. Pour supprimer un compte, le solde du compte et le solde bloqué doivent être égaux à zéro.
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)
}
Paramètres :
  • token_id: string : ID du jeton.
  • org_id: string : ID du fournisseur de services d'adhésion de l'utilisateur dans l'organisation actuelle.
  • user_id: string : nom d'utilisateur ou ID de courriel de l'utilisateur.
Renvoie :
  • En cas de succès, représentation JSON de l'objet de statut de compte pour le compte de jeton spécifié.
Exemple de valeur renvoyée :
{
    "AssetType": "oaccountStatus",
    "StatusId": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7",
    "AccountId": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
    "Status": "deleted"
}

Méthodes SDK pour le statut du compte

GetDefaultAccountStatus
Cette méthode obtient le statut actuel d'un compte de jeton, avec le statut active pour tout compte pour lequel aucun statut de compte n'est stocké dans le livre (car le compte a été créé avant la fonctionnalité de statut de compte).
Ctx.AccountStatus.GetDefaultAccountStatus(account_id string) (FungibleAccountStatus, error)
Paramètres :
  • account_id: string : ID du compte de jeton.
Renvoie :
  • En cas de succès, représentation JSON de l'objet de statut de compte.
Exemple de valeur renvoyée :
{
    "AssetType": "oaccountStatus",
    "StatusId": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7",
    "AccountId": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
    "Status": "active"
}
GetAccountStatus
Cette méthode obtient le statut actuel du compte de jeton.
Ctx.AccountStatus.GetAccountStatus(account_id string) (FungibleAccountStatus, error)
Paramètres :
  • account_id: string : ID du compte de jeton.
Renvoie :
  • En cas de succès, représentation JSON de l'objet de statut de compte.
Exemple de valeur renvoyée :
{
    "AssetType": "oaccountStatus",
    "StatusId": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7",
    "AccountId": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
    "Status": "active"
}
SaveAccountStatus
Cette méthode enregistre l'objet de statut (si aucun objet de statut n'est présent) pour le compte de jeton et définit le statut sur la valeur spécifiée.
Ctx.AccountStatus.SaveAccountStatus(account_id string, status string)
Paramètres :
  • account_id: string : ID du compte de jeton.
  • status: string : statut à définir pour le compte spécifié. Seules trois valeurs sont prises en charge : active, suspended ou deleted.
Renvoie :
  • En cas de succès, représentation JSON de l'objet de statut de compte.
Exemple de valeur renvoyée :
{
    "AssetType": "oaccountStatus",
    "StatusId": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7",
    "AccountId": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
    "Status": "active"
}
GetAccountStatusHistory
Cette méthode extrait l'historique du statut du compte.
Ctx.AccountStatus.History(status_id string) (interface{}, error)
Paramètres :
  • status_id: string : ID de l'objet de statut de compte.
Renvoie :
  • En cas de succès, représentation JSON de l'historique des statuts de compte.
Exemple de valeur renvoyée :
[
  {
    "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
Cette méthode active un compte de jeton.
Ctx.Account.ActivateAccount(account_id: string) (interface{}, error)
Paramètres :
  • account_id: string : ID du compte de jeton.
Renvoie :
  • En cas de succès, représentation JSON de l'objet de statut de compte pour le compte de jeton spécifié.
Exemple de valeur renvoyée :
{
    "AssetType": "oaccountStatus",
    "StatusId": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7",
    "AccountId": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
    "Status": "active"
}
SuspendAccount
Cette méthode suspend un compte de jeton.
Ctx.Account.SuspendAccount(account_id string) (interface{}, error)
Paramètres :
  • account_id: string : ID du compte de jeton.
Renvoie :
  • En cas de succès, représentation JSON de l'objet de statut de compte pour le compte de jeton spécifié.
Exemple de valeur renvoyée :
{
    "AssetType": "oaccountStatus",
    "StatusId": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7",
    "AccountId": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
    "Status": "suspended"
}
DeleteAccount
Cette méthode supprime un compte de jeton.
Ctx.Account.DeleteAccount(account_id string) (interface{}, error)
Paramètres :
  • account_id: string : ID du compte de jeton.
Renvoie :
  • En cas de succès, représentation JSON de l'objet de statut de compte pour le compte de jeton spécifié.
Exemple de valeur renvoyée :
{
    "AssetType": "oaccountStatus",
    "StatusId": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7",
    "AccountId": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
    "Status": "deleted"
}