mempool: Remove all quadratic stats; add activation logic for tachyon

Summary

This commit does the final dirty deed of removing all of the quadratic stats (ancestor/descendant fees, etc).

  • Removed all quadratic stats from CTxMemPoolEntry and code that maintains them.
  • The only stats that aren't removed are the relay-rules-sensitive "descendant" stats which are only maintained pre-activation, then are disabled post-activation.
  • Added activation conditionals in AcceptToMemoryPoolWorker and in wallet.cpp for enforcing chain limits up until tachyon activates, after which time there will be no limit.
  • Performance on ATMP, Evict and Reorg in the tachyon case (where all the stats are no longer calculated) is extremely high

Test Plan

  • ninja all check-all
  • Try the benches:
    • ninja bench_bitcoin
    • src/bench/bench_bitcoin -filter='(Genera.*)|(MempoolAcc.*)|(Evict.*)|(Reorg.*)'
    • Try the above both with and without this commit.

Advanced:

  • Run a node for a while, do IBD, etc.
  • Start bitcoind with -tachyonactivationtime=1000000000 -expire=0 (tachyon already activated) and try and send it lots of very long chains of tx's, etc.
Edited by Calin Culianu

Merge request reports