← Back to team overview

mimblewimble team mailing list archive

Re: On fees


> Transaction fees are mostly a mechanism to prevent transaction flooding.

The block size limit should be the primary mechanism for that.

> Space and bandwidth in a blockchain network are scarce resources and free
> transactions would lead to abuse.

The abuse would be due to a lack of information on which transactions
are more worthy of being included in the limited block space.

> A secondary use of transaction fees is to provide an ordering mechanism for
> transactions when capacity is limited. Users can express the urgency, or
> lack thereof, of their transactions by including larger or smaller fees.

This is to me the primary use of fees. In a market for block space
supply and demand, one must be able to express demand.

> However, if fees are burnt, this mechanism disappears as miners do not get
> the fees and therefore only have a weak incentive to order. In the worst
> case scenario, users could be tempted to pay miners directly to have their
> transactions included, leading to a strong centralization pressure.
> The common assertion that fees are also a mechanism to incentivize miners to
> include transactions in blocks is dubious at best.

I beg to differ.

> Miners have an economic
> incentive to include transactions regardless. There is a lot of evidence
> that they will do so, in some measure, even if it's non-economical (fees too
> low to pay for elevated orphan rate).

No; they will not include transactions that don't fit in the limited
block space.

> I've been thinking about this for some time and would like to propose the
> following rules:
> There is a minimum relay fee per transaction and minimum relay fee per
> output newly created (output_count - intput_count). We may want to refine
> this a little bit to account for varying sizes of the range proof but let's
> ignore that for now.
> Fees get burnt up to $REWARD.
> When the sum of all fees is above $REWARD, the overage gets added to the
> coinbase output (so coinbase=max($REWARD, sum(fees)).
> There is a limit on the number of new outputs a block can create.
> This stays very simple while seemingly retaining all the properties we need.
> Any way you can think of this being broken?

I can see the value in burning. I would like to instead propose that
the fee is evenly split between burning and miner reward. This also
prevents the miner from including transactions to herself for free.