protostar
protostar copied to clipboard
Protostar is a toolchain for developing and testing Starknet contracts
StarkNet smart contract development toolchain
Table of contents
- About
- Documentation
- Installation
- Development
- Requirements
- Setting up environment
- Git hooks
- Updating website/docs
- Deployment
About
Protostar manages your dependencies, compiles your project, and runs tests.
Documentation
https://docs.swmansion.com/protostar/
Installation
To install the tool, run:
curl -L https://raw.githubusercontent.com/software-mansion/protostar/master/install.sh | bash
If you want to specify a version, run the following command with the requested version:
curl -L https://raw.githubusercontent.com/software-mansion/protostar/master/install.sh | bash -s -- -v 0.3.2
Development
Requirements
- good knowledge of Python
- good knowledge of pytest
- basic knowledge of Cairo and StarkNet
- basic knowledge of mypy
Setting up environment
- Install Python version management tool: pyenv or asdf
- Install
Python 3.7.12using the Python version management tool and activate that version- To be able to build Protostar, set the following environmental variable before installing Python:
PYTHON_CONFIGURE_OPTS="--enable-shared"
- To be able to build Protostar, set the following environmental variable before installing Python:
- Clone this repository
- Verify the active Python version:
python -V - Create Python virtual environment in the project directory:
python -m venv .venv - Activate environment:
source .venv/bin/activate- Consider using direnv to activate the environment on navigating to the project directory
- Upgrade pip:
pip install --upgrade pip - Install Poetry — a dependency manager
- Install project dependencies:
poetry install- MacBook M1/M2:
CFLAGS=-I/opt/homebrew/opt/gmp/include LDFLAGS=-L/opt/homebrew/opt/gmp/lib poetry install
- MacBook M1/M2:
- Verify the setup by running tests:
poe test
Git hooks
Run the following snippet to enable lint checks and automatic formatting before commit/push.
cp pre-push ./.git/hooks/
cp pre-commit ./.git/hooks/
chmod +x ./.git/hooks/pre-commit
chmod +x ./.git/hooks/pre-push
Updating website/docs
Please read website/README.md.
Deployment
$ poe deploy
Current Protostar version: 0.1.0
Provide the new Protostar version: