#ssz #decode #encode #eth2-ssz

eth2_ssz

SimpleSerialize (SSZ) as used in Ethereum 2.0

6 releases (3 breaking)

0.4.0 Nov 23, 2021
0.3.0 Aug 24, 2021
0.2.0 Jul 29, 2021
0.1.2 Jul 19, 2019

#6 in #ssz

Download history 28/week @ 2024-12-16 12/week @ 2024-12-30 23/week @ 2025-01-06 41/week @ 2025-01-13 37/week @ 2025-01-20 27/week @ 2025-01-27 49/week @ 2025-02-03 88/week @ 2025-02-10 54/week @ 2025-02-17 55/week @ 2025-02-24 85/week @ 2025-03-03 153/week @ 2025-03-10 67/week @ 2025-03-17 62/week @ 2025-03-24 102/week @ 2025-03-31

385 downloads per month
Used in 5 crates

Apache-2.0

62KB
1.5K SLoC

simpleserialize (ssz)


lib.rs:

Provides encoding (serialization) and decoding (deserialization) in the SimpleSerialize (SSZ) format designed for use in Ethereum 2.0.

Adheres to the Ethereum 2.0 SSZ specification at v0.12.1.

Example

use ssz_derive::{Encode, Decode};
use ssz::{Decode, Encode};

#[derive(PartialEq, Debug, Encode, Decode)]
struct Foo {
    a: u64,
    b: Vec<u16>,
}

fn ssz_encode_decode_example() {
    let foo = Foo {
        a: 42,
        b: vec![1, 3, 3, 7]
    };

    let ssz_bytes: Vec<u8> = foo.as_ssz_bytes();

    let decoded_foo = Foo::from_ssz_bytes(&ssz_bytes).unwrap();

    assert_eq!(foo, decoded_foo);
}

See examples/ for manual implementations of the Encode and Decode traits.

Dependencies

~470KB