subDAO Manager
SubDAO Hosting Scheme
To have and manage one or more subDAOs, and thereby support the extra governance infrastructure they provide, a Root Layer requires a subDAO Manager component.The hosting scheme is composed as follows:
The subDAO Manager's host address, which is the Organization to which the subDAO Manager is linked
The host of all linked subDAOs; i.e the subDAO Manager itself
Both the subDAO Manager and all subDAOs are lazyInitCapableElement
contracts, and thus each has a host parameter.The Organization to which the subDAOManager is linked, by interacting with the subDAO Manager itself, can link and un-link subDAOs according to the Root governance logic.
How a subDAO Is Represented
Each subDAO is represented by a SubDAOEntry
struct, composed of the following parameters:
key
-> this is a fixed, immutable and user-defined key (which is in bytes32 format) that serves as a reference for the subDAO in the subDAO Manager.location
-> this is the smart contract address of the subDAO; a subDAO must be a smart contract, not just a simple wallet address, and so thelocation
must be a contract address.address
newHost
-> this parameter is used only when replacing a subDAO. It represents the newhost
address of the replaced subDAO.
The subDAOEntry
struct is provided by the ISubDAOsManager
interface contract.The subDAO Manager allows a Root Layer to:
Keep track of all managed subDAOs. For example, to access a subDAO, you pass its key in the subDAO Manager, which returns the subDAO's address.
Add subDAOs.
Change the subDAO that corresponds to a specific key, so that the subDAO changes, but the key remains the same.
Remove subDAOs.
Return the history list of all subDAOs, organized by key. For example, if there have been five versions of a subDAO, passing the key that it corresponds or* did correspond to returns the history of the key; i.e, a list of the addresses of all versions of the subDAO.
SubDAOManager Initialization
The subDAOManager contract is initialized with the following data:
SubDAOEntry[]
subDaos
-> you can link multiple subDAOs passing multiple subDAOEntry structs.
Last updated