Metodi Go per conversione token

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

I metodi di conversione dei token includono il concetto di pool di scambio. Il conto del pool di scambio è finanziato da altri conti token. Quando si coniano i token, è possibile specificare che una percentuale dei token coniati viene trasferita nel conto del pool di scambio.

Processo di conversione token

Un flusso tipico per la conversione dei token segue i passi riportati di seguito.
  1. Chiamare il metodo InitializeExchangePoolUser per inizializzare l'utente del pool di scambio.
  2. Chiamare il metodo CreateExchangePoolAccounts per creare i conti del pool di scambio. Creare un conto del pool di scambio per ogni tipo di token fungibile dal quale si desidera eseguire la conversione o 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 scambio in uno dei modi seguenti:
    • Trasferire i token ai conti token del pool di scambio utilizzando i metodi di trasferimento standard.
    • Chiama il metodo MintWithFundingExchangePoolToken quando conio token, che può trasferire una percentuale di token coniati a un conto di pool di scambio.
  5. Chiamare il metodo TokenConversion per eseguire la conversione tra due token fungibili. Un singolo utente può convertire i token tra due dei propri account token, oppure 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 ciascun conto 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 convertire tra diversi tipi di token fungibili. I metodi del 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 richiamato 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 del provider di servizi di appartenenza (MSP) dell'utente nell'organizzazione corrente.
  • user_id: string: il nome utente o l'ID di posta elettronica 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 i conti token del pool di scambio per un determinato array di ID token. Questo metodo può essere richiamato 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 []: un array di ID token. È possibile specificare un massimo di dieci ID token.
Restituisce:
  • In caso di operazione riuscita, un elenco di oggetti che include i dettagli degli account 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 richiamato 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 richiamato 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 richiamato 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 coniuga i token nell'account del chiamante in base all'ID e alla quantità del token specificati. Una percentuale di token dalla quantità coniata viene quindi trasferita nel 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 coniare.
  • token_quantity: float64: il numero totale di token da zecca.
  • percentage_token_to_exchange_pool: float64: la percentuale di token coniati da trasferire nel conto token del pool di scambio.
Restituisce:
  • In caso di successo, un messaggio che indica che la convocazione 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 del provider di servizi di appartenenza (MSP) dell'utente nell'organizzazione corrente per la ricezione dei token.
  • to_user_id: string: il nome utente o l'ID di posta elettronica dell'utente per la ricezione dei token.
  • token_quantity: float64: il numero totale di token da trasferire.
Restituisce:
  • In caso di operazione riuscita, viene visualizzato 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 richiamato dal Token Admin del codice concatenato, da un Org Admin dell'organizzazione specificata e dal proprietario del conto 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 del provider di servizi di appartenenza (MSP) dell'utente nell'organizzazione corrente.
  • user_id: string: il nome utente o l'ID di posta elettronica 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 lo storico del tasso di conversione del token per una coppia di token. Questo metodo può essere richiamato 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 eseguire la conversione, ai fini del calcolo del tasso di conversione.
  • to_token_id: string: l'ID del token in cui eseguire la conversione, ai fini del calcolo del tasso di conversione.
Restituisce:
  • In caso di operazione riuscita, un oggetto JSON con dettagli della 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 richiamato 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"
}

Metodi SDK conversione token

InitializeExchangePoolUser
Questo metodo inizializza l'utente del pool di scambio, che è un'attività occasionale. Questo metodo può essere richiamato 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 del provider di servizi di appartenenza (MSP) dell'utente nell'organizzazione corrente.
  • user_id: string: il nome utente o l'ID di posta elettronica 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 i conti token del pool di scambio per un determinato array di ID token. Questo metodo può essere richiamato solo da un Token Admin del codice concatenato.
Ctx.TokenConvertor.CreateExchangePoolAccounts(tokens []interface{}) (interface{}, error)
Parametri:
  • token_ids: string []: un array di ID token.
Restituisce:
  • In caso di operazione riuscita, un elenco di oggetti che include i dettagli degli account 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 richiamato 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 del 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 richiamato 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 coniuga i token nell'account del chiamante in base all'ID e alla quantità del token specificati. Una percentuale di token dalla quantità coniata viene quindi trasferita nel 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 coniare.
  • token_quantity: float64: il numero totale di token da zecca.
  • percentage_token_to_exchange_pool: float64: la percentuale di token coniati da trasferire nel conto token del pool di scambio.
Restituisce:
  • In caso di successo, un messaggio che indica che la convocazione 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 del provider di servizi di appartenenza (MSP) dell'utente nell'organizzazione corrente per la ricezione dei token.
  • to_user_id: string: il nome utente o l'ID di posta elettronica dell'utente per la ricezione dei token.
Restituisce:
  • In caso di operazione riuscita, viene visualizzato 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 del token fungibile.
  • org_id: string: l'ID del provider di servizi di appartenenza (MSP) dell'utente nell'organizzazione corrente.
  • user_id: string: il nome utente o l'ID di posta elettronica 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 lo storico del tasso di conversione del token per una coppia di token. Questo metodo può essere richiamato 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 della 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 richiamato 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"
}