Golden Algorithm RFC


#1

GOLDEN ALGORITHM

Additional Network Developer Staking For Era(n) =

AVG OF:(

POKT Created in Era(n-1) - Pocket Burned in Era(n-1) - Delta Stake in Era(n-1)

POKT Created in Era(n-2) - Pocket Burned in Era(n-2) - Delta Stake in Era(n-2)

POKT Created in Era(n-3) - Pocket Burned in Era(n-3) - Delta Stake in Era(n-3)

POKT Created in Era(n-4) - Pocket Burned in Era(n-4) - Delta Stake in Era(n-4)

POKT Created in Era(n-5) - Pocket Burned in Era(n-5) - Delta Stake in Era(n-5)

)

This post is to cite the original golden algorithm that was formulated on September 2018.

EDIT:
Idea:            Systematic removal of tokens from the circulating supply
Purpose:      To provide minimize supply inflation of the POKT tokens
Importance: TBD
How:            Make the developers of the network stake more to offset the newly created tokens.

NOTE: Stake should not be equated with burning. The amount staked is only temporarily removed from circulation


#2

I think it would be helpful to provide some context as to where this would be used within the protocol, and why is it important?


#3

Yes, I added some context


#4

My only doubt about this formula is that an attacker can buy POKT to pump the price and not do anything with it, which increases the cost of entry for all participants.

A solution to this issue may be some sort of secondary market that evens this issue out.


#5

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.)


#6

I believe I did

Also, we have previously discussed using the number of tokens burned within the Golden Algorithm. Our fear that the value exchange (extra amount needed to be burned) may be too great to provide a real economic utility.

I second the creation of this thread.


#7