A simple example bot for Enzyme Finance
- clone this repo and navigate into it
- install the necessary dependencies with
yarn
- create a new
.env
file and add the appropriate environment variables per.env.example
- run
yarn codegen
to generate the necessary subgraph queries - run
yarn dev
Even if you plan on implementing a trading strategy on an Ethereum vault, you should begin by using a Polygon vault to get familiar with the setup and to do initial testing. Next, change the strategy in the tradeAlgorithmically
function to something that you think will actually make you money. Test it and test it some more. Once you're comfortable, update all the appropriate environment variables to reflect your mainnet Enzyme Vault and change the bot instantiation at the bottom of index.ts
by passing it ETHEREUM
instead of POLYGON
. Of course, if you are using a Polygon vault then leave the instantiation as is and congrats - you are done!
A new Medium post was published detailing the substantial update to this repo. As a brief recap:
- The bot switched from using the
Kovan
testnet to transacting overPolygon
- It now uses Uniswap V3 instead of V2
- It uses the correct properties from the updated subgraph and Enzyme environment
The Medium post that originally accompanied this bot is mostly still accurate, however given a few changes in the protocol due to an upgrade in May 2021, I've updated a few things.
The bot constructor now calls a new subgraph query to populate a vault
property on the class. This property holds the addresses of both the vault's Comptroller Proxy and the Fund Deployer with which that Comptroller Proxy was... deployed. This is referred to as release
, and is how we identify on which version of the protocol the Vault is currently deployed. This query serves two purposes - we eliminate an environment variable (the comptroller proxy address), and we can use the release id to filter out assets which the bot will trade; not all assets are available on all releases.
There are various small changes in the bot logic to accomodate this new property and the removal of the old one. I believe they're fairly self-explanatory, but feel free to reach out on Telegram @eek637 if you have any questions.