[Bug]: Blockspace price shouldn't be higher for a simple transaction (price discrimination against simple txs) #29146

issue GregTonoski opened this issue on December 27, 2023
  1. GregTonoski commented at 3:20 PM on December 27, 2023: none

    Is there an existing issue for this?

    • I have searched the existing issues

    Current behaviour

    Blockspace price for data of a simple transaction is higher than the one for data of other ("complex") transactions, e.g. 3=616 weight / 205 bytes aabbcce67f2aa71932f789cac5468d39e3d2224d8bebb7ca2c3bf8c41d567cdd vs 1.49=1140 weight / 767 bytes 1c35521798dde4d1621e9aa5a3bacac03100fca40b6fb99be546ec50c1bcbd4a.

    As a result, there are incentives distorted and critical inefficiencies/vulnerabilities (e.g. misallocation of block space, blockspace value destruction, disincentivised simple transaction, centralization around complex transactions composers).

    Expected behaviour

    Price of blockspace is the same for any data (1 byte = 1 byte, irrespectively of location inside or outside of witness), e.g. 205/205 bytes in the example above. (The "weight" discrimination was unnecessarily introduced in 2017).

    Perhaps, the solution (the same price, "weight" of any byte of data in a transaction) could be introduced as part of the next version of Segwit transactions.

    Steps to reproduce

    1. Create two transactions: a simple (e.g. aabbcce67f2aa71932f789cac5468d39e3d2224d8bebb7ca2c3bf8c41d567cdd ) and a complex one (e.g. 1c35521798dde4d1621e9aa5a3bacac03100fca40b6fb99be546ec50c1bcbd4a )
    2. Measure amount of data of each transaction.
    3. Calculate blockspace price for both of them and compare to determine that they are not the same.

    Relevant log output

    4MB_vs_1 33MB_block_in_Bitcoin

    How did you obtain Bitcoin Core

    Pre-built binaries

    What version of Bitcoin Core are you using?

    26.0

    Operating system and version

    Not applicable.

    Machine specifications

    Not applicable

  2. GregTonoski renamed this:
    Blockspace price shouldn't be higher for a simple transaction (price discrimination against simple txs)
    [Bug]: Blockspace price shouldn't be higher for a simple transaction (price discrimination against simple txs)
    on Dec 27, 2023
  3. maflcko commented at 4:00 PM on December 27, 2023: member

    Usually the issue tracker is used to track technical issues related to the Bitcoin Core code base.

    General bitcoin questions and/or support requests are best directed to the Bitcoin StackExchange or the #bitcoin IRC channel on Libera Chat, or one of the Bitcoin subreddits, or any other place that you feel is well suited.

    Network-wide consensus and/or P2P changes first need to be discussed with the greater community, for example the bitcoin-dev mailing list, or https://delvingbitcoin.org/. Also, they need a BIP to be implemented in Bitcoin Core and other software that connects to the bitcoin P2P network.

  4. maflcko closed this on Dec 27, 2023

  5. GregTonoski commented at 8:50 PM on January 6, 2024: none

    The primary idea behind the discounts are to incentivise wallets to manage change differently and clean up the UTXO set. This is best explained by Adam Back here

    Yes it takes more bytes to spend a transaction than to split a transaction because input consumption includes signatures (witness data) and outputs typically contain only P2SH which is compact. So the discount balances those input consumption bytes and output creation bytes so there is no longer a financial incentive to create dust. To be sure if you run out of coins your wallet will use change, but until then it will keep splitting coins. Say you have 100 1BTC lumps in your wallet for privacy, and you make 100 < 1BTC payment your wallet will correctly minimise fees by splitting all 1BTC payments and creating 100 change coins. That is bad for UTXO bloat. With the incentive fix depending on what amounts you're paying the UTXO bloat will be much smaller. A negative economic externality is saying someone else, or everyone is paying for your actions because you are not exposed to their cost. That is what is happening today with change.

    Is there an economic basis for setting the original discount at 75% instead of some other number?

    If it's okay to arbitrarily reduce the discount by 1/3, what are the actual boundary limits: 50% - 75% ? 40% - 80% ?

    So, something to keep in mind in general in all these discussions is that at best engineering always has "magic numbers" involved, the question is where?

  6. GregTonoski commented at 8:38 PM on January 11, 2024: none

    2024-01-11T14:31:31 <@sipa> sigh, there is economic demand for block space, whether you like it or not - the buyers and sellers of that space both want the transaction to occur, i don't see what anyone thinks they can do about that

    Of course, there is economic demand for data storage. All the more so if it is permanent, distributed, replicated, immutable and branded by Bitcoin.

    At the same time, there is economic demand for money (satoshi) transfers.

    The block space is limited and so the choice must be made: either Bitcoin Core is optimized for money or something else (data storage). Otherwise it fails at both.

  7. bitcoin locked this on Jan 10, 2025
Contributors

github-metadata-mirror

This is a metadata mirror of the GitHub repository bitcoin/bitcoin. This site is not affiliated with GitHub. Content is generated from a GitHub metadata backup.
generated: 2026-04-24 15:13 UTC

This site is hosted by @0xB10C
More mirrored repositories can be found on mirror.b10c.me