里程碑1已完成!Nix使用IPFS进行内容分发

2020-09-10 16:04:08

Obsidian Systems正在向Nix中添加对IPFS的支持,这增加了产品的灵活性,并使Nix用户更容易复制和分发他们的工作。

  Obsidian Systems正在向Nix中添加对IPFS的支持。这增加了产品的灵活性,并使Nix用户更容易复制和分发他们的工作:通过使用IPFS进行内容寻址、对等地缓存和分发源代码。


Nix & IPFS


  什么是Nix?

  Nix通常用作软件包管理器,但其核心是一个通用的构建工具,如Make、Ninja或Bazel。

  Nix专注于沙箱(沙盒英语:sandbox,又译为沙箱,计算机专业术语,在计算机安全领域中是一种安全机制,为运行中的程序提供的隔离环境。)生成步骤和缓存生成工件。有了这些特性,计划和构建都不能有隐藏的依赖关系,因此可以复制构建并可靠地共享构建。

  这使得Nix成为一个理想的构建工具,可以用于像IPFS这样的对等系统。实际上,使用Nix的首要项目是Nixpkgs,它是一个软件包集合(带有相关的Linux发行版),是GitHub上贡献最大、贡献最广的项目之一。


  为什么要用Nix?

  Obsidian Systems是一家端到端的软件产品咨询公司,服务对象从最近获得资助的初创企业到大型机构。自2014年成立以来,已将Nix作为生产部署和开发人员工作流程的一个组成部分。

  对于他们来说,Nix是一个不可或缺的工具,因为Obsidian Systems经常需要在项目之间切换,而Nix使得每个项目开发环境的设置和共享变得微不足道。这也使得最终用户安装在自己机器上的软件(如区块链钱包)更容易打包。


  为什么使用IPFS?

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

  不过最大的问题是如果URL变得不可访问或下载的数据不确定(例如,由于某些元数据),此构建步骤将失败。

  IPFS提供了正确的解决方案,它不依赖于某些源代码最初上载的位置,而是通过内容寻址来识别源代码。


  使用范围:

  Obsidian Systems将在两个不同的阶段使用IPFS。


  里程碑1:使用IPFS分发

  Nix能够将IPFS作为源代码/构建构件的“替代者”或提供者,与当今存在的其他类型的替代者一起使用。

  作为这项工作的一部分,Obsidian Systems在Nix中使用了git,这样Nix就可以以IPFS能够理解的方式对git repo进行内容寻址,这有助于IPFS、Nix、上游协作者以及其他对归档和分发源代码感兴趣的各方,找到引用这些构件的通用方法。虽然git哈希方案有其局限性,但Obsidian Systems认为它是git数据多方协作的最佳方法。

  在构建产品和部署中使用IPFS,Obsidian Systems添加了对IPFS和Nix的git树哈希的元数据格式的支持,以在单独安装的文件系统树之间,传输具有运行时依赖关系的数据。


  里程碑2:使用IPFS构建

  Nix实际上并不包含常规构建步骤(与上面描述的“固定输出”构建步骤相反)生成的数据的内容。取而代之的是,它是根据制定计划来解决这些问题的。

  比如当有人编辑评论时,计划改变了,结果却没有改变。除了造成下游额外的重建,这也混淆了原始数据和来源之间的分离。对于点对点系统,谁提供数据并不重要,但谁声明数据所代表的内容绝对重要。

  有了这个核心改进,Obsidian Systems可以在IPLD中对构建计划进行新的改进版本,并直接从每个构建步骤生成新支持的IPFS兼容格式,而不需要从旧的输入寻址数据进行手动转换。这最后一步将两个里程碑的所有内容结合在一起。


  项目进展

  Obsidian Systems很高兴宣布里程碑1的完成!

  这为里程碑2目标奠定了基础。Obsidian Systems希望这一步可以帮助每个人更好地过渡到使用IPFS。


  下一步是什么?

  Obsidian Systems已经开始实施里程碑2,包括改进生成内容寻址数据的构建步骤。到那时,Nix和IPFS将完全地融合在一起!


最新推荐