I have shared my views on voting a while ago. After getting positive responses and suggestions I am turning it into a proposal. A similar one trying to address the same issues is suggested by Crypto_Chemist, which includes rewarding as well. I believe we will soon have a satisfactory voting mechanism that will bring us closer to be the best dex on the market.
I have copied the original post for newcomers and added FIFO at the end.
We are all disturbed by the behaviour of some huge PNG holders. Some of them have been so far malicious. We want to prevent any possible attacks that might hurt Pangolin in the future. Our community is not against whales. We just want to protect our DEX.
On the other hand we also want to help and protect small investors who believe in this project, while sustaining a functioning democracy.
I guess we need to think slightly out of the box to address the issues. Combining these two aspects I would like to suggest:
Dynamic time-weighted quadratic voting. This will result in every PNG being valuable as much as they contribute to the community.
Benefits:
- There will be no minimum cap (or a very small amount if really necessary) per address to be able to vote, hence every PNG holder is motivated to contribute and yet not able to fully manipulate
- Sudden transactions for possible manipulations will be fully eliminated
- It will create less volatility
- There will be no restrictions on staking/pooling. Free to withdraw/claim anytime.
The basic formula:
The voting power will be based on the quadratic value of total number of PNGs an account has and will be multiplied by the number of days (per day the multiplier will increase 0.001) it holds the PNG.
VP = √PNG x Days
VP = Voting power
PNG = The total amount of PNGs an account has at the time of voting
Days* = Multiplier based on the total number of days an account holds the total number of PNGs. Multiplier increases by 0.001 per day.
*please see below for further details
Example:
Account #1
Holds 64 PNGs for a day.
√64 x 0.001 = 0.008 voting power
Account #2
Holds 64 PNGs for a year
√64 x 0.365 = 2.92 voting power
Account #3
Holds 1,000,000 PNGs for a day
√1,000,000 x 0.001 = 1 voting power
Account #4
Holds 1,000,000 PNGs for a year
√1,000,000 x 0.365 = 365 voting power
Ceteris paribus, a whale has much more power as it should have and yet cannot dominate the decisions. Small investors are protected as long as they contribute to the community by keeping their PNGs.
In a perfect setting, airdrop PNGs should be eliminated from voting power but I do not think it is technically possible.
For liquidity pools, multipliers can be adjusted. AVAX-PNG pool contributors can get three times more, other PNG pool contributors get two times more.
I tried to address all the issues mentioned above in the discussions. Feel free to modify as much as needed.
*One question would be the calculation of some accounts with constant transactions. To make it fair, just and easy to calculate at the same time, I would suggest FIFO (first in, first out) method. It might look complicated at first glance but it is pretty easy to calculate and formulate.
Total number of days multiplier for the total number if PNGs an account has should be based on the days calculated backwards from today starting form the latest transaction. Hence, FIFO.
Days = T-b
T = Today
b = the latest date for the amount of PNGs added to the account.
Example:
Account #1
Holds 64 PNGs for a day. There is not much to calculate since there is no history.
√64 * 0.001 = 0.008 voting power
Account #2
Holds 64 PNGs for a year. But there might be such cases:
A) This account had initially 64 PNGs. During the course total PNGs increased and decreased.
Breakdown:
T-180 (180 days ago): 64 PNGs
T-90: 256 PNGs (+192 PNGs)
T-60: 64 PNGs (-192 PNGs)
T: 64 PNGs (no change since the last transaction)
Without FIFO, this account would have 1.44 voting power.
√64 x 0.180 = 1.44
With FIFO, 64 PNGs this account has acquired on T-180 are gone on T-60. Thus, total number of days for current 64 PNGs is 90. Hence, this account would gave 0.72 voting power.
√64 x 0.090 = 0.72
B) This account had initially 64 PNGs. During the course total PNGs increased.
Breakdown:
T-180 (180 days ago): 64 PNGs
T-90: 256 PNGs (+192 PNGs)
T: 256 PNGs (no change since the last transaction)
Without FIFO, this account would have 2.92 voting power.
√256 x 0.180 = 2.88
With FIFO, 64 PNGs this account has acquired on T-180 and the additional PNGs it acquired on T-90 will be calculated separately.
(√64 x 0.180) + (√192 x 0.90) = 1.44 + 1.25 = 2.69
In a nutshell:
We look how far the current PNG value in an account stretches back and then add the days to the multiplier for that amount.