[Steemit] 보팅파워와 재생시간 분석하기

in #kr6 years ago (edited)

steemit

최근에 스팀잇에 관심을 가지고 스터디하고 있는 뉴비입니다.

하나 하나 차근 차근 공부하면서 블로그에 정리할 계획입니다.


보팅파워과 재생시간

보팅파워Voting Power와 재생시간이 어떤 공식으로 계산 되는지 궁금하여 분석하여 보았습니다.

https://steemd.com/@아이디 에 접속하면 자신의 보팅파워를 쉽게 확인 할 수 있습니다.

하지만 우리는 계산 공식을 구해서 직접 계산해보도록 하겠습니다.

계산하기 전에 우리는 사용자 프로필 정보에서 마지막 보팅 시간last vote time 과 보팅파워voting power를 조회해야 합니다.


사용자 프로필 정보 조회하기

Steemit.com은 데이터를 조회할 수 있는 몇 가지 endpoint를 제공하고 있습니다. 사용자 프로필 JSON 데이터는 요청URL 끝에 .json만 붙여서 호출하면 됩니다.

사용자 프로필 JSON 조회 URL https://steemit.com/@anpigon.json를 브라우저에서 조회하면, 아래와 같은 User Object JSON 데이터를 얻을 수 있습니다.

{
   "user":{
      "id":810995,
      "name":"anpigon",
      "json_metadata":{
         "profile":{                         
            "profile_image":"https://steemitimages.com/DQm~.png",
            "name":"안피곤",
            "cover_image":"https://steemitimages.com/DQm~.jpg",
            "github":"anpigon",
            "about":"안녕하세요 "
         }
      },
      ... 생략 ...
      "voting_power":8925,
      "last_vote_time":"2018-07-23T04:27:03",
      ... 생략 ...
   },
   "status":"200"
}

데이터가 너무 많아서 중간 중간 생략하였습니다.


현재 보팅파워 계산하기

보팅할때마다 일정 비율로 보팅파워가 줄어들며 하루에 20%(5일 동안 100%)의 비율로 재생됩니다.

따라서 현재 보팅파워current voting power를 계산하는 공식은 아래와 같습니다.

계산 공식
마지막 보팅 후 경과된 시간 = 현재 시간 - 마지막 보팅 시간

재생된 보팅파워 = 100% / 5일 * 마지막 보팅 후 경과된 시간

현재 보팅파워 = 마지막 보팅파워 + 재생된 보팅파워

시간은 모두 초 단위로 계산됩니다.

5일Days60(초) * 60(분) * 24(시간) * 5(일)로 초단위 값을 구할 수 있습니다.

"마지막 보팅 후 경과 시간""현재 시간"에서 last_vote_time[1]값을 빼면 알수 있습니다.

"마지막 보팅파워"voting_power[2] 값을 사용합니다.

마지막으로 "현재 보팅파워"는 100%를 넘을 수 없습니다.

자바스크립트javascript 코드로 나타내면 아래와 같습니다. 백분율은 계산하기 쉽게 10000로 표현하였습니다.

JS Code
// 마지막 보팅 시각
var last_vote_time = "2018-07-23T04:27:03";

// 마지막 보팅 파워
var voting_power = 8925;

// 마지막 보팅 후 경과 시각(단위: 초)
var elapsed_seconds = (new Date() - new Date(last_vote_time + "Z")) / 1000;

// 재생된 보팅파워
var regenerated_power = 10000 / (60 * 60 * 24 * 5) * elapsed_seconds;

// 현재 보팅파워
var current_power = Math.round(Math.min(voting_power + regenerated_power, 10000));

코드를 돌려보면 current_power9659가 나옵니다. 이것을 백분율로 환산하면 현재 보팅파워는 96.59%가 됩니다.


보팅파워 재생시간 계산

위의 계산 공식을 역으로 계산하면 보팅파워의 재생시간을 알아 낼 수 있습니다.

계산 공식
재생시간 = (100% - 현재 보팅파워%) * 5일 / (1시간 * 100%)

자바스크립트javascript 코드로 나타내면 아래와 같습니다. 백분율은 계산하기 쉽게 10000로 표현하였습니다.

JS Code
// 현재 보팅파워
var voting_power = 9700; 

// 보팅파워 재생시간
var remain_hours = (10000 - voting_power) * (5 * 60 * 60 * 24) / (60 * 60 * 10000)

remain_hours는 3.6이 나옵니다. 현재 보팅파워가 97%라면 재생시간은 3.6시간이 됩니다.

보팅파워에 따른 회복 시간을 표로 나타내면 아래와 같습니다.

보팅 파워회복 시간비고
99%1.2시간
98%2.4시간
95%6시간
80%24시간1일
70%36시간1일 12시간
60%48시간2일
50%60시간2일 12시간
40%72시간3일
30%84시간3일 12시간
20%96시간4일
10%108시간4일 12시간
0%120시간5일

여기까지 읽어주셔서 감사합니다. 꾸벅 -_-



  1. 사용자 프로필 JSON 데이터의 last_vote_time

  2. 사용자 프로필 JSON 데이터의 voting_power

Sort:  

(jjangjjangman 태그 사용시 댓글을 남깁니다.)
[제 0회 짱짱맨배 42일장]4주차 보상글추천, 1,2,3주차 보상지급을 발표합니다.(계속 리스팅 할 예정)
https://steemit.com/kr/@virus707/0-42-4-1-2-3

4주차에 도전하세요

그리고 즐거운 스티밋하세요!

@_@ 80%가 하루만에 100%까지 차는군요

많은 활동 기대할게요

첫 댓글 감사합니다. 감동받았습니다. ㅠ ㅠ

헛 감동까지야...

https://steemit.com/@maikuraki

마이님의 출석부가 하루에 한번씩 올라오는데, 이를 통해서 도움 받아보시는게 어떨까요 ?_?

저도 감동받았습니다 ♥

다행이도 하루에 20% 채워짐이 보장되네용~!

수고 많으셨습니당~ ^^

bluengel_i_g.jpg Created by : mipha thanks :)항상 행복한 하루 보내셔용^^ 감사합니다 ^^
'스파'시바(Спасибо스빠씨-바)~!

댓글 감사합니다~^^ 좋은 하루 되세용.

무더위 속에서도 시원한 하루 보내셔용~ ^^

bluengel_i_g.jpg Created by : mipha thanks :)항상 행복한 하루 보내셔용^^ 감사합니다 ^^
'스파'시바(Спасибо스빠씨-바)~!

와.. 엄청난실력이시네요. .
좋은정보감사합니다

우왁! 직접 방문해주시고 댓글 감사합니다. ㅎㅎ

아이디와 대문사진이 참 조화롭네요 ㅋㅋ

캄사합니다.ㅎㅎ

ㅠㅠ저는 아마 바보인가봐요.. 이런거 아 계산해보기엔... 아마 스팀잇을 포기할것같아요 하핳.. ㅠㅠ

스팀잇은 다른 가상화폐보다 엄청 복잡하네요.
그래도 포기하지마세요.ㅠㅠ
저는 스팀잇을 알면 알수록 잼나네용.ㅎㅎㅎ

Coin Marketplace

STEEM 0.16
TRX 0.13
JST 0.027
BTC 58539.27
ETH 2627.11
USDT 1.00
SBD 2.40