On-chain Inflation Rate and Rewards Distribution

I am trying to figure out the inflation total rewards per block since quite a time now and I still can’t figure it out. I have read the docs and looked at the code. From the on-chain annual inflation rate that is recalculated every block, I evaluated the block inflation in two different ways
1- block inflation = annual inflation rate / blocks per year
2- block inflation = (1 + annual inflation rate)^(1 / blocks per year) -1
For each option, I multiplied by the total supply at that block to obtain the total inflation rewards for that block to be distributed among all active validators.
The problem is, when I compare this number with the sum of the gross rewards received by all validators, minus the block transaction fees, I don’t come up with the same number in either case.
Hence, on-chain total realized rewards don’t seem to be in line with the annual inflation rate defined by the protocol.
I have tried various alternatives to replicate it and didn’t find any that works.
Does someone has an explanation for this? Thanks!


I would do it via an easier route.

The inflation is related to the total supply of the project. Which means that to determine how much ATOM will be minted per block needs to be derived first.

Total new supply per year = Inflation % * Total current supply
New ATOM per block = total new supply per year / amount of blocks per year

And then you can do the math further to determine how much each staked ATOM should get as a per block reward.