Repository navigation
docs(prl): sPRL2 v2, staking per chain, rewards on Base, MCP 1.4 and the end of the MIMO migration - #34
Merged
Conversation
…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 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
- 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 <noreply@anthropic.com>
…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 <noreply@anthropic.com>
- 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 <noreply@anthropic.com>
- 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 <noreply@anthropic.com>
This was referenced Oct 4, 2026
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Brings the PRL, staking, MCP server and protocol-fact pages up to date with Parallel's latest releases. The x402 pages are left to #33, and the four files of #32 are not touched.
Every fact below was checked on 2 October 2026 against the governance record, the chain (read-only calls through public RPCs), the public
parallel-tokenomicsrepository, the published npm packages and the app's staking pages. The hosted MCP server was only asked for its version and tool list (initialize,tools/list): no tool was called, and the facilitator was not called.Staking: sPRL2 v2, chains, sunset
What changed in the protocol. PIP-68 (Tokenomics v2.1, adopted 20 May 2026) replaced the first sPRL2 vault, which staked the pool token on Aura, with an sPRL2 v2 vault that holds the 80PRL/20WETH Balancer V3 pool token itself, on Ethereum and Base. It also sunset sPRL1 on Polygon PoS and Sonic, and moved the stakers' distribution from PAR on Polygon to USDp on Base.
Read on-chain on 2 October 2026:
symbol()paused()timeLockDuration()startPenaltyPercentage()feeReceiver()0xeAd7…59010x…dEaD0x01fA…2E480xC520…2C950xDB7B…94750x2046…c32a0x7Df7…28110xC520…2C950xE8A2…21350x25Fc…6F9b0xa13B…7A4B0x25Fc…6F9b0xB22f…0e240xC520…2C95The two v2 vaults take the Balancer V3 pools
0x1846…ce7c(Ethereum) and0x19e3…0bb5(Base) asunderlying(), the same pools@parallel-protocol/chains0.5.0 lists inBPT_POOL_IDS. The Polygon and Sonic contracts are not paused: the sunset is enforced by the app, which shows "You can no longer stake PRL here, but you can still unstake and withdraw your existing position", and by the MCP server (CHAIN_SUNSET), so the pages say "no new stakes", not "paused". The 28-day cooldown of the active vaults is unchanged.Where the early-exit penalty goes. Each vault sends it to its
feeReceiver(). On Ethereum, the sPRL1 vault, which holds 93.6 million sPRL1 (about 90% of all sPRL1), sends it to the dead address0x000000000000000000000000000000000000dEaD, so it is burned, in PRL. The six other vaults send it to the "Protocol & DAO Treasury" multisig of their chain, as listed on the DAO Multisigs page (0x25Fc…6F9bon Ethereum,0xC520…2C95on Base and Sonic,0x2046…c32aon Polygon). Eight passages on six pages said the penalty always went to the DAO Treasury; they now say what the chain does, and will follow if a fee receiver changes.The paused v1 vault and Aura, read on 2 October 2026 (Ethereum block 26,104,115):
0x486B…9da4, of which it is the only depositor, and sit in Aura's Booster0xA57b…B234.isShutdown() = true, pool 258 reportsshutdown = true, and the Balancer gauge holds no BPT.eth_callofemergencyWithdraw, the callsPRL2Migrator.migratemakes, succeeds for an address given 1,000 v1 sPRL2 by a state override, and reverts without it.Pages:
governance/.../tokenomics/staking-mechanisms.mdx,governance/sprl.mdx(near-identical text, both updated): sPRL1 takes new stakes on Ethereum and Base; Polygon and Sonic are being sunset, unstake and withdraw only, with a one-day cooldown and no penalty; sPRL2 v2 on Ethereum and Base, without Aura; the paused v1 vault moves to v2 through thesPRL2Migrator, with one migration call after an approval, which the app does on its Stake Legacy page; the penalty's destination, as above.sprl.mdxalso gets the missing link of "follow this guide".resources/user-guides/stake-prl.mdx, matched against the app's Stake and Stake Legacy pages:claim_rewardstool builds the Base claim plus the Polygon one in one call;resources/factsheets/prl.mdx: Staking, Fee share and Migration rows, the distributor on Base, the claim window, and the MCP line (the "live on 5 chains" figure did not match any count of the server).security/risks.mdx, section 7, its FAQ entry and line 87 only, away from the hunks of docs(x402): the settle token, one settlement per payment, metered payments, x402-fetch 0.3.0, x402 0.8.1 and CLI 0.4.1 #33: the sPRL2 exposure describes the v2 vault, and adds that sPRL2 left in the paused v1 vault keeps its BPT deposited in Aura, which has shut down its pool, until it is migrated or withdrawn; the claim window (see below); the penalty's destination; the audit list adds sPRL2 v2.products/parallel-v3/fees.mdx: the "PRL staking" row named the DAO Treasury as the penalty's destination; it now gives both destinations.src/data/prl-addresses.ts: labels only. BasesPRL2becomessPRL2 (v2), Polygon and SonicsPRL1 (sunset, unstake only), the PolygonRewardMerkleDistributor (PAR, legacy epochs), since its epochs are still claimable. No address changed; the chain count of the markdown exports does not depend on these names.Sources: PIP-68 on Snapshot (
parallel-protocol.eth, proposal0x5320768e…); the chain reads above;parallel-tokenomicsonmain(sPRL2.sol) anddev(sPRL2V2.sol,sPRL2Migrator.sol);@parallel-protocol/chains0.5.0 on npm (SPRL2_CHAIN_ADDRESSES,SPRL1_CHAIN_ADDRESSES,BPT_POOL_IDS); the app at app.parallel.best, its Stake and Stake Legacy pages.Rewards and fee shares
Read on-chain on 2 October 2026:
RewardMerkleDistributoron Base0x13E8…A96B:TOKEN()is USDp; one epoch published, claimable from 5 September 2026 to 5 September 2027 (365 days). Re-read on 4 October 2026: epoch 2, starting 4 October 2026, also carries 365 days.RewardMerkleDistributoron Polygon0x7b54…0C72:TOKEN()is PAR; 14 epochs published from June 2025 to July 2026, each claimable for 365 days (epochs 1 to 5 have expired).expiredRewardsRecipientis the Protocol & DAO Treasury multisig (0xC520…2C95on Base,0x2046…c32aon Polygon).The claim window. PIP-68 (section V) reduces it from 12 epochs to 6. On-chain, the keeper sets each epoch's window when it publishes the epoch (
expiryTime), and every epoch published so far carries 365 days; both deployed distributors refuse to change an epoch once it has started (EpochCantBeUpdated), so those windows hold. The pages give both facts without a date, so they stay true as epochs are published: each window is set on-chain when the epoch is published, PIP-68 sets 6 epochs as the target, every epoch published so far carries 365 days, and claiming within six epochs is safe. The five pages that still said "12 epochs" are fixed: both fee-distribution pages, the PRL factsheet, the staking guide (rewards and FAQ) and the risks page.Pages:
governance/.../tokenomics/fee-distribution.mdx: rewritten after PIP-68. The stakers' share, 15% of Parallel V2 revenue, goes through the DAO Keeper Multisig, is swapped to USDp, bridged to Base and distributed there; the PAR epochs stay claimable on Polygon until their window ends. The claim window, as above. An info block says that an epoch can distribute nothing, since PGP-42 (adopted 18 May 2026) redirected the stakers' share to PRL buybacks and burns for three months.products/.../usdp-and-susdp/fee-distribution.mdx: the stakers' share section no longer calls the 15% "indicative". It is 15% of Parallel V2 revenue (PIP-68, PGP-42), and the fees of the USDp codebase follow the 90% / 10% split, which is unchanged everywhere. The claim window, as above. The treasury section says that the 10% share funds the DAO Treasury, and only where the early-unstake penalties go: to the Protocol & DAO Treasury multisig of their chain, except on Ethereum's sPRL1 vault, where they are burned.governance/.../tokenomics/paraboost.mdx: v2.1 shipped and kept the same ParaBoost rules, so the page no longer announces a fuller ParaBoost "with v2.1".governance/.../tokenomics/epoch-concept.mdx:EPOCH_LENGTH(28 days) is only used to refuse a merkle drop whose claim window is shorter than 28 days (updateMerkleDrop). It does not bound the time between two epochs, as docs(prl): correct the epoch length, the unstaking cooldown and the chain count #28 wrote. The calendar-month epoch and the 28-day cooldown are unchanged.Fees, checked across the site: the 90% / 10% savings fee share and the 0.10% yield-bearing burn fee read the same on every page; no 0.05% burn fee and no 70% savings share remain.
MCP server 1.4 and CLI 0.4
Pages:
agents/mcp/tools.mdx:readOnlyHint: trueon reads,falseon transaction builders, none destructive);get_protocol_parametersanswers JSON, withsavingsFeeShare;get_savings_ratehasfeeShare,nullwhen the on-chain read fails;stakeon Ethereum or Base,unstakeon the chain of the position,CHAIN_SUNSETandSTAKING_SUNSETon Polygon and Sonic;claim_rewardsclaims on Base, plus Polygon for the legacy epochs;get_staking_infoshows the v1 balance left to migrate, andsprl2.auraRewardsis no longer listed;aprNotecomes with every staking APR;prepare_convert_and_payonly targets collaterals that support EIP-3009.agents/mcp/transactions.mdx: theSTAKING_SUNSETwarning.agents/cli/commands.mdx, staking section only:--chainonstakeandunstake, the BPT and PRL + WETH paths,claimon Base plus Polygon. Thepaysection and the error table are left to docs(x402): the settle token, one settlement per payment, metered payments, x402-fetch 0.3.0, x402 0.8.1 and CLI 0.4.1 #33.resources/factsheets/usdp.mdx,resources/factsheets/susdp.mdx: the MCP line drops "live on 5 chains", like the PRL factsheet, and the sUSDp one adds withdrawals, whichwithdraw_savingsbuilds.The tool count stays 36: the hosted server, version 1.4.1, lists 36 tools, each with annotations (25
readOnlyHint: true, 11false, none destructive).Sources: the hosted MCP server at
mcp.parallel.best, version 1.4.1 (itstools/list: names, descriptions, annotations); the README of@parallel-protocol/cli0.4.1 on npm (staking per chain,--weth-amount, claims on Base plus Polygon).MIMO to PRL: the migration ended on 15 April 2026
The docs said the migration closed on 1 August 2026 under PIP-61. Two votes were involved. PIP-61, adopted in January 2026, set the end at 1 August 2026. PIP-65, adopted on 1 April 2026, brought it forward to 15 April 2026. The
PrincipalMigrationContracton Ethereum emittedPausedon 15 April 2026 at 13:15:59 UTC (block 24,885,452, tx0x783e8199…eb84), and it holds no PRL today. The app no longer has a Migrate page:/migrateanswers 404.Pages:
governance/.../mimo-to-prl-migration.mdx: both votes, the closing date, and the app's Migrate page removed. The blog guide stays linked for reference, with the warning that it describes the removed page and the earlier date.resources/user-guides.mdxandsrc/sidebar.generated.ts: the user guides no longer list the blog how-to, which tells readers to click "Migrate" in the app. The "Closed" entry points at the history page instead. The sidebar was edited by hand;pnpm generate:sidebarwas not run.resources/factsheets/prl.mdx,products/parallel-v3/index.mdx: the date.developers-hub/parallel-governance-token-prl/index.mdx: a note that the migration contracts are described for reference.Sources: PIP-61 (
0xd2490b4a…) and PIP-65 (0x448ddbf9…) on Snapshot; thePausedlog andbalanceOfon Ethereum; app.parallel.best/migrate.Developer pages
developers-hub/.../tokenomics/contracts.mdx:depositBPT,withdrawBPT(_requestIds, _maxAcceptablePenalty),withdrawPRLAndWeth(…, _maxPenaltyPercentage));withdrawtakes_maxAcceptablePenalty;sPRL2V2andsPRL2Migrator;claims(...), notclaim(...), and it now pays out on Base;contracts/fees/SideChainFeeCollector.sol, the file that exists; the old link,SideChainFeeDistributor.sol, answered 404. The page notes the contract's name in the code.developers-hub/.../tokenomics/key-operations-flows.mdx: the sPRL2 flows follow the v2 vault (no Aura step), plus a v1-to-v2 migration flow. The sPRL1 penalty is sent to the fee receiver in PRL; it was described as minting sPRL1.developers-hub/.../tokenomics/index.mdx: the overview.Sources:
parallel-tokenomicsmain(deployed sPRL1, sPRL2 v1,RewardMerkleDistributor,SideChainFeeCollector) anddev(sPRL2V2, migrator, theTimeLockPenaltyERC20withrecoverERC20); the function selectors, found in the deployed bytecode.Contract tables: no explorer link on Fantom
ftmscan.comno longer resolves, so every Fantom row of the contract tables linked to a dead domain. Other explorers were tried on the two Fantom addresses of the PRL page, which both hold contract code on Fantom: the official Fantom explorer shows no transaction for the AccessManager, OKLink and OKX find no record of the migration contract, Routescan shows another chain's contract at the same address, and DexGuru answers a bot check. None shows both reliably, soEXPLORERS.fantomis nownull(src/lib/chains.ts) andContractTablerenders the address and its copy button without a link when a chain has no explorer. This applies to the Fantom tables of the PRL, PAR and deprecated MIMO address pages. Two tests cover it. The DAO Multisigs, DAO Treasury and PAR product pages wrote their Fantom links by hand; they now show the same addresses without a link.Audits
security/audits.mdxadds the Bail Security sPRL2V2 final report (June 2026). PIP-68 committed to publishing it in the documentation. The link points atparallel-tokenomicsdev, the only branch that holds it, and answers 200, like the two contract links.Verification (head
ce99382)The last commit removes the date from the claim-window sentences and fixes the PAR addresses page's description, which promised an explorer link on Fantom. At
ce99382: offline build passes (333 files, 163 pages, sitemap 159 URLs), 350 tests pass, typecheck passes, and the six changed pages have no broken link or anchor; merges in memory with #32 (7d2f299) and #33 (33e04cf) have no conflict. The checks below were run at54028d6.pnpm build, offline (network blocked): passes, 333 files, 163 pages, sitemap 159 URLs. The share cards are not regenerated offline, since their display font is downloaded; the pages keep the static card.pnpm test, offline: 350 passed (32 files), including the two tests for the Fantom tables.pnpm typecheck: passes.pnpm lint: 89 errors and 1 warning, unchanged from the previous heads. Biome does not check MDX; the TypeScript files this PR changes add no finding (chains.test.tskeeps its format error frommain)./products/parallel-v2(see "Not changed").parallel.bestdomains were not requested. Of the other 221, 207 answer 200, two of them on a one-at-a-time retry after a rate limit. The rest predate this PR: Arbiscan, Optimism's Etherscan, BscScan, Berascan and PolygonScan answer 403 to scripts (11 links), beets.fi and LayerZero Scan 429, and seitrace.com, the Sei explorer, 521, its server being down at the time.ftmscan.comlink remains, and the only contract tables without an explorer link are the Fantom ones of the PRL, PAR and deprecated MIMO address pages.git merge-tree) with docs(x402): the settle token, one settlement per payment, metered payments, x402-fetch 0.3.0, x402 0.8.1 and CLI 0.4.1 #33 (60e0b2b) and docs(x402): settle token, settle failure reasons and the new error codes (BAC-381) #32 (5a5196a): no conflict.Round: the cooldown per chain (
22b99f1)mainmoved (#36 and #37 merged,f2ee2d7), so it is merged into the branch (22d14a8, no conflict). Then one commit ties each cooldown to its chains: 28 days, with the early-exit penalty, on Ethereum and Base; one day, without penalty, on the sunset Polygon and Sonic sPRL1 deployments (PIP-68, and the vaults'timeLockDurationandstartPenaltyPercentageabove).resources/factsheets/prl.mdx, the Staking row: it named Polygon and Sonic, then gave a 28-day cooldown and a 50% penalty for all. It now reads: "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."epoch-concept,staking-mechanismsandsprl(with the one-day cooldown in brackets),fees,user-guides,stake-prl(description, table, steps, early exit, FAQ) andrisks(table, early-unstake penalty, FAQ).Checks at
22b99f1:pnpm build, offline: passes, 333 files, 163 pages, sitemap 159 URLs.pnpm test: 350 passed (32 files).pnpm typecheck: passes./products/parallel-v2.src/,scripts/andpublic/, and of the builtllms-full.txt: every sentence that gives 28 days and names Polygon or Sonic gives them one day; every other "28-day cooldown" says "on Ethereum and Base", or is about sPRL2.main(f2ee2d7), docs(x402): settle token, settle failure reasons and the new error codes (BAC-381) #32 (7d2f299), docs(x402): the settle token, one settlement per payment, metered payments, x402-fetch 0.3.0, x402 0.8.1 and CLI 0.4.1 #33 (8774ba3) and docs: name the 24 USDp chains, and say USDp is not on Fantom or Mantle #35 (c693ab5): no conflict.pnpm generate:sidebarwas not run.Not changed
getCollateralBurnFees, 2 October); sfrxUSD reads 0.10%. The pages keep 0.10% on all five legs, as merged in docs(fees): set the yield-bearing burn fee to 0.10% #29.lh7-rt.googleusercontent.com(5 pages) are refused by browsers and by plain requests. The problem predates this PR, and the figures are left as they are./products/parallel-v2links PAR and paUSD to two old docs URLs,/parallel-protocol/parallel-v2/parand/par-1, which answer 404.🤖 Generated with Claude Code