phelix wrote: An entity (pool or exchange) is aggregating lots of low value outputs. As this is good for the system in regard to future pruning efforts it is currently causing client time outs for miners, thus they go offline a lot. The entity seems to own a lot of NMC so it probably is not a deliberate attack.
The transactions come in waves of a couple hundreds to thousands, they are 18kb (100 inputs) or 27kb (150 inputs) large. They only cost the relay fee / kb to relay. The functions underlying the RPC call "getauxblock" can take quite a long time to go through processing these.
What we are doing in the new version to fix the issue is caching input information necessary for the mining relevant RPC calls (thanks again Domob!). Also we will limit tx size to 20kb as it's worse with larger tx O(numberInputs * txSize) and increase the relay fee to 1/5 of the minTxFee.
Edit rc1: While the previous version had things up and working already, the changes contained in this version removed the last bottleneck and the system should now be able to properly handle even the large waves of aggregator txs.
Everybody give it a shot:
http://namecoin.info/files/Namecoin_v0. ... _setup.exe
https://github.com/namecoin/namecoin/bl ... angelog.md
Relevant Github links:
- Add "mild" caching for priority calculation (latest in addition to a series of accepted smaller patches).
- Add more aggressive caching of previous txouts in CTxIn (closed but includes discussion of problem and fixes).
- getauxblock can take a long time
Recently, someone tried to aggregate lots of Namecoin. Their intentions were positive (it reduces the UTXO set) but they did not pay the minimum fee on their transactions.
The transactions should not have propagated, however, MIN_RELAY_TX_FEE was set to MIN_TX_FEE/50. We released an emergency fix which upped the minimum relay fee.
However, sending a large number transactions with a large enough fee to be relayed but not rapidly mined likely affects other currencies, especially merged minded alts.
A permanent fix requires improving the performance of getmemorypool and getauxblock when mempool has a large number of transactions.