From 32dd9cff3a8d8186b14cc9539929e1f6ad0e49e5 Mon Sep 17 00:00:00 2001 From: Luke Van Seters Date: Tue, 14 Sep 2021 13:03:45 -0400 Subject: [PATCH] Write setup --- README.md | 144 +++++++++++++++++++----------------------------------- 1 file changed, 51 insertions(+), 93 deletions(-) diff --git a/README.md b/README.md index 35b9b80..21175dc 100644 --- a/README.md +++ b/README.md @@ -1,104 +1,62 @@ # mev-inspect -A [WIP] Ethereum MEV Inspector in Python managed by Poetry - -## Containers -mev-inspect's local setup is built on [Docker Compose](https://docs.docker.com/compose/) - -By default it starts up: -- `mev-inspect` - a container with the code in this repo used for running scripts -- `db` - a postgres database instance -- `pgadmin` - a postgres DB UI for querying and more (avaiable at localhost:5050) +An MEV inspector for Ethereum ## Running locally -Setup [Docker](https://www.docker.com/products/docker-desktop) -Setup [Poetry](https://python-poetry.org/docs/#osx--linux--bashonwindows-install-instructions) +mev-inspect-py is built to run on kubernetes locally and in production -Install dependencies through poetry +### Install dependencies + +Setup a local kubernetes deployment (we use [kind](https://kind.sigs.k8s.io/docs/user/quick-start)) +Setup [Tilt](https://docs.tilt.dev/install.html) which manages the local deployment + +### Start up + +Set an environment variable `RPC_URL` to an RPC for fetching blocks +Example: +``` +export RPC_URL="http://111.111.111.111:8546" +``` + +Note: mev-inspect-py currently requires and RPC with support for parity traces + +Next, start all servcies with: +``` +tilt up +``` + +Press "space" to see a browser of the services starting up + +On first startup, you'll need to apply database migrations. Apply with: +``` +kubectl exec deploy/mev-inspect-deployment -- alembic upgrade head +``` + +## Inspecting + +### Inspect a single block +### Inspect many blocks +### Inspect all incoming blocks + +## Database migrations + +### Creating a new database migration + +## Contributing + +### Guide + +Coming soon + +### Pre-commit + +We use pre-commit to maintain a consistent style, prevent errors, and ensure test coverage. + +To set up, install dependencies through poetry ``` poetry install ``` -Start the services (optionally as daemon) -``` -poetry run start [-d] -``` - -Apply the latest migrations against the local DB: -``` -poetry run exec alembic upgrade head -``` - -Run inspect on a block -``` -poetry run inspect -b/--block-number 11931270 -r/--rpc 'http://111.11.11.111:8545/' -``` - -To stop the services (if running in the background, otherwise just ctrl+c) -``` -poetry run stop -``` - -MEV container can be attached via -``` -poetry run attach -``` - -Running additional compose commands are possible through standard `docker -compose ...` calls. Check `docker compose help` for more tools available - -## Executing scripts -Any script can be run from the mev-inspect container like -``` -poetry run exec -``` - -For example -``` -poetry run exec python examples/uniswap_inspect.py -block_number=123 -rpc='111.111.111' -``` - -### Poetry Scripts -```bash -# code check -poetry run lint # linting via Pylint -poetry run test # testing and code coverage with Pytest -poetry run isort # fixing imports -poetry run mypy # type checking -poetry run black # style guide -poetry run pre-commit run --all-files # runs Black, PyLint and MyPy -# docker management -poetry run start [-d] # starts all services, optionally as a daemon -poetry run stop # shutsdown all services or just ctrl + c if foreground -poetry run build # rebuilds containers -poetry run attach # enters the mev-inspect container in interactive mode -# launches inspection script -poetry run inspect -b/--block-number 11931270 -r/--rpc 'http://111.11.11.111:8545/' -``` - - -## Rebuilding containers -After changes to the app's Dockerfile, rebuild with -``` -poetry run build -``` - -## Using PGAdmin - -1. Go to [localhost:5050](localhost:5050) - -2. Login with the PGAdmin username and password in `.env` - -3. Add a new engine for mev_inspect with - - host: db - - user / password: see `.env` - -## Contributing - -Pre-commit is used to maintain a consistent style, prevent errors and ensure test coverage. - -Install pre-commit with: +Then install pre-commit hooks with ``` poetry run pre-commit install ``` - -Update README if needed