one_year_reward.py 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. from lottery import *
  2. import os
  3. import numpy
  4. from matplotlib import pyplot as plt
  5. os.system("rm f.hist; rm leads.hist")
  6. RUNNING_TIME = 100000
  7. NODES=1000
  8. NORM_NODES = NODES/10
  9. stakes = [100, 1000, 10000, 100000]
  10. rewards = []
  11. airdrop = ERC20DRK
  12. for stake in stakes:
  13. effective_airdrop = 0
  14. darkies = []
  15. norm_staker_sum = stake*NORM_NODES
  16. egalitarian = (ERC20DRK-norm_staker_sum)/NODES
  17. darkies += [ Darkie(random.gauss(egalitarian, egalitarian*0.1)) for id in range(int(NODES)) ]
  18. darkies += [Darkie(stake) for _ in range(int(NORM_NODES))]
  19. for darkie in darkies:
  20. effective_airdrop+=darkie.stake
  21. dt = DarkfiTable(effective_airdrop, RUNNING_TIME, CONTROLLER_TYPE_DISCRETE, kp=-0.010399999999938556, ki=-0.0365999996461878, kd=0.03840000000000491)
  22. for darkie in darkies:
  23. dt.add_darkie(darkie)
  24. acc = dt.background(rand_running_time=False)
  25. sum_zero_stake = sum([darkie.stake for darkie in darkies[NODES:]])
  26. avg_zero_stake = sum_zero_stake/NORM_NODES
  27. reward = ((avg_zero_stake/stake)-1)
  28. print("stake: {}, acc: {}, reward: {}%".format(stake, acc*100, reward*100))
  29. rewards += [(stake, reward)]
  30. print('avg rwards: {}%'. format(sum([r[1] for r in rewards])/len(stakes)))
  31. plt.plot([r[0] for r in rewards], [r[1] for r in rewards])
  32. plt.show()