루니버스 사이드 토큰을 메인넷 토큰으로 전환하는 방법을 알려드립니다.
1. 사이드 토큰 컨트랙트의 Redeem to LMT Function Tx-Action 정의하기
사이드 토큰을 Redeem하기 위해서는 사이드 토큰 컨트랙트에 구현된 Redeem to LMT
function을 호출해야 합니다. 사이드 토큰 컨트랙트에 구현되어 있는 function 목록은 다음과 같습니다.
Function | Parameter | Description |
---|---|---|
Allowance | _owner _spender | _owner가 _spender에게 Approve한 토큰의 총량을 반환하는 Function 입니다. |
Approve | _spender _value | _spender에게 _value만큼의 내 토큰을 가져갈 수 있는 권리를 부여하는 Function 입니다. |
Balance Of | _owner | _owner가 보유하고 있는 Token의 총량을 반환하는 Function 입니다. |
Free Simple Transfer | _to _value | _to에게 _value만큼의 토큰을 전송하는 Function 입니다. 별도의 수수료를 부과하지 않습니다. |
Paid Simple Transfer | _to _amount _feeCollector _fee | _to에게 _amount만큼의 토큰을 전송하는 Function 입니다. ((_amount * _fee) / 100)의 수수료를 _feeCollector에게 입금합니다. |
Redeem to LMT | _amount | 메인토큰(LMT) 페깅(Pegging) 하여 발행한 사이드 토큰(LST)을 _amount만큼 메인토큰으로 상환(Reddem)하는 Function입니다. |
Stake | _amount | _amount만큼의 사이드 토큰을 Stake하는 Function 입니다. |
Total Supply | 토큰의 현존 총량을 반환하는 Function 입니다. 현존 총량은 지금 까지 발행된(mint+) 총량과 메 토큰으로 Reddm되면서 소멸된(burn-) 총량의 합입니다. | |
Transfer From | _from _to _value | _from 주소에서 _value의 토큰을 _to의 주소로 보내는 Function 입니다. 단 이 Function은 Approve Function을 통해 인출할 권리를 받은 _spender만 실행할 수 있습니다. |
Unstake | _amount | Stake한 토큰을 _amount 만큼 해제(Unstake)하는 Function 입니다. |
Redeem to LMT
Function을 RPC endpoint와 컨트랙트 주소를 활용하여 직접 호출하거나 루니버스의 Tx-Action 기능을 활용하여 REST API를 통해 호출할 수 있습니다. 다음 과정을 통해 Tx-Action으로 정의할 수 있습니다.
- 사이드 토큰(LST)을 발행한 후 루니버스 콘솔 좌측 메뉴에서 Tx-Action > Overview 메뉴로 이동합니다.
- [+Create Tx Action] 버튼을 클릭한 후, Create Tx Action 과정을 진행합니다.
- Token/Contract :Redeem용 Tx Action 생성을 위하여 Redeem할 사이드토큰(LST)을 선택합니다.
- Function :
Redeem to LMT
Function을 선택합니다.- Action Name :해당 Function을 호출하기 위해 맵핑할 REST API의 하위 path, 즉 Action Name을 입력합니다. 이때 Action Name은 해당 계정에서 사용하는 모든 Tx-Action 내에서 고유한 값으로 정의되어야 합니다.
- Description :해당 Action에 대한 Description을 입력합니다.(선택 사항)
2. 정의한 Redeem Tx-Action 호출하기
executeTxAction API를 사용하여 정의한 Tx-Action을 호출합니다. 콘솔에서 정의된 Tx-Action을 클릭하면 아래와 같이 Tx-Action 실행을 위한 curl 예제를 확인할 수 있습니다. 주의 사항은 다음과 같습니다.
- txId: UUID v4 형식으로 매 요청마다 다른 값을 생성하여 사용해야 합니다.
- _amount: 전송하고자 하는 토큰의 수량 * 10 ^ (ST 생성시 설정한 Decimals)
(예시) Decimal이 18인 사이드 토큰 1개를 Redeem하고 싶다면, 10의 18제곱에 1을 곱한 1000000000000000000을 입력합니다.
- 정의한 Action Name에 따라 요청 Path는 달라질 수 있습니다.
- EOA 계정으로부터 Tx-Action을 실행하는 경우 아래의 실행 API 응답으로 raw 트랜잭션이 응답됩니다. submitSignedTransaction API를 통해 해당 raw 트랜잭션을 서명하여 최종 전달해야만, Redeem 처리가 완료됩니다.
curl -X POST 'https://api.luniverse.io/tx/v2.0/transactions/{your_Tx_Action_Name}' \
--header 'Authorization: Bearer <YOUR_API_TOKEN>' \
--header 'Content-Type: application/json' \
--data '{
"txId" : "<UUID>",
"from" : "<YOUR_EOA_ADDRESS>",
"inputs": {
"_amount" : "<YOUR_PARAMETER_VALUE>"
}
}'
3. Redemption 결과 조회하기
Tx-Action 실행이 완료되었다면, API를 통해 해당 Redeem 요청의 결과를 확인할 수 있습니다.
getRedemptionResult API를 호출하여 처리 상태를 확인하고, 루니버스 스캔 또는 메인넷 토큰 잔고 조회 API를 통해 실제로 메인넷 토큰으로의 전환이 완료되었는지 확인하세요.
curl -X GET 'https://api.luniverse.io/mx/v2.0/transactions/redeems/<TX_ID or TX_HASH>' \
--header 'Authorization: Bearer <YOUR_API_TOKEN>' \
--header 'Content-Type: application/json' \
--data '{
"sideEnvironmentId": "<SIDE_ENVIRONMENT_ID>"
}'
Swap과 Redeem은 The Balance Testnet, The Balance Testnet Sidechain에서 이용이 불가합니다.
해당 기능을 사용해 보고 싶으신 경우, Contact Us 혹은 [email protected]로 문의 주시면 도와드리도록 하겠습니다.