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

Download history 208/week @ 2025-07-08 34/week @ 2025-07-15 35/week @ 2025-07-22 17/week @ 2025-07-29 4/week @ 2025-08-05 7/week @ 2025-08-12 45/week @ 2025-08-19 31/week @ 2025-08-26 72/week @ 2025-09-02 68/week @ 2025-09-09 87/week @ 2025-09-16 431/week @ 2025-09-23 166/week @ 2025-09-30 41/week @ 2025-10-07 274/week @ 2025-10-14 374/week @ 2025-10-21

886 downloads per month
Used in 12 crates (10 directly)

MIT/Apache

315KB
4K SLoC

codec_sv2

crates.io docs.rs rustc+ license codecov

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 rust std library, 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:

  1. Unencrypted Example: Encode and decode standard Sv2 frames, detailing the message serialization and transmission process for unencrypted communications.

  2. 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