LPsLux Proposals
Assets & Tokens
LP-3002

Governance Token Stack — K, DLUX, VLUX

Implemented

Soul-bound reputation (K), rebasing governance (DLUX), and vote-locked voting power (VLUX)

Category
LRC
Created
2025-12-23

Abstract

This LP specifies the Lux governance token stack consisting of three interrelated tokens:

  1. K (Karma) — Human legitimacy and reputation score, non-transferable, DID-bound
  2. DLUX (DAO LUX) — Rebasing governance token with OHM-style bonding mechanics
  3. VLUX (Vote-Locked LUX) — Time-weighted voting power derived from staked DLUX and K

The system combines Olympus DAO (OHM) rebasing mechanics with Curve's vote-escrowed (ve) token model to create a governance system that rewards long-term alignment and active participation.


Motivation

Traditional governance tokens suffer from several issues:

  1. Plutocracy: Voting power correlates directly with wealth
  2. Short-termism: No incentive for long-term commitment
  3. Sybil vulnerability: Easy to create multiple accounts
  4. Passive accumulation: Holding without participation is rewarded equally

The K/DLUX/VLUX stack addresses these by:

  • K (Karma): Human-bound reputation prevents Sybil attacks and weights voting by legitimacy
  • DLUX: Rebasing rewards stakers while demurrage penalizes idle tokens
  • VLUX: Time-weighted voting power rewards long-term staking commitment

Specification

Token Overview

┌─────────────────────────────────────────────────────────────────────────────┐
│                        GOVERNANCE TOKEN STACK                               │
├─────────────────────────────────────────────────────────────────────────────┤
│                                                                             │
│  ┌─────────┐                                                                │
│  │   LUX   │─────────────┐                                                  │
│  │ (Base)  │             │ Stake 1:1                                        │
│  └─────────┘             ▼                                                  │
│                    ┌─────────┐                                              │
│                    │  DLUX   │ Rebasing + Demurrage                         │
│                    │(DAO LUX)│◄──── Protocol Revenue                        │
│                    └────┬────┘                                              │
│                         │ Stake                                             │
│  ┌─────────┐            ▼                                                   │
│  │    K    │     ┌─────────────┐                                            │
│  │ (Karma) │────►│    VLUX     │ = DLUX × f(K) × time_multiplier            │
│  └─────────┘     │(Vote Power) │                                            │
│       ▲          └─────────────┘                                            │
│       │                 │                                                   │
│  Reputation        Governance                                               │
│  Actions           Voting                                                   │
│                                                                             │
└─────────────────────────────────────────────────────────────────────────────┘

1. K (Karma) — Human Legitimacy Score

K is a non-transferable, soul-bound reputation token that represents human legitimacy within the Lux ecosystem.

Properties

PropertyValue
TransferableNo (soul-bound)
MintableBy approved attestation providers
BurnableVia governance penalty
Max per account1000 K (soft cap)
Bound toDID (Decentralized Identifier)

Earning K

ActionK EarnedCooldown
Complete identity verification+100 KOne-time
Proof of Humanity attestation+200 KAnnual
Governance proposal passed+50 KPer proposal
Vote on governance proposal+1 KPer vote
Successful dispute resolution+25 KPer dispute
Community contribution+10-100 KPer contribution
NFT staking duration bonus+1 K / monthMonthly

Losing K

ActionK Lost
Governance penalty-50 to -500 K
Failed malicious proposal-100 K
Slashing event-25% of K
Inactivity (>1 year)-10% decay

K Contract Interface

interface IKarma {
    /// @notice Get K balance for account
    function karmaOf(address account) external view returns (uint256);

    /// @notice Check if account is human-verified
    function isVerified(address account) external view returns (bool);

    /// @notice Mint K to account (only attestation providers)
    function mint(address to, uint256 amount, bytes32 reason) external;

    /// @notice Burn K as penalty (only governance)
    function slash(address account, uint256 amount, bytes32 reason) external;

    /// @notice Get DID bound to account
    function didOf(address account) external view returns (bytes32);
}

2. DLUX (DAO LUX) — Rebasing Governance Token

DLUX is the governance token obtained by staking LUX 1:1. It features OHM-style rebasing for stakers and demurrage for idle holdings.

Properties

PropertyValue
Backing1 LUX = 1 DLUX (redeemable)
Rebase Rate0.3-0.5% per epoch (8 hours)
Demurrage Rate0.1% per day on unstaked DLUX
Max SupplyUnlimited (backed by staked LUX)
TransferableYes

Minting and Burning

// Stake LUX to receive DLUX
function stake(uint256 luxAmount) external returns (uint256 dluxMinted);

// Unstake DLUX to receive LUX (may have cooldown)
function unstake(uint256 dluxAmount) external returns (uint256 luxReturned);

// Redeem DLUX for underlying LUX 1:1
function redeem(uint256 dluxAmount) external returns (uint256 luxReturned);

Rebase Mechanics (OHM-style)

Staked DLUX earns rebases funded by:

  1. Protocol revenue (trading fees, lending interest)
  2. Treasury yield
  3. NFT staking emissions
Daily APY = (1 + rebaseRate)^(rebases_per_day) - 1

Example: 0.4% per 8h epoch = 3 epochs/day
Daily APY = (1.004)^3 - 1 = 1.2%
Annual APY = (1.004)^(3*365) - 1 ≈ 7800%

Demurrage Mechanics

Unstaked DLUX in wallets (not in staking contracts) suffers demurrage:

balance_after = balance_before × (1 - demurrage_rate)^days

Example: 0.1% daily demurrage
After 30 days: 1000 DLUX → 970.4 DLUX
After 365 days: 1000 DLUX → 694.0 DLUX

Rationale: Demurrage incentivizes active participation rather than passive holding.

Staking Tiers

TierMin DLUXRebase BoostLock Period
Bronze1001.0xNone
Silver1,0001.1x7 days
Gold10,0001.25x30 days
Diamond100,0001.5x90 days
Quantum1,000,0002.0x365 days

DLUX Contract Interface

interface IDLUX {
    /// @notice Stake LUX to receive DLUX
    function stake(uint256 amount) external returns (uint256 dluxMinted);

    /// @notice Unstake DLUX to receive LUX
    function unstake(uint256 amount) external returns (uint256 luxReturned);

    /// @notice Claim rebased DLUX rewards
    function claimRebase() external returns (uint256 rebased);

    /// @notice Get pending rebase amount
    function pendingRebase(address account) external view returns (uint256);

    /// @notice Apply demurrage to account (anyone can call)
    function applyDemurrage(address account) external;

    /// @notice Get staking tier for account
    function tierOf(address account) external view returns (uint8 tier, uint256 boost);
}

3. VLUX (Vote-Locked LUX) — Voting Power

VLUX represents voting power in Lux governance. It is not a token but a calculated value based on staked DLUX, K score, and stake duration.

Formula

VLUX = DLUX_staked × f(K) × time_multiplier

where:
  f(K) = sqrt(K / 100)  // Karma scaling function
  time_multiplier = 1 + (lock_months × 0.1)  // Max 4x at 30 months

Example Calculations

DLUX StakedK ScoreLock DurationVLUX
1,0001000 months1,000 × 1.0 × 1.0 = 1,000
1,0004000 months1,000 × 2.0 × 1.0 = 2,000
1,00010012 months1,000 × 1.0 × 2.2 = 2,200
1,00040012 months1,000 × 2.0 × 2.2 = 4,400
10,00090030 months10,000 × 3.0 × 4.0 = 120,000

Quadratic Voting (Optional)

For certain proposal types, quadratic voting can be enabled:

Effective Votes = sqrt(VLUX_spent)

Example: 10,000 VLUX → 100 effective votes
         40,000 VLUX → 200 effective votes (not 4x)

VLUX Interface

interface IVLUX {
    /// @notice Get voting power for account
    function votingPower(address account) external view returns (uint256);

    /// @notice Get voting power at specific block
    function votingPowerAt(address account, uint256 blockNumber) external view returns (uint256);

    /// @notice Lock DLUX for increased voting power
    function lock(uint256 amount, uint256 lockMonths) external;

    /// @notice Extend existing lock
    function extendLock(uint256 additionalMonths) external;

    /// @notice Get lock details
    function lockOf(address account) external view returns (
        uint256 amount,
        uint256 unlockTime,
        uint256 timeMultiplier
    );
}

4. NFT Staking for DLUX Yield

NFT holders can stake their NFTs to earn DLUX emissions:

Emission Rates

NFT CollectionDaily DLUX per NFTRequirements
Genesis Collection10 DLUXNone
Premium Collection5 DLUXNone
Standard Collection1 DLUXNone
Community NFTs0.5 DLUXK ≥ 100

NFT Staking Interface

interface INFTStaking {
    /// @notice Stake NFT to earn DLUX
    function stakeNFT(address collection, uint256 tokenId) external;

    /// @notice Unstake NFT and claim pending DLUX
    function unstakeNFT(address collection, uint256 tokenId) external returns (uint256 dluxEarned);

    /// @notice Claim pending DLUX without unstaking
    function claimDLUX() external returns (uint256 dluxEarned);

    /// @notice Get pending DLUX for staker
    function pendingDLUX(address staker) external view returns (uint256);

    /// @notice Get emission rate for collection
    function emissionRate(address collection) external view returns (uint256 dluxPerDay);
}

5. Emission Control Registry

Governance controls all DLUX emission parameters:

interface IDLUXEmissionRegistry {
    /// @notice Set rebase rate (governance only)
    function setRebaseRate(uint256 ratePerEpoch) external;

    /// @notice Set demurrage rate (governance only)
    function setDemurrageRate(uint256 ratePerDay) external;

    /// @notice Set NFT collection emission rate (governance only)
    function setNFTEmission(address collection, uint256 dluxPerDay) external;

    /// @notice Set emission cap (governance only)
    function setEmissionCap(uint256 maxDailyEmission) external;

    /// @notice Pause all emissions (emergency)
    function pauseEmissions() external;

    /// @notice Get current emission parameters
    function getEmissionParams() external view returns (
        uint256 rebaseRate,
        uint256 demurrageRate,
        uint256 dailyEmissionCap,
        bool paused
    );
}

Reference Implementation

Contract Locations

Implementation repository: luxfi/standard

ContractPathStatus
Karma.solcontracts/governance/Karma.sol✅ Implemented
DLUX.solcontracts/governance/DLUX.sol✅ Implemented
vLUX.solcontracts/governance/vLUX.sol✅ Implemented
VotingPower.solcontracts/governance/VotingPower.sol✅ Implemented
NFTStaking.solcontracts/staking/NFTStaking.solPlanned
EmissionRegistry.solcontracts/governance/EmissionRegistry.solPlanned
Governor.solcontracts/governance/Governor.sol✅ Implemented
sLUX.solcontracts/staking/sLUX.sol✅ Implemented

Implementation Notes

Karma.sol (10.3 KB):

  • Soul-bound reputation with DID linking
  • ATTESTOR_ROLE and SLASHER_ROLE access control
  • Inactivity decay after 365 days (10% per year)
  • Max 1000 K per account soft cap

DLUX.sol (19.7 KB):

  • OHM-style rebasing with 8-hour epochs
  • Demurrage: 0.1% per day on unstaked balance
  • Five tiers: Bronze, Silver, Gold, Diamond, Quantum
  • Lock periods from none (Bronze) to 365 days (Quantum)
  • Rebase boost from 1.0x to 2.0x based on tier

VotingPower.sol (10.3 KB):

  • VLUX = DLUX × f(K) × time_multiplier
  • f(K) = sqrt(K / 100) for Karma scaling
  • Time multiplier: 1 + (lock_months × 0.1), max 4.0x
  • Quadratic voting support
  • Historical snapshots for governance proposals

Deployment Order

  1. Deploy Karma (K)
  2. Deploy DLUX with K address
  3. Deploy VotingPower with DLUX + K
  4. Deploy NFTStaking with DLUX
  5. Deploy EmissionRegistry
  6. Deploy Governor with VotingPower
  7. Transfer EmissionRegistry ownership to Governor

Governance Integration

Proposal Thresholds

ActionVLUX Required
Create Proposal10,000 VLUX
Fast-track Proposal100,000 VLUX
Emergency Action500,000 VLUX + 5 K holders

Quorum Requirements

Proposal TypeQuorum (% of circulating VLUX)
Parameter Change4%
Treasury Allocation10%
Protocol Upgrade20%
Emergency33%

Voting Periods

Proposal TypeVoting PeriodTimelock
Standard7 days2 days
Fast-track3 days1 day
Emergency24 hoursNone

Security Considerations

Sybil Resistance

  • K is soul-bound to DIDs, preventing multi-account attacks
  • Human verification required for meaningful K accumulation
  • Quadratic voting further reduces plutocratic influence

Economic Security

  • Demurrage prevents passive token accumulation
  • Lock periods prevent governance attacks via flash loans
  • Treasury backing ensures DLUX intrinsic value

Emergency Controls

  • Governance can pause emissions
  • Multi-sig emergency actions for critical vulnerabilities
  • Timelock on all parameter changes

Backwards Compatibility

This LP introduces new tokens (K, DLUX, VLUX) that do not replace existing functionality. The governance token stack is additive:

  • LUX Token: Remains unchanged as the base staking asset
  • Existing Governance: Current governance contracts continue to function
  • Migration Path: Users can opt-in to DLUX staking at their discretion

No breaking changes are introduced. The new token contracts deploy alongside existing infrastructure.


Rationale

Why OHM + veToken Hybrid?

  • OHM rebasing: Rewards active stakers with high APY
  • Demurrage: Penalizes passive holding, encouraging participation
  • veToken locking: Time-weighted commitment increases voting power
  • K reputation: Human legitimacy prevents Sybil attacks

Why Separate K from DLUX?

K (Karma) is reputation-based and soul-bound, while DLUX is economic and transferable. Separating them allows:

  • Trading DLUX without losing reputation
  • Reputation to persist across economic cycles
  • Different earning mechanisms for each

Why Quadratic Voting?

Quadratic voting reduces whale influence while still allowing token-weighted governance:

  • 100 VLUX → 10 votes
  • 10,000 VLUX → 100 votes (not 1000)

This balances token-holder interests with democratic ideals.


LPTitleRelationship
LP-3000Standard Library RegistryImplementation location
LP-3020LRC-20 Token StandardBase token interface
LP-3210NFT Staking StandardNFT staking pattern

References


Copyright and related rights waived via CC0.