# Filecoin完全指南

By [DK](https://paragraph.com/@iamdk) · 2022-05-11

---

去中心化存储系统让许多独立的运营商之间分散承担存储责任，形成一个整体的的点对点存储网络。

去中心化存储系统介绍
----------

现代计算机是高度中心化的，在过去的十年里，一些大型云计算公司将传统的计算机系统分割成独立的、基于云计算的产品，从而获得了巨大的财富。现代网络反映了这种中心化，当这些提供商中的一个出现故障时，这就是一个重大的互联网事件。如果你不相信我们，我们想提醒你2017年亚马逊网络存储的中断，2020年6月Github的长时间中断，以及2020年10月微软的多周云服务问题。

我们托管在这些服务上的内容也好不到哪里去，藏在脆弱的链接后面，经常掉线，这对我们构建的计算机系统，以及越来越依赖这些系统的社会都有深刻的影响。

中心化架构之所以成功，部分原因是它们更容易构建。

为了反击这种中心化，开发者需要基础性的新构件，这些构件同样容易组成，去中心化存储就是这样的基石之一，是更分布式网络的前提条件。

去中心化存储的基本特征
-----------

设计去中心化存储系统有很多不同的方法，一般来说，它们都强调系统弹性和效率。

### 系统弹性

现代互联网脆弱得令人恐惧，今天的网络内容位于URL后面，每个URL在任何特定的时刻都属于一个单一的明确的服务器。如果该提供商因任何原因退出网络，它所指向的内容就无法访问。中心化增加了这种效应，造成了单点故障。

因此，在今天的互联网中，链接打不开（听起来就是这样，当一个链接被破坏或永久不可用时）是普遍存在的，甚至分布式拒绝服务攻击（DDOS）可以破坏对几乎任何文件的访问。

在一个理想的去中心化系统中，运营商的损失不应该阻止对之前存储和服务的内容的访问。通过将责任分散在网络的许多节点上，去中心化系统对拒绝服务攻击的尝试也有天然的抵抗力，因为没有集中的目标，攻击者无法对其进行大规模的资源攻击。

### 效率

所有的中心系统架构都有一些优势和一些弱点，没有一个解决方案适合所有可能的用例，不幸的是，现代网络对中心化的强调也不例外。

今天，全球少数城市的几个中心化数据中心存储了大部分内容，例如，如果同一网络上的两个用户想要相互发送消息，这些消息通常会先送到其中一个数据中心，如果一百个用户在一个房间里用他们的设备观看同一个视频，他们会各自打到一个中心服务器上，并行下载一百份，而不是下载一份，然后通过本地网络共享。

最简单的说，去中心化存储让共享文件变得更容易，而不用把请求在互联网上到处跳转到某几个数据中心，取而代之的是，节点之间尽可能少地使用中间商建立连接。例如，连接到其他国家的节点，仍然需要经过几次跳转，但同一网络上的节点可以直接共享文件。去中心化存储系统的最终目标是拥有如此多的节点，每个人都可以找到相对本地的对等体来获取他们要找的信息。

去中心化存储解决方案可以为这类活动引入根本性的新效率，通过绕过稀疏的数据中心，分布式系统可以将节点放置在比现代内容传输网络更接近终端消费者的地方，从而大大加快文件检索速度。在本地网络上的点对点文件共享也可以节省宝贵的带宽，特别是在访问更广泛的互联网有限的地区。

去中心化存储的理想特征
-----------

虽然弹性和效率是去中心化存储的标志，但理想的存储系统还可能提供一些其他特性：

### 无障碍访问

一个理想的分布式系统应该是可以无障碍访问的，参与网络应该是容易的，允许尽可能多的节点代表网络存储和分发文件。

如果你读到这里，想知道，我可以成为一个节点吗？答案是：这取决于什么。

对于Filecoin，任何一个相对精通技术的人都应该能够运行一个客户端节点与网络互动，至于运行存储矿工节点（更多信息见下文），这不是每个人都能做的事情，你需要有符合一定规格的硬件。

在IPFS的情况下，节点对硬件的要求较低，这意味着更多的用户有可能通过运行节点（也许是通过运行一个内置的网络浏览器）为网络做出贡献。

### 可编程

云服务提供商已经使廉价和可靠的存储比以往任何时候都更容易工作。他们成功的一个主要方面是提供API通过代码提供和管理存储的能力，任何竞争系统都应该能够提供同样水平的便利。

### 内容寻址

如上所述，URL体现了一些固有的设计权衡，它们描述的是数据的位置，而不是其内容。

为了解释中心化系统是如何让你很难找到一段数据的，想象一下，你想下载一张毛茸茸的小猫咪的图片，考虑这两个URL：

[https://example1.com/cat.jpeg](https://example1.com/cat.jpeg)

[https://example2.com/cat.jpeg](https://example2.com/cat.jpeg)

每一个URL都引用了一个叫做cat.jpeg的文件，但是不能保证这两个文件是一样的。如果example1.com离线了，你不能确定example2.com有你要找的东西，它的cat.jpeg可能完全不同。事实上，它甚至可能是一张狗的图片，URL和它所引用的内容之间没有固有的关系。

因此，你没有办法问今天的互联网：”有没有人有这个文件？”因为除了文件的位置，你对文件一无所知。

当你使用URL共享文件时，事情可能会出错，服务器可能会从该URL开始服务一个不同的文件，或者有人可能会进行（竟然没有那么罕见）中间人攻击并更改文件，要验证每个访问该URL的人是否收到他们想要的文件是非常困难的。

相比之下，内容寻址根据内容标识符（CID）找到文件，CID作为文件的数字指纹，以这种方式寻址文件，解决了位置寻址的许多问题，当客户端想要一个文件时，他们不是向一个服务器询问URL，而是向网络中的节点询问具有特定CID的文件，一旦客户端下载了文件，他们自己就会给文件打上指纹。

重新审视我们之前的例子，就好像所有的网站都有一个共同的认识，当被问到cat.jpeg的时候，应该提供什么文件。所以，虽然不能保证任何节点都有那个特定的cat.jpeg，但节点们会对该文件的指纹进行检查，试图找到匹配的文件。

虽然像指纹这样的步骤是需要比一般人更多的技术知识来处理的，但Filecoin和IPFS客户端可以轻松地自动完成这个过程，这让客户可以保证他们收到了他们要求的文件，在这个系统中，找到某项数据的替代提供者是微不足道的。

CIDs意味着你可以找到原本在中心化系统中缺失的内容，CIDs还可以防止中间人攻击或服务器突然改变某个URL的文件。

### 无信任

一个无信任系统可以使双方合作，而不必相互了解或依赖第三方，相反，系统的激励机制促使行为者采取网络运作所必需的行为。

### 可验证

一个理想的存储系统应该让人很容易持续证明节点正在存储他们所承诺的准确数据。这种类型的可审计性是实现无信任的关键。如果你能始终确定数据被正确存储，你就不太需要相信提供存储的一方。

### 开源

最后，一个理想的分布式存储系统是开放的，它的代码是开源的、可审计的。此外，存储系统不应该是单一的，相反，它应该暴露出一个开放的协议，任何人都可以实施和建立，而不是鼓励锁定。

案例研究：Filecoin如何体现这些特点
---------------------

Filecoin项目是一个旨在满足这些特性的去中心化存储系统，Filecoin协议于2014年首次被描述，最初是作为星际文件系统（IPFS）的激励层开发的，这是一个点对点存储网络。与IPFS一样，Filecoin也是一个开放的协议，它建立在其老牌兄弟的属性基础上，利用相同的底层点对点和内容寻址功能。

Filecoin节点网络产生了一个去中心化的存储市场，用于检索和存储文件。该网络由一个新颖的区块链支持，它记录了网络参与者做出的承诺，用户使用区块链的原生加密货币FIL（⨎）在网络上进行交易。

### 检索市场

在检索市场上，被称为检索矿工的节点竞相向客户尽快提供文件。检索矿工通过收取少量的FIL费用来赚取回报。这使位于关键地点的内容传输节点有动力加入网络，并促进文件的快速分发。它还鼓励建立一个强大的网络，复制和保存需求量大的文件。

### 存储市场

在Filecoin的存储市场中，被称为存储矿工的节点被授权就价格和位置等各种特征进行竞争，以获得在规定时间内为客户提供文件保管的合同。在接受合同之前，存储矿工必须先交纳抵押FIL，这是在存储矿工未能履行对客户的义务时，用来自动偿还客户的。

当存储矿工和客户达成交易时，客户将他们的数据转移给存储矿工。存储矿工将他们的数据添加到一个扇区中，扇区是Filecoin的基本存储单位。然后，矿工会执行一个称为封印的计算密集型操作，以创建该扇区数据的唯一副本。

如果客户端想要存储多个数据的唯一副本，封印过程将确保每个副本都有一个唯一的指纹，而推导该指纹所需的计算努力将防止节点通过从基础数据中重新生成它来作弊。被封存的数据最终用于向Filecoin区块链发布复制证明。

在存储交易期间，存储矿工需要定期向区块链提交所谓的时空证明。矿工使用随机性（由区块链本身提供）、密封扇区和发布到区块链上的复制证明来获得这些证明。这些证明为客户端提供了一个强大的概率论证，即存储矿工拥有数据的完整、唯一副本。这是一个非常有力的保证，即使是现代云存储提供商也没有为客户提供这样的保证。

客户用支付的FIL作为交易费用奖励Filecoin存储矿工。存储矿工还得到了为区块链开采区块的机会，这既需要FIL奖励，也可以向其他希望在开采区块中包含信息的人收取交易费。

Filecoin的证明系统意味着矿工需要一些额外的硬件，但要求还是很低的，对于精通技术的人来说，可以加入。作为客户端参与网络的硬件要求不高。Filecoin节点还提供了一个API，用于与网络进行程序化交互，允许第三方服务建立在核心网络功能之上。

升级版
---

去中心化存储为其传统的中心化存储提供了一个引人注目的替代方案，它让开发者有机会探索设计权衡空间的全新区域，强调内容存储和交付的稳健性和效率，Filecoin表明，这些系统能够提供具有竞争力的存储产品，并具有几个非常理想的属性，为更多的人提供了比以往任何时候都更有机会作为我们数字遗产的保管者，同时使网络更有弹性，并使全世界的人都能访问。

---

*Originally published on [DK](https://paragraph.com/@iamdk/filecoin)*
