The terms of service so far have not really been enforced and have been a bit left behind (as we have seen with outdated terms).
With this I do not mean that therefore they are useless and should be disregarded, but rather that the terms of services are not the “final word” at the moment, atleast until they are kept up to date and are clear.
For now, experienced SNOs and Storj know how the network is designed to work and the reasons for it.
In the case of the /24 rule, its quite clear that the network has this rule as a “protection” method against storing multiple pieces in the same location, but I believe this rule no longer works as intended. Big SNOs (outside of select, which not everyone can join for obvious reasons) openly use multiple IPs because otherwise medium size operations would not even be feasable.
As Storj grows, there is the question of what is the target SNO profile. Multiple nodes per SNO, or multiple SNOs with single nodes. Generally SNOs tend to have multiple nodes, because while you can use what you have and host a single node, the uptime, bandwidth, and IOPS requirements might not be compesated by the revenue of a single drive.
Instead, I think its becoming clear that some SNOs provide a large chunk of capacity by having a lot of nodes, which in most cases means lots of nodes in a single physical place. As the capacity demand increases, most of the growth will probably come from these large operators, rather than loads of small operators (a bit of speculation from my part here). I believe Storj knows this as they have encouraged SNOs to add additional capacity to their systems.
The reason I bring this up, is that the current rule, if not taken advantage of by using multiple IPs, limits SNOs from expanding. I believe a rework of the rule could be advantageous for both SNOs and Storj.
One possible way of reworking this rule is to not longer limit the selection of nodes to a subnet. Node selection would randomly pick from all available nodes equally instead of using subnets, but would also prevent two nodes sharing subnet from being picked at the same time (this could be implemented in numerous ways, e.g. pick node sequantially and keep track of used subnets, e.g. 2 pick all nodes and check if there are multiple nodes of one subnet, if so, repick all expect one of the nodes that share subnet). The idea from this is that two nodes under the same subnet will have the same chance of being picked than two nodes in two subnets, but node selection will still ensure that the nodes dont store pieces of the same segment.
This "solution"comes with some advantages and disadvantages:
- +Ensures network safety by not concentrating pieces of a segment in a single location.
- +Encourages SNOs to grow capacity.
- +Disencourages “cheating” as multiple IPs no longer provide much benefit.
- -The proportion of data going towards smaller SNOs might decrease.
- -Data may be concentrated a bit more (as these SNOs would probably get more ingress until they fill up, bestofN could partially mitigate this issue) in large capacity operations (keep in mind that redundancy would always be maintained).
I doubt anything will come out of this post by I rather provide my 2 cents.