[bitcoin-dev] Fee smoothing

Luzius Meisser luzius.meisser at gmail.com
Thu Jan 28 20:16:41 UTC 2016


2016-01-28 13:00 GMT+01:00  Warren Togami Jr. <wtogami at gmail.com>:
> Myself and a few other developers think proposals like BIP100 where the
> block size is subject to a vote by the miners is suboptimal because this
> type of vote is costless.

The cost of the vote is completely irrelevant. What matters are the
resulting block sizes and transaction fees. Assuming rational,
profit-maximizing miners, BIP100 would allow them to effectively
enforce a cartel and to set block sizes (and thereby indirectly also
fees) at monopoly price levels. Charging something for a vote would
not affect that equilibrium and thus also neither affect block sizes
nor fees. Also note that monopoly prices are always at least as high
as competitive market prices. In other words: the transaction fees
that emerge under BIP100 will be higher than those that would emerge
with a flex cap mechanism that is based on the total marginal costs of
the miners. If you do not believe that, I'll happily go into the gory
details.

> You were astute in recognizing in your post it's
> a good thing to somehow align the global marginal cost with the miner's
> incentive.  I feel a costless vote is not great because it aligns only to
> the miner's marginal cost, and not the marginal cost to the entire flood
> network.  Flex Cap is superior as "vote" mechanism as there is an actual
> cost associated, allowing block size to grow with actual demand.

There are two types of flex cap mechanisms: First, there mechanisms
like the one I described previously which ensures that supply is based
on the actual costs of the miners. If done right, they can lead to a
competitive equilibrium with free market prices. Second, there are
flex cap mechanisms that simply replace todays centrally planned
constant cap with a centrally planned supply curve. If you believe in
central planning, that's ok. I for one prefer to avoid it. Also, it is
not much better than the constant cap, maybe even worse.

Note that neither type of flex cap adjusts to the marginal cost of the
entire network, simply because none of them can measure the cost of
running a full node, yet alone reliably detect the number of running
full nodes. Any attempt to do so would be futile anyway because it
would too easy to pretend-run full nodes in order to manipulate the
mechanism. When reasoning about full nodes, completely different
forces are at play. The only connection between full nodes and the fee
market is that larger blocks make it more expensive to run a full
node.

However, a holistic analysis must also reason about the benefits of
running a full node. I often see one-sided arguments saying that
increasing block sizes will make running one more expensive and thus
there will be fewer nodes. This logic is flawed because the economic
reasons for running a full node are not understood and taken into
account. An example reason could be the ability to monitor the network
and to verify transactions, which is very valuable to exchanges,
merchants and wallet services. To them, this value of running a full
node even grows with the number of customers. Thus, depending on the
circumstances, increase block sizes can counter-intuitively make it
more attractive to run a full node. The big picture from a systemic
perspective can look completely different than the conventional
micro-view that only sees first-order effects. Unfortunately, most
people are not great systems-thinkers.



2016-01-27 11:12 GMT+01:00 Luzius Meisser <luzius.meisser at gmail.com>:
> 2016-01-27 3:45 GMT+01:00 Warren Togami Jr. <wtogami at gmail.com>:
>> On Tue, Jan 26, 2016 at 9:42 AM, Luzius Meisser via bitcoin-dev
>> <bitcoin-dev at lists.linuxfoundation.org> wrote:
>>>
>>> Idea: currently, the total amount of fees collected in a block is paid
>>> out in full to whoever mined that block. I propose to only pay out,
>>> say, 10% of the collected fees, and to add the remaining 90% to the
>>> collected fees of the next block. Thus, the payout to the miner
>>> constitutes a rolling average of collected fees from the current and
>>> past blocks.
>>
>> [...] Another major issue with mandatory sharing is
>> if the miner doesn't want to share, nothing stops them from taking payment
>> out-of-band and confirming the transaction with little or no fees visible in
>> the block.
>
> While I find the other points you raised debatable, the out-of-band
> argument looks strong enough to kill the idea. To work around it, one
> would need to create rules about the transactions that can be included
> in a block, for example by mandating that all included transactions
> must have a fee at least as high as 0.9 times the 5th percentile of
> the transactions in the previous 10 blocks. However, having to tell
> the miners what fees they are allowed to accept destroys some of the
> elegance of the idea. Maybe I should put it to rest for now and see if
> a more elegant solution comes to mind later.
>
>> While I don't agree with the rest of your logic, it is agreeable that you
>> care about aligning the miner's supply incentives with the global marginal
>> cost.  If you believe that is an important goal, you might like the Flex Cap
>> approach as presented by Mark Friedenbach at Scaling Bitcoin Hong Kong.
>> Under the general idea of the Flex Cap approach block size is no longer
>> fixed, it can be bursted higher on a per-block basis if the miner is willing
>> to defer a tiny portion of the current block subsidy to pay out to the miner
>> of later blocks.
>> [...]
>> Flex Cap is an area of ongoing research that I strongly believe would
>> benefit Bitcoin in the long-term.  For this reason it requires careful study
>> and simulations to figure out specifics.
>
> I agree that flex cap is promising. However, for it to be a viable
> long-term solution, it must not depend on significant block subsidies
> to work as the block subsidy will become less and less relevant over
> time.
>
> Picking up your thoughts, I guess this is how flex cap should be done:
> 1. There is a flexible block cap (e.g. 1 MB). This first MB is free to fill.
> 2. Miners can buy additional space for an exponentially increasing
> fee. For example, the first KiB might cost 200 Satoshis, the second
> KiB 400 Satoshis, the tenth KiB 102400 Satoshis etc.
> 3. The price of the purchased space is subtracted from the collected
> fees and added to the reward of the next block.
> 4. The amount miners are willing to spend on additional space allows
> to calculate the marginal costs of a transaction of a miner. For
> example, if a miner pays 6000 Satoshis to include a 1 KB transaction
> with a fee of 6100 Satoshis, the marginal costs must be below 100
> Satoshis, assuming a rational miner. This cost is multiplied by say 50
> to account for the costs of decentralization to get a global cost
> estimate of 5000 Satoshis per KB.
> 5. Every 1000 blocks or so, the basic cap is adjusted upwards or
> downwards (e.g. by 10%) depending on whether the average fees per KB
> were above or below the global cost estimate.
>
> Under such a scheme, prices should get very close to free market
> prices. However, ruthless competition can get ugly in markets where
> fixed costs dominate. We can currently witness this in the oil
> industry. Thus, from an economic point of view, it might be more
> advisable to simply let miners vote on block size, as has been
> proposed by others. The drawback of voting is that it allows miners to
> enforce a cartel among themselves and to charge monopoly prices
> instead of competitive prices. However, monopoly prices would already
> be much better than having an artificial cap.
>
> Warren, thank you for your thoughts! I appreciate the opportunity to
> discuss ideas at such a high level.
>
> --
> Luzius Meisser
> President of Bitcoin Association Switzerland
> MSc in Computer Science and MA in Economics



-- 
Luzius Meisser
luzius.meisser at gmail.com


More information about the bitcoin-dev mailing list