木星链 木星链
Ctrl+D收藏木星链
首页 > DOGE > 正文

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

VC巨头Lightspeed宣布将重点投资印度Web3、区块链和深度科技等新兴领域:金色财经报道,VC巨头Lightspeed宣布将重点投资印度Web3和深度科技等新兴领域,该风投还将继续投资于消费者、金融科技和软件即服务 (SaaS) 等核心主题。Lightspeed合伙人Rahul Taneja表示:“我们相信通过周期和为未来建设的公司进行投资,目前已经在 SaaS、金融科技、商业和消费者领域拥有核心投资领域,此外还将对区块链、基础设施、深度季度等新兴领域进行了初步投资。”[2023/2/22 12:22:00]

IPFS组件介绍

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

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

长沙高新区与深圳今日人才将依托区块链等促进人才和产业深度融合:9月3日下午,长沙高新区与深圳今日人才信息科技有限公司(简称“今日人才”)举行签约仪式,标志着今日人才华中区总部正式落户长沙高新区。根据签约协议,双方将依托区块链、大数据、人工智能等技术促进人才和产业的深度融合,搭建人才与岗位智能匹配的“人才滴滴平台”,革新传统人力资源服务模式的瓶颈,为长沙高新区乃至长沙市人力资源服务升级提供技术支撑。(长沙晚报)[2020/9/4]

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

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

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

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

上海将推动工业互联网平台与区块链等深度融合:上海市经济信息化委相关人士昨日表示,上海将推动工业互联网平台与5G、人工智能、区块链等深度融合,打造10个“5G+工业互联网”先导应用。(上海证券报)[2020/7/29]

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

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

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

声音 | 哈尔滨市委:推进区块链等技术与实体经济深度融合:在25日召开的哈尔滨市委十四届七次全体会议上,哈尔滨市委提出,明年重点抓好六个方面工作,紧扣全面建成小康社会目标任务,分别为坚决打好三大攻坚战、推动经济高质量发展、统筹推进乡村全面振兴、聚力攻坚改革开放、推进新区和自贸试验区联动发展和织密扎牢民生保障网。其中,推动经济高质量发展中,要推进工业强市,大力发展数字经济,推进互联网、大数据、人工智能、区块链技术与实体经济深度融合。(黑龙江日报)[2019/12/26]

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

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

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

声音 | 经济日报:推进区块链健康稳步发展,必须引导区块链技术与实际应用场景深度融合:\u202811月8日,经济日报刊文“区块链:脚踏实地走向光明未来”。文章表示,当前,区块链的关注热度起来了,但区块链行业的发展还需要静下心来,踏踏实实进行技术探索,才能实现区块链技术和产业创新发展,实现区块链在数字经济时代应有的价值,占据以区块链为代表的新时代互联网科技制高点。推进区块链健康稳步发展,必须继续严厉打击投机行为,必须引导区块链技术与实际应用场景深度融合。[2019/11/8]

经过上面的步骤,文件已经切块并转化成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

标签:LOCLOCKBLOCKBLOCPLOCKAllianceBlock Nexerablockchain翻译中文Block Galaxy Network

DOGE热门资讯
区块链:杨添论币:蚂蚁牵头制定跨链国际标准,跨链需求时代已经来临

“上链量会是数字经济时代的重要指标,而跨链将是万链互联的基础。”蚂蚁集团副总裁、智能科技事业群总裁蒋国飞曾坦言。日前,一项由阿里巴巴旗下蚂蚁集团主导的区块链跨链国际标准正式启动制定.

1900/1/1 0:00:00
以太坊:以太坊手续费突破天际,DeFi一哥Uniswap拟迁移至Layer 2

随着DeFi热度的不断提高,以太坊的gas价也在不断飙升,据ethgasstation数据显示,目前以太坊网络的平均gas价已升至275Gwei,一笔erc20代币交易的手续费已接近100元.

1900/1/1 0:00:00
区块链:摩根大通:区块链正在为数字货币埋下伏笔

在这份长达74页的报告中,摩根大通描述了几个已经显示出区块链在金融领域的"真实世界"应用的项目,并因此将2019年描述为"数字货币的崛起"之年.

1900/1/1 0:00:00
BTC:霍比特交易所关于8月14日系统升级的公告

尊敬的社区用户:为了向用户提供更加优质的服务和使用体验,霍比特交易所将于2020年8月14日06:00进行系统升级。本次升级受影响时间预计为1min~3min。期间,充提、交易不可用.

1900/1/1 0:00:00
ANC:齐衡预言:比特币回踩黄金支撑位主力地位吸筹有意托盘使行情上涨

齐衡预言:比特币回踩黄金支撑位。主力地位吸筹有意托盘使得行情上涨。数字货币晚内参:1.YamFinance出现调仓机制bug,致使项目金库75万美元Curve代币丢失,Yam代币暴跌.

1900/1/1 0:00:00
OIN:关于暂停资产YBC 、GSP交易的公告

尊敬的用户:????由于YBC/USDT、GSP/USDT交易对在HotcoinGlobal交易量较少,为了优化交易体验.

1900/1/1 0:00:00