not really known
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Tom Bean 91751eea78
Merge pull request #3 from RomanHiden/master
3 years ago
contracts updated readme; bumped brownie version; added returns to flashLoaner 4 years ago
tests adding test 4 years ago
.gitattributes adding structure 4 years ago
.gitignore initial setup 4 years ago
.prettierrc initial setup 4 years ago
.solhint.json adding test 4 years ago
.solhintignore initial setup 4 years ago
README.md Update README.md 3 years ago
brownie-config.yaml initial setup 4 years ago
package.json updated readme; bumped brownie version; added returns to flashLoaner 4 years ago
requirements.txt updated readme; bumped brownie version; added returns to flashLoaner 4 years ago

README.md


bZx v2.0 Smart Contracts

Dependencies

Documentation and Support

Install all necessary packages with

yarn install

Function signature for bZx flash loan

    function flashBorrow(
        uint256 borrowAmount,
        address borrower,
        address target,
        string calldata signature,
        bytes calldata data
    ) external payable returns (bytes memory);
  • borrowAmount - amount you want to flash borrow
  • borrower - receiver of the flash borrow call
  • target - target address for flash borrow callback
  • signature - function signature to be encoded with abi.encodePacked(bytes4(keccak256(bytes(signature))), data), if not provided data will be used as callData instead
  • data - target address function arguments.
  • returns signature funciton operation results.

To take a flash loan in USDC you need to call flashBorrow on the iUSDC contract. List of iToken contracts can be found here

BZxFlashLoaner is an example contract that takes opportunity of the bZx flash loans. it does so in several steps:

  1. Transaction entry point doStuffWithFlashLoan
  2. Loan initialization initiateFlashLoanBzx
  3. operation with loaned money executeOperation
  4. return loaned money before executeOperation end repayFlashLoan
  5. final checks doStuffWithFlashLoan . you can actually revert a transaction at this time if you consider your transaction not profitable for example

Flash Loans are uncolaterized loans that are required to be returned in the same transaction. There is no real world analogy. the closes you can compare is with overnight market or Repurchase Agreement but without collateral.

Please note currently bZx flash loans are FREE. you pay ZERO fees for taking a flash loan.

There are a couple of use cases where someone might use flash loans:

  • Arbitrage
  • Liquidations
  • re-finance exiting loans
  • other

Support

For any dev related questions and support please join our Discord #dev channel. We have a very active community.

Testing

To run the tests, first install the developer dependencies:

pip install -r requirements.txt

Make sure you have environemtn variables setup for ETHERSCAN and INFIRA

export ETHERSCAN_TOKEN= ...
export WEB3_INFURA_PROJECT_ID= ...

Run the all tests with:

brownie test --network mainnet-fork

License

This project is licensed under the Apache License, Version 2.0.