codec_sv2

Crates.iocodec_sv2
lib.rscodec_sv2
version3.0.1
created_at2021-06-14 17:27:23.989541+00
updated_at2025-09-24 23:58:04.917251+00
descriptionSv2 data format
homepagehttps://stratumprotocol.org
repositoryhttps://github.com/stratum-mining/stratum
max_upload_size
id410020
size82,992
SV2-bot (SV2-bot)

documentation

https://docs.rs/codec_sv2

README

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.

Commit count: 3337

cargo fmt