To begin with we need to establish how time is partitioned in the Cardano blockchain in order to calculate how rewards and treasury funds are distributed.
The consensus protocol Ouroboros defines a time frame called epoch that last for 5 days and work in a circular fashion: when one ends, another starts.
Let’s say we send Ada to a friend or family or we pay our holidays with Ada. Every transaction we made will have a transaction fee, these fees are in place for Preventing distributed denial of service Attacks and “Spamming the Network” with dummy transactions. The sum of the fees for every transaction created in the blockchain is sent to a virtual pot. In Cardano fees do not go directly to the block producer, instead, they are pooled and then distributed to all pools that created blocks during an epoch and the treasury. In this example around 58K is collected in transactions fees and added to the pot.
Also during the same epoch a fixed 0.3 percentage (ρ) of the remaining ADA reserve is added to that pot, in this example 38M from the reserve are added to the pot. Right now is the 0.3% but it can be changed in the future.
The virtual pot is splitted, a fixed 20 percentage (τ) of the pot is sent to the treasury, and the rest is used as epoch rewards. In this case 7M goes to the treasury and 31M goes to rewards. These rewards are auto-generated by the protocol itself, and are not managed by the stake pool operators.
This system is designed to ensure that the portion of rewards taken from the reserves is high at the beginning, when transaction numbers are still relatively low. This incentivizes early adopters to move quickly to benefit from high initial rewards. Over time, and as the number of transactions increases, additional fees will compensate for smaller reserves.
This mechanism also ensures that available rewards are predictable and do not vary dramatically. Instead, rewards change gradually. The fixed percentage taken from remaining reserves every epoch guarantees a smooth exponential decline.