是什么
IPFS是什么?
IPFS是协议,定义了基于哈希寻址内容文件系统,并结合了来自Kademlia、 BitTorrent、Git等的想法来协调内容传输。
IPFS是文件系统。有文件夹、文件和基于FUSE的可挂载文件系统。
IPFS是一种互联网。文件可以通过HTTP网关来访问,例如https://ipfs.io。浏览器通过扩展能直接使用ipfs://域,且哈希寻址保证了内容的真实性
IPFS是p2p。支持世界范围点对点文件传输,具有完全分散的架构,没有中心点故障。
IPFS是CDN。在本地库中添加一个文件,立即对世界可用,并拥有对缓存友好的内容哈希地址和BitTorrent一样的带宽分发。
开发者 Protocol Labs
稳定版本 0.4.22 (2019年8月15日)
源代码库 github.com/ipfs/ipfs
-
编程语言
协议实现:Go(参考实现)、JavaScript、C语言, Python
客户端库:Go、Java、JavaScript、Python、Scala、Haskell、Swift、Common Lisp、Rust、Ruby、PHP、C#、Erlang
操作系统 FreeBSD、Linux、macOS、Windows
语言 Go、JavaScript、Python
类型 协议、分布式文件系统、内容分发网络
许可协议 MIT许可证
网站 ipfs.io
维基词条
星际文件系统(InterPlanetary File System,缩写IPFS)是一个旨在创建持久且分布式存储和共享文件的网络传输协议。它是一种内容可寻址的对等超媒体分发协议。在IPFS网络中的节点将构成一个分布式文件系统。它是一个开放源代码项目,自2014年开始由Protocol Labs在开源社区的帮助下发展。其最初由Juan Benet设计。
历史
在2014年,IPFS协议利用比特币区块链协议和网络基础设施的优势来存储不可更改的数据,移除网络上的重复文件,以及获取存储节点的地址信息——用以搜索网络中的文件。
当前的实现采用Go和JavaScript,并有Python的实现正在发展。Go实现被认为是开发正式规范时的“参考实现”。
描述
IPFS是一个对等的分布式文件系统,它尝试为所有计算设备连接同一个文件系统。在某些方面,IPFS类似于万维网,但它也可以被视作一个独立的BitTorrent群、在同一个Git仓库中交换对象。换种说法,IPFS提供了一个高吞吐量、按内容寻址的块存储模型,及与内容相关超链接。这形成了一个广义的Merkle有向无环图(DAG)。IPFS结合了分布式散列表、鼓励块交换和一个自我认证的名字空间。IPFS没有单点故障,并且节点不需要相互信任。分布式内容传递可以节约带宽,和防止HTTP方案可能遇到的DDoS攻击。
该文件系统可以通过多种方式访问,包括FUSE与HTTP。将本地文件添加到IPFS文件系统可使其面向全世界可用。文件表示基于其哈希,因此有利于缓存。文件的分发采用一个基于BitTorrent的协议。其他查看内容的用户也有助于将内容提供给网络上的其他人。IPFS有一个称为IPNS的名称服务,它是一个基于PKI的全局名字空间,用于构筑信任链,这与其他NS兼容,并可以映射DNS、.onion、.bit等到IPNS。
为什么
区块链百花争鸣的时代, 各种应用场景争相开放,就算在同一个领域,也会有各种产品出现。如分布式存储领域,有storj, maidsafe, swarm, zeronet, ipfs等。在这里,主角当然是IPFS。 正如比特币一样, 它没有产生新的技术,而是总结前人的技术,它是p2p, 密码学,共识学等技术的组合体。IPFS则组合了4大技术点如下:
分布式哈希算法(kad算法,coral dsht算法,s/kad 算法)(快速点对点定位,最优路经,防攻击。)
百度种子用到的技术BitTorrent(数据是双通道传输,参与人越多速度越快,解决了带宽问题。)
分布式版本控制系统git(分布式记录所有版本,安全的有据可查。)
自我认证文件系统-SFS(分布式信任链,平等共享的全局命名空间。方便所有的文件有全局唯一名字)
IPFS是位于TCP/IP协议的应用层协议(与http协议是竞争关系)。
IPFS是位于TCP/IP协议的应用层协议(与http协议是竞争关系)。www虽然带来了一次互联网革命,但http协议设计的很丑陋, 所有的事情都集中在一段报文中。
http需要中心化的域名服务器,更需要中心化的web服务器。对于重要网站,必须要花费大量的成本防DDOS攻击, 也需要时刻担心服务器数据丢失。
IPFS协议栈是漂亮的, 是对现有臃肿的http协议的一次革命。看下图:
IPFS 技术栈
sfs,git技术分别用到了IPNS 层,应用层(applications)。 全局唯一名字, 带版本跟踪。
BitTorrent, 分布式哈希算法分别用到了数据交换层(exchange),路由层(routing)。快速定位,省带宽交换。 IPFS与http相比,瘦客户,富协议,解决了http应用的复杂编程。再加上解决了上面指出的http缺点, 这是对http的革命。以前的web等应用面对瓶颈,都是改良http,然而导致应用很胖。既然IPFS是革命http,革命,是需要流血的。撼动能满足现在的http协议不容易, 所以IPFS需要寻找革命的战友, 它提出来了用区块链来作为革命的导火索。为了应用区块链,最需搬走的大山是共识问题。目前为止,得到世人验证的有效防拜占庭共识只有POW。而IPFS想发布基于POR(带激励机制的带宽,存储容量等资源相关的一种共识)的filecoin,这无疑是困难的。所以这也是,持续这么久, IPFS都没出正式版白皮书的原因。因为区块链很火,应用都往区块链上靠,但要成为区块链应用,必须要解决共识问题。IPFS也不例外,IPFS的最难点, 就是怎么解决POR的共识问题,开发者还没有发布最实际的有效做法。个人看法, 如果IPFS能完美的解决POR问题, www的今天,就是IPFS的明天。
怎么做
在centos7上安装ipfs-go环境并启动
通过web界面上传文件,查看文件
参考:https://blog.csdn.net/jacky128256/article/details/98849193
安装
安装 golang
安装 git
设置环境变量
ipfs 源码安装
启动
使用ipfs daemon启动节点服务器
上传文件
查看ipfs文件