深度解析IPFS怎样实现文件存储

概述

IPFS-InterPlanetaryFileSystem星际文件系统,是一个点对点的分布式文件存储系统,IPFS的愿景是构建一个全世界的分布式网络,用来替代传统中心化的服务器模式,所有的IPFS节点组成一个分布式网络,每个节点都可以存储文件,用户可以从IPFS构建的网络中以DHT(DistributedHashTable,分布式哈希表)的方式获取文件,从而实现了新一代的完全去中心化的网络,旨在取代现有的万维网。IPFS功能很丰富,包括DHT组网,文件存储,Bitswap文件交换等功能。本文主要介绍IPFS的文件存储原理,文件上传到IPFS节点存储时,节点会将文件分块后进行存储,每个文件以MerkleDAG的格式组织,而MerkleDAG的根哈希则用来表示该文件。本文将对IPFS存储进行详解,所述的IPFS的版本为v0.6.0。

CID

在介绍IPFS存储文件的远离之前,先介绍一个重要的标识——CID,CID是IPFS中用来表示内容的标识,可以用来表示一个文件,也可以用来表示一个文件块。如下所示,CID是一个字符串,它主要由Version、Codec和Multihash三部分构成,Version目前分为v0和v1版本,v0版本的CID可以由V0Builder生成,v0版本的CID以Qm字符串开头,v1版本的CID可以由V1Builder生成,v1版本的CID主要包含三个部分Codec,MhType和MhLength,其中Codec是表示内容的编码类型,例如DagProtobuf,DagCBOR等,MhType是哈希算法,例如SHA2_256(默认的哈希算法),SHA2_512,SHA3_256,SHA3_512等等,MhLength是生成哈希的长度,默认用-1表示根据哈希算法确定长度。

央行上海总部党委副书记:深度参与数据安全、数字货币等领域国际规则标准制定:12月4日,在第三届上海金融科技国际论坛暨首届长三角金融科技大会上,中国人民银行上海总部党委副书记、副主任兼上海分行行长金鹏辉表示,加快推进金融机构数字化转型,从决策运营、服务能力、用户体验多方面发力,打造数字核心竞争力,推动长三角数字生态协同共建,同时主动融入全球创新网络,深度参与数据安全、数字货币等领域国际规则标准制定。他还表示,积极发展绿色金融服务,依托金融科技深化绿色金融产品和服务创新,聚焦当前绿色金融展业痛点,加强金融科技创新应用,比如探索应用型科技、科学核算碳排放,丰富和完善绿色信息体系。(澎湃新闻)[2021/12/4 12:50:53]

IPFS组件介绍

IPFS用IpfsNode表示IPFS的节点,存储相关组件的如下所示:

这些组件的关系如下图所示,最上层是DAGService,它组合了BlockService组件,而BlockService组合了GCBlockstore组件,然后GCBlockstroe包含BaseBlocks和GCLocker两个组件,最后BaseBlocks组合了最原始的blockstore组件。

管交所BGOEX与三体链TBC达成深度合作:据官方消息,管交所BGOEX与三体链TBC正式达成深度合作,共拓三体链生态版图。三体链是基于先进的数学模型和经济思维打造的一个区块链社会生态,致力于构建公平的财富上升通道,突破阶级的壁垒将财富归于大多数人,实现社区共建共赢。后期管交所BGOEX将强势赋能三体链TBC,助力优质项目三体链TBC生态建设。[2020/6/1]

接下来分别介绍这些组件的功能:

Pinning:固定CID的管理器,主要负责将文件或者文件块的CID固定,固定CID的块不会被GC掉。上传的文件最后的文件的CID都会被固定住,防止被GC。

Blockstore:GCBlockstore类型,组合Blockstore和GCLocker两个组件。

BaseBlocks:原始的blockstore,提供了对Block的Get/Put/Has/DeleteBlock等操作。

青岛“智能办”平台上线试运行,将区块链等技术与审批业务深度融合:5月7日,青岛“智能办”平台上线试运行,通过“青岛市行政审批微大厅”微信公众号同步新发30项“智能办”事项,其中28个涉企事项,包括社会团体印章备案、人力资源服务许可(延续)等12个业务领域。与“网上审批”“秒批”相比,“智能办”亮点更加突出。技术平台更加先进,建成全省首个、国内领先的综合性“智能办”平台。将大数据、人工智能、区块链等前沿技术与审批业务深度融合,在全省率先建成支撑市、区两级“智能审批”改革的综合性、一体化平台。(青岛日报)[2020/5/9]

GCLocker:用来锁住blockstore,保护blockstore防止被GC影响。

Blocks:提供Block的服务,组合Blockstore组件,提供了GetBlock/GetBlocks、AddBlock/AddBlocks、DeleteBlock等操作。

声音 | 贵州省省长:运用区块链等新技术 推动数字经济与实体经济的深度融合:1月15日消息,贵州省第十三届人民代表大会第三次会议在贵州举行。贵州省人民政府省长谌贻琴在作该省政府工作报告时要求,进一步推动数字经济与实体经济深度融合。坚持“四个强化”“四个融合”,充分运用大数据、云计算、区块链、人工智能、物联网等新一代信息技术,提升产业数字化、网络化、智能化水平。(上证报)[2020/1/15]

DAG:IPFS的默克尔DAG的服务,组合BlockService组件,提供Get/GetMany,Add/AddMany,Remove/RemoveMany等操作。

文件存储流程

文件上传时将文件添加到IPFS的仓库中,上传的流程可以如下图所示,生成默克尔DAG的结构,生成的结构有两种Layout:balanced和trickle的。这里介绍默认的balanced结构,首先生成root作为根节点,然后将文件分割,默认按照256KB大小读取一个chunk,生成叶子节点,依次生成node1,node2,root节点会有Link指向挂在root节点的叶子节点node1和node2。root节点下面能够Link的叶子节点数量是有限的,IPFS中默认设置的是174个。

声音 | 浙江大学院士陈纯:区块链可与工业互联网实现深度融合:11月9日下午,中国工业互联网研究院组织相关高校、研究机构、媒体和企业代表召开了“工业互联网+区块链”专家企业家媒体座谈会。浙江大学陈纯院士表示,区块链具有可信协作、隐私保护等技术优势,可与工业互联网实现深度融合,尤其是在工业互联网数据的确权、确责和交易等领域有着广阔应用前景,为构建国家工业互联网数据资源管理和服务体系提供了坚实技术基础。开展“工业互联网+区块链的深度应用和创新发展”相关研究,对促进我国工业生产数字化、网络化和智能化转型,推动实体经济高质量发展具有非常重要的意义。[2019/11/10]

如下图所示,超过174个后则会新创建一个newroot节点,并Link到oldroot,新的chunk作为node3被newroot直接Link。

当继续有新的chunk添加时,则会生成node34作为node3和node4的父节点,node34含有两个Link分别链接到node3和node4。

IPFS在init的时候会生成.ipfs目录,如下图所示,其中blocks则为文件块存储的目录,datastore为leveldb数据库,其中存储了文件系统的根哈希等,存储相关的配置关联在.ipfs目录下面的config文件。

经过上面的步骤,文件已经切块并转化成MerkleDAG的结构,接下来详细介绍每个块是如何进行存储的流程。

如下图所示,一个Block存储时,首先由dagService调用Add进行添加;之后由blockService调用AddBlock添加该Block;再调用arccache的Put,arccache是对存储的Block做arc策略的缓存;再之后由VerifBS调用Put进行存储,VerifyBS主要对CID的合法性进行校验,合法则进行Put;接着blockstore调用Put进行存储,Put函数中会对CID进行转化,调用dshelp的CidToDsKey方法将CID转化成存储的Key;再接着调用keytransform.Datastore的Put,Put函数中会将前缀拼上,这时Key加上了前缀/blocks;然后调用measure的Put函数,measure是对mount的封装;之后调用mount的Put函数,mount和IPFS的config配置文件中结构对应,根据key去查找对应的datastore,由于前缀是/blocks则可以找到对应的measure;调用该measure的Put函数;最后调用flatfs的Put函数,由Put函数调用doPut最终调用encode函数将完整的block写入的目录指定为/home/test/.ipfs/blocks/WD,其中WD来自于blocks/CIQFSQATUBIEIFDECKTNGHOKPOEE7WUPM5NNNSJCCDROMM6YHEKTWDY中的倒数第三第二个字符。这样该Block则写入了该目录下面的文件中。

总结

IPFS文件存储格式为默克尔DAG格式,每一层Links大小为174个,超过了则会重新调整。文件存储过程中有多个Datastore进行了组合和封装,每个Datastore功能比较单一,例如arccache只做Block的缓存,VerifBS只做CID的校验,这样做的好处是每个组件功能明确,不好的地方在于组合太多,调用深度太深,加上内部都是用interface,好几个组件都实现了该interface,不便于阅读。

IPFS的存储模式面向互联网用户而设计,因为它的开放性,允许所有节点随意接入,已接入IPFS网络的节点可以自由查找内容,不适合直接用来作为企业的文件存储服务。但其分布式存储的特点,很容易进行存储的动态扩容,可以通过结合节点认证机制和DHT查找内容的剥离,为企业的分布式存储系统,另外配合区块链技术,通过链上链下协同技术,很容易地解决链上存储容量不足的问题。

了解IPFS和Filecoin资讯,参与Filecoin挖矿,可联系IPFS研习社,微信号:XF2020IPFS

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

银河链

莱特币关于上线ANT(Aragon)的公告(0813)

尊敬的用户: BiKi平台即将上线ANT,并开放ANT/USDT、ANT/ETH交易对,具体详情如下: 1、充值:已开放 2、开放交易时间:8月13日18:00(GMT8) 3、开放提现时间:待定 币种介绍: 项目名称:Aragon.

XMR8.13晚间行情:DEFI 概念继续嗨 踩准BTC 节拍上

文章系金色财经专栏作者币圈北冥供稿,发表言论仅代表其个人观点,仅供学习交流!金色盘面不会主动提供任何交易指导,亦不会收取任何费用指导交易,请读者仔细甄别,谨防上当.

火必下载关于WBF即将上线ATIS的公告

尊敬的用户: WBF即将在创新板上线ATIS/USDT交易对,具体上线时间请关注官方公告。 项目介绍: Atis阿蒂斯是源于深度网络的次时代扩展跨链生态系统,有公链的底层系统,有匿名币的零知识证明,具有自带的生态系统.

XMRFilecoin功能:分布式随机性和领导者选举

2020年8月12日,IPFS官方发布最新博客,重点介绍Filecoin网络独特的功能。Filecoin将成为生产drand网络的第一个知名用户,接下来,我们将深入探讨什么是drand及其工作原理.

[0:15ms0-1:549ms