关于星际文件系统(IPFS)的大部分对话都是从它与区块链技术的关系开始和结束的。虽然利用IPFS协议的去中心化特性为基于区块链的游戏和NFT托管媒体资产有很多实用性,但它的实用性超出了Web3实现。IPFS内置的去中心化可用于任何应用程序开发,并有可能改变Web应用程序的构建和扩展方式。
IPFS快速复习
这个名为“InterplanetaryFileSystem”的宏大名称最初是由ProtocolLabs创始人JuanBenet构想的,作为HTTP解决内容的替代方法。HTTP基于到文件位置的路由。理论上,该位置的文件每次在浏览器中加载时都可能不同。IPFS地址指向一个特定的加密可验证文件,这意味着该文件的修改版本将使用不同的地址进行引用。
其中一种方式是地址永远不会改变,即使内容暂时不可用也是如此。公司A可以托管IPFS地址的内容。如果B公司出现并托管相同的内容,该地址将返回相同的结果。如果有一段时间没有包含内容的节点可用,则内容将变得不可用,直到托管该内容的节点上线。
在接受TheNewStack采访时,协议实验室浏览器和平台生态系统负责人DietrichAyala说:“IPFS和HTTP之间的主要区别之一是,当HTTP中出现时,只有一方可以提供原始URL.更改文件名会破坏HTTP地址。使用HTTP,提供数据的一方是该数据可用性的上限;但是对于IPFS,提供数据的一方只是起点。随着更多节点存储数据,可用性和弹性也会提高。”
为什么要为IPFS放弃HTTP?
考虑到这里提到的所有挑战,为什么开发人员会考虑使用IPFS而不是坚持使用HTTP堆栈?“目前全栈开发人员的端到端工作流程非常复杂,”Ayala说。“它需要一系列服务。在发布到IPFS的工作流程中有一个即时满足的机会。如果一切正常并且您的节点可用,您可以将您的应用程序添加到您的本地节点,将地址提供给某人,他们可以立即加载它。这与需要注册域名和更新SSL证书非常不同,或者NPM模块可能在部署时中断,一周后您的代码可以在本地运行,但仍然无法分发。自我出版时的即时满足感真的很强大。”
ProtocolLabs为您提供了一些工具来开始使用IPFS。您可以通过桌面应用程序或使用IPFS的Go实现的命令行界面运行节点。使用js-ipfs结合Node.js或通过IPFS的Go实现(称为Kubo),可以使用IPFS进行构建。还有一个sidecarIPFSCluster分布式应用程序,允许将文件轻松部署到多个节点,在部署应用程序时提供即时扩展。
IPFS采用的挑战
IPFS听起来像是解决许多Web基本限制的好方法,但它也听起来好得令人难以置信。我向阿亚拉询问了收养的挑战。他从HTTP作为协议的成功开始强调了一些核心问题。
“HTTP是我们呼吸的空气。这就是我们此时用来与其他计算机对话的一切。AJAX和RESTAPI真正巩固了这样一种观念,即计算机与计算机的通信,而不仅仅是人与人之间的通信,是通过HTTPAPI进行的。当你要求万以上的开发人员重新评估整个OSI堆栈以及网络应用程序的工作方式时,这是一个非常有趣的挑战。”
提高密码素养
密码学教育是采用IPFS等新协议的另一个挑战。很少有开发人员和用户希望将散列作为日常生活的一部分的情况。“如果你下载Linux发行版,”Ayala解释说,“你可能很熟悉看到MD5哈希值,你可能会或可能不会实际验证哈希值是否匹配。在这种情况之外,您是否需要处理散列?您可能会编写一些代码来将密码保存到您不存储明文的数据库中。在这两个实例之外,它不是日常开发人员体验的一部分。使用IPFS,这是我们处理无处不在的数据的核心。”
这种可验证性对开发人员和用户都有影响,并且最终是存储在IPFS方法中的位置数据不再重要的原因。如果有人从一张照片开始,编辑该照片,然后将其重新发布到HTTP世界中,就好像它是原始照片一样,这取决于修改后的像素数量,人眼可能无法区分它不再看同一张图片。从验证的角度来看,IPFS会将修改后的图像视为新图像。
“在错误信息和虚假信息泛滥的时代,这很重要,”阿亚拉说。“在开发人员如何处理数据、他们如何进行密码验证以及最终用户思考拥有自己的数据意味着什么方面,我们需要克服一个很大的教育障碍。”
后HTTP世界中的数据所有权
这给我们带来了采用IPFS的第三个障碍,这也是协议之间的另一个根本区别。
Ayala说,“如果你通过IPFS加载一个网站,它就会存储在你的IPFS节点中。您拥有它,直到您决定不再需要副本为止。今天网络的运作方式是,网站的所有组件都存储在您的浏览器缓存中,但浏览器不会将浏览器缓存视为属于您的东西。发布者设置的cookie决定是否从您的浏览器缓存中删除某些内容。这对我们看待应用程序分发的模式来说是一个相当重大的变化。”
在开发用户决定是保留还是清除网站应用程序数据的模型时,存在一些潜在的挑战。随着新功能的推出或错误的修复,用户应该会看到采用新版本的显着好处,但IPFS允许旧版本继续存在。另一方面,当网站删除内容或使部分内容不可用时,用户可能不会从其IPFS节点中清除该数据以保持对开发人员不再支持的内容的访问。
ProtocolLabs和Igalia解决浏览器问题
采用的另一个挑战是网络浏览器的设计方式。浏览器从根本上设计为HTTP协议和请求-响应安全模型的载体。浏览器权限和隐私是围绕HTTP设计的。这是使采用像IPFS这样的新协议变得简单的核心挑战之一。
由于这一限制,ProtocolLabs聘请了Igalia,这是一家在构建浏览器技术(包括MathML和CSSGrid)方面具有丰富经验的网络咨询公司。Igalia在过去的一年里重构了Chromium代码库的某些部分,以包括对非HTTP协议的支持。“我们与Igalia合作修复了一些跨不同浏览器的Web兼容性错误,”Ayala说,“因此源安全模型应用于本地主机地址的方式是一致的,因此Web开发人员可以知道他们的代码与浏览器兼容。”
基于Chromium的Brave浏览器是首批直接集成IPFS的浏览器之一。Brave的集成主要集中在安全模型和如何权衡利弊方面。
“Brave安全团队之前已经评估和审核了集成,”Ayala告诉我。“他们已经支持Tor。IPFS模型与Brave中的Tor集成非常相似。一旦用户启用该功能,Brave就会下载一个IPFS节点,启动该节点并将其作为单独的二进制文件运行,通过进程间通信来回发送消息,并将内容流式传输回Web渲染引擎。”
在撰写本文时,这种对协议支持的更改尚未出现在Chromium的发布版本中,但预计很快就会出现。Igalia为扩展浏览器中的协议支持所做的工作具有超出IPFS的优势。解决IPFS与浏览器集成所面临的一些挑战,从根本上改变了浏览器与非HTTP协议交互的方式,这在理论上意味着现有协议以及尚未发明的协议也会受益;并可能有更快的采用途径。同时,IPFS为Chrome和Firefox提供扩展,并在Opera和Brave中提供原生支持。
看看IPFS
如果你因为没有在自己的工作中看到区块链的用例而一直推迟研究Web3技术的潜力,我鼓励你看看IPFS。虽然它可以与区块链技术结合使用,但它作为一种点对点协议独立存在,具有解决许多实际挑战的潜力。
努力与更广泛的互联网建立可靠连接的地区可以通过运行IPFS节点来创建本地冗余。它还提供了一个可行的解决方案,可以提高面对灾难性停电时的恢复能力,*府和基本服务部门可以更好地应对这种情况。
正如Ayala所说,“我们现在正处于十字路口,我们拥有一些现成的技术,允许开发人员构建首先为特定国家的特定公司服务的应用程序。对于互联网用户来说,这是一个巨大的机会,可以利用满足他们需求的东西,而不是千篇一律的协议或平台。