Métodos Go para Conversão de Token

O Blockchain App Builder gera automaticamente métodos que você pode usar para converter tokens fungíveis que usam o padrão Token Taxonomy Framework.

Os métodos de conversão de token incluem o conceito do pool de câmbio. A conta do pool de câmbio é financiada por outras contas de token. Ao criar tokens, você pode especificar que uma porcentagem dos tokens cunhados seja transferida para a conta do pool de câmbio.

Processo de Conversão de Token

Um fluxo típico para converter tokens segue estas etapas:
  1. Chame o método InitializeExchangePoolUser para inicializar o usuário do pool de intercâmbio.
  2. Chame o método CreateExchangePoolAccounts para criar contas de pool de câmbio. Crie uma conta de pool de câmbio para cada tipo de token fungível que você deseja converter ou converter.
  3. Chame o método AddConversionRate para definir a taxa de conversão para cada par de tokens entre os quais você deseja converter.
  4. Financie as contas de token do pool de câmbio de uma das seguintes maneiras:
    • Transfira tokens para as contas de token do pool de câmbio usando os métodos de transferência padrão.
    • Chame o método MintWithFundingExchangePoolToken ao cunhar tokens, que podem transferir uma porcentagem de tokens cunhados para uma conta de pool de câmbio.
  5. Chame o método TokenConversion para converter entre dois tokens fungíveis. Um único usuário pode converter tokens entre duas de suas contas de token, ou um par de usuários pode converter tokens diretamente de uma conta para outra.
  6. O usuário do pool de câmbio pode exibir os saldos da conta do pool de câmbio e as transações da conta.
    • Chame o método GetAccount para exibir os saldos de cada uma das contas de token do pool de câmbio.
    • Chame os métodos GetAccountTransactionHistory e GetAccountTransactionHistoryWithFilters para exibir transações de conta para cada uma das contas de token do pool de câmbio.

Métodos de Conversão de Token Gerados Automaticamente

O Blockchain App Builder gera automaticamente métodos para converter entre diferentes tipos de tokens fungíveis. Os métodos da Controladora devem ser públicos para serem chamados. Os nomes de métodos públicos começam com um caractere maiúsculo. Os nomes dos métodos que começam com um caractere minúsculo são privados.

InitializeExchangePoolUser
Este método inicializa o usuário do pool de intercâmbio, que é uma atividade única. Este método só pode ser chamado por um Token Admin do chaincode.
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 - O ID do provedor de serviços de associação (MSP) do usuário na organização atual.
  • user_id: string - O nome de usuário ou o ID de e-mail do usuário.
Retorna:
  • Em caso de sucesso, uma mensagem que inclui detalhes do usuário do pool de intercâmbio.
Exemplo de Valor de Retorno:
{
    "AssetType": "oconversion",
    "ConvertorId": "bcb1f3b1442c625d3ce205660c5e717c5858a1fe1e12c325df799a851ceaa09b",
    "OrgId": "Org1MSP",
    "UserId": "exchangepooluser"
}
CreateExchangePoolAccounts
Esse método cria contas de token do pool de câmbio para um determinado array de IDs de token. Este método só pode ser chamado por um Token Admin do chaincode.
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 [] - Um array de IDs de token. Você pode especificar até dez IDs de token.
Retorna:
  • Em caso de sucesso, uma lista de objetos que inclui detalhes das contas do pool de câmbio que foram criadas.
Exemplo de Valor de Retorno:
[
    {
        "AccountId": "oaccount~cc9d84f6d4a5976532493ef5200c9603e138adc35166ffd5fd1aad9c1647f034",
        "Status": "created",
        "TokenId": "USD"
    },
    {
        "AccountId": "oaccount~3d4933111ec8bd6cc1ebb43f2b2c390deb929cfa534f9c6ada8e63bac04a13c0",
        "Status": "created",
        "TokenId": "INR"
    }
]
AddConversionRate
Este método adiciona uma taxa de conversão para um par de tokens. A taxa de conversão do token pode ser especificada com até oito casas decimais. Este método só pode ser chamado por um Token Admin do chaincode.
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 - O ID do token do qual converter.
  • to_token_id: string - O ID do token para conversão.
  • token_conversion_rate: float64 - A taxa na qual converter o token from_token_id no token to_token_id.
Retorna:
  • Em caso de sucesso, uma representação JSON do objeto de taxa de conversão.
Exemplo de Valor de Retorno:
{
    "AssetType": "oconversionRate",
    "ConvertorRateId": "oconversionRate~79eacc670928bbc4c9ba4ebee135c8b4d6411af3110f8a9b782c383d5e18b150",
    "FromTokenId": "USD",
    "ToTokenId": "INR",
    "ConversionRate": 10
}
GetConversionRate
Este método obtém a taxa de conversão atual para um par de tokens. Esse método pode ser chamado pelo Token Admin do chaincode, qualquer Org Admin e por qualquer proprietário de conta 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 - O ID do token do qual converter.
  • to_token_id: string - O ID do token para conversão.
Retorna:
  • Em caso de sucesso, uma representação JSON do objeto de taxa de conversão.
Exemplo de Valor de Retorno:
{
    "AssetType": "oconversionRate",
    "ConvertorRateId": "oconversionRate~79eacc670928bbc4c9ba4ebee135c8b4d6411af3110f8a9b782c383d5e18b150",
    "FromTokenId": "USD",
    "ToTokenId": "INR",
    "ConversionRate": 10
}
UpdateConversionRate
Este método atualiza a taxa de conversão atual para um par de tokens. A taxa de conversão do token pode ser especificada com até oito casas decimais. Este método só pode ser chamado por um Token Admin do chaincode.
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 - O ID do token do qual converter.
  • to_token_id: string - O ID do token para conversão.
  • token_conversion_rate: float64 - A taxa na qual converter o token from_token_id no token to_token_id.
Retorna:
  • Em caso de sucesso, uma representação JSON do objeto de taxa de conversão atualizado.
Exemplo de Valor de Retorno:
{
    "AssetType": "oconversionRate",
    "ConvertorRateId": "oconversionRate~79eacc670928bbc4c9ba4ebee135c8b4d6411af3110f8a9b782c383d5e18b150",
    "FromTokenId": "USD",
    "ToTokenId": "INR",
    "ConversionRate": 15
}
MintWithFundingExchangePool
Esse método marca tokens na conta do chamador com base no ID e na quantidade especificados do token. Uma porcentagem de tokens da quantidade cunhada é transferida para a conta de token do pool de câmbio.
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 - O ID do token a ser cunhado.
  • token_quantity: float64 - O número total de tokens a serem cunhados.
  • percentage_token_to_exchange_pool: float64 - A porcentagem de tokens cunhados a serem transferidos para a conta de token do pool de câmbio.
Retorna:
  • Em caso de sucesso, uma mensagem que indica que a cunhagem e o financiamento do pool de câmbio foram bem-sucedidos.
Exemplo de Valor de Retorno:
{
    "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
Esse método converte tokens da conta do chamador para a conta especificada pelos valores to_token_id, to_org_id e to_user_id. Esse método pode ser chamado pelo Token Admin do chaincode e por qualquer proprietário de conta de token. Um usuário do pool de intercâmbio não pode chamar esse 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 - O ID do token do qual converter.
  • to_token_id: string - O ID do token para conversão.
  • to_org_id: string - O ID do provedor de serviços de associação (MSP) do usuário na organização atual para receber os tokens.
  • to_user_id: string - O nome de usuário ou o ID de e-mail do usuário para receber os tokens.
  • token_quantity: float64 - O número total de tokens a serem transferidos.
Retorna:
  • Em caso de sucesso, uma mensagem que indica que a conversão do token foi bem-sucedida.
Exemplo de Valor de Retorno:
{
    "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 retorna o histórico de conversão de token para uma conta de token especificada. Esse método pode ser chamado pelo Token Admin do chaincode, um Org Admin da organização especificada e pelo proprietário da conta 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 - O ID do token.
  • org_id: string - O ID do provedor de serviços de associação (MSP) do usuário na organização atual.
  • user_id: string - O nome de usuário ou o ID de e-mail do usuário.
Retorna:
  • Em caso de sucesso, um objeto JSON com detalhes do histórico de conversão.
Exemplo de Valor de Retorno:
[
    {
        "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 retorna o histórico de taxa de conversão de token para um par de tokens. Esse método pode ser chamado pelo Token Admin do chaincode, qualquer Org Admin e por qualquer proprietário de conta 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 - O ID do token do qual converter, com a finalidade de calcular a taxa de conversão.
  • to_token_id: string - O ID do token para conversão, com a finalidade de calcular a taxa de conversão.
Retorna:
  • Em caso de sucesso, um objeto JSON com detalhes do histórico da taxa de conversão.
Exemplo de Valor de Retorno:
[
  {
    "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
Esse método retorna os valores org_id e user_id para o usuário do pool de intercâmbio. Este método só pode ser chamado por um Token Admin do chaincode.
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:
  • nenhuma
Retorna:
  • Em caso de sucesso, uma mensagem com informações sobre o usuário do pool de intercâmbio.
Exemplo de Valor de Retorno:
{
    "AssetType": "oconversion",
    "ConvertorId": "bcb1f3b1442c625d3ce205660c5e717c5858a1fe1e12c325df799a851ceaa09b",
    "OrgId": "Org1MSP",
    "UserId": "exchangepooluser"
}

Métodos SDK de Conversão de Token

InitializeExchangePoolUser
Este método inicializa o usuário do pool de intercâmbio, que é uma atividade única. Este método só pode ser chamado por um Token Admin do chaincode.
Ctx.TokenConvertor.InitializeExchangePoolUser(org_id string, user_id string) (interface{}, error)
Parâmetros:
  • org_id: string - O ID do provedor de serviços de associação (MSP) do usuário na organização atual.
  • user_id: string - O nome de usuário ou o ID de e-mail do usuário.
Retorna:
  • Em caso de sucesso, uma mensagem que inclui detalhes do usuário do pool de intercâmbio.
Exemplo de Valor de Retorno:
{
    "AssetType": "oconversion",
    "ConvertorId": "bcb1f3b1442c625d3ce205660c5e717c5858a1fe1e12c325df799a851ceaa09b",
    "OrgId": "Org1MSP",
    "UserId": "exchangepooluser"
}
CreateExchangePoolAccounts
Esse método cria contas de token do pool de câmbio para um determinado array de IDs de token. Este método só pode ser chamado por um Token Admin do chaincode.
Ctx.TokenConvertor.CreateExchangePoolAccounts(tokens []interface{}) (interface{}, error)
Parâmetros:
  • token_ids: string [] - Um array de IDs de token.
Retorna:
  • Em caso de sucesso, uma lista de objetos que inclui detalhes das contas do pool de câmbio que foram criadas.
Exemplo de Valor de Retorno:
[
    {
        "AccountId": "oaccount~cc9d84f6d4a5976532493ef5200c9603e138adc35166ffd5fd1aad9c1647f034",
        "Status": "created",
        "TokenId": "USD"
    },
    {
        "AccountId": "oaccount~3d4933111ec8bd6cc1ebb43f2b2c390deb929cfa534f9c6ada8e63bac04a13c0",
        "Status": "created",
        "TokenId": "INR"
    }
]
AddConversionToken
Este método adiciona tokens com uma nova taxa de conversão para um token especificado. A taxa de conversão do token pode ser especificada com até oito casas decimais. Este método só pode ser chamado por um Token Admin do chaincode.
Ctx.TokenConvertor.AddConversionToken(from_token_id string, to_token_id string, token_conversion_rate float64) (interface{}, error)
Parâmetros:
  • from_token_id: string - O ID do token do qual converter.
  • to_token_id: string - O ID do token para conversão.
  • token_conversion_rate: float64 - A taxa na qual converter o token from_token_id no token to_token_id.
Retorna:
  • Em caso de sucesso, uma representação JSON do objeto de taxa de conversão.
Exemplo de Valor de Retorno:
{
    "AssetType": "oconversionRate",
    "ConvertorRateId": "oconversionRate~79eacc670928bbc4c9ba4ebee135c8b4d6411af3110f8a9b782c383d5e18b150",
    "FromTokenId": "USD",
    "ToTokenId": "INR",
    "ConversionRate": 10
}
Get
Este método obtém a taxa de conversão atual para um par de tokens. Esse método pode ser chamado pelo Token Admin do chaincode e por qualquer proprietário de conta de token.
Ctx.TokenConversionRate.Get(id string) (ConversionRate, error)
Parâmetros:
  • id: string - O ID do objeto de taxa de conversão de token.
Retorna:
  • Em caso de sucesso, uma representação JSON do objeto de taxa de conversão.
Exemplo de Valor de Retorno:
{
    "AssetType": "oconversionRate",
    "ConvertorRateId": "oconversionRate~79eacc670928bbc4c9ba4ebee135c8b4d6411af3110f8a9b782c383d5e18b150",
    "FromTokenId": "USD",
    "ToTokenId": "INR",
    "ConversionRate": 10
}
UpdateTokenConversionRate
Este método atualiza a taxa de conversão atual para um par de tokens. A taxa de conversão do token pode ser especificada com até oito casas decimais. Este método só pode ser chamado por um Token Admin do chaincode.
Ctx.TokenConvertor.UpdateTokenConversionRate(from_token_id string, to_token_id string, token_conversion_rate float64) (interface{}, error)
Parâmetros:
  • from_token_id: string - O ID do token do qual converter.
  • to_token_id: string - O ID do token para conversão.
  • token_conversion_rate: float64 - A taxa na qual converter o token from_token_id no token to_token_id.
Retorna:
  • Em caso de sucesso, uma representação JSON do objeto de taxa de conversão atualizado.
Exemplo de Valor de Retorno:
{
    "AssetType": "oconversionRate",
    "ConvertorRateId": "oconversionRate~79eacc670928bbc4c9ba4ebee135c8b4d6411af3110f8a9b782c383d5e18b150",
    "FromTokenId": "USD",
    "ToTokenId": "INR",
    "ConversionRate": 15
}
MintWithFundingExchangePool
Esse método marca tokens na conta do chamador com base no ID e na quantidade especificados do token. Uma porcentagem de tokens da quantidade cunhada é transferida para a conta de token do pool de câmbio.
Ctx.TokenConvertor.MintWithFundingExchangePool(token interface{}, token_quantity float64, percentage_token_to_exchangePool float64) (interface{}, error)
Parâmetros:
  • token_id: string - O ID do token a ser cunhado.
  • token_quantity: float64 - O número total de tokens a serem cunhados.
  • percentage_token_to_exchange_pool: float64 - A porcentagem de tokens cunhados a serem transferidos para a conta de token do pool de câmbio.
Retorna:
  • Em caso de sucesso, uma mensagem que indica que a cunhagem e o financiamento do pool de câmbio foram bem-sucedidos.
Exemplo de Valor de Retorno:
{
    "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
Esse método converte tokens da conta do chamador para a conta especificada pelos valores to_token_id, to_org_id e to_user_id. Esse método pode ser chamado pelo Token Admin do chaincode e por qualquer proprietário de conta de token. Um usuário do pool de intercâmbio não pode chamar esse 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 - O ID do token do qual converter.
  • to_token_id: string - O ID do token para conversão.
  • to_org_id: string - O ID do provedor de serviços de associação (MSP) do usuário na organização atual para receber os tokens.
  • to_user_id: string - O nome de usuário ou o ID de e-mail do usuário para receber os tokens.
Retorna:
  • Em caso de sucesso, uma mensagem que indica que a conversão do token foi bem-sucedida.
Exemplo de Valor de Retorno:
{
    "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 retorna o histórico de conversão de token para uma conta de token especificada. Esse método pode ser chamado pelo Token Admin do chaincode e pelo proprietário da conta do token.
Ctx.Account.GetTokenConversionHistory(account_id string, org_id string, user_id string) (interface{}, error)
Parâmetros:
  • account_id: string - O ID da conta de token fungível.
  • org_id: string - O ID do provedor de serviços de associação (MSP) do usuário na organização atual.
  • user_id: string - O nome de usuário ou o ID de e-mail do usuário.
Retorna:
  • Em caso de sucesso, um objeto JSON com detalhes do histórico de conversão.
Exemplo de Valor de Retorno:
[
    {
        "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 retorna o histórico de taxa de conversão de token para um par de tokens. Esse método pode ser chamado pelo Token Admin do chaincode, qualquer Org Admin e por qualquer proprietário de conta de token.
Ctx.TokenConversionRate.History(conversion_rate_id string) (interface{}, error)
Parâmetros:
  • conversion_rate_id: string - O ID do objeto de taxa de conversão.
Retorna:
  • Em caso de sucesso, um objeto JSON com detalhes do histórico da taxa de conversão.
Exemplo de Valor de Retorno:
[
  {
    "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
Esse método retorna os valores org_id e user_id para o usuário do pool de intercâmbio. Este método só pode ser chamado por um Token Admin do chaincode.
Ctx.TokenConvertor.GetExchangePoolUser()
Parâmetros:
  • nenhuma
Retorna:
  • Em caso de sucesso, uma mensagem com informações sobre o usuário do pool de intercâmbio.
Exemplo de Valor de Retorno:
{
    "AssetType": "oconversion",
    "ConvertorId": "bcb1f3b1442c625d3ce205660c5e717c5858a1fe1e12c325df799a851ceaa09b",
    "OrgId": "Org1MSP",
    "UserId": "exchangepooluser"
}