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

How to Design Token-Based Voting Rights for Asset Holders

A technical guide to implementing governance systems for fractional asset ownership. This tutorial covers voting models, Solidity contract patterns, and strategies to align economic stake with governance power.
Chainscore © 2026
introduction
ASSET DAO GOVERNANCE

How to Design Token-Based Voting Rights for Asset Holders

A practical guide to structuring voting power, delegation, and proposal mechanics for DAOs managing real-world or digital assets.

Token-based governance is the dominant model for decentralized autonomous organizations (DAOs), particularly those managing assets like real estate, intellectual property, or treasury funds. The core principle is simple: voting power is proportional to token ownership. However, effective design requires careful consideration of vote weighting, quorum requirements, and proposal lifecycle to prevent plutocracy and ensure active, secure management. This guide outlines key architectural decisions for building a functional Asset DAO.

The first decision is choosing a vote token. For an Asset DAO, this is typically a representation of ownership in the underlying asset pool. You can use a standard ERC-20 token or a non-transferable governance token (like OpenZeppelin's Governor contracts) to separate economic rights from voting rights. The critical on-chain function is getVotes(address account, uint256 blockNumber), which determines an account's voting power at a given historical block. This snapshot mechanism prevents last-minute vote buying.

Next, define the voting mechanism. A basic yes/no vote using a uint256 for/against tally is common, but Asset DAOs often need more nuance. Consider implementing quadratic voting to diminish large holders' influence or weighted voting based on time-locked tokens (ve-token model). For example, a user's voting power could be calculated as tokenBalance * sqrt(lockTimeInWeeks). This incentivizes long-term alignment. Always set a minimum proposal threshold (e.g., 1% of total supply) to prevent spam.

Quorum and voting periods are security parameters. Quorum is the minimum percentage of total voting power that must participate for a vote to be valid. For asset management, a high quorum (e.g., 4-20%) ensures broad consensus for significant actions like asset sales. The voting delay (time between proposal submission and start of voting) and voting period (duration of the vote) must be long enough for deliberation but short enough for agility—typically 1-3 days for delay and 3-7 days for voting.

Finally, connect voting to execution. Proposals should specify executable calldata, such as a function call to a treasury contract to transfer funds or to a property manager to initiate a sale. Use a timelock contract between vote approval and execution. This creates a mandatory waiting period (e.g., 48 hours), allowing token holders to exit if they disagree with a passed proposal. The complete flow is: 1) Propose, 2) Vote, 3) Queue (in timelock), 4) Execute. This pattern is standardized in frameworks like OpenZeppelin Governor and Compound's governance system.

In practice, you can fork and adapt audited code. A minimal implementation using OpenZeppelin involves deploying a Governor contract with a ERC20Votes token. The Governor contract's settings—quorum, voting period, proposal threshold—are configured in the constructor. Proposals are created via propose(), which checks the threshold. Voting occurs via castVote(), and successful proposals are executed via execute(). Always conduct thorough testing on a testnet with simulated proposal scenarios before mainnet deployment.

prerequisites
PREREQUISITES AND CORE CONCEPTS

How to Design Token-Based Voting Rights for Asset Holders

This guide explains the fundamental principles and technical considerations for implementing governance systems where voting power is derived from token ownership.

Token-based governance is the dominant model for decentralized autonomous organizations (DAOs) and DeFi protocols, where ownership of a native asset grants the right to vote on proposals. The core concept is simple: one token equals one vote. However, effective implementation requires careful design to balance fairness, security, and participation. Key prerequisites include a clear definition of the governance token (e.g., UNI for Uniswap, MKR for MakerDAO), a smart contract framework for proposal submission and voting, and a mechanism to link token balances to voting power, typically via a snapshot of holdings at a specific block.

The most basic voting mechanism is token-weighted voting, where a user's voting power is directly proportional to their token balance. This is often implemented using the ERC20Votes or ERC20VotesComp standard extensions, which track historical balances to prevent double-voting. A critical design choice is deciding between on-chain and off-chain voting. On-chain voting, used by protocols like Compound, executes proposals automatically if they pass but incurs gas costs. Off-chain voting, using tools like Snapshot, is gas-free and used for signaling but requires a separate execution step.

More advanced models introduce nuance to the one-token-one-vote rule. Quadratic voting (e.g., Gitcoin Grants) weights votes by the square root of the tokens committed, reducing the influence of large holders. Conviction voting, used by 1Hive, allows users to stake tokens on a proposal over time, with voting power increasing the longer tokens are locked. Delegated voting (e.g., Uniswap, ENS) lets token holders delegate their voting power to representatives, creating a more efficient and expert-driven governance layer.

Security is paramount. Common vulnerabilities include vote buying, where voters are bribed to support a proposal, and governance attacks, where an attacker acquires enough tokens to pass malicious proposals. Mitigations include implementing a timelock on executed transactions (a 2-3 day delay is standard), setting high quorum thresholds to ensure sufficient participation, and using a multisig or governance guardian as a temporary safety mechanism for new protocols, as seen with early versions of Aave and Curve.

When designing your system, you must define clear governance parameters in your smart contracts. These include the voting delay (time between proposal submission and voting start), voting period (typically 3-7 days), proposal threshold (minimum tokens required to submit a proposal), and quorum (minimum percentage of total supply that must vote for a result to be valid). Tools like OpenZeppelin's Governor contract provide a modular, audited foundation for implementing these rules.

Finally, consider voter engagement and accessibility. Low participation can lead to governance capture. Strategies to improve this include creating clear, templated proposal formats, integrating voting interfaces directly into your dApp's UI, and offering incentives like governance mining or fee-sharing for active participants. The goal is to design a system that is not only technically robust but also fosters a sustainable and active community of token-holding stakeholders.

GOVERNANCE ARCHITECTURE

Comparison of Voting Models for Asset DAOs

Key trade-offs between common token-based voting designs for asset-holding DAOs, such as those managing real estate, intellectual property, or investment funds.

Voting FeatureOne-Token-One-Vote (1T1V)Quadratic Voting (QV)Conviction Voting

Voting Power Basis

Linear with token holdings

Square root of token holdings

Time-weighted token stake

Resistance to Whale Dominance

Voter Participation Incentive

Passive ownership

Strategic budget allocation

Continuous signaling

Decision Finalization Speed

Fast (single round)

Fast (single round)

Slow (days to weeks)

Gas Cost per Vote

Low

Medium

High (continuous staking)

Best For

Binary treasury decisions

Prioritizing proposal lists

Continuous funding allocation

Implementation Complexity

Low

Medium

High

Used By

Uniswap, MakerDAO

Gitcoin Grants

1Hive, Commons Stack

implement-token-weighted
GOVERNANCE DESIGN

Implementing Token-Weighted Voting

Token-weighted voting is the dominant mechanism for on-chain governance, granting voting power proportional to a user's stake in a protocol. This guide explains its core design patterns, implementation considerations, and security trade-offs.

Token-weighted voting is a governance model where an individual's voting power is directly proportional to the number of governance tokens they hold or have delegated to them. This system underpins major DAOs like Uniswap, Compound, and Aave. The primary design goal is to align voter incentives with the protocol's long-term success, as those with the largest stake bear the most financial risk. However, this model inherently favors large token holders (whales) and can lead to voter apathy among smaller participants if not designed carefully.

The core implementation involves a smart contract that tracks token balances at a specific block number, known as a snapshot. This prevents users from borrowing tokens to vote (a "flash loan attack") and then returning them. The standard pattern uses the ERC-20Votes or ERC-5805 (Votes with Delegation) extension, which includes methods for tracking historical balances and delegation. Here's a basic interface:

solidity
function getVotes(address account) public view returns (uint256);
function delegate(address delegatee) public;
function getPastVotes(address account, uint256 blockNumber) public view returns (uint256);

Delegation allows token holders to assign their voting power to a trusted representative without transferring custody of their assets.

When designing the voting contract, you must decide on key parameters: the voting period (e.g., 3-7 days), quorum (minimum total voting power required for a proposal to pass), and vote differential (the margin required for approval). A common security pitfall is setting the quorum too low, allowing a small, coordinated group to pass proposals. Using a timelock contract to delay the execution of passed proposals is a critical safety measure, giving the community time to react to malicious governance actions.

Beyond simple 1-token-1-vote, advanced patterns exist to address centralization. Quadratic voting reduces whale power by making cost scale quadratically with votes cast, though it's computationally expensive on-chain. Conviction voting measures voting power as a function of both tokens staked and the duration they are locked, rewarding long-term commitment. Vote escrow models, pioneered by Curve Finance, grant boosted voting power to users who lock their tokens for longer periods (e.g., up to 4 years).

To implement a basic token-weighted vote, you would extend an ERC-20Votes token and create a Governor contract (using OpenZeppelin's Governor framework is recommended). The flow is: 1) A proposal is submitted with calldata. 2) Voting power is snapshotted. 3) Token holders vote for, against, or abstain. 4) Votes are tallied after the period ends, checking quorum and vote differential. 5) If successful, the proposal can be queued in a timelock and executed. Always audit the integration between the token, governor, and timelock contracts.

implement-ve-token-model
GOVERNANCE DESIGN

Building a ve-Token Model for Increased Power

A technical guide to implementing vote-escrowed (ve) tokenomics, a mechanism that aligns long-term incentives by granting enhanced governance rights and rewards to users who lock their tokens.

The vote-escrow (ve) model is a governance primitive that transforms liquid tokens into non-transferable, time-locked voting power. Popularized by protocols like Curve Finance (veCRV) and Balancer (veBAL), its core mechanism is simple: users deposit a governance token (e.g., CRV) into a smart contract and specify a lock-up period. In return, they receive veTokens, which represent their voting rights and are linearly decayed based on the remaining lock time. This creates a direct correlation between a user's long-term commitment (lock duration and amount) and their influence within the protocol's decentralized governance.

Designing a ve-model requires careful smart contract architecture. The central contract must manage the minting and burning of veTokens, track each user's lock expiration, and calculate their decaying voting power. A common implementation uses a struct to store lock data and a formula like voting_power = locked_amount * (lock_end - current_time) / max_lock_duration. Key security considerations include ensuring veTokens are non-transferable (Soulbound) to prevent vote buying, and implementing a robust system for handling early exits or lock extensions. The contract must also integrate with a gauge system to direct emissions based on veToken voting.

The primary utility of veTokens is to govern liquidity mining incentives. Holders vote to distribute protocol emissions (e.g., weekly token rewards) to specific liquidity pools or "gauges." This creates a flywheel: voters direct rewards to pools they are invested in, boosting yields and attracting more liquidity, which in turn increases the value of the underlying protocol token. Furthermore, protocols often grant veToken holders a share of protocol fees or other economic benefits, such as trading fee discounts or boosted yields on their own liquidity provisions, deepening the incentive to lock.

Implementing a ve-model introduces complex game theory. A major challenge is voter apathy; without active participation, emissions can become concentrated and inefficient. Some protocols, like Solidly, introduced a "bribe" marketplace where projects incentivize veToken holders to vote for their gauge. Another consideration is the lock duration curve. A linear decay is standard, but protocols can experiment with different functions (e.g., logarithmic) to tweak the incentive for very long-term locks. The choice of max_lock_duration (commonly 4 years) is also critical for setting the horizon for long-term alignment.

To deploy a basic veToken contract, you can fork and adapt established, audited codebases. The veCRV contract (Vyper) and veBAL contract (Solidity) are common references. A minimal Solidity skeleton involves a create_lock function, a vote function that interacts with a gauge controller, and a withdraw function for expired locks. Integrating with Snapshot.org for off-chain voting or building a custom front-end to visualize voting power decay and gauge weights are essential next steps for a functional governance system.

anti-whale-mechanisms
GOVERNANCE DESIGN

Mechanisms to Prevent Whale Dominance

Token-based voting can lead to centralization. These mechanisms help design more equitable governance for asset holders.

04

Holographic Consensus / Futarchy

Uses prediction markets to inform or decide governance outcomes, separating capital weight from direct voting.

  • Futarchy: Proposed by Robin Hanson. Voters define a metric for success (e.g., token price), and prediction markets decide which proposal is predicted to optimize it.
  • Holographic Consensus: Used by DAOstack. A scalable model where a prediction market can "boost" proposals to a full vote, with staking ensuring only high-confidence proposals pass.
  • Effect: Decision-making leverages the "wisdom of the crowd" and market incentives, diluting pure token-weight dominance.
05

Progressive Taxation / Fee on Vote Power

Applies a non-linear cost structure to voting power, similar to a progressive tax system, to discourage excessive concentration.

  • Mechanism: The effective cost per unit of voting power increases for larger token holders. For example, the first 1,000 tokens grant full power, but tokens beyond that grant diminishing returns.
  • Implementation: Can be coded into the governance smart contract's voting power calculation.
  • Analogy: Functions like a voting power decay curve, ensuring a more logarithmic relationship between wealth and influence.
integration-with-asset-rights
GOVERNANCE DESIGN

Linking Voting Power to Asset Rights

A technical guide to designing token-based voting systems that align governance power with underlying asset ownership and rights.

Token-based governance is the dominant model for decentralized protocols, but its design critically determines legitimacy and security. The core principle is linking voting power to a claim on the protocol's underlying value or assets. This is typically achieved by granting voting rights to holders of the protocol's native governance token, such as Compound's COMP or Uniswap's UNI. The simplest implementation is a one-token-one-vote system, where each token held equals one vote. However, this basic model has significant flaws, including vulnerability to vote buying and a misalignment with long-term stakeholder interests, which more sophisticated designs aim to correct.

To better align incentives with long-term health, many protocols implement vote-escrow models. Pioneered by Curve Finance's veCRV, this system requires users to lock their governance tokens for a set period to receive voting power. The power is weighted by both the amount locked and the lock duration, creating a direct link between a voter's time-preference and their influence. This design discourages short-term speculation and rewards committed stakeholders, more accurately tying governance rights to a vested economic interest in the protocol's future revenue and asset growth.

For asset-specific governance, such as within a DAO-managed treasury or a real-world asset (RWA) vault, voting power can be linked directly to ownership shares. Here, the governance token often represents a proportional claim on the underlying assets. A practical implementation uses a smart contract to mint governance tokens upon asset deposit, similar to an ERC-4626 vault. The voting weight for proposals concerning those specific assets is then calculated directly from the user's token balance, ensuring only those with skin in the game can decide on asset-related actions like investment strategies or sales.

Technical implementation requires careful smart contract design. A basic structure involves a VotingToken contract that inherits from ERC-20 and integrates a snapshot mechanism, like OpenZeppelin's Snapshot pattern, to record balances at a specific block. For vote-escrow, a separate VoteEscrow contract would manage locks and calculate voting power. Critical functions include createProposal(), castVote(), and executeProposal(), with access control ensuring only token holders can participate. Security audits are non-negotiable, as governance contracts control ultimate protocol authority.

Key design considerations include sybil resistance, proposal lifecycle, and quorum requirements. Without sybil resistance (e.g., via proof-of-personhood or high stake costs), the system is vulnerable to manipulation. The proposal lifecycle—from submission and voting to a timelock-enforced execution delay—must be codified to prevent rushed or malicious actions. Finally, setting appropriate quorum and vote-passing thresholds (e.g., a 4% quorum and 51% majority) is essential to balance between decisiveness and protection against low-participation attacks.

Ultimately, linking voting power to asset rights creates more resilient and legitimate decentralized governance. By ensuring that those who bear the economic consequences of decisions hold the corresponding power, protocols can mitigate principal-agent problems. Developers must choose a model—simple token voting, vote-escrow, or asset-linked shares—that best reflects their protocol's value accrual and long-term incentive structure.

IMPLEMENTATION PATTERNS

Voting Contract Examples by Platform

Governor-Based Systems

Ethereum's ecosystem has standardized around the Governor pattern, popularized by OpenZeppelin and Compound. This modular approach separates the voting token (ERC-20Votes or ERC-721Votes), the voting logic (Governor contract), and the execution (TimelockController).

Key Contracts & Standards:

  • OpenZeppelin Governor: Provides base contracts for proposal lifecycle, quorum, and voting mechanisms (e.g., GovernorCountingSimple).
  • ERC-20Votes: An extension for ERC-20 tokens that maintains a history of checkpoints for delegation and past voting power.
  • ERC-721Votes: Similar checkpoint logic for NFT-based governance.

Example Implementation Flow:

  1. Users delegate voting power from their token balance.
  2. A proposal is submitted with calldata for on-chain execution.
  3. Voting occurs during a set period, with power snapshotted at proposal creation.
  4. If the proposal succeeds, it can be queued and executed, often via a Timelock for security.

Real-World Reference: The Compound Governor Bravo contract is a foundational, audited example of this architecture.

TOKEN-BASED VOTING

Frequently Asked Questions on Implementation

Common technical questions and solutions for developers implementing on-chain voting systems for asset holders.

Token-weighted voting grants voting power proportional to token holdings (1 token = 1 vote). This is simple to implement but can lead to governance centralization.

Quadratic voting (QV) reduces this centralization by making the cost of votes increase quadratically. A voter with 10 tokens gets sqrt(10) ≈ 3 votes, not 10. This is mathematically represented as cost = (votes_desired)^2. While more democratic, QV is complex, requiring:

  • A commit-reveal scheme to prevent gaming.
  • Careful handling of fractional votes and rounding.
  • Significant gas overhead for vote tallying.

Protocols like Gitcoin Grants use QV for funding allocation. For most DAOs, token-weighted voting with delegation (e.g., Compound, Uniswap) offers a pragmatic balance.

conclusion-next-steps
IMPLEMENTATION CHECKLIST

Conclusion and Next Steps

You now understand the core components for designing a token-based voting system. This section provides a final summary and concrete steps to move from theory to a secure, functional implementation.

Designing effective token-based governance requires balancing security, fairness, and usability. The key takeaways are: - Vote Weighting: Choose between one-token-one-vote for simplicity or quadratic voting to reduce whale dominance. - Vote Delegation: Implement a secure delegation registry, like OpenZeppelin's Votes standard, to enable representative democracy without transferring assets. - Proposal Lifecycle: Define clear states (Pending, Active, Defeated, Succeeded, Queued, Executed) and enforce timelocks on executable actions to prevent rushed changes. - Sybil Resistance: Integrate with identity solutions like ENS or Proof of Humanity to attach voting power to verified entities, not just wallet addresses.

Your next step is to select and integrate the appropriate technical primitives. For a new ERC-20 token, consider the ERC-20Votes extension which provides built-in snapshotting and delegation logic. For governing an existing treasury or protocol, use a governor contract like OpenZeppelin Governor that works with any token implementing the IVotes interface. Always conduct thorough testing on a testnet using tools like Hardhat or Foundry, simulating various attack vectors such as flash loan attacks to manipulate voting power or proposal spam.

Finally, document the governance parameters clearly for your community. This includes the proposal threshold, voting delay and period, quorum requirements, and the execution timelock duration. Transparent documentation, accessible on platforms like GitBook or your project's docs site, is critical for user trust and participation. Remember, the most elegant smart contract is ineffective without clear community understanding and engagement. Start with a simple, secure system and evolve the parameters based on real-world usage and community feedback.