This report follows from Subnets - security analysis.
In that report, we detailed (1) the probabilities of a given subnet being taken over and (2) the number of subnets that need to be created in order for at least 1 subnet to be taken over with 99% confidence.
In this report, we want to dive into the “subnet grinding” attack, where a dishonest actor acts as both User and Host, repeatedly creating and settling subnets, until they land in a vulnerable subnet where they hold > 66% of the slots.
As detailed in https://github.com/gonka-ai/gonka/issues/914#issuecomment-4090483233, dishonest actors cannot profit from this attack, but they can damage other hosts by cutting their RewardCoins.
This report will be split in two parts:
We calculated:
RewardCoins lost.The fees we’ll apply in practice should be monotonically increasing with the subnet size. Larger subnets offer high security, therefore we should charge a higher fee.
In this second part, we’ll analyze how the level of security scales with subnet size.
As a rough initial estimation, we could simply state the maximum damage a hijacked subnet can cause is a total loss of RewardCoins for the network. At the moment, that is about 300k tokens.
1st refinement: A dishonest actor holding e.g. 30% of the network’s total weight can only cause the loss of coins for the remainder 70% of the network. I.e. 0.7 * 300k = 210k tokens.
In other words: the percentage of tokens lost is capped by the percentage of honest weight in the network.
2nd refinement: A dishonest actor can only damage a limited number of hosts per subnet attack.
max_host_weight: The maximum weight of any host is 10k (TODO: verify this)total_weight: The total weight of the network is 988k (source)