When contributing to this repository, please first discuss the change you wish to make via issue, before making a change. Please note we have a code of conduct, please follow it in all your interactions with the project.
To get started on Kakarot, you'll need python3.9, as well as Starknet-related
libraries, e.g. cairo-lang
.
- Follow Starknet's install tutorial.
- Install poetry.
To assess the soundness of our EVM, we compile common Solidity contracts and run tests on them through Kakarot.
To be able to verify and compare the ABI and bytecode of the Solidity test contracts, first make sure you have foundry installed on your machine.
Then, run:
make build-foundry
Common caveats:
- python3.10 is not compatible with the cairo-lang library. Make sure poetry and
your pyenv are using the 3.9 version of Python. Your machine may have
conflicting versions of python.
- 3.9-dev will fail when running
make setup
since it is evaluated as 3.9.10+ and therefore an invalid PEP 440 version (Poetry enforces PEP 440 versioning).
- 3.9-dev will fail when running
- Mac M1 chips are subject to some quirks/bugs with regards to some
cryptographic libraries used by
cairo-lang
.- you may need to run
brew install gmp
. - if some c-compiler errors persist, refer to this Cairo issue for solutions.
- you may need to run
To set up a development environment, please follow these steps:
-
Clone the repo
git clone https://github.com/sayajin-labs/kakarot
-
Install dependencies
make setup
-
Run tests
make test
You've found a bug in the source code, a mistake in the documentation or maybe you'd like a new feature? You can help us by submitting an issue on GitHub. Before you create an issue, make sure to search the issue archive -- your issue may have already been addressed!
Please try to create bug reports that are:
- Reproducible. Include steps to reproduce the problem.
- Specific. Include as much detail as possible: which version, what environment, etc.
- Unique. Do not duplicate existing opened issues.
- Scoped to a Single Bug. One bug per report.
Even better: Submit a pull request with a fix or new feature!
- Search our repository for open or closed Pull Requests that relate to your submission. You don't want to duplicate effort.
- Fork the project
- Enable workflows so CI can add an auto-commit during format checks
- Create your feature branch (
git checkout -b feat/amazing_feature
) - Add, then commit your changes (
git commit -m 'feat: add amazing_feature'
) - Push to the branch (
git push origin feat/amazing_feature
) - Open a Pull Request