From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: pukkamustard Newsgroups: gmane.lisp.guile.user Subject: Encoding for Robust Immutable Storage (ERIS) and Guile Date: Mon, 07 Dec 2020 13:50:01 +0100 Message-ID: <86ft4hg4qu.fsf@posteo.net> Mime-Version: 1.0 Content-Type: text/plain; format=flowed Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="29661"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: mu4e 1.4.13; emacs 27.1 To: guile-user@gnu.org Original-X-From: guile-user-bounces+guile-user=m.gmane-mx.org@gnu.org Mon Dec 07 14:41:15 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 1kmGlP-0007cm-8l for guile-user@m.gmane-mx.org; Mon, 07 Dec 2020 14:41:15 +0100 Original-Received: from localhost ([::1]:37540 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kmGlO-0005SP-Ar for guile-user@m.gmane-mx.org; Mon, 07 Dec 2020 08:41:14 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:57334) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kmFxw-0007vj-Ai for guile-user@gnu.org; Mon, 07 Dec 2020 07:50:08 -0500 Original-Received: from mout01.posteo.de ([185.67.36.65]:47615) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kmFxs-00022m-Fl for guile-user@gnu.org; Mon, 07 Dec 2020 07:50:08 -0500 Original-Received: from submission (posteo.de [89.146.220.130]) by mout01.posteo.de (Postfix) with ESMTPS id 8017216005C for ; Mon, 7 Dec 2020 13:50:02 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=posteo.net; s=2017; t=1607345402; bh=r6dryzi2eusjzcS8uUIVDeUC1at2rSi0rcITBoNTdHQ=; h=From:To:Subject:Date:From; b=S7DwNRL42/yaL9yti7Lvk0MUG99aW5FUXnrb6f3drIVMYgFXXlSZ4E4R5Gw35nxDT LReaY8dtm/3UQVWkMpNhxMB1N4nn5wLes+bOXBdxG3kWFIxouW84tgH/mh9l6FztvP hCJTiHWf5VbcnHelv4MuW19WzKXrEsceNeJhkOC4qW+A9YY/59FSlnZJ28K2Y9gF6j l4tYUDCxSOfk/2xEKB5IV85p/PG2XKqLiArG9opoP4DB7AE7obTEyeYrsTv6hYXUSH li1hMW5rujgS1UDK2065PYUufVhrXKQpD7jvmwNS6wOTyJqVptckjI1ncvqC0liYrC oMr7LWVpOT/yA== Original-Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4CqNST5wlQz6tmD for ; Mon, 7 Dec 2020 13:50:01 +0100 (CET) Received-SPF: pass client-ip=185.67.36.65; envelope-from=pukkamustard@posteo.net; helo=mout01.posteo.de X-Spam_score_int: -43 X-Spam_score: -4.4 X-Spam_bar: ---- X-Spam_report: (-4.4 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_MED=-2.3, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham 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:17066 Archived-At: Hello Guile Users, I'm happy to announce guile-eris 0.2.0. This is a Guile implementation of "Encoding for Robust Immutable Storage (ERIS)" [1]. 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. 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. My interest in developing this has been for an ActivityPub-esque applications where content can be cached and replicated to make availability of content more robust. There seem to be many other applications, including Guix substitutes. 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. ERIS is very much related to Datashards [3] and is in progress of converging closer. I have submitted a patch to Guix. You should be able to start experimenting with ERIS with `guix environment --ad-hoc guile-eris guile` shortly. Thanks and happy hacking! -pukkamustard [1] http://purl.org/eris [2] https://gitlab.com/openengiadina/eris/-/blob/main/examples/ipfs.org [3] https://datashards.net/