Today, I got another question about why transactions were not confirming on the blockchain. A friend sent a few bitcoins to an exchange (using an older version of bitcoin-qt from Core), but did not include a fee. This transaction did not confirm, so he thought: "I'll just send another transaction, and include a fee in that one. I'll eventually have double the funds there.". So he did exactly that. The thought makes sense to me.
As luck would have it, his wallet included the change output from the unconfirmed transaction in his second fee-paying transaction. But, as child pays for parent is as yet unimplemented, the second transaction cannot possibly confirm until the first one is confirmed.
So, he now has TWO transactions stuck in the queue. He has waited several hours before contacting me.
He still wants money in the exchange as soon as possible, so I told him he should send a THIRD transaction - that does not reference any unspent inputs, and that has a fee.
(So rather than sending ONE tx, he is broadcasting THREE - and none of them are 'spam' transactions). He is doing that, BECAUSE blocks are full and transactions are not confirming in a timely manner.
There are so many fundamental problems with that. The first, is that I have to explain how, under the hood, bitcoin works and why it is showing this behavior. The end user should not have to care, but if I have to start explaining tx inputs, change addresses and unconfirmed inputs - this is a sign bitcoin is nowhere near ready for the mainstream. He should have been able to 'just make the transaction'.
Ah, but isn't he using an old version of Core? Yes he is! Well, then isn't it his fault for not upgrading!!
Let's examine that.
Because this is a much more fundamental problem. The users would have to upgrade their software, so that it will calculate the correct fee and not use unconfirmed transaction inputs.
The end users must change their software, in order to be able to continue using bitcoin in this full-blocks environment. The economic rules have changed, and all users MUST upgrade in order to be able to continue using bitcoin.
THIS IS A HARD FORK! *
EDIT for clarity: I am not talking about a blockchain fork here. I'm talking about a software change that users are forced to implement in order to continue using the system. See posts below.