starknet 0.1.0 copy "starknet: ^0.1.0" to clipboard
starknet: ^0.1.0 copied to clipboard

The Dart SDK to interact with any smart contracts on StarkNet

starknet.dart #

The goal of this SDK is to be able to interact with StarkNet smart contracts in a type-safe way.

You can also call the JSON-RPC endpoint exposed by the StarkNet full nodes (see the specs).

📚 docs

💬 telegram chat

Motivation #

StarkNet is a revolution in the web3 world: it allows to scale Ethereum and offers the best possible UX thanks to unique features like account abstraction or session keys.

But web3 mainstream adoption won't happen unless decentralized applications go to mobile.

That's why it's a priority to build the best possible Starknet SDK for dart applications, thus unlocking the era of Flutter mobile apps on StarkNet.

Roadmap #

You can follow the progress of the project directly on the kanban.

Contributing #

If you want to contribute to this project or have any suggestion, please check out our Contributor Guide.

Dev Guide #

Initial Setup #

Refer to the main README for the initial setup.

Run Tests #

You can run the tests with the following command:

dart test

To run the tests on devnet use the following command:

NETWORK=devnet dart test -t integration-devnet-040

Release a new version to pub.dev #

You simply need to create a PR where you:

  1. Bump the package version
  2. Add an entry to the CHANGELOG

Make sure it passes all the CI tests, then merge it to release a new version of the package.

Generate freezed model classes #

To avoid writing too much boilerplate, we use the freezed library to automatically generate serializer logic.

You can run the following command to generate those classes:

dart run build_runner build

Alternatively, you can hit Cmd + Shift + B in vscode.

Generate docs #

To generate docs, run:

dart doc .

For more advanced features, check out the dartdoc package.

Compile cairo contracts #

Refer to the main README for compiling cairo contracts.

You can also see compiled contracts in this folder.