/starknet-rs

Complete StarkNet library in Rust

Primary LanguageRustApache License 2.0Apache-2.0

Logo

starknet-rs

Complete StarkNet library in Rust

starknet-version-v0.9.0 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.2.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

  • Sequencer gateway / feeder gateway client
  • Full node JSON-RPC API client
  • Smart contract deployment
  • Signer for using IAccount account contracts
  • Strongly-typed smart contract binding code generation from ABI

Crates

This workspace contains the following crates:

  • starknet: Re-export of other sub-crates (recommended)
  • starknet-core: Core data structures for interacting with StarkNet
  • starknet-providers: Abstraction and implementation of clients for interacting with StarkNet nodes and sequencers
  • starknet-contract: Types for deploying and interacting with StarkNet smart contracts
  • starknet-crypto: Low-level cryptography utilities for StarkNet
  • starknet-signers: StarkNet signer implementations
  • starknet-accounts: Types for handling StarkNet account abstraction
  • starknet-ff: StarkNet field element type
  • starknet-macros: Useful macros for using the starknet crates

Example

Examples can be found in the examples folder:

  1. Get the latest block from alpha-goerli testnet

  2. Deploy contract to alpha-goerli testnet

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

    Make sure your account has some L2 Goerli ETH to pay for the transaction fee. You can use this faucet to fund your account.

  4. Declare contract on alpha-goerli testnet

  5. Query the latest block number with JSON-RPC

  6. Call a contract view function via sequencer gateway

License

Licensed under either of

at your option.