售前客服二维码
文章均源于网络收集编辑侵删
提示:仅接受技术开发咨询!
总结
IPFS-星际文件系统是一个点对点分布式文件存储系统。IPFS的愿景是在全世界建立分布式网络,以取代传统的集中式服务器模式。所有ipfs节点形成一个分布式网络,每个节点都可以存储文件。用户可以从IPFS建立的网络获得分布式哈希表中的文件,从而实现新一代完全分散的网络,旨在取代现有的万维网。IPFS功能丰富,包括分布式哈希表联网、文件存储、Bitswap文件交换等。本文主要介绍IPFS的文件存储原理。当文件上传到IPFS节点进行存储时,该节点将阻止该文件并存储它。每个文件都是以默克尔有向无环图(Merkle DAG)格式组织的,并且用Merkle DAG的根散列来表示文件。本文将详细介绍IPFS存储,IPFS的版本是v0.6.0.
国际开发委员会
在引入IPFS存储文件的分离之前,引入了一个重要的标识符——CID(内容标识)。CID是用于表示IPFS内容的标识符,可用于表示文件或文件块。如下所示,CID是一个字符串,主要由版本、编解码器和多哈希组成。版本分为v0和v1版本,其中v0版本CID可由v0Builder生成,V0版本CID以Qm字符串开头,v1版本CID可由V1Builder生成。CID的v1版本主要包含三个部分编解码器,MhType和MhLength,其中编解码器是表示内容的编码类型,如DagProtobuf (protobuf格式)、DagCBOR (cbor格式)等。MhType是一种哈希算法,例如SHA2_256(默认哈希算法)、SHA2_512、SHA3_256、SHa3 \u
IPFS组件简介
IPFS使用IpfsNode表示IPFS的节点,相关组件存储如下:
下图显示了这些组件之间的关系。顶层是DAGService,它结合了块服务组件,而块服务结合了GCBlockstore组件,然后gcblockstore包含两个组件,基本块和GCLocker,最后基本块结合了原始的块存储组件。
接下来,分别介绍这些组件的功能:
固定:固定代码的管理器,主要负责固定文件或文件块(也称为块)的代码,固定代码的块不会被垃圾收集器丢弃。上传文件的最后一个文件的CID将被修复以防止垃圾收集。
Blockstore:GCBlockstore类型,它结合了两个组件:Blockstore和GCLocker。
基本块:原始块存储,提供获取/放置/拥有/删除块等操作。
GCLocker:用于锁定块存储并保护块存储免受垃圾收集。
块:提供块的服务,组合块存储组件,并提供诸如获取块/获取块、添加块/添加块、删除块等操作。
达格:IPFS的默克尔达格的服务,它结合了块服务组件,并提供诸如获取/获取许多、添加/添加许多、删除/移除许多等操作。
文件存储过程
上传文件时,将文件添加到IPFS仓库。上传过程如下图所示。默克尔的民主德国的结构产生了。生成的结构有两种布局:平衡和涓流。本文介绍了缺省平衡结构。首先,生成根作为根节点,然后分割文件。默认情况下,根据256千字节的大小读取数据块,生成叶节点,然后是节点1和节点2。根节点将具有指向悬挂在根节点上的叶节点节点1和节点2的链接。根节点下可链接的叶节点数量有限,IPFS的默认设置为174(已定义链接的总大小为8KB,每个链接的大小为34 8 5 [sha256多哈希大小无名称protobuf成帧],默认链接数为8192/47,约为174)。
如下图所示,在超过174个节点后,将创建一个新的根节点并将其链接到旧的根节点,新的块将由新的根节点直接链接为节点3(在此由节点3简化,实际上是第175个节点)。
添加新块时,节点34将作为节点3和节点4的父节点生成,节点34包含分别链接到节点3和节点4的两条链路。
IPFS产生了一个。初始化期间的ipfs目录,如下图所示,其中blocks是存储文件块的目录,而datastore是存储文件系统的根哈希的leveldb数据库,等等。和与相关配置相关联的配置文件。ipfs目录已存储。
经过以上步骤,文件已被切割成碎片,并转换成Merkle DAG结构。接下来,详细描述如何存储每个块的过程。
如下图所示,当存储一个块时,dagService(它实现DAGService接口)首先调用添加来添加它;
在那之后,街区;服务(实现块服务接口)调用添加块来添加块;
调用弧缓存的放入,这是存储块的弧策略缓存;
之后,验证局调用Put进行存储,验证局主要检查CID的合法性,并判断其是否合法;
然后块存储(实现块存储接口)调用Put进行存储,并在Put函数中转换CID,调用dshelp的CidToDsKey方法将CID转换为存储的密钥;
然后调用关键转换的放置。数据存储,当前缀/块被添加到关键字时,前缀将在Put函数中拼写;
然后调用测量的Put函数,这是挂载的封装;
之后,调用mount的Put函数,mount的结构与IPFS配置文件的结构相对应,并根据关键字和相应的度量搜索相应的数据存储;因为前缀是/blocks;
调用度量的看跌函数;
最后,调用flatfs的Put函数,Put函数调用doPut。最后,调用encode函数来指定完整块写入的目录为/home/test/。ipfs/blocks/WD,其中WD来自blocks/ciqfsqatubeifdecktnghokpee 7 wupm5 nnsjcdrom 6 yhektwdy中倒数第二个字符。这样,块被写入目录下的文件。
摘要
IPFS的文件存储格式为默克尔DAG格式,每层的链接大小为174,如果超过将重新调整。在文件存储过程中,有多个数据存储区被组合和封装,每个数据存储区都有一个功能。例如,arccache仅缓存块,而VerifBS仅检查CID。这样做的好处是每个组件都有明确的功能,但缺点是组合太多,调用深度太深。此外,接口是内部使用的,几个组件已经实现了这个接口,不方便阅读。
IPFS的存储模式是为互联网用户设计的。由于其开放性,所有节点都可以随意访问,能够访问IPFS网络的节点可以自由搜索内容,不适合直接作为企业的文件存储服务。然而,由于其分布式存储特性,很容易动态扩展存储容量。通过结合节点认证机制和分布式哈希表搜索内容的剥离,它可以成为企业的分布式存储系统。此外,通过与区块链技术和供应链下的协同技术合作,可以轻松解决供应链上存储容量不足的问题。
文章均源于网络收集编辑侵删
提示:仅接受技术开发咨询!