#rlp #serde #data #implemented #ethereum #format

serde-rlp

Ethereum's RLP encoding implemented as a Serde data format

5 releases

Uses old Rust 2015

0.1.4 Sep 21, 2018
0.1.3 Sep 14, 2018
0.1.2 Sep 4, 2018
0.1.1 Sep 4, 2018
0.1.0 Sep 4, 2018

#2280 in Encoding

Download history 67/week @ 2024-07-22 64/week @ 2024-07-29 126/week @ 2024-08-05 105/week @ 2024-08-12 90/week @ 2024-08-19 88/week @ 2024-08-26 85/week @ 2024-09-02 77/week @ 2024-09-09 74/week @ 2024-09-16 121/week @ 2024-09-23 113/week @ 2024-09-30 59/week @ 2024-10-07 76/week @ 2024-10-14 89/week @ 2024-10-21 89/week @ 2024-10-28 51/week @ 2024-11-04

306 downloads per month
Used in 16 crates (via raiden-network-messages)

Custom license

38KB
1K SLoC

serde-rlp

Crates.io Build Status Docs.rs

Ethereum's RLP encoding implemented as a Serde data format

This code is part of clarity - an effort to implement lightweight Ethereum transaction signing. WIP.

Releasing

To release new version of serde-rlp do the following steps:

# Do a signed tag for new version with annotation "YYYY-MM-DD, Version v$VERSION"
git tag v1.0.0 -a -s "2018-09-04, Version v1.0.0"
git push origin --follow-tags

Examples

You should be able to use this crate same way as you'd use other serialization formats in serde.

Serialize

The key to serialization is serde_rlp::ser::to_bytes which does the magic.

extern crate serde_rlp;
use serde_rlp::ser::to_bytes;

// Basic key values
let data = vec![vec!["key1", "value1"], vec!["key2", "value2"]];
let bytes = to_bytes(&data).expect("Unable to serialize data");
println!("Serialized data: {:?}", bytes);

Deserialize

To deserialize data back into an object you should use serde_rlp::de::from_bytes.

extern crate serde_rlp;
use serde_rlp::de::from_bytes;

// Deserialize string "abc" encoded as RLP
let foo: String = from_bytes(&[0x83, 0x61, 0x62, 0x63]).unwrap();
println!("{}", foo);

An useful pattern is to deserialize into Vec<Bytes>, which will correctly deserialize elements of a RLP list.

Dependencies

~0.6–1MB
~19K SLoC