Don't all bitcoin transactions require a transaction fee in order to get processed these days?
The basic protocol allows you to move bitcoins between two entities without putting every single transaction on the chain - only 2 blockchain transactions are needed for unlimited Lightning Network transactions.
Then, on top of this, there's a framework for moving money through the network - I send money to someone I have a Lightning Network payment channel with, they send it to someone they have a channel with, etc, until it gets to you. The great thing about this is that I can prove everyone isn't cheating, and if they are, I can immediately reverse my transaction - I haven't lost any money.
So the result of this is the creation of a network of payment channels which have very very low costs to process payments, aren't embedded in an industry that's difficult to get into (you or I could process payments just by joining the network), and have no ability to try and take a larger cut under the guise of a "points" or "cashback" system as you can easily switch to a different channel which takes a smaller cut.
In practice, a ledger of every transaction that is copied to the hard drives of a sufficient amount of bitcoin users is a terrible idea. It doesn't scale, at all. We need better solutions. Lightning Network is one that's potentially viable in the short term - and we're seeing more people play with radically different cryptocurrency designs (e.g. Iota) in the long term.
Cryptocurrency transaction fees are just very direct, but it's the same deal. The difference is that clearly inefficient transaction costs, like centralised middlemen with limited competition skimming a cut from all transactions, can be eliminated. Remember that bitcoin transaction fees are a completely open market.
There's an efficiency trade-off here, and I think for at least many of the older crypto currencies, the amount of work to process transactions is literally unsustainable without some additional tech or service layer.
Which often leads us right back to clearly inefficient transaction costs.
The only reason that Visa and Mastercard have such high fees is because it's a duopoly.
The transaction fee is based on the byte size of the transaction, not the monetary amount, so in it's current form it doesn't make sense to use Bitcoin for low-value transactions.
Aren'y all bitcoin transaction really close to the same size? The amount being transferred doesn't change the size an integer contain 1 and another container 1,000,000,000 take the same amount of space (32 or 64 bits) because the spec says so.
I thought transaction fees encouraged miners to include your block in a transaction.
If you're paying for your £3 coffee by transfering small amounts from many addresses, it's a big transaction.
Address fragmentation happens when your coins are distributed across many addresses, and can be caused by things like spending coins, because all transactions actually spend everything at an address and just route the "change" elsewhere. Buy two cups of coffee too close to each other and your next transaction is going to cost twice as much in fees, whoops!
Unfortunately it's generally advised to use a new receiving address for every bitcoin transaction to make it harder to trace how much money you have and how you earn and spend it (most wallet craft a new address for every receive transaction) so it's very common to end up with your assets split up across dozens or even hundred of addresses.
Imagine two wallets each with a total of 1 BTC. One wallet just received a single transaction with 1 BTC and the other is funded with 10 transactions of 0.1 BTC. The wallet with 1 BTC as an input only needs that single proof to send the whole BTC, while the wallet with 10 0.1 BTC inputs needs to submit all of those proofs to transfer the 1 BTC, effectively 10x the data.