Skip to content

exfinen/eth-rlp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

24 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

eth-rlp

Implementaion of Ethereum RLP encoding/decoding in Rust based on information available in https://github.com/ethereum/wiki/wiki/RLP

Usage

Construct an item using below enum:

pub enum Item {
  List(Vec<Item>),
  Str(Vec<u8>),
}

Encode an item with Rlp::encode e.g.

let item = Item::from("dog");
let ba = Rlp::encode(item).unwrap();
assert_eq!(ba, [0x83, 'd' as u8, 'o' as u8, 'g' as u8]);

Decode an encoded item (byte array) with Rlp::decode e.g.

// not tested. refer to tests for actual usages.
let ba = [0x83, 'd' as u8, 'o' as u8, 'g' as u8];
match Rlp::decode(&ba).unwrap() {
  Item::Str(ba2) => assert_eq!(ba2, "dog".as_bytes().to_vec()),
  ...
}

Further details are available in tests in lib.rs

Helper functions

  • To encode empty string, use Item::empty_str()
  • To encode integer, use Item::from(usize) which drops preceeding zeros in byte representation.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages