https://github.com/anoushk1234/rs2d
A crate for encoding and decoding data in a 2D Reed-Solomon matrix.
https://github.com/anoushk1234/rs2d
encoding erasure-coding reed-solomon rust
Last synced: about 2 months ago
JSON representation
A crate for encoding and decoding data in a 2D Reed-Solomon matrix.
- Host: GitHub
- URL: https://github.com/anoushk1234/rs2d
- Owner: anoushk1234
- License: mit
- Created: 2023-04-01T07:25:20.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2023-04-20T06:28:53.000Z (over 2 years ago)
- Last Synced: 2025-06-11T07:10:49.398Z (4 months ago)
- Topics: encoding, erasure-coding, reed-solomon, rust
- Language: Rust
- Homepage:
- Size: 43 KB
- Stars: 1
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
# rs2d
[](https://crates.io/crates/rs2d)
[](https://docs.rs/rs2d)
[](https://deps.rs/crate/rs2d/0.1.0)A crate for encoding and decoding data in a 2D Reed-Solomon matrix.
Inspired by the [Mustafa Al-Bassam's Paper](https://arxiv.org/pdf/1809.09044.pdf).
## Algorithm
```
sd = digest
cr = columnRoot
r = rowRoot
shard = [0u8;1280]
block = [shard;23]
s = data shard
p = horizontal parity
s' = veritical data parity
p' = vertical erasure parity
```
### Data Matrix
```
s1 s2 s3 s4 s5 -> d1
s6 s7 s8 s9 s10 -> d2
s11 s12 s13 s14 s15 -> d3
s16 s17 s18 s19 s20 -> d4
s21 s22 s23 sd sd -> d5
```
### Erasure Code Matrix
```
s1 s2 s3 s4 s5 -> p1 p2 p3 p4 p5 -> r1
s6 s7 s8 s9 s10 -> p6 p7 p8 p9 p10 -> r2
s11 s12 s13 s14 s15 -> p11 p12 p13 p14 p15 -> r3
s16 s17 s18 s19 s20 -> p16 p17 p18 p19 p20 -> r4
s21 s22 s23 sd sd -> p21 p22 p23 p24 p25 -> r5
| | | | |
v v v v v
s1' s2' s3' s4' s5' -> p1' p2' p3' p4' p5' -> r6
s6' s7' s8' s9' s10' -> p6' p7' p8' p9' p10' -> r7
s11' s12' s13' s14' s15' -> p11' p12' p13' p14' p15' -> r8
s16' s17' s18' s19' s20' -> p16' p17' p18' p19' p20' -> r9
s21' s22' s23' sd' sd' -> p21' p22' p23' p24' p25' -> r10
| | | | | | | | | |
cr1 cr2 cr3 cr4 cr5 cr6 cr7 cr8 cr9 cr10
```## Current Limitations
- Only works when n and k are the same.
- No performance optimizations.
- Data Shard has to be a byte array.# TODO
- [x] Encode function
- [ ] Decode/Verify function
- [ ] Test Cases
- [x] Benchmarks