Understand if-how Parsec solves this problem, please explain/describe Parsec

@digipl so I have read the whole Parsec reference sourcecode now and the algorithm and Parsec’s workings is still totally unclear.

What parts of the Swirlds paper could have any instructive value in studying Parsec?

1 Like

@tobbetj Hi Tobias yes I have watched those videos with utmost care also. I’ll follow up in this thread with the additionally clarified unclarity shortly.

Agreed. It could be a community challenge to make an easily-understandable reference implementation in Javascript, such. Anyhow will get back with questions shortly, will start a new thread about the ABA paper and its separate unclarities first.

1 Like

Hi @digipl @Fraser @pierrechevalier83 ,

Now posted separate questions for clarification about the ABA paper here ABA paper unclarity and queries, discussion, please help clarify , kindly have a look when you have time.

I reviewed the whole Parsec codebase now, line by line and following code paths.

It’s nice to see logics relating to the ESTablished -> AUX -> DECided_values mess in https://github.com/maidsafe/parsec/blob/master/src/meta_voting/meta_vote_values.rs .

I think I can summarize the biggest unclarity like this:

After 50 hours of intense study of about two re-reads of each of Parsec paper, documents, video and reference implementation, it’s still perfectly unclear to me WHAT you vote about in Parsec, and HOW the EST->AUX->DEC+coinflip flow helps that consensus vote

If you could help clarify this would be much appreciated. You suggested already that this is mere “unclarity about terms” that I solve by simply looking them up in the RFC, but I assure you it is not so.

I have not been able to apprehend the scope.

I want byzantine consensus, but how does Parsec actually achieve it.

https://github.com/maidsafe/rfcs/blob/master/text/0049-parsec/gossip_graph.dot.svg is a great case in point as the unclarity is already in place around a_0/a_1/b_0/b_1/c_0/c_1/d_0/d_1:

Firstly how do you represent multiple votes in parsec
The point being, if Alice, Bob, Carol and David are voting about seven different options of grocery shopping lists, then how should this be introduced to the algorithm, so that it eventually gets into the ESTimate value and so on.

The paper and reference implementation hardwiredly discuss the usecase of join/part Network Events, however that is only one very specific application of Parsec, is it not.

Kindly explain to me using how many Gossip Events you would introduce A-Ds preferences about shopping lists 1-7, each of A-D may vote for any number of the seven shopping lists?

Secondly what sense does EST->AUX->DEC+coin make
So now A, B, C and D have voted for which grocery options they’d like to have bought.

So let’s get into the algorithm, here illustrated by the paper figure 3:

All that is unclear relative to my pictured usecase, so let’s kind of start from the beginning at the figure’s bottom:

I understand that the nodes will gossip something to each other. I’m not sure what. I see in the reference code that they send

If I understand Parsec right then, the grocery list options should sooomehow be translated into sooome kind of Gossip Events, if it’s one per grocery list option peer choice or not I’m not sure of. Anyhow, that-something-thing will be gossiped, and as one node gets a supermajority of votes it will gossip its conclusions to all the others, and when a node has received a supermajority of other nodes’ conclusions, at that point unless you’re in a 50-50 vote, you will start reaching decided values. Is this a correct zoomed-out understanding of Parsec?

The documentiaton and all materials are so exceptionally unclear on this overall purpose level that I need your reassurance.

The subsequent question would be, “now that this is how it is then how is the EST juggling and the AUX value helping, and is there any meaningful documentation about their motivation and workings in any paper, slides or implementation anywhere?”

The whole Blockchain-Consensus phenomenon is still in its early infancy, I am very grateful to you all who participate in this and also while I’ve whined for pages now I acknowledge that your work is better than others’. I hope you can take the time to clarify, please step out of your PhD suit for a second and speak commonsense.



Hi all, Pierre said he’ll respond to the previous question as-when time allows.

Meanwhile I’ll pass one lift one particular Parsec usecase:

@pierrechevalier83 @Fraser @AndreasF and others, could you explain how you set up Parsec to do global order (“serialization”) only?

In other words, voters Alice Bob Carol Dave Eric will at their own discretion add events (for simplicity, a string or a binary blob) to the DAG. Parsec is used only to provide a globally agreed on order of these events.

So basically,

var parsec = new ParsecWithTheGuys(); // All of A B C D E run this, it sets them up.

myGossipEvent = { message: “BINARY BLOB HERE” };
parsec.post(myGossipEvent); // Blocks until Parsec produced a global order

println(myGossipEvent.globalorder); // Will tell at what position in the global order Parsec is. This is such that a supermajority of A B C D E will in this moment agree that this is the one and final global order number of myGossipEvent. Those who don’t agree only don’t agree YET and do so because they lag or are byzantine.

println(parsec.allFinalizedEvents); // Will print out all events that this node knows of as being finalized, with both global order number and content. This also will be produced the same by all of A B C D E, except for if someone is lagging behind in which case this myGossipEvent’s number height will not be reached anyhow

Would you say that this is the primary use of Parsec, or one use of Parsec?

If it’s one use of Parsec, then is this a central or peripheral/unimportant use?

Thanks for your clarifications :slightly_smiling_face:


Lots of this topic should probably end up in documentation.


Hi Loziniak, right, this is also why I ask these questions here publicly, that hopefully they function as a kind of brainstorm-checklist for anyone who will write Parsec documentation later. Ok I hope @pierrechevalier83 @Fraser @AndreasF can have the time to inform what about the last point, soon. As Pierre and others point out, the realities of “consensus science” are a bit different from what they may seem from outside, this is also why I pass some common sense questions like this, even if I may have a maybe-educated-guess already in a given question, having these suppositions confirmed by the experts here is invaluable, even just for such a basic objective as understanding what Parsec is and what problems it’s great at solving. :+1:


As long as they aren’t taken off their Dev jobs, I don’t have any issues, so it doesn’t detract from the release schedule. Perhaps during their toilet break

1 Like

@pierrechevalier83 and @AndreasF no longer work for Maidsafe, so no worries about distracting them :joy: [kidding]. It is a credit to Pierre that he has been answering at all after starting a new job!


Fraser is also off this month. He is finishing some holidays and will still be around, but will not be working as part of the maidsafe team. Well officially anyway, we will potentially see him and others later on in the game. He still has his seat in the office though and still has work to do with the foundation.


Why was this not mentioned in the update? I think its important to communicate if empoyees are leaving…

Why is there a requirement to announce ALL holidays by people?

Who is leaving?

@Fraser apparently if you read above post from David. No requirement to mention all holidays but if one of the core devs are off for a month , then it would be nice to know right? maybe you dont need to know but others might care more.

Wait until we are at 200 or so then we will have leavers every week almost. Fraser’s a quiet guy and does not need the publicity. He is sticking around and was a friend before joining and after (we worked the lifeboat together) , but he is entitled to try new things. He will and I wish him luck.


Yes maybe bad wording as if could have been taken as off on holidays for this month

So I gather it should have been read by me as leaving after this month


Sorry, @neo Fraser has resigned, I should have been clear. He will be around and possibly at the next devcon. He has a chance at a new thing just now though and has chosen to make the change. So he has resigned from maidsafe but not from the community and the project. Like the other guys, he still wants us to succeed.


Always sad to hear people leave and @Fraser was such a nice guy and well nature and has been around for so long, like a part of the foundation of the project itself. See ya @Fraser and hope all goes well with you in your new venture


All good, I just struggle to understand why, Nick, Pierre, Fraser, Viv, and others would decide to resign if they are so close to making it to the history books with Maidsafe. Maybe we dont know the whole story. PS. is there any more news regarding staff leaving? Adam- madadam is not active in github for 2 weeks, also one of the core devs, also Bart is not active 1 week -I just hope there is no bad news regarding them also.

None of us do and I suppose it is personal to them. We do HR exit interviews but I have not sought to find out exactly why they left as I am way to busy and think it is personal.

Good grief man, he has a new child and wanted to actually go on holiday. Even that is way way too much personal info dude.

During the holiday season he went and took a holiday, I think some other staff members might actually do that as well. Really @starsmick with all your time on github, do a PR to help and not try and work out who is working. You know most of the routing team had almost zero commits for a year or so while they were working on consensus.

Since taking over as CTO as I had to, we implemented the project and planning etc. I have been very clear I wanted commitment and dedication but in return would provide direction, focus and motivation. That way we launch or at least do the best we can. So get the team happy and positive, that works. Focus on the dark side will turn you man.


I just want answers, really happy that all is good and other devs are staying, and they take some time off, and will get back fresh to finish all the pieces left.

1 Like