PROTOCOL DOCUMENTATION · MAINNET

Keep the principal.
Sell the yield.

STRIP separates one yield-bearing position into two independently transferable rights: the principal and the positive yield generated until maturity.

Settlement assetUSDG
Marketplace fee0.50%
Positive-yield fee5.00%

Overview

THE SIMPLE VERSIONYou deposit 10,000 USDG.

You keep the Principal Claim. You sell the next 90 days of positive yield for 150 USDG. The buyer now owns that yield until maturity.

The underlying assets are deposited into a named external yield source. STRIP holds the exact vault shares onchain, records the two owners independently, and redeems the complete position once at maturity.

STRIP does not manufacture yield, borrow against the deposit, use new deposits to fund old positions, or promise the original principal back. Every payout comes from the assets actually returned by the external vault.

Position lifecycle

A position can only move forward through a small state machine. Trading changes ownership of the Yield Right; it does not alter the vault shares or principal accounting.

CREATEVault shares received
SEPARATETwo ERC-721 rights
TRADEYield ownership changes
SETTLEAll shares redeemed once
CLAIMEach owner pulls payout
Position state ∈ { Open, Settled, Merged }Settled ∧ Merged = false

Settled is the maturity path. Merged is the early-exit path when one wallet owns both rights. A position cannot enter both terminal states.

Principal

The Principal Claim is an ERC-721 that owns the principal side of settlement. Its token ID equals the position ID.

Cₚ(V) = min(P, V)

P is the original deposit and V is the amount actually returned by redeeming every vault share. The payout is capped at P. If the vault returns less, the Principal owner receives the lower amount and bears the loss.

Principal is a claim, not a guarantee.

A 10,000 USDG position that redeems for 9,400 USDG pays 9,400 USDG to Principal and zero to Yield.

Yield Rights

The Yield Right is a second ERC-721 with the same token ID. It owns only the positive value above the original principal, after the realized-yield fee.

G(V) = max(V − P, 0)Cᵧ(V) = G(V) − floor(G(V) × fᵧ)

The right can be transferred, sold at a fixed price, or sold through an English auction. The final owner at settlement receives Cᵧ(V). If V ≤ P, its payout is zero.

Settlement mathematics

All quantities are denominated in the same underlying asset. STRIP does not convert USDG into dollars and does not require a price oracle for settlement.

P
Original principal deposited.
S
Exact vault shares held by STRIP.
Vₜ
Previewed asset value of those shares at time t.
V
Actual assets received when the shares are redeemed.
fᵧ
Realized-yield fee rate. Launch value: 0.05.
Q
Price paid to acquire the Yield Right.
Principal payout = min(P, V)The principal side receives all remaining value until it reaches the original deposit.
Gross yield = max(V − P, 0)Losses never become a negative balance owed by the Yield owner.
Yield fee = floor(Gross yield × fᵧ)Solidity integer arithmetic rounds the fee down to a raw asset unit.
Net yield payout = Gross yield − Yield feeThe current Yield Right owner can claim this amount.

Asset conservation

Every unit returned by the vault is assigned exactly once.

Principal payout + Net yield payout + Yield fee = V

Settlement outcomes

Vault returns VPrincipalGross yieldNet yield
9,4009,40000
10,00010,00000
10,08010,0008076
10,28010,000280266

Illustration for P = 10,000 USDG and fᵧ = 5%. Gas and marketplace purchase price are excluded.

Vault share accounting

STRIP stores shares, not an estimated balance. At creation, the adapter deposits P assets and reports the exact number of shares minted.

S = vault.deposit(P, STRIP)Vₜ = vault.previewRedeem(S)Accrued(t) = max(Vₜ − P, 0)

The pre-maturity accrued value is informational. previewRedeem can change between blocks, and the actual redemption value V can differ from Vₜ because of vault losses, rounding, liquidity, or execution conditions.

Entry execution bound

The frontend obtains a previewed share output . It derives a maximum acceptable asset price per share with 27-decimal precision and a 0.50% tolerance.

π̂ = ceil(P × 10²⁷ / Ŝ)πmax = ceil(π̂ × 1.005)πactual = ceil(P × 10²⁷ / S)Require: πactual ≤ πmax

If the vault mints materially fewer shares than previewed, creation reverts. The protocol also checks the exact asset amount received and the exact change in its share-token balance, rejecting fee-on-transfer behavior.

Pricing a Yield Right

STRIP does not set a fair price. Sellers and bidders price the right to an uncertain future payoff. If a buyer pays Q, their realized result before gas is:

Buyer P&L = (1 − fᵧ) × max(V − P, 0) − QBuyer ROI = Buyer P&L / Q

Break-even redemption value

V* = P + Q / (1 − fᵧ)

For P = 10,000, Q = 150, and fᵧ = 5%, break-even requires approximately V* = 10,157.8947 USDG. That is a threshold, not a forecast.

Price as a principal ratio

Upfront yield price ratio = Q / PSimple annualized ratio = (Q / P) × (365 / D)

With Q = 150, P = 10,000, and D = 90 days, the buyer pays 1.50% of principal upfront, equivalent to a simple annualized ratio of 6.083%. This is a market-price normalization only. It is not vault APY, expected return, or guaranteed profit.

Seller economics

Immediate seller proceeds = Q − floor(Q × fₘ)Seller exchanges uncertain Cᵧ(V) for certain proceeds at sale

Creating a position

Choose USDG, Steakhouse USDG, an amount, and a maturity between one and 365 days. Approve USDG if necessary, then submit createPosition.

Asset transfer

The exact underlying amount moves from the depositor to StripCore.

Vault deposit

The whitelisted adapter deposits it and returns exact shares.

Position record

Principal, shares, source, creator, and maturity are stored.

Rights minted

Principal Claim and Yield Right are minted to the depositor.

Both NFTs use the same position ID. No backend approval or offchain signature creates ownership.

Selling yield

The Yield Right owner approves the marketplace and chooses a fixed price or an auction. The marketplace escrows the NFT, so a listing cannot become stale after an unrelated transfer.

A fixed-price seller can relist at a new price or cancel before maturity. An auction can be cancelled only while it has no bid.

Buying yield

A fixed-price buyer approves the position’s underlying asset and calls buy. Payment, marketplace fee, seller proceeds, and Yield Right transfer happen atomically.

Marketplace fee = floor(Q × fₘ)Seller proceeds = Q − Marketplace fee

The buyer becomes the onchain owner of the Yield Right immediately. The Principal Claim remains with its current owner.

Auctions

Auctions are ascending-price English auctions denominated in the position’s underlying asset. The seller chooses a reserve and an end time that must be at least 15 minutes away and strictly before maturity.

Bmin = R, when no bid existsBmin = B + max(floor(B × 0.01), 1 raw unit), otherwise

R is the reserve and B is the current highest bid. A bidder increasing their own bid transfers only the difference. When a different wallet takes the lead, the previous amount becomes a pull-based refund:

refund[asset][previousBidder] += previousBid

Once time expires, anyone can finalize. The winner receives the Yield Right and the seller receives the winning bid less the marketplace fee. If there was no bid, the NFT returns to the seller.

Settlement

At or after maturity, anyone can settle a position. The action zeroes the stored share balance, marks the position settled, redeems every share, and records final payouts. Reentrancy protection and state changes occur before payout transfers.

Sstored ← 0settled ← trueV ← adapter.redeem(S)(principalPayout, yieldPayout, fee) ← split(P, V)

Principal and Yield owners claim separately. Either claim can trigger settlement first when the position is mature. Each successful claim burns its NFT and sets its claim flag before transferring assets.

Early exit

Before maturity, early exit is available only when the same wallet owns both NFTs. mergeAndExit burns both rights, redeems every share, and returns the exact assets received.

owner(Principal #i) = owner(Yield #i) = caller

If ownership is split, neither side can terminate the other side’s exposure. At maturity the settlement path replaces early exit.

Yield sources

V1 supports Steakhouse USDG on Morpho Vaults V2, an ERC-4626-compatible production vault over canonical USDG.

Sources are explicitly registered with their asset, vault, and adapter. Arbitrary target calls are impossible. Disabling a source prevents new deposits but does not change the settlement rights of existing positions.

Source risk remains source risk.

STRIP changes ownership of cash flows. It does not improve vault solvency, collateral quality, curator behavior, or withdrawal liquidity.

Protocol fees

MARKETPLACE0.50%

Charged only on a completed fixed-price sale or winning auction.

Contract hard cap: 2%
REALIZED YIELD5.00%

Charged only on positive yield when the position settles.

Contract hard cap: 10%
Fmarket = floor(Sale price × 50 / 10,000)Fyield = floor(Gross yield × 500 / 10,000)

Launch rates are immutable in StripConfig. A Yield Right can incur both fees at different moments: the marketplace fee applies to its sale, while the yield fee applies only to positive realized yield.

$STRIP value capture

Eligible USDG fees accumulate in FeeCollector. Anyone can call buyAndBurn. The collector converts USDG to WETH through the verified 0.01% Uniswap V3 pool, unwraps WETH into native ETH, buys $STRIP through Pons V2, and sends the result directly to 0x0000…dEaD.

Revenue USDG → WETH → native ETH → Pons V2 → $STRIP → burnQoracle = floor(Revenue × 10³⁶ / MorphoPrice)minWETH = max(callerMin, 0.99 × poolQuote, 0.99 × Qoracle)Require: nativeSpent = WETHout and STRIPout ≥ callerMinSTRIP

The conversion has two independent 1% protections: one relative to the current pool quote and one relative to the production Morpho USDG/WETH oracle. This oracle is used only for protocol-revenue conversion; position settlement remains entirely oracle-free.

Before graduation, the ETH buys from the verified Pons bonding curve. After graduation, it uses the exact native-ETH Pons Uniswap V4 pool key. Curve purchases remain disabled while Pons’ recipient-specific opening tax is active.

The protocol token is bound once in canonical configuration. Initialization verifies that the token was created by the production Pons V2 factory and that its quote asset is native ETH. The address cannot later be replaced.

Contract system

StripCore

Creates positions, holds vault shares, settles, claims, and merges.

PrincipalClaim

ERC-721 ownership of the principal-side payout.

YieldRight

ERC-721 ownership of positive yield until maturity.

YieldMarketplace

Escrowed fixed-price listings and English auctions.

YieldSourceRegistry

Controls which exact sources accept new positions.

FeeCollector

Permissionless Pons V2 purchases and irreversible burns.

StripConfig

Canonical addresses, immutable launch fees, one-time token binding.

There are no proxies, governance, multisig, insurance fund, or arbitrary external-call paths.

Protocol invariants

One share balance

A position’s complete vault balance is redeemed together.

One settlement

A settled or merged position can never settle again.

One payout per right

Claim flags and NFT burns prevent replay.

Current owner paid

Payout authorization reads ERC-721 ownership at claim time.

Losses stay principal-side

Yield never becomes negative debt or a protocol liability.

Existing exits remain

Disabling a source affects new deposits only.

Production addresses

NetworkRobinhood Chain · 4663
Canonical configuration0x9EB7e7B5408b7fdDf53A69b357c3f163DB2A03dB
Core0xCE09520624e38fC4872bCE8DA77630c63c566183
Principal Claim0xA795c139bc8Aa96EBE2E9735B1d570075Ba2c317
Yield Right0x88679c2F3696bb894b2e8a55Bb4b38cE45EBB336
Marketplace0xb474fF5f856660865F4c913e0a4e982C88361a19
Fee Collector0xdB92191618AA4FBf372C2CCA32D4dCafB34FcBe6
Yield Source Registry0x59bDCE71aeE504Ffab5ABBB0f16897bfFAD82243
$STRIP tokenAwaiting one-time binding
USDG0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168
Steakhouse USDG0xBeEff033F34C046626B8D0A041844C5d1A5409dd
Wrapped native ETH0x0Bd7D308f8E1639FAb988df18A8011f41EAcAD73
USDG/WETH pool0x52e65B17fB6E5BA00Ed806f37Afcd2DaA50271Ca
USDG/WETH oracle0xE994EcC2C3629F3faE3719F39c66681f173784E4
Pons V2 factory0x7eD598BcEf8bd9Edd8C97A195C6d13f40801EC7e
Pons V2 hook0xE5e702641Ea86F4ae6cC3cDaeD2B886f976Be044

Always verify an address on Blockscout before approving assets.

Risks

  • Underlying source. Vault code, curators, collateral, markets, or liquidations can fail.
  • Principal loss. The Principal Claim can return less than the amount deposited.
  • Yield uncertainty. Realized yield can fall, be zero, or fail to cover the Yield Right’s purchase price.
  • Auction exposure. A leading bid remains committed until outbid or finalization.
  • Liquidity. Vault liquidity can delay or prevent redemption at a given moment.
  • Smart contracts. STRIP and every integrated dependency carry implementation risk.
  • Market liquidity. A listing or auction may receive no buyer. There is no insurance.

Developers

Contract views are canonical. Events provide deterministic discovery for positions, ownership transitions, marketplace activity, settlement, claims, fees, and burns.

PositionCreatedPositionSettledPrincipalClaimedYieldClaimedPositionMergedYieldRightListedYieldRightPurchasedYieldAuctionCreatedYieldAuctionBidYieldAuctionFinalizedProtocolFeeAccrued

The included indexer begins at the configured deployment block, scans logs in bounded chunks, waits 12 blocks before treating history as finalized, deduplicates by transaction hash and log position, and polls only recent ranges.

Read APIs

/api/markets/api/positions/[id]/api/activity/api/vaults/api/stats/api/portfolio/[owner]

These routes improve speed and discovery only. They do not authorize transfers, determine ownership, or replace contract state.