Scoped 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)
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%
- Name:
-
Assign a Scope:
- Contract:
Treasury
contract - Function:
updateBudget(uint256)
- Rule:
newBudget < 1,000,000 tokens
- Contract:
updateBudget
on that contract (unless an additional scope rule was made permitting it).
Admin-Only Tools
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:
uint
address
bytes32
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
Who Is This For?
- DAO Governors and Admins
- Protocol Engineers
- Contract Module Builders
- Anyone defining safe proposal flows