《开源精选》是我们分享Github、Gitee等开源社区中优质项目的栏目,包括技术、学习、实用与各种有趣的内容。本期推荐的IPFS 是一个分布式系统,用于存储和访问文件、网站、应用程序和数据。
而且,当您使用 IPFS 时,您不只是从其他人那里下载文件——您的计算机也有助于分发它们。当您在几个街区外的朋友需要相同的 Wikipedia 页面时,他们可能会像从您的邻居或任何使用 IPFS 的人那里一样从您那里获得它。
IPFS 不仅可以用于网页,还可以用于计算机可能存储的任何类型的文件,无论是文档、电子邮件,甚至是数据库记录。
可以从不由一个组织管理的多个位置下载文件:
最后一点实际上是 IPFS 的全名: InterPlanetary File System 。我们正在努力建立一个系统,该系统可以在不连贯或相隔很远的地方工作,就像行星一样。虽然这是一个理想主义的目标,但它让我们努力工作和思考,几乎我们为实现这一目标而创造的一切在家里也很有用。
IPFS 是一个点对点 (p2p) 存储网络。可以通过位于世界任何地方的对等点访问内容,这些对等点可能会传递信息、存储信息或两者兼而有之。IPFS 知道如何使用其内容地址而不是其位置来查找您要求的内容。
理解 IPFS 的三个基本原则:
这三个原则相互依赖,以启用 IPFS 生态系统。让我们从 内容寻址 和内容的唯一标识开始。
互联网和您的计算机上都存在这个问题!现在,内容是按位置查找的,例如:
相比之下,每条使用 IPFS 协议的内容都有一个 内容标识符 ,即 CID,即其 哈希值 。散列对于它所来自的内容来说是唯一的,即使它与原始内容相比可能看起来很短。
有向无环图 (DAG)
IPFS 和许多其他分布式系统利用称为有向无环图的数据结构 (打开新窗口),或 DAG。具体来说,他们使用 Merkle DAG ,其中每个节点都有一个唯一标识符,该标识符是节点内容的哈希。
IPFS 使用针对表示目录和文件进行了优化的 Merkle DAG,但您可以通过多种不同的方式构建 Merkle DAG。例如,Git 使用 Merkle DAG,其中包含许多版本的存储库。
为了构建内容的 Merkle DAG 表示,IPFS 通常首先将其拆分为 块 。将其拆分为块意味着文件的不同部分可以来自不同的来源并可以快速进行身份验证。
分布式哈希表 (DHT)
要查找哪些对等方正在托管您所追求的内容( 发现 ),IPFS 使用分布式哈希表或 DHT。哈希表是值键的数据库。 分布式 哈希表是一种表在分布式网络中的所有对等方之间拆分的表。要查找内容,您需要询问这些同行。
libp2p项目 (打开新窗口)是 IPFS 生态系统的一部分,它提供 DHT 并处理对等点之间的连接和交谈。
一旦你知道你的内容在哪里(或者更准确地说,哪些对等点正在存储构成你所追求的内容的每个块),你就可以再次使用 DHT 来查找这些对等点的当前位置( 路由 )。因此,要获取内容,请使用 libp2p 查询 DHT 两次。
然而,这确实意味着 IPFS 本身并没有明确保护 有关 CID 和提供或检索它们的节点的知识。这不是分布式网络所独有的。在 d-web 和 legacy web 上,流量和其他元数据都可以通过可以推断出很多关于网络及其用户的方式进行监控。下面概述了这方面的一些关键细节,但简而言之:虽然 节点之间 的 IPFS 流量是加密的,但这些节点发布到 DHT 的元数据是公开的。节点宣布对 DHT 功能至关重要的各种信息——包括它们的唯一节点标识符 (PeerID) 和它们提供的数据的 CID——因此,关于哪些节点正在检索和/或重新提供哪些 CID 的信息是公开的可用的。
加密
网络中有两种类型的加密: 传输加密 和 内容加密 。
在两方之间发送数据时使用传输加密。阿尔伯特加密文件并将其发送给莱卡,莱卡在收到文件后对其进行解密。这会阻止第三方在数据从一个地方移动到另一个地方时查看数据。
内容加密用于保护数据,直到有人需要访问它。Albert 为他的每月预算创建了一个电子表格,并用密码保存它。当 Albert 需要再次访问它时,他必须输入密码才能解密文件。没有密码,Laika 无法查看该文件。
IPFS 使用传输加密,但不使用内容加密。这意味着您的数据在从一个 IPFS 节点发送到另一个节点时是安全的。但是,如果拥有 CID,任何人都可以下载和查看该数据。缺乏内容加密是一个有意的决定。您可以自由选择最适合您的项目的方法,而不是强迫您使用特定的加密协议。
如果您精通命令行并且只想立即启动并运行 IPFS,请遵循此快速入门指南。请注意,本指南假定您将安装 go-ipfs,这是用 Go 编写的参考实现。
ipfs将其所有设置和内部数据存储在称为 存储库的目录中。 在第一次使用 IPFS 之前,您需要使用以下ipfs init命令初始化存储库:
如果您在数据中心的服务器上运行,则应使用server配置文件初始化 IPFS。这样做会阻止 IPFS 创建大量数据中心内部流量来尝试发现本地节点:
您可能需要设置大量其他配置选项 — 查看完整参考 (打开新窗口)更多。
后面的散列peer identity:是您节点的 ID,与上面输出中显示的不同。网络上的其他节点使用它来查找并连接到您。如果需要,您可以随时运行ipfs id以再次获取它。
现在,尝试运行在ipfs init. 那个样子ipfs cat /ipfs/ /readme。
您应该看到如下内容:
您可以 探索 存储库中的其他对象。特别是quick-start显示示例命令尝试的目录:
准备好将节点加入公共网络后,在另一个终端中运行 ipfs 守护程序,并等待以下所有三行显示您的节点已准备好:
记下您收到的 TCP 端口。如果它们不同,请在下面的命令中使用您的。
现在,切换回原来的终端。如果您已连接到网络,您应该能够在运行时看到对等方的 IPFS 地址:
这些是 /p2p/ .
现在,您应该能够从网络中获取对象了。尝试:
使用上述命令,IPFS 在网络中搜索 CIDQmSgv...并将数据写入spaceship-launch.jpg桌面上调用的文件中。
接下来,尝试将对象发送到网络,然后在您喜欢的浏览器中查看它。以下示例curl用作浏览器,但您也可以在其他浏览器中打开 IPFS URL:
您可以通过转到 来查看本地节点上的 Web 控制台localhost:5001/webui。这应该会弹出一个这样的控制台:
Web 控制台显示可变文件系统 (MFS)中的文件。MFS 是内置于 Web 控制台的工具,可帮助您以与基于名称的文件系统相同的方式导航 IPFS 文件。
当您使用CLI 命令ipfs add ...添加文件时,这些文件不会自动在 MFS 中可用。要查看您使用 CLI 添加的 IPFS 桌面中的文件,您必须将文件复制到 MFS:
—END—
开源协议:MIT License
开源地址:https://github.com/ipfs/kubo
Ipfs是一个分布式存储网络,它最重要的应用是存储。只是为了把某个文件永久地保存下来还不够,并且当有需要的时候,还能把这些内容再重新找出来。存储和检索这两个的集合才构成了IPFS应用的最终场景。
Ipfs从根本上改变了用户的搜索方式,通过ipfs用户能够直接搜索到想要的内容。以往,用户通过浏览器搜索文件首先要找到服务器的位置,然后使用路径名称在服务器上查找文件。这样一来,只有文件所有者可以判断这是否是用户要找的文件,并且必须保证托管者不会移除文件或关闭服务器对文件做任何更改。
当文件被添加到IPFS节点上后将生成一个新名字,这个名字实际上是根据文件内容计算出的一个加密哈希。加密能够保证该哈希始终指标是这一文件的内容,哪怕只在文件中修改一个比特的数据,哈希都会完全不同。
Filecoin分布式存储网络发展分为三个阶段
第一阶段,垃圾数据存储阶段
这是获取filecoin数量最多的阶段,由最原始积累到最大红利,它的任务主要是扩展网络空间,发现修补漏洞,并进行网络升级。收益比例是100%区块奖励。时间是2020年10月到2022年10月。
第二阶段,公共数据存储阶段。
这是商户转型阶段,由区块奖励到开发各类存储应用以及新一代互联网传输协议的推进。它的任务是扩张网络空间,提升网络安全,并开启存储应用。收益比例是70%区块奖励以及30%存储奖励。预计时间是2022年10月到2025年10月。
第三阶段是真实数据存储阶段,并且全面开启商用。
它的任务是真实存储企业、政府、个人数据以及扩大网络空间。收益比例是70%存储奖励和30%区块奖励。预计时间是2025年10月到未来。
另外为了实现分布式存储,filecoin白皮书中提到了几种证明机制。其中,最具特色的是复制证明和时空证明,这两种证明机制就是分布式存储项目filecoin目前需要做到的实现方式。复制证明是证实矿工保存了相应的有效数据,时空证明是证实矿工的存储设备中有有效数据的时刻。
总得来说,ipfs越来越成为 社会 发展的趋势,不知大家是否跟上了时代的脚步了吗?
IPFS(InterPlanetary File System,星际文件系统),它是一种全新的超媒体文本传输协议,可以把它理解为一种支持分布式存储的网站。IPFS 诞生于2015年、2017年8月,IPFS 的激励层filecoin,公开众筹在很短时间内,就募集了超过2.57亿美金,相当于接近20个亿人民币的投资!所以它引起了全世界投资人的高度关注!与此同时它打破纪录,创造了当年全球ICO的奇迹,当之无愧的成为了一个全球瞩目堪比当年以太坊的明星项目!相对应的就是现在大家所熟悉的以 http 开头的中心化存储网站。这跟我们平时使用的百度云,阿里云这些网站有什么不一样呢?各位不妨思考一下,你存储在U盘,网盘上的这些数据 是绝对的安全吗?答案是否定的!它会丢失,甚至会被和谐掉,对吗?比如从前的金山网盘,360网盘,官方通道已经关闭了,文件需要大量的转移,时间精力都浪费了,另外像百度网盘,免费用户使用的空间也是有限的,如果你想增加储存容量就必须得充值,而且安全性也是有待考究的。
而 IPFS 的网络存储文件,使用的是去中心化分片加密存储技术,把文件分割成了多个片段,存储在网络的各个节点上,而这些节点就是我们使用的电脑,当你下载文件的时候,或者想
要打开文件的时候,IPFS 网络会自动把文件还原,给你使用、供你下载,可以防止某个人或者某个机构控制你的数据,也可以防止被黑客攻击,这样就可以保护我们的存储数据,不会被随意篡改、删除了!此外,使用IPFS 网络进行文件存储、文件下载,在速度方面 可是相当的快!IPFS 最大的神奇之处呢,是彻底告别了传统的HTTP协议常见的卡顿和404错误。
互联网的发展一共经历的三个阶段:
所谓的Web1.0,就是互联网的早期形态。
提出年代:20世纪90年代中期
特征表现:国内以搜狐、网易、新浪、腾讯为代表的一批门户型网站诞生,人们对新闻信息的获取是其利用网络的主要驱动力,巨大的点击流量诞生了新的商业模式。
由网站的运营者生产内容。那时候的网站几乎不记录用户数据。这使得想在网上进行复杂的活动几乎不可能。因为你不知道谁来过,看得啥,做了什么。
随着微博,微信的崛起,我们进入了现在所处的Web2.0时代。
提出年代:21世纪初期
特征表现:BBS、博客、RSS(聚合内容)兴起与繁荣。人的重要性与参与性上升,用户既是互联网内容的浏览者,也是制造者。
在这个时代,每个人都是内容的生产者。如果说Web1.0时代给了我们一个绚丽的画廊,我们只是过客。只能被动的观看画廊中布置的作品。
那么进入Web2.0时代,我们迎来了一个可以自由创新的共享空间。在这里我们即欣赏他人创作,可共享我们的创意。但这个空间的主人并不是我们。比如有一天你不用微信了,那么你在上面的所有信息也就没有了。换句话说,在Web2.0时代,你的网络身份不属于你自己。而是属于这些科技巨头。我们有没有可能主宰自己的数据呢?
有!这就是Web3.0
提出年代:2010年左右
特征表现:网络模式实现不同终端的兼容,从PC互联网到WAP手机,移动互联让普通人群的参与方式呈现更多的可能。基于物联技术的飞跃,跨平台支付、大数据经济等发力迅猛。
Web3.0的提法来自区块链,以太坊的联合创始人Gavin Wood博士。第一个提出了Web3.0的概念在这个网络中一切都是去中心化。
没有服务器,没有中心化机构。更没有权威或垄断组织掌控信息流。而要构造这个一个庞大的Web3.0,信息存储和文件传输的去中心化就是核心之一。
人类社会自进入互联网时代以来,信息爆发式增长,过去两年,新产生的数据占据了人类文明的90%,传统的硬盘级别磁盘列阵存储方式。也渐渐被在最新的云存储技术所替代。云存储就是把存储资源放到云上,然后供人存取。各种不同类型的存储设备通过应用软件集合起来协同工作,保证数据的安全性并节约了存储空间。使用者可以在任何时间任何地点通过任何可联网的装置,使用云上数据。
云存储同时也带来了很多隐患,最大的就是数据存储安全方面的问题。分为以下四类。
第一类:最常见的就是服务器被攻击,数据被盗取的风险。
第二类:属于操作失误或运作流程的缺陷比如腾讯云因为操作失误,导致创业公司,前言数控技术。存在在上面价值上千万的核心数据全部丢失,导致该公司直接停业。
第三类:属于服务器自身故障,导致数据丢失或错误。比如亚马逊云。2019年8月,币安在使用过程中由于出现故障,导致比特币交易价格由正常的接近一万美元变为0.32美元 造成巨大损失
第四类:如果服务商,因为亏损或者政策等原因停止运营,那用户的数据像何处迁移。数据安全由谁负责,这些都是云存储服务提供商所面临的困境。再说说中心化文件传输方案所面临的问题。主要是文件获取效率低下。有两种情况:1,当我们浏览或者下载一部高清电影。那么这台计算机服务器的响应速度和他 网络通信环境就限制了我们浏览和下载文件的速度。第二张我们要获取的这个文件。可能存储在地球的另一端的服务器上,在这种情况下。获取文件的速度也会低下。面对传统互联网安全性能查和效率低下的问题。有没有更好的解决办法呢?有,这就是基于点对点网络的去中心化文件存储及传输协议IPFS。
IPFS,全称是星际文件系统(interplanetary file eystem)由毕业于斯坦福大学的创始人Juan Benet(胡安,贝内特)和他的团队创办。IPFS协议,主要从数据存储和文件传输。两个方面做了架构性的革新。比如大卫要在IFPS系统中保存一段视频,系统会把文件打碎成若干个大小一样的碎片。然后对每个碎片进行哈希运算得到一个数值,称为哈希值,然后再将所有这些碎片的哈希值及相关数据一起整理并在此进行哈希运算。得到一个最终的哈希值。然后被传输到IPFS系统中。很有可能你的文件中一部分碎片就存储在你邻居家的硬盘中。可是他既不知道这些碎片的内容是什么,也不知道替谁存储了文件,只要没有该文件对应的哈希值任何个人和机构就无法查看你的文件内容,这样我们就不用担心自己我数据被人利用。文件的碎片会被备份多次保留在IPFS系统中的多个节点上。这样即使黑客能攻击其中的个别节点。或者发生区域性的自然灾害,甚至类似911的这种。其他节点依然能保持文件的完整性,在文件传输方面。当我们使用IPFS访问或者下载文件时。我们像系统提交的是改文件的哈希值,因此,只要文件存在于整个IPFS系统中。系统就能帮我们通过最近的网络距离找出这个内容。
这样的处理方式,至少在两个方面都比传统互联网有优势,在搜索方面。HTTP是根据地质寻找内容,比如在没有电话,电报的年代。张三的朋友李四住在北京东城区灯草胡同730号。如果张三要从杭州去找李四就得根据这个地址千里走单骑,结果好不容易到了地方。发现房子还在可是李四已经搬走了。这就是我们传统互联网搜索内容经常会碰到的问题。而在IPFS中,文件是按照内容进行搜索的。甭管李四在世界的哪个角落,我都可以通过各种通信设备找到他,而不再是通过古老的地址检索,在效率方面。比如张三要下载一份视频资料,一共10GB大小,如果这份资料存储在地球另一端某个服务器上。那得经过若干路由从遥远的服务器中,像蚂蚁搬家那样一点点的下载。就好比一艘货轮拉了满仓货物通过海洋慢慢的给运过来。而在IPFS中,系统会从离我们网络距离若干节点,同时向我们传输这个文件的碎片。由于每个碎片只有256KB大小,所以速度将快的惊人。因此无论从传输距离还是从传输容量上。IPFS都大大优于HTTP协议。尽管IPFS有大大了优点,但同时也有缺陷。比如在隐私的保护方面。
由于在IPFS中,文件的检索是根据文件内容的哈希值来进行的,因此这个哈希值如果泄露给第三方。那么第三方就可以毫无门槛的下载这个文件,对此有没有解决办法呢?
有!那就是用户把文件上传到IPFS之前,先对他进行加密。将即使第三方下载了这个文件,他也看不到原始内容。
因此在Web3.0即将开启的时代,IPFS在数据确权,存储安全文件封发及传输效率方面都比Web2.0大大的迈进了一步,新生的IPFS虽然还不尽完善,但这并不影响他的贡献和价值。1991年,蒂姆 博纳斯 李发明的HTTP协议搭建了互联网世界的高速公路,从此我们对信息的传递可以在一瞬间抵达世界的各个角落。30年后,胡安 贝内特和他的团队创建了IPFS协议将重塑这个新世界的数据航道,让人类信息得以永存!正是因为有这样的一群人,推进着科技文明的进步。才得以让我们对未来的探索,有了更多的可能。然而如此宏大的系统要实现稳健运行,就得需要充足的燃料来维持,IPFS要想在完整的应用生态中发挥作用,还需要激励机制和一套完整的运行系统。
为此Filecoin应运而生。
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)