Go-Methoden für Tokenaccountstatus

Blockchain App Builder generiert automatisch Methoden, mit denen Sie den Accountstatus für fungible Token verwalten können, die den Standard "Tokentaxonomie-Framework" verwenden.

Mit den folgenden Methoden können Sie Tokenbenutzeraccounts in den Status "Aktiv", "Unterbrochen" oder "Gelöscht" versetzen.

Wenn ein Konto gesperrt wird, kann der Kontobenutzer keine Schreibvorgänge abschließen, wie Prägen, Brennen, Übertragen und Halten von Token. Darüber hinaus können andere Benutzer keine Token an Token in einem ausgesetzten Konto übertragen oder sperren. Ein ausgesetzter Account kann weiterhin Lesevorgänge abschließen.

Ein Konto mit einem Tokensaldo ungleich Null kann nicht gelöscht werden. Sie müssen alle Token in einem Konto übertragen oder verbrennen, bevor Sie das Konto löschen können. Nachdem ein Account den Status "Gelöscht" aufweist, kann der Accountstatus nicht wieder in "Aktiv" oder "Ausgesetzt" geändert werden.

Automatisch generierte Kontenstatusarten

Blockchain App Builder generiert automatisch Methoden zur Verwaltung des Tokenaccountstatus. Controller-Methoden müssen öffentlich sein, damit sie nicht verwendet werden können. Öffentliche Methodennamen beginnen mit einem Großbuchstaben. Methodennamen, die mit einem Kleinbuchstaben beginnen, sind privat.

GetAccountStatus
Diese Methode ruft den aktuellen Status des Tokenaccounts ab. Diese Methode kann vom Token Admin des Chaincodes, einem Org Admin der angegebenen Organisation oder vom Eigentümer des Tokenaccounts aufgerufen werden. Diese Methode unterstützt auch die Datenmigration für vorhandenen Chaincode, der auf eine neuere Version upgegradet wird.
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
}
Parameter:
  • token_id: string: Die ID des Tokens.
  • org_id: string: Die Mitgliedschaftsserviceprovider-(MSP-)ID des Benutzers in der aktuellen Organisation.
  • user_id: string: Der Benutzername oder die E-Mail-ID des Benutzers.
Rückgabewert:
  • Bei Erfolg eine Meldung, die Details zum Status des Tokenaccounts enthält.
Beispiel für den Rückgabewert:
{
    "AssetType": "oaccountStatus",
    "StatusId": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7",
    "AccountId": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
    "Status": "active"
}
GetAccountStatusHistory
Diese Methode ruft die Historie des Accountstatus ab. Diese Methode kann vom Token Admin des Chaincodes, einem Org Admin der angegebenen Organisation oder vom Eigentümer des Tokenaccounts aufgerufen werden.
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
}
Parameter:
  • token_id: string: Die ID des Tokens.
  • org_id: string: Die Mitgliedschaftsserviceprovider-(MSP-)ID des Benutzers in der aktuellen Organisation.
  • user_id: string: Der Benutzername oder die E-Mail-ID des Benutzers.
Rückgabewert:
  • Bei Erfolg eine Nachricht, die Details zur Accountstatushistorie enthält.
Beispiel für den Rückgabewert:
[
  {
    "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
Diese Methode aktiviert ein Token-Konto. Diese Methode kann nur von einem Token Admin des Chaincodes oder von einem Org Admin der angegebenen Organisation aufgerufen werden. Gelöschte Accounts können nicht aktiviert werden.
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)
}
Parameter:
  • token_id: string: Die ID des Tokens.
  • org_id: string: Die Mitgliedschaftsserviceprovider-(MSP-)ID des Benutzers in der aktuellen Organisation.
  • user_id: string: Der Benutzername oder die E-Mail-ID des Benutzers.
Rückgabewert:
  • Bei Erfolg eine JSON-Darstellung des Accountstatusobjekts für den angegebenen Tokenaccount.
Beispiel für den Rückgabewert:
{
    "AssetType": "oaccountStatus",
    "StatusId": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7",
    "AccountId": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
    "Status": "active"
}
SuspendAccount
Mit dieser Methode wird ein Tokenaccount gesperrt. Ausgesetzte Accounts können weiterhin Lesevorgänge abschließen. Benutzer mit gesperrten Konten können keine Token senden, empfangen, neu schreiben oder brennen. Diese Methode kann nur von einem Token Admin des Chaincodes oder von einem Org Admin der angegebenen Organisation aufgerufen werden. Nachdem ein Konto gesperrt wurde, können Sie keine Vorgänge mehr ausführen, die das Konto aktualisieren. Ein gelöschtes Konto kann nicht gesperrt werden.
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)
}
Parameter:
  • token_id: string: Die ID des Tokens.
  • org_id: string: Die Mitgliedschaftsserviceprovider-(MSP-)ID des Benutzers in der aktuellen Organisation.
  • user_id: string: Der Benutzername oder die E-Mail-ID des Benutzers.
Rückgabewert:
  • Bei Erfolg eine JSON-Darstellung des Accountstatusobjekts für den angegebenen Tokenaccount.
Beispiel für den Rückgabewert:
{
    "AssetType": "oaccountStatus",
    "StatusId": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7",
    "AccountId": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
    "Status": "suspended"
}
DeleteAccount
Mit dieser Methode wird ein Tokenaccount gelöscht. Diese Methode kann nur von einem Token Admin des Chaincodes oder von einem Org Admin der angegebenen Organisation aufgerufen werden. Nachdem ein Account gelöscht wurde, können Sie keine Vorgänge mehr ausführen, die den Account aktualisieren. Das gelöschte Konto befindet sich in einem endgültigen Status und kann nicht in einen anderen Status geändert werden. Um ein Konto zu löschen, müssen der Kontensaldo und der gesperrte Saldo Null sein.
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)
}
Parameter:
  • token_id: string: Die ID des Tokens.
  • org_id: string: Die Mitgliedschaftsserviceprovider-(MSP-)ID des Benutzers in der aktuellen Organisation.
  • user_id: string: Der Benutzername oder die E-Mail-ID des Benutzers.
Rückgabewert:
  • Bei Erfolg eine JSON-Darstellung des Accountstatusobjekts für den angegebenen Tokenaccount.
Beispiel für den Rückgabewert:
{
    "AssetType": "oaccountStatus",
    "StatusId": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7",
    "AccountId": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
    "Status": "deleted"
}

Accountstatus-SDK-Methoden

GetDefaultAccountStatus
Diese Methode ruft den aktuellen Status eines Tokenkontos mit dem Status active für alle Konten ab, für die kein Kontostatus im Buch gespeichert ist (da das Konto vor der Kontostatusfunktion erstellt wurde).
Ctx.AccountStatus.GetDefaultAccountStatus(account_id string) (FungibleAccountStatus, error)
Parameter:
  • account_id: string: Die ID des Tokenaccounts.
Rückgabewert:
  • Bei Erfolg eine JSON-Darstellung des Accountstatusobjekts.
Beispiel für den Rückgabewert:
{
    "AssetType": "oaccountStatus",
    "StatusId": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7",
    "AccountId": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
    "Status": "active"
}
GetAccountStatus
Diese Methode ruft den aktuellen Status des Tokenaccounts ab.
Ctx.AccountStatus.GetAccountStatus(account_id string) (FungibleAccountStatus, error)
Parameter:
  • account_id: string: Die ID des Tokenaccounts.
Rückgabewert:
  • Bei Erfolg eine JSON-Darstellung des Accountstatusobjekts.
Beispiel für den Rückgabewert:
{
    "AssetType": "oaccountStatus",
    "StatusId": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7",
    "AccountId": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
    "Status": "active"
}
SaveAccountStatus
Diese Methode speichert das Statusobjekt (wenn kein Statusobjekt vorhanden ist) für das Tokenkonto und setzt den Status auf den angegebenen Wert.
Ctx.AccountStatus.SaveAccountStatus(account_id string, status string)
Parameter:
  • account_id: string: Die ID des Tokenaccounts.
  • status: string: Der für den angegebenen Account festzulegende Status. Es werden nur drei Werte unterstützt: active, suspended oder deleted.
Rückgabewert:
  • Bei Erfolg eine JSON-Darstellung des Accountstatusobjekts.
Beispiel für den Rückgabewert:
{
    "AssetType": "oaccountStatus",
    "StatusId": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7",
    "AccountId": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
    "Status": "active"
}
GetAccountStatusHistory
Diese Methode ruft die Historie des Accountstatus ab.
Ctx.AccountStatus.History(status_id string) (interface{}, error)
Parameter:
  • status_id: string: Die ID des Accountstatusobjekts.
Rückgabewert:
  • Bei Erfolg eine JSON-Darstellung der Accountstatushistorie.
Beispiel für den Rückgabewert:
[
  {
    "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
Diese Methode aktiviert ein Token-Konto.
Ctx.Account.ActivateAccount(account_id: string) (interface{}, error)
Parameter:
  • account_id: string: Die ID des Tokenaccounts.
Rückgabewert:
  • Bei Erfolg eine JSON-Darstellung des Accountstatusobjekts für den angegebenen Tokenaccount.
Beispiel für den Rückgabewert:
{
    "AssetType": "oaccountStatus",
    "StatusId": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7",
    "AccountId": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
    "Status": "active"
}
SuspendAccount
Mit dieser Methode wird ein Tokenaccount gesperrt.
Ctx.Account.SuspendAccount(account_id string) (interface{}, error)
Parameter:
  • account_id: string: Die ID des Tokenaccounts.
Rückgabewert:
  • Bei Erfolg eine JSON-Darstellung des Accountstatusobjekts für den angegebenen Tokenaccount.
Beispiel für den Rückgabewert:
{
    "AssetType": "oaccountStatus",
    "StatusId": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7",
    "AccountId": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
    "Status": "suspended"
}
DeleteAccount
Mit dieser Methode wird ein Tokenaccount gelöscht.
Ctx.Account.DeleteAccount(account_id string) (interface{}, error)
Parameter:
  • account_id: string: Die ID des Tokenaccounts.
Rückgabewert:
  • Bei Erfolg eine JSON-Darstellung des Accountstatusobjekts für den angegebenen Tokenaccount.
Beispiel für den Rückgabewert:
{
    "AssetType": "oaccountStatus",
    "StatusId": "oaccountStatus~5a0b0d8b1c6433af9fedfe0d9e6580e7cf6b6bb62a0de6267aaf79f79d5e96d7",
    "AccountId": "oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1",
    "Status": "deleted"
}