Note that staking more is not fundamentally opposite to creating tokens, only burning them is. A node can log out (provided they are eligible to do so) and withdraw their stake, then use it for whatever they like.

Let’s presume that we want to have net zero issuance (leave whether we would actually want to do so for another thread) like so:

let y = (total tokens issued over 5 eras - total tokens burnt over 5 eras) / 5

=> y = (c_5e - b_5e) / 5

target y = 0

(Looks like Mathjax isn’t enabled.)

Note that dynamically adjusting the rate of tokens issued is difficult since demand is more unpredictable than supply.

One way to do this is, for all types of burning, multiply by some variable, alpha, that dynamically adjusts in inverse proportion to y, i.e.,

alpha = k / y

I am trying to prove/remember the formula for obtaining a stable y’, i.e. to avoid overshooting or undershooting y’ (e.g. if y’ was positive in the previous 5 eras we want it to get back to 0 as quickly as possible, not be positive, or undershoot, or negative, or overshoot). I’m thinking of something I learnt in numerical methods to recursively calculate an irrational number in an efficient, fast manner. Maybe someone who is good with maths can help otherwise I can come back to this or ask around.

To find k, assume that we then want the rate of change of y to be minimal, approximating 0, i.e. for y to be relatively stable.

You could use a *decentralized* oracle to calculate the net tokens issued and burnt over the past 5 eras.

Note that y is a variable of two variables, c and b.

Assume that c and b are continuously differentiable.

So, differentiating y with respect to time (by the chain rule) gives:

dy/dt = dely/delc * dc/dt + dely/delb * db/dt

=> y’ = (c’+b’)/5

So we want y’ = (c’ + b’)/5 = 0 in the long run.

Or more simply and intuitively, b’ = -c’

(Again, assume that c’ and b’ are calculated by a decentralized oracle. A centralized oracle will not suffice for security.)