#transaction #starknet #execution #request #state #contracts #reader

bin+lib starknet_in_rust

Starknet 执行逻辑的 Rust 实现

5 个版本 (3 个重大更新)

0.4.0 2023 年 9 月 13 日
0.3.1 2023 年 8 月 2 日
0.3.0 2023 年 7 月 18 日
0.2.0 2023 年 7 月 3 日
0.1.0 2023 年 6 月 27 日

#30 in #starknet

Apache-2.0

775KB
18K SLoC

🦀 Starknet in Rust 🦀

Rust 中的 Starknet 交易执行库,具有 ⚡cairo-vm⚡

报告错误 · 请求功能

codecov license pr-welcome Telegram Chat

目录

⚠️ 免责声明

🚧 此项目正在开发中,尚未准备好生产使用。使用风险自担。🚧

📖 关于

starknet_in_rustStarknet 的 Rust 实现。它使用 cairo-vm,即 Cairo 虚拟机的 Rust 实现。

🌅 入门

依赖关系

  • Rust 1.70
  • 安装 cairo-lang 0.12 的有效安装(用于编译 cairo 文件)
  • [可选,用于测试目的] Heaptrack

安装

运行以下 make 目标以创建工作环境(如果在 Mac 上或在遇到错误时,请参阅下面的子节)

Linux (x86-64)

$ make deps
$ make build

OSX (Apple Silicon)

$ make deps-macos
$ make build

检查 Makefile 以获取其他目标。

RPC 状态读取器

为了使用 RPC 状态读取器,在根目录下的 .env 文件中添加一个 Infura API 密钥

INFURA_API_KEY={some_key}

如何手动安装脚本依赖项

cairo-lang 需要使用 gmp 库来构建。您可以使用以下命令在基于 Debian 的 GNU/Linux 发行版中安装它

sudo apt install -y libgmp3-dev

在 Mac 上您可以使用 Homebrew

brew install gmp

在 Mac 上您还需要告诉脚本 gmp 库的位置

export CFLAGS=-I/opt/homebrew/opt/gmp/include LDFLAGS=-L/opt/homebrew/opt/gmp/lib

🚀 使用

运行简单合约

您可以在这里找到关于运行合约的教程。

使用CLI

您可以在这里找到如何使用CLI的示例。

测试

添加Infura API密钥。

运行以下命令

$ make test

性能分析

运行以下命令

$ make flamegraph

以生成主操作执行信息的flamegraph。

基准测试

阅读'bench_integration.py'文件以确定哪些行需要注释掉以获得准确的结果。注释掉这些行,然后运行以下命令

$ make benchmark

🛠 贡献

开源社区是一个学习、灵感和创造的好地方,这都归功于像您这样的人的贡献。您的贡献非常受欢迎。

如果您对如何改进项目有任何建议,请随时fork存储库并创建一个pull request,或打开带有'enhancement'标签的问题

  1. 分叉项目
  2. 创建您的功能分支 (git checkout -b feature/AmazingFeature)
  3. 提交您的更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 打开Pull Request

别忘了给项目加星!⭐ 再次感谢您的支持。

  • cairo-vm: 在Rust中快速实现的Cairo VM。
  • cairo-vm-py: 从Python代码中使用cairo-vm的绑定。

📚 文档

Starknet

⚖️ 许可证

本项目采用Apache 2.0许可证。

有关更多信息,请参阅LICENSE

依赖关系

~37–52MB
~1M SLoC