We are excited to announce the new Zodiac-compatible Minion Safe. This tool acts as a translation layer between Moloch DAO governance, and Gnosis Safe transactions, enabling a wide variety of options for governance, migration paths, and treasury management.
DAOHaus gives communities tools to quickly deploy simple yet powerful coordination tools. DAOs use these tools to manage grants, investments, working group budgets, and much more. However, as communities mature, their coordination tools must grow with them.
Moloch & Zodiac
DAOHaus uses the Moloch DAO framework for share allocation, voting, and treasury management. Moloch DAOs alone are not able to interact with arbitrary external contracts.
DAOHaus developers created Minion contracts which associate arbitrary external calls with DAO proposals. This made it so Moloch DAOs could govern state changes on other contracts using the Minion as an adapter.
Now, by making Minions Zodiac-compatible, it enables us to take Minions even further, expanding the possibilities for what DAOs can do.
Through Minion Safes, DAOHaus DAOs can do the following (and much more):
Manage a bank of NFTs
Create orders with on-chain and signature-based NFT marketplaces
Provide liquidity with AMMs
Upgrade to new governance frameworks (eg MolochV3 😉) without having to transfer their assets
Elect temporary delegates to manage assets in a Safe
Interact with any decentralized application through the Safe Wallet Connect integration
Create custom 'rage quit' adapters to manage non-divisible assets or multi-bank treasuries
Update a current Gnosis Safe to a Daohaus DAO
Manage multiple Safes
Transfer an entire set of assets (DAO Mergers & Acquisitions)
A composable design philosophy for DAOs, Zodiac is a collection of tools built according to an open standard. The Zodiac open standard enables DAOs to act more like constellations, connecting platforms, protocols, and chains, no longer confined to monolithic designs.
In other words: Zodiac is the expansion pack for DAOs.
V0 Minions have multiple responsibilities.
Translate Moloch DAO proposals into arbitrary external calls
Store a separate treasury of DAO assets including NFTs and other tokens the Moloch DAO does not support
Through Zodiac we can allow the Minion to focus only on translating proposals to external calls, and store all assets in a Gnosis Safe.
With assets in a Gnosis Safe, we can enable a wide variety of governance options and migration paths:
Standard Moloch: Share weighted, full voting & grace periods
Quorum: Early execution allowed if quorum is reached
Delegates: Temporarily elected EOAs to act as delegates of the DAO for high stakes, time sensitive executions
DAOs that start as a multisig with signers can decentralize their governance over time by handing over control of the Safe to a Moloch's Minion. The assets will then only be able to be managed through governance proposals.
DAOs that want to upgrade to a newer Moloch or other governance frameworks do not have to move all of their assets. They simply change which Minion is the module on the Safe through a vote.
DAOs that want to sell or transfer a large group of assets from their DAO to another can just change the owner of the Safe, effictively transfering everything in one large batch for very little gas.
How it works
A Minion is deployed and configured to make proposals on, listen to a specific Moloch.
The Minion inherits the `Module.sol` contract from the Zodiac library. The Minion then uses the Module's `exec` function to execute arbitrary external calls on behalf of the Safe.
The Minion always uses the Gnosis Multisend library so that multiple transactions can be associated with a single proposal.
The Safe is configured to use the Compatibility Fallback Handler which enables a safe to make EIP1271 contract signatures. In order to sign a message as a DAO, a member can make a proposal to
delegateCall to the Gnosis SignMessageLib.
If the DAO is setting up a new Gnosis safe, they can deploy the Safe, Minion, and configure all of the settings in a single transaction.
/// @dev Function to summon minion and configure with a new safe /// @param _moloch Already deployed Moloch to instruct minion /// @param _details Optional metadata to store /// @param _minQuorum Optional quorum settings, set 0 to disable /// @param _saltNonce Number used to calculate the address of the new minion function summonMinionAndSafe( address _moloch, string memory _details, uint256 _minQuorum, uint256 _saltNonce ) external returns (address);
This function does the following:
Deploys a new Minion using a proxy factory
Deploys a new Safe using a proxy factory
Sets up the Minion to use the Gnosis multisend library
Sets up the Safe to use the Gnosis Compatibility fallback handler, and enables the minion as the sole module and signer
Deployment with existing safe
If the DAO has a Safe already, they have to deploy in 2 steps.
Submit transaction on Safe to enable Minoin as module
/// @dev Function to only summon a minion to be attached to an existing safe /// @param _moloch Already deployed Moloch to instruct minion /// @param _avatar Already deployed safe /// @param _details Optional metadata to store /// @param _minQuorum Optional quorum settings, set 0 to disable /// @param _saltNonce Number used to calculate the address of the new minion function summonMinion( address _moloch, address _avatar, string memory _details, uint256 _minQuorum, uint256 _saltNonce ) external returns (address);
Deploy one today!
Safe Minions are live on the DAOHaus app. Add one to your DAO and start expanding your community's coordination toolbox.