I’m really glad that we are done with killing the 50 transactions unchained limit, which was my main concern 6 months ago.
Here’s my biggest concern now: the 1sat/b fee. (My next concern: UTXO commitments)
I know that this is a command-line argument, not a consensus thing, but the default settings and communication from BCHN and BU is really important. Right now the default thing to do (and the message to wallet developers) is “pay 1sat/b you’ll be fine”. I think this needs to be changed, both as a default setting and (as a consequence of that) as a default message to wallet developers from node developers.
What’s the big deal?
Bitcoin (BTC) had a great raise in 2017 and this year, but it had really killed its own momentum when the fees rose (due to the network congestion)
BCH might (and actually inevitably will) find itself in a similar situation. The fee will kill the adoption momentum.
In case of an explosive growth in usage and price (50x isn’t that crazy to imagine, especially if SmartBCH suddenly takes off), the fees will jump from the current low of $0.0062 to $0.31 (that’s the CHEAPEST thing you can do, so in reality we’re talking about people paying $3 or $30 for more complex transactions).
If we’re talking about being the world money ($500k - $5m per coin) - we’re talking about 350 - 3500x increase in fees ($2 to $20 being the cheapest option for the simplest transaction!) It’s still far from BTC fees, but it’s still terrible.
Am I being too optimistic with 350-3500x? Well, Dogecoin got 5922x in 6 years from its all time low (and mainly just due to ONE GUY). For BCH the same increase from the ATL would mean 370x from the current price = $2 minimum fees.
Even when the fees will reach $0.05 (this is just ~5x from here), the adoption momentum will start to slow down. If you live on $1/day, paying $0.05 is huge, paying $0.50 for a slightly more complex consolidation transaction is just nonsense.
It will kill the price rally. I don’t care much about the price, but price increases bring lot of fresh blood faster than ANY onboarding efforts so far. I’ve got into Bitcoin in 2013 because it doubled the last month. I bought in, then I started figuring out what the heck did I just buy… If the fee at the time was $1 and I had a choice of thousands of coins with lower fees, I would have probably immediately switched to something else. Here I am 8 years later, brought in by a price increase AND low(nearly zero) fees.
$0.50… $5… It’s CRAZY expensive for the world as a whole where 50% lives on less than $5/day and 10% lives on less than $2/day.
This will instantly kill services like read.cash and noise.cash, since most of our transactions are a few cents. It will kill all tipping everywhere. Also, any games that could use it as in-game currency, etc… Probably even stuff like juungle.
It will probably start blocking smartBCH from taking off. Or vice versa, people might move all of their economic activity to smartBCH, making BCH look kind of like dumbBCH.
What about zero-conf?
Yes, zero conf is great, but we’re also talking about the relay fee here. Your transaction with a lower fee won’t even reach another user’s wallet or any of miners mempools.
What should we do?
It’s a hard question. I don’t have any definite answer, so I’ll put some thoughts here.
The miners are spending electricity to validate these transactions. Right now, I don’t think miners will even care if transactions were $0.00, the majority (like 99.999%?) of their profit comes from the block rewards. This will probably be the case for the next probably 10-20 years (we’ll still have considerable block rewards). At the moment I think it’s safe to assume that if $0.003 for a normal transaction was ok for miners for the last few years, it would be ok for them in the next 10-20 years (after that we could adjust).
However, the blockchain itself knows nothing about the price… yet the price definitely can kill the adoption. Yes, you pay 1sat/b in 2021 and in 2031 - the blockchain doesn’t care, but at the same time it might be a difference of $0.006 and $6,000 in the real world.
Somehow we need to make blockchain aware of the price. It’s possible to do it directly or indirectly.
Directly. For example setting the default node relay/mining fee in US dollars and using the US dollar price feed like CoinGecko or AnyHedge price oracle. This adds quite a bit of trust and centralization, so ideally it should use multiple feeds and take a median price to avoid any party messing up with Bitcoin Cash transaction fees directly by manipulating its feed.
Indirectly. Basically, using the relation between included transactions and their sat/b (kb/mb) pricing. Something that maybe looks at the mempool… I don’t know. It’s much more “blockchain-way”, but at the same time I have no idea how to do it.
Can’t we just trust miners to set the price?
In my opinion, no, because the miners act on their greed, of course and as mentioned above - they don’t even care about the number of transactions they include - they aren’t a part of their income in any measurable way for now. That means they might set the minimum inclusion fee to $1000 and not care. At the same time the other side (users) also don’t care about miners that much, they will just leave for another coin.
You could say that miners care about usage… but at the same time, I think we’re at tragedy of commons here. Miners won’t care about the fact that users leave for Bitcoin X or Bitcoin Y, since they can mine any of them. HathorMM not mining any transactions is an excellent example here.
Who decides then?
This means that economic participants of the BCH ecosystem and node developers need to decide on the transaction price / relay fee, because we’re the only ones interested in keeping fees at an absolute minimum (miners don’t care about this, random new users too - they have lots of cheap coins to select from). Also the long-term coin holders, who plan on keeping using the coin for some long time.
This means that we can’t just toss this to miners and ask them to choose a reasonable fee. We need to add a downward pressure at least (and miners will maybe start to add an upwards pressure in return).
What to do?
Again, I don’t know and I’m inviting people to propose ideas.
My personal suggestion would be to use multiple USD price feeds and set the default relay fee to be $0.003 for the 220 bytes transaction, so like 1.36 cents per KB.
Then start communicating this to wallets.
Maybe add a RPC call that returns the current minimum fee. That way maybe a service could be built that polls the nodes for their fees
Maybe add this minimum fee to the block template, so that the node software can communicate the current minimum fee so that wallets can watch it.
Maybe something else.
I really hope that people smarter than me can propose something.
I see it as the biggest current problem that will prevent mass adoption and we’re the ones who should be solving it now, before it becomes a real problem.