Compiling a Project with Protostar
danger
Compiling Cairo 0 contracts is deprecated and will be removed in the future. Consider migrating your contracts to Cairo 1.
info
Compiling Cairo 0 contracts has recently been renamed to build-cairo0.
To compile your Starknet contracts using Protostar, follow these steps:
- Specify the contracts and their corresponding Cairo source files in the protostar.tomlconfiguration file. Each Cairo file that contains an entrypoint function should be listed in thecontractssection of the configuration file. An entrypoint is a function decorated with@constructor,@external,@view, or@l1_handler. If a Cairo file is imported by a file that is already included in the contracts section, it does not need to be listed separately. For example:
protostar.toml
# ...
[contracts]
main = ["./src/main.cairo"]
proxy = ["./src/proxy.cairo"]
- Run the protostar build-cairo0command. This will generate the compiled contracts in thebuilddirectory by default. You can specify a custom output directory using thecompiled-contracts-dirargument.
$ protostar build-cairo0 --compiled-contracts-dir out
This will create the following files in the out directory:
protostar-project
├── src
│   ├── main.cairo
│   └── proxy.cairo
├── out
│   ├── main.json
│   ├── main_abi.json
│   ├── proxy.json
│   └── proxy_abi.json
└── protostar.toml
Checking cairo-lang version
Protostar ships with its own version of cairo-lang and formatter, so you don't need to set up the environment separately. You can check the version of Cairo-lang that Protostar uses to compile your project by running protostar -v.
$ protostar -v
Protostar version: X.Y.Z
Cairo-lang version: A.B.C
Cairo 1 compiler version: J.K.L