Keth is an open-source, proving backend for the Ethereum Execution Layer built with Kakarot Core EVM and Starkware's provable VM, Cairo.
Keth makes it possible to prove a given state transition asynchronously by:
- pulling pre-state,
- executing all required transactions,
- computing post-state
For instance, this can be run for a given block to prove the Ethereum protocol's State Transition Function (STF).
The project uses uv to manage python dependencies and run commands. To install uv:
curl -LsSf https://astral.sh/uv/install.sh | shMoreover, the project uses rust to manage rust dependencies.
Everything is managed by uv, see the uv docs for the full documentation.
Apart from uv, you just need to copy the .env.example file to .env, making
sure to set the CAIRO_PATH environment variable to the path to the cairo
libraries. To have cairo-ls working, you need to source .env before even
opening your IDE. To avoid doing this manually, you can add the following to
your shell's rc file:
cd() {
builtin cd "$@" || return
if [ -f "$PWD/.env" ]; then
echo "Loading environment variables from $PWD/.env"
source "$PWD/.env"
fi
}This will automatically source the .env file when you cd into a directory
containing it. You can also update this to load only when you enter the keth
directory.
uv run pytest <optional pytest args>Some tests require to compile solidity code, which requires forge to be
installed, and foundry to be in the path, and to run forge build.
Any changes to the rust code requires a re-build and re-install of the python package, see the uv docs for more information.
The tl;dr is:
uv run --reinstall <command>Forgetting the --reinstall flag will not re-build the python package and
consequentially not use any changes to the rust code.
Keth is a work in progress (WIP
Coming soon 🏗️.
- Herodotus: thanks to Herodotus team for SHARP SDK libraries.