So I’ve been meaning to ask this question but then I’d try to search the forum and then it would be either too technical or the info would be a bit outdated.
Can someone kindly explain in simple terms, what exactly is a section? How is it different from a group?
Are only elders voting now? And now is it that a new node is added to the voting group only when required?
Because from my last deep look into Safe I got the impression that any node would be able to vote after age: 4.
I’ve tried reading the link from latest update (Dec 7) but was too technical for me. Appreciate the help.
You’re not alone! I think the confusion arises because historically a bunch of nodes responsible for a certain set of data was called a group, and terms like group_size are still present in the code, but last year ‘sections’ were introduced which are flexible in size. Unfortunately ‘section’ and ‘group’ seem to be used almost interchangeably, which doesn’t help. Section is the best word to use in almost all cases. I did my best to decipher this here Data Chains - Deeper Dive - #17 by JPL - Routing - Safe Dev Forum
Section is the set of members that share the same bits of the binary tree that is formed as the network grows. Each member can only belong to a single section.
Group is a subset of members, from the same section. We have the group of elders, responsible for controlling data and consensus, the group of adults, capable to become elders, and the group of infants.
What is not clear: what a section is, or something else?
If it is a section, that I think I understand (after reading the first posts more properly: what @digipl said, but more elaborate).
Each section is defined by a name prefix, i.e. a sequence of between 0 and XOR_NAME_BITS (currently 256) bits, similar to how IP subnets correspond to IP address prefixes.
Every node gets an address in the Xor space wich is a number, 256 bits long: so between 0 and 2^256 (very big).
Assume for example that the SAFE Network will have 65536 nodes in total with e.g. an average of 16 members in each group.
Then you have approximately 4096 (2 to the 12th power) groups in total, meaning the average section is 12 bits longs. So for example a section could be every Xor address that starts with 12 zeros (if you understand the working of blockchain, this should sound familiar). So in my example about 16 of the 65536 total number of nodes will be member of section ‘000000000000’.
And this section will have a total 2^256 / 2^12 = 2^244 members. Or, in other words, the total amount of numbers between 0 and 2^256 that start with 12 zero’s. And that group of 16 is a subset of these members.
Or maybe the different type of groups is meant: group of elders, group of adults, group of infants, and the ‘total’ group, that contain all these groups?
2 ^ 244 is the possible XOR directions within any of the 4096 sections in a perfectly balanced tree, but the total members of any section will be between 8 and enough members to generate a division (I guess around 20).
This thread could also be helpful: Explaining group splits and merges
Let me ask a question: can there be members of a section, who are not part of the elder, adult or infant group?
I assume that all section members are at least infant?
That is the understanding I also gained out of the topic in the dev forum.
I think you will find that under certain conditions a section can have a lot more members than 20. Doesn’t the split only occur when there are enough elders and adults who could become an elder?
Yes , the 20 is only a guess. Until we have a working network is simple speculation.
The logic says that in a network in strong growth the number of infants will be high and the sections bigger. In a stabilized network the sections must be smaller.