Increase Aragon voting duration to 72 hours: operation plan

Intro

Recently, Lido DAO voted for increasing voting duration from 24 hours to 72 hours. It would allow more LDO token holders to participate in voting to have a more meaningful outcome in general, especially on strategic decisions and major protocol upgrades.

From the technical perspective, Lido DAO governance processes rely on Aragon infrastructure, and original Aragon DAO Voting app has no way to change voting duration. We have developed, reviewed and audited an upgrade for DAO Voting which provides voting duration tuning. Auditors reported a major note that voting duration changes could affect current and previous votings. While we acknowledge the finding, the duration upgrade is still feasible if we properly and thoughtfully tackle it with operations by carefully drawing the actions and possible conditions. Basically, dev team would have to ensure no vote, either running or concluded, is retroactively affected by the change in the voting duration.

Prerequisites

Upgrade planning should be done considering that any votes started within 48h (in the following sections we extend the margin to 72h for further consistency) before the voting upgrade vote start and not enacted before its enactment would get their voting time frame updated as well.

Therefore, we setup the prerequisites to secure the upgrade procedure:

  • we should ensure that there are no unexecuted votings in last 72h
  • we should avoid running other Aragon votings in parallel
  • we should not run omnibus multipurpose voting for the upgrade itself, just a standalone voting for the one upgrade point only

So, we propose to declare the “Aragon voting silence week” period devoted solely to the upcoming upgrade lasting 7 days.

Note that running another voting within the “silence week” doesn’t raise any extra risks. Only some additional visual and communications encumbering may be introduced. So, we encourage to not create and to not vote for another votings during the silence week to keep the process smooth and convenient.

Actions overview

The overall actions plan is following:

  • Pre-deploy new DAO Voting contract implementation
  • Announce the upgrade across Lido public communication channels
  • Run standalone voting with necessary upgrade actions
  • Enact voting if quorum reached
  • Re-schedule the omnibus flow to start votings on Tuesdays

Timetable

April-04-2022 (Mon) 12:00 midnight +UTC: Start “Aragon voting silence week”.
All previous Aragon votings should be already executed or rejected.
No new votings except the upgrade one are expected.

April-05-2022 (Tue) 10:00 AM +UTC: DAO Voting contract implementation deployment deadline (it’s ok to be there ahead of schedule).
April-06-2022 (Wed) 03:00 PM +UTC: Public announce for the upcoming upgrade voting.
April-07-2022 (Thu) 12:00 noon +UTC: Upgrade voting start.
April-08-2022 (Fri) 12:00 noon +UTC: Enact voting if succeeded.

Technical details

Why do we need “Aragon voting silence week”

Voting duration changes are retroactive. If the unexecuted votings exist that fall into the new extended voting duration, then the votings become ongoing and final decision could be overrode with the new votes. To ensure that this behavior wouldn’t been used incorrectly, we have to setup a 72h margin excluding all other votings before the upcoming upgrade. It’s not a problem if someone started another voting during the upgrade period. We only want to say that these votings could be misinterpreted, and it’s better to avoid vote for them.

DAO Voting implementation outline

You could proceed with the following audited commit to review the changes.

Key points:

  • we introduce new UNSAFELY_MODIFY_VOTE_TIME_ROLE role to be responsible for duration changes;
  • to be able to change the voteTime variable, we add the unsafelyChangeVoteTime setter function guarded by the new role;
  • new event ChangeVoteTime provides a way to record all duration changes.

Upgrade script steps

An upgrade script will implement the following five steps:

  1. Push new voting app version to app repo.
  2. Upgrade the DAO Voting contract implementation (it follows the proxy pattern).
  3. Grant UNSAFELY_MODIFY_VOTE_TIME_ROLE to DAO Voting.
  4. Update voting duration with unsafelyChangeVoteTime to 72 hours.
  5. Revoke UNSAFELY_MODIFY_VOTE_TIME_ROLE from DAO Voting.

Contingency plans

  • If something goes wrong before the voting upgrade will start, we will announce necessary actions and estimations on research forum to perform upgrade later.
  • If something goes wrong during the voting upgrade before the quorum will be met, we will communicate key Lido stakeholders to vote against the upgrade (which, of course, may help or not).
  • If something goes wrong after the voting upgrade will be enacted, we need to schedule a war room asap to discover the purposes and options to mitigate the issue.
10 Likes

The change is long-awaited, but given that the voting contract is a vital device for the Lido DAO the upgrade must be carried on with great care. With Referral Committee setup and moving referral payouts to the Easy Track, I can see having a dedicated week for the upgrade. In the same time, need to repeat that even if there would be the need for the DAO votes on the same week with the upgrade, there’s nothing “non-doable” about it, though extra care should be applied.

7 Likes

UPD. We have deployed the proposed implementation on mainnet. Currently we are challenging the implementation with tons of fork tests to be completely sure about the tech side of the upcoming upgrade voting.

See also deployed DAO contracts and tests PR

3 Likes

The voting is live now: Aragon

LDO holders are able to cast their votes until April 8th, 12:00 noon +UTC.

2 Likes

The vote has been passed and executed: Ethereum Transaction Hash (Txhash) Details | Etherscan

The next omnibuses will last for 72 hours.

3 Likes