From 47118476c64784f25ed580ad07fbbfc908cb2752 Mon Sep 17 00:00:00 2001 From: Noah Boisserie <51783223+JeanBrasse@users.noreply.github.com> Date: Fri, 2 Oct 2026 13:39:57 +0400 Subject: [PATCH 1/6] docs(prl): sPRL2 v2, staking per chain, rewards on Base, MCP 1.4 and the migration's end - Staking: the sPRL2 v2 vaults on Ethereum and Base hold the pool token without Aura, and the paused v1 vault moves to v2 through the sPRL2Migrator. sPRL1 takes new stakes on Ethereum and Base; Polygon and Sonic are unstake-only (PIP-68). - Rewards: the stakers' share, 15% of Parallel V2 revenue, is paid in USDp and claimed on Base; the legacy epochs stay claimable in PAR on Polygon. - MCP server 1.4.0/1.4.1 and CLI 0.4.0: staking per chain, aprNote, readOnlyHint annotations, get_protocol_parameters in JSON, a nullable feeShare, prepare_convert_and_pay for EIP-3009 collaterals only. - MIMO to PRL: PIP-65 ended the migration on 15 April 2026, not on 1 August; the user guides no longer point at the app's removed Migrate page. - Developer pages: sPRL2V2 and sPRL2Migrator, the real withdraw and claims signatures, and what EPOCH_LENGTH actually bounds. - Audits: the Bail Security sPRL2V2 report (June 2026). Co-Authored-By: Claude Opus 5.5 --- src/data/prl-addresses.ts | 8 ++-- src/pages/agents/cli/commands.mdx | 8 ++-- src/pages/agents/mcp/tools.mdx | 21 ++++---- src/pages/agents/mcp/transactions.mdx | 2 +- .../parallel-governance-token-prl/index.mdx | 4 ++ .../tokenomics/contracts.mdx | 37 +++++++++++--- .../tokenomics/index.mdx | 4 +- .../tokenomics/key-operations-flows.mdx | 48 ++++++++++--------- .../mimo-to-prl-migration.mdx | 8 ++-- .../tokenomics/epoch-concept.mdx | 2 +- .../tokenomics/fee-distribution.mdx | 13 +++-- .../tokenomics/paraboost.mdx | 2 +- .../tokenomics/staking-mechanisms.mdx | 15 +++--- src/pages/governance/sprl.mdx | 15 +++--- src/pages/products/parallel-v3/index.mdx | 2 +- .../usdp-and-susdp/fee-distribution.mdx | 4 +- src/pages/resources/factsheets/prl.mdx | 10 ++-- src/pages/resources/user-guides.mdx | 4 +- src/pages/resources/user-guides/stake-prl.mdx | 22 ++++----- src/pages/security/audits.mdx | 1 + src/pages/security/risks.mdx | 4 +- src/sidebar.generated.ts | 4 -- 22 files changed, 137 insertions(+), 101 deletions(-) diff --git a/src/data/prl-addresses.ts b/src/data/prl-addresses.ts index 553cccf..524c226 100644 --- a/src/data/prl-addresses.ts +++ b/src/data/prl-addresses.ts @@ -13,7 +13,7 @@ export const PRL_ADDRESSES: Record = { { name: "ParallelAccessManager", address: "0x0e4e7Ca9D7b1e6293D0713EFEfB4BCA010DeBF46", description: "Core Protocol" }, { name: "PeripheralPRL", address: "0xfD28f108e95f4D41daAE9dbfFf707D677985998E", description: "Parallel Governance Token l PRL Bridging Module" }, { name: "sPRL1", address: "0x01fA35fDE0E813e2D6687660a74A313d8D922E48", description: "PRL Tokenomics" }, - { name: "sPRL2", address: "0xB22f5eDbc62adCC093307025B8fdf75a0aa00e24", description: "PRL Tokenomics" }, + { name: "sPRL2 (v2)", address: "0xB22f5eDbc62adCC093307025B8fdf75a0aa00e24", description: "PRL Tokenomics" }, { name: "MainFeeDistributor (USDp)", address: "0x5D49C8b8cc691533742602d6aB3127904959B7e3", description: "PRL Tokenomics" }, { name: "RewardMerkleDistributor (USDp)", address: "0x13E867f55043302925971e88aB8faB704241A96B", description: "PRL Tokenomics" }, ], @@ -45,13 +45,13 @@ export const PRL_ADDRESSES: Record = { { name: "ParallelAccessManager", address: "0x7Df74BBB6F82eC1BCB1562a30ef5Bf5c326e2811", description: "Core Protocol" }, { name: "PeripheralPRL", address: "0x7790dd69aa10eD3f1271E41CD7222D2a7d2D5948", description: "Parallel Governance Token l PRL Bridging Module l PRL Migration Contract" }, { name: "PeripheralMigrationContract (deprecated)", address: "0x9C68850E18EACD4ea7ca2998b6BBeD9cf55316cb", description: "Parallel Governance Token l PRL Bridging Module l PRL Migration Contract" }, - { name: "sPRL1 (deprecated)", address: "0xDB7Be3a50bdf5641757EBEa38e8014E1F0AA9475", description: "PRL Tokenomics" }, + { name: "sPRL1 (sunset, unstake only)", address: "0xDB7Be3a50bdf5641757EBEa38e8014E1F0AA9475", description: "PRL Tokenomics" }, { name: "MainfeeDistributor (PAR, deprecated)", address: "0x90337e484B1Cb02132fc150d3Afa262147348545", description: "PRL Tokenomics" }, - { name: "RewardMerkleDistributor (PAR, deprecated)", address: "0x7b54f3D993d3bcA077946034Ea710F9c07420C72", description: "PRL Tokenomics" }, + { name: "RewardMerkleDistributor (PAR, legacy epochs)", address: "0x7b54f3D993d3bcA077946034Ea710F9c07420C72", description: "PRL Tokenomics" }, ], "sonic": [ { name: "ParallelAccessManager", address: "0x8eFb3DED78FbaEF2a4eFe01E01BBD911E4094b78", description: "Core Protocol" }, { name: "PeripheralPRL", address: "0xfD28f108e95f4D41daAE9dbfFf707D677985998E", description: "Parallel Governance Token l PRL Bridging Module" }, - { name: "sPRL1 (deprecated)", address: "0x7Df74BBB6F82eC1BCB1562a30ef5Bf5c326e2811", description: "PRL Tokenomics" }, + { name: "sPRL1 (sunset, unstake only)", address: "0x7Df74BBB6F82eC1BCB1562a30ef5Bf5c326e2811", description: "PRL Tokenomics" }, ], }; diff --git a/src/pages/agents/cli/commands.mdx b/src/pages/agents/cli/commands.mdx index 1d2718c..b38c761 100644 --- a/src/pages/agents/cli/commands.mdx +++ b/src/pages/agents/cli/commands.mdx @@ -89,13 +89,13 @@ Only USDp bridges for now, on every supported chain. parallel staking overview parallel staking info
parallel staking cooldown
-parallel staking stake --type --amount --wallet -parallel staking unstake --type --amount --wallet # starts cooldown -parallel staking unstake --type sprl2 --wallet # withdraw matured requests +parallel staking stake --type --amount [--chain base] --wallet +parallel staking unstake --type --amount [--chain ] --wallet # starts cooldown +parallel staking unstake --type [--chain ] --wallet # withdraw matured requests parallel staking claim --type --wallet ``` -Staking transactions run on Ethereum. The sPRL2 stake takes `--weth-amount ` for the PRL + WETH path; `claim` can return transactions on both Ethereum and Polygon. +`stake` and `unstake` act on the chain given by `--chain` (default `ethereum`): stake on Ethereum or Base, unstake on the chain that holds the position, Polygon and Sonic included while staking is being sunset there. The sPRL2 stake takes `--amount` in BPT of the chosen chain's pool, or `--amount` in PRL with `--weth-amount ` for the PRL + WETH path. `claim` sends one claim on Base, plus one on Polygon for the epochs published before the move to Base, while any remain. `info` and `cooldown` cover every chain, and list what is left in the paused sPRL2 v1 vault. ## Governance diff --git a/src/pages/agents/mcp/tools.mdx b/src/pages/agents/mcp/tools.mdx index 00210b1..777f3d9 100644 --- a/src/pages/agents/mcp/tools.mdx +++ b/src/pages/agents/mcp/tools.mdx @@ -15,6 +15,7 @@ import { HelpFooter } from '@/components/HelpFooter' - **Slippage is in basis points** — `50` = 0.5%. Default 50, maximum 500. Applies to `mint`, `redeem` and `redeem_proportional`. - **Chains are lowercase slugs** (`base`, `ethereum`, `hyperevm`, …). Minting, redeeming and savings run on the chains with a Parallelizer deployment — Ethereum, Base, Avalanche and HyperEVM; on Sonic those operations return `CHAIN_SUNSET` (PIP-64 wind-down) while bridging and balance reads stay active. Bridging covers every supported chain. - **Multi-chain aggregates are honest about failures**: when a chain read fails, the response carries `partial: true` and a `failedChains` list, and the totals exclude those chains — never a silently wrong number. `get_proof_of_solvency` goes further and refuses to conclude on incomplete data (`PARTIAL_READ`). +- **Every tool carries MCP annotations**: reads are marked `readOnlyHint: true`, transaction builders `readOnlyHint: false`, and no tool is marked destructive. Every tool returns its data as JSON, `get_protocol_parameters` included. ## Protocol data @@ -27,7 +28,7 @@ import { HelpFooter } from '@/components/HelpFooter' | `get_supported_chains` | The 24 chains USDp is deployed on, with status and contract addresses (Sonic is flagged sunset — mint, redeem and savings were wound down there under PIP-64, while USDp, bridging and balance reads stay live) | | `get_supported_collaterals` | Collaterals accepted on a chain, with caps, utilization and mint/redeem status | | `get_fee_rates` | Adaptive mint/redeem fees per collateral — can be negative (incentives) | -| `get_savings_rate` | The protocol-wide sUSDp APY (7d/30d/90d), exchange rate and total deposits | +| `get_savings_rate` | The protocol-wide sUSDp APY (7d/30d/90d), exchange rate and total deposits, with `feeShare`: the share of the protocol surplus not kept by the DAO Treasury, read on-chain (90% today), or `null` when that read fails | | `get_proof_of_solvency` | Total backing vs USDp supply — the canonical solvency ratio, per chain | ## Savings (sUSDp) @@ -62,14 +63,14 @@ import { HelpFooter } from '@/components/HelpFooter' | Tool | What it does | |---|---| -| `get_staking_overview` | Epochs, totals staked in sPRL1/sPRL2, voting power, and APRs (when an epoch has settled — otherwise null, with the reason in `unavailableFields`) | -| `get_staking_info` | One address's full staking position: balances, rewards, cooldowns, ParaBoost | -| `get_cooldown_status` | Pending unstake requests, remaining time and estimated penalties | -| `stake` | Builds staking transactions — PRL into sPRL1, or PRL/BPT into sPRL2 | -| `unstake` | With `amount`: builds the cooldown start. Without: builds the withdrawal of matured requests | -| `claim_rewards` | Builds reward claims for sPRL1/sPRL2 — may return transactions on several chains | +| `get_staking_overview` | Epochs, totals staked in sPRL1/sPRL2 in all and per chain, voting power, and APRs with an `aprNote` (when an epoch has settled — otherwise null, with the reason in `unavailableFields`) | +| `get_staking_info` | One address's full staking position on every chain: balances, rewards (including the legacy ones on Polygon), cooldowns, ParaBoost, and any sPRL2 left in the paused v1 vault | +| `get_cooldown_status` | Pending unstake requests on every chain, remaining time and estimated penalties | +| `stake` | Builds staking transactions on Ethereum or Base (`chain`) — PRL into sPRL1, or BPT or PRL + WETH into sPRL2 | +| `unstake` | On the `chain` that holds the position. With `amount`: builds the cooldown start. Without: builds the withdrawal of matured requests | +| `claim_rewards` | Builds reward claims for sPRL1/sPRL2 on Base, plus one on Polygon for the epochs published before the move to Base while any remain | -sPRL1 is deployed on Ethereum, Polygon, Base and Sonic; sPRL2 on Ethereum only. +New stakes go to Ethereum or Base: sPRL1, and the sPRL2 v2 vault, which replaced the paused v1 vault on Ethereum. sPRL1 on Polygon and Sonic is being sunset: a stake there is refused with `CHAIN_SUNSET`, while unstaking and withdrawing stay open and carry a `STAKING_SUNSET` warning. Every staking APR comes with an `aprNote`: a 0.00% means the last epoch distributed no rewards, not that a vault pays none. ## Governance @@ -77,7 +78,7 @@ sPRL1 is deployed on Ethereum, Polygon, Base and Sonic; sPRL2 on Ethereum only. |---|---| | `get_proposals` | Snapshot proposals (PIP/PGP/PIR), filterable by type and status | | `get_proposal_details` | One proposal in full, votes and result included | -| `get_protocol_parameters` | Contract addresses, governance roles, fees and bridge limits — one formatted summary | +| `get_protocol_parameters` | Contract addresses, governance roles, fees, collateral caps, bridge limits and `savingsFeeShare` (90% today, read on-chain, `null` when that read fails), in one JSON answer | ## Agent payments (x402) @@ -85,7 +86,7 @@ sPRL1 is deployed on Ethereum, Polygon, Base and Sonic; sPRL2 on Ethereum only. |---|---| | `get_payment_capabilities` | Payment routes available on a chain and whether gas is sponsored | | `prepare_x402_payment` | Builds a gasless x402 payment — returns typed data for your wallet to sign; the facilitator settles on-chain only after that | -| `prepare_convert_and_pay` | Builds a two-step payment — redeem USDp to a collateral, then pay it, for recipients wanting a specific token | +| `prepare_convert_and_pay` | Builds a two-step payment — redeem USDp to a collateral, then pay it, for recipients wanting a specific token. The collateral must support EIP-3009 (USDC by default); any other target is refused before anything is built | Gas is sponsored on every Parallelizer chain except Ethereum. See [x402](/agents/x402) for the full payment protocol. diff --git a/src/pages/agents/mcp/transactions.mdx b/src/pages/agents/mcp/transactions.mdx index 1209730..b579b26 100644 --- a/src/pages/agents/mcp/transactions.mdx +++ b/src/pages/agents/mcp/transactions.mdx @@ -48,7 +48,7 @@ The approval is **bounded**: the calldata grants exactly `approvalAmount` — th Every write is statically simulated before it reaches you: - `simulation.success: false` comes with a `revertReason`. When the response bundles an `approvalTx`, a revert on allowance is the expected pre-approval state and is flagged `PENDING_APPROVAL` with severity `info` — submit the approval first, then the transaction. Any other revert is flagged `SIMULATION_FAILED` with severity `error`: the transaction would fail on-chain, don't send it. -- `warnings[]` also surfaces business risks before you sign: an sPRL1 early-unstake penalty (`EARLY_UNSTAKE_PENALTY`), a ParaBoost about to be lost on unstake (`PARABOOST_LOST`) or locked on stake (`PARABOOST_LOCK`). +- `warnings[]` also surfaces business risks before you sign: an sPRL1 early-unstake penalty (`EARLY_UNSTAKE_PENALTY`), a ParaBoost about to be lost on unstake (`PARABOOST_LOST`) or locked on stake (`PARABOOST_LOCK`), or an unstake on Polygon or Sonic, where staking is being sunset (`STAKING_SUNSET`). Each warning has a `severity` (`info`, `warning`, `error`) and a human-readable `message` — surface them to whoever approves the transaction. diff --git a/src/pages/developers-hub/parallel-governance-token-prl/index.mdx b/src/pages/developers-hub/parallel-governance-token-prl/index.mdx index 8acfe36..9eed656 100644 --- a/src/pages/developers-hub/parallel-governance-token-prl/index.mdx +++ b/src/pages/developers-hub/parallel-governance-token-prl/index.mdx @@ -12,6 +12,10 @@ description: >- This document details features related to the new [PRL](https://github.com/parallel-protocol/parallel-prl/blob/main/contracts/principal/PRL.sol) token and the migration from Mimo token to PRL. +:::info +The migration from MIMO to PRL closed on 15 April 2026 under PIP-65: the `PrincipalMigrationContract` on Ethereum is paused and no longer holds PRL. The migration contracts are described below for reference. See [MIMO to PRL Migration](/governance/parallel-governance-token-prl/mimo-to-prl-migration). +::: + 3 types of contracts: * The [`PRL`](https://github.com/parallel-protocol/parallel-prl/blob/main/contracts/principal/PRL.sol) token contract that inherit of Openzeppelin ERC20 and ERC20Permit standards. diff --git a/src/pages/developers-hub/parallel-governance-token-prl/tokenomics/contracts.mdx b/src/pages/developers-hub/parallel-governance-token-prl/tokenomics/contracts.mdx index e14fd99..4434d49 100644 --- a/src/pages/developers-hub/parallel-governance-token-prl/tokenomics/contracts.mdx +++ b/src/pages/developers-hub/parallel-governance-token-prl/tokenomics/contracts.mdx @@ -77,34 +77,57 @@ This contract allow users to stake their PRL tokens to receive sPRL1 tokens and * `deposit(uint256 _amount)` | **Permissionless** : Allow to deposit PRLs and mint the equivalent amount of sPRL1. * `depositWithPermit(uint256 _amount, uint256 _deadline, uint8 _v, bytes32 _r, bytes32 _s)` | **Permissionless** : Allow to deposit PRLs using ERC20Permit and mint the equivalent amount of sPRL1. -* `withdraw(uint256[] calldata _ids)` | **Permissionless** : Allow to withdraw single and multiple withdrawal requests. If the user withdraw before the lock time, the penalty will be applied. +* `withdraw(uint256[] calldata _ids, uint256 _maxAcceptablePenalty)` | **Permissionless** : Allow to withdraw single and multiple withdrawal requests. If the user withdraw before the lock time, the penalty will be applied. Reverts when the start penalty percentage is above `_maxAcceptablePenalty`. * `emergencyWithdraw(uint256 _unlockingAmount)` | **Permissionless** : Allow to emergency withdraw assets without penalties. Only callable when the contract is paused. -#### 1**.2.3** [**sPRL2**](https://github.com/parallel-protocol/parallel-tokenomics/blob/main/contracts/sPRL/sPRL2.sol) +#### 1**.2.3** [**sPRL2 (v1, paused)**](https://github.com/parallel-protocol/parallel-tokenomics/blob/main/contracts/sPRL/sPRL2.sol) + +The first sPRL2 vault, deployed on Ethereum only. It is paused since Tokenomics v2.1 (PIP-68): its holders move their position to sPRL2V2 through the sPRL2Migrator, or leave with `emergencyWithdraw`. This contract allow users to stake either their Balancer BPT or their PRL/ETH. BPT will be staked into Aura.finance and user will receive sPRL2 tokens equal to their BPT amount. This contract is also able to directly deposit PRL and ETH (or WETH) into the Balancer pool and to deposit the BPT into the Aura.finance pool. On the withdraw side, users can withdraw their the BPT or the amount of PRL/ETH or PRL/WETH linked to the BPT. **function details**: -* `depositBpt(uint256 _amount)` | **Permissionless** : Allow to deposit BPT and mint the equivalent amount of sPRL2 to the user. +* `depositBPT(uint256 _amount)` | **Permissionless** : Allow to deposit BPT and mint the equivalent amount of sPRL2 to the user. * `depositPRLAndWeth(uint256 _maxPrlAmount, uint256 _maxWethAmount, uint256 _exactBptAmount, uint256 _deadline, uint8 _v, bytes32 _r, bytes32 _s)` | **Permissionless** : Allow to deposit PRL and WETH and mint the equivalent amount of sPRL2 to the user. * `depositPRLAndEth(uint256 _maxPrlAmount, uint256 _exactBptAmount, uint256 _deadline, uint8 _v, bytes32 _r, bytes32 _s)` | **Permissionless** : Allow to deposit PRL and ETH and mint the equivalent amount of sPRL2 to the user. -* `withdrawPRLAndWeth(uint256[] calldata _requestIds, uint256 _minPrlAmount, uint256 _minWethAmount)` | **Permissionless** : Allow to withdraw single and multiple requests of PRL and WETH from the Balancer pool attached to the sPRL2 token. -* `withdrawBpt(uint256[] calldata _requestIds, uint256 _minBptAmount)` | **Permissionless** : Allow to withdraw single and multiple requests of BPT from the Aura.finance pool attached to the sPRL2 token. +* `withdrawPRLAndWeth(uint256[] calldata _requestIds, uint256 _minPrlAmount, uint256 _minWethAmount, uint256 _maxPenaltyPercentage)` | **Permissionless** : Allow to withdraw single and multiple requests of PRL and WETH from the Balancer pool attached to the sPRL2 token. +* `withdrawBPT(uint256[] calldata _requestIds, uint256 _maxAcceptablePenalty)` | **Permissionless** : Allow to withdraw single and multiple requests of BPT from the Aura.finance pool attached to the sPRL2 token. * `claimRewards()` | **Permissionless** : Allow to claim the rewards generated by the BPT staked into Aura.finance and to send them to the fee receiver. * `emergencyWithdraw(uint256 _unlockingAmount)` | **Permissionless** : Allow to emergency withdraw assets without penalties. Only callable when the contract is paused. +#### 1**.2.4** [**sPRL2V2**](https://github.com/parallel-protocol/parallel-tokenomics/blob/dev/contracts/sPRL/sPRL2V2.sol) + +The sPRL2 vault since Tokenomics v2.1 (PIP-68), deployed on Ethereum and Base. It takes the BPT of the chain's 80PRL/20WETH Balancer V3 pool, or PRL with WETH or ETH, which it adds to the pool, and mints sPRL2V2 1:1 with the BPT. The BPT stays in the contract: nothing is staked on Aura.finance, so there are no reward functions. Inherits from the TimeLockPenaltyERC20 of the same release, which adds a restricted `recoverERC20(IERC20 _token)` to rescue idle tokens. + +**function details**: + +* `depositBPT(uint256 _amount)` | **Permissionless** : Allow to deposit BPT and mint the equivalent amount of sPRL2V2 to the user. +* `depositPRLAndWeth(uint256 _maxPrlAmount, uint256 _maxWethAmount, uint256 _exactBptAmount, uint256 _deadline, uint8 _v, bytes32 _r, bytes32 _s)` | **Permissionless** : Allow to add PRL and WETH to the Balancer pool and mint sPRL2V2 for the BPT received. What the pool does not take is returned. +* `depositPRLAndEth(uint256 _maxPrlAmount, uint256 _exactBptAmount, uint256 _deadline, uint8 _v, bytes32 _r, bytes32 _s)` | **Permissionless** : Same with ETH, wrapped to WETH by the contract. +* `withdrawBPT(uint256[] calldata _requestIds, uint256 _maxAcceptablePenalty)` | **Permissionless** : Allow to withdraw single and multiple requests as BPT. The penalty, if any, is sent to the fee receiver in BPT. +* `withdrawPRLAndWeth(uint256[] calldata _requestIds, uint256 _minPrlAmount, uint256 _minWethAmount, uint256 _maxPenaltyPercentage)` | **Permissionless** : Allow to withdraw single and multiple requests as PRL and WETH, removed from the Balancer pool. +* `emergencyWithdraw(uint256 _amount)` | **Permissionless** : Allow to emergency withdraw BPT without penalties. Only callable when the contract is paused. + +#### 1**.2.5** [**sPRL2Migrator**](https://github.com/parallel-protocol/parallel-tokenomics/blob/dev/contracts/sPRL/sPRL2Migrator.sol) + +Moves a position from the paused sPRL2 vault to sPRL2V2 in one transaction, on Ethereum. It takes the user's sPRL2, withdraws the BPT through `emergencyWithdraw`, without penalty, deposits it into sPRL2V2 and sends the sPRL2V2 to the user. + +**function details**: + +* `migrate(uint256 _amount)` | **Permissionless** : Allow to migrate an amount of sPRL2 to sPRL2V2. The user approves the migrator to spend the sPRL2 first. + ### 1.3 Rewards This section contains the contracts related to the rewards distribution of the protocol. #### 1**.3.1** [**RewardMerkleDistributor**](https://github.com/parallel-protocol/parallel-tokenomics/blob/main/contracts/rewardMerkleDistributor/RewardMerkleDistributor.sol) -This contract will receive fees from the MainFeeDistributor and distribute them to users using merkle proofs managed by the protocol. +This contract will receive fees from the MainFeeDistributor and distribute them to users using merkle proofs managed by the protocol. Since Tokenomics v2.1 (PIP-68), it distributes USDp on Base; the one on Polygon PoS holds the PAR epochs published before, which stay claimable there. **Functions Details** -* `claim(ClaimCallData[] calldata _claimsData)` | **Permissionless** : Allow user to claim the rewards using a merkle proof. +* `claims(ClaimCallData[] calldata _claimsData)` | **Permissionless** : Allow user to claim the rewards of one or several epochs using merkle proofs. * `forwardExpiredRewards(uint64[] calldata _epochIds)` | **Permissionless** : Allow to forward the expired rewards to the expiredRewardsRecipient. * `updateMerkleDrop(uint64 _epoch, MerkleDrop memory _merkleDrop)` | **Restricted** : Allow to update the merkle drop for a specific epoch. * `updateExpiredRewardsRecipient(address _newExpiredRewardsRecipient)` | **Restricted** : Allow to update the destination receiver of the expired rewards. diff --git a/src/pages/developers-hub/parallel-governance-token-prl/tokenomics/index.mdx b/src/pages/developers-hub/parallel-governance-token-prl/tokenomics/index.mdx index de354cd..63cf4c9 100644 --- a/src/pages/developers-hub/parallel-governance-token-prl/tokenomics/index.mdx +++ b/src/pages/developers-hub/parallel-governance-token-prl/tokenomics/index.mdx @@ -14,8 +14,8 @@ The Parallel Tokenomics is a set of contracts that allows : * to send the fees to the main fee distributor on the destination chain (SideChainFeeDistributor) * to distribute fees generated by the protocol to the listed fee receivers (MainFeeDistributor) -* users to stake their PRL tokens to earn rewards either in single staking (sPRL1) or in a 80PRL/20WETH balancer pool (BPT) that is deposited into aura.finance (sPRL2). -* distribute rewards to sPRL1/sPRL2 users using off-chain calculation and merkle proofs (RewardMerkleDistributor) +* users to stake their PRL tokens to earn rewards either in single staking (sPRL1) or in a 80PRL/20WETH Balancer V3 pool (BPT) held by the sPRL2 v2 vault (sPRL2). The first sPRL2 vault, which deposited the BPT into aura.finance, is paused; the sPRL2Migrator moves its positions to v2. +* distribute rewards to sPRL1/sPRL2 users using off-chain calculation and merkle proofs (RewardMerkleDistributor, on Base since Tokenomics v2.1)

high level architecture

diff --git a/src/pages/developers-hub/parallel-governance-token-prl/tokenomics/key-operations-flows.mdx b/src/pages/developers-hub/parallel-governance-token-prl/tokenomics/key-operations-flows.mdx index 3844b69..392d960 100644 --- a/src/pages/developers-hub/parallel-governance-token-prl/tokenomics/key-operations-flows.mdx +++ b/src/pages/developers-hub/parallel-governance-token-prl/tokenomics/key-operations-flows.mdx @@ -30,7 +30,7 @@ This section contains the flows related to the staking part of the protocol. * Calculate the penalty based on the time left before the unlocking time. * Send the PRL tokens to the user -* mint sPRL1 tokens to the fee receiver equal to the amount slashed from the penalty. +* Send the PRL slashed by the penalty to the fee receiver. **1.1.1.4 sPRL1 EmergencyWithdraw** @@ -39,55 +39,57 @@ This section contains the flows related to the staking part of the protocol. #### **1.1.2 sPRL2 Flow** -This section contains the flows related to the sPRL2 contract. +This section contains the flows related to the sPRL2 v2 contract (sPRL2V2), on Ethereum and Base. Unlike the first sPRL2 vault, it keeps the BPT and does not stake it on Aura. **1.1.2.1 sPRL2 Deposit PRL/WETH or PRL/ETH** -* Transfer PRL/WETH or PRL/ETH to the sPRL2 contract +* Transfer PRL/WETH or PRL/ETH to the sPRL2V2 contract * Deposit ETH to WETH if needed -* Add PRL/WETH liquidity into the Balancer pool (80PRL/20WETH) -* Receive BPT tokens -* Stake BPT tokens in Aura -* mint sPRL2 tokens to the user equivalent to the amount of Aura BPT lp tokens received +* Add PRL/WETH liquidity into the Balancer V3 pool (80PRL/20WETH) +* Receive BPT tokens, held by the contract +* Return the PRL and WETH (or ETH) the pool did not take +* Mint sPRL2V2 tokens to the user equivalent to the amount of BPT received **1.1.2.2 sPRL2 Deposit BPT 80PRL/20WETH** -* Transfer BPT to the sPRL2 contract -* Deposit BPT into Aura pool and stake it -* Mint sPRL2 tokens to the user equivalent to the amount of BPT transferred +* Transfer BPT to the sPRL2V2 contract +* Mint sPRL2V2 tokens to the user equivalent to the amount of BPT transferred **1.1.2.3 sPRL2 Request Withdraw** -* Burn the amount of sPRL2 tokens that the user wants to withdraw +* Burn the amount of sPRL2V2 tokens that the user wants to withdraw * Set the unlocking time for this request -**1.1.2.4 sPRL2 Withdraw PRL/ETH or PRL/WETH** +**1.1.2.4 sPRL2 Withdraw PRL/WETH** * Calculate the penalty based on the time left before the unlocking time. -* Withdraw and unwrap the amount of Aura BPT -* Receive Balancer BPT tokens from Aura +* Send the BPT penalty to the fee receiver * Withdraw the amount of PRL/WETH from the Balancer pool -* Send the PRL/WETH to the user or PRL/ETH to the user -* Send the BPT lp penalty to the fee receiver +* Send the PRL/WETH to the user **1.1.2.5 sPRL2 Withdraw BPT 80PRL/20WETH** * Calculate the penalty based on the time left before the unlocking time. -* Withdraw the amount of Aura BPT from Aura -* Receive Balancer BPT tokens from Aura +* Send the BPT penalty to the fee receiver * Send the BPT lp tokens to the user -* Send the BPT lp penalty to the fee receiver **1.1.2.6 sPRL2 EmergencyWithdraw** -* Burn the amount of sPRL2 tokens that the user wants to withdraw -* Withdraw the amount of Aura BPT from Aura -* Receive Balancer BPT tokens from Aura +* Only when the contract is paused +* Burn the amount of sPRL2V2 tokens that the user wants to withdraw * Send the BPT tokens to the user without penalties. +**1.1.2.7 sPRL2 v1 to v2 Migration** + +* The user approves the sPRL2Migrator to spend their sPRL2 (v1) +* The migrator transfers the sPRL2 (v1) to itself +* It calls `emergencyWithdraw` on the paused v1 contract and receives the BPT, without penalty +* It deposits the BPT into sPRL2V2 +* It sends the sPRL2V2 tokens to the user, equal to the amount migrated + ### **1**.2 Reward Distribution Flow -* RewardMerkleDistributor will receive the fees from the MainFeeDistributor at any time. +* RewardMerkleDistributor will receive the fees from the MainFeeDistributor at any time. Since Tokenomics v2.1 (PIP-68), both are on Base and the fees are in USDp. * Using off-chain events and calculations, the protocol retrieve the total amount received during a specific period. * Protocol will generate a merkle root based on the total amount received and the amount of rewards that will be distributed to the users. * The merkle root will be updated in the RewardMerkleDistributor contract. diff --git a/src/pages/governance/parallel-governance-token-prl/mimo-to-prl-migration.mdx b/src/pages/governance/parallel-governance-token-prl/mimo-to-prl-migration.mdx index 48e0dc0..441ec51 100644 --- a/src/pages/governance/parallel-governance-token-prl/mimo-to-prl-migration.mdx +++ b/src/pages/governance/parallel-governance-token-prl/mimo-to-prl-migration.mdx @@ -1,8 +1,8 @@ --- title: MIMO to PRL Migration description: >- - The DAO approved the 1:1 migration of MIMO to PRL in April 2025. It closed - on 1 August 2026 under PIP-61, and MIMO can no longer be exchanged. + The DAO approved the 1:1 migration of MIMO to PRL in April 2025. PIP-65 + ended it on 15 April 2026, and MIMO can no longer be exchanged. subtitle: Detailing the Mimo to PRL Migration --- @@ -14,7 +14,7 @@ On April 18th 2025 the DAO approved a migration of the MIMO Token (the previous The total MIMO token supply is 1,000,000,000 tokens. As the PRL token is also having a supply of 1,000,000,000 tokens, a 1:1 migration (1 MIMO -> 1 PRL) has been approved. This means there will be no new token inflation, and no prejudice to current and future token holders. -The migration module was built without a deadline, so that no MIMO holder would be penalised by a cut-off. The DAO later set one through PIP-61, and **the migration closed on 1 August 2026**. MIMO can no longer be exchanged for PRL. +The migration module was built without a deadline, so that no MIMO holder would be penalised by a cut-off. The DAO later set one: PIP-61, adopted in January 2026, ended the migration on 1 August 2026, and PIP-65, adopted on 1 April 2026, brought that date forward. **The migration closed on 15 April 2026**, when the migration contract on Ethereum was paused. MIMO can no longer be exchanged for PRL, and the app no longer has a Migrate page. The migration was definitive: the reverse operation was never possible once completed. @@ -27,5 +27,5 @@ MIMO tokens locked as vMIMO on Ethereum & Polygon PoS have been unlocked in orde Following the multichain\[.]org hack in 2023, holders of MIMO tokens on Fantom found themselves unable to bridge their tokens back to Ethereum. Thanks to the crosschain PRL migration architecture, MIMO blocked on Fantom could also be migrated to PRL on any chain, letting those holders regain full possession of their tokens before the migration closed. :::warning -The migration is closed since 1 August 2026. The [step-by-step guide](https://blog.parallel.best/how-to-migrate-to-prl) is kept for reference. +The migration has been closed since 15 April 2026. The [step-by-step guide](https://blog.parallel.best/how-to-migrate-to-prl) published at launch is kept for reference only: the app's Migrate page it describes has been removed, and its 1 August 2026 end date predates PIP-65. ::: diff --git a/src/pages/governance/parallel-governance-token-prl/tokenomics/epoch-concept.mdx b/src/pages/governance/parallel-governance-token-prl/tokenomics/epoch-concept.mdx index e8359f4..152ae41 100644 --- a/src/pages/governance/parallel-governance-token-prl/tokenomics/epoch-concept.mdx +++ b/src/pages/governance/parallel-governance-token-prl/tokenomics/epoch-concept.mdx @@ -11,7 +11,7 @@ subtitle: Understanding the Epoch Concept The epoch is the central unit of time in the tokenomics. An epoch is one calendar month, so it lasts 28, 29, 30 or 31 days depending on the month. It is used to determine the [ParaBoost](/governance/parallel-governance-token-prl/tokenomics/paraboost) calculation period and to manage the [fee sharing](/governance/parallel-governance-token-prl/tokenomics/fee-distribution) distribution to sPRL1 and sPRL2 holders. -On-chain, the `RewardMerkleDistributor` enforces an `EPOCH_LENGTH` of 28 days as the minimum window between two epochs, which every calendar month satisfies. +On-chain, the `RewardMerkleDistributor` does not set the epoch length: its `EPOCH_LENGTH` constant of 28 days is only the shortest claim window it accepts for a published epoch. :::info The cooldown applied when unstaking sPRL1 and sPRL2 is **not** one epoch. It is a separate, fixed period of 28 days, held per staking contract as `timeLockDuration` and changeable by governance within a 1 to 365 day range. See [Staking Mechanisms](/governance/parallel-governance-token-prl/tokenomics/staking-mechanisms). diff --git a/src/pages/governance/parallel-governance-token-prl/tokenomics/fee-distribution.mdx b/src/pages/governance/parallel-governance-token-prl/tokenomics/fee-distribution.mdx index 362a325..fad9b1e 100644 --- a/src/pages/governance/parallel-governance-token-prl/tokenomics/fee-distribution.mdx +++ b/src/pages/governance/parallel-governance-token-prl/tokenomics/fee-distribution.mdx @@ -1,9 +1,8 @@ --- title: PRL Tokenomics — Fee Distribution description: >- - Protocol fees are converted to PAR on each chain and bridged to Polygon PoS, - where 15% is shared with sPRL1 and sPRL2 stakers each epoch, weighted by - ParaBoost. + PRL stakers receive 15% of Parallel V2 revenue each epoch, swapped to USDp + and claimed on Base by sPRL1 and sPRL2 holders, weighted by ParaBoost. subtitle: Detailing Fee Distribution --- @@ -15,9 +14,15 @@ For the full schedule of what Parallel V3 charges today (mint, burn, redeem, bri One of the major innovations implemented with the PRL new tokenomics is the redistribution of a portion of the fees generated by the protocol to [PRL stakers](/governance/parallel-governance-token-prl/tokenomics/staking-mechanisms) (sPRL1 & sPRL2). -Fees accumulated during an epoch will be converted to PAR tokens on each chain where the protocol generates fees via a keeper (Cooper Labs); and then automatically bridged to the fee distribution chain (Polygon PoS). 15% of these fees are then be distributed to PRL stakers according to their ParaBoost. It means that PRL stakers are receiving 15% of generated protocol fees in PAR at the end of each epoch to be claimed on Polygon PoS. +Since Tokenomics v2.1 (PIP-68), the stakers' share, 15% of Parallel V2 revenue, is sent to the DAO Keeper Multisig, swapped to USDp, bridged to Base and forwarded to the `MainFeeDistributor` there. It is then distributed to PRL stakers according to their ParaBoost. It means that PRL stakers receive their share in USDp at the end of each epoch, to be claimed on Base. + +Before v2.1, the fees were converted to PAR and distributed on Polygon PoS. The epochs published there can still be claimed on Polygon PoS, in PAR, until their claim window ends.

Protocol Fees Distribution Overview

\ The fees distributed to the PRL stakers are distributed on the same chain, regardless of the chain where the PRL tokens are staked. Stakers will be able to claim their tokens during 12 epochs (≃1 year), after which the tokens will be automatically returned to the DAO treasury. + +:::info +An epoch can distribute nothing: PGP-42, adopted in May 2026, redirected the stakers' share to PRL buybacks and burns for three months. +::: diff --git a/src/pages/governance/parallel-governance-token-prl/tokenomics/paraboost.mdx b/src/pages/governance/parallel-governance-token-prl/tokenomics/paraboost.mdx index 4f2bf58..364c7a2 100644 --- a/src/pages/governance/parallel-governance-token-prl/tokenomics/paraboost.mdx +++ b/src/pages/governance/parallel-governance-token-prl/tokenomics/paraboost.mdx @@ -17,7 +17,7 @@ This new concept aligns the short and long-term interests of both the protocol, The ParaBoost will be computed offchain by a keeper (Cooper Labs) at the end of an epoch and a merkle root is sent to the rewardDistributor contract. :::info -Due to time constraints (to get V3 out faster) we decided to simplify Paraboost as much as possible for tokenomics v2.0. A more complete version of ParaBoost will be presented with the introduction of tokenomics v2.1, which will be released after Parallel V3. As ParaBoost is calculated entirely offchain, there will be no need to update smart contracts or perform new audits. +Due to time constraints (to get V3 out faster) we decided to simplify Paraboost as much as possible for tokenomics v2.0. Tokenomics v2.1 (PIP-68, May 2026) kept the same ParaBoost rules. As ParaBoost is calculated entirely offchain, a more complete version would need no smart contract update and no new audit. ::: ### sPRL diff --git a/src/pages/governance/parallel-governance-token-prl/tokenomics/staking-mechanisms.mdx b/src/pages/governance/parallel-governance-token-prl/tokenomics/staking-mechanisms.mdx index 0e5823b..b18639a 100644 --- a/src/pages/governance/parallel-governance-token-prl/tokenomics/staking-mechanisms.mdx +++ b/src/pages/governance/parallel-governance-token-prl/tokenomics/staking-mechanisms.mdx @@ -29,12 +29,12 @@ It is possible for sPRL1 and sPRL2 to initiate unstaking at any time, against a A basic single-sided staking for users who do not want to take an impermanent loss from tokens in liquidity pools. Each PRL staked as sPRL1 will count as x1 voting power, with a 28-day unstaking cooldown. -sPRL1 is currently deployed on: +sPRL1 takes new stakes on: * Ethereum -* Polygon PoS * Base -* Sonic + +sPRL1 on Polygon PoS and Sonic is being sunset under Tokenomics v2.1 (PIP-68). It no longer takes new stakes, and its holders can still unstake and withdraw, with a one-day cooldown and no penalty. Under PIP-68, balances left there are excluded from the fee distribution. :::info sPRL1 can technically be deployed on more chains in the future, conditioned to the availability of PRL on the chain. @@ -42,16 +42,19 @@ sPRL1 can technically be deployed on more chains in the future, conditioned to t ### sPRL2: Liquidity Pool Staking -A PRL/wETH 80/20 Balancer Pool Token staking for users who want to get the maximum voting power. The staked LP as sPRL2 is itself staked on Aura under the hood, with rewards in \$BAL and \$AURA automatically sent to the DAO treasury. +A PRL/wETH 80/20 Balancer Pool Token staking for users who want to get the maximum voting power. Since Tokenomics v2.1 (PIP-68), the sPRL2 v2 vault holds the pool token itself, on Balancer, without staking it on Aura. As these stakers help Parallel increase the PRL liquidity a x2.5 boost on the equivalent value of PRL tokens staked (in \$) is applied. This boost ise applied for ParaBoost. sPRL2 holders are able to unstake their BPT tokens against a 28-day unstaking cooldown. -sPRL2 is currently deployed on: +sPRL2 v2 is deployed on: * Ethereum +* Base + +The first sPRL2 vault, on Ethereum, staked the pool token on Aura. It is paused: its holders move their position to sPRL2 v2 in one transaction and without penalty, through the `sPRL2Migrator` contract the app uses. :::info -sPRL2 can technically be deployed on more chains in the future, conditioned to the availability of PRL, Balancer/Beets & Aura on the chain. +sPRL2 can technically be deployed on more chains in the future, conditioned to the availability of PRL and Balancer/Beets on the chain. :::
diff --git a/src/pages/governance/sprl.mdx b/src/pages/governance/sprl.mdx index 7bb37db..36fb20b 100644 --- a/src/pages/governance/sprl.mdx +++ b/src/pages/governance/sprl.mdx @@ -24,29 +24,32 @@ It is possible for sPRL1 and sPRL2 to initiate unstaking at any time, against a A basic single-sided staking for users who do not want to take an impermanent loss from tokens in liquidity pools. Each PRL staked as sPRL1 will count as x1 voting power, with a 28-day unstaking cooldown. -sPRL1 is currently deployed on: +sPRL1 takes new stakes on: * Ethereum -* Polygon PoS * Base -* Sonic + +sPRL1 on Polygon PoS and Sonic is being sunset under Tokenomics v2.1 (PIP-68). It no longer takes new stakes, and its holders can still unstake and withdraw, with a one-day cooldown and no penalty. Under PIP-68, balances left there are excluded from the fee distribution. ### sPRL2: Liquidity Pool Staking -A PRL/wETH 80/20 Balancer Pool Token staking for users who want to get the maximum voting power. The staked LP as sPRL2 is itself staked on Aura under the hood, with rewards in \$BAL and \$AURA automatically sent to the DAO treasury. +A PRL/wETH 80/20 Balancer Pool Token staking for users who want to get the maximum voting power. Since Tokenomics v2.1 (PIP-68), the sPRL2 v2 vault holds the pool token itself, on Balancer, without staking it on Aura. As these stakers help Parallel increase the PRL liquidity a x2.5 boost on the equivalent value of PRL tokens staked (in \$) is applied. This boost ise applied for ParaBoost. sPRL2 holders are able to unstake their BPT tokens against a 28-day unstaking cooldown. -sPRL2 is currently deployed on: +sPRL2 v2 is deployed on: * Ethereum +* Base + +The first sPRL2 vault, on Ethereum, staked the pool token on Aura. It is paused: its holders move their position to sPRL2 v2 in one transaction and without penalty, through the `sPRL2Migrator` contract the app uses. ## **Where to stake PRL?** You can increase your voting power by staking PRL [here](https://app.parallel.best//stake) and obtain sPRL1 and/or sPRL2. :::info -If you don't know how to stake PRL, you can follow this guide. +If you don't know how to stake PRL, you can follow [this guide](/resources/user-guides/stake-prl). ::: ## What next? diff --git a/src/pages/products/parallel-v3/index.mdx b/src/pages/products/parallel-v3/index.mdx index 0a7c7ba..67f6b2a 100644 --- a/src/pages/products/parallel-v3/index.mdx +++ b/src/pages/products/parallel-v3/index.mdx @@ -69,7 +69,7 @@ Follow the diagram from left to right. Collateral enters through the **Paralleli Every module feeds the same fee flow. Yield earned on the backing assets, together with mint, burn, bridge and flash-loan fees, is collected by the protocol and distributed 90% to sUSDp holders and 10% to the DAO Treasury. Keepers encode the resulting savings rate into the Savings Module, under a hard cap of 35.00% set by the DAO. Holders can leave at any time: burn USDp for one asset, or redeem for a proportional share of everything in the backing. :::tip Coming from V2? -Parallel V2 (PAR and paUSD, vault-based) is still documented under [Products, Parallel V2](/products/parallel-v2). V3 replaces vaults with the Parallelizer basket and replaces MIMO with PRL as governance token. The [MIMO to PRL migration](/governance/parallel-governance-token-prl/mimo-to-prl-migration) closed on 1 August 2026. +Parallel V2 (PAR and paUSD, vault-based) is still documented under [Products, Parallel V2](/products/parallel-v2). V3 replaces vaults with the Parallelizer basket and replaces MIMO with PRL as governance token. The [MIMO to PRL migration](/governance/parallel-governance-token-prl/mimo-to-prl-migration) closed on 15 April 2026. ::: ## Governance, licensing and security diff --git a/src/pages/products/parallel-v3/stablecoins-and-savings/usdp-and-susdp/fee-distribution.mdx b/src/pages/products/parallel-v3/stablecoins-and-savings/usdp-and-susdp/fee-distribution.mdx index 07d28da..8f60efc 100644 --- a/src/pages/products/parallel-v3/stablecoins-and-savings/usdp-and-susdp/fee-distribution.mdx +++ b/src/pages/products/parallel-v3/stablecoins-and-savings/usdp-and-susdp/fee-distribution.mdx @@ -48,9 +48,9 @@ The 10% share funds the [DAO Treasury](/governance/dao-treasury), alongside the ## The PRL stakers' share -PRL stakers (sPRL1 and sPRL2) also receive a portion of protocol fees at the end of each epoch, weighted by their ParaBoost. The [PRL tokenomics fee distribution page](/governance/parallel-governance-token-prl/tokenomics/fee-distribution) describes that flow: fees accumulated during an epoch are converted by a keeper, bridged to Polygon PoS and distributed to stakers, who have 12 epochs to claim before the tokens return to the DAO Treasury. +PRL stakers (sPRL1 and sPRL2) also receive a portion of protocol fees at the end of each epoch, weighted by their ParaBoost. The [PRL tokenomics fee distribution page](/governance/parallel-governance-token-prl/tokenomics/fee-distribution) describes that flow: since Tokenomics v2.1 (PIP-68), the stakers' share is swapped to USDp, bridged to Base and distributed to stakers there, who have 12 epochs to claim before the tokens return to the DAO Treasury. -That page describes the distribution in PAR terms, as designed before USDp launched, and quotes 15% of protocol fees. It does not yet spell out how that share combines with the 90/10 split above for USDp revenue. Treat the percentage as indicative and check the latest governance proposals for the current figure. +That share is 15% of Parallel V2 revenue. The fees collected by the USDp codebase follow the 90/10 split above. ## Related diff --git a/src/pages/resources/factsheets/prl.mdx b/src/pages/resources/factsheets/prl.mdx index bbd32fd..218cb6e 100644 --- a/src/pages/resources/factsheets/prl.mdx +++ b/src/pages/resources/factsheets/prl.mdx @@ -26,17 +26,17 @@ PRL is the governance token of the Parallel Protocol. It replaced MIMO, and stak | Decimals | 18 | | Canonical contract (Ethereum) | [0x6c0aeceeDc55c9d55d8B99216a670D85330941c3](https://etherscan.io/address/0x6c0aeceeDc55c9d55d8B99216a670D85330941c3) | | Chains | The token is on 6 chains: Ethereum, Base, Arbitrum, Optimism, Polygon and Sonic. The [PRL contract addresses](/developers-hub/contract-addresses/parallel-v3/prl) page also lists PRL tokenomics contracts on Avalanche and HyperEVM, and a deprecated migration contract on Fantom, none of which carry the token | -| Staking | sPRL1 (single-sided PRL) and sPRL2 (80/20 PRL/wETH Balancer pool staked on Aura). Unstaking has a separate, fixed 28-day cooldown; leaving early costs a penalty that starts at 50% and decays linearly. See [Staking Mechanisms](/governance/parallel-governance-token-prl/tokenomics/staking-mechanisms) | +| Staking | sPRL1 (single-sided PRL) and sPRL2 (the 80/20 PRL/wETH Balancer pool token, held by the sPRL2 v2 vault). New stakes go to Ethereum or Base; sPRL1 on Polygon and Sonic is being sunset and can only be unstaked. Unstaking has a separate, fixed 28-day cooldown; leaving early costs a penalty that starts at 50% and decays linearly. See [Staking Mechanisms](/governance/parallel-governance-token-prl/tokenomics/staking-mechanisms) | | Epochs | One calendar month (28 to 31 days). Epochs set the ParaBoost window and the fee distribution schedule. See [Epoch Concept](/governance/parallel-governance-token-prl/tokenomics/epoch-concept) | -| Fee share | sPRL1 and sPRL2 holders receive a share of protocol fees each epoch, weighted by ParaBoost, claimable for 12 epochs. See [Fee Distribution](/governance/parallel-governance-token-prl/tokenomics/fee-distribution) and [Fees](/products/parallel-v3/fees) | +| Fee share | sPRL1 and sPRL2 holders receive a share of protocol fees each epoch, weighted by ParaBoost, paid in USDp on Base and claimable for 12 epochs. Rewards from the epochs published before the move to Base are claimed in PAR on Polygon. See [Fee Distribution](/governance/parallel-governance-token-prl/tokenomics/fee-distribution) and [Fees](/products/parallel-v3/fees) | | Governance role | sPRL1 and sPRL2 carry voting power, weighted by the previous epoch's [ParaBoost](/governance/parallel-governance-token-prl/tokenomics/paraboost). See [sPRL and Voting Power](/governance/sprl) | | Issuance | Under PIP-46, 100% of PRL issuance goes to the DAO PRL Inflation Multisig on Ethereum. See [Issuance](/governance/parallel-governance-token-prl/issuance) | -| Migration | 1:1 from MIMO, closed on 1 August 2026 (PIP-61). See [MIMO to PRL Migration](/governance/parallel-governance-token-prl/mimo-to-prl-migration) | +| Migration | 1:1 from MIMO, closed on 15 April 2026 (PIP-65). See [MIMO to PRL Migration](/governance/parallel-governance-token-prl/mimo-to-prl-migration) | | Licensing | MIT. Audited by Bail Security and Zenith. See [Licensing](/products/parallel-v3/licensing) and [Audits](/security/audits) | ## How it works -PRL itself is a plain, immutable ERC-20 on Ethereum; every other chain holds a `PeripheralPRL` OFT that mints and burns against PRL locked in the Ethereum `LockBox`, over LayerZero with DAO-configured DVNs. See the [PRL Bridging Module](/governance/parallel-governance-token-prl/bridging-module). To take part in governance you stake PRL as sPRL1, or provide 80/20 PRL/wETH liquidity and stake the pool token as sPRL2, which counts x2.5 in ParaBoost. A keeper (Cooper Labs) computes ParaBoost off-chain at the end of each monthly epoch and publishes a merkle root to the `RewardMerkleDistributor`, from which stakers claim their fee share. Transferring sPRL resets the accumulated ParaBoost, so voting power and rewards stay with long-term stakers. The full model is in [Tokenomics](/governance/parallel-governance-token-prl/tokenomics). +PRL itself is a plain, immutable ERC-20 on Ethereum; every other chain holds a `PeripheralPRL` OFT that mints and burns against PRL locked in the Ethereum `LockBox`, over LayerZero with DAO-configured DVNs. See the [PRL Bridging Module](/governance/parallel-governance-token-prl/bridging-module). To take part in governance you stake PRL as sPRL1, or provide 80/20 PRL/wETH liquidity and stake the pool token as sPRL2, which counts x2.5 in ParaBoost. A keeper (Cooper Labs) computes ParaBoost off-chain at the end of each monthly epoch and publishes a merkle root to the `RewardMerkleDistributor` on Base, from which stakers claim their fee share. Transferring sPRL resets the accumulated ParaBoost, so voting power and rewards stay with long-term stakers. The full model is in [Tokenomics](/governance/parallel-governance-token-prl/tokenomics). ## Backing and risk @@ -56,7 +56,7 @@ The MIMO to PRL migration is closed; MIMO can no longer be exchanged for PRL. - [PRL developer docs](/developers-hub/parallel-governance-token-prl): token, bridging and migration contracts - [Tokenomics contracts](/developers-hub/parallel-governance-token-prl/tokenomics/contracts) and [Key Operations Flows](/developers-hub/parallel-governance-token-prl/tokenomics/key-operations-flows): staking, withdrawal and reward-claim flows - [Subgraphs](/developers-hub/parallel-v3/offchain-tools/subgraphs) for indexed data; [Dune](/developers-hub/parallel-v3/offchain-tools/dune) dashboards are planned -- [MCP server](/agents/mcp): live on 5 chains with 36 tools, giving any AI client staking positions and ready-to-sign stake, unstake and bridge transactions +- [MCP server](/agents/mcp): 36 tools giving any AI client staking positions on every chain and ready-to-sign stake, unstake, reward-claim and bridge transactions ## Resources diff --git a/src/pages/resources/user-guides.mdx b/src/pages/resources/user-guides.mdx index 38a4da1..22e3f59 100644 --- a/src/pages/resources/user-guides.mdx +++ b/src/pages/resources/user-guides.mdx @@ -38,7 +38,7 @@ Stake PRL as sPRL1 (single-sided) or sPRL2 (80/20 PRL/wETH Balancer pool) to ear ## Closed -**[How to Migrate to PRL?](https://blog.parallel.best/how-to-migrate-to-prl)** -How MIMO was migrated to PRL, the governance token that replaced it, across Ethereum, Polygon, Fantom, Arbitrum, Optimism, Base and Sonic. **The migration closed on 1 August 2026**, see [MIMO to PRL Migration](/governance/parallel-governance-token-prl/mimo-to-prl-migration). Kept for reference. +**[MIMO to PRL Migration](/governance/parallel-governance-token-prl/mimo-to-prl-migration)** +How MIMO was migrated to PRL, the governance token that replaced it, across Ethereum, Polygon, Fantom, Arbitrum, Optimism, Base and Sonic. **The migration closed on 15 April 2026** under PIP-65, and the app no longer has a Migrate page. The page keeps the history. diff --git a/src/pages/resources/user-guides/stake-prl.mdx b/src/pages/resources/user-guides/stake-prl.mdx index 35359f6..6761b5b 100644 --- a/src/pages/resources/user-guides/stake-prl.mdx +++ b/src/pages/resources/user-guides/stake-prl.mdx @@ -19,7 +19,7 @@ Staking PRL gives you two things: a share of the fees the protocol generates, an | Exposure | PRL price only | PRL and wETH, with the impermanent loss of a liquidity position | | ParaBoost weight | 1x on the dollar value staked | 2.5x on the dollar value staked | | Voting power | 1 PRL = 1 vote | Boosted, through the 2.5x ParaBoost weight | -| Under the hood | PRL held in the sPRL1 contract | BPT staked on Aura; BAL and AURA rewards go to the DAO Treasury | +| Under the hood | PRL held in the sPRL1 contract | BPT held in the sPRL2 v2 vault | | Unstaking | 28-day cooldown, or early exit with a penalty | 28-day cooldown, or early exit with a penalty | | Best for | Holders who want governance rights without liquidity risk | Holders who want the maximum weight and are willing to provide PRL liquidity | @@ -27,13 +27,15 @@ Both sPRL1 and sPRL2 are transferable ERC-20 tokens. Transferring them resets th ### Where you can stake -sPRL1 and sPRL2 contracts are deployed on Ethereum and Base. The [PRL contract addresses](/developers-hub/contract-addresses/parallel-v3/prl) page lists the live contracts per chain; earlier sPRL1 deployments on Polygon PoS and Sonic are marked deprecated there. If your PRL sits on another chain, [bridge it](/resources/user-guides/bridge) first. The app only shows the chains that accept new stakes. +sPRL1 and sPRL2 take new stakes on Ethereum and Base. The [PRL contract addresses](/developers-hub/contract-addresses/parallel-v3/prl) page lists the live contracts per chain. If your PRL sits on another chain, [bridge it](/resources/user-guides/bridge) first. + +sPRL1 on Polygon PoS and Sonic is being sunset (PIP-68): the app shows a notice there and no longer lets you stake, but you can still unstake and withdraw, with a one-day cooldown and no penalty. If you still hold sPRL2 from the first vault on Ethereum, now paused, the app moves it to sPRL2 v2 in one transaction, without penalty. ## Epochs and ParaBoost An **epoch** is one calendar month in the PRL tokenomics, so it runs 28 to 31 days depending on the month. It sets two things: the window over which ParaBoost is computed, and the schedule on which fees are shared with stakers. The unstaking cooldown is not an epoch; it is a separate, fixed 28 days. See the [epoch concept](/governance/parallel-governance-token-prl/tokenomics/epoch-concept). -**ParaBoost** is the score that decides how much of the fee distribution you receive and how much voting power you hold. It is based on the dollar value of your sPRL1 and sPRL2, with sPRL2 counted 2.5 times, and it accumulates while you stay staked. At the end of each epoch a keeper (Cooper Labs) computes every staker's ParaBoost off-chain and publishes a Merkle root to the reward distributor contract, which is what you claim against. The current version is deliberately simple; a fuller ParaBoost is planned for tokenomics v2.1. Read [ParaBoost](/governance/parallel-governance-token-prl/tokenomics/paraboost) for the design. +**ParaBoost** is the score that decides how much of the fee distribution you receive and how much voting power you hold. It is based on the dollar value of your sPRL1 and sPRL2, with sPRL2 counted 2.5 times, and it accumulates while you stay staked. At the end of each epoch a keeper (Cooper Labs) computes every staker's ParaBoost off-chain and publishes a Merkle root to the reward distributor contract, which is what you claim against. The current version is deliberately simple, and tokenomics v2.1 (PIP-68) kept the same rules. Read [ParaBoost](/governance/parallel-governance-token-prl/tokenomics/paraboost) for the design. Two actions reset ParaBoost: transferring your sPRL, and unstaking. The MCP server and the app warn you before either (`PARABOOST_LOST` on an unstake, `PARABOOST_LOCK` on a stake); see [how transactions work](/agents/mcp/transactions). @@ -41,7 +43,7 @@ Two actions reset ParaBoost: transferring your sPRL, and unstaking. The MCP serv - PRL in your wallet on Ethereum or Base. PRL trades on DEXs and bridges from Polygon PoS, Sonic, Arbitrum and Optimism. - Enough ETH on that chain for gas. -- For sPRL2: wETH as well, to join the 80/20 PRL/wETH Balancer pool, unless the app builds the pool position for you (see below). +- For sPRL2: ETH or wETH as well, for the 20% side of the 80/20 PRL/wETH Balancer pool, unless you already hold the pool token (see below). - A wallet that supports the chain. The app connects through WalletConnect or Coinbase Wallet, so any wallet that supports WalletConnect works. ## Stake as sPRL1 @@ -67,21 +69,17 @@ sPRL2 is minted against the Balancer pool token of the 80/20 PRL/wETH pool. Ther **Let the app build the position** -The staking transactions accept either PRL or BPT for sPRL2 (the MCP `stake` tool builds "PRL/BPT into sPRL2"). When the Multiple Assets Pool tab offers a PRL input, the app joins the pool for you and stakes the resulting BPT in one flow. Check the quote: joining a pool with a single asset moves the pool price and can cost more than a balanced deposit. +The sPRL2 v2 vault accepts either the BPT, or PRL with ETH or wETH (the MCP `stake` tool takes BPT, or PRL and wETH). When the Multiple Assets Pool tab offers a PRL input, the app uses the second path: in one transaction, the vault adds PRL and ETH to the pool in its 80/20 proportion, keeps the resulting BPT and mints your sPRL2, and returns what the pool did not take. -In both cases the BPT is staked on Aura behind the scenes. The BAL and AURA incentives it earns go to the DAO Treasury, not to you; your reward is the 2.5x ParaBoost weight. +In both cases the vault holds the BPT itself; it is not staked anywhere else. Your reward is the 2.5x ParaBoost weight. ## Rewards -- **What you earn:** a share of the protocol's fees, split between stakers according to their ParaBoost at the end of each epoch. The [fee distribution](/governance/parallel-governance-token-prl/tokenomics/fee-distribution) page describes the mechanism. +- **What you earn:** a share of the protocol's fees, paid in USDp and split between stakers according to their ParaBoost at the end of each epoch. The [fee distribution](/governance/parallel-governance-token-prl/tokenomics/fee-distribution) page describes the mechanism, and why an epoch can distribute nothing. - **When:** once per epoch, after the keeper publishes the Merkle root. Rewards from the epoch you stake in are claimable after that epoch ends. -- **Where:** on a single distribution chain, regardless of the chain you staked on. The reward distributor contracts for USDp fees are deployed on Base; the app takes you to the right chain when you claim, and claims may span more than one chain if you also hold older PAR-era rewards. +- **Where:** on Base, regardless of the chain you staked on. Rewards from the epochs published before the move to Base are paid in PAR and claimed on Polygon PoS, so a claim can span both chains. - **Claim window:** 12 epochs, about one year. Unclaimed rewards return to the DAO Treasury after that. -:::info -The tokenomics pages still describe the original PAR-era set-up (fees converted to PAR and claimed on Polygon PoS). The live distributor contracts for USDp fees sit on Base. Check the claim screen in the app for the asset and chain you will actually receive. -::: - To claim in the app, open the **Stake** page, find **Available Rewards** and click **Claim Rewards**. The [`claim_rewards`](/agents/mcp/tools) MCP tool builds the same transactions. ## Unstaking diff --git a/src/pages/security/audits.mdx b/src/pages/security/audits.mdx index d30db5d..91d21b6 100644 --- a/src/pages/security/audits.mdx +++ b/src/pages/security/audits.mdx @@ -13,6 +13,7 @@ subtitle: A breakdown of security reviews covering deployed smart contracts of P | [Bail Security](https://bailsec.io/) | Parallel l Savings Fix Audit | 2026-07 | [bailsec-report](https://github.com/parallel-protocol/parallel-parallelizer/blob/main/docs/audits/savings-fix/Bailsec%20-%20Parallel%20Protocol%20-%20Savings%20Fix%20-%20Final%20Report.pdf) | | [Cyfrin](https://www.cyfrin.io/) | Parallel l Savings Fix Formal Verification | 2026-06-10 | [cyfrin-report](https://github.com/parallel-protocol/parallel-parallelizer/blob/main/docs/audits/savings-fix/Cyfrin%20-%20Parallel%20Protocol%20-%20Savings%20Fix%20-%20Formal%20Verification.pdf) | | [Cyfrin](https://www.cyfrin.io/) | Parallel l Savings Fix Audit | 2026-06-09 | [cyfrin-report](https://github.com/parallel-protocol/parallel-parallelizer/blob/main/docs/audits/savings-fix/Cyfrin%20-%20Parallel%20Protocol%20-%20Savings%20Fix%20-%20Final%20Report.pdf) | +| [Bail Security](https://bailsec.io/) | PRL Tokenomics l sPRL2V2 | 2026-06 | [bailsec-report](https://github.com/parallel-protocol/parallel-tokenomics/blob/dev/docs/audits/Bailsec%20-%20Parallel%20-%20sPRL2V2%20-%20Final%20Report%20-%20June%202026.pdf) | | [Cyfrin](https://www.cyfrin.io/) | Parallel v3.2 l Agentic Payments Update Audit | 2026-05-24 | [cyfrin-report](https://github.com/parallel-protocol/parallel-parallelizer/blob/main/docs/audits/v3.2/Cyfrin-Parallel%20Protocol%20-%20Upgrade-3.2%20-%20Final%20report.pdf) | | [Bail Security](https://bailsec.io/) | Parallel v3.2 l Agentic Payments Update Audit | 2026-05 | [bailsec-report](https://github.com/parallel-protocol/parallel-parallelizer/blob/main/docs/audits/v3.2/Bailsec%20-%20Parallel%20Protocol%20-%20Upgrade%20V3.2%20-%20Final%20Report.pdf) | | [Cyfrin](https://www.cyfrin.io/) | Parallel v3.1 l Comprehensive Audit of the Protocol | 2026-03-04 | [cyfrin-report](https://github.com/parallel-protocol/parallel-parallelizer/blob/main/docs/audits/v3.1/Cyfrin%20-%20Parallel%20Protocol%20-%202026-03-04.pdf) | diff --git a/src/pages/security/risks.mdx b/src/pages/security/risks.mdx index c95feda..d90016d 100644 --- a/src/pages/security/risks.mdx +++ b/src/pages/security/risks.mdx @@ -84,7 +84,7 @@ Flash loans of USDp are possible on every chain, capped at 100,000 USDp per chai ### How Parallel mitigates it -- **Audits and formal verification.** The V3 core was audited by Bail Security (2025-03) and Certora (2025-04); V3.1 by Cyfrin, with formal verification (2026-03-04), plus a Bail Security review of the fee-claim update; V3.2 (agentic payments) by Cyfrin and Bail Security (2026-05); the bridging module twice by Bail Security (2024-08, 2025-01); and the PRL token and tokenomics by Zenith and Bail Security. Full report links are on the [audits page](/security/audits). +- **Audits and formal verification.** The V3 core was audited by Bail Security (2025-03) and Certora (2025-04); V3.1 by Cyfrin, with formal verification (2026-03-04), plus a Bail Security review of the fee-claim update; V3.2 (agentic payments) by Cyfrin and Bail Security (2026-05); the bridging module twice by Bail Security (2024-08, 2025-01); the PRL token and tokenomics by Zenith and Bail Security; and the sPRL2 v2 vault by Bail Security (2026-06). Full report links are on the [audits page](/security/audits). - **Bug bounty.** An Immunefi programme has been live since 30 June 2025 (PGP-28), paying up to 250,000 USD for the most critical impacts and a minimum of 50,000 USD for other critical bugs. See [Bug Bounty Program](/security/bug-bounty-program). - **Real-time monitoring.** Hypernative watches the protocol on every V3 chain and can automatically pause mint and burn on the Parallelizer and Bridging modules, and deposits and withdrawals on the Savings Module, but has no admin rights: it cannot add or remove collateral, change DVNs, or upgrade contracts. See [Hypernative](/security/hypernative). - **Emergency guardians.** Any DAO multisig signer can initiate a pause transaction, executed once other signers verify it; Tier 1 incidents (user funds at risk) are paused immediately, then discussed in a 24-hour governance vote. See [Parallel Emergency Guardians](/security/parallel-emergency-guardians). @@ -170,7 +170,7 @@ PRL is a governance token whose price is set by the market and can fall to zero; - **Early-unstake penalty.** sPRL1 and sPRL2 unstake against a fixed 28-day cooldown, skippable by paying a penalty, sent to the DAO Treasury, that starts at 50% of the amount and decreases linearly over time. - **ParaBoost loss.** Your ParaBoost score, computed off-chain by a keeper at the end of each epoch, determines your share of fee distribution; transferring or unstaking sPRL resets it. -- **sPRL2 liquidity-pool exposure.** sPRL2 is an 80/20 PRL/wETH Balancer pool token, itself staked on Aura, adding impermanent loss between PRL and wETH plus Balancer and Aura smart-contract risk on top of Parallel's own. It is deployed on Ethereum and Base; see the [PRL contract addresses](/developers-hub/contract-addresses/parallel-v3/prl). +- **sPRL2 liquidity-pool exposure.** sPRL2 is an 80/20 PRL/wETH Balancer pool token, held by the sPRL2 v2 vault, adding impermanent loss between PRL and wETH plus Balancer smart-contract risk on top of Parallel's own. It is deployed on Ethereum and Base; see the [PRL contract addresses](/developers-hub/contract-addresses/parallel-v3/prl). - **Claim window.** Fee rewards for stakers can be claimed during 12 epochs (about one year); unclaimed rewards return to the DAO Treasury. - **Fee share.** The percentage and the payout token are governance decisions that change between tokenomics versions; read the [PRL fee distribution page](/governance/parallel-governance-token-prl/tokenomics/fee-distribution) before relying on a number. diff --git a/src/sidebar.generated.ts b/src/sidebar.generated.ts index 084a19b..c18e58b 100644 --- a/src/sidebar.generated.ts +++ b/src/sidebar.generated.ts @@ -766,10 +766,6 @@ export const sidebar: Sidebar = [ }, { text: "How to bridge USDp and PRL", link: "/resources/user-guides/bridge" }, { text: "How to stake PRL", link: "/resources/user-guides/stake-prl" }, - { - text: "How to Migrate to PRL? (closed)", - link: "https://blog.parallel.best/how-to-migrate-to-prl", - }, ], }, { From 9ad5c37b189bd901d0c6c1bd16b6952397c9e1a5 Mon Sep 17 00:00:00 2001 From: Noah Boisserie <51783223+JeanBrasse@users.noreply.github.com> Date: Fri, 2 Oct 2026 14:51:35 +0400 Subject: [PATCH 2/6] docs(prl): the claim window after PIP-68, and v1 sPRL2 still in Aura - Claim window: PIP-68 reduces it from 12 epochs to 6, but the epochs published by 2 October 2026 carry a 365-day window on-chain (on Base, the epoch of 5 September 2026; on Polygon PoS, the PAR epochs). Five pages still said 12 epochs; they now give both facts and advise claiming within six epochs. - Risks: sPRL2 left in the paused v1 vault keeps its BPT deposited in Aura, which has shut down its pool for it, until it is migrated to v2 or withdrawn. Co-Authored-By: Claude Opus 5.5 --- .../tokenomics/fee-distribution.mdx | 2 +- .../usdp-and-susdp/fee-distribution.mdx | 2 +- src/pages/resources/factsheets/prl.mdx | 2 +- src/pages/resources/user-guides/stake-prl.mdx | 4 ++-- src/pages/security/risks.mdx | 6 +++--- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/pages/governance/parallel-governance-token-prl/tokenomics/fee-distribution.mdx b/src/pages/governance/parallel-governance-token-prl/tokenomics/fee-distribution.mdx index fad9b1e..6659801 100644 --- a/src/pages/governance/parallel-governance-token-prl/tokenomics/fee-distribution.mdx +++ b/src/pages/governance/parallel-governance-token-prl/tokenomics/fee-distribution.mdx @@ -21,7 +21,7 @@ Before v2.1, the fees were converted to PAR and distributed on Polygon PoS. The

Protocol Fees Distribution Overview

\ -The fees distributed to the PRL stakers are distributed on the same chain, regardless of the chain where the PRL tokens are staked. Stakers will be able to claim their tokens during 12 epochs (≃1 year), after which the tokens will be automatically returned to the DAO treasury. +The fees distributed to the PRL stakers are distributed on the same chain, regardless of the chain where the PRL tokens are staked. Each epoch is published to the `RewardMerkleDistributor` with its own claim window, after which unclaimed rewards return to the DAO Treasury. PIP-68 reduces that window from 12 epochs (about a year) to 6 epochs (about six months), but the epochs published by 2 October 2026 carry a 365-day window on-chain: the epoch that started on Base on 5 September 2026 can be claimed until 5 September 2027, and each PAR epoch on Polygon PoS for 365 days after it started. To be safe, claim within six epochs. :::info An epoch can distribute nothing: PGP-42, adopted in May 2026, redirected the stakers' share to PRL buybacks and burns for three months. diff --git a/src/pages/products/parallel-v3/stablecoins-and-savings/usdp-and-susdp/fee-distribution.mdx b/src/pages/products/parallel-v3/stablecoins-and-savings/usdp-and-susdp/fee-distribution.mdx index 8f60efc..c67109c 100644 --- a/src/pages/products/parallel-v3/stablecoins-and-savings/usdp-and-susdp/fee-distribution.mdx +++ b/src/pages/products/parallel-v3/stablecoins-and-savings/usdp-and-susdp/fee-distribution.mdx @@ -48,7 +48,7 @@ The 10% share funds the [DAO Treasury](/governance/dao-treasury), alongside the ## The PRL stakers' share -PRL stakers (sPRL1 and sPRL2) also receive a portion of protocol fees at the end of each epoch, weighted by their ParaBoost. The [PRL tokenomics fee distribution page](/governance/parallel-governance-token-prl/tokenomics/fee-distribution) describes that flow: since Tokenomics v2.1 (PIP-68), the stakers' share is swapped to USDp, bridged to Base and distributed to stakers there, who have 12 epochs to claim before the tokens return to the DAO Treasury. +PRL stakers (sPRL1 and sPRL2) also receive a portion of protocol fees at the end of each epoch, weighted by their ParaBoost. The [PRL tokenomics fee distribution page](/governance/parallel-governance-token-prl/tokenomics/fee-distribution) describes that flow: since Tokenomics v2.1 (PIP-68), the stakers' share is swapped to USDp, bridged to Base and distributed to stakers there. Unclaimed rewards return to the DAO Treasury when an epoch's claim window ends: PIP-68 reduces that window from 12 epochs to 6, but the epochs published by 2 October 2026 carry a 365-day window on-chain. That share is 15% of Parallel V2 revenue. The fees collected by the USDp codebase follow the 90/10 split above. diff --git a/src/pages/resources/factsheets/prl.mdx b/src/pages/resources/factsheets/prl.mdx index 218cb6e..4301c35 100644 --- a/src/pages/resources/factsheets/prl.mdx +++ b/src/pages/resources/factsheets/prl.mdx @@ -28,7 +28,7 @@ PRL is the governance token of the Parallel Protocol. It replaced MIMO, and stak | Chains | The token is on 6 chains: Ethereum, Base, Arbitrum, Optimism, Polygon and Sonic. The [PRL contract addresses](/developers-hub/contract-addresses/parallel-v3/prl) page also lists PRL tokenomics contracts on Avalanche and HyperEVM, and a deprecated migration contract on Fantom, none of which carry the token | | Staking | sPRL1 (single-sided PRL) and sPRL2 (the 80/20 PRL/wETH Balancer pool token, held by the sPRL2 v2 vault). New stakes go to Ethereum or Base; sPRL1 on Polygon and Sonic is being sunset and can only be unstaked. Unstaking has a separate, fixed 28-day cooldown; leaving early costs a penalty that starts at 50% and decays linearly. See [Staking Mechanisms](/governance/parallel-governance-token-prl/tokenomics/staking-mechanisms) | | Epochs | One calendar month (28 to 31 days). Epochs set the ParaBoost window and the fee distribution schedule. See [Epoch Concept](/governance/parallel-governance-token-prl/tokenomics/epoch-concept) | -| Fee share | sPRL1 and sPRL2 holders receive a share of protocol fees each epoch, weighted by ParaBoost, paid in USDp on Base and claimable for 12 epochs. Rewards from the epochs published before the move to Base are claimed in PAR on Polygon. See [Fee Distribution](/governance/parallel-governance-token-prl/tokenomics/fee-distribution) and [Fees](/products/parallel-v3/fees) | +| Fee share | sPRL1 and sPRL2 holders receive a share of protocol fees each epoch, weighted by ParaBoost, paid in USDp on Base. PIP-68 reduces the claim window from 12 epochs to 6; the epochs published by 2 October 2026 can be claimed for 365 days. Rewards from the epochs published before the move to Base are claimed in PAR on Polygon. See [Fee Distribution](/governance/parallel-governance-token-prl/tokenomics/fee-distribution) and [Fees](/products/parallel-v3/fees) | | Governance role | sPRL1 and sPRL2 carry voting power, weighted by the previous epoch's [ParaBoost](/governance/parallel-governance-token-prl/tokenomics/paraboost). See [sPRL and Voting Power](/governance/sprl) | | Issuance | Under PIP-46, 100% of PRL issuance goes to the DAO PRL Inflation Multisig on Ethereum. See [Issuance](/governance/parallel-governance-token-prl/issuance) | | Migration | 1:1 from MIMO, closed on 15 April 2026 (PIP-65). See [MIMO to PRL Migration](/governance/parallel-governance-token-prl/mimo-to-prl-migration) | diff --git a/src/pages/resources/user-guides/stake-prl.mdx b/src/pages/resources/user-guides/stake-prl.mdx index 6761b5b..d183512 100644 --- a/src/pages/resources/user-guides/stake-prl.mdx +++ b/src/pages/resources/user-guides/stake-prl.mdx @@ -78,7 +78,7 @@ In both cases the vault holds the BPT itself; it is not staked anywhere else. Yo - **What you earn:** a share of the protocol's fees, paid in USDp and split between stakers according to their ParaBoost at the end of each epoch. The [fee distribution](/governance/parallel-governance-token-prl/tokenomics/fee-distribution) page describes the mechanism, and why an epoch can distribute nothing. - **When:** once per epoch, after the keeper publishes the Merkle root. Rewards from the epoch you stake in are claimable after that epoch ends. - **Where:** on Base, regardless of the chain you staked on. Rewards from the epochs published before the move to Base are paid in PAR and claimed on Polygon PoS, so a claim can span both chains. -- **Claim window:** 12 epochs, about one year. Unclaimed rewards return to the DAO Treasury after that. +- **Claim window:** set for each epoch when it is published. PIP-68 reduces it from 12 epochs to 6, about six months, but the epochs published by 2 October 2026 can be claimed for 365 days. Unclaimed rewards return to the DAO Treasury when an epoch's window ends, so claim within six months to be safe. To claim in the app, open the **Stake** page, find **Available Rewards** and click **Claim Rewards**. The [`claim_rewards`](/agents/mcp/tools) MCP tool builds the same transactions. @@ -126,7 +126,7 @@ Stake before a vote's snapshot is taken. PRL that is not staked at the snapshot }, { question: "Do I lose rewards I have not claimed yet?", - answer: "Not for 12 epochs, about a year. After that, unclaimed rewards return to the DAO Treasury, so claim at least once a year." + answer: "Only once the epoch's claim window ends: its unclaimed rewards then return to the DAO Treasury. PIP-68 reduces that window from 12 epochs to 6, about six months; the epochs published by 2 October 2026 can be claimed for 365 days. Claim at least every six months to be safe." } ]} /> diff --git a/src/pages/security/risks.mdx b/src/pages/security/risks.mdx index d90016d..79a429e 100644 --- a/src/pages/security/risks.mdx +++ b/src/pages/security/risks.mdx @@ -170,8 +170,8 @@ PRL is a governance token whose price is set by the market and can fall to zero; - **Early-unstake penalty.** sPRL1 and sPRL2 unstake against a fixed 28-day cooldown, skippable by paying a penalty, sent to the DAO Treasury, that starts at 50% of the amount and decreases linearly over time. - **ParaBoost loss.** Your ParaBoost score, computed off-chain by a keeper at the end of each epoch, determines your share of fee distribution; transferring or unstaking sPRL resets it. -- **sPRL2 liquidity-pool exposure.** sPRL2 is an 80/20 PRL/wETH Balancer pool token, held by the sPRL2 v2 vault, adding impermanent loss between PRL and wETH plus Balancer smart-contract risk on top of Parallel's own. It is deployed on Ethereum and Base; see the [PRL contract addresses](/developers-hub/contract-addresses/parallel-v3/prl). -- **Claim window.** Fee rewards for stakers can be claimed during 12 epochs (about one year); unclaimed rewards return to the DAO Treasury. +- **sPRL2 liquidity-pool exposure.** sPRL2 is an 80/20 PRL/wETH Balancer pool token, held by the sPRL2 v2 vault, adding impermanent loss between PRL and wETH plus Balancer smart-contract risk on top of Parallel's own. It is deployed on Ethereum and Base; see the [PRL contract addresses](/developers-hub/contract-addresses/parallel-v3/prl). If you still hold sPRL2 from the paused v1 vault, its BPT stays deposited in Aura, and exposed to Aura's smart contracts, until you migrate to v2 or withdraw; Aura has shut down its pool for this BPT. +- **Claim window.** Each epoch's fee rewards can be claimed until its window ends; unclaimed rewards then return to the DAO Treasury. PIP-68 reduces the window from 12 epochs (about one year) to 6 (about six months); the epochs published by 2 October 2026 carry a 365-day window on-chain. - **Fee share.** The percentage and the payout token are governance decisions that change between tokenomics versions; read the [PRL fee distribution page](/governance/parallel-governance-token-prl/tokenomics/fee-distribution) before relying on a number. ### How Parallel mitigates it @@ -184,7 +184,7 @@ PRL is a governance token whose price is set by the market and can fall to zero; - Call `get_cooldown_status` before unstaking to see the remaining time and the estimated penalty, and `get_staking_info` to see the ParaBoost you would forfeit. - Choose sPRL1 if you do not want wETH exposure or third-party pool risk. -- Claim rewards well inside the 12-epoch window. +- Claim rewards within six epochs, the window PIP-68 sets, even when an epoch's on-chain window is longer. ## 8. Chain and operational risk From 1e57ea4167bfdbae3b0e2a5ec8d0c8f7fcd5aaa8 Mon Sep 17 00:00:00 2001 From: Noah Boisserie <51783223+JeanBrasse@users.noreply.github.com> Date: Fri, 2 Oct 2026 15:17:47 +0400 Subject: [PATCH 3/6] docs(prl): where the early-exit penalty goes, the Stake Legacy page, dead Fantom links - Early-exit penalty: Ethereum's sPRL1 vault sends it to 0x...dEaD, so it is burned; the six other staking vaults send it to the Protocol & DAO Treasury multisig of their chain (each vault's feeReceiver, read on 2 October 2026). Eight passages on six pages said it always went to the DAO Treasury. - Staking guide: the Stake Legacy page, where the first sPRL2 vault is migrated and PAR is claimed on Polygon PoS; the Stake page's Available Rewards card covers Base only, while the MCP claim_rewards tool covers both chains; the migration is an approval then one migrate call, after cancelling a pending unstake; Stake BPT for the pool token, and Sign Permit then Stake PRL for sPRL1. - Governance pages: the v1 migration is one call after an approval. - USDp and sUSDp factsheets: drop the "live on 5 chains" MCP figure. - contracts.mdx: link SideChainFeeCollector.sol, the file that exists. - Contract tables: no explorer link on Fantom. ftmscan.com no longer resolves and no other explorer shows the listed contracts reliably; the addresses and copy buttons stay. Co-Authored-By: Claude Opus 5.5 --- .../ContractTable/ContractTable.test.tsx | 14 ++++++++++ .../ContractTable/ContractTable.tsx | 27 ++++++++++--------- src/lib/chains.test.ts | 25 +++++++++-------- src/lib/chains.ts | 7 +++-- .../tokenomics/contracts.mdx | 4 +-- .../tokenomics/staking-mechanisms.mdx | 4 +-- src/pages/governance/sprl.mdx | 4 +-- src/pages/products/parallel-v3/fees.mdx | 2 +- .../usdp-and-susdp/fee-distribution.mdx | 2 +- src/pages/resources/factsheets/susdp.mdx | 2 +- src/pages/resources/factsheets/usdp.mdx | 2 +- src/pages/resources/user-guides/stake-prl.mdx | 27 ++++++++++++------- src/pages/security/risks.mdx | 4 +-- 13 files changed, 77 insertions(+), 47 deletions(-) diff --git a/src/components/ContractTable/ContractTable.test.tsx b/src/components/ContractTable/ContractTable.test.tsx index 1e1d626..e0e3013 100644 --- a/src/components/ContractTable/ContractTable.test.tsx +++ b/src/components/ContractTable/ContractTable.test.tsx @@ -78,6 +78,20 @@ describe("ContractTable", () => { expect(container.querySelector("symbol")).toBeNull(); }); + it("keeps the address and copy button but renders no explorer link on a chain without explorer", () => { + const { container } = render( + , + ); + + expect(screen.getByText("0x1234…ef12")).toBeInTheDocument(); + expect(screen.getByRole("button", { name: `Copy address ${ADDR_1}` })).toBeInTheDocument(); + expect(screen.queryByRole("link")).not.toBeInTheDocument(); + expect(container.querySelector('use[href="#cooper-icon-external-link"]')).toBeNull(); + }); + it("keeps the row icons decorative", () => { const { container } = render( , diff --git a/src/components/ContractTable/ContractTable.tsx b/src/components/ContractTable/ContractTable.tsx index b30da39..12ebfeb 100644 --- a/src/components/ContractTable/ContractTable.tsx +++ b/src/components/ContractTable/ContractTable.tsx @@ -36,7 +36,7 @@ export interface ContractTableProps { * * - Desktop (≥ 768 px): three-column table (Contract / Address / Actions) with an `sr-only` caption. * - Mobile (< 768 px): each row collapses into a stacked card via CSS only. - * - Each row exposes a copy button and an explorer link. + * - Each row exposes a copy button and, when the chain has an explorer, an explorer link. * - Contracts with a `description` render it inline beneath the contract name. */ export function ContractTable({ @@ -86,7 +86,7 @@ export function ContractTable({ key={`${contract.name}-${contract.address}`} contract={contract} chainLabel={chainLabel} - explorerUrl={buildExplorerUrl(contract.address)} + explorerUrl={buildExplorerUrl?.(contract.address)} /> ))} @@ -98,7 +98,8 @@ export function ContractTable({ interface ContractRowProps { contract: Contract; chainLabel: string; - explorerUrl: string; + /** Absent when the chain has no explorer to link to. */ + explorerUrl?: string; } function ContractRow({ contract, chainLabel, explorerUrl }: ContractRowProps) { @@ -116,15 +117,17 @@ function ContractRow({ contract, chainLabel, explorerUrl }: ContractRowProps) { - - - + {explorerUrl ? ( + + + + ) : null} diff --git a/src/lib/chains.test.ts b/src/lib/chains.test.ts index 91459ca..b614992 100644 --- a/src/lib/chains.test.ts +++ b/src/lib/chains.test.ts @@ -23,21 +23,24 @@ describe("CHAIN_LABELS", () => { describe("EXPLORERS", () => { const ADDR = "0x0000000000000000000000000000000000000000"; - it("returns an https URL containing the address for every ChainSlug", () => { - for (const slug of SLUGS) { - const url = EXPLORERS[slug](ADDR); - expect(url.startsWith("https://")).toBe(true); + it("returns an https URL containing the address for every ChainSlug with an explorer", () => { + for (const slug of SLUGS.filter((s) => s !== "fantom")) { + const url = EXPLORERS[slug]?.(ADDR); + expect(url?.startsWith("https://")).toBe(true); expect(url).toContain(ADDR); } }); it("uses the documented host per chain", () => { - expect(EXPLORERS.ethereum(ADDR)).toContain("etherscan.io"); - expect(EXPLORERS.sei(ADDR)).toContain("seitrace.com"); - expect(EXPLORERS.base(ADDR)).toContain("basescan.org"); - expect(EXPLORERS.sonic(ADDR)).toContain("sonicscan.org"); - expect(EXPLORERS.arbitrum(ADDR)).toContain("arbiscan.io"); - expect(EXPLORERS.polygon(ADDR)).toContain("polygonscan.com"); - expect(EXPLORERS.fantom(ADDR)).toContain("ftmscan.com"); + expect(EXPLORERS.ethereum?.(ADDR)).toContain("etherscan.io"); + expect(EXPLORERS.sei?.(ADDR)).toContain("seitrace.com"); + expect(EXPLORERS.base?.(ADDR)).toContain("basescan.org"); + expect(EXPLORERS.sonic?.(ADDR)).toContain("sonicscan.org"); + expect(EXPLORERS.arbitrum?.(ADDR)).toContain("arbiscan.io"); + expect(EXPLORERS.polygon?.(ADDR)).toContain("polygonscan.com"); + }); + + it("links no explorer for Fantom, since ftmscan.com is gone", () => { + expect(EXPLORERS.fantom).toBeNull(); }); }); diff --git a/src/lib/chains.ts b/src/lib/chains.ts index 8e3d96f..a1a5856 100644 --- a/src/lib/chains.ts +++ b/src/lib/chains.ts @@ -53,7 +53,8 @@ export const CHAIN_LABELS: Record = { fantom: "Fantom", }; -export const EXPLORERS: Record string> = { +/** Explorer URL per chain; `null` when no explorer reliably shows the listed contracts. */ +export const EXPLORERS: Record string) | null> = { ethereum: (a) => `https://etherscan.io/address/${a}`, base: (a) => `https://basescan.org/address/${a}`, sonic: (a) => `https://sonicscan.org/address/${a}`, @@ -80,5 +81,7 @@ export const EXPLORERS: Record string> = { fraxtal: (a) => `https://fraxscan.com/address/${a}`, world: (a) => `https://worldscan.org/address/${a}`, hemi: (a) => `https://explorer.hemi.xyz/address/${a}`, - fantom: (a) => `https://ftmscan.com/address/${a}`, + // ftmscan.com no longer resolves, and no other Fantom explorer shows the listed + // contracts reliably: the addresses stay, without a link. + fantom: null, }; diff --git a/src/pages/developers-hub/parallel-governance-token-prl/tokenomics/contracts.mdx b/src/pages/developers-hub/parallel-governance-token-prl/tokenomics/contracts.mdx index 4434d49..4e2d064 100644 --- a/src/pages/developers-hub/parallel-governance-token-prl/tokenomics/contracts.mdx +++ b/src/pages/developers-hub/parallel-governance-token-prl/tokenomics/contracts.mdx @@ -35,9 +35,9 @@ This contract is deployed on the chain that distributes the fees to users and fe * `updateBridgeableToken(address _newBridgeableToken)`| **Restricted** : Allow to update the bridgeable token contract (parallel tunnel). * `updateFeeReceivers(address[] memory _feeReceivers, uint256[] memory _shares)` | **Restricted** : Allow to update the list of the fee receivers and their shares. -#### 1**.1.3** [**SideChainFeeDistributor**](https://github.com/parallel-protocol/parallel-tokenomics/blob/main/contracts/fees/SideChainFeeDistributor.sol) +#### 1**.1.3** [**SideChainFeeDistributor**](https://github.com/parallel-protocol/parallel-tokenomics/blob/main/contracts/fees/SideChainFeeCollector.sol) -This contract is deployed on side chains and is used to distribute the fees to the MainFeeDistributor by bridging them using Parallel Tunnel. Inherits from FeeCollectorCore. +This contract is deployed on side chains and is used to distribute the fees to the MainFeeDistributor by bridging them using Parallel Tunnel. Inherits from FeeCollectorCore. In the code, the contract is named `SideChainFeeCollector`. **function details**: diff --git a/src/pages/governance/parallel-governance-token-prl/tokenomics/staking-mechanisms.mdx b/src/pages/governance/parallel-governance-token-prl/tokenomics/staking-mechanisms.mdx index b18639a..d29ebaf 100644 --- a/src/pages/governance/parallel-governance-token-prl/tokenomics/staking-mechanisms.mdx +++ b/src/pages/governance/parallel-governance-token-prl/tokenomics/staking-mechanisms.mdx @@ -21,7 +21,7 @@ The PRL staking modules can be deployed on several blockchains at once.

Staking Mechanisms Summary

-It is possible for sPRL1 and sPRL2 to initiate unstaking at any time, against a cooldown period of 28 days. However, they are able to bypass the vesting period by paying a penalty fee, starting at 50% and decreasing linearly over time. The penalty fee is taken from the amount of sPRL1 or sPRL2 being unstaked and is sent to the DAO Treasury. +It is possible for sPRL1 and sPRL2 to initiate unstaking at any time, against a cooldown period of 28 days. However, they are able to bypass the vesting period by paying a penalty fee, starting at 50% and decreasing linearly over time. The penalty fee is taken from the amount of sPRL1 or sPRL2 being unstaked and goes to the vault's fee receiver. On Ethereum, the sPRL1 vault sends it to the dead address `0x000000000000000000000000000000000000dEaD`, so it is burned; the other vaults send it to the Protocol & DAO Treasury multisig of their chain, listed on the [DAO Multisigs](/governance/dao-multisigs) page.

Penalty Fee Over Time

@@ -51,7 +51,7 @@ sPRL2 v2 is deployed on: * Ethereum * Base -The first sPRL2 vault, on Ethereum, staked the pool token on Aura. It is paused: its holders move their position to sPRL2 v2 in one transaction and without penalty, through the `sPRL2Migrator` contract the app uses. +The first sPRL2 vault, on Ethereum, staked the pool token on Aura. It is paused: its holders move their position to sPRL2 v2 without penalty through the `sPRL2Migrator` contract, with one migration call after approving the migrator to spend their sPRL2. In the app, this happens on the [Stake Legacy page](/resources/user-guides/stake-prl#legacy-sprl2-and-par-rewards). :::info sPRL2 can technically be deployed on more chains in the future, conditioned to the availability of PRL and Balancer/Beets on the chain. diff --git a/src/pages/governance/sprl.mdx b/src/pages/governance/sprl.mdx index 36fb20b..11d5097 100644 --- a/src/pages/governance/sprl.mdx +++ b/src/pages/governance/sprl.mdx @@ -16,7 +16,7 @@ sPRL1 & sPRL2 are represented in form of tokens and will be freely transferable,

Staking Mechanisms Summary

-It is possible for sPRL1 and sPRL2 to initiate unstaking at any time, against a cooldown period of 28 days. However, they are able to bypass the vesting period by paying a penalty fee, starting at 50% and decreasing linearly over time. The penalty fee is taken from the amount of sPRL1 or sPRL2 being unstaked and is sent to the DAO Treasury. +It is possible for sPRL1 and sPRL2 to initiate unstaking at any time, against a cooldown period of 28 days. However, they are able to bypass the vesting period by paying a penalty fee, starting at 50% and decreasing linearly over time. The penalty fee is taken from the amount of sPRL1 or sPRL2 being unstaked and goes to the vault's fee receiver. On Ethereum, the sPRL1 vault sends it to the dead address `0x000000000000000000000000000000000000dEaD`, so it is burned; the other vaults send it to the Protocol & DAO Treasury multisig of their chain, listed on the [DAO Multisigs](/governance/dao-multisigs) page.

Penalty Fee Over Time

@@ -42,7 +42,7 @@ sPRL2 v2 is deployed on: * Ethereum * Base -The first sPRL2 vault, on Ethereum, staked the pool token on Aura. It is paused: its holders move their position to sPRL2 v2 in one transaction and without penalty, through the `sPRL2Migrator` contract the app uses. +The first sPRL2 vault, on Ethereum, staked the pool token on Aura. It is paused: its holders move their position to sPRL2 v2 without penalty through the `sPRL2Migrator` contract, with one migration call after approving the migrator to spend their sPRL2. In the app, this happens on the [Stake Legacy page](/resources/user-guides/stake-prl#legacy-sprl2-and-par-rewards). ## **Where to stake PRL?** diff --git a/src/pages/products/parallel-v3/fees.mdx b/src/pages/products/parallel-v3/fees.mdx index 942f2d4..b072fa9 100644 --- a/src/pages/products/parallel-v3/fees.mdx +++ b/src/pages/products/parallel-v3/fees.mdx @@ -20,7 +20,7 @@ Parallel charges very little today, but none of its fees are hard-coded. Mint an | Bridge USDp | 0.00% protocol fee | You pay the LayerZero native gas fee on the source chain. Delivery takes around 10 minutes. | The LayerZero network (verifiers and executors), not Parallel | | Flashloan | 0.00% | Up to 100,000 per transaction on each chain. | Fee collector, when a fee is set | | sUSDp deposit or withdraw | None | ERC-4626 vault, no slippage, yield accrues from the first block. | Not applicable | -| PRL staking | No fee to stake, or to unstake after the cooldown | Skipping the 28-day cooldown costs a penalty that starts at 50% and decreases linearly. See [Staking Mechanisms](/governance/parallel-governance-token-prl/tokenomics/staking-mechanisms). | DAO Treasury (penalty only) | +| PRL staking | No fee to stake, or to unstake after the cooldown | Skipping the 28-day cooldown costs a penalty that starts at 50% and decreases linearly. See [Staking Mechanisms](/governance/parallel-governance-token-prl/tokenomics/staking-mechanisms). | Penalty only: burned on Ethereum's sPRL1 vault, Protocol & DAO Treasury multisig on the other vaults | | x402 facilitator | No platform fee | Gas is sponsored on Base, HyperEVM and Avalanche only; Ethereum is supported but the agent pays its own gas. Agents pay in USDp, USDC or sUSDp, and funds settle straight to the merchant's wallet. See [x402 concepts](/agents/x402/concepts). | Not applicable | ## Minting and burning diff --git a/src/pages/products/parallel-v3/stablecoins-and-savings/usdp-and-susdp/fee-distribution.mdx b/src/pages/products/parallel-v3/stablecoins-and-savings/usdp-and-susdp/fee-distribution.mdx index c67109c..098873f 100644 --- a/src/pages/products/parallel-v3/stablecoins-and-savings/usdp-and-susdp/fee-distribution.mdx +++ b/src/pages/products/parallel-v3/stablecoins-and-savings/usdp-and-susdp/fee-distribution.mdx @@ -44,7 +44,7 @@ The Savings Module is live on Ethereum, Base, HyperEVM and Avalanche. A Sonic de ## What the DAO Treasury does with its share -The 10% share funds the [DAO Treasury](/governance/dao-treasury), alongside the early-unstake penalties paid by PRL stakers who skip the cooldown. The treasury follows a strategy voted by the DAO: every month, the net accumulated stablecoins are swapped into a 30/70 split of wETH and USDp and deployed into PRL/wETH and USDp liquidity pools, with the rewards from those positions compounded back into the treasury. The DAO Multisig executes the strategy, and the aggregated treasury is visible in real time on Octav. +The 10% share funds the [DAO Treasury](/governance/dao-treasury), alongside the early-unstake penalties paid by PRL stakers who skip the cooldown, except on Ethereum's sPRL1 vault, where the penalty is burned. The treasury follows a strategy voted by the DAO: every month, the net accumulated stablecoins are swapped into a 30/70 split of wETH and USDp and deployed into PRL/wETH and USDp liquidity pools, with the rewards from those positions compounded back into the treasury. The DAO Multisig executes the strategy, and the aggregated treasury is visible in real time on Octav. ## The PRL stakers' share diff --git a/src/pages/resources/factsheets/susdp.mdx b/src/pages/resources/factsheets/susdp.mdx index 3a7a34e..d983444 100644 --- a/src/pages/resources/factsheets/susdp.mdx +++ b/src/pages/resources/factsheets/susdp.mdx @@ -56,7 +56,7 @@ sUSDp is not bridged by the protocol. Bridge USDp, then deposit on the destinati - [Savings Module integration](/developers-hub/parallel-v3/build-on-parallel/savings-module-integration): deposit, redeem and read the rate with the standard ERC-4626 interface - [USDp contract addresses](/developers-hub/contract-addresses/parallel-v3/usdp): the sUSDp vault on each chain - [Subgraphs](/developers-hub/parallel-v3/offchain-tools/subgraphs) for rates, deposits and share-price history; [Dune](/developers-hub/parallel-v3/offchain-tools/dune) dashboards are planned -- [MCP server](/agents/mcp): live on 5 chains with 36 tools, giving any AI client the live savings rate and ready-to-sign deposit transactions +- [MCP server](/agents/mcp): 36 tools giving any AI client the live savings rate and ready-to-sign deposit and withdrawal transactions - [x402](/agents/x402): sUSDp is accepted by Parallel's x402 facilitator (gas sponsored on Base, HyperEVM, Avalanche; Ethereum supported but not sponsored). Agents can pay in USDp, USDC or sUSDp ## Resources diff --git a/src/pages/resources/factsheets/usdp.mdx b/src/pages/resources/factsheets/usdp.mdx index c0c36cb..669e811 100644 --- a/src/pages/resources/factsheets/usdp.mdx +++ b/src/pages/resources/factsheets/usdp.mdx @@ -56,7 +56,7 @@ The reserves backing USDp sit in permissionless Parallelizer contracts on Ethere - [USDp contract addresses](/developers-hub/contract-addresses/parallel-v3/usdp): token, Parallelizer, bridge and flashloan contracts on every chain - [Flashloan Module integration](/developers-hub/parallel-v3/build-on-parallel/flashloan-module-integration): 0.00% fee, up to 100,000 USDp per chain - [Subgraphs](/developers-hub/parallel-v3/offchain-tools/subgraphs) for indexed data; [Dune](/developers-hub/parallel-v3/offchain-tools/dune) dashboards are planned -- [MCP server](/agents/mcp): live on 5 chains with 36 tools, giving any AI client live data and ready-to-sign mint, redeem and bridge transactions +- [MCP server](/agents/mcp): 36 tools giving any AI client live protocol data and ready-to-sign mint, redeem and bridge transactions - [x402](/agents/x402): USDp is accepted by Parallel's x402 facilitator (gas sponsored on Base, HyperEVM, Avalanche; Ethereum supported but not sponsored). Agents can pay in USDp, USDC or sUSDp ## Resources diff --git a/src/pages/resources/user-guides/stake-prl.mdx b/src/pages/resources/user-guides/stake-prl.mdx index d183512..dd73053 100644 --- a/src/pages/resources/user-guides/stake-prl.mdx +++ b/src/pages/resources/user-guides/stake-prl.mdx @@ -29,7 +29,7 @@ Both sPRL1 and sPRL2 are transferable ERC-20 tokens. Transferring them resets th sPRL1 and sPRL2 take new stakes on Ethereum and Base. The [PRL contract addresses](/developers-hub/contract-addresses/parallel-v3/prl) page lists the live contracts per chain. If your PRL sits on another chain, [bridge it](/resources/user-guides/bridge) first. -sPRL1 on Polygon PoS and Sonic is being sunset (PIP-68): the app shows a notice there and no longer lets you stake, but you can still unstake and withdraw, with a one-day cooldown and no penalty. If you still hold sPRL2 from the first vault on Ethereum, now paused, the app moves it to sPRL2 v2 in one transaction, without penalty. +sPRL1 on Polygon PoS and Sonic is being sunset (PIP-68): the app shows a notice there and no longer lets you stake, but you can still unstake and withdraw, with a one-day cooldown and no penalty. If you still hold sPRL2 from the first vault on Ethereum, now paused, the app's **Stake Legacy** page moves it to sPRL2 v2 without penalty: an approval, then one migration transaction. See [Legacy sPRL2 and PAR rewards](#legacy-sprl2-and-par-rewards). ## Epochs and ParaBoost @@ -52,8 +52,8 @@ Two actions reset ParaBoost: transferring your sPRL, and unstaking. The MCP serv 2. Connect your wallet and switch it to the chain you want to stake on. 3. Choose the **Single Pool** tab (100% PRL, which mints sPRL1) and the **Stake** action. 4. Enter the amount of PRL. -5. Approve PRL the first time, and confirm the approval in your wallet. -6. Click **Stake** and confirm the transaction. +5. Sign the permit when the app asks for one (**Sign Permit**): a signature, not a transaction. From a smart-contract wallet such as a Safe, the app asks you to approve PRL instead (**Approve PRL**). +6. Click **Stake PRL** and confirm the transaction. Your sPRL1 balance appears in the same wallet. It starts accruing ParaBoost from the current epoch. @@ -64,12 +64,12 @@ sPRL2 is minted against the Balancer pool token of the 80/20 PRL/wETH pool. Ther **Deposit the pool token yourself** 1. Join the 80/20 PRL/wETH pool on Balancer with PRL and wETH (or a single asset, if the pool allows it). You receive the pool token (BPT). -2. Open [app.parallel.best/stake](https://app.parallel.best/stake) and choose the **Multiple Assets Pool** tab (80% PRL and 20% ETH, which mints sPRL2) and the **Stake** action. -3. Enter the amount of BPT, approve it the first time, then click **Stake** and confirm. +2. Open [app.parallel.best/stake](https://app.parallel.best/stake) and choose the **Multiple Assets Pool** tab (80% PRL and 20% ETH, which mints sPRL2) and the **Stake BPT** action. +3. Enter the amount of BPT, approve it the first time (**Approve BPT**), then click **Stake BPT** and confirm. **Let the app build the position** -The sPRL2 v2 vault accepts either the BPT, or PRL with ETH or wETH (the MCP `stake` tool takes BPT, or PRL and wETH). When the Multiple Assets Pool tab offers a PRL input, the app uses the second path: in one transaction, the vault adds PRL and ETH to the pool in its 80/20 proportion, keeps the resulting BPT and mints your sPRL2, and returns what the pool did not take. +The sPRL2 v2 vault accepts either the BPT, or PRL with ETH or wETH (the MCP `stake` tool takes BPT, or PRL and wETH). In the app, the **Stake** action of the Multiple Assets Pool tab takes the second path: in one transaction, the vault adds PRL and ETH (or wETH) to the pool in its 80/20 proportion, keeps the resulting BPT and mints your sPRL2, and returns what the pool did not take. In both cases the vault holds the BPT itself; it is not staked anywhere else. Your reward is the 2.5x ParaBoost weight. @@ -77,10 +77,17 @@ In both cases the vault holds the BPT itself; it is not staked anywhere else. Yo - **What you earn:** a share of the protocol's fees, paid in USDp and split between stakers according to their ParaBoost at the end of each epoch. The [fee distribution](/governance/parallel-governance-token-prl/tokenomics/fee-distribution) page describes the mechanism, and why an epoch can distribute nothing. - **When:** once per epoch, after the keeper publishes the Merkle root. Rewards from the epoch you stake in are claimable after that epoch ends. -- **Where:** on Base, regardless of the chain you staked on. Rewards from the epochs published before the move to Base are paid in PAR and claimed on Polygon PoS, so a claim can span both chains. +- **Where:** on Base, regardless of the chain you staked on. Rewards from the epochs published before the move to Base are paid in PAR and claimed on Polygon PoS. - **Claim window:** set for each epoch when it is published. PIP-68 reduces it from 12 epochs to 6, about six months, but the epochs published by 2 October 2026 can be claimed for 365 days. Unclaimed rewards return to the DAO Treasury when an epoch's window ends, so claim within six months to be safe. -To claim in the app, open the **Stake** page, find **Available Rewards** and click **Claim Rewards**. The [`claim_rewards`](/agents/mcp/tools) MCP tool builds the same transactions. +To claim in the app, open the **Stake** page, find **Available Rewards** and click **Claim Rewards**: the panel lists your epochs, and **Claim rewards** claims the USDp on Base in one transaction. That card shows Base only; PAR from the earlier epochs is claimed on the Stake Legacy page (see [below](#legacy-sprl2-and-par-rewards)). The [`claim_rewards`](/agents/mcp/tools) MCP tool, on the other hand, covers both chains in one call: it builds the claim on Base, plus one on Polygon PoS while legacy rewards remain. + +## Legacy sPRL2 and PAR rewards + +Positions and rewards from before Tokenomics v2.1 have their own page in the app, **Stake Legacy** ([app.parallel.best/stake-legacy](https://app.parallel.best/stake-legacy)). When your wallet still holds sPRL2 from the first vault or has PAR left to claim, the Stake page shows a banner, "Looking for your legacy sPRL2 or old rewards?", with a **Go to Stake Legacy** button. + +- **Migrate sPRL2 from the first vault.** The migration runs on Ethereum and moves your whole balance to sPRL2 v2, without penalty, in two transactions: approve the migrator to spend your sPRL2 (**Approve sPRL2**), then **Migrate sPRL2**, a single call to the `sPRL2Migrator`. If an unstake of that sPRL2 is pending, the page asks you to cancel it first (**Cancel Unstake**), so that it migrates too. +- **Claim PAR rewards.** The page's **Available Rewards** card shows the PAR left from the epochs published on Polygon PoS before the move to Base. **Claim Rewards** opens the list of epochs, and **Claim rewards** claims them on Polygon PoS. ## Unstaking @@ -89,7 +96,7 @@ Unstaking is a two-step process for both sPRL1 and sPRL2: 1. **Start the cooldown.** On the Stake page, click **Unstake**, enter the amount and confirm. This opens a fixed 28-day cooldown. During the cooldown the tokens stay locked and your ParaBoost is reset. 2. **Withdraw.** Once the cooldown has matured, come back to the Stake page and withdraw. You receive PRL (sPRL1) or BPT (sPRL2). -**Early exit.** You can skip the remaining cooldown by paying a penalty taken from the amount you unstake. The penalty starts at 50% and decreases linearly as the cooldown progresses; it is sent to the DAO Treasury. The app shows the exact penalty before you confirm, and the MCP server flags it as `EARLY_UNSTAKE_PENALTY`. +**Early exit.** You can skip the remaining cooldown by paying a penalty taken from the amount you unstake. The penalty starts at 50% and decreases linearly as the cooldown progresses. On Ethereum's sPRL1 vault it is burned; on the other vaults it goes to the Protocol & DAO Treasury multisig. The app shows the exact penalty before you confirm, and the MCP server flags it as `EARLY_UNSTAKE_PENALTY`. :::warning An early exit right after you start the cooldown costs up to half of your stake. Unless you need the tokens now, let the cooldown run its 28 days. @@ -122,7 +129,7 @@ Stake before a vote's snapshot is taken. PRL that is not staked at the snapshot }, { question: "Can I unstake without waiting the 28 days?", - answer: "Yes, by paying an early-exit penalty that starts at 50% of the amount and decreases linearly over the cooldown. The penalty goes to the DAO Treasury. The app shows the exact amount before you confirm." + answer: "Yes, by paying an early-exit penalty that starts at 50% of the amount and decreases linearly over the cooldown. On Ethereum's sPRL1 vault the penalty is burned; on the other vaults it goes to the Protocol & DAO Treasury multisig. The app shows the exact amount before you confirm." }, { question: "Do I lose rewards I have not claimed yet?", diff --git a/src/pages/security/risks.mdx b/src/pages/security/risks.mdx index 79a429e..6413741 100644 --- a/src/pages/security/risks.mdx +++ b/src/pages/security/risks.mdx @@ -168,7 +168,7 @@ Reserves are the exception: the Parallelizer holds the backing in permissionless PRL is a governance token whose price is set by the market and can fall to zero; staking it adds mechanisms you should understand before you commit: -- **Early-unstake penalty.** sPRL1 and sPRL2 unstake against a fixed 28-day cooldown, skippable by paying a penalty, sent to the DAO Treasury, that starts at 50% of the amount and decreases linearly over time. +- **Early-unstake penalty.** sPRL1 and sPRL2 unstake against a fixed 28-day cooldown, skippable by paying a penalty that starts at 50% of the amount and decreases linearly over time. The penalty is burned on Ethereum's sPRL1 vault and sent to the Protocol & DAO Treasury multisig on the other vaults. - **ParaBoost loss.** Your ParaBoost score, computed off-chain by a keeper at the end of each epoch, determines your share of fee distribution; transferring or unstaking sPRL resets it. - **sPRL2 liquidity-pool exposure.** sPRL2 is an 80/20 PRL/wETH Balancer pool token, held by the sPRL2 v2 vault, adding impermanent loss between PRL and wETH plus Balancer smart-contract risk on top of Parallel's own. It is deployed on Ethereum and Base; see the [PRL contract addresses](/developers-hub/contract-addresses/parallel-v3/prl). If you still hold sPRL2 from the paused v1 vault, its BPT stays deposited in Aura, and exposed to Aura's smart contracts, until you migrate to v2 or withdraw; Aura has shut down its pool for this BPT. - **Claim window.** Each epoch's fee rewards can be claimed until its window ends; unclaimed rewards then return to the DAO Treasury. PIP-68 reduces the window from 12 epochs (about one year) to 6 (about six months); the epochs published by 2 October 2026 carry a 365-day window on-chain. @@ -281,7 +281,7 @@ MCP read tools cache for 30 to 120 seconds; for a transaction that depends on an }, { question: "What happens to my PRL if I unstake early?", - answer: "Unstaking sPRL normally takes a fixed 28-day cooldown with no cost. Skipping it costs a penalty that starts at 50% of the amount and falls linearly to zero, paid to the DAO Treasury. Unstaking or transferring sPRL also resets your ParaBoost score; section 7 covers both in full." + answer: "Unstaking sPRL normally takes a fixed 28-day cooldown with no cost. Skipping it costs a penalty that starts at 50% of the amount and falls linearly to zero; it is burned on Ethereum's sPRL1 vault and paid to the Protocol & DAO Treasury multisig on the other vaults. Unstaking or transferring sPRL also resets your ParaBoost score; section 7 covers both in full." } ]} /> From 54028d6e8fbc0648adacd115e06cc869ee45de46 Mon Sep 17 00:00:00 2001 From: Noah Boisserie <51783223+JeanBrasse@users.noreply.github.com> Date: Fri, 2 Oct 2026 15:45:07 +0400 Subject: [PATCH 4/6] docs: say where early-exit penalties go, drop dead ftmscan links - USDp fee distribution: the 10% share funds the DAO Treasury, and the early-unstake penalties go to the Protocol & DAO Treasury multisig of their chain, except on Ethereum's sPRL1 vault, where they are burned. The sentence said the penalties funded the treasury alongside the 10% share, which is more than the chain shows. - DAO Multisigs, DAO Treasury and PAR pages: the Fantom addresses stay, without their ftmscan.com links; the domain no longer resolves. Co-Authored-By: Claude Opus 5.5 --- src/pages/governance/dao-multisigs/index.mdx | 2 +- src/pages/governance/dao-treasury/index.mdx | 2 +- src/pages/products/parallel-v2/stablecoins/par/index.mdx | 2 +- .../stablecoins-and-savings/usdp-and-susdp/fee-distribution.mdx | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/pages/governance/dao-multisigs/index.mdx b/src/pages/governance/dao-multisigs/index.mdx index 973b0cd..7922253 100644 --- a/src/pages/governance/dao-multisigs/index.mdx +++ b/src/pages/governance/dao-multisigs/index.mdx @@ -196,4 +196,4 @@ Find out the DAO Multisig Elections [here](/governance/dao-multisigs/dao-multisi | Multisig | Signatures Threshold | Address | | ----------------------- | -------------------- | --------------------------------------------------------------------------------------------------------------------------------- | -| Protocol & DAO Treasury | 5 out 8 signers | [0x174162ddecE9d0b7B68fd945e38c3372C4C818ba](https://ftmscan.com/address/0x174162ddecE9d0b7B68fd945e38c3372C4C818ba/transactions) | +| Protocol & DAO Treasury | 5 out 8 signers | 0x174162ddecE9d0b7B68fd945e38c3372C4C818ba | diff --git a/src/pages/governance/dao-treasury/index.mdx b/src/pages/governance/dao-treasury/index.mdx index 94fdab5..70ca7ed 100644 --- a/src/pages/governance/dao-treasury/index.mdx +++ b/src/pages/governance/dao-treasury/index.mdx @@ -201,4 +201,4 @@ If liquidity pools are to change over time, but retain the same tokens, multisig | Multisig | Signatures Threshold | Address | | ----------------------- | -------------------- | --------------------------------------------------------------------------------------------------------------------------------- | -| Protocol & DAO Treasury | 5 out 8 signers | [0x174162ddecE9d0b7B68fd945e38c3372C4C818ba](https://ftmscan.com/address/0x174162ddecE9d0b7B68fd945e38c3372C4C818ba/transactions) | +| Protocol & DAO Treasury | 5 out 8 signers | 0x174162ddecE9d0b7B68fd945e38c3372C4C818ba | diff --git a/src/pages/products/parallel-v2/stablecoins/par/index.mdx b/src/pages/products/parallel-v2/stablecoins/par/index.mdx index fc5e311..5f02fd9 100644 --- a/src/pages/products/parallel-v2/stablecoins/par/index.mdx +++ b/src/pages/products/parallel-v2/stablecoins/par/index.mdx @@ -19,7 +19,7 @@ You're reading the legacy **v2** documentation. For current Parallel features, s | ----------- | ---------------------------------------------------------------------------------------------------------------------- | | Ethereum | [0x68037790a0229e9ce6eaa8a99ea92964106c4703 ](https://etherscan.io/token/0x68037790a0229e9ce6eaa8a99ea92964106c4703) | | Polygon PoS | [0xe2aa7db6da1dae97c5f5c6914d285fbfcc32a128](https://polygonscan.com/token/0xe2aa7db6da1dae97c5f5c6914d285fbfcc32a128) | -| Fantom | [0x13082681E8CE9bd0aF505912d306403592490Fc7](https://ftmscan.com/token/0x13082681E8CE9bd0aF505912d306403592490Fc7) | +| Fantom | 0x13082681E8CE9bd0aF505912d306403592490Fc7 | ### PAR is non-custodial diff --git a/src/pages/products/parallel-v3/stablecoins-and-savings/usdp-and-susdp/fee-distribution.mdx b/src/pages/products/parallel-v3/stablecoins-and-savings/usdp-and-susdp/fee-distribution.mdx index 098873f..c6d48b8 100644 --- a/src/pages/products/parallel-v3/stablecoins-and-savings/usdp-and-susdp/fee-distribution.mdx +++ b/src/pages/products/parallel-v3/stablecoins-and-savings/usdp-and-susdp/fee-distribution.mdx @@ -44,7 +44,7 @@ The Savings Module is live on Ethereum, Base, HyperEVM and Avalanche. A Sonic de ## What the DAO Treasury does with its share -The 10% share funds the [DAO Treasury](/governance/dao-treasury), alongside the early-unstake penalties paid by PRL stakers who skip the cooldown, except on Ethereum's sPRL1 vault, where the penalty is burned. The treasury follows a strategy voted by the DAO: every month, the net accumulated stablecoins are swapped into a 30/70 split of wETH and USDp and deployed into PRL/wETH and USDp liquidity pools, with the rewards from those positions compounded back into the treasury. The DAO Multisig executes the strategy, and the aggregated treasury is visible in real time on Octav. +The 10% share funds the [DAO Treasury](/governance/dao-treasury). The early-unstake penalties paid by PRL stakers who skip the cooldown go to the Protocol & DAO Treasury multisig of their chain, except on Ethereum's sPRL1 vault, where they are burned. The treasury follows a strategy voted by the DAO: every month, the net accumulated stablecoins are swapped into a 30/70 split of wETH and USDp and deployed into PRL/wETH and USDp liquidity pools, with the rewards from those positions compounded back into the treasury. The DAO Multisig executes the strategy, and the aggregated treasury is visible in real time on Octav. ## The PRL stakers' share From ce99382bb9ef7ed67dec6ad7d8a1e1393d0ac750 Mon Sep 17 00:00:00 2001 From: Noah Boisserie <51783223+JeanBrasse@users.noreply.github.com> Date: Sun, 4 Oct 2026 22:48:54 +0400 Subject: [PATCH 5/6] docs(prl): claim window without a date; PAR addresses description - Claim window: each epoch's window is set on-chain when the epoch is published; PIP-68 sets 6 epochs as the target, and every epoch published so far, on Base and Polygon PoS, carries 365 days. The sentences no longer tie the 365-day window to a date, which wrongly suggested later epochs use 6 epochs. - PAR addresses page: the description no longer promises an explorer link on Fantom. Co-Authored-By: Claude Opus 5.5 --- .../contract-addresses/parallel-v2/par/index.mdx | 2 +- .../tokenomics/fee-distribution.mdx | 2 +- .../usdp-and-susdp/fee-distribution.mdx | 2 +- src/pages/resources/factsheets/prl.mdx | 2 +- src/pages/resources/user-guides/stake-prl.mdx | 4 ++-- src/pages/security/risks.mdx | 2 +- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/pages/developers-hub/contract-addresses/parallel-v2/par/index.mdx b/src/pages/developers-hub/contract-addresses/parallel-v2/par/index.mdx index b3eac5d..c17e059 100644 --- a/src/pages/developers-hub/contract-addresses/parallel-v2/par/index.mdx +++ b/src/pages/developers-hub/contract-addresses/parallel-v2/par/index.mdx @@ -1,6 +1,6 @@ --- title: PAR Contract Addresses -description: Deployed PAR contract addresses for the legacy Parallel V2 stablecoin, across Ethereum, Fantom and Polygon, with a link to each block explorer. +description: Deployed PAR contract addresses for the legacy Parallel V2 stablecoin, across Ethereum, Fantom and Polygon, with block explorer links on Ethereum and Polygon. --- import { ContractAddressesPage } from '@/components/ContractAddressesPage'; diff --git a/src/pages/governance/parallel-governance-token-prl/tokenomics/fee-distribution.mdx b/src/pages/governance/parallel-governance-token-prl/tokenomics/fee-distribution.mdx index 6659801..6757280 100644 --- a/src/pages/governance/parallel-governance-token-prl/tokenomics/fee-distribution.mdx +++ b/src/pages/governance/parallel-governance-token-prl/tokenomics/fee-distribution.mdx @@ -21,7 +21,7 @@ Before v2.1, the fees were converted to PAR and distributed on Polygon PoS. The

Protocol Fees Distribution Overview

\ -The fees distributed to the PRL stakers are distributed on the same chain, regardless of the chain where the PRL tokens are staked. Each epoch is published to the `RewardMerkleDistributor` with its own claim window, after which unclaimed rewards return to the DAO Treasury. PIP-68 reduces that window from 12 epochs (about a year) to 6 epochs (about six months), but the epochs published by 2 October 2026 carry a 365-day window on-chain: the epoch that started on Base on 5 September 2026 can be claimed until 5 September 2027, and each PAR epoch on Polygon PoS for 365 days after it started. To be safe, claim within six epochs. +The fees distributed to the PRL stakers are distributed on the same chain, regardless of the chain where the PRL tokens are staked. Each epoch's claim window is set on-chain, in the `RewardMerkleDistributor`, when the epoch is published; unclaimed rewards then return to the DAO Treasury. PIP-68 sets 6 epochs (about six months) as the target, down from 12 (about a year). Every epoch published so far, on Base and on Polygon PoS, carries a 365-day window, and a window cannot change once its epoch has started. Claiming within six epochs is therefore safe. :::info An epoch can distribute nothing: PGP-42, adopted in May 2026, redirected the stakers' share to PRL buybacks and burns for three months. diff --git a/src/pages/products/parallel-v3/stablecoins-and-savings/usdp-and-susdp/fee-distribution.mdx b/src/pages/products/parallel-v3/stablecoins-and-savings/usdp-and-susdp/fee-distribution.mdx index c6d48b8..74dfcf9 100644 --- a/src/pages/products/parallel-v3/stablecoins-and-savings/usdp-and-susdp/fee-distribution.mdx +++ b/src/pages/products/parallel-v3/stablecoins-and-savings/usdp-and-susdp/fee-distribution.mdx @@ -48,7 +48,7 @@ The 10% share funds the [DAO Treasury](/governance/dao-treasury). The early-unst ## The PRL stakers' share -PRL stakers (sPRL1 and sPRL2) also receive a portion of protocol fees at the end of each epoch, weighted by their ParaBoost. The [PRL tokenomics fee distribution page](/governance/parallel-governance-token-prl/tokenomics/fee-distribution) describes that flow: since Tokenomics v2.1 (PIP-68), the stakers' share is swapped to USDp, bridged to Base and distributed to stakers there. Unclaimed rewards return to the DAO Treasury when an epoch's claim window ends: PIP-68 reduces that window from 12 epochs to 6, but the epochs published by 2 October 2026 carry a 365-day window on-chain. +PRL stakers (sPRL1 and sPRL2) also receive a portion of protocol fees at the end of each epoch, weighted by their ParaBoost. The [PRL tokenomics fee distribution page](/governance/parallel-governance-token-prl/tokenomics/fee-distribution) describes that flow: since Tokenomics v2.1 (PIP-68), the stakers' share is swapped to USDp, bridged to Base and distributed to stakers there. Unclaimed rewards return to the DAO Treasury when an epoch's claim window ends. Each window is set on-chain when the epoch is published: PIP-68 sets 6 epochs as the target, and every epoch published so far carries 365 days. That share is 15% of Parallel V2 revenue. The fees collected by the USDp codebase follow the 90/10 split above. diff --git a/src/pages/resources/factsheets/prl.mdx b/src/pages/resources/factsheets/prl.mdx index 4301c35..0820e26 100644 --- a/src/pages/resources/factsheets/prl.mdx +++ b/src/pages/resources/factsheets/prl.mdx @@ -28,7 +28,7 @@ PRL is the governance token of the Parallel Protocol. It replaced MIMO, and stak | Chains | The token is on 6 chains: Ethereum, Base, Arbitrum, Optimism, Polygon and Sonic. The [PRL contract addresses](/developers-hub/contract-addresses/parallel-v3/prl) page also lists PRL tokenomics contracts on Avalanche and HyperEVM, and a deprecated migration contract on Fantom, none of which carry the token | | Staking | sPRL1 (single-sided PRL) and sPRL2 (the 80/20 PRL/wETH Balancer pool token, held by the sPRL2 v2 vault). New stakes go to Ethereum or Base; sPRL1 on Polygon and Sonic is being sunset and can only be unstaked. Unstaking has a separate, fixed 28-day cooldown; leaving early costs a penalty that starts at 50% and decays linearly. See [Staking Mechanisms](/governance/parallel-governance-token-prl/tokenomics/staking-mechanisms) | | Epochs | One calendar month (28 to 31 days). Epochs set the ParaBoost window and the fee distribution schedule. See [Epoch Concept](/governance/parallel-governance-token-prl/tokenomics/epoch-concept) | -| Fee share | sPRL1 and sPRL2 holders receive a share of protocol fees each epoch, weighted by ParaBoost, paid in USDp on Base. PIP-68 reduces the claim window from 12 epochs to 6; the epochs published by 2 October 2026 can be claimed for 365 days. Rewards from the epochs published before the move to Base are claimed in PAR on Polygon. See [Fee Distribution](/governance/parallel-governance-token-prl/tokenomics/fee-distribution) and [Fees](/products/parallel-v3/fees) | +| Fee share | sPRL1 and sPRL2 holders receive a share of protocol fees each epoch, weighted by ParaBoost, paid in USDp on Base. Each epoch's claim window is set on-chain when it is published: PIP-68 sets 6 epochs as the target, and every epoch published so far can be claimed for 365 days. Rewards from the epochs published before the move to Base are claimed in PAR on Polygon. See [Fee Distribution](/governance/parallel-governance-token-prl/tokenomics/fee-distribution) and [Fees](/products/parallel-v3/fees) | | Governance role | sPRL1 and sPRL2 carry voting power, weighted by the previous epoch's [ParaBoost](/governance/parallel-governance-token-prl/tokenomics/paraboost). See [sPRL and Voting Power](/governance/sprl) | | Issuance | Under PIP-46, 100% of PRL issuance goes to the DAO PRL Inflation Multisig on Ethereum. See [Issuance](/governance/parallel-governance-token-prl/issuance) | | Migration | 1:1 from MIMO, closed on 15 April 2026 (PIP-65). See [MIMO to PRL Migration](/governance/parallel-governance-token-prl/mimo-to-prl-migration) | diff --git a/src/pages/resources/user-guides/stake-prl.mdx b/src/pages/resources/user-guides/stake-prl.mdx index dd73053..f99b3b0 100644 --- a/src/pages/resources/user-guides/stake-prl.mdx +++ b/src/pages/resources/user-guides/stake-prl.mdx @@ -78,7 +78,7 @@ In both cases the vault holds the BPT itself; it is not staked anywhere else. Yo - **What you earn:** a share of the protocol's fees, paid in USDp and split between stakers according to their ParaBoost at the end of each epoch. The [fee distribution](/governance/parallel-governance-token-prl/tokenomics/fee-distribution) page describes the mechanism, and why an epoch can distribute nothing. - **When:** once per epoch, after the keeper publishes the Merkle root. Rewards from the epoch you stake in are claimable after that epoch ends. - **Where:** on Base, regardless of the chain you staked on. Rewards from the epochs published before the move to Base are paid in PAR and claimed on Polygon PoS. -- **Claim window:** set for each epoch when it is published. PIP-68 reduces it from 12 epochs to 6, about six months, but the epochs published by 2 October 2026 can be claimed for 365 days. Unclaimed rewards return to the DAO Treasury when an epoch's window ends, so claim within six months to be safe. +- **Claim window:** set on-chain for each epoch when it is published. PIP-68 sets 6 epochs, about six months, as the target, and every epoch published so far can be claimed for 365 days. Unclaimed rewards return to the DAO Treasury when an epoch's window ends, so claiming within six months is safe. To claim in the app, open the **Stake** page, find **Available Rewards** and click **Claim Rewards**: the panel lists your epochs, and **Claim rewards** claims the USDp on Base in one transaction. That card shows Base only; PAR from the earlier epochs is claimed on the Stake Legacy page (see [below](#legacy-sprl2-and-par-rewards)). The [`claim_rewards`](/agents/mcp/tools) MCP tool, on the other hand, covers both chains in one call: it builds the claim on Base, plus one on Polygon PoS while legacy rewards remain. @@ -133,7 +133,7 @@ Stake before a vote's snapshot is taken. PRL that is not staked at the snapshot }, { question: "Do I lose rewards I have not claimed yet?", - answer: "Only once the epoch's claim window ends: its unclaimed rewards then return to the DAO Treasury. PIP-68 reduces that window from 12 epochs to 6, about six months; the epochs published by 2 October 2026 can be claimed for 365 days. Claim at least every six months to be safe." + answer: "Only once the epoch's claim window ends: its unclaimed rewards then return to the DAO Treasury. Each window is set on-chain when the epoch is published; PIP-68 sets 6 epochs, about six months, as the target, and every epoch published so far can be claimed for 365 days. Claiming at least every six months is safe." } ]} /> diff --git a/src/pages/security/risks.mdx b/src/pages/security/risks.mdx index 6413741..9a1a467 100644 --- a/src/pages/security/risks.mdx +++ b/src/pages/security/risks.mdx @@ -171,7 +171,7 @@ PRL is a governance token whose price is set by the market and can fall to zero; - **Early-unstake penalty.** sPRL1 and sPRL2 unstake against a fixed 28-day cooldown, skippable by paying a penalty that starts at 50% of the amount and decreases linearly over time. The penalty is burned on Ethereum's sPRL1 vault and sent to the Protocol & DAO Treasury multisig on the other vaults. - **ParaBoost loss.** Your ParaBoost score, computed off-chain by a keeper at the end of each epoch, determines your share of fee distribution; transferring or unstaking sPRL resets it. - **sPRL2 liquidity-pool exposure.** sPRL2 is an 80/20 PRL/wETH Balancer pool token, held by the sPRL2 v2 vault, adding impermanent loss between PRL and wETH plus Balancer smart-contract risk on top of Parallel's own. It is deployed on Ethereum and Base; see the [PRL contract addresses](/developers-hub/contract-addresses/parallel-v3/prl). If you still hold sPRL2 from the paused v1 vault, its BPT stays deposited in Aura, and exposed to Aura's smart contracts, until you migrate to v2 or withdraw; Aura has shut down its pool for this BPT. -- **Claim window.** Each epoch's fee rewards can be claimed until its window ends; unclaimed rewards then return to the DAO Treasury. PIP-68 reduces the window from 12 epochs (about one year) to 6 (about six months); the epochs published by 2 October 2026 carry a 365-day window on-chain. +- **Claim window.** Each epoch's fee rewards can be claimed until its window ends; unclaimed rewards then return to the DAO Treasury. The window is set on-chain when the epoch is published: PIP-68 sets 6 epochs (about six months) as the target, down from 12, and every epoch published so far carries 365 days. - **Fee share.** The percentage and the payout token are governance decisions that change between tokenomics versions; read the [PRL fee distribution page](/governance/parallel-governance-token-prl/tokenomics/fee-distribution) before relying on a number. ### How Parallel mitigates it From 22b99f1ccba72ed2fc4348f769134923e024f4fc Mon Sep 17 00:00:00 2001 From: Noah Boisserie <51783223+JeanBrasse@users.noreply.github.com> Date: Mon, 5 Oct 2026 06:56:27 +0400 Subject: [PATCH 6/6] docs(prl): tie the 28-day cooldown to Ethereum and Base The 28-day unstaking cooldown and its early-exit penalty apply to the open vaults on Ethereum and Base. On the sunset Polygon and Sonic sPRL1 deployments, unstaking takes one day, without penalty (PIP-68, and on-chain). - PRL factsheet: the Staking row gave 28 days for every chain, right after naming Polygon and Sonic; each duration is now tied to its chains. - Epoch concept, staking mechanisms, sPRL, fees, user guides, the staking guide and risks: the general "28-day cooldown" sentences now say "on Ethereum and Base", and give the one-day cooldown where they cover every chain. Co-Authored-By: Claude Opus 5.5 --- .../tokenomics/epoch-concept.mdx | 4 ++-- .../tokenomics/staking-mechanisms.mdx | 6 +++--- src/pages/governance/sprl.mdx | 4 ++-- src/pages/products/parallel-v3/fees.mdx | 2 +- src/pages/resources/factsheets/prl.mdx | 2 +- src/pages/resources/user-guides.mdx | 2 +- src/pages/resources/user-guides/stake-prl.mdx | 18 +++++++++--------- src/pages/security/risks.mdx | 6 +++--- 8 files changed, 22 insertions(+), 22 deletions(-) diff --git a/src/pages/governance/parallel-governance-token-prl/tokenomics/epoch-concept.mdx b/src/pages/governance/parallel-governance-token-prl/tokenomics/epoch-concept.mdx index 152ae41..17ed985 100644 --- a/src/pages/governance/parallel-governance-token-prl/tokenomics/epoch-concept.mdx +++ b/src/pages/governance/parallel-governance-token-prl/tokenomics/epoch-concept.mdx @@ -3,7 +3,7 @@ title: Epoch Concept description: >- An epoch is one calendar month in Parallel tokenomics, setting the ParaBoost calculation window and the fee sharing schedule. The sPRL unstaking cooldown - is a separate, fixed 28 days. + is a separate, fixed 28 days on Ethereum and Base. subtitle: Understanding the Epoch Concept --- @@ -14,5 +14,5 @@ The epoch is the central unit of time in the tokenomics. An epoch is one calenda On-chain, the `RewardMerkleDistributor` does not set the epoch length: its `EPOCH_LENGTH` constant of 28 days is only the shortest claim window it accepts for a published epoch. :::info -The cooldown applied when unstaking sPRL1 and sPRL2 is **not** one epoch. It is a separate, fixed period of 28 days, held per staking contract as `timeLockDuration` and changeable by governance within a 1 to 365 day range. See [Staking Mechanisms](/governance/parallel-governance-token-prl/tokenomics/staking-mechanisms). +The cooldown applied when unstaking sPRL1 and sPRL2 is **not** one epoch. It is a separate, fixed period of 28 days on Ethereum and Base (one day, without penalty, on the sunset Polygon and Sonic deployments), held per staking contract as `timeLockDuration` and changeable by governance within a 1 to 365 day range. See [Staking Mechanisms](/governance/parallel-governance-token-prl/tokenomics/staking-mechanisms). ::: diff --git a/src/pages/governance/parallel-governance-token-prl/tokenomics/staking-mechanisms.mdx b/src/pages/governance/parallel-governance-token-prl/tokenomics/staking-mechanisms.mdx index d29ebaf..9271201 100644 --- a/src/pages/governance/parallel-governance-token-prl/tokenomics/staking-mechanisms.mdx +++ b/src/pages/governance/parallel-governance-token-prl/tokenomics/staking-mechanisms.mdx @@ -3,7 +3,7 @@ title: Staking Mechanisms description: >- PRL can be staked two ways: sPRL1 for single-sided staking, and sPRL2 for the PRL/wETH 80/20 Balancer pool token. Both unstake against a 28-day - cooldown. + cooldown on Ethereum and Base. subtitle: Understanding Staking Mechanisms --- @@ -21,13 +21,13 @@ The PRL staking modules can be deployed on several blockchains at once.

Staking Mechanisms Summary

-It is possible for sPRL1 and sPRL2 to initiate unstaking at any time, against a cooldown period of 28 days. However, they are able to bypass the vesting period by paying a penalty fee, starting at 50% and decreasing linearly over time. The penalty fee is taken from the amount of sPRL1 or sPRL2 being unstaked and goes to the vault's fee receiver. On Ethereum, the sPRL1 vault sends it to the dead address `0x000000000000000000000000000000000000dEaD`, so it is burned; the other vaults send it to the Protocol & DAO Treasury multisig of their chain, listed on the [DAO Multisigs](/governance/dao-multisigs) page. +It is possible for sPRL1 and sPRL2 to initiate unstaking at any time, against a cooldown period of 28 days on Ethereum and Base (one day, without penalty, on the sunset Polygon and Sonic deployments). However, they are able to bypass the vesting period by paying a penalty fee, starting at 50% and decreasing linearly over time. The penalty fee is taken from the amount of sPRL1 or sPRL2 being unstaked and goes to the vault's fee receiver. On Ethereum, the sPRL1 vault sends it to the dead address `0x000000000000000000000000000000000000dEaD`, so it is burned; the other vaults send it to the Protocol & DAO Treasury multisig of their chain, listed on the [DAO Multisigs](/governance/dao-multisigs) page.

Penalty Fee Over Time

### sPRL1: Single PRL Staking -A basic single-sided staking for users who do not want to take an impermanent loss from tokens in liquidity pools. Each PRL staked as sPRL1 will count as x1 voting power, with a 28-day unstaking cooldown. +A basic single-sided staking for users who do not want to take an impermanent loss from tokens in liquidity pools. Each PRL staked as sPRL1 will count as x1 voting power, with a 28-day unstaking cooldown on Ethereum and Base. sPRL1 takes new stakes on: diff --git a/src/pages/governance/sprl.mdx b/src/pages/governance/sprl.mdx index 11d5097..ee0148c 100644 --- a/src/pages/governance/sprl.mdx +++ b/src/pages/governance/sprl.mdx @@ -16,13 +16,13 @@ sPRL1 & sPRL2 are represented in form of tokens and will be freely transferable,

Staking Mechanisms Summary

-It is possible for sPRL1 and sPRL2 to initiate unstaking at any time, against a cooldown period of 28 days. However, they are able to bypass the vesting period by paying a penalty fee, starting at 50% and decreasing linearly over time. The penalty fee is taken from the amount of sPRL1 or sPRL2 being unstaked and goes to the vault's fee receiver. On Ethereum, the sPRL1 vault sends it to the dead address `0x000000000000000000000000000000000000dEaD`, so it is burned; the other vaults send it to the Protocol & DAO Treasury multisig of their chain, listed on the [DAO Multisigs](/governance/dao-multisigs) page. +It is possible for sPRL1 and sPRL2 to initiate unstaking at any time, against a cooldown period of 28 days on Ethereum and Base (one day, without penalty, on the sunset Polygon and Sonic deployments). However, they are able to bypass the vesting period by paying a penalty fee, starting at 50% and decreasing linearly over time. The penalty fee is taken from the amount of sPRL1 or sPRL2 being unstaked and goes to the vault's fee receiver. On Ethereum, the sPRL1 vault sends it to the dead address `0x000000000000000000000000000000000000dEaD`, so it is burned; the other vaults send it to the Protocol & DAO Treasury multisig of their chain, listed on the [DAO Multisigs](/governance/dao-multisigs) page.

Penalty Fee Over Time

### sPRL1: Single PRL Staking -A basic single-sided staking for users who do not want to take an impermanent loss from tokens in liquidity pools. Each PRL staked as sPRL1 will count as x1 voting power, with a 28-day unstaking cooldown. +A basic single-sided staking for users who do not want to take an impermanent loss from tokens in liquidity pools. Each PRL staked as sPRL1 will count as x1 voting power, with a 28-day unstaking cooldown on Ethereum and Base. sPRL1 takes new stakes on: diff --git a/src/pages/products/parallel-v3/fees.mdx b/src/pages/products/parallel-v3/fees.mdx index dca3b63..a2cdc46 100644 --- a/src/pages/products/parallel-v3/fees.mdx +++ b/src/pages/products/parallel-v3/fees.mdx @@ -20,7 +20,7 @@ Parallel charges very little today, but none of its fees are hard-coded. Mint an | Bridge USDp | 0.00% protocol fee | You pay the LayerZero native gas fee on the source chain. Delivery takes around 10 minutes. | The LayerZero network (verifiers and executors), not Parallel | | Flashloan | 0.00% | Up to 100,000 per transaction on each chain. | Fee collector, when a fee is set | | sUSDp deposit or withdraw | None | ERC-4626 vault, no slippage, yield accrues from the first block. | Not applicable | -| PRL staking | No fee to stake, or to unstake after the cooldown | Skipping the 28-day cooldown costs a penalty that starts at 50% and decreases linearly. See [Staking Mechanisms](/governance/parallel-governance-token-prl/tokenomics/staking-mechanisms). | Penalty only: burned on Ethereum's sPRL1 vault, Protocol & DAO Treasury multisig on the other vaults | +| PRL staking | No fee to stake, or to unstake after the cooldown | Skipping the 28-day cooldown on Ethereum and Base costs a penalty that starts at 50% and decreases linearly. See [Staking Mechanisms](/governance/parallel-governance-token-prl/tokenomics/staking-mechanisms). | Penalty only: burned on Ethereum's sPRL1 vault, Protocol & DAO Treasury multisig on the other vaults | | x402 facilitator | No platform fee | Gas is sponsored on Base, HyperEVM and Avalanche only; Ethereum is supported but the agent pays its own gas. Agents pay in USDp, USDC or sUSDp, and funds settle straight to the merchant's wallet. See [x402 concepts](/agents/x402/concepts). | Not applicable | ## Minting and burning diff --git a/src/pages/resources/factsheets/prl.mdx b/src/pages/resources/factsheets/prl.mdx index be71a98..4a043c8 100644 --- a/src/pages/resources/factsheets/prl.mdx +++ b/src/pages/resources/factsheets/prl.mdx @@ -26,7 +26,7 @@ PRL is the governance token of the Parallel Protocol. It replaced MIMO, and stak | Decimals | 18 | | Canonical contract (Ethereum) | [0x6c0aeceeDc55c9d55d8B99216a670D85330941c3](https://etherscan.io/address/0x6c0aeceeDc55c9d55d8B99216a670D85330941c3) | | Chains | The token is on 6 chains: Ethereum, Base, Arbitrum, Optimism, Polygon and Sonic. The [PRL contract addresses](/developers-hub/contract-addresses/parallel-v3/prl) page also lists PRL tokenomics contracts on Avalanche and HyperEVM, and a deprecated migration contract on Fantom, none of which carry the token | -| Staking | sPRL1 (single-sided PRL) and sPRL2 (the 80/20 PRL/wETH Balancer pool token, held by the sPRL2 v2 vault). New stakes go to Ethereum or Base; sPRL1 on Polygon and Sonic is being sunset and can only be unstaked. Unstaking has a separate, fixed 28-day cooldown; leaving early costs a penalty that starts at 50% and decays linearly. See [Staking Mechanisms](/governance/parallel-governance-token-prl/tokenomics/staking-mechanisms) | +| Staking | sPRL1 (single-sided PRL) and sPRL2 (the 80/20 PRL/wETH Balancer pool token, held by the sPRL2 v2 vault). New stakes go to Ethereum or Base; sPRL1 on Polygon and Sonic is being sunset and can only be unstaked. Unstaking has a separate, fixed cooldown: 28 days on Ethereum and Base, where leaving early costs a penalty that starts at 50% and decays linearly, and one day, without penalty, on the sunset Polygon and Sonic deployments. See [Staking Mechanisms](/governance/parallel-governance-token-prl/tokenomics/staking-mechanisms) | | Epochs | One calendar month (28 to 31 days). Epochs set the ParaBoost window and the fee distribution schedule. See [Epoch Concept](/governance/parallel-governance-token-prl/tokenomics/epoch-concept) | | Fee share | sPRL1 and sPRL2 holders receive a share of protocol fees each epoch, weighted by ParaBoost, paid in USDp on Base. Each epoch's claim window is set on-chain when it is published: PIP-68 sets 6 epochs as the target, and every epoch published so far can be claimed for 365 days. Rewards from the epochs published before the move to Base are claimed in PAR on Polygon. See [Fee Distribution](/governance/parallel-governance-token-prl/tokenomics/fee-distribution) and [Fees](/products/parallel-v3/fees) | | Governance role | sPRL1 and sPRL2 carry voting power, weighted by the previous epoch's [ParaBoost](/governance/parallel-governance-token-prl/tokenomics/paraboost). See [sPRL and Voting Power](/governance/sprl) | diff --git a/src/pages/resources/user-guides.mdx b/src/pages/resources/user-guides.mdx index 22e3f59..292485f 100644 --- a/src/pages/resources/user-guides.mdx +++ b/src/pages/resources/user-guides.mdx @@ -34,7 +34,7 @@ Deposit USDp into the Savings Module and receive sUSDp, the liquid ERC-4626 shar Move USDp between its 24 chains, and PRL between its chains, one for one over LayerZero. Covers the DVN security set-up, the daily and global limits, the fees you pay, and how to track a delayed transfer. **[How to stake PRL](/resources/user-guides/stake-prl)** -Stake PRL as sPRL1 (single-sided) or sPRL2 (80/20 PRL/wETH Balancer pool) to earn a share of protocol fees and voting power. Covers monthly epochs, ParaBoost, claiming rewards, and the 28-day unstaking cooldown and early-exit penalty. +Stake PRL as sPRL1 (single-sided) or sPRL2 (80/20 PRL/wETH Balancer pool) to earn a share of protocol fees and voting power. Covers monthly epochs, ParaBoost, claiming rewards, and the 28-day unstaking cooldown on Ethereum and Base, with its early-exit penalty. ## Closed diff --git a/src/pages/resources/user-guides/stake-prl.mdx b/src/pages/resources/user-guides/stake-prl.mdx index f99b3b0..fde4426 100644 --- a/src/pages/resources/user-guides/stake-prl.mdx +++ b/src/pages/resources/user-guides/stake-prl.mdx @@ -1,6 +1,6 @@ --- title: How to stake PRL -description: Stake PRL as sPRL1 or sPRL2 in the Parallel app, step by step. How monthly epochs, ParaBoost, fee rewards, the 28-day unstaking cooldown and early-exit penalty work. +description: Stake PRL as sPRL1 or sPRL2 in the Parallel app, step by step. How monthly epochs, ParaBoost, fee rewards, the unstaking cooldown (28 days on Ethereum and Base) and early-exit penalty work. subtitle: Earn a share of protocol fees and voting power with sPRL1 or sPRL2 --- @@ -20,7 +20,7 @@ Staking PRL gives you two things: a share of the fees the protocol generates, an | ParaBoost weight | 1x on the dollar value staked | 2.5x on the dollar value staked | | Voting power | 1 PRL = 1 vote | Boosted, through the 2.5x ParaBoost weight | | Under the hood | PRL held in the sPRL1 contract | BPT held in the sPRL2 v2 vault | -| Unstaking | 28-day cooldown, or early exit with a penalty | 28-day cooldown, or early exit with a penalty | +| Unstaking | 28-day cooldown on Ethereum and Base, or early exit with a penalty | 28-day cooldown, or early exit with a penalty | | Best for | Holders who want governance rights without liquidity risk | Holders who want the maximum weight and are willing to provide PRL liquidity | Both sPRL1 and sPRL2 are transferable ERC-20 tokens. Transferring them resets the ParaBoost attached to them, so keep them in the wallet that staked. @@ -33,7 +33,7 @@ sPRL1 on Polygon PoS and Sonic is being sunset (PIP-68): the app shows a notice ## Epochs and ParaBoost -An **epoch** is one calendar month in the PRL tokenomics, so it runs 28 to 31 days depending on the month. It sets two things: the window over which ParaBoost is computed, and the schedule on which fees are shared with stakers. The unstaking cooldown is not an epoch; it is a separate, fixed 28 days. See the [epoch concept](/governance/parallel-governance-token-prl/tokenomics/epoch-concept). +An **epoch** is one calendar month in the PRL tokenomics, so it runs 28 to 31 days depending on the month. It sets two things: the window over which ParaBoost is computed, and the schedule on which fees are shared with stakers. The unstaking cooldown is not an epoch; it is a separate, fixed 28 days on Ethereum and Base. See the [epoch concept](/governance/parallel-governance-token-prl/tokenomics/epoch-concept). **ParaBoost** is the score that decides how much of the fee distribution you receive and how much voting power you hold. It is based on the dollar value of your sPRL1 and sPRL2, with sPRL2 counted 2.5 times, and it accumulates while you stay staked. At the end of each epoch a keeper (Cooper Labs) computes every staker's ParaBoost off-chain and publishes a Merkle root to the reward distributor contract, which is what you claim against. The current version is deliberately simple, and tokenomics v2.1 (PIP-68) kept the same rules. Read [ParaBoost](/governance/parallel-governance-token-prl/tokenomics/paraboost) for the design. @@ -93,13 +93,13 @@ Positions and rewards from before Tokenomics v2.1 have their own page in the app Unstaking is a two-step process for both sPRL1 and sPRL2: -1. **Start the cooldown.** On the Stake page, click **Unstake**, enter the amount and confirm. This opens a fixed 28-day cooldown. During the cooldown the tokens stay locked and your ParaBoost is reset. +1. **Start the cooldown.** On the Stake page, click **Unstake**, enter the amount and confirm. This opens a fixed 28-day cooldown on Ethereum and Base, or a one-day cooldown on the sunset Polygon and Sonic deployments. During the cooldown the tokens stay locked and your ParaBoost is reset. 2. **Withdraw.** Once the cooldown has matured, come back to the Stake page and withdraw. You receive PRL (sPRL1) or BPT (sPRL2). -**Early exit.** You can skip the remaining cooldown by paying a penalty taken from the amount you unstake. The penalty starts at 50% and decreases linearly as the cooldown progresses. On Ethereum's sPRL1 vault it is burned; on the other vaults it goes to the Protocol & DAO Treasury multisig. The app shows the exact penalty before you confirm, and the MCP server flags it as `EARLY_UNSTAKE_PENALTY`. +**Early exit.** On Ethereum and Base, you can skip the remaining cooldown by paying a penalty taken from the amount you unstake. The penalty starts at 50% and decreases linearly as the cooldown progresses. On Ethereum's sPRL1 vault it is burned; on the other vaults it goes to the Protocol & DAO Treasury multisig. The app shows the exact penalty before you confirm, and the MCP server flags it as `EARLY_UNSTAKE_PENALTY`. :::warning -An early exit right after you start the cooldown costs up to half of your stake. Unless you need the tokens now, let the cooldown run its 28 days. +On Ethereum and Base, an early exit right after you start the cooldown costs up to half of your stake. Unless you need the tokens now, let the cooldown run its 28 days. ::: ## Voting power and delegation @@ -117,11 +117,11 @@ Stake before a vote's snapshot is taken. PRL that is not staked at the snapshot