brunch

You can make anything
by writing

C.S.Lewis

by SKKRYPTO Dec 12. 2019

[Skkrypto X Luniverse]공부노트

타체인 토큰과 루니버스 사이드토큰 스왑하기

안녕하세요 Skkrypto User guide 팀입니다. 지난 시간까지는 루니버스 협력사 Dapp들을 다뤘는데요, 앞으로 2주동안은 타사의 토큰을 루니버스의 토큰으로 스왑(swap)하는 과정에 대해 다뤄보겠습니다.


Swap이 필요한 이유?

루니버스는 BaaS (Blockchain as a Service), 즉 상용중인 어플리케이션이 블록체인 서비스를 쉽게 사용할 수 있도록 돕는 플랫폼입니다. 루니버스는 API를 간편하게 사용할 수 있다는 점에서 차별화된 장점을 가지고 있기에 이미 다른 토큰을 사용하고 있는 회사들도 루니버스 서비스로 옮겨가고 싶을 상황이 생기는 것은 자명합니다. 만약 어떤 어플리케이션이 이미 토큰을 사용하고 있는데, 루니버스의 서비스를 사용하고 싶다면 어떻게 해야 할까요? 기존의 모든 토큰을 모두 버리고 루니버스의 서비스를 사용할 수는 없지 않을까요? 다른 토큰을 받으면, 그에 상응하는 루니버스 사이드 토큰으로 호환해주면 되겠죠? 그래서 사용중인 다른 체인의 토큰을 루니버스 사이드 체인으로 바꾸는 상황을 다뤄보겠습니다!

토큰을 swap하는 ‘Token-Based’ 프로젝트를 만들어보겠습니다.


Token-Based : 다른 체인이 가상계좌에 입금 시, TokenBridge라는 스마트 컨트랙트를 통해 루니버스 사이드 토큰을 지급해보겠습니다.


스와핑을 위한 시나리오는 다음과 같습니다.

1)    Dapp사의 user id는 이미 있다고 가정

2) 가상 계좌(address)를 생성해서 그 user id와 매핑

           - 가상계좌를 사용하는 이유는 현실적으로 오늘날 사용자들의 토큰은 대부분 거래소에 있는데 거래소는 특정 주소로의 토큰 전송 기능만 제공합니다. 이럴 경우 거래소가 토큰을 전송하는 구조이므로, 송신자를 통해 토큰의 소유자를 식별하기 어렵다는 단점이 있습니다. 이에 따라 사용자의 요청 별로 가상계좌를 생성하여, 해당 계좌로의 입금확인을 통해 송신자와 수량을 식별할 수 있게 만듭니다.

3) 사용자가 가상계좌로 타체인 토큰 전송

           - 타체인의 토큰을 받아야 합니다.

4) 입금 확인되면, 루니버스 wallet api 호출로 user id에 해당하는 REOA 생성

5) 생성된 REOA를 payout의 _to에 넣어야 합니다.


그래서 순서는, 타체인에 사용자 id에 해당하는 가상계좌가 있고 사용자가 가상계좌로 토큰 입금을 잘 했다는 것을 가정한 상태에서, 루니버스 체인에서 사용자 id에 해당하는 reoa 생성해주고,  reoa에 루니버스 사이드 토큰 전송으로 진행하겠습니다.

자 이제 시작해 보겠습니다!

<사전준비>

1. [콘솔] Side Token 생성 

먼저 루니버스의 사이드 토큰을 생성해야겠죠? 일단 만들어 놔야 줄 것이 있으니까요.


저는 이렇게 사이드 토큰을 만들었습니다. 현재 스크립토 성균투표를 위해 만들어진 메인토큰의 사이드 토큰을 만든 것입니다. (스크립토 계정으로부터 100MT를 받고 시작했습니다.)

사이드 토큰을 만드는 법은 앞선 글에서 자세히 나와 있으니 이번 게시글에서는 다루지 않겠습니다. 

사이드 토큰을 만들었습니다! Contract Address를 통해 접근할 것이기 때문에 저는 주소를 미리 복사해 놓겠습니다.


2. [콘솔] REOA 생성 (Token Bridge Owner)

이제 REOA를 만들겠습니다. REOA의 R은 Remote이고 EOA는 이더리움의 Externally Owned Account(외부소유계정)입니다.

REOA를 생성하기 전에 API Key를 생성해야 한다는 것을 잊으시면 안됩니다!


여기서 잠깐!


EOA에 대해 조금 더 설명해보자면 EOA(Externally Owned Accounts)는 외부 소유 어카운트로서 개인 키에 의해 통제되는 계정 정보입니다. EOA 계정은 사용자 계정이며, 개인 키(Private Key) 정보를 가지고 있습니다. 

1.     [콘솔] 토큰 브릿지 컨트랙트 (TokenBridge.sol) 배포

이제 토큰 브릿지라는 스마트 컨트렉트를 업로드 해보겠습니다. 다른 토큰이 입금된 것을 확인하면 루니버스의 사이드 토큰을 전송해주는 계약입니다. 여기서 중요한 것은 Constructor Parameters의 value값에 앞에서 만든 EST의 주소를 넣어야 한다는 점입니다.

앞서 SKKvote용 트랜젝션 틈으로(앞선 게시글 참조) TokenBridge가 생성된 것을 볼 수 있습니다.


자 이제 준비는 모두 끝났습니다. 이제 EST라고 우리가 만든 사이드 토큰을, 스마트 컨트랙트인 토큰 브릿지에 전송하여, 토큰 브릿지의 계약이 성립하면, 우리는 사용자에게 우리의 사이드 토큰을 배분하면 됩니다. 그 부분부터 다음 주에 다시 다뤄보겠습니다.


“위 글은 람다 256 루니버스의 Dev Plan을 무료로 제공받아 작성하였습니다”

작성자: 이성현/maxlee9185@naver.com


브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari