PSM Parameters¶
This page lists all configurable parameters and deployed addresses for the RAAC Peg Stability Module with their current mainnet values.
📖 View PSM Vault Documentation
Navigation¶
- Tokens — base asset, savings token, share token
- Deployed Contracts — proxy, implementation, RateProvider
- RateProvider — oracle wiring
- Vault Economics — fees, drip, cooldown, floors
- Roles — access-control assignments
Tokens¶
| Parameter | Value |
|---|---|
Base Asset (pmUSD) |
0xC0c17dD08263C16f6b64E772fB9B723Bf1344DdF |
Savings Token (sUSDS) |
0xa3931d71877C0E7a3148CB7Eb4463524FEc27fbD |
Share Name |
RAAC Peg Stability Module sUSDS |
Share Symbol |
rpsm-sUSDS |
Share Decimals |
18 |
Deposit / swap surface
deposit() accepts sUSDS only. Arbitrageurs enter pmUSD exclusively via swap(pmUSD → sUSDS). There is no mint() path.
Deployed Contracts¶
Mainnet¶
| Contract | Address |
|---|---|
PSMVault (Proxy) |
0xB2102B4d8802648EC6A9e89ACD46b4B799833469 |
PSMVault (Implementation) |
0x8819dCd779E3a44052A40f117999063740C3393c |
RateProvider |
0x9a6b5BDA2128e6341175c79E43Cd2A7E0C5F5b21 |
ProxyAdmin Owner |
0xCa3144AAD1f75557E68B16C8C7e893112418f13C |
RateProvider¶
The RateProvider composes sUSDS's on-chain exchange rate with a Chainlink USDS/USD feed to price sUSDS in pmUSD terms (pmUSD = $1 internally, so USD = pmUSD).
| Parameter | Value |
|---|---|
Base Asset |
0xC0c17dD08263C16f6b64E772fB9B723Bf1344DdF (pmUSD) |
Savings Token |
0xa3931d71877C0E7a3148CB7Eb4463524FEc27fbD (sUSDS) |
Underlying Price Feed (USDS/USD) |
0xfF30586cD0F29eD462364C7e81375FC0C71219b1 |
Staleness Threshold |
86,400 s (24 h) |
Oracle Chain |
sUSDS.convertToAssets(1e18) × USDS/USD → pmUSD |
Zero-Rate Protection |
require(rate > 0) on every call |
Rounding |
getRate() Floor / getRateRoundUp() Ceil |
No pmUSD/USD oracle
Since the vault asserts pmUSD = $1 internally, the USD → pmUSD leg is a no-op and no pmUSD/USD feed is needed. This removes an entire oracle attack surface.
Vault Economics¶
| Parameter | Value | Notes |
|---|---|---|
swapFee |
25 bps (0.25%) | Applied to pmUSD → sUSDS swaps. Retained in vault. |
minWithdrawFee |
50 bps (0.5%) | Floor of the dynamic withdraw fee. |
maxWithdrawFee |
300 bps (3%) | Ceiling of the dynamic withdraw fee. |
dripDuration |
2,419,200 s (28 days) | Window over which donate() vests into totalAssets(). |
withdrawTime |
86,400 s (1 day) | Cooldown before a redeem request becomes claimable. |
withdrawTimeLimit |
86,400 s (1 day) | Window in which the claim must execute after the cooldown. |
reserveRatioFloor |
20% (0.20e18) |
Swaps pause if post-swap sUSDS reserves fall below 20% of total assets. |
navFloor |
$1.00 (1e18) |
NAV threshold for the circuit breaker (when enabled). |
circuitBreakerEnabled |
true at launch | Governance-toggled. Blocks pmUSD → sUSDS swaps if pmUSD.getNav(0) < navFloor. |
baseAssetModule |
address(0) |
Not set at launch — raw pmUSD is held directly. |
rebalancer |
address(0) |
Not set at launch — no automated pmUSD → sUSDS recycling. |
Dynamic Withdraw Fee Formula¶
- Healthy vault (mostly sUSDS) → fee approaches
minWithdrawFee(0.5%). - Stressed vault (mostly pmUSD) → fee approaches
maxWithdrawFee(3%). - The fee stays inside the vault and accrues to remaining shareholders.
Roles¶
All v1 roles are held by the same multisig — 0xCa3144AAD1f75557E68B16C8C7e893112418f13C.
| Role | Capability |
|---|---|
DEFAULT_ADMIN_ROLE |
Grant / revoke any role. Owns the ProxyAdmin. |
GOVERNANCE_ROLE |
Update swapFee, withdraw fee bounds, cooldown params, reserveRatioFloor, navFloor, rateProvider, baseAssetModule, rebalancer. |
GUARDIAN_ROLE |
Pause / unpause the vault. |
OPERATOR_ROLE |
Operational hooks (e.g. manual rebalance triggers once wired). |
DONOR_ROLE |
Call donate(amount) to stream pmUSD into the share price over dripDuration. |