如果有一天HTTP协议不能使用,全球互联网不能使用怎么办?不用担心有现在有IPFS在。
IPFS(星际文件系统)点对点(p2p)文件共享系统,旨在从根本上改变信息在全球及全球范围内的分布方式。它与Swarm有点相似,或者我们也可以说Swarm与IPFS有点相似。
IPFS由通信协议和分布式系统中的多项创新组成,这些创新相结合产生了无与伦比的文件系统。因此,要了解IPFS所要实现的全部广度和深度,重要的是要了解使之成为可能的技术突破以及所要解决的所有问题。
IPFS自豪地替换了http。因此,让我们来看看当今的互联网是如何工作的。
简而言之,互联网是描述数据如何在网络中移动的协议的集合。开发人员逐渐采用了这些协议,并在此基础架构之上构建了他们的应用程序。HTTP或超文本传输协议是充当Web骨干网的协议之一。这是Tim Berners-Lee在1991年发明的。
HTTP是一个请求-响应协议。客户端(例如Web浏览器)将请求发送到外部服务器。然后,服务器将响应消息(例如Google主页)返回给客户端。这是一个位置寻址的协议,这意味着当我在浏览器中键入google.com时,它将转换为某个Google服务器的IP地址,然后使用该服务器启动请求-响应周期。
HTTP问题
假设您坐在演讲厅里,而教授要求您访问特定的网站。讲座中的每个学生都向该网站提出请求并得到答复。这意味着将相同的确切数据分别发送给会议室中的每个学生。如果有100名学生,则为100个请求和100个响应。这显然不是最有效的处理方式。理想情况下,学生将能够利用他们的身体接近性来更有效地检索他们所需的信息。
如果网络通信线路中存在某些问题,并且客户端无法与服务器连接,则HTTP也会带来很大的问题。如果ISP中断,某个国家/地区阻止了某些内容,或者只是删除或移动了内容,则可能发生这种情况。这些类型的断开链接在HTTP网站上无处不在。
HTTP的基于位置的寻址模型鼓励集中化。使用我们的所有数据信任少数几个应用程序很方便,但是由于这个原因,Web上的许多数据都被污染了。这使那些提供者对我们的信息负有巨大的责任和权力。
HTTP非常适合加载网站,但它并不是为传输大量数据(例如音频和视频文件)而设计的。这些限制可能使替代文件共享系统(如Napster(音乐)和BitTorrent(电影以及几乎所有东西))的出现和主流成功。
快进到2018年,点播高清视频流和大数据正变得无处不在;我们将继续生产/消费越来越多的数据,并开发越来越强大的计算机来处理它们。云计算的重大进步帮助维持了这一过渡,但是用于分发所有这些数据的基本基础架构基本上保持不变。
解决方案
IPFS是胡安·贝纳特(Juan Benet)的一项努力,旨在建立一个快速处理版本化科学数据的系统。它是经过测试的互联网技术的综合,例如DHT,Git版本控制系统和Bittorrent。它创建了一个P2P群,可以交换IPFS对象。IPFS对象的总数形成了一个称为Merkle DAG的经过密码验证的数据结构,该数据结构可用于对许多其他数据结构进行建模。或者换句话说...
“ IPFS是一个分布式文件系统,旨在将所有计算设备与同一文件系统连接起来。在某些方面,这类似于Web的原始目标,但是IPFS实际上更类似于单个git交换git bit的群体。IPFS可能成为互联网的一个新的主要子系统。如果构建正确,它可以补充或替换HTTP。它可以补充甚至替代更多。听起来很疯狂。太疯狂了。”
IPFS的核心是一个版本化的文件系统,可以获取文件并对其进行管理,还可以将它们存储在某个位置,然后随时间跟踪版本。IPFS还考虑了这些文件如何在网络中移动,因此它也是一个分布式文件系统。
IPFS具有关于数据和内容如何在网络上移动的规则,这些规则本质上与bittorrent相似。该文件系统层提供了非常有趣的属性,例如:
1)完全分散的网站。
2)没有原始服务器的网站。
3)可以完全在客户端浏览器上运行的网站。
4)没有可与之对话的服务器的网站。
让我们看看这些不同的技术突破是如何协同工作的。
分布式哈希表
阿散列表是一种数据结构,其存储信息作为键/值对。在分布式哈希表(DHT)中,数据分布在计算机网络中,并进行有效协调以实现节点之间的有效访问和查找。
DHT的主要优势在于分散性,容错性和可伸缩性。节点不需要中央协调,即使节点发生故障或离开网络,系统也可以可靠地运行,DHT可以扩展以容纳数百万个节点。这些功能共同构成的系统通常比客户端-服务器结构更具弹性。
大宗交易
流行的文件共享系统Bittorrent能够依靠创新的数据交换协议成功地协调数百万个节点之间的数据传输,但仅限于torrent生态系统。IPFS实现了该协议的通用版本,称为BitSwap,它可作为任何类型的数据的市场。这个市场是Filecoin的基础:Filecoin:基于IPFS构建的p2p存储市场。
默克尔DAG
merkle DAG是Merkle树和有向无环图(DAG)的混合。默克尔树可确保在p2p网络上交换的数据块是正确,未损坏和未更改的。通过使用密码哈希函数组织数据块来完成此验证。这只是一个接受输入并计算与该输入相对应的唯一字母数字字符串(哈希)的函数。容易检查输入是否会导致给定的哈希,但是很难从哈希中猜测输入。
各个数据块称为“叶子节点”,这些数据经过散列形成“非叶子节点”。然后可以将这些非叶节点进行组合和哈希处理,直到所有数据块都可以由单个根哈希表示。这是一种更简单的概念化方法:
DAG是一种对没有周期的信息的拓扑序列进行建模的方法。DAG的一个简单示例是家谱。Merkle DAG基本上是一种数据结构,其中散列用于引用DAG中的数据块和对象。这创建了几个有用的功能:IPFS上的所有内容都可以唯一标识,因为每个数据块都有唯一的哈希。再加上数据是防篡改的,因为对其进行更改会改变哈希值,如下所示:
默克尔树的不可篡改性质
IPFS的中心宗旨是在通用的Merkle DAG上对所有数据进行建模。很难夸大此安全功能的重要性。一个例子表明,这一想法的强大之处在于,价值数万亿美元的资产受到这一原则的保护。
版本控制系统
Merkle DAG结构的另一个强大功能是,它允许您构建分布式版本控制系统(VCS)。最受欢迎的示例是Github,它使开发人员可以轻松地同时在项目上进行协作。Github上的文件使用merkle DAG存储和版本控制。它允许用户独立地复制和编辑文件的多个版本,存储这些版本,然后将编辑内容与原始文件合并。
IPFS对数据对象使用类似的模型:只要可以访问与原始数据相对应的对象以及任何新版本,就可以检索整个文件历史记录。假定数据块存储在整个网络的本地并且可以无限期地缓存,这意味着IPFS对象可以永久存储。
此外,IPFS不依赖对Internet协议的访问。数据可以分布在覆盖网络中,覆盖网络只是建立在另一个网络上的网络。这些功能非常引人注目,因为它们是抗审查网络中的核心元素。它可能是促进言论自由以对抗全球互联网审查风行的有用工具,但我们也应该认识到不良行为者有可能滥用权力。
自认证文件系统
IPFS的最后一个基本组成部分是自认证文件系统(SFS)。它是一种分布式文件系统,不需要特殊权限即可进行数据交换。这是“自我认证”,因为提供给客户端的数据通过文件名(由服务器签名)进行认证。结果?您可以通过本地存储的透明性来安全地访问远程内容。
IPFS在此概念的基础上创建了星际名称空间(IPNS)。
它是一个使用公用密钥加密技术对网络用户发布的对象进行自我认证的SFS 。前面我们提到,IPFS上的所有对象都可以唯一标识,但这也扩展到了节点。网络上的每个节点都有一组公用密钥,专用密钥和一个节点ID,该ID是其公用密钥的哈希。因此,节点可以使用其私钥对发布的任何数据对象进行“签名”,并且可以使用发送者的公钥来验证此数据的真实性。
以下是IPFS关键组件的快速回顾:
借助分布式哈希表,节点无需中央协调即可存储和共享数据。
IPNS允许使用公共密钥加密技术对交换的数据立即进行预身份验证和验证。
Merkle DAG支持唯一识别,防篡改和永久存储的数据。
IPFS是一个持久数据结构,因此IPFS中没有删除/删除操作的概念。这是因为将内容分发给了被激励提供内容的IPFS节点。
无法保证上传的内容在网络上持久存在。所有参与节点都应将参与自愿服务视为自愿,不承担任何正式义务,应期望其自愿删除内容。因此,在激励系统(Filecoin)正常运行之前,用户在任何情况下都不应将IPFS视为安全存储。