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

ARK首席执行官:颠覆性创新似乎处于深度价值领域:金色财经报道,ARK首席执行官Catherine Wood再其官网发布了《创新股并非泡沫:我们相信它们处于深度价值领域》研究文章,Catherine Wood表示,在五年的投资时间范围内,我们对这些平台的预测表明,我们今天的策略可以在未来五年内实现 30-40% 的复合年回报率。换句话说,如果我们的研究是正确的,我相信我们对创新的研究是金融界最好的。那么我们的战略将在未来五年内实现三倍至五倍的价值。然而,随着今年接近尾声,投资者似乎对“稳扎稳打”更感兴趣,并更接近基准,我们认为,在未来十年内,这些基准不太可能产生平均回报。就像 ARK 早期对电动汽车特斯拉和比特币的研究和投资一样,颠覆性创新似乎处于深度价值领域。根据我们过去八年的研究,未来十年超过 200 万亿美元。[2021/12/22 7:55:56]

IPFS组件介绍

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

缤果合约(BingoEx)与币盈公社达成深度战略合作:据官方消息,缤果合约(BingoEx)与币盈公社达成深度战略合作,并签约成为缤果合约(BingEx)大中华区合约运营商,将享有全球市场运营、渠道商招募及全方面业务拓展等权益。双方在合约市场展开全方位合作,将在用户扩展、社区合作、品牌宣传方面等进行合作,助力社区人员拥有最佳的合约体验、建立线上社区以及线下运营中心,共同赋能行业发展。

据介绍,币盈公社由多位币圈操盘手组成,为散户提供数字货币操盘指导。目前币圈体系最完善的一个投教社区,涵盖数据采集部门,市场分析部门,交易培训部门。

缤果合约(BingoEx)隶属于BingoEx Capital集团,在美国注册成立的数字资产衍生品交易平台。截至目前,累计注册用户已有42万以上,系统采用多重底层安全技术,已与多家区块链安全服务平台达成合作。缤果合约(BingoEx)已正式开启全球合伙人招募。[2020/7/3]

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

最高院院长:推动区块链等现代科技在司法领域深度应用:4月28日,最高人民法院党组书记、院长周强在最高人民法院与科技部党组书记、部长王志刚一行座谈。周强强调,要积极推进现代科技与审判执行工作深度融合,推动5G、人工智能、大数据、云计算、区块链等现代科技在司法领域深度应用,完善智慧法院技术标准,提高司法大数据预警预测能力,为扎实做好“六稳”工作、落实“六保”任务提供精准司法服务。要加快探索互联网司法新模式,发挥互联网法院“样板间”和“试验田”作用,建立健全具有中国特色的互联网司法新模式和规则体系,积极开展国际司法交流合作,为世界法治发展贡献中国司法智慧。(人民网)[2020/4/30]

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

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

动态 | TopChain深度布局斯里兰卡战略资源产业:据悉,拓扑链TopChain于前不久赴斯里兰卡与当地政府展开会谈并达成国家战略资源开发合作意向。本次会谈中,双方围绕斯里兰卡当地宝石矿产开发、房地产及特色农业等重要产业进行了合作方案讨论,旨在通过拓扑链TOPC深度打开矿产、房产和农 业市场,面向亚洲地区广泛招商引资。作为该国新任总统戈塔巴雅·拉贾帕克萨的朋友及重要合作伙伴,拓扑链创始人焦光明曾多次参与斯里兰卡国际贸易合作和战略资源开发,他表示TopChain将 持续推进双方各领域的密切协作使TOPC成为上述产业投资凭证,实现取长补短、多方共赢。[2020/2/16]

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

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

声音 | 新华网:未来区块链等创新技术与金融业务深度融合,必将为金融发展提供源源不断的创新与活力:据新华网消息,12月16日,中国工商银行与阿里巴巴、蚂蚁金服在京签署全面深化战略合作。双方达成共识,全面升级战略合作伙伴关系,也代表了互联网公司和商业银行对金融科技创新共赢前景的共同期待。工商银行与阿里巴巴、蚂蚁金服的战略合作,既是顺势而为,也是因时而动。未来,数字技术、云计算、人工智能、区块链等创新技术与金融业务深度融合,必将为金融发展提供源源不断的创新与活力。[2019/12/17]

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

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

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

金星链

币安交易所app下载ETH:8.14比特币早间行情分析

生活平静的有些雷同,总在做一些机械运动,来来回回,走走停停,好像每天发生的事情,都在预料之中。偶尔有事情发生,请不要生气,要知道,那是平静的生活带给自己的一份惊喜,虽然有好有坏,可我们依然要笑着.

[0:109ms0-0:570ms