|
@@ -6,6 +6,7 @@ class Darkie(Thread):
|
|
|
Thread.__init__(self)
|
|
Thread.__init__(self)
|
|
|
self.vesting = [0] + vesting
|
|
self.vesting = [0] + vesting
|
|
|
self.stake = (Num(airdrop) if hp else airdrop)
|
|
self.stake = (Num(airdrop) if hp else airdrop)
|
|
|
|
|
+ self.initial_stake = self.stake # for debugging purpose
|
|
|
self.finalized_stake = (Num(airdrop) if hp else airdrop) # after fork finalization
|
|
self.finalized_stake = (Num(airdrop) if hp else airdrop) # after fork finalization
|
|
|
self.Sigma = None
|
|
self.Sigma = None
|
|
|
self.feedback = None
|
|
self.feedback = None
|
|
@@ -14,11 +15,11 @@ class Darkie(Thread):
|
|
|
self.commit = commit # commit to staked tokens
|
|
self.commit = commit # commit to staked tokens
|
|
|
self.epoch_len=epoch_len # epoch length during which the stake is static
|
|
self.epoch_len=epoch_len # epoch length during which the stake is static
|
|
|
self.staked_tokens_ratio = 1 # ratio of staked tokens, if commit is true then it's 100%
|
|
self.staked_tokens_ratio = 1 # ratio of staked tokens, if commit is true then it's 100%
|
|
|
-
|
|
|
|
|
|
|
+ self.slot = 0
|
|
|
def clone(self):
|
|
def clone(self):
|
|
|
return Darkie(self.finalized_stake)
|
|
return Darkie(self.finalized_stake)
|
|
|
|
|
|
|
|
- def set_sigma_feedback(self, sigma, feedback, f, count, hp=False):
|
|
|
|
|
|
|
+ def set_sigma_feedback(self, sigma, feedback, f, count, hp=True):
|
|
|
self.Sigma = (Num(sigma) if hp else sigma)
|
|
self.Sigma = (Num(sigma) if hp else sigma)
|
|
|
self.feedback = (Num(feedback) if hp else feedback)
|
|
self.feedback = (Num(feedback) if hp else feedback)
|
|
|
self.f = (Num(f) if hp else f)
|
|
self.f = (Num(f) if hp else f)
|
|
@@ -31,13 +32,13 @@ class Darkie(Thread):
|
|
|
self.staked_tokens_ratio = random.random()
|
|
self.staked_tokens_ratio = random.random()
|
|
|
return self.staked_tokens_ratio*self.finalized_stake
|
|
return self.staked_tokens_ratio*self.finalized_stake
|
|
|
|
|
|
|
|
- def run(self, hp=False):
|
|
|
|
|
|
|
+ def run(self, hp=True):
|
|
|
k=N_TERM
|
|
k=N_TERM
|
|
|
def target(tune_parameter, stake):
|
|
def target(tune_parameter, stake):
|
|
|
x = (Num(1) if hp else 1) - (Num(tune_parameter) if hp else tune_parameter)
|
|
x = (Num(1) if hp else 1) - (Num(tune_parameter) if hp else tune_parameter)
|
|
|
c = (x.ln() if type(x)==Num else math.log(x))
|
|
c = (x.ln() if type(x)==Num else math.log(x))
|
|
|
sigmas = [ c/((self.Sigma+EPSILON)**i) * ( ((L_HP if hp else L)/fact(i)) ) for i in range(1, k+1) ]
|
|
sigmas = [ c/((self.Sigma+EPSILON)**i) * ( ((L_HP if hp else L)/fact(i)) ) for i in range(1, k+1) ]
|
|
|
- scaled_target = approx_target_in_zk(sigmas, stake) #+ (BASE_L_HP if hp else BASE_L)
|
|
|
|
|
|
|
+ scaled_target = approx_target_in_zk(sigmas, Num(stake)) #+ (BASE_L_HP if hp else BASE_L)
|
|
|
return scaled_target
|
|
return scaled_target
|
|
|
T = target(self.f, self.randomized_finalized_stake())
|
|
T = target(self.f, self.randomized_finalized_stake())
|
|
|
self.won = lottery(T, hp)
|
|
self.won = lottery(T, hp)
|
|
@@ -54,10 +55,17 @@ class Darkie(Thread):
|
|
|
return vesting_value
|
|
return vesting_value
|
|
|
|
|
|
|
|
def update_stake(self):
|
|
def update_stake(self):
|
|
|
- self.stake+=REWARD
|
|
|
|
|
|
|
+ if self.won:
|
|
|
|
|
+ self.stake+=REWARD
|
|
|
|
|
|
|
|
def finalize_stake(self):
|
|
def finalize_stake(self):
|
|
|
if self.won:
|
|
if self.won:
|
|
|
self.finalized_stake = self.stake
|
|
self.finalized_stake = self.stake
|
|
|
else:
|
|
else:
|
|
|
self.stake = self.finalized_stake
|
|
self.stake = self.finalized_stake
|
|
|
|
|
+
|
|
|
|
|
+ def log_state_gain(self):
|
|
|
|
|
+ # darkie started with self.initial_stake, self.initial_stake/self.Sigma percent
|
|
|
|
|
+ # over the course of self.slot
|
|
|
|
|
+ # current stake is self.stake, self.stake/self.Sigma percent
|
|
|
|
|
+ pass
|