Network congestion on Jul, 10th, 2021

On July, 10th, 2021, there was network congestion caused many transactions to stuck in the mempool for many hours with a lot of bad side-effects (oracle pools not updating prices, RSV minting stuck etc).

The anatomy of the issue was as follows:

  • exchange started to collect miners dust for many months. Every transaction had 100 inputs. There were hundreds of txs.
  • the exchange paid 0.01/kilobyte for collecting transactions
  • currently, all the miners rely on the node to assemble block candidates. And block assembler simply sort transactions by fee/kilobyte.
  • applications are not flexible. Some time ago fee estimation API got landed into the node (in 4.0.3 release ), but it is still not used by any app it seems.
  • many blocks were empty at the same time

So many transactions did wait for (inefficient) inclusion of transactions for long time.

Mitigation plan:

  1. There will be a fix for block assembly to reduce number of empty blocks. Already done and will be landed in 4.0.13.
  2. Transactions sort order for inclusion should not be strictly deterministic. As for some time all the miners will use the node only, its block assembler should be randomized to certain degree.
  3. Verification cost for a transaction should be reflected in fee.
  4. Ideally, apps should start using fee estimation algos instead of setting flat fee. That would take long time though.

Sorry for my ignorance. How does them pushing 10,000+ txs at 0.01erg/kilobyte congest the network? Couldn’t others on the network just pay slightly higher fees?

Without knowing how many kilobytes per transaction, this seems like the network could be pretty susceptible to intentional transaciton spam attacks. Could it be that the network will just need to get bigger for that to not be the case?

I’ll wrap this into my SmartPools research out of necessity.