Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Important: If you're upgrading snforge to version 0.48.0 or later, please read the 0.48.0 Migration Guide.

First Steps With Starknet Foundry

In this section we provide an overview of Starknet Foundry snforge command line tool. We demonstrate how to create a new project, compile, and test it.

To start a new project with Starknet Foundry, run snforge new

$ snforge new hello_starknet

📝 Note

By default, snforge new creates a project with a simple HelloStarknet contract. You can create a different project using the --template flag. To see the list of available templates, refer to the snforge new documentation

Let's check out the project structure

$ cd hello_starknet
$ tree . -L 1
Output:
.
├── Scarb.lock
├── Scarb.toml
├── snfoundry.toml
├── src
└── tests

2 directories, 3 files

  • src/ contains source code of all your contracts.
  • tests/ contains tests.
  • Scarb.toml contains configuration of the project as well as of snforge
  • Scarb.lock a locking mechanism to achieve reproducible dependencies when installing the project locally

And run tests with snforge test

$ snforge test
Output:
Collected 2 test(s) from hello_starknet package
Running 0 test(s) from src/
Running 2 test(s) from tests/
[PASS] hello_starknet_integrationtest::test_contract::test_cannot_increase_balance_with_zero_value (l1_gas: ~0, l1_data_gas: ~96, l2_gas: ~360000)
[PASS] hello_starknet_integrationtest::test_contract::test_increase_balance (l1_gas: ~0, l1_data_gas: ~192, l2_gas: ~480000)
Tests: 2 passed, 0 failed, 0 ignored, 0 filtered out

Using snforge With Existing Scarb Projects

To use snforge with existing Scarb projects, make sure you have declared the snforge_std package as your project development dependency.

Add the following line under [dev-dependencies] section in the Scarb.toml file.

# ...

[dev-dependencies]
snforge_std = "0.33.0"

Make sure that the above version matches the installed snforge version. You can check the currently installed version with

$ snforge --version
Output:
snforge 0.33.0

It is also possible to add this dependency using scarb add command.

$ scarb add snforge_std@0.33.0 --dev

Additionally, ensure that starknet-contract target is enabled in the Scarb.toml file.

# ...
[[target.starknet-contract]]

📝 Note

You can additionally specify scarb settings to avoid compiling Cairo plugin which snforge_std depends on. The plugin is written in Rust and, by default, is compiled locally on the user's side.

[tool.scarb]  
allow-prebuilt-plugins = ["snforge_std"]

This configuration requires Scarb version >= 2.10.0 .