# Install Rust + Soroban target
rustup target add wasm32v1-none
# Build
make build
# Test
make test
# Lint
make lint- All storage keys use
#[contracttype]enums. - Monetary values use 7-decimal fixed-point
i128(1 USDC = 10_000_000). - All public functions that modify state require
caller.require_auth(). - Errors use
#[contracterror]with explicit#[repr(u32)]codes. - Tests live in
src/test.rs(unit) andsrc/test_integration.rs(cross-contract).
-
make testpasses -
make lintpasses with zero warnings - New public functions have a short doc comment explaining the invariants
- Error codes do not collide with existing ones
- Persistent storage keys are documented in the StorageKey enum comment
cargo new --lib contracts/<name>- Add to
contracts/Cargo.toml[workspace.members] - Set
crate-type = ["cdylib", "rlib"]in the crate'sCargo.toml - Add a
testutilsfeature that enablessoroban-sdk/testutils - Write at least 5 unit tests covering init, happy path, and error paths
- Update
ARCHITECTURE.mdwith the new contract's role
Follow Conventional Commits:
feat(oracle-verifier): add batch_submit_data
fix(risk-pool): guard against zero deposit edge case
test(claims-processor): add dispute resolution tests
chore: update soroban-sdk to 22.1