4

As far as I know, in the earlier version of Bitcoin, there was a mechanism about transaction priorities. However, it has been removed (or not being taken into account anymore) and now the only criterion to be selected for confirmation is the fee.

Can anyone explain, what the reason was behind this design decision? Shortly, why?

  • 1
    I was about to ask just now why it was not removed. I don't know why a miner would ever use this value. They can optimize their profits by selecting transactions by fee. It is not necessary for Bitcoin to function that miners act altruistically by prioritizing certain transactions and it's probably unrealistic to expect that to happen. – boot4life Jun 16 '17 at 14:03
  • Why do you think it is unrealistic to expect that a very old transaction is confirmed? OK, it paid lower fees to the system, but it received a slower confirmation also. It is fair, no? – Önder Gürcan Jun 16 '17 at 14:22
  • Bitcoin does not enforce any notion of fairness. The whole ecosystem works just fine assuming complete selfishness. That's the innovation.; Old transactions can be confirmed just fine when the fee level decreases to the fee rate that that old transaction offers. Miners can include whatever transactions they want so they milk that stream for maximum fees. – boot4life Jun 16 '17 at 15:01
  • 1
    Personally, I think this is how it should have been from the beginning. No 0 fee transactions at all, strict fee maximization. That's what we will end up with anyway and forever. Billions of revenue are at stake for miners. The priority thing as well as child pays for parent and RBF are all unnecessary mechanisms. Had miners been selfish from the beginning CPFP and RBF would have been enabled for everyone without a single line of code. – boot4life Jun 16 '17 at 15:06
  • 1
    The fee rate will go up as long as people are willing to pay it. It's a free market. That's inevitable, and the alternative is just an unreliable system with arbitrary selection when more transactions are produced than fit in blocks. – Pieter Wuille Jun 16 '17 at 15:51
3

Firstly, the priority mechanism was not a consensus rule. Originally it was just a few hundred kilobytes of space reserved in a block (100 kb IIRC) for transactions that had a high priority. But this was not a consensus rule; it does not have to exist. After blocks started getting full, many miners, out of the interest of getting as much income as possible, chose to stop reserving this space for priority. There is more money to be made by choosing a few hundred transactions that paid more fees than it was to choose a few hundred transactions that didn't but had priority. Since no one miner was actually using priority, Bitcoin Core removed priority from its fee and confirmation estimations so that the given values would be more realistic and the code would be simpler.

The following pull requests and the issues linked within them contain some of the discussions that the Core devs had when removing priority: https://github.com/bitcoin/bitcoin/pull/9602, https://github.com/bitcoin/bitcoin/pull/7022, https://github.com/bitcoin/bitcoin/pull/7008.

2

Selection by "age x value" creates an arbitrary nobility for early adopters/large hodlers. Early adopters having old coins would be able to cut in line any time, large hodlers could cut in line by transferring a large amount from themselves to their change output. Neither of the two characteristics is in any relation to the actual resources on the network being used. In fact, the latter may actually increase resource usage by encouraging potentially avoidable change outputs.

On the other hand, transaction selection by fee rate is a mechanism that creates a relationship between the demanded resources and the cost. It allows miners to maximize their revenue and users to efficiently signal priority.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.