Equations

Staking

deposit=withdrawaldeposit = withdrawal

Swaps between CST and CSTS during staking and unstaking are always honored 1:1. The amount of CST deposited into the staking contract will always result in the same amount of CSTS. And the amount of CSTS withdrawn from the staking contract will always result in the same amount of CST.

rebase=1(cstDeposits/CSTSOutstanding)rebase = 1 - ( cstDeposits / CSTSOutstanding )

The treasury deposits CST into the distributor. The distributor then deposits CST into the staking contract, creating an imbalance between CST and CSTS. CSTS is rebased to correct this imbalance between CST deposited and CSTS outstanding. The rebase brings CSTS outstanding back up to parity so that 1 CSTS equals 1 staked CST.

Bonding

bondPrice=1+Premiumbond Price = 1 + Premium

CST has an intrinsic value of 1 DAI, which is roughly equivalent to $1. In order to make a profit from bonding, Olympus charges a premium for each bond.

Premium=debtRatioBCVPremium = debt Ratio * BCV

The premium is derived from the debt ratio of the system and a scaling variable called BCV. BCV allows us to control the rate at which bond prices increase.

The premium determines profit due to the protocol and in turn, stakers. This is because new CST is minted from the profit and subsequently distributed among all stakers.

debtRatio=bondsOutstanding/cstSupplydebt Ratio = bondsOutstanding/cstSupply

The debt ratio is the total of all CST promised to bonders divided by the total supply of CST. This allows us to measure the debt of the system.

bondPayoutreserveBond=marketValueasset / bondPricebondPayout_{reserveBond} = marketValue_{asset}\ /\ bondPrice

Bond payout determines the number of CST sold to a bonder. For reserve bonds, the market value of the assets supplied by the bonder is used to determine the bond payout. For example, if a user supplies 1000 DAI and the bond price is 250 DAI, the user will be entitled 4 CST.

bondPayoutlpBond=marketValuelpToken / bondPricebondPayout_{lpBond} = marketValue_{lpToken}\ /\ bondPrice

CST Supply

CSTsupplyGrowth=CSTstakers+CSTbonders+CSTDAB+CSTcstpExerciseCST_{supplyGrowth} = CST_{stakers} + CST_{bonders} + CST_{DAB} + CST_{cstpExercise}

CST supply does not have a hard cap. Its supply increases when:

  • CST is minted and distributed to the stakers.

  • CST is minted for the bonder. This happens whenever someone purchases a bond.

  • CST is minted for the DAB. This happens whenever someone purchases a bond. The DAB gets the same number of CST as the bonder.

  • CST is minted for the team, investors, advisors, or the DAO. This happens whenever

    the aforementioned party exercises their CSTP.

CSTstakers=CSTtotalSupplyrewardRateCST_{stakers} = CST_{totalSupply} * rewardRate

At the end of each epoch, the treasury mints CST at a set reward rate. These CST will be distributed to all the stakers in the protocol. You can track the latest reward rate on the Olympus Policy dashboard.

CSTbonders=bondPayoutCST_{bonders} = bondPayout

Whenever someone purchases a bond, a set number of CST is minted. These CST will not be released to the bonder all at once - they are vested to the bonder linearly over time. The bond payout uses a different formula for different types of bonds. Check the bonding section above to see how it is calculated.

CSTDAB=CSTbondersCST_{DAB} = CST_{bonders}

The DAO receives the same amount of CST as the bonder. This represents the DAO profit.

CSTcstpExercise=CSTP+USTCST_{cstpExercise} = CSTP + UST

The individual would supply 1 CSTP along with 1 DAI to mint 1 CST. The CSTP is subsequently burned. Read this Medium article for more information on CSTP.

Backing per CST

CSTbacking=treasuryBalancestablecoin+treasuryBalanceotherAssetsCST_{backing} = treasuryBalance_{stablecoin} + treasuryBalance_{otherAssets}

Every CST in circulation is backed by the Olympus treasury. The assets in the treasury can be divided into two categories: stablecoin and non-stablecoin.

treasuryBalancestablecoin=RFVreserveBond+RFVlpBondtreasuryBalance_{stablecoin} = RFV_{reserveBond} + RFV_{lpBond}

The stablecoin balance in the treasury grows when bonds are sold. RFV is calculated differently for different bond types.

RFVreserveBond=assetSuppliedRFV_{reserveBond} = assetSupplied

For reserve bonds such as DAI bond and FRAX bond, the RFV simply equals to the amount of the underlying asset supplied by the bonder.

RFVlpBond=2sqrt(constantProduct)(% ownership of the pool)RFV_{lpBond} = 2sqrt(constantProduct) * (\%\ ownership\ of\ the\ pool)

Last updated