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

in SteemCoinPan •  7 months ago 

안녕하세요 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 등 ) 이야기

스팀잇 심화 이야기

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

해킹과 관련된 이야기

개발과 관련된 이야기
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:  

@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가 역시 ㅋㅋ

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

https://www.steemit.com/@banguri/6-23

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

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

그래서 다 준비해뒀습니다 ㅎㅎㅎ
Nodejs 가 무엇인지 그리고 어떻게 설치 하는지?

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

굉장히 유용한 코드네요.

  ·  7 months ago (Edited)

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

감사합니다 ! ^^