LearnBitcoin

Bitcoin Dev Archive 2016

*Changing* the blocksize limit

3 messages, 6 to 9 Aug 2016. Started by Chris Priest.

Chris Priest, Luke Dashjr, Peter Todd

Permalink Original thread on gnusha.org

Chris Priest permalink original

Because the blocksize limit is denominated in bytes, miners choose transactions to add to a block based on fee/byte ratio. This mean that if you make a transaction with a lot of inputs, your transaction will be very big, an you'll have a to pay a lot in fees to get that transaction included in a block.

For a long time I have been of the belief that it is a flaw in bitcoin that you have to pay more to move coins that are sent to you via small value UTXOs, compared to coins sent to you through a single high values UTXO. There are many legitimate uses of bitcoin where you get the money is very small increments (such as microtransactions). This is the basis for my "Wildcard inputs" proposal now known as BIP131. This BIP was rejected because it requires a database index, which people thought would make bitcoin not scale, which I think is complete malarkey, but it is what it is. It has recently occurred to me a way to achieve the same effect without needing the database index.

If the blocksize limit was denominated in outputs, miners would choose transactions based on maximum fee per output. This would essentially make it free to include an input to a transaction.

If the blocksize limit were removed and replaced with a "block output limit", it would have multiple positive effects. First off, like I said earlier, it would incentivize microtransactions. Secondly it would serve to decrease the UTXO set. As I described in the text of BIP131, as blocks fill up and fees rise, there is a "minimum profitability to include an input to a transaction" which increases. At the time I wrote BIP131, it was something like 2 cents: Any UTXO worth less than 2 cents was not economical to add to a transaction, and therefore likely to never be spent (unless blocks get bigger and fee's drop). This contributes to the "UTXO bloat problem" which a lot of people talk about being a big problem.

If the blocksize limit is to be changed to a block output limit, the number the limit is set to should be roughly the amount of outputs that are found in 1MB blocks today. This way, the change should be considered non-controversial. I think its silly that some people think its a good thing to keep usage restricted, but again, it is what it is.

Blocks can be bigger than 1MB, but the extra data in the block will not result in more people using bitcoin, but rather existing users spending inputs to decrease the UTXO set.

It would also bring about data that can be used to determine how to scale bitcoin in the future. For instance, we have *no idea* how the network will handle blocks bigger than 1MB, simply because the network has never seen blocks bigger than 1MB. People have set up private networks for testing bigger blocks, but thats not quite the same as 1MB+ blocks on the actual live network. This change will allow us to see what actually happens when bigger blocks gets published.

Why is this change a bad idea?

Luke Dashjr in reply to Chris Priest permalink original

This is exactly what segwit does...

On Saturday, August 06, 2016 2:15:22 PM Chris Priest via bitcoin-dev wrote:

Quoted text (57 lines)
> Because the blocksize limit is denominated in bytes, miners choose
> transactions to add to a block based on fee/byte ratio. This mean that
> if you make a transaction with a lot of inputs, your transaction will
> be very big, an you'll have a to pay a lot in fees to get that
> transaction included in a block.
>
> For a long time I have been of the belief that it is a flaw in bitcoin
> that you have to pay more to move coins that are sent to you via small
> value UTXOs, compared to coins sent to you through a single high
> values UTXO. There are many legitimate uses of bitcoin where you get
> the money is very small increments (such as microtransactions). This
> is the basis for my "Wildcard inputs" proposal now known as BIP131.
> This BIP was rejected because it requires a database index, which
> people thought would make bitcoin not scale, which I think is complete
> malarkey, but it is what it is. It has recently occurred to me a way
> to achieve the same effect without needing the database index.
>
> If the blocksize limit was denominated in outputs, miners would choose
> transactions based on maximum fee per output. This would essentially
> make it free to include an input to a transaction.
>
> If the blocksize limit were removed and replaced with a "block output
> limit", it would have multiple positive effects. First off, like I
> said earlier, it would incentivize microtransactions. Secondly it
> would serve to decrease the UTXO set. As I described in the text of
> BIP131, as blocks fill up and fees rise, there is a "minimum
> profitability to include an input to a transaction" which increases.
> At the time I wrote BIP131, it was something like 2 cents: Any UTXO
> worth less than 2 cents was not economical to add to a transaction,
> and therefore likely to never be spent (unless blocks get bigger and
> fee's drop). This contributes to the "UTXO bloat problem" which a lot
> of people talk about being a big problem.
>
> If the blocksize limit is to be changed to a block output limit, the
> number the limit is set to should be roughly the amount of outputs
> that are found in 1MB blocks today. This way, the change should be
> considered non-controversial. I think its silly that some people think
> its a good thing to keep usage restricted, but again, it is what it
> is.
>
> Blocks can be bigger than 1MB, but the extra data in the block will
> not result in more people using bitcoin, but rather existing users
> spending inputs to decrease the UTXO set.
>
> It would also bring about data that can be used to determine how to
> scale bitcoin in the future. For instance, we have *no idea* how the
> network will handle blocks bigger than 1MB, simply because the network
> has never seen blocks bigger than 1MB. People have set up private
> networks for testing bigger blocks, but thats not quite the same as
> 1MB+ blocks on the actual live network. This change will allow us to
> see what actually happens when bigger blocks gets published.
>
> Why is this change a bad idea?
> _______________________________________________
> bitcoin-dev mailing list
> bitcoin-dev@lists•linuxfoundation•org
> https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev
Peter Todd in reply to Chris Priest permalink original

On Sat, Aug 06, 2016 at 07:15:22AM -0700, Chris Priest via bitcoin-dev wrote:

Quoted text (3 lines)
> If the blocksize limit is to be changed to a block output limit, the
> number the limit is set to should be roughly the amount of outputs
> that are found in 1MB blocks today. This way, the change should be

The largest output on testnet is a bit under 1MB, and encodes a certain well-known love song...

In many circumstances(1) miners have an incentive to create larger blocks that take their competitors longer to receive and validate, so protocol-level block limits need to take all these potential DoS vectors into account; serialized size is one of the most fundemental things that needs to be limited.

Quoted text (3 lines)
> considered non-controversial. I think its silly that some people think
> its a good thing to keep usage restricted, but again, it is what it
> is.

As mentioned above, and explained in detail in my recent blog post(1), restrictions are needed to keep a level playing field between all miners.

1) https://petertodd.org/2016/block-publication-incentives-for-miners