The core concept has always been accept the largest blockchain that passes the predetermined proof of work tests. Hard forks like the one that occurred in March happen as a result of some software in the p2p ecosystem having a different understanding of what the legitimate blockchain should be. This reality is ok with all distributive networks to some extent and usually gets resolved rather quickly and in many cases autonomously
Yet march was special in that the 0.8 clients could never agree with the 0.7 clients due an issue processing a larger than normal transaction volume, but 0.7 clients still had 60% or so of the total hash power. In essence the network had two different legitimate bitcoins floating about. Your question was who got to decide which one was the legitimate chain and what happened to the coins?
BTCGuild and Slush got to decide as they collectively control over 51% of the network's hash power. And also some people had to accept that the blocks in the orphan fork had to be lost for the good of Bitcoin. It isn't necessarily fair. It isn't fun. But Gavin and others handled it both quickly and transparently.
The next time there's a fork like this, it may not be so
straightforward. The miners may not all agree on the proper resolution
for the issue.
This is a valid concern and is something we accept as a community to be an issue. Generally speaking people tend to be self-interested and miners have a vested interest in preserving the value of Bitcoin. Thus always assume behavior will be economically motivated as Satoshi did in his paper discussing honest nodes.
Is there any documented set of rules (bye-laws) explaining how such
forks are to be resolved in the future?
No and there will never be because that implies an organization asserts the right to prescribe behavior in the community, which defeats the whole point of having a decentralized p2p currency. Only when pool operators decide to group up with more than 51% hash power can they make decisions for Bitcoin. This rarely happens unless an event like March occurs that could damage the integrity of the entire system
If there's a conflict among the parties involved, who has the final
say?
Whoever has 51% hash power.
PS: Any comments on Bitcoin's so-called (faux) "decentralized"
architecture are also welcome, given my other question has been
censored. The decentralization doesn't seem to work after all, which
begs the question as to what the whole point of the proof-of-work
scheme is anyway.
I've been censored as well and no bitcoin is currently not decentralized as envisioned. I mention this in my Bitcoin course using the notion of oligarchiness as a measure of central control. There are a handful of very influential people currently developing and maintaining the bitcoin ecosystem. They have a dramatic say in how the money works and the software to use it. Over time as more actors enter the marketplace and nation states begin to use Bitcoin, this will be reduced until eventually no one party has control.
Remember that at one time Satoshi had 100% of all bitcoins in circulation and the software running the network. We have made wonderful strides over the past 4 years and will continue to do so over the next 4 years.
1"I think you mistake consensus for centralization." How does one achieve consensus among a million nodes without deferring to a few (elected) representatives? By that logic, all currency issued by a democratically elected government is decentralized. It's "decentralized plus consensus," you might say, and (oh!) it can always be forked. That makes Bitcoin no different. – Manish – 2013-04-20T10:35:53.333
2Well if no consensus can be reached (by whatever means), then the default is that the rules stay the same. If people refuse the change their software, perhaps by disagreeing with what their 'elected representatives' decided, and even if they are a minority, then moving forward with a change is suicide for the system. And as the system matures, the need for changes to the rules will hopefully decrease as well. – Pieter Wuille – 2013-04-20T11:22:19.293
You're right, of course, but the same could be achieved with a more honest centralized-but-distributed design. People could still fork the ledger if they didn't like the rules. Advantages: no 51% attack, faster transaction processing, energy-efficient, etc. It's not clear what is achieved by Bitcoin's proof-of-work other than to give the false appearance of being decentralized. – Manish – 2013-04-22T14:21:58.483
"... then moving forward with a change is suicide for the system." This is an article of faith in the Bitcoin community. Real life experience with fiat currencies suggests otherwise. If the US Federal Reserve printed any more money, it would be "suicide for the system," but alas no one really cares (more interested in Kim Kardashian). No one cared when Nixon went off gold in 1971. http://en.wikipedia.org/wiki/Nixon_Shock
– Manish – 2013-04-22T14:30:17.237@Manish not sure why you're taking such an antagonistic tone--people are here to answer questions about Bitcoin, not to "defend it". Nonetheless I think even a quick glance through the development mailing list will show that there's no one in the Bitcoin community with power at all approaching that of a central government. Specifically with the March 2014 fork you'll note that Gavin's first suggestion wasn't the ultimate course of action. But consensus in the face of a glitch is easy. More important is the fact that despite multiple clients and four years of development, the only hard forks – eMansipater – 2013-04-22T18:52:44.933
have been due to glitches. Bitcoin is distributed precisely because the technology is stable enough not to need regular decisions from the community about who to follow. Any significant technical change would require something Nixon never had--an advance supermajority of consensus. Otherwise no would care about a proposed change in the first place, and no one would bother downloading any new client which implemented it because the change is too controversial. The community trusts developers to fix glitches, not make radical protocol changes. – eMansipater – 2013-04-22T18:57:19.943
"... then moving forward with a change is suicide for the system.". I don't mean this in the political sense. It's economic suicide for a currency if every coin can suddenly be spent twice, once on each side of a fork. – Pieter Wuille – 2013-04-24T21:06:56.117
What baffles me is that in all technical explanations I read so far its said that the longest blockchain is automatically accepted. But in reality this doesn't seem to be the case, right? So when the protocol says to automatically accept the longest blockchain but in reality it doesn't happen, doesn't that mean that the protocol is not fully implemented at this point? – Mark – 2013-11-21T08:49:30.210
1The rule is that the longest valid blockchain is accepted. A hard fork is when for some reason (usually unintentionally) two sets of nodes disagree about what is valid. – Pieter Wuille – 2013-11-21T19:21:55.193