For all your DeFi needs
You can see a smaller version of this here.
In our aave_borrow.py
script, we do the following:
- Approve our
ETH
to be swapped forWETH
- Swap an
amount
ofETH
forWETH
- Using
deposit_to_aave
we deposit theWETH
as collateral - We use that collateral to borrow
DAI
withborrow_erc20
- Then, we pay it back!
- We can view the txs on etherscan to see what's going on under the hood.
In our short_sell.py
script, we do the following:
- Approve our
ETH
to be swapped forWETH
- Swap an
amount
ofETH
forWETH
- Using
deposit_to_aave
we deposit theWETH
as collateral - We use that collateral to borrow
DAI
withborrow_erc20
- We then sell that
DAI
on theUniswap
DEX This is essentailly a short sell on DAI!
You'll need python, pipx, and eth-brownie installed.
Ideally you'd install with pipx
pip install --user pipx
pipx ensurepath
# restart your terminal
pipx install eth-brownie
Or, you could try it with pip.
pip install -r requirements.txt
Or, if you run into issues use pipx:
You'll need the following environment variables. If you're unfamiliar with environment variables, you can set them all in your .env
file:
export WEB3_INFURA_PROJECT_ID=YourProjectID
export PRIVATE_KEY="0xasdfasdfasdfasd..."
PRIVATE_KEY
: Your Private Key from your Wallet. *Note: If using metamask, you'll have to add a 0x to the start of your private key.WEB3_INFURA_PROJECT_ID
: Your connection to the blockchain. You can get a URL from a service like Infura]. Right now it is hard coded to work with infura, but you can modify it however you want usingbrownie networks modify
.
Note: DO NOT SEND THESE TO GITHUB!!!
And last, be sure to check the aave_dai_token if you're using a testnet DAI token. Aave sometimes changes the token they use on testnet to keep liquidity, please check here for reference. Also, feel free to check the Aave docs as well, to learn more about the tools we are using.
-
Get some WETH
brownie run scripts/get_weth.py --network kovan
- Run the script!
brownie run scripts/aave_borrow.py --network kovan
Optional for running locally:
If you want to run locally, you can install ganache-cli
and yarn
. Here is where you can install yarn.
yarn global add ganache-cli
Then, you can run ganache-cli --fork YOUR_INFURA_URL_HERE
, or just brownie run <YOUR_SCRIPT> --network mainnet-fork
- Get some WETH, borrow, and repay!
brownie run scripts/aave/aave_borrow.py
Or, to test short selling:
brownie run scripts/swap/short_sell.py