Flash Loans

Beraborrow offers Flash Loans on all the assets it controls!

What is a Flash loan?

It is an uncollateralised/unsecured loan that is deposited and repaid within the same block. Meaning a user can theoretically borrow ♾️amount (or as much of that asset is available) as long as the loan + fees is repaid within the same block.

How does Beraborrow use flashloans?

Instead of looping multiple times to increase exposure, users can do the following:

Let's imagine Alice has $100 worth of collateral and wants 5x the exposure to it.

Alice can flashloan $500 of collateral and deposit that as collateral into Beraborrow to mint $400 worth of NECT, then take the NECT minted and sell if for the collateral, now Alice has $500 ($400 + initial $100) of collateral, enough to repay the flashloan. In doing this Alice now has $500 worth of exposure to the collateral in Beraborrow and owes $400 worth of NECT.

If the value of the asset increases by 25% now that collateral is worth $625, but Alice still needs to repay $400 of NECT to Beraborrow to redeem her $625.

What Alice can do is flash the $400 of NECT redeem her $625 worth of collateral, sell $400 worth to buy NECT and then she is left with $225 of collateral - fees. A 125% profit from a 25% increase.

By using flashloans Alice could complete this process in 2 steps rather than having to loop 6+ times.

Nectar

Nectar ($NECT) can be flash-minted for more than hextillions of value. You repay the entire amount plus0.0001% of the volume flash-minted.

With this mechanic, $NECT aspires to be the most efficient arbitraging asset in Beraborrow's ecosystem.

Collateral Assets

It will depend on the type of collateral assets, since examples like siBGT (staked iBGT) will probably stay intransferable, but except for this rare edge case all collateral types will be flashloanable.

The current fee for collateral assets is 0.001%over volume.

Dev Integration

You will find the flash-mint endpoint for Nectar in its token address, and for the specific collateral type it will be in itsDenManager contract.

The endpoints follows the IERC3156 standard:

function flashLoan(
    IERC3156FlashBorrower receiver,
    address token,
    uint256 amount,
    bytes calldata data
) external returns (bool) {
  ...
  require(
      receiver.onFlashLoan(msg.sender, token, amount, fee, data) == keccak256("ERC3156FlashBorrower.onFlashLoan"),
      "IERC3156: Callback failed"
  );
  ...
  /// @dev Remember to repay the amount + fee
}

Last updated