eml 0.11.0

Epoch Merkle Log: the EML library instantiated at k=2, no prefix
Documentation

eml — Epoch Merkle Log

Tier L4 — an instantiation. EML is the general-purpose append-only log: the polydigest combinator over the single-algorithm cml engine — polydigest(cml) — instantiated at arity k = 2, with no prefix and arbitrary subtrees allowed. This is one of the three concrete crates where "Epoch" lives.

Role

EML fixes the one opinion an instantiation makes — the arity — and re-exports the whole polydigest surface, so a consumer reaches the library through eml::*. k = 2 is a sane default, not an opinion: binary spine traversal is cheaply logarithmic. The caller's Hasher is used directly, with no domain-separation wrapper.

EML uses MMR durable witnesses: inclusion and binding-root verification are preserved from the prior design; the consistency proof is upgraded to the MMR prefix-form. Conformance is anchored by the Lean corpus and the durability property tests, not a byte-equality oracle.

The re-exported driver still accepts any arity for callers that need a different k; the eml::config() preset and the new / from_storage constructors fix k = 2.

Place in the layered model

merkle-spine → canonical-ml → polydigest → EML  (this: polydigest(canonical-ml) @ k=2)

Compare the sibling instantiation:

  • EMT (emt) — the mutable peer, polydigest(canonical-mt) @ k = 2.

Further reading

  • polydigest — the combinator EML instantiates.
  • canonical-ml — the single-algorithm append-only engine underneath.
  • ../docs/architecture.md — the full design.