Skip to content

Commit

Permalink
add binary-sv2 no-serde codec readme
Browse files Browse the repository at this point in the history
  • Loading branch information
Shourya742 committed Dec 7, 2024
1 parent 615cc3f commit ba796e0
Showing 1 changed file with 42 additions and 1 deletion.
43 changes: 42 additions & 1 deletion protocols/v2/binary-sv2/no-serde-sv2/codec/README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,44 @@
# binary_codec_sv2

`binary_codec_sv2` is a Rust `no_std` crate
[![crates.io](https://img.shields.io/crates/v/binary_codec_sv2.svg)](https://crates.io/crates/binary_codec_sv2)
[![docs.rs](https://docs.rs/binary_codec_sv2/badge.svg)](https://docs.rs/binary_codec_sv2)
[![rustc+](https://img.shields.io/badge/rustc-1.75.0%2B-lightgrey.svg)](https://blog.rust-lang.org/2023/12/28/Rust-1.75.0.html)
[![license](https://img.shields.io/badge/license-MIT%2FApache--2.0-blue.svg)](https://github.com/stratum-mining/stratum/blob/main/LICENSE.md)
[![codecov](https://codecov.io/gh/stratum-mining/stratum/branch/main/graph/badge.svg?flag=binary_codec_sv2-coverage)](https://codecov.io/gh/stratum-mining/stratum)

`binary_codec_sv2` is a `no_std` Rust crate that helps serialize and de-serialize binary data into and from Stratum V2 types.

## Key Features

- **Comprehensive Encoding and Decoding**: Provides traits (`Encodable`, `Decodable`) for converting between Rust and SV2 data types/structures.
- **Support for Complex Data Structures**: Handles primitives, nested structures, and protocol-specific types like `U24`, `U256`,`Str0255` and rest.
- **Error Handling**: Robust mechanisms for managing encoding/decoding failures, including size mismatches and invalid data.
- **Cross-Language Compatibility**: Utilities like `CVec` and `CError` ensure smooth integration with other programming languages.
- **`no_std` Compatibility**: Fully supports constrained environments without the Rust standard library.

## Sv2 Type Mapping

The crate supports the following mappings between Rust and SV2 types

| Rust Type | Sv2 Type |
|-------------|----------------|
| `bool` | `BOOL` |
| `u8` | `U8` |
| `u16` | `U16` |
| `U24` | `U24` |
| `u32` | `U32` |
| `u64` | `U64` |
| `f32` | `F32` |
| `Str0255` | `STRO_255` |
| `Signature` | `SIGNATURE` |
| `[u8]` | `BYTES` |
| `Seq0255` | `SEQ0_255[T]` |
| `Seq064K` | `SEQ0_64K[T]` |

## Installation

Add `binary_codec_sv2` to your project by running:

```sh
cargo add binary_codec_sv2
```

0 comments on commit ba796e0

Please sign in to comment.