Metodi TypeScript per la conversione del 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 del controller devono avere un decoratore @Validator(...params) da richiamare.

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.
@Validator(yup.string(), yup.string())
public async initializeExchangePoolUser(org_id: string, user_id: string){
    await this.Ctx.Auth.checkAuthorization('TOKEN_CONVERSION.initializeExchangePoolUser', 'TOKEN');
    return await this.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",
    "convertor_id": "bcb1f3b1442c625d3ce205660c5e717c5858a1fe1e12c325df799a851ceaa09b",
    "org_id": "Org1MSP",
    "user_id": "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.
@Validator(yup.array().of(yup.string()))
public async createExchangePoolAccounts(token_ids: string[]){
    await this.Ctx.Auth.checkAuthorization('TOKEN_CONVERSION.initializeExchangePoolUser', 'TOKEN');
    return await this.Ctx.TokenConvertor.createExchangePoolAccounts(token_ids);
}
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:
[
  {
    "account_id": "oaccount~cc9d84f6d4a5976532493ef5200c9603e138adc35166ffd5fd1aad9c1647f034",
    "token_id": "USD",
    "status": "created"
  },
  {
    "account_id": "oaccount~3d4933111ec8bd6cc1ebb43f2b2c390deb929cfa534f9c6ada8e63bac04a13c0",
    "token_id": "INR",
    "status": "created"
  }
]
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.
@Validator(yup.string(), yup.string(), yup.number())
public async addConversionRate(from_token_id:string , to_token_id:string, token_conversion_rate: number) {
   await this.Ctx.Auth.checkAuthorization('TOKEN_CONVERSION.addConversionRate', 'TOKEN');
   return await this.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: number: 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",
  "conversion_rate_id": "oconversionRate~91c7eeb0614e7a50b1d5ecad559fcbc80b94034648bf405c9491dacf8d57873b",
  "from_token_id": "USD",
  "to_token_id": "INR",
  "conversion_rate": 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.
@Validator(yup.string(), yup.string())
public async getConversionRate(from_token_id:string , to_token_id:string) {
    await this.Ctx.Auth.checkAuthorization('TOKEN_CONVERSION.getConversionRate', 'TOKEN');
    const conversion_rate_id = await this.Ctx.TokenConversionRate.getConversionRateId(from_token_id, to_token_id);
    return await this.Ctx.TokenConversionRate.get(conversion_rate_id);
}
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",
  "conversion_rate_id": "oconversionRate~91c7eeb0614e7a50b1d5ecad559fcbc80b94034648bf405c9491dacf8d57873b",
  "from_token_id": "USD",
  "to_token_id": "INR",
  "conversion_rate": 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.
@Validator(yup.string(), yup.string(), yup.number())
public async updateConversionRate(from_token_id:string , to_token_id:string, token_conversion_rate: number) {
    await this.Ctx.Auth.checkAuthorization('TOKEN_CONVERSION.updateConversionRate', 'TOKEN');
    return await this.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: number: 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",
  "conversion_rate_id": "oconversionRate~91c7eeb0614e7a50b1d5ecad559fcbc80b94034648bf405c9491dacf8d57873b",
  "from_token_id": "USD",
  "to_token_id": "INR",
  "conversion_rate": 20
}
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.
@Validator(yup.string(), yup.number(), yup.number())
public async mintWithFundingExchangePool(token_id: string, token_quantity: number, percentage_token_to_exchange_pool: number) {
    return await this.Ctx.TokenConvertor.mintWithFundingExchangePool(token_id, token_quantity, percentage_token_to_exchange_pool);
}
Parametri:
  • token_id: string: l'ID del token da zecca.
  • token_quantity: number: il numero totale di token da mint.
  • percentage_token_to_exchange_pool: number: 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 Account Id: oaccount~abc74791148b761352b98df58035601b6f5480448ac2b4a3a7eb54bdbebf48eb (Org-Id: Org1MSP, User-Id: admin) and Successfully transfered 20 tokens to exchange pool Account with Account Id: oaccount~cc9d84f6d4a5976532493ef5200c9603e138adc35166ffd5fd1aad9c1647f034 (Org-Id: Org1MSP, User-Id: 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.
@Validator(yup.string(),yup.string(),yup.string(),yup.string(),yup.number())
public async tokenConversion(from_token_id:string, to_token_id:string, to_org_id:string, to_user_id:string, token_quantity:number){
    await this.Ctx.Auth.checkAuthorization('TOKEN_CONVERSION.tokenConversion', 'TOKEN');
    return await this.Ctx.TokenConvertor.tokenConversion(from_token_id,to_token_id,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: number: 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 (Org-Id: Org1MSP, User-Id: admin) to 100 of tokens with tokenId: [INR] to AccountId: oaccount~25e2e66718b6dbb59aea9c32acebec60e09d912b2578d4933d377ae5d0628f1e (Org-Id: Org1MSP, User-Id: user) as per the conversion rate of 20"
}
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, o dal proprietario dell'account token.
@Validator(yup.string(), yup.string(), yup.string())
  public async getConversionHistory(token_id: string, org_id: string, user_id: string) {
    const account_id = await this.Ctx.Account.generateAccountId(token_id, org_id, user_id);
    await this.Ctx.Auth.checkAuthorization("ACCOUNT.getConversionHistory", "TOKEN", { account_id });
    return await this.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:
[
  {
    "transaction_id": "otransaction~34edd19e03ec8bbbc77bc3372081410a824a5c10f9aa522b3a6390d7e8cb11cf",
    "from_account_id": "oaccount~abc74791148b761352b98df58035601b6f5480448ac2b4a3a7eb54bdbebf48eb",
    "to_account_id": "oaccount~25e2e66718b6dbb59aea9c32acebec60e09d912b2578d4933d377ae5d0628f1e",
    "transacted_amount": 5,
    "converted_amount": 100,
    "conversion_rate": "20",
    "from_token_id": "USD",
    "to_token_id": "INR",
    "balance": 75,
    "onhold_balance": 0,
    "timestamp": "2022-11-30T11:03:20.000Z",
    "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.
@Validator(yup.string(), yup.string())
public async getConversionRateHistory(from_token_id:string , to_token_id:string) {
    const conversion_rate_id = await this.Ctx.TokenConversionRate.getConversionRateId(from_token_id,to_token_id);
    await this.Ctx.Auth.checkAuthorization('TOKEN_CONVERSION.getConversionRateHistory', 'TOKEN');  
    return await this.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:
 [
  {
    "trxId": "0b1ba7bc2620e1438b6580365e5c0ab852247ccfa5a3eb2157d3baca02c0e521",
    "timeStamp": "2022-11-30T10:23:38.000Z",
    "value": {
      "assetType": "oconversionRate",
      "conversion_rate_id": "oconversionRate~91c7eeb0614e7a50b1d5ecad559fcbc80b94034648bf405c9491dacf8d57873b",
      "from_token_id": "USD",
      "to_token_id": "INR",
      "conversion_rate": 20
    }
  },
  {
    "trxId": "36fc40ddb3d8308ee7e156af700da131d78d941fe390fc57985b7589e7035d5c",
    "timeStamp": "2022-11-30T10:13:18.000Z",
    "value": {
      "assetType": "oconversionRate",
      "conversion_rate_id": "oconversionRate~91c7eeb0614e7a50b1d5ecad559fcbc80b94034648bf405c9491dacf8d57873b",
      "from_token_id": "USD",
      "to_token_id": "INR",
      "conversion_rate": 10
    }
  }
]
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.
@Validator()
public async getExchangePoolUser() {
    await this.Ctx.Auth.checkAuthorization('TOKEN_CONVERSION.getExchangePoolUser', 'TOKEN');
    return await this.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",
   "convertor_id": "bcb1f3b1442c625d3ce205660c5e717c5858a1fe1e12c325df799a851ceaa09b",
   "org_id": "Org1MSP",
   "user_id": "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.
@Validator(yup.string(), yup.string())
public async initializeExchangePoolUser(org_id: string, user_id: string){
    await this.Ctx.Auth.checkAuthorization('TOKEN_CONVERSION.initializeExchangePoolUser', 'TOKEN');
    return await this.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",
    "convertor_id": "bcb1f3b1442c625d3ce205660c5e717c5858a1fe1e12c325df799a851ceaa09b",
    "org_id": "Org1MSP",
    "user_id": "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.
@Validator(yup.array().of(yup.string()))
public async createExchangePoolAccounts(token_ids: string[]){
    await this.Ctx.Auth.checkAuthorization('TOKEN_CONVERSION.initializeExchangePoolUser', 'TOKEN');
    return await this.Ctx.TokenConvertor.createExchangePoolAccounts(token_ids);
}
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:
[
  {
    "account_id": "oaccount~cc9d84f6d4a5976532493ef5200c9603e138adc35166ffd5fd1aad9c1647f034",
    "token_id": "USD",
    "status": "created"
  },
  {
    "account_id": "oaccount~3d4933111ec8bd6cc1ebb43f2b2c390deb929cfa534f9c6ada8e63bac04a13c0",
    "token_id": "INR",
    "status": "created"
  }
]
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.
@Validator(yup.string(), yup.string(), yup.number())
public async addConversionRate(from_token_id:string , to_token_id:string, token_conversion_rate: number) {
   await this.Ctx.Auth.checkAuthorization('TOKEN_CONVERSION.addConversionRate', 'TOKEN');
   return await this.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: number: 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",
  "conversion_rate_id": "oconversionRate~91c7eeb0614e7a50b1d5ecad559fcbc80b94034648bf405c9491dacf8d57873b",
  "from_token_id": "USD",
  "to_token_id": "INR",
  "conversion_rate": 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 e da qualsiasi proprietario dell'account token.
@Validator(yup.string(), yup.string())
public async getConversionRate(from_token_id:string , to_token_id:string) {
    await this.Ctx.Auth.checkAuthorization('TOKEN_CONVERSION.getConversionRate', 'TOKEN');
    const conversion_rate_id = await this.Ctx.TokenConversionRate.getConversionRateId(from_token_id, to_token_id);
    return await this.Ctx.TokenConversionRate.get(conversion_rate_id);
}
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",
  "conversion_rate_id": "oconversionRate~91c7eeb0614e7a50b1d5ecad559fcbc80b94034648bf405c9491dacf8d57873b",
  "from_token_id": "USD",
  "to_token_id": "INR",
  "conversion_rate": 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.
@Validator(yup.string(), yup.string(), yup.number())
public async updateConversionRate(from_token_id:string , to_token_id:string, token_conversion_rate: number) {
    await this.Ctx.Auth.checkAuthorization('TOKEN_CONVERSION.updateConversionRate', 'TOKEN');
    return await this.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: number: 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",
  "conversion_rate_id": "oconversionRate~91c7eeb0614e7a50b1d5ecad559fcbc80b94034648bf405c9491dacf8d57873b",
  "from_token_id": "USD",
  "to_token_id": "INR",
  "conversion_rate": 20
}
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.
@Validator(yup.string(), yup.number(), yup.number())
public async mintWithFundingExchangePool(token_id: string, token_quantity: number, percentage_token_to_exchange_pool: number) {
    return await this.Ctx.TokenConvertor.mintWithFundingExchangePool(token_id, token_quantity, percentage_token_to_exchange_pool);
}
Parametri:
  • token_id: string: l'ID del token da zecca.
  • token_quantity: number: il numero totale di token da mint.
  • percentage_token_to_exchange_pool: number: 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 Account Id: oaccount~abc74791148b761352b98df58035601b6f5480448ac2b4a3a7eb54bdbebf48eb (Org-Id: Org1MSP, User-Id: admin) and Successfully transfered 20 tokens to exchange pool Account with Account Id: oaccount~cc9d84f6d4a5976532493ef5200c9603e138adc35166ffd5fd1aad9c1647f034 (Org-Id: Org1MSP, User-Id: 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.
@Validator(yup.string(),yup.string(),yup.string(),yup.string(),yup.number())
public async tokenConversion(from_token_id:string, to_token_id:string, to_org_id:string, to_user_id:string, token_quantity:number){
    await this.Ctx.Auth.checkAuthorization('TOKEN_CONVERSION.tokenConversion', 'TOKEN');
    return await this.Ctx.TokenConvertor.tokenConversion(from_token_id,to_token_id,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: number: 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 (Org-Id: Org1MSP, User-Id: admin) to 100 of tokens with tokenId: [INR] to AccountId: oaccount~25e2e66718b6dbb59aea9c32acebec60e09d912b2578d4933d377ae5d0628f1e (Org-Id: Org1MSP, User-Id: user) as per the conversion rate of 20"
}
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, o dal proprietario dell'account token.
@Validator(yup.string(), yup.string(), yup.string())
  public async getConversionHistory(token_id: string, org_id: string, user_id: string) {
    const account_id = await this.Ctx.Account.generateAccountId(token_id, org_id, user_id);
    await this.Ctx.Auth.checkAuthorization("ACCOUNT.getConversionHistory", "TOKEN", { account_id });
    return await this.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:
[
  {
    "transaction_id": "otransaction~34edd19e03ec8bbbc77bc3372081410a824a5c10f9aa522b3a6390d7e8cb11cf",
    "from_account_id": "oaccount~abc74791148b761352b98df58035601b6f5480448ac2b4a3a7eb54bdbebf48eb",
    "to_account_id": "oaccount~25e2e66718b6dbb59aea9c32acebec60e09d912b2578d4933d377ae5d0628f1e",
    "transacted_amount": 5,
    "converted_amount": 100,
    "conversion_rate": "20",
    "from_token_id": "USD",
    "to_token_id": "INR",
    "balance": 75,
    "onhold_balance": 0,
    "timestamp": "2022-11-30T11:03:20.000Z",
    "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 o Token Auditor, un Org Admin o Org Auditor dell'organizzazione specificata e da qualsiasi proprietario dell'account token.
@Validator(yup.string(), yup.string())
public async getConversionRateHistory(from_token_id:string , to_token_id:string) {
    const conversion_rate_id = await this.Ctx.TokenConversionRate.getConversionRateId(from_token_id,to_token_id);
    await this.Ctx.Auth.checkAuthorization('TOKEN_CONVERSION.getConversionRateHistory', 'TOKEN');  
    return await this.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:
 [
  {
    "trxId": "0b1ba7bc2620e1438b6580365e5c0ab852247ccfa5a3eb2157d3baca02c0e521",
    "timeStamp": "2022-11-30T10:23:38.000Z",
    "value": {
      "assetType": "oconversionRate",
      "conversion_rate_id": "oconversionRate~91c7eeb0614e7a50b1d5ecad559fcbc80b94034648bf405c9491dacf8d57873b",
      "from_token_id": "USD",
      "to_token_id": "INR",
      "conversion_rate": 20
    }
  },
  {
    "trxId": "36fc40ddb3d8308ee7e156af700da131d78d941fe390fc57985b7589e7035d5c",
    "timeStamp": "2022-11-30T10:13:18.000Z",
    "value": {
      "assetType": "oconversionRate",
      "conversion_rate_id": "oconversionRate~91c7eeb0614e7a50b1d5ecad559fcbc80b94034648bf405c9491dacf8d57873b",
      "from_token_id": "USD",
      "to_token_id": "INR",
      "conversion_rate": 10
    }
  }
]
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.
@Validator()
public async getExchangePoolUser() {
    await this.Ctx.Auth.checkAuthorization('TOKEN_CONVERSION.getExchangePoolUser', 'TOKEN');
    return await this.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",
   "convertor_id": "bcb1f3b1442c625d3ce205660c5e717c5858a1fe1e12c325df799a851ceaa09b",
   "org_id": "Org1MSP",
   "user_id": "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(orgId: string, userId: string)
Parametri:
  • orgId: string - L'ID MSP (Membership Service Provider) dell'utente nell'organizzazione corrente.
  • userId: 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",
    "convertor_id": "bcb1f3b1442c625d3ce205660c5e717c5858a1fe1e12c325df799a851ceaa09b",
    "org_id": "Org1MSP",
    "user_id": "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(token_ids: string[])
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:
[
  {
    "account_id": "oaccount~cc9d84f6d4a5976532493ef5200c9603e138adc35166ffd5fd1aad9c1647f034",
    "token_id": "USD",
    "status": "created"
  },
  {
    "account_id": "oaccount~3d4933111ec8bd6cc1ebb43f2b2c390deb929cfa534f9c6ada8e63bac04a13c0",
    "token_id": "INR",
    "status": "created"
  }
]
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(fromTokenId: string, toTokenId: string, tokenConversionRate: number)
Parametri:
  • fromTokenId: string: l'ID del token da cui eseguire la conversione.
  • toTokenId: string: l'ID del token in cui eseguire la conversione.
  • tokenConversionRate: number: 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",
  "conversion_rate_id": "oconversionRate~91c7eeb0614e7a50b1d5ecad559fcbc80b94034648bf405c9491dacf8d57873b",
  "from_token_id": "USD",
  "to_token_id": "INR",
  "conversion_rate": 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)
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",
  "conversion_rate_id": "oconversionRate~91c7eeb0614e7a50b1d5ecad559fcbc80b94034648bf405c9491dacf8d57873b",
  "from_token_id": "USD",
  "to_token_id": "INR",
  "conversion_rate": 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(fromTokenId: string, toTokenId: string, tokenConversionRate: number)
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: number: 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",
  "conversion_rate_id": "oconversionRate~91c7eeb0614e7a50b1d5ecad559fcbc80b94034648bf405c9491dacf8d57873b",
  "from_token_id": "USD",
  "to_token_id": "INR",
  "conversion_rate": 20
}
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(tokenId: string, tokenQuantity: number, percentageTokenToExchangePool: number)
Parametri:
  • token_id: string: l'ID del token da zecca.
  • token_quantity: number: il numero totale di token da mint.
  • percentage_token_to_exchange_pool: number: 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 Account Id: oaccount~abc74791148b761352b98df58035601b6f5480448ac2b4a3a7eb54bdbebf48eb (Org-Id: Org1MSP, User-Id: admin) and Successfully transfered 20 tokens to exchange pool Account with Account Id: oaccount~cc9d84f6d4a5976532493ef5200c9603e138adc35166ffd5fd1aad9c1647f034 (Org-Id: Org1MSP, User-Id: 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(fromTokenId: string, toTokenId: string, toOrgId: string, toUserId: string, tokenQuantity: number)
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 (Org-Id: Org1MSP, User-Id: admin) to 100 of tokens with tokenId: [INR] to AccountId: oaccount~25e2e66718b6dbb59aea9c32acebec60e09d912b2578d4933d377ae5d0628f1e (Org-Id: Org1MSP, User-Id: user) as per the conversion rate of 20"
}
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, un Org Admin dell'organizzazione specificata e dal proprietario dell'account token.
Ctx.Account.getTokenConversionHistory(account_id: string, org_id: string, user_id: string)
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:
[
  {
    "transaction_id": "otransaction~34edd19e03ec8bbbc77bc3372081410a824a5c10f9aa522b3a6390d7e8cb11cf",
    "from_account_id": "oaccount~abc74791148b761352b98df58035601b6f5480448ac2b4a3a7eb54bdbebf48eb",
    "to_account_id": "oaccount~25e2e66718b6dbb59aea9c32acebec60e09d912b2578d4933d377ae5d0628f1e",
    "transacted_amount": 5,
    "converted_amount": 100,
    "conversion_rate": "20",
    "from_token_id": "USD",
    "to_token_id": "INR",
    "balance": 75,
    "onhold_balance": 0,
    "timestamp": "2022-11-30T11:03:20.000Z",
    "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)
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:
 [
  {
    "trxId": "0b1ba7bc2620e1438b6580365e5c0ab852247ccfa5a3eb2157d3baca02c0e521",
    "timeStamp": "2022-11-30T10:23:38.000Z",
    "value": {
      "assetType": "oconversionRate",
      "conversion_rate_id": "oconversionRate~91c7eeb0614e7a50b1d5ecad559fcbc80b94034648bf405c9491dacf8d57873b",
      "from_token_id": "USD",
      "to_token_id": "INR",
      "conversion_rate": 20
    }
  },
  {
    "trxId": "36fc40ddb3d8308ee7e156af700da131d78d941fe390fc57985b7589e7035d5c",
    "timeStamp": "2022-11-30T10:13:18.000Z",
    "value": {
      "assetType": "oconversionRate",
      "conversion_rate_id": "oconversionRate~91c7eeb0614e7a50b1d5ecad559fcbc80b94034648bf405c9491dacf8d57873b",
      "from_token_id": "USD",
      "to_token_id": "INR",
      "conversion_rate": 10
    }
  }
]
getExchangePoolUser
Questo metodo restituisce i valori OrgId e UserId 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",
   "convertor_id": "bcb1f3b1442c625d3ce205660c5e717c5858a1fe1e12c325df799a851ceaa09b",
   "org_id": "Org1MSP",
   "user_id": "exchangepooluser"
}