Install virtual Python environment builder, e.g. on OpenBSD:
doas pkg_add git py3-virtualenv
Setup virtual environment:
cd defi-tracking/
virtualenv venv
. venv/bin/activate
pip install web3 python-dotenv
Set ETHERSCAN_KEY
and ETH_NODE_API
variables in .env
file
twap.py calculates TWAP for Uniswap/Sushiswap pools. This requires access to Ethereum archive node (e.g. Alchemy)
compound_repay.py calculates expected Compound borrow balance in future. Useful when planning to repay only interest amount and keep principal balance fixed.
exit_pool.py estimates exit results from UMA LM pools on Balancer. User can provide expected price-id at expiration, synth price in the pool at exit, and relative size of pool at exit. If config_exit_pool.json is provided, expected settlement price is assumed the same as current price from Coingecko (if available for specific price-id). The script outputs expected results for user either
- closing position before expiration and rebalancing excess/deficit synth tokens from the pool or
- waiting for expiration, withdrawing both pairs from the pool and calling
settleExpired
on the EMP contract
track_uma.py fetches all deployed contracts and their parameters from UMA protocol on-chain data. Use -t option to fetch historical collateral and synths balances. The script uses cache.json
file as a cache, thus need to set -o option to overwrite the cache and fetch correct balances. Also contracts.csv
is saved in table format for human readability.
TODO:
- optimize fetching all parameters from create transaction
block_timestamp.py converts timestamp to latest block number and vice versa.