토큰 변환에 대한 이동 방법

Blockchain App Builder는 토큰 분류법 프레임워크 표준을 사용하는 대체 가능한 토큰을 변환하는 데 사용할 수 있는 메소드를 자동으로 생성합니다.

토큰 변환 방법에는 교환 풀의 개념이 포함됩니다. 교환 풀 계정은 다른 토큰 계정에서 자금을 조달합니다. 토큰을 민트할 때 민트된 토큰의 백분율이 교환 풀 계정으로 전송되도록 지정할 수 있습니다.

토큰 변환 프로세스

토큰 변환의 일반적인 흐름은 다음 단계를 따릅니다.
  1. InitializeExchangePoolUser 메소드를 호출하여 교환 풀 사용자를 초기화합니다.
  2. CreateExchangePoolAccounts 메소드를 호출하여 Exchange Pool 계정을 생성합니다. 변환하거나 변환하려는 모든 유형의 대체 가능 토큰에 대한 교환 풀 계정을 만듭니다.
  3. AddConversionRate 메소드를 호출하여 변환할 각 토큰 쌍에 대한 변환율을 설정합니다.
  4. 다음 방법 중 하나로 교환 풀 토큰 계정에 자금을 조달합니다.
    • 표준 전송 방법을 사용하여 교환 풀 토큰 계정으로 토큰을 전송합니다.
    • 토큰을 연동할 때 MintWithFundingExchangePoolToken 메소드를 호출합니다. 이 메소드는 연동된 토큰의 백분율을 교환 풀 계정으로 전송할 수 있습니다.
  5. 두 가지 대체 가능한 토큰 간에 변환하려면 TokenConversion 메소드를 호출하십시오. 단일 사용자는 두 토큰 계정 간에 토큰을 변환하거나 한 쌍의 사용자가 한 계정에서 다른 계정으로 토큰을 직접 변환할 수 있습니다.
  6. 환전 풀 사용자는 환전 풀 계정 잔액 및 계정 트랜잭션을 볼 수 있습니다.
    • 각 교환 풀 토큰 계정의 잔액을 보려면 GetAccount 메소드를 호출합니다.
    • 각 교환 풀 토큰 계정에 대한 계정 트랜잭션을 보려면 GetAccountTransactionHistoryGetAccountTransactionHistoryWithFilters 메소드를 호출하십시오.

자동으로 생성된 토큰 변환 방법

Blockchain App Builder는 다양한 유형의 재미있는 토큰 사이에서 변환 할 수있는 방법을 자동으로 생성합니다. 컨트롤러 메소드는 퍼블릭이어야 호출할 수 있습니다. 공용 메소드 이름은 대문자로 시작합니다. 소문자로 시작하는 메소드 이름은 전용입니다.

InitializeExchangePoolUser
이 방법은 일회성 작업인 교환 풀 사용자를 초기화합니다. 이 메소드는 체인 코드의 Token Admin에 의해서만 호출될 수 있습니다.
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)
}
매개변수:
  • org_id: string – 현재 조직에 있는 사용자의 멤버쉽 서비스 공급자(MSP) ID입니다.
  • user_id: string – 사용자의 사용자 이름 또는 전자메일 ID입니다.
반환값:
  • 성공 시 교환 풀 사용자의 세부정보를 포함하는 메시지입니다.
반환 값 예제:
{
    "AssetType": "oconversion",
    "ConvertorId": "bcb1f3b1442c625d3ce205660c5e717c5858a1fe1e12c325df799a851ceaa09b",
    "OrgId": "Org1MSP",
    "UserId": "exchangepooluser"
}
CreateExchangePoolAccounts
이 방법은 지정된 토큰 ID 배열에 대한 교환 풀 토큰 계정을 만듭니다. 이 메소드는 체인 코드의 Token Admin에 의해서만 호출될 수 있습니다.
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)
}
매개변수:
  • token_ids: string [] – 토큰 ID의 배열입니다. 최대 10개의 토큰 ID를 지정할 수 있습니다.
반환값:
  • 성공 시 만들어진 Exchange 풀 계정의 세부정보를 포함하는 객체 목록입니다.
반환 값 예제:
[
    {
        "AccountId": "oaccount~cc9d84f6d4a5976532493ef5200c9603e138adc35166ffd5fd1aad9c1647f034",
        "Status": "created",
        "TokenId": "USD"
    },
    {
        "AccountId": "oaccount~3d4933111ec8bd6cc1ebb43f2b2c390deb929cfa534f9c6ada8e63bac04a13c0",
        "Status": "created",
        "TokenId": "INR"
    }
]
AddConversionRate
이 방법은 토큰 쌍에 대한 변환율을 추가합니다. 토큰 변환율은 소수점 8자리까지 지정할 수 있습니다. 이 메소드는 체인 코드의 Token Admin에 의해서만 호출될 수 있습니다.
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)
}
매개변수:
  • from_token_id: string – 변환할 토큰의 ID입니다.
  • to_token_id: string – 변환할 토큰의 ID입니다.
  • token_conversion_rate: float64from_token_id 토큰을 to_token_id 토큰으로 변환하는 비율입니다.
반환값:
  • 성공 시 변환율 객체의 JSON 표현입니다.
반환 값 예제:
{
    "AssetType": "oconversionRate",
    "ConvertorRateId": "oconversionRate~79eacc670928bbc4c9ba4ebee135c8b4d6411af3110f8a9b782c383d5e18b150",
    "FromTokenId": "USD",
    "ToTokenId": "INR",
    "ConversionRate": 10
}
GetConversionRate
이 방법은 토큰 쌍에 대한 현재 변환율을 가져옵니다. 이 메소드는 체인 코드의 Token Admin, 임의의 Org Admin 및 임의의 토큰 계정 소유자가 호출할 수 있습니다.
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)
}
매개변수:
  • from_token_id: string – 변환할 토큰의 ID입니다.
  • to_token_id: string – 변환할 토큰의 ID입니다.
반환값:
  • 성공 시 변환율 객체의 JSON 표현입니다.
반환 값 예제:
{
    "AssetType": "oconversionRate",
    "ConvertorRateId": "oconversionRate~79eacc670928bbc4c9ba4ebee135c8b4d6411af3110f8a9b782c383d5e18b150",
    "FromTokenId": "USD",
    "ToTokenId": "INR",
    "ConversionRate": 10
}
UpdateConversionRate
이 방법은 토큰 쌍에 대한 현재 변환율을 업데이트합니다. 토큰 변환율은 소수점 8자리까지 지정할 수 있습니다. 이 메소드는 체인 코드의 Token Admin에 의해서만 호출될 수 있습니다.
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)
}
매개변수:
  • from_token_id: string – 변환할 토큰의 ID입니다.
  • to_token_id: string – 변환할 토큰의 ID입니다.
  • token_conversion_rate: float64from_token_id 토큰을 to_token_id 토큰으로 변환하는 비율입니다.
반환값:
  • 성공 시 업데이트된 변환율 객체의 JSON 표현입니다.
반환 값 예제:
{
    "AssetType": "oconversionRate",
    "ConvertorRateId": "oconversionRate~79eacc670928bbc4c9ba4ebee135c8b4d6411af3110f8a9b782c383d5e18b150",
    "FromTokenId": "USD",
    "ToTokenId": "INR",
    "ConversionRate": 15
}
MintWithFundingExchangePool
이 메소드는 지정된 토큰 ID 및 수량을 기준으로 호출자 계정의 토큰을 민트합니다. 연동된 수량의 토큰 퍼센트가 교환 풀 토큰 계정으로 이전됩니다.
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)
}
매개변수:
  • token_id: string – 민트할 토큰의 ID입니다.
  • token_quantity: float64 – 민트할 총 토큰 수입니다.
  • percentage_token_to_exchange_pool: float64 – 교환 풀 토큰 계정으로 전송할 민트 토큰의 백분율입니다.
반환값:
  • 성공 시 교환 풀의 주조 및 자금 조달이 성공했음을 나타내는 메시지입니다.
반환 값 예제:
{
    "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
이 메소드는 호출자 계정의 토큰을 to_token_id, to_org_idto_user_id 값으로 지정된 계정으로 변환합니다. 이 메소드는 체인 코드의 Token Admin 및 임의의 토큰 계정 소유자가 호출할 수 있습니다. 교환 풀 사용자는 이 메소드를 호출할 수 없습니다.
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)
}
매개변수:
  • from_token_id: string – 변환할 토큰의 ID입니다.
  • to_token_id: string – 변환할 토큰의 ID입니다.
  • to_org_id: string – 토큰을 수신할 현재 조직에 있는 사용자의 멤버쉽 서비스 공급자(MSP) ID입니다.
  • to_user_id: string – 토큰을 수신할 사용자의 사용자 이름 또는 전자 메일 ID입니다.
  • token_quantity: float64 – 전송할 총 토큰 수입니다.
반환값:
  • 성공 시 토큰 변환을 나타내는 메시지가 성공했습니다.
반환 값 예제:
{
    "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
이 메소드는 지정된 토큰 계정에 대한 토큰 변환 기록을 반환합니다. 이 메소드는 체인 코드의 Token Admin, 지정된 조직의 Org Admin 및 토큰 계정 소유자가 호출할 수 있습니다.
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)
}
매개변수:
  • token_id: string – 토큰 ID입니다.
  • org_id: string – 현재 조직에 있는 사용자의 멤버쉽 서비스 공급자(MSP) ID입니다.
  • user_id: string – 사용자의 사용자 이름 또는 전자메일 ID입니다.
반환값:
  • 성공 시 변환 내역 세부정보가 포함된 JSON 객체입니다.
반환 값 예제:
[
    {
        "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
이 메소드는 토큰 쌍에 대한 토큰 변환율 기록을 반환합니다. 이 메소드는 체인 코드의 Token Admin, 임의의 Org Admin 및 임의의 토큰 계정 소유자가 호출할 수 있습니다.
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)
}
매개변수:
  • from_token_id: string – 변환율을 계산하기 위해 변환할 토큰의 ID입니다.
  • to_token_id: string – 변환율을 계산하기 위해 변환할 토큰의 ID입니다.
반환값:
  • 성공 시 환율 기록 세부정보가 포함된 JSON 객체입니다.
반환 값 예제:
[
  {
    "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
이 메소드는 교환 풀 사용자에 대한 org_iduser_id 값을 반환합니다. 이 메소드는 체인 코드의 Token Admin에 의해서만 호출될 수 있습니다.
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()
}
매개변수:
  • 없음
반환값:
  • 성공 시 교환 풀 사용자에 대한 정보가 포함된 메시지입니다.
반환 값 예제:
{
    "AssetType": "oconversion",
    "ConvertorId": "bcb1f3b1442c625d3ce205660c5e717c5858a1fe1e12c325df799a851ceaa09b",
    "OrgId": "Org1MSP",
    "UserId": "exchangepooluser"
}
InitializeExchangePoolUser
이 방법은 일회성 작업인 교환 풀 사용자를 초기화합니다. 이 메소드는 체인 코드의 Token Admin에 의해서만 호출될 수 있습니다.
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)
}
매개변수:
  • org_id: string – 현재 조직에 있는 사용자의 멤버쉽 서비스 공급자(MSP) ID입니다.
  • user_id: string – 사용자의 사용자 이름 또는 전자메일 ID입니다.
반환값:
  • 성공 시 교환 풀 사용자의 세부정보를 포함하는 메시지입니다.
반환 값 예제:
{
    "AssetType": "oconversion",
    "ConvertorId": "bcb1f3b1442c625d3ce205660c5e717c5858a1fe1e12c325df799a851ceaa09b",
    "OrgId": "Org1MSP",
    "UserId": "exchangepooluser"
}
CreateExchangePoolAccounts
이 방법은 지정된 토큰 ID 배열에 대한 교환 풀 토큰 계정을 만듭니다. 이 메소드는 체인 코드의 Token Admin에 의해서만 호출될 수 있습니다.
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)
}
매개변수:
  • token_ids: string [] – 토큰 ID의 배열입니다. 최대 10개의 토큰 ID를 지정할 수 있습니다.
반환값:
  • 성공 시 만들어진 Exchange 풀 계정의 세부정보를 포함하는 객체 목록입니다.
반환 값 예제:
[
    {
        "AccountId": "oaccount~cc9d84f6d4a5976532493ef5200c9603e138adc35166ffd5fd1aad9c1647f034",
        "Status": "created",
        "TokenId": "USD"
    },
    {
        "AccountId": "oaccount~3d4933111ec8bd6cc1ebb43f2b2c390deb929cfa534f9c6ada8e63bac04a13c0",
        "Status": "created",
        "TokenId": "INR"
    }
]
AddConversionRate
이 방법은 토큰 쌍에 대한 변환율을 추가합니다. 토큰 변환율은 소수점 8자리까지 지정할 수 있습니다. 이 메소드는 체인 코드의 Token Admin에 의해서만 호출될 수 있습니다.
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)
}
매개변수:
  • from_token_id: string – 변환할 토큰의 ID입니다.
  • to_token_id: string – 변환할 토큰의 ID입니다.
  • token_conversion_rate: float64from_token_id 토큰을 to_token_id 토큰으로 변환하는 비율입니다.
반환값:
  • 성공 시 변환율 객체의 JSON 표현입니다.
반환 값 예제:
{
    "AssetType": "oconversionRate",
    "ConvertorRateId": "oconversionRate~79eacc670928bbc4c9ba4ebee135c8b4d6411af3110f8a9b782c383d5e18b150",
    "FromTokenId": "USD",
    "ToTokenId": "INR",
    "ConversionRate": 10
}
GetConversionRate
이 방법은 토큰 쌍에 대한 현재 변환율을 가져옵니다. 이 메소드는 지정된 조직의 Token Admin 또는 Token Auditor, Org Admin 또는 Org Auditor 또는 임의의 토큰 계정 소유자가 호출할 수 있습니다.
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)
}
매개변수:
  • from_token_id: string – 변환할 토큰의 ID입니다.
  • to_token_id: string – 변환할 토큰의 ID입니다.
반환값:
  • 성공 시 변환율 객체의 JSON 표현입니다.
반환 값 예제:
{
    "AssetType": "oconversionRate",
    "ConvertorRateId": "oconversionRate~79eacc670928bbc4c9ba4ebee135c8b4d6411af3110f8a9b782c383d5e18b150",
    "FromTokenId": "USD",
    "ToTokenId": "INR",
    "ConversionRate": 10
}
UpdateConversionRate
이 방법은 토큰 쌍에 대한 현재 변환율을 업데이트합니다. 토큰 변환율은 소수점 8자리까지 지정할 수 있습니다. 이 메소드는 체인 코드의 Token Admin에 의해서만 호출될 수 있습니다.
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)
}
매개변수:
  • from_token_id: string – 변환할 토큰의 ID입니다.
  • to_token_id: string – 변환할 토큰의 ID입니다.
  • token_conversion_rate: float64from_token_id 토큰을 to_token_id 토큰으로 변환하는 비율입니다.
반환값:
  • 성공 시 업데이트된 변환율 객체의 JSON 표현입니다.
반환 값 예제:
{
    "AssetType": "oconversionRate",
    "ConvertorRateId": "oconversionRate~79eacc670928bbc4c9ba4ebee135c8b4d6411af3110f8a9b782c383d5e18b150",
    "FromTokenId": "USD",
    "ToTokenId": "INR",
    "ConversionRate": 15
}
MintWithFundingExchangePool
이 메소드는 지정된 토큰 ID 및 수량을 기준으로 호출자 계정의 토큰을 민트합니다. 연동된 수량의 토큰 퍼센트가 교환 풀 토큰 계정으로 이전됩니다.
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)
}
매개변수:
  • token_id: string – 민트할 토큰의 ID입니다.
  • token_quantity: float64 – 민트할 총 토큰 수입니다.
  • percentage_token_to_exchange_pool: float64 – 교환 풀 토큰 계정으로 전송할 민트 토큰의 백분율입니다.
반환값:
  • 성공 시 교환 풀의 주조 및 자금 조달이 성공했음을 나타내는 메시지입니다.
반환 값 예제:
{
    "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
이 메소드는 호출자 계정의 토큰을 to_token_id, to_org_idto_user_id 값으로 지정된 계정으로 변환합니다. 이 메소드는 체인 코드의 Token Admin 및 임의의 토큰 계정 소유자가 호출할 수 있습니다. 교환 풀 사용자는 이 메소드를 호출할 수 없습니다.
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)
}
매개변수:
  • from_token_id: string – 변환할 토큰의 ID입니다.
  • to_token_id: string – 변환할 토큰의 ID입니다.
  • to_org_id: string – 토큰을 수신할 현재 조직에 있는 사용자의 멤버쉽 서비스 공급자(MSP) ID입니다.
  • to_user_id: string – 토큰을 수신할 사용자의 사용자 이름 또는 전자 메일 ID입니다.
  • token_quantity: float64 – 전송할 총 토큰 수입니다.
반환값:
  • 성공 시 토큰 변환을 나타내는 메시지가 성공했습니다.
반환 값 예제:
{
    "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
이 메소드는 지정된 토큰 계정에 대한 토큰 변환 기록을 반환합니다. 이 메소드는 지정된 조직의 Token Admin 또는 Token Auditor, Org Admin 또는 Org Auditor 및 지정된 계정 소유자가 호출할 수 있습니다.
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)
}
매개변수:
  • token_id: string – 토큰 ID입니다.
  • org_id: string – 현재 조직에 있는 사용자의 멤버쉽 서비스 공급자(MSP) ID입니다.
  • user_id: string – 사용자의 사용자 이름 또는 전자메일 ID입니다.
반환값:
  • 성공 시 변환 내역 세부정보가 포함된 JSON 객체입니다.
반환 값 예제:
[
    {
        "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
이 메소드는 토큰 쌍에 대한 토큰 변환율 기록을 반환합니다. 이 메소드는 Token Admin, Token Auditor, Org Admin, Org Auditor 또는 임의의 토큰 계정 소유자가 호출할 수 있습니다.
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)
}
매개변수:
  • from_token_id: string – 변환율을 계산하기 위해 변환할 토큰의 ID입니다.
  • to_token_id: string – 변환율을 계산하기 위해 변환할 토큰의 ID입니다.
반환값:
  • 성공 시 환율 기록 세부정보가 포함된 JSON 객체입니다.
반환 값 예제:
[
  {
    "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
이 메소드는 교환 풀 사용자에 대한 org_iduser_id 값을 반환합니다. 이 메소드는 체인코드의 Token Admin 또는 Token Auditor에 의해서만 호출될 수 있습니다.
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()
}
매개변수:
  • 없음
반환값:
  • 성공 시 교환 풀 사용자에 대한 정보가 포함된 메시지입니다.
반환 값 예제:
{
    "AssetType": "oconversion",
    "ConvertorId": "bcb1f3b1442c625d3ce205660c5e717c5858a1fe1e12c325df799a851ceaa09b",
    "OrgId": "Org1MSP",
    "UserId": "exchangepooluser"
}

토큰 변환 SDK 메소드

InitializeExchangePoolUser
이 방법은 일회성 작업인 교환 풀 사용자를 초기화합니다. 이 메소드는 체인 코드의 Token Admin에 의해서만 호출될 수 있습니다.
Ctx.TokenConvertor.InitializeExchangePoolUser(org_id string, user_id string) (interface{}, error)
매개변수:
  • org_id: string – 현재 조직에 있는 사용자의 멤버쉽 서비스 공급자(MSP) ID입니다.
  • user_id: string – 사용자의 사용자 이름 또는 전자메일 ID입니다.
반환값:
  • 성공 시 교환 풀 사용자의 세부정보를 포함하는 메시지입니다.
반환 값 예제:
{
    "AssetType": "oconversion",
    "ConvertorId": "bcb1f3b1442c625d3ce205660c5e717c5858a1fe1e12c325df799a851ceaa09b",
    "OrgId": "Org1MSP",
    "UserId": "exchangepooluser"
}
CreateExchangePoolAccounts
이 방법은 지정된 토큰 ID 배열에 대한 교환 풀 토큰 계정을 만듭니다. 이 메소드는 체인 코드의 Token Admin에 의해서만 호출될 수 있습니다.
Ctx.TokenConvertor.CreateExchangePoolAccounts(tokens []interface{}) (interface{}, error)
매개변수:
  • token_ids: string [] – 토큰 ID의 배열입니다.
반환값:
  • 성공 시 만들어진 Exchange 풀 계정의 세부정보를 포함하는 객체 목록입니다.
반환 값 예제:
[
    {
        "AccountId": "oaccount~cc9d84f6d4a5976532493ef5200c9603e138adc35166ffd5fd1aad9c1647f034",
        "Status": "created",
        "TokenId": "USD"
    },
    {
        "AccountId": "oaccount~3d4933111ec8bd6cc1ebb43f2b2c390deb929cfa534f9c6ada8e63bac04a13c0",
        "Status": "created",
        "TokenId": "INR"
    }
]
AddConversionToken
이 방법은 지정된 토큰에 대한 새 변환율로 토큰을 추가합니다. 토큰 변환율은 소수점 8자리까지 지정할 수 있습니다. 이 메소드는 체인 코드의 Token Admin에 의해서만 호출될 수 있습니다.
Ctx.TokenConvertor.AddConversionToken(from_token_id string, to_token_id string, token_conversion_rate float64) (interface{}, error)
매개변수:
  • from_token_id: string – 변환할 토큰의 ID입니다.
  • to_token_id: string – 변환할 토큰의 ID입니다.
  • token_conversion_rate: float64from_token_id 토큰을 to_token_id 토큰으로 변환하는 비율입니다.
반환값:
  • 성공 시 변환율 객체의 JSON 표현입니다.
반환 값 예제:
{
    "AssetType": "oconversionRate",
    "ConvertorRateId": "oconversionRate~79eacc670928bbc4c9ba4ebee135c8b4d6411af3110f8a9b782c383d5e18b150",
    "FromTokenId": "USD",
    "ToTokenId": "INR",
    "ConversionRate": 10
}
Get
이 방법은 토큰 쌍에 대한 현재 변환율을 가져옵니다. 이 메소드는 체인 코드의 Token Admin 및 임의의 토큰 계정 소유자가 호출할 수 있습니다.
Ctx.TokenConversionRate.Get(id string) (ConversionRate, error)
매개변수:
  • id: string – 토큰 변환율 객체의 ID입니다.
반환값:
  • 성공 시 변환율 객체의 JSON 표현입니다.
반환 값 예제:
{
    "AssetType": "oconversionRate",
    "ConvertorRateId": "oconversionRate~79eacc670928bbc4c9ba4ebee135c8b4d6411af3110f8a9b782c383d5e18b150",
    "FromTokenId": "USD",
    "ToTokenId": "INR",
    "ConversionRate": 10
}
UpdateTokenConversionRate
이 방법은 토큰 쌍에 대한 현재 변환율을 업데이트합니다. 토큰 변환율은 소수점 8자리까지 지정할 수 있습니다. 이 메소드는 체인 코드의 Token Admin에 의해서만 호출될 수 있습니다.
Ctx.TokenConvertor.UpdateTokenConversionRate(from_token_id string, to_token_id string, token_conversion_rate float64) (interface{}, error)
매개변수:
  • from_token_id: string – 변환할 토큰의 ID입니다.
  • to_token_id: string – 변환할 토큰의 ID입니다.
  • token_conversion_rate: float64from_token_id 토큰을 to_token_id 토큰으로 변환하는 비율입니다.
반환값:
  • 성공 시 업데이트된 변환율 객체의 JSON 표현입니다.
반환 값 예제:
{
    "AssetType": "oconversionRate",
    "ConvertorRateId": "oconversionRate~79eacc670928bbc4c9ba4ebee135c8b4d6411af3110f8a9b782c383d5e18b150",
    "FromTokenId": "USD",
    "ToTokenId": "INR",
    "ConversionRate": 15
}
MintWithFundingExchangePool
이 메소드는 지정된 토큰 ID 및 수량을 기준으로 호출자 계정의 토큰을 민트합니다. 연동된 수량의 토큰 퍼센트가 교환 풀 토큰 계정으로 이전됩니다.
Ctx.TokenConvertor.MintWithFundingExchangePool(token interface{}, token_quantity float64, percentage_token_to_exchangePool float64) (interface{}, error)
매개변수:
  • token_id: string – 민트할 토큰의 ID입니다.
  • token_quantity: float64 – 민트할 총 토큰 수입니다.
  • percentage_token_to_exchange_pool: float64 – 교환 풀 토큰 계정으로 전송할 민트 토큰의 백분율입니다.
반환값:
  • 성공 시 교환 풀의 주조 및 자금 조달이 성공했음을 나타내는 메시지입니다.
반환 값 예제:
{
    "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
이 메소드는 호출자 계정의 토큰을 to_token_id, to_org_idto_user_id 값으로 지정된 계정으로 변환합니다. 이 메소드는 체인 코드의 Token Admin 및 임의의 토큰 계정 소유자가 호출할 수 있습니다. 교환 풀 사용자는 이 메소드를 호출할 수 없습니다.
Ctx.TokenConvertor.TokenConversion(from_token interface{}, to_token interface{}, to_org_id string, to_user_id string, token_quantity float64) (interface{}, error)
매개변수:
  • from_token_id: string – 변환할 토큰의 ID입니다.
  • to_token_id: string – 변환할 토큰의 ID입니다.
  • to_org_id: string – 토큰을 수신할 현재 조직에 있는 사용자의 멤버쉽 서비스 공급자(MSP) ID입니다.
  • to_user_id: string – 토큰을 수신할 사용자의 사용자 이름 또는 전자 메일 ID입니다.
반환값:
  • 성공 시 토큰 변환을 나타내는 메시지가 성공했습니다.
반환 값 예제:
{
    "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
이 메소드는 지정된 토큰 계정에 대한 토큰 변환 기록을 반환합니다. 이 메소드는 체인 코드의 Token Admin 및 토큰 계정 소유자가 호출할 수 있습니다.
Ctx.Account.GetTokenConversionHistory(account_id string, org_id string, user_id string) (interface{}, error)
매개변수:
  • account_id: string – 대체 가능한 토큰 계정의 ID입니다.
  • org_id: string – 현재 조직에 있는 사용자의 멤버쉽 서비스 공급자(MSP) ID입니다.
  • user_id: string – 사용자의 사용자 이름 또는 전자메일 ID입니다.
반환값:
  • 성공 시 변환 내역 세부정보가 포함된 JSON 객체입니다.
반환 값 예제:
[
    {
        "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
이 메소드는 토큰 쌍에 대한 토큰 변환율 기록을 반환합니다. 이 메소드는 체인 코드의 Token Admin, 임의의 Org Admin 및 임의의 토큰 계정 소유자가 호출할 수 있습니다.
Ctx.TokenConversionRate.History(conversion_rate_id string) (interface{}, error)
매개변수:
  • conversion_rate_id: string – 변환율 객체의 ID입니다.
반환값:
  • 성공 시 환율 기록 세부정보가 포함된 JSON 객체입니다.
반환 값 예제:
[
  {
    "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
이 메소드는 교환 풀 사용자에 대한 org_iduser_id 값을 반환합니다. 이 메소드는 체인 코드의 Token Admin에 의해서만 호출될 수 있습니다.
Ctx.TokenConvertor.GetExchangePoolUser()
매개변수:
  • 없음
반환값:
  • 성공 시 교환 풀 사용자에 대한 정보가 포함된 메시지입니다.
반환 값 예제:
{
    "AssetType": "oconversion",
    "ConvertorId": "bcb1f3b1442c625d3ce205660c5e717c5858a1fe1e12c325df799a851ceaa09b",
    "OrgId": "Org1MSP",
    "UserId": "exchangepooluser"
}