μλ
νμΈμ @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μΆ λ³΄ν
λΉμ© %
μ΄λ₯Ό ν΅ν΄ μ μ μλ κ²μ, μ μμκ² μ΅μ μ΄ λλ 보ν μ κΈμ΄ μ¬λΌμ€μ λ§μ νλ κ²μ΄κ³ , νλ μ΄μ 보μ ν보λ₯Ό μν΄μ μΌμ μκ° λλ μ΄λ₯Ό λμ΄μΌ νλ κ² μ λλ€.
λλ μ΄λ₯Ό μ£Όλ λ°©λ²μ κ°λ¨ν©λλ€.
보ν νλ κ·Έ μΈμ λΆλΆμ μ΄μ κΈμ μ°Έκ³ λ°λλλ€.
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 μκ°μμ κΈ μμ± μκ°μ λΉΌκ³ , μ΄λ₯Ό λΆ λ¨μλ‘ νμ°ν΄μ μ€μ λ μκ°μ΄ μμ§λ¬λμ§ νμΈν©λλ€.
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
μ΄λ²μ λ§λ ν¨μλ₯Ό μ΄μ©ν΄μ μκ° λλ μ΄λ₯Ό 체ν¬νκ³ μ§λμ§ μμμ κ²½μ° ν¨μλ₯Ό μ’ λ£ν©λλ€.
νλ μ΄μ 보μμ κ²½μ° κΈ μμ± μκ°κ³Ό 보ν μκ°μ μ°¨μ΄μ λ°λΌ μΌμ’ μ ν¨λν°κ° λΆμ¬λ©λλ€. μ΄λ₯Ό μ΄ν΄νκ³ μ μ ν μ λ΅μ μΈμΈ λ, μ μμ νλ μ΄ν°μ μ μ ν κ΄κ³κ° μ΄λ£¨μ΄μ§μ§ μμκΉ μΆμ΅λλ€.