RLP是由以太坊定义的一个序列化/反序列化协议,它用于序列化以下结构的数据:

enum T {
    B(Vec<u8>),
    L(Vec<T>),
}

和json、protobuf等相比,RLP中没有bool,string等类型,只有字节串和列表,由应用层去解释字节串的含义。不像json、protobuf,RLP可以保证完美的字节一致性。比如对于json来说,键值对是不保证有序的。

RLP的具体规范在以太坊黄皮书 Appendix B中定义