Crates.io | starknet_in_rust |
lib.rs | starknet_in_rust |
version | 0.4.0 |
source | src |
created_at | 2023-06-27 17:38:38.798902 |
updated_at | 2023-09-13 20:14:34.390465 |
description | A Rust implementation of Starknet execution logic |
homepage | |
repository | |
max_upload_size | |
id | 901455 |
size | 5,827,576 |
Starknet transaction execution library in Rust, featuring β‘cairo-vmβ‘
π§ This project is a work-in-progress and is not ready for production yet. Use at your own risk. π§
starknet_in_rust
is an implementation of Starknet in Rust.
It makes use of cairo-vm, the Rust implementation of the Cairo virtual machine.
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
$ make deps-macos
$ make build
Check the Makefile for additional targets.
In order to use the RPC state reader add an Infura API key in a .env
file at root:
INFURA_API_KEY={some_key}
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
You can find a tutorial on running contracts here.
You can find an example on how to use the CLI here
Run the following command:
$ make test
Run the following command:
$ make flamegraph
to generate a flamegraph with info of the execution of the main operations.
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
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'.
git checkout -b feature/AmazingFeature
)git commit -m 'Add some AmazingFeature'
)git push origin feature/AmazingFeature
)And don't forget to give the project a star! β Thank you again for your support.
This project is licensed under the Apache 2.0 license.
See LICENSE for more information.