최근에 스팀잇에 관심을 가지고 스터디하고 있는 뉴비입니다.
하나 하나 차근 차근 공부하면서 블로그에 정리할 계획입니다.
보팅파워과 재생시간
보팅파워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일Days는 60(초) * 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_power
는 9659가 나옵니다. 이것을 백분율로 환산하면 현재 보팅파워는 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일 |
여기까지 읽어주셔서 감사합니다. 꾸벅 -_-
(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% 채워짐이 보장되네용~!
수고 많으셨습니당~ ^^
'스파'시바(Спасибо스빠씨-바)~!
댓글 감사합니다~^^ 좋은 하루 되세용.
무더위 속에서도 시원한 하루 보내셔용~ ^^
'스파'시바(Спасибо스빠씨-바)~!
와.. 엄청난실력이시네요. .
좋은정보감사합니다
우왁! 직접 방문해주시고 댓글 감사합니다. ㅎㅎ
아이디와 대문사진이 참 조화롭네요 ㅋㅋ
캄사합니다.ㅎㅎ
ㅠㅠ저는 아마 바보인가봐요.. 이런거 아 계산해보기엔... 아마 스팀잇을 포기할것같아요 하핳.. ㅠㅠ
스팀잇은 다른 가상화폐보다 엄청 복잡하네요.
그래도 포기하지마세요.ㅠㅠ
저는 스팀잇을 알면 알수록 잼나네용.ㅎㅎㅎ