monero-epee 0.1.0

A library for working with `epee`-encoded data
Documentation
  • Coverage
  • 100%
    25 out of 25 items documented0 out of 4 items with examples
  • Size
  • Source code size: 16.13 kB This is the summed size of all the files inside the crates.io package for this release.
  • Documentation size: 1.46 MB This is the summed size of all files generated by rustdoc for all configured targets
  • Links
  • crates.io
  • Dependencies
  • Versions
  • Owners
  • kayabaNerve

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, with the following exceptions:

  • We don't support the Array type (type 13) as it's unused and lacking documentation
  • We may accept a wider class of inputs than the epee library itself due to slight differences in depth limits on nested objects

We do not support:

  • Encoding objects
  • Decoding objects into typed data structures

Instead, we support iterating through epee-encoded values and finding all instances of a field. This lets the caller jump to the binary blob representing an encoded value, and decode it themselves, without us actually deserializing the entire object. If we were to do that, we'd presumably require something akin to serde_json::Value or a proc macro. This is sufficient for basic needs, much simpler, and should be trivial to verify it won't panic/face various exhaustion attacks. This library is implemented without recursion.

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

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