abci/:tenderdash-abcicrate (server, application glue). Examples inabci/examples/and integration tests inabci/tests/.proto/:tenderdash-protocrate (generated types, serializers, gRPC facets).proto-compiler/: build helpers for protobuf/tonic codegen.scripts/: release and utility scripts. CI lives under.github/workflows/.
- Build all (with defaults):
cargo build --workspace --all-features. - Test all crates:
cargo test --workspace --all-features. - Run example ABCI server:
RUST_LOG=info cargo run -p tenderdash-abci --example echo_socket. - Format check:
cargo fmt --all -- --check; apply fixes withcargo fmt --all. - Lint locally:
cargo clippy --all-features -- -D warnings. - Docs:
cargo doc --no-deps --all-features.
- Rust edition 2024; toolchain
rust-versionis set in workspace. - Use rustfmt (see
.rustfmt.toml); CI enforcescargo fmt --check. - Prefer idiomatic Rust:
snake_casefor modules/functions,UpperCamelCasefor types,SCREAMING_SNAKE_CASEfor consts. - Keep imports ordered; the repo config groups std/external/crate imports.
- Framework: standard Rust tests; async via
tokiowhere needed. - Integration tests live in
abci/tests/*(some spin up Docker). To skip Docker-dependent tests locally:cargo test -p tenderdash-abci --no-default-features --features server,tcp,unix. - Name tests descriptively; keep unit tests near code and integration tests under
tests/.
- Follow Conventional Commits (e.g.,
feat:,fix:,chore:,build(deps):). Use!for breaking changes. - PRs must use the provided template: include motivation, what changed, tests, and note breaking changes. Link related issues.
- Ensure CI passes (fmt, tests, clippy) and add/update tests for new behavior.
- Protobuf codegen requires
protocto be installed and discoverable in PATH. - Default features include
serverand Docker-backed tests; adjust features to your environment.