Browse Source

[research/lotterysim] handle a bug in case single lead got slashed

ertosns 3 years ago
parent
commit
9fd745b915
1 changed files with 7 additions and 3 deletions
  1. 7 3
      script/research/lotterysim/core/lottery.py

+ 7 - 3
script/research/lotterysim/core/lottery.py

@@ -94,14 +94,18 @@ class DarkfiTable:
                     resync_reward = self.rewards[resync_reward_id]
                     resync_reward = self.rewards[resync_reward_id]
                     # resyncing depends on the random branch chosen,
                     # resyncing depends on the random branch chosen,
                     # it's simulated by choosing first wining node
                     # it's simulated by choosing first wining node
-                    darkie_winning_idx = 0
+                    darkie_winning_idx = -1
                     random.shuffle(self.darkies)
                     random.shuffle(self.darkies)
                     for darkie_idx in range(len(self.darkies)):
                     for darkie_idx in range(len(self.darkies)):
                         if self.darkies[darkie_idx].won_hist[resync_slot_id]:
                         if self.darkies[darkie_idx].won_hist[resync_slot_id]:
                             darkie_winning_idx = darkie_idx
                             darkie_winning_idx = darkie_idx
                             break
                             break
-                    self.darkies[darkie_winning_idx].resync_stake(resync_reward)
-                    self.Sigma += resync_reward
+                    if self.darkie_winning_idx>=0:
+                        self.darkies[darkie_winning_idx].resync_stake(resync_reward)
+                        self.Sigma += resync_reward
+                    else:
+                        # single lead got slashed
+                        pass
             #################
             #################
             # fork resolved #
             # fork resolved #
             #################
             #################