全网文件系统:IPFS一种点对点超媒体协议
一、网站
二、白皮书
三、愿景
IPFS是分布式Web:一种点对点超媒体协议,使网络更快,更安全,更开放。
四、IPFS协议
为了实现全网的文件系统,定义了IPFS的协议,主要包括下面几点:
-
节点唯一(即数据节点唯一身份)
每个节点有唯一节点id,用私钥是节点的唯一身份,用公钥作为节点id的身份验证。 -
网络
保证节点之间的网络连通性,和文件传输可靠性。
传输层支持任意协议,包括http,tcp,偏好对浏览器友好的WebRTC 、uTP协议,这样可以保证被不被封的可能性。 -
路由
路由系统可以让p2p网络中找到数据节点地址,并且可以获取到特点的数据内容。ipfs路由使用的是DHT:DistributedHashTables -
BitSwap协议用于区块交换
BitSwap协议是数据交换最重要的地方,也是经济模型的设计所在。在p2p网络中如何激励大家分享自己的数据?如果大家都只下载不上传的话那肯定很快就没有数据了
BitSwap协议包含三部分:
1、 BitSwap信用体系
2、BitSwap 策略
3、BitSwap 账本
BitSwap信用体系发送给其他节点数据(即上传)则增加信用值、反之从其他节点接收数据(即下载)则降低信用值。
根据上面的信用体系,采取的策略目标:
1、 节点数据交换的性能和效率达到最优
2、 阻止水蛭,即只下载不上次
3、 可以有效防止攻击:比如女巫攻击
4、 对信任节点建立宽松机制(be lenient to trusted peers)
BitSwap账本则记录节点的所有数据交换。
BitSwap协议使用两个了列表与其他节点进行数据交换:
1、want_list 想要的数据块
2、have_list 已经拥有的数据块 -
对象存储
IPFS存储数据采用的是 Merkle DAG结构,这样可以进行内容寻址、防篡改、去重等功能特点。简单来看大家能看到的文件结构如下,和unix/linux一样:
format 格式
/ipfs/<hash-of-object>/<name-path-to-object>
example 示例
/ipfs/XLYkgq61DYaQ8NhkcqyU7rLcnSa7dSHQ16x/foo.txt
-
文件版本控制
版本控制类似Git:
1、块:可变大小的数据块。
2、列表:块或其他列表的集合。
3、树:块、列表或其他树的集合。
4、提交:树的版本历史中的快照。
用过git的同学都知道git可以轻松的查看文件的变动历史,看到每一个版本的文件内容,让你不用买后悔药就可以把文件回退到之前的版本。 -
IPNS:命名系统
前面说了ipfs的文件格式是类似这样的:/ipfs/XLYkgq61DYaQ8NhkcqyU7rLcnSa7dSHQ16x,是一个hash值,当我们把文件重新上传后,该hash值会修改。想象下如果我们发了一篇博文,博文修改后hash会发生修改,那么读者看到还是之前的老版本,那怎么让读者看到最新的版本呢?IPNS就是来做这个事情的,通过节点ID对项目根目录的IPFS HASH进行绑定,前面也提到了节点ID是唯一的,这样保证了访问地址的唯一性和不可变性。
简单理解就是就是IPFS的域名系统,除了上面的绑定功能还包括 便于人可读的命名地址,比如:# Alice links to bob Bob
ipfs link /<alice-pk-hash>/friends/bob /<bob-pk-hash>
四、经济模型(Filecoin)
很多人并不清楚ipfs和filecoin之间的关系,因为filecoin和ipfs有两个网站、两份白皮书,但是两份白皮书又相互引用,那么他们到底是什么关系呢?
简单来说,filecoin是运行在IPFS上面的激励层,也就是经济模型
IPFS是全网的文件系统,那么就又巨大的存储需求和需要大量的节点来支撑,我们都知道p2p网络节点越多下载越快(对比下迅雷、bt软件),但是如果没有激励,没有人愿意贡献节点贡献硬盘,filecoin就是定义token经济模型的,所以IPFS的token是FIL,filecoin的前三个字母
filecoin包括以下几部分
1、存储市场 Storage market
2、检索市场 Retrieval market
3、共识算法:PoRep、PoSt
4、智能合约
filecoin提供两个最基本的方法给最终用户:Get、Put,这两个方法让用户用合适的价格就可以进行数据存储和数据检索。filecoin用户可以编写合约定义存储和检索的服务费用。
- File Contracts
- Smart Contracts
5、集成其他系统
提供bridge工具(类似arcblock的adapter)可以连接到不同的区块链系统,比如以太,bitcoin等。
- Filecoin in other platforms
- Other platforms in Filecoin
filecoin提供了双向的集成,filecoin可以提供给第三方系统使用,filecoin也可以连接到第三方系统,多么的周到。这也是为什么很多项目宣传存储用IPFS的原因之一把。
Token情况:
- 总数:20亿枚
- 成本:0.75美元/FIL
- 70%留给minner,15%协议开发,10%思慕,5%基金会保留
四、总结
个人理解IPFS就是全网的文件系统。
用过电脑的人都知道电脑有硬盘,在操作系统上面能看到各种盘符、文件夹和文件。当然除了硬盘,电脑还有CPU,主板、内存、键盘等等。
如果把以太坊虚拟机EVM类比成为全网的CPU,那么IPFS就是全网的硬盘;EVM用solidity语言编程可以全网运行智能合约,利用全网的计算资源运行且不重复运行计算机指令(当然还有很多限制,比如不能调用外部接口、不能访问外部数据等);IPFS用分布式哈希表DHT技术可以存储非结构化的文件,好像全网就是一个大硬盘,文件在全网里面不会轻易丢失且有版本。
补充下:分布式账本就是一个分布式的数据库,可以类比成Oracle、MySQL等数据库,存储是结构化的数据。