Subject: Re: [bitcoin-dev] Block size following technological growth

From: Jorge Timón <[email-masked]>
Date: Mon, 10 Aug 2015 21:28:48 +0200

On Fri, Aug 7, 2015 at 1:09 AM, Elliot Olds <[email-masked]> wrote:
> On Wed, Aug 5, 2015 at 6:26 PM, Jorge Timón <[email-masked]> wrote:
> I agree with you that decentralization is the most important feature of
> Bitcoin, but I also think we need to think probabilistically and concretely
> about when risks to decentralization are worthwhile.
>
> Decentralization is not infinitely valuable in relation to low fees, just
> like being alive is not infinitely valuable in relation to having money.
> [...]
> Similarly we shouldn't accept a 100% probability of Bitcoin being controlled
> by a single entity for any guarantee of cheap tx fees no matter how low they
> are, but there should be some minuscule risk of decentralization that we'd
> be willing to accept (like raising the block size to 1.01 MB) if it somehow
> allowed us to dramatically increase usability. (Imagine something like the
> Lightning Network but even better was developed, but it could only work with
> 1.01 MB blocks).

Agreed. I would just like that there was an attempt to automatically
estimate those risks before taking those risks.
Some function we're trying to optimize with simulations (based on
#6382 ) to find an ideal (according to that imperfect metric) maximum
consensus block size.
Maybe the function/simulations just take some minimum hardware
specifications and returns an block size, I don't know.

> I agree that we don't have good data about what exactly a 4 MB increase
> would do. It sounds like you think the risks are too great / uncertain to
> move from 1 MB to 4 MB blocks in the situation I described. I'm not clear
> though on which specific risks you'd be most worried about at 4 MB, and if
> there are any risks that you think don't matter at 4 MB but that you would
> be worried about at higher block size levels. I also don't know if we have
> similar ideas about the benefits of low tx fees. If we discussed exactly how
> we were evaluating this scenario, maybe we'd discover that something I
> thought was a huge benefit of low tx fees is actually not that compelling,
> or maybe we'd discover that our entire disagreement boiled down to our
> estimate of one specific risk.

The most important thing to understand in this discussion is that it
is about a trade-off between lower fees (more maximum tx volume) and
mining (and general) centralization.
I don't know what the costs and gains curves are here (for 4MB, 1 MB
or any other number, and I don't think anybody does).
But if we can't even agree on what the advantages and disadvantages of
increasing the consensus block size maximum, it is very hard that we
can agree on a universally acceptable point or range in this trade-off
rect.

> For the record, I think these are the main harms of $5 tx fees, along with
> the main risks I see from moving to 4 MB:
>
> Fees of $5/tx would:
> (a) Prevent a lot of people who could otherwise benefit from Bitcoin's
> decentralization from having an opportunity to reap those benefits.
> Especially people in poor countries with corrupt governments who could get
> immediate benefit from it now.
> (b) Prevent developers from experimenting with new Bitcoin use-cases, which
> might eventually lead to helpful services.
> (c) Prevent regular people from using Bitcoin and experimenting with it and
> getting involved, because they think it's unusable for txns under many
> hundreds of dollars in value, so it doesn't interest them. Not having the
> public on our side could make us more vulnerable to regulators.

This is all probably right, but IMO we're very far away from $5/tx.
My main point about fees is that minimum mining fees rising above zero
(theri current level) is not necessarily a bad thing or an urgent
concern.
On the other hand, we have much more data about current mining
centralization, which should be very relevant information when
discussing a block size increase.

> Changing the block size to 4 MB would:
> (1) Probably reduce the number of full nodes by around 5%. Most of the drop
> in full nodes over the past few years is probably due to Bitcoin Core being
> used by fewer regular users for convenience reasons, but the extra HD space
> required and extra bandwidth would probably make some existing people
> running full nodes stop.

As Pieter has explained repeatedly, a big block count is not a goal in
itself, just a metric.
And if you ask me, I don't think it's all that interesting as a
metric. For all I know there could be a lot more full nodes being run
that for whatever reason are not seen by people collecting this data.
The block size maximum consensus rule limits mining centralization,
not just full node centralization. Gavin, for example, disagrees with
this.
Fortunately I believe at least 2 mathematical proofs can be produced
to demonstrate Gavin and those who think like him are wrong.

> (2) Not hinder low bandwidth miners significantly, because of the relay
> network.

I believe that even with the relay network, and even assuming all
miners are connected using something like IBLT, a mathematical proof
can be constructed to demonstrate that bigger block sizes can prevent
the worse connected miners from being profitable.
It is important to note that the worse connected miners aren't
necessarily those with less bandwidth: maybe you have the best
bandwidth but you are poorly connected to the majority of the hashrate
(for example, because the majority of the hashrate is within the same
country but that country is not very well connected to the rest of the
world).

> (3) Not introduce any tx verification issues, because processors are fast
> and tx processing is ridiculously cheap and we'd need way more than 4 MB of
> txs for it to be a bottleneck.

We're certainly far away from this being a concern in practice.
But I'm working on a mathematical proof that at some scale CPU
requirements could become a discriminating factor making the smallest
mining operations unprofitable.

> So (1) is the only risk that gives me any significant concern, but I don't
> think that the number of full nodes now is at a dangerous level.

I don't think there's such a thing as a "dangerous full node count level".
It's just data that can be useful to build centralization metrics.
Probably hashrate distribution by pool is much more interesting (and
if you ask me that looks really bad right now without increasing the
block size consensus maximum).

> Anyway, the point isn't for you and I to actually discuss this particular
> hypothetical in more detail (although I would be curious to see similar
> lists from you). I haven't studied the risks enough to actually put this
> forth to the list as a good argument for what to do in this situation. My
> main point is that being very specific and concrete both about our thought
> process and about the hypothetical situation results in much better
> discussions.

I agree.

> There's one more piece of information that I can give you which will help
> you understand my position much better, and also force me to think really
> carefully about this. It's the point at which I would switch to the other
> side of the argument (either by varying the tx fee, or the block size). If
> tx fees would only rise to 60 cents or lower if we stayed at 1 MB, then I
> would be against a move to 4 MB. Or, keeping the hypothetical 1 MB fee at
> $5, I think moving to 12 MB or higher is the point at which I'd switch over
> to being a 1 MB advocate. Getting that same info from you tells me exactly
> how you weigh the risks in a way that just listing the factors can't. In
> this specific hypothetical scenario, what is the lowest block size increase
> that you'd accept? It can be extremely low, like 1.01 MB. If you tell me
> that you'd rather have $5 tx fees for the next year instead of changing the
> block size to 1.01 MB, I would be really surprised.

Great. I don't think that minimum mining fees will rise above 1 usd
cent/tx anytime soon even if we maintain the limit of 1MB.
Maybe that's why I'm not worried at all about "hitting the limit".
But I'm sorry, I don't have those concrete numbers because it is a
trade-off I don't think we've studied in enough detail.
Well, I can also say I wouldn't be worried at all about moving to,
say, 1.01 MB (because the difference in centralization pressure should
be minimal) and I would just take it as a "let's proof hardforks are
possible" change similar to the one proposed in bip99.

> Gavin is the only other person who I've seen who has defined at what block
> size he'd switch to the other side (maybe not with a concrete number, but
> with a rough range: the block size such that a normal person with a pretty
> good connection couldn't run a full node).

That would be interesting to read and I have totally missed it.
Do you have a link?

> I would say that in this case we know high tx fees could happen very soon
> because there is a clear mechanism. Bitcoin just needs to become more
> popular quickly for any number of reasons. Suppose the infrastructure for
> remittances starts falling into place within the next two months, and
> suddenly immigrants are clamoring to use Bitcoin to send money back to their
> home countries. This could result in $5 tx fees very soon (not that I think
> it's likely). Many of these immigrants would still use Bitcoin because it's
> still better than the alternative for remittances, which would price out a
> lot of people currently using Bitcoin for other reasons. As far as I know,
> there is no plausible way that subsidies could plummet in anywhere near that
> time frame, aside from the price of Bitcoin completely collapsing.

And for any size something similar could happen with some use case.
But this is a great example of a situation where I would understand
people panicking and clamoring to change the consensus rule as soon as
possible.
Even with much lower fees, say 1 usd/tx.
I think it would be a great problem to have and admittedly I'm not
worried about having it in the short term.
And if it happened overnight we could always deploy an emergency hardfork.

> But if
> that happens in the near term (specifically, with very low tx volume) a fee
> market won't help.

I think it's helping by determining who is to be served first, and
that is those who benefit more from Bitcoin (and are therefore willing
to pay higher costs for using it), in this case, people doing
international remittances.

> I would be extremely happy if Bitcoin could somehow sustain itself in the
> long run with 5 cent tx fees. I'm optimistic about Lightning to handle the
> cases where people need even cheaper txns.

Agreed.

>> I'm still missing an answer from the "big blocks size side" to the
>> following question (which I have insistently repeated with various
>> permutations):
>>
>> If "not now" when will it be a good time to let fees rise above zero?
>> After the next subsidy halving? After 4 more subsidy halvings (ie
>> about 13 years from now, subsidy = 1.5625 btc/block )? After your
>> grandmother abandons her national currency and uses Bitcoin for
>> everything? Never?
>>
>> ANY answer (maybe with the exception of the last one) would be less
>> worrying than silence.
>
>
> Before I answer, here's my reasoning about why we don't need to worry about
> a fee market now:
>
> There is nothing particularly special about a fee market in Bitcoin. We know
> how markets work, and we have no reason to suspect a fee market in Bitcoin
> will have any new properties of markets that we can't foresee. When demand
> becomes higher, there will be some equilibrium level of fee that people have
> to pay to give a certain probability of inclusion within a certain number of
> blocks. There will likely be some level of fee where if you don't pay it,
> your tx will never be confirmed.

This is what I mean by "market minimum fee".

> We have seen something like this working at various points in Bitcoin's
> history. Look at the recent "stress tests." To get your tx confirmed in a
> reasonable time frame, you had to bump your fee a little higher than the
> txns from whoever was flooding the network. If you did, everything worked
> fine. If you didn't, your tx didn't confirm (until the test ended, maybe?).
> So there's nothing complicated here. It doesn't require a decade long
> preparation to prove to ourselves that a fee market will work.

I think the code that miners use to select which transactions to
include first needs a lot of work.
As said miners are subsidizing free transactions, increasing their own
costs for nothing in exchange.
Also, yes, there is something special about this market: it is
supposed to pay for most of the global hashrate in the not-so-far
future.
If we take too long to start moving away from total seigniorage
subsidy dependence, it may be too late when we do.

> Unless in the future mining is funded mostly by charity (I think there's
> only a 25% chance of that happening), we will need a fee market eventually.
> I'd be fine if one developed now. I think 10 cents per txn right now
> wouldn't be too bad, aside from the following reason. What concerns me about
> insisting on a fee market right now is that usage is so small and the block
> size is so limited that if demand increases just a little bit, fees could
> skyrocket. It's not the 10 cent fees that would worry me, but what they say
> about the potential for a huge spike. Fees could become $10 per tx or higher
> very quickly. Yes, that would show that big organizations find Bitcoin
> useful which is nice, but it'd also put decentralized money out of reach of
> many other people. While Bitcoin still has a lot of growth ahead of it, it's
> better to not set up roadblocks (for reasons other than preserving
> decentralization) in front of that growth which will make things very
> painful if that growth happens more suddenly than we expect.
>
> I think the best argument for having a fee market right now is that if we
> move to such a market suddenly in the future, wallets won't have time to
> make the user experience good, and full nodes might not be written in such a
> way that they gracefully handle a bunch of txns that might never confirm. I
> don't think the required software changes are that complex though, so it
> seems unnecessary to start adding friction for users now for something that
> might be an issue in 10+ years.

I think you are underestimating the software costs.
And you not only have to adapt the software that we have now, but also
the software that hasn't been written yet and will be written assuming
free transactions and an underdeveloped market.
Also you are over-estimating the costs: you could hit the limit but
then rise the block size maximum as soon as you reach, say 0.00001
usd/tx.
Even if minimum fees go again to zero after rising the block size
maximum, the software improvements will remain there.

> So to answer your question: about two years before we think Bitcoin will
> need to rely heavily on txn fees for security, I'd be in favor of adjusting
> block size so that it resulted in enough total fees / security.

And when do you think "Bitcoin will need to rely heavily on txn fees
for security"?
How many more halvings is that?

> You've been arguing that 0 fee transactions will have to disappear someday,
> but this isn't necessarily true. As long as enough people care about having
> their txns confirm relatively quickly, there's no reason to make sure that
> people who pay 0 fees never have their txns confirmed.

That's not what I've been arguing, I've just being saying that I would
be completely ok with minimum fees rising above zero (say, to 1
satoshi/tx) tomorrow.
I don't think that's necessarily a bad thing (in fact, it has some
advantages) and certainly not something we should fear to the point of
rushing hardforks to avoid it.