top | item 18460601

Why we rolled our own consensus algorithm

63 points| QCSmello | 7 years ago |quorumcontrol.com | reply

43 comments

order
[+] sagichmal|7 years ago|reply
Not rolling your own consensus algorithm is approx. rules zero through ten of distributed systems programming. Nothing on this page provides any positive signal indicating unique (or even average) competence to the task. To wit,

> We are borrowing all the best parts of existing technology and combining them in a unique and innovative way.

To the best of my knowledge, none of the listed existing technologies have been formally verified.

[+] eloff|7 years ago|reply
This seems like a really, really bad idea.

However, if everyone had that attitude we'd never improve on the existing art. So I'm glad some people are willing to risk it.

But just to reiterate, if you're thinking of rolling your own consensus - or even implementing an existing consensus algorithm yourself (although that's much worse for Paxos than for Raft) - you're almost certainly making a big mistake.

[+] kenhwang|7 years ago|reply
Hell, people even have a hard time correctly implementing the handful of provably correct consensus algorithms that already exist. Just look through the issues section of every raft implementation.
[+] zonotope|7 years ago|reply
We completely agree with you that, in general, you don't want to attempt to create an entirely new consensus mechanism. As you know, there are generally only 2 (perhaps 3) broad categories of byzantine tolerant consensus that boil down to PBFT and Nakamoto consensus. Ours is a flavor of PBFT designed to reduce message complexity. We also draw from Casper in order to get the incentives and game theory right which would not be considered part of the consensus algorithm traditionally, but must be considered in the DLT space. We're not really reinventing the wheel but rather adapting some interesting research to new problem set (which is consensus, without total ordering). We also plan on fully vetting and formally verifying our implementation before we move into production.
[+] cdiddy2|7 years ago|reply
I believe bitcoins proof of work has been formally verified, however I can't find a source for that.

There is also this https://iohk.io/research/papers/#9BKRHCSI that claims to be formally verified Proof of Stake.

[+] davidgerard|7 years ago|reply
Existing blockchain technologies. Historical knowledge is a mere speedbump on the path to number go up.
[+] hinkley|7 years ago|reply
The best feedback you ever get as a library maintainer is the population count of questions.

If everyone asks you the same question, you’re the one who’s wrong, not everyone else.

If everyone is asking you why you did it, you probably shouldn’t have done it.

[+] elfakyn|7 years ago|reply
This sounds like a terrible idea. Similarly to implementing your own encryption, having a custom consensus algorithm can create additional vulnerabilities -- a custom consensus algorithm isn't as tested and vetted as an existing, widely-used one.

In security, you generally don't want "unique and innovative", you want tested, verified, robust algorithms that have been gone over with a fine-toothed comb.

[+] newprint|7 years ago|reply
Any formal verification of you Algo ? Consensus algos are hard to implement correctly.
[+] zonotope|7 years ago|reply
We're planning on formally verifying the algorithm once it stabilizes.
[+] polskibus|7 years ago|reply
Is there a TLA+ spec available?
[+] zonotope|7 years ago|reply
We are still vetting and improving the consensus algorithm, but we're planning on publishing a full TLA+ spec once the algorithm stabilizes.
[+] maa5444|7 years ago|reply
because your ws is called quorum control ?
[+] ggggtez|7 years ago|reply
TL;DR: This is an announcement that they didn't actually do anything yet. (algorithm not yet fully decided on, just buzzword soup).
[+] davidgerard|7 years ago|reply
I believe Quorum is the Ethereum variant that JP Morgan developed in-house and considered "spinning off" to the community, i.e. abandoned but on github. Not clear if JPM are still paying devs to work on it.
[+] romed|7 years ago|reply
A: Because we don't have a lot of experience in distributed systems.