News for hackers. Stuff that matters.
Re:Why we rolled our own consensus algorithm by sagichmal on Thursday November 15, 2018 @12:00PM (#18460954)
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.

Re:Why we rolled our own consensus algorithm by eloff on Thursday November 15, 2018 @01:00PM (#18461570)
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.

Re:Why we rolled our own consensus algorithm by zzzcpan on Thursday November 15, 2018 @01:36PM (#18461923)
If you have enough background in distributed systems to choose a consensus algorithm you are definitely capable of implementing one yourself and even invent your own. It's not a bad idea either, most existing consensus-based systems are absolute garbage. People just hugely overestimate how much those algorithms matter for production systems.

EDIT: Note, I'm not talking about blockchains and byzantine fault tolerance, but in context of Paxos/Raft.

Re:Why we rolled our own consensus algorithm by eloff on Thursday November 15, 2018 @01:46PM (#18462030)
That's like saying if you have some crypto background you can implement your own crypto library. It's TERRIBLE advice.

Read the Google paper on their chubby distributed locking system using paxos. They had a hard time getting it right - unless you think you're so much better than them. IIRC Leslie Lamport works (worked?) for them.

Use an existing, well used, well scrutinized implementation of a known algorithm.

Re:Why we rolled our own consensus algorithm by kjeetgill on Thursday November 15, 2018 @01:52PM (#18462070)
Are you sure? I thought Lamport has been at Microsoft Research since forever.
Re:Why we rolled our own consensus algorithm by therein on Thursday November 15, 2018 @03:08PM (#18462824)
You're correct. Lamport has joined MSR in 2001 right after publishing "Time, Clocks, and the Ordering of Events in a Distributed System" and has been there ever since.

I am not sure if he is still at the MV office but he was one of the reasons why MSR kept a presence in MV for a while.

Re:Why we rolled our own consensus algorithm by lou1306 on Thursday November 15, 2018 @08:03PM (#18465222)
Actually "Time, Clocks..." is a paper from the late 70s. Maybe you were thinking of the Paxos paper, "The Part-Time Parliament" (1998)?
Re:Why we rolled our own consensus algorithm by therein on Thursday November 15, 2018 @08:56PM (#18465606)
Yeah, copy-pasted the wrong title and by the time I noticed, it was too late to edit. :)
Re:Why we rolled our own consensus algorithm by eloff on Thursday November 15, 2018 @04:20PM (#18463462)
Ah the vagaries of the human memory.
Re:Why we rolled our own consensus algorithm by apersona on Thursday November 15, 2018 @04:03PM (#18463287)
If you're a normal software engineer, I agree, you shouldn't implement it yourself.

But if you're a researcher/had a CS research background, I don't see why not. By definition research results in novel approaches (ideally better) than the current ones. You have to be willing to challenge the consensus.

PhD students who can prove that their algs work should work on it, like the results of this paper: https://raft.github.io

Re:Why we rolled our own consensus algorithm by dlubarov on Thursday November 15, 2018 @01:54PM (#18462090)
> Use an existing, well used, well scrutinized implementation of a known algorithm.

Keep in mind that this is BFT consensus. Until recently, it was a niche area of research with very little real world usage. Even if an existing algorithm like PBFT met their needs, there are no well tested PBFT libraries.

Re:Why we rolled our own consensus algorithm by drfuchs on Thursday November 15, 2018 @02:50PM (#18462650)
No, Lamport does not now, and never has, worked at Google.
Re:Why we rolled our own consensus algorithm by cremp on Thursday November 15, 2018 @01:32PM (#18461885)
Just to drive it home.

Those who actually make their own encryption libraries know their stuff, and have been in the space for years.

You should never, ever, roll your own encryption.

If it's a requirement, then change your damn requirements, because just like consensus; it is not easy to get right, and the pros make mistakes.

Re:Why we rolled our own consensus algorithm by zzzcpan on Thursday November 15, 2018 @01:41PM (#18461980)
Consensus is not crypto, it's ridiculously trivial in comparison and usually so useless, that nobody even bothers doing it correctly all the way to the end user.
Re:Why we rolled our own consensus algorithm by sagichmal on Friday November 16, 2018 @07:29PM (#18473077)
Consensus is at least as hard as crypto.
Re:Why we rolled our own consensus algorithm by bradhe on Thursday November 15, 2018 @02:27PM (#18462401)
bingo.
Re:Why we rolled our own consensus algorithm by dlubarov on Thursday November 15, 2018 @08:02PM (#18465220)
I think it's worth distinguishing a few cases here:

1. Reimplementing an existing cryptographic primitive, such as SHA-256.

2. Inventing a new cryptographic primitive, with a reduction to existing cryptographic assumptions, and implementing it. A recent example is SPHINCS-256, which was proven secure in the random oracle model.

3. Postulating a new cryptographic hardness assumption, inventing a new cryptographic primitive based on it, and implementing it. Recent examples are IOTA's Curl hash function and StarkWare's Jarvis cipher.

#1 is risky, but at least the risk can be mitigated by having qualified peers review the implementation. #2 is riskier, but still, it can be mitigated by having qualified peers review the proof. #3 seems far more dangerous, since it involves conjecture.

What the Tupelo team is doing is like #2 -- risky, yes, but not comparable to #3.

Re:Why we rolled our own consensus algorithm by kenhwang on Thursday November 15, 2018 @03:12PM (#18462844)
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.
Re:Why we rolled our own consensus algorithm by zonotope on Thursday November 15, 2018 @01:46PM (#18462024)
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.
Re:Why we rolled our own consensus algorithm by lifty on Thursday November 15, 2018 @03:16PM (#18462874)
There is a new consensus algorithm called Avalanche, which apparently starts a new, 3rd category. You can read the white paper here: https://ipfs.io/ipfs/QmUy4jh5mGNZvLkjies1RWM4YuvJh5o2FYopNPV...
Re:Why we rolled our own consensus algorithm by nybble41 on Friday November 16, 2018 @03:24PM (#18471688)
Avalanche looks interesting, but there doesn't seem to be anything in the white paper to suggest how they plan to deal with Sybil attacks. Their safety guarantees are dependent on the number of Byzantine nodes in the network, but what prevents a single attacker from simulating a large number of independent nodes (e.g. with VMs, or a botnet) and exceeding that limit? Can a minority of correct nodes continue to function safely despite a hostile Byzantine majority?
Re:Why we rolled our own consensus algorithm by Geee on Thursday November 15, 2018 @05:51PM (#18464229)
From a quick glance, isn't this somewhat similar to what Nano is doing? Nano does balance-weighed voting on conflicting blocks via gossip until the network arrives at consensus. https://nano.org/en/whitepaper
Re:Why we rolled our own consensus algorithm by tobowers on Thursday November 15, 2018 @03:42PM (#18463087)
Absolutely. That’s the “perhaps 3” part of the above. Avalanche is really interesting. Can’t wait to see Ava.
Re:Why we rolled our own consensus algorithm by davidgerard on Thursday November 15, 2018 @01:49PM (#18462045)
So what's your system's threat model?

What will this achieve that a centralised database and existing legal structures and agreements won't?

(Assume I know the area and you can go into depth. However, remarkable claims will need a production system - anyone can and does claim anything's coming in "six months, for sure" - and an explanation of how you've achieved something that your many, many competitors haven't.)

Re:Why we rolled our own consensus algorithm by cdiddy2 on Thursday November 15, 2018 @01:30PM (#18461873)
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.

Re:Why we rolled our own consensus algorithm by davidgerard on Thursday November 15, 2018 @01:47PM (#18462037)
Unless you're actually a computer scientist following the area ... all claims of solving the "blockchain trilemma" - decentralisation, security and efficiency - should be ignored unless and until they have an implementation to show you, and it survives the hostile Internet.

Promises are cheap.

e.g. IOHK is behind Cardano/ADA, which has a marvellous white paper making all sorts of mathematical promises ... and still runs off a central node.

In this case, it appears to be a system for private blockchains, i.e. a system with central administration. All "consensus" algorithms in this case are variants on taking turns - further elaboration is security theatre, given that attacking the system to that extent would go well beyond the legal agreements to be allowed to participate in the first place.

Re:Why we rolled our own consensus algorithm by cdiddy2 on Thursday November 15, 2018 @02:17PM (#18462292)
Luckily I am a computer scientist however it is extremely hard to keep up with everything going on in the blockchain space.

There must be some validity behind the idea of weighted random turn-taking though since it is similar to how the next version(serenity) of ethereum will work based

Re:Why we rolled our own consensus algorithm by AgentME on Thursday November 15, 2018 @04:26PM (#18463518)
I think the difference is how they choose whose turn it will be next. There's a big difference between a central authority picking people to take turns, and what Ethereum is working on.
Re:Why we rolled our own consensus algorithm by davidgerard on Thursday November 15, 2018 @12:37PM (#18461346)
Existing blockchain technologies. Historical knowledge is a mere speedbump on the path to number go up.