Bondprotocol lets holders exercise eligible call oTokens for payout tokens
Bondprotocol call oTokens let holders buy payout tokens at a fixed strike price within a defined exercise window. For a holder other than the configured receiver, exercise requires quote tokens and burns the exercised oTokens. The fixed-strike teller then transfers the matching payout tokens to the exercising holder.
Updated on
The call configuration defines both sides of the exchange
The
FixedStrikeOptionTeller
contract uses the option's configured assets and units to determine the exchange. An oToken is an ERC-20 token representing an option. For a call, the payout token is the asset its holder can buy. The quote token supplies the payment. The strike states quote tokens per payout token, while the oToken amount follows the payout token's units. The teller's
exerciseCost
view identifies the quote token and the payment a holder other than the configured receiver would owe for a chosen call amount.
An option also identifies its teller, eligibility timestamp, expiry timestamp, and receiver. Check the call setting before applying a call-exercise calculation. Options Liquidity Mining distributions and bond auctions concern how an oToken reaches a holder. The issued token's strike governs its exercise, independently of its acquisition price. The receiver address matters because it has a separate exercise branch.
Payment, burning, and collateral form one exercise
A non-receiver holder's call exercise exchanges quote-token payment for payout collateral and burns the selected oTokens as part of that operation.
The holder must already have the oTokens and enough spendable quote tokens, with sufficient allowance for the teller. The teller must receive the full quote payment; a transfer fee that leaves it short makes exercise revert. Authorizing a quote-token transfer doesn't exercise the option. The exercise call specifies the option-token address and amount; the teller checks the supplied token against its registered configuration. It then checks the exercise window before collecting payment. The exercised amount fixes how many payout-token units leave the collateral pool.
The exercise path calls the oToken's burn function directly. Its payment transfer uses the quote token's allowance, so these operations involve different token permissions.
A call exercise transfers the underlying payout tokens to the exercising holder. Physical settlement describes this exchange of tokens. The teller doesn't sell those payout tokens or calculate profit in a common currency.
A successful execution includes both the burn and the payout transfer. Submission alone doesn't establish those completed changes. If a required transfer or contract check reverts, the transaction rolls back its changes. The confirmed token movements distinguish the completed exchange from an approval or an unsuccessful attempt.
Does claiming an OLM reward deliver spendable payout tokens?
An Options Liquidity Mining (OLM) reward claim delivers call oTokens; receiving their underlying payout tokens requires exercise under the option's terms. The reward contract issues those options against payout-token collateral held by the teller. Claims can cover multiple epochs, and the OLM contract records the option token associated with each epoch. The exercise window continues to run while rewards remain unclaimed, so an accrued reward amount alone doesn't establish an exercisable balance. Once an epoch's option expiry has passed, OLM skips that epoch's unclaimed rewards.
A worked exercise separates payment from payout
In this hypothetical call exercise, a non-receiver holder can exchange 324 quote tokens for 135 payout tokens. The assumed amount is 135 oTokens, and the assumed strike is 2.4 quote tokens per payout token. The option is eligible and unexpired, and the holder has sufficient quote tokens and allowance.
The payment calculation is
135 * 2.4 = 324
quote tokens. On successful execution, the holder spends that payment, the teller burns 135 oTokens, and the holder receives 135 payout tokens. The configured protocol fee comes out of the quote payment before the receiver gets the remainder.
The 324 quote tokens measure the exercise payment. A profit calculation also needs the payout asset's value and the holder's acquisition and transaction costs. Changing the exercised amount scales both payment and payout at the same strike, subject to token-unit rounding. An option with a different strike would require a different payment per payout token. Once the option expires, those balances no longer make this exercise possible.
The exercise window uses UTC day boundaries
Exercise is valid only when the execution timestamp is at least the eligible timestamp and strictly less than expiry. The teller evaluates time when the transaction executes. A request sent before expiry can therefore reach execution too late.
During deployment, this implementation rounds eligibility and expiry down to 00:00 UTC on their respective days. A stated expiry date therefore refers to that day's opening boundary. Local midnight can fall at a different instant. Use the stored timestamps when a calendar label seems inconsistent with availability. The teller also enforces a configurable minimum eligibility duration, whose permitted lower bound is one day.
Fees follow the payment branch and receiver
For a call holder other than the configured receiver, the teller deducts its protocol fee before forwarding quote-token proceeds. The required payment still follows the strike calculation. The fee reduces the receiver's proceeds; it doesn't reduce the call's payout-token amount. The particular teller's
protocolFee
setting supplies the rate, and authorized updates can change it. Network transaction costs sit outside this token accounting.
The configured receiver can unwrap oTokens it holds through another exercise branch during the same valid window. The teller burns those oTokens and returns their payout collateral without collecting quote tokens. That branch skips the ordinary protocol-fee calculation. The privilege follows the option's receiver address. An address doesn't obtain it simply by having issued the option or distributed its rewards.
Expiry moves reclamation to the configured receiver
The configured receiver alone can reclaim unexercised call collateral once the option expires. Reclamation requires a call to the teller; expiry doesn't automatically transfer the remaining assets. The amount follows the outstanding oToken supply, which excludes tokens burned during earlier exercises. Holding expired oTokens doesn't give another address access to that collateral. The receiver's reclamation route applies after expiry, while its unwrapping route uses the live exercise window.
A partial exercise leaves the remaining choice open
The exercise amount can cover only part of a holder's oToken balance, leaving the rest under their original terms. That bounds both the quote tokens required and the payout collateral released. The remaining oTokens keep the same strike and timestamps. If a required balance or allowance is insufficient, the exercise can't complete. Any quote-token allowance left after payment depends on the authorization's original size and the token's allowance behavior.
Stopping before submission leaves the exchange unexecuted. The remaining exercise opportunity still closes at the original expiry.
Everyday questions about Bondprotocol
Can I direct my call-exercise payout to a different address?
The fixed-strike teller sends payout tokens to the address calling exercise, with no separate payout-recipient parameter. The option's configured receiver gets exercise proceeds and controls expired collateral; it doesn't select the holder's payout destination. If a contract calls the teller, the payout goes to that contract. Forwarding those tokens would require separate logic.
Does exercising a call oToken require a bond market ID?
The fixed-strike teller's exercise function takes the oToken address and amount, so it doesn't need a bond market ID. The teller validates that option against its registered configuration before processing the exchange.
How does the teller round a fractional call exercise cost?
The fixed-strike teller rounds the calculated quote-token payment upward to the smallest quote-token unit. In raw token units, it multiplies the oToken amount by the stored strike and divides by ten raised to the payout token's decimal count. This accounts for differing token precision.
Why can exerciseCost quote an option that can't currently be exercised?
The exerciseCost view quotes payment for a registered option without applying the configured receiver's payment exemption or checking whether its exercise window is open. A returned amount therefore doesn't establish current exercisability or sufficient balances and allowances. The exercise function checks eligibility and expiry when it executes, so an expired or not-yet-eligible option fails those checks.
Will exercising a call oToken collect unclaimed OLM rewards?
Exercising a call oToken doesn't collect unclaimed OLM rewards or advance through reward epochs. The teller processes the oToken amount supplied to exercise; OLM's reward-claim functions handle the separate accrued rewards.
Is the same payment calculation valid for put oTokens?
Put oTokens use a different payment calculation for holders other than the configured receiver. Calls collect quote tokens based on the strike; puts collect the exercised amount in payout tokens. Puts then release quote-token collateral. The payment asset exerciseCost returns reflects the option type.