[NodeJS] API 사용 법 18편 KRWP 자동 신청

안녕하세요 ayogom 입니다.
아마 이 글은 활용도가 높을 듯 합니다. 실제로 저도 사용중이기도 하고요, 아마도 이 방법이 공개되면 저도 쉽지 않을듯 하지만 어짜피 할 사람은 어떻게든 할 수 있는 내용이라 공개 합니다.

먼저 어제 [NodeJS] API 사용 법 17편 보팅 파워 조회하기 조회하는 방법을 배웠습니다.

마지막 코드를 가져와 볼까요

var steem = require('steem');

steem.api.getAccounts(['sct.krwp'], function(err, result) {
    var last_vote_time = result[0].last_vote_time;
    var voting_power = result[0].voting_power;
    var elapsed_seconds = (new Date() - new Date(last_vote_time + "Z")) / 1000;
    var regenerated_power = 10000 / (60 * 60 * 24 * 5) * elapsed_seconds;
    current_power = Math.round(Math.min(voting_power + regenerated_power, 10000));  
    console.log(current_power)
});

위의 코드는 현재의 sct.krwp 계정의 보팅 파워를 점검하는 코드입니다.
이걸 일단 반복적으로 조회를 해서 원하는 조건을 기다려야 하는데요. 예를들면 60%로 잡겠습니다. 이유는 60% 이상은 보팅률이 0.002 이 적용되기 때문에 높은 보팅을 받을 수 있거든요 ! 그에 대한 내용은 [요청] Krwp 보팅 수익 분석 해보기 이 포스팅을 참고 하시면 됩니다.

반복적인 조회를 하려면 [NodeJS] API 사용 법 6편 예약 포스팅 해보기 -3편 (매일매일 글쓰기) 이 글을 참고해서 아래와 같이 코드를 짜볼 수가 있습니다.

var steem = require('steem');

setInterval(function voting(){
    steem.api.getAccounts(['sct.krwp'], function(err, result) {
        var last_vote_time = result[0].last_vote_time;
        var voting_power = result[0].voting_power;
        var elapsed_seconds = (new Date() - new Date(last_vote_time + "Z")) / 1000;
        var regenerated_power = 10000 / (60 * 60 * 24 * 5) * elapsed_seconds;
        current_power = Math.round(Math.min(voting_power + regenerated_power, 10000));  
        console.log(current_power)
    });
}, 1000)

setInterval을 사용하면 반복적인 체크를 할 수 있습니다. 위의 코드를 적용해서 동작시켜보면

1000 즉 1초마다 보팅파워를 조회하게 만들었습니다.
그러면 이제 조건을 포함해야겠죠 60% 조건시에 액션을 해야하기 때문에 일때 조건을 추가 합니다.

    if (current_power>=6000){
        [ 액션 내용]
    }

액션 내용에는 무엇을 해야할까요? 네~ SCT를 보내야 합니다. 그럼 뭘 참고 할까요
[NodeJS] API 사용 법 12편 Steem enjin API 사용해보기 (자동 파워업!) 여기에서는 파워업을 했지만 파워업을 송금으로 바꾸기만 하면 됩니다.

var memo = 포스팅 주소;
var amount = 5;                                 
var json = JSON.stringify({"contractName":"tokens","contractAction":"transfer","contractPayload":{"symbol":""+"KRWP"+"","to":""+"krwp.burn"+"","quantity":""+amount+"","memo":"@ayogom/"+memo+""}});
                                    
steem.broadcast.customJson(wif, ['ayogom'],[], 'ssc-mainnet1', json, async function(err, result) {
        console.log(result);
}   

위와 같이 송금 코드를 추가 합니다.
물론 정리해보면

var steem = require('steem');

wif = 액티브키

setInterval(function voting(){
    steem.api.getAccounts(['sct.krwp'], function(err, result) {
        var last_vote_time = result[0].last_vote_time;
        var voting_power = result[0].voting_power;
        var elapsed_seconds = (new Date() - new Date(last_vote_time + "Z")) / 1000;
        var regenerated_power = 10000 / (60 * 60 * 24 * 5) * elapsed_seconds;
        current_power = Math.round(Math.min(voting_power + regenerated_power, 10000));  
        console.log(current_power)
        
        if (current_power>=6000){
            var memo = xxxxxxx;
            var amount = 5;                                 
            var json = JSON.stringify({"contractName":"tokens","contractAction":"transfer","contractPayload":{"symbol":""+"KRWP"+"","to":""+"krwp.burn"+"","quantity":""+amount+"","memo":"@ayogom/"+memo+""}});
            
            steem.broadcast.customJson(wif, ['ayogom'],[], 'ssc-mainnet1', json, async function(err, result) {
                console.log(result);
            });
        }
        
    });
}, 1000)

쉽죠? 여기에 팁을 하다 더 드리면, 최신 포스팅을 확인 하는 코드까지 넣으면 더 자동화가 됩니다~

그럼 오늘은 이만, 또 새로운 방법을 고민해서 새로운 내용을 공유해드리겠습니다~

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

작성 예정인 글 List

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

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

스팀잇 기본 이야기

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

스팀잇 심화 이야기

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

해킹과 관련된 이야기

개발과 관련된 이야기
Sort:  

@ayogom transfered 5 KRWP to @krwp.burn. voting percent : 12.29%, voting power : 48.92%, steem power : 1793799.87, STU KRW : 1200.
@ayogom staking status : 940 KRWP
@ayogom limit for KRWP voting service : 0.94 KRWP (rate : 0.001)
What you sent : 5 KRWP
Refund balance : 4.06 KRWP [54869639 - 110085825b4b7c73773219ac5a56b44c9fe9d93c]

start success go! go! go!

저도 파이썬으로 이거 만들어서 사용했었는데요.

보파 60% 일때 보내면... 이미 다른 분이 받아 가더라는...

눈치겜이 심한... ㅎㅎㅎ

약간 빠른 타이밍에 전송을 하는걸 추천합니다~~ ㅎㅎㅎ

5999가 역시 ㅋㅋ

초보라 용어라도 좀 이해를 하려고 합니다.

제목에 "nodeJS"는 무엇을 의미하나요?

감사합니다. 설치해서 하나 하나 따라해볼게요..

굉장히 유용한 코드네요.

심풀하고 도움이 되죠...ㅎ
근데 이제 덕분에 경쟁률이 올라갔을지도... 그래도 안할 사람은 안할테니 ㅎ

감사합니다 ! ^^

Coin Marketplace

STEEM 0.19
TRX 0.15
JST 0.029
BTC 62912.13
ETH 2544.21
USDT 1.00
SBD 2.84