-
Notifications
You must be signed in to change notification settings - Fork 1
/
simu8b.py
32 lines (23 loc) · 1.03 KB
/
simu8b.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
"""
Simulation with lottery in shuffled linear ip space
- random hash (not questioned) - sha256 of a bitstring - 32 bytes
- first 4 bytes of hash are converted to an int.
- ip is converted to a 4 bytes int as well
- first 2 bytes of ip are shuffled via a pseudo random lookup table, fed from the hash, to account for non uniform density in public ip v4
- closest eligible ip is voted for
Many draws on a single "nodes" file, to analyse odds and bias.
"""
from libs.utils import random_hash
from libs.utils import linear_ip_score4, shuffle
from libs.nodesreader import NodesReader
if __name__ == "__main__":
reader = NodesReader("NODES/nodes.1")
# save_whois()
for test in range(100000):
cycle_hash = random_hash()
shuffle(cycle_hash)
# print("Run {}".format(test))
winner = reader.winner(cycle_hash, scoring=linear_ip_score4)
ip, ip_class = reader.verifiers[winner][:2]
ip_class_count = reader.ip_classes[ip_class][0]
print("{},{},{}".format(ip, ip_class, ip_class_count))