Filecoin存储提供商为何值得信任?从了解存储流程的每一步开始
无论你是否在Filecoin上进行过存储,你了解到的可能都是自己操作过,或接触到的知识,对存储提供商而言亦是如此。但实际上,在你看不到的地方,还有许多流程可能都被忽略了,而这些,才是Filecoin真正值得研究,并需要深入了解的部分。
在传统的集中式云存储服务商处,我们已经习惯了信任特定大型服务商,支付存储费用,对方承诺会在规定期间内安全存储数据,而这个承诺他们建立在长久以来累积的信誉上。
但在去中心化存储上,我们依靠的不是对某个存储提供商或开发者的信赖,而是对链上技术的信赖。
Filecoin具体是如何进行安全存储的呢?我们一步一步来了解。
01
在文件存储到Filecoin网络之前,必须先将它转换为Filecoin Piece,这个步骤需要分几步。
第一阶段,需要存储的文件与UnixFS分块(是一种基于协议缓冲区的格式,用于描述 IPFS 中的文件、目录和符号链接)以创建IPLD DAG,此IPLD DAG有一个有效负载CID,与 IPFS CID 相同,它表示DAG的根。
第二阶段,需要将IPLD DAG序列化为CAR文件(可以将内容可寻址对象以IPLD 块数据的形式存储为字节序列,扩展名一般为.car)并进行位填充以制作Filecoin Piece(位填充添加额外的位以使该片段符合标准尺寸)。该片段具有唯一的片段CID,也称为CommP。
有效负载CID和片段CID是数据本身的加密哈希,相同的IPLD DAG将产生相同的有效载荷CID,并且相同的片段将产生相同的片段CID。由于它们是唯一的,只要CID相同,就能保证存储的是相同的内容。这样一来,无论谁将存储或检索它们。
02
准备工作完成,就是开始存储交易的过程。当客户与存储提供商协商存储交易时,一般会让他们存储一段数据(即一个Filecoin Piece),这可能是部分文件,也可能是整个文件。
存储提供商将用户提供的片段存储在Filecoin基本存储单元扇区中。通常,一个CID会与其他交易参数一起打包以创建交易。交易CID包含有关数据本身的信息:片段CID的形式,存储提供商和客户的身份,以及其他重要的交易细节。
同意存储提案后,客户将这些交易数据发送给存储提供商,后者确认后,客户将数据传输过去,一旦存储提供商获得数据,并验证它与交易提案中记录的CID匹配,他们就会在Filecoin链上发布交易提案,让双方都参与交易。
03
当存储提供商收到客户数据后,他们会将其放入一个扇区中,一旦扇区已满,就会生成一个 CommD(数据提交,又名 UnsealedSectorCID),代表扇区中包含的所有片段CID的根节点。
接下来,就会开始大家都熟悉的密封过程。
在密封期间,扇区数据(由CommD识别)通过一系列图形和散列过程进行编码,以创建唯一的副本。结果副本的默克尔树(一种典型的二叉树结构,由一个根节点、一组中间节点和一组叶节点组成)的根哈希是CommRLast。
CommRLast与CommC(来自复制证明的另一个默克尔根输出)一起散列,生成记录到公共区块链的 CommR(复制承诺,又名 SealedSectorCID)。CommRLast 由存储提供商私下保存,以供将来在时空证明中使用,它不会保存到链中。
密封是耗时最久的一个过程,这一步专门被设计为缓慢且计算量巨大,目的是为了保证其安全性。
CommR提供了我们需要的证明,证明存储提供商正在存储客户数据的物理唯一副本。如果你使用多个存储矿工存储相同的数据,或者使用单个矿工为相同的数据进行多个存储交易,则每个交易都有不同的CommR。
04
复制证明只需运行一次以证明存储提供商在扇区密封时存储了数据的物理唯一副本,而时空证明(PoSt)会重复运行,以证明他们继续将存储空间专用于相同随着时间的推移数据。
PoSt建立在复制证明期间创建的几个元素之上:副本、私人保存的CommRLast和公开的 CommR。
首先,PoSt随机选择编码副本的一些叶节点,并在它们上运行默克尔包含证明,以表明存储提供商具有应该存在的特定字节。然后,存储提供商使用私人存储的CommRLast在不透露其价值的前提下证明他们知道副本的根,该根既符合包含证明,又可用于推导出公知的 CommR。
当存储提供商同意为客户存储数据时,他们需要提供抵押品。如果他们在合同期间的任何时候未能通过时空证明,他们将受到处罚。
Filecoin中的复制证明和时空证明过程都使用zk-SNARKs 进行压缩,以保持链更小,以便Filecoin网络的所有成员可以都存储它以进行验证,并保证出块时间。
05
zk-SNARKs压缩后,验证存储所需的关键数据将存储在Filecoin链上,每个运行节点的用户都会维护其副本,这意味着时空证明随着时间的推移定期运行。
当你存储完文件,可以运行lotus client list-deals命令列出该节点提出的所有存储交易。这里举个简单的例子:
上图是一项交易节点的结果。我们要如何理解这段内容呢?
DealCid:交易提案的CID。DealId:交易的唯一ID。Provider:与之进行交易的存储提供商的唯一标识符,也称为存储矿工。State:交易的状态。在数据存储和密封后,一般都会显示为StorageDealActive。注意,即使在交易期限到期或存储提供商未能通过时空证明后,这仍可能将保持不变,这时还需要参考后文的slashed?字段。On Chain?:指示交易是否已存储在链上。如果为Y,则该字段后还会只是存储数据的时期——epoch,这是链上的一个特定点。较低的数字在链条的历史上更早,而较高的数字是最近的。Slashed?:指示存储提供者是否未能通过时空证明,如果没通过,该值变为Y,存储提供商则会受到惩罚。PieceCID:表示存储数据的CID,也称为 CommP。Size:正在存储的数据的字节数。Price:存储交易的Filecoin代币 (FIL) 中每个时期的价格。Duration:以epoch为单位达成的交易的总持续时间。区块链的一次迭代,目前约为30秒。相信看完这些,你一定对Filecoin的存储流程有了更深的理解,也一定明白为何大家会信任从未谋面且规模不一定大的存储提供商。
你也可能觉得需要时间消化、理解,确实,技术的内容对外行人而言总是晦涩的,但在Web3中,只有了解了最底层的技术,才会对其信任,而对技术的信任,正是构建这一世界的基础。
- 免责声明
- 世链财经作为开放的信息发布平台,所有资讯仅代表作者个人观点,与世链财经无关。如文章、图片、音频或视频出现侵权、违规及其他不当言论,请提供相关材料,发送到:2785592653@qq.com。
- 风险提示:本站所提供的资讯不代表任何投资暗示。投资有风险,入市须谨慎。
- 世链粉丝群:提供最新热点新闻,空投糖果、红包等福利,微信:juu3644。