brunch

You can make anything
by writing

C.S.Lewis

by SKKRYPTO Dec 05. 2019

[Skkrypto X Luniverse] Skkvote

안녕하십니까 Skkrypto Skkvote팀의 정선웅입니다. 오늘은 Token transfer을 마지막으로 Skkvote 개발을 마무리 지어 보도록 하겠습니다.

오늘의 목표는 투표를 했을 때 School에 있는 Token을 아이디 생성한(wallet 생성) 사람에게 보내는 것을 구현하는 것입니다. 이 토큰을 지불수단으로 활용해 다른 곳에 사용하게 함으로써 투표를 장려하고 지역(학교) 경제 선순환을 만드는 것이 최종 목표입니다.

우선 기존의 Smart contract에서의 문제점을 보완하고 새로 User contract를 추가하였습니다.



기존 contract에는 ‘else’부분이 빠져 있어서 중복투표시에 비록 block에 기록은 되지 않지만 true가 계속 뜨는 문제가 있었습니다. 여기서 else에 revert를 넣어 주면서 중복투표시에 error를 유발할 수 있습니다. Revert는 프로그램 코드의 실행을 포기하고 상태 변화를 return합니다. 예외를 발생시켜 프로그램 코드를 종료 시키지만 미사용 gas를 환급하는 장점이 있습니다


 루니버스 console에서 transaction management를 들어간 후에 새로운 transaction을 만들어줍니다. Side token에 관한 transaction으로 특정 주소로 token reward를 보내주는 transaction입니다. 




이렇게 완성된 transaction의 API를 보면 inputs에 수신자의 주소(지갑 주소)를 쓰고 토큰의 양을 입력하면 됩니다. 


그렇다면 Skkvote는

1.     Userkey 생성

2.     이것을 바탕으로 지갑주소 생성

3.     지갑주소당 한번씩 투표

4.     투표완료시에 보상으로 토큰 지급

5.     Mypage.html에서 토큰의 개수 확인

의 흐름을 따라가게 됩니다. 저번주차까지는 임의의 주소로 투표를 진행하게 하였으나 그렇게 할 경우 문제가 생기기 때문에 처음부터 userkey를 통해 생성한 wallet address로 쭉 투표, 토큰까지 진행하는 것으로 코드를 수정하였습니다.



 Token transfer가 일어나는 경우는 투표에 성공했을 경우이기 때문에 이를 위해 voting.js 코드를 약간 수정(첨가)하였습니다.




Success 할 경우에 새로운 API를 추가하였습니다

바로 위에 적어 두었던 Reward 관련 API입니다. URL 은 https://api.luniverse.io/tx/v1.1/transactions/Rewarding (Rewarding부분은 사용자가 지정한 부분)

이고 receiverAddress는 받아온 userkey(wallet주소이나 변수명만 userkey로 설정되어 있는 부분입니다)를 입력하고 valueAmount는 1토큰을 전송하기로 했습니다.


우선 투표시에 reward가 정상적으로 주어지는 것을 확인할 수 있습니다.


그리고 이 reward token을 확인하기 위해 mypage.html과 mypage.js를 만들어 줍니다 위에 사진은 mypage.js입니다. check함수는 잔액 조회하기라는 버튼을 눌렀을 때 실행되는 함수입니다. URL부분은 지갑주소에다가 Main token의 symbol과 Side token의 symbol 그리고 balance를 적어주시면 됩니다. 다른 API와는 다르게 data부분이 없습니다. 



잔액 확인이 성공적으로 되고 잔고에 1 토큰이 생긴 것을 확인할 수 있습니다.


이제 Skkvote 개발은 어느정도 완료가 되었습니다. 다음주에는 루니버스에서 제공하는 Security Assessment 서비스를 사용해 보는 시간을 갖도록 하겠습니다


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


작성자: 정선웅(wpdlsksh94@gmail.com)



매거진의 이전글 [Skkrypto X Luniverse] Skkvote
작품 선택
키워드 선택 0 / 3 0
댓글여부
afliean
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari