13386501543

上义直销结算系统开发

13年行业经验,直销系统开发领航者

IPFS的基本原理

2021-08-05 18:25上一篇 |下一篇

简介,IPFS的中文名称是星际文件系统,JuanBenet于2014年5月开始。2015年,他创立的IPFS在YCombinator竞赛中获得了巨额投资,同时成立了协议实验室。这个实验室团队由14名核心开发者和社区数百名代码贡献者组成。2017年8月IPFS销售了10%的货币

IPFS本质上是一种分布式存储和传输协议,对点超媒体的分布式存储和传输协议。其目的是补充甚至取代过去20年使用的超文本媒体传输协议(HTTP),希望构建一个更快、更安全、更自由的互联网时代。

基于内容搜索,而不是基于域名搜索。文件(内容)是唯一存在的,一个文件加入了IPFS的网络,会根据计算给内容一个唯一的加密哈希值。这将改变我们使用域名访问网络的习惯。提供文件的历史版本控制器(如git),让多个节点使用来保存不同版本的文件。IPFS的网络上有一个区块链,就是用来存储互联网文件的哈希值表。每次有网络访问,就要在链上查询内容(文件)的地址。通过使用代币的激励,每个节点都有动力存储数据。Filecoin是一个由加密货币驱动的存储网络。矿工通过为网络提供开放的硬盘空间获得Filecoin,而用户使用Filecoin支付在去中心化网络中存储加密文件的成本。Filecoin是一个由加密货币驱动的存储网络。矿工作者可以根据每个文件的内容搜索范围进行搜索,并且可以根据自己的存储。

构架分析,IPFS至少有八层协议栈,身份,网络,路由,交换,对象,文件,命名,应用程序。

1.身份层和路由层身份信息的生成和路由规则是通过Kademlia协议生成的。KAD协议的本质是建立一个分布式松散Hash表,简称DHT。每个加入这个DHT网络的人都必须生成自己的身份信息(通过哈希生成的身份信息),然后通过这个身份信息负责存储这个网络中的资源信息和其他成员的信息。如果新成员需要找到一个老成员A的联系信息,而他没有这个老成员A的联系信息,那么他可以通过联系任何老成员A的成员来获取这个老成员A的联系信息。

2.网络层是网络层的核心,使用的LibP2P可以支持任何传输层协议。NAT技术可以让内部网络中的设备共享同一个外部网络IP,我们都经历过这个原理。

3.交换层,是迅雷这样的BT工具。迅雷实际上模拟了P2P网络,创建了一个中心服务器。当服务器注册用户要求资源时,要求相同资源的用户形成一个小群swarm,在这里共享数据。这种方法有缺点。一个服务器由迅雷统一维护。如果出现故障或停机,下载操作无法进行。

集中服务也可以限制一些下载请求,人们发明了一个更聪明的方法,那就是Bittorrent,让每个种子节点都能通过哈希表存储数据,BT工具相对不受监管,服务更稳定。

IPFS团队创新了BitTorrent,称为Bitswap。它增加了信用和账单系统来激励节点共享。用户在Bitswap中添加数据会增加信用评分,共享的信用评分越多。如果用户只搜索数据而不存储数据,信用评分会越来越低,其他节点在嵌入连接时会优先选择信用评分高的。这个设计可以解决巫师的攻击,信用评分不能靠机器刷提高,一直刷检索请求,信用评分越来越低。请求次数和存储变量之间有一个精妙的算法,类似于抛物线,前期可以容忍很多东西,达到一定次数后不再信任。

4.对象和文件层适合结合,它们管理的是IPFS上80%的数据结构,大多数数据对象都是以MerkleDAG的结构存在,方便内容的找址和去重。文件层是一种新的数据结构,与DAG并列,采用Git相同的数据结构来支持版本快照。

5.命名层具有自我验证的特点(当其他用户获得该对象时,使用指纹公钥进行验证,即验证使用的公钥是否与NodeId匹配,从而验证用户发布对象的真实性,并获得可变状态),并加入IPNS这一巧妙的设计,使加密后的DAG对象名称可定义,增强可读性。

6.应用层生态介绍。以高度模块集成的方式。协议实验室团队成立于2015年,17年前开发了IPLD、LibP2P、Multiformats三个模块,为IPFS提供服务。

Multiformats是一系列hash加密算法和自我描述方法(从值上可以知道值是如何生成的)的集合。它有六种主流加密方法,如SHA1SHA256SHA512Blake3B,用于加密和描述nodeID(节点编号)和指纹数据的生成。

LibP2P是IPFS的核心,面对各种传输层协议和复杂的网络设备。

IPLD是一种转换中间部件,它将现有的异构数据结构统一为一种格式,便于不同系统之间的数据交换和相互操作。目前,IPLD支持比特币、以太网场的块数据、IPFS和IPLD。IPLD中间部件可以将不同的块结构统一为标准。

Filecoin通过类似比特币的激励政策和经济模型,使更多的人创建节点,提供服务,使更多的人能够使用IPFS。