TypeScript Métodos para la Conversión de Token

Blockchain App Builder genera automáticamente métodos que puede utilizar para convertir tokens fungibles que utilizan el estándar Token Taxonomy Framework.

Los métodos de conversión de token incluyen el concepto de agrupación de intercambio. La cuenta de grupo de intercambio se financia con otras cuentas de token. Al acuñar tokens, puede especificar que un porcentaje de los tokens acuñados se transfiera a la cuenta de grupo de intercambio.

Proceso de conversión de token

Un flujo típico para convertir tokens sigue estos pasos:
  1. Llame al método initializeExchangePoolUser para inicializar el usuario del pool de intercambio.
  2. Llame al método createExchangePoolAccounts para crear cuentas de grupo de intercambio. Cree una cuenta de grupo de intercambio para cada tipo de token fungible del que desee convertir o convertir.
  3. Llame al método addConversionRate para establecer la tasa de conversión de cada par de tokens entre los que desea convertir.
  4. Financie las cuentas de token de grupo de intercambio de una de las siguientes maneras:
    • Transfiera tokens a las cuentas de token de grupo de intercambio mediante los métodos de transferencia estándar.
    • Llame al método mintWithFundingExchangePoolToken al extraer tokens, que pueden transferir un porcentaje de tokens acuñados a una cuenta de grupo de intercambio.
  5. Llame al método tokenConversion para convertir entre dos tokens fungibles. Un solo usuario puede convertir tokens entre dos de sus cuentas de token, o un par de usuarios puede convertir tokens directamente de una cuenta a otra.
  6. El usuario de grupo de intercambio puede consultar los saldos de cuenta de grupo de intercambio y las transacciones de cuenta.
    • Llame al método getAccount para ver los saldos de cada una de las cuentas de token de pool de intercambio.
    • Llame a los métodos getAccountTransactionHistory y getAccountTransactionHistoryWithFilters para ver las transacciones de cuenta de cada una de las cuentas de token de pool de intercambio.

Métodos de conversión de token generados automáticamente

Blockchain App Builder genera automáticamente métodos para convertir entre diferentes tipos de tokens fungibles. Los métodos de controlador deben tener un decorador @Validator(...params) que se pueda invocar.

initializeExchangePoolUser
Este método inicializa el usuario del pool de intercambio, que es una actividad puntual. Este método solo puede ser llamado por un Token Admin del código de cadena.
@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);
}
Parámetros:
  • org_id: string: ID del proveedor de servicios de afiliación (MSP) del usuario de la organización actual.
  • user_id: string: nombre de usuario o ID de correo electrónico del usuario.
Devuelve:
  • En caso de éxito, un mensaje que incluye detalles del usuario del pool de intercambio.
Ejemplo de valor devuelto:
{
    "assetType": "oconversion",
    "convertor_id": "bcb1f3b1442c625d3ce205660c5e717c5858a1fe1e12c325df799a851ceaa09b",
    "org_id": "Org1MSP",
    "user_id": "exchangepooluser"
}
createExchangePoolAccounts
Este método crea cuentas de token de grupo de intercambio para una matriz determinada de ID de token. Este método solo puede ser llamado por un Token Admin del código de cadena.
@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);
}
Parámetros:
  • token_ids: string []: matriz de ID de token.
Devuelve:
  • En caso de éxito, una lista de objetos que incluye detalles de las cuentas de grupo de intercambio que se crearon.
Ejemplo de valor devuelto:
[
  {
    "account_id": "oaccount~cc9d84f6d4a5976532493ef5200c9603e138adc35166ffd5fd1aad9c1647f034",
    "token_id": "USD",
    "status": "created"
  },
  {
    "account_id": "oaccount~3d4933111ec8bd6cc1ebb43f2b2c390deb929cfa534f9c6ada8e63bac04a13c0",
    "token_id": "INR",
    "status": "created"
  }
]
addConversionRate
Este método agrega una tasa de conversión para un par de tokens. La tasa de conversión de token se puede especificar hasta ocho decimales. Este método solo puede ser llamado por un Token Admin del código de cadena.
@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);
}
Parámetros:
  • from_token_id: string: ID del token desde el que se realizará la conversión.
  • to_token_id: string: ID del token al que se va a convertir.
  • token_conversion_rate: number: ratio al que se convierte el token from_token_id en el token to_token_id.
Devuelve:
  • En caso de éxito, una representación JSON del objeto de ratio de conversión.
Ejemplo de valor devuelto:
{
  "assetType": "oconversionRate",
  "conversion_rate_id": "oconversionRate~91c7eeb0614e7a50b1d5ecad559fcbc80b94034648bf405c9491dacf8d57873b",
  "from_token_id": "USD",
  "to_token_id": "INR",
  "conversion_rate": 10
}
getConversionRate
Este método obtiene la tasa de conversión actual para un par de tokens. Este método puede ser llamado por el Token Admin del código de cadena, cualquier Org Admin y por cualquier propietario de cuenta de 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);
}
Parámetros:
  • from_token_id: string: ID del token desde el que se realizará la conversión.
  • to_token_id: string: ID del token al que se va a convertir.
Devuelve:
  • En caso de éxito, una representación JSON del objeto de ratio de conversión.
Ejemplo de valor devuelto:
{
  "assetType": "oconversionRate",
  "conversion_rate_id": "oconversionRate~91c7eeb0614e7a50b1d5ecad559fcbc80b94034648bf405c9491dacf8d57873b",
  "from_token_id": "USD",
  "to_token_id": "INR",
  "conversion_rate": 10
}
updateConversionRate
Este método actualiza la tasa de conversión actual para un par de tokens. La tasa de conversión de token se puede especificar hasta ocho decimales. Este método solo puede ser llamado por un Token Admin del código de cadena.
@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);
}
Parámetros:
  • from_token_id: string: ID del token desde el que se realizará la conversión.
  • to_token_id: string: ID del token al que se va a convertir.
  • token_conversion_rate: number: ratio al que se convierte el token from_token_id en el token to_token_id.
Devuelve:
  • En caso de éxito, una representación JSON del objeto de ratio de conversión actualizado.
Ejemplo de valor devuelto:
{
  "assetType": "oconversionRate",
  "conversion_rate_id": "oconversionRate~91c7eeb0614e7a50b1d5ecad559fcbc80b94034648bf405c9491dacf8d57873b",
  "from_token_id": "USD",
  "to_token_id": "INR",
  "conversion_rate": 20
}
mintWithFundingExchangePool
Este método acuña tokens en la cuenta del emisor de llamada en función del ID de token y la cantidad especificados. A continuación, se transfiere un porcentaje de tokens de la cantidad acuñada a la cuenta de token de grupo de intercambio.
@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);
}
Parámetros:
  • token_id: string: ID del token que se debe acuñar.
  • token_quantity: number: número total de tokens que se deben acuñar.
  • percentage_token_to_exchange_pool: number: porcentaje de tokens acuñados que se transferirán a la cuenta de token de pool de intercambio.
Devuelve:
  • En caso de éxito, un mensaje que indica que la acuñación y la financiación del grupo de intercambio se han realizado correctamente.
Ejemplo de valor devuelto:
{
    "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
Este método convierte tokens de la cuenta del emisor de llamada a la cuenta especificada por los valores to_token_id, to_org_id y to_user_id. Este método puede ser llamado por el Token Admin del código de cadena y por cualquier propietario de cuenta de token. Un usuario de pool de intercambio no puede llamar a este método.
@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);
}
Parámetros:
  • from_token_id: string: ID del token desde el que se realizará la conversión.
  • to_token_id: string: ID del token al que se va a convertir.
  • to_org_id: string: ID del proveedor de servicios de membresía (MSP) del usuario de la organización actual que recibirá los tokens.
  • to_user_id: string: nombre de usuario o ID de correo electrónico del usuario que recibirá los tokens.
  • token_quantity: number: número total de tokens que se van a transferir.
Devuelve:
  • Si se ha realizado correctamente, un mensaje que indica que la conversión del token se ha realizado correctamente.
Ejemplo de valor devuelto:
{
    "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
Este método devuelve el historial de conversión de token para una cuenta de token especificada. Este método puede ser llamado por el Token Admin del código de cadena, un Org Admin de la organización especificada o por el propietario de la cuenta de 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);
  }
Parámetros:
  • token_id: string: ID del token.
  • org_id: string: ID del proveedor de servicios de afiliación (MSP) del usuario de la organización actual.
  • user_id: string: nombre de usuario o ID de correo electrónico del usuario.
Devuelve:
  • En caso de éxito, un objeto JSON con detalles del historial de conversiones.
Ejemplo de valor devuelto:
[
  {
    "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
Este método devuelve el historial de tasas de conversión de tokens para un par de tokens. Este método puede ser llamado por el Token Admin del código de cadena, cualquier Org Admin y por cualquier propietario de cuenta de 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);
}
Parámetros:
  • from_token_id: string: ID del token desde el que se va a realizar la conversión, con el fin de calcular la tasa de conversión.
  • to_token_id: string: ID del token al que se va a convertir, con el fin de calcular la tasa de conversión.
Devuelve:
  • En caso de éxito, un objeto JSON con detalles de historial de tipo de cambio.
Ejemplo de valor devuelto:
 [
  {
    "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
Este método devuelve los valores org_id y user_id para el usuario del pool de intercambio. Este método solo puede ser llamado por un Token Admin del código de cadena.
@Validator()
public async getExchangePoolUser() {
    await this.Ctx.Auth.checkAuthorization('TOKEN_CONVERSION.getExchangePoolUser', 'TOKEN');
    return await this.Ctx.TokenConvertor.getExchangePoolUser();
}
Parámetros:
  • ninguno
Devuelve:
  • En caso de éxito, un mensaje con información sobre el usuario del pool de intercambio.
Ejemplo de valor devuelto:
{
   "assetType": "oconversion",
   "convertor_id": "bcb1f3b1442c625d3ce205660c5e717c5858a1fe1e12c325df799a851ceaa09b",
   "org_id": "Org1MSP",
   "user_id": "exchangepooluser"
}
initializeExchangePoolUser
Este método inicializa el usuario del pool de intercambio, que es una actividad puntual. Este método solo puede ser llamado por un Token Admin del código de cadena.
@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);
}
Parámetros:
  • org_id: string: ID del proveedor de servicios de afiliación (MSP) del usuario de la organización actual.
  • user_id: string: nombre de usuario o ID de correo electrónico del usuario.
Devuelve:
  • En caso de éxito, un mensaje que incluye detalles del usuario del pool de intercambio.
Ejemplo de valor devuelto:
{
    "assetType": "oconversion",
    "convertor_id": "bcb1f3b1442c625d3ce205660c5e717c5858a1fe1e12c325df799a851ceaa09b",
    "org_id": "Org1MSP",
    "user_id": "exchangepooluser"
}
createExchangePoolAccounts
Este método crea cuentas de token de grupo de intercambio para una matriz determinada de ID de token. Este método solo puede ser llamado por un Token Admin del código de cadena.
@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);
}
Parámetros:
  • token_ids: string []: matriz de ID de token.
Devuelve:
  • En caso de éxito, una lista de objetos que incluye detalles de las cuentas de grupo de intercambio que se crearon.
Ejemplo de valor devuelto:
[
  {
    "account_id": "oaccount~cc9d84f6d4a5976532493ef5200c9603e138adc35166ffd5fd1aad9c1647f034",
    "token_id": "USD",
    "status": "created"
  },
  {
    "account_id": "oaccount~3d4933111ec8bd6cc1ebb43f2b2c390deb929cfa534f9c6ada8e63bac04a13c0",
    "token_id": "INR",
    "status": "created"
  }
]
addConversionRate
Este método agrega una tasa de conversión para un par de tokens. La tasa de conversión de token se puede especificar hasta ocho decimales. Este método solo puede ser llamado por un Token Admin del código de cadena.
@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);
}
Parámetros:
  • from_token_id: string: ID del token desde el que se realizará la conversión.
  • to_token_id: string: ID del token al que se va a convertir.
  • token_conversion_rate: number: ratio al que se convierte el token from_token_id en el token to_token_id.
Devuelve:
  • En caso de éxito, una representación JSON del objeto de ratio de conversión.
Ejemplo de valor devuelto:
{
  "assetType": "oconversionRate",
  "conversion_rate_id": "oconversionRate~91c7eeb0614e7a50b1d5ecad559fcbc80b94034648bf405c9491dacf8d57873b",
  "from_token_id": "USD",
  "to_token_id": "INR",
  "conversion_rate": 10
}
getConversionRate
Este método obtiene la tasa de conversión actual para un par de tokens. Este método lo pueden llamar Token Admin o Token Auditor, un Org Admin o Org Auditor de la organización especificada y cualquier propietario de cuenta de 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);
}
Parámetros:
  • from_token_id: string: ID del token desde el que se realizará la conversión.
  • to_token_id: string: ID del token al que se va a convertir.
Devuelve:
  • En caso de éxito, una representación JSON del objeto de ratio de conversión.
Ejemplo de valor devuelto:
{
  "assetType": "oconversionRate",
  "conversion_rate_id": "oconversionRate~91c7eeb0614e7a50b1d5ecad559fcbc80b94034648bf405c9491dacf8d57873b",
  "from_token_id": "USD",
  "to_token_id": "INR",
  "conversion_rate": 10
}
updateConversionRate
Este método actualiza la tasa de conversión actual para un par de tokens. La tasa de conversión de token se puede especificar hasta ocho decimales. Este método solo puede ser llamado por un Token Admin del código de cadena.
@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);
}
Parámetros:
  • from_token_id: string: ID del token desde el que se realizará la conversión.
  • to_token_id: string: ID del token al que se va a convertir.
  • token_conversion_rate: number: ratio al que se convierte el token from_token_id en el token to_token_id.
Devuelve:
  • En caso de éxito, una representación JSON del objeto de ratio de conversión actualizado.
Ejemplo de valor devuelto:
{
  "assetType": "oconversionRate",
  "conversion_rate_id": "oconversionRate~91c7eeb0614e7a50b1d5ecad559fcbc80b94034648bf405c9491dacf8d57873b",
  "from_token_id": "USD",
  "to_token_id": "INR",
  "conversion_rate": 20
}
mintWithFundingExchangePool
Este método acuña tokens en la cuenta del emisor de llamada en función del ID de token y la cantidad especificados. A continuación, se transfiere un porcentaje de tokens de la cantidad acuñada a la cuenta de token de grupo de intercambio.
@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);
}
Parámetros:
  • token_id: string: ID del token que se debe acuñar.
  • token_quantity: number: número total de tokens que se deben acuñar.
  • percentage_token_to_exchange_pool: number: porcentaje de tokens acuñados que se transferirán a la cuenta de token de pool de intercambio.
Devuelve:
  • En caso de éxito, un mensaje que indica que la acuñación y la financiación del grupo de intercambio se han realizado correctamente.
Ejemplo de valor devuelto:
{
    "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
Este método convierte tokens de la cuenta del emisor de llamada a la cuenta especificada por los valores to_token_id, to_org_id y to_user_id. Este método puede ser llamado por el Token Admin del código de cadena y por cualquier propietario de cuenta de token. Un usuario de pool de intercambio no puede llamar a este método.
@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);
}
Parámetros:
  • from_token_id: string: ID del token desde el que se realizará la conversión.
  • to_token_id: string: ID del token al que se va a convertir.
  • to_org_id: string: ID del proveedor de servicios de membresía (MSP) del usuario de la organización actual que recibirá los tokens.
  • to_user_id: string: nombre de usuario o ID de correo electrónico del usuario que recibirá los tokens.
  • token_quantity: number: número total de tokens que se van a transferir.
Devuelve:
  • Si se ha realizado correctamente, un mensaje que indica que la conversión del token se ha realizado correctamente.
Ejemplo de valor devuelto:
{
    "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
Este método devuelve el historial de conversión de token para una cuenta de token especificada. Este método puede ser llamado por Token Admin o Token Auditor, Org Admin o Org Auditor de la organización especificada, o por el propietario de la cuenta de 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);
  }
Parámetros:
  • token_id: string: ID del token.
  • org_id: string: ID del proveedor de servicios de afiliación (MSP) del usuario de la organización actual.
  • user_id: string: nombre de usuario o ID de correo electrónico del usuario.
Devuelve:
  • En caso de éxito, un objeto JSON con detalles del historial de conversiones.
Ejemplo de valor devuelto:
[
  {
    "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
Este método devuelve el historial de tasas de conversión de tokens para un par de tokens. Este método lo pueden llamar Token Admin o Token Auditor, un Org Admin o Org Auditor de la organización especificada y cualquier propietario de cuenta de 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);
}
Parámetros:
  • from_token_id: string: ID del token desde el que se va a realizar la conversión, con el fin de calcular la tasa de conversión.
  • to_token_id: string: ID del token al que se va a convertir, con el fin de calcular la tasa de conversión.
Devuelve:
  • En caso de éxito, un objeto JSON con detalles de historial de tipo de cambio.
Ejemplo de valor devuelto:
 [
  {
    "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
Este método devuelve los valores org_id y user_id para el usuario del pool de intercambio. Este método solo puede ser llamado por un Token Admin o Token Auditor del código de cadena.
@Validator()
public async getExchangePoolUser() {
    await this.Ctx.Auth.checkAuthorization('TOKEN_CONVERSION.getExchangePoolUser', 'TOKEN');
    return await this.Ctx.TokenConvertor.getExchangePoolUser();
}
Parámetros:
  • ninguno
Devuelve:
  • En caso de éxito, un mensaje con información sobre el usuario del pool de intercambio.
Ejemplo de valor devuelto:
{
   "assetType": "oconversion",
   "convertor_id": "bcb1f3b1442c625d3ce205660c5e717c5858a1fe1e12c325df799a851ceaa09b",
   "org_id": "Org1MSP",
   "user_id": "exchangepooluser"
}

Métodos de SDK de conversión de token

initializeExchangePoolUser
Este método inicializa el usuario del pool de intercambio, que es una actividad puntual. Este método solo puede ser llamado por un Token Admin del código de cadena.
Ctx.TokenConvertor.initializeExchangePoolUser(orgId: string, userId: string)
Parámetros:
  • orgId: string: ID del proveedor de servicios de afiliación (MSP) del usuario de la organización actual.
  • userId: string: nombre de usuario o ID de correo electrónico del usuario.
Devuelve:
  • En caso de éxito, un mensaje que incluye detalles del usuario del pool de intercambio.
Ejemplo de valor devuelto:
{
    "assetType": "oconversion",
    "convertor_id": "bcb1f3b1442c625d3ce205660c5e717c5858a1fe1e12c325df799a851ceaa09b",
    "org_id": "Org1MSP",
    "user_id": "exchangepooluser"
}
createExchangePoolAccounts
Este método crea cuentas de token de grupo de intercambio para una matriz determinada de ID de token. Este método solo puede ser llamado por un Token Admin del código de cadena.
Ctx.TokenConvertor.createExchangePoolAccounts(token_ids: string[])
Parámetros:
  • token_ids: string []: matriz de ID de token.
Devuelve:
  • En caso de éxito, una lista de objetos que incluye detalles de las cuentas de grupo de intercambio que se crearon.
Ejemplo de valor devuelto:
[
  {
    "account_id": "oaccount~cc9d84f6d4a5976532493ef5200c9603e138adc35166ffd5fd1aad9c1647f034",
    "token_id": "USD",
    "status": "created"
  },
  {
    "account_id": "oaccount~3d4933111ec8bd6cc1ebb43f2b2c390deb929cfa534f9c6ada8e63bac04a13c0",
    "token_id": "INR",
    "status": "created"
  }
]
addConversionToken
Este método agrega tokens con una nueva tasa de conversión para un token especificado. La tasa de conversión de token se puede especificar hasta ocho decimales. Este método solo puede ser llamado por un Token Admin del código de cadena.
Ctx.TokenConvertor.addConversionToken(fromTokenId: string, toTokenId: string, tokenConversionRate: number)
Parámetros:
  • fromTokenId: string: ID del token desde el que se realizará la conversión.
  • toTokenId: string: ID del token al que se va a convertir.
  • tokenConversionRate: number: ratio al que se convierte el token from_token_id en el token to_token_id.
Devuelve:
  • En caso de éxito, una representación JSON del objeto de ratio de conversión.
Ejemplo de valor devuelto:
{
  "assetType": "oconversionRate",
  "conversion_rate_id": "oconversionRate~91c7eeb0614e7a50b1d5ecad559fcbc80b94034648bf405c9491dacf8d57873b",
  "from_token_id": "USD",
  "to_token_id": "INR",
  "conversion_rate": 10
}
get
Este método obtiene la tasa de conversión actual para un par de tokens. Este método puede ser llamado por el Token Admin del código de cadena y por cualquier propietario de cuenta de token.
Ctx.TokenConversionRate.get(id: string)
Parámetros:
  • id: string: ID del objeto de tipo de cambio de token.
Devuelve:
  • En caso de éxito, una representación JSON del objeto de ratio de conversión.
Ejemplo de valor devuelto:
{
  "assetType": "oconversionRate",
  "conversion_rate_id": "oconversionRate~91c7eeb0614e7a50b1d5ecad559fcbc80b94034648bf405c9491dacf8d57873b",
  "from_token_id": "USD",
  "to_token_id": "INR",
  "conversion_rate": 10
}
updateTokenConversionRate
Este método actualiza la tasa de conversión actual para un par de tokens. La tasa de conversión de token se puede especificar hasta ocho decimales. Este método solo puede ser llamado por un Token Admin del código de cadena.
Ctx.TokenConvertor.updateTokenConversionRate(fromTokenId: string, toTokenId: string, tokenConversionRate: number)
Parámetros:
  • from_token_id: string: ID del token desde el que se realizará la conversión.
  • to_token_id: string: ID del token al que se va a convertir.
  • token_conversion_rate: number: ratio al que se convierte el token from_token_id en el token to_token_id.
Devuelve:
  • En caso de éxito, una representación JSON del objeto de ratio de conversión actualizado.
Ejemplo de valor devuelto:
{
  "assetType": "oconversionRate",
  "conversion_rate_id": "oconversionRate~91c7eeb0614e7a50b1d5ecad559fcbc80b94034648bf405c9491dacf8d57873b",
  "from_token_id": "USD",
  "to_token_id": "INR",
  "conversion_rate": 20
}
mintWithFundingExchangePool
Este método acuña tokens en la cuenta del emisor de llamada en función del ID de token y la cantidad especificados. A continuación, se transfiere un porcentaje de tokens de la cantidad acuñada a la cuenta de token de grupo de intercambio.
Ctx.TokenConvertor.mintWithFundingExchangePool(tokenId: string, tokenQuantity: number, percentageTokenToExchangePool: number)
Parámetros:
  • token_id: string: ID del token que se debe acuñar.
  • token_quantity: number: número total de tokens que se deben acuñar.
  • percentage_token_to_exchange_pool: number: porcentaje de tokens acuñados que se transferirán a la cuenta de token de pool de intercambio.
Devuelve:
  • En caso de éxito, un mensaje que indica que la acuñación y la financiación del grupo de intercambio se han realizado correctamente.
Ejemplo de valor devuelto:
{
    "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
Este método convierte tokens de la cuenta del emisor de llamada a la cuenta especificada por los valores to_token_id, to_org_id y to_user_id. Este método puede ser llamado por el Token Admin del código de cadena y por cualquier propietario de cuenta de token. Un usuario de pool de intercambio no puede llamar a este método.
Ctx.TokenConvertor.tokenConversion(fromTokenId: string, toTokenId: string, toOrgId: string, toUserId: string, tokenQuantity: number)
Parámetros:
  • from_token_id: string: ID del token desde el que se realizará la conversión.
  • to_token_id: string: ID del token al que se va a convertir.
  • to_org_id: string: ID del proveedor de servicios de membresía (MSP) del usuario de la organización actual que recibirá los tokens.
  • to_user_id: string: nombre de usuario o ID de correo electrónico del usuario que recibirá los tokens.
Devuelve:
  • Si se ha realizado correctamente, un mensaje que indica que la conversión del token se ha realizado correctamente.
Ejemplo de valor devuelto:
{
    "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
Este método devuelve el historial de conversión de token para una cuenta de token especificada. Este método puede ser llamado por el Token Admin del código de cadena, un Org Admin de la organización especificada y por el propietario de la cuenta de token.
Ctx.Account.getTokenConversionHistory(account_id: string, org_id: string, user_id: string)
Parámetros:
  • account_id: string: ID de la cuenta de token fungible.
  • org_id: string: ID del proveedor de servicios de afiliación (MSP) del usuario de la organización actual.
  • user_id: string: nombre de usuario o ID de correo electrónico del usuario.
Devuelve:
  • En caso de éxito, un objeto JSON con detalles del historial de conversiones.
Ejemplo de valor devuelto:
[
  {
    "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
Este método devuelve el historial de tasas de conversión de tokens para un par de tokens. Este método puede ser llamado por el Token Admin del código de cadena, cualquier Org Admin y por cualquier propietario de cuenta de token.
Ctx.TokenConversionRate.history(conversion_rate_id: string)
Parámetros:
  • conversion_rate_id: string: ID del objeto de tipo de cambio.
Devuelve:
  • En caso de éxito, un objeto JSON con detalles de historial de tipo de cambio.
Ejemplo de valor devuelto:
 [
  {
    "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
Este método devuelve los valores OrgId y UserId para el usuario del pool de intercambio. Este método solo puede ser llamado por un Token Admin del código de cadena.
Ctx.TokenConvertor.getExchangePoolUser()
Parámetros:
  • ninguno
Devuelve:
  • En caso de éxito, un mensaje con información sobre el usuario del pool de intercambio.
Ejemplo de valor devuelto:
{
   "assetType": "oconversion",
   "convertor_id": "bcb1f3b1442c625d3ce205660c5e717c5858a1fe1e12c325df799a851ceaa09b",
   "org_id": "Org1MSP",
   "user_id": "exchangepooluser"
}