monero-epee

Crates.iomonero-epee
lib.rsmonero-epee
version0.2.0
created_at2025-09-15 23:59:33.287178+00
updated_at2025-09-30 03:13:04.161039+00
descriptionA library for working with `epee`-encoded data
homepage
repository
max_upload_size
id1840713
size33,318
Luke Parker (kayabaNerve)

documentation

README

Monero EPEE

epee is a bespoke serialization format seen within the Monero project without any official documentation. The best specification is available here.

This library implements the epee 'portable storage' encoding (itself referred to as EPEE throughout this library), with the following exceptions:

  • We don't support the Array type (type 13) as it's unused in practice and lacking documentation
  • We may accept a wider class of inputs than the epee library itself. Our definition of compatibility is explicitly if we can decode anything encoded by the epee library and all encodings we produce may be decoded by the epee library. We do not expect completeness, so some successfully decoded objects may not be able to be encoded, and vice versa.

At this time, we do not support:

  • Encoding objects
  • Decoding objects into typed data structures. For that, please review the monero-epee-traits crate.

Instead, we support indexing epee-encoded values and decoding individual fields in a manner comparable to serde_json::Value (albeit without allocating, recursing, or using a proc macro). This is sufficient for basic needs, much simpler, and should be trivial to verify won't panic/face various exhaustion attacks compared to more complex implementations.

Because of this, we are also able to support no-std and no-alloc, without any dependencies other than core, while only consuming approximately one kibibyte of memory on the stack. We also have no unsafe code.

For a more functional library, please check out cuprate-epee-encoding.

Commit count: 0

cargo fmt