Habitat Dev Update - Management & Decision Systems
Creating contracts for scalable governance systems & deploying the HabitatDAO
Habitat is progressing on making affordable and modular DAO governance on Rollups a reality. The first milestone to govern ourselves - the Habitat community - as a DAO and using our own framework is just around the corner.
After deploying the DAO and launching the token, the team can collect funds and increase capacities for further development. Old holders will get their outstanding new tokens and can make decisions within the HabitatDAO immediately after deployment.
The deployed app will include management systems and decision systems which will be outlined within this update. Some parts are completed, while others are still in progress.
Other to-do´s include coding a user interface frontend and completing tests for all contracts.
Deploying HabitatDAO
Habitat is building with EIP-2535 for better modularity. This means the team is deploying a diamond that has a unified address. The Diamond contract address represents the HabitatDAO and has all management systems built in. This entity also includes the DAO name, purpose, info, social links, token and further features of the DAO.
All future changes to the diamond are done through the management system which can have its own decision system with a specific setup. e.g. "voting power system" which is already completed.
HabitatDAO is using an ERC-20 token as a governance token. With each ERC-20 token users get voting power in the HabitatDAO. The airdropped Habitat Tokens of past users are subject to a vesting mechanism and can be used for voting right after finished deployment.
The Management Systems - Decision Domains
Management systems can be imagined as functional blocks, which can be managed differently from each other. They all have changeable specific values and can be controlled by different "Decision Systems".
"set add change" - in progress
Using "set add change" to modify the general values or the decision type within the management systems. This enables adding new modules, and changing the decision type for any management system. It is the only one that is able to do it.
Uses delegatecall, In the beginning HabitatDAO is using Multisignature Decision System to make decisions.
Governance - in progress
Specific values are changed by the governance management system. Almost any value can be changed.
The upgrade process of the Diamond is done via Governance. Adding, replacing or removing facets (modules) is done by governance.
Uses delegatecall, in the beginning HabitatDAO decision type for this is Voting Power Decision System
Treasury - completed
The Treasury Management System is able to move assets from HabitatDAO and interact with DeFi protocols. e.g.:
Contributors can request payouts from the treasury after work is done and will receive funds when the proposal is accepted.
HabitatDAO can collectively decide to move assets to applications and earn yield.
Uses call, in the beginning HabitatDAO decision type for this is Voting Power Decision System
Create Sub-DAOs - in progress
The setup of the Sub-DAO can be very specific and totally different from the original MainDAO. Once the creation of a SubDAO is accepted, it is deployed and funded in the same transaction.
Sub-DAOs can be used in different ways:
1. Users can propose to create Sub-DAOs with specific purposes and specific budgets. Imagine a company or corporation with underlying departments or projects.
2. Sub-DAOs can act as the execution layer (scope: Implementors) of the MainDAO, to decide on proposals that have been signaled as important by the MainDAO crowd.
The MainDAO can always freeze the attached SubDAOs and take all assigned funds back if necessary.
Uses call, in the beginning HabitatDAO decision type for this is Voting Power Decision System
Launchpad - in progress
The Launchpad is used to launch a token to the public. Funds like WETH or DAI will be exchanged for native tokens of the DAO. Collected funds will be placed in the attached Treasury and can be used through treasury proposals. The initial distribution of the token will be done through the launchpad and can include vesting functionalities.
Uses call, in the beginning HabitatDAO decision type for this is Multisignature Decision System
The Decision Systems - Processing Decisions
Multisignature Decider - in progress
This Decision System is a copy-paste of the Gnosis Multi-Sig. There is a specific set of addresses that are the only deciders. These deciders can create proposals and decide on them. Proposals are executed when the majority of deciders accept them. The Multisignature Decider works with all before mentioned management systems.
The Multisignature Decider enables a progressive decentralization, so DAOs can agree to upgrade to e.g. the "Voting Power Decider" in the future.
Voting Power Decider - completed
When deployment happens the general Voting Power Decider creates a staking contract. Through staking tokens (LP NFTs and HBT Tokens in HabitatDAO), users get their respective voting power. Each token represents 1 to 1 voting power, meaning 1 share = 1 vote.
increase Voting Power
When users stake, they increase voting power inside the Habitat DAO. This voting power gives them the ability to make decisions on the included management systems. Even if they have already voted, users can still increase their voting power by staking more tokens and voting for the same proposal.
decrease Voting Power
To decrease Voting Power users have to unstake tokens. You can unstake anytime, but if users have already voted for a proposal that is still active, users have to wait until this proposal is executed or rejected. This time depends on the voting period, which can be different for each management system. Each system also has an execution delay which is also unique within each system.
delegate Voting Power
Users can delegate their Voting Power to other users if they have not participated in active proposals. Otherwise, they have to wait for the proposals to be executed or rejected.
undelegate Voting Power
After delegation users can also reclaim their Voting Power. If the delegatee has already voted on an active proposal, the user takes back the Voting Power, but has to wait for the freeze period to end and can call unfreeze to reclaim Voting Power.
Specific Values
Each Management system has its own pre-setup of necessary values to make changes within the DAO. e.g.
thresholdForProposal - the amount of voting power that should be reached for a proposal to be accepted.
thresholdForInitiator - the amount of voting power that users need to create proposals.
secondsProposalVotingPeriod - the amount of time in which a proposal is open for vote.
secondsProposalExecutionDelayPeriod - the amount of time between proposal acceptance and execution.
The modification of these values is done through the “Governance Management System”.
Special Feature: What about the LPs?
Liquidity Providers can also stake UniV3 positions, which must include Habitat tokens and another “legal pair token” underlying (e.g. WETH, DAI). The LP Voting Power is calculated by assuming the position is out-of-range and would only contain Habitat tokens. This way we can still assign voting power 1 by 1. LPs can also stake multiple positions in different ranges and still get a fair amount of voting power.
This is a very unique approach and gives a big advantage to liquidity providers that are currently not part of governance in most DAOs.
Explore the full contract code over here.
The Outlook
Please remember: Habitat is a small team with limited resources. When starting to build Habitat v2, the app was imagined to include a setup wizard and DAO factory. In order to get Habitat to the public and test the app, the scope was reduced and we are deploying HabitatDAO as soon as possible.
Hoping you enjoyed this update, which serves as an “appetizer” to what else is coming in the following weeks. Get ready for more regular updates, a sneak peek at the frontend work for the app, the team attending events and finally rolling out the Habitat Token to the public.