regen

Prop 67: Finish what #64 started: clamp REGEN emissions to a flat 3.50% (inflation_max = inflation_min)

I authored proposal #64 from this same address, and #64 did not finish its job. It lowered inflation_max from 10% to 7%, which saved the network real money, but it did not unpin the rate, and the reason is an error in my own analysis. This proposal corrects it. WHAT IS TRUE ON CHAIN AS THIS WAS BUILT (every figure read live, none quoted from a document; reproduce commands at the end): inflation is 0.070000, which is exactly inflation_max — the signature of a rate welded to its ceiling, not one settling toward a target. x/mint moves inflation by rate_of_change = (1 - bonded_ratio/goal_bonded) * inflation_rate_change, dividing bonded tokens by the bank keeper's TOTAL supply. Bonded is 85,396,190 REGEN against a total supply of 238,632,064 REGEN, so the real bonded ratio is 0.3579. In #64 I used roughly 0.606: I divided the then-bonded ~89.7M by ~148M, which is a CoinGecko CIRCULATING-supply figure, when x/mint divides by total supply. Against goal_bonded of 0.6 the sign stays positive at +0.4036/yr, so inflation is pushed up and held at the ceiling and cannot come down on its own. goal_bonded would have to be strictly below 0.3579 to flip it; at exactly equal, rate_of_change is 0 and the rate simply holds. WHAT THIS CHANGES: exactly one field. inflation_max goes from 0.07 to 0.035. inflation_min is ALREADY 0.035 and is left untouched. Because max and min are then equal, the mint rate is clamped to exactly the 3.50% parameter regardless of bonded ratio — the clamp is what the two together produce, not a second change. Every other mint param is read live and passed through unchanged. One standard x/mint MsgUpdateParams, effective the moment it passes, no chain upgrade. THE NOMINAL RATE IS NOT THE REALIZED RATE, AND I WANT THAT ON THE RECORD RATHER THAN DISCOVERED LATER: x/mint mints annual_provisions/blocks_per_year each block. blocks_per_year is 4360000 (implying 7.23s blocks) but measured block time over the last 100,000 blocks is 5.641s, so the chain produces about 5,590,079 blocks/yr and over-mints by 1.282x. Nominal annual_provisions reads 16,704,244 REGEN/yr, but REALIZED emission is about 21,416,983 REGEN/yr, i.e. 8.97% of supply, not 7.00%. After this passes the parameter is 3.50% and the realized rate will be about 4.49%. So the real saving is about 10,708,492 REGEN/yr (about $12,434 at $0.00116112/REGEN), roughly 4.49% of supply per year, and it accrues to every holder. Anyone can check this by measuring supply growth; I would rather state it than have it used against the proposal. Correcting blocks_per_year itself is a separate proposal and is deliberately not bundled here. DISCLOSURE — THIS HALVES MY OWN BURN PROGRAM. I also authored #66, the M013 burn pool, from this address. #66 streams 15.0% of community-pool revenue to the null sink, and that revenue is 17% of block rewards, so it scales directly with emissions. The burn currently runs about 546,133 REGEN/yr; after this it runs about 273,067 REGEN/yr. I am cutting my own burn program's throughput roughly in half. Net supply change still improves by far more than the burn loses, because the burn is a small fraction of emissions — but voters should know this before voting, not after. Everything already accumulated in the pool and the sink is untouched. EVERY OTHER COMMUNITY-POOL-FUNDED PROGRAM IS ALSO HALVED, for the same reason: LiquidityDAO emissions transfers, the Tokenomics WG funding, the X-Influencers pilot, and any future pool-funded work including my own. Pool inflow goes from about 3,640,887 REGEN/yr to about 1,820,444 REGEN/yr. ON THE SECURITY BUDGET, HONESTLY: this cuts validator income and that deserves a straight answer. Note emissions accrue to DELEGATORS, not to validators — what reaches an operator is commission on its delegators' rewards plus rewards on its own self-bond. Commission across all 14 active validators is about 1,760,384 REGEN/yr (about $2,044 at $0.00116112/REGEN) combined, self-bond excluded, so per-operator revenue is small either way and this halves it. I am not pretending that is costless. The argument for doing it anyway is that no plausible emission rate at this valuation turns that into a viable business; only revenue and a curated set do. AND THE SET IS SHRINKING WHILE I PROPOSE THIS: 14 validators are active, 1 are currently UNBONDING (7,371,269 REGEN), and many unbonded monikers read "please redelegate". Disclosing that is stronger than letting someone raise it. TWO STRUCTURAL CONSEQUENCES I DO NOT WANT TO HIDE: (1) with max == min there is no automatic inflation response to any bonded ratio, so every future adjustment needs a governance vote. (2) goal_bonded stays on the books at 0.6 and becomes decorative; a future proposal that raises inflation_max alone would silently re-arm it against a 0.3579 ratio and re-pin to the new ceiling. A later proposal should retire or realign it. THIS IS NOT THE VALIDATOR-SET QUESTION. It does not remove anyone from the set; max_validators is untouched and not proposed here. It shares a premise with the validator-economics discussion at https://forum.regen.network/t/validators-and-staking-yields/616 and with the Proof-of-Authority discussion on the forum — note those are forum threads, not on-chain proposal numbers. NOT ZERO, ON PURPOSE: zero emissions would ask validators to run for free. 3.50% is defensible today and leaves the road to zero open if the network later commits to a curated set. REVERSIBLE, WITH CAVEATS: one later MsgUpdateParams restores the parameter, no upgrade needed. But restoring inflation_max to 0.07 would not restore that rate immediately — inflation would sit at 0.035 and climb at +0.4036/yr, taking roughly 32 days to re-reach the ceiling; and reversal costs a fresh 2000 REGEN deposit, a full voting period, and quorum from a validator set whose income this cut. "Reversible" is true; "instant and free" is not. REPRODUCE EVERYTHING: /cosmos/mint/v1beta1/inflation, /cosmos/mint/v1beta1/annual_provisions, /cosmos/mint/v1beta1/params, /cosmos/staking/v1beta1/pool, /cosmos/bank/v1beta1/supply/by_denom?denom=uregen, /cosmos/distribution/v1beta1/params, /cosmos/protocolpool/v1/continuous_funds, and two /cosmos/base/tendermint/v1beta1/blocks/{h} timestamps for block time.