IPFS 入门
- IPFS 的优点
- IPNS(去中心化命名系统)
- IPFS HTTP 网关
- IPFS vs SC(Sia coin)
- 不可靠(Unreliable) VS 可靠(Reliable)
IPFS(InterPlanetary File Syatem,星际文件系统)是一个面向全球的、点对点的分布式版本文件系统,目标是为了补充甚至取代目前通知互联网的 HTTP(超文本传输协议),将所有具有相同文件系统的计算机设备连接在一起
- 永久的、去中心化保存、共享文件
- 内容可寻址:通过文件内容生成唯一哈希值来标识文件。相同内容的文件在系统中只存在一份,节约存储空间
- 版本化:可追溯文件修改历史
- 点对点超媒体分布式: P2P 保存各种类型的数据
原理用基于内容的地址替代基于域名的地址,也就是用户寻找的不是某个地址而是存储在某个地方的内容,不需要验证发送者的身份,而只需要验证内容的哈希,这样可以让网页的速度更快、更安全、更健壮、更持久。
HTTP 的问题:互联网的数据交互模式使用的是 B/S 和 C/S 模式,即客户-服务器、浏览器-服务器模式
- 鼓励高度集中化:PFS 将 web 去中心化,可以降低极少数强大组织的延展性,提高所有站点的自由度和独立性,同时降低了由于服务器中断造成数据丢失的风险
- 低效:HTTP 协议从一台服务器一次只能下载一个文件,IPFS 可代替总是从数据中心获取内容的 HTTP,减少数据传输的费用
- 过度依赖于 Internet 主干网:Internet 主干网并不健全,易被攻击,同时一些重要的光纤线路被切断时服务容易遭受影响
- 服务器成本昂贵: HTTP 需要大量的重心服务器保存数据
- 历史文件被删除:网页平均使用寿命为 100 天,大量网站文件不能长期保存。重要的文件也会因操作不当而在互联网消失
- 中心化的网络限制了发展:中心化的网络易被控制,限制了互联网的良性发展
IPFS 的优点
- IPFS 用户搜索的是内容。通过浏览器搜索文件时,先找到服务器的位置(IP 地址),然后使用路径名称在服务器查找文件
- 只有文件所有者可以判断是否是用户要找的文件
- 必须保证托管这不会通过移除文件或者关闭服务器而对文件做任何更改
- 当文件被添加到 IPFS 节点,得到一个加密哈希名字,是从文件内容计算得到,通过加密保证哈希只表示文件内容,文件内容修改,哈希都会不一样
- 向 IPFS 分布式网络询问哈希时,通过使用一个分布式哈希表,可以快速找到拥有数据的节点,从而检索该数据,并使用哈希验证是否正确
- IPFS 是通用的,存储限制少。服务的文件可大可小。大的文件会自动切割为小块,是节点可以从数百台服务器同步下载
- IPFS 网络是细粒度、不可靠、分布式、易联合的内容分发网络(CDN,Content Delivery Network)
- IPFS 是静态 web 网站
- (不可靠和可靠的区别)
- IPFS 文件可以是特殊的目录对象,允许用户使用人类可读的文件名,透明地链接到其他哈希
- 用户可以通过默认方式加载目录中的 index.html,这也是标准的 HTTP 服务器采用的方式
- 使用目录对象,IPFS 可允许用户采用完全相同的方式生成静态网站
- IPFS 通过网络删除具有相同哈希值的文件,通过计算可以判断哪些文件是冗余重复的
- 每个网络节点只存储感兴趣的内容,以及一些索引信息,记录节点存储的内容
- 提供文件的历史版本控制器,且让多节点使用保存不同版本的文件
- 通过使用代币(FileCoin)的激励作用,让各节点有动力去存储数据。代币一个由加密货币驱动的存储网络。矿工通过为网络提供开放的硬盘空间获得代币,用户则用代币来支付在去中心化网卡中存储加密文件的费用
IPNS(去中心化命名系统)
- 使用 IPNS,每个文件可以被协作命名为易读的名字
- IPNS 允许用户使用一个私钥来对 IPFS 哈希附加一个引用,使用一个公钥哈希(pubkeyhash)表示用户网站的最新版本
- 如果链接不起作用,可以通过更改 pubkeyhash 指向的内容更新网站
IPFS HTTP 网关
通过一个 HTTP 网关,IPFS 可以实现从 HTTP 到 IPFS 的过渡。浏览器可以在完全实现 IPFS 之前,允许当前的浏览器访问 IPFS
IPFS vs SC(Sia coin)
- SC 是一条去中心化存储的公链,通过代币购买存储空间,将文件备份在互联网的多个节点上,提高文件的安全性
- IPFS 是一个底层的互联网协议,跟 HTTP 一样是交换信息。IPFS 实现的是互联网各个节点的文件读取、分享、交换
不可靠(Unreliable) VS 可靠(Reliable)
- 可靠的:运行在可靠的协议的终端会一起工作检查传输的数据,以确保正确性和数据完整性
- 一个可靠的系统会建立一个连接并且验证所有传输的数据被控制是有序的,按照正确的顺序被接收并且是完好无损的
- 可靠的协议对于丢失数据,易出错的物理介质工作比较好
- 差错校验,排序和验证机制需要数据包的多余负载,增加了传输数据的总带宽
- TCP(Transmision Control Protocol)是典型的可靠协议,数据包平均增加 42-63 字节
- 对于一个 Telnet 连接,单独传送每个击键,这样是非常低效的,因为传输一个有用的字节信息需要传输 64 个字节的数据包
- 不可靠的
- 不可靠的协议不会建立连接,不检查数据是否被接收,也不会提供数据来恢复错误或丢失的数据
- 不可靠的协议对于较少丢失数据和不易出错的物理介质工作较好
- UDP(User Datagram Protocol)是不可靠的协议,不会检查数据到达终端或者是完好无损的
- 相比 TCP,UDP 增加了很小的数据负载,因此在高质量的物理介质上传输更快
总结
- IPFS 协议:定义了基于内容寻址的文件系统;协调内容分发;合并了 Kademlia + BitTorrent + Git
- IPFS 文件系统:有目录和文件;可挂载的文件系统(通过 FUSE)
- IPFS 网络:像网络一样查看文件