[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Encoding for Robust Immutable Storage (ERIS)

From: pukkamustard
Subject: Re: Encoding for Robust Immutable Storage (ERIS)
Date: Thu, 02 Sep 2021 09:03:52 +0000

Hi Christian,
Hi Martin,

Thank you for your kind feedback ... and sorry for the delayed response.

Christian Grothoff <> writes:

> You might also want to use
> as a registry for constants, like a GNS record
> type for (preferably binary-encoded) ERIS records.


Martin Schanzenbach <> writes:

> Also, an LSD for it would be great as grothoff said especially since
> you alredy started a technical specification.

I've kept the ERIS specification seperate for the moment. There are
still some things to be done for a stable 1.0.0 version. A more stable
version of the specification or better a document "ERIS for GNUNet
filesharing" - which describes how ERIS is used in GNUNet with exact
wire format would make a good LSD.

> From my brief glance over it, the spec is missing some crucial
> information regarding wire formats in order to ensure implementations
> are interoperable.

This is intentionally left out of the specification.

The specification defines the encoding on a level independent of any
concrete serialization or wire format. The hope is that this will allow
interoperability between different projects and implementations even if
they use very different wire formats.

For example we can currently transport ERIS encoded blocks over IPFS or
over HTTP (using RFC2169 conventions). There are many other possible
transport/storage layers (e.g. GNUNet, OpenDHT, Named Data Networking, a
local database). The wire formats are very different, but still the same
content can be decoded.

I think a document (a LSD) that defines the exact wire-format for GNUNet
would be great - but out of scope in the specification of the abstract

An example of an already existing concrete wire-format based on CBOR and

> My question would be to you: Would you try and implement it in GNUnet
> as well?

I have! Unfortunately I didn't get very far...

As my C-foo is very limited I planned on creating light-weight Guile
bindings to libgnunetblock and then use GNUNet as a block
storage/transport from the comfort of my REPL.

However, I think I still need to implement a "block plugin" in C. Is
this correct? There is no way around implementing a block plugin in C?

Also, I am unsure if such a block plugin needs to live in the GNUNet
code tree or it can be placed somewhere else and dynamically loaded.

I must admit that I was slightly put off by the seeming complexity of
doing this. But am motivated to give it another try with some assistance
for the block plugin. Also very happy to assist anybody else who might
be interested in working on this.

> Could you provide an RFC-style LSD document with test vectors
> so somebody else may be able to pick it up?

I hope the ERIS specification ( would be enough for

Test vectors are also provided (

There are also a few second-party implementation (not by me) that use
the test vectors:

- Nim:
- Go:


reply via email to

[Prev in Thread] Current Thread [Next in Thread]