Equations

Staking

deposit=withdrawaldeposit = withdrawal

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

rebase=1(bohmDeposits/sBOHMOutstanding)rebase = 1 - ( bohmDeposits / sBOHMOutstanding )

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

Bonding

bondPrice=1+Premiumbond Price = 1 + Premium

BOHM has an intrinsic value of 1 USDC, 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 BOHM is minted from the profit and subsequently distributed among all stakers.

debtRatio=bondsOutstanding/bohmSupplydebt Ratio = bondsOutstanding/bohmSupply

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

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

Bond payout determines the number of BOHM 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 BOMB and the bond price is 250 BOMB, the user will be entitled 4 BOHM.

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

For liquidity bonds, the market value of the LP tokens supplied by the bonder is used to determine the bond payout. For example, if a user supplies 0.001 BOHM-BOMB LP token which is valued at 1000 BOMB at the time of bonding, and the bond price is 250 BOMB, the user will be entitled 4 BOHM.

BOHM Supply

BOHMsupplyGrowth=BOHMstakers+BOHMbonders+BOHMDAO+BOHMpohmExerciseBOHM_{supplyGrowth} = BOHM_{stakers} + BOHM_{bonders} + BOHM_{DAO} + BOHM_{pohmExercise}

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

  • BOHM is minted and distributed to the stakers.

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

  • BOHM is minted for BOHM.MONEY. This happens whenever someone purchases a bond. BOHM.MONEY gets the same number of BOHM as the bonder.

BOHMstakers=BOHMtotalSupplyrewardRateBOHM_{stakers} = BOHM_{totalSupply} * rewardRate

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

BOHMbonders=bondPayoutBOHM_{bonders} = bondPayout

Whenever someone purchases a bond, a set number of BOHM is minted. These BOHM 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.

BOHMDAO=BOHMbondersBOHM_{DAO} = BOHM_{bonders}

BOHM.MONEY receives the same amount of BOHM as the bonder. This represents the BOHM.MONEY profit.

BOHMpohmExercise=pBOHM+USDCBOHM_{pohmExercise} = pBOHM + USDC

The individual would supply 1 pBOHM along with 1 USDC to mint 1 BOHM. The pBOHM is subsequently burned.

Backing per BOHM

BOHMbacking=treasuryBalancestablecoin+treasuryBalanceotherAssetsBOHM_{backing} = treasuryBalance_{stablecoin} + treasuryBalance_{otherAssets}

Every BOHM in circulation is backed by the BOHM.MONEY 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 USDC bond and BUSD 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)

For LP bonds such as OHM-USDC bond and OHM-BUSD bond, the RFV is calculated differently because the protocol needs to mark down its value. Why? The LP token pair consists of BOHM, and each BOHM in circulation will be backed by these LP tokens - there is a cyclical dependency. To safely guarantee all circulating BOHM are backed, the protocol marks down the value of these LP tokens, hence the name risk-free value (RFV).

Last updated