본문 바로가기

투자/Blockchain

210906월 - steem-engine API 사용해 token transfer하기

728x90

 

 

스팀잇에서 운영되는 커뮤니티에 포스팅할 때 포스팅 수수료를 요구하는 커뮤니티가 있다.  

예를 들어 스팀코인판(steemcoinpan) 이라던지.  

 

스코판에 API로 포스팅을 날리고 수수료는 따로 쏴줘야 한다.  

이때 수수료는 steem-engine API를 통해 날려줄 수 있다.

 

수수료를 안 날리면 글은 스팀잇 자신의 블로그에서는 볼 수 있지만 커뮤니티 보드에서는 보이지 않게 된다. 그리고 스코판에서 주는 sct, krwp 보상은 받지 못 한다. (스팀잇에서 주는 보상은 받음.)  

 

파이썬을 사용하는 경우 steem-engine api를 wrapping해놓은 third-party 앱을 쓰면 된다.  

나같은 경우 [다음 앱] 을 사용함. 오피셜 앱은 아니다.  

 

이 앱이 2019년에 만들어진 듯 한데, 약간 시정사항들이 있다.  

 

 

  1. [에러] steem-engine.com 을 API url로 사용하고 있음 (지금은 steem-engine.net 이다)  
  1. 코드에서 wallet에 접근하기 위해 beem이라는 steem/hive 용 서드파티앱을 끌어다 쓰는데 여기서 default 블록체인을 hive로 해놨음. 그냥 돌릴 경우 지갑정보가 없다고 뜰 수 있다.  

 

 

1 번은 깃에 이슈로 남겨놨는데, 일단 난 그냥 수정해서 쓰고 2번 같은 경우도 디폴트를 그냥 steem으로 바꿔 쓰고있다. 2번은 설정 param을 받지를 않게 해놨던데.. 그냥 하이브 써라 이건가. ㅋㅋ  

 

이 beem 앱에서는 sqlite db에 데이터를 저장하는 부분이 있다. 소스를 보면 앱이 돌아갈 떄 RAM 위에다 키를 저장하나본데, 블록체인 시스템에서 키가 중요한 만큼 처음에는 db를 사용하는 걸 보고 좀 놀랐다. 내가 sqlite를 잘 몰랐고, 코드를 보니 램에다 기록한다고 주석에 적혀있긴 하다.

 

만약 전혀 공신력없는 오픈소스를 사용하다 행여나 주인이 있는 디비에 내 키가 넘어가면? 오픈소스도 아무 것이나 가져다 쓰면 안 되겠군 하는 생각이 바로 들었음 ..  

 

728x90

 

스코판에 일단 위의 앱을 설치하고 위의 1,2를 수정하면 사용은 간단하다. (디버깅 추천)  

 

스팀엔진에는 transfer를 위해 다음과 같은 커스텀 json을 던져줘야 하는데 앱에 다 되어있음.  

일단 포스팅을 한 후 포스팅의 permlink를 memo에 넣어주고 수수료는 sct.postingfee 로 보내준다.  

 


from beem import Steem
from steemengine.wallet import Wallet

stm = Steem(wif='your_active_key')
wallet = Wallet(self.account, steem_instance=stm)
rst = wallet.transfer("sct.postingfee", 1, "SCT", memo=f"@{account}/{permlink}")
print(rst)

 

 

 

 

 

 

 

처음엔 수수료를 도대체 어디로 보내야하나하고 스코판 js를 뒤져서 sct.postingfee 로 보내는 걸알아냈는데 steemd.com에도 기록이 남는걸 나중에 알아벌임. steemd를 먼저 찾자.  

 

 

 

 

 

참조

  - https://github.com/holgern/beem  

  - https://github.com/holgern/steemengine  

 

반응형