Post
Topic
Board Bitcoin Discussion
Re: In re Bitcoin Devs are idiots
by
alexkravets
on 12/03/2013, 05:33:09 UTC
Another way to state the real problem: There is no Bitcoin Protocol Spec, most semantics buried in the hairball of the C++ reference implementation
This was actually a good example of something a spec wouldn't help (though would still be good to have). The inconsistent behavior here arose out of 0.8 not faithfully implementing some implicit behavior in BDB. The behavior in question is not anywhere in the Bitcoin code itself, nor is it visible at the interface of BDB and Bitcoin.  If there were a spec it would make no mention of it— and yet the network would be broken all the same.

The key thing is that in a distributed consensus system the most important definition of right is "consistent", this is paramount to all other concerns. A spec is helpful to the extent that it makes it easier to achieve a bit identical consistent behavior in the validation of blocks across all nodes, but because the spec itself can't be executed a spec can never guarantee consistency, at least not in the real world. (well, unless the spec is code— which is effectively what we have, for worse or better)


I respectfully disagree.  

A real protocol specification would enable a whole ecosystem of alternative and interoperable implementations to appear in Scala, Java, Go, C, etc.  

These implementations would NOT use the same flawed 3rd party libraries and there would be a real diversity in Bitcoin land, instead of the monoculture of C++ with all of its "magic" and "folklore".

Once no individual implementation had large enough fraction of the hash rate, then such forks would NOT occur, instead, bugs in a given implementation would only affect some miners, merchants & users but the chain would be just fine.

Let us hope and pray that eventually there will be some effort ( funded perhaps by the Bitcoin Foundation ) to extract and publish such a spec from the C++ hairball formal enough for viable alternative implementations to appear and to interoperate.


Cheers ...