Hacker News new | ask | show | jobs
by orblivion 3768 days ago
I'm not speaking as someone familiar, so someone who is should superecede me. But, I understand that it was a goal from day one not to fall into the same trap Bitcoin is in with their reference implementation. They did it by developing a spec, and having three official clients developed at the same time in three different languages.
4 comments

Bitcoin's problem is not that it has a single reference implementation. It can be forked, at least in a technical sense.

Bitcoin's problem is that a tiny number of people managed to convince key players that they are irreplaceable "experts", despite having repeatedly proven that they aren't experts at all (go check out the Bitcoin forums today to see the wailing of users due to the giant tx backlog).

This isn't something Ethereum has any solution for. If Vitalik stepped back and after a few years some random developers had managed to manipulate the Ethereum community into doing something stupid, having 3 implementations instead of 1 wouldn't save them.

Pretty much sums it up. The majority of Bitcoin developers have always had the mindset that alternative consensus implementations will never be able to match, bug-for-bug, the reference implementation (and there is no official spec other than the reference implementation). Ethereum was developed with the mindset that having multiple implementations will help catch bugs in the official spec (yellow paper) before they are released.
Even still, AIUI the problem with Bitcoin is that a buggy implementation is capable of accidentally hard-forking the blockchain (as demonstrated by https://bitcoinmagazine.com/articles/bitcoin-network-shaken-... ). The existence of a protocol specification document alone wouldn't have prevented that. My question is whether Ethereum actually has some clever mechanism to ameliorate this threat, or whether it's just hoping that the existence of multiple implementations means that no one client ever gains more than 50% market share (and hence any hard-fork that results from an incompatible implementation wouldn't require a central authority to step in to determine which was the "true" chain).
Vitalik has actually said he now feels having three clients (written in go, c++, and python) was a mistake as it took up a lot of development energy in the early days.

Parity is actually not one of those three but was only recently created by Gavin Wood after he recently left EthDev. Gavin Wood was one of the principal authors of the C++ client.

He shared some of his thoughts on using Rust for the new client here: https://www.reddit.com/r/ethereum/comments/44y9vv/announcing...