[NodeJS] API 사용 법 17편 보팅 파워 조회하기

in SteemCoinPan •  11 months ago 

안녕하세요 ayogom 입니다.
최근에 KRWP 보팅을 받기가 쉽지 않습니다. 그래서 KRWP 보팅을 신청하는 것을 만들어 보려고 합니다. 제일 먼저 필요한 부분이 현재 보팅 파워를 체크하는 일입니다. 보팅 파워에 대한 공식은 이전에 포스팅 했던 보팅 금액 계산해 보기 2부 내용을 참고하시면 도움이 될 것 입니다.

보팅 파워를 조회하기 위해서는 steem.api.getAccounts 를 사용합니다.
따라서 이전에 포스팅 했던 [NodeJS] API 사용 법 1편 스팀 라이브러리 설치 을 참고 하시면 됩니다.

코드로 갑니다.

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;
    
    console.log(last_vote_time, voting_power)
});

다행히 계정 정보에 보팅파워가 있습니다.

근데 조회된 보팅파워와 현재 사이트에서 보여지는 보팅파워가 다르네요
왜일까요

스팀 소스코드인 깃허브를 살펴보면
https://github.com/steemit/steem/blob/ff9b801615ba8c347a0c3f534ad06adc551b58e5/libraries/chain/steem_evaluator.cpp

int64_t current_power = std::min( int64_t(voter.voting_manabar.current_mana) + regenerated_power, int64_t(STEEM_100_PERCENT) );

voter.voting_manabar.current_mana) + regenerated_power 와 STEEM_100_PERCENT 중 작은 값을 사용한다고 되어 있습니다. 정리를 해보자면 보팅파워를 매번 모든 계정의 정보를 업데이트 할 수 없기 때문에 비 정기적으로 (정확한 주기는 알수 없음) 갱신을 하는데, 이때 기록된 보팅파워와 마지막 보팅했던 시간을 바탕으로 현재의 정확한 보팅값을 찾는 행위입니다.

조금 복잡한가요? 그냥 외웁시다... 계정에서 나오는 보팅정보는 확실하지 않다. 그 값과 마지막 보팅시간을 계산해서 현재의 정확한 값을 추정해야 한다.

그래서 다시 소스 코드로 가면,

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)
});

이렇게 하면 현재의 보팅파워를 확인할 수 있습니다.

elapsed_seconds 는 현재 시간에서 마지막 보팅한 시간을 빼는 것인데, 공식코드에서는 블럭의 시간을 가져와서 사용하지면 편의상 현재 시간으로 작성했습니다.

이 보팅 파워를 조회해서 무엇을 할 수 있을까요? 저는 KRWP가 60프로가 넘으면 보팅을 신청하게 만들었습니다.
내일 그 부분을 알려드려보겠습니다.
그럼 오늘도 이만~

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

작성 예정인 글 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-22

@ayogom transfered 4 KRWP to @krwp.burn. voting percent : 10.06%, voting power : 50.28%, steem power : 1793262.98, STU KRW : 1200.
@ayogom staking status : 940 KRWP
@ayogom limit for KRWP voting service : 0.94 KRWP (rate : 0.001)
What you sent : 4 KRWP
Refund balance : 3.06 KRWP [54844812 - 1e5677b4ac8d72e55191c49b31ea0804a52a0676]