<story><title>The truth about the Bitcoin Foundation</title><url>https://bitcoinfoundation.org/forum/index.php?/topic/1284-the-truth-about-the-bitcoin-foundation/</url></story><parent_chain><item><author>patio11</author><text>&lt;a href=&quot;http:&amp;#x2F;&amp;#x2F;bitcoinstats.com&amp;#x2F;irc&amp;#x2F;bitcoin-dev&amp;#x2F;logs&amp;#x2F;2013&amp;#x2F;03&amp;#x2F;11&quot; rel=&quot;nofollow&quot;&gt;http:&amp;#x2F;&amp;#x2F;bitcoinstats.com&amp;#x2F;irc&amp;#x2F;bitcoin-dev&amp;#x2F;logs&amp;#x2F;2013&amp;#x2F;03&amp;#x2F;11&lt;/a&gt;
&lt;a href=&quot;http:&amp;#x2F;&amp;#x2F;bitcoinstats.com&amp;#x2F;irc&amp;#x2F;bitcoin-dev&amp;#x2F;logs&amp;#x2F;2013&amp;#x2F;03&amp;#x2F;12&quot; rel=&quot;nofollow&quot;&gt;http:&amp;#x2F;&amp;#x2F;bitcoinstats.com&amp;#x2F;irc&amp;#x2F;bitcoin-dev&amp;#x2F;logs&amp;#x2F;2013&amp;#x2F;03&amp;#x2F;12&lt;/a&gt;&lt;p&gt;The incident begins at 22:11.  If you don&amp;#x27;t trust my summary of it, and you consider yourself very, very well-briefed on what Bitcoin is doing under the hood and who the players are in the Bitcoin community, just read the next ~12 hours of logs.  It&amp;#x27;s absolutely riveting.&lt;p&gt;My summary:&lt;p&gt;The Bitcoin protocol doesn&amp;#x27;t exist.  The only protocol which matters is the actual behavior of the Bitcoin Core client -- the one originally coded by Satoshi, which forms a supermajority of the network.  Bitcoin Core released version 0.8 on or about March 11, 2013.  This differed from Bitcoin Core 0.7 in at least one respect, which was that 0.7 used Berkeley DB and 0.8 did not.&lt;p&gt;BDB has a configuration issue, specifying the maximum number of locks it can use at once.  If you attempt to use more, it returns an error.&lt;p&gt;Here&amp;#x27;s one reason I say the Bitcoin Protocol doesn&amp;#x27;t exist: No sane person says &amp;quot;An important feature of the Bitcoin Protocol is that conforming clients MUST REJECT any Bitcoin transaction which would exhaust the default number of locks available to the Berkeley DB.&amp;quot;&lt;p&gt;Someone submitted a Bitcoin transaction which did, in fact, exhaust the number of locks available to the Berkeley DB.  It was conformant with all the rules that Bitcoiners believe transactions have to be conformant with &lt;i&gt;except&lt;/i&gt; that bit about the lock limit in the Berkeley DB.  This transaction was accepted by a miner running the 0.8 software.&lt;p&gt;Let&amp;#x27;s, for convenience, call the blockchain as it existed prior to that block being mined Blockchain B.  The blockchain with that block in it is B&amp;#x27;.&lt;p&gt;Bitcoin Core 0.7 rejected the authenticity of B&amp;#x27;.  Accordingly, when 0.8 nodes said &amp;quot;I have a new block to publish!  It checks out and builds off of the-present-head-of-B&amp;#x27;&amp;quot;, 0.7 nodes said &amp;quot;I don&amp;#x27;t know what that nonsense you&amp;#x27;re spouting is, but it sure isn&amp;#x27;t Bitcoin.&amp;quot;  Bitcoin Core 0.7 nodes and miners continued talking amongst themselves and building B up.&lt;p&gt;Bitcoin Core 0.8 nodes accept the authenticity of B&amp;#x27; and all blocks chained on top of it.  If you presented them with a block chained off of the head of B, they would say &amp;quot;Oops, sorry, sucks to be you -- someone already has a longer chain.  You&amp;#x27;ve created &lt;i&gt;a&lt;/i&gt; blockchain, but by the writ of Satoshi, we only do business with &lt;i&gt;the longest compliant&lt;/i&gt; blockchain, which is B&amp;#x27;.&amp;quot;&lt;p&gt;This is called a network split.  And it is, in laymen&amp;#x27;s terms, utterly cataclysmic.&lt;p&gt;Here&amp;#x27;s why: Suppose Mt. Gox runs on 0.7 and Coinbase runs on 0.8.  I can create a transaction which spends some output(s) $COIN and have it accepted into a B&amp;#x27; block.  Perhaps that transaction deposits my $COIN into Coinbase.  Since that transaction doesn&amp;#x27;t exist on B, I can then deposit &lt;i&gt;the same $COIN&lt;/i&gt; into Mt. Gox.  Both Mt. Gox and Coinbase believe themselves to be in possession of the same Bitcoin.&lt;p&gt;And both of them &lt;i&gt;are right&lt;/i&gt;.&lt;p&gt;Which is why after that channel figures out what is happening that &lt;i&gt;engineering gets real&lt;/i&gt;.  After discussions between several core developers they ascertain that the Bitcoin mining cabal behind B&amp;#x27; is small enough to get, well, &lt;i&gt;both&lt;/i&gt; of them on Skype and convince them to throw away hours of history on B&amp;#x27; (which is, again, built off the new-and-improved &lt;i&gt;bug free&lt;/i&gt; version of Bitcoin) and instead start building off of B instead.  Their history must die so that Bitcoin can live.&lt;p&gt;This plan is executed.  It works.&lt;p&gt;Read the chat transcript if you don&amp;#x27;t understand this: Bitcoin was virtually unusable during the interim -- most of the merchants people cared about turned off transactions entirely because they were, sensibly, scared shitless.  Several hours of transactional history got wiped out.  One security researcher &lt;i&gt;successfully executed a ~$10,000 double spend attack against a merchant&lt;/i&gt; -- he gave the money back afterwards.&lt;p&gt;Now, you tell me: how do you rate my credibility here versus your friend?  My assessment of this event is &amp;quot;Bitcoin has an identifiable governance structure.  You can fit them into an IRC channel +&amp;#x2F;- a few Skype sessions.  They can independently decide to change the rules of the &amp;#x27;Bitcoin protocol&amp;#x27; a) at will b) retroactively.  I cannot reconcile this with claims that Bitcoin is &amp;#x27;does not require trust&amp;#x27; or is &amp;#x27;decentralized.&amp;#x27;&amp;quot;</text></item><item><author>swombat</author><text>Would be interesting to see Patrick&amp;#x27;s answer to the above, particularly the first point... I pinged the tweetstorm to a friend of mine who&amp;#x27;s knowledgeable about Bitcoin and he seemed to feel Patrick was, erm, not particularly believable on this topic.&lt;p&gt;For example, on the first point:&lt;p&gt;&lt;i&gt;this is akin to saying the bit torrent foundation closed down bit torrent! waah!&lt;/i&gt;&lt;p&gt;&lt;i&gt;it&amp;#x27;s impossible&lt;/i&gt;&lt;p&gt;&lt;i&gt;once they released the reference implementation, it was out of their hands&lt;/i&gt;&lt;p&gt;&lt;i&gt;this is the beauty of open sourced and decentralised technology, once it&amp;#x27;s out there it&amp;#x27;s difficult to control&lt;/i&gt;&lt;p&gt;&lt;i&gt;the analogy would be Linus going batshit mad and deciding to include binary blob drivers provided by the NSA in the kernel mainline, fine - nobody will use it, business continues as usual using a fork before that and he becomes irrelevant&lt;/i&gt;</text></item><item><author>0xFEED</author><text>There&amp;#x27;s a number of things in that which aren&amp;#x27;t totally correct.&lt;p&gt;&amp;gt; &lt;i&gt;No, seriously, the decentralized nobody-needs-to-trust-anybody payments network &lt;/i&gt;was shut down by an IRC channel&amp;#x27;s consensus* for 8 hrs.*&lt;p&gt;It wasn&amp;#x27;t &amp;quot;shut down&amp;quot; in any sense of the word, the network kept working (in duplicate, no less). It was the decision of two pool owners with extraordinary hashrates to sacrifice their chain (which was actually the &amp;quot;correct&amp;quot; one as far as intentions go), rather than the core developers. Nobody has some magic key to shut down the network (though originally, Satoshi&amp;#x27;s alert key did enable a &amp;quot;safe mode&amp;quot;, this is long gone)&lt;p&gt;&amp;gt; &lt;i&gt;Bitcoin is not a protocol in any meaningful sense of word. It is a single C++ codebase that you have to be bug-for-bug compatible with.&lt;/i&gt;&lt;p&gt;That&amp;#x27;s the reality of distributed consensus. Matching it bug for bug is completely foolhardy (and many have failed at the task), you should be just linking in the consensus library which is currently being broken out of the bitcoin core source.&lt;p&gt;&amp;gt; &lt;i&gt;Most advantages of Bitcoin which matter are captured by, and improved upon by, a LAMP app which simply holds account balances.&lt;/i&gt;&lt;p&gt;Except for the key one, that a LAMP setup running on a shared host isn&amp;#x27;t a distributed consensus. You could replace your car with a hamster wheel and it would still go round and round, but it&amp;#x27;s missing the core function of getting you to work.&lt;p&gt;&amp;gt; &lt;i&gt;Bitcoin presently costs on the order of $6.5k per megabyte of data added to the block chain.&lt;/i&gt;&lt;p&gt;Which is why signatures are made with ECDSA, a very compact signature system compared with lamport or RSA. You don&amp;#x27;t want to be storing data in the block chain, and it&amp;#x27;s never been posited to be good for this (quite the opposite).&lt;p&gt;&amp;gt; &lt;i&gt;Time between Bitcoin blocks is not guaranteed (follows a Poisson distribution). Sometimes all pending transactions just stop for a while&lt;/i&gt;&lt;p&gt;This isn&amp;#x27;t at all surprising, if they were regular then Bitcoin wouldn&amp;#x27;t be a functioning distributed consensus. You can get near instant, low trust &amp;quot;confirmations&amp;quot; by using a multisignature oracle which promises not to sign double spends. There&amp;#x27;s at least one company doing this at the moment, though it hasn&amp;#x27;t seen huge adoption.</text></item><item><author>davidw</author><text>I&amp;#x27;m reminded of: &lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;twitter.com&amp;#x2F;patio11&amp;#x2F;status&amp;#x2F;583696870704152576&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;twitter.com&amp;#x2F;patio11&amp;#x2F;status&amp;#x2F;583696870704152576&lt;/a&gt;</text></item></parent_chain><comment><author>maaku</author><text>&amp;gt; They can independently decide to change the rules of the &amp;#x27;Bitcoin protocol&amp;#x27; a) at will b) retroactively. I cannot reconcile this with claims that Bitcoin is &amp;#x27;does not require trust&amp;#x27; or is &amp;#x27;decentralized.&amp;#x27;&amp;quot;&lt;p&gt;&lt;i&gt;Sigh&lt;/i&gt;. Your post was a great up until the very end.&lt;p&gt;Bitcoin developers can&amp;#x27;t push any rules on anybody. They haven&amp;#x27;t the power.&lt;p&gt;A majority of bitcoin hashpower can enforce a strictly stronger set of validation rules, as indeed happened here. Is it a problem that a very small number of individuals represent policy for &amp;gt;50% of the bitcoin hash rate? Yes. Is this intrinsic to the nature of bitcoin? No. And it&amp;#x27;s something that people are working to fix.&lt;p&gt;Can a majority of hashpower arbitrarily rewrite history? Yes, but only with a very real opportunity cost to themselves. And that is the rules of bitcoin since the beginning -- although in reality people would probably choose to reject a long reorg. Some level of human intervention is a good thing.</text></comment>
<story><title>The truth about the Bitcoin Foundation</title><url>https://bitcoinfoundation.org/forum/index.php?/topic/1284-the-truth-about-the-bitcoin-foundation/</url></story><parent_chain><item><author>patio11</author><text>&lt;a href=&quot;http:&amp;#x2F;&amp;#x2F;bitcoinstats.com&amp;#x2F;irc&amp;#x2F;bitcoin-dev&amp;#x2F;logs&amp;#x2F;2013&amp;#x2F;03&amp;#x2F;11&quot; rel=&quot;nofollow&quot;&gt;http:&amp;#x2F;&amp;#x2F;bitcoinstats.com&amp;#x2F;irc&amp;#x2F;bitcoin-dev&amp;#x2F;logs&amp;#x2F;2013&amp;#x2F;03&amp;#x2F;11&lt;/a&gt;
&lt;a href=&quot;http:&amp;#x2F;&amp;#x2F;bitcoinstats.com&amp;#x2F;irc&amp;#x2F;bitcoin-dev&amp;#x2F;logs&amp;#x2F;2013&amp;#x2F;03&amp;#x2F;12&quot; rel=&quot;nofollow&quot;&gt;http:&amp;#x2F;&amp;#x2F;bitcoinstats.com&amp;#x2F;irc&amp;#x2F;bitcoin-dev&amp;#x2F;logs&amp;#x2F;2013&amp;#x2F;03&amp;#x2F;12&lt;/a&gt;&lt;p&gt;The incident begins at 22:11.  If you don&amp;#x27;t trust my summary of it, and you consider yourself very, very well-briefed on what Bitcoin is doing under the hood and who the players are in the Bitcoin community, just read the next ~12 hours of logs.  It&amp;#x27;s absolutely riveting.&lt;p&gt;My summary:&lt;p&gt;The Bitcoin protocol doesn&amp;#x27;t exist.  The only protocol which matters is the actual behavior of the Bitcoin Core client -- the one originally coded by Satoshi, which forms a supermajority of the network.  Bitcoin Core released version 0.8 on or about March 11, 2013.  This differed from Bitcoin Core 0.7 in at least one respect, which was that 0.7 used Berkeley DB and 0.8 did not.&lt;p&gt;BDB has a configuration issue, specifying the maximum number of locks it can use at once.  If you attempt to use more, it returns an error.&lt;p&gt;Here&amp;#x27;s one reason I say the Bitcoin Protocol doesn&amp;#x27;t exist: No sane person says &amp;quot;An important feature of the Bitcoin Protocol is that conforming clients MUST REJECT any Bitcoin transaction which would exhaust the default number of locks available to the Berkeley DB.&amp;quot;&lt;p&gt;Someone submitted a Bitcoin transaction which did, in fact, exhaust the number of locks available to the Berkeley DB.  It was conformant with all the rules that Bitcoiners believe transactions have to be conformant with &lt;i&gt;except&lt;/i&gt; that bit about the lock limit in the Berkeley DB.  This transaction was accepted by a miner running the 0.8 software.&lt;p&gt;Let&amp;#x27;s, for convenience, call the blockchain as it existed prior to that block being mined Blockchain B.  The blockchain with that block in it is B&amp;#x27;.&lt;p&gt;Bitcoin Core 0.7 rejected the authenticity of B&amp;#x27;.  Accordingly, when 0.8 nodes said &amp;quot;I have a new block to publish!  It checks out and builds off of the-present-head-of-B&amp;#x27;&amp;quot;, 0.7 nodes said &amp;quot;I don&amp;#x27;t know what that nonsense you&amp;#x27;re spouting is, but it sure isn&amp;#x27;t Bitcoin.&amp;quot;  Bitcoin Core 0.7 nodes and miners continued talking amongst themselves and building B up.&lt;p&gt;Bitcoin Core 0.8 nodes accept the authenticity of B&amp;#x27; and all blocks chained on top of it.  If you presented them with a block chained off of the head of B, they would say &amp;quot;Oops, sorry, sucks to be you -- someone already has a longer chain.  You&amp;#x27;ve created &lt;i&gt;a&lt;/i&gt; blockchain, but by the writ of Satoshi, we only do business with &lt;i&gt;the longest compliant&lt;/i&gt; blockchain, which is B&amp;#x27;.&amp;quot;&lt;p&gt;This is called a network split.  And it is, in laymen&amp;#x27;s terms, utterly cataclysmic.&lt;p&gt;Here&amp;#x27;s why: Suppose Mt. Gox runs on 0.7 and Coinbase runs on 0.8.  I can create a transaction which spends some output(s) $COIN and have it accepted into a B&amp;#x27; block.  Perhaps that transaction deposits my $COIN into Coinbase.  Since that transaction doesn&amp;#x27;t exist on B, I can then deposit &lt;i&gt;the same $COIN&lt;/i&gt; into Mt. Gox.  Both Mt. Gox and Coinbase believe themselves to be in possession of the same Bitcoin.&lt;p&gt;And both of them &lt;i&gt;are right&lt;/i&gt;.&lt;p&gt;Which is why after that channel figures out what is happening that &lt;i&gt;engineering gets real&lt;/i&gt;.  After discussions between several core developers they ascertain that the Bitcoin mining cabal behind B&amp;#x27; is small enough to get, well, &lt;i&gt;both&lt;/i&gt; of them on Skype and convince them to throw away hours of history on B&amp;#x27; (which is, again, built off the new-and-improved &lt;i&gt;bug free&lt;/i&gt; version of Bitcoin) and instead start building off of B instead.  Their history must die so that Bitcoin can live.&lt;p&gt;This plan is executed.  It works.&lt;p&gt;Read the chat transcript if you don&amp;#x27;t understand this: Bitcoin was virtually unusable during the interim -- most of the merchants people cared about turned off transactions entirely because they were, sensibly, scared shitless.  Several hours of transactional history got wiped out.  One security researcher &lt;i&gt;successfully executed a ~$10,000 double spend attack against a merchant&lt;/i&gt; -- he gave the money back afterwards.&lt;p&gt;Now, you tell me: how do you rate my credibility here versus your friend?  My assessment of this event is &amp;quot;Bitcoin has an identifiable governance structure.  You can fit them into an IRC channel +&amp;#x2F;- a few Skype sessions.  They can independently decide to change the rules of the &amp;#x27;Bitcoin protocol&amp;#x27; a) at will b) retroactively.  I cannot reconcile this with claims that Bitcoin is &amp;#x27;does not require trust&amp;#x27; or is &amp;#x27;decentralized.&amp;#x27;&amp;quot;</text></item><item><author>swombat</author><text>Would be interesting to see Patrick&amp;#x27;s answer to the above, particularly the first point... I pinged the tweetstorm to a friend of mine who&amp;#x27;s knowledgeable about Bitcoin and he seemed to feel Patrick was, erm, not particularly believable on this topic.&lt;p&gt;For example, on the first point:&lt;p&gt;&lt;i&gt;this is akin to saying the bit torrent foundation closed down bit torrent! waah!&lt;/i&gt;&lt;p&gt;&lt;i&gt;it&amp;#x27;s impossible&lt;/i&gt;&lt;p&gt;&lt;i&gt;once they released the reference implementation, it was out of their hands&lt;/i&gt;&lt;p&gt;&lt;i&gt;this is the beauty of open sourced and decentralised technology, once it&amp;#x27;s out there it&amp;#x27;s difficult to control&lt;/i&gt;&lt;p&gt;&lt;i&gt;the analogy would be Linus going batshit mad and deciding to include binary blob drivers provided by the NSA in the kernel mainline, fine - nobody will use it, business continues as usual using a fork before that and he becomes irrelevant&lt;/i&gt;</text></item><item><author>0xFEED</author><text>There&amp;#x27;s a number of things in that which aren&amp;#x27;t totally correct.&lt;p&gt;&amp;gt; &lt;i&gt;No, seriously, the decentralized nobody-needs-to-trust-anybody payments network &lt;/i&gt;was shut down by an IRC channel&amp;#x27;s consensus* for 8 hrs.*&lt;p&gt;It wasn&amp;#x27;t &amp;quot;shut down&amp;quot; in any sense of the word, the network kept working (in duplicate, no less). It was the decision of two pool owners with extraordinary hashrates to sacrifice their chain (which was actually the &amp;quot;correct&amp;quot; one as far as intentions go), rather than the core developers. Nobody has some magic key to shut down the network (though originally, Satoshi&amp;#x27;s alert key did enable a &amp;quot;safe mode&amp;quot;, this is long gone)&lt;p&gt;&amp;gt; &lt;i&gt;Bitcoin is not a protocol in any meaningful sense of word. It is a single C++ codebase that you have to be bug-for-bug compatible with.&lt;/i&gt;&lt;p&gt;That&amp;#x27;s the reality of distributed consensus. Matching it bug for bug is completely foolhardy (and many have failed at the task), you should be just linking in the consensus library which is currently being broken out of the bitcoin core source.&lt;p&gt;&amp;gt; &lt;i&gt;Most advantages of Bitcoin which matter are captured by, and improved upon by, a LAMP app which simply holds account balances.&lt;/i&gt;&lt;p&gt;Except for the key one, that a LAMP setup running on a shared host isn&amp;#x27;t a distributed consensus. You could replace your car with a hamster wheel and it would still go round and round, but it&amp;#x27;s missing the core function of getting you to work.&lt;p&gt;&amp;gt; &lt;i&gt;Bitcoin presently costs on the order of $6.5k per megabyte of data added to the block chain.&lt;/i&gt;&lt;p&gt;Which is why signatures are made with ECDSA, a very compact signature system compared with lamport or RSA. You don&amp;#x27;t want to be storing data in the block chain, and it&amp;#x27;s never been posited to be good for this (quite the opposite).&lt;p&gt;&amp;gt; &lt;i&gt;Time between Bitcoin blocks is not guaranteed (follows a Poisson distribution). Sometimes all pending transactions just stop for a while&lt;/i&gt;&lt;p&gt;This isn&amp;#x27;t at all surprising, if they were regular then Bitcoin wouldn&amp;#x27;t be a functioning distributed consensus. You can get near instant, low trust &amp;quot;confirmations&amp;quot; by using a multisignature oracle which promises not to sign double spends. There&amp;#x27;s at least one company doing this at the moment, though it hasn&amp;#x27;t seen huge adoption.</text></item><item><author>davidw</author><text>I&amp;#x27;m reminded of: &lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;twitter.com&amp;#x2F;patio11&amp;#x2F;status&amp;#x2F;583696870704152576&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;twitter.com&amp;#x2F;patio11&amp;#x2F;status&amp;#x2F;583696870704152576&lt;/a&gt;</text></item></parent_chain><comment><author>0xFEED</author><text>&amp;gt; &lt;i&gt;Someone submitted a Bitcoin transaction which did, in fact, exhaust the number of locks available to the Berkeley DB.&lt;/i&gt;&lt;p&gt;You really need to get up to speed with the event before commenting on it, there&amp;#x27;s a very good writeup in the form of BIP50.&lt;p&gt;&lt;a href=&quot;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;bitcoin&amp;#x2F;bips&amp;#x2F;blob&amp;#x2F;master&amp;#x2F;bip-0050.mediawiki&quot; rel=&quot;nofollow&quot;&gt;https:&amp;#x2F;&amp;#x2F;github.com&amp;#x2F;bitcoin&amp;#x2F;bips&amp;#x2F;blob&amp;#x2F;master&amp;#x2F;bip-0050.mediawi...&lt;/a&gt;&lt;p&gt;The issue has nothing to do with a particular transaction or block, it was going to fail anyway and just happened to be triggered by a large block. The oversight meant that all 0.7 clients were inconsistent with &lt;i&gt;one another&lt;/i&gt; depending on the history of the node and how long it had been operating.&lt;p&gt;&amp;gt; &lt;i&gt;No sane person says &amp;quot;An important feature of the Bitcoin Protocol is that conforming clients MUST REJECT any Bitcoin transaction which would exhaust the default number of locks available to the Berkeley DB.&amp;quot;&lt;/i&gt;&lt;p&gt;Nobody did say that, the failure was implicit not explicit.&lt;p&gt;&amp;gt; &lt;i&gt;Several hours of transactional history got wiped out.&lt;/i&gt;&lt;p&gt;No it didn&amp;#x27;t, it was replaced with a slightly different history, or history remained the same, depending on which side  and which client you happened to be running at the time.</text></comment>