I originally posted this in the Discord, thought it would be appropriate to move here.
Problem:
When you look at several projects, exchanges and speculating whales almost always lead the pack in voting power. This doesn’t make sense for DAOs and community ran projects. Smaller holders, no matter how long they’ve been supporting the project, are at a disadvantage and are drown out by these massive accounts. This leads to the project being driven by speculators and exchanges, who then vote on proposals to control the narrative to fit their wants and needs, rather than the community at large.
Solution:
Introduce a multiplier to voting power that incentivizes long-term participation from users, as well as prevents exchanges and speculators from having too much power.
Proposal:
When I was first introduced to Dragonchain in 2017, I was very intrigued by the idea of TIME. TIME works like this: User deposits token into their wallet. From that moment, they begin accumulating TIME. Every block the wallet gains more TIME. For the sake of this example, let’s say that every block a user generates .001 TIME for each token in their wallet. If the user holds 1000 tokens, they generate 1 TIME per block. TIME accumulates until the user withdraws any of the tokens, at which time it would be reset to zero. Deposits do not affect TIME. Now that you have a basic understanding of how TIME works, let’s apply it to voting power. In this case, we would use TIME as a multiplier to increase voting power for long-term participation. Let’s look at an example.
User 1 has 1,000,000 BAO. They are a speculator and have been trading BAO. Because of this, they accumulated very little TIME, let’s just assume they made a trade just now, so their TIME has been reset to zero. This would make User 1s voting power 1,000,000.
User 2 has 100,000 BAO. They are a long-term hodler. They’ve been holding for 1 year and have not withdrawn any BAO from their wallet. Ethereum processes roughly ~6500 blocks a day. For each block, User 2s multiplier increases by .001. At 6500 blocks a day, there would be 2,372,500 blocks in a year. To get our multiplier we do the math: 2,372,500 * .001 = 2,372.5. You then take this number and multiply it by their total holdings: 100,000 * 2,372.5 = 237,250,000
User 1 voting power: 1,000,000
User 2 voting power: 237,250,000
As you can see, although User 2 holds far less BAO than User 1, their voting power is exponentially larger because of their long-term participation.
In the previous example, we did not apply the current method of calculating user voting power to make it as simple to understand as possible.
For our final example, we have a user who is a long-term BAO holder, and has been providing liquidity for some time. Let’s calculate their voting power.
This user has 3,000,000 BAO, 16,000,000 locked BAO, and is staking 1,500 LP BAO-ETH LP Tokens. They’ve not made any withdrawals in 1 year, and have been providing liquidity for 6 months.
Based on the current formula for determining voting rewards we would take 33% of the users locked BAO (5,280,000), 25% of their unlocked BAO (750,000) and 3x their BAO in the BAO-ETH pool (~1,800,000 at time of writing).
((Unlocked BAO + Locked Rewards) * Wallet TIME) * (BAO LP * LP TIME) = Total Voting Power ((750,000 + 5,280,000) * 2,372.5) * (1,800,000 * 1,186.25) = 16,441,425,000
With a total voting power that high, it would be nearly impossible for any exchange to have more voting power than your “average” long-term user.
To take this one step further, we can also include a modifier for Participation. If you’ve never voted, your voting power would be the value above. For every consecutive vote, your Participation would increase by 1, and for every vote you miss, it would decrease by 1. In that case, the formula would be the same, but with the addition of an IF statement:
if Participation >= 2 then
(((Total Holdings + Locked Rewards) * Wallet TIME) * (LP Tokens * LP TIME)) * Participation Multiplier = Total Voting Power
else
(((Total Holdings + Locked Rewards) * Wallet TIME) * (LP Tokens * LP TIME)) = Total Voting Power
Conclusion:
By introducing a multiplier while determining user voting power, we can assure that the protocol is controlled by the users who are most active and committed to the project. Exchanges and speculators will constantly be withdrawing BAO from their wallets, which will keep their multiplier very low and prevent them from controlling governance.