Go-Methoden für Tokenkonvertierung

Blockchain App Builder generiert automatisch Methoden, mit denen Sie fungible Token konvertieren können, die den Standard Token Taxonomy Framework verwenden.

Die Methoden zur Tokenkonvertierung umfassen das Konzept des Exchange Pool. Das Exchange Pool-Konto wird von anderen Token-Konten finanziert. Wenn Sie Token neu definieren, können Sie angeben, dass ein Prozentsatz der geprägten Token auf das Exchange Pool-Konto übertragen wird.

Token-Konvertierungsprozess

Ein typischer Ablauf zum Konvertieren von Token führt folgende Schritte aus:
  1. Rufen Sie die Methode InitializeExchangePoolUser auf, um den Exchange Pool-Benutzer zu initialisieren.
  2. Rufen Sie die Methode CreateExchangePoolAccounts auf, um Exchange Pool-Konten zu erstellen. Erstellen Sie ein Exchange Pool-Konto für jede Art von fungiblen Token, aus dem Sie konvertieren oder in das Sie konvertieren möchten.
  3. Rufen Sie die Methode AddConversionRate auf, um die Konvertierungsrate für jedes Tokenpaar festzulegen, zwischen dem Sie konvertieren möchten.
  4. Sie können die Konten für Exchange Pool-Token auf eine der folgenden Arten finanzieren:
    • Übertragen Sie Token mit den Standardübertragungsmethoden an die Token-Konten des Austauschpools.
    • Rufen Sie die Methode MintWithFundingExchangePoolToken auf, wenn Sie Token ausgeben, die einen Prozentsatz der geprägten Token an ein Exchange Pool-Konto übertragen können.
  5. Rufen Sie die Methode TokenConversion auf, um zwischen zwei fungiblen Token zu konvertieren. Ein einzelner Benutzer kann Token zwischen zwei seiner Token-Konten konvertieren, oder ein Paar von Benutzern kann direkt Token von einem Konto in ein anderes konvertieren.
  6. Der Benutzer des Umtauschpools kann die Kontensalden und Kontotransaktionen des Umtauschpools anzeigen.
    • Rufen Sie die Methode GetAccount auf, um die Salden der einzelnen Exchange Pool-Tokenaccounts anzuzeigen.
    • Rufen Sie die Methoden GetAccountTransactionHistory und GetAccountTransactionHistoryWithFilters auf, um Kontotransaktionen für jedes der Exchange Pool-Tokenkonten anzuzeigen.

Automatisch generierte Tokenkonvertierungsmethoden

Blockchain App Builder generiert automatisch Methoden, um zwischen verschiedenen Arten von fungiblen Token zu konvertieren. Controller-Methoden müssen öffentlich sein, damit sie nicht verwendet werden können. Öffentliche Methodennamen beginnen mit einem Großbuchstaben. Methodennamen, die mit einem Kleinbuchstaben beginnen, sind privat.

InitializeExchangePoolUser
Diese Methode initialisiert den Exchange Pool-Benutzer, der eine einmalige Aktivität ist. Diese Methode kann nur von einem Token Admin des Chaincodes aufgerufen werden.
func (t *Controller) InitializeExchangePoolUser(org_id string, user_id string) (interface{}, error) {
    auth, err := t.Ctx.Auth.CheckAuthorization("TokenConversion.InitializeExchangePoolUser", "TOKEN")
    if err != nil && !auth {
        return nil, fmt.Errorf("error in authorizing the caller  %s", err.Error())
    }
    return t.Ctx.TokenConvertor.InitializeExchangePoolUser(org_id, user_id)
}
Parameter:
  • org_id: string: Die Mitgliedschaftsserviceprovider-(MSP-)ID des Benutzers in der aktuellen Organisation.
  • user_id: string: Der Benutzername oder die E-Mail-ID des Benutzers.
Rückgabewert:
  • Bei Erfolg eine Meldung, die Details des Exchange Pool-Benutzers enthält.
Beispiel für den Rückgabewert:
{
    "AssetType": "oconversion",
    "ConvertorId": "bcb1f3b1442c625d3ce205660c5e717c5858a1fe1e12c325df799a851ceaa09b",
    "OrgId": "Org1MSP",
    "UserId": "exchangepooluser"
}
CreateExchangePoolAccounts
Diese Methode erstellt Token-Konten für Austauschpools für ein bestimmtes Array von Token-IDs. Diese Methode kann nur von einem Token Admin des Chaincodes aufgerufen werden.
func (t *Controller) CreateExchangePoolAccounts(token_ids []string) (interface{}, error) {
    auth, err := t.Ctx.Auth.CheckAuthorization("TokenConversion.InitializeExchangePoolUser", "TOKEN")
    if err != nil && !auth {
        return nil, fmt.Errorf("error in authorizing the caller  %s", err.Error())
    }
    var tokens []interface{}
    for _, tokenId := range token_ids {
        token, err := t.getTokenObject(tokenId)
        if err != nil {
            return nil, fmt.Errorf("error in getting from_token asset details. Error: %s", err)
        }
        tokens = append(tokens, token.Interface())
    }
    return t.Ctx.TokenConvertor.CreateExchangePoolAccounts(tokens)
}
Parameter:
  • token_ids: string []: Ein Array von Token-IDs. Sie können bis zu zehn Token-IDs angeben.
Rückgabewert:
  • Bei erfolgreicher Ausführung eine Liste von Objekten, die Details der erstellten Exchange Pool-Konten enthält.
Beispiel für den Rückgabewert:
[
    {
        "AccountId": "oaccount~cc9d84f6d4a5976532493ef5200c9603e138adc35166ffd5fd1aad9c1647f034",
        "Status": "created",
        "TokenId": "USD"
    },
    {
        "AccountId": "oaccount~3d4933111ec8bd6cc1ebb43f2b2c390deb929cfa534f9c6ada8e63bac04a13c0",
        "Status": "created",
        "TokenId": "INR"
    }
]
AddConversionRate
Diese Methode fügt eine Konvertierungsrate für ein Tokenpaar hinzu. Die Token-Konvertierungsrate kann bis zu acht Dezimalstellen angegeben werden. Diese Methode kann nur von einem Token Admin des Chaincodes aufgerufen werden.
func (t *Controller) AddConversionRate(from_token_id string, to_token_id string, token_conversion_rate float64) (interface{}, error) {
    auth, err := t.Ctx.Auth.CheckAuthorization("TokenConversion.AddConversionRate", "TOKEN")
    if err != nil && !auth {
        return nil, fmt.Errorf("error in authorizing the caller  %s", err.Error())
    }
    return t.Ctx.TokenConvertor.AddConversionToken(from_token_id, to_token_id, token_conversion_rate)
}
Parameter:
  • from_token_id: string: Die ID des Tokens, aus dem konvertiert werden soll.
  • to_token_id: string: Die ID des Tokens, in das konvertiert werden soll.
  • token_conversion_rate: float64: Die Rate, mit der das from_token_id-Token in das to_token_id-Token konvertiert wird.
Rückgabewert:
  • Bei Erfolg eine JSON-Darstellung des Konvertierungsratenobjekts.
Beispiel für den Rückgabewert:
{
    "AssetType": "oconversionRate",
    "ConvertorRateId": "oconversionRate~79eacc670928bbc4c9ba4ebee135c8b4d6411af3110f8a9b782c383d5e18b150",
    "FromTokenId": "USD",
    "ToTokenId": "INR",
    "ConversionRate": 10
}
GetConversionRate
Diese Methode ruft die aktuelle Konvertierungsrate für ein Tokenpaar ab. Diese Methode kann vom Token Admin des Chaincodes, einem beliebigen Org Admin und einem beliebigen Tokenaccounteigentümer aufgerufen werden.
func (t *Controller) GetConversionRate(from_token_id string, to_token_id string) (interface{}, error) {
    auth, err := t.Ctx.Auth.CheckAuthorization("TokenConversion.GetConversionRate", "TOKEN")
    if err != nil && !auth {
        return nil, fmt.Errorf("error in authorizing the caller  %s", err.Error())
    }
    conversionRateId, err := t.Ctx.TokenConversionRate.GetConversionRateId(from_token_id, to_token_id)
    if err != nil {
        return nil, fmt.Errorf("error in getting conversationRateId. Error: %s", err)
    }
    return t.Ctx.TokenConversionRate.Get(conversionRateId)
}
Parameter:
  • from_token_id: string: Die ID des Tokens, aus dem konvertiert werden soll.
  • to_token_id: string: Die ID des Tokens, in das konvertiert werden soll.
Rückgabewert:
  • Bei Erfolg eine JSON-Darstellung des Konvertierungsratenobjekts.
Beispiel für den Rückgabewert:
{
    "AssetType": "oconversionRate",
    "ConvertorRateId": "oconversionRate~79eacc670928bbc4c9ba4ebee135c8b4d6411af3110f8a9b782c383d5e18b150",
    "FromTokenId": "USD",
    "ToTokenId": "INR",
    "ConversionRate": 10
}
UpdateConversionRate
Diese Methode aktualisiert die aktuelle Konvertierungsrate für ein Tokenpaar. Die Token-Konvertierungsrate kann bis zu acht Dezimalstellen angegeben werden. Diese Methode kann nur von einem Token Admin des Chaincodes aufgerufen werden.
func (t *Controller) UpdateConversionRate(from_token_id string, to_token_id string, token_conversion_rate float64) (interface{}, error) {
    auth, err := t.Ctx.Auth.CheckAuthorization("TokenConversion.UpdateConversionRate", "TOKEN")
    if err != nil && !auth {
        return nil, fmt.Errorf("error in authorizing the caller  %s", err.Error())
    }
    return t.Ctx.TokenConvertor.UpdateTokenConversionRate(from_token_id, to_token_id, token_conversion_rate)
}
Parameter:
  • from_token_id: string: Die ID des Tokens, aus dem konvertiert werden soll.
  • to_token_id: string: Die ID des Tokens, in das konvertiert werden soll.
  • token_conversion_rate: float64: Die Rate, mit der das from_token_id-Token in das to_token_id-Token konvertiert wird.
Rückgabewert:
  • Bei Erfolg eine JSON-Darstellung des aktualisierten Konvertierungsratenobjekts.
Beispiel für den Rückgabewert:
{
    "AssetType": "oconversionRate",
    "ConvertorRateId": "oconversionRate~79eacc670928bbc4c9ba4ebee135c8b4d6411af3110f8a9b782c383d5e18b150",
    "FromTokenId": "USD",
    "ToTokenId": "INR",
    "ConversionRate": 15
}
MintWithFundingExchangePool
Diese Methode minziert Token im Konto des Aufrufers basierend auf der angegebenen Token-ID und -Menge. Ein Prozentsatz der Token aus der geprägten Menge wird dann auf das Token-Konto des Austauschpools übertragen.
func (t *Controller) MintWithFundingExchangePool(token_id string, token_quantity float64, percentage_token_to_exchangePool float64) (interface{}, error) {
    token, err := t.getTokenObject(token_id)
    if err != nil {
        return nil, fmt.Errorf("error in getting from_token asset details. Error: %s", err)
    }
    return t.Ctx.TokenConvertor.MintWithFundingExchangePool(token.Interface(), token_quantity, percentage_token_to_exchangePool)
}
Parameter:
  • token_id: string: Die ID des Tokens, das geprägt werden soll.
  • token_quantity: float64: Die Gesamtanzahl der Token, die neu geprägt werden sollen.
  • percentage_token_to_exchange_pool: float64: Der Prozentsatz der Token, die in das Tokenkonto des Austauschpools übertragen werden sollen.
Rückgabewert:
  • Beim Erfolg war eine Meldung, die darauf hinweist, dass die Präge- und Finanzierung des Austauschpools erfolgreich war.
Beispiel für den Rückgabewert:
{
    "msg": "successfully minted 100 tokens to AccountId: 'oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1' (OrgId: Org1MSP, User-Id: admin) and Successfully transfered 80 tokens to exchange pool account with AccountId: 'oaccount~3d4933111ec8bd6cc1ebb43f2b2c390deb929cfa534f9c6ada8e63bac04a13c0' (OrgId: Org1MSP, UserId: exchangepooluser) "
}
TokenConversion
Diese Methode konvertiert Token aus dem Account des Aufrufers in den Account, der durch die Werte to_token_id, to_org_id und to_user_id angegeben wird. Diese Methode kann vom Token Admin des Chaincodes und von jedem Tokenaccountverantwortlichen aufgerufen werden. Ein Exchange Pool-Benutzer kann diese Methode nicht aufrufen.
func (t *Controller) TokenConversion(from_token_id string, to_token_id string, to_org_id string, to_user_id string, token_quantity float64) (interface{}, error) {
    auth, err := t.Ctx.Auth.CheckAuthorization("TokenConversion.TokenConversion", "TOKEN")
    if err != nil && !auth {
        return nil, fmt.Errorf("error in authorizing the caller  %s", err.Error())
    }
    from_token, err := t.getTokenObject(from_token_id)
    if err != nil {
        return nil, fmt.Errorf("error in getting from_token asset details. Error: %s", err)
    }
    to_token, err := t.getTokenObject(to_token_id)
    if err != nil {
        return nil, fmt.Errorf("error in getting to_token asset details. error: %s", err)
    }
    return t.Ctx.TokenConvertor.TokenConversion(from_token.Interface(), to_token.Interface(), to_org_id, to_user_id, token_quantity)
}
Parameter:
  • from_token_id: string: Die ID des Tokens, aus dem konvertiert werden soll.
  • to_token_id: string: Die ID des Tokens, in das konvertiert werden soll.
  • to_org_id: string: Die Mitgliedschaftsserviceprovider-(MSP-)ID des Benutzers in der aktuellen Organisation, der die Token erhält.
  • to_user_id: string: Der Benutzername oder die E-Mail-ID des Benutzers, der die Token empfangen soll.
  • token_quantity: float64: Die Gesamtanzahl der zu übertragenden Token.
Rückgabewert:
  • Bei Erfolg eine Meldung, die angibt, dass die Tokenkonvertierung erfolgreich war.
Beispiel für den Rückgabewert:
{
    "msg": "succesfully converted 5 of tokens with tokenId: [USD] from AccountId: 'oaccount~abc74791148b761352b98df58035601b6f5480448ac2b4a3a7eb54bdbebf48eb' (OrgId: Org1MSP, UserId: admin) to 75 of tokens with tokenId: [INR] to AccountId: 'oaccount~25e2e66718b6dbb59aea9c32acebec60e09d912b2578d4933d377ae5d0628f1e' ( OrgId: Org1MSP, UserId: user ) as per the conversion rate of 15"
}
GetConversionHistory
Diese Methode gibt die Tokenkonvertierungshistorie für ein angegebenes Tokenkonto zurück. Diese Methode kann vom Token Admin des Chaincodes, einem Org Admin der angegebenen Organisation und vom Eigentümer des Tokenaccounts aufgerufen werden.
func (t *Controller) GetConversionHistory(token_id string, org_id string, user_id string) (interface{}, error) {
    auth, err := t.Ctx.Auth.CheckAuthorization("TokenConversion.GetConversionHistory", "TOKEN")
    if err != nil && !auth {
        return nil, fmt.Errorf("error in authorizing the caller  %s", err.Error())
    }
    account_id, err := t.Ctx.Account.GenerateAccountId(token_id, org_id, user_id)
    if err != nil {
        return nil, fmt.Errorf("error in generating the accoint_id. Error: %s", err)
    }
    return t.Ctx.Account.GetTokenConversionHistory(account_id, org_id, user_id)
}
Parameter:
  • token_id: string: Die ID des Tokens.
  • org_id: string: Die Mitgliedschaftsserviceprovider-(MSP-)ID des Benutzers in der aktuellen Organisation.
  • user_id: string: Der Benutzername oder die E-Mail-ID des Benutzers.
Rückgabewert:
  • Bei Erfolg ein JSON-Objekt mit Konvertierungshistoriendetails.
Beispiel für den Rückgabewert:
[
    {
        "balance": 95,
        "conversion_rate": 15,
        "converted_amount": 75,
        "from_account_id": "oaccount~abc74791148b761352b98df58035601b6f5480448ac2b4a3a7eb54bdbebf48eb",
        "from_token_id": "USD",
        "onhold_balance": 0,
        "timestamp": "2022-12-01T00:54:33+05:30",
        "to_account_id": "oaccount~25e2e66718b6dbb59aea9c32acebec60e09d912b2578d4933d377ae5d0628f1e",
        "to_token_id": "INR",
        "transacted_amount": 5,
        "transaction_id": "otransaction~e1f5c32ab3cdc17a51ff0edda6bcc71b5acec3320a69f68a4ae455ed416657fa",
        "transaction_type": "TOKEN_CONVERSION_DEBIT"
    }
]
GetConversionRateHistory
Diese Methode gibt die Historie der Tokenkonvertierungsrate für ein Tokenpaar zurück. Diese Methode kann vom Token Admin des Chaincodes, einem beliebigen Org Admin und einem beliebigen Tokenaccounteigentümer aufgerufen werden.
func (t *Controller) GetConversionRateHistory(from_token_id string, to_token_id string) (interface{}, error) {
    auth, err := t.Ctx.Auth.CheckAuthorization("TokenConversion.GetConversionRateHistory", "TOKEN")
    if err != nil && !auth {
        return nil, fmt.Errorf("error in authorizing the caller  %s", err.Error())
    }
    conversion_rate_id, err := t.Ctx.TokenConversionRate.GetConversionRateId(from_token_id, to_token_id)
    if err != nil {
        return nil, fmt.Errorf("error in getting conversionRateId. Error: %s", err)
    }
    return t.Ctx.TokenConversionRate.History(conversion_rate_id)
}
Parameter:
  • from_token_id: string: Die ID des Tokens, aus dem konvertiert werden soll, um den Umrechnungskurs zu berechnen.
  • to_token_id: string: Die ID des Tokens, in das konvertiert werden soll, um den Umrechnungskurs zu berechnen.
Rückgabewert:
  • Bei Erfolg ein JSON-Objekt mit Details zur Konvertierungsratenhistorie.
Beispiel für den Rückgabewert:
[
  {
    "IsDelete": "false",
    "Timestamp": "2022-12-01T00:48:58+05:30",
    "TxId": "d6c5332278d33beddbc48e535029af424fef2129bf49f4906f9b527e101d95f1",
    "Value": {
      "AssetType": "oconversionRate",
      "ConversionRate": 15,
      "ConvertorRateId": "oconversionRate~79eacc670928bbc4c9ba4ebee135c8b4d6411af3110f8a9b782c383d5e18b150",
      "FromTokenId": "USD",
      "ToTokenId": "INR"
    }
  },
  {
    "IsDelete": "false",
    "Timestamp": "2022-12-01T00:47:15+05:30",
    "TxId": "e8796578351e948827d5dfe242ab4be59019ae67d69d3bfd6db255a268d57017",
    "Value": {
      "AssetType": "oconversionRate",
      "ConversionRate": 10,
      "ConvertorRateId": "oconversionRate~79eacc670928bbc4c9ba4ebee135c8b4d6411af3110f8a9b782c383d5e18b150",
      "FromTokenId": "USD",
      "ToTokenId": "INR"
    }
  }
]
GetExchangePoolUser
Diese Methode gibt die Werte org_id und user_id für den Exchange Pool-Benutzer zurück. Diese Methode kann nur von einem Token Admin des Chaincodes aufgerufen werden.
func (t *Controller) GetExchangePoolUser() (interface{}, error) {
    auth, err := t.Ctx.Auth.CheckAuthorization("TokenConversion.GetExchangePoolUser", "TOKEN")
    if err != nil && !auth {
        return nil, fmt.Errorf("error in authorizing the caller  %s", err.Error())
    }
    return t.Ctx.TokenConvertor.GetExchangePoolUser()
}
Parameter:
  • Kein
Rückgabewert:
  • Bei Erfolg eine Meldung mit Informationen über den Exchange Pool-Benutzer.
Beispiel für den Rückgabewert:
{
    "AssetType": "oconversion",
    "ConvertorId": "bcb1f3b1442c625d3ce205660c5e717c5858a1fe1e12c325df799a851ceaa09b",
    "OrgId": "Org1MSP",
    "UserId": "exchangepooluser"
}

SDK-Methoden für Tokenkonvertierung

InitializeExchangePoolUser
Diese Methode initialisiert den Exchange Pool-Benutzer, der eine einmalige Aktivität ist. Diese Methode kann nur von einem Token Admin des Chaincodes aufgerufen werden.
Ctx.TokenConvertor.InitializeExchangePoolUser(org_id string, user_id string) (interface{}, error)
Parameter:
  • org_id: string: Die Mitgliedschaftsserviceprovider-(MSP-)ID des Benutzers in der aktuellen Organisation.
  • user_id: string: Der Benutzername oder die E-Mail-ID des Benutzers.
Rückgabewert:
  • Bei Erfolg eine Meldung, die Details des Exchange Pool-Benutzers enthält.
Beispiel für den Rückgabewert:
{
    "AssetType": "oconversion",
    "ConvertorId": "bcb1f3b1442c625d3ce205660c5e717c5858a1fe1e12c325df799a851ceaa09b",
    "OrgId": "Org1MSP",
    "UserId": "exchangepooluser"
}
CreateExchangePoolAccounts
Diese Methode erstellt Token-Konten für Austauschpools für ein bestimmtes Array von Token-IDs. Diese Methode kann nur von einem Token Admin des Chaincodes aufgerufen werden.
Ctx.TokenConvertor.CreateExchangePoolAccounts(tokens []interface{}) (interface{}, error)
Parameter:
  • token_ids: string []: Ein Array von Token-IDs.
Rückgabewert:
  • Bei erfolgreicher Ausführung eine Liste von Objekten, die Details der erstellten Exchange Pool-Konten enthält.
Beispiel für den Rückgabewert:
[
    {
        "AccountId": "oaccount~cc9d84f6d4a5976532493ef5200c9603e138adc35166ffd5fd1aad9c1647f034",
        "Status": "created",
        "TokenId": "USD"
    },
    {
        "AccountId": "oaccount~3d4933111ec8bd6cc1ebb43f2b2c390deb929cfa534f9c6ada8e63bac04a13c0",
        "Status": "created",
        "TokenId": "INR"
    }
]
AddConversionToken
Diese Methode fügt Token mit einer neuen Konvertierungsrate für ein angegebenes Token hinzu. Die Token-Konvertierungsrate kann bis zu acht Dezimalstellen angegeben werden. Diese Methode kann nur von einem Token Admin des Chaincodes aufgerufen werden.
Ctx.TokenConvertor.AddConversionToken(from_token_id string, to_token_id string, token_conversion_rate float64) (interface{}, error)
Parameter:
  • from_token_id: string: Die ID des Tokens, aus dem konvertiert werden soll.
  • to_token_id: string: Die ID des Tokens, in das konvertiert werden soll.
  • token_conversion_rate: float64: Die Rate, mit der das from_token_id-Token in das to_token_id-Token konvertiert wird.
Rückgabewert:
  • Bei Erfolg eine JSON-Darstellung des Konvertierungsratenobjekts.
Beispiel für den Rückgabewert:
{
    "AssetType": "oconversionRate",
    "ConvertorRateId": "oconversionRate~79eacc670928bbc4c9ba4ebee135c8b4d6411af3110f8a9b782c383d5e18b150",
    "FromTokenId": "USD",
    "ToTokenId": "INR",
    "ConversionRate": 10
}
Get
Diese Methode ruft die aktuelle Konvertierungsrate für ein Tokenpaar ab. Diese Methode kann vom Token Admin des Chaincodes und von jedem Tokenaccountverantwortlichen aufgerufen werden.
Ctx.TokenConversionRate.Get(id string) (ConversionRate, error)
Parameter:
  • id: string: Die ID des Tokenkonvertierungsratenobjekts.
Rückgabewert:
  • Bei Erfolg eine JSON-Darstellung des Konvertierungsratenobjekts.
Beispiel für den Rückgabewert:
{
    "AssetType": "oconversionRate",
    "ConvertorRateId": "oconversionRate~79eacc670928bbc4c9ba4ebee135c8b4d6411af3110f8a9b782c383d5e18b150",
    "FromTokenId": "USD",
    "ToTokenId": "INR",
    "ConversionRate": 10
}
UpdateTokenConversionRate
Diese Methode aktualisiert die aktuelle Konvertierungsrate für ein Tokenpaar. Die Token-Konvertierungsrate kann bis zu acht Dezimalstellen angegeben werden. Diese Methode kann nur von einem Token Admin des Chaincodes aufgerufen werden.
Ctx.TokenConvertor.UpdateTokenConversionRate(from_token_id string, to_token_id string, token_conversion_rate float64) (interface{}, error)
Parameter:
  • from_token_id: string: Die ID des Tokens, aus dem konvertiert werden soll.
  • to_token_id: string: Die ID des Tokens, in das konvertiert werden soll.
  • token_conversion_rate: float64: Die Rate, mit der das from_token_id-Token in das to_token_id-Token konvertiert wird.
Rückgabewert:
  • Bei Erfolg eine JSON-Darstellung des aktualisierten Konvertierungsratenobjekts.
Beispiel für den Rückgabewert:
{
    "AssetType": "oconversionRate",
    "ConvertorRateId": "oconversionRate~79eacc670928bbc4c9ba4ebee135c8b4d6411af3110f8a9b782c383d5e18b150",
    "FromTokenId": "USD",
    "ToTokenId": "INR",
    "ConversionRate": 15
}
MintWithFundingExchangePool
Diese Methode minziert Token im Konto des Aufrufers basierend auf der angegebenen Token-ID und -Menge. Ein Prozentsatz der Token aus der geprägten Menge wird dann auf das Token-Konto des Austauschpools übertragen.
Ctx.TokenConvertor.MintWithFundingExchangePool(token interface{}, token_quantity float64, percentage_token_to_exchangePool float64) (interface{}, error)
Parameter:
  • token_id: string: Die ID des Tokens, das geprägt werden soll.
  • token_quantity: float64: Die Gesamtanzahl der Token, die neu geprägt werden sollen.
  • percentage_token_to_exchange_pool: float64: Der Prozentsatz der Token, die in das Tokenkonto des Austauschpools übertragen werden sollen.
Rückgabewert:
  • Beim Erfolg war eine Meldung, die darauf hinweist, dass die Präge- und Finanzierung des Austauschpools erfolgreich war.
Beispiel für den Rückgabewert:
{
    "msg": "successfully minted 100 tokens to AccountId: 'oaccount~1c568151c4acbcd1bd265c766c677145760a61c47fc8a3ba681a4cfbe287f9c1' (OrgId: Org1MSP, User-Id: admin) and Successfully transfered 80 tokens to exchange pool account with AccountId: 'oaccount~3d4933111ec8bd6cc1ebb43f2b2c390deb929cfa534f9c6ada8e63bac04a13c0' (OrgId: Org1MSP, UserId: exchangepooluser) "
}
TokenConversion
Diese Methode konvertiert Token aus dem Account des Aufrufers in den Account, der durch die Werte to_token_id, to_org_id und to_user_id angegeben wird. Diese Methode kann vom Token Admin des Chaincodes und von jedem Tokenaccountverantwortlichen aufgerufen werden. Ein Exchange Pool-Benutzer kann diese Methode nicht aufrufen.
Ctx.TokenConvertor.TokenConversion(from_token interface{}, to_token interface{}, to_org_id string, to_user_id string, token_quantity float64) (interface{}, error)
Parameter:
  • from_token_id: string: Die ID des Tokens, aus dem konvertiert werden soll.
  • to_token_id: string: Die ID des Tokens, in das konvertiert werden soll.
  • to_org_id: string: Die Mitgliedschaftsserviceprovider-(MSP-)ID des Benutzers in der aktuellen Organisation, der die Token erhält.
  • to_user_id: string: Der Benutzername oder die E-Mail-ID des Benutzers, der die Token empfangen soll.
Rückgabewert:
  • Bei Erfolg eine Meldung, die angibt, dass die Tokenkonvertierung erfolgreich war.
Beispiel für den Rückgabewert:
{
    "msg": "succesfully converted 5 of tokens with tokenId: [USD] from AccountId: 'oaccount~abc74791148b761352b98df58035601b6f5480448ac2b4a3a7eb54bdbebf48eb' (OrgId: Org1MSP, UserId: admin) to 75 of tokens with tokenId: [INR] to AccountId: 'oaccount~25e2e66718b6dbb59aea9c32acebec60e09d912b2578d4933d377ae5d0628f1e' ( OrgId: Org1MSP, UserId: user ) as per the conversion rate of 15"
}
GetTokenConversionHistory
Diese Methode gibt die Tokenkonvertierungshistorie für ein angegebenes Tokenkonto zurück. Diese Methode kann vom Token Admin des Chaincodes und vom Eigentümer des Tokenaccounts aufgerufen werden.
Ctx.Account.GetTokenConversionHistory(account_id string, org_id string, user_id string) (interface{}, error)
Parameter:
  • account_id: string: Die ID des fungiblen Tokenaccounts.
  • org_id: string: Die Mitgliedschaftsserviceprovider-(MSP-)ID des Benutzers in der aktuellen Organisation.
  • user_id: string: Der Benutzername oder die E-Mail-ID des Benutzers.
Rückgabewert:
  • Bei Erfolg ein JSON-Objekt mit Konvertierungshistoriendetails.
Beispiel für den Rückgabewert:
[
    {
        "balance": 95,
        "conversion_rate": 15,
        "converted_amount": 75,
        "from_account_id": "oaccount~abc74791148b761352b98df58035601b6f5480448ac2b4a3a7eb54bdbebf48eb",
        "from_token_id": "USD",
        "onhold_balance": 0,
        "timestamp": "2022-12-01T00:54:33+05:30",
        "to_account_id": "oaccount~25e2e66718b6dbb59aea9c32acebec60e09d912b2578d4933d377ae5d0628f1e",
        "to_token_id": "INR",
        "transacted_amount": 5,
        "transaction_id": "otransaction~e1f5c32ab3cdc17a51ff0edda6bcc71b5acec3320a69f68a4ae455ed416657fa",
        "transaction_type": "TOKEN_CONVERSION_DEBIT"
    }
]
history
Diese Methode gibt die Historie der Tokenkonvertierungsrate für ein Tokenpaar zurück. Diese Methode kann vom Token Admin des Chaincodes, einem beliebigen Org Admin und einem beliebigen Tokenaccounteigentümer aufgerufen werden.
Ctx.TokenConversionRate.History(conversion_rate_id string) (interface{}, error)
Parameter:
  • conversion_rate_id: string: Die ID des Konvertierungsratenobjekts.
Rückgabewert:
  • Bei Erfolg ein JSON-Objekt mit Details zur Konvertierungsratenhistorie.
Beispiel für den Rückgabewert:
[
  {
    "IsDelete": "false",
    "Timestamp": "2022-12-01T00:48:58+05:30",
    "TxId": "d6c5332278d33beddbc48e535029af424fef2129bf49f4906f9b527e101d95f1",
    "Value": {
      "AssetType": "oconversionRate",
      "ConversionRate": 15,
      "ConvertorRateId": "oconversionRate~79eacc670928bbc4c9ba4ebee135c8b4d6411af3110f8a9b782c383d5e18b150",
      "FromTokenId": "USD",
      "ToTokenId": "INR"
    }
  },
  {
    "IsDelete": "false",
    "Timestamp": "2022-12-01T00:47:15+05:30",
    "TxId": "e8796578351e948827d5dfe242ab4be59019ae67d69d3bfd6db255a268d57017",
    "Value": {
      "AssetType": "oconversionRate",
      "ConversionRate": 10,
      "ConvertorRateId": "oconversionRate~79eacc670928bbc4c9ba4ebee135c8b4d6411af3110f8a9b782c383d5e18b150",
      "FromTokenId": "USD",
      "ToTokenId": "INR"
    }
  }
]
GetExchangePoolUser
Diese Methode gibt die Werte org_id und user_id für den Exchange Pool-Benutzer zurück. Diese Methode kann nur von einem Token Admin des Chaincodes aufgerufen werden.
Ctx.TokenConvertor.GetExchangePoolUser()
Parameter:
  • Kein
Rückgabewert:
  • Bei Erfolg eine Meldung mit Informationen über den Exchange Pool-Benutzer.
Beispiel für den Rückgabewert:
{
    "AssetType": "oconversion",
    "ConvertorId": "bcb1f3b1442c625d3ce205660c5e717c5858a1fe1e12c325df799a851ceaa09b",
    "OrgId": "Org1MSP",
    "UserId": "exchangepooluser"
}