![d9a2354588f13a46b6cd754bb1f0b88e.png](https://i-blog.csdnimg.cn/blog_migrate/8a8d18a35c0a20049ea379bded5d5cbe.jpeg)
我们知道,每个存储到IPFS网络的文件,都有一个唯一的哈希地址(即内容地址,也叫CID),地址就是经过算法后形成的哈希值。这些哈希值独一无二,用户只要访问相应的哈希,就能定位文件,访问到数据。文件只要更改,哈希地址(值)就会改变。然后你会发现,绝大多数的IPFS文件的哈希都是以“Qm”开头,这到底是什么原因?
原理解析
为了表示文件或者对象的哈希,IPFS使用了多哈希(Multihash)格式和Base58编码。
Multihash的格式其实就是一个字符串,由三部分组成:Hash算法编码、HasH值的长度(字节数)、Hash值。Multihash以字节(0x12)开头,这个开头将指示出是哪一个哈希算法。接着是长度为(0x20)的另一个字节。目前IPFS默认采用sha2-256哈希函数算法,哈希摘要的二进制长度为32个字节。再加上哈希值后,字符串的长度就很长很长。这时候用到了Base58编码技术,使得字符串长度可以压缩,方便存储和传播。因为IPFS现在的Multihash值,都是以1220开头,按照Base58编码运算,算出的结果都是以“Qm”开头。
![6e9dd97f50665b528a4c6b9adb396fd0.png](https://i-blog.csdnimg.cn/blog_migrate/5dd6fe2816fe7e2561e0f930a3f68f2c.jpeg)
IPFS技术负责人Alan Shaw讲解IPFS文件的工作原理
总结起来是:原始数据封装 -> sha2-256函数计算 -> 封装成Multihash -> Base58编码转换 ->最终的哈希地址(即CID)。
那么所有的IPFS文件的哈希都是以Qm开头吗?答案是否定的。对于某些开发者来说,可以重新编译IPFS并使用另一个函数作为默认值,意味着使用了其它函数进行运算,哈希地址前缀就会变。另外,Multihash是包含了多哈希的结构,具有可升级性。如果在未来IPFS默认采用不同于sha2-256的算法,哈希值的表示也将不同。
怎样访问IPFS网络上的内容?
目前有大量的数据存储到了IPFS网络,2018年文件数量已经超过50亿。2019年,IPFS网络的节点已经超过10万,网络增长超过30倍。现在,已经有大量的文件存储到了IPFS网络。面对海量的数据,我们如何进行访问?
![592fe89a5c5ea38730794d19da09b4ed.png](https://i-blog.csdnimg.cn/blog_migrate/527b4efa11fe5bb60b0f18feb8a1bf30.jpeg)
图:在IPSE上搜索访问IPFS内容
这时候,就需要一个网络入口。IPSE是基于IPFS的搜索引擎,能帮助用户快速搜索IPFS网络上的文件,访问到所需要的数据,包括视频、图片、文档、软件包等内容。IPSE还让内容的检索和传播更加方便了,因为IPFS采用内容寻址,文件根据哈希来确定,这些哈希都是字符串,如果发送给你一个哈希地址,很多人并不知道哈希的具体内容。为了知晓哈希内容,经过IPSE,搜索出的哈希结果就有了标题,方便查看是什么内容。
IPFS简介:星际文件系统(InterPlanetary File System,缩写IPFS)是一种内容可寻址的点对点超媒体传输协议,通过点对点的节点构成一个分布式文件系统。IPFS被认为是取代HTTP的互联网底层协议,是下一代互联网的基础。