[总述]
IPFS是一个协议群,并不像大家想象的那样是一个东西;它是由许多松耦合模块有机的构建起来的一套完全去中心化的分布式网络文件存储系统;
目前主要包括如下几个部分:
IPFS: ipfs.io
Filecoin: filecoin.io
libp2p: libp2p.io
IPLD:ipld.io
Multiformats: multiformats.io
下面我们就逐个看看每个子协议都做了什么,在整个IPFS协议族中扮演了什么样的角色;
[IPFS]
此处的IPFS是一个点对点的超媒体协议; 代码地址:https://github.com/ipfs/ipfs.git
[Filecoin]
Filecoin是IPFS存储网络专用的加密数字货币系统; 当用户基于IPFS系统进行存储及检索的时候,需要耗费Filecoin;代码地址:暂未开放出来
[libp2p]
libp2p主要用于构建IPFS的底层分布式网络;包括: 传输层、网络发现层、节点路由层、NAT穿越层、内容寻址;代码地址:https://github.com/libp2p/go-libp2p.git
[ipld]
通过Hash进行内容寻址的技术已经被广泛应用于各种分布式系统。从加密货币的区块链到备份代码的每一次提交,再到各种web内容,他们背后的逻辑几乎是一样的。然而由于数据结构的不兼容,造成了这些数据无法相互操作。IPLD作为中间层,统一了这些异构的数据结构,使得不同的数据可以进行数据交换。IPLD的组成:
代码地址:https://github.com/ipld/ipld.git
[multiformats]
该项目是一系列协议的集合,它在现有协议基础上对值(值:通常是具有某一项表达意义的)进行自我描述的改造。即从值上就可以知道该值是如何产生的。
代码地址:https://github.com/multiformats/multiformats.git
[ipfs-cluster]
ipfs集群工具。通过该工具可以构建ipfs节点集群,该工具允许同时管理多个ipfs节点的数据。
集群工具的具体使用过程可以参考http://ipfser.org/2018/03/02/r26/
ipfs-cluster源码地址:https://github.com/ipfs/ipfs-cluster
[go-ipfs-api]
golang版ipfs-https接口,通过该仓库代码,可以顺利以代码形式访问ipfs;github地址:https://github.com/ipfs/go-ipfs-api.git
[其他:源码阅读]
领取专属 10元无门槛券
私享最新 技术干货