Skip to main contentScoped Proposal Types
Scoped Proposal Types are a powerful tool to add limits on specific actions a proposal in a DAO can take, while forcing specific contract calls to flow through specific proposal types. Instead of allowing a contract call with any value parameter, you can define specific, safe actions that certain proposal types are allowed to perform. Additionally, once a scope is defined, other proposal types are blocked from making any similar call.
What Is a Proposal Type?
A Proposal Type is a template that defines:
- Voting rules: quorum and approval thresholds
- Name and description of the type
- Module (optional): a contract that can exclusively use this type
- A list of Scopes: rules for what this proposal is allowed to do
What Is a Scope?
A Scope is a rule that says:
Each scope is bound to:
- A contract address
- A function selector (e.g.
transfer(address,uint256))
- An optional set of parameter rules (with comparisons)
Plus, there is a description for clarity.
Example Use Case
Let’s say your DAO has a proposal type called “Treasury Settings”. You want it to update the budget, but not give it infinite budget.
-
Create a Proposal Type:
- Name:
Treasury Settings
- Quorum:
10%
- Approval Threshold:
60%
-
Assign a Scope:
- Contract:
Treasury contract
- Function:
updateBudget(uint256)
- Rule:
newBudget < 1,000,000 tokens
Any proposal of this type, would then be limited in it’s ability to invoke that contract’s function, below 1,000,000 token.
If not, it’s invalid.
Additionally, no other proposal type, could call updateBudget on that contract (unless an additional scope rule was made permitting it).
Only the Governor admin or a timelock can manage scopes.
Available actions:
| Action | Who can do it? |
|---|
| Create proposal type | Admin / Timelock |
| Assign scope | Admin / Timelock |
| Disable scope | Admin / Timelock |
| Delete scope | Admin / Timelock |
How Validation Works
When someone submits a proposal:
- Each call is inspected
- The contract + function is hashed into a scope key
- If the key is allowed under the proposal type:
- Parameters are decoded
- Comparisons are checked
- If everything passes, the proposal is valid
Limits
- Max 5 scopes per contract/function combo for each proposal type
- Supported data types:
Summary
Scoped Proposal Types give DAOs granular control over what governance proposals are allowed to do. They help:
- Reduce the risk of rogue proposals
- Enable safe delegation to modules
- Scale governance safely as your DAO grows
By assigning clear scopes to proposal types, you create permissioned governance, without needing to trust proposal authors.
Who Is This For?
- DAO Governors and Admins
- Protocol Engineers
- Contract Module Builders
- Anyone defining safe proposal flows