Verbesserungen für Token Taxonomy Framework

Die erweiterte Version von Blockchain App Builder enthält neue Funktionen für den erweiterten Token Taxonomy Framework-Standard.

Tägliche Transaktionslimits

Sie können die Anzahl der Transaktionen, die ein Konto täglich abschließen kann, sowie die Anzahl der Token, die bearbeitet werden können, einschränken. Die Eingabeparameter max_daily_amount und max_daily_transactions für die Methode createAccount steuern dieses Verhalten. Diese Parameter sind optional.

Sie können einen höheren Durchsatz erzielen, wenn Sie die täglichen Transaktionslimits für ein Konto nicht festlegen.

createAccount (TypeScript)
@Validator(yup.string(), yup.string(), yup.string(), yup.object().nullable())

public async createAccount(org_id: string, user_id: string, token_type: string, daily_limits: DailyLimits) {
await this.Ctx.Auth.checkAuthorization("ACCOUNT.createAccount", "TOKEN", { org_id });
return await this.Ctx.Account.createAccount(org_id, user_id, token_type, daily_limits);
}
Zusätzliche Parameter:
  • daily_limits: JSON: Ein Objekt, das die maximale Anzahl von Token angibt, die in täglichen Transaktionen verwendet werden können (max_daily_amount) und die maximale Anzahl von Transaktionen, die täglich abgeschlossen werden können (max_daily_transactions), wie im folgenden Beispiel dargestellt.
    {
         "max_daily_amount": 100000
         "max_daily_transactions": 10000
     }
CreateAccount (Go)
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...)
}
Zusätzliche Parameter:
  • daily_limits: JSON: Ein JSON-Objekt, das einen MaxDailyAmount-Parameter (die maximale Anzahl von Token, die täglich in Transaktionen verwendet werden können) und einen MaxDailyTransactions-Parameter (die maximale Anzahl von Transaktionen, die täglich abgeschlossen werden können) enthält, wie im folgenden Beispiel dargestellt.
    {
         "MaxDailyAmount": 100000
         "MaxDailyTransactions": 10000
     }
Rückgabewert:
  • Bei Erfolg ein JSON-Objekt des erstellten Accounts. Der Parameter BapAccountVersion wird im Accountobjekt zur internen Verwendung definiert.
Beispiel für einen Rückgabewert:
{ 
   "AssetType":"oaccount",
   "AccountId":"oaccount~a73085a385bc96c4a45aa2dff032e7dede82c0664dee5f396b7c5854eeafd4bd",
   "BapAccountVersion": 0,
   "UserId":"user1",
   "OrgId":"Org1MSP",
   "AccountType":"fungible",
   "TokenId":"",
   "TokenName":"",
   "Balance":0,
   "BalanceOnHold":0
}

Zulassungsvoraussetzungen für Minting und Burning

Sie können Genehmigungen für das Prägen und Brennen von Token einrichten, sodass Benutzer mit der Minter- oder Brennerrolle eine Anforderung an einen Genehmiger senden müssen, anstatt Token direkt zu prägen oder zu brennen. Genehmiger können Anforderungen zum Minzen oder Brennen von Token annehmen oder ablehnen. Um Genehmigungen für das Prägen und Brennen zu aktivieren, verwenden Sie die Parameter mint_approval_required und burn_approval_required. Anschließend müssen Sie auch Werte für mint_approver_role_name und burn_approval_role_name angeben, wie im folgenden Beispiel gezeigt.

behavior: # Token behaviors
          - divisible: 
                decimal: 2  
          - mintable: 
                max_mint_quantity: 1000 
                mint_approval_required: true
          - transferable
          - burnable 
                burn_approval_required: true
          - holdable 
          - roles: 
                minter_role_name: minter
                notary_role_name: notary
                mint_approver_role_name: minter_notary
                burn_approver_role_name: burner_notary
Die folgenden Methoden unterstützen das Anfordern, Akzeptieren und Ablehnen von Genehmigungen für Münz- und Burn-Token.

TypeScript Methoden für die Präge- und Brenngenehmigung

requestMint
Diese Methode kann von einem Minter aufgerufen werden, um eine Anforderung an den Minternotar zu senden, um eine bestimmte Anzahl von Token zu erstellen.
@Validator(yup.string(), yup.string(), yup.string(), yup.string(), yup.number().positive(), yup.date(), yup.object().nullable())
public async requestMint( token_id: string, operation_id: string, notary_org_id: string, notary_user_id: string, quantity: number, time_to_expiration: Date, info_details?: InfoDetails) {

const token_asset = await this.getTokenObject(token_id);
const notary_account_id = await this.Ctx.Account.generateAccountId(token_id, notary_org_id, notary_user_id);
return await this.Ctx.Token.hold(operation_id, null, notary_account_id, quantity, time_to_expiration, token_asset, HoldOperationType.MINT, info_details);

}
Parameter:
  • token_id: string: Die ID des zu prägenden Tokens.
  • operation_id: string: Die eindeutige Vorgangs-ID, die für die Minzanforderung steht.
  • notary_org_id: string - Die Mitgliedschaftsdienstleister-ID (MSP) des Notars, der die Anforderung verarbeitet.
  • 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 die Minze.
  • time_to_expiration: Die Zeit, nach der die Prägeanforderung abläuft und nicht mehr gültig ist.
  • info_details: JSON: Ein Objekt, das die Kategorie (category) und Beschreibung (description) der Anforderung angibt, wie im folgenden Beispiel dargestellt.
    {
         "category" : "category input",
         "description" : "description input"
    }
Beispiel für einen 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 Minternotar aufgerufen werden, um eine Prägeanforderung zu genehmigen.
@Validator(yup.string(), yup.string())
public async approveMint(token_id: string, operation_id: string) {
const token_asset = await this.getTokenObject(token_id);
return await this.Ctx.Token.executeHold(operation_id, token_asset);
}
Parameter:
  • token_id: string: Die ID des zu prägenden Tokens.
  • operation_id: string: Die eindeutige Vorgangs-ID, die für die Minzanforderung steht.
Beispiel für einen Rückgabewert:
{
msg:
"Successfully minted 100 tokens to Account Id: oaccount~95be539b4e1e4136dd86a806020c97a930909325340481b8fd88d339874fa699 (Org-Id: Org1MSP, User-Id: admin)"
}
rejectMint
Diese Methode kann von einem Minternotar aufgerufen werden, um eine Prägeanforderung abzulehnen.
@Validator(yup.string(), yup.string())
public async rejectMint(token_id: string, operation_id: string) {
const token_asset = await this.getTokenObject(token_id);
return await this.Ctx.Token.releaseHold(operation_id, token_asset);
}
Parameter:
  • token_id: string: Die ID des zu prägenden Tokens.
  • operation_id: string: Die eindeutige Vorgangs-ID, die für die Minzanforderung steht.
Beispiel für einen Rückgabewert:
{
 msg: "Successfully rejected mint request with Operation Id 'operation1' to mint 100 tokens of token id token"
}
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.
@Validator(yup.string(), yup.string(), yup.string(), yup.string(), yup.number().positive(), yup.date(), yup.object().nullable())

public async requestBurn( token_id: string, operation_id: string, notary_org_id: string, notary_user_id: string, quantity: number, time_to_expiration: Date, info_details?: InfoDetails ) {

const token_asset = await this.getTokenObject(token_id);
const notary_account_id = await this.Ctx.Account.generateAccountId(token_id, notary_org_id, notary_user_id);
return await this.Ctx.Token.hold(operation_id, null, notary_account_id, quantity, time_to_expiration, token_asset, HoldOperationType.BURN, null, description);
}
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 Mitgliedschaftsdienstleister-ID (MSP) des Brennernotars, der die Anforderung verarbeitet.
  • notary_user_id: string: Der Benutzername oder die E-Mail-ID des Brennernotars, der die Anforderung verarbeitet.
  • quantity: number: Die Anzahl der zu brennenden Token.
  • time_to_expiration: Die Zeit, nach der die Brennanforderung abläuft und nicht mehr gültig ist.
  • info_details: JSON: Ein Objekt, das die Kategorie (category) und Beschreibung (description) der Anforderung angibt, wie im folgenden Beispiel dargestellt.
    {
         "category" : "category input",
         "description" : "description input"
    }
Beispiel für einen 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 Brenner Notar aufgerufen werden, um eine Brennanforderung zu genehmigen.
@Validator(yup.string(), yup.string())
public async approveBurn(token_id: string, operation_id: string) {
const token_asset = await this.getTokenObject(token_id);
return await this.Ctx.Token.executeHold(operation_id, token_asset);
}
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 einen 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.
@Validator(yup.string(), yup.string())
public async rejectBurn(token_id: string, operation_id: string) {
const token_asset = await this.getTokenObject(token_id);
return await this.Ctx.Token.releaseHold(operation_id, token_asset);
}
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 einen Rückgabewert:
{
 msg: "Successfully rejected burn request with Operation Id 'operation1' to burn 100 tokens of token id token",
}

Go Methoden für Minting und Burning Approval

RequestMint
Diese Methode kann von einem Minter aufgerufen werden, um eine Anforderung an den Minternotar 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 für die Minzanforderung steht.
  • notary_org_id: string - Die Mitgliedschaftsdienstleister-ID (MSP) des Notars, der die Anforderung verarbeitet.
  • 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 die Minze.
  • TimeToExpiration: Die Zeit, nach der die Prägeanforderung abläuft und nicht mehr gültig ist.
  • info_details: JSON: Ein Objekt, das die Kategorie (category) und Beschreibung (description) der Anforderung angibt, wie im folgenden Beispiel dargestellt.
    {
         "Category" : "category input",
         "Description" : "description input"
    }
Beispiel für einen 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 Minternotar 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 für die Minzanforderung steht.
Beispiel für einen Rückgabewert:
{
msg:
"Successfully minted 100 tokens to Account Id: oaccount~95be539b4e1e4136dd86a806020c97a930909325340481b8fd88d339874fa699 (org_id: Org1MSP, user_id: admin)"
}
RejectMint
Diese Methode kann von einem Minternotar 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 für die Minzanforderung steht.
Beispiel für einen Rückgabewert:
{
 msg: "Successfully rejected mint request with Operation Id 'operation1' to mint 100 tokens of token id token"
}
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.
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 Mitgliedschaftsdienstleister-ID (MSP) des Brennernotars, der die Anforderung verarbeitet.
  • notary_user_id: string: Der Benutzername oder die E-Mail-ID des Brennernotars, der die Anforderung verarbeitet.
  • quantity: number: Die Anzahl der zu brennenden Token.
  • time_to_expiration: Die Zeit, nach der die Brennanforderung abläuft und nicht mehr gültig ist.
  • info_details: JSON: Ein Objekt, das die Kategorie (category) und Beschreibung (description) der Anforderung angibt, wie im folgenden Beispiel dargestellt.
    {
         "category" : "category input",
         "description" : "description input"
    }
Beispiel für einen 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 Brenner Notar 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 einen 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 einen Rückgabewert:
{
 msg: "Successfully rejected burn request with Operation Id 'operation1' to burn 100 tokens of token id token",
}

Transaktionshistorie aus der Rich History-Datenbank abrufen

Sie können Daten mit der Rich History-Datenbank synchronisieren und die Daten dann mit Chaincode-API-Aufrufen abrufen. Die folgende Methode, die in TypeScript und in Go gezeigt wird, ruft die Transaktionshistorie aus der Rich History-Datenbank ab. Bevor Sie diese Methoden verwenden können, müssen Sie Oracle Autonomous Database mit Oracle REST Data Services (ORDS) und aktiviertem OAuth ausführen, wie unter Oracle Database View Definitions for Wholesale CBDC beschrieben.
getAccountTransactionHistoryWithFiltersFromRichHistDB (TypeScript)
@GetMethod()
@Validator(yup.string(), yup.string(), yup.string(), yup.string(), yup.string(), yup.object().nullable())
public async getAccountTransactionHistoryWithFiltersFromRichHistDB(token_id: string, org_id: string, user_id: string, custom_endpoint: string, bearer_token: string, filters?: Filters) {
const account_id = await this.Ctx.Account.generateAccountId(token_id, org_id, user_id);
await this.Ctx.Auth.checkAuthorization("ACCOUNT.getAccountTransactionHistoryWithFilters", "TOKEN", { account_id });
return await this.Ctx.Account.getAccountTrxHistoryWithFiltersFromRichHistDB(account_id, org_id, user_id.toLowerCase(), custom_endpoint, bearer_token, filters);
}
Parameter:
  • token_id: string: Die ID des zu prägenden Tokens.
  • org_id: string - Die Mitgliedschaftsserviceanbieter-ID (MSP) 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 Anfangsindex der zurückzugebenden Datensätze. Weitere Informationen finden Sie in der Hyperledger Fabric-Dokumentation. Die Eigenschaften StartTime und EndTime müssen im RFC-3339-Format angegeben werden.
GetAccountTransactionHistoryWithFiltersFromRichHistDB (Go)
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 Mitgliedschaftsserviceanbieter-ID (MSP) 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 Anfangsindex der zurückzugebenden Datensätze. Weitere Informationen finden Sie in der Hyperledger Fabric-Dokumentation. Die Eigenschaften StartTime und EndTime müssen im RFC-3339-Format angegeben werden.

Kategorie- und Beschreibungsattribute in Transaktionsobjekten

  • Kategorie- und Beschreibungsattribute müssen in den Methoden transferTokens, holdTokens, issueTokens, requestMint, requestBurn, burnTokens und rejectBurn in der Controllerdatei enthalten sein. Die entsprechenden SDK-Methoden müssen auch Kategorie- und Beschreibungsattribute enthalten.
  • Die Eingabe des Kategorie- und Beschreibungsattributs hat die Form eines JSON-Objekts mit dem Namen info_details, wie im folgenden Beispiel dargestellt.
    {
         "category" : "category input",
         "description" : "description input"
    }
  • Das Feld info_details ist optional. Sie können bei Bedarf nur eine Kategorie oder nur eine Beschreibung übergeben.
  • Die GET-Methoden für alle Transaktionen für transferTokens, holdTokens, executeHold, releaseHold, requestMint, approveMint, rejectMint, requestBurn, approveBurn und rejectBurn müssen Kategorie- und Beschreibungsattribute in der Payload-Antwort enthalten, wenn sie vorhanden sind.
  • Das Kategoriefeld ist auf 20 Zeichen begrenzt, und das Beschreibungsfeld ist auf 250 Zeichen begrenzt.

TypeScript-Methoden mit geänderten Eingaben

Die folgenden Methoden unterstützen optionale Kategorie- und Beschreibungsattribute, wenn Sie die erweiterte Version von Blockchain App Builder verwenden.

transferTokens
Diese Methode überträgt Token vom Aufrufer auf ein angegebenes Konto.
@Validator(yup.string(), yup.string(), yup.string(), yup.number().positive(), yup.object().nullable())
public async transferTokens(token_id: string, to_org_id: string, to_user_id: string, quantity: number, info_details?: InfoDetails) {
const token_asset = await this.getTokenObject(token_id);
const to_account_id = await this.Ctx.Account.generateAccountId(token_id, to_org_id, to_user_id);
return await this.Ctx.Token.transfer(to_account_id, quantity, token_asset, info_details);
}
Parameter:
  • token_id: string: Die ID des Tokens.
  • to_org_id: string – Die Mitgliedschaftsdienstleister-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 Beschreibung (description) der Anforderung angibt, wie im folgenden Beispiel dargestellt.
    {
         "category" : "category input",
         "description" : "description input"
    }
Beispiel für einen 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)",
}
holdTokens
Diese Methode erstellt eine Sperre im Namen des Eigentümers der Token mit dem Konto to_account_id.
@Validator(yup.string(), yup.string(), yup.string(), yup.string(), yup.string(), yup.string(), yup.number().positive(), yup.date(), yup.object().nullable())
  public async holdTokens( token_id: string, operation_id: string, to_org_id: string, to_user_id: string, notary_org_id: string, notary_user_id: string, quantity: number, time_to_expiration: Date, info_details?: InfoDetails) {
    const token_asset = await this.getTokenObject(token_id);
    const to_account_id = await this.Ctx.Account.generateAccountId(token_id, to_org_id, to_user_id);
    const notary_account_id = await this.Ctx.Account.generateAccountId(token_id, notary_org_id, notary_user_id);
    return await this.Ctx.Token.hold(operation_id, to_account_id, notary_account_id, quantity, time_to_expiration, token_asset, HoldOperationType.TRANSFER, info_details);
  }
Parameter:
  • token_id: string: Die ID des Tokens.
  • operation_id: string: Eine eindeutige ID zur Identifizierung des Sperrvorgangs. In der Regel wird diese ID von der Clientanwendung übergeben.
  • to_org_id: string: Die Mitgliedschaftsdienstleister-ID (MSP) 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 Mitgliedschaftsdienstleister-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 Token, die gesperrt werden sollen.
  • time_to_expiration: Die Zeit, zu der die Sperre abläuft. Geben Sie 0 für eine permanente Sperre an. Andernfalls verwenden Sie das RFC-3339-Format. Beispiel: 2021-06-02T12:46:06Z
  • info_details: JSON: Ein Objekt, das die Kategorie (category) und Beschreibung (description) der Anforderung angibt, wie im folgenden Beispiel dargestellt.
    {
         "category" : "category input",
         "description" : "description input"
    }
Beispiel für einen Rückgabewert:
{
msg:
"AccountId oaccount~95be539b4e1e4136dd86a806020c97a930909325340481b8fd88d339874fa699 (Org-Id: Org1MSP, User-Id: admin) is successfully holding 100 tokens",
}
issueTokens
Diese Methode bildet Token ab, die dann dem Aufrufer der Methode gehören.
@Validator(yup.string(), yup.number().positive(), yup.object().nullable())
public async issueTokens(token_id: string, quantity: number, info_details?: InfoDetails) {
const token_asset = await this.getTokenObject(token_id);
return await this.Ctx.Token.mint(quantity, token_asset, info_details);
}
Parameter:
  • token_id: string: Die ID des Tokens.
  • quantity: Die Anzahl der zu prägenden Token.
  • info_details: JSON: Ein Objekt, das die Kategorie (category) und Beschreibung (description) der Anforderung angibt, wie im folgenden Beispiel dargestellt.
    {
         "category" : "category input",
         "description" : "description input"
    }
Beispiel für einen Rückgabewert:
{
msg:
"Successfully minted 100 tokens to Account Id: oaccount~95be539b4e1e4136dd86a806020c97a930909325340481b8fd88d339874fa699 (Org-Id: Org1MSP, User-Id: admin)"
}
burnTokens
Diese Methode deaktiviert oder verbrennt Token aus dem Konto des Transaktionsaufrufers.
@Validator(yup.string(), yup.number().positive(), yup.object().nullable())

public async burnTokens(token_id: string, quantity: number, info_details?: InfoDetails) {
const token_asset = await this.getTokenObject(token_id);
return await this.Ctx.Token.burn(quantity, token_asset, 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 Beschreibung (description) der Anforderung angibt, wie im folgenden Beispiel dargestellt.
    {
         "category" : "category input",
         "description" : "description input"
    }
Beispiel für einen Rückgabewert:
{
msg:
"Successfully burned 100 tokens from account id: oaccount~95be539b4e1e4136dd86a806020c97a930909325340481b8fd88d339874fa699 (Org-Id: Org1MSP, User-Id: admin)"
}

Go-Methoden mit geänderten Eingaben

Die folgenden Methoden unterstützen optionale Kategorie- und Beschreibungsattribute, wenn Sie die erweiterte Version von Blockchain App Builder verwenden.

TransferTokens
Diese Methode überträgt Token vom Aufrufer auf ein angegebenes Konto.
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 Mitgliedschaftsdienstleister-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 Beschreibung (description) der Anforderung angibt, wie im folgenden Beispiel dargestellt.
    {
         "category" : "category input",
         "description" : "description input"
    }
Beispiel für einen 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)",
}
HoldTokens
Diese Methode erstellt eine Sperre im Namen des Eigentümers der Token mit dem Konto to_account_id.
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. In der Regel wird diese ID von der Clientanwendung übergeben.
  • to_org_id: string: Die Mitgliedschaftsdienstleister-ID (MSP) 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 Mitgliedschaftsdienstleister-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 Token, die gesperrt werden sollen.
  • time_to_expiration: Die Zeit, zu der die Sperre abläuft. Geben Sie 0 für eine permanente Sperre an. Andernfalls verwenden Sie das RFC-3339-Format. Beispiel: 2021-06-02T12:46:06Z
  • info_details: JSON: Ein Objekt, das die Kategorie (category) und Beschreibung (description) der Anforderung angibt, wie im folgenden Beispiel dargestellt.
    {
         "category" : "category input",
         "description" : "description input"
    }
Beispiel für einen Rückgabewert:
{
msg:
"AccountId oaccount~95be539b4e1e4136dd86a806020c97a930909325340481b8fd88d339874fa699 (Org-Id: Org1MSP, User-Id: admin) is successfully holding 100 tokens",
}
IssueTokens
Diese Methode bildet Token ab, 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 prägenden Token.
  • info_details: JSON: Ein Objekt, das die Kategorie (category) und Beschreibung (description) der Anforderung angibt, wie im folgenden Beispiel dargestellt.
    {
         "category" : "category input",
         "description" : "description input"
    }
Beispiel für einen Rückgabewert:
{
msg:
"Successfully minted 100 tokens to Account Id: oaccount~95be539b4e1e4136dd86a806020c97a930909325340481b8fd88d339874fa699 (Org-Id: Org1MSP, User-Id: admin)"
}
BurnTokens
Diese Methode deaktiviert oder verbrennt Token aus dem Konto des Transaktionsaufrufers.
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 Beschreibung (description) der Anforderung angibt, wie im folgenden Beispiel dargestellt.
    {
         "category" : "category input",
         "description" : "description input"
    }
Beispiel für einen Rückgabewert:
{
msg:
"Successfully burned 100 tokens from account id: oaccount~95be539b4e1e4136dd86a806020c97a930909325340481b8fd88d339874fa699 (Org-Id: Org1MSP, User-Id: admin)"
}

TypeScript-Methoden mit geänderten Ausgaben

Die folgenden Methoden geben die relevante Organisation und Benutzer-IDs zurück, wenn Sie die erweiterte Version von Blockchain App Builder verwenden.

getAccountTransactionHistory
Diese Methode gibt ein Array von Kontotransaktionshistoriendetails für einen angegebenen Benutzer und ein bestimmtes Token zurück.
@GetMethod()
@Validator(yup.string(), yup.string(), yup.string())
public async getAccountTransactionHistory(token_id: string, org_id: string, user_id: string) {
const account_id = await this.Ctx.Account.generateAccountId(token_id, org_id, user_id);
await this.Ctx.Auth.checkAuthorization("ACCOUNT.getAccountTransactionHistory", "TOKEN", { account_id });
return await this.Ctx.Account.getAccountTransactionHistory(account_id, org_id, user_id.toLowerCase());
}
Parameter:
  • token_id: string: Die ID des Tokens.
  • org_id: string - Die Mitgliedschaftsserviceanbieter-ID (MSP) des Benutzers in der aktuellen Organisation.
  • user_id: string: Der Benutzername oder die E-Mail-ID des Benutzers.
Beispiel für Rückgabewerte:
[
            {
                "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 mit Kontotransaktionshistoriendetails für einen angegebenen Benutzer und ein bestimmtes Token zurück.
@GetMethod()
@Validator(yup.string(), yup.string(), yup.string(), yup.object().nullable())
public async getAccountTransactionHistoryWithFilters(token_id: string, org_id: string, user_id: string, filters?: Filters) {
const account_id = await this.Ctx.Account.generateAccountId(token_id, org_id, user_id);
await this.Ctx.Auth.checkAuthorization("ACCOUNT.getAccountTransactionHistoryWithFilters", "TOKEN", { account_id });
return await this.Ctx.Account.getAccountTransactionHistoryWithFilters(account_id, org_id, user_id.toLowerCase(), filters);
}
Parameter:
  • token_id: string: Die ID des Tokens.
  • org_id: string - Die Mitgliedschaftsserviceanbieter-ID (MSP) 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 Anfangsindex der zurückzugebenden Datensätze. Weitere Informationen finden Sie in der Hyperledger Fabric-Dokumentation. Die Eigenschaften StartTime und EndTime müssen im RFC-3339-Format angegeben werden.
Beispiel für Rückgabewerte:
[
            {
                "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"
            }
 ]

Go-Methoden mit geänderten Ausgaben

Die folgenden Methoden geben die relevante Organisation und Benutzer-IDs zurück, wenn Sie die erweiterte Version von Blockchain App Builder verwenden.

GetAccountTransactionHistory
Diese Methode gibt ein Array von Kontotransaktionshistoriendetails für einen angegebenen Benutzer und ein bestimmtes Token zurück.
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 Mitgliedschaftsserviceanbieter-ID (MSP) des Benutzers in der aktuellen Organisation.
  • user_id: string: Der Benutzername oder die E-Mail-ID des Benutzers.
Beispiel für Rückgabewerte:
[
            {
                "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 mit Kontotransaktionshistoriendetails für einen angegebenen Benutzer und ein bestimmtes Token zurück.
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 Mitgliedschaftsserviceanbieter-ID (MSP) 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 Anfangsindex der zurückzugebenden Datensätze. Weitere Informationen finden Sie in der Hyperledger Fabric-Dokumentation. Die Eigenschaften StartTime und EndTime müssen im RFC-3339-Format angegeben werden.
Beispiel für Rückgabewerte:
[
            {
                "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"
            }
 ]