Setting Up Staking
Configure staking for your DAO
Setting Up Staking
This guide covers how DAO administrators can set up and configure staking for their organization.
Prerequisites
Before setting up staking, ensure you have:
- Admin Role - DAO admin or governance permissions
- Token Contract - Deployed ERC-20 governance token
- Treasury Funds - Initial rewards allocation
- Governance Approval - If required by your DAO
Staking Configuration
Step 1: Navigate to Staking Settings
- Go to your DAO dashboard
- Click Settings in the sidebar
- Select Staking tab
┌─────────────────────────────────────────────────────────────┐
│ DAO Settings │
├─────────────────────────────────────────────────────────────┤
│ [General] [Governance] [Treasury] [Staking] [Gasless] │
│ ^^^^^^^^ │
└─────────────────────────────────────────────────────────────┘Step 2: Enable Staking
Toggle staking on and select your model:
Staking Enabled: true
Staking Model: vote_escrow # Options: fixed, flexible, vote_escrowModel Comparison:
| Model | Lock Required | Voting Power | Best For |
|---|---|---|---|
| Fixed | Yes (preset periods) | Static | Predictable rewards |
| Flexible | No | Static | Liquidity preference |
| Vote-Escrow | Yes (variable) | Decaying | Long-term alignment |
Step 3: Configure Lock Periods
For fixed or vote-escrow models, define lock periods:
lock_periods:
- duration: 30 days
multiplier: 1.0
early_exit_penalty: 10%
- duration: 90 days
multiplier: 1.5
early_exit_penalty: 15%
- duration: 180 days
multiplier: 2.0
early_exit_penalty: 20%
- duration: 365 days
multiplier: 3.0
early_exit_penalty: 25%
- duration: 730 days # 2 years
multiplier: 4.0
early_exit_penalty: 30%Step 4: Set Reward Parameters
Configure how rewards are distributed:
rewards:
source: protocol_revenue # Options: inflation, revenue, hybrid
# For inflation model
inflation:
annual_rate: 5%
distribution:
stakers: 80%
treasury: 15%
development: 5%
# For revenue model
revenue:
fee_share: 50% # % of protocol fees to stakers
# Distribution frequency
distribution_interval: weekly # daily, weekly, monthlyStep 5: Configure Minimum Stakes
Set minimum amounts to prevent dust attacks:
minimums:
stake_amount: 100 LUX
lock_duration: 7 days
claim_amount: 1 LUXStep 6: Enable/Disable Features
Toggle optional features:
features:
compound_rewards: true # Auto-compound option
partial_unstake: false # Allow partial withdrawals
delegate_stake: true # Delegate voting power
early_exit: true # Allow early exit with penalty
boost_nft: false # NFT-based APY boostsDeploying Staking Contracts
If your DAO doesn't have staking contracts yet:
Option 1: Use Built-in Templates
- Click Deploy Staking Contract
- Select template:
- Simple Staking
- Vote-Escrow (veToken)
- Gauge System
- Configure parameters
- Submit deployment proposal
- Execute after approval
Option 2: Connect Existing Contract
contract_address: 0x1234...5678
abi: [...] # Contract ABI
methods:
stake: stake(uint256)
unstake: withdraw(uint256)
claim: claimReward()
balance: balanceOf(address)Reward Fund Setup
Initial Funding
Allocate rewards from treasury:
- Go to Treasury > Allocations
- Create new allocation:
allocation:
name: "Staking Rewards Q1 2026"
amount: 1,000,000 LUX
destination: staking_rewards_pool
schedule: monthly
duration: 3 monthsOngoing Funding
Set up automatic funding from revenue:
auto_fund:
enabled: true
source: protocol_fees
percentage: 50%
frequency: weekly
cap: 100,000 LUX per weekGovernance Integration
Voting Power
Configure how staking affects voting:
voting_power:
base: 1 # 1 token = 1 vote base
staking_multiplier: true
lock_bonus:
30_days: 1.1x
90_days: 1.25x
180_days: 1.5x
365_days: 2.0xProposal Thresholds
Staked tokens count toward proposal thresholds:
proposal_threshold:
create: 10,000 veTokens
vote: 1 veToken
quorum: 1,000,000 veTokensTesting Your Setup
Before going live:
1. Testnet Deployment
Deploy to testnet first:
# Deploy staking contract to testnet
forge script script/DeployStaking.s.sol --rpc-url $TESTNET_RPC --broadcast2. Verify Configuration
checklist:
- [ ] Lock periods configured correctly
- [ ] Reward rates are sustainable
- [ ] Minimum stakes prevent dust
- [ ] Early exit penalties are reasonable
- [ ] Voting power integration works
- [ ] Claiming rewards functions
- [ ] Compounding works (if enabled)3. UI Preview
Test the staking interface:
- Connect test wallet
- Stake test tokens
- Verify lock period
- Wait for rewards accrual
- Test claiming
- Test unstaking
Launch Checklist
pre_launch:
- [ ] Contracts deployed and verified
- [ ] Initial rewards funded
- [ ] Documentation published
- [ ] UI tested thoroughly
- [ ] Audit completed (recommended)
launch:
- [ ] Announce staking launch
- [ ] Monitor first stakes
- [ ] Support ready for questions
- [ ] Emergency pause available
post_launch:
- [ ] Monitor TVL growth
- [ ] Track APY sustainability
- [ ] Gather user feedback
- [ ] Adjust parameters if neededCommon Issues
Low Participation
Symptoms: Few stakers, low TVL
Solutions:
- Increase reward rates
- Add lock bonuses
- Reduce minimum stake
- Improve UI/UX
Unsustainable APY
Symptoms: Rewards depleting too fast
Solutions:
- Reduce emission rate
- Cap maximum stake per user
- Add more revenue sources
- Adjust reward schedule
Voting Power Concentration
Symptoms: Few large stakers dominate
Solutions:
- Implement quadratic voting
- Cap maximum voting power
- Add delegation incentives
- Time-weight voting power
Advanced Configuration
Gauge System
For protocols with multiple pools:
gauges:
enabled: true
pools:
- name: "Core Staking"
weight: 60%
min_weight: 40%
- name: "LP Staking"
weight: 30%
min_weight: 10%
- name: "NFT Staking"
weight: 10%
min_weight: 5%
voting:
frequency: weekly
min_weight_change: 1%Boost System
NFT or threshold-based boosts:
boosts:
nft_boost:
enabled: true
contract: 0xABC...
max_boost: 1.5x
tier_boost:
enabled: true
tiers:
- min_stake: 10,000 LUX
boost: 1.1x
- min_stake: 100,000 LUX
boost: 1.25x
- min_stake: 1,000,000 LUX
boost: 1.5x