Should the safe network be a multi network?

That is a misrepresentation of the truth.

But more telling is a total ignoring of all the other issues

And thats why we test.

Are you worried cloud providers will lose all their data one day? They are using common software supplied by the linux core.

Should we have 10 or 20 significantly different linux cores within each cloud provider?

Of course they do not do that since it would be a total nightmare to maintain and support. My points above would still apply.

This is sounding more - lets divide the network without realising it will cause the network to fail. @urrtag says it better

And we end up with the problems I outlined above. If you want simple redundancy then lets just have the one network and use the archival nodes that are in the plan to be developed rather than wasting that time on working out the way to do the dual network which has the only advantage of redundancy but massive issues of payments for PUTs coordinating the transfer of data between the two and so on. I’d like to see the network soon and not put back the implementation to change directions now.

2 Likes

Agreed. The above comment was just brainstorming to try to look at the thread in a more positive light. However …

True that a mirrored network doesn’t really have any benefits for better redundancy of the data, but it offers redundant consensus or governance and a means for self-optimization. It’s a another check and balance against malicious nodes and could offer error correction.

My comment above was incomplete. It’s not really two networks but one with a dual address space. For every section, there is a dual section that mirrors the data. Safecoin would never need to transfer between the two, because you would have a dual Safecoin* there, and the transactions would be mirrored in parallel. Client PUTs go to both networks but either one could serve a GET on that chunk, analogous to a RAID 1 config at network scale on all data, metadata, section membership, and consensus (aka MAID 1?). I agree that it is pointless to consider further until a working network is out in the wild and well established, but wanted to also point out that it might be something that warrants further consideration in the future as a security improvement. Once the base code is working well, I don’t think it is as complicated as you believe to add in a mirroring capability. It would be the same vault code, and modified routing code so that some vaults would be assigned to a primary XOR space in primary sections, and others in a dual or conjugate XOR space in dual sections. Is it worth going through this trouble? Maybe not, but maybe yes. Again, to make it clear, I agree with you that it is pointless for any dev to consider at this time.

And with that I am likely off-topic.

But at huge cost of equipment, bandwidth, reduction in storage capability, reduction in earning capability and/or increased cost to store. The same redundancy can be achieved with proper network restart (which is a fundamental goal) and adding 1 or 2 or 3 extra copies (depending on minimum copies needed to start with) Think RAID This results in a small decrease of actual storage capability. Remember often there are more copies kept than the minimum anyhow as a node that goes offline for a very short time causes a new copy of the chunks to be kept and when its back online it becomes the one extra than minimum needed.

This needs no change to the code apart from the magic number of minimum copies to have.

And it seems your explanation later hints this is what you were getting around to except you wanted mirrored rather than accepting a higher form of RAID style of protection

2 Likes

The point of my comment was not really about data redundancy, but instead metadata redundancy, keeping consensus safe, detecting malice and opening up the opportunity to evolve or tweak operational settings in the dual network by checking the performance between the mirrors.

I guess a few fundamental questions are :

  1. Is it better to have single section with a total of X nodes working on consensus or N identical sections each with X/N nodes?
  2. Is it possible to use dual sections to better determine which nodes are malicious?
  3. Is it possible to determine if an error has occurred or the section has malfunctioned?

I suppose that it is not feasible with only two mirrors, so N must be odd and N>2. You would need three at a minimum, in the same way that Parsec needs at least a 2/3 majority of benevolent participants.

So this spawns another fundamental question:

  1. Is it more performant, effective, secure, better to have a single section with X nodes participating in consensus and data storage with a chunk redundancy of Y, or N=3 mirrored sections. In the case of three sections, each would have X/3 nodes and Y/3 chunk redundancy.

The added complexity in the mirrored case is that you need check to make sure that all three mirrors are eventually consistent, but this offers error correction. I suppose you could call this methodology Parsec^2 or Parsec-Squared. It’s a scenario where you would have a hierarchy of two Parsec mechanisms operating. The first level which is the current method for obtaining intra-sectional consistency, and a second level of Parsec that compares the mirrors for super-sectional consistency. I wonder what @pierrechevalier83 would think of something like this? Too complex? No benefit?

Let’s say the cost to run a round of Parsec is C(X). Which is more expensive, C(X) or C(3).C(X/3)? I know, gross oversimpication.

Edit : Assuming C(X)–>O(X.Log(X)) complexity as described here:

Log base 2:
image

Log base 3:
image

Log base 4:
image

1 Like

If you can fool one then doing it to 2 isn’t hard since they are similar.

Lets just spend the time on one and test it

I’m not so sure. You would need to fool 2 of the mirrors simultaneously with certain timing. There is a potential for ongoing error correction due to the second tier parsec votes. If a single section mirror goes bad the other two sections could vote to flush it in the same way that nodes detect malice within a section and terminate a bad node. Alternatively, the extra information from the two section mirrors that are in agreement might be used to aid the offending section mirror so that it could better determine which nodes are malicious and terminate them without needing a full flush of the section mirror. I think it’s more like if fooling a single section costs C then fooling two sections simultaneously would cost at least C^2 not 2C.

1 Like

But then they need to have different consensus rules, making the mirroring even harder as one operation can be valid in one network but invalid in the other, not even speaking about multiple safecoins (you could have 0 SC in network A and > 0 in network B causing divergent behavior on PUTs. You could force net A to mirror that PUT if it gets accepted by net B but that could break the consensus of net A, as it’s not validated by net A, and make it even more vulnerable to attacks)

3 Likes

This is like asking Linus Torvalds to make 100 distros of Linux by himself just in case his original idea fails.

6 Likes

We would reply hopefully in a less rude way, but with the same result :slight_smile:

6 Likes

I’ve read that Linus wanted to change that.

3 Likes

That’s a good interview. I feel a bit sorry for Linus having to bend himself out of shape. I should imagine (like quite a few good scientists, engineers and techies) he’s somewhere ‘on the spectrum’ and diplomacy does not come naturally to him. Not sure I’d like to work with him particulary, but I doubt he deliberately means to be nasty.

2 Likes

I think it is a bit exaggerated and working for him would probably not be that bad, otherwise Linux wouldn’t exist. Some think that exaggeration is used to try to replace him as Linux maintainer: http://techrights.org/2019/06/29/ousting-linus-torvalds/.
ps: Techrights.org really don’t like the Linux Foundation and Microsoft: Linux Foundation - Techrights

1 Like

I don’t think you read the whole brainstorm to the end, where the ideas strayed significantly from the OP. The whole point is that the the consensus rules in each mirror need to be the same, and that an operation needs to be valid in all mirrors, otherwise an error or malice has been detected. The question for mirroring or “sub-sectioning” comes down to the following:

A second layer of Parsec might have modified rules to confirm that 2/3 of the mirrors agree on what events occurred, ie. a confirmed consensus about the consensus. Maybe call this a meta-consensus?
Not really necessary to consider for launch, but might be a potential optimization later down the road.

Even then one op could be valid in one network and invalid in the other, depending on the order of ops coming out of PARSEC (each PARSEC instance might decide on a different order of events based on the exact timing of each event, the gossiping timing and so on), the structure of the network (you would need to have the same sections with the same nodes in each section on both mirrors), …

The order of events is very important, as it’s the factor that is used to determine which events are valid and which aren’t.

  • say you have a SC account with 1 SC on it, but create two transactions transferring 1 SC from that account each, only the first tx will succeed determined by the PARSEC order
  • two nodes are updating one dataset concurrently. the current version of the dataset is 1, each node is sending its new dataset with version 2 (current version + 1), because of the same version used by both nodes only one update can succeed, again determined by PARSEC