Métodos de Go para 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 ser públicos para poder ser invocados. Los nombres de métodos públicos comienzan con un carácter en mayúscula. Los nombres de métodos que comienzan con un carácter en minúscula son privados.

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.
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)
}
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",
    "ConvertorId": "bcb1f3b1442c625d3ce205660c5e717c5858a1fe1e12c325df799a851ceaa09b",
    "OrgId": "Org1MSP",
    "UserId": "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.
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)
}
Parámetros:
  • token_ids: string []: matriz de ID de token. Puede especificar hasta diez 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:
[
    {
        "AccountId": "oaccount~cc9d84f6d4a5976532493ef5200c9603e138adc35166ffd5fd1aad9c1647f034",
        "Status": "created",
        "TokenId": "USD"
    },
    {
        "AccountId": "oaccount~3d4933111ec8bd6cc1ebb43f2b2c390deb929cfa534f9c6ada8e63bac04a13c0",
        "Status": "created",
        "TokenId": "INR"
    }
]
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.
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)
}
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: float64: 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",
    "ConvertorRateId": "oconversionRate~79eacc670928bbc4c9ba4ebee135c8b4d6411af3110f8a9b782c383d5e18b150",
    "FromTokenId": "USD",
    "ToTokenId": "INR",
    "ConversionRate": 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.
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)
}
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",
    "ConvertorRateId": "oconversionRate~79eacc670928bbc4c9ba4ebee135c8b4d6411af3110f8a9b782c383d5e18b150",
    "FromTokenId": "USD",
    "ToTokenId": "INR",
    "ConversionRate": 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.
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)
}
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: float64: 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",
    "ConvertorRateId": "oconversionRate~79eacc670928bbc4c9ba4ebee135c8b4d6411af3110f8a9b782c383d5e18b150",
    "FromTokenId": "USD",
    "ToTokenId": "INR",
    "ConversionRate": 15
}
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.
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)
}
Parámetros:
  • token_id: string: ID del token que se debe acuñar.
  • token_quantity: float64: número total de tokens que se deben acuñar.
  • percentage_token_to_exchange_pool: float64: 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 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
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.
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)
}
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: float64: 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' (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
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.
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)
}
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:
[
    {
        "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
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.
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)
}
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:
[
  {
    "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
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.
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()
}
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",
    "ConvertorId": "bcb1f3b1442c625d3ce205660c5e717c5858a1fe1e12c325df799a851ceaa09b",
    "OrgId": "Org1MSP",
    "UserId": "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.
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)
}
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",
    "ConvertorId": "bcb1f3b1442c625d3ce205660c5e717c5858a1fe1e12c325df799a851ceaa09b",
    "OrgId": "Org1MSP",
    "UserId": "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.
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)
}
Parámetros:
  • token_ids: string []: matriz de ID de token. Puede especificar hasta diez 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:
[
    {
        "AccountId": "oaccount~cc9d84f6d4a5976532493ef5200c9603e138adc35166ffd5fd1aad9c1647f034",
        "Status": "created",
        "TokenId": "USD"
    },
    {
        "AccountId": "oaccount~3d4933111ec8bd6cc1ebb43f2b2c390deb929cfa534f9c6ada8e63bac04a13c0",
        "Status": "created",
        "TokenId": "INR"
    }
]
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.
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)
}
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: float64: 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",
    "ConvertorRateId": "oconversionRate~79eacc670928bbc4c9ba4ebee135c8b4d6411af3110f8a9b782c383d5e18b150",
    "FromTokenId": "USD",
    "ToTokenId": "INR",
    "ConversionRate": 10
}
GetConversionRate
Este método obtiene la tasa de conversión actual para un par de tokens. Este método puede ser llamado por Token Admin o Token Auditor, Org Admin o Org Auditor de la organización especificada, o por cualquier propietario de cuenta de 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)
}
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",
    "ConvertorRateId": "oconversionRate~79eacc670928bbc4c9ba4ebee135c8b4d6411af3110f8a9b782c383d5e18b150",
    "FromTokenId": "USD",
    "ToTokenId": "INR",
    "ConversionRate": 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.
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)
}
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: float64: 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",
    "ConvertorRateId": "oconversionRate~79eacc670928bbc4c9ba4ebee135c8b4d6411af3110f8a9b782c383d5e18b150",
    "FromTokenId": "USD",
    "ToTokenId": "INR",
    "ConversionRate": 15
}
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.
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)
}
Parámetros:
  • token_id: string: ID del token que se debe acuñar.
  • token_quantity: float64: número total de tokens que se deben acuñar.
  • percentage_token_to_exchange_pool: float64: 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 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
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.
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)
}
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: float64: 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' (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
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, un Org Admin o Org Auditor de la organización especificada y por el propietario de cuenta especificado.
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)
}
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:
[
    {
        "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
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 Token Admin, Token Auditor, Org Admin, Org Auditor o cualquier propietario de cuenta de 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)
}
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:
[
  {
    "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
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.
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()
}
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",
    "ConvertorId": "bcb1f3b1442c625d3ce205660c5e717c5858a1fe1e12c325df799a851ceaa09b",
    "OrgId": "Org1MSP",
    "UserId": "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(org_id string, user_id string) (interface{}, error)
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",
    "ConvertorId": "bcb1f3b1442c625d3ce205660c5e717c5858a1fe1e12c325df799a851ceaa09b",
    "OrgId": "Org1MSP",
    "UserId": "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(tokens []interface{}) (interface{}, error)
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:
[
    {
        "AccountId": "oaccount~cc9d84f6d4a5976532493ef5200c9603e138adc35166ffd5fd1aad9c1647f034",
        "Status": "created",
        "TokenId": "USD"
    },
    {
        "AccountId": "oaccount~3d4933111ec8bd6cc1ebb43f2b2c390deb929cfa534f9c6ada8e63bac04a13c0",
        "Status": "created",
        "TokenId": "INR"
    }
]
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(from_token_id string, to_token_id string, token_conversion_rate float64) (interface{}, error)
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: float64: 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",
    "ConvertorRateId": "oconversionRate~79eacc670928bbc4c9ba4ebee135c8b4d6411af3110f8a9b782c383d5e18b150",
    "FromTokenId": "USD",
    "ToTokenId": "INR",
    "ConversionRate": 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) (ConversionRate, error)
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",
    "ConvertorRateId": "oconversionRate~79eacc670928bbc4c9ba4ebee135c8b4d6411af3110f8a9b782c383d5e18b150",
    "FromTokenId": "USD",
    "ToTokenId": "INR",
    "ConversionRate": 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(from_token_id string, to_token_id string, token_conversion_rate float64) (interface{}, error)
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: float64: 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",
    "ConvertorRateId": "oconversionRate~79eacc670928bbc4c9ba4ebee135c8b4d6411af3110f8a9b782c383d5e18b150",
    "FromTokenId": "USD",
    "ToTokenId": "INR",
    "ConversionRate": 15
}
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(token interface{}, token_quantity float64, percentage_token_to_exchangePool float64) (interface{}, error)
Parámetros:
  • token_id: string: ID del token que se debe acuñar.
  • token_quantity: float64: número total de tokens que se deben acuñar.
  • percentage_token_to_exchange_pool: float64: 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 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
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(from_token interface{}, to_token interface{}, to_org_id string, to_user_id string, token_quantity float64) (interface{}, error)
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' (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
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 del código de cadena y por el propietario de la cuenta de token.
Ctx.Account.GetTokenConversionHistory(account_id string, org_id string, user_id string) (interface{}, error)
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:
[
    {
        "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
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) (interface{}, error)
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:
[
  {
    "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
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.
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",
    "ConvertorId": "bcb1f3b1442c625d3ce205660c5e717c5858a1fe1e12c325df799a851ceaa09b",
    "OrgId": "Org1MSP",
    "UserId": "exchangepooluser"
}