1 个不稳定版本
0.1.0 | 2023年4月20日 |
---|
#14 in #reed-solomon
10KB
148 行
rs2d
一个用于在二维Reed-Solomon矩阵中编码和解码数据的crate。
灵感来源于Mustafa Al-Bassam的文章.
算法
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
数据矩阵
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
纠删码矩阵
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
当前限制
- 只有当n和k相同时才有效。
- 没有性能优化。
- 数据分片必须是字节数组。
待办事项
- 编码函数
- 解码/验证函数
- 测试用例
- 基准测试
依赖项
~17-26MB
~425K SLoC