Free 30-min Web3 Consultation
Book Consultation
Smart Contract Security Audits
View Audit Services
Custom DeFi Protocol Development
Explore DeFi
Full-Stack Web3 dApp Development
View App Services
Free 30-min Web3 Consultation
Book Consultation
Smart Contract Security Audits
View Audit Services
Custom DeFi Protocol Development
Explore DeFi
Full-Stack Web3 dApp Development
View App Services
Free 30-min Web3 Consultation
Book Consultation
Smart Contract Security Audits
View Audit Services
Custom DeFi Protocol Development
Explore DeFi
Full-Stack Web3 dApp Development
View App Services
Free 30-min Web3 Consultation
Book Consultation
Smart Contract Security Audits
View Audit Services
Custom DeFi Protocol Development
Explore DeFi
Full-Stack Web3 dApp Development
View App Services
LABS
Guides

Setting Up Proposal Thresholds and Requirements

A technical guide for developers implementing governance systems. Covers setting token-based thresholds, deposit mechanisms, and designing ancillary requirements like mandatory forum discussions.
Chainscore © 2026
introduction
GOVERNANCE FUNDAMENTALS

Setting Up Proposal Thresholds and Requirements

Proposal thresholds and requirements are the foundational rules that determine who can submit governance proposals and under what conditions. This guide explains how to configure these parameters to create a secure and effective governance system.

A proposal threshold is the minimum amount of governance tokens a user must hold to submit a proposal. This prevents governance spam by ensuring only stakeholders with significant skin in the game can initiate votes. For example, a DAO with 1 million tokens in circulation might set a threshold of 10,000 tokens (1%). This is often implemented in the contract's propose function, which checks getVotes(msg.sender) >= proposalThreshold before allowing a new proposal. Setting this value too high can centralize power, while setting it too low can lead to an overwhelming number of low-quality proposals.

Beyond simple token thresholds, DAOs implement proposal requirements to ensure proposal quality and readiness. Common requirements include: a minimum voting delay before a vote starts, a minimum voting period duration, and a quorum requirement for votes to be valid. Some protocols, like Compound and Uniswap, also use a proposal submission deposit that is refunded only if the proposal passes a preliminary vote. These parameters are typically stored in a governance contract's storage and can be updated via a governance vote themselves, allowing the system to evolve.

Here is a simplified Solidity example demonstrating how a threshold check is implemented in a governance contract:

solidity
contract SimpleGovernance {
    ERC20Votes public governanceToken;
    uint256 public proposalThreshold;

    function propose(address[] memory targets, uint256[] memory values, bytes[] memory calldatas, string memory description) public returns (uint256) {
        require(governanceToken.getVotes(msg.sender) >= proposalThreshold, "Governor: proposer votes below proposal threshold");
        // ... logic to create a new proposal
    }
}

The proposalThreshold is a crucial state variable that defines the barrier to entry for proposal creation.

When configuring these settings, consider your DAO's specific goals. A grant-giving DAO might set a lower threshold to encourage broad participation, while a protocol treasury management DAO would likely require a higher threshold to mitigate risk. It's also critical to account for token distribution; if tokens are highly concentrated, a nominal threshold may be meaningless. Tools like Tally and Boardroom provide analytics to help DAOs visualize voter turnout and proposal history, informing better parameter adjustments.

Finally, remember that thresholds and requirements are not static. As a DAO matures, these parameters should be reviewed and adjusted through the governance process itself. A common upgrade path is to start with conservative, high thresholds to ensure stability, then gradually lower them as the community grows and the process is proven. Always document changes clearly and allow for ample discussion before altering these core governance mechanics.

prerequisites
GOVERNANCE FUNDAMENTALS

Setting Up Proposal Thresholds and Requirements

Proposal thresholds and requirements are the foundational rules that determine who can create and submit governance proposals. This guide covers the technical setup for configuring these parameters in a DAO.

Proposal thresholds are the minimum criteria a user must meet to submit a governance proposal. These are typically defined as a minimum token balance or voting power. For example, a DAO might require a proposer to hold at least 100,000 governance tokens. This prevents spam and ensures proposals come from committed stakeholders. In smart contracts like OpenZeppelin's Governor, this is often implemented via the proposalThreshold() function, which returns a uint256 value. Setting this value is a critical governance decision that balances accessibility with operational efficiency.

Beyond simple token thresholds, DAOs implement more complex requirements. A common pattern is a timelock, which enforces a mandatory delay between a proposal's creation and execution. This gives the community time to review the proposal's code. Another key requirement is a proposal deposit, where a user must lock a certain amount of tokens (often refundable upon proposal completion) to submit. These mechanisms are designed to increase the cost of spam or malicious proposals while protecting the DAO's treasury and operations.

Technically, these rules are encoded in the DAO's core governance contract. Using a framework like OpenZeppelin Governor, you configure thresholds during contract deployment or via governance upgrades. For instance, initializing a Governor contract with a proposalThreshold of 100000e18 (assuming 18 decimals) sets the minimum balance. More advanced logic, like requiring a user to have been a token holder for a specific period, can be built by overriding the _getVotes function or creating a custom proposal module that validates proposer eligibility before allowing submission.

key-concepts-text
CORE CONCEPTS

Setting Up Proposal Thresholds and Requirements

Proposal thresholds and requirements define the rules for creating and passing governance actions. This guide explains how to configure these parameters to secure your DAO.

A proposal threshold is the minimum amount of governance tokens a user must hold to submit a new proposal. This prevents governance spam by ensuring only committed stakeholders can initiate votes. For example, a DAO with 1 million tokens in circulation might set a threshold of 10,000 tokens (1%). Setting this too high can centralize proposal power, while setting it too low risks flooding the system with low-quality proposals. The threshold is typically enforced in the DAO's Governor smart contract, often inheriting from OpenZeppelin's Governor contracts.

Beyond the submission threshold, several key voting parameters determine a proposal's lifecycle and success criteria. These include:

  • Voting Delay: The number of blocks between a proposal's submission and the start of the voting period. This gives voters time to review.
  • Voting Period: The duration (in blocks or seconds) that voting is open.
  • Quorum: The minimum percentage of the total token supply that must participate in a vote for the result to be valid. A common quorum is 4%.
  • Approval Threshold: The percentage of votes cast required to pass a proposal (e.g., simple majority >50% or a supermajority >66%).

Configuring these parameters requires careful consideration of your DAO's token distribution and security model. A DAO with concentrated ownership might use a higher quorum to ensure broader participation, while a more distributed DAO might prioritize lower barriers. For high-stakes proposals like treasury withdrawals or smart contract upgrades, you can implement a timelock delay. This enforces a mandatory waiting period after a vote passes but before execution, giving users a final chance to exit if they disagree with the outcome.

Here is a simplified example of initializing a Governor contract with specific thresholds using a Solidity constructor. This sets a 1% proposal threshold, a 48-hour voting period, a 4% quorum, and a 1-day timelock delay.

solidity
constructor(IVotes _token, TimelockController _timelock)
    Governor("MyDAOGovernor")
    GovernorVotes(_token)
    GovernorVotesQuorumFraction(4) // 4% quorum
    GovernorTimelockControl(_timelock)
{}

function votingDelay() public pure override returns (uint256) {
    return 6575; // ~1 day in blocks (assuming 13.1s block time)
}

function votingPeriod() public pure override returns (uint256) {
    return 13150; // ~2 days in blocks
}

function proposalThreshold() public pure override returns (uint256) {
    return 10000e18; // 10,000 tokens (assuming 18 decimals)
}

After deployment, DAOs often need to adjust their parameters. This should itself be a governance decision, proposed and voted on by token holders. Many DAOs use gasless voting via snapshot signatures for off-chain signaling on parameter changes before executing an on-chain upgrade. It's critical to audit any parameter change proposal, as lowering security thresholds can make the DAO vulnerable to attacks. Always test configuration changes on a testnet first, and consider using a gradual rollout or guardian multisig for critical upgrades to mitigate risk.

Effective threshold design balances security with participation. Key best practices include: aligning quorum with active voter turnout, using timelocks for all treasury and upgrade actions, and implementing proposal factories for recurring action types to reduce user error. Regularly review metrics like proposal submission rate and voter participation to inform future parameter adjustments. Resources like OpenZeppelin's Governor documentation and Tally's Governor Explorer provide essential references for current standards and implementations.

threshold-types
GOVERNANCE MECHANICS

Types of Proposal Thresholds

Proposal thresholds define the minimum requirements for a governance proposal to be submitted or passed. They are critical for balancing efficiency with decentralization.

06

Common Pitfalls & Security

Poorly set thresholds create governance risks.

  • Voter Apathy: Quorum too high can paralyze a DAO; too low can lead to minority rule.
  • Whale Dominance: Low submission thresholds allow large holders to spam proposals. High thresholds can exclude smaller participants.
  • Example Incident: In 2022, a Beanstalk Farms governance attack passed a malicious proposal because the quorum was met almost entirely by the attacker's borrowed funds.
GOVERNANCE MODELS

Threshold Mechanism Comparison

Comparison of common on-chain mechanisms for setting proposal submission thresholds in DAOs and governance contracts.

MechanismToken-WeightedQuadratic VotingTime-Lock BasedMultisig Guard

Core Logic

Simple token count

sqrt(tokens) to reduce whale power

Requires token lockup period

Approval from N-of-M signers

Sybil Resistance

Gas Cost for Submission

Low

High

Medium

Low

Typical Threshold Range

0.1% - 5% of supply

100 - 1000 QV credits

7 - 30 day lock

3-of-5 to 5-of-9 signers

Implementation Complexity

Low

High

Medium

Medium

Flexibility for Adjustment

High (simple param)

Low (complex recalibration)

Medium (time param)

Low (requires multisig change)

Used By

Uniswap, Compound

Gitcoin Grants

Curve (ve-tokens)

SafeDAO, Arbitrum

Best For

Established token ecosystems

Community funding rounds

Long-term aligned governance

High-security treasury actions

implementation-steps
GOVERNANCE CONFIGURATION

Implementation: Adding Thresholds to a Governor Contract

A guide to configuring proposal thresholds and requirements in OpenZeppelin Governor contracts to control proposal creation and execution.

Proposal thresholds are a critical security and spam-prevention mechanism in DAO governance. They define the minimum voting power a proposer must hold to submit a new proposal. In OpenZeppelin's Governor contracts, this is managed by the GovernorSettings extension. The primary threshold is set via the proposalThreshold() function, which returns a uint256 value. For token-based governance, this is typically a raw token amount, meaning a user's token balance must exceed this number to create a proposal.

To implement thresholds, you must extend your governor contract with GovernorSettings. During construction, you initialize it with three key parameters: the voting delay, voting period, and the proposal threshold. For example, new GovernorSettings(7200 /* 1 day */, 50400 /* 1 week */, 1000e18 /* 1000 tokens */). The threshold is enforced in the internal _propose function. If a caller's voting power, derived from getVotes(proposer, block.number - 1), is below the threshold, the transaction will revert.

Beyond the simple token count, you can implement more complex requirements using the GovernorProposalThreshold module. This allows you to override the proposalThreshold() function with custom logic. For instance, you could require a minimum stake duration, a combination of different token holdings, or a whitelist of proposer addresses. This flexibility is essential for governance models like multisig-backed proposals or expert committees, where proposal rights are not solely tied to token quantity.

It's crucial to align the threshold with your token's distribution and desired governance cadence. A threshold set too high (e.g., 5% of supply) can lead to voter apathy and centralization, while one set too low (e.g., 0.01%) may open the system to spam and governance attacks. Consider using a timelock to allow token holders to delegate or consolidate power if a meaningful proposal is blocked by the threshold. The threshold should be adjustable via governance itself to adapt over time.

For production deployment, always verify threshold logic through comprehensive tests. Simulate scenarios where a user with insufficient power attempts to propose, and ensure it reverts. Test that users who delegate tokens to meet the threshold can successfully propose. Remember that the threshold checks the voting power at the block immediately prior to proposal creation (block.number - 1), which must be accounted for in test setups and user front-end instructions.

ancillary-requirements
GOVERNANCE

Designing Ancillary Requirements

Proposal thresholds and requirements define the rules for submitting and passing governance votes. These parameters control participation, security, and the pace of change within a DAO.

04

Implementing Proposal Guards

Proposal guards (or restrictions) are smart contract checks that block certain types of proposals from being submitted. They enforce protocol-level constraints. Examples include:

  • Token Cap: Preventing proposals that mint over a set number of new tokens.
  • Critical Address Changes: Requiring a higher threshold or separate vote to change the Timelock or Guardian address.
  • Parameter Boundaries: Enforcing min/max limits on key protocol parameters like interest rates or fees.
parameter-tuning
GOVERNANCE CONFIGURATION

Tuning Threshold Parameters

Configure the core rules that determine how proposals are created and passed within a DAO or on-chain governance system.

Proposal thresholds are the foundational rules that govern participation in a decentralized organization. The proposal submission threshold defines the minimum token balance or voting power a user must hold to create a new proposal. This prevents governance spam and ensures proposers have sufficient skin in the game. For example, Uniswap Governance requires 2.5 million UNI tokens to submit a proposal, a significant barrier designed for well-researched initiatives. The quorum threshold is the minimum percentage of the total voting power that must participate (cast any vote) for a proposal to be valid. A proposal that passes a simple majority but fails to meet quorum is rejected, protecting against low-turnout decisions that don't reflect the broader community's will.

Setting these parameters requires balancing security, decentralization, and participation. A high submission threshold protects against spam but can centralize proposal power. A low quorum makes passing proposals easier but risks decisions by a small, unrepresentative group. Time locks and voting delays are additional temporal thresholds that provide security buffers. A voting delay gives token holders time to review a proposal before voting begins, while a time lock enforces a mandatory waiting period after a proposal passes before its encoded actions can be executed. This allows users to exit the system if they disagree with an upcoming change. These parameters are often set in the governance contract's constructor or via a privileged configuration function during deployment.

Here is a simplified example of setting these parameters in a Solidity governance contract using OpenZeppelin's Governor contract. The key values are defined as immutable variables or set in the initializer.

solidity
import "@openzeppelin/contracts/governance/Governor.sol";
import "@openzeppelin/contracts/governance/extensions/GovernorSettings.sol";

contract MyGovernor is Governor, GovernorSettings {
    constructor(
        string memory name,
        IVotes token,
        uint256 initialVotingDelay,
        uint256 initialVotingPeriod,
        uint256 initialProposalThreshold,
        uint256 quorumNumeratorValue
    )
        Governor(name)
        GovernorSettings(initialVotingDelay, initialVotingPeriod, initialProposalThreshold)
    {
        // Quorum is set as a fraction of total supply. e.g., 4% quorum.
        _updateQuorumNumerator(quorumNumeratorValue);
    }
}

In this constructor, initialProposalThreshold is the minimum token units needed to propose, and quorumNumeratorValue is the percentage (as a numerator out of 100) required for quorum.

To tune these values effectively, analyze historical governance data from similar protocols. Look at average voting turnout, the number of proposals, and the distribution of token holdings. Tools like Tally and Boardroom provide analytics for on-chain governance. A common strategy is to start with conservative thresholds (higher proposal requirements, higher quorum) and later relax them via a governance proposal once participation patterns are established. For upgradeable contracts, consider implementing a timelock controller as the executor. This adds a critical security layer, as even a passed proposal's actions are delayed, allowing for a last-line-of-defense review or cancellation if malicious code is discovered.

Avoid setting the quorum as a fixed number; it should be a percentage of the total supply or a dynamic calculation based on circulating supply to prevent dilution attacks. Also, consider implementing a proposal threshold override where the threshold temporarily increases if too many low-quality proposals are submitted within a short period. Always document the rationale for chosen thresholds in your project's governance documentation or constitution. This transparency helps community members understand the trade-offs and builds trust in the governance framework. Remember, these parameters are not set in stone; they should evolve with the protocol through the very governance process they define.

PROPOSAL THRESHOLDS

Frequently Asked Questions

Common questions and troubleshooting for setting up governance proposal thresholds, quorum, and execution requirements.

The proposal threshold and quorum are distinct governance parameters that serve different purposes in the proposal lifecycle.

Proposal Threshold: This is the minimum amount of voting power (e.g., number of tokens) a user must hold to submit a new proposal. It acts as a spam prevention mechanism.

Quorum: This is the minimum amount of total voting power that must participate in a vote for the result to be considered valid. A proposal that does not meet quorum fails, regardless of the yes/no ratio.

For example, in a DAO with a 1% proposal threshold and a 4% quorum:

  • A member needs 1% of total tokens to submit a proposal.
  • Once submitted, at least 4% of all tokens must be cast as votes for the proposal to pass or fail.
conclusion
IMPLEMENTATION CHECKLIST

Conclusion and Next Steps

You have configured the core parameters for your governance system. This section outlines key verification steps and advanced considerations for a robust, production-ready setup.

Before deploying your governance contract, perform a final audit of your configuration. Verify that the proposalThreshold is appropriate for your token's distribution—it should be high enough to prevent spam but low enough to allow legitimate proposals. Confirm that the votingDelay and votingPeriod provide sufficient time for community discussion and participation. Use a testnet to simulate a full proposal lifecycle, from creation through execution, ensuring all state transitions and permission checks work as intended. Tools like Tenderly or Hardhat can help you trace these transactions.

Consider implementing additional security and flexibility layers. A timelock contract, such as OpenZeppelin's TimelockController, introduces a mandatory delay between a proposal's approval and its execution. This gives users a safety window to exit protocols if a malicious proposal passes. For more complex requirements, you can extend the governance contract to add proposal quorums (a minimum percentage of total supply that must vote) or create a multi-tiered system where different proposal types have different thresholds.

Your governance parameters are not set in stone. As your protocol matures, you may need to adjust them. The most secure way to change parameters like proposalThreshold is through a governance proposal itself. This ensures the community approves significant changes to its own rules. Document your initial choices and the rationale behind them in your project's documentation or a governance forum post to maintain transparency with your token holders.

Next, explore integrating with governance tooling to improve the user experience. Snapshot is a popular gasless off-chain voting system that can be used for signaling before an on-chain vote. For on-chain governance, interfaces like Tally or the Governor frontend from OpenZeppelin Defender provide user-friendly dashboards for creating and tracking proposals. These tools abstract away complexity for end-users and can increase participation rates.

Finally, remember that effective governance is about more than smart contract code. Establish clear processes for proposal submission, community discussion (e.g., on Discord or a forum like Commonwealth), and post-execution analysis. A well-defined workflow and an engaged community are the most critical components for a successful decentralized governance system.