您正在阅读的网站可以完全使用,而无需在服务器上运行后端。这样的网站被称为静态网站。
您正在阅读的网站可以完全使用,而无需在服务器上运行后端。这样的网站被称为静态网站。
静态网站向浏览器提供所有内容和逻辑(JavaScript)。所有交互(例如搜索或单击内部链接)都是通过包含的 JS 脚本进行的。虽然这听起来像是一个外行人所期望的,但这与互联网的当前状态相去甚远。
在早期,许多网站只包含静态 HTML 站点。今天,许多现代网站依赖于一个运行的集中式后端服务器。这使动态体验成为可能,但也会导致链接失效,因为特定网站(及其url)的寿命有限。许多人至少经历过一次死链接,随着互联网的日益老化,这个问题预计还会继续恶化。
内容可寻址存储
最近对互联网进行分散化的努力再次导致了诸如内容可寻址存储之类的技术。
互联网上的普通 URL https://lpfann.me/是任意选择的单词,与实际内容无关。
内容寻址使用数学哈希函数将网站的内容压缩为称为 hash 的短字符串。哈希函数的妙处在于,它们很可能会产生唯一的输出以及这样的唯一地址。
这允许人们仅基于内容哈希即可使用和交换内容的用例。IPFS(星际文件系统)就是这种应用的一个例子 。
IPFS 引入了一种用于内容的地址方案,还使用了不使用中央服务器的对等网络进行信息交换。当使用 IPFS 应用程序的人了解其他节点需要的信息时,他们会自动充当其他对等方的服务器。
这样就无需大型中央服务器或内容分发网络,即可实现更健壮和分散的 Web。
将网站设为静态
该网站是使用 Hugo 构建的 ,已经产生了静态输出。启用 relativeURL 与 IPFS 寻址一起使用仅是重要的 。
我们还在为雨果使用学术主题。Academic 使用多种外部字体和 JavaScript 资源来增强内容表示。虽然完全有可能托管引用非 IPFS 资源的 IPFS 网站,但它并未完全分散。
幸运的是,Academic 主题还提供了一个下载工具,可将所有外部资产保存在网站文件夹中。
在撰写本文时,主下载器尚不支持所有资产,但是一个开放的 请求请求增加了对大多数缺失内容的支持。丢失的另一件事是字体,这些字体最初来自我们手动下载的 Google 字体 CDN。
现在,我们有了一个运行在本地字体和 JavaScript 资产 1 上的完整网站。这样,您可以下载网站文件并终止 Internet 连接,您将获得相同的体验。
托管 IPFS 网站
如果我们使用 IPFS 对网站进行哈希处理,则会得到如下内容哈希:
/ipfs/QmSPZuY3K1XieH7M9zh4qs9MEGFf4GZdBv3STaiJpBaC6o
现在,其他人可以直接使用自己的 IPFS 客户端或使用可用的浏览器插件之一来检索网站。
此文章的草稿经过散列并固定到本地 IPFS 节点。
为了使其他人能够检索网站的文件,我们必须保持IPFS节点运行或要求其他人对其进行缓存(固定)。
有所谓的固定服务(例如 Pinata)提供此服务。另一个项目是 Filecoin,它建立在 IPFS 之上。它使用一种区块链来奖励节点以保持 IPFS 文件固定,从而提供金钱激励。
在过去的几天中,我们寻找了将新内容添加到 git 存储库时自动固定此网站的方法 。就在昨天, Textile 宣布了在 IPFS 之上工作的动态存储桶。尽管不是博客文章的主要重点,但他们还介绍了新的 GitHub Actions,它们将内容自动部署到其免费存储桶托管中。我们在基于Gatsby的演示站点上扩展了他们的脚本,以与 Hugo 一起使用。
GitHub Action 构建并将文件推送到 Textile bucket
现在,在每个推送请求之后,GitHub Action 都会编译 Hugo 输出并将其推送到也固定并与IPFS 一起使用的 Textile bucket。
每次更改并推送到存储库后,我们的网站内容都会自动显示在内容哈希下 。
域名解析
为了让人们知道一个站点可以使用 IPFS,可以使用 DNSLinks。这些是附加到 DNS 域的 TXT 记录,它们提示可用的 IPFS 资源。IPFS 浏览器扩展可以检测到这些记录,并在访问此类站点时自动使用 IPFS 进行内容检索。
来自 Textile 的脚本还包括用于 DNS 记录的更新程序,该更新程序将 IPFS 哈希值发布到 Cloudflare DNS 服务。每次手动发行后,此脚本都会更新 DNSLink。
要拥有一个完全分散的解决方案,可以使用 ENS 之类的技术 来替代 DNS 系统。
我们的网站也可以在 ENS 域 https://pfannschmidt.eth 下访问,也可以通过过渡链接 https://pfannschmidt.eth.link/ 访问,该链接 使用该 eth.link 服务允许没有 ENS 支持的浏览器访问该网站。
目前,我们手动更新了存储在 ENS 中的 IPFS 哈希,但是将来我们可以使其自动化。
向后兼容
IPFS 仍处于初期阶段。大多数流行的浏览器不支持大多数网络用户所必需的协议。
在此之前,还需要使用 Web 服务器和 DNS 以传统方式托管网站。可以使用 Cloudflares IPFS 网关和 DNS 解决方案通过普通 HTTP 自动提供 IPFS 内容。
目前,此博客由 Netlify 托管, 以支持未启用 IPFS 的访问者。
总结
总的来说,这个过程仍然是一件复杂而艰巨的事情。IPFS 以及生态系统在稳步改善的同时,仍有许多工作要做。
幸运的是,出现了诸如 Terminal.co 之类的新服务 ,它们提供了端到端的分布式托管解决方案。
非常感谢您对 IPFS&Filecoin 项目的持续支持。我们很高兴继续与您一起,为人类信息建立一个强大的,去中心化和高效的基础。
FilCloud 帮你迅速了解 IPFS 领域的热点技术和应用