When I evaluated why the test was failing, I noticed that changing the value for NORMAL_FEE_FILTER
on its own was insufficient for making the test pass. Digging further into the mechanics on how the policy filters worked, and looking logs on my local version of the code this is what I found:
I made the change from 9170997
to 9936506
because, reducing minrelaytxfee halves min_fee_limit (500→50, fees.cpp:1090). This alters the geometric sequence in MakeFeeSet (fees.cpp:1092-1095).
With spacing=1.1 (set in fees.h:322), starting lower fits one more bucket before capping at 1e7, yielding a higher max (9936506
) due to floating point multiplication.
This can be verified independently if you run FeeFilterRounder with CFeeRate(100) vs CFeeRate(1000), and call round(MAX_MONEY).
To @instagibbs’s point, if the better approach is write a new set of tests instead of working with the poorly written tests we have now, happy to help when I have time.