This repo contains the contracts and offchain systems needed to run a liquidation bot for the MELD lending and borrowing protocol.
The contracts are written in Solidity, and the bot in Python.
To configure the bot, create a .env
file following the example of .env.example
filling the details for configuration.
The bot and contracts are provided as refference, but we encourage you to extend them and ensure they work following your desired flows. Do not trust the contracts and scripts in this repo blidly, DYOR.
The repo has a standard Hardhat project where you can work and compile your contracts. The main contract in this project is LiquidateLoan.sol
. The contract is well documented and flows are explained in the solidity file.
run yarn
to install dependencies
To deploy your own version of the bot, run the command
yarn hardhat run scripts/deploy.ts --network <network>
The network configuration is in the hardhat.config.ts
file. You can add or modify networks there. There is a .sample.env
file that you can use as a template to create a .env
file with the private keys of the accounts you want to interact with the different networks. You can also configure a different RPC URL for each network, as well as set your own ETHERSCAN_API_KEY
.
To verify contracts on many explorers, you need to set the appropriate ETHERSCAN_API_KEY
env var and run the following command:
yarn hardhat verify --network <network> <contract address> <constructor arguments>
The bot is written in Python in the folder ./offchain-bot
with all the dependencies.
To execute, ensure you have all the dependencies installed and run
python offchain-bot/main.py
The bot reads from MELD's API the list of accounts in a liquidatable state, and leverages flashloans and a univ2 exchange (Azomi) to:
- Take a flashloan of the debt asset
- Liquidate that asset and receive a collateral asset from the user
- Swap the collateral asset into the asset to pay the flashloan into
- Check that there is enough money for the full transaction to happen
- Send the benefit to the treasury, and repay the flashloan