IPFS是啥!
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IPFS是啥!相关的知识,希望对你有一定的参考价值。
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应运而生。 参考技术A
IPFS是一种点对点的分布式文件系统,致力于取代HTTP。
IPFS和HTTP之间的区别
安全性:HTTP属于中心化的,所有流量直接搭载在中心化的服务器上,承载的压力极大,容易造成系统崩溃,HTTP还容易遭受DDOS攻击;IPFS的存储方式是去中心化的分片的分布式存储,黑客无法攻击,文件不易丢失,安全有保障。
效率:HTTP依赖中心化服务网络,服务器容易被关闭,服务器上文件也容易被删除,服务器需要24小时开机;IPFS采用P2P网络拓扑,全网域的计算机都可以成为存储节点,就近分布式存储大大提高了网络效率。
成本:HTTP中心化服务器运行,需要较高的维护运行成本,中心化数据库一旦遭受DDOS攻击,或遭受不可抗力损害,所有数据将全部丢失;IPFS极大的降低服务器存储成本,也降低了服务器的带宽成本。
HTTP的客户网络访问绝大部分不是本地化的,有网络延迟,IPFS可以极大的加快网络访问速度,网络访问本地化,体验感会明显提升。
IPFS的使用场景:
作为一个挂载的全局文件系统,挂载在IPFS和IPNS下
作为一个挂载的个人同步文件夹,自动的进行版本管理,发布,以及备份任何的写入
作为一个加密的文件或者数据共享系统
作为所有软件的版本包管理者
作为虚拟机器的根文件系统
作为VM的启动文件系统 (在管理程序下)
作为一个数据库:应用可以直接将数据写入Merkle DAG数据模型中,获取所有的版本,缓冲,以及IPFS提供的分配
作为一个linked(和加密的)通信平台
作为一个为大文件的完整性检查CDN(不使用SSL的情况下)
作为一个加密的CDN
在网页上,作为一个web CDN
作为一个links永远存在新的永恒的Web
Filecoin是一个去中心化存储网络,是IPFS的激励层。Filecoin提出了激励机制,即使用存储证明去挖矿,以此来奖励存储矿工提供更好质量的存储服务,同时在检索市场激励网络较好或响应性能较好的矿工获取奖励。。
智者同行,共建IPFS生态,IPFS布道者王杰。本回答被提问者采纳 参考技术C IPFS是什么呢?许多认识IPFS的朋友都知道,IPFS的全名是InterPlanetary File System,也就是星际文件系统。它的主要特点是永久的、分散的保存共享文件。为了让有存储空间的人占用存储空间来保存文件,IPFS使用FIL作为矿工待存储文件的激励层。
IPFS的最终目标是什么?IPFS的最终目标是取代HTTP协议,成为web 3.0时代的基础。HTTP协议是一种集中式的数据传输协议。人人在同一台服务器中存储数据,以服务器为中心,如果一旦服务器出现问题,用户就无法从服务器下载数据。如果服务器承载一个网站,该网站将无法访问。 如果服务器是数据库环境,用户可能无法登录软件。
我们都知道,HTTP协议已经使用了几十年。 随着5G时代的到来,我们不得不担忧http的安全性,特别是面对大量数据,它的存储成本将继续增加。 例如;爱奇艺在2020年损失了70亿,其中大部分来自存储成本。如果未来IPFS/Filecoin利用区块链的分布式存储来填补这一空白,那就大大的降低了企业的存储成本,而且保密性更高更安全,传输速度更快,那么在未来一定会有很大的优势。
小编自己一直用的火雷神算,火雷神算在算力排名和单T挖矿效率上一直做到行业领先,尤其是单T挖矿效率,保持在IPFS分布式存储领域的头部水平。 参考技术D IPFS全称是Inter Planetary File System,直接翻译的话叫做“星际文件系统”,它由Protocol Lab提出,是一种点对点(P2P)的分布式文件系统。IPFS的目标是打造一个更加开放、快速、安全的互联网。 IPFS星际无限是国内顶尖的区块链科技公司,致力于IPFS的生态建设让每一个分布式存储的爱好者都能了解IPFS,星际无限愿为每一位IPFS爱好者普及专业知识。
在 IPFS 上部署静态博客
本文主要记录在 IPFS 上部署博客的过程,用以熟悉 IPFS 的基本操作。https://ipfs.0ranga.com 就是博主博客在 IPFS 上部署的版本。
IPFS
安装 IPFS
首先得在计算机上安装 IPFS,博主 PC 的操作系统的 Arch,可以直接使用包管理器进行安装。如果之后需要为博客添加域名则需要在云服务器上部署 IPFS,博主选择的是 DightOcean 的 CentOS 7。所以提供了以上两种操作系统的安装方式,其他系统如何安装请自行探索。
1 |
|
安装完成后需要先初始化 IPFS
1 | ipfs init |
另外,一般在云服务器上需要将 IPFS 设置为自启动服务,设置方式如下,首先需要添加 service 描述文件
1 | vi /etc/systemd/system/ipfs.service |
文件内容如下:
1 | [Unit] |
然后使服务开机自启动同时立即启动:
1 | systemctl enable ipfs |
部署一个文件
接下来在本地创建一个文件 index.html
,在里面写入简单的话
1 | echo 'hello, my simple blog!' > index.html |
随后添加至 IPFS 中
1 | ipfs add index.html |
得到返回如下
1 | ipfs add index.html |
可以通过如下命令查看文件内容
1 | ipfs cat QmaqwGFUj34wDLPzHVxmJhEN6n27xidsfrmf2WUnhSTKTr |
当我们使用如下命令启动节点后,文件内容将会逐渐被 IPFS 网络存储
1 | ipfs daemon |
随后可以通过访问 https://gateway.ipfs.io/ipfs/QmaqwGFUj34wDLPzHVxmJhEN6n27xidsfrmf2WUnhSTKTr 得到该文件。如果你不介意将这句简单的话作为你的博客的全部内容的话,那至此博客的全部创建完成了,而且理论上永远不会消失。
部署静态博客框架:以 Hexo 为例
虽然小标题写的是“以 Hexo 为例”,但本文不会细讲如何使用 Hexo,Hexo 官方文档提供了细致的帮助。如果你之前用过 Hexo 而且因为懒得写作而把它丢弃在硬盘里,这里有几个命令可以帮助你快速回想起使用方法。
1 | # 创建新文章 |
在使用 hexo g
生成静态博客后,我们可以在 public 目录中找到部署博客需要的所有文件,入口是熟悉的 index.html。(其他博客框架也有个类似 public 的文件夹用于存放整个博客)
使用如下命令将整个 public 文件夹放入 IPFS
1 | ipfs add -r public |
添加后的输出中最后一行是目录 public 的哈希值,比如博主得到的是
1 | # added QmSc5D1ahPbVkAhHFxJvqnWDEWrgMQw9B9BGmQv5i1VAwt public |
然后访问 https://gateway.ipfs.io/ipfs/QmSc5D1ahPbVkAhHFxJvqnWDEWrgMQw9B9BGmQv5i1VAwt/ 就可以看到保存在 IPFS 上的博客了。不过,在修改文章更新 public 目录之后,目录的哈希值会变化,因此以上的连接只是博客在当前的一个(永久)状态,如果想要通过一个链接访问不断更新的博客,就需要借助 IPNS,IPNS 的作用就是将某个文件与 PeerID 进行绑定,一般情况下,PeerID 可以保持不变,这样,通过访问 PeerID,就可以访问与 PeerID 绑定的内容了,这和 DNS 中域名与 IP 的关系类似。
通过以下命令将当前的 public 目录哈希与 PeerID,PeerID 不需要显示指定,得到绑定结果后的 PeerID 实际上与通过 ipfs id
命令得到的 ID 一致。
1 | # 绑定 |
绑定 IPNS 之后,可以通过 https://gateway.ipfs.io/ipns/QmRP5ZT2B5W8zWTXhPwpgZQpuj8Gv5bNaXWbttRB6niAYo/ 访问到博客。
但是直接部署 public 目录存在一个问题:hexo 这类的博客中所有本地资源的路径均为根目录开头的相对站点根目录的绝对路径,例如对于 /css/home.css
,当访问 https://gateway.ipfs.io/ipfs/<file_hash>
这样在文件中有类似绝对路径链接时,相当于访问 https://gateway.ipfs.io/css/home.css
,显然这个 home.css
文件是不存在的。如果想要使得网站可以正确访问,有两种解决办法:
- 使用相对路径
./css/home.css
,这样就相当于访问https:/ 大专栏 在 IPFS 上部署静态博客/gateway.ipfs.io/ipfs/<file_hash>/css/home.css
,如此可以正确访问。如果博客框架自身支持将所有本站资源的绝对路径替换成这样,或者整个博客是自己实现如此,那不需要额外的操作就可以得到一个完美的博客。 - 让
http://gateway.site/css/home.css
真实存在,即将http://gateway.ipfs.io/ipfs/<file_hash>
替换成一个独立域名http://gateway.site
,这就需要用到 IPFS 提供的 dnslink 增强。
为博客添加域名
还是以我自己的域名 0ranga.com 为例,这个域名托管在 Namecheap 上,使用 Namecheap 的 DNS 管理,可以为域名增加一个子域名 TXT 记录如下:
1 | TXT 0ranga.com dnslink=/ipns/QmRP5ZT2B5W8zWTXhPwpgZQpuj8Gv5bNaXWbttRB6niAYo |
这样,我们可以通过地址 https://gateway.ipfs.io/ipns/0ranga.com 访问到部署在 IPFS 上博客。我们还可以进一步缩短访问链接长度,在 DNS 管理中进一步添加如下记录(为了不与原博客 0ranga.com 冲突,这里使用子域名 ipfs.0ranga.com):
1 | # 1. 为子域名 ipfs.0ranga.com 添加 A 记录,绑定到一个 Gateway 的 IP, |
等待 DNS 记录生效后,可以通过 http://ipfs.0ranga.com 访问博客。至此,博客的短链接改造已经基本完成。接下来会记录些自己另外的一些尝试,包括对博客的访问进行加速等。
进阶
部署云服务器以增强博客的可用性同时加快访问速度
如果部署了博客的本地 PC 关机,同时博客的访问量不是那么可观,则可能存在一部分博客文件无法访问的情况,因为在没有激励的情况下 IPFS 上的其他节点一般不会主动存储其他用户往 IPFS 中添加的文件。所以配置一个云服务器来存储博客本身就可以确保文件的可用性(请问:那为什么还要用 IPFS 来部署博客?),同时随着 FileCoin 激励与 IPFS 的结合,事情会变得不那么糟糕。
云服务部署的步骤如下:
按照安装 IPFS 这小节中的安装方法在云服务器上部署一个 IPFS 服务;
为了 Gateway 可以被公网访问,需要将 IPFS 配置文件
~/.ipfs/config
中Addresses:Gateway
的配置改为/ip4/0.0.0.0/tcp/80
,用以监听所有网卡上的 TCP 80 端口,随后重启 IPFS 服务使配置生效;通过本地浏览器直接访问云服务器的 IP (博主目前测试使用的服务器实例的 IP 为
104.248.70.88
)结果为 404 page not found ,则表明服务部署成功。进一步,访问 http://104.248.70.88/ipfs/QmaqwGFUj34wDLPzHVxmJhEN6n27xidsfrmf2WUnhSTKTr 可以得到 部署一个文件 这节中的 index.html 文件,至此完成了 IPFS Gateway 的部署与共享;为 Gateway 绑定域名。类似之前的做法,添加一条 DNS A 记录。待记录生效后,访问连接变为 http://gateway.0ranga.com/ipfs/QmaqwGFUj34wDLPzHVxmJhEN6n27xidsfrmf2WUnhSTKTr
1
A gateway.0ranga.com 104.248.70.88
改用自己的 Gateway。将之前配置的子域名 ipfs.0ranga.com 的 A 记录对应的 IP 改成云服务器的 IP(TXT 记录保持不变),当浏览器访问 ipfs.0ranga.com 这个域名时,首先会访问 104.248.70.88 这台 Gateway 服务器,Gateway 再向整个 IPFS 网络收集当前页面的碎片;
1
A ipfs.0ranga.com 104.248.70.88
通过 Pin 操作将本地博客 public 目录”钉“至云服务器 IPFS 节点,然后将 public 目录哈希绑定至云服务器中 IPFS 的 PeerID,另外记得修改子域名 ipfs.0ranga.com 的 TXT 记录中的 IPNS 地址。此后即使关闭本地 PC 的 IPFS 服务,部署在 IPFS 上博客也可以被正常访问,访问地址依然是 http://ipfs.0ranga.com;
1
ipfs pin add QmSc5D1ahPbVkAhHFxJvqnWDEWrgMQw9B9BGmQv5i1VAwt
如果觉着同步文件至云服务器,而又不介意一直运行本地 PC 的 IPFS 服务,但是博客的访问速度又不快,可以考虑使用以下方式将云服务器上 IPFS 节点直接加入到本地 Peer 列表中,这样可以帮助云服务器上的 IPFS 节点快速找到本地 PC IPFS 节点中的博客文件。
1
ipfs swarm connect /ip4/104.248.70.88/tcp/4001/ipfs/QmamxGp6sw2dKUHm2RnaJ7zRDeR3w8m98kKAYgfpszeqHR
HTTPS 加持
在云服务器 CentOS 系统上安装 Nginx 服务,然后使用 Certbot 生成 Let’s Encrypt 证书,过程比较简单,Certbot 的安装在官方教程有详细的说明,此处省略。最终,子域名 ipfs.0ranga.com 的 Nginx 的配置大致如下:
1 | server { |
注意,由于端口由 Nginx 进行控制, Gateway 不能再占用 80 端口,因此这里将其(~/.ipfs/config
中 Addresses:Gateway
配置)重新设定为 8080。gateway.0ranga.com 的 Nginx 配置也是类似。Hurray!现在我们可以通过 https://ipfs.0ranga.com 访问博主部署在 IPFS 上的博客,通过 https://gateway.0ranga.com 访问博主的 Gateway 了。
总结
可以用以下几个网址进行总结:
序号 | 链接 | 改进之处 |
---|---|---|
1 | https://gateway.ipfs.io/ipfs/<root_path_hash>/ | 原始博客目录 |
2 | https://gateway.ipfs.io/ipns/<peer_id>/ | IPNS 映射目录,站点更新时链接保持不变 |
3 | https://gateway.ipfs.io/ipns/0ranga.com | dnslink 绑定,增加链接可读性 |
4 | http://ipfs.0ranga.com | 实现完全自定义域名 |
5 | https://ipfs.0ranga.com | 为域名添加 HTTPS 证书 |
参考资料
- https://michalzalecki.com/set-up-ipfs-node-on-the-server/
- https://github.com/ipfs/notes/issues/39
- https://www.cloudxns.net/Support/detail/id/304.html
- https://ipfs.io/ipns/Qme48wyZ7LaF9gC5693DZyJBtehgaFhaKycESroemD5fNX/post/putting_this_blog_on_ipfs/
以上是关于IPFS是啥!的主要内容,如果未能解决你的问题,请参考以下文章