안녕하세요. 제이콥입니다.
swap 기능 개발중입니다. 아래 링크는 swap기능에 대해 적은 글들입니다.
이어서 개발과정에 대해 좀 적어볼까합니다. 현재는 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 전송파트’