SIREN
Search
⌃K

Series

Overview

The Series is the fundamental data structure in the SIREN protocol. It represents an ERC20 option, and its name comes from the TradFi term for an option with a specific underlying token, option type (Put or Call) expiration date, and strike price. Each Series has an associated bToken and wToken which represent the long and short position, respectively, in the Series. The SeriesController manages the lifecycle of all Series, from Series creation in SeriesController.createSeries, the minting of bToken and wToken in SeriesController.mintOptions, to the burning of bToken and wToken in SeriesController.exerciseOption, SeriesController.claimCollateral, and SeriesController.closePosition.

Series Id

Each Series is identified by a unique uint64 called the seriesId. The SeriesController uses a monotonically increasing index for each new Series is creates, and stores them in the series array.

Covered Calls and Puts

All options on the SIREN protocol are for covered options, which means any account that wishes to mint and sell option tokens, such as the MinterAmm, must transfer into the SeriesController the full collateral necessary to fulfill the option's obligation to buy (Calls) or sell (Puts) the underlying token. For instance, to mint 1.5 unit of bToken on a WBTC Call Series with expiration of Friday 8am July 2nd 2021 and a strike price of $60,000, the seller must first call ERC20.approve and give the SeriesController an allowance of 1.5 WBTC. If instead of a Call, this Series was a Put but all the other parameters remained the same, then the seller would first need to ERC20.approve the SeriesController for 1.5 * $60,000 = 90,0000 USDC. This collateral ensures that no matter what how the price of the underlying token changes, the SeriesController will always be able to redeem option tokens for their correct payout.

Struct Parameters

Name
Type
Description
expirationDate
uint40
The block timestamp this Series will expire, and then be redeemable
isPutOption
bool
true if these Series should be Put options, and false if they should be Call options
tokens
The underlyingToken, priceToken, and collateralToken for this Series
strikePrice
uint256
The strike price at which the Series will become in the money