Git Product home page Git Product logo

starknet-foundry's Introduction

logo

Starknet Foundry

Telegram Chat Telegram Support

Blazingly fast toolkit for developing Starknet contracts designed & developed by ex Protostar team from Software Mansion based on native Cairo test runner and Blockifier, written in Rust ๐Ÿฆ€.

Need help getting started with Starknet Foundry? Read the ๐Ÿ“– Starknet Foundry Book!

Example run

Starknet Foundry, like its Ethereum counterpart, consists of different modules

  • snforge: Starknet testing framework (like Truffle, Hardhat and DappTools but for Starknet).
  • sncast: All-in-one tool for interacting with Starknet smart contracts, sending transactions and getting chain data.

Installation

To install Starknet Foundry, first install snfoundryup by running:

curl -L https://raw.githubusercontent.com/foundry-rs/starknet-foundry/master/scripts/install.sh | sh

Follow the instructions and then run

snfoundryup

You can also specify a version you wish to install:

snfoundryup -v 0.9.0

To verify that the Starknet Foundry is installed correctly, run snforge --version and sncast --version.

Features

  • Fast testing framework snforge written in Rust
  • High-quality dependency management using scarb
  • Intuitive interactions and deployment of Starknet contracts through sncast

Roadmap

Starknet Foundry is under active development! Expect a lot of new features to appear soon! ๐Ÿ”ฅ

  • Running tests written in Cairo
  • Contract interactions testing
  • Interacting with Starknet from command line
  • Multicall support
  • Cheatcodes
  • Starknet state forking
  • Fuzz testing
  • Parallel tests execution
  • Performance improvements
  • Deployment scripts written in Cairo
  • Transactions profiling ๐Ÿ—๏ธ
  • Debugging utilities ๐Ÿ—๏ธ
  • L1 โ†” L2 messaging and cross-chain testing
  • Test coverage reports

Performance

Performance plot

snforge achieves performance comparable to the Cairo Test Runner with improved user experience.

Getting Help

You haven't found your answer to your question in the Starknet Foundry Book?

Found a bug? Open an issue.

Contributions

Starknet Foundry is under active development, and we appreciate any help from the community! Want to contribute? Read the contribution guidelines.

Check out development guide for local environment setup guide.

starknet-foundry's People

Contributors

0xicosahedron avatar abulenok avatar adventureseeker987 avatar arcticae avatar atreay avatar bartekryba avatar cptartur avatar ddoktorski avatar delevoxdg avatar dependabot[bot] avatar draggu avatar drknzz avatar duralsh avatar enitrat avatar glihm avatar karol-bisztyga avatar ksew1 avatar maciektr avatar maksymiliandemitraszek avatar mkaput avatar omahs avatar piotmag769 avatar ptisserand avatar radinyn avatar tadev0 avatar thenry14 avatar tkumor3 avatar tomek0123456789 avatar utilitycoder avatar war-in avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

starknet-foundry's Issues

Contract deploy tests

software-mansion/protostar#2108

Deploy is already implemented in new runner (cheatcodes_hint_processor.rs). Tests verifying if it actually works should be added. If not, it should be fixed in this or follow-up issue.

Test cases to cover apart from basic cases:

  • Check if class_hash exists, is correct and declared (and what happens if non-existing one does get passed)
  • Check if contract_address is correct and aligned with the calculated one (and what hapens if incorrect one gets passeed) Contract address no longer provided in deploy
  • Check if the constructor is invoked
  • Check what happens when constructor panics

Scarb artifact name change

In new scarb version the artifact name will change. Right now it is:

[package name].starknet_artifacts.json

and it will change to

[target name].starknet_artifacts.json

In most cases target name is the same as package name, but it could be different. We should take a target name from scarb metadata, and use the information to search for starknet_artifacts.json file

name.contains("starknet_artifacts").then_some(entry.path())

Docs for scarb metadata can be found here:
https://docs.rs/scarb-metadata/latest/scarb_metadata/struct.TargetMetadata.html#structfield.name

An example on how we retrieve some metadata can be found here:

let metadata = scarb_metadata::MetadataCommand::new()

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.