Received: from sog-mx-1.v43.ch3.sourceforge.com ([172.29.43.191] helo=mx.sourceforge.net) by sfs-ml-2.v29.ch3.sourceforge.com with esmtp (Exim 4.76) (envelope-from ) id 1YqCmT-0006U6-AI for bitcoin-development@lists.sourceforge.net; Thu, 07 May 2015 03:47:25 +0000 Received-SPF: pass (sog-mx-1.v43.ch3.sourceforge.com: domain of gmail.com designates 209.85.217.169 as permitted sender) client-ip=209.85.217.169; envelope-from=pieter.wuille@gmail.com; helo=mail-lb0-f169.google.com; Received: from mail-lb0-f169.google.com ([209.85.217.169]) by sog-mx-1.v43.ch3.sourceforge.com with esmtps (TLSv1:RC4-SHA:128) (Exim 4.76) id 1YqCmR-0006br-9v for bitcoin-development@lists.sourceforge.net; Thu, 07 May 2015 03:47:25 +0000 Received: by lbbuc2 with SMTP id uc2so21736264lbb.2 for ; Wed, 06 May 2015 20:47:16 -0700 (PDT) MIME-Version: 1.0 X-Received: by 10.152.203.162 with SMTP id kr2mr1418292lac.68.1430970436773; Wed, 06 May 2015 20:47:16 -0700 (PDT) Received: by 10.112.19.7 with HTTP; Wed, 6 May 2015 20:47:16 -0700 (PDT) In-Reply-To: <554A91BE.6060105@bluematt.me> References: <554A91BE.6060105@bluematt.me> Date: Thu, 7 May 2015 05:47:16 +0200 Message-ID: From: Pieter Wuille To: Matt Corallo Content-Type: multipart/alternative; boundary=001a11346326916f47051575c45c X-Spam-Score: -0.6 (/) X-Spam-Report: Spam Filtering performed by mx.sourceforge.net. See http://spamassassin.org/tag/ for more details. -1.5 SPF_CHECK_PASS SPF reports sender host as permitted sender for sender-domain 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (pieter.wuille[at]gmail.com) -0.0 SPF_PASS SPF: sender matches SPF record 1.0 HTML_MESSAGE BODY: HTML included in message -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature X-Headers-End: 1YqCmR-0006br-9v Cc: Bitcoin Dev Subject: Re: [Bitcoin-development] Block Size Increase X-BeenThere: bitcoin-development@lists.sourceforge.net X-Mailman-Version: 2.1.9 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 07 May 2015 03:47:25 -0000 --001a11346326916f47051575c45c Content-Type: text/plain; charset=ISO-8859-1 On Thu, May 7, 2015 at 12:12 AM, Matt Corallo wrote: > Recently there has been a flurry of posts by Gavin at > http://gavinandresen.svbtle.com/ which advocate strongly for increasing > the maximum block size. However, there hasnt been any discussion on this > mailing list in several years as far as I can tell. > Thanks for bringing this up. I'll try to keep my arguments brief, to avoid a long wall of text. I may be re-iterating some things that have been said before, though. I am - in general - in favor of increasing the size blocks: as technology grows, there is no reason why the systems built on them can't scale proportionally. I have so far not commented much about this, in a hope to avoid getting into a public debate, but the way seems to be going now, worries me greatly. * Controversial hard forks. I hope the mailing list here today already proves it is a controversial issue. Independent of personal opinions pro or against, I don't think we can do a hard fork that is controversial in nature. Either the result is effectively a fork, and pre-existing coins can be spent once on both sides (effectively failing Bitcoin's primary purpose), or the result is one side forced to upgrade to something they dislike - effectively giving a power to developers they should never have. Quoting someone: "I did not sign up to be part of a central banker's committee". * The reason for increasing is "need". If "we need more space in blocks" is the reason to do an upgrade, it won't stop after 20 MB. There is nothing fundamental possible with 20 MB blocks that isn't with 1 MB blocks. Changetip does not put their microtransactions on the chain, not with 1 MB, and I doubt they would with 20 MB blocks. The reason for increase should be "because we choose to accept the trade-offs". * Misrepresentation of the trade-offs. You can argue all you want that none of the effects of larger blocks are particularly damaging, so everything is fine. They will damage something (see below for details), and we should analyze these effects, and be honest about them, and present them as a trade-off made we choose to make to scale the system better. If you just ask people if they want more transactions, of course you'll hear yes. If you ask people if they want to pay less taxes, I'm sure the vast majority will agree as well. * Miner centralization. There is currently, as far as I know, no technology that can relay and validate 20 MB blocks across the planet, in a manner fast enough to avoid very significant costs to mining. There is work in progress on this (including Gavin's IBLT-based relay, or Greg's block network coding), but I don't think we should be basing the future of the economics of the system on undemonstrated ideas. Without those (or even with), the result may be that miners self-limit the size of their blocks to propagate faster, but if this happens, larger, better-connected, and more centrally-located groups of miners gain a competitive advantage by being able to produce larger blocks. I would like to point out that there is nothing evil about this - a simple feedback to determine an optimal block size for an individual miner will result in larger blocks for better connected hash power. If we do not want miners to have this ability, "we" (as in: those using full nodes) should demand limitations that prevent it. One such limitation is a block size limit (whatever it is). * Ability to use a full node. I very much dislike the trend of people saying "we need to encourage people to run full nodes, in order to make the network more decentralized". Running 1000 nodes which are otherwise unused only gives some better ability for full nodes to download the block chain, or for SPV nodes to learn about transactions (or be Sybil-attacked...). However, *using* a full node for validating your business (or personal!) transactions empowers you to using a financial system that requires less trust in *anyone* (not even in a decentralized group of peers) than anything else. Moreover, using a full node is what given you power of the systems' rules, as anyone who wants to change it now needs to convince you to upgrade. And yes, 20 MB blocks will change people's ability to use full nodes, even if the costs are small. * Skewed incentives for improvements. I think I can personally say that I'm responsible for most of the past years' performance improvements in Bitcoin Core. And there is a lot of room for improvement left there - things like silly waiting loops, single-threaded network processing, huge memory sinks, lock contention, ... which in my opinion don't nearly get the attention they deserve. This is in addition to more pervasive changes like optimizing the block transfer protocol, support for orthogonal systems with a different security/scalability trade-off like Lightning, making full validation optional, ... Call me cynical, but without actual pressure to work on these, I doubt much will change. Increasing the size of blocks now will simply make it cheap enough to continue business as usual for a while - while forcing a massive cost increase (and not just a monetary one) on the entire ecosystem. * Fees and long-term incentives. I put this last, not because I don't think it is not serious, but because I don't understand nearly enough about it. I'll let others comment. I don't think 1 MB is optimal. Block size is a compromise between scalability of transactions and verifiability of the system. A system with 10 transactions per day that is verifiable by a pocket calculator is not useful, as it would only serve a few large bank's settlements. A system which can deal with every coffee bought on the planet, but requires a Google-scale data center to verify is also not useful, as it would be trivially out-competed by a VISA-like design. The usefulness needs in a balance, and there is no optimal choice for everyone. We can choose where that balance lies, but we must accept that this is done as a trade-off, and that that trade-off will have costs such as hardware costs, decreasing anonymity, less independence, smaller target audience for people able to fully validate, ... Choose wisely. Thanks for reading this, -- Pieter --001a11346326916f47051575c45c Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable
On Thu, May 7, 2015 at 12:12 AM, Matt Corallo <bit= coin-list@bluematt.me> wrote:
<= div class=3D"gmail_quote">
Recently there has been a flurry of posts by Gavin at
http://gavin= andresen.svbtle.com/ which advocate strongly for increasing
the maximum block size. However, there hasnt been any discussion on this mailing list in several years as far as I can tell.
Thanks for bringing this up. I'll try to keep my arguments= brief, to avoid a long wall of text. I may be re-iterating some things tha= t have been said before, though.

I am - in general - in f= avor of increasing the size blocks: as technology grows, there is no reason= why the systems built on them can't scale proportionally. I have so fa= r not commented much about this, in a hope to avoid getting into a public d= ebate, but the way seems to be going now, worries me greatly.

=
* Controversial hard forks. I hope the mailing list here today already= proves it is a controversial issue. Independent of personal opinions pro o= r against, I don't think we can do a hard fork that is controversial in= nature. Either the result is effectively a fork, and pre-existing coins ca= n be spent once on both sides (effectively failing Bitcoin's primary pu= rpose), or the result is one side forced to upgrade to something they disli= ke - effectively giving a power to developers they should never have. Quoti= ng someone: "I did not sign up to be part of a central banker's co= mmittee".

* The reason for increasing is "need&= quot;. If "we need more space in blocks" is the reason to do an u= pgrade, it won't stop after 20 MB. There is nothing fundamental possibl= e with 20 MB blocks that isn't with 1 MB blocks. Changetip does not put= their microtransactions on the chain, not with 1 MB, and I doubt they woul= d with 20 MB blocks. The reason for increase should be "because we cho= ose to accept the trade-offs".

* Misrepresentation o= f the trade-offs. You can argue all you want that none of the effects of la= rger blocks are particularly damaging, so everything is fine. They will dam= age something (see below for details), and we should analyze these effects,= and be honest about them, and present them as a trade-off made we choose t= o make to scale the system better. If you just ask people if they want more= transactions, of course you'll hear yes. If you ask people if they wan= t to pay less taxes, I'm sure the vast majority will agree as well.
=
* Miner centralization. There is currently, as far as I know= , no technology that can relay and validate 20 MB blocks across the planet,= in a manner fast enough to avoid very significant costs to mining. There i= s work in progress on this (including Gavin's IBLT-based relay, or Greg= 's block network coding), but I don't think we should be basing the= future of the economics of the system on undemonstrated ideas. Without tho= se (or even with), the result may be that miners self-limit the size of the= ir blocks to propagate faster, but if this happens, larger, better-connecte= d, and more centrally-located groups of miners gain a competitive advantage= by being able to produce larger blocks. I would like to point out that the= re is nothing evil about this - a simple feedback to determine an optimal b= lock size for an individual miner will result in larger blocks for better c= onnected hash power. If we do not want miners to have this ability, "w= e" (as in: those using full nodes) should demand limitations that prev= ent it. One such limitation is a block size limit (whatever it is).

=
* Ability to use a full node. I very much dislike the trend of p= eople saying "we need to encourage people to run full nodes, in order = to make the network more decentralized". Running 1000 nodes which are = otherwise unused only gives some better ability for full nodes to download = the block chain, or for SPV nodes to learn about transactions (or be Sybil-= attacked...). However, *using* a full node for validating your business (or= personal!) transactions empowers you to using a financial system that requ= ires less trust in *anyone* (not even in a decentralized group of peers) th= an anything else. Moreover, using a full node is what given you power of th= e systems' rules, as anyone who wants to change it now needs to convinc= e you to upgrade. And yes, 20 MB blocks will change people's ability to= use full nodes, even if the costs are small.

* Skewed i= ncentives for improvements. I think I can personally say that I'm respo= nsible for most of the past years' performance improvements in Bitcoin = Core. And there is a lot of room for improvement left there - things like s= illy waiting loops, single-threaded network processing, huge memory sinks, = lock contention, ... which in my opinion don't nearly get the attention= they deserve. This is in addition to more pervasive changes like optimizin= g the block transfer protocol, support for orthogonal systems with a differ= ent security/scalability trade-off like Lightning, making full validation o= ptional, ... Call me cynical, but without actual pressure to work on these,= I doubt much will change. Increasing the size of blocks now will simply ma= ke it cheap enough to continue business as usual for a while - while forcin= g a massive cost increase (and not just a monetary one) on the entire ecosy= stem.

* Fees and long-term incentives. I put this last, n= ot because I don't think it is not serious, but because I don't und= erstand nearly enough about it. I'll let others comment.

<= div>I don't think 1 MB is optimal. Block size is a compromise between s= calability of transactions and verifiability of the system. A system with 1= 0 transactions per day that is verifiable by a pocket calculator is not use= ful, as it would only serve a few large bank's settlements. A system wh= ich can deal with every coffee bought on the planet, but requires a Google-= scale data center to verify is also not useful, as it would be trivially ou= t-competed by a VISA-like design. The usefulness needs in a balance, and th= ere is no optimal choice for everyone. We can choose where that balance lie= s, but we must accept that this is done as a trade-off, and that that trade= -off will have costs such as hardware costs, decreasing anonymity, less ind= ependence, smaller target audience for people able to fully validate, ...
Choose wisely.

Thanks for reading this,<= br>
--
Pieter

--001a11346326916f47051575c45c--