宇宙链 宇宙链
Ctrl+D收藏宇宙链

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

作者:

时间:1900/1/1 0:00:00

概述

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表示根据哈希算法确定长度。

Keys发起chia算力联盟深度布局Chia生态:据官方消息,Keys Capital联合DFG,Hotbit,Lbank等机构深度入局Chia挖矿业务,目前在写算力设备约300PB,已写入有效算力约为30PB,已超过Chia全网10%算力,目前在全网占比持续上升中。

据悉,Keys Capital是一家2019年于新加坡成立的、以投研为主导的数字资产领域新兴基金,创始团队均为行业从业五年以上的老兵。目前基金全力布局POC与NFT领域。[2021/4/12 20:11:10]

IPFS组件介绍

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

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

声音 | 丰都县委:在区块链发展大格局中找准丰都位置 深度应用到经济运行等领域:近日,丰都县“不忘初心、牢记使命”主题教育形势政策教育报告会暨县委理论学习中心组(扩大)学习会在丰都县党政大楼召开。会议要求,各级各部门要坚持站位,深入学习领会习总书记关于区块链的重要讲话精神,切实把思想统一到党中央的决策部署上来,结合辅导报告,主动加强对区块链技术的学习研究,熟悉基础知识,掌握相关政策,找准切入点、选好攻坚点,力争在区块链发展大格局中找准丰都位置。相关部门要结合区块链具有的渗透性、带动性、融合性等特点,抢占先机、积极作为,把区块链技术深度应用到经济运行、社会治理、市场监管、公共服务、政务服务等领域,推动丰都高质量发展。[2019/12/9]

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

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

声音 | 人民日报:企业应加强基础研究,推动区块链和实体经济深度融合:11月27日,人民日报刊文《靠区块链发横财?你想多了》。文章表示,即使是最具代表性的虚拟货币“比特币”,也不是哪国的法定流通货币,本质仍是一种投资风险极高的虚拟商品。任何创新都应以合法合规为前提。目前,区块链技术应用已延伸到数字金融、物联网、智能制造等领域。对企业而言,应加强基础研究,推动区块链和实体经济深度融合,利用区块链技术解决融资难、风控难等问题,让区块链成为服务实体、促进经济发展的新利器;对投资者而言,应尽快放弃“天上掉馅饼”的幻想,增强风险防范意识,谨防上当受,不给非法金融活动提供生存土壤。[2019/11/27]

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

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

现场 | 央行金融稳定局安起雷:区块链已深度改变金融的形态 但金融的本质没有变:金色财经现场报道,11月22日,2019环球数字经济创新发展大会在京举行。中国人民银行金融稳定局高级会计师安起雷发表主题演讲——《四大关键数字技术——追求高质量发展的创新思想》。他表示,区块链已经深度改变了金融的形态,但金融的本质没有变。金融是经营风险的机构,其生命力在于周转。没有周转,没有高效率的配置,金融则充满风险。在监管方面,我国还是处于保守状态的。在金融风险当中,我们看到了很多失败的案例。如今数字经济方兴未艾,来势汹涌。从市场操作的角度来看,规则一定是首要的,我们需要补齐短板。[2019/11/22]

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

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

动态 | 梦网集团:深度布局“区块链+通信”:据证券时报消息,梦网集团(002123.SZ)向证券时报回应其在区块链领域的布局情况时表示,目前,梦网集团区块链主要涉及三大业务:网间清结算、可信账单支付和通信反欺诈溯源平台,而在梦网集团云通信战略部署中,基于区块链技术的“可信云”已成为公司四大战略版块之一。其中,区块链网间结算平台基于手机通话或其他通信数据,通过区块链的方式进行密钥管理、身份管理,提供细粒度敏感业务数据或隐私数据加密保护,保护业务数据安全和隐私安全,防止欺诈,提升安全级别。而可信通信结算层的应用,能够在支持与运营商之间直接结算DCB(Direct Carrier Billing)的同时,通过智能合约独立运行的沙箱环境,保障交易数据的隐私性,提高交易的自动化水平。[2019/10/28]

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个。

如下图所示,超过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

标签:LOCLOCKBLOBLOCLOCOBLOCKIFY币ABLOCK价格Blockchain Monster Hunt

芝麻开门交易所热门资讯
DeFi币普涨240%背后:究竟有多少玩家 哪个交易所是大赢家?

金融的核心功能之一是解决激励问题,DeFi的出现和发展为进一步实现这一功能提供了新的思路和可能。自6月中旬Compound开启“流动性挖矿”后,其治理代币COMP就为用户提供了原方案6倍以上的激励.

1900/1/1 0:00:00
曾经沉迷小霸王游戏机的少年,意外获得53枚比特币,价值300多万

说起小霸王游戏机,70后80后90后的人都应该非常的熟悉,那是那一代人的童年,也是那一代人美好的回忆.

1900/1/1 0:00:00
BKEX Global 关于参与YAM投票的公告

亲爱的BKEXer:??根据YAM官方说明,YAM调仓机制出现bug,造成每次rebase时都会过多YAM进入项目金库。项目方只有一次机会通过提案修正这个问题,否则第二次rebase后将因为金库中YAM太多而无法再满足投票条件.

1900/1/1 0:00:00
PKEX平台免费上币活动火热进行,最后18天

PKEX交易平台,免费上币活动8月31日结束。本活动已经合作30多个优质项目。距离活动结束还有18天.

1900/1/1 0:00:00
FBGOne 董事总经理:借贷服务商可通过为抵押品搭配看跌期权等产品对冲市场风险

链闻消息,金融服务机构FBGOne董事总经理LeoWang在「CryptoTonight」活动中谈到CME期权从5月份始吸引市场的关注原因表示,首先,市场在BTC产量减半后的情绪比较高涨,其次.

1900/1/1 0:00:00
报告:7 月份 ETH 链上交易量环比增加五成,矿工收入创近两年新高达 1.44 亿美元

链闻消息,TheBlock发布7月份加密货币市场报告。要点如下:1.7月份,调整后的比特币链上交易量环比增加6.8%,达661亿美元.

1900/1/1 0:00:00