ECHO 处于关闭状态。 星际文件系统

              本文重点:ECHO 处于关闭状态。 星际文件系统

              简介IPFS即InterPlanetaryFileSystem,一个点对点的分布式文件系统,旨在创建持久且分布式存储和共享文件的网络传输协议。 当前,使用HTTP协议传递相对小的文件其实是非常廉价和方便的,但是随着计算资源和存储空间的指数增长,我们面临了需要随时获取大量数据的问题,而IPFS就是为了解决这一问题出现的。

              作为一个分布式的文件系统,IPFS提供了一个支持部署和写入的平台,同时能够支持大文件的分发和版本管理;为了达到上述的目的,IPFS协议被分成七个子协议,分别负责IPFS中的不同功能。

              身份系统的主要作用就是表示IPFS网络中的每一个节点,所有的节点都通过唯一的NodeId进行标识,代表每一个使用IPFS的用户。

              作为一个分布式的存储系统,节点之间的通信和信息传递都需要通过网络进行,同时能够使用多种传输层协议并保证可靠性、连通性、信息的完整性以及真实性。 IPFS可以使用任意的网络进行通信,它并没有假设自己一定运行在IP协议上,而是通过multiaddr的格式来表示目标地址和使用的协议,以此来兼容和扩展未来可能出现的其他网络协议。 在一个分布式系统中,检索或者访问其他节点中存储的资源就需要通过一个路由系统,IPFS使用了基于S/Kademlia和Coral中的DSHT实现了路由系统,我们能够在libp2p/go-libp2p-routing/中找到IPFS路由系统的接口,实现三种基本的功能,内容路由、节点路由以及数据存储。

              在IPFS中,数据的分发和交换使用BitSwap协议,BitSwap负责两件事情:向其他节点请求需要的Block以及为其他节点提供Block。 同时,IPFS使用Ledger创建了一个具有激励和惩罚的网络,保证了网络中的大部分节点能够交换数据并且正常运行。 IPFS定义了一系列的对象构建了支持版本控制的文件系统,与Git的对象模型非常类似,并且所有文件对象其实都通过Protobuf进行了二进制编码。 最顶层的commit就表示历史的某一次快照,对比两次commit以及子节点构成的树就能得到两次快照之间的差别,我们可以认为MerkleDAG和文件对象构成了整个IPFS中的文件系统。

              到目前为止,IPFS技术栈已经提供了一个点对点的数据交换系统,能够在节点之间发送DAG对象,并且可以推送和取回不可变的对象,但是可变的命名系统也是网络不可缺少的一部分,我们终究需要使用同一个地址获取不同的状态,因为不能因为网站的更新而改变域名,所以IPFS需要提供域名服务解决这一问题。 在IPFS中可以使用如下的可变命名空间来解决这些问题,用户可以发布一个对象,其他节点就可以通过ipns加上该用户的节点地址访问到这些发布到网络中的对象:在IPFS不仅能够使用哈希访问可变对象,也能嵌入现有的DNS服务中很好的运行,解决了底层服务无缝切换的问题。

              IPFS是一个非常有意思的区块链底层技术,它在兼容现有互联网协议的基础上,实现了点对点的文件存储系统并且为大数据存储提出了方案,作者尝试了一下IPFS的官方客户端go-ipfs也确实比较好用,但是目前也是在项目的早期阶段,很多模块和功能还没有定型。