Thank you for your interest in contributing to Shadow-EVM! This document provides guidelines and instructions for contributing.
- Rust 1.75+
- RISC Zero toolchain (
curl -L https://risczero.com/install | bash && rzup install) - Foundry (
curl -L https://foundry.paradigm.xyz | bash && foundryup)
git clone https://github.com/zacksfF/Rust-ZK-Shadow-EVM.git
cd Rust-ZK-Shadow-EVM
cargo build --workspace
cargo test --workspacegit checkout -b feature/your-feature-name- Follow the existing code style
- Add tests for new functionality
- Update documentation as needed
# Rust tests
cargo test --workspace
# Solidity tests
cd contracts && forge test
# Clippy lints
cargo clippy --workspace -- -D warnings
# Format check
cargo fmt --check- Write a clear PR description
- Reference any related issues
- Ensure CI passes
| Crate | Purpose |
|---|---|
shadow-evm-core |
Core EVM execution library |
shadow-evm-guest |
RISC Zero guest program |
shadow-evm-host |
Prover CLI application |
- Use
rustfmtfor formatting - Follow Rust API Guidelines
- Add doc comments for public items
- Use
thiserrorfor error types
- Use
forge fmtfor formatting - Follow Solidity style guide
- Add NatSpec comments for public functions
- Place tests in the same file using
#[cfg(test)] - Test both success and error cases
- Use descriptive test names
- Place in
tests/directory - Test full execution flows
- Mock external dependencies
- Update README.md for user-facing changes
- Update docs/ for architectural changes
- Add inline comments for complex logic
Please include:
- Steps to reproduce
- Expected behavior
- Actual behavior
- Environment details (OS, Rust version, etc.)
Please include:
- Use case description
- Proposed solution
- Alternatives considered
By contributing, you agree that your contributions will be licensed under GPL-3.0.
Your contributions help make Shadow-EVM better for everyone!