stake_reward.py 1.1 KB

123456789101112131415161718192021222324252627282930
  1. # running time ONE_YEAR
  2. #network airdrop: 2100000000.0, staked token: 2099815635.398858/99.99122073327895% on 1000 nodes
  3. #acc: 35.66458096862327, reward: 0.005966962921188361850310030975% with instant finality: 0.01673078095726943897690808440%
  4. from lottery import *
  5. import os
  6. import numpy
  7. os.system("rm f.hist; rm leads.hist")
  8. RUNNING_TIME = 1000
  9. NODES=1000
  10. rewards = []
  11. airdrop = ERC20DRK
  12. darkies = []
  13. effective_airdrop = 0
  14. egalitarian = ERC20DRK/NODES
  15. darkies = [ Darkie(random.gauss(egalitarian, egalitarian*0.01)) for id in range(int(NODES)) ]
  16. for darkie in darkies:
  17. effective_airdrop+=darkie.stake
  18. print("network airdrop: {}, staked token: {}/{}% on {} nodes".format(airdrop, effective_airdrop, effective_airdrop/airdrop*100, len(darkies)))
  19. dt = DarkfiTable(effective_airdrop, RUNNING_TIME, CONTROLLER_TYPE_DISCRETE, kp=-0.010399999999938556, ki=-0.0365999996461878, kd=0.03840000000000491)
  20. for darkie in darkies:
  21. dt.add_darkie(darkie)
  22. acc = dt.background(rand_running_time=False)
  23. apy_per = sum([darkie.apy_percentage() for darkie in darkies])/NODES
  24. print("acc: {}, reward: {}% with instant finality: {}%".format(acc*100, apy_per, apy_per/Num(acc)))