IPFS在Web平台的发展:星际船坞更新
今年早些时候,我们推出了星际船坞,作为领导libp2p开源开发和最流行IPFS实现、工具及基础设施维护者的演进。在我们的介绍中,我们分享了路线图和愿景,其中一个关键部分是让IPFS在Web上运行。在这篇博客文章中,我们将分享自那时以来取得的所有进展以及未来的计划。
Web上的IPFS
自IPFS存在以来,关键目标之一就是让在Web上使用IPFS成为可能。即在Web上实现弹性、去中心化和可验证的数据检索。但IPFS在Web上运行意味着什么?
- 弹性:即使某些提供者离线,浏览器中仍可检索数据
- 去中心化:可以从浏览器连接到其他对等节点进行内容路由和检索,同时免受审查和网络中断点的影响
- 可验证:在本地验证数据,确保完整性而不需要信任假设(即无需信任)
数据指的是任何可以由CID寻址的内容:文件、目录、Web应用/dapp、视频等。
虽然Web平台拥有最广泛的影响力,但由于平台的固有约束和浏览器之间的差异,它也是让IPFS运行最具挑战性的平台。像ipfs.io这样的网关是一把双刃剑,因为它们使IPFS内容可被Web访问,但也突显了IPFS在Web上的挑战。
星际船坞的技术项目
在星际船坞,我们一直在通过libp2p和IPFS堆栈中的多个项目正面应对这一挑战:
- Verified Fetch(验证获取)
- Service Worker Gateway(服务工作者网关)
- 新的浏览器传输协议
- 使用libp2p.direct的AutoTLS
- 基于HTTP的IPFS
- 浏览器开发者工具
- 委托路由HTTP API
- Bitswap改进
- libp2p改进
Verified Fetch
Verified Fetch是一个TypeScript库,用于IPFS内容的验证检索,我们今年早些时候发布并构建在Helia之上。我们设计它的目的是使通过CID检索IPFS内容像大多数开发人员已经熟悉的Fetch API一样简单。
从开发者体验的角度来看,Verified Fetch遵循以下模式:
- 将CID作为输入
- 返回Response对象
Service Worker Gateway
Service Worker Gateway是一个在浏览器中运行的原生Web IPFS网关。它在Service Worker中实现了IPFS网关规范,并从网络上的提供者直接获取IPFS内容,同时在本地进行验证。
Service Worker Gateway为去中心化Web发布释放了新的可能性:
- 去中心化:通过点对点检索
- 无需信任:通过本地验证,移除对任何给定网关或提供者的隐式信任
- 离线使用:访问过的页面缓存在Cache API中,为每个静态Web应用启用离线支持
浏览器传输协议
浏览器传输协议是Web的基础,也是IPFS在Web上的致命弱点。如果你无法与其他对等节点通信,你就无法做太多事情。
浏览器使用多种传输协议通过互联网通信,每种协议都有自己的优缺点。假设Web应用处于安全上下文中(即通过HTTPS提供服务,如大多数现代Web应用),以下传输协议可用:
- HTTPS:通过TLS的请求/响应HTTP
- 安全WebSocket:通过WebSocket的安全双向流通信
- WebRTC:最初为浏览器到浏览器的实时通信而设计
- WebTransport:基于QUIC的WebSocket替代方案
AutoTLS与libp2p.direct
AutoTLS是一项新功能,显著改善了浏览器(Helia、Service Worker)连接到Kubo节点的方式。如上所述,安全WebSocket是在Service Worker中可靠工作的唯一流传输,但需要TLS证书和域名。
为了克服这一点,船坞团队一直在开展一个项目,为公开可拨号的Kubo节点自动颁发通配符TLS证书。这样,节点可以使用安全WebSocket libp2p传输,而无需注册域名。
IPFS over HTTP
贯穿本博客文章中许多项目的一个主题是使用HTTP作为互操作性的蓝图。这是由以下原因驱动的:
- HTTP在Web生态系统中无处不在,并且被开发人员充分理解
- HTTP在所有现代浏览器中都受支持,并且与Service Worker兼容
- HTTP具有强大的缓存原语,在基础设施提供商和开源基础设施中广泛采用
浏览器开发者工具
随着新的浏览器传输协议,我们还开发了许多开发者工具,使调试依赖libp2p和IPFS的Web应用更加容易。
历史上,在浏览器中调试IPFS和libp2p意味着启用日志记录然后通过日志进行筛选。我们现在发布了一个浏览器扩展,允许您检查libp2p节点并直接从浏览器开发者工具与之交互。
委托路由HTTP API
委托内容路由HTTP API允许IPFS节点使用HTTP API将内容和对等节点路由卸载到另一个进程/服务器。此外,它还允许与不同路由系统的可组合性和实验。
Bitswap改进
Bitswap是IPFS网络中最普遍的数据传输协议。我们代表IPFS基金会运营公共IPFS网关的经验使我们有机会大规模测量和优化Bitswap。
libp2p改进
Libp2p是上述大多数项目的依赖项,是整个IPFS堆栈的基石。除了前面提到的传输协议工作外,我们还在进行许多改进和规范以支持上述项目。
下一步计划
在我们标记这一里程碑的同时,我们也在展望下一阶段的工作。在接下来的几个月中,我们将重点关注以下几个领域:
- AutoTLS基础设施的生产化及在Kubo和其他IPFS实现中的集成
- Boxo/Kubo中的HTTP检索
- 更多示例、文档和指南
- Service Worker Gateway中改进的错误处理
- 将Service Worker Gateway集成到IPFS Companion中
总结
上述所有项目要么已完成,要么接近完成。这是在libp2p和IPFS堆栈以及标准机构和浏览器供应商之间艰苦合作的结果。在Web上实现弹性、去中心化和可验证的IPFS检索终于成为现实。
这项工作的广度和影响力只有通过IPFS和libp2p项目的开源性质才可能实现。但它也强调了资助星际船坞团队的重要性,以便我们能够继续在整个生态系统中引导这些努力。