Canons of ERIS

Canons are logs of CBOR encoded data with an efficient append operation.

Canons are largely inspired by the Secure Scuttlebutt feed protocol and are designed for similar use cases. Unlike Secure Scuttlebutt this specification does not include features for enforcing that logs are append only, but it does not exclude the use of signed back-references to this effect.

A canon exposes a traversable and appendable sequence of CBOR items to an application. Internally the canon is a sequence of binary encoded CBOR items that are aligned to fit within ERIS block boundaries (1KiB or 32KiB) using zero-length CBOR arrays as padding. This is to minimize the number of ERIS meta-blocks created over the lifetime of the canon and allows for efficient lookup or selective sharing of Canon items. An item within a canon can be referenced by an ERIS URNs combined with an offset index.

Items that are too large to fit within a single block are replaced by an ERIS read-capability to an off-canon encoding.

The recommended ERIS encoding of a Canon is unique rather than convergent to mitigate confirmation attacks against Canon data at-rest.

Some of the invariant properties of canons: