1. IPFS点滴资讯首页
  2. 官方更新
  3. IPFS

黑曜石系统公司:正在使用IPFS支持Nix,拓宽IPFS应用场景!| 点滴资讯

 

黑曜石系统公司https://obsidian.systems/)正在为Nix 增加 IPFS 支持,这样构建的产品就可以持久地保存在 IPFS 中并从 IPFS 中获取。这增加了弹性,并使Nix用户更容易复制和分发他们的工作——通过使用IPFS内容地址(CID)来缓存和分发源代码(并希望在将来的中间构建步骤中点对点)。

 

什么是Nix?

 

Nix通常被用作包管理器,但它的核心是一个通用的构建工具,就像Make、Ninja或Bazel一样。

Nix的不同之处在于它专注于沙盒构建步骤和缓存构建工件。有了这些特性,无论是计划还是构建工件都不能有隐藏的依赖关系,因此构建可以被复制,构建工件可以被健壮地共享。

这使得Nix成为与IPFS这样的点对点系统一起使用的理想构建工具。事实上,使用Nix的首要项目是Nixpkgs,它是GitHub上最大的、贡献度最高的项目之一的软件包集合(包括相关的Linux发行版)。

 

为什么我们使用Nix

 

黑曜石系统是一家端到端软件产品咨询公司,服务于从最近融资的初创企业到大型机构的所有人。自2014年成立以来,我们已经将Nix作为我们生产部署和开发者工作流程中不可或缺的一部分。

Nix是我们不可或缺的工具,因为我们经常需要在项目之间切换,Nix让每个项目开发环境的设置和共享变得微不足道。它还使最终用户在自己的机器上安装的软件(如区块链钱包)很容易打包。

 

激发我们使用IPFS的挑战

 

虽然 Nix 构建计划是可复制的,但仍然存在一个限制,即初始数据源代码的可用性。Nix计划有所谓的“固定输出推导”。这些是无沙盒的构建步骤,可以通过网络访问下载各种源码。它们产生的数据必须与预先固定的哈希相匹配,因此不能利用沙盒的缺乏导致非确定性的输出。

这样做的最大问题是,如果URL变得不可访问,或者下载的数据是非确定性的(例如由于一些元数据),这个构建步骤就会失败,换句话说,我们面临的问题和IPFS围绕linkrot试图解决的一般网络问题完全一样! IPFS的解决方案是正确的——我们不应该依赖一些源代码最初上传的位置。而且我们已经通过内容地址来识别源代码了,所以IPFS的解决方案与我们现有的工具和社区实践相比,甚至不是一个巨大的飞跃。

是的,我们已经可以像常规构建步骤一样,对那些固定输出的构建步骤的结果进行销号和缓存,但我们却只能使用自己的源代码缓存,完全独立于上游提供的内容。对于Nix的用户来说,各自维护自己的不合作的源代码缓存是很繁琐的,效率也很低,对于下游用户来说更是如此,他们需要分别手动配置每一个缓存,而他们想要的是一些由于内容-地址而自我认证的源代码。

 

价值

 

对于整个Nix社区,我们终于有机会利用我们在可复制性方面的辛勤工作,并将其变为现实。每个人都应该随意使用Nixpkgs作为源或二进制发行版,而不是像最初打算的那样依靠我们集中的来构建工件。

cache.nixos.org(https://cache.nixos.org/

特别是对于黑曜石开源软件的用户来说,他们终于有了一个简单而强大的方法,既不信任我们自己的预建二进制文件,也不信任cache.nixos.org的二进制文件,而是从源头开始构建一切,这使得审计安全关键代码变得更加容易。

理想情况下,我们希望与上游开发者本身和其他下游发行版合作缓存和分发源代码。IPLD,比我们所见过的任何其他模式都更了解用其原定的 “原生 “引用来寻址数据的价值,而不是一些别人无法理解的定制的第三方格式。

我们认为这是实现这种合作的关键。上游开发人员可以简单地继续使用git repos(或任何其他IPLD支持的具有内容寻址功能的版本控制系统)。下游发行版直接消费这些数据,而不需要任何转换步骤来掩盖数据的真实性。任何一方都不需要做对方曾经处理过的杂事。

 

适用范围

 

我们的目标是分两个不同的阶段来解决这些问题。

 

里程碑1: 用IPFS进行分发

 

我们希望Nix能够使用IPFS作为“替代者”或源码/构建工件的提供者,与目前存在的其他类型的替代者一起使用。

作为其中的一部分,我们教给了Nix git树哈希法,这样它就可以用IPFS能够理解的方式对git仓库进行内容寻址——这有助于IPFS、Nix、上游合作者以及其他对归档和传播源代码感兴趣的各方找到一种共同的方式来引用这些工件。虽然git哈希方案有其局限性,但我们认为它是git数据多方协作的最佳方法。

展望使用IPFS构建产品和部署,我们还为IPFS和Nix增加了围绕git树哈希的元数据格式的支持,以便在单独安装的文件系统树之间也能传递具有运行时依赖性的数据。最后,我们提供了一种方法,让现有的Nix构建工件可以转换为这种新的数据格式。

 

里程碑2使用IPFS构建Nix

 

Nix实际上并不对常规构建步骤(与上述“固定输出”构建步骤相反)产生的数据进行内容处理。相反,它根据它们产生的计划来处理这些数据。

存在这样的情况——比如有人编辑了一条评论,计划改变了,但结果没有改变。除了造成下游额外的重建,这还混淆了原始数据与其出处之间的分离。在点对点系统中,谁在提供数据并不重要(我们希望利用这一点不重要),但谁在宣称数据所代表的内容绝对重要。

通过这个核心改进,我们可以在IPLD中制作新的改进版本的构建计划,并从每个构建步骤中直接生成我们新支持的IPFS兼容格式,不需要从传统的输入地址数据中手动转换。这最后一步将两个里程碑的所有内容整合在一起。

有关完整的分解,请访问我们的公开资助提案(https://github.com/ipfs/devgrants/blob/master/open-grants/open-proposal-nix-ipfs.md)。

 

完成了什么

 

黑曜石系统公司:正在使用IPFS支持Nix,拓宽IPFS应用场景!| 点滴资讯

我 们很高兴地宣布,里程碑1已经完成。作为对社区反馈的回应,我们还做了一些额外的工作,在迁移到理想的git树哈希之前,让Nix社区开始使用IPFS。

这为我们里程碑2的一些目标整齐地打下了基础。我们希望这一步能帮助大家更优雅地过渡到使用IPFS。

请使用我们的指导(https://github.com/obsidiansystems/ipfs-nix-guide/)回帖,尤其是我们的教程(https://github.com/obsidiansystems/ipfs-nix-guide/blob/master/tutorial.md)开始吧。

最后,我们最近在Nix Friday流媒体上做了一个采访,回顾了我们所有的工作,并更广泛地讨论了我们如何看待IPFS和Nix生态系统的结合。你可以在这里观看:

https://youtu.be/FievtzvDbs8

 

下一步是什么?

 

我们已经开始实施里程碑2,包括改进的构建步骤,以产生内容地址数据。我们预计这将是大部分的工作,最终的IPFS集成将相对顺利,因为到那时Nix和IPFS的概念将如此整齐划一!

我们一直在快速地兼顾许多分支,将功能工作与内部的一般改进分开,因此能够将许多改进工作上链。我们喜欢这种方法,因为它让我们能够不断地与社区互动,并且为功能本身留下了更多可读的差异。

我们希望你能试一试这个演示,并喜欢你所看到的。敬请期待里程碑。

点对点科技简介

点对点科技深耘IPFS与Filecoin技术,坚持区块链技术改变未来的信念。点对点 IPFS 数据中心是目前国内技术领先,性价比高、保障优的投资标的。自建杭州数据中心,合作数据中心分布于上海、宁波、河北、香港、斯德哥尔摩(瑞典)等地。点对点数据中心具有优秀的硬件配置与目前国内优质的网络节点资源。点对点科技力求将IPFS爱好者升级为IPFS领军者与受益者,让IPFS颠覆传统互联网,共同开启 WEB 3.0时代。

想了解更多区块链知识吗?关注我吧!

Filecoin测试网二阶段昨日重启,点对点出块第一! | 点滴资讯

原创文章,作者:米娅,如若转载,请注明出处:http://ipfsdrop.com/offcial/ipfs/heiyaoshixitonggongsizhengzaishiyongipfszhichinixtuokuanipfsyingyongchangjing-diandizixun/

发表评论

电子邮件地址不会被公开。 必填项已用*标注