xJonathanLEI / starknet-rs

Complete Starknet library in Rust™
https://starknet.rs
Apache License 2.0
286 stars 101 forks source link
ethereum rust starknet

Logo

starknet-rs

Complete Starknet library in Rust

starknet-version-v0.13.0 jsonrpc-spec-v0.7.1 linting-badge crates-badge

Note that starknet-rs is still experimental. Breaking changes will be made before the first stable release. The library is also NOT audited or reviewed for security at the moment. Use at your own risk.

The underlying cryptography library starknet-crypto does NOT provide constant-time guarantees.

Adding starknet-rs to your project

To use the crate from crates.io, add the following to your Cargo.toml file:

[dependencies]
starknet = "0.11.0"

Note that the crates.io version might be outdated. You may want to use the library directly from GitHub for all the latest features and fixes:

[dependencies]
starknet = { git = "https://github.com/xJonathanLEI/starknet-rs" }

Features

Crates

This workspace contains the following crates:

WebAssembly

starknet-rs can be used as a WebAssembly module. Check out this example.

Using starknet-rs from C++

starknet-rs can be used as a dynamic or static library from C++. Check out this example.

Performance

Benchmark results for native and WebAssembly targets are available for these crates:

For instructions on running the benchmark yourself, check here.

Example

Examples can be found in the examples folder:

  1. Get the latest block from alpha-sepolia testnet

  2. Deploy contract to alpha-sepolia testnet via UDC

  3. Mint yourself 1,000 TST tokens on alpha-sepolia

    Make sure your account has some L2 Sepolia ETH to pay for the transaction fee.

  4. Declare Cairo 1 contract on alpha-sepolia testnet

    Make sure your account has some L2 Sepolia ETH to pay for the transaction fee.

  5. Declare legacy Cairo 0 contract on alpha-sepolia testnet

    Make sure your account has some L2 Sepolia ETH to pay for the transaction fee.

  6. Query the latest block number with JSON-RPC

  7. Encoding and decoding Cairo types

  8. Batched JSON-RPC requests

  9. Call a contract view function

  10. Deploy an Argent X account to a pre-funded address

  11. Inspect public key with Ledger

  12. Deploy an OpenZeppelin account with Ledger

  13. Transfer ERC20 tokens with Ledger

  14. Parsing a JSON-RPC request on the server side

  15. Inspecting a erased provider-specific error type

License

Licensed under either of

at your option.