Just want to add some substance to a couple of claims above:
made the first PR to comet to adopt cat
Grateful for the PRs because we’ve missed feedback on CAT mempool until this P2P issue was surfaced. It validates some of the work we’ve been doing to reduce bandwidth consumption, and makes the team confident we should continue investing time in it, thanks for that!
@AdiSeredinschi told us that CAT was non viable
I said the Comet team in Informal has reservations about the code. It’s not ready to ship, period. Not in main
and particularly not in 0.34.
The team has been doing experiments with mempool (CAT and otherwise) since this summer. The reason for these experiments is because we want to reduce bandwidth consumption in Comet, and the CAT (push/pull) design seems elegant for that purpose. For example, this branch in August has some of the earliest CAT mempool ported code. No PR was opened because we found problems with the ported implementation and were not able to replicate findings from earlier experiments with CAT. Think of that as failed experiments, of which there are many hehe (some tracked here).
Since then, we fixed some things & opened another PR that has the most up-to-date version of our ported CAT code, and which seems to indicate it works better, but it’s still not ready for shipping until comprehensive testing is done. If any network wants to use untested code, we would be open to releasing this as “experimental”.
Since the CAT design is a way to generally reduce mempool-related bandwidth consumption in a network, this can potentially make gossip more resilient to periods of high congestion. To be clear: this is a hypothesis and depends on the network topology. In a network (eg such as Osmosis) that hash high connectivity, the CAT design has potentially not much impact because the first step in CAT approach (push each new tx to all direct neighbors once) will flood the network anyway, and result in the same overwhelming pattern as the “push” mempool. The more sparse a network topology, the better the impact of the CAT design on expectation.
Our intention was to get CAT into the v0.34.x branch
The Informal team approaches porting code into v0.34 with surgical precision. Opening a PR with copy-pasted 4K LOC will not fix any problem, and instead puts work on the team maintaining Comet. Proving a solution works takes a lot of effort. It would be good to prove first that the solution works, and then argue about it (not the other way around). Hope this makes sense, in particular since v0.34 has been in production for almost 3 years (and 0.35 and 0.36 were retracted due to P2P/networking performance).