Soft limit on HBD printing is effectively not working due to hard limit on price
There are two mechanisms that limit HBD. The main one is a soft limit. When virtual supply is updated in database::update_virtual_supply
(once after witnesses are rescheduled and new median price is established, second time after proposals and comments are paid out which changes global supply of HBD) dynamic_global_property_object::hbd_print_rate
is set, that influences portion of comment rewards that can be given out in form of new HBD. The limits are currently set on 9% when HBD print rate starts to go down and 10% when it completely stops (the percentage is a portion of HBD converted to HIVE at current price in relation to virtual supply, since HF24 the HBD on hive.fund
does not count). Here is the relevant piece of code: https://gitlab.syncad.com/hive/hive/-/blob/master/libraries/chain/database.cpp#L4749
It is a soft limit because it does not completely stop production of new HBD - you can still get it as interest on your HBD, also conversion inside treasury still happens normally.
The hard limit is enforced in database::update_median_feed
that is called right after witnesses are rescheduled, before soft limit above is applied. The hard limit works differently. Instead of stopping production of HBD, it changes price of HIVE in relation to HBD. If the actual market price (as reported by witnesses) happens to be smaller than minimum (which is the price HIVE would need to be at for all existing HBD to be exactly hardcoded 10% of virtual supply), it corrects the price upward to that minimum. Such corrected price is used by soft limit, so of course soft limit will never be crossed, especially that it doesn't even count substantial amount of HBD on treasury. The code: https://gitlab.syncad.com/hive/hive/-/blob/master/libraries/chain/database.cpp#L4213
Turns out the HF20 (when soft limits were raised from 2% and 5%) put upper soft limit on the edge of hard limit, and HF24 (when we stopped counting HBD on treasury) made a big step forward in the same direction making soft limit irrelevant.