[개발, 분석] steemwallet #2 스팀엔진 토큰 적용하기

안녕하세요. 제이콥입니다.

[개발, 분석] steemwallet #1 소개 및 설치)에서 로랜드가 개발한 스팀월렛을 소개하고 직접 설치해서 동작시켜봤습니다.

로랜드의 스팀월렛은 가볍고 지갑에 집중한 앱인데요. 스팀과 스달만 지원했었기 때문에 제가 여기다가 스팀엔진 토큰을 적용가능한지 테스트 해봤습니다.

결과적으로는 sct토큰을 스팀월렛에 넣는 작업을 성공했고, 충분히 스팀엔진 기능들을 이 지갑에 넣어볼 수 있겠다. 판단했습니다.


생소하다. Appcelerator titanium

이 앱에 스팀엔진 토큰을 넣는데 가장 크게 느껴진 장벽은 생소한 플랫폼이였습니다. 스팀월렛 코드가 Appcelerator titanium라는 생소한 플랫폼이라 코드를 이해하는데 어려움이 조금 있었습니다.

코드가 그나마 적은 편이라 분석하기 괜찮았는데요. 안드로이드와 유사한 구성을 갖고 있습니다. 하나의 화면에 대해 xml과 javascript 코드를 갖고 있습니다.

원하는대로 ui를 변경하려면 플랫폼 공부를 좀 해야할 것 같아요. 지금은 유저가 갖고 있는 sct토큰 정보만 띄우는걸 해봤습니다.

sscjs 라이브러리를 사용하지 않고 스팀엔진 사용자 잔고 가져오기

또, 스팀엔진 토큰을 불러오는 기능을 구현하려면 sscjs라이브러리를 사용하는데요. Appcelerator titanium에서는 sscjs 라이브러리를 사용하지 못했습니다. 왜냐하면 sscjs가 사용하는 axios라이브러리를 Appcelerator titanium플랫폼에서 지원하지 않았기 때문입니다.

sscjs 라이브러리를 사용하지 않고 스팀엔진 토큰 정보를 가져오기 위해 직접 post 요청하는걸로 해결했습니다. 쉽게 복사 할 수 있도록 아래 코드로도 넣었습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
url : https://api.steem-engine.com/rpc/contracts
body:
{
"jsonrpc":"2.0",
"id":10,
"method":"find",
"params":{
"contract":"tokens",
"table":"balances",
"query":{"account":"계정명"},
"limit":1000,
"offset":0,
"indexes":""
}
}

이부분에서는 아래 글들이 도움이 됐습니다. sscjs 라이브러리를 사용하지 못할거라곤 생각 못했거든요.


추가적으로 해볼 수 있는 것은 아래 내용입니다.

  1. 스팀엔진 토큰 전송하기
  2. 스팀엔진 토큰 전송기록 확인하기

2가지 작업인데요.
이 작업들도 진행되면 포스팅 간단히 하겠습니다.

감사합니다.


This page is synchronized from the post: ‘[개발, 분석] steemwallet #2 스팀엔진 토큰 적용하기’

dapp의 장점 # smart contract

안녕하세요. 제이콥입니다.

조사를 하고 적어야하는데.. 그냥 적어봅니다.

Smart contract

친한 형과 스마트 컨트랙트에 대해 이야기를 했습니다. 스마트 컨트랙트가 무엇인가에 대해 저는 설명해야했습니다. 스마트컨트랙트에 대해 직접 개발은 안해봤지만, 스팀에서 많이 이야기도 듣고, 관련 글도 찾아보기도 했고요. 제가 아는대로 설명해줬습니다.

예시 1. 베팅시스템

베팅시스템을 만들고 싶다. 근데, 내가 이 서비스를 한다고 할때, 누가 날 믿고 하겠냐? 내가 도망가면 어떻게 하냐? 스마트 컨트랙트가 없다면 날 믿어야한다.

만약에 스마트컨트랙트가 있다면, 나를 믿는게 아니라 스마트컨트랙트 코드가 들어가 있는 블록체인 플랫폼을 믿는 것이다.

예시 2. 부동산

두번째 예로 설명했던건, 부동산이였습니다. 보통 부동산에서 집을 구할 때, 집주인하고 직접 거래하지 않고 부동산 중개인과 함께 거래하지 않습니까? 여기서 부동산 중개인의 역할을 스마트컨트랙트가 할 수 있습니다.

이렇게 설명했지만 뭔가 뜬구름 잡는 이야기라고 하더군요.

예시 3. api 서버

우리가 보통 서비스를 할때, api 서버를 만들잖아요. 예를 들어, 광고를 봤을 때, 포인트를 주는 api를 만들고 싶어요. 이때 직접 서버를 구축하거나 파이어베이스 function으로 api 서버를 만들 수 있겠죠. 다만, 우리 서버가 멈추면 api 호출을 못하겠죠. 또, 우리 맘대로 언제든지 수정도 가능하고요.

만약에 스마트컨트랙트를 활용해서 이 api를 만든다면.. 어떤느낌이냐면 이 api호출이 왔을 때, 여러 개의 서버에서 이 api에 대한 처리를 한 후, 결과값을 주는 겁니다.

이렇게 되면 우리는 서버 비용도 안들고, 서버가 멈출것도 걱정 안해도 됩니다. 왜냐하면 이건 블록체인 플랫폼의 문제이니깐요. 얘네가 잘 해야하는거지, 우리가 잘해야할게 아니죠. 또 사용자들에게는 우리를 믿는게 아니라 블록체인플랫폼을 믿어라! 라고 말도 할 수 있고요.

아무튼 요약하자면 아래 2가지의 장점이 있을 것 같아요.

  1. 서버비용 안든다.
  2. 신뢰성 확보

어떤 블록체인 플랫폼을 쓸껀가?

어떤 블록체인 플랫폼을 활용할 것인가에 대한 내용인데요. 결론부터 말하면 스팀엔진 스팀스마트컨트랙트(SSC)로 접근해볼까합니다. 여기에는 3 가지 이유가 있습니다.

  1. 스팀몬스터가 이미 잘 활용하고 있다.
  2. 내가 스팀에 익숙하다.
  3. 보통 스마트컨트랙트를 보니 솔리디티를 익혀야되는데, 스팀엔진 스마트컨트랙트는 아닌것 같다. 확인필요하다.
  4. smt 스마트 컨트랙트는 언제 나올지 모르겠다.

이런 이유로 스마트컨트랙트는 스팀엔진을 활용해서 공부해보고 적용해볼까합니다.

감사합니다.


This page is synchronized from the post: ‘dapp의 장점 # smart contract’

[개발] 스팀코인판 Swap 기능 #4 테스트

안녕하세요. 제이콥입니다.

스왑기능을 개발하고 있습니다. 위치는 스팀코인판 오른쪽 사이드바에 token swap이라는 위젯을 넣을 것입니다.


개발하면서 가장 걱정됐던건 3가지

  1. 가짜로 토큰을 보냈는데, 우리 서비스가 토큰을 보내준다.
  2. 고객이 보낸 토큰을 받고, 아무 응답이 없다.
  3. api, server 문제 발생할 경우, 우리 서비스가 토큰을 보내준다.

이 문제들을 모두 점검하고 서비스를 운영할 예정입니다.

1번에 대해서는 이전글에서 작성한것 처럼 처리 했고요.

2번에 대해서는 에러들이 발생하면 0.001steem과 함께 메모를 보내려고 합니다.

3번 문제 관련해서 발생할 수 있는 에러를 찾아봤습니다. 이 에러들에 대해 예외처리 코드를 추가한 상태입니다.

발생할 수 있는 에러들..

  • 스팀, 스팀엔진 api 에러
  • 가격 api 에러
  • db 에러

요 에러들에 대해 일부로 발생시켜보면서 프로그램이 죽지 않는지 확인했고요. 엉뚱한 토큰을 보내는지도 체크해봤습니다.


배운것

이번 개발을 하면서.. 테스트 코드의 중요성을 배웠습니다. 코드를 작성할때 테스트 코드를 짜면서 하지는 않았는데, 이렇게 여러경우를 체크해야하는 경우는 있으면 좋겠네.. 생각이 들었습니다.

이걸 TDD(Test Driven Development)라고 부르는데, 적용해보면 좋겠군요. 다만, 이걸 적용하는것 자체에 코드도 많이 작성해야하고 배워야하는 것도 있고요. 고민입니다. 이번 개발에서는 간단하게 테스트 스크립트를 만들어서 내가 원하는 대로 동작하는지 각 함수들을 체크하는 정도로 해봤습니다.

감사합니다.


This page is synchronized from the post: ‘[개발] 스팀코인판 Swap 기능 #4 테스트’

북잇수다에서 책 나눔 받았습니다.

안녕하세요.

@bookitsuda님이 책 나눔이벤트를 했고, 제가 신청해봤습니다.

https://steempeak.com/sct/@bookitsuda/3#@jacobyu/re-bookitsuda-pzxcpx

제가 고른 책들은 요겁니다. 책 상태가 훌륭합니다.

20191031_171459.jpg

이 책들을 고른 이유는..

무기가되는스토리는 책제목이 끌렸어요. 제가 재밌는 이야기를 하거나 글을 쓰고싶은데 그걸 잘 못하는것 같아서요. 이책을 읽고 무기가 되는 스토리를 써보고 말하고 싶어요.


카페 책은 궁금해서 사봤습니다. 카페를 차리려면 어떻게 해야하는지 궁금합니다.

전 카페에 로망이 있는데요.

카페를 운영하면서 프리랜서를 합니다. 그리고 여러 소모임이 제가 운영하는 카페에서 모일 수 있도록합니다. 독서모임, 영화모임, 영어회화모임, 포켓몬모임, 개발자모임, 스팀모임 등등이요.

제가 갖고싶은건 카페라기보다는 나만의 공간이면서 사람들도 초대하고 모일 수 있는 공간을 꿈꿨던거 같은데, 그게 카페면 될거 같아요.

무기책과 카페책을 읽고 후기남겨볼게요.

감사합니다.


This page is synchronized from the post: ‘북잇수다에서 책 나눔 받았습니다.’

[개발] 스팀코인판 Swap 기능 #3 전송파트

안녕하세요. 제이콥입니다.

swap 기능 개발중입니다. 아래 링크는 swap기능에 대해 적은 글들입니다.

  1. https://jacobyu.net/개발-스팀코인판-Swap-기능/
  2. https://jacobyu.net/개발-Swap기능-2-엔진토큰-3일-평균가-api-개발/

이어서 개발과정에 대해 좀 적어볼까합니다. 현재는 3단계에 해당하는 토큰전송파트를 개발중입니다.

사용자가 위젯을 통해 토큰을 보내면, 이를 확인하고 환전할 토큰의 양을 계산합니다. 그리고 계산된 토큰을 사용자에게 보내는 작업이 필요합니다.

이 작업에서 여러가지를 하나씩 체크중입니다.

사용자가 잔고가 없는데 보낸경우 (Done)

사용자가 잔고가 없는데 토큰을 보낼 수 있을까요? 스팀엔진에서는 custom-json으로 보내기 때문에 이게 가능합니다. 아래 사진을 보면, 하나는 sct를 0.01을 보내고 하나는 sct를 3000개를 보냈습니다. steemd에서는 두 개의 다른점을 확인이 불가능합니다.

위의 사진에서 2개의 다른점을 구분하기 위해서는 steem-engine에서 제공하는 api(https://api.steem-engine.com/accounts/history)를 활용해서 두개를 구분할 수 있습니다.

스팀엔진 라이브러리를 사용하지 않고 가짜전송을 파악하는 방법을 아시는분은 알려주세요!!

저도 방법은 하나 찾긴했는데 좀더 조사가 필요합니다. 클라이언트쪽에서 tx를 보냈으니 rx를 기다린다. rx의 결과를 확인해보고 그에 따라 처리하는것입니다. 혹은, tx가 뭔지 아니깐 tx로 rx를 조회한다.

이정도 방법일 것 같은데 어떤방식으로 할 수있는지는 시도못해봤습니다. 니트로스 코드를 좀 더 파악하면 확인가능해보입니다. 물론 이게 아니더라도 스팀엔진 api를 활용하면 확실히 알 수 있습니다. 현재는 스팀엔진 api를 활용해서 가짜 전송인지 아닌지 체크합니다.

공급자가 잔고가 없는경우 (Done)

현재 공급자의 잔고와 요청자에게 줘야할 값을 비교한다.
요청자에게 줘야할 값이 크다면, 다시 반환한다.

처리완료하였습니다.

토큰 종류가 지원하지 않는 경우, 메모의 형식이 다른 경우

사용자는 위젯을 통해 토큰을 전송할 수 있도록 할 수 있습니다. 하지만, 수동으로 보내는 사람이 있을 수 있습니다.

이 케이스에 대해서는 보낸 토큰을 다시 돌려줄 것입니다. 이부분은 아직 남은 일입니다.

스팀엔진이 동작하지 않는 경우

에러가 났다고 메시지와 함께 0.001steem을 보냅니다. 돌려주는건 스팀엔진이 제대로 동작하면 수동으로 보냅니다.

이 케이스는 코드에서 스팀엔진 라이브러리를 사용하는지, 어디서 에러가 날 수 있는지 모두 파악해서 에러메시지를 보내도록 할 것입니다.


!!

동작이 잘 된다면 아래 사진처럼 전송이됩니다. 지금은 제 계정으로 실험중이고요. 테스트는 아직 안해주셔도됩니다! ㅎㅎ 테스트 가능할때 말씀드릴게요.

제가 적은 것 외에 필요한 예외처리가 있다면 알려주세요!

감사합니다.


This page is synchronized from the post: ‘[개발] 스팀코인판 Swap 기능 #3 전송파트’

[일기] 글쓸거리 고민..

글쓸거리가 뭐있나.. 어떤걸 써야 좋을까?

이건 항상 고민이다.

기술블로그 적는 법이라는 글을 하나 봤는데 꽤 괜찮다.
평소에 메모장에 적을만한것들을 기록하고 (그 사람은 메모큐라고 부르더라ㅋㅋ) 거기서 하나씩 뽑아서 글을 쓴다고 한다.

나도 그렇게 해야겠다.


지금은 swap기능을 개발중이다.
1,2단계를 어느정도 마친상태이고, 3단계를 개발중이다.

3단계는 유저들에게 돈을 받았을때, 그 돈을 원하는 토큰으로 바꿔서 돈을 보내주는 기능이다.

기능 자체는 70% 정도 개발한 상태이고, 어떤 예외사항들이 있는지 체크하고있다.

  1. 사용자가 잔고가 없는데 보낸경우
  2. 공급자가 잔고가 없는경우
  3. 토큰종류가 잘못된 경우
  4. 메모가 잘못된 경우
  5. 스팀엔진 api가 동작안할 경우

등 확인중이다.


블로그도 꾸미고있는데.. 블로그 꾸미는 재미가 쏠쏠하다. 요부분도 포스팅해야지


This page is synchronized from the post: ‘[일기] 글쓸거리 고민..’

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×