Protocol

Documentation

STREAM splits tokenized equity ETFs (xStocks) into a dividend token (dx) and a principal token (px) on Base. This reference summarizes product behavior from the protocol specification, with an opening narrative aligned to how yield is unbundled in protocols such as Pendle.

Introduction

How much dividend yield will you earn on a tokenized stock this year? The headline yield is easy to quote; the realized path is not. Cash payouts move with earnings, buybacks, and policy, while the token price swings with the equity tape. Bull phases often lift sentiment and distributions; drawdowns compress both. Like lending rates on money markets, dividend streams are not a single fixed number you can lock in by holding the whole instrument alone.

STREAM is built for that gap: lean into dividend exposure when you want income, and strip or hedge it when you want cleaner price exposure or a different carry profile. The idea parallels how Pendle treats yield on liquid staking and restaking tokens: separate the yield leg from the principal leg so each can trade on its own terms. Here the underlying primitive is not an LST or LRT but dividend-bearing tokenized stocks (xStocks) on-chain.

What does STREAM do?

We give users clearer control over equity cash-flow risk versus price risk. The protocol is a yield-management layer on top of existing dividend-accruing xStocks, not a replacement for the listing or issuer mechanics of those tokens.

Two ideas carry most of the mental model (same shape as Pendle's introduction to V2, adapted to equities):

  • Dividend tokenization. Deposited xStock is represented as two legs: dx captures dividend rights (rebases accrue to dx), and pxis principal-style exposure without carrying that dividend accrual on the token balance. Splitting and recombining mints and burns the pair against vault inventory, similar in spirit to splitting SY-style wrapped yield into PT and YT, except the "yield" here is equity dividend flow on tokenized stock.
  • Markets for each leg. dx is designed to trade in a 24/7 income-oriented market; px routes into a session-based exchange with oracle-based pricing so price traders can operate without dragging dividend mechanics through every tick. You do not need to master the exchange internals to reason about holding or swapping dx vs px.

By unbundling dividend and price, STREAM supports strategies in the same family as advanced yield markets: isolate or sell the dividend stream, hold fixed-income-like exposure to declared policy, trade price during cash sessions with USDC collateral, supply liquidity, and recombine when the bundle trades rich or cheap versus xStock. Details for vault accounting, oracles, and fees follow in the sections below.

Overview

STREAM is a DeFi protocol that splits xStocks into two tradeable instruments: dx (dividend rights) and px (pure price exposure). dx trades in a 24/7 income market; px supports a leveraged exchange that follows NYSE session hours, with prices from Pyth Network.

Initial assets target AAPL, ABT, and SPY xStock tokens. Additional ERC-20 xStocks can be registered through the protocol. v1 ships as non-custodial contracts on Base only: no governance token, no fiat ramps, and no cross-chain deployment in the first release.

Problem

Whole xStocks bundle yield and price. Income-oriented users must take equity volatility they do not want. Short-horizon traders implicitly pay for dividend yield even on intraday positions. STREAM unbundles those payoffs so each audience can trade the exposure it actually wants.

Goals

In scope

  • Split registered xStocks into dx and px via one vault.
  • Route 100% of dividend rebases to dx using an accumulator.
  • 24/7 secondary liquidity for dx; session-gated px exchange with USDC.
  • Pyth as the sole price oracle for exchange operations.
  • Recombination (burn dx + px) to redeem xStock for arbitrage bounds.

Out of scope (v1)

  • Custodial wallet product; raw non-xStock equities.
  • Governance token, fiat on/off-ramps, cross-chain deployment.
  • Perpetuals: px positions settle with the daily session design.

Personas

Alice -- Income investor
Holds dx for yield; avoids px price risk.
Bob -- Day trader
Long/short px in session with USDC; no dividend drag.
Carol -- Yield stripper
Splits xStock, sells px, holds cheaper dx yield.
Dave -- Arbitrageur
Trades mispricing between xStock and dx + px.
Eve -- LP
Supplies USDC to px pools; earns trading fees.

Architecture

Users interact with XStreamVault (deposit, withdraw, claim, sync) and XStreamExchange (open/close long and short, liquidate). Each asset has a PrincipalToken (px) and DividendToken (dx). The exchange uses USDC LP pools and px inventory for shorts. PythAdapter normalizes prices; MarketKeeper opens and closes sessions and coordinates settlement batches.

Invariant: vault totalDeposited tracks principal shares; the dividend reserve is accounted separately so the two pools are never mixed.

dx and px tokens

Dividend token (dx)
Freely transferable ERC-20. Accrues pro-rata at each sync; no retroactive yield for buyers after the fact. Claims are in xStock units. Secondary price is anchored by expected dividends and recombination arbitrage.
Principal token (px)
No dividend accrual; balance unchanged by rebases. Collateral for leveraged long/short px trading against USDC during allowed sessions.

Vault

Deposit xStock to mint matched dx and px. The vault tracks rebase via multiplier() snapshots and attributes the full dividend delta to dx via accDivPerShare at 1e36 precision. claimDividend is O(1) gas. Deposits and withdrawals settle pending rewards first. Recombination burns equal dx and px to return xStock plus unclaimed dividends. dx transfers can auto-claim and reset reward debt to prevent yield gaming.

Optional: public syncDividend, per-asset minDepositAmount, and owner pause that blocks deposit/withdraw but not claims.

dx market

dx can list on any compatible DEX or OTC venue. Pricing reflects the next dividend events and the floor implied by mint/burn parity with xStock. A read-only view can expose pending dividends per user for UI without sending a transaction.

px exchange

USDC collateral backs long and short px positions. Default max leverage is 5x per pool (configurable). Long PnL settles from the LP pool; losses hit collateral. Shorts draw px from protocol reserve at open and return px at close, with USDC netting PnL. Opens are blocked when the market is closed; closes and liquidations can still run.

At session close, the keeper may call batch settlement to force-close positions at the closing oracle price. Liquidation triggers near healthFactor < 0.2; a share of remaining collateral rewards the liquidator. Opening fees accrue to LPs; reserve providers can earn fees on short notional where the design enables it.

Oracle and sessions

Pyth uses a pull model: transactions include a fresh signed update (VAA from Hermes). The adapter normalizes to 1e18. Updates older than maxStaleness (often 60s) revert. Integrators read getUpdateFee() to forward the correct msg.value. Cached reads may be available for display-only price UIs.

Authorized keepers call openMarket and closeMarket. Close can batch Pyth data for all assets and drive settlement. emergencyCloseMarket halts new risk without forcing settlement when the oracle is impaired. Multiple keeper addresses are supported for automation or redundancy.

Economics

Example fee settings from the specification: 0.05% of notional on position open to the USDC LP pool; 0.025% on short notional to px reserve LPs where applicable; liquidation splits between liquidator and pool per parameters. Projected dx APY mixes base dividend (for example SPY near 1.3%) with trading-fee flow; illustrated totals around 12-16% are not guarantees.

FeeTypical rateRecipient
Open0.05%USDC LP
Short reserve0.025%px reserve
Liquidation reward10% of remainderLiquidator

Contract inventory

  • XStreamVault -- split, recombine, dividend routing (one deployment).
  • PrincipalToken / DividendToken -- per asset px and dx.
  • XStreamExchange -- pooled trading (one deployment).
  • LPToken -- per-pool LP shares (non-transferable in v1 per spec).
  • PythAdapter, MarketKeeper -- oracle normalization and session control.

Security and engineering

Contracts aim for reentrancy protection on state-changing paths, checks-effects-interactions ordering, and heavy testing on the dividend accumulator and settlement logic. v1 is non-upgradeable with owner-tunable parameters. Pools cap open interest so batch settlement stays within gas limits. Target: independent audit before mainnet.

Risks

Smart contract bugs, oracle failures, keeper downtime, and thin liquidity can all cause losses. Tokenized equities may be restricted in some regions. This documentation is not legal or investment advice. Verify live parameters on deployed contracts and read audit reports when available.