在这个系列中,我们介绍了一些项目,这些项目探索了当网络变得去中心化或分布式时,可以实现哪些可能性。这些项目与 Mozilla 无关,其中一些项目改写了我们对网页浏览器的思考方式。它们的共同点在于:这些项目都是开源的,并开放参与,并且与 Mozilla 的使命一致,即保持网络开放和可访问,让所有人受益。
有些项目从小型开始,旨在逐步改进。另一些项目则从宏伟愿景开始,通过构建理想化的世界来跨越当今的问题。星际文件系统 (IPFS) 无疑属于后者 - 它试图完全取代 HTTP,使用一种新的网络层,该层将规模、信任和反 DDoS 措施都构建到协议中。我们很高兴今天能从 Kyle Drake(Neocities 的创始人)和 Marcin Rataj(IPFS Companion 的创造者)那里获得对 IPFS 的介绍,他们都是 Protocol Labs 的 IPFS 团队成员 -Dietrich Ayala
IPFS - 星际文件系统
我们是一支遍布全球的团队,致力于开发 IPFS,这是一种分布式网络的实现,它试图用一种由互联网上的个人驱动的新的协议来取代 HTTP。IPFS 的目标是通过用一个不需要信任第三方内容的、面向内容的协议取代以位置为中心的 HTTP 来“重新去中心化”网络。这使得网站和网络应用程序可以由互联网上任何支持 IPFS 的计算机“提供服务”,而无需由原始内容创建者运行服务器。IPFS 和分布式网络将信息从物理位置和单一发行中分离出来,最终创造一个更经济、更平等、更可用、更快、更不易审查的网络。
IPFS 旨在实现“分布式”或“逻辑上分散”的设计。IPFS 由一个节点网络组成,这些节点通过 分布式哈希表 (DHT) 互相帮助找到数据。结果是,所有节点都帮助查找和提供网站,即使网站的原始提供者宕机,只要网络中的另一台计算机拥有该网站的副本,您仍然可以加载它。网络不再依赖于有能力构建大型内容交付网络并提供大量流量的大型组织,而是由个人赋能。
IPFS 堆栈是在 IPLD 和 libp2p 之上构建的抽象层。
Hello World
我们在 Go 中有一个参考实现 (go-ipfs),并且在 Javascript 中有一个不断改进的实现 (js-ipfs)。此外,还有针对其他语言的众多 API 客户端。
由于 JS 实现的存在,在 Web 开发中使用 IPFS 非常容易。以下代码片段…
- 启动一个 IPFS 节点
- 向 IPFS 添加一些数据
- 获取数据的 内容标识符 (CID)
- 使用 CID 从 IPFS 读取回该数据
<br /><script src="https://unpkg.com/ipfs/dist/index.min.js"></script>
Open Console (Ctrl+Shift+K)
<script>
const ipfs = new Ipfs()
const data = 'Hello from IPFS, <YOUR NAME HERE>!'
// Once the ipfs node is ready
ipfs.once('ready', async () => {
console.log('IPFS node is ready! Current version: ' + (await ipfs.id()).agentVersion)
// convert your data to a Buffer and add it to IPFS
console.log('Data to be published: ' + data)
const files = await ipfs.files.add(ipfs.types.Buffer.from(data))
// 'hash', known as CID, is a string uniquely addressing the data
// and can be used to get it again. 'files' is an array because
// 'add' supports multiple additions, but we only added one entry
const cid = files[0].hash
console.log('Published under CID: ' + cid)
// read data back from IPFS: CID is the only identifier you need!
const dataFromIpfs = await ipfs.files.cat(cid)
console.log('Read back from IPFS: ' + String(dataFromIpfs))
// Compatibility layer: HTTP gateway
console.log('Bonus: open at one of public HTTP gateways: https://ipfs.io/ipfs/' + cid)
})
</script>
就是这样!
在深入研究之前,让我们先回答一些关键问题。
还有谁可以访问它?
拥有 CID 的每个人都可以访问它。敏感文件应在发布之前进行加密。
该内容将存在多长时间?在什么情况下它会被删除?如何删除它?
IPFS 中基于内容寻址的数据的持久性本质上与对提供该数据的其他对等体的积极参与相关联。从其他对等体中删除数据是不可能的,但如果没有任何对等体保持数据存活,那么该数据将被“遗忘” by the swarm.
公共 HTTP 网关将保留数据几个小时 - 如果您想确保长期可用性,请确保在您控制的节点上固定重要数据。试试 IPFS 集群:一个独立的应用程序和一个 CLI 客户端,用于在 IPFS 守护程序集群中分配、复制和跟踪固定。
开发者快速入门
您可以使用 js-ipfs 来制作简单的浏览器应用程序。如果您想运行一个 IPFS 服务器,您可以 安装 go-ipfs,或者 运行一个集群,如上所述。
越来越多的 示例 可供参考,请务必查看使用 js-ipfs 构建的 双向文件交换演示。
您可以通过安装适用于 Firefox 的 IPFS Companion 扩展 来将 IPFS 添加到浏览器中。
了解更多
请访问我们的文档网站 https://docs.ipfs.io,了解有关 IPFS 概念的更多信息。
读者可以通过以下方式参与:改进文档,访问 https://ipfs.io,使用 IPFS 开发分布式 Web 应用程序和网站,探索和贡献 我们的 Git 代码库 以及 社区 创建的各种内容。
我们的友好社区论坛是提出问题的绝佳场所:https://discuss.ipfs.io。
我们还有一个 IRC 频道,#ipfs 在 Freenode 上(或 #freenode_#ipfs:matrix.org 在 Matrix 上)。加入我们吧!
关于 Kyle Drake
Kyle Drake 是一名开发者,目前在 Protocol Labs 从事 IPFS 相关工作。
关于 Marcin Rataj
Marcin Rataj 是一位基于碳的生物,在 Protocol Labs 从事 IPFS 在 Web 浏览器中的工作。
2 条评论