Expand description
§Monero EPEE
epee is a bespoke library with various utilities, primarily seen today due to
its continued usage within the Monero project. Originating without
documentation, it contained a self-describing typed binary format referred to
as ‘portable storage’. We refer to it as epee, after the library introducing
it, within this library and throughout our ecosystem. Thankfully, the
Monero project now hosts a description which is sufficient to understand and implement it.
Our library has the following exceptions:
- We don’t support the
Arraytype (type 13) as it’s unused in practice and lacking documentation. See this PR to Monero removing it entirely. - We may accept a wider class of inputs than the
epeelibrary itself. Our definition of compatibility is explicitly if we can decode anything encoded by theepeelibrary it itself will decode and all encodings we produce may be decoded by theepeelibrary. 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
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
resource 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.
For a more functional library, please check out
cuprate-epee-encoding.
Re-exports§
Modules§
- io 🔒
- IO primitives around bytes.
- parser 🔒
- stack 🔒
- A non-allocating alternative to
Vec, used to track the state of an EPEE decoder.
Structs§
- Array
Iterator - An iterator over an array.
- Epee
- A decoder for an EPEE-encoded object.
- Epee
Entry - An item with an EPEE-encoded object.
- Field
Iterator - An iterator over fields.
Enums§
- Epee
Error - An error incurred when decoding.