1Hive / celeste-swarm

0 stars 0 forks source link

Create proposal for deployment of Celeste #5

Closed willjgriff closed 3 years ago

willjgriff commented 3 years ago

I've started investigating how we could create the new 1Hive DAO without Issuance and with an uninitialised TokenManager, that we could fund with say 100 HNY from the main DAO and do our own precedence campaign. It would use a high maxRatio (say 100%) for ConvictionVoting making it easier to claim more HNY since the common pool's value is significantly less than the main 1Hive DAO. After the precedence campaign, we could then create a few votes to disable the old 1Hive DAO and make the new 1Hive DAO the main 1Hive DAO. Celeste can be governed by the Celeste Swarm DAO initially, then control can be transferred to the new 1Hive DAO once we install Issuance and transfer the token controller to it.

After doing some investigation, after the new 1Hive DAO is installed and the precedence campaign is over, the following votes should disable the old 1Hive DAO and make the new 1Hive DAO the new one:

  1. On the new DAO:
    • Update ConvictionVoting maxRatio to 10% (must be updated from the higher value before the HNY is transferred from the old DAO)
  2. On the old DAO:
    • Transfer the Token Controller to the TokenManager on the new DAO
    • Initialise the TokenManager on the new DAO (note that I will have to add a permission restriction to the init() function on the TokenManager to allow us to install it without initialising it and prevent anyone else from initialising it until we have made it the Token Controller)
    • Disable conviction voting by changing the config
    • Transfer a large amount of vault funds to the new DAO (Note we cannot transfer them all incase new and ongoing proposals pass removing some of the funds, however we can make a second vote to move the remaining funds)
  3. On the new DAO (note there will be no issuance between the vote being executed on the old DAO and this vote being executed, so we must try and schedule this vote close to the previous vote):
    • Install Issuance and initialise it
    • Add Issuance permissions (ADD_POLICY_ROLE, REMOVE_POLICY_ROLE)
    • Add Issuance Policy (30%)
    • Reset ConvictionVoting HookedTokenManager (necessary to allow us to register a new HookedTokenManager, must update ConvictionVoting and the TokenManagerHook base contract to allow for this)
    • Register ConvictionVoting as a hook on new TokenManager
  4. On the old DAO:
    • Transfer the remaining Vault funds to the new DAO
  5. Updating Celeste config from Celeste DAO:
    • Update the Celeste BrightIdRegister module to the new DAO’s BrightIdRegister (this requires testing but I'm pretty sure it's possible, users will have to re-register with the new BrightIdRegister though)
    • Transfer the governor addresses from the Celeste Swarm DAO to the new 1Hive DAO
lkngtn commented 3 years ago

Overall this seems reasonable, I think it covers the edge cases of the transition. A few comments:

I think we should create an AraGraph of the permissions in the current dao and in the new dao required at various stages.

willjgriff commented 3 years ago
  • 100 honey feels a bit low, would likely want there to be a bit more in the pool for the test

What do you suggest?

  • If we disable conviction voting when we create the new organization, we combine steps 2 and 4.

You're suggesting deprecating the old DAO before any precedence campaign and finalising the new one? In which case why not just upgrade directly to the new one and save the hassle of migrating further down the road? Also there will be a 2 week period where the old DAO's conviction voting is disabled but the new DAO has no HNY.

  • I think we should aim to implement the new dynamic issuance policy rather than re-enable the current issuance policy on the new DAO. If we are not ready to do that at the point we want to transition, we can operate without issuance for some time.

👍

Made an issue for writing a YAML and UML diagram of permissions: https://github.com/1Hive/honey-template/issues/3

willjgriff commented 3 years ago

Updated deployment process migrating directly to the new DAO.

  1. Execute Honey template transaction 1, creating the DAO including the BrightIdRegister and HookedTokenManager.
  2. Copy the BrightIdRegister address, as well as Celeste governors, into Celeste deployment and deploy Celeste.
  3. Copy the Celeste arbitrator address to the Honey template deployment.
  4. Create and execute a vote on the old DAO to transfer the token controller to the new DAO's HookedTokenManager address. Also transfer the bulk of the funds from the old DAO's vault to the new DAO's vault (not all due to pending proposals).
  5. Execute Honey template remaining transactions to finalise the new DAO creation.
  6. Create and execute a vote to transfer the remaining funds from the old DAO's vault to the new DAO's vault.