Encoding for Robust Immutable Storage (ERIS)

This is a demo of ERIS - An Encoding for Robust Immutable Storage.

ERIS encodes any content into uniformly sized (4kB) encrypted blocks. The original content can only be decoded with the read capability (an URN which contains the encryption key).


Sample Data


RDF data is normalized before it is encoded. This means that the same content always gets the same identifier (URN).

Load some sample RDF data, encode it and then decode it to see how the normalized form looks (it's not pretty).

input format




Read capability

The read capability allows content to be read

Verification capability

The verification capability allows all blocks to be verified for integrity, but does not allow the content to be read


Blocks are stored in memory and can be removed or randomized (corrupted).


Optionally IPFS can be used as block storage and transport. Note: This does not work reliably from the browser. For more reliable demos of how to use ERIS with IPFS see the Guile and node.js implementations/demos.

enable IPFS


ERIS is an encoding for content-addressing. The read capability which can be used to reference encoded content is exactly determined by the content itself (using a cryptographic hash).

As the ERIS reference is an URI/URN, it can be referenced from usual web content. In particular, ERIS works very well with RDF (including JSON-LD).

ERIS improves over naive content-addressing (just using the hash of the content as identifier):

ERIS is developed as part of the openEngiadina project. We intend to use ERIS to implement an ActivityPub server enabling offline-first and decentralized applications.

For more information see:

This demo and the JavaScript (and Guile) implementations are free software. See the Git repository.