# Flash Loans

Beraborrow offers Flash Loans on all the assets it controls!

### What is a Flash loan?

&#x20;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 achieve leverage using a flash loan.

For example, Alice starts with $100 worth of collateral and wants 5x exposure. She flashloans $500 worth of the collateral and deposits it into Beraborrow, minting $400 worth of $NECT. Alice then sells the $NECT for collateral, giving her $500 ($400 from the sale plus her initial $100). This is enough to fully repay the flash loan.

As a result, Alice now has $500 worth of exposure to the collateral within Beraborrow but owes $400 worth of $NECT.

### Nectar

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

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

<figure><img src="https://1570492309-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FffzDCMBDa391vIMqruBP%2Fuploads%2F94oBdaZdLRZiwJBcg8yv%2Fimage.png?alt=media&#x26;token=ba54904b-6ce9-46b2-b2a1-d9ff081576d7" alt=""><figcaption></figcaption></figure>

### Collateral Assets

It will depend on the type of collateral assets, since examples like `$siBGT` (staked `$iBGT`) will probably stay non-transferable, 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 its`DenManager` contract.

The endpoints follows the [IERC3156 ](https://eips.ethereum.org/EIPS/eip-3156)standard:

```solidity
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
}
```
