2

Why does Bitcoin consensus require blocks to contain only non negative fee transactions? Also why does the coinbase have to be the first transaction in a block with this rule lifted?

Instead of having those rules, which need to be special cases in the software, I suppose one could just have this rule:

The sum of all outputs in a block minus the sum of all input values in the block must not exceed the block reward.

This rule is already in place to check the block reward, so the other two rules seem useless. A miner which includes a transaction with a negative fee will have to pay for it by the one rule, so nothing bad can happen.

If Bitcoin was using just this one rule I could imagine interesting things could be done with CPFP.

One possible reason I could think of was spam protection, however nothing prevents me from creating a huge amount of spam transactions with 0 or 1 satoshi/B anyway.

  • Wow, a great question – Karel Bílek Oct 5 '17 at 23:12
3

Very interesting brain teaser. I agree that this could be interesting in combination with CPFP. The sender could defer the transaction fees to the recipient which would probably be an interesting proposition for some services in the Bitcoin space.

There are a few problems with negative fees from an operational perspective, though:

The sender defers prioritization to the recipient. However, if the sender needs to access the funds that are assigned to the change output of the transaction, he'll either have to CPFP the transaction himself after all, or doublespend the transaction to add more outputs.

In the first case, he ends up paying the fees himself, in the second case, he creates a scenario where multiple valid conflicting transactions float about unconfirmed, and since he doesn't know which one will confirm first, he'd better also broadcast all alternative complementary transactions.

I.e.

tx1: S --> R1 + C

tx2: S --> R1 + R2 + (C-R2)  
tx1b: C --> R2 + (C-R2)

This would quickly increase the amount of transaction combinations that could be accepted on the network, create unnecessary network traffic, and would create a headache for fee estimation: At the same negative feerate, it would be much cheaper for R1 to just purchase tx1, while R2 would have to come up with the fees for tx2 (which is cheaper than tx1+tx1b).

In general, if there are multiple recipients to the transaction, the first to spend from the transaction has to pay for everyone to receive their money.

Another problem is that it may further incentivize out of band payments for transactions which at a larger scale could cause unpredictability in transaction confirmation times, and may skew other incentives in the network.

-1

A negative fee transaction is a transaction whose outputs' value is larger than its inputs. So that transaction is effectively creating money out of thin air.

The transaction creator is thus getting free money, that's why such transactions are not valid, even if the money created out of thin air would be compensated by a lower block reward for the miner.

  • I know, but that is not important for the consensus rules. If the miner wants to give up the block reward, it is his problem. This rule does not have to be enforced by all nodes. Also child transactions can pay more block reward to compensate the negative fee. – Leonidaz0r Sep 4 '17 at 15:48
  • I see what you mean, it's possible to keep Bitcoin's supply finite and allow negative fees. But why for? It adds extra complexity since a negative fee transaction can only be validated inside a block. It would also make mining more complex, and what's the incentive for a miner to mine negative fee transactions? – alcio Sep 4 '17 at 15:51
  • It removes complexity. The script can be validated outside of a block and the check for a correct fee can just be removed. What else can you not validate? The block reward is checked already, so this is just removing a redundant check. Mining also does not get more complex. Miners already take the transactions paying the largest fees. A miner would like to mine a negative fee transaction, if a child transaction pays a larger fee, that compensates the loss and can be mined in the same block. – Leonidaz0r Sep 4 '17 at 16:07
  • Then I can just spam negative fee transactions and actually make money if some miner mine it. That's why individual transactions must pay at least 1 sat/B to be relayed on the network. – alcio Sep 4 '17 at 16:10
  • The transactions don't have to be relayed. Or they could only be relayed together with a child transaction that compensates the fee with CPFP. – Leonidaz0r Jan 27 '18 at 10:18

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.