A Proposal for Voting Stake Calculation - General - Algorand
A Proposal for Voting Stake Calculation
post by aybehrouz on Feb 25, 2021
Your feedback is appreciated!
Consensus on GitHub
post by Maugli on Feb 26, 2021
It seems logical, that user stake should be dependent on the time interval of Algo’s held, too, not only the amount of Algos. I support this!
post by tebok on Feb 26, 2021
Out of curiosity, what exactly are the reasons why older tokens should be given more weight in the consensus?
I understand the reason given in the github link, and that to mitigate against it, it may be worth setting the weight to (near) zero for some predefined time. But why would there be a difference in weight whether someone has held the tokens for 1 year vs 10 years for example?
post by aybehrouz on Feb 26, 2021
Good point!
That’s why I’ve used exponential moving average instead of arithmetic mean.
As a rule of thumb we can say that EMA only remembers the last 3 / alpha data values.
For example, if our time step is equal to one month and our alpha is 0.1 the voting stake for a newly created account with 10 ALGOs will change with this function:
stake(n) = (1-0.9n)10
You can see the interactive plot here.
As you can see after 30 months the new user’s stake has reached almost 10.
post by tebok on Feb 26, 2021
Perfect explanation @aybehrouz, and a nice solution indeed. Thank you.
post by aybehrouz on Feb 27, 2021
And what do you think about calculating rewards based on users’ voting stake instead of their raw ALGO balance?
post by tebok on Feb 27, 2021
In my humble opinion, even though at first it may seem to make sense to tie the rewards to the voting stake, I’m actually against the idea for the following reasons.
I liked your proposal as a solution to a specific problem: The risk of an attacker temporarily getting hold of a large number of tokens. From an economic standpoint, if the rewards were tied to a similar weighting function with longer holding times increasing the rewards, it would only discourage existing Algo holders from using their tokens.
post by aybehrouz on Mar 2, 2021
Thanks for sharing your opinion.
When I was writing the example I just wanted to explain the behavior of the EMA. An attacker who managed to buy billions of ALGOs could hold them for a few days too. If we require holding ALGOs for several years that could have some benefits:
- If an exchange acquires more than 1/3 of all ALGOs, the community have enough time to react.
- If a multi billionaire decides to attack the agreement protocol by buying ALGOs he will have to hold them for years before attacking.
Currently, we have no rewards in Algorand! The currency is inflating at a certain rate and all users' balances inflate with the exact same rate. No one is getting anything.
post by tebok on Mar 2, 2021
Thank you again for the very clear explanation, @aybehrouz, and I agree with most of the points you made.
I was also trying to make a general statement that would apply to any kind of rewards, e.g., if separate rewards were given for running a node.
post by aybehrouz on Mar 3, 2021
That’s a very good point and this issue is worth discussing. The problem of low total stake arises in other situations too.
However, with a good implementation, this problem will not threaten the security of the system. Because we can easily design an emergency shut down mechanism which halts the operation of the blockchain when it detects that the total active stake of the system is too low.
In my opinion, the best solution would be to have a minimum amount for the user’s trust value as I’ve described in the updated version of the document.