概述
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表示根据哈希算法确定长度。
OKFLY与Coinhub达成深度合作:据官方消息,来自OEC的社区OKFLY与去中心化钱包Coinhub达成战略合作,双方将在社区合作、资源共享等多领域开展深度合作,届时,用户在Coinhub钱包内,可直接查看NFT资产,共同推动Defi生态的发展。
OKFLY是OEC上的一个元宇宙游戏和defi挖矿相结合的治理代币,含NFT\\挖矿\\对战\\挑战等多种玩法。
Coinhub是数字资产管理服务平台,掌管多链数字资产,服务于DeFi项目及投资者,提供去中心化生态数据。[2021/10/14 20:28:30]
IPFS组件介绍
IPFS用IpfsNode表示IPFS的节点,存储相关组件的如下所示:
这些组件的关系如下图所示,最上层是DAGService,它组合了BlockService组件,而BlockService组合了GCBlockstore组件,然后GCBlockstroe包含BaseBlocks和GCLocker两个组件,最后BaseBlocks组合了最原始的blockstore组件。
《天津市促进智能制造发展条例》:推动企业在制造环节深度应用区块链技术:金色财经报道,《天津市促进智能制造发展条例》已由天津市第十七届人民代表大会常务委员会第二十九次会议于2021年9月27日通过,自2021年11月1日起施行。《条例》指出推动企业在制造环节深度应用区块链等新技术,探索形成智能场景。(天津人大)[2021/10/8 20:13:20]
接下来分别介绍这些组件的功能:
Pinning:固定CID的管理器,主要负责将文件或者文件块的CID固定,固定CID的块不会被GC掉。上传的文件最后的文件的CID都会被固定住,防止被GC。
Blockstore:GCBlockstore类型,组合Blockstore和GCLocker两个组件。
BaseBlocks:原始的blockstore,提供了对Block的Get/Put/Has/DeleteBlock等操作。
Steve Aoki与JGN正式达成NFT深度合作:据官方消息,全球百大DJ音乐明星Steve Aoki与juggernaut(JGN)正式达成NFT深度合作关系,共同推进BSC的NFT生态的拓展。
据悉,Steve Aoki电子音乐家,曾与贾斯汀比伯、BTS、后街男孩等著名音乐唱作人合作。推特粉丝超800万,最近一个NFT系列以超过400万美元的价格售出。推特粉丝超800万,最近一个NFT系列以超过400万美元的价格售出。
JGN是BSC上的NFT + DeFi基础设施项目,当前JGN已经获得高盛集团(加拿大)、澳大利亚SFIP基金、币安 “种子基金”、软银集团(UK)、LD Capital等多家机构战略投资。[2021/9/4 22:59:06]
GCLocker:用来锁住blockstore,保护blockstore防止被GC影响。
Blocks:提供Block的服务,组合Blockstore组件,提供了GetBlock/GetBlocks、AddBlock/AddBlocks、DeleteBlock等操作。
链上ChainUP WaaS联盟与VirgoCX达成深度战略合作:据官方消息,链上ChainUP WaaS联盟宣布与VirgoCX交易所达成深度战略合作,将为VirgoCX提供全方位的WaaS联盟服务,包含主链开发接入、主链技术维护、主链资产托管等,双方就区块链技术应用落地、区块链金融服务、资金安全等方面深度合作。
VirgoCX是加拿大Top5合规的数字资产交易平台,是加拿大金融交易和报告分析中心(FINTRAC)的持牌MSB机构。VirgoCX凭借其优质的流动性、一流的技术和经验、稳定的银行合作关系,持续安全顺畅地为用户提供数字资产交易及法币服务。
WaaS联盟作为企业专享的数字资产托管及金融服务平台,是链上ChainUP集团依托3年时间所服务的600多家企业客户技术服务经验,提供主链资产托管、节点服务、主链定制开发、热门币种一键接入、共管钱包、借贷理财等多种功能服务,联盟内部企业转账 0手续费、实时转帐,同时企业通过WaaS联盟提供的借贷、理财等多种金融服务可有效提升资金使用效率与沉淀资金价值。目前已有超过500家企业加入链上ChainUP WaaS联盟。[2021/1/6 16:32:49]
DAG:IPFS的默克尔DAG的服务,组合BlockService组件,提供Get/GetMany,Add/AddMany,Remove/RemoveMany等操作。
动态 | 深大通与新麻成立合伙企业 探索区块链与工业大麻业务场景的切入和深度结合:据格隆汇今日消息,深大通(000038.SZ)发布公告,公司于2019年4月17日与北京天益新麻生物科技有限公司签署了《合作框架协议》。公告显示,双方拟利用各自优势,共同成立大通-新麻有限合伙企业,主要投资方向为:工业大麻的全产业链整合及拓展,CBD产品的研发及境内外销售,并将就区块链与工业大麻业务场景的切入和深度结合进行探索,以获取协同效应和价值释放。[2019/4/18]
文件存储流程
文件上传时将文件添加到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
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。