IPFS探究
介绍
IPFS(星际文件系统)是一个旨在创建持久且分布式存储和共享文件的网络传输协议。它是一种内容可寻址的对等超媒体分发协议。在IPFS网络中的节点将构成一个分布式文件系统。它是一个开放源代码项目,自2014年开始由Protocol Labs在开源社区的帮助下发展。其最初由Juan Benet设计。
优缺点
IPFS使用上可以简单理解为迅雷Plus,原理上一般是对标HTTP协议。
超文本传输协议(Hyper Text Transfer Protocol,HTTP)是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以ASCII形式给出;而消息内容则具有一个类似MIME的格式。
- 优点
-
安全性:基于分布式系统的特点,IPFS不容易宕机、遭受到DDOS攻击,文件安全有保证
-
开支低:由于带宽成本被分散到了各个节点,而各个节点的上行带宽成本普遍偏低(特别是家庭网络),能够去除中心化的高带宽开支。
- 缺点
- 节点奖励少:IPFS项目方在2020年推出了有经济激励的Filecoin,但实际
没有解决激励节点提供带宽,一般只能通过信任机制排除恶意节点,但无法很好地奖励善意节点。
- 下载不稳定
由于使用了文件分块技术,部分文件块会在较差的节点上下载,造成下载不稳定,大规模使用超级节点又会引起中心化的问题。
核心技术
Kademila
- 基本信息
kademila是一种DHT(分布式哈希表)算法,通过XOR计算节点距离,从而获得下一条的路径
以节点0举例,guid为0,计算格式为初始节点guid XOR 2^n = 相连节点guid
0 XOR 1 = 1 , 0 XOR 2 = 2,0 XOR 4= 4,0 XOR 8 = 8
因此,0节点与1,2,4,8相连
- 奖惩机制
另外IPFS对节点的通信还引入了负债率的机制:
r是负债率,P是发送信息的概率,存在A、B两个节点,当节点B的负债率很高(接收大于发送),A给B发送的概率就越小,当负债率大于2时,发送概率将会快速下降。
Merkel DAG
- 基本信息
merkle DAG是一个有向无环图,也可以粗暴的理解成一棵树,且没有merkle tree那样严格的限制(如必须是平衡树)。这棵树中,有两个最精髓的地方:
1 父节点的哈希值由子节点的哈希值决定,即父节点的哈希值是由子节点的哈希值拼接得来的字符串哈希而成。
2 父节点中包含指向子节点的信息。
merkle dag保留了merkle tree最精髓的部分,即任何一个下层节点改动,都将导致上层节点的哈希值变动,最终的根节点的哈希值也变动。如上图,每个叶子节点都是一个数据块,每个数据块的变动将导致该节点的哈希值的变动,然后将导致根节点的哈希值的变动。
- 具体应用
IPFS在这方面的应用基本类似于git对Merkel DAG的应用
将具体的文件分块处理,然后对外暴露一个list存储这个分块集合,当文件变化会修改分块,然后替换list所指向的块。
SFS自验证文件系统
- 基本介绍
SFS(Self-Certifying File System)是为了设计一套整个互联网共用的文件系统而提出的,它的宗旨是全球的SFS系统都在同一个命名空间下。在SFS中,分享文件会变得十分简单,只需要提供文件名就行了。
IPFS使用SFS自验证文件系统用于解决文件便捷分享及可信认证问题。
一般用于解决可信认证的方法是,所有服务器都生成一对公钥和私钥,当客户端向服务端发送文件时,客户端先用服务端的公钥进行加密,服务端接受到文件时用私钥解密。但这存在一个问题,怎么让所有的客户端都能获得服务器的公钥呢?
SFS使用一种新的解决思路,将公钥信息嵌入到文件名中,这种命名为“自验证文件名”。这样就没必要在文件系统内部实现密钥管理了。
IPFS使用该概念创建星际名称空间(IPNS),这是一种使用公钥加密来自我认证网络用户发布的对象的SFS。
- 地址查询
Location:服务器地址
HostID:由hash计算的出
参考
(1条消息) (一)IPFS基础原理_火一样的男子的博客-CSDN博客_ipfs原理
Merkle DAG简介 - 知乎 (zhihu.com)文章来源:https://www.toymoban.com/news/detail-428652.html
https://www.youtube.com/watch?v=cIJVg19RSsQ文章来源地址https://www.toymoban.com/news/detail-428652.html
到了这里,关于IPFS探究的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!