Technical Overview

A deep dive

Contract Architecture

Plether consists of core protocol contracts and peripheral routing/integration contracts.

Core:

  • SyntheticSplitter – Central hub for minting, burning, and collateral management

  • SyntheticToken – ERC20 implementation for plDXY-BEAR and plDXY-BULL

  • StakedToken – ERC4626 vaults for staked positions (splDXY-BEAR, splDXY-BULL)

  • BasketOracle – Price feed aggregating 6 Chainlink oracles

Routing:

  • ZapRouter – Efficient BULL acquisition using flash mints

  • LeverageRouter – Leveraged BEAR positions via Morpho

  • BullLeverageRouter – Leveraged BULL positions via Morpho

Infrastructure:

  • MorphoAdapter – ERC4626 vault wrapping Morpho Blue for yield

  • MorphoOracle – Price adapter scaling BasketOracle to Morpho's format

  • StakedOracle – Prices staked tokens for Morpho collateral valuation

  • RewardDistributor – Allocates yield to stakers based on price discrepancy

SyntheticSplitter

The SyntheticSplitter is the protocol's central contract. All minting, burning, and collateral flows pass through it.

Lifecycle States

State
Description

ACTIVE

Normal operation. Minting and burning enabled.

PAUSED

Emergency state. Burning enabled, minting disabled. Governance can unpause.

SETTLED

Terminal state. Oracle hit CAP. Only settlement withdrawals allowed.

State transitions are one-way: ACTIVE → PAUSED → SETTLED. Settlement is irreversible and triggered when the oracle price reaches the protocol CAP ($2.00).

Mint and Burn

Minting accepts USDC and issues equal amounts of BEAR and BULL. The protocol rounds up in favor of the protocol (user pays slightly more).

Burning accepts equal BEAR and BULL and returns USDC. The protocol rounds down in favor of the protocol (user receives slightly less).

This rounding asymmetry prevents economic attacks exploiting dust amounts.

Collateral Management

The Splitter maintains a 10% liquidity buffer for immediate redemptions. The remaining 90% is deployed to yield adapters (currently MorphoAdapter) to generate yield.

When the buffer falls below target during burns, the Splitter automatically withdraws from adapters. When excess collateral accumulates from mints, it's deployed to adapters.

Settlement

If the oracle price reaches the CAP, the protocol enters the SETTLED state. At settlement:

  • All adapter funds are withdrawn

  • BEAR holders receive full CAP value per token

  • BULL holders receive nothing (BULL value = CAP - CAP = 0)

This represents an extreme tail scenario where USD has devalued significantly against the currency basket.

Oracle System

Plether uses two distinct price sources:

Price Type
Source
Purpose

Theoretical/Mark

BasketOracle (Chainlink)

Token valuation (for reward distribution), settlement trigger, Morpho markets

Market

Curve EMA

Reward distribution, arbitrage reference

The theoretical price represents what tokens should be worth based on FX rates. The market price reflects actual trading activity on Curve. Discrepancies between these prices drive arbitrage and reward allocation.

BasketOracle

The BasketOracle aggregates six Chainlink price feeds into a single basket price:

Currency
Weight

EUR

57.6%

JPY

13.6%

GBP

11.9%

CAD

9.1%

SEK

4.2%

CHF

3.6%

Weights mirror the US Dollar Index composition.

Safety checks:

  • Staleness: Prices older than 8 hours are rejected

  • Sequencer uptime: On L2s, verifies the sequencer is online before trusting prices

  • Bounds: Rejects prices outside reasonable ranges

The oracle returns prices in 8 decimal format (Chainlink standard).

Curve EMA

The Curve pool provides an exponential moving average (EMA) of the BEAR/USDC trading price via price_oracle(). This smoothed price resists short-term manipulation while reflecting sustained market activity.

The reward flywheel uses the difference between Curve EMA and BasketOracle to determine which token is underperforming.

MorphoOracle

Morpho Blue requires oracles to return prices in 1e36 scale. MorphoOracle wraps BasketOracle and scales the output accordingly.

StakedOracle

For Morpho markets using staked tokens as collateral, StakedOracle calculates:

splDXY-BEAR Price = BEAR Price (from BasketOracle) × splDXY-BEAR Exchange Rate splDXY-BULL Price = BULL Price (from BasketOracle) × splDXY-BULL Exchange Rate

The exchange rate represents how many underlying tokens you receive when redeeming 1 staked token. It starts at 1:1 and increases as yield accrues to the vault.

For example, if BEAR is worth $0.85 and the staked vault has accumulated yield, bringing its exchange rate to 1.05, then splDXY-BEAR is valued at $0.8925 for Morpho collateral purposes.

Staking Layer

StakedToken Vaults

StakedToken is an ERC4626 vault. Users deposit plDXY tokens and receive staked tokens (splDXY-BEAR or splDXY-BULL) representing their share.

Initial exchange rate is 1:1. As yield is donated to the vault, the exchange rate increases—each staked token becomes redeemable for more underlying tokens.

Role in Morpho

Morpho lending markets require collateral. Plether uses staked tokens (not raw plDXY tokens) as collateral. This means:

  • Users must stake before opening leverage positions

  • Routers handle staking automatically when opening positions

  • Collateral continues earning staking yield while in Morpho

Routing Layer

ZapRouter

ZapRouter provides efficient BULL acquisition without requiring users to hold BEAR.

Flow:

  1. Flash mint plDXY-BEAR from SyntheticToken

  2. Swap BEAR → USDC on Curve

  3. Use USDC to mint BEAR + BULL pairs via Splitter

  4. Keep BULL, repay flash mint with newly minted BEAR

Protection: 1% max slippage cap prevents MEV exploitation.

LeverageRouter

LeverageRouter enables leveraged BEAR exposure using Morpho Blue.

Open position:

  1. Flash loan USDC from Morpho

  2. Swap USDC → plDXY-BEAR on Curve

  3. Stake BEAR → splDXY-BEAR

  4. Deposit splDXY-BEAR as Morpho collateral

  5. Borrow USDC against collateral to repay flash loan

Close position:

  1. Flash loan USDC

  2. Repay Morpho debt

  3. Withdraw splDXY-BEAR collateral

  4. Unstake → plDXY-BEAR

  5. Swap BEAR → USDC

  6. Repay flash loan, return the remainder to the user

BullLeverageRouter

BullLeverageRouter enables leveraged BULL exposure.

Open position:

  1. Flash loan USDC

  2. Mint BEAR + BULL pairs via Splitter

  3. Swap BEAR → USDC on Curve

  4. Stake BULL → splDXY-BULL

  5. Deposit splDXY-BULL as Morpho collateral

  6. Borrow USDC to repay flash loan

Close position:

  1. Flash mint BEAR (enough for collateral redemption + debt repayment)

  2. Swap portion of BEAR → USDC

  3. Repay Morpho debt

  4. Withdraw splDXY-BULL collateral

  5. Unstake → plDXY-BULL

  6. Redeem BEAR + BULL pairs → USDC

  7. Buy back BEAR to repay flash mint

Authorization: Both leverage routers require users to authorize them in Morpho (setAuthorization) before use.

Yield Infrastructure

MorphoAdapter

MorphoAdapter is an ERC4626 vault that deposits USDC into Morpho Blue lending markets. The Splitter treats it as a black box—it deposits USDC and withdraws USDC, with yield accruing in between.

Reward Distribution

Yield harvested from adapters flows through the RewardDistributor:

  1. SyntheticSplitter.harvestYield() sends USDC to RewardDistributor

  2. RewardDistributor compares market prices to oracle prices

  3. Rewards are allocated in favor of the underperforming token's stakers

  4. Tokens are acquired (via minting, swapping, or zapping) and donated to StakedToken vaults

Split:

  • 20% → Protocol treasury

  • 80% → Staking rewards

Caller incentive: 0.1% of distributed rewards go to the address calling distributeRewards(), incentivizing regular distributions.

Last updated