Each section has Elders, these are 7 oldest (most trusted nodes). The have a DB of which Adults (up to 120 of these per section) hold the data. On any Fetch, the Eder can confirm the relevant Adults passed the data. Also on churn (node leave/join) the relevent data is copied to new locations. So churn in the section helps us maintain the data.
An important role is continualy checking nodes for malice, evan those we trust more as they may be in zombie mode bad guys.
If people were harassing folk saying we paid them, then that was just false (harassment or not, we don't pay for coin promotions, in fact we don't pay for any promotions).
I wish folk could discuss the project and it's goals. Incentivisation is part, but a really small part of the project. As soon as I see a cryptocurrency comment I just lose faith and have barely any energy to engage. Folk need to forget money/coins and so on and focus first on the function and vision. All you get talking cryptocurrency is "it's a scam", "it's a fraud", "somebody told me X and it was false". Then let's look at some price chart and so on. It is really just a distraction and the arguments have an infinite lifetime.
When I see projects on github/lab who mention cryptocurrency way up front I also lose faith. An incentive should not be the vision or function, it's an incentive it should never be a core goal or technology.
1. Not 100% sure what you mean here. Our data goes via our self_encyption process. That chunks the data and stores it as immutable where the name == sha3 of content. This is self validatable data to us.
2. Small partitions are not a huge issue, but partitions that are long-lasting and over 60% or so are. This is not detailed yet, but all data is signed by a section chain. The section chain is the BLS aggregate of the section elders. All sections in the network have such a chain back to the genesis key/block. This allows data to be republished if necessary and really helps with partitions. This is allowed as data is signed by a valid network section key that is held in the section.
However, transaction data is very different and we don't have a final conclusion there as theoretically one side would get consensus and the other does not. This seems to be a decent answer, but it can be much better. We are currently looking at some crdt types here, such as nonzero counters and so on, so that could allow transactions to happen on both partitions, but it's not trivial and we need to consider is partition permanent or even long enough that so many members change that quorum is lost. Again not the end of the world, but there is no final conclusion there just yet.
3. Our fundamental is all data is chunked and encrypted. So the data is encrypted by self-encryption (a take on convergent encryption), but perhaps easiest to think the user strongly encrypts data and only they have the key. Even public data is like this, but the passwords to decrypt are held by the user in a map that names each chunk with a created password (that comes from the data itself, not created by the network). For public data, chunks are still encrypted, but this data map is held in immutable state.
4. At the moment they are not sandboxed, this should not be the case on launch.
5. CRDT is what all data on the network should follow, this is being formalised more right now and we hope to see more containers in rust-crdt as well as a bft-crdt extension to this. It's an area we are currently looking to provide and it's coming along well.
6. Requests are signed by the client (we use BLS there to allow multisig). Network node events are signed by the p2p nodes (ED25519 there). Network agreed events (consensused) are BLS aggregate signed.
7. No, not at this time.
8. I worked in large scale network design from the 90's and hated novel/NT etc. as they we way to complex and for small companies horrendous. I created a project called eboxit, an all in1 linux intranet/internet box in 1996 but could not fund it. I realised during that process that these boxes could collaboratively back each other up if they used encryption etc. I then realised it was mental to do that and folks computers could collaborate to create a server like device. Then I realised it was not novell/NT etc. at fault, it was any server and any centralised and controlled by humans system that was at fault. Then 2002-2006 I worked on some form of a first step, little did I know how involved it would be or how difficult funding and building teams from the West coast of Scotland would be. However now OSS has really moved on and with a community it's easier to attract great Engineers. Not geniuses or the best in the world, but the comitted to the vision, just get it done Engineers. That agreed vision make them the best in the world for this specific project ;-)
8 We share that and more. I also believe that AI/neuroevolution/SGD etc. will make huge strides soon and do so with a bang. I am desperate to get time on that, but SAFE is needed first, either this project or another that frees and secures the worlds people to learn, create and communicate without any loss of privacy.
Oh yea, grit, determination and sacrifice are so important. Especially when we got into crypto (btc etc.) as this brought huge amounts of people, but also scammers and folk calling fraud, scam etc. That takes a personal toll when you have already given so much, but the project is important so the price has to be paid.
(project dev here) There are several levels of consensus. Parsec is a strict order (CP) algorithm. There are also AP (strongly eventually consistent) algorithms in play here. These are more concurrent consensus (think CRDT and causal order). Now if we back out a wee bit there are some places where strict order is an easy answer, but I personally feel these are all likely to become much more AP like in the future.
Then malice, it's a different module/behavior and requires we either prove the code (SGX etc. which currently is a bit too early) or we add malice detection across the board. This means nodes must not only be on-line or accepting messages, they must not create invalid messages etc. and this is not to difficult to deect. Then add to that the hard detection which is did the node process and forward/reply correctly? This is hard and requires a syncronicity assumption. I belive many projects focus on async everything meaning a node can reply at any time in the future and this is a bit tricky if you have memebrship changes (look at swim etc. for gossip). So for us we make the sync assumtion and have moved to allow a period (of events) that nodes must message (vote etc.) correctly. Then we apply the message malice detection. So malice detection is system wide and a very large area of decentralised networks at this level.
Rewarded POW has been an incredible defense against attack, including Sybil in bitcoin and POW derivatives. It has drawbacks though and therefore we now see a lot of research into revising older algorithms and enhancing these. This paper does that with a binary consensus algorithm and an adapted concrete coin (as opposed to a common coin/ threshold signature scheme)
There are many consensus algorithms that are not POW and they work perfectly fine, we cite some in the paper. Many require trusted nodes etc. and that is not so great, however, the work in this field of distributed consensus is increasingly popular. If you duckduckgo for BFT or PBFT algorithms and derivations you will find plenty. This one is very asynchronous and requires no trusted setup phase or threshold signature mechanism, making it an attractive choice.
In its plain form, as described then if you managed to get over 1/3 nodes on the network you could defeat consensus. Its use in SAFE is for valid voting nodes and then you would a much larger proportion than 1/3 of the network. Not only that, but they would have to be online and well behaved for longer than the existing network nodes. It is then much more expensive than a 1/3 attack.
An important role is continualy checking nodes for malice, evan those we trust more as they may be in zombie mode bad guys.