brunch

You can make anything
by writing

C.S.Lewis

by SKKRYPTO Oct 31. 2019

[Skkrypto X Luniverse] 공부노트

루니버스 아이돌펀딩 시뮬레이션 Part 2

 안녕하세요, Skkrypto User guide 팀입니다. 

지난 시간에는 루니버스를 사용하여 DApp과 사이드 토큰을 생성해보았는데요, 이어서 이번 시간에는 컨트랙트를 배포하고, 사이트토큰의 이동을 DApp 서버에서 직접 확인해보도록 하겠습니다. ‘아이돌 펀딩’이라는 가상 시뮬레이션 상황은 지난 게시물과 동일합니다. 

3. 컨트랙트 배포 (Contract Deploy)

컨트랙트를 배포하는 방법은 두 가지입니다. 루니버스를 통하여 배포하는 방법과 루니버스에서 지원하는 Solidity IDE (Remix 및 Atom)를 사용하여 배포하는 방법이 있습니다.. 두 가지 방법 모두 살펴보도록 하겠습니다. 이에 앞서, 아이돌 펀딩 시뮬레이션을 실행해볼 수 있는 데모 컨트랙트 파일은 Luniverse 서비스 페이지의 User guide -> demo Dapp 체험하기에서 다운 받아 사용했습니다. (https://luniverse.s3.ap-northeast-2.amazonaws.com/demo/demo-idol-funding.zip) 파일 내에 있는 Product.sol 파일이 바로 아이돌 펀딩 컨트랙트 파일입니다


3-1. 루니버스에서 컨트랙트 배포하기

루니버스에서 컨트랙트를 배포하는 방법은 간단합니다. 먼저, Console 화면에서 Side Chain 탭에 있는 체인을 클릭합니다. 이후, User Contract List 탭으로 들어간 뒤, 우측 상단의 Create User Contract을 눌러 이곳에 컨트랙트의 정보를 입력해주면 됩니다. Name과 Description에 컨트랙트의 정보를 입력하고, 컨트랙트 파일을 업로드 한 후 Apply를 누르면 간편하게 컨트랙트가 배포됩니다.

3-2. Remix를 사용하여 컨트랙트 배포하기  

Remix를 사용하여 컨트랙트를 배포하는 방법은 보다 복잡합니다. 

Step1. 먼저 Remix로 접속합니다. (https://remix.ethereum.org/) (구 버전을 사용하겠습니다.)

Step2. 컨트랙트 파일을 엽니다. 


왼쪽 상단의 파일 모양의 아이콘을 클릭하고, 자신이 컨트랙트를 저장해놓은 위치로 가서, 컨트랙트 파일을 열면 됩니다. 아이돌 펀딩 컨트랙트 파일인 Product.sol을 열었습니다.


Step3. Settings Plug in을 추가합니다. 

우측 상단에 있는 setting 아이콘을 클릭하면, 그 아래에 ‘Plugin’이라는 입력 창이 뜰 것입니다. 루니버스에 플러그인 하기 위해 빈 칸에 다음 코드를 입력해줍니다.  


{

"title": "Luniverse Plugin",

"url":"https://remix-plugin.luniverse.io"

}

그 후 빨간색 Load 아이콘을 클릭해주면, 바로 아래에 ‘Luniverse Plugin’이라는 아이콘이 생성될 것입니다. 

Step4. 루니버스 Plug in

이제 ‘Luniverse Plugin을 클릭하면 루니버스에 로그인할 수 있는 창이 나타납니다. 이 곳에 자신의 루니버스 아이디와 비밀번호를 입력해 로그인합니다.


Step5. 유저 컨트랙트 생성하기

로그인 이후 유저 컨트랙트 생성을 위해 Create User Contract를 클릭합니다.

Compile Current Contract를 클릭하면 Step2에서 열어놓았던 컨트랙트 파일이 자동으로 컴파일 되어 ‘Product.sol’이라는 컨트랙트 파일 이름이 나타날 것입니다. 이후, 해당 컨트랙트의 이름을 정의하고(여기서는 Product로 정의했습니다.), 목적에 맞게 체인과 컨트랙트를 선택해준 후 Apply를 누르면 비로소 유저 컨트랙트 생성이 완료됩니다. 뒤이어 자동으로 열리는 ‘User Contract List’ 웹에서 ‘Ready to Deploy’를 누른 후 deploy 클릭, 본인의 private key 입력, confirm 클릭의 과정을 거치면 컨트랙트가 배포가 완료됩니다. 아래 그림은 컨트랙트 배포가 완료된 후의 상황입니다. 



지난 게시글에서는 보상(리워드 토큰)에 대한 트랜잭션을 정의했다면, 오늘은 소유주를 나타내는 트랜잭션을 정의해보겠습니다. 먼저, 지난 게시글에서 정의했던 idofunding2020 DApp으로 이동해보겠습니다. like, funding, purchase를 정의했던 것처럼 이번에도 마찬가지로 Transaction Management 탭으로 이동하여 소유주를 나타내는 트랜잭션을 정의합니다. Create Transaction을 클릭하고, 다음과 같이 설정해줍니다. 앞서 유저 컨트랙트로 정의한 Product를 선택하고, Function과 Action Name을 getOwner로 정의해준 뒤 Create 버튼을 입력하면 getOwner 트랜잭션 정의가 완료됩니다.

위와 동일한 과정을 거쳐 getOwner를 setOwner로 바꾸어주기만 하면 setOwner 트랜잭션 정의 또한 완료됩니다. 

이제, 아이돌 펀딩에서 발생할 수 있는 5개의 모든 트랜잭션에 대한 정의가 완료되었습니다. 



4. 사이드토큰의 이동 확인  

Step1. config.js 파일에 정보 기입하기 

가상 아이돌 펀딩 시뮬레이션은 하나의 루니버스 계정 내에서 펀딩 플랫폼과 유저를 동시에 정의하고 있습니다. 앞서 루니버스 User guide에서 다운 받았던 demo-idol-funding 폴더 내 config.js 파일이 제공하는 양식에 맞추어 메인 및 사이드 토큰의 심볼, 플랫폼 및 유저의 지갑 주소, API 키 등을 그대로 기입한 후 저장하시면 됩니다.  (코드는 보안상 첨부하지 않았습니다.)


Step2. 터미널에서 localhost로 연결하기

다음 과정을 따라 localhost로 연결합니다. 

2-1 > cd ‘demo-idol-funding 파일 저장 장소’ 

2-2 > npm install 

2-3 > npm run serve

이 세 과정을 완료하면 http://localhost:8080/ 으로 연결하라는 메시지가 뜰 것입니다. 이 사이트로 들어가면 다음과 같은 화면이 나타날 것입니다. 이 곳이 사이드 토큰의 흐름을 확인할 가상 펀딩 사이트가 될 것입니다.  


왠지 첫 번째 가수에게 펀딩을 해주고 싶네요. Bread N Jem 밴드를 클릭해보겠습니다. 아직, 사이드토큰을 발행은 했지만 그 사이드 토큰은 발행만 되었지 펀딩 플랫폼이나 유저 어느 누구에게도 귀속되어있지 않은 상태입니다.  따라서 펀딩을 하기 위해 ‘프로젝트 후원하기’를 누르면  ‘Fund에 실패했습니다!’라는 화면이 나타날 것입니다. 

원활한 진행을 위해, 실제로는 그럴 일이 없겠지만, 플랫폼이 소유하고 있는 사이드 토큰 모두를 펀딩 플랫픔으로 전달해보겠습니다. 콘솔 창의 사이드 토큰 > Side Token Transfer로 들어가 정의했던 Pd account의 REOA 어드레스에 10000 ST를 송금하겠습니다. 

송금을 완료한 이후 다시 ‘프로젝트 후원하기’를 클릭해 보았습니다. 

이번에는 펀딩에 성공하였군요! 10000원이 펀딩 되었습니다. Bread N jem씨가 어서 데뷔할 수 있기를 기원합니다. User가 펀딩을 하자 그 대가로 펀딩 플랫폼은 유저에게 1000 리워드를 제공해주었습니다. 이제 유저는 이 리워드를 갖고 물건을 구매할 수 있습니다. 리워드로 살 수 있는 물품들은 localhost API 상단의 ‘Product’를 클릭하면 그 목록을 볼 수 있습니다. 

펀딩을 하고 받은 1000 RWT로 그룹 Intern net의 팬미팅에 참여할 수 있게 되었군요! Intern net 분들을 실물로 볼 수 있는 기회가 생겼습니다! 


지금까지 2주에 걸쳐, 루니버스 플랫폼을 이용하여 ‘아이돌 펀딩’이라는 가상 시뮬레이션 상황 하에서 DApp과 사이드토큰을 생성하고, 컨트랙트 배포와 함께 사이드 토큰을 이용한 거래 또한 진행 해보았습니다. 펀딩 플랫폼과 유저 간에 오가는 일련의 트랜잭션들을 간편하게 설계해볼 수 있었습니다. 람다 256은 루니버스  플랫폼의 대중화를 위해 월 2회의 정기적인 무료 교육세션을 제공하고 있으며 ‘온오프믹스(https://www.onoffmix.com)’ 내 ‘루니버스 블록체인 서비스 오프라인 교육’에서 무료로 교육 신청이 가능합니다.


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

작성자: 류승우/Robin(seungwoo.ryu.94@gmail.com)


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