I think this script calculates collusion attacks in Pseudonym Pairs correct. If you attack with 10%, you'll be able to gain control 11% of the population (10% + 1%). If 20% collude (1.6 billion people), they get control of 24% of population (350 million fake accounts. ) This is pretty good, I think.
To those who fail to extrapolate this, here is more. If 1% attack (80 million people), they get 816000 fake accounts, an increase with 1.02%. If 0.1% attack, 8 million people, they get 8016 fake accounts. If 0.01% attack, 800000 people, they get 80 fake accounts And if 0.001% attack, 80000 people, they get zero fake accounts.
This low attack success is because PP uses pairs, 1-on-1 random pairing.
This is also the only attack vector. No single entity can attack it, as far as I know. Only massive numbers of actual real human beings. And even then, it isn't that devastating. A billion people attacking only increase their "population" with fraction of what they already are.
# cook your dish here
percentageColluding = 1/10
population = 8*10**9
colluders = percentageColluding * population
fakeAccounts = 0
percentageControlled = 0
for x in range(1000000):
percentageControlled = (colluders + fakeAccounts) / (population + fakeAccounts)
fakeAccounts = population*(percentageControlled)**2
print ("Total population: ", population, " people")
print ("Human colluders: ", colluders, " people")
print ("Percentage colluding: ", percentageColluding*100, "%")
print ("Population after attack plateus: ", population + fakeAccounts, " proof-of-unique-human")
print ("Fake accounts gained by colluders: ", fakeAccounts, " proof-of-unique-human")
print ("Total accounts controlled by colluders: ", colluders + fakeAccounts, " proof-of-unique-human")
print ("Total percentage of population controlled: ", percentageControlled*100, "%")
print ("Colluder accounts increase: ", ((colluders + fakeAccounts) / colluders - 1) * 100, "%")