Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save godsflaw/a93960f3422abc9af603bc47543adcbc to your computer and use it in GitHub Desktop.
Save godsflaw/a93960f3422abc9af603bc47543adcbc to your computer and use it in GitHub Desktop.
eli5 mkr rough draft
Continuous Voting and the peculiarities of the 7/26 Executive Stability Fee Vote
(Note, the Maker system uses 'fanciful' names for its internal system objects and functions, which tends to put off readers initially, but the author believes they are absolutely fundamental to quickly grasping the system's complex concepts)
*IMPORTANT INITIAL NOTE*: This issue does not ultimately put the platform at any real risk, but will require more MKR to be put into changing the rate than one might have guessed initially.
*Explanation of the voting system overall*
When the MakerDAO governance polling system signals for a Stability Fee change, it does not automatically change the official rate in the system. Instead, the rate outcome from the poll is crafted into a proposal with a `spell`, which is a contract deployed to the blockchain that, when `cast`, will do the magic necessary to update the system to the new rate. Once a `spell` is `cast`, it cannot be cast again.
The Executive Voting system is managed by the `chief` contract, which is where this new proposal is added. MKR holders who have locked their MKR into the governance system can choose to commit their votes toward any approved proposal in this list. The `chief` also has one proposal designated as its `hat`. The `hat` is changed when someone calls the `lift` function on an approved proposal that has more MKR voted towards it than the current `hat`. If `cast` is called on a `spell` that is currently the `hat` on the `chief`, the new rate change will go into effect (provided that the `spell` has not been cast previously).
A note about the 'continuous' nature of voting: The proposals themselves may never 'expire', and any MKR holder can support any one (but only one) of the approved proposals at any given time (including a proposal with a previously cast spell). Adding or creating proposals, voting a new hat, and casting a proposal's spell are all actions that do not effect the MKR dedicated to the other proposals. MKR holders themselves must either withdraw their support completely, or change to support a new proposal, otherwise they will be continually voting for the same rate in perpetuity. This is the crux of where the issue arose today.
*Explanation of the issue MakerDAO faces today*
Historically, the system has worked such that the proposal with the most MKR committed to it was also the current Stability Fee (or the new upcoming voted fee). Over the past few months MKR holders have been voting in smaller amounts than back when there was more of a perception of a 'rate emergency'. This has led to a number of former proposals in our system which have 'dead' MKR still supporting them, even though their `spell`s have already been `cast`. One such proposal in the system has 78k MKR voting for it (whereas, the most recent executive vote on 7/19 passed with ~32k MKR). The 7/19 proposal passed because it had more votes than the current `hat`; however it was not the proposal with the most votes in the system (our 78k proposal that has already had its `spell` cast).
While older proposal's `spell`s cannot be `cast` a second time, they CAN be `lift`ed to become the `hat`. What happened today is that someone with knowledge of this situation used the `lift` command on the older proposal, which promoted it to `hat` status. In order for us to cast the `spell` that matches our 18.5% proposal, we must get its MKR support to be above the current `hat`, not whichever proposal's spell was most recently `cast`.
Either some of the 'dead' MKR must be withdrawn/changed from the old proposals, or we have to rally enough new MKR in support of the new proposal, such that we surpass the current `hat`'s votes. Once the 18.5% proposal has more votes, we will be able to successfully `lift` it and `cast` the spell to enact the new rate.
*Why is this a problem today, and not previously?*
The short answer is that no one has lifted an old proposal before. The current UI doesn't display proposals that have already been cast. Someone simply lifted an old proposal with lots of votes, which was a known and perfectly legal action.
I leave discussion of positive or negative impacts of this action for the comments, but one thing is certainly true: if this action drives more MKR voter engagement, then the system as a whole is much healthier.
*ELI5/TL;DR*:
-Every rate change is stored as a votable proposal that can cast a `spell`
-Voters support one proposal in the system
-Proposals may not expire, though their `spell`s can only be `cast` once
-To change the rate:
1) Add MKR to any proposal until it has more MKR than the current `hat`
2) `lift` that proposal, it becomes the new `hat` (replaces old one)
3) `cast` the proposal's `spell`, (if `hat`, then the Stability Fee will change)
-If you don't actively change or withdraw your vote, you will continue to support that rate forever
-Older votes were more popular than newer votes, and had more MKR still sitting on them
*Today*:
-Someone `lift`ed an older proposal with 78k MKR still on it (making it the new `hat`)
-To pass the new 18.5% proposal, we now have to overcome 78k MKR (or get older MKR to move)
- After that we can `lift` and `cast` the new rate into effect
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment