Table of Contents
- Table of Contents
โ ๏ธ Disclaimer๐ About- ๐ Getting Started
๐ Usage- ๐ Contributing
- ๐ Related Projects
- ๐ Documentation
- โ๏ธ License
โ ๏ธ Disclaimer
๐ง This project is a work-in-progress and is not ready for production yet. Use at your own risk. ๐ง
๐ About
starknet_in_rust
is an implementation of Starknet in Rust.
It makes use of cairo-vm, the Rust implementation of the Cairo virtual machine.
๐ Getting Started
Dependencies
- Rust 1.70
- A working installation of cairo-lang 0.12 (for compiling the cairo files)
- [Optional, for testing purposes] Heaptrack
Installation
Run the following make targets to have a working environment (if in Mac or if you encounter an error, see the subsection below):
$ make deps
$ make build
Check the Makefile for additional targets.
How to manually install the script dependencies
cairo-lang
requires the gmp
library to build.
You can install it on Debian-based GNU/Linux distributions with:
sudo apt install -y libgmp3-dev
In Mac you can use Homebrew:
brew install gmp
In Mac you'll also need to tell the script where to find the gmp lib:
export CFLAGS=-I/opt/homebrew/opt/gmp/include LDFLAGS=-L/opt/homebrew/opt/gmp/lib
๐ Usage
Running simple contracts
You can find a tutorial on running contracts here.
Using the CLI
You can find an example on how to use the CLI here
Testing
Run the following command:
$ make test
Profiling
Run the following command:
$ make flamegraph
to generate a flamegraph with info of the execution of the main operations.
Benchmarking
Read the 'bench_integration.py' file to identify which lines need to be commented out for accurate results. Comment out those lines and then run the following command:
$ make benchmark
๐ Contributing
The open source community is a fantastic place for learning, inspiration, and creation, and this is all thanks to contributions from people like you. Your contributions are greatly appreciated.
If you have any suggestions for how to improve the project, please feel free to fork the repo and create a pull request, or open an issue with the tag 'enhancement'.
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature
) - Commit your Changes (
git commit -m 'Add some AmazingFeature'
) - Push to the Branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
And don't forget to give the project a star!
๐ Related Projects
- cairo-vm: A fast implementation of the Cairo VM in Rust.
- cairo-vm-py: Bindings for using cairo-vm from Python code.
๐ Documentation
Starknet
โ๏ธ License
This project is licensed under the Apache 2.0 license.
See LICENSE for more information.