monaco-grpc-sdk is generated from Monaco’s protobuf module published to the Buf Schema Registry. Use it when you want protobuf-native service clients over gRPC.
Add Dependencies
crates.io/crates/monaco-grpc-sdk for the published crate.
Connect and List Pairs
The gRPC service is exposed on the same staging host as the REST API. Connect to the host on port443; the load balancer routes gRPC method paths such as /monaco.api.* to Monaco’s gRPC API.
Authenticate requests
Market data is public. Trading and account RPCs are tokenless: sign every request with the ed25519 session key you registered throughAuthService.Challenge/Verify, and attach the signature as metadata. The
server verifies it against your stored public key.
The signature covers the canonical string POST\n<method-path>\n<timestamp-ms>\nSHA256(request bytes),
where the request bytes are the prost-encoded message — the same bytes tonic
sends — so hash msg.encode_to_vec() and bind the full leading-slash method
path. Add ed25519-dalek, prost, sha2, and hex alongside the SDK.
The raw generated client keeps idempotency_key optional and does not generate it. Create and retain the key before protobuf encoding or signing. Persist the prepared message and key before sending if recovery must survive a process restart.
create.clone() with a fresh timestamp; keep the same payload and key. Give every batch-create item a distinct key before encoding and signing the batch. Protection lasts 24 hours after acceptance and retries do not extend it. Do not retry an unresolved submission after expiry. This example does not retry automatically.
Each call re-signs with a fresh timestamp and body hash, so signatures are never
reused. A UNAUTHENTICATED status on a previously working call means the session
expired or was revoked — re-run challenge/verify and retry; do not loop against a
persistent UNAUTHENTICATED. The authenticated gRPC quickstart
covers the metadata, error handling, and golden signing vectors
you can check a Rust signer against.
Release Channels
Dev snapshots use a SemVer pre-release suffix, so a default
cargo add monaco-grpc-sdk ignores them. Pin explicitly to opt in:

