I’ve looked at the code in maidsafe/routing but before I dive too much deeper I wanted to ask is there an existing document explaining the logic for when a section splits or merges? I would like to do some more reading of words before I get deeper into the code if possible.
A section will split when there are enough nodes to create 2 sections. This increases the Prefix
by 1 bit and causes the nodes to move to their new Prefix
. A Merge is when the number drops to min_section_size
where 2 Prefix
s reduce in length. Sections are connected to siblings and neighbors. A sibling is any prefix that differs in 1 bit from the current prefix.
This code will change with the data chains we are implementing though, where there is only group_size nodes making decisions with back
nodes as the > group size nodes per section. Infants (nodes younger than 4) will be not included in churn after network start parameters are met.
Presumably this means there is no upper limit on the number of nodes in a section?
For example, a section with prefix 01
might (with very low chance) be comprised of 50 nodes all with names starting with
010000???...
010000???...
010000???...
010000???...
etc for 50 nodes
which would not be able to split into section 010
and 011
because none of those nodes have prefix 011
.
Do I understand this concept correctly?
This sounds like it affects quorum decisions and periodic relocating of single nodes, but does not directly affect merge and split logic. Is that right?
It will affect merge and split in terms of message passing and flow during those times. It wont require the high levels of connectivity we have at the moment as non group nodes will not need connected to each other or pass so many messages. They are more like standby nodes atm.
Yes that is right there is no upper bound but in reality there is due to distribution. There is also the possibility of a section relocating a node with no age penalty if it unbalances like that, but it is very unlikely.