今日链见:IPFS、Filecoin与分布式存储应用综述(上)
  • 今日链见:IPFS、Filecoin与分布式存储应用综述(上)

    Bin
    2018-08-15
  • 今日链见,和大家谈谈IPFS、Filecoin与基于IPFS的分布式存储应用。

    一、分布式文件系统的发展背景

    万维网WWW (World Wide Web)是一个大规模分布式的超媒体(hypermedia)系统,用链接的方法能方便地从互联网上的一个站点访问另一个站点,从而主动地按需获取丰富的信息。 每一个万维网站点都保存了许多文档,这些文档之间通过链接(link)的方式彼此相连。超文本是WWW文档的标准格式,是指包含指向其他文档的链接的文本,一个超文本由多个信息资源链接组成,这些信息资源可以分布在世界各地,并且数目不受限制。超文本文档仅包含了文本信息,超媒体文档则还包含了图形、图像、声音、动画以及视频图像等。

    超文本传输协议(HTTP)是互联网上的一项重要发明,它建立了互联网上超文本数据访问的基础协议。基于对一个服务器IP地址的访问,就可以从服务器传输超文本数据到本地浏览器,本地浏览器渲染后呈现给用户。

    在HTTP协议下,因为获取数据总是要通过服务器,也造成一些问题,比如:当服务器出现突发状况,数据很可能永久消失,无法被找回;.服务器的带宽有限而且价格不菲,会造成集中访问时的网络拥堵;数据中心的数据存储成本相对较高,数据很难被永久保存;服务器安全面临挑战,数据有可能被监控、被复制,甚至被篡改。同时,大数据时代,快速访问海量数据的需求也变得日益迫切,骨干网和服务器都面临更大的数据访问的压力。在万物物联网和移动通信环境下,HTTP也也面临很多瓶颈和问题。

    基于点对点网络的去中心化文件系统是近些年提出的解决办法,就是尽可能利用互联网上的每一台计算机来进行数据存储和分发,而不是仅仅限于服务器。于是,星际文件系统IPFS(InterPlanetary File System)就被提出来了。IPFS是一个在点对点网络下的分布式超媒体分发协议。在IPFS被提出之前,分布式文件系统已经产生了很多成果,包括点对点的BitTorrent、DHT、Git、自证明文件系统SFS。IPFS整合了这些分布式系统思路,并在这些技术上改进创新,旨在提供全球性,低延迟和去中心化的通用文件系统。

    IPFS被认为是最有可能取代HTTP的新一代互联网协议。

    二、IPFS及其技术架构

    IPFS已经有4年多的历史了,是由Juan Benet在2014年5月份提出的项目。Juan Benet毕业于斯坦福大学,在创建IPFS项目之前,他创办的第一家公司被雅虎收购。2015年,他创建的IPFS在YCombinator孵化器计划中拿到了投资,他同时成立了协议实验室(Protocal Labs),这个实验室团队由14位核心开发者以及社区中上百位代码贡献者组成。2016年9月,在Devcon2会议上,我就听过Juan Benet关于IPFS的讲座。

    星际文件系统IPFS是一个在点对点网络下的分布式超媒体分发协议,一个新的Web传输协议。与HTTP相比,它是基于点对点分布式网络、数据永久存储的、存储更灵活的、数据可离线的,访问也更快、更安全的分布式文件系统。它连接的所有计算设备,都拥有相同的文件管理模式,这些计算设备包括但不限于服务器,而是包含了各种P2P网络中的计算设备。

    IPFS综合了点对点网络很多技术方案,例如:BitTorrent是一个非常成功的点对点(P2P)文件系统,它成功地协调了不相互信任的点对点网络,激励它们合作将文件分发给彼此,尤其是针对音频和视频媒体的点对点文件共享应用,IPFS提出的BitSwap借鉴了BitTorrent块数据存储和交换的模式。分布式哈希表(DHT)广泛用于协调和维护关于点对点网络系统的元数据,IPFS的路由技术使用了 DHT 分布式哈希表。版本控制系统Git提供了强大的Merkle DAG对象模型,以分布式友好的方式捕获对文件系统树的更改,IPFS采用了Merkle DAG的数据结构,后来叫IPLD。自证明文件系统SFS 提出了分布式信任链和平等共享的全局命名空间,作为自签名的文件寻址系统,IPFS也采用了SFS, 即IPNS。IPFS的底层网络在go网络库上基础上实现了一个 libp2p 库,包含了各种网络协议。

    IPFS架构如下,包含了网络层的libp2p,路由层的DHT,交换层的BitSwap,Merkle DAG层的IPLD,命名层的IPNS,以及应用层的各种应用。

    总之,IPFS协议分为一系列负责不同功能的子协议:

    身份(Identities):管理节点身份生成和身份验证。

    网络(Network):管理与其他节点的连接,使用各种底层网络协议。

    路由(Routing):维护信息以查找特定的节点和对象;回应本地和远程查询;默认为DHT,但可切换。

    交换(Exchange):一种管理高效块分配的新型块交换协议(BitSwap)。 以市场为模型,弱化激励数据复制。 交易策略可切换。

    对象(Objects):一个Merkle DAG内容寻址的带链接的不可变对象。用于表示任意数据结构,例如文件分层结构和通信系统。

    文件(Files):受Git启发的版本化文件系统层次结构。

    命名(Naming):一个自我认证的可变名称系统。

    三、IPFS的数据存储与访问

    IPFS是点对点的网络存储,没有存储节点有特权,没有单点故障,节点也不需要相互信任。IPFS节点将数据对象存储在本地存储中,节点相互连接并传输对象。

    IPFS是一个“永久web”,放上去数据就会被别的节点存储,不能撤销。永久web, 意味着,不存在不能访问的链接。

    IPFS是超媒体文件存储系统,对于所有数据类型都是很有用的,包括图像、视频流、分布式数据库、操作系统、blockchains等,在/ipfs和/ipns下,可以加载全球文件系统,所有的文件都可以存到上面。

    IPFS服务的数据文件可大可小,可以把大的文件都切成小block。无论是网页、图片还是视频,都会被固定分成256k一个block,并且每一个block都会生成一个独一无二的“身份证号”,即hash值。这些block被随机地打乱并存储在运行着IPFS系统的节点上,P2P 网络可以从很多不同的节点拉取所需要的 block。因此,IPFS节点不仅仅可以像HTTP一样从一台服务器上下载文件,而且可以从多个服务器上进行同步下载。IPFS不关心服务器的位置,只关注文件中可能出现的内容。IPFS也可以做到重复的block只存一份,这就可以节省很大的存储成本。IPFS不会要求每一个节点都存储所有的内容,节点的所有者可以自由选择想要维持的数据。

    把一个文件放到IPFS节点,会得到一个由文件内容计算出的hash值,hash值直接反映文件的内容,任何对文件小的改动,哈希值也会完全不同。当IPFS被请求一个文件哈希时,它会使用分布式哈希表(DHT)找到文件所在的节点,取回文件并验证文件数据。

    使用ipfs add命令,可以将本地的一个文件(夹)上传到一个去中心化的web中,返回一个和文件夹内容有关的哈希值,记为fsHash。之后用户既可以通过ipfs客户端根据fsHash来获取内容。IPFS系统中配有HTTP网关,使得现有的浏览器也可以访问IPFS。也可以通过官方提供的https网关,用http链接直接访问获取数据。

    每次上传新的文件夹后,得到的哈希值均不同,这给访问带来了很大的不便。为了解决这个问题,可以使用命令ipfs name publish,在持有私钥的情况下可以把fsHash发布到一个和公钥相关的地址keyHash。这样,用户就可以用https://ipfs.io/ipns/keyHash来访问不同的内容,而不用担心内容版本的变化。

    由于IPFS/IPNS的哈希值都是很长和难记的字符串,所以IPFS兼容了现存的域名系统DNS,可以通过可读的链接来访问IPFS/IPNS内容。使用方法是在nameserver上创建一个文本记录,插入网站的哈希值。使用命令ipfs dns,设置dnslink=/ipns/keyHash即可。

    在IPFS上,建立网站的流程和过去一样,而且把网站加入到IPFS节点的指令只需要一条指令,即ipfs add -r yoursitedirectory。在此之后,用户可以从任何IPFS节点访问,而不需要链接到HTML上的任何哈希。从其他IPFS节点复制、存储web网站也很容易。它只需要一条命令和网站的哈希值,用命令ipfs pin add -r QmcKi2ae3uGb1kBg1yBpsuwoVqfmcByNdMiZ2pukxyLWD8。

    这意味着每个用户可以挂载个人同步的文件夹, 可以自动进行版本管理,自动备份,也就意味着用户将拥有无限空间的网盘, 不用担心数据丢失, 不用担心隐私泄露。

    今日链见:赵刚博士的区块链产业分析专栏。赵刚博士是赛智区块链研究院院长、赛智区块链(sageledger)公司创始人,赛智时代总裁,饮鹿网创始人。赛智区块链是专业的区块链研究、咨询、评估和投资孵化机构。赵刚博士是国内区块链领域的知名专家,《区块链:价值互联网的基石》的作者,《贵阳区块链发展和应用白皮书》的起草人,区块链创新Top100的策划人,长期致力于区块链技术应用和产业发展。

      ▎本文系赛智区块链原创文章,转载请标明出处。

      更多精彩内容请登录http://www.sageledger.com官方网站

      或扫描下方二维码,点击关注微信公众号(ID:赛智区块链研究院)


  • 没有登录不能评论