BloomPool

Overview

The core smart contract of the Bloom Ecosystem. Acting as the main entry point for users accessing permissionless RWA yield.

It is made up of three components.

  • The core logic of handling market maker swaps, TBY yield and redemptions.

  • The Orderbook

  • Global PoolStorage

This page will break down the first of the three with the Orderbook and PoolStorage being covered extensively within the following subsections.

Contract API

getRate

function getRate(uint256 id) public view override returns (uint256);

Returns the current rate of a TBY in terms of USD.

redeemLender

function redeemLender(uint256 id) external override;

Redeems the callers TBY . Burning the token and sending the user their share of rewards generated during the tokens lifecycle.

Lenders can only redeem if market makers have done their job swapping the rwa for the asset. In order to prevent race conditions and create a fair environment for all lenders, redemptions will be proportional to the liquidity available and the lenders share of the pool.

redeemBorrower

function redeemBorrower(uint256 id) external override;

Redeem the borrowers's share of rewards generated from the rwa at the time of maturity.

Borrowers can only redeem if market makers have done their job swapping the rwa for the asset. In order to prevent race conditions and create a fair environment for all borrowers, redemptions will be proportional to the liquidity available and the borrowers share of total matched capital for a given token id.

borrowerShareOf

function borrowerShareOf(uint256 id, address account) external view returns (uint256);

Returns the share of matched capital for a borrower for a given token id.

swapIn

function swapIn(address[] memory accounts, uint256 assetAmount)
    external
    KycMarketMaker
    returns (uint256 id, uint256 amountSwapped);

Swaps in assets for rwa tokens, starting the TBY minting process. If interacted with multiple times in a 48 hour period the TBYs that get minted will have the same token id, start , and end time. For system efficiency it is recommended that market makers batch as many matched orders as possible.

Returns the id of the TBY the swap was for, as well as amountSwapped , representing the total amount of assets swapped out of the pool.

This is a permissioned function. Only fully KYCed Market Makers can call this function.

swapOut

This is a permissioned function. Only fully KYCed Market Makers can call this function.

function swapOut(uint256 id, uint256 rwaAmount) external KycMarketMaker returns (uint256 assetAmount);

Swaps asset tokens in and rwa tokens out, ending the TBY life cycle.

Returns assetAmount, representing the total amount of assets swapped into the pool.

Last updated