루니버스 아이돌펀딩 시뮬레이션 Part 1
안녕하세요, Skkrypto User guide 팀입니다.
지난 시간에는 Remix로 스마트 컨트랙트를 개발하는 방법에 대해 다루어 보았는데요, 이번에는 람다256 사의 Luniverse 플랫폼 교육 내용을 바탕으로 가상 ‘아이돌 펀딩’ 시뮬레이션을 진행해볼까 합니다. 팬이 아이돌에게 펀딩을 하거나 좋아요를 누르면 그 대가로 리워드 토큰을 받고, 그 리워드 토큰들로 특정 물품을 구입할 수 있는 상황 설정입니다. 참고로, 람다 256은 루니버스 플랫폼의 대중화를 위해 월 2회의 정기적인 무료 교육세션을 제공하고 있습니다. ‘온오프믹스(https://www.onoffmix.com)’ 내 ‘루니버스 블록체인 서비스 오프라인 교육’에서 무료로 교육 신청이 가능합니다. ‘아이돌 펀딩’ 시뮬레이션의 이해를 돕기 위해 다음과 같이 도식화 해보았습니다.
오늘은 DApp과 Side Token을 생성하는 법에 대해 실습해보겠습니다. 개인 정보나 키들은 모두 모자이크 처리했습니다.
1. DApp 생성
1-1. DApp 생성
DApp이란 Decentralized App의 줄임말로 기존 어플리케이션에 블록체인을 이용하여 데이터를 기록하고 조회할 수 있는 기능을 추가한 App입니다. 루니버스가 제공하는 Transaction API 서비스를 이용하면 기존 Application을 손쉽게 DApp으로 전환할 수 있습니다.
루니버스로 아이돌펀딩 DApp을 만들어보도록 하겠습니다. 먼저, Console의 DApp에서 Create DApp을 클릭합니다. 그럼 아래의 창이 뜰 것입니다. DApp Name을 ‘idolfunding2020’으로 설정해보도록 하겠습니다. 이후 Create를 클릭하면 간단하게 DApp 생성이 완료됩니다.
1-2. DApp의 API key 생성
생성한 DApp에서 사이드체인에 트랜잭션을 요청하려면 반드시 API Key를 갖고 있어야 합니다. API key를 생성하는 방법은 다음과 같습니다.
1. Console 화면에서 방금 정의한 DApp(‘idolfunding2020’)을 클릭합니다.
2. 화면 왼쪽의 API Key 메뉴를 클릭합니다.
3. Generate를 클릭해서 API key를 생성합니다.
이를 완료하면 아래과 같은 창이 뜰 것입니다.
1-3. REOA 생성
이제, DApp 생성과 API key 생성을 완료했으니, 시뮬레이션 상의 두 주체인 Pd와 User의 REOA를 생성해보도록 하겠습니다. 루니버스에서는 EOA에 대해 토큰 발행과 트랜잭션 서명을 대신해주는 서비스 또한 제공하기 때문에 기존의 EOA에 Remote를 더해 REOA라는 단어를 사용합니다. 기능이 추가된 EOA라 이해하시면 될 것 같습니다. REOA는 DApp > REOA List에서 생성합니다. Pd account를 생성해보도록 하겠습니다.
먼저 New REOA를 클릭합니다.
그 후 Name란에 지갑의 이름을 입력합니다. 펀딩플랫폼의 이름을 PdAccount로 설정하겠습니다.
이와 동일한 과정으로 유저의 REOA를 생성하면, 펀딩플랫폼과 유저의 지갑 생성이 완료됩니다. 유저 REOA의 이름은 UserAccount로 설정하였습니다.
1-4. IP Whitelist 생성
앞서, DApp이 사이드체인에 트랜잭션을 요청하려면 API Key를 생성해야 한다고 했습니다. 하지만 거래 주체가 아닌 다른 사람이 이 API Key를 갖고 있다면 어떤 일이 벌어질까요? 혹시 모를 불상사를 막기 위해, 루니버스의 Dapp은 IP Whitelist라는 기능을 제공합니다. IP Whitelist 기능을 사용하면 DApp은 루니버스에 등록된 서버에서만이 트랜잭션을 요청할 수 있고, 등록되지 않은 서버에서는 트랜잭션이 발생하지 않습니다. IP Whitelist 설정 역시 DApp창에서 이루어집니다.
Add Whitelist IP를 클릭하고 IP Address에 본인의 IP를 입력한 후 Create를 클릭하면 됩니다.
지금까지 DApp과 관련해 DApp 생성, DApp의 API key 생성, REOA 생성, Whitelist IP 생성 네 가지를 실습해 보았습니다.
이제 사이드 토큰을 발행해보도록 하겠습니다.
2. 사이드 토큰 발행하기
2-1. 사이드 토큰 생성
STEP1. 사이드 토큰 발행화면으로 이동하기
콘솔 창을 아래로 내려보면 Side Token란이 존재할 것입니다. 여기서 ‘Create ERC20 Side Token’을 클릭하면 사이드 토큰 발행 화면으로 이동합니다.
STEP2. 사이드 토큰 발행하기
사이드 토큰 발행 시에 설정해주어야 할 것은 크게 Token Name, Token Symbol, Conversion Rate, Initial Supply 4가지 입니다. 각각은 사이드 토큰의 이름, 심볼, Main Token과의 교환 환율, Main Token의 초기 발행량을 의미합니다. 토큰의 이름을 RewardToken2020, 심볼을 R2020으로 설정해보았습니다.
또, 아이돌 펀딩 DApp에서는 메인토큰 하나가 사이드토큰 10개의 가치의 갖도록, 메인토큰 1000개를 활용하여 사이드토큰 10000개를 발행하도록 설정해보았습니다.
입력이 완료되면 Create버튼을 클릭해서 사이드 토큰을 생성합니다.
Step3. 트랜잭션 서명
하지만, 사이드 토큰을 발행하려면 서명이 필요합니다. 회원가입시에 발급한 Private Key나 Keystore파일을 이용하여 트랜잭션에 서명하면 됩니다. 트랜잭션에 서명을 완료한 뒤 confirm을 누르고 뒤이어 OK 버튼을 클릭하면 사이드토큰 발행이 시작됩니다.
Step4. Side Token 발행 정보 확인
이제 발행이 완료된 Side Token 카드를 클릭해서 Side Token이 정상적으로 발행되었는지를 확인합니다.
사이드토큰이 정상적으로 발행되었습니다. (개인정보와 토큰의 정보가 드러난 부분은 모자이크 처리했습니다.)
2-2. 사이드토큰 트랜잭션 정의하기
마지막으로 사이드토큰 트랜잭션에 대해 정의를 내려보도록 하겠습니다. 해당 시뮬레이션 상황에서 정의해야 할 트랜잭션은 like, funding, purchase 세 가지입니다.
먼저 like 트랜잭션을 정의해보겠습니다. 사용자가 like 버튼을 눌렀을 때 RWT를 보상으로 얻는 트랜잭션을 정의하는 과정입니다.
like 트랜잭션을 정의하기 위해 DApp으로 이동한 후 Transaction Management를 클릭합니다. 우측 상단의 ‘Create Transaction’을 클릭하면 이제 이 곳에서 트랜잭션을 정의할 수 있습니다.
아이돌 펀딩 시뮬레이션에서의 트랜잭션을 정의하기 위해 [Token/Contract] 탭에서는 사이드토큰 발행 시에 토큰 심볼로 지정했던 R2020을 선택하고, [Function]으로 Free Simple Transfer을 선택합니다. [Action Name]은 like로, [Sender]는 PdAcount로, [Receiver]는 Flexible로 정의합니다. Receiver를 Flexible로 설정해주는 이유는 펀딩 플랫폼이 PdAccount 하나인 데에 반해 아이돌 펀딩에 참여하는 사람들은 불특정 다수이기 때문입니다. funding에도 동일한 상황이 적용되기 때문에 Action Name만 funding으로 바꾸어 주는 것 이외에는 위와 동일하게 funding 트랜잭션을 생성하면 됩니다.
한편, purchase 트랜잭션은 사용자가 물건을 구매할 때 Pd로 RWT를 전송하기 때문에 [Sender]가 Flexible이 되고, [Receiver]가 PdAccount가 됩니다. [Token/Contract] 탭과 [Function]탭은 동일하게, [Action Name] 탭은 purchase로, [Sender] 탭은 Flexible로, [Receiver] 탭은 PdAccount로 지정해준 후 트랜잭션을 생성하면 됩니다.
다음은 세 트랜잭션에 대한 정의를 마친 후의 모든 정의가 반영된 결과입니다.
아울러 루니버스는 [Transaction Management] 탭에서 해당 트랜잭션에 대한 API 또한 제공함으로써 사용자가 편리하게 개발할 수 있는 환경을 지원하고 있습니다.
이상 루니버스를 사용하여 간편하게 DApp과 사이드 토큰을 생성해보았습니다.
이번에 소개해드리는 내용은 루니버스 유저 가이드 'Demo DApp 체험하기'
(https://guide.luniverse.io/docs/demo-dapp-%EC%B2%B4%ED%97%98%ED%95%98%EA%B8%B0-1)에서 또한 확인해보실 수 있습니다.
다음 포스팅에는 루니버스 상에서 아이돌 펀딩 컨트랙트를 배포하고, 사이드토큰의 이동을 확인해보겠습니다.
“위 글은 람다 256 루니버스의 Dev Plan을 무료로 제공받아 작성하였습니다.”
작성자: 류승우/Robin(seungwoo.ryu.94@gmail.com)