Skip to content

Abstract

This PIP defines ASHA (آشا) as the sole reserve token for Pars Protocol. ASHA is the only mintable/inflationary token in the system, backed by protocol treasury assets. Users obtain ASHA by bonding collateral assets (CYRUS, MIGA, PARS, stablecoins, ETH) at a discount. Governance power is exclusively through veASHA (vote-escrowed ASHA).

Motivation

The previous vePARS model conflated the network gas token (PARS) with governance. This created several issues:

  1. Governance capture risk — Large PARS holders could dominate governance
  2. Conflicting incentives — Network gas needs vs governance locking
  3. Unclear backing — No explicit treasury backing for governance token
  4. Multi-token confusion — CYRUS, MIGA, PARS all competing for governance role

The ASHA architecture provides:

  • Single governance token — veASHA is the only way to vote
  • Clear backing — ASHA is backed by treasury assets
  • Bonding utility — CYRUS/MIGA/PARS become useful collateral
  • OHM-style mechanics — Protocol-owned liquidity and reserve currency

Specification

Token Architecture

┌─────────────────────────────────────────────────────────────────────────────────┐
│                           ASHA TOKEN ARCHITECTURE                                │
├─────────────────────────────────────────────────────────────────────────────────┤
│                                                                                  │
│  COLLATERAL LAYER                                                                │
│  ┌─────────────────────────────────────────────────────────────────────────────┐│
│  │  CYRUS │ MIGA │ PARS │ USDC/USDT │ ETH/WETH │ LP Tokens                     ││
│  │                                                                              ││
│  │  These are BONDABLE COLLATERAL - NOT governance tokens                       ││
│  └─────────────────────────────────────────────────────────────────────────────┘│
│                                      │                                           │
│                                      ▼                                           │
│  BONDING LAYER                                                                   │
│  ┌─────────────────────────────────────────────────────────────────────────────┐│
│  │                                                                              ││
│  │  Bond Collateral ──► Receive Discounted ASHA ──► Treasury Grows             ││
│  │                                                                              ││
│  │  Discount determined by:                                                     ││
│  │  • Collateral tier (S/A/B/C/D)                                              ││
│  │  • Control variable (CV)                                                     ││
│  │  • Debt ratio                                                                ││
│  │  • Vesting period (5 days default)                                          ││
│  │                                                                              ││
│  └─────────────────────────────────────────────────────────────────────────────┘│
│                                      │                                           │
│                                      ▼                                           │
│  RESERVE LAYER                                                                   │
│  ┌─────────────────────────────────────────────────────────────────────────────┐│
│  │                                                                              ││
│  │  ASHA (آشا) - The sole reserve token                                        ││
│  │                                                                              ││
│  │  • Only inflationary token in the system                                    ││
│  │  • Backed by treasury assets                                                 ││
│  │  • Minted only through bonding                                              ││
│  │  • Can be staked for yield or locked for governance                         ││
│  │                                                                              ││
│  └─────────────────────────────────────────────────────────────────────────────┘│
│                                      │                                           │
│                                      ▼                                           │
│  GOVERNANCE LAYER                                                                │
│  ┌─────────────────────────────────────────────────────────────────────────────┐│
│  │                                                                              ││
│  │  ASHA ──► Lock (1 week to 4 years) ──► veASHA                               ││
│  │                                                                              ││
│  │  veASHA is the ONLY governance token:                                       ││
│  │  • Non-transferable                                                          ││
│  │  • Linear weight based on lock duration                                      ││
│  │  • Voting power decays as lock approaches expiry                            ││
│  │                                                                              ││
│  └─────────────────────────────────────────────────────────────────────────────┘│
│                                                                                  │
└─────────────────────────────────────────────────────────────────────────────────┘

ASHA Token Contract

solidity
interface IASHA is IERC20 {
    // ═══════════════════════════════════════════════════════════════════════════════
    //                              CORE ERC20
    // ═══════════════════════════════════════════════════════════════════════════════

    /// @notice Token name: "ASHA"
    function name() external view returns (string memory);

    /// @notice Token symbol: "ASHA"
    function symbol() external view returns (string memory);

    /// @notice Decimals: 18
    function decimals() external view returns (uint8);

    // ═══════════════════════════════════════════════════════════════════════════════
    //                              MINTING (Bonding Only)
    // ═══════════════════════════════════════════════════════════════════════════════

    /// @notice Mint ASHA - ONLY callable by Treasury/Bonding contracts
    /// @param to Recipient address
    /// @param amount Amount to mint
    /// @dev Reverts if caller is not authorized minter
    function mint(address to, uint256 amount) external;

    /// @notice Check if address is authorized minter
    /// @param account Address to check
    function isMinter(address account) external view returns (bool);

    /// @notice Add minter (governance only)
    /// @param minter Address to authorize
    function addMinter(address minter) external;

    /// @notice Remove minter (governance only)
    /// @param minter Address to deauthorize
    function removeMinter(address minter) external;

    // ═══════════════════════════════════════════════════════════════════════════════
    //                              BACKING METRICS
    // ═══════════════════════════════════════════════════════════════════════════════

    /// @notice Get backing ratio (treasury value / ASHA supply)
    /// @return ratio Backing ratio in basis points (10000 = 1:1)
    function backingRatio() external view returns (uint256);

    /// @notice Get treasury address
    function treasury() external view returns (address);
}

veASHA Lock Contract

solidity
interface IVeASHA {
    // ═══════════════════════════════════════════════════════════════════════════════
    //                              LOCK MANAGEMENT
    // ═══════════════════════════════════════════════════════════════════════════════

    /// @notice Lock ASHA tokens to receive veASHA
    /// @param amount Amount of ASHA to lock
    /// @param duration Lock duration in seconds
    /// @return lockId The ID of the created lock
    function lock(uint256 amount, uint256 duration) external returns (uint256 lockId);

    /// @notice Extend an existing lock duration
    /// @param lockId ID of the existing lock
    /// @param newDuration New lock duration from current timestamp
    function extendLock(uint256 lockId, uint256 newDuration) external;

    /// @notice Add more ASHA to an existing lock
    /// @param lockId ID of the existing lock
    /// @param additionalAmount Amount of ASHA to add
    function increaseLock(uint256 lockId, uint256 additionalAmount) external;

    /// @notice Withdraw ASHA after lock expires
    /// @param lockId ID of the expired lock
    function withdraw(uint256 lockId) external;

    // ═══════════════════════════════════════════════════════════════════════════════
    //                              VOTING POWER
    // ═══════════════════════════════════════════════════════════════════════════════

    /// @notice Get current voting power for an account
    /// @param account The address to query
    /// @return Voting power (decays linearly)
    function votingPower(address account) external view returns (uint256);

    /// @notice Get voting power at a specific block
    /// @param account The address to query
    /// @param blockNumber The block to query
    function getPriorVotes(address account, uint256 blockNumber) external view returns (uint256);

    /// @notice Get total veASHA supply
    function totalSupply() external view returns (uint256);

    // ═══════════════════════════════════════════════════════════════════════════════
    //                              DELEGATION
    // ═══════════════════════════════════════════════════════════════════════════════

    /// @notice Delegate voting power to another address
    /// @param delegatee Address to delegate to
    function delegate(address delegatee) external;

    /// @notice Get current delegatee for an account
    /// @param account The address to query
    function delegates(address account) external view returns (address);

    // ═══════════════════════════════════════════════════════════════════════════════
    //                              LOCK PARAMETERS
    // ═══════════════════════════════════════════════════════════════════════════════

    /// @notice Minimum lock duration (1 week)
    function MIN_LOCK_DURATION() external view returns (uint256);

    /// @notice Maximum lock duration (4 years)
    function MAX_LOCK_DURATION() external view returns (uint256);
}

Lock Duration & Weight

veASHA uses linear weighting based on lock duration:

veASHA_weight = (lock_duration / MAX_DURATION)
Lock DurationWeightExample: 1000 ASHA
1 week0.0048x4.8 veASHA
1 month0.021x21 veASHA
3 months0.0625x62.5 veASHA
6 months0.125x125 veASHA
1 year0.25x250 veASHA
2 years0.50x500 veASHA
4 years1.00x1000 veASHA

Voting power decays linearly as the lock approaches expiry.

Bonding System

Users bond collateral assets to receive discounted ASHA:

solidity
interface IBondDepository {
    /// @notice Bond collateral for discounted ASHA
    /// @param bondId The bond market ID
    /// @param amount Amount of collateral to bond
    /// @param maxPrice Maximum price willing to pay (slippage protection)
    /// @return payout Amount of ASHA to receive after vesting
    function deposit(
        uint256 bondId,
        uint256 amount,
        uint256 maxPrice
    ) external returns (uint256 payout);

    /// @notice Redeem vested ASHA
    /// @param bondId The bond market ID
    /// @param redeem Whether to redeem to wallet (true) or stake (false)
    function redeem(uint256 bondId, bool redeem) external returns (uint256);

    /// @notice Get bond price for a market
    /// @param bondId The bond market ID
    function bondPrice(uint256 bondId) external view returns (uint256);

    /// @notice Get discount for a market
    /// @param bondId The bond market ID
    /// @return discount Discount in basis points
    function currentDiscount(uint256 bondId) external view returns (uint256);
}

Collateral Tiers

All assets can be liquid staked (PIP-7008) to receive L-tokens (LETH, LBTC, LPARS, LCYRUS, LMIGA). L-tokens receive bonus discounts because they're yield-bearing.

TierCollateralMax DiscountVestingRisk Weight
SUSDC, USDT, DAI3-8%5 days1.0x
AETH, WETH, WBTC5-12%7 days1.2x
A+LETH, LBTC6-14%7 days1.1x
BPARS (native)8-18%14 days1.5x
B+LPARS10-20%14 days1.4x
CCYRUS, MIGA10-22%21 days1.8x
C+LCYRUS, LMIGA12-24%21 days1.7x
DLP Tokens12-25%28 days2.0x

L-token Bonus: Liquid staked tokens get +2% max discount and -0.1x risk weight because they:

  • Generate yield while vesting
  • Represent proven long-term commitment
  • Provide additional backing value

Bonding Flow

┌─────────────────────────────────────────────────────────────────────────────────┐
│                              BONDING FLOW                                        │
├─────────────────────────────────────────────────────────────────────────────────┤
│                                                                                  │
│  1. DEPOSIT COLLATERAL                                                           │
│     User deposits 1000 USDC                                                      │
│     ┌─────────────────────────────────────────────────────────────────────────┐ │
│     │  Collateral: USDC (Tier S)                                              │ │
│     │  Amount: 1000 USDC                                                       │ │
│     │  Discount: 5%                                                            │ │
│     │  ASHA Price: $10 market, $9.50 bond                                      │ │
│     │  Payout: 105.26 ASHA ($1000 / $9.50)                                     │ │
│     │  Vesting: 5 days                                                          │ │
│     └─────────────────────────────────────────────────────────────────────────┘ │
│                                      │                                           │
│  2. TREASURY RECEIVES COLLATERAL                                                 │
│     ┌─────────────────────────────────────────────────────────────────────────┐ │
│     │  Treasury receives: 1000 USDC                                            │ │
│     │  Treasury mints: 105.26 ASHA (vesting)                                   │ │
│     │  Backing increases by: 1000 USDC                                         │ │
│     └─────────────────────────────────────────────────────────────────────────┘ │
│                                      │                                           │
│  3. VESTING PERIOD (5 days)                                                      │
│     ┌─────────────────────────────────────────────────────────────────────────┐ │
│     │  Day 1: 21.05 ASHA claimable                                             │ │
│     │  Day 2: 42.10 ASHA claimable                                             │ │
│     │  Day 3: 63.16 ASHA claimable                                             │ │
│     │  Day 4: 84.21 ASHA claimable                                             │ │
│     │  Day 5: 105.26 ASHA claimable (full)                                     │ │
│     └─────────────────────────────────────────────────────────────────────────┘ │
│                                      │                                           │
│  4. CLAIM / STAKE / LOCK                                                         │
│     ┌─────────────────────────────────────────────────────────────────────────┐ │
│     │  Option A: Claim to wallet (liquid ASHA)                                 │ │
│     │  Option B: Auto-stake in xASHA (yield)                                   │ │
│     │  Option C: Lock for veASHA (governance)                                  │ │
│     └─────────────────────────────────────────────────────────────────────────┘ │
│                                                                                  │
└─────────────────────────────────────────────────────────────────────────────────┘

Treasury Backing

ASHA is backed by diversified treasury assets:

Asset ClassTarget AllocationPurpose
Stablecoins40-50%Stability, operational runway
ETH/BTC20-30%Growth exposure, liquidity
Ecosystem15-25%PARS, CYRUS, MIGA alignment
POL10-20%Protocol-owned liquidity

Backing Ratio

Backing Ratio = Treasury Value / ASHA Supply
RangeStatusActions
>110%SurplusMay enable buybacks
100-110%HealthyNormal operations
90-100%CautionReduce bond discounts
<90%Under-backedHalt new bonds, recovery mode

Governor Integration

veASHA integrates with the Governor module:

ParameterValue
Proposal Threshold0.25% of veASHA supply
Quorum10% of veASHA supply
Approval Threshold50% (67% for treasury >$100K)
Voting Delay3 days
Voting Period7 days
Timelock48 hours

Security Considerations

Bonding Risks

  • Discount manipulation — Control variable adjusts slowly to prevent exploitation
  • Debt ceiling — Maximum ASHA mintable per epoch prevents dilution
  • Vesting — 5-day vesting prevents immediate arbitrage

Governance Risks

  • Vote buying — veASHA non-transferable, requires long-term commitment
  • Flash loans — Cannot acquire veASHA via flash loans
  • Concentration — Long lock periods distribute governance over time

Treasury Risks

  • Backing collapse — Emergency mode if backing ratio <90%
  • Asset concentration — Diversification targets enforced by governance
  • Smart contract — Multi-sig and timelock protect treasury

References

Copyright and related rights waived via CC0.

Released under the MIT License.