Audited by Pashov Audit Group.

A time-boxed security review of every PARE contract, 7 to 10 September 2026, by eight researchers from Pashov Audit Group. Every finding was answered, fixed where a fix was warranted, and re-reviewed by the auditors before this report was issued. The full report is below, unedited. Two further reviews followed: the pool helper (23 to 24 September) in section 06, and the contracts behind the dollar markets (1 to 4 October) in section 07, each with its own report.

Read the full report (PDF)Dollar markets report (PDF)See the accountants live

01Summary

Critical
0
none found
High
0
none found
Medium
6
6 fixed
Low
11
11 fixed
Informational
24
18 fixed · 6 acknowledged

41 findings in total. Every medium and low severity finding was fixed and the fix was reviewed by Pashov. Six informational findings were acknowledged with a written reason, reproduced in the report and summarised in section 04 below. No finding was disputed.

02Scope

AuditorPashov Audit Group
Review window7 – 10 September 2026
In scopeevery contract under src/: StripVault, MultiplierAccountant, PareMorphoOracle, principal and yield tokens, deployment factory
Reviewed commit2e780ae78beba72b8342ee9ef590ce420cb4356f
Fixes reviewed at3dfa4a421d5d9d1fc2849f1847619e3b7dbf2ddb
Researchers0x37, 0xApple, 0xbrivan, Auditor-Nate, farismaulana, LoopGhost, Playboi, Valves Security

The review repository is a private mirror shared with the auditors, so the commit links inside the PDF are not public. The source of every deployed contract is verified on Blockscout, and the audited build is identified by the commit hash above.

03What happens next

NOW

The contracts live on mainnet today are the reviewed build. Four series have run on them since launch. Merge is permissionless and always open on every vault, before and after maturity.

NEXT

The fixed build goes live. New vaults, accountants and oracle at the fixes commit, verified on chain. Addresses are swapped in on every page of this site and published on the oracle page, and existing positions can merge out of the old vaults at any time.

THEN

Lending opens and the series cap comes off. The Morpho market is treasury-only until the fixed oracle is deployed. Deeper pools and new series follow.

04Acknowledged findings

Six informational findings were acknowledged rather than changed. The auditors' reasoning and ours are in the report; the short version of each is here.

I-04 · I-06 · I-12 — feed freshness during trading hours

The Morpho oracle accepts a Chainlink stock price up to four days old so that weekends and market holidays do not freeze the market. That single window is wider than the feed's heartbeat during trading hours, so a feed that halts mid-session would not be caught by the age check alone. There is no second stock price feed or market-status feed on Robinhood Chain to corroborate against today. Mitigated by the 62.5% LLTV buffer and documented as an operational risk. A liveness check is planned for a follow-up review once a corroborating feed exists on the chain.

I-09 — split ratio tolerance

A residual inside the split tolerance (one millionth of the ratio) is attributed to the split, not to yield. The smallest real dividend on a covered stock is about a thousand times larger than the tolerance, so a genuine split combined with a real dividend cannot pass the clean-ratio check and goes to guardian decomposition instead. Kept as designed and documented.

I-15 · I-20 — rounding at the eighteenth decimal

Both redemption legs round down independently, which can strand one raw unit (10⁻¹⁸ of a stock token) per matched redemption, and each dividend classification floors once, drifting the index by a few units at the same scale over a series' life. Both round in the vault's favour so it can never owe more than it holds. Kept; the alternatives add arithmetic to the core index for an attowei-level gain.

05All 41 findings

IDFindingSeverityStatus
M-01Two `unsynced` multiplier applies are recorded as one non-collapsed composite stamped at the LAST action's `effectiveAt`, same YT wipe, a distinct root causeMEDIUMFIXED
M-02USD-denominated feed is used as loan-token value without a loan-token/USD conversionMEDIUMFIXED
M-03Guardian resolution commitment can be reused after pending endpoints cycleMEDIUMFIXED
M-04Collapsed multiplier changes reuse the first update timestamp for all decomposed actionsMEDIUMFIXED
M-05Manipulable Uniswap V3 TWAP can force premature PT liquidationsMEDIUMFIXED
M-06Settled PT oracle lacks a redemption-value floorMEDIUMFIXED
L-01Holiday holds cross the immutable 4-day staleness gate because the feed stops printing hours before every close, freezing every Morpho market this oracle prices through the reopenLOWFIXED
L-02Magnitude-only dividend classification force-tags value-neutral in-band multiplier changes, permanently shifting PT principal to YT holdersLOWFIXED
L-03Oracle accepts a feed during the L2 sequencer recovery windowLOWFIXED
L-04Oracle resumes PT valuation before the post-dividend TWAP reflects the PT repricingLOWFIXED
L-05Oracle scaling is incorrect when stock and PT base-unit decimals differLOWFIXED
L-06Pending guardian resolution becomes stale when sync collapses a later multiplier updateLOWFIXED
L-07Pending multiplier endpoint equality hides intermediate updatesLOWFIXED
L-08Per-call fee truncation permits fee-free micro-splits and YT redemptionsLOWFIXED
L-09Per-call split-fee rounding permits fee-free fragmented depositsLOWFIXED
L-10Per-call YT fee rounding allows yield-fee avoidance through fragmented redemptionsLOWFIXED
L-11YT redemption fee can be bypassed through fragmented redemptionsLOWFIXED
I-01Multiplier processing can become unavailable because deployment accepts a zero administratorINFOFIXED
I-02Fees remain trapped and the deposit cap can be exceeded because the vault accepts itself as treasuryINFOFIXED
I-03Guardian recovery can be delayed because malformed proposals overwrite valid resolutionsINFOFIXED
I-04Timestamp freshness accepts economically stale feed answersINFOACKNOWLEDGED
I-05Immutable feed-decimal snapshot becomes stale after same-address feed migrationINFOFIXED
I-06Chainlink feed can remain stale while the onchain stock market remains activeINFOACKNOWLEDGED
I-07Accountant sync can clear while the Robinhood price feed remains deliberately pausedINFOFIXED
I-08The oracle can bypass the PT vault's synchronization gate because its accountant is independently configuredINFOFIXED
I-09Split tolerance can absorb a real dividend without crediting YTINFOACKNOWLEDGED
I-10Shape-only split classification routes value-additive clean-ratio events entirely into splitFactor, zeroing the YT drip at settlementINFOFIXED
I-11Immediate Multiplier Updates Can Be Missed at the Maturity BoundaryINFOFIXED
I-12Four-Day Feed Freshness Window Accepts Stale Prices During Active TradingINFOACKNOWLEDGED
I-13accruedDripFactor exposes unsynchronized live index instead of a settlement-compatible valueINFOFIXED
I-14Disabled feed-age validation accepts unfinished Chainlink roundsINFOFIXED
I-15Independent PT and YT redemption rounding strands matched-position dustINFOACKNOWLEDGED
I-16No recovery path for residual stock after all PT and YT liabilities are extinguishedINFOFIXED
I-17Oracle Constructor Does Not Validate That the Pool Contains the Accountant's Stock TokenINFOFIXED
I-18Oracle does not unconditionally reject incomplete Chainlink roundsINFOFIXED
I-19Post-maturity accountant changes can block settlement of an otherwise mature vaultINFOFIXED
I-20Repeated dividend classification introduces cumulative downward index rounding driftINFOACKNOWLEDGED
I-21Split classification stores the rounded observed ratio instead of the validated clean ratioINFOFIXED
I-22Unsettled accruedDripFactor includes dividends occurring after maturityINFOFIXED
I-23Untracked token donations can permanently exhaust StripVault deposit capacityINFOFIXED
I-24Zero guardian delay removes the configured resolution reaction windowINFOFIXED

Titles as written by the auditors. Each finding in the PDF carries a summary, impact, exploit path where applicable, the recommendation and our resolution.

06Pool helper review

A second review, 23 to 24 September 2026, of the pool helper contract (DividendLP): it splits stock and places the pToken in the pool with USDG in one transaction. Eight findings, none critical, high or medium. All eight were fixed and the fixes re-reviewed by the auditors.

Read the pool helper report (PDF)
Critical
0
none found
High
0
none found
Medium
0
none found
Low
2
2 fixed
Informational
6
6 fixed
Review window23 – 24 September 2026
In scopesrc/periphery/: DividendLP
Reviewed commitf14bb7164ccc24d20a3efa5e557f300e0e79af90
Fixes reviewed at51542756b56a29b0111e5d72884cc6ef5042bd4d
Live contract0x7b2c60384Ce0BF33fAF6e0883DcfaBb84c61bF47, the fixed build, verified
Researchers0x37, 0xApple, Auditor-Nate, Digital Forensic, farismaulana, Mladenov, Playboi, Valves Security
IDFindingSeverityStatus
L-01Caller-selected vault can retain stock spending authorityLOWFIXED
L-02Caller-supplied vault can redirect stock refunds to an arbitrary tokenLOWFIXED
I-01DividendLP mints pToken liquidity positions against arbitrary tokens instead of the intended USDGINFOFIXED
I-02YT holders lose accrued yield because a classifier can stamp one dividend after maturityINFOFIXED
I-03PT claims can exceed backing because guardian reattribution can decrease the dividend indexINFOFIXED
I-04YT holders lose pre-maturity dividends because stale split classification falsely advances finalityINFOFIXED
I-05PT holders lose pre-series value because new vaults snapshot a pre-fold indexINFOFIXED
I-06Zero-liquidity ternary selection bypasses withdrawal minima and burns the position NFTINFOFIXED

I-02 to I-05 were raised against the core accountant and vault during this review. They are fixed in the code for the next series; the series live today run on the earlier build, from before these four fixes. The pool helper fixes are live at the address above.

07Dollar markets review

A third review, 1 to 4 October 2026, of the contracts behind the dollar markets: the yield vault that splits sUSDx into pUSDx and yUSDx, the pool hook, the PT oracle, the rate adapters, the factory and the periphery. 35 findings, none critical or high. All four medium findings were fixed, six of the seven low findings were fixed and one was acknowledged with a written reason, and all 24 informational findings were fixed. Every fix was re-reviewed by the auditors before the report was issued.

Read the dollar markets report (PDF)See the dollar markets
Critical
0
none found
High
0
none found
Medium
4
4 fixed
Low
7
6 fixed · 1 acknowledged
Informational
24
24 fixed
Review window1 – 4 October 2026
In scopesrc/yield/: YieldVault, YieldToken, YieldFactory, YieldPeriphery, PtPoolHook, PtLinearOracle, ChainlinkRateAdapter, ERC4626RateAdapter
Reviewed commit4b838e61eaaf85e0ed137aa815b5b7a1a7c4e5f0
Fixes reviewed at2b6c9c34bece9f2e7911fee423877ef1f43bccbb
Live contractsEthereum, deployed 10 October 2026 from the fixed build: factory 0x24f4…412f, pUSDx-MAR27 vault 0xFB0c…a25c
Researchers0x37, 0xApple, Afriauditor, Drynooo, Hala, Said, TheWeb3Mechanic, VictoryGod

The one acknowledged finding, L-06: after maturity, a rate outage could hand a redeemer yield that had not yet been allocated. The keeper refreshes the index daily on every dollar vault after maturity, and that call is permissionless, so the fallback is never more than about a day old. The auditors' reasoning and ours are in the report. The review ran on a private mirror, so the commit hashes above are the mirror's; the contracts live on Ethereum were compiled from the fixed build, and each fix is a commit in that history that names its finding.

IDFindingSeverityStatus
M-01Any sUSDx holder can temporarily inflate the share rate with requestRedeem cancelRedeemRequest; YieldVault's high-water-mark index pays YT holders on the inflated rate and PT holders absorb the lossMEDIUMFIXED
M-02YT interest accrued to the Uniswap v4 PoolManager is stealable by anyone, through permissionless claimInterestMEDIUMFIXED
M-03The oracle caps one leg of a ratio and not the other, so a correlated stablecoin premium marks PT down and liquidates a healthy borrowerMEDIUMFIXED
M-04skim protects the backing share by address only, so a share reachable through a second address can be swept to the treasury by anyoneMEDIUMFIXED
L-01Exact-output swaps can revert when the protocol fee is taken before input settlementLOWFIXED
L-02Intermediate rounding permanently discards accrued YT interestLOWFIXED
L-03Legacy Chainlink lagging rounds are accepted without answeredInRound validationLOWFIXED
L-04previewSplit does not reflect a supply-cap-closed vaultLOWFIXED
L-05Protocol fee share is lost when total fee rounds to one pipLOWFIXED
L-06Rate outage causes matured PT redemptions to transfer unallocated post-maturity yieldLOWACKNOWLEDGED
L-07Zero-value YT transfers can permanently discard truncated interestLOWFIXED
I-01Contracts compiled for Cancun cannot be deployed on chains without its opcodesINFOFIXED
I-02The hook's mid-swap take() makes a pay-first router charge the user the protocol fee twice on exact-out swapsINFOFIXED
I-03Gas burning rate adapter failure freezes pre maturity merge for every holderINFOFIXED
I-04split() makes two independent adapter.rate() callsINFOFIXED
I-05ERC-4626 Empty-State Rate Reset Can Permanently Block New SplitsINFOFIXED
I-06Chainlink adapter accepts future-dated observationsINFOFIXED
I-07claimFees does not settle the vault on the first post-maturity interactionINFOFIXED
I-08Downward rounding can permanently strand coarse-decimal depositsINFOFIXED
I-09ERC-4626 rate sampling truncates sub-base-unit share appreciationINFOFIXED
I-10Extremely small backing ratios round to a zero PT oracle priceINFOFIXED
I-11Immutable Chainlink decimal scaling becomes stale after feed decimal changesINFOFIXED
I-12Loan and peg feed decimal migrations can mis-scale the PT oracleINFOFIXED
I-13Long-dated PT oracle configurations cause an extended price outageINFOFIXED
I-14Missing L2 sequencer status and recovery grace period in Chainlink pricingINFOFIXED
I-15Per-call merge rounding can strand backing sharesINFOFIXED
I-16Per-holder interest-fee rounding allows fee evasion by splitting YTINFOFIXED
I-17Per-redemption rounding can strand post-maturity yield outside treasury accountingINFOFIXED
I-18Permissionless pool initialization permits hostile initial PT pricesINFOFIXED
I-19PT oracle accepts feed observations dated in the futureINFOFIXED
I-20Settlement can lock a lagging observation before maturity yield is publishedINFOFIXED
I-21skim does not settle the vault on the first post-maturity interactionINFOFIXED
I-22Skimming vault-held YT strands interest booked to the vault addressINFOFIXED
I-23Stale transfer checkpoints reassign outage-period YT yield to buyersINFOFIXED
I-24Temporary rate outage at maturity permanently misallocates intervening yieldINFOFIXED