From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: =?utf-8?Q?Ludovic_Court=C3=A8s?= Newsgroups: gmane.lisp.guile.user Subject: Re: Encoding for Robust Immutable Storage (ERIS) and Guile Date: Wed, 09 Dec 2020 17:50:39 +0100 Message-ID: <878sa6c49s.fsf@gnu.org> References: <86ft4hg4qu.fsf@posteo.net> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="33029"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.1 (gnu/linux) To: guile-user@gnu.org Cancel-Lock: sha1:sqHUlPTsxxiiDJusMmIVZ0MoB6M= Original-X-From: guile-user-bounces+guile-user=m.gmane-mx.org@gnu.org Wed Dec 09 17:52:31 2020 Return-path: Envelope-to: guile-user@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1kn2hb-0008VM-Ut for guile-user@m.gmane-mx.org; Wed, 09 Dec 2020 17:52:31 +0100 Original-Received: from localhost ([::1]:34044 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kn2ha-0000PT-V0 for guile-user@m.gmane-mx.org; Wed, 09 Dec 2020 11:52:30 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:33238) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kn2g0-0007C0-8Z for guile-user@gnu.org; Wed, 09 Dec 2020 11:50:52 -0500 Original-Received: from static.214.254.202.116.clients.your-server.de ([116.202.254.214]:57510 helo=ciao.gmane.io) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kn2fx-0005Sz-KN for guile-user@gnu.org; Wed, 09 Dec 2020 11:50:50 -0500 Original-Received: from list by ciao.gmane.io with local (Exim 4.92) (envelope-from ) id 1kn2ft-0006Iq-LJ for guile-user@gnu.org; Wed, 09 Dec 2020 17:50:45 +0100 X-Injected-Via-Gmane: http://gmane.org/ X-URL: http://www.fdn.fr/~lcourtes/ X-Revolutionary-Date: 19 Frimaire an 229 de la =?utf-8?Q?R=C3=A9volution?= X-PGP-Key-ID: 0x090B11993D9AEBB5 X-PGP-Key: http://www.fdn.fr/~lcourtes/ludovic.asc X-PGP-Fingerprint: 3CE4 6455 8A84 FDC6 9DB4 0CFB 090B 1199 3D9A EBB5 X-OS: x86_64-pc-linux-gnu Received-SPF: pass client-ip=116.202.254.214; envelope-from=guile-user@m.gmane-mx.org; helo=ciao.gmane.io X-Spam_score_int: -15 X-Spam_score: -1.6 X-Spam_bar: - X-Spam_report: (-1.6 / 5.0 requ) BAYES_00=-1.9, HEADER_FROM_DIFFERENT_DOMAINS=0.25, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: guile-user@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: General Guile related discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guile-user-bounces+guile-user=m.gmane-mx.org@gnu.org Original-Sender: "guile-user" Xref: news.gmane.io gmane.lisp.guile.user:17067 Archived-At: Hi! pukkamustard skribis: > I'm happy to announce guile-eris 0.2.0. This is a Guile implementation > of "Encoding for Robust Immutable Storage (ERIS)" [1]. Yay, congrats! > ERIS defines how an arbirtary sequence of bytes can be encoded into a > set > of uniformly sized blocks and an identifier (read capability). The > blocks are encrypted such that the original content can only be > decoded > given the read capability. ERIS is a scheme for content-addressing in > the sense that the read capability is deterministically computed from > the content itself. > > This is done by splitting content into blocks, encrypting them and > collecting references to blocks in a higher-level node (i.e. building > a > Merkle Tree). See the specification [1] for a detailed description of > the encoding. AIUI, this is exclusively convergent encryption, which is probably the right choice for most applications anyway. Block size is fixed; did you consider content-defined block boundaries and such? Perhaps it doesn’t bring much though. > Encodings like ERIS are common in protocols such as Bittorrent, > GNUNet, > IPFS, et. al. ERIS decouples the encoding from any particular protocol > or application, allowing content to be referenced regardless of > storage > and transport layer. For example ERIS encoded content can be stored > and > transported over IPFS [2], but also over HTTP or via an USB stick. The IPFS example is nice! There are bindings to the IPFS HTTP interface floating around for Guix; would be nice to converge on these bits. > ERIS is still "experimental". This release is intended to initiate > discussion and collect feedback from a wider circle. In particular I'd > be interested in your thoughts on applications and the Guile API. Do I get it right that the encoder currently keeps blocks in memory? Do you have plans to provide an interface to the storage backend so one can easily switch between in-memory, Datashards, IPFS, etc.? Thanks for the great work! Ludo’.