자동 보팅 딜레이 주기 with Python
안녕하세요 입니다. 오늘은 자동 보팅에 딜레이를 주는 방법을 살펴보려 합니다.
보팅 시간과 보상의 관계
스팀잇 블로그의 2년전 글을 보면 보팅 시간과 보상의 관계를 알 수 있습니다.
Our solution is to offer a reverse auction for curation rewards on votes cast within the first 30 minutes. The price starts out at 100% of your curation reward and falls toward 0% over 30 minutes using the curve (1-t2). The longer a bot waits to vote, the lower the fee will be. However, if someone else chooses to vote before you it would lower your potential absolute reward.
스팀잇 큐레이션 보상 구조 상 빠른 보팅은 큰 보상을 가져갑니다. 그렇다면 멍멍이나 고양이도 최대한 빨리 보팅하려 하겠지요, 혹은 알파고님이 줍줍 할 것입니다. 이를 방지하기 위한 방법으로 첫 30분간은 보팅 비용을 받습니다. 보팅 비용은 큐레이션 보상의 100%에서 시작해서 30분이 지나면 0가 됩니다. 보팅 비용은 저자 보상으로 들어갑니다.
fig : 보팅 비용 그래프, x축 포스팅 후 시간(분), y축 보팅 비용 %
이를 통해 알 수 있는 것은, 저자에게 최선이 되는 보팅은 글이 올라오자 마자 하는 것이고, 큐레이션 보상 확보를 위해선 일정 시간 딜레이를 두어야 하는 것 입니다.
딜레이 주기
딜레이를 주는 방법은 간단합니다.
- 글이 올라온 시간과 현재 시간을 비교한다.
- 설정된 딜레이가 지나지 않았다면 보팅하지 않는다.
보팅하는 그 외의 부분은 이전 글을 참고 바랍니다.
1. 글이 올라온 시간과 현재 시간을 비교
import datetime
def time_delay_check(post, rule):
timediff = datetime.datetime.utcnow() - post['created']
elapsed_minutes = timediff.seconds / 60
return elapsed_minutes < rule['delay']
글이 작성된 시간은 post 사전의 created를 보면 됩니다. 주의하셔야 하는 것은 블록체인에 기록된 글 작성 시간은 UTC 시간으로 기록되어 있습니다. 나라마다 시차가 다르기 때문에 전세계 공돌이들이 공용으로 쓰는 시간이 UTC 시간입니다.
위 코드로 현재 UTC 시간에서 글 작성 시간을 빼고, 이를 분 단위로 환산해서 설정된 시간이 안지났는지 확인합니다.
2. 설정된 딜레이가 되지 않을때 보팅하지 말기
def run_vote(rule, voter):
p, p_raw = get_new_post(rule['id'])
if(time_delay_check(p,rule)):
return False
if(double_vote_check(p,voter)):
return False
postId = get_identifier(p)
vote(postId, voter, voter['weight'])
return postId
이번에 만든 함수를 이용해서 시간 딜레이를 체크하고 지나지 않았을 경우 함수를 종료합니다.
결론
큐레이션 보상의 경우 글 작성 시간과 보팅 시간의 차이에 따라 일종의 패널티가 부여됩니다. 이를 이해하고 적절한 전략을 세울 때, 저자와 큐레이터의 적절한 관계가 이루어지지 않을까 싶습니다.
- 실행 가능한 소스코드는 https://github.com/taeminlee/steem.autovote 에서 확인 가능합니다. ^^
Leave 자동 보팅 딜레이 주기 with Python to:
Read more #kr-dev posts
Best Posts From tmkor
We have not curated any of tmkor's posts yet. But you can encourage our curation team to review posts by visiting them regularly and by referring other readers. Because we give priority to frequently read content.
More Posts From tmkor
- 음원 분리 기법에 대하여.. (about singing voice separation)
- 아파트 실거래가 가격 예측 후기
- [IT용어] IPC (Inter-processing communication)
- [블록체인 기반 기술] 부인방지 (non-repudiation)
- [디자인패턴] 옵저버 패턴 (observer pattern)
- [디자인패턴] 팩토리 메소드 패턴 (Factory Method Pattern)
- loss, cost, objective function
- [ 공간 DB - 2 ] MySQL vs PostGIS (Postgresql) 범위 질의 성능 비교
- [SteemKR Discord] 스팀잇 태그 및 소모임 모니터링 도구 공개합니다.
- 스팀잇 댓글 모니터링 with Python
- [공간 DB-1] 위치 기반 서비스의 핵심 컴포넌트, 공간 DB (Spatial DataBase)
- [자동 보팅 봇 만들기-3] 화이트 리스트, 블랙 리스트! 키워드로 필터링하기 with Python
- 자동 보팅 딜레이 주기 with Python
- [STEEM PEACE] 최근 일련의 사태로 다운보팅을 받은 사람들을 위해..
- steem-python API 노드 변경법
- CPDAX 상장 예정 코인 3종 세트 : GTO, EOS, KNC 살펴보기
- steem API로 자동 보팅 봇 만들어보기 with Python
- 윈도우 10 환경에서 steem API 라이브러리 설치하기 with python
- 7 DAY BLACK&WHITE PHOTO CHALLENGE / @tmkor / DAY 7
- 7 DAY BLACK&WHITE PHOTO CHALLENGE / @tmkor / DAY 6