At Wilmington, we decided to write a simulator to evaluate the security of various parameter choices. We even made a pseudocode sketch of it. A picture of the pseudocode sketch is attached.
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information
Child items ...
Show closed items
Linked items 0
Link issues together to show that they're related.
Learn more.
guard.is_targeted should be updated every time we change guards in a higher layer
Hmm, we are supposed to do this in self.is_targetted = self.is_targetted_func() when we instantiate a new guard node... Logic seems solid, but code might be broken. Will look more into this.
The graphs of G1 look suspicious (high CDF in low timescales for wimpy adversaries)
Hmm, I just pushed a commit that should improve the situation here. Now the CDFs look more close to what they should be. But there are probably more bugs!
FWIW, the probabilities of compromising a guard at the beginning of the run for topology 2-4-8 with medium sybil probability is: 0.1 for G1, 0.25 for G2 and 0.43 for G3
The "none" adversary still takes a long time. Can we have a mode of the sim that stops at guard discovery for particularly weak adversaries?
Still haven't done this one yet!
I also pushed a branch pypy in my github repo which maintains the pypy support through the recent commits, since it's actually super useful!!!
guard.is_targeted should be updated every time we change guards in a higher layer
Hmm, we are supposed to do this in self.is_targetted = self.is_targetted_func() when we instantiate a new guard node... Logic seems solid, but code might be broken. Will look more into this.
My point is that instantiation of the new guard node is insufficient to capture all line-of-sight events. Consider what happens to G1 if it was chosen as a guard while there were no adversaries in G2, but then an adversary node rotates into G2 later.
Though it does look like you do this update in adversary.guard_compromised(). I guess I missed that before.
The graphs of G1 look suspicious (high CDF in low timescales for wimpy adversaries)
Hmm, I just pushed a commit that should improve the situation here. Now the CDFs look more close to what they should be. But there are probably more bugs!
FWIW, the probabilities of compromising a guard at the beginning of the run for topology 2-4-8 with medium sybil probability is: 0.1 for G1, 0.25 for G2 and 0.43 for G3
This is better. 1-(1-c)^n gives 0.10, 0.26, and 0.45 for this config.
The "none" adversary still takes a long time. Can we have a mode of the sim that stops at guard discovery for particularly weak adversaries?
Still haven't done this one yet!
I also pushed a branch pypy in my github repo which maintains the pypy support through the recent commits, since it's actually super useful!!!