8 个版本 (不稳定)

1.0.0-beta.02023年1月16日
0.8.0 2024年8月23日
0.7.0 2024年8月20日
0.6.0 2023年12月7日
0.5.0 2023年1月17日

#247 in 魔法豆

Download history 3443/week @ 2024-05-04 3962/week @ 2024-05-11 1895/week @ 2024-05-18 2367/week @ 2024-05-25 2060/week @ 2024-06-01 1858/week @ 2024-06-08 3073/week @ 2024-06-15 3036/week @ 2024-06-22 2649/week @ 2024-06-29 2206/week @ 2024-07-06 4207/week @ 2024-07-13 6317/week @ 2024-07-20 2422/week @ 2024-07-27 2413/week @ 2024-08-03 2089/week @ 2024-08-10 2276/week @ 2024-08-17

每月下载量:9,675
用于 2 crates

Apache-2.0

92KB
2K SLoC

ssz_types

SSZ 的列表、向量和位字段类型。

由 Sigma Prime 维护,用于 Lighthouse,同时考虑其在 Rust 以太坊生态系统中的更广泛用途。我们欢迎新的贡献者!

请参阅 文档 了解更多信息。


lib.rs:

提供 SSZ 序列化和 Merklization 所需的具有独特属性的类型

  • FixedVector:编译时大小固定的堆分配列表。
  • VariableList:不能超过类型级别最大长度的堆分配列表。
  • BitList:具有类型级别 最大 长度的堆分配位字段。
  • BitVector:具有类型级别 固定 长度的堆分配位字段。

这些结构体是必需的,因为 SSZ 序列化和 Merklization 依赖于类型级别的长度进行填充和验证。

遵循 Ethereum 2.0 v0.12.1 的 SSZ 规范

示例

use ssz_types::*;

pub struct Example {
    bit_vector: BitVector<typenum::U8>,
    bit_list: BitList<typenum::U8>,
    variable_list: VariableList<u64, typenum::U8>,
    fixed_vector: FixedVector<u64, typenum::U8>,
}

let mut example = Example {
    bit_vector: Bitfield::new(),
    bit_list: Bitfield::with_capacity(4).unwrap(),
    variable_list: <_>::from(vec![0, 1]),
    fixed_vector: <_>::from(vec![2, 3]),
};

assert_eq!(example.bit_vector.len(), 8);
assert_eq!(example.bit_list.len(), 4);
assert_eq!(&example.variable_list[..], &[0, 1]);
assert_eq!(&example.fixed_vector[..], &[2, 3, 0, 0, 0, 0, 0, 0]);

依赖项

~14MB
~354K SLoC