Vai a metodi per conversione token

Blockchain App Builder genera automaticamente metodi che è possibile utilizzare per convertire i token fungibili che utilizzano lo standard Token Taxonomy Framework.

I metodi di conversione del token includono il concetto di pool di scambio. Il conto del pool di cambio è finanziato da altri conti token. Quando si mint token, è possibile specificare che una percentuale dei token coniati vengono trasferiti al conto del pool di scambio.

Processo di conversione token

Un flusso tipico per la conversione dei token segue questi passaggi:
  1. Chiamare il metodo InitializeExchangePoolUser per inizializzare l'utente del pool di scambio.
  2. Chiamare il metodo CreateExchangePoolAccounts per creare account del pool di scambio. Creare un account di pool di scambio per ogni tipo di token fungibile da cui si desidera convertire o in cui si desidera eseguire la conversione.
  3. Chiamare il metodo AddConversionRate per impostare il tasso di conversione per ogni coppia di token tra cui si desidera eseguire la conversione.
  4. Finanziare i conti token del pool di cambio in uno dei modi seguenti:
    • Trasferire i token ai conti token del pool di scambio utilizzando i metodi di trasferimento standard.
    • Chiamare il metodo MintWithFundingExchangePoolToken quando si stampano i token, che possono trasferire una percentuale di token coniati in un account del pool di scambio.
  5. Chiama il metodo TokenConversion per convertire tra due token fungibili. Un singolo utente può convertire i token tra due dei loro account di token, o una coppia di utenti può convertire direttamente i token da un account a un altro.
  6. L'utente del pool di cambio può visualizzare i saldi dei conti del pool di cambio e le transazioni dei conti.
    • Chiamare il metodo GetAccount per visualizzare i saldi di ciascuno dei conti token del pool di scambio.
    • Chiamare i metodi GetAccountTransactionHistory e GetAccountTransactionHistoryWithFilters per visualizzare le transazioni conto per ciascuno dei conti token del pool di scambio.

Metodi di conversione token generati automaticamente

Blockchain App Builder genera automaticamente metodi per la conversione tra diversi tipi di token fungibili. I metodi controller devono essere pubblici per poter essere richiamati. I nomi dei metodi pubblici iniziano con un carattere maiuscolo. I nomi dei metodi che iniziano con un carattere minuscolo sono privati.

InitializeExchangePoolUser
Questo metodo inizializza l'utente del pool di scambio, che è un'attività occasionale. Questo metodo può essere chiamato solo da un Token Admin del codice concatenato.
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)
}
Parametri:
  • org_id: string - L'ID MSP (Membership Service Provider) dell'utente nell'organizzazione corrente.
  • user_id: string: il nome utente o l'ID e-mail dell'utente.
Restituisce:
  • In caso di operazione riuscita, un messaggio che include i dettagli dell'utente del pool di scambio.
Esempio di valore restituito:
{
    "AssetType": "oconversion",
    "ConvertorId": "bcb1f3b1442c625d3ce205660c5e717c5858a1fe1e12c325df799a851ceaa09b",
    "OrgId": "Org1MSP",
    "UserId": "exchangepooluser"
}
CreateExchangePoolAccounts
Questo metodo crea account di token del pool di scambio per un determinato array di ID token. Questo metodo può essere chiamato solo da un Token Admin del codice concatenato.
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)
}
Parametri:
  • token_ids: string []: array di ID token. È possibile specificare fino a dieci ID token.
Restituisce:
  • In caso di operazione riuscita, un elenco di oggetti che include i dettagli dei conti del pool di scambio creati.
Esempio di valore restituito:
[
    {
        "AccountId": "oaccount~cc9d84f6d4a5976532493ef5200c9603e138adc35166ffd5fd1aad9c1647f034",
        "Status": "created",
        "TokenId": "USD"
    },
    {
        "AccountId": "oaccount~3d4933111ec8bd6cc1ebb43f2b2c390deb929cfa534f9c6ada8e63bac04a13c0",
        "Status": "created",
        "TokenId": "INR"
    }
]
AddConversionRate
Questo metodo aggiunge un tasso di conversione per una coppia di token. Il tasso di conversione del token può essere specificato fino a otto posizioni decimali. Questo metodo può essere chiamato solo da un Token Admin del codice concatenato.
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)
}
Parametri:
  • from_token_id: string: l'ID del token da cui eseguire la conversione.
  • to_token_id: string: l'ID del token in cui eseguire la conversione.
  • token_conversion_rate: float64: la velocità con cui convertire il token from_token_id nel token to_token_id.
Restituisce:
  • In caso di operazione riuscita, una rappresentazione JSON dell'oggetto tasso di conversione.
Esempio di valore restituito:
{
    "AssetType": "oconversionRate",
    "ConvertorRateId": "oconversionRate~79eacc670928bbc4c9ba4ebee135c8b4d6411af3110f8a9b782c383d5e18b150",
    "FromTokenId": "USD",
    "ToTokenId": "INR",
    "ConversionRate": 10
}
GetConversionRate
Questo metodo ottiene il tasso di conversione corrente per una coppia di token. Questo metodo può essere chiamato dal Token Admin del codice concatenato, da qualsiasi Org Admin e da qualsiasi proprietario dell'account token.
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)
}
Parametri:
  • from_token_id: string: l'ID del token da cui eseguire la conversione.
  • to_token_id: string: l'ID del token in cui eseguire la conversione.
Restituisce:
  • In caso di operazione riuscita, una rappresentazione JSON dell'oggetto tasso di conversione.
Esempio di valore restituito:
{
    "AssetType": "oconversionRate",
    "ConvertorRateId": "oconversionRate~79eacc670928bbc4c9ba4ebee135c8b4d6411af3110f8a9b782c383d5e18b150",
    "FromTokenId": "USD",
    "ToTokenId": "INR",
    "ConversionRate": 10
}
UpdateConversionRate
Questo metodo aggiorna il tasso di conversione corrente per una coppia di token. Il tasso di conversione del token può essere specificato fino a otto posizioni decimali. Questo metodo può essere chiamato solo da un Token Admin del codice concatenato.
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)
}
Parametri:
  • from_token_id: string: l'ID del token da cui eseguire la conversione.
  • to_token_id: string: l'ID del token in cui eseguire la conversione.
  • token_conversion_rate: float64: la velocità con cui convertire il token from_token_id nel token to_token_id.
Restituisce:
  • In caso di operazione riuscita, una rappresentazione JSON dell'oggetto tasso di conversione aggiornato.
Esempio di valore restituito:
{
    "AssetType": "oconversionRate",
    "ConvertorRateId": "oconversionRate~79eacc670928bbc4c9ba4ebee135c8b4d6411af3110f8a9b782c383d5e18b150",
    "FromTokenId": "USD",
    "ToTokenId": "INR",
    "ConversionRate": 15
}
MintWithFundingExchangePool
Questo metodo estrae i token nell'account del chiamante in base all'ID token e alla quantità specificati. Una percentuale di token dalla quantità coniata viene quindi trasferita al conto token del pool di scambio.
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)
}
Parametri:
  • token_id: string: l'ID del token da zecca.
  • token_quantity: float64: il numero totale di token da mint.
  • percentage_token_to_exchange_pool: float64: la percentuale di token coniati da trasferire all'account token del pool di scambio.
Restituisce:
  • Al successo, un messaggio che indica che la costruzione e il finanziamento del pool di scambio hanno avuto successo.
Esempio di valore restituito:
{
    "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
Questo metodo converte i token dall'account del chiamante all'account specificato dai valori to_token_id, to_org_id e to_user_id. Questo metodo può essere chiamato dal Token Admin del codice concatenato e da qualsiasi proprietario dell'account token. Un utente del pool di scambio non può chiamare questo metodo.
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)
}
Parametri:
  • from_token_id: string: l'ID del token da cui eseguire la conversione.
  • to_token_id: string: l'ID del token in cui eseguire la conversione.
  • to_org_id: string - L'ID MSP (Membership Service Provider) dell'utente nell'organizzazione corrente per ricevere i token.
  • to_user_id: string: il nome utente o l'ID e-mail dell'utente per ricevere i token.
  • token_quantity: float64: il numero totale di token da trasferire.
Restituisce:
  • In caso di operazione riuscita, un messaggio che indica che la conversione del token è riuscita.
Esempio di valore restituito:
{
    "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
Questo metodo restituisce la cronologia di conversione del token per un account token specificato. Questo metodo può essere chiamato dal Token Admin del codice concatenato, un Org Admin dell'organizzazione specificata e dal proprietario dell'account token.
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)
}
Parametri:
  • token_id: string: l'ID del token.
  • org_id: string - L'ID MSP (Membership Service Provider) dell'utente nell'organizzazione corrente.
  • user_id: string: il nome utente o l'ID e-mail dell'utente.
Restituisce:
  • In caso di operazione riuscita, un oggetto JSON con dettagli della cronologia delle conversioni.
Esempio di valore restituito:
[
    {
        "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
Questo metodo restituisce la cronologia del tasso di conversione del token per una coppia di token. Questo metodo può essere chiamato dal Token Admin del codice concatenato, da qualsiasi Org Admin e da qualsiasi proprietario dell'account token.
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)
}
Parametri:
  • from_token_id: string – L'ID del token da cui convertire, allo scopo di calcolare il tasso di conversione.
  • to_token_id: string – L'ID del token in cui effettuare la conversione, ai fini del calcolo del tasso di conversione.
Restituisce:
  • In caso di operazione riuscita, un oggetto JSON con dettagli sulla cronologia del tasso di conversione.
Esempio di valore restituito:
[
  {
    "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
Questo metodo restituisce i valori org_id e user_id per l'utente del pool di scambio. Questo metodo può essere chiamato solo da un Token Admin del codice concatenato.
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()
}
Parametri:
  • nessuno
Restituisce:
  • In caso di operazione riuscita, un messaggio con informazioni sull'utente del pool di scambio.
Esempio di valore restituito:
{
    "AssetType": "oconversion",
    "ConvertorId": "bcb1f3b1442c625d3ce205660c5e717c5858a1fe1e12c325df799a851ceaa09b",
    "OrgId": "Org1MSP",
    "UserId": "exchangepooluser"
}
InitializeExchangePoolUser
Questo metodo inizializza l'utente del pool di scambio, che è un'attività occasionale. Questo metodo può essere chiamato solo da un Token Admin del codice concatenato.
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)
}
Parametri:
  • org_id: string - L'ID MSP (Membership Service Provider) dell'utente nell'organizzazione corrente.
  • user_id: string: il nome utente o l'ID e-mail dell'utente.
Restituisce:
  • In caso di operazione riuscita, un messaggio che include i dettagli dell'utente del pool di scambio.
Esempio di valore restituito:
{
    "AssetType": "oconversion",
    "ConvertorId": "bcb1f3b1442c625d3ce205660c5e717c5858a1fe1e12c325df799a851ceaa09b",
    "OrgId": "Org1MSP",
    "UserId": "exchangepooluser"
}
CreateExchangePoolAccounts
Questo metodo crea account di token del pool di scambio per un determinato array di ID token. Questo metodo può essere chiamato solo da un Token Admin del codice concatenato.
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)
}
Parametri:
  • token_ids: string []: array di ID token. È possibile specificare fino a dieci ID token.
Restituisce:
  • In caso di operazione riuscita, un elenco di oggetti che include i dettagli dei conti del pool di scambio creati.
Esempio di valore restituito:
[
    {
        "AccountId": "oaccount~cc9d84f6d4a5976532493ef5200c9603e138adc35166ffd5fd1aad9c1647f034",
        "Status": "created",
        "TokenId": "USD"
    },
    {
        "AccountId": "oaccount~3d4933111ec8bd6cc1ebb43f2b2c390deb929cfa534f9c6ada8e63bac04a13c0",
        "Status": "created",
        "TokenId": "INR"
    }
]
AddConversionRate
Questo metodo aggiunge un tasso di conversione per una coppia di token. Il tasso di conversione del token può essere specificato fino a otto posizioni decimali. Questo metodo può essere chiamato solo da un Token Admin del codice concatenato.
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)
}
Parametri:
  • from_token_id: string: l'ID del token da cui eseguire la conversione.
  • to_token_id: string: l'ID del token in cui eseguire la conversione.
  • token_conversion_rate: float64: la velocità con cui convertire il token from_token_id nel token to_token_id.
Restituisce:
  • In caso di operazione riuscita, una rappresentazione JSON dell'oggetto tasso di conversione.
Esempio di valore restituito:
{
    "AssetType": "oconversionRate",
    "ConvertorRateId": "oconversionRate~79eacc670928bbc4c9ba4ebee135c8b4d6411af3110f8a9b782c383d5e18b150",
    "FromTokenId": "USD",
    "ToTokenId": "INR",
    "ConversionRate": 10
}
GetConversionRate
Questo metodo ottiene il tasso di conversione corrente per una coppia di token. Questo metodo può essere chiamato da Token Admin o Token Auditor, un Org Admin o Org Auditor dell'organizzazione specificata, o da qualsiasi proprietario dell'account token.
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)
}
Parametri:
  • from_token_id: string: l'ID del token da cui eseguire la conversione.
  • to_token_id: string: l'ID del token in cui eseguire la conversione.
Restituisce:
  • In caso di operazione riuscita, una rappresentazione JSON dell'oggetto tasso di conversione.
Esempio di valore restituito:
{
    "AssetType": "oconversionRate",
    "ConvertorRateId": "oconversionRate~79eacc670928bbc4c9ba4ebee135c8b4d6411af3110f8a9b782c383d5e18b150",
    "FromTokenId": "USD",
    "ToTokenId": "INR",
    "ConversionRate": 10
}
UpdateConversionRate
Questo metodo aggiorna il tasso di conversione corrente per una coppia di token. Il tasso di conversione del token può essere specificato fino a otto posizioni decimali. Questo metodo può essere chiamato solo da un Token Admin del codice concatenato.
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)
}
Parametri:
  • from_token_id: string: l'ID del token da cui eseguire la conversione.
  • to_token_id: string: l'ID del token in cui eseguire la conversione.
  • token_conversion_rate: float64: la velocità con cui convertire il token from_token_id nel token to_token_id.
Restituisce:
  • In caso di operazione riuscita, una rappresentazione JSON dell'oggetto tasso di conversione aggiornato.
Esempio di valore restituito:
{
    "AssetType": "oconversionRate",
    "ConvertorRateId": "oconversionRate~79eacc670928bbc4c9ba4ebee135c8b4d6411af3110f8a9b782c383d5e18b150",
    "FromTokenId": "USD",
    "ToTokenId": "INR",
    "ConversionRate": 15
}
MintWithFundingExchangePool
Questo metodo estrae i token nell'account del chiamante in base all'ID token e alla quantità specificati. Una percentuale di token dalla quantità coniata viene quindi trasferita al conto token del pool di scambio.
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)
}
Parametri:
  • token_id: string: l'ID del token da zecca.
  • token_quantity: float64: il numero totale di token da mint.
  • percentage_token_to_exchange_pool: float64: la percentuale di token coniati da trasferire all'account token del pool di scambio.
Restituisce:
  • Al successo, un messaggio che indica che la costruzione e il finanziamento del pool di scambio hanno avuto successo.
Esempio di valore restituito:
{
    "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
Questo metodo converte i token dall'account del chiamante all'account specificato dai valori to_token_id, to_org_id e to_user_id. Questo metodo può essere chiamato dal Token Admin del codice concatenato e da qualsiasi proprietario dell'account token. Un utente del pool di scambio non può chiamare questo metodo.
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)
}
Parametri:
  • from_token_id: string: l'ID del token da cui eseguire la conversione.
  • to_token_id: string: l'ID del token in cui eseguire la conversione.
  • to_org_id: string - L'ID MSP (Membership Service Provider) dell'utente nell'organizzazione corrente per ricevere i token.
  • to_user_id: string: il nome utente o l'ID e-mail dell'utente per ricevere i token.
  • token_quantity: float64: il numero totale di token da trasferire.
Restituisce:
  • In caso di operazione riuscita, un messaggio che indica che la conversione del token è riuscita.
Esempio di valore restituito:
{
    "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
Questo metodo restituisce la cronologia di conversione del token per un account token specificato. Questo metodo può essere chiamato da Token Admin o Token Auditor, un Org Admin o Org Auditor dell'organizzazione specificata e dal proprietario dell'account specificato.
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)
}
Parametri:
  • token_id: string: l'ID del token.
  • org_id: string - L'ID MSP (Membership Service Provider) dell'utente nell'organizzazione corrente.
  • user_id: string: il nome utente o l'ID e-mail dell'utente.
Restituisce:
  • In caso di operazione riuscita, un oggetto JSON con dettagli della cronologia delle conversioni.
Esempio di valore restituito:
[
    {
        "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
Questo metodo restituisce la cronologia del tasso di conversione del token per una coppia di token. Questo metodo può essere chiamato da Token Admin, Token Auditor, Org Admin, Org Auditor o da qualsiasi proprietario dell'account token.
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)
}
Parametri:
  • from_token_id: string – L'ID del token da cui convertire, allo scopo di calcolare il tasso di conversione.
  • to_token_id: string – L'ID del token in cui effettuare la conversione, ai fini del calcolo del tasso di conversione.
Restituisce:
  • In caso di operazione riuscita, un oggetto JSON con dettagli sulla cronologia del tasso di conversione.
Esempio di valore restituito:
[
  {
    "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
Questo metodo restituisce i valori org_id e user_id per l'utente del pool di scambio. Questo metodo può essere chiamato solo da un Token Admin o Token Auditor del codice concatenato.
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()
}
Parametri:
  • nessuno
Restituisce:
  • In caso di operazione riuscita, un messaggio con informazioni sull'utente del pool di scambio.
Esempio di valore restituito:
{
    "AssetType": "oconversion",
    "ConvertorId": "bcb1f3b1442c625d3ce205660c5e717c5858a1fe1e12c325df799a851ceaa09b",
    "OrgId": "Org1MSP",
    "UserId": "exchangepooluser"
}

Metodi SDK conversione token

InitializeExchangePoolUser
Questo metodo inizializza l'utente del pool di scambio, che è un'attività occasionale. Questo metodo può essere chiamato solo da un Token Admin del codice concatenato.
Ctx.TokenConvertor.InitializeExchangePoolUser(org_id string, user_id string) (interface{}, error)
Parametri:
  • org_id: string - L'ID MSP (Membership Service Provider) dell'utente nell'organizzazione corrente.
  • user_id: string: il nome utente o l'ID e-mail dell'utente.
Restituisce:
  • In caso di operazione riuscita, un messaggio che include i dettagli dell'utente del pool di scambio.
Esempio di valore restituito:
{
    "AssetType": "oconversion",
    "ConvertorId": "bcb1f3b1442c625d3ce205660c5e717c5858a1fe1e12c325df799a851ceaa09b",
    "OrgId": "Org1MSP",
    "UserId": "exchangepooluser"
}
CreateExchangePoolAccounts
Questo metodo crea account di token del pool di scambio per un determinato array di ID token. Questo metodo può essere chiamato solo da un Token Admin del codice concatenato.
Ctx.TokenConvertor.CreateExchangePoolAccounts(tokens []interface{}) (interface{}, error)
Parametri:
  • token_ids: string []: array di ID token.
Restituisce:
  • In caso di operazione riuscita, un elenco di oggetti che include i dettagli dei conti del pool di scambio creati.
Esempio di valore restituito:
[
    {
        "AccountId": "oaccount~cc9d84f6d4a5976532493ef5200c9603e138adc35166ffd5fd1aad9c1647f034",
        "Status": "created",
        "TokenId": "USD"
    },
    {
        "AccountId": "oaccount~3d4933111ec8bd6cc1ebb43f2b2c390deb929cfa534f9c6ada8e63bac04a13c0",
        "Status": "created",
        "TokenId": "INR"
    }
]
AddConversionToken
Questo metodo aggiunge token con un nuovo tasso di conversione per un token specificato. Il tasso di conversione del token può essere specificato fino a otto posizioni decimali. Questo metodo può essere chiamato solo da un Token Admin del codice concatenato.
Ctx.TokenConvertor.AddConversionToken(from_token_id string, to_token_id string, token_conversion_rate float64) (interface{}, error)
Parametri:
  • from_token_id: string: l'ID del token da cui eseguire la conversione.
  • to_token_id: string: l'ID del token in cui eseguire la conversione.
  • token_conversion_rate: float64: la velocità con cui convertire il token from_token_id nel token to_token_id.
Restituisce:
  • In caso di operazione riuscita, una rappresentazione JSON dell'oggetto tasso di conversione.
Esempio di valore restituito:
{
    "AssetType": "oconversionRate",
    "ConvertorRateId": "oconversionRate~79eacc670928bbc4c9ba4ebee135c8b4d6411af3110f8a9b782c383d5e18b150",
    "FromTokenId": "USD",
    "ToTokenId": "INR",
    "ConversionRate": 10
}
Get
Questo metodo ottiene il tasso di conversione corrente per una coppia di token. Questo metodo può essere chiamato dal Token Admin del codice concatenato e da qualsiasi proprietario dell'account token.
Ctx.TokenConversionRate.Get(id string) (ConversionRate, error)
Parametri:
  • id: string: l'ID dell'oggetto tasso di conversione token.
Restituisce:
  • In caso di operazione riuscita, una rappresentazione JSON dell'oggetto tasso di conversione.
Esempio di valore restituito:
{
    "AssetType": "oconversionRate",
    "ConvertorRateId": "oconversionRate~79eacc670928bbc4c9ba4ebee135c8b4d6411af3110f8a9b782c383d5e18b150",
    "FromTokenId": "USD",
    "ToTokenId": "INR",
    "ConversionRate": 10
}
UpdateTokenConversionRate
Questo metodo aggiorna il tasso di conversione corrente per una coppia di token. Il tasso di conversione del token può essere specificato fino a otto posizioni decimali. Questo metodo può essere chiamato solo da un Token Admin del codice concatenato.
Ctx.TokenConvertor.UpdateTokenConversionRate(from_token_id string, to_token_id string, token_conversion_rate float64) (interface{}, error)
Parametri:
  • from_token_id: string: l'ID del token da cui eseguire la conversione.
  • to_token_id: string: l'ID del token in cui eseguire la conversione.
  • token_conversion_rate: float64: la velocità con cui convertire il token from_token_id nel token to_token_id.
Restituisce:
  • In caso di operazione riuscita, una rappresentazione JSON dell'oggetto tasso di conversione aggiornato.
Esempio di valore restituito:
{
    "AssetType": "oconversionRate",
    "ConvertorRateId": "oconversionRate~79eacc670928bbc4c9ba4ebee135c8b4d6411af3110f8a9b782c383d5e18b150",
    "FromTokenId": "USD",
    "ToTokenId": "INR",
    "ConversionRate": 15
}
MintWithFundingExchangePool
Questo metodo estrae i token nell'account del chiamante in base all'ID token e alla quantità specificati. Una percentuale di token dalla quantità coniata viene quindi trasferita al conto token del pool di scambio.
Ctx.TokenConvertor.MintWithFundingExchangePool(token interface{}, token_quantity float64, percentage_token_to_exchangePool float64) (interface{}, error)
Parametri:
  • token_id: string: l'ID del token da zecca.
  • token_quantity: float64: il numero totale di token da mint.
  • percentage_token_to_exchange_pool: float64: la percentuale di token coniati da trasferire all'account token del pool di scambio.
Restituisce:
  • Al successo, un messaggio che indica che la costruzione e il finanziamento del pool di scambio hanno avuto successo.
Esempio di valore restituito:
{
    "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
Questo metodo converte i token dall'account del chiamante all'account specificato dai valori to_token_id, to_org_id e to_user_id. Questo metodo può essere chiamato dal Token Admin del codice concatenato e da qualsiasi proprietario dell'account token. Un utente del pool di scambio non può chiamare questo metodo.
Ctx.TokenConvertor.TokenConversion(from_token interface{}, to_token interface{}, to_org_id string, to_user_id string, token_quantity float64) (interface{}, error)
Parametri:
  • from_token_id: string: l'ID del token da cui eseguire la conversione.
  • to_token_id: string: l'ID del token in cui eseguire la conversione.
  • to_org_id: string - L'ID MSP (Membership Service Provider) dell'utente nell'organizzazione corrente per ricevere i token.
  • to_user_id: string: il nome utente o l'ID e-mail dell'utente per ricevere i token.
Restituisce:
  • In caso di operazione riuscita, un messaggio che indica che la conversione del token è riuscita.
Esempio di valore restituito:
{
    "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
Questo metodo restituisce la cronologia di conversione del token per un account token specificato. Questo metodo può essere chiamato dal Token Admin del codice concatenato e dal proprietario dell'account token.
Ctx.Account.GetTokenConversionHistory(account_id string, org_id string, user_id string) (interface{}, error)
Parametri:
  • account_id: string: l'ID dell'account token fungibile.
  • org_id: string - L'ID MSP (Membership Service Provider) dell'utente nell'organizzazione corrente.
  • user_id: string: il nome utente o l'ID e-mail dell'utente.
Restituisce:
  • In caso di operazione riuscita, un oggetto JSON con dettagli della cronologia delle conversioni.
Esempio di valore restituito:
[
    {
        "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
Questo metodo restituisce la cronologia del tasso di conversione del token per una coppia di token. Questo metodo può essere chiamato dal Token Admin del codice concatenato, da qualsiasi Org Admin e da qualsiasi proprietario dell'account token.
Ctx.TokenConversionRate.History(conversion_rate_id string) (interface{}, error)
Parametri:
  • conversion_rate_id: string: l'ID dell'oggetto tasso di conversione.
Restituisce:
  • In caso di operazione riuscita, un oggetto JSON con dettagli sulla cronologia del tasso di conversione.
Esempio di valore restituito:
[
  {
    "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
Questo metodo restituisce i valori org_id e user_id per l'utente del pool di scambio. Questo metodo può essere chiamato solo da un Token Admin del codice concatenato.
Ctx.TokenConvertor.GetExchangePoolUser()
Parametri:
  • nessuno
Restituisce:
  • In caso di operazione riuscita, un messaggio con informazioni sull'utente del pool di scambio.
Esempio di valore restituito:
{
    "AssetType": "oconversion",
    "ConvertorId": "bcb1f3b1442c625d3ce205660c5e717c5858a1fe1e12c325df799a851ceaa09b",
    "OrgId": "Org1MSP",
    "UserId": "exchangepooluser"
}