Orbitlending OTokens
Updated ·
OTokens are ERC-20 shares in Orbit Protocol's lending pools on Blast. In the published OToken implementation, an exchange rate converts a share balance into an amount of the pool's underlying asset. Redemption also depends on available pool cash and the controller's collateral checks.
Blockspot's Orbit Protocol listing reports the website offline since June 7, 2026. Current redemption availability remains unconfirmed.
Share Balances and Underlying Value
balanceOf
reports a holder's OToken count.
balanceOfUnderlying
converts that holding into an underlying-asset amount using the exchange rate. The Orbit Protocol Smart Contracts README names ETH and USDB as underlying assets and identifies
oUSDB
as a USDB-linked OToken.
For a market with nonzero OToken supply, the
exchange-rate calculation
is
(cash + totalBorrows - totalReserves) / totalSupply
. Cash, borrows and reserves are amounts of that market's underlying asset. The denominator counts its OTokens. When total supply is zero, the contract returns the configured initial exchange rate.
The Solidity implementation uses token base units and scales the rate by
1e18
. A readable rate in whole underlying tokens per whole OToken must account for both tokens' decimal precision. With those units normalized, the underlying value equals the OToken balance multiplied by the exchange rate.
Minting and Interest Accrual
Minting calculates new shares from the underlying amount that the market actually receives, divided by its exchange rate. A deposit amount and the resulting OToken count therefore need not be numerically equal.
Accrued borrower interest increases
totalBorrows
. The contract adds a reserve-factor portion of that interest to
totalReserves
, so the exchange-rate numerator includes the net increase after reserves. This accounting can increase the underlying amount represented by each OToken while the holder's share count stays unchanged.
exchangeRateStored()
calculates the rate without first accruing interest.
exchangeRateCurrent()
accrues interest before returning it. The
balanceOfUnderlying()
method uses that current-rate path and can update contract state; it is not a view-only read in this implementation.
Redemption Amounts and Cash Limits
-
redeem - The input specifies an OToken quantity. The contract uses the exchange rate to calculate the underlying amount to return.
-
redeemUnderlying - The input specifies an underlying-asset amount. The contract calculates how many OTokens to remove from the holder's balance.
A successful redemption reduces the holder's OToken balance and total OToken supply, then transfers the underlying asset. Exact base-unit conversions follow the contract's integer arithmetic.
The OToken implementation rejects a redemption when available underlying cash is below the amount requested. Outstanding loans contribute to the exchange-rate numerator, but those loans are not immediately transferable cash. A positive underlying valuation can therefore coexist with insufficient liquidity for a full redemption.
Collateral Membership and Transfers
SpaceStation, Orbit Protocol's market controller, applies a redemption permission check that requires the market to be listed. For an account entered into that market, the controller also checks whether removing the shares would leave a collateral shortfall. An account that has not entered that market bypasses this particular account-liquidity check.
OToken transfers use the same redemption-permission logic and have a separate transfer-pause check. Moving shares that support borrowing can consequently be restricted even when the holder has enough OTokens to transfer.
exitMarket
removes a market from the account's collateral calculation; it does not itself redeem OTokens. In the published controller, an exit requires no outstanding borrow balance in that market and permission to redeem all the shares held there.
Example: Share Value and Available Cash
A full redemption passes the cash check only when the pool holds at least the calculated underlying amount. All inputs in this example are hypothetical and use whole-token units after decimal conversion. Assume accrued interest is already included, the market is listed and the controller permits the redemption.
Pool cash: 286.5 USDB; total borrows: 1,147 USDB; total reserves: 23.5 USDB; total supply: 1,175 oUSDB. The net amount backing shares is
286.5 + 1,147 - 23.5 = 1,410
USDB. Dividing by supply gives
1,410 / 1,175 = 1.2
USDB per oUSDB.
Holder balance: 255 oUSDB. Its calculated underlying value is
255 * 1.2 = 306
USDB. A full redemption would require 19.5 USDB more cash than the pool holds, so it fails the published cash check despite that positive valuation.
A different share balance or exchange rate changes the underlying amount required. A different available cash balance changes whether that amount passes the cash check; controller permission remains a separate requirement.
Blast Yield Claims
The published OToken initialization configures Blast yield as claimable. The Orbit Protocol Smart Contracts README identifies a designated contract governor as the claimant of accrued platform yield on assets including ETH and USDB. The exchange-rate formula alone does not specify how those yield claims are distributed to individual OToken holders.