sentrix-proto
Generated tonic + prost protobuf types for the Sentrix Chain gRPC service (sentrix.v1).
Why this crate exists
The Sentrix Chain gRPC service has one server-side implementation (the chain itself) and several client consumers (the Rust SDK, the WASM gRPC-Web client, the explorer-v2 frontend, future polyglot SDKs). Vendoring sentrix.proto separately into each consumer was producing schema drift — this crate is the single source of truth.
The chain server (crates/sentrix-grpc in sentrix-labs/sentrix) consumes these types via the workspace path-dep; external clients depend on this crate via crates.io.
Usage
[]
# Native (server, native client) — default features include `transport`:
= "0.1"
# Browser / WASM target — disable `transport` so tokio-net / mio aren't pulled in:
# sentrix-proto = { version = "0.1", default-features = false }
Cargo features
| Feature | Default | What it adds |
|---|---|---|
transport |
yes | Generated server stubs + tonic's hyper-based transport (Channel, Server). Needed for native server / native client; OFF for wasm32. |
use SentrixClient;
async
Schema versioning
The schema is namespaced package sentrix.v1;. Breaking field renames or type changes ship as a new sentrix.v2 package, not in-place edits to v1. That gives client crates a deterministic boundary for major-version bumps.
Build requirements
The build script invokes protoc (passed via prost-build). On Ubuntu 22.04 the apt-installed protoc is 3.12.x which treats proto3 optional fields as experimental — build.rs passes --experimental_allow_proto3_optional to keep the build green on older runners. Modern protoc (≥ 3.15) accepts the field by default, no change needed.
License
BUSL-1.1 — same as the rest of the Sentrix Chain workspace. Transitions to a permissive open-source license after the Change Date.