Scaffolded Go-Projekt für Token Taxonomy Framework

Blockchain App Builder übernimmt die Eingabe aus Ihrer Token-Spezifikationsdatei und generiert ein voll funktionsfähiges gerüstetes Chaincode-Projekt.

Das Projekt generiert automatisch Tokenlebenszyklusklassen und -funktionen, einschließlich CRUD- und Nicht-CRUD-Methoden. Validierung von Argumenten, Marshalling/Unmarshalling und transparente Persistenzfunktion werden automatisch unterstützt.

Informationen zu dem gerüsteten Projekt und den Methoden, die nicht direkt mit Token verknüpft sind, finden Sie unter Gerüstetes Go Chaincode-Projekt.

Modell

Transparent Persistence Capability (oder vereinfachtes ORM) wird in der Klasse OchainModel erfasst.

package src
type Digicur struct {
    AssetType               string                 `json:"AssetType" final:"otoken"`
    Token_id                string                 `json:"Token_id" id:"true" mandatory:"true" validate:"regexp=^[A-Za-z0-9][A-Za-z0-9_-]*$,max=16"`
    Token_name              string                 `json:"Token_name" final:"digicur"`
    Token_desc              string                 `json:"Token_desc" validate:"max=256"`
    Token_type              string                 `json:"Token_type" final:"fungible" validate:"regexp=^fungible$"`
    Behavior                []string               `json:"Behavior" final:"[\"divisible\",\"mintable\",\"transferable\",\"burnable\",\"holdable\",\"roles\"]"`
    Roles                   map[string]interface{} `json:"Roles" final:"{\"minter_role_name\":\"minter\",\"burner_role_name\":\"burner\",\"notary_role_name\":\"notary\"}"`
    Mintable                map[string]interface{} `json:"Mintable" final:"{\"Max_mint_quantity\":20000}"`
    Divisible               map[string]interface{} `json:"Divisible" final:"{\"Decimal\":1}"`
    Token_to_currency_ratio int                    `json:"Token_to_currency_ratio" validate:"int"`
    Currency_representation string                 `json:"Currency_representation" validate:"string"`
    Metadata                interface{}            `json:"Metadata,omitempty"`
}

Verantwortlicher

Es gibt nur einen Hauptcontroller.

type Controller struct {
    Ctx trxcontext.TrxContext
}

Sie können eine beliebige Anzahl von Klassen, Funktionen oder Dateien erstellen, aber nur die Methoden, die in der Hauptcontrollerklasse definiert sind, können aufgerufen werden. Die anderen Methoden sind versteckt.

Mit den Token-SDK-Methoden können Sie benutzerdefinierte Methoden für Ihre Geschäftsanwendung schreiben.

Wenn Sie mehrere Token-SDK-Methoden in einer benutzerdefinierten Methode verwenden, verwenden Sie keine Methoden, die sich auf dieselben Schlüssel/Wert-Paare in der Statusdatenbank auswirken.

Verwenden Sie stattdessen die Methode BulkTransferTokens, um von dem Konto des Aufrufers aus auf mehrere Konten zu übertragen, wie im folgenden Code-Snippet dargestellt.

BulkTransferTokens(token_id string, flow: []map[string]interface{})

Hinweis:

Wenn Sie mehrere Token-SDK-Methoden in einer benutzerdefinierten Methode verwenden, die sich auf dieselben Schlüssel/Wert-Paare in der Statusdatenbank auswirken können, aktivieren Sie die MVCC-Optimierung für Token Chaincodes. Weitere Informationen finden Sie unter MVCC Optimization.

Automatisch generierte Tokenmethoden

Blockchain App Builder generiert automatisch Methoden zur Unterstützung von Token und Token-Lebenszyklen. Mit diesen Methoden können Sie Token initialisieren, Rollen und Accounts verwalten und andere Tokenlebenszyklusaufgaben ohne zusätzliche Codierung abschließen. Controller-Methoden müssen öffentlich sein, damit sie aufgerufen werden können. Öffentliche Methodennamen beginnen mit einem Großbuchstaben. Methodennamen, die mit einem Kleinbuchstaben beginnen, sind privat.

Methoden für die Zugriffskontrollverwaltung

AddTokenAdmin
Diese Methode fügt einen Benutzer als Token Admin des Chaincodes hinzu. Diese Methode kann nur von einem Token Admin des Chaincodes aufgerufen werden.
func (t *Controller) AddTokenAdmin(org_id string, user_id string) (interface{}, error) {
      auth, err := t.Ctx.Auth.CheckAuthorization("Admin.AddAdmin", "TOKEN")
      if err != nil && !auth {
            return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
      }
      return t.Ctx.Admin.AddTokenAdmin(org_id, user_id)
}
Parameter:
  • org_id string: Die Mitgliedsdienstanbieter-(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 des Benutzers enthält, der als Token Admin des Chaincodes hinzugefügt wurde.
Beispiel für Rückgabewert:
{
    "msg": "Successfully added Token Admin (Org_Id: Org1MSP, User_Id: user1)"
}
RemoveTokenAdmin
Mit dieser Methode wird ein Benutzer als Token Admin des Chaincodes entfernt. Diese Methode kann nur von einem Token Admin des Chaincodes aufgerufen werden.
func (t *Controller) RemoveTokenAdmin(org_id string, user_id string) (interface{}, error) {
    auth, err := t.Ctx.Auth.CheckAuthorization("Admin.RemoveAdmin", "TOKEN")
    if err != nil && !auth {
        return nil, fmt.Errorf("error in authorizing the caller  %s", err.Error())
    }
    return t.Ctx.Admin.RemoveAdmin(org_id, user_id)
}
Parameter:
  • org_id string: Die Mitgliedsdienstanbieter-(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 des Benutzers enthält, der als Token Admin des Chaincodes entfernt wurde.
Beispiel für Rückgabewert:
{"msg":"Successfuly removed Admin (Org_Id Org1MSP User_Id user1)"}
IsTokenAdmin
Diese Methode gibt den booleschen Wert true zurück, wenn der Aufrufer der Funktion ein Token Admin ist. Andernfalls gibt sie false zurück. Eine Token Admin oder Org Admin kann diese Funktion für jeden anderen Benutzer im Blockchain-Netzwerk aufrufen. Andere Benutzer können diese Methode nur für ihre eigenen Accounts aufrufen.
func (t *Controller) IsTokenAdmin(org_id string, user_id string) (interface{}, error) {
      auth, err := t.Ctx.Auth.CheckAuthorization("Admin.IsTokenAdmin", "TOKEN", map[string]string{"org_id": org_id, "user_id": user_id})
      if err != nil || !auth {
            return false, fmt.Errorf("error in authorizing the caller %s", err.Error())
      }
      return t.Ctx.Auth.IsUserTokenAdmin(org_id, user_id)
}
Parameter:
  • org_id string: Die Mitgliedsdienstanbieter-(MSP-)ID des Benutzers in der aktuellen Organisation.
  • user_id string: Der Benutzername oder die E-Mail-ID des Benutzers.
Rückgabewert:
  • Die Methode gibt true zurück, wenn der Aufrufer ein Token Admin ist. Andernfalls wird false zurückgegeben.
Beispiel für Rückgabewert:
{"result":false}
GetAllTokenAdmins
Diese Methode gibt eine Liste aller Benutzer zurück, die ein Token Admin des Chaincodes sind. Diese Methode kann nur von der Token Admin oder Org Admin des Chaincodes aufgerufen werden.
func (t *Controller) GetAllTokenAdmins() (interface{}, error) {
    auth, err := t.Ctx.Auth.CheckAuthorization("Admin.GetAllAdmins", "TOKEN")
    if err != nil && !auth {
        return nil, fmt.Errorf("error in authorizing the caller  %s", err.Error())
    }
    return t.Ctx.Admin.GetAllAdmins()
}
Parameter:
  • Kein
Rückgabewert:
  • Bei Erfolg eine JSON-Liste mit Admins, die OrgId- und UserId-Objekte enthält.
Beispiel für Rückgabewert:
{"admins":[{"OrgId":"Org1MSP","UserId":"admin"},{"OrgId":"Org1MSP","UserId":"user2"}]}
AddOrgAdmin
Diese Methode fügt einen Benutzer als Org Admin der Organisation hinzu. Diese Methode kann nur durch eine Token Admin des Chaincodes oder durch eine Org Admin der angegebenen Organisation aufgerufen werden.
func (t *Controller) AddOrgAdmin(org_id string, user_id string) (interface{}, error) {
      auth, err := t.Ctx.Auth.CheckAuthorization("Admin.AddOrgAdmin", "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.Admin.AddOrgAdmin(org_id, user_id)
}
Parameter:
  • org_id string: Die Mitgliedsdienstanbieter-(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 des Benutzers enthält, der als Org Admin der Organisation hinzugefügt wurde.
Beispiel für Rückgabewert:
{
    "msg": "Successfully added Org Admin (Org_Id: Org1MSP, User_Id: orgAdmin)"
}
RemoveOrgAdmin
Mit dieser Methode wird ein Benutzer als Org Admin einer Organisation entfernt. Diese Methode kann nur durch eine Token Admin des Chaincodes oder durch eine Org Admin der angegebenen Organisation aufgerufen werden.
func (t *Controller) RemoveOrgAdmin(org_id string, user_id string) (interface{}, error) {
      auth, err := t.Ctx.Auth.CheckAuthorization("Admin.RemoveOrgAdmin", "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.Admin.RemoveOrgAdmin(org_id, user_id)
}
Parameter:
  • org_id string: Die Mitgliedsdienstanbieter-(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 des Benutzers enthält, der als Org Admin der Organisation entfernt wurde.
Beispiel für Rückgabewert:
{
    "msg": "Successfully removed Org Admin (Org_Id Org1MSP User_Id orgAdmin)"
}
GetOrgAdmins
Diese Methode gibt eine Liste aller Benutzer zurück, die eine Org Admin einer Organisation sind. Diese Methode kann nur mit einer Token Admin des Chaincodes oder mit einer beliebigen Org Admin aufgerufen werden.
func (t *Controller) GetOrgAdmins() (interface{}, error) {
      auth, err := t.Ctx.Auth.CheckAuthorization("Admin.GetOrgAdmins", "TOKEN")
      if err != nil && !auth {
            return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
      }
      return t.Ctx.Admin.GetAllOrgAdmins()
}
Parameter:
  • Kein
Rückgabewert:
  • Bei Erfolg eine JSON-Liste, die Objekte OrgId und UserId enthält.
Beispiel für Rückgabewert:
{
    "admins": [
        {
            "OrgId": "Org1MSP",
            "UserId": "orgadmin"
        },
        {
            "OrgId": "Org1MSP",
            "UserId": "orgadmin1"
        },
        {
            "OrgId": "Org1MSP",
            "UserId": "orgadmin2"
        }
    ]
}
AddTokenAdmin
Diese Methode fügt einen Benutzer als Token Admin des Chaincodes hinzu. Diese Methode kann nur von einem Token Admin des Chaincodes aufgerufen werden.
func (t *Controller) AddTokenAdmin(org_id string, user_id string) (interface{}, error) {
      auth, err := t.Ctx.Auth.CheckAuthorization("Admin.AddAdmin", "TOKEN")
      if err != nil && !auth {
            return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
      }
      return t.Ctx.Admin.AddTokenAdmin(org_id, user_id)
}
Parameter:
  • org_id string: Die Mitgliedsdienstanbieter-(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 des Benutzers enthält, der als Token Admin des Chaincodes hinzugefügt wurde.
Beispiel für Rückgabewert:
{
    "msg": "Successfully added Token Admin (Org_Id: Org1MSP, User_Id: user1)"
}
RemoveTokenAdmin
Mit dieser Methode wird ein Benutzer als Token Admin des Chaincodes entfernt. Diese Methode kann nur von einem Token Admin des Chaincodes aufgerufen werden.
func (t *Controller) RemoveTokenAdmin(org_id string, user_id string) (interface{}, error) {
    auth, err := t.Ctx.Auth.CheckAuthorization("Admin.RemoveAdmin", "TOKEN")
    if err != nil && !auth {
        return nil, fmt.Errorf("error in authorizing the caller  %s", err.Error())
    }
    return t.Ctx.Admin.RemoveAdmin(org_id, user_id)
}
Parameter:
  • org_id string: Die Mitgliedsdienstanbieter-(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 des Benutzers enthält, der als Token Admin des Chaincodes entfernt wurde.
Beispiel für Rückgabewert:
{"msg":"Successfuly removed Admin (Org_Id Org1MSP User_Id user1)"}
IsTokenAdmin
Diese Methode gibt den booleschen Wert true zurück, wenn der Aufrufer der Funktion ein Token Admin ist. Andernfalls gibt sie false zurück. Diese Funktion kann nur mit Token Admin, Token Auditor, Org Admin oder Org Auditor aufgerufen werden.
func (t *Controller) IsTokenAdmin(org_id string, user_id string) (interface{}, error) {
      auth, err := t.Ctx.Auth.CheckAuthorization("Admin.IsTokenAdmin", "TOKEN", map[string]string{"org_id": org_id, "user_id": user_id})
      if err != nil || !auth {
            return false, fmt.Errorf("error in authorizing the caller %s", err.Error())
      }
      return t.Ctx.Auth.IsUserTokenAdmin(org_id, user_id)
}
Parameter:
  • org_id string: Die Mitgliedsdienstanbieter-(MSP-)ID des Benutzers in der aktuellen Organisation.
  • user_id string: Der Benutzername oder die E-Mail-ID des Benutzers.
Rückgabewert:
  • Die Methode gibt true zurück, wenn der Aufrufer ein Token Admin ist. Andernfalls wird false zurückgegeben.
Beispiel für Rückgabewert:
{"result":false}
GetAllTokenAdmins
Diese Methode gibt eine Liste aller Benutzer zurück, die ein Token Admin des Chaincodes sind. Diese Methode kann nur mit einer Token Admin oder Token Auditor aufgerufen werden.
func (t *Controller) GetAllTokenAdmins() (interface{}, error) {
    auth, err := t.Ctx.Auth.CheckAuthorization("Admin.GetAllAdmins", "TOKEN")
    if err != nil && !auth {
        return nil, fmt.Errorf("error in authorizing the caller  %s", err.Error())
    }
    return t.Ctx.Admin.GetAllAdmins()
}
Parameter:
  • Kein
Rückgabewert:
  • Bei Erfolg eine JSON-Liste mit Admins, die OrgId- und UserId-Objekte enthält.
Beispiel für Rückgabewert:
{"admins":[{"OrgId":"Org1MSP","UserId":"admin"},{"OrgId":"Org1MSP","UserId":"user2"}]}
AddOrgAdmin
Diese Methode fügt einen Benutzer als Org Admin der Organisation hinzu. Diese Methode kann nur durch eine Token Admin des Chaincodes oder durch eine Org Admin der angegebenen Organisation aufgerufen werden.
func (t *Controller) AddOrgAdmin(org_id string, user_id string) (interface{}, error) {
      auth, err := t.Ctx.Auth.CheckAuthorization("Admin.AddOrgAdmin", "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.Admin.AddOrgAdmin(org_id, user_id)
}
Parameter:
  • org_id string: Die Mitgliedsdienstanbieter-(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 des Benutzers enthält, der als Org Admin der Organisation hinzugefügt wurde.
Beispiel für Rückgabewert:
{
    "msg": "Successfully added Org Admin (Org_Id: Org1MSP, User_Id: orgAdmin)"
}
RemoveOrgAdmin
Mit dieser Methode wird ein Benutzer als Org Admin einer Organisation entfernt. Diese Methode kann nur durch eine Token Admin des Chaincodes oder durch eine Org Admin der angegebenen Organisation aufgerufen werden.
func (t *Controller) RemoveOrgAdmin(org_id string, user_id string) (interface{}, error) {
      auth, err := t.Ctx.Auth.CheckAuthorization("Admin.RemoveOrgAdmin", "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.Admin.RemoveOrgAdmin(org_id, user_id)
}
Parameter:
  • org_id string: Die Mitgliedsdienstanbieter-(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 des Benutzers enthält, der als Org Admin der Organisation entfernt wurde.
Beispiel für Rückgabewert:
{
    "msg": "Successfully removed Org Admin (Org_Id Org1MSP User_Id orgAdmin)"
}
GetOrgAdmins
Diese Methode gibt eine Liste aller Benutzer zurück, die eine Org Admin einer Organisation sind. Diese Methode kann nur mit Token Admin, Token Auditor, Org Admin oder Org Auditor aufgerufen werden.
func (t *Controller) GetOrgAdmins() (interface{}, error) {
      auth, err := t.Ctx.Auth.CheckAuthorization("Admin.GetOrgAdmins", "TOKEN")
      if err != nil && !auth {
            return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
      }
      return t.Ctx.Admin.GetAllOrgAdmins()
}
Parameter:
  • Kein
Rückgabewert:
  • Bei Erfolg eine JSON-Liste, die Objekte OrgId und UserId enthält.
Beispiel für Rückgabewert:
{
    "admins": [
        {
            "OrgId": "Org1MSP",
            "UserId": "orgadmin"
        },
        {
            "OrgId": "Org1MSP",
            "UserId": "orgadmin1"
        },
        {
            "OrgId": "Org1MSP",
            "UserId": "orgadmin2"
        }
    ]
}
AddTokenAuditor
Diese Methode fügt einen Benutzer als Token Auditor des Chaincodes hinzu. Diese Methode kann nur von einem Token Admin des Chaincodes aufgerufen werden.
func (t *Controller) AddTokenAuditor(org_id string, user_id string) (interface{}, error)
Parameter:
  • org_id: string: Die Mitgliedsdienstanbieter-(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 des Benutzers enthält, der als Token Auditor des Chaincodes hinzugefügt wurde.
Beispiel für Rückgabewert:
{
    "returnCode": "Success",
    "error": "",
    "result": {
        "txid": "f0888dd52f39dfa669275cc8f35d0b47b37b8407d384493d16970fcbb377f937",
        "payload": {
            "msg": "Successfully added Token Auditor (Org_Id: CB, User_Id: cb)"
        },
        "encode": "JSON",
        "sourceURL": "cb-oabcs1-bom.blockchain.ocp.example.com:20010",
        "blockNumber": 268
    }
}
RemoveTokenAuditor
Mit dieser Methode wird ein Benutzer als Token Auditor des Chaincodes entfernt. Diese Methode kann nur von einem Token Admin des Chaincodes aufgerufen werden.
func (t *Controller) RemoveTokenAuditor(org_id string, user_id string) (interface{}, error)
Parameter:
  • org_id: string: Die Mitgliedsdienstanbieter-(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 des Benutzers enthält, der als Token Auditor des Chaincodes entfernt wurde.
Beispiel für Rückgabewert:
{
    "returnCode": "Success",
    "error": "",
    "result": {
        "txid": "2f01f48eceaf2dff175f98b96a5bdd22c949f48fc5683ce86d6141cc4892aee3",
        "payload": {
            "msg": "Successfully removed Token Auditor (Org_Id: CB, User_Id: cb)"
        },
        "encode": "JSON",
        "sourceURL": "cb-oabcs1-bom.blockchain.ocp.example.com:20010",
        "blockNumber": 270
    }
}
GetTokenAuditors
Diese Methode gibt alle Token Auditors des Chaincodes zurück. Diese Methode kann nur mit einer Token Admin oder Token Auditor des Chaincodes aufgerufen werden.
func (t *Controller) GetTokenAuditors() (interface{}, error)
Beispiel für Rückgabewert:
{
    "returnCode": "Success",
    "error": "",
    "result": {
        "txid": "18eaa81b04d43db64f28287bab1cf6609e2a1d8ff84852ff73849ddb9a9dfba1",
        "payload": {
            "auditors": [
                {
                    "OrgId": "CB",
                    "UserId": "auditor_user_cb"
                }
            ]
        },
        "encode": "JSON",
        "sourceURL": "cb-oabcs1-bom.blockchain.ocp.example.com:20010",
        "blockNumber": 269
    }
}
AddOrgAuditor
Diese Methode fügt einen Benutzer als Org Auditor des Chaincodes hinzu. Diese Methode kann nur mit einer Token Admin oder Org Admin des Chaincodes aufgerufen werden.
func (t *Controller) AddOrgAuditor(org_id string, user_id string) (interface{}, error)
Parameter:
  • org_id: string: Die Mitgliedsdienstanbieter-(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 des Benutzers enthält, der als Org Auditor des Chaincodes hinzugefügt wurde.
Beispiel für Rückgabewert:
{
    "returnCode": "Success",
    "error": "",
    "result": {
        "txid": "3d5ec46003c68c6208d43c82894bd6da5c0b763339cc5212e09b71d39d0d80e2",
        "payload": {
            "msg": "Successfully added Org Auditor (Org_Id: CB, User_Id: cb)"
        },
        "encode": "JSON",
        "sourceURL": "cb-oabcs1-bom.blockchain.ocp.example.com:20010",
        "blockNumber": 271
    }
}
RemoveOrgAuditor
Mit dieser Methode wird ein Benutzer als Org Auditor des Chaincodes entfernt. Diese Methode kann nur mit einer Token Admin oder Org Admin des Chaincodes aufgerufen werden.
func (t *Controller) RemoveOrgAuditor(org_id string, user_id string) (interface{}, error)
Parameter:
  • org_id: string: Die Mitgliedsdienstanbieter-(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 des Benutzers enthält, der als Org Auditor des Chaincodes entfernt wurde.
Beispiel für Rückgabewert:
{
    "returnCode": "Success",
    "error": "",
    "result": {
        "txid": "713a120641afbc4dfaeac73b82c9fd51df6fcfd7d4d9a82553d3c487bf11f530",
        "payload": {
            "msg": "Successfully removed Org Auditor (Org_Id: CB, User_Id: cb)"
        },
        "encode": "JSON",
        "sourceURL": "cb-oabcs1-bom.blockchain.ocp.example.com:20010",
        "blockNumber": 273
    }
}
GetOrgAuditors
Diese Methode gibt alle Org Auditors des Chaincodes zurück. Diese Methode kann nur mit Token Admin, Token Auditor, Org Admin oder Org Auditor aufgerufen werden.
func (t *Controller) GetOrgAuditors() (interface{}, error)
Beispiel für Rückgabewert:
{
    "returnCode": "Success",
    "error": "",
    "result": {
        "txid": "07656bf434616d7a3d7fe4fb81dc80c8cc608991648adfd9f6f2f2b9f6ddf468",
        "payload": {
            "auditors": [
                {
                    "OrgId": "CB",
                    "UserId": "cb"
                },
                {
                    "OrgId": "CB",
                    "UserId": "issuer_user_cb"
                }
            ]
        },
        "encode": "JSON",
        "sourceURL": "cb-oabcs1-bom.blockchain.ocp.example.com:20010",
        "blockNumber": 272
    }
}

Methoden für die Verwaltung der Tokenkonfiguration

Init
Diese Methode wird aufgerufen, wenn der Chaincode bereitgestellt wird. Jede Token Admin wird durch die Informationen user_id und org_id im obligatorischen Parameter adminList identifiziert. Die user_id ist der Benutzername oder die E-Mail-ID des Instanzeigentümers oder des Benutzers, der bei der Instanz angemeldet ist. Die org_id ist die MSP-ID (Member Service Provider) des Benutzers in der aktuellen Netzwerkorganisation.
Jeder Token Admin-Benutzer kann andere Token Admin-Benutzer hinzufügen und entfernen, indem er die Methoden AddTokenAdmin und RemoveTokenAdmin aufruft.
func (t *Controller) Init(adminList []admin.TokenAdminAsset) (interface{}, error) {
    list, err := t.Ctx.Admin.InitAdmin(adminList)
    if err != nil {
        return nil, fmt.Errorf("initializing admin list failed %s", err.Error())
    }
    return list, nil
}
Parameter:
  • adminList array: Ein Array mit {user_id, org_id}-Informationen, das die Liste der Tokenadministratoren angibt. Das Array adminList ist ein obligatorischer Parameter.
Parameterbeispiel, macOS und Linux-CLI:
'[{"user_id":"userid", "org_id":"OrgMSPId"}]'
Parameterbeispiel, Microsoft Windows-CLI:
"[{\"user_id\":\"userid\", \"org_id\":\"OrgMSPId\"}]"
Parameterbeispiel, Oracle Blockchain Platform-Konsole:
["[{\"user_id\":\"userid\", \"org_id\":\"OrgMSPId\"}]"]
Initialize<Token Name>Token
Diese Methode erstellt ein Token und initialisiert die Tokeneigenschaften. Das Asset und seine Eigenschaften werden in der Statusdatenbank gespeichert. Diese Methode kann nur von einem Token Admin des Chaincodes aufgerufen werden.
func (t *Controller) InitializeDigicurToken(asset Digicur) (interface{}, error) {
    auth, err := t.Ctx.Auth.CheckAuthorization("Token.Save", "TOKEN")
    if err != nil && !auth {
        return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
    }
    return t.Ctx.Token.Save(&asset)
}
Parameter:
  • asset <Token Class>: Das Tokenasset wird als Parameter an diese Methode übergeben. Die Eigenschaften des Tokenassets können variieren und werden in der Tokenspezifikationsdatei beschrieben. Nehmen Sie keine Parameter auf, die in der Spezifikationsdatei als schreibgeschützt markiert sind.

    Sie geben den Parameter asset in einem anderen Format an, wenn Sie Visual Studio Code im Vergleich zur CLI oder Postman-Collection verwenden.

    Visual Studio Code: Verwenden Sie die GUI, um einzelne Parameter zu übergeben, die den Tokenklassenfeldern entsprechen.

    CLI/Postman: Übergeben Sie eine serialisierte JSON-Zeichenfolge, die die Token-Spezifikationsfelder enthält, wie im folgenden Beispiel dargestellt.

    "{\"token_id\":\"USD\",\"token_desc\":\"token_desc value\",\"Currency_Name\":\"Currency_Name value\"}"

Rückgabewert:
  • Bei Erfolg eine JSON-Darstellung des erstellten Tokenassets.
Beispiel für Rückgabewert:
{
    "AssetType": "otoken",
    "Token_id": "digiCurr101",
    "Token_name": "digicur",
    "Token_desc": "",
    "Token_type": "fungible",
    "Behavior": ["divisible", "mintable", "transferable", "burnable", "roles"],
    "Roles": {
        "minter_role_name": "minter"
    },
    "Mintable": {
        "Max_mint_quantity": 1000
    },
    "Divisible": {
        "Decimal": 2
    },
    "Currency_name": "",
    "Token_to_currency_ratio": 1
}
Update<Token Name>Token
Diese Methode aktualisiert Tokeneigenschaften. Nachdem ein Tokenasset erstellt wurde, können nur die Eigenschaft token_desc und benutzerdefinierte Eigenschaften aktualisiert werden. Diese Methode kann nur von einem Token Admin des Chaincodes aufgerufen werden.
func (t *Controller) UpdateDigicurToken(asset Digicur) (interface{}, error) {
    auth, err := t.Ctx.Auth.CheckAuthorization("Token.Update", "TOKEN")
    if err != nil && !auth {
        return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
    }
    return t.Ctx.Token.Update(&asset)
}
Parameter:
  • asset <Token Class>: Das Tokenasset wird als Parameter an diese Methode übergeben. Die Eigenschaften des Tokenassets können variieren und werden in der Tokenspezifikationsdatei beschrieben. Nehmen Sie keine Parameter auf, die in der Spezifikationsdatei als schreibgeschützt markiert sind.

    Sie geben den Parameter asset in einem anderen Format an, wenn Sie Visual Studio Code im Vergleich zur CLI oder Postman-Collection verwenden.

    Visual Studio Code: Verwenden Sie die GUI, um einzelne Parameter zu übergeben, die den Tokenklassenfeldern entsprechen.

    CLI/Postman: Übergeben Sie eine serialisierte JSON-Zeichenfolge, die die Token-Spezifikationsfelder enthält, wie im folgenden Beispiel dargestellt.

    "{\"token_id\":\"USD\",\"token_desc\":\"token_desc value\",\"Currency_Name\":\"Currency_Name value\"}"

Rückgabewert:
  • Bei Erfolg eine aktualisierte JSON-Darstellung des Tokenassets.
Beispiel für Rückgabewert:
{
    "AssetType": "otoken",
    "Token_id": "digiCurr101",
    "Token_name": "digicur",
    "Token_desc": "Digital Currency equiv of dollar",
    "Token_type": "fungible",
    "Behavior": ["divisible", "mintable", "transferable", "burnable", "roles"],
    "Roles": {
        "minter_role_name": "minter"
    },
    "Mintable": {
        "Max_mint_quantity": 1000
    },
    "Divisible": {
        "Decimal": 2
    },
    "Currency_name": "",
    "Token_to_currency_ratio": 1
}
GetTokenDecimals
Diese Methode gibt die Anzahl der Dezimalstellen zurück, die für ein Bruchteil-Token konfiguriert wurden. Wenn das Verhalten divisible für das Token nicht angegeben wurde, ist der Standardwert 0. Diese Methode kann nur mit einer Token Admin oder Org Admin des Chaincodes aufgerufen werden.
func (t *Controller) GetTokenDecimals(token_id string) (interface{}, error) {
    auth, err := t.Ctx.Auth.CheckAuthorization("Token.GetTokenDecimals", "TOKEN")
    if err != nil && !auth {
        return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
    }
    tokenDecimal, err := t.Ctx.Token.GetTokenDecimals(token_id)
    if err != nil {
        return nil, fmt.Errorf("Error in GetTokenDecimals %s", err.Error())
    }
    response := make(map[string]interface{})
    response["msg"] = fmt.Sprintf("Token Id: %s has %d decimal places.", token_id, tokenDecimal)
    return response, nil
}
Parameter:
  • token_id string: Die ID des Tokens.
Rückgabewert:
  • Bei Erfolg eine JSON-Zeichenfolge mit der Anzahl der Token-Dezimalstellen.
Beispiel für Rückgabewert:
{"msg":"Token Id: digiCurr101 has 1 decimal places."}
GetTokenById
Diese Methode gibt ein Tokenobjekt zurück, wenn es in der Statusdatenbank vorhanden ist. Diese Methode kann nur mit einer Token Admin oder Org Admin des Chaincodes aufgerufen werden.
func (t *Controller) GetTokenById(token_id string) (interface{}, error) {
    auth, err := t.Ctx.Auth.CheckAuthorization("Token.Get", "TOKEN")
    if err != nil && !auth {
        return nil, fmt.Errorf("error in authorizing the caller  %s", err.Error())
    }
    tokenAsset, err := t.getTokenObject(token_id)
    if err != nil {
        return nil, err
    }
    return tokenAsset.Interface(), err
}
Parameter:
  • token_id string: Die ID des Tokens.
Rückgabewert:
  • Bei Erfolg ein JSON-Objekt, das das Tokenasset darstellt.
Beispiel für Rückgabewert:
{
    "AssetType": "otoken",
    "Token_id": "digiCurr101",
    "Token_name": "digicur",
    "Token_desc": "Digital Currency equiv of dollar",
    "Token_type": "fungible",
    "Behavior": [
        "divisible",
        "mintable",
        "transferable",
        "burnable",
        "roles"
    ],
    "Roles": {
        "minter_role_name": "minter"
    },
    "Mintable": {
        "Max_mint_quantity": 1000
    },
    "Divisible": {
        "Decimal": 2
    },
    "Currency_name": "",
    "Token_to_currency_ratio": 1
}
GetTokenHistory
Diese Methode gibt die Tokenhistorie für eine angegebene Token-ID zurück. Jeder Benutzer kann diese Methode aufrufen.
func (t *Controller) GetTokenHistory(token_id string) (interface{}, error) {
      auth, err := t.Ctx.Auth.CheckAuthorization("Token.GetTokenHistory", "TOKEN")
      if err != nil && !auth {
            return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
      }
      return t.Ctx.Token.History(token_id)
}
Parameter:
  • tokenId: string: Die ID des Tokens.
Rückgabewert:
  • Bei Erfolg ein JSON-Objekt, das die Tokenhistorie darstellt.
Beispiel für Rückgabewert:
[
    {
        "IsDelete": "false",
        "Timestamp": "2023-09-01T16:46:33Z",
        "TxId": "12333b8a4f63aa9b3a34072efcbd7df546c6d1e7d82a7a9596e899383656d6f7",
        "Value": {
            "AssetType": "otoken",
            "Behavior": [
                "divisible",
                "mintable",
                "transferable",
                "burnable",
                "roles"
            ],
            "Currency_name1": "",
            "Divisible": {
                "Decimal": 2
            },
            "Mintable": {
                "Max_mint_quantity": 1000
            },
            "Roles": {
                "minter_role_name": "minter"
            },
            "Token_desc": "updated description",
            "Token_id": "token",
            "Token_name": "fiatmoneytok",
            "Token_to_currency_ratio": 0,
            "Token_type": "fungible",
            "Token_unit": "fractional"
        }
    },
    {
        "IsDelete": "false",
        "Timestamp": "2023-09-01T16:04:25Z",
        "TxId": "99702e2dad7554a5ee4716a0d01d3e394cbce39bea8bade265d8911f30ebad0b",
        "Value": {
            "AssetType": "otoken",
            "Behavior": [
                "divisible",
                "mintable",
                "transferable",
                "burnable",
                "roles"
            ],
            "Currency_name1": "",
            "Divisible": {
                "Decimal": 2
            },
            "Mintable": {
                "Max_mint_quantity": 1000
            },
            "Roles": {
                "minter_role_name": "minter"
            },
            "Token_desc": "",
            "Token_id": "token",
            "Token_name": "fiatmoneytok",
            "Token_to_currency_ratio": 0,
            "Token_type": "fungible",
            "Token_unit": "fractional"
        }
    }
]
GetAllTokens
Diese Methode gibt alle Token zurück, die in der Statusdatenbank gespeichert sind. Diese Methode kann nur mit einer Token Admin oder Org Admin des Chaincodes aufgerufen werden.
func (t *Controller) GetAllTokens() (interface{}, error) {
    auth, err := t.Ctx.Auth.CheckAuthorization("Token.GetAllTokens", "TOKEN")
    if err != nil && !auth {
        return nil, fmt.Errorf("error in authorizing the caller  %s", err.Error())
    }
    return t.Ctx.Token.GetAllTokens()
}
Parameter:
  • Kein
Rückgabewert:
  • Bei Erfolg ein JSON-Objekt, das alle Tokenassets darstellt.
Beispiel für Rückgabewert:
"payload": [
    {
        "key": "t1",
        "valueJson": {
            "AssetType": "otoken",
            "Behavior": [
                "divisible",
                "mintable",
                "transferable",
                "holdable",
                "burnable",
                "roles"
            ],
            "Currency_name": "Currency_name value",
            "Divisible": {
                "Decimal": 8
            },
            "Mintable": {
                "Max_mint_quantity": 10000
            },
            "Roles": {
                "burner_role_name": "burner",
                "minter_role_name": "minter",
                "notary_role_name": "notary"
            },
            "Token_desc": "Token_desc value",
            "Token_id": "t1",
            "Token_name": "obptok",
            "Token_to_currency_ratio": 2,
            "Token_type": "fungible",
            "Token_unit": "fractional"
        }
    }
]
GetTokensByName
Diese Methode gibt alle Tokenobjekte mit einem angegebenen Namen zurück. Diese Methode kann nur mit einer Token Admin oder Org Admin des Chaincodes aufgerufen werden. Diese Methode verwendet SQL-reiche Berkeley DB-Abfragen und kann nur aufgerufen werden, wenn eine Verbindung zum Remote-Oracle Blockchain Platform-Netzwerk besteht.
func (t *Controller) GetTokensByName(token_name string) (interface{}, error) {
    auth, err := t.Ctx.Auth.CheckAuthorization("Token.GetTokensByName", "TOKEN")
    if err != nil && !auth {
        return nil, fmt.Errorf("error in authorizing the caller  %s", err.Error())
    }
    return t.Ctx.Token.GetTokensByName(token_name)
}
Parameter:
  • token_name string: Der Name der abzurufenden Token. Der Name entspricht der Eigenschaft Token_name in der Spezifikationsdatei. Der Wert ist der Klassenname des Tokens.
Rückgabewert:
  • Bei Erfolg ein JSON-Objekt aller Tokenassets, die mit dem Namen übereinstimmen.
Beispiel für Rückgabewert:
"payload": [
    {
        "key": "t1",
        "valueJson": {
            "AssetType": "otoken",
            "Behavior": [
                "divisible",
                "mintable",
                "transferable",
                "holdable",
                "burnable",
                "roles"
            ],
            "Currency_name": "Currency_name value",
            "Divisible": {
                "Decimal": 8
            },
            "Mintable": {
                "Max_mint_quantity": 10000
            },
            "Roles": {
                "burner_role_name": "burner",
                "minter_role_name": "minter",
                "notary_role_name": "notary"
            },
            "Token_desc": "Token_desc value",
            "Token_id": "t1",
            "Token_name": "obptok",
            "Token_to_currency_ratio": 999,
            "Token_type": "fungible",
            "Token_unit": "fractional"
        }
    },
    {
        "key": "obp2",
        "valueJson": {
            "AssetType": "otoken",
            "Behavior": [
                "divisible",
                "mintable",
                "transferable",
                "holdable",
                "burnable",
                "roles"
            ],
            "Currency_name": "",
            "Divisible": {
                "Decimal": 8
            },
            "Mintable": {
                "Max_mint_quantity": 10000
            },
            "Roles": {
                "burner_role_name": "burner",
                "minter_role_name": "minter",
                "notary_role_name": "notary"
            },
            "Token_desc": "",
            "Token_id": "obp2",
            "Token_name": "obptok",
            "Token_to_currency_ratio": 0,
            "Token_type": "fungible",
            "Token_unit": "fractional"
        }
    }
]
Init
Diese Methode wird aufgerufen, wenn der Chaincode bereitgestellt wird. Jede Token Admin wird durch die Informationen user_id und org_id im obligatorischen Parameter adminList identifiziert. Die user_id ist der Benutzername oder die E-Mail-ID des Instanzeigentümers oder des Benutzers, der bei der Instanz angemeldet ist. Die org_id ist die MSP-ID (Member Service Provider) des Benutzers in der aktuellen Netzwerkorganisation.
Jeder Token Admin-Benutzer kann andere Token Admin-Benutzer hinzufügen und entfernen, indem er die Methoden AddTokenAdmin und RemoveTokenAdmin aufruft.
func (t *Controller) Init(adminList []admin.TokenAdminAsset) (interface{}, error) {
    list, err := t.Ctx.Admin.InitAdmin(adminList)
    if err != nil {
        return nil, fmt.Errorf("initializing admin list failed %s", err.Error())
    }
    return list, nil
}
Parameter:
  • adminList array: Ein Array mit {user_id, org_id}-Informationen, das die Liste der Tokenadministratoren angibt. Das Array adminList ist ein obligatorischer Parameter.
Parameterbeispiel, macOS und Linux-CLI:
'[{"user_id":"userid", "org_id":"OrgMSPId"}]'
Parameterbeispiel, Microsoft Windows-CLI:
"[{\"user_id\":\"userid\", \"org_id\":\"OrgMSPId\"}]"
Parameterbeispiel, Oracle Blockchain Platform-Konsole:
["[{\"user_id\":\"userid\", \"org_id\":\"OrgMSPId\"}]"]
Initialize<Token Name>Token
Diese Methode erstellt ein Token und initialisiert die Tokeneigenschaften. Das Asset und seine Eigenschaften werden in der Statusdatenbank gespeichert. Diese Methode kann nur von einem Token Admin des Chaincodes aufgerufen werden.
func (t *Controller) InitializeDigicurToken(asset Digicur) (interface{}, error) {
    auth, err := t.Ctx.Auth.CheckAuthorization("Token.Save", "TOKEN")
    if err != nil && !auth {
        return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
    }
    return t.Ctx.Token.Save(&asset)
}
Parameter:
  • asset <Token Class>: Das Tokenasset wird als Parameter an diese Methode übergeben. Die Eigenschaften des Tokenassets können variieren und werden in der Tokenspezifikationsdatei beschrieben. Nehmen Sie keine Parameter auf, die in der Spezifikationsdatei als schreibgeschützt markiert sind.

    Sie geben den Parameter asset in einem anderen Format an, wenn Sie Visual Studio Code im Vergleich zur CLI oder Postman-Collection verwenden.

    Visual Studio Code: Verwenden Sie die GUI, um einzelne Parameter zu übergeben, die den Tokenklassenfeldern entsprechen.

    CLI/Postman: Übergeben Sie eine serialisierte JSON-Zeichenfolge, die die Token-Spezifikationsfelder enthält, wie im folgenden Beispiel dargestellt.

    "{\"token_id\":\"USD\",\"token_desc\":\"token_desc value\",\"Currency_Name\":\"Currency_Name value\"}"

Rückgabewert:
  • Bei Erfolg eine JSON-Darstellung des erstellten Tokenassets.
Beispiel für Rückgabewert:
{
    "AssetType": "otoken",
    "Token_id": "digiCurr101",
    "Token_name": "digicur",
    "Token_desc": "",
    "Token_type": "fungible",
    "Behavior": ["divisible", "mintable", "transferable", "burnable", "roles"],
    "Roles": {
        "minter_role_name": "minter"
    },
    "Mintable": {
        "Max_mint_quantity": 1000
    },
    "Divisible": {
        "Decimal": 2
    },
    "Currency_name": "",
    "Token_to_currency_ratio": 1
}
Update<Token Name>Token
Diese Methode aktualisiert Tokeneigenschaften. Nachdem ein Tokenasset erstellt wurde, können nur die Eigenschaft token_desc und benutzerdefinierte Eigenschaften aktualisiert werden. Diese Methode kann nur von einem Token Admin des Chaincodes aufgerufen werden.
func (t *Controller) UpdateDigicurToken(asset Digicur) (interface{}, error) {
    auth, err := t.Ctx.Auth.CheckAuthorization("Token.Update", "TOKEN")
    if err != nil && !auth {
        return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
    }
    return t.Ctx.Token.Update(&asset)
}
Parameter:
  • asset <Token Class>: Das Tokenasset wird als Parameter an diese Methode übergeben. Die Eigenschaften des Tokenassets können variieren und werden in der Tokenspezifikationsdatei beschrieben. Nehmen Sie keine Parameter auf, die in der Spezifikationsdatei als schreibgeschützt markiert sind.

    Sie geben den Parameter asset in einem anderen Format an, wenn Sie Visual Studio Code im Vergleich zur CLI oder Postman-Collection verwenden.

    Visual Studio Code: Verwenden Sie die GUI, um einzelne Parameter zu übergeben, die den Tokenklassenfeldern entsprechen.

    CLI/Postman: Übergeben Sie eine serialisierte JSON-Zeichenfolge, die die Token-Spezifikationsfelder enthält, wie im folgenden Beispiel dargestellt.

    "{\"token_id\":\"USD\",\"token_desc\":\"token_desc value\",\"Currency_Name\":\"Currency_Name value\"}"

Rückgabewert:
  • Bei Erfolg eine aktualisierte JSON-Darstellung des Tokenassets.
Beispiel für Rückgabewert:
{
    "AssetType": "otoken",
    "Token_id": "digiCurr101",
    "Token_name": "digicur",
    "Token_desc": "Digital Currency equiv of dollar",
    "Token_type": "fungible",
    "Behavior": ["divisible", "mintable", "transferable", "burnable", "roles"],
    "Roles": {
        "minter_role_name": "minter"
    },
    "Mintable": {
        "Max_mint_quantity": 1000
    },
    "Divisible": {
        "Decimal": 2
    },
    "Currency_name": "",
    "Token_to_currency_ratio": 1
}
GetTokenDecimals
Diese Methode gibt die Anzahl der Dezimalstellen zurück, die für ein Bruchteil-Token konfiguriert wurden. Wenn das Verhalten divisible für das Token nicht angegeben wurde, ist der Standardwert 0. Diese Methode kann nur mit Token Admin, Token Auditor, Org Admin oder Org Auditor aufgerufen werden.
func (t *Controller) GetTokenDecimals(token_id string) (interface{}, error) {
    auth, err := t.Ctx.Auth.CheckAuthorization("Token.GetTokenDecimals", "TOKEN")
    if err != nil && !auth {
        return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
    }
    tokenDecimal, err := t.Ctx.Token.GetTokenDecimals(token_id)
    if err != nil {
        return nil, fmt.Errorf("Error in GetTokenDecimals %s", err.Error())
    }
    response := make(map[string]interface{})
    response["msg"] = fmt.Sprintf("Token Id: %s has %d decimal places.", token_id, tokenDecimal)
    return response, nil
}
Parameter:
  • token_id string: Die ID des Tokens.
Rückgabewert:
  • Bei Erfolg eine JSON-Zeichenfolge mit der Anzahl der Token-Dezimalstellen.
Beispiel für Rückgabewert:
{"msg":"Token Id: digiCurr101 has 1 decimal places."}
GetTokenById
Diese Methode gibt ein Tokenobjekt zurück, wenn es in der Statusdatenbank vorhanden ist. Diese Methode kann nur mit Token Admin, Token Auditor, Org Admin oder Org Auditor aufgerufen werden.
func (t *Controller) GetTokenById(token_id string) (interface{}, error) {
    auth, err := t.Ctx.Auth.CheckAuthorization("Token.Get", "TOKEN")
    if err != nil && !auth {
        return nil, fmt.Errorf("error in authorizing the caller  %s", err.Error())
    }
    tokenAsset, err := t.getTokenObject(token_id)
    if err != nil {
        return nil, err
    }
    return tokenAsset.Interface(), err
}
Parameter:
  • token_id string: Die ID des Tokens.
Rückgabewert:
  • Bei Erfolg ein JSON-Objekt, das das Tokenasset darstellt.
Beispiel für Rückgabewert:
{
    "AssetType": "otoken",
    "Token_id": "digiCurr101",
    "Token_name": "digicur",
    "Token_desc": "Digital Currency equiv of dollar",
    "Token_type": "fungible",
    "Behavior": [
        "divisible",
        "mintable",
        "transferable",
        "burnable",
        "roles"
    ],
    "Roles": {
        "minter_role_name": "minter"
    },
    "Mintable": {
        "Max_mint_quantity": 1000
    },
    "Divisible": {
        "Decimal": 2
    },
    "Currency_name": "",
    "Token_to_currency_ratio": 1
}
GetTokenHistory
Diese Methode gibt die Tokenhistorie für eine angegebene Token-ID zurück. Diese Methode kann nur mit Token Admin, Token Auditor, Org Admin oder Org Auditor aufgerufen werden.
func (t *Controller) GetTokenHistory(token_id string) (interface{}, error) {
      auth, err := t.Ctx.Auth.CheckAuthorization("Token.GetTokenHistory", "TOKEN")
      if err != nil && !auth {
            return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
      }
      return t.Ctx.Token.History(token_id)
}
Parameter:
  • tokenId: string: Die ID des Tokens.
Rückgabewert:
  • Bei Erfolg ein JSON-Objekt, das die Tokenhistorie darstellt.
Beispiel für Rückgabewert:
[
    {
        "IsDelete": "false",
        "Timestamp": "2023-09-01T16:46:33Z",
        "TxId": "12333b8a4f63aa9b3a34072efcbd7df546c6d1e7d82a7a9596e899383656d6f7",
        "Value": {
            "AssetType": "otoken",
            "Behavior": [
                "divisible",
                "mintable",
                "transferable",
                "burnable",
                "roles"
            ],
            "Currency_name1": "",
            "Divisible": {
                "Decimal": 2
            },
            "Mintable": {
                "Max_mint_quantity": 1000
            },
            "Roles": {
                "minter_role_name": "minter"
            },
            "Token_desc": "updated description",
            "Token_id": "token",
            "Token_name": "fiatmoneytok",
            "Token_to_currency_ratio": 0,
            "Token_type": "fungible",
            "Token_unit": "fractional"
        }
    },
    {
        "IsDelete": "false",
        "Timestamp": "2023-09-01T16:04:25Z",
        "TxId": "99702e2dad7554a5ee4716a0d01d3e394cbce39bea8bade265d8911f30ebad0b",
        "Value": {
            "AssetType": "otoken",
            "Behavior": [
                "divisible",
                "mintable",
                "transferable",
                "burnable",
                "roles"
            ],
            "Currency_name1": "",
            "Divisible": {
                "Decimal": 2
            },
            "Mintable": {
                "Max_mint_quantity": 1000
            },
            "Roles": {
                "minter_role_name": "minter"
            },
            "Token_desc": "",
            "Token_id": "token",
            "Token_name": "fiatmoneytok",
            "Token_to_currency_ratio": 0,
            "Token_type": "fungible",
            "Token_unit": "fractional"
        }
    }
]
GetAllTokens
Diese Methode gibt alle Token zurück, die in der Statusdatenbank gespeichert sind. Diese Methode kann nur mit Token Admin, Token Auditor, Org Admin oder Org Auditor aufgerufen werden.
func (t *Controller) GetAllTokens() (interface{}, error) {
    auth, err := t.Ctx.Auth.CheckAuthorization("Token.GetAllTokens", "TOKEN")
    if err != nil && !auth {
        return nil, fmt.Errorf("error in authorizing the caller  %s", err.Error())
    }
    return t.Ctx.Token.GetAllTokens()
}
Parameter:
  • Kein
Rückgabewert:
  • Bei Erfolg ein JSON-Objekt, das alle Tokenassets darstellt.
Beispiel für Rückgabewert:
"payload": [
    {
        "key": "t1",
        "valueJson": {
            "AssetType": "otoken",
            "Behavior": [
                "divisible",
                "mintable",
                "transferable",
                "holdable",
                "burnable",
                "roles"
            ],
            "Currency_name": "Currency_name value",
            "Divisible": {
                "Decimal": 8
            },
            "Mintable": {
                "Max_mint_quantity": 10000
            },
            "Roles": {
                "burner_role_name": "burner",
                "minter_role_name": "minter",
                "notary_role_name": "notary"
            },
            "Token_desc": "Token_desc value",
            "Token_id": "t1",
            "Token_name": "obptok",
            "Token_to_currency_ratio": 2,
            "Token_type": "fungible",
            "Token_unit": "fractional"
        }
    }
]
GetTokensByName
Diese Methode gibt alle Tokenobjekte mit einem angegebenen Namen zurück. Diese Methode kann nur mit Token Admin, Token Auditor, Org Admin oder Org Auditor aufgerufen werden. Diese Methode verwendet SQL-reiche Berkeley DB-Abfragen und kann nur aufgerufen werden, wenn eine Verbindung zum Remote-Oracle Blockchain Platform-Netzwerk besteht.
func (t *Controller) GetTokensByName(token_name string) (interface{}, error) {
    auth, err := t.Ctx.Auth.CheckAuthorization("Token.GetTokensByName", "TOKEN")
    if err != nil && !auth {
        return nil, fmt.Errorf("error in authorizing the caller  %s", err.Error())
    }
    return t.Ctx.Token.GetTokensByName(token_name)
}
Parameter:
  • token_name string: Der Name der abzurufenden Token. Der Name entspricht der Eigenschaft Token_name in der Spezifikationsdatei. Der Wert ist der Klassenname des Tokens.
Rückgabewert:
  • Bei Erfolg ein JSON-Objekt aller Tokenassets, die mit dem Namen übereinstimmen.
Beispiel für Rückgabewert:
"payload": [
    {
        "key": "t1",
        "valueJson": {
            "AssetType": "otoken",
            "Behavior": [
                "divisible",
                "mintable",
                "transferable",
                "holdable",
                "burnable",
                "roles"
            ],
            "Currency_name": "Currency_name value",
            "Divisible": {
                "Decimal": 8
            },
            "Mintable": {
                "Max_mint_quantity": 10000
            },
            "Roles": {
                "burner_role_name": "burner",
                "minter_role_name": "minter",
                "notary_role_name": "notary"
            },
            "Token_desc": "Token_desc value",
            "Token_id": "t1",
            "Token_name": "obptok",
            "Token_to_currency_ratio": 999,
            "Token_type": "fungible",
            "Token_unit": "fractional"
        }
    },
    {
        "key": "obp2",
        "valueJson": {
            "AssetType": "otoken",
            "Behavior": [
                "divisible",
                "mintable",
                "transferable",
                "holdable",
                "burnable",
                "roles"
            ],
            "Currency_name": "",
            "Divisible": {
                "Decimal": 8
            },
            "Mintable": {
                "Max_mint_quantity": 10000
            },
            "Roles": {
                "burner_role_name": "burner",
                "minter_role_name": "minter",
                "notary_role_name": "notary"
            },
            "Token_desc": "",
            "Token_id": "obp2",
            "Token_name": "obptok",
            "Token_to_currency_ratio": 0,
            "Token_type": "fungible",
            "Token_unit": "fractional"
        }
    }
]

Methoden für die Kontenverwaltung

CreateAccount
Mit dieser Methode wird ein Account für einen angegebenen Benutzer und ein bestimmtes Token erstellt. Ein Konto muss für jeden Benutzer erstellt werden, der zu einem beliebigen Zeitpunkt Token hat. Konten verfolgen Salden, einbehaltene Salden und die Transaktionshistorie. Eine Account-ID ist eine alphanumerische Gruppe von Zeichen mit dem Präfix oaccount~<token asset name>~, gefolgt von einem Hash des Benutzernamens oder der E-Mail-ID (user_id) des Instanzeigentümers oder des Benutzers, der bei der Instanz angemeldet ist, der Mitgliedschaftsserviceprovider-ID (org_id) des Benutzers in der aktuellen Netzwerkorganisation. Diese Methode kann nur von einem Token Admin des Chaincodes oder einem Org Admin der angegebenen Organisation aufgerufen werden.
unc (t *Controller) CreateAccount(org_id string, user_id string, token_type string) (interface{}, error) {
      auth, err := t.Ctx.Auth.CheckAuthorization("Account.CreateAccount", "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.CreateAccount(org_id, user_id, token_type)
}
Parameter:
  • org_id: string: Die Mitgliedsdienstanbieter-(MSP-)ID des Benutzers in der aktuellen Organisation.
  • user_id: string: Der Benutzername oder die E-Mail-ID des Benutzers.
  • token_type: string: Der Typ des Tokens, der fungible sein muss.
Rückgabewert:
  • Bei Erfolg ein JSON-Objekt des Accounts, der erstellt wurde. Der Parameter BapAccountVersion wird zur internen Verwendung im Accountobjekt definiert.
Beispiel für Rückgabewert:
{ 
   "AssetType":"oaccount",
   "AccountId":"oaccount~a73085a385bc96c4a45aa2dff032e7dede82c0664dee5f396b7c5854eeafd4bd",
   "BapAccountVersion": 0,
   "UserId":"user1",
   "OrgId":"Org1MSP",
   "AccountType":"fungible",
   "TokenId":"",
   "TokenName":"",
   "Balance":0,
   "BalanceOnHold":0,
   "OnHoldBurnBalance":0
}
AssociateTokenToAccount
Diese Methode verknüpft ein fungibles Token mit einem Konto. Diese Methode kann nur durch eine Token Admin des Chaincodes oder durch eine Org Admin der relevanten Organisation aufgerufen werden.
func (t *Controller) AssociateTokenToAccount(account_id string, token_id string) (interface{}, error) {
      auth, err := t.Ctx.Auth.CheckAuthorization("Account.AssociateToken", "TOKEN", map[string]string{"account_id": account_id})
      if err != nil && !auth {
            return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
      }
      return t.Ctx.Account.AssociateToken(account_id, token_id)
}
Parameter:
  • account_id string: Die ID des Kontos.
  • token_id string: Die ID des Tokens.
Rückgabewert:
  • Bei Erfolg ein JSON-Objekt des aktualisierten Accounts. Der Parameter BapAccountVersion wird zur internen Verwendung im Accountobjekt definiert.
Beispiel für Rückgabewert:
{ 
"AssetType":"oaccount", 
"AccountId":"oaccount~abc74791148b761352b98df58035601b6f5480448ac2b4a3a7eb54bdbebf48eb", 
"BapAccountVersion": 0,
"UserId":"admin", 
"OrgId":"Org1MSP", 
"AccountType":"fungible", 
"TokenId":"token1", 
"TokenName":"loyaltok", 
"Balance":0, 
"BalanceOnHold":0, 
"OnHoldBurnBalance":0
}
GetAccount
Diese Methode gibt Accountdetails für einen angegebenen Benutzer und ein bestimmtes Token zurück. Diese Methode kann nur durch eine Token Admin des Chaincodes, eine Org Admin der angegebenen Organisation oder die AccountOwner des Accounts aufgerufen werden.
func (t *Controller) GetAccount(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, err
      }
      auth, err := t.Ctx.Auth.CheckAuthorization("Account.GetAccount", "TOKEN", map[string]string{"account_id": account_id})
      if err != nil && !auth {
            return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
      }
      return t.Ctx.Account.GetAccountWithStatus(account_id)
}
Parameter:
  • token_id string: Die ID des Tokens.
  • org_id string: Die Mitgliedsdienstanbieter-(MSP-)ID des Benutzers in der aktuellen Organisation.
  • user_id string: Der Benutzername oder die E-Mail-ID des Benutzers.
Rückgabewert:
  • Bei Erfolg ein JSON-Accountobjekt, das die folgenden Eigenschaften enthält:
  • AccountId: Die ID des Benutzerkontos.
  • UserId: Der Benutzername oder die E-Mail-ID des Benutzers.
  • OrgId: Die Mitgliedsdienstanbieter-(MSP-)ID des Benutzers in der aktuellen Organisation.
  • TokenId: Die ID des Tokens.
  • Balance: Der aktuelle Saldo des Kontos.
  • BalanceOnHold: Der aktuelle Saldo des Kontos.
  • OnHoldBurnBalance: Der aktuelle Saldo, der auf die brennende Genehmigung wartet.
  • BapAccountVersion: Ein Accountobjektparameter für die interne Verwendung.
  • Status: Der aktuelle Status des Benutzeraccounts.
Beispiel für Rückgabewert:
{
  "AccountId": "oaccount~2de8db6b91964f8c9009136831126d3cfa94e1d00c4285c1ea3e6d1f36479ed4",
  "AssetType": "oaccount",
  "Balance": 95,
  "BalanceOnHold": 0,
  "OnHoldBurnBalance": 0,
  "BapAccountVersion": 8,
  "OrgId": "appdev",
  "Status": "active",
  "TokenId": "obp1",
  "TokenName": "obptok",
  "TokenType": "fungible",
  "UserId": "idcqa"
}
GetAccountHistory
Diese Methode gibt Accounthistoriendetails für einen angegebenen Benutzer und ein bestimmtes Token zurück. Diese Methode kann nur mit einer Token Admin des Chaincodes oder der AccountOwner des Accounts aufgerufen werden.
func (t *Controller) GetAccountHistory(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, err
      }
      auth, err := t.Ctx.Auth.CheckAuthorization("Account.History", "TOKEN", map[string]string{"account_id": account_id})
      if err != nil && !auth {
            return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
      }
      return t.Ctx.Account.History(account_id)
}
Parameter:
  • token_id string: Die ID des Tokens.
  • org_id string: Die Mitgliedsdienstanbieter-(MSP-)ID des Benutzers in der aktuellen Organisation.
  • user_id string: Der Benutzername oder die E-Mail-ID des Benutzers.
Rückgabewert:
  • Bei Erfolg ein Array von JSON-Accountobjekten, das die folgenden Eigenschaften enthält:
  • TxId: Die Transaktions-ID der Transaktion, wie sie vom Buch zurückgegeben wird.
  • Timestamp: Der Zeitpunkt der Transaktion.
  • IsDelete: Ein boolescher Wert, der angibt, ob der Datensatz gelöscht wird.
  • Value: Eine JSON-Zeichenfolge des Accountobjekts. Der Parameter BapAccountVersion wird zur internen Verwendung im Accountobjekt definiert.
Beispiel für Rückgabewert:
[
  {
      "IsDelete": "false",
      "Timestamp": "2023-08-28T19:31:15Z",
      "TxId": "adde470a63860ec1013bd5c5987e8a506a48942a91b0f39fc8e561374042bd27",
      "Value": {
          "AccountId": "oaccount~2de8db6b91964f8c9009136831126d3cfa94e1d00c4285c1ea3e6d1f36479ed4",
          "AssetType": "oaccount",
          "Balance": 100,
          "BalanceOnHold": 0,
          "OnHoldBurnBalance": 0,
          "BapAccountVersion": 1,
          "OrgId": "Org1MSP",
          "TokenId": "t1",
          "TokenName": "obptok",
          "TokenType": "fungible",
          "UserId": "idcqa"
      }
  },
  {
      "IsDelete": "false",
      "Timestamp": "2023-08-28T19:30:23Z",
      "TxId": "8fbeda2ba60ba175091faae5ae369247775f2cba45c4d6d1ead6f0b05be84743",
      "Value": {
          "AccountId": "oaccount~2de8db6b91964f8c9009136831126d3cfa94e1d00c4285c1ea3e6d1f36479ed4",
          "AssetType": "oaccount",
          "Balance": 0,
          "BalanceOnHold": 0,
          "OnHoldBurnBalance": 0,
          "BapAccountVersion": 0,
          "OrgId": "Org1MSP",
          "TokenId": "t1",
          "TokenName": "obptok",
          "TokenType": "fungible",
          "UserId": "idcqa"
      }
  },
  {
      "IsDelete": "false",
      "Timestamp": "2023-08-28T19:29:54Z",
      "TxId": "19bb296ae71709e91b097ba5d9ebd7f7522095880382fbf5913334a46a6026aa",
      "Value": {
          "AccountId": "oaccount~2de8db6b91964f8c9009136831126d3cfa94e1d00c4285c1ea3e6d1f36479ed4",
          "AssetType": "oaccount",
          "Balance": 0,
          "BalanceOnHold": 0,
          "OnHoldBurnBalance": 0,
          "BapAccountVersion": 0,
          "OrgId": "Org1MSP",
          "TokenId": "",
          "TokenName": "",
          "TokenType": "fungible",
          "UserId": "idcqa"
      }
  }
]
GetAccountOnHoldBalance
Diese Methode gibt den aktuellen Zurückstellungssaldo für ein angegebenes Konto und Token zurück. Diese Methode kann nur durch eine Token Admin des Chaincodes, eine Org Admin der angegebenen Organisation oder die AccountOwner des Accounts aufgerufen werden.
func (t *Controller) GetAccountOnHoldBalance(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, err
      }
      auth, err := t.Ctx.Auth.CheckAuthorization("Account.GetAccountOnHoldBalance", "TOKEN", map[string]string{"account_id": account_id})
      if err != nil && !auth {
            return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
      }
      response, err := t.Ctx.Account.GetAccountOnHoldBalance(account_id)
      return response, err
}
Parameter:
  • token_id string: Die ID des Tokens.
  • org_id string: Die Mitgliedsdienstanbieter-(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 aktuellen Saldo, der zurückgehalten wird.
Beispiel für Rückgabewert:
{
    "holding_balance": 0,
    "msg": "Total Holding Balance of Account Id oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f (org_id: Org1MSP, user_id: user1) is 0"
}
GetAllAccounts
Diese Methode gibt eine Liste aller Konten zurück. Diese Methode kann nur von einem Token Admin des Chaincodes aufgerufen werden. Diese Methode verwendet SQL-reiche Berkeley DB-Abfragen und kann nur aufgerufen werden, wenn eine Verbindung zum Remote-Oracle Blockchain Platform-Netzwerk besteht.
func (t *Controller) GetAllAccounts() (interface{}, error) {
    auth, err := t.Ctx.Auth.CheckAuthorization("Account.GetAllAccounts", "TOKEN")
    if err != nil && !auth {
        return nil, fmt.Errorf("error in authorizing the caller  %s", err.Error())
    }
    return t.Ctx.Account.GetAllAccounts()
}
Parameter:
  • Kein
Rückgabewert:
  • Bei Erfolg ein JSON-Array aller Konten.
Beispiel für Rückgabewert:
[
    {
        "key": "oaccount~2de8db6b91964f8c9009136831126d3cfa94e1d00c4285c1ea3e6d1f36479ed4",
        "valueJson": {
            "AccountId": "oaccount~2de8db6b91964f8c9009136831126d3cfa94e1d00c4285c1ea3e6d1f36479ed4",
            "AssetType": "oaccount",
            "Balance": 100,
            "BalanceOnHold": 0,
            "OnHoldBurnBalance": 0,
            "BapAccountVersion": 1,
            "OrgId": "appdev",
            "TokenId": "t1",
            "TokenName": "obptok",
            "TokenType": "fungible",
            "UserId": "idcqa"
        }
    }
]
GetUserByAccountId
Diese Methode gibt Benutzerdetails (org_id und user_id) für einen angegebenen Account zurück. Diese Methode kann von jedem Benutzer des Chaincodes aufgerufen werden.
func (t *Controller) GetUserByAccountId(account_id string) (interface{}, error) {
    return t.Ctx.Account.GetUserByAccountById(account_id)
}
Parameter:
  • account_id string: Die ID des Kontos.
Rückgabewert:
  • Bei Erfolg ein JSON-Objekt der Benutzerdetails (org_id, token_id und user_id).
Beispiel für Rückgabewert:
{"org_id":"Org1MSP","token_id":"digiCurr101","user_id":"user1"}
GetAccountBalance
Diese Methode gibt den aktuellen Saldo für ein angegebenes Konto und Token zurück. Diese Methode kann nur durch eine Token Admin des Chaincodes, eine Org Admin der angegebenen Organisation oder die AccountOwner des Accounts aufgerufen werden.
func (t *Controller) GetAccountBalance(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, err
      }
      auth, err := t.Ctx.Auth.CheckAuthorization("Account.GetAccountBalance", "TOKEN", map[string]string{"account_id": account_id})
      if err != nil && !auth {
            return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
      }
      response, err := t.Ctx.Account.GetAccountBalance(account_id)
      return response, err
}
Parameter:
  • token_id string: Die ID des Tokens.
  • org_id string: Die Mitgliedsdienstanbieter-(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 aktuellen Kontosaldos.
Beispiel für Rückgabewert:
{"msg":"Current Balance of oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f is 0","user_balance":0}
GetAllOrgAccounts
Diese Methode gibt eine Liste aller Token-Accounts zurück, die zu einer bestimmten Organisation gehören. Diese Methode kann nur durch eine Token Admin des Chaincodes oder durch eine Org Admin der angegebenen Organisation aufgerufen werden.
func (t *Controller) GetAllOrgAccounts(org_id string) (interface{}, error) {
      auth, err := t.Ctx.Auth.CheckAuthorization("Account.GetAllOrgAccounts", "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.GetAllOrgAccounts(org_id)
}
Parameter:
  • org_id: string: Die Mitgliedsdienstanbieter-(MSP-)ID der Organisation.
Rückgabewert:
  • Bei Erfolg eine Liste aller Accounts für die angegebene Organisation.
Beispiel für Rückgabewert:
[
    {
        "key": "oaccount~2de8db6b91964f8c9009136831126d3cfa94e1d00c4285c1ea3e6d1f36479ed4",
        "valueJson": {
            "AccountId": "oaccount~2de8db6b91964f8c9009136831126d3cfa94e1d00c4285c1ea3e6d1f36479ed4",
            "AssetType": "oaccount",
            "Balance": 0,
            "BalanceOnHold": 0,
            "OnHoldBurnBalance": 0,
            "BapAccountVersion": 0,
            "OrgId": "appdev",
            "TokenId": "token",
            "TokenName": "fiatmoneytok",
            "TokenType": "fungible",
            "UserId": "idcqa"
        }
    },
    {
        "key": "oaccount~9c650574af9025a6106c8d12a801b079eda9ae2e3399fc2fbd5bd683d738a850",
        "valueJson": {
            "AccountId": "oaccount~9c650574af9025a6106c8d12a801b079eda9ae2e3399fc2fbd5bd683d738a850",
            "AssetType": "oaccount",
            "Balance": 0,
            "BalanceOnHold": 0,
            "OnHoldBurnBalance": 0,
            "BapAccountVersion": 0,
            "OrgId": "appdev",
            "TokenId": "token",
            "TokenName": "fiatmoneytok",
            "TokenType": "fungible",
            "UserId": "example_minter"
        }
    }
]
CreateAccount
Mit dieser Methode wird ein Account für einen angegebenen Benutzer und ein bestimmtes Token erstellt. Ein Konto muss für jeden Benutzer erstellt werden, der zu einem beliebigen Zeitpunkt Token hat. Konten verfolgen Salden, einbehaltene Salden und die Transaktionshistorie. Eine Account-ID ist eine alphanumerische Gruppe von Zeichen mit dem Präfix oaccount~<token asset name>~, gefolgt von einem Hash des Benutzernamens oder der E-Mail-ID (user_id) des Instanzeigentümers oder des Benutzers, der bei der Instanz angemeldet ist, der Mitgliedschaftsserviceprovider-ID (org_id) des Benutzers in der aktuellen Netzwerkorganisation. Diese Methode kann nur von einem Token Admin des Chaincodes oder einem Org Admin der angegebenen Organisation aufgerufen werden.
func (t *Controller) CreateAccount(org_id string, user_id string, token_type string, daily_limits ...account.AccountDailyLimits) (interface{}, error) {
auth, err := t.Ctx.Auth.CheckAuthorization("Account.CreateAccount", "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.CreateAccount(org_id, user_id, token_type, daily_limits...)
}
Parameter:
  • org_id: string: Die Mitgliedsdienstanbieter-(MSP-)ID des Benutzers in der aktuellen Organisation.
  • user_id: string: Der Benutzername oder die E-Mail-ID des Benutzers.
  • token_type: string: Der Typ des Tokens, der fungible sein muss.
  • daily_limits: JSON: Ein Objekt, das die maximale Anzahl von Token angibt, die täglich in Transaktionen verwendet werden können (max_daily_amount) und die maximale Anzahl von Transaktionen, die täglich abgeschlossen werden können (max_daily_transactions).

    Sie geben den Parameter daily_limits in einem anderen Format an, wenn Sie Visual Studio Code im Vergleich zur CLI oder Postman-Collection verwenden.

    Visual Studio-Code: { "max_daily_amount": 1000, "max_daily_transactions": 100 }

    CLI/Postman: "{\"max_daily_amount\":1000,\"max_daily_transactions\":100}"

Rückgabewert:
  • Bei Erfolg ein JSON-Objekt des Accounts, der erstellt wurde. Der Parameter BapAccountVersion wird zur internen Verwendung im Accountobjekt definiert.
Beispiel für Rückgabewert:
{ 
   "AssetType":"oaccount",
   "AccountId":"oaccount~a73085a385bc96c4a45aa2dff032e7dede82c0664dee5f396b7c5854eeafd4bd",
   "BapAccountVersion": 0,
   "UserId":"user1",
   "OrgId":"Org1MSP",
   "AccountType":"fungible",
   "TokenId":"",
   "TokenName":"",
   "Balance":0,
   "BalanceOnHold":0,
   "OnHoldBurnBalance":0,
   "max_daily_amount": 1000,
   "max_daily_transactions": 100
}
AssociateTokenToAccount
Diese Methode verknüpft ein fungibles Token mit einem Konto. Diese Methode kann nur durch eine Token Admin des Chaincodes oder durch eine Org Admin der relevanten Organisation aufgerufen werden.
func (t *Controller) AssociateTokenToAccount(account_id string, token_id string) (interface{}, error) {
      auth, err := t.Ctx.Auth.CheckAuthorization("Account.AssociateToken", "TOKEN", map[string]string{"account_id": account_id})
      if err != nil && !auth {
            return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
      }
      return t.Ctx.Account.AssociateToken(account_id, token_id)
}
Parameter:
  • account_id string: Die ID des Kontos.
  • token_id string: Die ID des Tokens.
Rückgabewert:
  • Bei Erfolg ein JSON-Objekt des aktualisierten Accounts. Der Parameter BapAccountVersion wird zur internen Verwendung im Accountobjekt definiert.
Beispiel für Rückgabewert:
{ 
"AssetType":"oaccount", 
"AccountId":"oaccount~abc74791148b761352b98df58035601b6f5480448ac2b4a3a7eb54bdbebf48eb", 
"BapAccountVersion": 0,
"UserId":"admin", 
"OrgId":"Org1MSP", 
"AccountType":"fungible", 
"TokenId":"token1", 
"TokenName":"loyaltok", 
"Balance":0, 
"BalanceOnHold":0, 
"OnHoldBurnBalance":0
}
GetAccount
Diese Methode gibt Accountdetails für einen angegebenen Benutzer und ein bestimmtes Token zurück. Diese Methode kann nur von einer Token Admin oder Token Auditor, einer Org Admin oder Org Auditor der angegebenen Organisation oder der AccountOwner des Accounts aufgerufen werden.
func (t *Controller) GetAccount(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, err
      }
      auth, err := t.Ctx.Auth.CheckAuthorization("Account.GetAccount", "TOKEN", map[string]string{"account_id": account_id})
      if err != nil && !auth {
            return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
      }
      return t.Ctx.Account.GetAccountWithStatus(account_id)
}
Parameter:
  • token_id string: Die ID des Tokens.
  • org_id string: Die Mitgliedsdienstanbieter-(MSP-)ID des Benutzers in der aktuellen Organisation.
  • user_id string: Der Benutzername oder die E-Mail-ID des Benutzers.
Rückgabewert:
  • Bei Erfolg ein JSON-Accountobjekt, das die folgenden Eigenschaften enthält:
  • AccountId: Die ID des Benutzerkontos.
  • UserId: Der Benutzername oder die E-Mail-ID des Benutzers.
  • OrgId: Die Mitgliedsdienstanbieter-(MSP-)ID des Benutzers in der aktuellen Organisation.
  • TokenId: Die ID des Tokens.
  • Balance: Der aktuelle Saldo des Kontos.
  • BalanceOnHold: Der aktuelle Saldo des Kontos.
  • OnHoldBurnBalance: Der aktuelle Saldo, der auf die Genehmigung der Verbrennung wartet.
  • BapAccountVersion: Ein Accountobjektparameter für die interne Verwendung.
  • Status: Der aktuelle Status des Benutzeraccounts.
Beispiel für Rückgabewert:
{
  "AccountId": "oaccount~2de8db6b91964f8c9009136831126d3cfa94e1d00c4285c1ea3e6d1f36479ed4",
  "AssetType": "oaccount",
  "Balance": 95,
  "BalanceOnHold": 0,
  "OnHoldBurnBalance": 0,
  "BapAccountVersion": 8,
  "OrgId": "appdev",
  "Status": "active",
  "TokenId": "obp1",
  "TokenName": "obptok",
  "TokenType": "fungible",
  "UserId": "idcqa"
}
GetAccountHistory
Diese Methode gibt Accounthistoriendetails für einen angegebenen Benutzer und ein bestimmtes Token zurück. Diese Methode kann nur mit einer Token Admin des Chaincodes oder der AccountOwner des Accounts aufgerufen werden.
func (t *Controller) GetAccountHistory(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, err
      }
      auth, err := t.Ctx.Auth.CheckAuthorization("Account.History", "TOKEN", map[string]string{"account_id": account_id})
      if err != nil && !auth {
            return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
      }
      return t.Ctx.Account.History(account_id)
}
Parameter:
  • token_id string: Die ID des Tokens.
  • org_id string: Die Mitgliedsdienstanbieter-(MSP-)ID des Benutzers in der aktuellen Organisation.
  • user_id string: Der Benutzername oder die E-Mail-ID des Benutzers.
Rückgabewert:
  • Bei Erfolg ein Array von JSON-Accountobjekten, das die folgenden Eigenschaften enthält:
  • TxId: Die Transaktions-ID der Transaktion, wie sie vom Buch zurückgegeben wird.
  • Timestamp: Der Zeitpunkt der Transaktion.
  • IsDelete: Ein boolescher Wert, der angibt, ob der Datensatz gelöscht wird.
  • Value: Eine JSON-Zeichenfolge des Accountobjekts. Der Parameter BapAccountVersion wird zur internen Verwendung im Accountobjekt definiert.
Beispiel für Rückgabewert:
[
  {
      "IsDelete": "false",
      "Timestamp": "2023-08-28T19:31:15Z",
      "TxId": "adde470a63860ec1013bd5c5987e8a506a48942a91b0f39fc8e561374042bd27",
      "Value": {
          "AccountId": "oaccount~2de8db6b91964f8c9009136831126d3cfa94e1d00c4285c1ea3e6d1f36479ed4",
          "AssetType": "oaccount",
          "Balance": 100,
          "BalanceOnHold": 0,
          "OnHoldBurnBalance": 0,
          "BapAccountVersion": 1,
          "OrgId": "Org1MSP",
          "TokenId": "t1",
          "TokenName": "obptok",
          "TokenType": "fungible",
          "UserId": "idcqa"
      }
  },
  {
      "IsDelete": "false",
      "Timestamp": "2023-08-28T19:30:23Z",
      "TxId": "8fbeda2ba60ba175091faae5ae369247775f2cba45c4d6d1ead6f0b05be84743",
      "Value": {
          "AccountId": "oaccount~2de8db6b91964f8c9009136831126d3cfa94e1d00c4285c1ea3e6d1f36479ed4",
          "AssetType": "oaccount",
          "Balance": 0,
          "BalanceOnHold": 0,
          "OnHoldBurnBalance": 0,
          "BapAccountVersion": 0,
          "OrgId": "Org1MSP",
          "TokenId": "t1",
          "TokenName": "obptok",
          "TokenType": "fungible",
          "UserId": "idcqa"
      }
  },
  {
      "IsDelete": "false",
      "Timestamp": "2023-08-28T19:29:54Z",
      "TxId": "19bb296ae71709e91b097ba5d9ebd7f7522095880382fbf5913334a46a6026aa",
      "Value": {
          "AccountId": "oaccount~2de8db6b91964f8c9009136831126d3cfa94e1d00c4285c1ea3e6d1f36479ed4",
          "AssetType": "oaccount",
          "Balance": 0,
          "BalanceOnHold": 0,
          "OnHoldBurnBalance": 0,
          "BapAccountVersion": 0,
          "OrgId": "Org1MSP",
          "TokenId": "",
          "TokenName": "",
          "TokenType": "fungible",
          "UserId": "idcqa"
      }
  }
]
GetAccountOnHoldBalance
Diese Methode gibt den aktuellen Zurückstellungssaldo für ein angegebenes Konto und Token zurück. Diese Methode kann nur von einer Token Admin oder Token Auditor, einer Org Admin oder Org Auditor der angegebenen Organisation oder dem angegebenen Accounteigentümer aufgerufen werden.
func (t *Controller) GetAccountOnHoldBalance(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, err
      }
      auth, err := t.Ctx.Auth.CheckAuthorization("Account.GetAccountOnHoldBalance", "TOKEN", map[string]string{"account_id": account_id})
      if err != nil && !auth {
            return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
      }
      response, err := t.Ctx.Account.GetAccountOnHoldBalance(account_id)
      return response, err
}
Parameter:
  • token_id string: Die ID des Tokens.
  • org_id string: Die Mitgliedsdienstanbieter-(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 aktuellen Saldo, der zurückgehalten wird.
Beispiel für Rückgabewert:
{
    "holding_balance": 0,
    "msg": "Total Holding Balance of Account Id oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f (org_id: Org1MSP, user_id: user1) is 0"
}
GetAllAccounts
Diese Methode gibt eine Liste aller Konten zurück. Diese Methode kann nur mit einer Token Admin oder Token Auditor des Chaincodes aufgerufen werden. Diese Methode verwendet SQL-reiche Berkeley DB-Abfragen und kann nur aufgerufen werden, wenn eine Verbindung zum Remote-Oracle Blockchain Platform-Netzwerk besteht.
func (t *Controller) GetAllAccounts() (interface{}, error) {
    auth, err := t.Ctx.Auth.CheckAuthorization("Account.GetAllAccounts", "TOKEN")
    if err != nil && !auth {
        return nil, fmt.Errorf("error in authorizing the caller  %s", err.Error())
    }
    return t.Ctx.Account.GetAllAccounts()
}
Parameter:
  • Kein
Rückgabewert:
  • Bei Erfolg ein JSON-Array aller Konten.
Beispiel für Rückgabewert:
[
    {
        "key": "oaccount~2de8db6b91964f8c9009136831126d3cfa94e1d00c4285c1ea3e6d1f36479ed4",
        "valueJson": {
            "AccountId": "oaccount~2de8db6b91964f8c9009136831126d3cfa94e1d00c4285c1ea3e6d1f36479ed4",
            "AssetType": "oaccount",
            "Balance": 100,
            "BalanceOnHold": 0,
            "OnHoldBurnBalance": 0,
            "BapAccountVersion": 1,
            "OrgId": "appdev",
            "TokenId": "t1",
            "TokenName": "obptok",
            "TokenType": "fungible",
            "UserId": "idcqa"
        }
    }
]
GetUserByAccountId
Diese Methode gibt Benutzerdetails (org_id und user_id) für einen angegebenen Account zurück. Diese Methode kann nur von einer Token Admin oder Token Auditor oder von einer Org Admin oder Org Auditor der angegebenen Organisation aufgerufen werden.
func (t *Controller) GetUserByAccountId(account_id string) (interface{}, error) {
    return t.Ctx.Account.GetUserByAccountById(account_id)
}
Parameter:
  • account_id string: Die ID des Kontos.
Rückgabewert:
  • Bei Erfolg ein JSON-Objekt der Benutzerdetails (org_id, token_id und user_id).
Beispiel für Rückgabewert:
{"org_id":"Org1MSP","token_id":"digiCurr101","user_id":"user1"}
GetAccountBalance
Diese Methode gibt den aktuellen Saldo für ein angegebenes Konto und Token zurück. Diese Methode kann nur von einer Token Admin oder Token Auditor, einer Org Admin oder Org Auditor der angegebenen Organisation oder dem angegebenen Accounteigentümer aufgerufen werden.
func (t *Controller) GetAccountBalance(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, err
      }
      auth, err := t.Ctx.Auth.CheckAuthorization("Account.GetAccountBalance", "TOKEN", map[string]string{"account_id": account_id})
      if err != nil && !auth {
            return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
      }
      response, err := t.Ctx.Account.GetAccountBalance(account_id)
      return response, err
}
Parameter:
  • token_id string: Die ID des Tokens.
  • org_id string: Die Mitgliedsdienstanbieter-(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 aktuellen Kontosaldos.
Beispiel für Rückgabewert:
{"msg":"Current Balance of oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f is 0","user_balance":0}
GetAllOrgAccounts
Diese Methode gibt eine Liste aller Token-Accounts zurück, die zu einer bestimmten Organisation gehören. Diese Methode kann nur von einer Token Admin oder Token Auditor oder von einer Org Admin oder Org Auditor der angegebenen Organisation aufgerufen werden.
func (t *Controller) GetAllOrgAccounts(org_id string) (interface{}, error) {
      auth, err := t.Ctx.Auth.CheckAuthorization("Account.GetAllOrgAccounts", "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.GetAllOrgAccounts(org_id)
}
Parameter:
  • org_id: string: Die Mitgliedsdienstanbieter-(MSP-)ID der Organisation.
Rückgabewert:
  • Bei Erfolg eine Liste aller Accounts für die angegebene Organisation.
Beispiel für Rückgabewert:
[
    {
        "key": "oaccount~2de8db6b91964f8c9009136831126d3cfa94e1d00c4285c1ea3e6d1f36479ed4",
        "valueJson": {
            "AccountId": "oaccount~2de8db6b91964f8c9009136831126d3cfa94e1d00c4285c1ea3e6d1f36479ed4",
            "AssetType": "oaccount",
            "Balance": 0,
            "BalanceOnHold": 0,
            "OnHoldBurnBalance": 0,
            "BapAccountVersion": 0,
            "OrgId": "appdev",
            "TokenId": "token",
            "TokenName": "fiatmoneytok",
            "TokenType": "fungible",
            "UserId": "idcqa"
        }
    },
    {
        "key": "oaccount~9c650574af9025a6106c8d12a801b079eda9ae2e3399fc2fbd5bd683d738a850",
        "valueJson": {
            "AccountId": "oaccount~9c650574af9025a6106c8d12a801b079eda9ae2e3399fc2fbd5bd683d738a850",
            "AssetType": "oaccount",
            "Balance": 0,
            "BalanceOnHold": 0,
            "OnHoldBurnBalance": 0,
            "BapAccountVersion": 0,
            "OrgId": "appdev",
            "TokenId": "token",
            "TokenName": "fiatmoneytok",
            "TokenType": "fungible",
            "UserId": "example_minter"
        }
    }
]

Methoden für die Rollenverwaltung

AddRole
Diese Methode fügt einem angegebenen Benutzer und Token eine Rolle hinzu. Diese Methode kann nur von einer Token Admin des Chaincodes oder von einer Org Admin der angegebenen Organisation aufgerufen werden, die auch die angegebene Rolle hat.
func (t *Controller) AddRole(token_id string, user_role 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, err
      }
      tokenAssetValue, err := t.getTokenObject(token_id)
      if err != nil {
            return nil, err
      }
      auth, err := t.Ctx.Auth.CheckAuthorization("Token.AddRoleMember", "TOKEN", map[string]string{"org_id": org_id, "token_id": token_id, "role": user_role})
      if err != nil && !auth {
            return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
      }
      return t.Ctx.Token.AddRoleMember(user_role, account_id, tokenAssetValue.Interface())
}
Parameter:
  • token_id string: Die ID des Tokens.
  • user_role string: Der Name der Rolle, die dem angegebenen Benutzer hinzugefügt werden soll. Das Verhalten von mintable und burnable entspricht den Eigenschaften minter_role_name und burner_role_name der Spezifikationsdatei. Entsprechend entspricht die Rolle notary der Eigenschaft notary_role_name der Spezifikationsdatei.
  • org_id string: Die Mitgliedsdienstanbieter-(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 mit Accountdetails.
Beispiel für Rückgabewert:
 {"msg":"Successfully added role minter to oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f (org_id : Org1MSP, user_id : user1)"}
RemoveRole
Mit dieser Methode wird eine Rolle aus einem angegebenen Benutzer und Token entfernt. Diese Methode kann nur von einer Token Admin des Chaincodes oder einer Org Admin der angegebenen Organisation aufgerufen werden, die auch die angegebene Rolle hat.
func (t *Controller) RemoveRole(token_id string, user_role 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, err
      }
      tokenAssetValue, err := t.getTokenObject(token_id)
      if err != nil {
            return nil, err
      }
      auth, err := t.Ctx.Auth.CheckAuthorization("Token.RemoveRoleMember", "TOKEN", map[string]string{"org_id": org_id, "token_id": token_id, "role": user_role})
      if err != nil && !auth {
            return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
      }
      return t.Ctx.Token.RemoveRoleMember(user_role, account_id, tokenAssetValue.Interface())
}
Parameter:
  • token_id string: Die ID des Tokens.
  • user_role string: Der Name der Rolle, die aus dem angegebenen Benutzer entfernt werden soll. Das Verhalten von mintable und burnable entspricht den Eigenschaften minter_role_name und burner_role_name der Spezifikationsdatei. Entsprechend entspricht die Rolle notary der Eigenschaft notary_role_name der Spezifikationsdatei.
  • org_id string: Die Mitgliedsdienstanbieter-(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 mit Accountdetails.
Beispiel für Rückgabewert:
{"msg":"successfully removed member_id oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f (org_id : Org1MSP, user_id : user1) from role minter"}
GetAccountsByRole
Diese Methode gibt eine Liste aller Konto-IDs für eine angegebene Rolle und ein bestimmtes Token zurück. Diese Methode kann nur von einem Token Admin des Chaincodes aufgerufen werden.
func (t *Controller) GetAccountsByRole(token_id string, user_role string) (interface{}, error) {
    auth, err:= t.Ctx.Auth.CheckAuthorization("Role.GetAccountsByRole", "TOKEN")
    if err != nil && !auth {
        return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
    }
    return t.Ctx.Role.GetAccountsByRole(token_id, user_role)
}
Parameter:
  • token_id string: Die ID des Tokens.
  • user_role string: Der Name der Rolle, nach der gesucht werden soll.
Rückgabewert:
  • Bei Erfolg ein JSON-Array mit Konto-IDs.
Beispiel für Rückgabewert:
{
    "accounts": [
        "oaccount~2de8db6b91964f8c9009136831126d3cfa94e1d00c4285c1ea3e6d1f36479ed4"
    ]
}
GetAccountsByUser
Diese Methode gibt eine Liste aller Konto-IDs für eine angegebene Organisations-ID und Benutzer-ID zurück. Diese Methode kann nur durch eine Token Admin des Chaincodes, eine Org Admin der angegebenen Organisation oder durch die in den Parametern angegebene Account Owner aufgerufen werden.
func (t *Controller) GetAccountsByUser(org_id string, user_id string) (interface{}, error) {
      auth, err := t.Ctx.Auth.CheckAuthorization("Account.GetAccountsByUser", "TOKEN", map[string]string{"org_id": org_id, "user_id": user_id})
      if err != nil && !auth {
            return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
      }
      return t.Ctx.Account.GetAccountsByUser(org_id, user_id)
}
Parameter:
  • org_id string: Die Mitgliedsdienstanbieter-(MSP-)ID des Benutzers in der aktuellen Organisation.
  • user_id string: Der Benutzername oder die E-Mail-ID des Benutzers.
Rückgabewert:
  • Bei Erfolg ein JSON-Array mit Konto-IDs.
Beispiel für Rückgabewert:
{
    "accounts": [
        "oaccount~2de8db6b91964f8c9009136831126d3cfa94e1d00c4285c1ea3e6d1f36479ed4"
    ]
}
GetUsersByRole
Diese Methode gibt eine Liste aller Benutzer für eine angegebene Rolle und ein bestimmtes Token zurück. Diese Methode kann nur von einer Token Admin des Chaincodes oder von der Account Owner aufgerufen werden, die in den Parametern angegeben ist.
func (t *Controller) GetUsersByRole(token_id string, user_role string) (interface{}, error) {
      auth, err := t.Ctx.Auth.CheckAuthorization("Role.GetUsersByRole", "TOKEN")
      if err != nil && !auth {
            return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
      }
      return t.Ctx.Role.GetUsersByRole(token_id, user_role)
}
Parameter:
  • token_id string: Die ID des Tokens.
  • user_role string: Der Name der Rolle, nach der gesucht werden soll.
Rückgabewert:
  • Bei Erfolg ein JSON-Array der Benutzerobjekte (org_id und user_id).
Beispiel für Rückgabewert:
{"Users":[{"org_id":"Org1MSP","token_id":"digiCurr101","user_id":"user1"}]}
IsInRole
Diese Methode gibt einen booleschen Wert zurück, um anzugeben, ob ein Benutzer und ein Token eine bestimmte Rolle haben. Diese Methode kann nur von der Token Admin des Chaincodes, einer Org Admin der angegebenen Organisation oder der AccountOwner des Accounts aufgerufen werden.
func (t *Controller) IsInRole(token_id string, org_id string, user_id string, user_role string) (interface{}, error) {
      tokenAssetValue, err := t.getTokenObject(token_id)
      if err != nil {
            return nil, err
      }
      account_id, err := t.Ctx.Account.GenerateAccountId(token_id, org_id, user_id)
      if err != nil {
            return nil, err
      }
      auth, err := t.Ctx.Auth.CheckAuthorization("Token.IsInRole", "TOKEN", map[string]string{"account_id": account_id})
      if err != nil && !auth {
            return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
      }
      result, err := t.Ctx.Token.IsInRole(user_role, account_id, tokenAssetValue.Interface())
      if err != nil {
            return nil, fmt.Errorf("error in IsInRole %s", err.Error())
      }
      response := make(map[string]interface{})
      response["result"] = result
      return response, nil
}
Parameter:
  • token_id string: Die ID des Tokens.
  • org_id string: Die Mitgliedsdienstanbieter-(MSP-)ID des Benutzers in der aktuellen Organisation.
  • user_id string: Der Benutzername oder die E-Mail-ID des Benutzers.
  • user_role string: Der Name der Rolle, nach der gesucht werden soll.
Rückgabewert:
  • Bei Erfolg eine JSON-Zeichenfolge des booleschen Ergebnisses.
Beispiel für Rückgabewert:
{"result":false}
GetOrgAccountsByRole
Diese Methode gibt Informationen zu allen Konten zurück, die eine bestimmte Rolle in einer bestimmten Organisation haben. Diese Methode kann nur durch eine Token Admin des Chaincodes oder durch eine Org Admin der angegebenen Organisation aufgerufen werden.
func (t *Controller) GetOrgAccountsByRole(token_id string, user_role string, org_id string) (interface{}, error) {
      auth, err := t.Ctx.Auth.CheckAuthorization("Role.GetOrgAccountsByRole", "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.Role.GetOrgAccountsByRole(token_id, user_role, org_id)
}
Parameter:
  • token_id: string: Die ID des Tokens.
  • role: string: Der Name der Rolle, nach der gesucht werden soll.
  • org_id: string: Die Mitgliedsdienstanbieter-(MSP-)ID der Organisation.
Rückgabewert:
  • Bei Erfolg eine Liste aller Firmen mit der angegebenen Rolle in der angegebenen Organisation.
Beispiel für Rückgabewert:
{
    "accounts": [
        "oaccount~abc74791148b761352b98df58035601b6f5480448ac2b4a3a7eb54bdbebf48eb",
         "oaccount~9c650574af9025a6106c8d12a801b079eda9ae2e3399fc2fbd5bd683d738a850"
    ]
}
GetOrgUsersByRole
Diese Methode gibt Informationen zu allen Benutzern zurück, die eine bestimmte Rolle in einer bestimmten Organisation haben. Diese Methode kann nur durch eine Token Admin des Chaincodes oder durch eine Org Admin der angegebenen Organisation aufgerufen werden.
func (t *Controller) GetOrgUsersByRole(token_id string, user_role string, org_id string) (interface{}, error) {
      auth, err := t.Ctx.Auth.CheckAuthorization("Role.GetOrgUsersByRole", "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.Role.GetOrgUsersByRole(token_id, user_role, org_id)
}
Parameter:
  • token_id: string: Die ID des Tokens.
  • role: string: Der Name der Rolle, nach der gesucht werden soll.
  • org_id: string: Die Mitgliedsdienstanbieter-(MSP-)ID der Organisation.
Rückgabewert:
  • Bei Erfolg eine Liste aller Benutzer mit der angegebenen Rolle in der angegebenen Organisation.
Beispiel für Rückgabewert:
{
    "Users": [
        {
            "org_id": "Org1MSP",
            "token_id": "token",
            "user_id": "admin"
        },
        {
            "org_id": "Org1MSP",
            "token_id": "token",
            "user_id": "orgAdmin"
        }
    ]
}
AddRole
Diese Methode fügt einem angegebenen Benutzer und Token eine Rolle hinzu. Diese Methode kann nur von einer Token Admin des Chaincodes oder von einer Org Admin der angegebenen Organisation aufgerufen werden, die auch die angegebene Rolle hat.
func (t *Controller) AddRole(token_id string, user_role 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, err
      }
      tokenAssetValue, err := t.getTokenObject(token_id)
      if err != nil {
            return nil, err
      }
      auth, err := t.Ctx.Auth.CheckAuthorization("Token.AddRoleMember", "TOKEN", map[string]string{"org_id": org_id, "token_id": token_id, "role": user_role})
      if err != nil && !auth {
            return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
      }
      return t.Ctx.Token.AddRoleMember(user_role, account_id, tokenAssetValue.Interface())
}
Parameter:
  • token_id string: Die ID des Tokens.
  • user_role string: Der Name der Rolle, die dem angegebenen Benutzer hinzugefügt werden soll. Das Verhalten von mintable und burnable entspricht den Eigenschaften minter_role_name und burner_role_name der Spezifikationsdatei. Entsprechend entspricht die Rolle notary der Eigenschaft notary_role_name der Spezifikationsdatei.
  • org_id string: Die Mitgliedsdienstanbieter-(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 mit Accountdetails.
Beispiel für Rückgabewert:
 {"msg":"Successfully added role minter to oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f (org_id : Org1MSP, user_id : user1)"}
RemoveRole
Mit dieser Methode wird eine Rolle aus einem angegebenen Benutzer und Token entfernt. Diese Methode kann nur von einer Token Admin des Chaincodes oder einer Org Admin der angegebenen Organisation aufgerufen werden, die auch die angegebene Rolle hat.
func (t *Controller) RemoveRole(token_id string, user_role 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, err
      }
      tokenAssetValue, err := t.getTokenObject(token_id)
      if err != nil {
            return nil, err
      }
      auth, err := t.Ctx.Auth.CheckAuthorization("Token.RemoveRoleMember", "TOKEN", map[string]string{"org_id": org_id, "token_id": token_id, "role": user_role})
      if err != nil && !auth {
            return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
      }
      return t.Ctx.Token.RemoveRoleMember(user_role, account_id, tokenAssetValue.Interface())
}
Parameter:
  • token_id string: Die ID des Tokens.
  • user_role string: Der Name der Rolle, die aus dem angegebenen Benutzer entfernt werden soll. Das Verhalten von mintable und burnable entspricht den Eigenschaften minter_role_name und burner_role_name der Spezifikationsdatei. Entsprechend entspricht die Rolle notary der Eigenschaft notary_role_name der Spezifikationsdatei.
  • org_id string: Die Mitgliedsdienstanbieter-(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 mit Accountdetails.
Beispiel für Rückgabewert:
{"msg":"successfully removed member_id oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f (org_id : Org1MSP, user_id : user1) from role minter"}
GetAccountsByRole
Diese Methode gibt eine Liste aller Konto-IDs für eine angegebene Rolle und ein bestimmtes Token zurück. Diese Methode kann nur mit einer Token Admin oder Token Auditor aufgerufen werden.
func (t *Controller) GetAccountsByRole(token_id string, user_role string) (interface{}, error) {
    auth, err:= t.Ctx.Auth.CheckAuthorization("Role.GetAccountsByRole", "TOKEN")
    if err != nil && !auth {
        return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
    }
    return t.Ctx.Role.GetAccountsByRole(token_id, user_role)
}
Parameter:
  • token_id string: Die ID des Tokens.
  • user_role string: Der Name der Rolle, nach der gesucht werden soll.
Rückgabewert:
  • Bei Erfolg ein JSON-Array mit Konto-IDs.
Beispiel für Rückgabewert:
{
    "accounts": [
        "oaccount~2de8db6b91964f8c9009136831126d3cfa94e1d00c4285c1ea3e6d1f36479ed4"
    ]
}
GetAccountsByUser
Diese Methode gibt eine Liste aller Konto-IDs für eine angegebene Organisations-ID und Benutzer-ID zurück. Diese Methode kann nur von einer Token Admin oder Token Auditor, einer Org Admin oder Org Auditor der angegebenen Organisation oder von der Account Owner aufgerufen werden, die in den Parametern angegeben ist.
func (t *Controller) GetAccountsByUser(org_id string, user_id string) (interface{}, error) {
      auth, err := t.Ctx.Auth.CheckAuthorization("Account.GetAccountsByUser", "TOKEN", map[string]string{"org_id": org_id, "user_id": user_id})
      if err != nil && !auth {
            return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
      }
      return t.Ctx.Account.GetAccountsByUser(org_id, user_id)
}
Parameter:
  • org_id string: Die Mitgliedsdienstanbieter-(MSP-)ID des Benutzers in der aktuellen Organisation.
  • user_id string: Der Benutzername oder die E-Mail-ID des Benutzers.
Rückgabewert:
  • Bei Erfolg ein JSON-Array mit Konto-IDs.
Beispiel für Rückgabewert:
{
    "accounts": [
        "oaccount~2de8db6b91964f8c9009136831126d3cfa94e1d00c4285c1ea3e6d1f36479ed4"
    ]
}
GetUsersByRole
Diese Methode gibt eine Liste aller Benutzer für eine angegebene Rolle und ein bestimmtes Token zurück. Diese Methode kann nur mit einer Token Admin oder Token Auditor aufgerufen werden.
func (t *Controller) GetUsersByRole(token_id string, user_role string) (interface{}, error) {
      auth, err := t.Ctx.Auth.CheckAuthorization("Role.GetUsersByRole", "TOKEN")
      if err != nil && !auth {
            return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
      }
      return t.Ctx.Role.GetUsersByRole(token_id, user_role)
}
Parameter:
  • token_id string: Die ID des Tokens.
  • user_role string: Der Name der Rolle, nach der gesucht werden soll.
Rückgabewert:
  • Bei Erfolg ein JSON-Array der Benutzerobjekte (org_id und user_id).
Beispiel für Rückgabewert:
{"Users":[{"org_id":"Org1MSP","token_id":"digiCurr101","user_id":"user1"}]}
IsInRole
Diese Methode gibt einen booleschen Wert zurück, um anzugeben, ob ein Benutzer und ein Token eine bestimmte Rolle haben. Diese Methode kann nur von Token Admin oder Token Auditor, einer Org Admin oder Org Auditor der angegebenen Organisation oder dem angegebenen Accounteigentümer aufgerufen werden.
func (t *Controller) IsInRole(token_id string, org_id string, user_id string, user_role string) (interface{}, error) {
      tokenAssetValue, err := t.getTokenObject(token_id)
      if err != nil {
            return nil, err
      }
      account_id, err := t.Ctx.Account.GenerateAccountId(token_id, org_id, user_id)
      if err != nil {
            return nil, err
      }
      auth, err := t.Ctx.Auth.CheckAuthorization("Token.IsInRole", "TOKEN", map[string]string{"account_id": account_id})
      if err != nil && !auth {
            return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
      }
      result, err := t.Ctx.Token.IsInRole(user_role, account_id, tokenAssetValue.Interface())
      if err != nil {
            return nil, fmt.Errorf("error in IsInRole %s", err.Error())
      }
      response := make(map[string]interface{})
      response["result"] = result
      return response, nil
}
Parameter:
  • token_id string: Die ID des Tokens.
  • org_id string: Die Mitgliedsdienstanbieter-(MSP-)ID des Benutzers in der aktuellen Organisation.
  • user_id string: Der Benutzername oder die E-Mail-ID des Benutzers.
  • user_role string: Der Name der Rolle, nach der gesucht werden soll.
Rückgabewert:
  • Bei Erfolg eine JSON-Zeichenfolge des booleschen Ergebnisses.
Beispiel für Rückgabewert:
{"result":false}
GetOrgAccountsByRole
Diese Methode gibt Informationen zu allen Konten zurück, die eine bestimmte Rolle in einer bestimmten Organisation haben. Diese Methode kann nur mit Token Admin, Token Auditor, Org Admin oder Org Auditor aufgerufen werden.
func (t *Controller) GetOrgAccountsByRole(token_id string, user_role string, org_id string) (interface{}, error) {
      auth, err := t.Ctx.Auth.CheckAuthorization("Role.GetOrgAccountsByRole", "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.Role.GetOrgAccountsByRole(token_id, user_role, org_id)
}
Parameter:
  • token_id: string: Die ID des Tokens.
  • role: string: Der Name der Rolle, nach der gesucht werden soll.
  • org_id: string: Die Mitgliedsdienstanbieter-(MSP-)ID der Organisation.
Rückgabewert:
  • Bei Erfolg eine Liste aller Firmen mit der angegebenen Rolle in der angegebenen Organisation.
Beispiel für Rückgabewert:
{
    "accounts": [
        "oaccount~abc74791148b761352b98df58035601b6f5480448ac2b4a3a7eb54bdbebf48eb",
         "oaccount~9c650574af9025a6106c8d12a801b079eda9ae2e3399fc2fbd5bd683d738a850"
    ]
}
GetOrgUsersByRole
Diese Methode gibt Informationen zu allen Benutzern zurück, die eine bestimmte Rolle in einer bestimmten Organisation haben. Diese Methode kann nur von einer Token Admin oder Token Auditor oder von einer Org Admin oder Org Auditor der angegebenen Organisation aufgerufen werden.
func (t *Controller) GetOrgUsersByRole(token_id string, user_role string, org_id string) (interface{}, error) {
      auth, err := t.Ctx.Auth.CheckAuthorization("Role.GetOrgUsersByRole", "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.Role.GetOrgUsersByRole(token_id, user_role, org_id)
}
Parameter:
  • token_id: string: Die ID des Tokens.
  • role: string: Der Name der Rolle, nach der gesucht werden soll.
  • org_id: string: Die Mitgliedsdienstanbieter-(MSP-)ID der Organisation.
Rückgabewert:
  • Bei Erfolg eine Liste aller Benutzer mit der angegebenen Rolle in der angegebenen Organisation.
Beispiel für Rückgabewert:
{
    "Users": [
        {
            "org_id": "Org1MSP",
            "token_id": "token",
            "user_id": "admin"
        },
        {
            "org_id": "Org1MSP",
            "token_id": "token",
            "user_id": "orgAdmin"
        }
    ]
}

Methoden für Transaktionshistorienmanagement

GetAccountTransactionHistory
Diese Methode gibt ein Array von Kontotransaktionshistoriendetails für einen angegebenen Benutzer und ein bestimmtes Token zurück. Diese Methode kann nur von der Token Admin des Chaincodes, einer Org Admin der angegebenen Organisation oder der AccountOwner des Accounts aufgerufen werden.
func (t *Controller) GetAccountTransactionHistory(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, err
      }
      auth, err := t.Ctx.Auth.CheckAuthorization("Account.GetAccountTransactionHistory", "TOKEN", map[string]string{"account_id": account_id})
      if err != nil && !auth {
            return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
      }

      transactionArray, err := t.Ctx.Account.GetAccountTransactionHistory(account_id, org_id, user_id)
      return transactionArray, err
}
Parameter:
  • token_id string: Die ID des Tokens.
  • org_id string: Die Mitgliedsdienstanbieter-(MSP-)ID des Benutzers in der aktuellen Organisation.
  • user_id string: Der Benutzername oder die E-Mail-ID des Benutzers.
Rückgabewert:
  • Bei Erfolg ein Array von JSON-Kontotransaktionsobjekten, das die folgenden Eigenschaften enthält:
  • balance: Der Kontosaldo.
  • holding_id: Die ID eines Holdingkontos.
  • onhold_balance: Der einbehaltene Saldo.
  • timestamp: Der Zeitpunkt der Transaktion.
  • token_id: Die ID des Tokens.
  • transacted_account: Das Konto, mit dem die Transaktion stattgefunden hat.
  • transacted_amount: Der Betrag der Transaktion.
  • transaction_id: Die ID der Transaktion.
  • transaction_type: Der Typ der Transaktion.
Beispiel für Rückgabewert:
[{
    "balance": 199,
    "onhold_balance": 0,
    "timestamp": "2021-08-16T17:42:32.905+05:30",
    "token_id": "digiCurr101",
    "transacted_account": "oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f",
    "transacted_amount": 1,
    "transaction_id": "otransaction~c8a9fa001aba6e0d8391b034655889df47eb5103713840b999a4ab41f5e57b38",
    "transaction_type": "DEBIT"
}, {
    "balance": 200,
    "onhold_balance": 0,
    "timestamp": "2021-08-16T17:41:59.262+05:30",
    "token_id": "digiCurr101",
    "transacted_account": "oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f",
    "transacted_amount": 100,
    "transaction_id": "otransaction~65a0bf8ae8108baa7495fbab91c205651c055e9f480f6808753287173026aa69",
    "transaction_type": "MINT"
}]
GetAccountTransactionHistoryWithFilters
Diese Methode gibt ein Array von Kontotransaktionshistoriendetails für einen angegebenen Benutzer und ein bestimmtes Token zurück. Diese Methode kann nur von der Token Admin des Chaincodes, einer Org Admin der angegebenen Organisation oder der AccountOwner des Accounts aufgerufen werden. Diese Methode kann nur aufgerufen werden, wenn eine Verbindung zum Remote-Oracle Blockchain Platform-Netzwerk besteht.
func (t *Controller) GetAccountTransactionHistoryWithFilters(token_id string, org_id string, user_id string, filters ...account.AccountHistoryFilters) (interface{}, error) {
      account_id, err := t.Ctx.Account.GenerateAccountId(token_id, org_id, user_id)
      if err != nil {
            return nil, err
      }
      auth, err := t.Ctx.Auth.CheckAuthorization("Account.GetAccountTransactionHistoryWithFilters", "TOKEN", map[string]string{"account_id": account_id})
      if err != nil && !auth {
            return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
      }

      // sample format of filter: []string{"3", "", "2022-01-16T15:16:36+00:00", "2022-01-17T15:16:36+00:00"}
      transactionArray, err := t.Ctx.Account.GetAccountTransactionHistoryWithFilters(account_id, org_id, user_id, filters...)
      return transactionArray, err
}
Parameter:
  • token_id string: Die ID des Tokens.
  • org_id string: Die Mitgliedsdienstanbieter-(MSP-)ID des Benutzers in der aktuellen Organisation.
  • user_id string: Der Benutzername oder die E-Mail-ID des Benutzers.
  • filters: string: Ein optionaler Parameter. Wenn leer, werden alle Datensätze zurückgegeben. Die Eigenschaft PageSize bestimmt die Anzahl der zurückzugebenden Datensätze. Wenn PageSize 0 ist, ist die Standardseitengröße 20. Die Eigenschaft Bookmark bestimmt den Startindex der zurückzugebenden Datensätze. Weitere Informationen finden Sie in der Dokumentation zu Hyperledger Fabric. Die Eigenschaften StartTime und EndTime müssen im RFC-3339-Format angegeben werden.
Beispiel:

ochain invoke GetAccountTransactionHistoryWithFilters 'token1' 'appbuilder12' 'user_minter' '{"PageSize":10,"Bookmark":"1","StartTime":"2022-01-25T17:41:42Z","EndTime":"2022-01-25T17:59:10Z"}'

[
  {
    "transaction_id": "otransaction~3f9c306b0ef6994885939c1a6eb5f063b06617ecb932d4a043f323ba53d55f9f",
    "transacted_amount": 200,
    "timestamp": "2022-02-15T18:27:13.000Z",
    "token_id": "token1",
    "transacted_account": "oaccount~obptok~26e046c8ba8b98da2cdabb78113d67200581ea3d4eea5aa324
1abd3598e05d05",
    "transaction_type": "DEBIT",
    "balance": 9200,
    "onhold_balance": 0
  },
  {
    "transaction_id": "otransaction~f1d37c3abd5c85c0a399f246d8eb68257c49ab4fe4cdfd3501908583c51c421e",
    "transacted_amount": 200,
    "timestamp": "2022-02-15T18:27:02.000Z",
    "token_id": "token1",
    "transaction_type": "BULKTRANSFER",
    "number_of_sub_transactions": 2,
    "balance": 9600,
    "onhold_balance": 0
  },
  {
    "transaction_id": "otransaction~21972b4d206bd52ea77924efb259c67217edb23b4386580d1bee696f6f864b9b",
    "transacted_amount": 200,
    "timestamp": "2022-02-15T18:26:57.000Z",
    "token_id": "token1",
    "transaction_type": "BULKTRANSFER",
    "number_of_sub_transactions": 2,
    "balance": 9800,
    "onhold_balance": 0
  },
  {
    "transaction_id": "otransaction~07331a1f7be99d6750973674a783da9ec9ca17df23747cdf52d388865d93f9a",
    "transacted_amount": 10000,
    "timestamp": "2022-02-15T18:26:30.000Z",
    "token_id": "token1",
    "transacted_account": "oaccount~obptok~88b62f329f20fffc6fc9231cb51019a5e9550c78b657123d140897
62397d2b55",
    "transaction_type": "MINT",
    "balance": 10000,
    "onhold_balance": 0
  }
]
GetSubTransactionsById
Diese Methode gibt ein Array mit Details der Untertransaktionshistorie für eine angegebene Transaktion zurück.
func (t *Controller) GetSubTransactionsById(transaction_id string) (interface{}, error) {
      auth, err := t.Ctx.Auth.CheckAuthorization("Account.GetSubTransactionsById", "TOKEN", map[string]string{"transaction_id": transaction_id})
      if err != nil && !auth {
            return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
      }
      return t.Ctx.Account.GetSubTransactionsById(transaction_id)
}
Parameter:
  • transaction_id string: Die ID der Transaktion.
Beispiel:

ochain invoke GetAccountSubTransactionHistory 'otransaction~21972b4d206bd52ea77924efb259c67217edb23b4386580d1bee696f6f864b9b'

[
  {
    "transaction_id": "otransaction~21972b4d206bd52ea77924efb259c67217edb23b4386580d1bee696f6f864b9b~c4ca4238a0b923820dcc509a6f75849b",
    "transacted_amount": 100,
    "timestamp": "2022-02-15T18:26:57.000Z",
    "token_id": "token1",
    "transacted_account": "oaccount~obptok~6600eb38d365552b76f41d4186acece104f31eae331a440f963e6fa75b62ff21",
    "transaction_type": "DEBIT",
    "balance": 9900,
    "onhold_balance": 0
  },
  {
    "transaction_id": "otransaction~21972b4d206bd52ea77924efb259c67217edb23b4386580d1bee696f6f864b9b~c81e728d9d4c2f636f067f89cc14862c",
    "transacted_amount": 100,
    "timestamp": "2022-02-15T18:26:57.000Z",
    "token_id": "token1",
    "transacted_account": "oaccount~obptok~26e046c8ba8b98da2cdabb78113d67200581ea3d4eea5aa3241abd3598e05d05",
    "transaction_type": "DEBIT",
    "balance": 9800,
    "onhold_balance": 0
  }
]
GetSubTransactionsByIdWithFilters
Diese Methode gibt ein Array mit Details der Untertransaktionshistorie für eine angegebene Transaktion zurück.
func (t *Controller) GetSubTransactionsByIdWithFilters(transaction_id string, filters ...account.SubTransactionFilters) (interface{}, error) {
      auth, err := t.Ctx.Auth.CheckAuthorization("Account.GetSubTransactionsByIdWithFilters", "TOKEN", map[string]string{"transaction_id": transaction_id})
      if err != nil && !auth {
            return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
      }
      return t.Ctx.Account.GetSubTransactionsByIdWithFilters(transaction_id, filters...)
}
Parameter:
  • transaction_id string: Die ID der Transaktion.
  • filters: string: Ein optionaler Parameter. Wenn leer, werden alle Datensätze zurückgegeben. Die Eigenschaft PageSize bestimmt die Anzahl der zurückzugebenden Datensätze. Wenn PageSize 0 ist, ist die Standardseitengröße 20. Die Eigenschaft Bookmark bestimmt den Startindex der zurückzugebenden Datensätze. Weitere Informationen finden Sie in der Dokumentation zu Hyperledger Fabric. Die Eigenschaften StartTime und EndTime müssen im RFC-3339-Format angegeben werden.
Beispiel:

ochain invoke GetAccountSubTransactionHistoryWithFilters 'otransaction~21972b4d206bd52ea77924efb259c67217edb23b4386580d1bee696f6f864b9b' '{"PageSize":10,"Bookmark":"1"}'

[
{
"transaction_id": "otransaction~21972b4d206bd52ea77924efb259c67217edb23b4386580d1bee696f6f864b9b~c4ca4238a0b923820dcc509a6f75849b",
"transacted_amount": 100,
"timestamp": "2022-02-15T18:26:57.000Z",
"token_id": "token1",
"transacted_account": "oaccount~obptok~6600eb38d365552b76f41d4186acece104f31eae331a440f963e6fa75b62ff21",
"transaction_type": "DEBIT",
"balance": 9900,
"onhold_balance": 0
},
{
"transaction_id": "otransaction~21972b4d206bd52ea77924efb259c67217edb23b4386580d1bee696f6f864b9b~c81e728d9d4c2f636f067f89cc14862c",
"transacted_amount": 100,
"timestamp": "2022-02-15T18:26:57.000Z",
"token_id": "token1",
"transacted_account": "oaccount~obptok~26e046c8ba8b98da2cdabb78113d67200581ea3d4eea5aa3241abd3598e05d05",
"transaction_type": "DEBIT",
"balance": 9800,
"onhold_balance": 0
}
]
GetTransactionById
Diese Methode gibt die Historie eines Transaction-Assets zurück.
func (t *Controller) GetTransactionById(transaction_id string) (interface{}, error) {
    return t.Ctx.Transaction.GetTransactionById(transaction_id)
}
Parameter:
  • transaction_id string: Die ID des Transaktionsassets.
Rückgabewert:
  • Bei Erfolg ein JSON-Array der Historie für die Transaktion.
Beispiel für Rückgabewert:
{
    "history": [
        {
            "IsDelete": "false",
            "Timestamp": "2021-08-16 20:19:05.028 +0530 IST",
            "TxId": "67042154a6853011d111b13f73943f06d2a6ae3cfb9a84cb104482c359eb2220",
            "Value": {
                "Amount": 3,
                "AssetType": "otransaction",
                "FromAccountId": "oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f",
                "HoldingId": "ohold~digicur~digiCurr101~op2",
                "NumberOfSubTransactions": 0,
                "Timestamp": "2021-08-16T20:19:05+05:30",
                "ToAccountId": "oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f",
                "TokenId": "digiCurr101",
                "TransactionId": "otransaction~67042154a6853011d111b13f73943f06d2a6ae3cfb9a84cb104482c359eb2220",
                "TransactionType": "RELEASEHOLD"
            }
        }
    ],
    "transaction_id": "otransaction~67042154a6853011d111b13f73943f06d2a6ae3cfb9a84cb104482c359eb2220"
}
DeleteHistoricalTransactions
Mit dieser Methode werden ältere Transaktionen aus der Statusdatenbank gelöscht.
func (t *Controller) DeleteHistoricalTransactions(timestamp string) (interface{}, error) {
      auth, err := t.Ctx.Auth.CheckAuthorization("Transaction.DeleteHistoricalTransactions", "TOKEN")
      if err != nil && !auth {
            return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
      }
      return t.Ctx.Transaction.DeleteHistoricalTransactions(timestamp)
}
Parameter:
  • timestamp string: Ein Zeitstempel, der angibt, wann Transaktionen gelöscht werden sollen. Transaktionsassets, die älter als die angegebene Zeit sind, werden gelöscht.
GetAccountTransactionHistoryWithFiltersFromRichHistDB
func (t *Controller) GetAccountTransactionHistoryWithFiltersFromRichHistDB(token_id string, org_id string, user_id string, custom_endPoint string, bearer_token string, filters ...account.AccountHistoryFilters) (interface{}, error) {
account_id, err := t.Ctx.Account.GenerateAccountId(token_id, org_id, user_id)
if err != nil {
return nil, err
}
auth, err := t.Ctx.Auth.CheckAuthorization("Account.GetAccountTransactionHistoryWithFilters", "TOKEN", map[string]string{"account_id": account_id})
if err != nil && !auth {
return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
}
// sample format of filter: []string{"3", "", "2022-01-16T15:16:36+00:00", "2022-01-17T15:16:36+00:00"}
transactionArray, err := t.Ctx.Account.GetAccountTransactionHistoryWithFiltersFromRichHistDB(account_id, org_id, user_id, custom_endPoint, bearer_token, filters...)
return transactionArray, err
}
Parameter:
  • token_id: string: Die ID des zu prägenden Tokens.
  • org_id: string: Die Mitgliedsdienstanbieter-(MSP-)ID des Benutzers in der aktuellen Organisation.
  • user_id: string: Der Benutzername oder die E-Mail-ID des Benutzers.
  • custom_endpoint: Der Serviceendpunkt RESTful der Rich-History-Datenbank.
  • bearer_token: Das Zugriffsautorisierungstoken für den RESTful-Serviceendpunkt.
  • filters: string: Ein optionaler Parameter. Wenn leer, werden alle Datensätze zurückgegeben. Die Eigenschaft PageSize bestimmt die Anzahl der zurückzugebenden Datensätze. Wenn PageSize 0 ist, ist die Standardseitengröße 20. Die Eigenschaft Bookmark bestimmt den Startindex der zurückzugebenden Datensätze. Weitere Informationen finden Sie in der Dokumentation zu Hyperledger Fabric. Die Eigenschaften StartTime und EndTime müssen im RFC-3339-Format angegeben werden.
GetAccountTransactionHistory
Diese Methode gibt ein Array von Kontotransaktionshistoriendetails für einen angegebenen Benutzer und ein bestimmtes Token zurück. Diese Methode kann nur von einer Token Admin oder Token Auditor, einer Org Admin oder Org Auditor der angegebenen Organisation oder vom angegebenen Accounteigentümer aufgerufen werden.
func (t *Controller) GetAccountTransactionHistory(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, err
}
auth, err := t.Ctx.Auth.CheckAuthorization("Account.GetAccountTransactionHistory", "TOKEN", map[string]string{"account_id": account_id})
if err != nil && !auth {
return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
}



transactionArray, err := t.Ctx.Account.GetAccountTransactionHistory(account_id, org_id, user_id)
return transactionArray, err
}
Parameter:
  • token_id: string: Die ID des Tokens.
  • org_id: string: Die Mitgliedsdienstanbieter-(MSP-)ID des Benutzers in der aktuellen Organisation.
  • user_id: string: Der Benutzername oder die E-Mail-ID des Benutzers.
Beispiel für Rückgabewert:
[
            {
                "transaction_id": "otransaction~64c5a4830949eae1424600f3d4a438c6f603a7c3ea31a68e374b899803999e22",
                "transacted_amount": 10,
                "timestamp": "2024-12-11T13:37:28.000Z",
                "balance": 550,
                "onhold_balance": 10,
                "token_id": "USD",
                "category": "category value",
                "description": "description value",
                "transacted_account": "oaccount~9d9806fa92aa0c4fdb34eaffac6e830181b5d47e64fbce752195e83024125ca0",
                "transaction_type": "REJECT_MINT",
                "transacted_org_id": "CB",
                "transacted_user_id'": "creator_user_cb"
            },
            {
                "transaction_id": "otransaction~a4537ef34a955b023b7c205b9abf06a6c79e4fdd761fb24f41b8eb34126b66c0",
                "transacted_amount": 10,
                "timestamp": "2024-12-11T13:36:32.000Z",
                "balance": 550,
                "onhold_balance": 10,
                "token_id": "USD",
                "description": "description value",
                "transacted_account": "oaccount~9d9806fa92aa0c4fdb34eaffac6e830181b5d47e64fbce752195e83024125ca0",
                "transaction_type": "APPROVE_MINT",
                "transacted_org_id": "CB",
                "transacted_user_id'": "creator_user_cb"
            },
            {
                "transaction_id": "otransaction~6237a759422bd9fb112742e8cd7e6450df5a74a32236d9b1005571afed8904a4",
                "transacted_amount": 10,
                "timestamp": "2024-12-11T13:36:18.000Z",
                "balance": 540,
                "onhold_balance": 10,
                "token_id": "USD",
                "category": "category value",
                "description": "description value",
                "transacted_account": "oaccount~9d9806fa92aa0c4fdb34eaffac6e830181b5d47e64fbce752195e83024125ca0",
                "transaction_type": "REQUEST_MINT",
                "transacted_org_id": "CB",
                "transacted_user_id'": "creator_user_cb"
            },
            {
                "transaction_id": "otransaction~06b35071415d74aa1a7c18449149c937d886cae76a832c44cf8d98e84586e76e",
                "transacted_amount": 10,
                "timestamp": "2024-12-11T13:35:46.000Z",
                "balance": 540,
                "onhold_balance": 10,
                "token_id": "USD",
                "category": "category value",
                "description": "description value",
                "transacted_account": "oaccount~9d9806fa92aa0c4fdb34eaffac6e830181b5d47e64fbce752195e83024125ca0",
                "transaction_type": "REQUEST_MINT",
                "transacted_org_id": "CB",
                "transacted_user_id'": "creator_user_cb"
            }
 ]
GetAccountTransactionHistoryWithFilters
Diese Methode gibt ein gefiltertes Array von Kontotransaktionshistoriendetails für einen angegebenen Benutzer und ein bestimmtes Token zurück. Diese Methode kann nur von einer Token Admin oder Token Auditor, einer Org Admin oder Org Auditor der angegebenen Organisation oder vom angegebenen Accounteigentümer aufgerufen werden.
func (t *Controller) GetAccountTransactionHistoryWithFilters(token_id string, filters ...account.AccountHistoryFilters) (interface{}, error) {
org_id, err := t.Ctx.Model.GetTransientMapKeyAsString(constants.OrgIdCC)
if err != nil {
return nil, err
}
user_id, err := t.Ctx.Model.GetTransientMapKeyAsString(constants.UserIdCC)
if err != nil {
return nil, err
}
account_id, err := t.Ctx.Account.GenerateAccountId(token_id, org_id, user_id)
if err != nil {
return nil, err
}
auth, err := t.Ctx.Auth.CheckAuthorization("Account.GetAccountTransactionHistoryWithFilters", "TOKEN", map[string]string{"account_id": account_id})
if err != nil && !auth {
return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
}



// sample format of filter: []string{"3", "", "2022-01-16T15:16:36+00:00", "2022-01-17T15:16:36+00:00"}
transactionArray, err := t.Ctx.Account.GetReconciledTransactionHistory(account_id, org_id, user_id, filters...)
return transactionArray, err
}
Parameter:
  • token_id: string: Die ID des Tokens.
  • org_id: string: Die Mitgliedsdienstanbieter-(MSP-)ID des Benutzers in der aktuellen Organisation.
  • user_id: string: Der Benutzername oder die E-Mail-ID des Benutzers.
  • filters: string: Ein optionaler Parameter. Wenn leer, werden alle Datensätze zurückgegeben. Die Eigenschaft PageSize bestimmt die Anzahl der zurückzugebenden Datensätze. Wenn PageSize 0 ist, ist die Standardseitengröße 20. Die Eigenschaft Bookmark bestimmt den Startindex der zurückzugebenden Datensätze. Weitere Informationen finden Sie in der Dokumentation zu Hyperledger Fabric. Die Eigenschaften StartTime und EndTime müssen im RFC-3339-Format angegeben werden.
Beispiel für Rückgabewert:
[
            {
                "transaction_id": "otransaction~64c5a4830949eae1424600f3d4a438c6f603a7c3ea31a68e374b899803999e22",
                "transacted_amount": 10,
                "timestamp": "2024-12-11T13:37:28.000Z",
                "balance": 550,
                "onhold_balance": 10,
                "token_id": "USD",
                "category": "category value",
                "description": "description value",
                "transacted_account": "oaccount~9d9806fa92aa0c4fdb34eaffac6e830181b5d47e64fbce752195e83024125ca0",
                "transaction_type": "REJECT_MINT",
                "transacted_org_id": "CB",
                "transacted_user_id'": "creator_user_cb"
            },
            {
                "transaction_id": "otransaction~a4537ef34a955b023b7c205b9abf06a6c79e4fdd761fb24f41b8eb34126b66c0",
                "transacted_amount": 10,
                "timestamp": "2024-12-11T13:36:32.000Z",
                "balance": 550,
                "onhold_balance": 10,
                "token_id": "USD",
                "description": "description value",
                "transacted_account": "oaccount~9d9806fa92aa0c4fdb34eaffac6e830181b5d47e64fbce752195e83024125ca0",
                "transaction_type": "APPROVE_MINT",
                "transacted_org_id": "CB",
                "transacted_user_id'": "creator_user_cb"
            },
            {
                "transaction_id": "otransaction~6237a759422bd9fb112742e8cd7e6450df5a74a32236d9b1005571afed8904a4",
                "transacted_amount": 10,
                "timestamp": "2024-12-11T13:36:18.000Z",
                "balance": 540,
                "onhold_balance": 10,
                "token_id": "USD",
                "category": "category value",
                "description": "description value",
                "transacted_account": "oaccount~9d9806fa92aa0c4fdb34eaffac6e830181b5d47e64fbce752195e83024125ca0",
                "transaction_type": "REQUEST_MINT",
                "transacted_org_id": "CB",
                "transacted_user_id'": "creator_user_cb"
            },
            {
                "transaction_id": "otransaction~06b35071415d74aa1a7c18449149c937d886cae76a832c44cf8d98e84586e76e",
                "transacted_amount": 10,
                "timestamp": "2024-12-11T13:35:46.000Z",
                "balance": 540,
                "onhold_balance": 10,
                "token_id": "USD",
                "category": "category value",
                "description": "description value",
                "transacted_account": "oaccount~9d9806fa92aa0c4fdb34eaffac6e830181b5d47e64fbce752195e83024125ca0",
                "transaction_type": "REQUEST_MINT",
                "transacted_org_id": "CB",
                "transacted_user_id'": "creator_user_cb"
            }
 ]
GetSubTransactionsById
Diese Methode gibt ein Array mit Details der Untertransaktionshistorie für eine angegebene Transaktion zurück. Diese Methode kann nur von einem Token Admin, Token Auditor oder dem AccountOwner aufgerufen werden, der die Transaktion aufgerufen hat.
func (t *Controller) GetSubTransactionsById(transaction_id string) (interface{}, error) {
      auth, err := t.Ctx.Auth.CheckAuthorization("Account.GetSubTransactionsById", "TOKEN", map[string]string{"transaction_id": transaction_id})
      if err != nil && !auth {
            return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
      }
      return t.Ctx.Account.GetSubTransactionsById(transaction_id)
}
Parameter:
  • transaction_id string: Die ID der Transaktion.
Beispiel:

ochain invoke GetAccountSubTransactionHistory 'otransaction~21972b4d206bd52ea77924efb259c67217edb23b4386580d1bee696f6f864b9b'

[
  {
    "transaction_id": "otransaction~21972b4d206bd52ea77924efb259c67217edb23b4386580d1bee696f6f864b9b~c4ca4238a0b923820dcc509a6f75849b",
    "transacted_amount": 100,
    "timestamp": "2022-02-15T18:26:57.000Z",
    "token_id": "token1",
    "transacted_account": "oaccount~obptok~6600eb38d365552b76f41d4186acece104f31eae331a440f963e6fa75b62ff21",
    "transaction_type": "DEBIT",
    "balance": 9900,
    "onhold_balance": 0
  },
  {
    "transaction_id": "otransaction~21972b4d206bd52ea77924efb259c67217edb23b4386580d1bee696f6f864b9b~c81e728d9d4c2f636f067f89cc14862c",
    "transacted_amount": 100,
    "timestamp": "2022-02-15T18:26:57.000Z",
    "token_id": "token1",
    "transacted_account": "oaccount~obptok~26e046c8ba8b98da2cdabb78113d67200581ea3d4eea5aa3241abd3598e05d05",
    "transaction_type": "DEBIT",
    "balance": 9800,
    "onhold_balance": 0
  }
]
GetSubTransactionsByIdWithFilters
Diese Methode gibt ein Array mit Details der Untertransaktionshistorie für eine angegebene Transaktion zurück.
func (t *Controller) GetSubTransactionsByIdWithFilters(transaction_id string, filters ...account.SubTransactionFilters) (interface{}, error) {
      auth, err := t.Ctx.Auth.CheckAuthorization("Account.GetSubTransactionsByIdWithFilters", "TOKEN", map[string]string{"transaction_id": transaction_id})
      if err != nil && !auth {
            return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
      }
      return t.Ctx.Account.GetSubTransactionsByIdWithFilters(transaction_id, filters...)
}
Parameter:
  • transaction_id string: Die ID der Transaktion.
  • filters: string: Ein optionaler Parameter. Wenn leer, werden alle Datensätze zurückgegeben. Die Eigenschaft PageSize bestimmt die Anzahl der zurückzugebenden Datensätze. Wenn PageSize 0 ist, ist die Standardseitengröße 20. Die Eigenschaft Bookmark bestimmt den Startindex der zurückzugebenden Datensätze. Weitere Informationen finden Sie in der Dokumentation zu Hyperledger Fabric. Die Eigenschaften StartTime und EndTime müssen im RFC-3339-Format angegeben werden.
Beispiel:

ochain invoke GetAccountSubTransactionHistoryWithFilters 'otransaction~21972b4d206bd52ea77924efb259c67217edb23b4386580d1bee696f6f864b9b' '{"PageSize":10,"Bookmark":"1"}'

[
{
"transaction_id": "otransaction~21972b4d206bd52ea77924efb259c67217edb23b4386580d1bee696f6f864b9b~c4ca4238a0b923820dcc509a6f75849b",
"transacted_amount": 100,
"timestamp": "2022-02-15T18:26:57.000Z",
"token_id": "token1",
"transacted_account": "oaccount~obptok~6600eb38d365552b76f41d4186acece104f31eae331a440f963e6fa75b62ff21",
"transaction_type": "DEBIT",
"balance": 9900,
"onhold_balance": 0
},
{
"transaction_id": "otransaction~21972b4d206bd52ea77924efb259c67217edb23b4386580d1bee696f6f864b9b~c81e728d9d4c2f636f067f89cc14862c",
"transacted_amount": 100,
"timestamp": "2022-02-15T18:26:57.000Z",
"token_id": "token1",
"transacted_account": "oaccount~obptok~26e046c8ba8b98da2cdabb78113d67200581ea3d4eea5aa3241abd3598e05d05",
"transaction_type": "DEBIT",
"balance": 9800,
"onhold_balance": 0
}
]
GetTransactionById
Diese Methode gibt die Historie eines Transaction-Assets zurück. Diese Methode kann nur von einer Token Admin oder Token Auditor, einer Org Admin oder Org Auditor der angegebenen Organisation oder von einem Transaktionsteilnehmer (Absender, Empfänger, Notar) aufgerufen werden.
func (t *Controller) GetTransactionById(transaction_id string) (interface{}, error) {
    return t.Ctx.Transaction.GetTransactionById(transaction_id)
}
Parameter:
  • transaction_id string: Die ID des Transaktionsassets.
Rückgabewert:
  • Bei Erfolg ein JSON-Array der Historie für die Transaktion.
Beispiel für Rückgabewert:
{
    "history": [
        {
            "IsDelete": "false",
            "Timestamp": "2021-08-16 20:19:05.028 +0530 IST",
            "TxId": "67042154a6853011d111b13f73943f06d2a6ae3cfb9a84cb104482c359eb2220",
            "Value": {
                "Amount": 3,
                "AssetType": "otransaction",
                "FromAccountId": "oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f",
                "HoldingId": "ohold~digicur~digiCurr101~op2",
                "NumberOfSubTransactions": 0,
                "Timestamp": "2021-08-16T20:19:05+05:30",
                "ToAccountId": "oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f",
                "TokenId": "digiCurr101",
                "TransactionId": "otransaction~67042154a6853011d111b13f73943f06d2a6ae3cfb9a84cb104482c359eb2220",
                "TransactionType": "RELEASEHOLD"
            }
        }
    ],
    "transaction_id": "otransaction~67042154a6853011d111b13f73943f06d2a6ae3cfb9a84cb104482c359eb2220"
}
DeleteHistoricalTransactions
Mit dieser Methode werden ältere Transaktionen aus der Statusdatenbank gelöscht.
func (t *Controller) DeleteHistoricalTransactions(timestamp string) (interface{}, error) {
      auth, err := t.Ctx.Auth.CheckAuthorization("Transaction.DeleteHistoricalTransactions", "TOKEN")
      if err != nil && !auth {
            return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
      }
      return t.Ctx.Transaction.DeleteHistoricalTransactions(timestamp)
}
Parameter:
  • timestamp string: Ein Zeitstempel, der angibt, wann Transaktionen gelöscht werden sollen. Transaktionsassets, die älter als die angegebene Zeit sind, werden gelöscht.

Methoden für die Verwaltung des Tokenverhaltens - Mintable-Verhalten

IssueTokens
Mit dieser Methode werden Token abgebildet, die dann dem Aufrufer der Methode gehören. Der Anrufer muss über ein Konto und die Nebenrolle verfügen. Die Anzahl der Token, die geprägt werden können, wird durch die Eigenschaft max_mint_quantity des Verhaltens mintable in der Spezifikationsdatei begrenzt. Wenn die Eigenschaft max_mint_quantity nicht angegeben ist, kann eine unbegrenzte Anzahl von Token geprägt werden. Die Menge muss innerhalb der Dezimalwerte liegen, die durch den Parameter decimal des Verhaltens divisible in der Spezifikationsdatei angegeben werden. Diese Methode kann nur von der AccountOwner des Kontos mit der Minter-Rolle aufgerufen werden.
func (t *Controller) IssueTokens(token_id string, quantity float64) (interface{}, error) {
    tokenAssetValue, err := t.getTokenObject(token_id)
    if err != nil {
        return nil, err
    }
    return t.Ctx.Token.Mint(quantity, tokenAssetValue.Interface())
}
Parameter:
  • token_id string: Die ID des Tokens.
  • quantity float64: Die Anzahl der zu mindernden Token.
Rückgabewert:
  • Bei Erfolg eine Nachricht mit Accountdetails.
Beispiel für Rückgabewert:
{"msg":"Successfully minted 100 tokens to account oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f (org_id : Org1MSP, user_id : user1)"}
GetTotalMintedTokens
Diese Methode gibt die Gesamtanzahl der ausgeprägten Token für ein angegebenes Token zurück. Diese Methode kann nur mit einer Token Admin oder Org Admin des Chaincodes aufgerufen werden.
func (t *Controller) GetTotalMintedTokens(token_id string) (interface{}, error) {
    tokenAssetValue, err := t.getTokenObject(token_id)
    if err != nil {
        return nil, err
    }
    auth, err := t.Ctx.Auth.CheckAuthorization("Token.GetTotalMintedTokens", "TOKEN")
    if err != nil && !auth {
        return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
    }
    return t.Ctx.Token.GetTotalMintedTokens(tokenAssetValue.Interface())
}
Parameter:
  • token_id string: Die ID des Tokens.
Rückgabewert:
  • Bei Erfolg eine JSON-Zeichenfolge, die die Gesamtanzahl der Token angibt.
Beispiel für Rückgabewert:
{"msg":"total minted amount for token with id digiCurr101 is 1000","quantity":1000}
GetNetTokens
Diese Methode gibt die Gesamtanzahl der Token zurück, die im System für ein angegebenes Token verfügbar sind. Die Nettotokensumme ist die Anzahl der verbleibenden Token, nachdem Token gebrannt wurden. In Gleichungsform Netto-Token = insgesamt abgebaute Token - insgesamt verbrannte Token. Wenn keine Token verbrannt werden, ist die Anzahl der Nettotoken gleich der Gesamtanzahl der abgebauten Token. Diese Methode kann nur mit einer Token Admin oder Org Admin des Chaincodes aufgerufen werden.
func (t *Controller) GetNetTokens(token_id string) (interface{}, error) {
    tokenAssetValue, err := t.getTokenObject(token_id)
    if err != nil {
        return nil, err
    }
    auth, err := t.Ctx.Auth.CheckAuthorization("Token.GetNetTokens", "TOKEN")
    if err != nil && !auth {
        return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
    }
    return t.Ctx.Token.GetNetTokens(tokenAssetValue.Interface())
}
Parameter:
  • token_id string: Die ID des Tokens.
Rückgabewert:
  • Bei Erfolg eine JSON-Zeichenfolge, die die Nettoanzahl von Token angibt.
Beispiel für Rückgabewert:
{"msg":"net minted amount for token with id digiCurr101 is 1000","quantity":1000}
RequestMint
Diese Methode kann von einem Minter aufgerufen werden, um eine Anforderung an den Minter Notar zu senden, um eine bestimmte Anzahl von Token zu erstellen.
func (t *Controller) RequestMint(token_id string, operation_id string, notary_org_id string, notary_user_id string, quantity float64, timeToExpiration string, info_details ...token.InfoDetails) (interface{}, error) {
tokenAssetValue, err := t.getTokenObject(token_id)
if err != nil {
return nil, err
}
notary_account_id, err := t.Ctx.Account.GenerateAccountId(token_id, notary_org_id, notary_user_id)
if err != nil {
return nil, fmt.Errorf("error in getting notary account id from org_id: %s and user_id: %s with token_id: %s, error %s ", notary_org_id, notary_user_id, token_id, err.Error())
 }
return t.Ctx.Token.Hold(operation_id, "", notary_account_id, quantity, timeToExpiration, tokenAssetValue.Interface(), constants.HoldMint, info_details...)
}
Parameter:
  • token_id: string: Die ID des zu prägenden Tokens.
  • operation_id: string: Die eindeutige Vorgangs-ID, die der Mint-Anforderung entspricht.
  • notary_org_id: string – Die Mitgliedsdienstleister-ID (MSP) des Notars, der die Anfrage bearbeitet.
  • notary_user_id: string: Der Benutzername oder die E-Mail-ID des Notars, der die Anforderung verarbeitet.
  • quantity: number - Die Anzahl der Token für Mint.
  • TimeToExpiration – Die Zeit, nach der die Minting-Anforderung abläuft und nicht mehr gültig ist.
  • info_details: JSON: Ein Objekt, das die Kategorie (category) und die Beschreibung (description) der Anforderung angibt.

    Sie geben den Parameter info_details in einem anderen Format an, wenn Sie Visual Studio Code im Vergleich zur CLI oder Postman-Collection verwenden.

    Visual Studio-Code: { "category": "category value", "description": "description value" }

    CLI/Postman: "{\"category\":\"category value\",\"description\":\"description value\"}"

Beispiel für Rückgabewert:
{
msg:
"AccountId oaccount~95be539b4e1e4136dd86a806020c97a930909325340481b8fd88d339874fa699 (org_id: Org1MSP, user_id: admin) has successfully submitted request to mint 100 tokens",
}
ApproveMint
Diese Methode kann von einem Minter Notar aufgerufen werden, um eine Prägeanforderung zu genehmigen.
func (t *Controller) ApproveMint(token_id string, operation_id string) (interface{}, error) {
tokenAssetValue, err := t.getTokenObject(token_id)
if err != nil {
return nil, err
}
return t.Ctx.Token.ExecuteHold(operation_id, tokenAssetValue.Interface())
}
Parameter:
  • token_id: string: Die ID des zu prägenden Tokens.
  • operation_id: string: Die eindeutige Vorgangs-ID, die der Mint-Anforderung entspricht.
Beispiel für Rückgabewert:
{
msg:
"Successfully minted 100 tokens to Account Id: oaccount~95be539b4e1e4136dd86a806020c97a930909325340481b8fd88d339874fa699 (org_id: Org1MSP, user_id: admin)"
}
RejectMint
Diese Methode kann von einem Minter Notar aufgerufen werden, um eine Prägeanforderung abzulehnen.
func (t *Controller) RejectMint(token_id string, operation_id string) (interface{}, error) {
tokenAssetValue, err := t.getTokenObject(token_id)
if err != nil {
return nil, err
}
return t.Ctx.Token.ReleaseHold(operation_id, tokenAssetValue.Interface())
}
Parameter:
  • token_id: string: Die ID des zu prägenden Tokens.
  • operation_id: string: Die eindeutige Vorgangs-ID, die der Mint-Anforderung entspricht.
Beispiel für Rückgabewert:
{
 msg: "Successfully rejected mint request with Operation Id 'operation1' to mint 100 tokens of token id token"
}
IssueTokens
Mit dieser Methode werden Token abgebildet, die dann dem Aufrufer der Methode gehören.
func (t *Controller) IssueTokens(token_id string, quantity float64, info_details ...token.InfoDetails) (interface{}, error) {
tokenAssetValue, err := t.getTokenObject(token_id)
if err != nil {
return nil, err
 }
return t.Ctx.Token.Mint(quantity, tokenAssetValue.Interface(), info_details...)
}
Parameter:
  • token_id: string: Die ID des Tokens.
  • quantity - Die Anzahl der zu mindernden Token.
  • info_details: JSON: Ein Objekt, das die Kategorie (category) und die Beschreibung (description) der Anforderung angibt.

    Sie geben den Parameter info_details in einem anderen Format an, wenn Sie Visual Studio Code im Vergleich zur CLI oder Postman-Collection verwenden.

    Visual Studio-Code: { "category": "category value", "description": "description value" }

    CLI/Postman: "{\"category\":\"category value\",\"description\":\"description value\"}"

Beispiel für Rückgabewert:
{
msg:
"Successfully minted 100 tokens to Account Id: oaccount~95be539b4e1e4136dd86a806020c97a930909325340481b8fd88d339874fa699 (Org-Id: Org1MSP, User-Id: admin)"
}
GetTotalMintedTokens
Diese Methode gibt die Gesamtanzahl der ausgeprägten Token für ein angegebenes Token zurück. Diese Methode kann nur mit Token Admin, Token Auditor, Org Admin oder Org Auditor aufgerufen werden.
func (t *Controller) GetTotalMintedTokens(token_id string) (interface{}, error) {
    tokenAssetValue, err := t.getTokenObject(token_id)
    if err != nil {
        return nil, err
    }
    auth, err := t.Ctx.Auth.CheckAuthorization("Token.GetTotalMintedTokens", "TOKEN")
    if err != nil && !auth {
        return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
    }
    return t.Ctx.Token.GetTotalMintedTokens(tokenAssetValue.Interface())
}
Parameter:
  • token_id string: Die ID des Tokens.
Rückgabewert:
  • Bei Erfolg eine JSON-Zeichenfolge, die die Gesamtanzahl der Token angibt.
Beispiel für Rückgabewert:
{"msg":"total minted amount for token with id digiCurr101 is 1000","quantity":1000}
GetNetTokens
Diese Methode gibt die Gesamtanzahl der Token zurück, die im System für ein angegebenes Token verfügbar sind. Die Nettotokensumme ist die Anzahl der verbleibenden Token, nachdem Token gebrannt wurden. In Gleichungsform Netto-Token = insgesamt abgebaute Token - insgesamt verbrannte Token. Wenn keine Token verbrannt werden, ist die Anzahl der Nettotoken gleich der Gesamtanzahl der abgebauten Token. Diese Methode kann nur mit Token Admin, Token Auditor, Org Admin oder Org Auditor aufgerufen werden.
func (t *Controller) GetNetTokens(token_id string) (interface{}, error) {
    tokenAssetValue, err := t.getTokenObject(token_id)
    if err != nil {
        return nil, err
    }
    auth, err := t.Ctx.Auth.CheckAuthorization("Token.GetNetTokens", "TOKEN")
    if err != nil && !auth {
        return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
    }
    return t.Ctx.Token.GetNetTokens(tokenAssetValue.Interface())
}
Parameter:
  • token_id string: Die ID des Tokens.
Rückgabewert:
  • Bei Erfolg eine JSON-Zeichenfolge, die die Nettoanzahl von Token angibt.
Beispiel für Rückgabewert:
{"msg":"net minted amount for token with id digiCurr101 is 1000","quantity":1000}

Methoden für Token Behavior Management - Übertragbares Verhalten

TransferTokens
Mit dieser Methode werden Token vom Aufrufer an ein bestimmtes Konto übertragen. Der Aufrufer der Methode muss ein Konto haben. Die Menge muss innerhalb der Dezimalwerte liegen, die durch den Parameter decimal des Verhaltens divisible in der Spezifikationsdatei angegeben werden. Diese Methode kann nur von der AccountOwner des Accounts aufgerufen werden.
func (t *Controller) TransferTokens(token_id string, to_org_id string, to_user_id string, quantity float64) (interface{}, error) {
    tokenAssetValue, err := t.getTokenObject(token_id)
    if err != nil {
        return nil, err
    }
    to_account_id, err := t.Ctx.Account.GenerateAccountId(token_id, to_org_id, to_user_id)
    if err != nil {
        return nil, err
    }
    return t.Ctx.Token.Transfer(to_account_id, quantity, tokenAssetValue.Interface())
}
Parameter:
  • token_id string: Die ID des Tokens.
  • to_org_id string: Die MSP-ID (Member Service Provider) des Empfängers in der aktuellen Organisation.
  • to_user_id string: Der Benutzername oder die E-Mail-ID des Empfängers.
  • quantity float64: Die Anzahl der zu übertragenden Token.
Rückgabewert:
  • Bei Erfolg eine Nachricht mit Details für beide Konten.
Beispiel für Rückgabewert:
{"msg":"successfully transferred 1 tokens from account oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f (org_id : Org1MSP, user_id : user1) to account oaccount~digicur~682bb71de419602af74e3f226345ae308445ca51010737900c1d85f0376152df (org_id : Org1MSP, user_id : admin)"}
BulkTransferTokens
Diese Methode überträgt Token im Massenverfahren vom aufrufenden Konto auf die Konten, die im Objekt flow angegeben sind. Die Mengen müssen innerhalb der Dezimalwerte liegen, die durch den Parameter decimal des Verhaltens divisible im Spezifikationsaufrufer file.The dieser Methode angegeben werden, und es muss bereits ein Konto erstellt sein. Diese Methode kann nur von der AccountOwner des Accounts aufgerufen werden.
func (t *Controller) BulkTransferTokens(token_id string, flow[]map[string]interface{}) (interface{}, error) {
    tokenAssetValue, err := t.getTokenObject(token_id)
    if err != nil {
        return nil, err
    }
    return t.Ctx.Token.BulkTransfer(flow, tokenAssetValue.Interface())
}
Parameter:
  • token_id string: Die ID des Tokens.
  • flow[]map[string]interface{}: Ein Array von JSON-Objekten, das Empfängerdetails und -mengen angibt.
    • to_org_id string: Die MSP-ID (Member Service Provider) des Empfängers in der aktuellen Organisation.
    • to_user_id string: Der Benutzername oder die E-Mail-ID des Empfängers.
    • quantity float64: Die Anzahl der zu übertragenden Token.
    Sie geben den Parameter flow in einem anderen Format an, wenn Sie Visual Studio Code im Vergleich zur CLI oder Postman-Collection verwenden.
    Visual Studio Code:
    [
      { "to_org_id": "Org1MSP", "to_user_id": "user1", "quantity": 10 },
      { "to_org_id": "Org1MSP", "to_user_id": "user2", "quantity": 10 }
    ]
    
    CLI/Postman:
    "[{ \"to_org_id\": \"Org1MSP\", \"to_user_id\": \"user1\", \"quantity\": 10 }, { \"to_org_id\": \"Org1MSP\", \"to_user_id\": \"user2\", \"quantity\": 10 }]"
Rückgabewert:
  • Eine Meldung, die den Erfolg angibt.
Beispiel für Rückgabewert:
{
    "from_account_id": "oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f",
    "msg": "Successfully transferred 2 tokens from Account Id oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f (Org-Id: Org1MSP, User-Id: user1)",
    "sub_transactions": [
        {
            "amount": 1,
            "to_account_id": "oaccount~digicur~38848e87296d67c8a90918f78cf55f9c9baab2cdc8c928535471aaa1210c706e"
        },
        {
            "amount": 1,
            "to_account_id": "oaccount~digicur~682bb71de419602af74e3f226345ae308445ca51010737900c1d85f0376152df"
        }
    ]
}
TransferTokens
Mit dieser Methode werden Token vom Aufrufer an ein bestimmtes Konto übertragen.
func (t *Controller) TransferTokens(token_id string, to_org_id string, to_user_id string, quantity float64, info_details ...token.InfoDetails) (interface{}, error) {
tokenAssetValue, err := t.getTokenObject(token_id)
if err != nil {
return nil, err
}
to_account_id, err := t.Ctx.Account.GenerateAccountId(token_id, to_org_id, to_user_id)
if err != nil {
return nil, err
 }
return t.Ctx.Token.Transfer(to_account_id, quantity, tokenAssetValue.Interface(), info_details...)
}
Parameter:
  • token_id: string: Die ID des Tokens.
  • to_org_id: string – Die Mitgliedsdienstleister-ID (MSP) des Empfängers (Zahlungsempfängers) in der aktuellen Organisation.
  • to_user_id: string: Der Benutzername oder die E-Mail-ID des Empfängers.
  • quantity: number: Die Anzahl der zu übertragenden Token.
  • info_details: JSON: Ein Objekt, das die Kategorie (category) und die Beschreibung (description) der Anforderung angibt.

    Sie geben den Parameter info_details in einem anderen Format an, wenn Sie Visual Studio Code im Vergleich zur CLI oder Postman-Collection verwenden.

    Visual Studio-Code: { "category": "category value", "description": "description value" }

    CLI/Postman: "{\"category\":\"category value\",\"description\":\"description value\"}"

Beispiel für Rückgabewert:
{
 msg: "Successfully transferred 100 tokens from account id: oaccount~95be539b4e1e4136dd86a806020c97a930909325340481b8fd88d339874fa699 (Org-Id: Org1MSP, User-Id: admin) to account id: oaccount~7yuijg39b4e1e4136dd86a806020c97a930909325340481b8fdhjklliugbv699 (Org-Id: Org1MSP, User-Id: user)",
}
BulkTransferTokens
Diese Methode überträgt Token im Massenverfahren vom aufrufenden Konto auf die Konten, die im Objekt flow angegeben sind. Die Mengen müssen innerhalb der Dezimalwerte liegen, die durch den Parameter decimal des Verhaltens divisible im Spezifikationsaufrufer file.The dieser Methode angegeben werden, und es muss bereits ein Konto erstellt sein. Diese Methode kann nur von der AccountOwner des Accounts aufgerufen werden.
func (t *Controller) BulkTransferTokens(token_id string, flow[]map[string]interface{}) (interface{}, error) {
    tokenAssetValue, err := t.getTokenObject(token_id)
    if err != nil {
        return nil, err
    }
    return t.Ctx.Token.BulkTransfer(flow, tokenAssetValue.Interface())
}
Parameter:
  • token_id string: Die ID des Tokens.
  • flow[]map[string]interface{}: Ein Array von JSON-Objekten, das Empfängerdetails und -mengen angibt.
    • to_org_id string: Die MSP-ID (Member Service Provider) des Empfängers in der aktuellen Organisation.
    • to_user_id string: Der Benutzername oder die E-Mail-ID des Empfängers.
    • quantity float64: Die Anzahl der zu übertragenden Token.
    Sie geben den Parameter flow in einem anderen Format an, wenn Sie Visual Studio Code im Vergleich zur CLI oder Postman-Collection verwenden.
    Visual Studio Code:
    [
      { "to_org_id": "Org1MSP", "to_user_id": "user1", "quantity": 10 },
      { "to_org_id": "Org1MSP", "to_user_id": "user2", "quantity": 10 }
    ]
    
    CLI/Postman:
    "[{ \"to_org_id\": \"Org1MSP\", \"to_user_id\": \"user1\", \"quantity\": 10 }, { \"to_org_id\": \"Org1MSP\", \"to_user_id\": \"user2\", \"quantity\": 10 }]"
Rückgabewert:
  • Eine Meldung, die den Erfolg angibt.
Beispiel für Rückgabewert:
{
    "from_account_id": "oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f",
    "msg": "Successfully transferred 2 tokens from Account Id oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f (Org-Id: Org1MSP, User-Id: user1)",
    "sub_transactions": [
        {
            "amount": 1,
            "to_account_id": "oaccount~digicur~38848e87296d67c8a90918f78cf55f9c9baab2cdc8c928535471aaa1210c706e"
        },
        {
            "amount": 1,
            "to_account_id": "oaccount~digicur~682bb71de419602af74e3f226345ae308445ca51010737900c1d85f0376152df"
        }
    ]
}

Methoden für Token Behavior Management - Holdable Behavior

HoldTokens
Mit dieser Methode wird eine Sperre im Namen des Eigentümers der Token mit dem Konto to_account_id erstellt. Es wird ein Notarkonto angegeben, das die Sperre entweder abschließen oder freigeben muss. Wenn die Sperre erstellt wird, wird der angegebene Tokensaldo des Zahlers gesperrt. Ein gesperrter Saldo kann erst übertragen werden, wenn die Sperre abgeschlossen oder freigegeben wurde. Für den Aufrufer dieser Methode muss bereits ein Konto erstellt sein. Diese Methode kann nur von der AccountOwner des Accounts aufgerufen werden.
func (t *Controller) HoldTokens(token_id string, operation_id string, to_org_id string, to_user_id string, notary_org_id string, notary_user_id string, quantity float64, TimeToExpiration string) (interface{}, error) {
      tokenAssetValue, err := t.getTokenObject(token_id)
      if err != nil {
            return nil, err
      }
      notary_account_id, err := t.Ctx.Account.GenerateAccountId(token_id, notary_org_id, notary_user_id)
      if err != nil {
            return nil, fmt.Errorf("error in getting notary account id from org_id: %s and user_id: %s with token_id: %s, error %s ", notary_org_id, notary_user_id, token_id, err.Error())
      }
      to_account_id, err := t.Ctx.Account.GenerateAccountId(token_id, to_org_id, to_user_id)
      if err != nil {
            return nil, fmt.Errorf("error in getting to_account id from org_id: %s and user_id: %s with token_id: %s, error %s ", to_org_id, to_user_id, token_id, err.Error())
      }
      return t.Ctx.Token.Hold(operation_id, to_account_id, notary_account_id, quantity, TimeToExpiration, tokenAssetValue.Interface())
}
Parameter:
  • token_id string: Die ID des Tokens.
  • operation_id string: Eine eindeutige ID zur Identifizierung des Sperrvorgangs. Normalerweise wird diese ID von der Clientanwendung übergeben.
  • to_org_id string: Die MSP-ID (Member Service Provider) des Empfängers in der aktuellen Organisation.
  • to_user_id string: Der Benutzername oder die E-Mail-ID des Empfängers.
  • notary_org_id string: Die Mitgliedsdienstanbieter-ID (MSP) des Notars in der aktuellen Organisation.
  • notary_user_id string: Der Benutzername oder die E-Mail-ID des Notars.
  • quantity float64: Die Anzahl der zurückzustellenden Token.
  • time_to_expiration: Der Zeitpunkt, zu dem die Sperre abläuft. Geben Sie 0 für eine permanente Sperre an. Verwenden Sie andernfalls das RFC-3339-Format. Beispiel: 2021-06-02T12:46:06Z.
Rückgabewert:
  • Bei Erfolg eine Nachricht mit dem Konto des Anrufers und den Sperrdetails.
Beispiel für Rückgabewert:
{"msg":"AccountId oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f (org_id : Org1MSP, user_id : user1) is successfully holding 2 tokens"}
ExecuteHoldTokens
Mit dieser Methode wird eine Sperre für ein Token abgeschlossen. Eine Menge von Token, die zuvor von einem Token-Eigentümer gehalten wurden, wird an einen Empfänger übertragen. Wenn der Wert quantity kleiner als der tatsächliche Zurückstellungswert ist, ist der verbleibende Betrag wieder für den ursprünglichen Eigentümer der Token verfügbar. Diese Methode kann nur von der AccountOwner-ID mit der Rolle notary aufgerufen werden. Die Sperre kann nur vom Notar abgeschlossen werden.
func (t *Controller) ExecuteHoldTokens(token_id string, operation_id string, quantity float64) (interface{} error) {
    tokenAssetValue, err := t.getTokenObject(token_id)
    if err != nil {
        return nil, err
    }
    return t.Ctx.Token.ExecuteHold(operation_id, quantity, tokenAssetValue.Interface())
}
Parameter:
  • token_id string: Die ID des Tokens.
  • operation_id string: Eine eindeutige ID zur Identifizierung des Sperrvorgangs. Normalerweise wird diese ID von der Clientanwendung übergeben.
  • quantity float64: Die Anzahl der zurückgestellten Token, die übertragen werden sollen.
Rückgabewert:
  • Bei Erfolg eine Nachricht mit der Konto-ID des Anrufers und der Menge der Transaktion.
Beispiel für Rückgabewert:
{"msg":"Account Id oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f (org_id : Org1MSP, user_id : user1) has successfully executed '1' tokens(digiCurr101) from the hold with Operation Id 'op1'"}
ReleaseHoldTokens
Diese Methode gibt eine Sperre für Token frei. Die Übertragung ist nicht abgeschlossen, und alle zurückgestellten Token stehen dem ursprünglichen Eigentümer erneut zur Verfügung. Diese Methode kann durch die Account Owner-ID mit der Rolle notary innerhalb der angegebenen Frist oder durch den Zahler, Zahlungsempfänger oder Notar nach der angegebenen Frist aufgerufen werden.
func (t *Controller) ReleaseHoldTokens(token_id string, operation_id string) (interface{} error) {
    tokenAssetValue, err := t.getTokenObject(token_id)
    if err != nil {
        return nil, err
    }
    return t.Ctx.Token.ReleaseHold(operation_id, tokenAssetValue.Interface())
}
Parameter:
  • token_id string: Die ID des Tokens.
  • operation_id string: Eine eindeutige ID zur Identifizierung des Sperrvorgangs. Normalerweise wird diese ID von der Clientanwendung übergeben.
Rückgabewert:
  • Bei Erfolg wird eine Meldung angezeigt, dass die Sperre freigegeben wurde.
Beispiel für Rückgabewert:
{"msg":"Successfully released '3' tokens from Operation Id 'op2' to Account Id oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f (org_id : Org1MSP, user_id : user1)"}
GetOnHoldIds
Diese Methode gibt eine Liste aller Halte-IDs für ein angegebenes Konto zurück. Diese Methode kann durch die Token Admin des Chaincodes, eine Org Admin der angegebenen Organisation oder die Account Owner des Accounts aufgerufen werden.
func (t *Controller) GetOnHoldIds(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, err
      }
      auth, err := t.Ctx.Auth.CheckAuthorization("Account.GetOnHoldIds", "TOKEN", map[string]string{"account_id": account_id})
      if err != nil && !auth {
            return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
      }
      return t.Ctx.Account.GetOnHoldIDs(account_id)
}
Parameter:
  • token_id string: Die ID des Tokens.
  • org_id string: Die Mitgliedsdienstanbieter-(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-Liste mit IDs. Eine Halte-ID ist eine Verkettung aus dem Assettyp ohold, dem Namen des Tokens, der Token-ID und der Vorgangs-ID.
Beispiel für Rückgabewert:
{"holding_ids":["ohold~loyaltok123~t1~op1"],"msg":"Holding Ids are: [ohold~loyaltok123~t1~op1]"}
GetOnHoldDetailsWithOperationId
Diese Methode gibt die Details der zurückgestellten Transaktion für eine angegebene Vorgangs-ID und ein bestimmtes Token zurück. Diese Methode kann von jedem aufgerufen werden.
func (t *Controller) GetOnHoldDetailsWithOperationId(token_id string, operation_id string) (interface{} error) {
    return t.Ctx.Hold.GetOnHoldDetailsWithOperationId(token_id, operation_id)
}
Parameter:
  • token_id string: Die ID des Tokens.
  • operation_id string: Eine eindeutige ID zur Identifizierung des Sperrvorgangs. Normalerweise wird diese ID von der Clientanwendung übergeben.
Rückgabewert:
  • Bei Erfolg ein JSON-Hold-Objekt, das die folgenden Eigenschaften enthält:
  • HoldingId: Die Holding-ID der Transaktion.
  • OperationId: Eine eindeutige ID zur Identifizierung des Sperrvorgangs. Normalerweise wird diese ID von der Clientanwendung übergeben.
  • FromAccountId: Die Konto-ID des aktuellen Eigentümers der zurückgestellten Token.
  • ToAccountId: Die Konto-ID des Empfängers.
  • NotaryAccountId: Die Konto-ID des Notars.
  • TokenId: Die ID des gespeicherten Tokens.
  • Quantity: Die Anzahl der zurückgestellten Token für die Halte-ID.
  • TimeToExpiration: Die Dauer bis zum Ablauf der Sperre.
Beispiel für Rückgabewert:
{
    "AssetType": "ohold",
    "HoldingId": "ohold~digicur~digiCurr101~op1",
    "OperationId": "op1",
    "TokenName": "digicur",
    "FromAccountId": "oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f",
    "ToAccountId": "oaccount~digicur~38848e87296d67c8a90918f78cf55f9c9baab2cdc8c928535471aaa1210c706e",
    "NotaryAccountId": "oaccount~digicur~682bb71de419602af74e3f226345ae308445ca51010737900c1d85f0376152df",
    "TokenId": "digiCurr101",
    "Quantity": 2,
    "TimeToExpiration": "0"
}
GetOnHoldBalanceWithOperationId
Diese Methode gibt den Saldo für eine bestimmte Vorgangs-ID und ein bestimmtes Token zurück. Diese Methode kann von jedem aufgerufen werden.
func (t *Controller) GetOnHoldBalanceWithOperationId(token_id string, operation_id string) (interface{} error) {
    return t.Ctx.Hold.GetOnHoldBalanceWithOperationId(token_id, operation_id)
}
Parameter:
  • token_id string: Die ID des Tokens.
  • operation_id string: Eine eindeutige ID zur Identifizierung des Sperrvorgangs. Normalerweise wird diese ID von der Clientanwendung übergeben.
Rückgabewert:
  • Bei Erfolg eine JSON-Zeichenfolge, die den Haltebalance angibt.
Beispiel für Rückgabewert:
{
	"holding_balance": 10,
	"msg": "Current Holding Balance of OperationId opr_121 for token digiCurr101 is : 10"
}
HoldTokens
Mit dieser Methode wird eine Sperre im Namen des Eigentümers der Token mit dem Konto to_account_id erstellt.
func (t *Controller) HoldTokens(token_id string, operation_id string, to_org_id string, to_user_id string, notary_org_id string, notary_user_id string, quantity float64, timeToExpiration string, info_details ...token.InfoDetails) (interface{}, error) {
tokenAssetValue, err := t.getTokenObject(token_id)
if err != nil {
return nil, err
}
notary_account_id, err := t.Ctx.Account.GenerateAccountId(token_id, notary_org_id, notary_user_id)
if err != nil {
return nil, fmt.Errorf("error in getting notary account id from org_id: %s and user_id: %s with token_id: %s, error %s ", notary_org_id, notary_user_id, token_id, err.Error())
}
to_account_id, err := t.Ctx.Account.GenerateAccountId(token_id, to_org_id, to_user_id)
if err != nil {
return nil, fmt.Errorf("error in getting to_account id from org_id: %s and user_id: %s with token_id: %s, error %s ", to_org_id, to_user_id, token_id, err.Error())
 }
return t.Ctx.Token.Hold(operation_id, to_account_id, notary_account_id, quantity, timeToExpiration, tokenAssetValue.Interface(), constants.HoldTransfer, info_details...)
}
Parameter:
  • token_id: string: Die ID des Tokens.
  • operation_id: string: Eine eindeutige ID zur Identifizierung des Sperrvorgangs. Normalerweise wird diese ID von der Clientanwendung übergeben.
  • to_org_id: string: Die MSP-ID (Member Service Provider) des Empfängers in der aktuellen Organisation.
  • to_user_id: string: Der Benutzername oder die E-Mail-ID des Empfängers.
  • notary_org_id: string: Die Mitgliedsdienstanbieter-ID (MSP) des Notars in der aktuellen Organisation.
  • notary_user_id: string: Der Benutzername oder die E-Mail-ID des Notars.
  • quantity: number: Die Anzahl der zurückzustellenden Token.
  • time_to_expiration: Der Zeitpunkt, zu dem die Sperre abläuft. Geben Sie 0 für eine permanente Sperre an. Verwenden Sie andernfalls das RFC-3339-Format. Beispiel: 2021-06-02T12:46:06Z.
  • info_details: JSON: Ein Objekt, das die Kategorie (category) und die Beschreibung (description) der Anforderung angibt.

    Sie geben den Parameter info_details in einem anderen Format an, wenn Sie Visual Studio Code im Vergleich zur CLI oder Postman-Collection verwenden.

    Visual Studio-Code: { "category": "category value", "description": "description value" }

    CLI/Postman: "{\"category\":\"category value\",\"description\":\"description value\"}"

Beispiel für Rückgabewert:
{
msg:
"AccountId oaccount~95be539b4e1e4136dd86a806020c97a930909325340481b8fd88d339874fa699 (Org-Id: Org1MSP, User-Id: admin) is successfully holding 100 tokens",
}
ExecuteHoldTokens
Mit dieser Methode wird eine Sperre für ein Token abgeschlossen. Eine Menge von Token, die zuvor von einem Token-Eigentümer gehalten wurden, wird an einen Empfänger übertragen. Wenn der Wert quantity kleiner als der tatsächliche Zurückstellungswert ist, ist der verbleibende Betrag wieder für den ursprünglichen Eigentümer der Token verfügbar. Diese Methode kann nur von der AccountOwner-ID mit der Rolle notary aufgerufen werden. Die Sperre kann nur vom Notar abgeschlossen werden.
func (t *Controller) ExecuteHoldTokens(token_id string, operation_id string, quantity float64) (interface{} error) {
    tokenAssetValue, err := t.getTokenObject(token_id)
    if err != nil {
        return nil, err
    }
    return t.Ctx.Token.ExecuteHold(operation_id, quantity, tokenAssetValue.Interface())
}
Parameter:
  • token_id string: Die ID des Tokens.
  • operation_id string: Eine eindeutige ID zur Identifizierung des Sperrvorgangs. Normalerweise wird diese ID von der Clientanwendung übergeben.
  • quantity float64: Die Anzahl der zurückgestellten Token, die übertragen werden sollen.
Rückgabewert:
  • Bei Erfolg eine Nachricht mit der Konto-ID des Anrufers und der Menge der Transaktion.
Beispiel für Rückgabewert:
{"msg":"Account Id oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f (org_id : Org1MSP, user_id : user1) has successfully executed '1' tokens(digiCurr101) from the hold with Operation Id 'op1'"}
ReleaseHoldTokens
Diese Methode gibt eine Sperre für Token frei. Die Übertragung ist nicht abgeschlossen, und alle zurückgestellten Token stehen dem ursprünglichen Eigentümer erneut zur Verfügung. Diese Methode kann durch die Account Owner-ID mit der Rolle notary innerhalb der angegebenen Frist oder durch den Zahler, Zahlungsempfänger oder Notar nach der angegebenen Frist aufgerufen werden.
func (t *Controller) ReleaseHoldTokens(token_id string, operation_id string) (interface{} error) {
    tokenAssetValue, err := t.getTokenObject(token_id)
    if err != nil {
        return nil, err
    }
    return t.Ctx.Token.ReleaseHold(operation_id, tokenAssetValue.Interface())
}
Parameter:
  • token_id string: Die ID des Tokens.
  • operation_id string: Eine eindeutige ID zur Identifizierung des Sperrvorgangs. Normalerweise wird diese ID von der Clientanwendung übergeben.
Rückgabewert:
  • Bei Erfolg wird eine Meldung angezeigt, dass die Sperre freigegeben wurde.
Beispiel für Rückgabewert:
{"msg":"Successfully released '3' tokens from Operation Id 'op2' to Account Id oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f (org_id : Org1MSP, user_id : user1)"}
GetOnHoldIds
Diese Methode gibt eine Liste aller Halte-IDs für ein angegebenes Konto zurück. Diese Methode kann von Token Admin oder Token Auditor, einer Org Admin oder Org Auditor der angegebenen Organisation oder dem angegebenen Accounteigentümer aufgerufen werden.
func (t *Controller) GetOnHoldIds(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, err
      }
      auth, err := t.Ctx.Auth.CheckAuthorization("Account.GetOnHoldIds", "TOKEN", map[string]string{"account_id": account_id})
      if err != nil && !auth {
            return nil, fmt.Errorf("error in authorizing the caller %s", err.Error())
      }
      return t.Ctx.Account.GetOnHoldIDs(account_id)
}
Parameter:
  • token_id string: Die ID des Tokens.
  • org_id string: Die Mitgliedsdienstanbieter-(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-Liste mit IDs. Eine Halte-ID ist eine Verkettung aus dem Assettyp ohold, dem Namen des Tokens, der Token-ID und der Vorgangs-ID.
Beispiel für Rückgabewert:
{"holding_ids":["ohold~loyaltok123~t1~op1"],"msg":"Holding Ids are: [ohold~loyaltok123~t1~op1]"}
GetOnHoldDetailsWithOperationId
Diese Methode gibt die Details der zurückgestellten Transaktion für eine angegebene Vorgangs-ID und ein bestimmtes Token zurück. Diese Methode kann nur vom Token Admin, Token Auditor oder Transaktionsteilnehmer (Absender, Empfänger, Notar) aufgerufen werden.
func (t *Controller) GetOnHoldDetailsWithOperationId(token_id string, operation_id string) (interface{} error) {
    return t.Ctx.Hold.GetOnHoldDetailsWithOperationId(token_id, operation_id)
}
Parameter:
  • token_id string: Die ID des Tokens.
  • operation_id string: Eine eindeutige ID zur Identifizierung des Sperrvorgangs. Normalerweise wird diese ID von der Clientanwendung übergeben.
Rückgabewert:
  • Bei Erfolg ein JSON-Hold-Objekt, das die folgenden Eigenschaften enthält:
  • HoldingId: Die Holding-ID der Transaktion.
  • OperationId: Eine eindeutige ID zur Identifizierung des Sperrvorgangs. Normalerweise wird diese ID von der Clientanwendung übergeben.
  • FromAccountId: Die Konto-ID des aktuellen Eigentümers der zurückgestellten Token.
  • ToAccountId: Die Konto-ID des Empfängers.
  • NotaryAccountId: Die Konto-ID des Notars.
  • TokenId: Die ID des gespeicherten Tokens.
  • Quantity: Die Anzahl der zurückgestellten Token für die Halte-ID.
  • TimeToExpiration: Die Dauer bis zum Ablauf der Sperre.
Beispiel für Rückgabewert:
{
    "AssetType": "ohold",
    "HoldingId": "ohold~digicur~digiCurr101~op1",
    "OperationId": "op1",
    "TokenName": "digicur",
    "FromAccountId": "oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f",
    "ToAccountId": "oaccount~digicur~38848e87296d67c8a90918f78cf55f9c9baab2cdc8c928535471aaa1210c706e",
    "NotaryAccountId": "oaccount~digicur~682bb71de419602af74e3f226345ae308445ca51010737900c1d85f0376152df",
    "TokenId": "digiCurr101",
    "Quantity": 2,
    "TimeToExpiration": "0"
}
GetOnHoldBalanceWithOperationId
Diese Methode gibt den Saldo für eine bestimmte Vorgangs-ID und ein bestimmtes Token zurück. Diese Methode kann nur vom Token Admin, Token Auditor oder Transaktionsteilnehmer (Absender, Empfänger, Notar) aufgerufen werden.
func (t *Controller) GetOnHoldBalanceWithOperationId(token_id string, operation_id string) (interface{} error) {
    return t.Ctx.Hold.GetOnHoldBalanceWithOperationId(token_id, operation_id)
}
Parameter:
  • token_id string: Die ID des Tokens.
  • operation_id string: Eine eindeutige ID zur Identifizierung des Sperrvorgangs. Normalerweise wird diese ID von der Clientanwendung übergeben.
Rückgabewert:
  • Bei Erfolg eine JSON-Zeichenfolge, die den Haltebalance angibt.
Beispiel für Rückgabewert:
{
	"holding_balance": 10,
	"msg": "Current Holding Balance of OperationId opr_121 for token digiCurr101 is : 10"
}

Methoden für Token Behavior Management - Burnable Behavior

BurnTokens
Mit dieser Methode werden Token aus dem Konto des Transaktionsaufrufers deaktiviert oder verbrannt. Der Aufrufer dieser Methode muss einen Account und die Burner-Rolle aufweisen. Die Menge muss innerhalb der Dezimalwerte liegen, die durch den Parameter decimal des Verhaltens divisible in der Spezifikationsdatei angegeben werden. Diese Methode kann von der Account Owner des Accounts mit der Burner-Rolle aufgerufen werden.
func (t *Controller) BurnTokens(token_id string, quantity float64) (interface{} error) {
    tokenAssetValue, err := t.getTokenObject(token_id)
    if err != nil {
        return nil, err
    }
    return t.Ctx.Token.Burn(quantity, tokenAssetValue.Interface())
}
Parameter:
  • token_id string: Die ID des Tokens.
  • quantity float64: Die Anzahl der zu brennenden Token.
Rückgabewert:
  • Bei Erfolg eine Erfolgsmeldung mit der Anzahl der verbrannten Token und der Konto-ID.
Beispiel für Rückgabewert:
{"msg":"Successfully burned 1 tokens from account id: oaccount~digicur~38848e87296d67c8a90918f78cf55f9c9baab2cdc8c928535471aaa1210c706e (org_id : Org1MSP, user_id : user2)"}
RequestBurn
Diese Methode kann von einem Brenner aufgerufen werden, um eine Anforderung an den Brennernotar zu senden, um eine bestimmte Anzahl von Token zu zerstören, die kleiner oder gleich dem verfügbaren Saldo sein müssen. Wenn eine Burn-Anforderung beginnt, wird der angegebene Betrag sofort vom verfügbaren Saldo abgezogen und dem Feld onhold_burn_balance hinzugefügt. Wenn der Antrag genehmigt wird, werden die Token verbrannt. Wenn die Anforderung abgelehnt wird, werden die Token aus dem Feld onhold_burn_balance an den verfügbaren Saldo zurückgegeben.
func (t *Controller) RequestBurn(token_id string, operation_id string, notary_org_id string, notary_user_id string, quantity float64, timeToExpiration string, info_details ...token.InfoDetails) (interface{}, error) {
tokenAssetValue, err := t.getTokenObject(token_id)
if err != nil {
return nil, err
}
notary_account_id, err := t.Ctx.Account.GenerateAccountId(token_id, notary_org_id, notary_user_id)
if err != nil {
return nil, fmt.Errorf("error in getting notary account id from org_id: %s and user_id: %s with token_id: %s, error %s ", notary_org_id, notary_user_id, token_id, err.Error())
 }
return t.Ctx.Token.Hold(operation_id, "", notary_account_id, quantity, timeToExpiration, tokenAssetValue.Interface(), constants.HoldBurn, info_details...)
}
Parameter:
  • token_id: string: Die ID des zu brennenden Tokens.
  • operation_id: string: Die eindeutige Vorgangs-ID, die für die Burn-Anforderung steht.
  • notary_org_id: string: Die Mitgliedsdienstanbieter-(MSP-)ID des Brennernotars, der die Anfrage verarbeitet.
  • notary_user_id: string: Der Benutzername oder die E-Mail-ID des Notars, der die Anforderung verarbeitet.
  • quantity: number - Die Anzahl der zu brennenden Token.
  • time_to_expiration: Die Zeit, nach der die Brennen-Anforderung abläuft und nicht mehr gültig ist.
  • info_details: JSON: Ein Objekt, das die Kategorie (category) und die Beschreibung (description) der Anforderung angibt.

    Sie geben den Parameter info_details in einem anderen Format an, wenn Sie Visual Studio Code im Vergleich zur CLI oder Postman-Collection verwenden.

    Visual Studio-Code: { "category": "category value", "description": "description value" }

    CLI/Postman: "{\"category\":\"category value\",\"description\":\"description value\"}"

Beispiel für Rückgabewert:
{
msg:
"AccountId oaccount~95be539b4e1e4136dd86a806020c97a930909325340481b8fd88d339874fa699 (org_id: Org1MSP, user_id: admin) has successfully submitted request to mint 100 tokens",
}
ApproveBurn
Diese Methode kann von einem Brennernotar aufgerufen werden, um eine Brennanforderung zu genehmigen.
func (t *Controller) ApproveBurn(token_id string, operation_id string) (interface{}, error) {
tokenAssetValue, err := t.getTokenObject(token_id)
if err != nil {
return nil, err
}
return t.Ctx.Token.ExecuteHold(operation_id, tokenAssetValue.Interface())
}
Parameter:
  • token_id: string: Die ID des zu brennenden Tokens.
  • operation_id: string: Die eindeutige Vorgangs-ID, die für die Burn-Anforderung steht.
Beispiel für Rückgabewert:
{
msg:
"Successfully burned 100 tokens from account id: oaccount~95be539b4e1e4136dd86a806020c97a930909325340481b8fd88d339874fa699 (org_id: Org1MSP, user_id: admin)"
}
RejectBurn
Diese Methode kann von einem Brennernotar aufgerufen werden, um eine Brennanforderung abzulehnen.
func (t *Controller) RejectBurn(token_id string, operation_id string) (interface{}, error) {
tokenAssetValue, err := t.getTokenObject(token_id)
if err != nil {
return nil, err
}
return t.Ctx.Token.ReleaseHold(operation_id, tokenAssetValue.Interface())
}
Parameter:
  • token_id: string: Die ID des zu brennenden Tokens.
  • operation_id: string: Die eindeutige Vorgangs-ID, die für die Burn-Anforderung steht.
Beispiel für Rückgabewert:
{
 msg: "Successfully rejected burn request with Operation Id 'operation1' to burn 100 tokens of token id token",
}
GetAccountOnHoldBurnBalance
Diese Methode gibt den gesperrten Burn-Balance für einen angegebenen Benutzer zurück. Diese Methode kann nur von Token Admin, Token Auditor, Org Admin, Org Auditor oder vom Accounteigentümer aufgerufen werden.
func (t *Controller) GetAccountOnHoldBurnBalance(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, err
    }
    auth, err := t.Ctx.Auth.CheckAuthorization("Account.GetAccountOnHoldBurnBalance", "TOKEN", map[string]string{"account_id": account_id})
    if err != nil && !auth {
        return nil, fmt.Errorf("error in authorizing the caller  %s", err.Error())
    }
    response, err := t.Ctx.Account.GetAccountOnHoldBurnBalance(account_id)
    return response, err
}
Parameter:
  • token_id: string: Die ID des zu brennenden Tokens.
  • org_id string: Die Mitgliedsdienstanbieter-(MSP-)ID des Benutzers in der aktuellen Organisation.
  • user_id string: Der Benutzername oder die E-Mail-ID des Benutzers.
Beispiel für Rückgabewert:
{
  "msg": "Total On Hold Burning Balance is: 10",
  "onhold_burn_balance": 10
}
BurnTokens
Mit dieser Methode werden Token aus dem Konto des Transaktionsaufrufers deaktiviert oder verbrannt.
func (t *Controller) BurnTokens(token_id string, quantity float64, info_details ...token.InfoDetails) (interface{}, error) {
tokenAssetValue, err := t.getTokenObject(token_id)
if err != nil {
return nil, err
 }
return t.Ctx.Token.Burn(quantity, tokenAssetValue.Interface(), info_details...)
}
Parameter:
  • token_id: string: Die ID des Tokens.
  • quantity: Die Anzahl der zu brennenden Token.
  • info_details: JSON: Ein Objekt, das die Kategorie (category) und die Beschreibung (description) der Anforderung angibt.

    Sie geben den Parameter info_details in einem anderen Format an, wenn Sie Visual Studio Code im Vergleich zur CLI oder Postman-Collection verwenden.

    Visual Studio-Code: { "category": "category value", "description": "description value" }

    CLI/Postman: "{\"category\":\"category value\",\"description\":\"description value\"}"

Beispiel für Rückgabewert:
{
msg:
"Successfully burned 100 tokens from account id: oaccount~95be539b4e1e4136dd86a806020c97a930909325340481b8fd88d339874fa699 (Org-Id: Org1MSP, User-Id: admin)"
}

Benutzerdefinierte Methoden

Mit den Token-SDK-Methoden können Sie benutzerdefinierte Methoden für Ihre Geschäftsanwendung schreiben.

Verfolgen Sie den Rückgabewert, wenn Sie die Token-SDK-Methoden verwenden. Um doppelte Ausgaben zu vermeiden, sollten Sie auch nicht mehrere asynchrone Funktionen kombinieren, die mit denselben Schlüssel/Wert-Paaren in der Statusdatenbank arbeiten. Verwenden Sie stattdessen die Methode BulkTransferTokens, um mehrere Übertragungen in einer Methode vorzunehmen.

Im folgenden Beispiel wird gezeigt, wie Sie Token-SDK-Methoden in benutzerdefinierten Methoden verwenden. Wenn die Methode BuyTicket aufgerufen wird, überträgt sie 20 Token vom Konto des Anrufers auf das Konto des Verkäufers und gibt die Transaktionsnachricht der Übertragung zurück.

func (t *Controller) BuyTicket(TokenId string, SellerOrgId string, SellerUserId string) (interface{}, error){
	token, err := t.Ctx.Token.Get(TokenId)
	if err != nil {
		return nil, err
	}
	
	/**
	* The following method t.Ctx.Account.GenerateAccountId(TokenId, SellerOrgId, SellerUserId) generates account id of the seller
	*/
	sellerAccountId, err := t.Ctx.Account.GenerateAccountId(TokenId, SellerOrgId, SellerUserId)
    if err != nil {
		return nil, err
	}   

	/**
	* The following method t.Ctx.Token.Transfer(sellerAccountId, 20, token) transfers the quantity 20 from caller's
	* account & to seller's account.
	*/
    transaction, err := t.Ctx.Token.Transfer(sellerAccountId, 20, token)
    if err != nil {
		return nil, err
	}
    return transaction, nil
}

Token-SDK-Methoden

Methoden für die Zugriffskontrollverwaltung

Das Token-SDK bietet eine Zugriffskontrollfunktion. Einige Methoden können nur mit einer Token Admin, Org Admin oder AccountOwner des Tokens aufgerufen werden. Mit dieser Funktion können Sie sicherstellen, dass Vorgänge nur von den beabsichtigten Benutzern ausgeführt werden. Unbefugter Zugriff führt zu einem Fehler. Um die Zugriffskontrollfunktion zu verwenden, importieren Sie die Klasse Authorization aus dem Modul ../lib/auth.
import { Authorization } from '../lib/auth';
AddAdmin
Diese Methode fügt einen Benutzer als Token Admin des Token-Chaincodes hinzu.
Ctx.AddAdmin(org_id string, user_id string) (interface{}, error)
Parameter:
  • user_id: Der Benutzername oder die E-Mail-ID des Benutzers.
  • org_id: Die Mitgliedsdienstanbieter-(MSP-)ID des Benutzers in der aktuellen Netzwerkorganisation.
Rückgabewert:
  • Bei Erfolg eine Erfolgsmeldung und Details für den hinzugefügten Token Admin-Benutzer. Bei Fehler ein Nicht-Nil-Fehlerobjekt mit einer Fehlermeldung.
Beispiel für Rückgabewert:
{"msg":"Successfully added Admin (Org_Id: Org1MSP, User_Id: user2)"}
RemoveAdmin
Mit dieser Methode wird ein Benutzer als Token Admin des Token-Chaincodes entfernt.
Ctx.RemoveAdmin(org_id string, user_id string) (interface{}, error)
Parameter:
  • user_id: Der Benutzername oder die E-Mail-ID des Benutzers.
  • org_id: Die Mitgliedsdienstanbieter-(MSP-)ID des Benutzers in der aktuellen Netzwerkorganisation.
Rückgabewert:
  • Bei Erfolg eine Erfolgsmeldung und Details für den entfernten Token Admin-Benutzer. Bei Fehler ein Nicht-Nil-Fehlerobjekt mit einer Fehlermeldung.
Beispiel für Rückgabewert:
{"msg":"Successfuly removed Admin (Org_Id Org1MSP User_Id user1)"}
IsUserTokenAdmin
Diese Methode gibt den booleschen Wert true zurück, wenn der Aufrufer der Funktion ein Token Admin ist. Andernfalls gibt die Methode false zurück.
Ctx.Auth.IsUserTokenAdmin()  (bool, error)
Parameter:
  • user_id: Der Benutzername oder die E-Mail-ID des Benutzers.
  • org_id: Die Mitgliedsdienstanbieter-(MSP-)ID des Benutzers in der aktuellen Netzwerkorganisation.
Rückgabewert:
  • Eine boolesche Antwort und eine Fehlermeldung, wenn ein Fehler auftritt.
Beispiel für Rückgabewert:
{"result":false}
GetAllAdmins
Diese Methode gibt eine Liste aller Benutzer zurück, die eine Token Admin des Token-Chaincodes sind.
Ctx.GetAllAdmins() (interface{}, error)
Parameter:
  • Kein
Rückgabewert:
  • Bei Erfolg eine Liste aller Benutzer, die eine Token Admin des Token-Chaincodes sind. Bei Fehler ein Nicht-Nil-Fehlerobjekt mit einer Fehlermeldung.
Beispiel für Rückgabewert:
[{"OrgId":"Org1MSP","UserId":"admin"},{"OrgId":"Org1MSP","UserId":"user1"}]
GetAllAdminUsers
Diese Methode gibt eine Liste aller Benutzer zurück, die eine Token Admin des Token-Chaincodes sind.
Ctx.Admin.GetAllAdminUsers() (interface{}, error) 
Parameter:
  • Kein
Rückgabewert:
  • Bei Erfolg eine Liste aller Benutzer, die eine Token Admin des Token-Chaincodes im Formular map[string]interface{} sind. Bei Fehler ein Nicht-Nil-Fehlerobjekt mit einer Fehlermeldung.
Beispiel für Rückgabewert:
{"admins":[{"OrgId":"Org1MSP","UserId":"admin"},{"OrgId":"Org1MSP","UserId":"user1"}]}
CheckAuthorization
Verwenden Sie diese Methode, um Ihrem Chaincode eine Zugriffskontrolle hinzuzufügen. Viele der automatisch generierten Token-Methoden verwenden die Zugriffskontrolle. Die Zuordnung zwischen dem SDK-Empfänger und den Methoden mit Zugriffskontrolle wird in der Datei oChainUtil.go beschrieben. Um Ihre eigene Zugriffskontrolle zu verwenden oder die Zugriffskontrolle zu deaktivieren, entfernen Sie den Zugriffskontrollcode aus den automatisch generierten Controller-Methoden und benutzerdefinierten Methoden.
var t TokenAccess
      var r RoleAccess
      var a AccountAccess
      var as AccountStatusAccess
      var h HoldAccess
      var ad AdminAccess
      var trx TransactionAccess
      var tc TokenConversionAccess
      var auth AuthAccess

      auth.IsTokenAdmin = []string{"Admin", "MultipleAccountOwner"}

      trx.DeleteHistoricalTransactions = []string{"Admin"}
      ad.AddAdmin = []string{"Admin"}
      ad.RemoveAdmin = []string{"Admin"}
      ad.GetAllAdmins = []string{"Admin", "OrgAdmin"}
      ad.AddOrgAdmin = []string{"Admin", "OrgAdminOrgIdCheck"}
      ad.RemoveOrgAdmin = []string{"Admin", "OrgAdminOrgIdCheck"}
      ad.GetOrgAdmins = []string{"Admin", "OrgAdmin"}
      ad.IsTokenAdmin = []string{"Admin", "MultipleAccountOwner", "OrgAdmin"}
      t.Save = []string{"Admin"}
      t.GetAllTokens = []string{"Admin", "OrgAdmin"}
      t.Update = []string{"Admin"}
      t.GetTokenDecimals = []string{"Admin", "OrgAdmin"}
      t.GetTokensByName = []string{"Admin", "OrgAdmin"}
      t.AddRoleMember = []string{"Admin", "OrgAdminRoleCheck"}
      t.RemoveRoleMember = []string{"Admin", "OrgAdminRoleCheck"}
      t.IsInRole = []string{"Admin", "OrgAdminAccountIdCheck", "AccountOwner"}
      t.GetTotalMintedTokens = []string{"Admin", "OrgAdmin"}
      t.GetNetTokens = []string{"Admin", "OrgAdmin"}
      t.Get = []string{"Admin", "OrgAdmin"}
      t.GetTokenHistory = []string{"Admin", "OrgAdmin"}
      a.CreateAccount = []string{"Admin", "OrgAdminOrgIdCheck"}
      a.AssociateToken = []string{"Admin", "OrgAdminAccountIdCheck"}
      a.GetAllAccounts = []string{"Admin"}
      a.GetAllOrgAccounts = []string{"Admin", "OrgAdminOrgIdCheck"}
      a.GetAccount = []string{"Admin", "OrgAdminAccountIdCheck", "AccountOwner"}
      a.History = []string{"Admin", "AccountOwner"}
      a.GetAccountTransactionHistory = []string{"Admin", "OrgAdminAccountIdCheck", "AccountOwner"}
      a.GetAccountTransactionHistoryWithFilters = []string{"Admin", "OrgAdminAccountIdCheck", "AccountOwner"}
      a.GetSubTransactionsById = []string{"Admin", "TransactionInvoker"}
      a.GetSubTransactionsByIdWithFilters = []string{"Admin", "TransactionInvoker"}
      a.GetAccountBalance = []string{"Admin", "OrgAdminAccountIdCheck", "AccountOwner"}
      a.GetAccountOnHoldBalance = []string{"Admin", "OrgAdminAccountIdCheck", "AccountOwner"}
      a.GetOnHoldIds = []string{"Admin", "OrgAdminAccountIdCheck", "AccountOwner"}
      a.GetAccountsByUser = []string{"Admin", "OrgAdminOrgIdCheck", "MultipleAccountOwner"}

      as.Get = []string{"Admin", "OrgAdminAccountIdCheck", "AccountOwner"}
      as.ActivateAccount = []string{"Admin", "OrgAdminOrgIdCheck"}
      as.SuspendAccount = []string{"Admin", "OrgAdminOrgIdCheck"}
      as.DeleteAccount = []string{"Admin", "OrgAdminOrgIdCheck"}

      r.GetAccountsByRole = []string{"Admin"}
      r.GetUsersByRole = []string{"Admin"}
      r.GetOrgAccountsByRole = []string{"Admin", "OrgAdminOrgIdCheck"}
      r.GetOrgUsersByRole = []string{"Admin", "OrgAdminOrgIdCheck"}

      tc.InitializeExchangePoolUser = []string{"Admin"}
      tc.AddConversionRate = []string{"Admin"}
      tc.UpdateConversionRate = []string{"Admin"}
      tc.GetConversionRate = []string{"Admin", "OrgAdmin", "AnyAccountOwner"}
      tc.GetConversionRateHistory = []string{"Admin", "OrgAdmin", "AnyAccountOwner"}
      tc.TokenConversion = []string{"Admin", "AnyAccountOwner"}
      tc.GetExchangePoolUser = []string{"Admin"}
Ctx.Auth.CheckAuthorization(classFuncName string, args ...string) (bool, error)
Parameter:
  • classFuncName string: Der Zuordnungswert zwischen den Empfängern und Methoden, wie in der Datei oChainUtil.go beschrieben.
  • args: Ein Variablenargument, wobei args[0] die Konstante TOKEN und args[1] das Argument account_id ist, falls erforderlich.
Rückgabewert:
  • Eine boolesche Antwort und eine Fehlermeldung, wenn ein Fehler auftritt.
AddOrgAdmin
Diese Methode fügt einen Benutzer als Org Admin der Organisation hinzu.
Ctx.Admin.AddOrgAdmin(org_id, user_id) (interface{}, error)
Parameter:
  • org_id string: Die Mitgliedsdienstanbieter-(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 des Benutzers enthält, der als Org Admin der Organisation hinzugefügt wurde.
Beispiel für Rückgabewert:
{
    "msg": "Successfully added Org Admin (Org_Id: Org1MSP, User_Id: orgAdmin)"
}
RemoveOrgAdmin
Mit dieser Methode wird ein Benutzer als Org Admin einer Organisation entfernt.
Ctx.Admin.RemoveOrgAdmin(org_id, user_id) (interface{}, error)
Parameter:
  • org_id string: Die Mitgliedsdienstanbieter-(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 des Benutzers enthält, der als Org Admin der Organisation entfernt wurde.
Beispiel für Rückgabewert:
{
    "msg": "Successfully removed Org Admin (Org_Id Org1MSP User_Id orgAdmin)"
}
GetOrgAdmins
Diese Methode gibt eine Liste aller Benutzer zurück, die eine Org Admin einer Organisation sind.
Ctx.Admin.GetAllOrgAdmins() (interface{}, error)
Parameter:
  • Kein
Rückgabewert:
  • Bei Erfolg eine JSON-Liste, die Objekte OrgId und UserId enthält.
Beispiel für Rückgabewert:
{
    "admins": [
        {
            "OrgId": "Org1MSP",
            "UserId": "orgadmin"
        },
        {
            "OrgId": "Org1MSP",
            "UserId": "orgadmin1"
        },
        {
            "OrgId": "Org1MSP",
            "UserId": "orgadmin2"
        }
    ]
}
AddAdmin
Diese Methode fügt einen Benutzer als Token Admin des Token-Chaincodes hinzu.
Ctx.AddAdmin(org_id string, user_id string) (interface{}, error)
Parameter:
  • user_id: Der Benutzername oder die E-Mail-ID des Benutzers.
  • org_id: Die Mitgliedsdienstanbieter-(MSP-)ID des Benutzers in der aktuellen Netzwerkorganisation.
Rückgabewert:
  • Bei Erfolg eine Erfolgsmeldung und Details für den hinzugefügten Token Admin-Benutzer. Bei Fehler ein Nicht-Nil-Fehlerobjekt mit einer Fehlermeldung.
Beispiel für Rückgabewert:
{"msg":"Successfully added Admin (Org_Id: Org1MSP, User_Id: user2)"}
RemoveAdmin
Mit dieser Methode wird ein Benutzer als Token Admin des Token-Chaincodes entfernt.
Ctx.RemoveAdmin(org_id string, user_id string) (interface{}, error)
Parameter:
  • user_id: Der Benutzername oder die E-Mail-ID des Benutzers.
  • org_id: Die Mitgliedsdienstanbieter-(MSP-)ID des Benutzers in der aktuellen Netzwerkorganisation.
Rückgabewert:
  • Bei Erfolg eine Erfolgsmeldung und Details für den entfernten Token Admin-Benutzer. Bei Fehler ein Nicht-Nil-Fehlerobjekt mit einer Fehlermeldung.
Beispiel für Rückgabewert:
{"msg":"Successfuly removed Admin (Org_Id Org1MSP User_Id user1)"}
IsUserTokenAdmin
Diese Methode gibt den booleschen Wert true zurück, wenn der Aufrufer der Funktion ein Token Admin ist. Andernfalls gibt die Methode false zurück.
Ctx.Auth.IsUserTokenAdmin()  (bool, error)
Parameter:
  • user_id: Der Benutzername oder die E-Mail-ID des Benutzers.
  • org_id: Die Mitgliedsdienstanbieter-(MSP-)ID des Benutzers in der aktuellen Netzwerkorganisation.
Rückgabewert:
  • Eine boolesche Antwort und eine Fehlermeldung, wenn ein Fehler auftritt.
Beispiel für Rückgabewert:
{"result":false}
GetAllAdmins
Diese Methode gibt eine Liste aller Benutzer zurück, die eine Token Admin des Token-Chaincodes sind.
Ctx.GetAllAdmins() (interface{}, error)
Parameter:
  • Kein
Rückgabewert:
  • Bei Erfolg eine Liste aller Benutzer, die eine Token Admin des Token-Chaincodes sind. Bei Fehler ein Nicht-Nil-Fehlerobjekt mit einer Fehlermeldung.
Beispiel für Rückgabewert:
[{"OrgId":"Org1MSP","UserId":"admin"},{"OrgId":"Org1MSP","UserId":"user1"}]
GetAllAdminUsers
Diese Methode gibt eine Liste aller Benutzer zurück, die eine Token Admin des Token-Chaincodes sind.
Ctx.Admin.GetAllAdminUsers() (interface{}, error) 
Parameter:
  • Kein
Rückgabewert:
  • Bei Erfolg eine Liste aller Benutzer, die eine Token Admin des Token-Chaincodes im Formular map[string]interface{} sind. Bei Fehler ein Nicht-Nil-Fehlerobjekt mit einer Fehlermeldung.
Beispiel für Rückgabewert:
{"admins":[{"OrgId":"Org1MSP","UserId":"admin"},{"OrgId":"Org1MSP","UserId":"user1"}]}
CheckAuthorization
Verwenden Sie diese Methode, um Ihrem Chaincode eine Zugriffskontrolle hinzuzufügen. Viele der automatisch generierten Token-Methoden verwenden die Zugriffskontrolle. Die Zuordnung zwischen dem SDK-Empfänger und den Methoden mit Zugriffskontrolle wird in der Datei oChainUtil.go beschrieben. Um Ihre eigene Zugriffskontrolle zu verwenden oder die Zugriffskontrolle zu deaktivieren, entfernen Sie den Zugriffskontrollcode aus den automatisch generierten Controller-Methoden und benutzerdefinierten Methoden.
var t TokenAccess
      var r RoleAccess
      var a AccountAccess
      var as AccountStatusAccess
      var h HoldAccess
      var ad AdminAccess
      var trx TransactionAccess
      var tc TokenConversionAccess
      var auth AuthAccess

      auth.IsTokenAdmin = []string{"Admin", "MultipleAccountOwner"}

      trx.DeleteHistoricalTransactions = []string{"Admin"}
      ad.AddAdmin = []string{"Admin"}
      ad.RemoveAdmin = []string{"Admin"}
      ad.GetAllAdmins = []string{"Admin", "OrgAdmin"}
      ad.AddOrgAdmin = []string{"Admin", "OrgAdminOrgIdCheck"}
      ad.RemoveOrgAdmin = []string{"Admin", "OrgAdminOrgIdCheck"}
      ad.GetOrgAdmins = []string{"Admin", "OrgAdmin"}
      ad.IsTokenAdmin = []string{"Admin", "MultipleAccountOwner", "OrgAdmin"}
      t.Save = []string{"Admin"}
      t.GetAllTokens = []string{"Admin", "OrgAdmin"}
      t.Update = []string{"Admin"}
      t.GetTokenDecimals = []string{"Admin", "OrgAdmin"}
      t.GetTokensByName = []string{"Admin", "OrgAdmin"}
      t.AddRoleMember = []string{"Admin", "OrgAdminRoleCheck"}
      t.RemoveRoleMember = []string{"Admin", "OrgAdminRoleCheck"}
      t.IsInRole = []string{"Admin", "OrgAdminAccountIdCheck", "AccountOwner"}
      t.GetTotalMintedTokens = []string{"Admin", "OrgAdmin"}
      t.GetNetTokens = []string{"Admin", "OrgAdmin"}
      t.Get = []string{"Admin", "OrgAdmin"}
      t.GetTokenHistory = []string{"Admin", "OrgAdmin"}
      a.CreateAccount = []string{"Admin", "OrgAdminOrgIdCheck"}
      a.AssociateToken = []string{"Admin", "OrgAdminAccountIdCheck"}
      a.GetAllAccounts = []string{"Admin"}
      a.GetAllOrgAccounts = []string{"Admin", "OrgAdminOrgIdCheck"}
      a.GetAccount = []string{"Admin", "OrgAdminAccountIdCheck", "AccountOwner"}
      a.History = []string{"Admin", "AccountOwner"}
      a.GetAccountTransactionHistory = []string{"Admin", "OrgAdminAccountIdCheck", "AccountOwner"}
      a.GetAccountTransactionHistoryWithFilters = []string{"Admin", "OrgAdminAccountIdCheck", "AccountOwner"}
      a.GetSubTransactionsById = []string{"Admin", "TransactionInvoker"}
      a.GetSubTransactionsByIdWithFilters = []string{"Admin", "TransactionInvoker"}
      a.GetAccountBalance = []string{"Admin", "OrgAdminAccountIdCheck", "AccountOwner"}
      a.GetAccountOnHoldBalance = []string{"Admin", "OrgAdminAccountIdCheck", "AccountOwner"}
      a.GetOnHoldIds = []string{"Admin", "OrgAdminAccountIdCheck", "AccountOwner"}
      a.GetAccountsByUser = []string{"Admin", "OrgAdminOrgIdCheck", "MultipleAccountOwner"}

      as.Get = []string{"Admin", "OrgAdminAccountIdCheck", "AccountOwner"}
      as.ActivateAccount = []string{"Admin", "OrgAdminOrgIdCheck"}
      as.SuspendAccount = []string{"Admin", "OrgAdminOrgIdCheck"}
      as.DeleteAccount = []string{"Admin", "OrgAdminOrgIdCheck"}

      r.GetAccountsByRole = []string{"Admin"}
      r.GetUsersByRole = []string{"Admin"}
      r.GetOrgAccountsByRole = []string{"Admin", "OrgAdminOrgIdCheck"}
      r.GetOrgUsersByRole = []string{"Admin", "OrgAdminOrgIdCheck"}

      tc.InitializeExchangePoolUser = []string{"Admin"}
      tc.AddConversionRate = []string{"Admin"}
      tc.UpdateConversionRate = []string{"Admin"}
      tc.GetConversionRate = []string{"Admin", "OrgAdmin", "AnyAccountOwner"}
      tc.GetConversionRateHistory = []string{"Admin", "OrgAdmin", "AnyAccountOwner"}
      tc.TokenConversion = []string{"Admin", "AnyAccountOwner"}
      tc.GetExchangePoolUser = []string{"Admin"}
Ctx.Auth.CheckAuthorization(classFuncName string, args ...string) (bool, error)
Parameter:
  • classFuncName string: Der Zuordnungswert zwischen den Empfängern und Methoden, wie in der Datei oChainUtil.go beschrieben.
  • args: Ein Variablenargument, wobei args[0] die Konstante TOKEN und args[1] das Argument account_id ist, falls erforderlich.
Rückgabewert:
  • Eine boolesche Antwort und eine Fehlermeldung, wenn ein Fehler auftritt.
AddOrgAdmin
Diese Methode fügt einen Benutzer als Org Admin der Organisation hinzu.
Ctx.Admin.AddOrgAdmin(org_id, user_id) (interface{}, error)
Parameter:
  • org_id string: Die Mitgliedsdienstanbieter-(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 des Benutzers enthält, der als Org Admin der Organisation hinzugefügt wurde.
Beispiel für Rückgabewert:
{
    "msg": "Successfully added Org Admin (Org_Id: Org1MSP, User_Id: orgAdmin)"
}
RemoveOrgAdmin
Mit dieser Methode wird ein Benutzer als Org Admin einer Organisation entfernt.
Ctx.Admin.RemoveOrgAdmin(org_id, user_id) (interface{}, error)
Parameter:
  • org_id string: Die Mitgliedsdienstanbieter-(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 des Benutzers enthält, der als Org Admin der Organisation entfernt wurde.
Beispiel für Rückgabewert:
{
    "msg": "Successfully removed Org Admin (Org_Id Org1MSP User_Id orgAdmin)"
}
GetOrgAdmins
Diese Methode gibt eine Liste aller Benutzer zurück, die eine Org Admin einer Organisation sind.
Ctx.Admin.GetAllOrgAdmins() (interface{}, error)
Parameter:
  • Kein
Rückgabewert:
  • Bei Erfolg eine JSON-Liste, die Objekte OrgId und UserId enthält.
Beispiel für Rückgabewert:
{
    "admins": [
        {
            "OrgId": "Org1MSP",
            "UserId": "orgadmin"
        },
        {
            "OrgId": "Org1MSP",
            "UserId": "orgadmin1"
        },
        {
            "OrgId": "Org1MSP",
            "UserId": "orgadmin2"
        }
    ]
}
AddTokenAuditor
Diese Methode fügt einen Benutzer als Token Auditor des Chaincodes hinzu.
t.Ctx.Admin.AddTokenAuditor(org_id, user_id)
Parameter:
  • org_id: string: Die Mitgliedsdienstanbieter-(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 des Benutzers enthält, der als Token Auditor des Chaincodes hinzugefügt wurde.
Beispiel für Rückgabewert:
{
    "returnCode": "Success",
    "error": "",
    "result": {
        "txid": "f0888dd52f39dfa669275cc8f35d0b47b37b8407d384493d16970fcbb377f937",
        "payload": {
            "msg": "Successfully added Token Auditor (Org_Id: CB, User_Id: cb)"
        },
        "encode": "JSON",
        "sourceURL": "cb-oabcs1-bom.blockchain.ocp.example.com:20010",
        "blockNumber": 268
    }
}
RemoveTokenAuditor
Mit dieser Methode wird ein Benutzer als Token Auditor des Chaincodes entfernt.
t.Ctx.Admin.RemoveTokenAuditor(org_id, user_id)
Parameter:
  • org_id: string: Die Mitgliedsdienstanbieter-(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 des Benutzers enthält, der als Token Auditor des Chaincodes entfernt wurde.
Beispiel für Rückgabewert:
{
    "returnCode": "Success",
    "error": "",
    "result": {
        "txid": "2f01f48eceaf2dff175f98b96a5bdd22c949f48fc5683ce86d6141cc4892aee3",
        "payload": {
            "msg": "Successfully removed Token Auditor (Org_Id: CB, User_Id: cb)"
        },
        "encode": "JSON",
        "sourceURL": "cb-oabcs1-bom.blockchain.ocp.example.com:20010",
        "blockNumber": 270
    }
}
GetTokenAuditors
Diese Methode gibt alle Token Auditors des Chaincodes zurück.
t.Ctx.Admin.GetAllTokenAuditors()
Beispiel für Rückgabewert:
{
    "returnCode": "Success",
    "error": "",
    "result": {
        "txid": "18eaa81b04d43db64f28287bab1cf6609e2a1d8ff84852ff73849ddb9a9dfba1",
        "payload": {
            "auditors": [
                {
                    "OrgId": "CB",
                    "UserId": "auditor_user_cb"
                }
            ]
        },
        "encode": "JSON",
        "sourceURL": "cb-oabcs1-bom.blockchain.ocp.example.com:20010",
        "blockNumber": 269
    }
}
AddOrgAuditor
Diese Methode fügt einen Benutzer als Org Auditor des Chaincodes hinzu.
t.Ctx.Admin.AddOrgAuditor(org_id, user_id)
Parameter:
  • org_id: string: Die Mitgliedsdienstanbieter-(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 des Benutzers enthält, der als Org Auditor des Chaincodes hinzugefügt wurde.
Beispiel für Rückgabewert:
{
    "returnCode": "Success",
    "error": "",
    "result": {
        "txid": "3d5ec46003c68c6208d43c82894bd6da5c0b763339cc5212e09b71d39d0d80e2",
        "payload": {
            "msg": "Successfully added Org Auditor (Org_Id: CB, User_Id: cb)"
        },
        "encode": "JSON",
        "sourceURL": "cb-oabcs1-bom.blockchain.ocp.example.com:20010",
        "blockNumber": 271
    }
}
RemoveOrgAuditor
Mit dieser Methode wird ein Benutzer als Org Auditor des Chaincodes entfernt.
t.Ctx.Admin.RemoveOrgAuditor(org_id, user_id)
Parameter:
  • org_id: string: Die Mitgliedsdienstanbieter-(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 des Benutzers enthält, der als Org Auditor des Chaincodes entfernt wurde.
Beispiel für Rückgabewert:
{
    "returnCode": "Success",
    "error": "",
    "result": {
        "txid": "713a120641afbc4dfaeac73b82c9fd51df6fcfd7d4d9a82553d3c487bf11f530",
        "payload": {
            "msg": "Successfully removed Org Auditor (Org_Id: CB, User_Id: cb)"
        },
        "encode": "JSON",
        "sourceURL": "cb-oabcs1-bom.blockchain.ocp.example.com:20010",
        "blockNumber": 273
    }
}
GetOrgAuditors
Diese Methode gibt alle Org Auditors des Chaincodes zurück.
t.Ctx.Admin.GetAllOrgAuditors()
Beispiel für Rückgabewert:
{
    "returnCode": "Success",
    "error": "",
    "result": {
        "txid": "07656bf434616d7a3d7fe4fb81dc80c8cc608991648adfd9f6f2f2b9f6ddf468",
        "payload": {
            "auditors": [
                {
                    "OrgId": "CB",
                    "UserId": "cb"
                },
                {
                    "OrgId": "CB",
                    "UserId": "issuer_user_cb"
                }
            ]
        },
        "encode": "JSON",
        "sourceURL": "cb-oabcs1-bom.blockchain.ocp.example.com:20010",
        "blockNumber": 272
    }
}

Methoden für die Verwaltung der Tokenkonfiguration

Save
Diese Methode erstellt ein Token und speichert seine Eigenschaften in der Statusdatenbank.
Ctx.Token.Save(args ...interface{}) (interface{}, error)
Parameter:
  • token_id: string: Die ID des zurückzugebenden Tokens.
  • args: Ein Variablenargument, bei dem das erste Argument args[0] eine Referenz der Token-struct-Daten des erforderlichen Typs ist, die dem Buch hinzugefügt werden sollen.
Rückgabewert:
  • Bei Erfolg ein interface{}-Objekt mit Details zum Token, das in der Statusdatenbank gespeichert wurde. Bei Fehler ein Nicht-Nil-Fehlerobjekt mit einer Fehlermeldung.
Beispiel für Rückgabewert:
{
    "AssetType": "otoken",
    "Token_id": "digiCurr101",
    "Token_name": "digicur",
    "Token_desc": "",
    "Token_type": "fungible",
    "Behavior": ["divisible", "mintable", "transferable", "burnable", "roles"],
    "Roles": {
        "minter_role_name": "minter"
    },
    "Mintable": {
        "Max_mint_quantity": 1000
    },
    "Divisible": {
        "Decimal": 2
    },
    "Currency_name": "",
    "Token_to_currency_ratio": 1
}
Update
Diese Methode aktualisiert Tokeneigenschaften. Nachdem ein Tokenasset erstellt wurde, können Sie nur den Wert token_desc und die zugehörigen benutzerdefinierten Eigenschaften aktualisieren.
Ctx.Token.Update(args ...interface{}) (interface{}, error)
Parameter:
  • Ein Asset, das eine Referenz auf die Tokendaten des Typs struct enthält, die im Buch aktualisiert werden müssen.
Rückgabewert:
  • Bei Erfolg eine Zusagenachricht mit Tokendetails. Bei Fehler eine Ablehnung mit einer Fehlermeldung.
Beispiel für Rückgabewert:
{
    "AssetType": "otoken",
    "Token_id": "digiCurr101",
    "Token_name": "digicur",
    "Token_desc": "Digital Currency equiv of dollar",
    "Token_type": "fungible",
    "Behavior": ["divisible", "mintable", "transferable", "burnable", "roles"],
    "Roles": {
        "minter_role_name": "minter"
    },
    "Mintable": {
        "Max_mint_quantity": 1000
    },
    "Divisible": {
        "Decimal": 2
    },
    "Currency_name": "",
    "Token_to_currency_ratio": 1
}
GetTokenDecimals
Diese Methode gibt die Anzahl der Dezimalstellen zurück, die für ein Bruchteil-Token verfügbar sind. Wenn das Verhalten divisible nicht angegeben ist, ist der Standardwert 0.
Ctx.Token.GetTokenDecimals(token_id string) (int, error)
Parameter:
  • Kein
Rückgabewert:
  • Bei Erfolg die Dezimalstellen des Tokens im Datentyp "Zahl". Bei Fehler ein Nicht-Nil-Fehlerobjekt mit einer Fehlermeldung.
Beispiel für Rückgabewert:
1
Get
Diese Methode gibt ein Tokenobjekt zurück, wenn es in der Statusdatenbank vorhanden ist. Diese Methode kann nur von einem Token Admin des Token-Chaincodes aufgerufen werden.
Ctx.Get(Id string, result ...interface{}) (interface{}, error)
Parameter:
  • token_id: string: Die ID des zurückzugebenden Tokens.
  • result: Ein Variablenargument, bei dem das erste Argument result[0] eine Referenz eines leeren Token-Objekts des erforderlichen Typs ist.
Rückgabewert:
  • Bei Erfolg eine Zuordnung mit den Tokenassetdaten. Das Variablenargument result[0] enthält die Tokendaten. Bei Fehler ein Nicht-Nil-Fehlerobjekt mit einer Fehlermeldung.
Beispiel für Rückgabewert:
{
    "AssetType": "otoken",
    "Token_id": "digiCurr101",
    "Token_name": "digicur",
    "Token_desc": "Digital Currency equiv of dollar",
    "Token_type": "fungible",
    "Behavior": ["divisible", "mintable", "transferable", "burnable", "holdable", "roles"],
    "Roles": {
        "burner_role_name": "burner",
        "minter_role_name": "minter",
        "notary_role_name": "notary"
    },
    "Mintable": {
        "Max_mint_quantity": 20000
    },
    "Divisible": {
        "Decimal": 1
    },
    "Token_to_currency_ratio": 1,
    "Currency_representation": "DOLLAR"
}
History
Diese Methode gibt die Tokenhistorie für eine angegebene Token-ID zurück.
Ctx.Token.History(tokenId string) (interface{}, error)
Parameter:
  • tokenId: string: Die ID des Tokens.
Rückgabewert:
  • Bei Erfolg ein JSON-Array, das die Tokenhistorie darstellt.
Beispiel für Rückgabewert:
[
    {
        "IsDelete": "false",
        "Timestamp": "2023-09-01T16:46:33Z",
        "TxId": "12333b8a4f63aa9b3a34072efcbd7df546c6d1e7d82a7a9596e899383656d6f7",
        "Value": {
            "AssetType": "otoken",
            "Behavior": [
                "divisible",
                "mintable",
                "transferable",
                "burnable",
                "roles"
            ],
            "Currency_name1": "",
            "Divisible": {
                "Decimal": 2
            },
            "Mintable": {
                "Max_mint_quantity": 1000
            },
            "Roles": {
                "minter_role_name": "minter"
            },
            "Token_desc": "updated description",
            "Token_id": "token",
            "Token_name": "fiatmoneytok",
            "Token_to_currency_ratio": 0,
            "Token_type": "fungible",
            "Token_unit": "fractional"
        }
    },
    {
        "IsDelete": "false",
        "Timestamp": "2023-09-01T16:04:25Z",
        "TxId": "99702e2dad7554a5ee4716a0d01d3e394cbce39bea8bade265d8911f30ebad0b",
        "Value": {
            "AssetType": "otoken",
            "Behavior": [
                "divisible",
                "mintable",
                "transferable",
                "burnable",
                "roles"
            ],
            "Currency_name1": "",
            "Divisible": {
                "Decimal": 2
            },
            "Mintable": {
                "Max_mint_quantity": 1000
            },
            "Roles": {
                "minter_role_name": "minter"
            },
            "Token_desc": "",
            "Token_id": "token",
            "Token_name": "fiatmoneytok",
            "Token_to_currency_ratio": 0,
            "Token_type": "fungible",
            "Token_unit": "fractional"
        }
    }
]
GetAllTokens
Diese Methode gibt alle Tokenassets zurück, die in der Statusdatenbank gespeichert sind. Diese Methode verwendet SQL-reiche Berkeley DB-Abfragen und kann nur aufgerufen werden, wenn eine Verbindung zum Remote-Oracle Blockchain Platform-Netzwerk besteht.
Ctx.Token.GetAllTokens()  (interface{}, error)
Parameter:
  • Kein
Rückgabewert:
  • Bei Erfolg ein Array einer Zuordnung aller Tokenassets. Bei Fehler ein Nicht-Nil-Fehlerobjekt mit einer Fehlermeldung.
Beispiel für Rückgabewert:
"payload": [
    {
        "key": "t1",
        "valueJson": {
            "AssetType": "otoken",
            "Behavior": [
                "divisible",
                "mintable",
                "transferable",
                "holdable",
                "burnable",
                "roles"
            ],
            "Currency_name": "Currency_name value",
            "Divisible": {
                "Decimal": 8
            },
            "Mintable": {
                "Max_mint_quantity": 10000
            },
            "Roles": {
                "burner_role_name": "burner",
                "minter_role_name": "minter",
                "notary_role_name": "notary"
            },
            "Token_desc": "Token_desc value",
            "Token_id": "t1",
            "Token_name": "obptok",
            "Token_to_currency_ratio": 999,
            "Token_type": "fungible",
            "Token_unit": "fractional"
        }
    }
]
GetTokensByName
Diese Methode gibt alle Tokenassets mit dem angegebenen Namen zurück. Diese Methode verwendet SQL-reiche Berkeley DB-Abfragen und kann nur aufgerufen werden, wenn eine Verbindung zum Remote-Oracle Blockchain Platform-Netzwerk besteht.
Ctx.Token.GetTokensByName(token_name string) (interface{}, error)
Parameter:
  • token_name string: Der Name des Tokens, der der Eigenschaft Token_name des Modells entspricht. Der Wert ist der Klassenname des Tokens.
Rückgabewert:
  • Es gibt ein Array einer Zuordnung aller Tokenassets des angegebenen Namens zurück.
Beispiel für Rückgabewert:
"payload": [
    {
        "key": "t1",
        "valueJson": {
            "AssetType": "otoken",
            "Behavior": [
                "divisible",
                "mintable",
                "transferable",
                "holdable",
                "burnable",
                "roles"
            ],
            "Currency_name": "Currency_name value",
            "Divisible": {
                "Decimal": 8
            },
            "Mintable": {
                "Max_mint_quantity": 10000
            },
            "Roles": {
                "burner_role_name": "burner",
                "minter_role_name": "minter",
                "notary_role_name": "notary"
            },
            "Token_desc": "Token_desc value",
            "Token_id": "t1",
            "Token_name": "obptok",
            "Token_to_currency_ratio": 999,
            "Token_type": "fungible",
            "Token_unit": "fractional"
        }
    },
    {
        "key": "obp2",
        "valueJson": {
            "AssetType": "otoken",
            "Behavior": [
                "divisible",
                "mintable",
                "transferable",
                "holdable",
                "burnable",
                "roles"
            ],
            "Currency_name": "",
            "Divisible": {
                "Decimal": 8
            },
            "Mintable": {
                "Max_mint_quantity": 10000
            },
            "Roles": {
                "burner_role_name": "burner",
                "minter_role_name": "minter",
                "notary_role_name": "notary"
            },
            "Token_desc": "",
            "Token_id": "obp2",
            "Token_name": "obptok",
            "Token_to_currency_ratio": 0,
            "Token_type": "fungible",
            "Token_unit": "fractional"
        }
    }
]
IsTokenType
Diese Methode prüft, ob ein Tokenasset für eine angegebene Token-ID vorhanden ist.
Ctx.Model.IsTokenType(token_id: string) error
Parameter:
  • token_id: string: Die ID des zu prüfenden Tokens.
Rückgabewert:
  • Wenn ein Tokenasset mit der angegebenen ID vorhanden ist, ist ein Nullfehler aufgetreten. Andernfalls enthält ein Nicht-Nil-Fehlerobjekt eine Fehlermeldung.
Beispiel für Rückgabewert:
nil
GetByRange
Diese Methode ruft die getStateByRange-Methode der Struktur intern auf. Auch wenn ein Vermögensgegenstand mit der angegebenen ID vom Buch zurückgegeben wird, wirft diese Methode den Vermögensgegenstand in den aufrufenden Vermögensgegenstandstyp um.
Ctx.Token.GetByRange(startId string, endId string, asset ...interface{}) ([]map[string]interface{}, error)
Parameter:
  • startId: string: Der Startschlüssel des Bereichs. Dieser Schlüssel ist im Bereich enthalten.
  • endId: string: Der Endschlüssel des Bereichs. Dieser Schlüssel ist aus dem Bereich ausgeschlossen.
  • asset[0]: Ein leerer Bereich des Tokens des erforderlichen Typs. Wenn die Methode erfolgreich ausgeführt wird, enthält sie das angeforderte Ergebnis.
Rückgabewert:
  • Bei Erfolg ein Bereich von Zuordnungen mit den Tokenassetdetails für Token, bei denen der Wert token_id im angegebenen Bereich liegt. Bei Fehler ein Nicht-Nil-Fehlerobjekt mit einer Fehlermeldung.
Beispiel für Rückgabewert:
[{
    "Key": "oaccount~loyaltok123~a4bd3d8abfb1708198971311df77bb527233bcf9121ff95b0526bc056c4b8974",
    "Record": {
        "AccountId": "oaccount~loyaltok123~a4bd3d8abfb1708198971311df77bb527233bcf9121ff95b0526bc056c4b8974",
        "AssetType": "oaccount",
        "Balance": 99,
        "BalanceOnHold": 1,
        "OnHoldBurnBalance": 0,
        "BapAccountVersion": 0,
        "OrgId": "Org1MSP",
        "TokenId": "t1",
        "TokenName": "loyaltok123",
        "UserId": "u1"
    }
}, {
    "Key": "oaccount~loyaltok123~ac30c5ca924a2c7def61acf596d91e0cca70bc8cd233179df4efb2791b56336b",
    "Record": {
        "AccountId": "oaccount~loyaltok123~ac30c5ca924a2c7def61acf596d91e0cca70bc8cd233179df4efb2791b56336b",
        "AssetType": "oaccount",
        "Balance": 0,
        "BalanceOnHold": 0,
        "OnHoldBurnBalance": 0,
        "BapAccountVersion": 0,
        "OrgId": "Org1MSP",
        "TokenId": "t1",
        "TokenName": "loyaltok123",
        "UserId": "u2"
    }
}, {
    "Key": "oaccount~loyaltok123~aef96c40d99e09ef17f9bdda7038e8fbe829a327bae2b4d8d9fcf752190f3ff0",
    "Record": {
        "AccountId": "oaccount~loyaltok123~aef96c40d99e09ef17f9bdda7038e8fbe829a327bae2b4d8d9fcf752190f3ff0",
        "AssetType": "oaccount",
        "Balance": 0,
        "BapAccountVersion": 0,
        "BalanceOnHold": 0,
        "OnHoldBurnBalance": 0,
        "OrgId": "Org1MSP",
        "TokenId": "t1",
        "TokenName": "loyaltok123",
        "UserId": "admin"
    }
}, {
    "Key": "oadmin~Org1MSP~admin",
    "Record": {
        "AssetType": "oadmin",
        "Key": "oadmin~Org1MSP~admin",
        "OrgId": "Org1MSP",
        "UserId": "admin"
    }
}, {
    "Key": "ohold~loyaltok123~t1~op1",
    "Record": {
        "AssetType": "ohold",
        "FromAccountId": "oaccount~loyaltok123~a4bd3d8abfb1708198971311df77bb527233bcf9121ff95b0526bc056c4b8974",
        "HoldingId": "ohold~loyaltok123~t1~op1",
        "NotaryAccountId": "oaccount~loyaltok123~ac30c5ca924a2c7def61acf596d91e0cca70bc8cd233179df4efb2791b56336b",
        "OperationId": "op1",
        "Quantity": 1,
        "TimeToExpiration": "0",
        "ToAccountId": "oaccount~loyaltok123~aef96c40d99e09ef17f9bdda7038e8fbe829a327bae2b4d8d9fcf752190f3ff0",
        "TokenId": "t1",
        "TokenName": "loyaltok123"
    }
}, {
    "Key": "ometadata~loyaltok123~t1",
    "Record": {
        "AssetType": "ometadata",
        "Metadata_id": "ometadata~loyaltok123~t1",
        "Token_id": "t1",
        "Token_name": "loyaltok123",
        "Total_minted_amount": 100,
        "Total_supply": 100
    }
}, {
    "Key": "orole~t1~minter~oaccount~loyaltok123~a4bd3d8abfb1708198971311df77bb527233bcf9121ff95b0526bc056c4b8974",
    "Record": {
        "AccountID": "oaccount~loyaltok123~a4bd3d8abfb1708198971311df77bb527233bcf9121ff95b0526bc056c4b8974",
        "AssetType": "orole",
        "Key": "orole~t1~minter~oaccount~loyaltok123~a4bd3d8abfb1708198971311df77bb527233bcf9121ff95b0526bc056c4b8974",
        "RoleName": "minter",
        "TokenId": "t1"
    }
}, {
    "Key": "otransaction~4a774f6493f6521cab9eda96822cb3bb4103c0738ee2dbb9a193b868ace36fa5",
    "Record": {
        "Amount": 100,
        "AssetType": "otransaction",
        "FromAccountId": "",
        "HoldingId": "",
        "NumberOfSubTransactions": 0,
        "Timestamp": "2021-08-25T23:04:42+05:30",
        "ToAccountId": "oaccount~loyaltok123~a4bd3d8abfb1708198971311df77bb527233bcf9121ff95b0526bc056c4b8974",
        "TokenId": "t1",
        "TransactionId": "otransaction~4a774f6493f6521cab9eda96822cb3bb4103c0738ee2dbb9a193b868ace36fa5",
        "TransactionType": "MINT"
    }
}, {
    "Key": "otransaction~69f3cefbcb64b73f01a0eadff87169f456873ccebe61ca8da3eef3f465f0c129",
    "Record": {
        "Amount": 1,
        "AssetType": "otransaction",
        "FromAccountId": "oaccount~loyaltok123~a4bd3d8abfb1708198971311df77bb527233bcf9121ff95b0526bc056c4b8974",
        "HoldingId": "ohold~loyaltok123~t1~op1",
        "NumberOfSubTransactions": 0,
        "Timestamp": "2021-08-25T23:06:13+05:30",
        "ToAccountId": "oaccount~loyaltok123~aef96c40d99e09ef17f9bdda7038e8fbe829a327bae2b4d8d9fcf752190f3ff0",
        "TokenId": "t1",
        "TransactionId": "otransaction~69f3cefbcb64b73f01a0eadff87169f456873ccebe61ca8da3eef3f465f0c129",
        "TransactionType": "ONHOLD"
    }
}, {
    "Key": "t1",
    "Record": {
        "AssetType": "otoken",
        "Behavior": ["divisible", "mintable", "transferable", "burnable", "holdable", "roles"],
        "Currency_Name": "a",
        "Divisible": {
            "Decimal": 2
        },
        "Effective_From_Date": "2020-09-09T00:00:00Z",
        "Mintable": {
            "Max_mint_quantity": 10000
        },
        "Roles": {
            "minter_role_name": "minter"
        },
        "Token_To_Currency_Ratio": 1,
        "Token_desc": "",
        "Token_id": "t1",
        "Token_name": "loyaltok123",
        "Token_type": "fungible"
    }
}]

Methoden für die Kontenverwaltung

GenerateAccountId
Diese Methode gibt eine Account-ID zurück, bei der es sich um eine alphanumerische Gruppe von Zeichen mit dem Präfix oaccount~<token asset name>~ handelt, gefolgt von einem Hash des Benutzernamens oder der E-Mail-ID (user_id) des Instanzeigentümers oder des Benutzers, der bei der Instanz angemeldet ist, der Mitgliedsdienstanbieter-ID (org_id) des Benutzers in der aktuellen Netzwerkorganisation und der eindeutigen Token-ID (token_id).
Ctx.Account.GenerateAccountId(token_id string, org_id string, user_id string) (string, error)
Parameter:
  • token_id: string: Die ID des Tokens.
  • org_id: string: Die Mitgliedsdienstanbieter-(MSP-)ID des Benutzers in der aktuellen Organisation.
  • user_id: string: Der Benutzername oder die E-Mail-ID des Benutzers.
Rückgabewert:
  • Bei Erfolg die generierte Konto-ID. Bei Fehler eine Ablehnung mit einer Fehlermeldung.
Beispiel für Rückgabewert:
oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f
CreateAccount
Mit dieser Methode wird ein Account für einen angegebenen Benutzer und ein bestimmtes Token erstellt. Jeder Benutzer, der zu einem beliebigen Zeitpunkt Token hat, muss über ein Konto verfügen. Konten verfolgen den Saldo eines Benutzers, den Sperrsaldo und die Transaktionshistorie. Eine Account-ID ist eine alphanumerische Gruppe von Zeichen mit dem Präfix oaccount~<token asset name>~, gefolgt von einem Hash des Benutzernamens oder der E-Mail-ID (user_id) des Instanzeigentümers oder des Benutzers, der bei der Instanz angemeldet ist, der Mitgliedschaftsserviceprovider-ID (org_id) des Benutzers in der aktuellen Netzwerkorganisation. Diese Methode kann nur von der Token Admin des Chaincodes aufgerufen werden.
t.Ctx.Account.CreateAccount(org_id string, user_id string, token_type string)
Parameter:
  • org_id: string: Die Mitgliedsdienstanbieter-(MSP-)ID des Benutzers in der aktuellen Organisation.
  • user_id: string: Der Benutzername oder die E-Mail-ID des Benutzers.
  • token_type: string: Der Typ des Tokens, der fungible sein muss.
Rückgabewert:
  • Bei Erfolg das Kontoobjekt, das erstellt wurde. Bei Fehler eine Ablehnung mit einer Fehlermeldung.
Beispiel für Rückgabewert:
{
 "AssetType":"oaccount",
"AccountId":"oaccount~a73085a385bc96c4a45aa2dff032e7dede82c0664dee5f396b7c5854eeafd4bd",
   "UserId":"user1",
   "OrgId":"Org1MSP",
   "BapAccountVersion": 0,
   "AccountType":"fungible",
   "TokenId":"",
   "TokenName":"",
   "Balance":0,
   "BalanceOnHold":0,
   "OnHoldBurnBalance":0
}
AssociateToken
Diese Methode verknüpft ein fungibles Token mit einem Konto. Diese Methode kann nur von einem Token Admin des Chaincodes aufgerufen werden.
t.Ctx.Account.AssociateToken(account_id, token_id)
Parameter:
  • account_id string: Die ID des Kontos.
  • token_id string: Die ID des Tokens.
Rückgabewert:
  • Bei Erfolg ein JSON-Objekt des aktualisierten Accounts.
Beispiel für Rückgabewert:
{ 
"AssetType":"oaccount", 
"AccountId":"oaccount~abc74791148b761352b98df58035601b6f5480448ac2b4a3a7eb54bdbebf48eb", 
"BapAccountVersion": 0,
"UserId":"admin", 
"OrgId":"Org1MSP", 
"AccountType":"fungible", 
"TokenId":"token1", 
"TokenName":"loyaltok", 
"Balance":0, 
"BalanceOnHold":0, 
"OnHoldBurnBalance":0
}
GetAccountWithStatus
Diese Methode gibt Kontodetails für ein angegebenes Konto zurück, einschließlich Kontostatus.
Ctx.Account.GetAccountWithStatus(account_id string) (interface{}, error)
Parameter:
  • account_id: string: Die ID des Kontos.
Rückgabewert:
  • Bei Erfolg die angeforderten Accountdetails. Bei Fehler eine Ablehnung mit einer Fehlermeldung.
Beispiel für Rückgabewert:
{
  "AccountId": "oaccount~2de8db6b91964f8c9009136831126d3cfa94e1d00c4285c1ea3e6d1f36479ed4",
  "AssetType": "oaccount",
  "Balance": 95,
  "BalanceOnHold": 0,
  "OnHoldBurnBalance": 0,
  "BapAccountVersion": 8,
  "OrgId": "appdev",
  "Status": "active",
  "TokenId": "obp1",
  "TokenName": "obptok",
  "TokenType": "fungible",
  "UserId": "idcqa"
}
GetAccount
Diese Methode gibt Kontodetails für ein angegebenes Konto zurück.
Ctx.Account.GetAccount(account_id string) (Account, error)
Parameter:
  • account_id: string: Die ID des Kontos.
Rückgabewert:
  • Bei Erfolg die angeforderten Accountdetails. Bei Fehler eine Ablehnung mit einer Fehlermeldung.
Beispiel für Rückgabewert:
{
    "AssetType": "oaccount",
    "BapAccountVersion": 0,
    "AccountId": "oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f",
    "UserId": "user1",
    "OrgId": "Org1MSP",
    "TokenId": "digiCurr101",
    "TokenName": "digicur",
    "Balance": 0,
    "BalanceOnHold": 0,
    "OnHoldBurnBalance": 0
}
GetAccountHistory
Diese Methode gibt ein Array der Kontohistoriendetails für ein angegebenes Konto zurück.
Ctx.Account.History(account_id string) ([]interface{}, error)
Parameter:
  • account_id: string: Die ID des Kontos.
Rückgabewert:
  • Bei Erfolg ein map[string]interface{}-Array, das die Details der Accounthistorie enthält. Die Accountdaten werden unter dem Schlüssel Value in der Karte angezeigt. Bei Fehler ein Nicht-Nil-Fehlerobjekt mit einer Fehlermeldung. Der Rückgabewert ist mit der Methode GetAccountHistory identisch.
Beispiel für Rückgabewert:
[
  {
      "IsDelete": "false",
      "Timestamp": "2023-08-28T19:31:15Z",
      "TxId": "adde470a63860ec1013bd5c5987e8a506a48942a91b0f39fc8e561374042bd27",
      "Value": {
          "AccountId": "oaccount~2de8db6b91964f8c9009136831126d3cfa94e1d00c4285c1ea3e6d1f36479ed4",
          "AssetType": "oaccount",
          "Balance": 100,
          "BalanceOnHold": 0,
          "OnHoldBurnBalance": 0,
          "BapAccountVersion": 1,
          "OrgId": "Org1MSP",
          "TokenId": "t1",
          "TokenName": "obptok",
          "TokenType": "fungible",
          "UserId": "idcqa"
      }
  },
  {
      "IsDelete": "false",
      "Timestamp": "2023-08-28T19:30:23Z",
      "TxId": "8fbeda2ba60ba175091faae5ae369247775f2cba45c4d6d1ead6f0b05be84743",
      "Value": {
          "AccountId": "oaccount~2de8db6b91964f8c9009136831126d3cfa94e1d00c4285c1ea3e6d1f36479ed4",
          "AssetType": "oaccount",
          "Balance": 0,
          "BalanceOnHold": 0,
          "OnHoldBurnBalance": 0,
          "BapAccountVersion": 0,
          "OrgId": "Org1MSP",
          "TokenId": "t1",
          "TokenName": "obptok",
          "TokenType": "fungible",
          "UserId": "idcqa"
      }
  },
  {
      "IsDelete": "false",
      "Timestamp": "2023-08-28T19:29:54Z",
      "TxId": "19bb296ae71709e91b097ba5d9ebd7f7522095880382fbf5913334a46a6026aa",
      "Value": {
          "AccountId": "oaccount~2de8db6b91964f8c9009136831126d3cfa94e1d00c4285c1ea3e6d1f36479ed4",
          "AssetType": "oaccount",
          "Balance": 0,
          "BalanceOnHold": 0,
          "OnHoldBurnBalance": 0,
          "BapAccountVersion": 0,
          "OrgId": "Org1MSP",
          "TokenId": "",
          "TokenName": "",
          "TokenType": "fungible",
          "UserId": "idcqa"
      }
  }
]
GetAccountOnHoldBalance
Diese Methode gibt den einbehaltenen Saldo für ein angegebenes Konto zurück.
Ctx.Account.getAccountOnHoldBalance(account_id: string)
Parameter:
  • account_id: string: Die ID des Kontos.
Rückgabewert:
  • Bei Erfolg ein Zusageobjekt mit dem aktuellen Zurückstellungssaldo und einer Erfolgsmeldung. Bei Fehler ein Nicht-Nil-Fehlerobjekt mit einer Fehlermeldung.
Beispiel für Rückgabewert:
{
   "holding_balance":0,
   "msg":"Total Holding Balance of Account Id oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f (org_id: Org1MSP, user_id: user1) is 0"
}
GetAllAccounts
Diese Methode gibt eine Liste aller Konten zurück. Diese Methode verwendet SQL-reiche Berkeley DB-Abfragen und kann nur aufgerufen werden, wenn eine Verbindung zum Remote-Oracle Blockchain Platform-Netzwerk besteht.
Ctx.func (t *Controller) GetAllAccounts() (interface{}, error)
Parameter:
  • Kein
Rückgabewert:
  • Bei Erfolg ein JSON-Array, das alle Konten auflistet.
Beispiel für Rückgabewert:
"payload": [
    {
        "key": "oaccount~2de8db6b91964f8c9009136831126d3cfa94e1d00c4285c1ea3e6d1f36479ed4",
        "valueJson": {
            "AccountId": "oaccount~2de8db6b91964f8c9009136831126d3cfa94e1d00c4285c1ea3e6d1f36479ed4",
            "AssetType": "oaccount",
            "Balance": 100,
            "BalanceOnHold": 0,
            "OnHoldBurnBalance": 0, 
            "BapAccountVersion": 1,
            "OrgId": "appdev",
            "TokenId": "t1",
            "TokenName": "obptok",
            "TokenType": "fungible",
            "UserId": "idcqa"
        }
    }
]
GetUserByAccountId
Diese Methode gibt die Benutzerdetails für einen angegebenen Account zurück.
Ctx.Account.GetUserByAccountById(account_id string) (interface{}, error)
Parameter:
  • account_id: string: Die ID des Kontos.
Rückgabewert:
  • Bei Erfolg eine Zusage mit einem JSON-Objekt, das drei Eigenschaften enthält:
    • user_id: Der Benutzername oder die E-Mail-ID des Benutzers.
    • org_id: Die Mitgliedsdienstanbieter-(MSP-)ID des Benutzers in der aktuellen Netzwerkorganisation.
    • token_id: Die ID des Tokens.
  • Bei Fehler ein Nicht-Nil-Fehlerobjekt mit einer Fehlermeldung.
Beispiel für Rückgabewert:
{
   "org_id":"Org1MSP",
   "token_id":"digiCurr101",
   "user_id":"user1"
}
GetAccountBalance
Diese Methode gibt den Kontensaldo für ein angegebenes Konto zurück.
Ctx.GetAccountBalance(token_id string, org_id string, user_id string) (interface{}, error)
Parameter:
  • account_id: string: Die ID des Kontos.
Rückgabewert:
  • Bei Erfolg eine Schnittstelle mit einer Nachrichtenzeichenfolge und dem aktuellen Saldo. Bei Fehler ein Nicht-Nil-Fehlerobjekt mit einer Fehlermeldung.
Beispiel für Rückgabewert:
{
    "msg": "Current Balance of +p2uaMTsU9D74l9XpHQ2c55ic/2gbO4NZITC4Zq4P8E= is: 200",
    "user_balance": 200
}
GetAllOrgAccounts
Diese Methode gibt eine Liste aller Token-Accounts zurück, die zu einer bestimmten Organisation gehören.
Ctx.Account.GetAllOrgAccounts(org_id string) (interface{}, error)
Parameter:
  • org_id: string: Die Mitgliedsdienstanbieter-(MSP-)ID der Organisation.
Rückgabewert:
  • Bei Erfolg eine Liste aller Accounts für die angegebene Organisation.
Beispiel für Rückgabewert:
[
    {
        "key": "oaccount~2de8db6b91964f8c9009136831126d3cfa94e1d00c4285c1ea3e6d1f36479ed4",
        "valueJson": {
            "AccountId": "oaccount~2de8db6b91964f8c9009136831126d3cfa94e1d00c4285c1ea3e6d1f36479ed4",
            "AssetType": "oaccount",
            "Balance": 0,
            "BalanceOnHold": 0,
            "OnHoldBurnBalance": 0,
            "BapAccountVersion": 0,
            "OrgId": "appdev",
            "TokenId": "token",
            "TokenName": "fiatmoneytok",
            "TokenType": "fungible",
            "UserId": "idcqa"
        }
    },
    {
        "key": "oaccount~9c650574af9025a6106c8d12a801b079eda9ae2e3399fc2fbd5bd683d738a850",
        "valueJson": {
            "AccountId": "oaccount~9c650574af9025a6106c8d12a801b079eda9ae2e3399fc2fbd5bd683d738a850",
            "AssetType": "oaccount",
            "Balance": 0,
            "BalanceOnHold": 0,
            "OnHoldBurnBalance": 0,
            "BapAccountVersion": 0,
            "OrgId": "appdev",
            "TokenId": "token",
            "TokenName": "fiatmoneytok",
            "TokenType": "fungible",
            "UserId": "example_minter"
        }
    }
]

Methoden für die Rollenverwaltung

AddRoleMember
Diese Methode fügt einem angegebenen Benutzer und Token eine Rolle hinzu.
Ctx.Token.AddRoleMember(role string, account_id string, tokenAsset interface{}) (interface{}, error)
Parameter:
  • role: string: Der Name der Rolle, die dem angegebenen Benutzer hinzugefügt werden soll. Das Verhalten von mintable und burnable entspricht den Eigenschaften minter_role_name und burner_role_name der Spezifikationsdatei. Entsprechend entspricht die Rolle notary der Eigenschaft notary_role_name der Spezifikationsdatei.
  • account_id: number: Die Account-ID, der die Rolle hinzugefügt werden soll.
  • tokenAsset: Das Argument tokenAsset enthält die Referenz der Tokendaten, die bearbeitet werden sollen.
Rückgabewert:
  • Bei Erfolg wird eine Map mit einer Erfolgsmeldung zurückgegeben, die das Hinzufügen der Rolle zum Account angibt. Bei Fehler ein Nicht-Nil-Fehlerobjekt mit einer Fehlermeldung.
Beispiel für Rückgabewert:
{
   "msg":"Successfully added role minter to oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f (org_id : Org1MSP, user_id : user1)"
}
RemoveRoleMember
Mit dieser Methode wird eine Rolle aus einem angegebenen Benutzer und Token entfernt.
Ctx.Token.RemoveRoleMember(role string, account_id string, tokenAsset interface{}) (interface{}, error)
Parameter:
  • role: string: Der Name der Rolle, die aus dem angegebenen Benutzer entfernt werden soll. Das Verhalten von mintable und burnable entspricht den Eigenschaften minter_role_name und burner_role_name der Spezifikationsdatei. Entsprechend entspricht die Rolle notary der Eigenschaft notary_role_name der Spezifikationsdatei.
  • account_id: number: Die Account-ID, aus der die Rolle entfernt werden soll.
  • tokenAsset: Das Argument tokenAsset enthält die Referenz der Tokendaten, die bearbeitet werden sollen.
Rückgabewert:
  • Bei Erfolg wird eine Map mit einer Erfolgsmeldung zurückgegeben, die angibt, dass die Rolle aus dem Account entfernt wurde. Bei Fehler ein Nicht-Nil-Fehlerobjekt mit einer Fehlermeldung.
Beispiel für Rückgabewert:
{
  "msg":"successfully removed member_id oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f (org_id : Org1MSP, user_id : user1) from role minter"
}
GetAccountsByRole
Diese Methode gibt eine Liste aller Konten für eine angegebene Rolle und ein bestimmtes Token zurück.
Ctx.Role.GetAccountsByRole(token_id string, user_role string) (interface{}, error)
Parameter:
  • token_id: string: Die ID des Tokens.
  • role: string: Der Name der Rolle, nach der gesucht werden soll.
Rückgabewert:
  • Bei Erfolg ein JSON-Array mit Konto-IDs. Bei Fehler ein Nicht-Nil-Fehlerobjekt mit einer Fehlermeldung.
Beispiel für Rückgabewert:
{"accounts":["oaccount~obptok~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f"]}
GetUsersByRole
Diese Methode gibt eine Liste aller Benutzer für eine angegebene Rolle und ein bestimmtes Token zurück.
Ctx.Role.GetUsersByRole(token_id string, user_role string) (interface{}, error)
Parameter:
  • token_id: string: Die ID des Tokens.
  • role: string: Der Name der Rolle, nach der gesucht werden soll.
Rückgabewert:
  • Bei Erfolg ein JSON-Array von Benutzerobjekten. Bei Fehler ein Nicht-Nil-Fehlerobjekt mit einer Fehlermeldung.
Beispiel für Rückgabewert:
{
    "Users": [
        {
            "token_id":"digiCurr101",
            "user_id": "user1",
            "org_id": "Org1MSP"
        }
    ]
}
IsInRole
Diese Methode gibt an, ob ein Benutzer und ein Token eine bestimmte Rolle haben.
Ctx.Token.IsInRole(role string, account_id string, tokenAsset interface{}) (bool, error)
Parameter:
  • role: string: Der Name der zu prüfenden Rolle.
  • account_id: number: Die zu prüfende Konto-ID.
  • tokenAsset: Das Argument tokenAsset enthält die Referenz der Tokendaten, die bearbeitet werden sollen.
Rückgabewert:
  • Bei Erfolg wird eine Map mit einer Erfolgsmeldung zurückgegeben, die angibt, dass die Rolle aus dem Account entfernt wurde. Bei Fehler ein Nicht-Nil-Fehlerobjekt mit einer Fehlermeldung.
Beispiel für Rückgabewert:
{
    "result": false
}
GetOrgAccountsByRole
Diese Methode gibt Informationen zu allen Konten zurück, die eine bestimmte Rolle in einer bestimmten Organisation haben.
Ctx.Role.GetOrgAccountsByRole(token_id string, user_role string, org_id string) (interface{}, error)
Parameter:
  • token_id: string: Die ID des Tokens.
  • role: string: Der Name der Rolle, nach der gesucht werden soll.
  • org_id: string: Die Mitgliedsdienstanbieter-(MSP-)ID der Organisation.
Rückgabewert:
  • Bei Erfolg eine Liste aller Firmen mit der angegebenen Rolle in der angegebenen Organisation.
Beispiel für Rückgabewert:
{
    "accounts": [
        "oaccount~abc74791148b761352b98df58035601b6f5480448ac2b4a3a7eb54bdbebf48eb",
         "oaccount~9c650574af9025a6106c8d12a801b079eda9ae2e3399fc2fbd5bd683d738a850"
    ]
}
GetOrgUsersByRole
Diese Methode gibt Informationen zu allen Benutzern zurück, die eine bestimmte Rolle in einer bestimmten Organisation haben.
Ctx.Role.GetOrgUsersByRole(token_id string, user_role string, org_id string) (interface{}, error)
Parameter:
  • token_id: string: Die ID des Tokens.
  • role: string: Der Name der Rolle, nach der gesucht werden soll.
  • org_id: string: Die Mitgliedsdienstanbieter-(MSP-)ID der Organisation.
Rückgabewert:
  • Bei Erfolg eine Liste aller Benutzer mit der angegebenen Rolle in der angegebenen Organisation.
Beispiel für Rückgabewert:
{
    "Users": [
        {
            "org_id": "Org1MSP",
            "token_id": "token",
            "user_id": "admin"
        },
        {
            "org_id": "Org1MSP",
            "token_id": "token",
            "user_id": "orgAdmin"
        }
    ]
}
RoleCheck
Diese Methode prüft, ob die angegebene Konto-ID Mitglied einer Rolle ist.
Ctx.Token.RoleCheck(account_id string, tokenAsset interface{}) (bool, error)
Parameter:
  • account_id: string: Die zu prüfende Konto-ID.
  • tokenAsset: Das Argument tokenAsset enthält die Referenz der Tokendaten, die bearbeitet werden sollen.
Rückgabewert:
  • Wenn der angegebene Account eine Rolle aufweist, wird eine Erfolgsmeldung und der boolesche Wert true angezeigt. Andernfalls ist der boolesche Wert false. Bei Fehler ein Nicht-Nil-Fehlerobjekt mit einer Fehlermeldung.
Beispiel für Rückgabewert:
{ result: true }

Methoden für Transaktionshistorienmanagement

GetAccountTransactionHistory
Diese Methode gibt ein Array der Transaktionshistoriendetails für ein angegebenes Konto zurück.
Ctx.Account.GetAccountTransactionHistory(account_id string) (interface{}, error)
Parameter:
  • account_id: string: Die ID des Kontos.
Rückgabewert:
  • Der Rückgabewert ist mit der Methode GetAccountTransactionHistory identisch.
  • Bei Erfolg ein Array von JSON-Kontotransaktionsobjekten.
  • Bei Fehler ein Nicht-Nil-Fehlerobjekt mit einer Fehlermeldung.
Beispiel für Rückgabewert:
[
  {
      "NumberOfSubTransactions": 2,
      "balance": 160,
      "onhold_balance": 0,
      "timestamp": "2023-09-06T06:51:48Z",
      "token_id": "t1",
      "transacted_amount": 20,
      "transaction_id": "otransaction~bd3e8d7d0bcdbed0469a2fccfe95f7ebbeb1987d8385bccf5c84bf80251e748c",
      "transaction_type": "BULKTRANSFER"
  },
  {
      "balance": 180,
      "onhold_balance": 0,
      "timestamp": "2023-09-06T06:47:14Z",
      "token_id": "t1",
      "transacted_account": "oaccount~692a7465c01e36b694cb8ae86e6c6584240aa1f865fde54f95f32429eadd4097",
      "transacted_amount": 10,
      "transaction_id": "otransaction~250996f1df6a36a1b647f522efcaaf48fd70452d711c247fc4cd475b8e752b08",
      "transaction_type": "DEBIT"
  },
  {
      "balance": 190,
      "onhold_balance": 0,
      "timestamp": "2023-09-06T06:47:08Z",
      "token_id": "t1",
      "transacted_account": "oaccount~bb5a0b57d895327c8a8cd1f267310cbf3ae542bc854fab8188b5083a969d72fb",
      "transacted_amount": 10,
      "transaction_id": "otransaction~664325a25ae6b19b23693c66f83811184e0a78fabb49122359a2dbf209f32976",
      "transaction_type": "DEBIT"
  },
  {
      "balance": 200,
      "onhold_balance": 0,
      "timestamp": "2023-09-06T06:46:46Z",
      "token_id": "t1",
      "transacted_account": "oaccount~2de8db6b91964f8c9009136831126d3cfa94e1d00c4285c1ea3e6d1f36479ed4",
      "transacted_amount": 100,
      "transaction_id": "otransaction~7f49564b1eb61d4c8be0ef61cd5e635b533ca533907944e4ec500f390237fd6b",
      "transaction_type": "MINT"
  },
  {
      "balance": 100,
      "onhold_balance": 0,
      "timestamp": "2023-08-28T19:31:15Z",
      "token_id": "t1",
      "transacted_account": "oaccount~2de8db6b91964f8c9009136831126d3cfa94e1d00c4285c1ea3e6d1f36479ed4",
      "transacted_amount": 100,
      "transaction_id": "otransaction~adde470a63860ec1013bd5c5987e8a506a48942a91b0f39fc8e561374042bd27",
      "transaction_type": "MINT"
  }
]
GetAccountTransactionHistoryWithFilters
Diese Methode gibt ein Array der Transaktionshistoriendetails für eine angegebene Transaktion zurück. Diese Methode kann nur aufgerufen werden, wenn eine Verbindung zum Remote-Oracle Blockchain Platform-Netzwerk besteht.
t.Ctx.Account.GetAccountTransactionHistoryWithFilters (transaction_id: string, filters?: SubTransactionFilters)
Parameter:
  • Transaction_id: string: Die ID der Transaktion.
  • filters: string: Ein optionaler Parameter. Wenn leer, werden alle Datensätze zurückgegeben. Die Eigenschaft PageSize bestimmt die Anzahl der zurückzugebenden Datensätze. Wenn PageSize 0 ist, ist die Standardseitengröße 20. Die Eigenschaft Bookmark bestimmt den Startindex der zurückzugebenden Datensätze. Weitere Informationen finden Sie in der Dokumentation zu Hyperledger Fabric. Die Eigenschaften StartTime und EndTime müssen im RFC-3339-Format angegeben werden.
Beispiel:

ochain invoke GetAccountTransactionHistoryWithFilters 'token1' 'appbuilder12' 'user_minter' '{"PageSize":10,"Bookmark":"1","StartTime":"2022-01-25T17:41:42Z","EndTime":"2022-01-25T17:59:10Z"}'

[
    {
        "balance": 90,
        "onhold_balance": 0,
        "timestamp": "2022-04-20T19:43:36Z",
        "token_id": "tokenId",
        "transacted_account": "oaccount~7a4d67118e623a876b77c67e76b819269a8d4a509aece5d2263fb274a9beb3b8",
        "transacted_amount": 5,
        "transaction_id": "otransaction~dd9986d3686e52264935558e42026fbf8a9af48b06a3256a58b453f5ada4e636",
        "transaction_type": "DEBIT"
    },
    {
        "balance": 95,
        "onhold_balance": 0,
        "timestamp": "2022-04-20T19:43:22Z",
        "token_id": "tokenId",
        "transacted_account": "oaccount~0642308fc4c514c257ebf04326c63f990e2531bfd59d0b952056094da61e04ab",
        "transacted_amount": 5,
        "transaction_id": "otransaction~5e53424de3d691cf6b2a55ea3dc478c555d8784111c11847e594194d6c2e7755",
        "transaction_type": "DEBIT"
    },
    {
        "balance": 100,
        "onhold_balance": 0,
        "timestamp": "2022-04-20T19:42:54Z",
        "token_id": "tokenId",
        "transacted_account": "oaccount~b63935592a702d30bedb87ae97b9b1ba7d0f346716adc4f5a4192220bf410d4e",
        "transacted_amount": 100,
        "transaction_id": "otransaction~94c467825ce9f66cc69958d38b169022a69eebc66b75b7d6e0b0585af2c3c228",
        "transaction_type": "MINT"
    }
]
GetSubTransactionsById
Diese Methode gibt ein Array der Transaktionshistoriendetails für eine angegebene Transaktion zurück.
t.Ctx.Account.GetSubTransactionsById(transaction_id string)
Parameter:
  • transaction_id: string: Die ID der Transaktion.
Beispiel:

ochain invoke GetSubTransactionsById 'otransaction~21972b4d206bd52ea77924efb259c67217edb23b4386580d1bee696f6f864b9b'

[
    {
        "balance": 80,
        "onhold_balance": 0,
        "timestamp": "2022-04-21T05:02:33Z",
        "token_id": "tokenId",
        "transacted_account": "oaccount~7a4d67118e623a876b77c67e76b819269a8d4a509aece5d2263fb274a9beb3b8",
        "transacted_amount": 5,
        "transaction_id": "otransaction~33de5d63058d5e9abc011bc850878dfb7ac3080495729aed345c45b2f21735fa~c81e728d9d4c2f636f067f89cc14862c",
        "transaction_type": "DEBIT"
    },
    {
        "balance": 85,
        "onhold_balance": 0,
        "timestamp": "2022-04-21T05:02:33Z",
        "token_id": "tokenId",
        "transacted_account": "oaccount~0642308fc4c514c257ebf04326c63f990e2531bfd59d0b952056094da61e04ab",
        "transacted_amount": 5,
        "transaction_id": "otransaction~33de5d63058d5e9abc011bc850878dfb7ac3080495729aed345c45b2f21735fa~c4ca4238a0b923820dcc509a6f75849b",
        "transaction_type": "DEBIT"
    }
]
GetSubTransactionsByIdWithFilters
Diese Methode gibt ein Array der Transaktionshistoriendetails für eine angegebene Transaktion zurück.
t.Ctx.Account.GetSubTransactionsByIdWithFilters(transaction_id string, filters ...SubTransactionFilters)
Parameter:
  • transaction_id: string: Die ID der Transaktion.
  • filters: string: Ein optionaler Parameter. Wenn leer, werden alle Datensätze zurückgegeben. Die Eigenschaft PageSize bestimmt die Anzahl der zurückzugebenden Datensätze. Wenn PageSize 0 ist, ist die Standardseitengröße 20. Die Eigenschaft Bookmark bestimmt den Startindex der zurückzugebenden Datensätze. Weitere Informationen finden Sie in der Dokumentation zu Hyperledger Fabric. Die Eigenschaften StartTime und EndTime müssen im RFC-3339-Format angegeben werden.
Beispiel:

ochain invoke GetSubTransactionsByIdWithFilters 'otransaction~21972b4d206bd52ea77924efb259c67217edb23b4386580d1bee696f6f864b9b' '{"PageSize":10,"Bookmark":"1"}'

[
    {
        "balance": 80,
        "onhold_balance": 0,
        "timestamp": "2022-04-21T05:02:33Z",
        "token_id": "tokenId",
        "transacted_account": "oaccount~7a4d67118e623a876b77c67e76b819269a8d4a509aece5d2263fb274a9beb3b8",
        "transacted_amount": 5,
        "transaction_id": "otransaction~33de5d63058d5e9abc011bc850878dfb7ac3080495729aed345c45b2f21735fa~c81e728d9d4c2f636f067f89cc14862c",
        "transaction_type": "DEBIT"
    },
    {
        "balance": 85,
        "onhold_balance": 0,
        "timestamp": "2022-04-21T05:02:33Z",
        "token_id": "tokenId",
        "transacted_account": "oaccount~0642308fc4c514c257ebf04326c63f990e2531bfd59d0b952056094da61e04ab",
        "transacted_amount": 5,
        "transaction_id": "otransaction~33de5d63058d5e9abc011bc850878dfb7ac3080495729aed345c45b2f21735fa~c4ca4238a0b923820dcc509a6f75849b",
        "transaction_type": "DEBIT"
    }
]
GetTransactionById
Diese Methode gibt die Historie eines Transaction-Assets zurück.
t.Ctx.Transaction.GetTransactionById(transaction_id string)
Parameter:
  • transaction_id string: Die ID des Transaktionsassets.
Beispiel für Rückgabewert:
{
    "history": [
        {
            "IsDelete": "false",
            "Timestamp": "2021-08-16 20:19:05.028 +0530 IST",
            "TxId": "67042154a6853011d111b13f73943f06d2a6ae3cfb9a84cb104482c359eb2220",
            "Value": {
                "Amount": 3,
                "AssetType": "otransaction",
                "FromAccountId": "oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f",
                "HoldingId": "ohold~digicur~digiCurr101~op2",
                "NumberOfSubTransactions": 0,
                "Timestamp": "2021-08-16T20:19:05+05:30",
                "ToAccountId": "oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f",
                "TokenId": "digiCurr101",
                "TransactionId": "otransaction~67042154a6853011d111b13f73943f06d2a6ae3cfb9a84cb104482c359eb2220",
                "TransactionType": "RELEASEHOLD"
            }
        }
    ],
    "transaction_id": "otransaction~67042154a6853011d111b13f73943f06d2a6ae3cfb9a84cb104482c359eb2220"
}
DeleteHistoricalTransactions
Mit dieser Methode werden ältere Transaktionen aus der Statusdatenbank gelöscht.
func (t *Controller) DeleteHistoricalTransactions(timestamp string) (interface{}, error)
Parameter:
  • time_to_expiration: Date: Ein Zeitstempel, der angibt, wann Transaktionen gelöscht werden sollen. Transaktionsassets, die älter als die angegebene Zeit sind, werden gelöscht.
Beispiel für Rückgabewert:
"payload": {
    "msg": "Successfuly deleted transaction older than date:2021-08-18T05:43:30Z",
    "transactions": [
        "otransaction~57d81f681aa215bb73d6c017d16be8b283d3fcb50051c85891a97d1d407fc342"
    ]
}

Methoden für die Verwaltung des Tokenverhaltens - Mintable-Verhalten

Mint
Mit dieser Methode werden Token abgebildet, die dann dem Aufrufer der Methode gehören. Der Anrufer muss über ein Konto und die Nebenrolle verfügen. Die Anzahl der Token, die geprägt werden können, wird durch die Eigenschaft max_mint_quantity des Verhaltens mintable in der Spezifikationsdatei begrenzt. Wenn die Eigenschaft max_mint_quantity nicht angegeben ist, kann eine unbegrenzte Anzahl von Token geprägt werden. Die Menge muss innerhalb der Dezimalwerte liegen, die durch den Parameter decimal des Verhaltens divisible in der Spezifikationsdatei angegeben werden. Diese Methode kann nur von der AccountOwner des Kontos mit der Minter-Rolle aufgerufen werden.
Ctx.Token.Mint(quantity float64, tokenAsset interface{}) (interface{}, error)
Parameter:
  • quantity: number: Die Anzahl der zu mindernden Token.
  • tokenAsset: Die Referenz auf das Tokenasset auf Mint.
Rückgabewert:
  • Bei Erfolg eine Erfolgsmeldung. Bei Fehler ein Nicht-Nil-Fehlerobjekt mit einer Fehlermeldung.
Beispiel für Rückgabewert:
{
  "msg":"Successfully minted 1000 tokens to Account Id: oaccount~digicur~682bb71de419602af74e3f226345ae308445ca51010737900c1d85f0376152df (Org-Id: Org1MSP, User-Id: admin)"
}
GetTotalMintedTokens
Diese Methode gibt die Gesamtanzahl der eingeprägten Token zurück.
Ctx.Token.GetTotalMintedTokens(tokenAsset interface{}) (map[string]interface{}, error)
Parameter:
  • tokenAsset: Das Argument tokenAsset enthält die Referenz der Tokendaten, die bearbeitet werden sollen.
Rückgabewert:
  • Bei Erfolg eine Erfolgsmeldung und eine Zuordnung der insgesamt abgebildeten Token im Datentyp "Zahl". Bei Fehler ein Nicht-Nil-Fehlerobjekt mit einer Fehlermeldung.
Beispiel für Rückgabewert:
{"msg":"total minted amount for token with id digiCurr101 is 0","quantity":0}
GetNetTokens
Diese Methode gibt die Nettomenge der Token zurück, die für ein bestimmtes Token im System verfügbar sind. Die Nettotoken sind die Anzahl der Token, die nach dem Verbrennen von Token übrig bleiben. In Gleichungsform: Nettotoken = Gesamtanzahl abgebrannter Token - Gesamtanzahl verbrannter Token. Wenn keine Token verbrannt werden, ist die Anzahl der Nettotoken gleich der Gesamtanzahl der abgebauten Token.
Ctx.Token.GetNetTokens(tokenAsset interface{}) (map[string]interface{}, error)
Parameter:
  • tokenAsset: Das Argument tokenAsset enthält die Referenz der Tokendaten, die bearbeitet werden sollen.
Rückgabewert:
  • Bei Erfolg eine Erfolgsmeldung und eine Zuordnung der Nettomenge der Token im Zahlendatentyp. Bei Fehler wird eine Fehlermeldung ausgegeben.
Beispiel für Rückgabewert:
{"msg":"net minted amount for token with id digiCurr101 is 0","quantity":0}
GetMaxMintQuantity
Diese Methode gibt die maximale mintable-Menge für ein Token zurück. Wenn das Verhalten max_mint_quantity nicht angegeben ist, ist der Standardwert 0, wodurch eine beliebige Anzahl von Token geprägt werden kann.
Ctx.Token.GetMaxMintQuantity(token_id string) (float64, error)
Parameter:
  • token_id: string: Die zu prüfende Token-ID.
Rückgabewert:
  • Bei Erfolg die maximale mintable-Menge des Tokens im Zahlendatentyp. Bei Fehler ein Nicht-Nil-Fehlerobjekt mit einer Fehlermeldung.
Beispiel für Rückgabewert:
20000

Methoden für Token Behavior Management - Übertragbares Verhalten

Transfer
Mit dieser Methode werden Token vom Aufrufer an ein bestimmtes Konto übertragen. Der Aufrufer der Methode muss ein Konto haben. Die Menge muss innerhalb der Dezimalwerte liegen, die durch den Parameter decimal des Verhaltens divisible in der Spezifikationsdatei angegeben werden. Diese Methode kann nur von der AccountOwner des Accounts aufgerufen werden.
Ctx.Token.Transfer(to_account_id string, quantity float64, tokenAsset interface{}) (interface{}, error)
Parameter:
  • to_account_id: string: Die Konto-ID, mit der die Token empfangen werden.
  • quantity: number: Die Gesamtanzahl der zu übertragenden Token.
  • tokenAsset: Das Argument tokenAsset enthält die Referenz der Tokendaten, die bearbeitet werden sollen.
Rückgabewert:
  • Bei Erfolg eine Erfolgsmeldung. Bei Fehler ein Nicht-Nil-Fehlerobjekt mit einer Fehlermeldung. Der Rückgabewert ist mit der Methode TransferTokens identisch.
Beispiel für Rückgabewert:
{     "msg":"Successfully transferred 50 tokens from account id: oaccount~digicur~682bb71de419602af74e3f226345ae308445ca51010737900c1d85f0376152df (Org-Id: Org1MSP,  User-Id: admin) to account id: oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f (Org-Id: Org1MSP, User-Id: user1)"
}
BulkTransfer
Diese Methode überträgt Token im Massenverfahren vom aufrufenden Konto auf die Konten, die im Objekt flow angegeben sind. Für den Aufrufer dieser Methode muss bereits ein Konto erstellt sein.
Ctx.Token.BulkTransfer(flow []map[string]interface{}, tokenAsset interface{}) (interface{}, error)
Parameter:
  • flow: object[]: Ein Array von JSON-Objekten, das die Empfängerdetails und -menge angibt. Die Transfermenge muss innerhalb der Dezimalwerte liegen, die durch den Parameter decimal des Verhaltens divisible in der Spezifikationsdatei angegeben werden. Beispiel:
    [{
    	"to_org_id": "Org1MSP",
    	"to_user_id": "user1",
    	"quantity": 10
    }, {
    	"to_org_id": "Org1MSP",
    	"to_user_id": "user2",
    	"quantity": 10
    }]
  • tokenAsset: Das Argument tokenAsset enthält die Referenz der Tokendaten, die bearbeitet werden sollen.
Rückgabewert:
  • Bei Erfolg eine Erfolgsmeldung, die die Anzahl der übertragenen Token enthält. Bei Fehler ein Nicht-Nil-Fehlerobjekt mit einer Fehlermeldung.
Beispiel für Rückgabewert:
{
    "from_account_id": "oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f",
    "msg": "Successfully transferred 2 tokens from Account Id oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f (Org-Id: Org1MSP, User-Id: user1)",
    "sub_transactions": [
        {
            "amount": 1,
            "to_account_id": "oaccount~digicur~38848e87296d67c8a90918f78cf55f9c9baab2cdc8c928535471aaa1210c706e"
        },
        {
            "amount": 1,
            "to_account_id": "oaccount~digicur~682bb71de419602af74e3f226345ae308445ca51010737900c1d85f0376152df"
        }
    ]
}

Methoden für Token Behavior Management - Holdable Behavior

Hold
Mit dieser Methode wird eine Sperre im Namen des Eigentümers der Token mit dem Konto to_account_id erstellt. Es wird ein Notarkonto angegeben, das die Sperre entweder abschließen oder freigeben muss. Wenn die Sperre erstellt wird, wird der angegebene Tokensaldo des Zahlers gesperrt. Ein gesperrter Saldo kann erst übertragen werden, wenn die Sperre abgeschlossen oder freigegeben wurde. Für den Aufrufer dieser Methode muss bereits ein Konto erstellt sein.
Ctx.Token.Hold(operation_id string, to_account_id string, notary_account_id string, quantity float64, TimeToExpiration string, tokenAsset)) (interface{}, error)
Parameter:
  • operation_id: string: Eine eindeutige ID zur Identifizierung des Sperrvorgangs. Normalerweise wird diese ID von der Clientanwendung übergeben.
  • to_account_id: string: Die ID des Kontos, das die Token erhalten soll.
  • notary__account_id: string: Die ID des Notarkontos.
  • quantity: number: Die Gesamtanzahl der zurückzustellenden Token.
  • time_to_expiration: date: Die Dauer bis zum Ablauf der Sperre. Geben Sie 0 für eine permanente Sperre an. Verwenden Sie andernfalls das RFC-3339-Format. Beispiel: 2021-06-02T12.
  • tokenAsset: Das Argument tokenAsset enthält die Referenz der Tokendaten, die bearbeitet werden sollen.
Rückgabewert:
  • Bei Erfolg eine Erfolgsmeldung. Bei Fehler ein Nicht-Nil-Fehlerobjekt mit einer Fehlermeldung.
Beispiel für Rückgabewert:
{
 "msg": "account id: oaccount~digicur~682bb71de419602af74e3f226345ae308445ca51010737900c1d85f0376152df (org_id : Org1MSP, user_id : user1) is successfully holding 10 tokens",
}
ExecuteHold
Diese Methode schließt eine Sperre von Token ab und überträgt die angegebene Menge von Token, die zuvor zurückgestellt wurden, an den Empfänger. Wenn der Wert quantity kleiner als der tatsächliche Zurückstellungswert ist, ist der verbleibende Betrag wieder für den ursprünglichen Eigentümer der Token verfügbar. Diese Methode kann nur von der AccountOwner-ID mit der Rolle notary aufgerufen werden.
Ctx.Token.ExecuteHold(operation_id string, quantity float64, tokenAsset interface{}) (interface{}, error)
Parameter:
  • operation_id: string: Eine eindeutige ID zur Identifizierung des Sperrvorgangs. Normalerweise wird diese ID von der Clientanwendung übergeben.
  • quantity: number: Die Gesamtanzahl der zurückzustellenden Token.
  • tokenAsset: Das Argument tokenAsset enthält die Referenz der Tokendaten, die bearbeitet werden sollen.
Rückgabewert:
  • Bei Erfolg eine Erfolgsmeldung. Bei Fehler ein Nicht-Nil-Fehlerobjekt mit einer Fehlermeldung.
Beispiel für Rückgabewert:
{"msg":"Account Id oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f (org_id : Org1MSP, user_id : user1) has successfully executed '1' tokens(digiCurr101) from the hold with Operation Id 'op1'"}
ReleaseHold
Diese Methode gibt eine Sperre für Token frei. Die Übertragung ist nicht abgeschlossen, und alle zurückgestellten Token stehen dem ursprünglichen Eigentümer erneut zur Verfügung. Diese Methode kann durch die Account Owner-ID mit der Rolle notary innerhalb der angegebenen Frist oder durch den Zahler, Zahlungsempfänger oder Notar nach der angegebenen Frist aufgerufen werden.
Ctx.Token.ReleaseHold(operation_id string, tokenAsset interface{}) (interface{}, error)
Parameter:
  • operation_id: string: Eine eindeutige ID zur Identifizierung des Sperrvorgangs. Normalerweise wird diese ID von der Clientanwendung übergeben.
  • tokenAsset: Das Argument tokenAsset enthält die Referenz der Tokendaten, die bearbeitet werden sollen.
Rückgabewert:
  • Bei Erfolg eine Erfolgsmeldung. Bei Fehler ein Nicht-Nil-Fehlerobjekt mit einer Fehlermeldung.
Beispiel für Rückgabewert:
{"msg":"Successfully released '3' tokens from Operation Id 'op2' to Account Id oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f (org_id : Org1MSP, user_id : user1)"}
GetOnHoldIds
Diese Methode gibt eine Liste aller Halte-IDs für einen angegebenen Benutzer und ein bestimmtes Token zurück.
Ctx.Account.GetOnHoldIDs(account_id string) (map[string]interface{}, error)
Parameter:
  • token_id: Die ID des Tokens.
  • org_id: Die Mitgliedsdienstanbieter-(MSP-)ID des Benutzers in der aktuellen Netzwerkorganisation.
  • user_id: Der Benutzername oder die E-Mail-ID des Benutzers.
Rückgabewert:
  • Bei Erfolg ein JSON-Objekt mit der Liste der Halte-IDs. Eine Halte-ID wird gebildet, indem der Assettyp (ohold), der Tokenname, die Token-ID und die Vorgangs-ID verkettet werden.
Beispiel für Rückgabewert:
{"holding_ids":["ohold~loyaltok123~t1~op1"],"msg":"Holding Ids are: [ohold~loyaltok123~t1~op1]"}
GetOnHoldDetailsWithOperationID
Diese Methode gibt die Details der zurückgestellten Transaktion für eine angegebene Vorgangs-ID und ein bestimmtes Token zurück.
Ctx.Hold.GetOnHoldDetailsWithOperationID(token_id string, operation_id string) (Hold, error)
Parameter:
  • token_id: string: Die ID des Tokens.
  • operation_id: string: Eine eindeutige ID zur Kennzeichnung des Sperrvorgangs. Normalerweise wird diese ID von der Clientanwendung übergeben.
Rückgabewert:
  • Der Rückgabewert ist mit der Methode GetOnHoldDetailsWithOperationId identisch.
  • Bei Erfolg ein Zusageobjekt, das die Details der zurückgestellten Transaktion für die angegebene Vorgangs-ID und das angegebene Token enthält. Das Zurückstellungsobjekt enthält die folgenden Eigenschaften:
    • holding_id: Die Holding-ID der Transaktion.
    • operation_id: string: Eine eindeutige ID zur Identifizierung des Sperrvorgangs. Normalerweise wird diese ID von der Clientanwendung übergeben.
    • from_account_id: Die Konto-ID des aktuellen Eigentümers der zurückgestellten Token.
    • to_account_id: Die Konto-ID des Empfängers.
    • notary_account_id: Die Konto-ID des Notars.
    • token_id: string: Die ID des gespeicherten Tokens.
    • quantity: Die Anzahl der zurückgestellten Token für die Halte-ID.
    • time_to_expiration: Die Dauer bis zum Ablauf der Sperre.
  • Bei Fehler ein Nicht-Nil-Fehlerobjekt mit einer Fehlermeldung.
Beispiel für Rückgabewert:
{
    "AssetType": "ohold",
    "HoldingId": "ohold~digicur~digiCurr101~op1",
    "OperationId": "op1",
    "TokenName": "digicur",
    "FromAccountId": "oaccount~digicur~b4f45440aa2a7942db64443d047027e9d714d62cba5c3d546d64f368642f622f",
    "ToAccountId": "oaccount~digicur~38848e87296d67c8a90918f78cf55f9c9baab2cdc8c928535471aaa1210c706e",
    "NotaryAccountId": "oaccount~digicur~682bb71de419602af74e3f226345ae308445ca51010737900c1d85f0376152df",
    "TokenId": "digiCurr101",
    "Quantity": 2,
    "TimeToExpiration": "0"
}
GetOnHoldBalanceWithOperationID
Diese Methode gibt den Sperrsaldo für eine angegebene Vorgangs-ID und ein bestimmtes Token zurück.
Ctx.Hold.GetOnHoldBalanceWithOperationID(token_id string, operation_id string) (map[string]interface{}, error)
Parameter:
  • token_id: string: Die ID des Tokens.
  • operation_id: string: Eine eindeutige ID zur Kennzeichnung des Sperrvorgangs. Normalerweise wird diese ID von der Clientanwendung übergeben.
Rückgabewert:
  • Bei Erfolg der Saldo für die Sperre der angegebenen Vorgangs-ID und des Tokens. Bei Fehler ein Nicht-Nil-Fehlerobjekt mit einer Fehlermeldung.
Beispiel für Rückgabewert:
{
    "holding_balance": 10,
    "msg": "Current Holding Balance of OperationId opr_121 for token digiCurr101 is : 10"
}

Methoden für Token Behavior Management - Burnable Behavior

Burn
Mit dieser Methode werden Token aus dem Konto des Transaktionsaufrufers deaktiviert oder verbrannt. Der Aufrufer dieser Methode muss einen Account und die Burner-Rolle aufweisen. Die Menge muss innerhalb der Dezimalwerte liegen, die durch den Parameter decimal des Verhaltens divisible in der Spezifikationsdatei angegeben werden.
Ctx.Token.Burn(quantity float64 , tokenAsset interface{}) (interface{}, error)
Parameter:
  • quantity: number: Die Gesamtanzahl der zu brennenden Token.
  • tokenAsset: Das Argument tokenAsset enthält die Referenz der Tokendaten, die bearbeitet werden sollen.
Rückgabewert:
  • Bei Erfolg eine Erfolgsmeldung. Bei Fehler ein Nicht-Nil-Fehlerobjekt mit einer Fehlermeldung.
Beispiel für Rückgabewert:
{
 "msg":"Successfully burned 10 tokens from account id: oaccount~digicur~682bb71de419602af74e3f226345ae308445ca51010737900c1d85f0376152df (Org-Id: Org1MSP, User-Id: admin)"
}