16 releases (stable)
| 3.0.1 | Sep 24, 2025 |
|---|---|
| 2.1.0 | Jul 9, 2025 |
| 2.0.0 | Mar 28, 2025 |
| 1.3.1 | Dec 27, 2024 |
| 0.1.3 | Jul 1, 2021 |
#5 in #stratum
886 downloads per month
Used in 12 crates
(10 directly)
315KB
4K
SLoC
codec_sv2
codec_sv2 provides the message encoding and decoding functionality for the Stratum V2 (Sv2)
protocol, handling secure communication between Sv2 roles. This crate abstracts the complexity of
message encoding/decoding with optional Noise protocol support, ensuring both regular and encrypted
messages can be serialized, transmitted, and decoded consistently and reliably.
Main Components
- Encoder: Encodes Sv2 messages with or without Noise protocol support.
- Decoder: Decodes Sv2 messages with or without Noise protocol support.
- Handshake State: Manages the current Noise protocol handshake state of the codec.
Usage
To include this crate in your project, run:
cargo add codec_sv2
This crate can be built with the following feature flags:
std: Enable usage of ruststdlibrary, enabled by default.noise_sv2: Enables support for Noise protocol encryption and decryption.with_buffer_pool: Enables buffer pooling for more efficient memory management.
In order to use this crate in a #![no_std] environment, use the --no-default-features to remove the std feature.
Examples
This crate provides two examples demonstrating how to encode and decode Sv2 frames:
-
Unencrypted Example: Encode and decode standard Sv2 frames, detailing the message serialization and transmission process for unencrypted communications.
-
Encrypted Example: Encode and decode Sv2 frames with Noise protocol encryption, detailing the entire encryption handshake and transport phase and serialization and transmission process for encrypted communications.
Dependencies
~7.5MB
~101K SLoC