Governance & DAO Module
OmniSocial enables decentralized community coordination through native DAO creation, proposal management, and reputation-weighted voting.
This module is designed to be developer-extensible and user-accessible—powering everything from small creator communities to protocol governance.
🧱 Architecture Overview
OmniSocial’s governance layer consists of two core contracts:
DAOFactory: deploys new DAOs and tracks themDAO: each deployed instance is a fully functioning, upgradeable DAO with proposal, voting, and execution logic
Other integrated systems:
ReputationModule: reputation-based voting weightsTimelock: optional execution delay (for moderation and safety)ProposalRegistry: indexing proposals for frontend/subgraph use
🏗 DAOFactory Contract
Used to create and register new DAOs on-chain.
createDAO(...)
createDAO(...)function createDAO(
string memory name,
address[] memory initialMembers,
uint256[] memory initialRep,
uint256 quorum,
uint256 votingPeriod,
bool useTimelock
) external returns (address newDAO);Params:
name: DAO identifier (used in metadata & .omni subdomain)initialMembers: addresses of founding membersinitialRep: reputation scores assigned to each founderquorum: % of total rep needed for a vote to passvotingPeriod: time window (in seconds) for each voteuseTimelock: enable/disable proposal delay before execution
🧠 DAO Contract
Each DAO contract is independent and manages its own proposals, votes, and execution state.
📜 Proposal Lifecycle
Create Proposal
Voting Period
Quorum Check
Execution (or Expiry)
Post-execution events/logs
createProposal(...)
createProposal(...)title/description: Proposal metadataactions: array of encoded function calls to execute if approved
The proposal is stored with a unique ID, state is set to
Active.
castVote(...)
castVote(...)Requires the sender to have non-zero reputation in the DAO
Votes are weighted by current reputation score at time of vote
executeProposal(...)
executeProposal(...)Checks that proposal passed quorum and voting period is over
If
useTimelockistrue, the execution is delayed until after a set buffer
⏳ Timelock (Optional)
If enabled:
Proposal is marked
Queuedupon passing voteCan only be executed after
minDelay(e.g., 24 hours)Delay ensures DAO members can veto or leave if they disagree
🔄 Example: Proposal Flow
🧾 Proposal Metadata Example (for frontends)
📊 Subgraph Support
You can query DAOs and their proposals using GraphQL:
Last updated
Was this helpful?
