- snip -
Now for the supply and demand part:
Imagine that there are 1000s of transaction requests, all competing against each other so they can be signed and confirmed. What are they fighting over? A limited amount of block space. The Bitcoin protocol explicitly allows a market to form because it allows users to send bids ("donations") to the miner. This encourages miners to sort all the transaction requests and only accept the most profitable ones.
- snip -
I don't think this process will work well until there is a user-friendly method in place to cancel an unconfirmed transaction (or at least a way to add to the fee of an unconfirmed transaction).
It is difficult for a user to know at the time they are creating the transaction how big of a fee they will need if they want their transaction added to one of the next 6 blocks. If half an hour goes by and they are getting anxious, there is no way to increase their bid. There is a possibility of creating a transaction with such a low fee (and total network transaction frequency to get so high) that the transaction will never make it into a block. What options are available to the sender (or receiver) of the transaction at that point?
That's a good point and I don't have an answer for that, however...
- snip -
One solution that would go a LONG WAY toward addressing this issue would be if miners/pools would look at the entire tree of unconfirmed transactions and compute the best bitcoin-per-byte payoff for each branch.
Example:
Transaction A 10,000 bytes 0 fee (2 outputs)
Transaction B 400 bytes 0.01 BTC fee
Transaction C uses one output from Transaction A and is 400 bytes 0.1 BTC fee
Transaction D uses the other output from Transaction A and is 800 bytes 0.3 BTC fee
Right now, Transaction B gets confirmed, and Transaction C and D (both of which have higher fees) are stuck.
A forward looking calculation would find that:
Transaction A alone pays 0 BTC per byte
Transaction B alone pays 0.00002500 BTC per byte
Transaction A & C together pay 0.00000962 BTC per byte
Transaction A & D together pay 0.00002778 BTC per byte
Clearly it is more profitable to include Transaction A & D together than it is to include Transaction B alone.
If most miners would adopt an algorithm like this, then a receiver (merchant?) could create a transaction that used inputs from multiple payers and add their own fee to increase the "bid" ensuring that all the small "free" or low fee transactions that they accept still get confirmed.