[NodeJS] API 사용 법 16편 간단한 비드봇을 만들어보자

in SteemCoinPan •  7 months ago 

안녕하세요 ayogom 입니다
여러가지로 Nodejs API에 대해서 소개를 해드리고 있습니다. 문뜩 내가 Nodejs API를 볼 수 있는 곳을 소개를 드렸었나 하는 마음이 들기에 이쯤에서 한번 다시 소개해 드립니다. Nodejs의 API를 볼 수 있는 곳은 Github가 가장 좋습니다. 바로가기

다시 본론으로 와서 오늘은 비드봇을 만들어 볼껍니다. 비드봇이 무엇이냐 보팅을 파는 서비스 입니다. 예를들면 예전에 소개해드린 Tipu의 SBD 보팅 서비스와 같습니다. SBD 혹은 STEEM을 받고 그에 해당하는 보팅을 파는 것이지요. 예전에는 해당 서비스가 많았지만 요즘은 많지 않네요.

제가 쓴글을 몇가지 조합해 보면 해당 서비스를 만들 수 있습니다.
먼저 [NodeJS] API 사용 법 14편 송금 확인해보기[NodeJS] API 사용 법 15편 송금 확인해보기 2탄 에서 소개해드린 방법으로 모니터링을 하다가 SBD와 STEEM을 받게 되면 [NodeJS] API 사용 법 2편 보팅을 해볼까? 에서 쓴 것과 같이 보팅을 하는 거죠

참 쉽죠?

[NodeJS] API 사용 법 14편 송금 확인해보기 에 있는 기본 코드를 가져옵니다.

var steem = require('steem');

steem.api.streamOperations((err, result) => {
    if (result[0] == "transfer"){
        if((result[1].to != undefined)&&(result[1].to == "ayogom")){
             console.log("From : ",result[1].from);
             console.log("To : ",result[1].to);
             console.log("Amount : ",result[1].amount);
             console.log("Memo : ",result[1].memo); 
        }
    }
});

메모에 포스팅을 주소를 넣게 합니다.
예를들면 https://www.steemcoinpan.com/hive-101145/@ayogom/nodejs-api-14 이 주소라면 앞에 짜르고 뒤인 @ayogom/nodejs-api-14 혹은 nodejs-api-14 도 좋습니다. 룰은 직접 정하면 되니깐요.

nodejs-api-14 으로 결정했습니다.

var steem = require('steem');
var wif = "5****"

steem.api.streamOperations((err, result) => {
    if (result[0] == "transfer"){
        if((result[1].to == "ayogom")){
             console.log("From : ",result[1].from);
             console.log("To : ",result[1].to);
             console.log("Amount : ",result[1].amount);
             console.log("Memo : ",result[1].memo); 
             var amount = result[1].amount;
             var author = result[1].from;
             var memo = result[1].memo;
             var weight = 10000;
             if (amount == "10.000 STEEM"){
                steem.broadcast.vote(wif, "ayogom", author, memo, weight, function(err, result) {
                    console.log(err, result);
                });
             }
        }
    }
});


코드를 설명해 드리자면 스팀블럭을 모니터링 하다가 transfer 기록중에 받는 사람이 ayogom이고 10스팀이 입금이되는 거래 기록이 발견이 되면, 각 정보를 저장합니다. 그리고 메모에 남겨진 주소에 보팅을 실시하게끔 짰습니다.

여기서 몇가지 유동적이게 변경될 수 있겠죠
첫번째로 얼마를 받을 것고 어느정도의 보팅을 할 것이냐 입니다.
코드가 쉽게 짜려면 그러한 가능성을 배제 해야합니다. 무조건 10스팀만 받으면 100% 보팅을 할께 라고 하면 됩니다. 하지만 사용자들이 보다 자주 많이 사용하려면 그러한 규칙보다 유동적인 규칙을 주시는게 좋습니다.
보팅파워에 대해서도 신경써줘야 하고요

하지만 너무 유동적인 부분에는 예외 코드를 짜줘야 합니다.
예를들면 10스팀이 아닌 10.1 스팀 혹은 9.9 스팀을 을 보냈으면? 환불해 드려야 겠죠? 그리고 보팅이 실패하면 재시작도 생각해봐야겠죠.

그러한 부분은 다루지 않겠습니다.. 너무 복잡하거든요 한번 고민 해보셨으면 합니다.
아참 코드 결과봐야죠

잘 보팅 했죠? 비드봇 한번 운영해보실래요 ㅎㅎ
매일 포스팅을 하는것보다 좋을 수도 있습니다.

아 이게 뭘까요?

아고라님을 위해 댓글 다시는 분들이 스파업을 얼마나 했는지 체크 해봤습니다 ㅎ
물론 아직 손봐야 할 것이 많네요

  • 스팀관련해서 궁금하신 내용이 있다면 언제든 문의 주세요

작성 예정인 글 List

  • Nodejs 를 이용한 스팀 API 사용해보기 (계속)

누군가에게는 도움이 될 수 있는 글

스팀잇 기본 이야기

니트로스 (SCT, ZZAN 등 ) 이야기

스팀잇 심화 이야기

스팀잇 보상과 연결되는 이야기

해킹과 관련된 이야기

개발과 관련된 이야기
Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

start success go! go! go!

@banguri님이 당신을 멘션하였습니다.

https://www.steemit.com/@banguri/6-18-4

@ayogom transfered 5 KRWP to @krwp.burn. voting percent : 12.59%, voting power : 60.01%, steem power : 1790724.42, STU KRW : 1200.
@ayogom staking status : 930 KRWP
@ayogom limit for KRWP voting service : 1.86 KRWP (rate : 0.002)
What you sent : 5 KRWP
Refund balance : 3.139 KRWP [54729047 - 156f80482495296bfd4681aff51ca7b1e363b67a]

@banguri님이 당신을 멘션하였습니다.

https://www.steemit.com/@banguri/6-19-5