<div dir="ltr">This is great: Adam agrees that we should scale the block size limit discretionarily upward within the limits of technology, and continually so as hardware improves. Peter and others: What stands in the way of broader consensus on this?<div><div><br></div><div><br></div><div>We also agree on a lot of other important things:</div><div><div>-- block size is not a free variable<br></div></div><div>-- there are trade-offs between node requirements and block size<br></div><div><div><div>-- those trade-offs have impacts on decentralization</div><div>-- it is important to keep decentralization strong</div></div><div>-- computing technology is currently not easily capable of running a global transaction network where every transaction is broadcast to every node<br></div></div><div>-- we may need some solution (perhaps lightning / hub and spoke / other things) that can help with this</div><div><br></div><div>We likely also agree that:</div><div>-- whatever that solution may be, we want bitcoin to be the &quot;hub&quot; / core of it</div><div>-- this hub needs to exhibit the characteristic of globally aware global consensus, where every node knows about (awareness) and agrees on (consensus) every transaction</div><div>-- Critically, the Bitcoin Core Goal: the goal of Bitcoin core is to build the &quot;best&quot; globally aware globally consensus network, recognizing there are complex tradeoffs in doing this.</div><div><br></div><div><br></div><div>There are a few important things we still don&#39;t agree on though. Our disagreement on these things is causing us to have trouble making progress meeting the goal of Bitcoin Core. It is critical we address the following points of disagreement. Please help get agreement on these issues below by sharing your thoughts:</div><div><br></div><div>1) Some believe that fees and therefore hash-rate will be high by limiting capacity, and that we need to limit capacity to have a &quot;healthy fee market&quot;.</div><div><br></div></div><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><div><div>Think of the airplane analogy: If some day technology exists to ship a hundred million people (transactions) on a plane (block) then do you really want to fight to outlaw those planes? Airlines are regulated so they have to pay to screen each passenger to a minimum standard, so even if the plane has unlimited capacity, they still have to pay to meet minimum security for each passenger. </div><div><br></div><div>Just like we can set the block limit, so can we &quot;regulate the airline security requirements&quot; and set a minimum fee size for the sake of security. If technology allows running 100,000 transactions per second in 25 years, and we set the minimum fee size to one penny, then each block is worth a minimum of $600,000. Miners should be ok with that and so should everyone else.</div></div></blockquote><div><div><br></div><div>2) Some believe that it is better for (a) network reliability and (b) validation of transaction integrity, to have every user run a &quot;full node&quot; in order to use Bitcoin Core.</div><div><br></div></div><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><div><div>I don&#39;t agree with this. I&#39;ll break this into two pieces of network reliability and transaction integrity.</div></div><div><br></div></blockquote><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><div>Network Reliability</div></blockquote><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><div><div><br></div><div>Imagine you&#39;re setting up an email server for a big company. You decide to set up a main server, and two fail-over servers. Somebody says that they&#39;re really concerned about reliability and asks you to add another couple fail-over servers. So you agree. But at some point there&#39;s limited benefit to adding more servers: and there&#39;s real cost -- all those servers need to keep in sync with one another, and they need to be maintained, etc. And there&#39;s limited return: how likely is it really that all those servers are going to go down?</div></div><div><div><br></div></div><div><div>Bitcoin is obviously different from corporate email servers. In one sense, you&#39;ve got miners and volunteer nodes rather than centrally managed ones, so nodes are much more likely to go down. But at the end of the day, is our up-time really going to be that much better when you have a million nodes versus a few thousand? </div></div><div><br></div></blockquote><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px">Cloud storage copies your data a half dozen times to a few different data centers. But they don&#39;t copy it a half a million times. At some point the added redundancy doesn&#39;t matter for reliability. We just don&#39;t need millions of nodes to participate in a broadcast network to ensure network reliability.<br><br>Transaction Integrity<br><br>Think of open source software: you trust it because you know it can be audited easily, but you probably don&#39;t take the time to audit yourself every piece of open source software you use. And so it is with Bitcoin: People need to be able to easily validate the blockchain, but they don&#39;t need to be able to validate it every time they use it, and they certainly don&#39;t need to validate it when using Bitcoin on their Apple watches.<br><br>If I can lease a server in a data center for a few hours at fifty cents an hour to validate the block chain, then the total cost for me to independently validate the blockchain is just a couple dollars. Compare that to my cost to independently validate other parts of the system -- like the source code! Where&#39;s the real cost here? <br><br>If the goal of decentralization is to ensure transaction integrity and network reliability, then we just don&#39;t need lots of nodes or every user running a node to meet that goal. If the goal of decentralization is something else: what is it?<br><br></blockquote><div><div>3) Some believe that we should make Bitcoin Core to run as a high-memory server-grade software rather than for people&#39;s desktops.</div><div><br></div></div><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px">I think this is a great idea. <br><br>The meaningful impact to the goals of decentralization by limiting which hardware nodes can run on will be minimal compared with the huge gains in capacity. Why does increasing capacity of Bitcoin Core matter when we can &quot;increase capacity&quot; by moving to hub and spoke / lightning? Maybe we should ask why does growing more apples matter if we can grow more oranges instead?<br><br>Hub and spoke and lightning are useful means of making lower cost transactions, but they&#39;re not the same as Bitcoin Core. Stick to the goal: the goal of Bitcoin core is to build the &quot;best&quot; globally aware globally consensus network, recognizing there are complex tradeoffs in doing this.<br><br>Hub and spoke and lightning could be great when you want lower-cost fees and don&#39;t really care about global awareness. Poker chips are great when you&#39;re in a casino. We don&#39;t talk about lightning networks to the guy who designs poker chips, and we shouldn&#39;t be talking about them to the guy who builds globally aware consensus networks either. <br><br>Do people even want increased capacity when they can use hub and spoke / lightning? If you think they might be willing to pay $600,000 every ten minutes for it (see above) then yes. Increase capacity, and let the market decide if that capacity gets used.</blockquote><div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Jun 30, 2015 at 3:54 PM, Adam Back <span dir="ltr">&lt;<a href="mailto:adam@cypherspace.org" target="_blank">adam@cypherspace.org</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Not that I&#39;m arguing against scaling within tech limits - I agree we<br>
can and should - but note block-size is not a free variable.  The<br>
system is a balance of factors, interests and incentives.<br>
<br>
As Greg said here<br>
<a href="https://www.reddit.com/r/Bitcoin/comments/3b0593/to_fork_or_not_to_fork/cshphic?context=3" rel="noreferrer" target="_blank">https://www.reddit.com/r/Bitcoin/comments/3b0593/to_fork_or_not_to_fork/cshphic?context=3</a><br>
there are multiple things we should usefully do with increased<br>
bandwidth:<br>
<br>
a) improve decentralisation and hence security/policy<br>
neutrality/fungibility (which is quite weak right now by a number of<br>
measures)<br>
b) improve privacy (privacy features tend to consume bandwidth, eg see<br>
the Confidential Transactions feature) or more incremental features.<br>
c) increase throughput<br>
<br>
I think some of the within tech limits bandwidth should be<br>
pre-allocated to decentralisation improvements given a) above.<br>
<br>
And I think that we should also see work to improve decentralisation<br>
with better pooling protocols that people are working on, to remove<br>
some of the artificial centralisation in the system.<br>
<br>
Secondly on the interests and incentives - miners also play an<br>
important part of the ecosystem and have gone through some lean times,<br>
they may not be overjoyed to hear a plan to just whack the block-size<br>
up to 8MB.  While it&#39;s true (within some limits) that miners could<br>
collectively keep blocks smaller, there is the ongoing reality that<br>
someone else can take break ranks and take any fee however de minimis<br>
fee if there is a huge excess of space relative to current demand and<br>
drive fees to zero for a few years.  A major thing even preserving<br>
fees is wallet defaults, which could be overridden(plus protocol<br>
velocity/fee limits).<br>
<br>
I think solutions that see growth scale more smoothly - like Jeff<br>
Garzik&#39;s and Greg Maxwell&#39;s and Gavin Andresen&#39;s (though Gavin&#39;s<br>
starts with a step) are far less likely to create perverse unforeseen<br>
side-effects.  Well we can foresee this particular effect, but the<br>
market and game theory can surprise you so I think you generally want<br>
the game-theory &amp; market effects to operate within some more smoothly<br>
changing caps, with some user or miner mutual control of the cap.<br>
<br>
So to be concrete here&#39;s some hypotheticals (unvalidated numbers):<br>
<br>
a) X MB cap with miner policy limits (simple, lasts a while)<br>
b) starting at 1MB and growing to 2*X MB cap with 10%/year growth<br>
limiter + policy limits<br>
c) starting at 1MB and growing to 3*X MB cap with 15%/year growth<br>
limiter + Jeff Garzik&#39;s miner vote.<br>
d) starting at 1MB and growing to 4*X MB cap with 20%/year growth<br>
limiter + Greg Maxwell&#39;s flexcap<br>
<br>
I think it would be good to see some tests of achievable network<br>
bandwidth on a range of networks, but as an illustration say X is 2MB.<br>
<br>
Rationale being the weaker the signalling mechanism between users and<br>
user demanded size (in most models communicated via miners), the more<br>
risk something will go in an unforeseen direction and hence the lower<br>
the cap and more conservative the growth curve.<br>
<br>
15% growth limiter is not Nielsen&#39;s law by intent.  Akamai have data<br>
on what they serve, and it&#39;s more like 15% per annum, but very<br>
variable by country<br>
<a href="http://www.akamai.com/stateoftheinternet/soti-visualizations.html#stoi-graph" rel="noreferrer" target="_blank">http://www.akamai.com/stateoftheinternet/soti-visualizations.html#stoi-graph</a><br>
CISCO expect home DSL to double in 5 years<br>
(<a href="http://www.cisco.com/c/en/us/solutions/collateral/service-provider/visual-networking-index-vni/VNI_Hyperconnectivity_WP.html" rel="noreferrer" target="_blank">http://www.cisco.com/c/en/us/solutions/collateral/service-provider/visual-networking-index-vni/VNI_Hyperconnectivity_WP.html</a><br>
), which is about the same number.<br>
<br>
(Thanks to Rusty for data sources for 15% number).<br>
<br>
This also supports the claim I have made a few times here, that it is<br>
not realistic to support massive growth without algorithmic<br>
improvement from Lightning like or extension-block like opt-in<br>
systems.  People who are proposing that we ramp blocksizes to create<br>
big headroom are I think from what has been said over time, often<br>
without advertising it clearly, actually assuming and being ok with<br>
the idea that full nodes move into data-centers period and small<br>
business/power user validation becomes a thing of the distant past.<br>
Further the aggressive auto-growth risks seeing that trend continuing<br>
into higher tier data-centers with negative implications for<br>
decentralisation.  The odd proponent seems OK with even that too.<br>
<br>
Decentralisation is key to Bitcoin&#39;s security model, and it&#39;s<br>
differentiating properties.  I think those aggressive growth numbers<br>
stray into the zone of losing efficiency.  By which I mean in<br>
scalability or privacy systems if you make a trade-off too far, it<br>
becomes time to re-asses what you&#39;re doing.  For example at that level<br>
of centralisation, alternative designs are more network efficient,<br>
while achieving the same effective (weak) decentralisation.  In<br>
Bitcoin I see this as a strong argument not to push things to that<br>
extreme, the core functionality must remain for Lightning and other<br>
scaling approaches to remain secure by using the Bitcoin as a secure<br>
anchor.  If we heavily centralise and weaken the security of the main<br>
Bitcoin chain, there remains nothing secure to build on.<br>
<br>
Therefore I think it&#39;s more appropriate for high scale to rely on<br>
lightning, or a semi-centralised trade-offs being in the side-chain<br>
model or similar, where the higher risk of centralisation is opt-in<br>
and not exposed back (due to the security firewall) to the Bitcoin<br>
network itself.<br>
<br>
People who would like to try the higher tier data-center and<br>
throughput by high bandwidth use route should in my opinion run that<br>
experiment as a layer 2 side-chain or analogous.  There are a few ways<br>
to do that.  And it would be appropriate to my mind that we discuss<br>
them here also.<br>
<br>
An experiment like that could run in parallel with lightning, maybe it<br>
could be done faster, or offer different trade-offs, so could be an<br>
interesting and useful thing to see work on.<br>
<br>
&gt; On Tue, Jun 30, 2015 at 12:25 PM, Peter Todd &lt;<a href="mailto:pete@petertodd.org">pete@petertodd.org</a>&gt; wrote:<br>
&gt;&gt; Which of course raises another issue: if that was the plan, then all you<br>
&gt;&gt; can do is double capacity, with no clear way to scaling beyond that.<br>
&gt;&gt; Why bother?<br>
<br>
A secondary function can be a market signalling - market evidence<br>
throughput can increase, and there is a technical process that is<br>
effectively working on it.  While people may not all understand the<br>
trade-offs and decentralisation work that should happen in parallel,<br>
nor the Lightning protocol&#39;s expected properties - they can appreciate<br>
perceived progress and an evidently functioning process.  Kind of a<br>
weak rationale, from a purely technical perspective, but it may some<br>
value, and is certainly less risky than a unilateral fork.<br>
<br>
As I recall Gavin has said things about this area before also<br>
(demonstrate throughput progress to the market).<br>
<br>
Another factor that people have said, which I think I agree with<br>
fairly much is that if we can chose something conservative, that there<br>
is wide-spread support for, it can be safer to do it with moderate<br>
lead time.  Then if there is an implied 3-6mo lead time we are maybe<br>
projecting ahead a bit further on block-size utilisation.  Of course<br>
the risk is we overshoot demand but there probably should be some<br>
balance between that risk and the risk of doing a more rushed change<br>
that requires system wide upgrade of all non-SPV software, where<br>
stragglers risk losing money.<br>
<br>
As well as scaling block-size within tech limits, we should include a<br>
commitment to improve decentralisation, and I think any proposal<br>
should be reasonably well analysed in terms of bandwidth assumptions<br>
and game-theory.  eg In IETF documents they have a security<br>
considerations section, and sometimes a privacy section.  In BIPs<br>
maybe we need a security, privacy and decentralisation/fungibility<br>
section.<br>
<br>
Adam<br>
<br>
NB some new list participants may not be aware that miners are<br>
imposing local policy limits eg at 750kB and that a 250kB policy<br>
existed in the past and those limits saw utilisation and were<br>
unilaterally increased unevenly.  I&#39;m not sure if anyone has a clear<br>
picture of what limits are imposed by hash-rate even today.  That&#39;s<br>
why Pieter posed the question - are we already at the policy limit -<br>
maybe the blocks we&#39;re seeing are closely tracking policy limits, if<br>
someone mapped that and asked miners by hash-rate etc.<br>
<br>
On 30 June 2015 at 18:35, Michael Naber &lt;<a href="mailto:mickeybob@gmail.com">mickeybob@gmail.com</a>&gt; wrote:<br>
&gt; Re: Why bother doubling capacity? So that we could have 2x more network<br>
&gt; participants of course.<br>
&gt;<br>
&gt; Re: No clear way to scaling beyond that: Computers are getting more capable<br>
&gt; aren&#39;t they? We&#39;ll increase capacity along with hardware.<br>
&gt;<br>
&gt; It&#39;s a good thing to scale the network if technology permits it. How can you<br>
&gt; argue with that?<br>
</blockquote></div><br></div></div>