Overview

Architecture of Bluejay Protocol

Overview

The protocol consists of multiple key components. The roles of the various components are described below:

TreasuryBondDepository

The module is used to quote the user the price of the bond as well as to allow them to purchase and redeem the bonds. Proceeds from the sale will be transferred to the Treasury module.

Note: The design is similar to OlympusDAO's Bond Depository except that a user may purchase multiple bonds without resetting the vesting period.

BondGovernor

The module is used by the DAO to specify the different parameters around the different treasury bonds. These parameters will be used by the TreasuryBondDepository to price its bonds.

Staking

The module is used to allow users to stake and lock up their BLU tokens. The staked BLU (sBLU) token is redeemable 1-1 for the BLU token. The module automatically compounds the amount of staked tokens each second. The DAO may adjust the monetary policy by setting a different staking reward here.

Treasury

The module is used to hold all assets, reserve tokens & liquidity tokens, on behalf of the protocol. In addition, it's the only module that can mint BLU tokens. The module allows the StablecoinEngine module to withdraw assets for staking in the liquidity pools. It also allows the bond depositories and staking contract to mint more BLU tokens. All BLU tokens generated are backed by the value of the assets held in the treasury.

StablecoinEngine

The module is used to create the various stablecoins. When a stablecoin is created, it must be backed by the reserve asset. An equal value of stablecoin and reserve assets will be staked in the LiquidityPool and immediately made available for anyone to buy or sell. Only the DAO can instruct the module to add or remove liquidity to a certain stablecoin's liquidity pool, depending on the proportion of the treasury to allocate to each pool. Additionally, the engine allows the Stabilizer module to perform a swap on the LiquidityPool when the price of the stablecoin is off-pegged and the StabilizingBondDepository is incapable of bringing it back to peg under extreme conditions.

StabilizingBondDepository

The module is an automatic mechanism to allow the protocol to bring the different stablecoins' prices to peg with their external oracle prices. It offers either expansionary bonds or contractionary bonds, depending on the direction of price deviation, to bonder at a discount determined by the magnitude of the price deviation. When bonds are purchased, the module either buys the stablecoin to burn it to increase the price of the stablecoin on the pool or mints more stablecoin to swap for reserve assets to decrease the price of stablecoin on the pool.

Oracle

The module is an interface for getting the price of an asset relative to another. It is connected to external price oracles like Chainlink for stablecoin prices. The oracle is used by the StabilizingBondDepository to determine the discounted price of the stabilizing bonds and the Stabilizer to determine how much assets the StablecoinEngine needs to swap on the LiquidityPool to bring the prices to peg as well as the direction for swap.

LiquidityPool

The module is a Uniswap V2 Pair contract that allows users to swap reserve assets for stablecoins or vice versa. It will be deployed from Uniswap's factory contract and will allow the stablecoins to be available on the Uniswap exchange interface.

DAO

The DAO is a Gnosis multi-sig wallet that is operated by several trusted members of the team.

Last updated