Contributing guidelines
Local Development
Changing Rust Code
Please make sure that the following commands pass if you have changed the code:
cargo check --all
cargo test --all --all-features
cargo +nightly fmt -- --check
cargo +nightly clippy --workspace --all-features --all-targets -- -D warnings
We are using the stable toolchain for building and testing, but the nightly toolchain for formatting and linting, as it allows us to use the latest features of rustfmt
and clippy
.
If you are working in VSCode, we recommend you install the rust-analyzer extension, and use the following VSCode user settings:
"editor.formatOnSave": true,
"rust-analyzer.rustfmt.extraArgs": ["+nightly"],
"rust-analyzer.check.overrideCommand": [
"cargo",
"+nightly",
"clippy",
"--workspace",
"--all-features",
"--all-targets",
"--message-format=json"
],
"[rust]": {
"editor.defaultFormatter": "rust-lang.rust-analyzer"
}
Changing Solidity code
Setup
Install foudryup and foundry
curl -L https://foundry.paradigm.xyz | bash
foundryup
Running tests
export ETH_RPC_URL=<url>
forge test
Code formatting
forge fmt
Assembly
Please minimize use of assembly for security reasons.
Contract Analysis
We use Slither to detect any potential vulnerabilities in our contracts.
To run locally, simply install Slither in your conda env and run it inside the foundry directory.
conda create --name tycho-execution python=3.10
conda activate tycho-execution
pip install slither-analyzer
cd foundry
slither .
Creating a Pull Request
We use conventional commits as our convention for formatting commit messages and PR titles.
Last updated