자동 보팅 딜레이 주기 with Python

in kr-dev •  7 years ago  (edited)

20180105 python title.png

안녕하세요 @tmkor 입니다. 오늘은 자동 보팅에 딜레이를 주는 방법을 살펴보려 합니다.

보팅 시간과 보상의 관계

스팀잇 블로그의 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. 글이 올라온 시간과 현재 시간을 비교한다.
  2. 설정된 딜레이가 지나지 않았다면 보팅하지 않는다.

보팅하는 그 외의 부분은 이전 글을 참고 바랍니다.

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

이번에 만든 함수를 이용해서 시간 딜레이를 체크하고 지나지 않았을 경우 함수를 종료합니다.

결론

큐레이션 보상의 경우 글 작성 시간과 보팅 시간의 차이에 따라 일종의 패널티가 부여됩니다. 이를 이해하고 적절한 전략을 세울 때, 저자와 큐레이터의 적절한 관계가 이루어지지 않을까 싶습니다.

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:  

@tmkor님의 글은 깊이가 있네요 ㅎㅎ 저는 아직 부족하네요

댓글 감사드립니다. ^^
파이썬 강좌 계속 기대할께요~ 사실 저도 필요한 것만 줍줍해서 쓰고 있던터라 전체적으로 한번 보고 싶었습니다!