Skip to main content
Governance tokens are the foundation of DAO voting in Agora. This guide covers delegation mechanics, voting power calculations, and multi-chain token aggregation.

Token Standards

Agora supports ERC-20 tokens with votes extension (ERC-20Votes) for delegation and voting power tracking:

Voting Power Calculation

Voting power is determined by the maximum of delegated votes or token balance:
Voting power uses the maximum of getVotes() and balanceOf() to handle both delegated and self-delegated scenarios.

Delegation Models

Agora supports three delegation models, configured per tenant:

Full Delegation

Standard model where all voting power goes to a single delegate:

Partial Delegation

Split voting power across multiple delegates:
With partial delegation, users can allocate specific amounts to different delegates. Implementation varies by DAO but typically uses a delegation registry contract.

Advanced Delegation (Alligator)

Supports subdelegation chains with custom rules:
Advanced delegation allows:
  • Subdelegation chains - Delegates can redelegate to others
  • Custom rules - Max redelegations, allowlists, blocklists
  • Partial subdelegation - Split delegated power further

Token Configuration

Define token details in your tenant config:

Multi-Chain Token Support

Aggregate voting power across multiple chains for the same governance token:

Configuration Example

Voting power from all chains is automatically aggregated. Users see their total power across all configured chains.

Delegation Actions

Direct Delegation

Delegate directly from a connected wallet:

Gasless Delegation

Delegate without paying gas using EIP-712 signatures:
See Gasless Transactions for relay implementation.

Voting Power Display

Format voting power for user interfaces:

Delegation Tracking

Track delegation history and current delegations:

Self-Delegation

Users must delegate to themselves to activate voting power:
Token holders must delegate (even to themselves) to activate their voting power. Undelegated tokens cannot vote.

Checkpointing

Voting power is checkpointed at the proposal creation block:
This prevents “double voting” by:
  • Locking voting power at proposal creation time
  • Preventing transfers from affecting active votes
  • Enabling vote replay protection

Token Decimals

Handle different decimal precisions:

Advanced Features

Voting Power Sources

Some DAOs calculate voting power from multiple sources:
Enable via toggle:

Delegation Encouragement

Prompt users to delegate if they haven’t:

Best Practices

  1. Cache voting power - Use React Query or SWR to cache contract calls
  2. Handle zero decimals - Some tokens use fewer than 18 decimals
  3. Show delegation status - Make it clear who users are delegating to
  4. Checkpoint awareness - Display voting power at proposal snapshot time
  5. Multi-chain UX - Clearly indicate which chains contribute to total VP