mirror of
https://github.com/darkrenaissance/darkfi.git
synced 2026-01-09 14:48:08 -05:00
61 lines
2.3 KiB
Python
61 lines
2.3 KiB
Python
from core.lottery import *
|
|
from core.strategy import random_strategy
|
|
from core.constants import *
|
|
from pid.pid_base import *
|
|
from draw import draw
|
|
import metrics
|
|
import logging
|
|
import config
|
|
import os
|
|
|
|
logging.basicConfig(filename='log/vesting.log', encoding='utf-8', level=logging.DEBUG)
|
|
|
|
def vesting_instance(vesting, running_time):
|
|
os.system("rm log/*_feedback.hist; rm log/*_output.hist log/darkie* log/rewards.log")
|
|
native_drk = ERC20DRK * config.exchange_rate
|
|
total_vesting = 0
|
|
if __name__ == "__main__":
|
|
darkies = []
|
|
id = 0
|
|
for name, distrib in vesting.items():
|
|
darkies += [Darkie(distrib[0] , vesting=distrib, strategy=random_strategy(EPOCH_LENGTH), idx=id)]
|
|
id+=1
|
|
total_vesting+=distrib[-1]
|
|
airdrop = 0
|
|
for darkie in darkies:
|
|
airdrop+=darkie.stake
|
|
print("initial airdrop: {}/{}% on {} nodes".format(airdrop, airdrop/native_drk*100 if native_drk!=0 else 0 , len(darkies)))
|
|
print('total predistribution: {}/{}%'.format(total_vesting, total_vesting/native_drk*100 if native_drk !=0 else 0))
|
|
dt = DarkfiTable(airdrop, running_time, kp=-0.010399999999938556, ki=-0.0365999996461878, kd=0.03840000000000491, r_kp=-2.53, r_ki=29.5, r_kd=53.77)
|
|
for darkie in darkies:
|
|
dt.add_darkie(darkie)
|
|
dt.background(rand_running_time=False)
|
|
dt.write()
|
|
|
|
inflation = metrics.percent_change(airdrop, sum(dt.rewards))
|
|
return (dt.avg_apr(), inflation)
|
|
|
|
if not os.path.exists(config.vesting_file):
|
|
print('add vested distribution csv at path {} with vesting period {} (slots) aparts.'.format(config.vesting_file, ONE_MONTH))
|
|
exit()
|
|
|
|
vesting = {}
|
|
with open(config.vesting_file) as f:
|
|
for node in f.readlines():
|
|
keyval = node.split(',')
|
|
key = keyval[0]
|
|
val = ','.join(keyval[1:])
|
|
vesting[keyval[0]] = eval(eval(val))
|
|
|
|
nodes = len(vesting)
|
|
if config.running_time== 0:
|
|
print("Running time is set to 0. Starting sim for whole vesting period...")
|
|
running_time = len(next(iter(vesting.values())))*VESTING_PERIOD
|
|
else:
|
|
running_time = config.running_time
|
|
|
|
apr, inflation = vesting_instance(vesting, running_time)
|
|
print('avg apr: {}%'.format(apr*100))
|
|
print('inflation: {}%'.format(inflation))
|
|
draw()
|