【编者Peter Ye按】
欢迎大家参加2018年12月12日下午的中国存储与数据峰会《区块链的技术与应用论坛》。我已经邀请到蔡维德、于佳宁、杨东、王立仁、洪蜀宁、易欢欢、孙海波、张崇珂、陈昌、董天一等区块链大咖进行分享,详见
http://www.datastoragesummit.com ,打开网页后,点击 “区块链技术与应用”。本文经晨雾科技授权刊发。
---开始---
IPFS是一种去中心化的协议,所属团队Protocol Labs希望用IPFS取代现有的HTTP协议。
Filecoin是IPFS的激励层,是全球三十多个区块链存储中最耀眼的明星。2017年8月10日,在短短的1个小时内,Filecoin就募集了2亿美元:
https://www.coindesk.com/200-million-60-minutes-filecoin-ico-rockets-record-amid-tech-issues/
董天一是国内首屈一指的IPFS/Filecoin布道师,2010年毕业于北京大学,北京汉光百货商务电子技术总监。他是前Oracle数据库工程师,有着丰富的大数据处理、分析和电商网站架构经验,公众号《IPFS指南》和知乎专栏《IPSF指南》作者,现致力于IPFS/Filecoin在中国的技术普及工作。他组织的meetup场场爆满,甚至有开发者千里迢迢到来只为与他做几分钟的交流。他擅长区块链底层通讯协议(peer to peer)、区块链经济体系设计、区块链共识协议设计。
---开始---
我第一次接触到IPFS,完全是被名字所吸引。星际文件系统(Inter Planetary File System)这个名字点燃了一个科幻爱好者的热情。随着我对IPFS的了解,我意识到它不仅有个科幻的名字,还有可能将科幻的未来带进现实。
从当前看来,IPFS很有可能改变我们的互联网,很可能下一代互联网会因此而诞生,但IPFS技术的复杂性导致了许多信息不对称的情况。这就是我近两年来所做的事,在推广IPFS的同时也让更多人能够了解IPFS。
许多人都知道IPFS与Filecoin,但他们并不清楚IPFS与Filecoin的关系是什么、为什么要有IPFS与Filecoin,许多开发者徘徊于两者之间,不知究竟该如何选择。理解IPFS与Filecoin应用有几个关键点,我会在这里为大家一一剖析:
IPFS与Filecoin的关系
IPFS的核心是什么
Filecoin的核心是什么
IPFS与Filecoin在数据应用层面上的不同
一、IPFS与Filecoin是共生关系
IPFS是一个协议,也是一个P2P网络,类似于现在的BT网络。但因为拥有更强大的功能,IPFS具备了取代HTTP的能力,可以为我们建造更好的WEB。
Filecoin是一个分布式存储网络,把云存储变成一个算法市场,代币和区块链在其中起到重要作用。如今正在运行的Storj、sia、玩客云均是该类型的网络。Filecoin与这些网络最大的区别正在于IPFS。
IPFS与Filecoin结合在一起发生了化学反应:Filecoin是运行在IPFS上的一个激励层。
IPFS有巨大存储需求和节点需求。P2P网络节点越多则下载越快,但如果没有激励机制,没有人愿意贡献节点和存储。这里Filecoin的登场解决了激励问题。Filecoin可以为IPFS贡献很多很多节点,同时Filecoin自带巨大的分布式存储空间,同时解决了IPFS的存储问题。这使得IPFS对比http有了更强的优势。
Filecoin协议的代币也叫Filecoin(说Filecoin 的时候可能说的Filecoin 网络, 也可能说的是Filecoin 代币),符号FIL,代币是沟通资源使用者(用户)和资源提供者(矿工)的中介桥梁,Filecoin协议拥有数据检索和数据存储两个交易市场,双方在市场里面提交自己的需求,达成交易。
IPFS与Filecoin相互促进,共创未来,可谓天造地设的共生情侣。
二、IPFS协议的核心要旨
IPFS协议对标的是http协议。http作为一个传输协议,解决了网络传输问题。可以说没有http就没有互联网。但随着互联网的发展,http协议逐渐暴露出了很多问题。
HTTP 的不足之处:
效率低,使用成本高,带宽资源浪费严重
数据丢失,页面平均生命周期只有 100 天
中心化的网络限制了很多发展机会
对主干网的严重依赖, 经常造成服务中断
IPFS 也是一个数据数据传输协议, 相比于 http 有如下优点:
P2P 下载, 节省高达 60% 的带宽, 使用成本低廉
永久 web, 不在删除数据
分布式的网络, 给互联网带来生机
不再依赖主干网, 降低因不可抗力造成的服务中断问题
IPFS协议在设计时包含以下几个重要部分:
1、节点身份
每一个 IPFS 节点都有一个独一无二的身份 id,利用节点的公钥生成的加密哈希,节点的活动都需要使用这个 id,就像是 IPFS 网络里面节点的身份证。
2、网络
IPFS节点要和网络里面成百上千的其它节点通讯,现实中的网络结构如此复杂,IPFS 使用 ICENAT 穿透技术来保障网络的连通性。
3、路由
IPFS 网络的路由使用的是 DHT,借鉴了S/Kademlia,使得一个节点可以快速的查找到其它节点。
4、数据交换协议
IPFS 借鉴BitTorrent 协议,使用了叫做BitSwap 的数据交换协议,该协议使用两个列表,想要的数据块(want_list)和我有的数据块(have_list)与其它节点进行数据交换。
5、对象存储
IPFS 存储数据使用的是 MerkleDAG 结构,这赋予了 IPFS 内容寻址,防篡改,去重功能。
6、版本控制系统
IPFS在 MerkleDAG 上面添加了 Git 版本控制功能,这使得 IPFS 文件拥有了时光机功能,可以轻松查看文件的变动历史,是不是很酷
7、自认证命名系统
IPFS使用了 SFS 自认证系统给文件命名,同时提供了 ipns 解决传播问题,而且还兼容了现有的域名系统。
三、Filecoin协议要旨
Filecoin是一个分布式存储网络,它把云存储转换为算法市场。Filecoin是运行在 IPFS 上面的一个激励层。Filecoin可以存储几乎一切数据、运行分布式应用、实现智能合约系统。
Filecoin包含以下内容:
1、Blockchain,区块链
跟其它区块链项目一样,这是Filecoin 的基础,一切都是围绕 block 和 chain 进行的。
2、交易市场
Filecoin拥有两个交易市场,检索市场和存储市场,矿工和用户在这两市场里面达成交易,实现价值交换。
3、共识机制
有交易和区块链必然要有谁记账的问题,Filecoin也一样。在解决共识机制时,Filecoin抛弃了以往区块链的高度依赖计算资源和能源消耗形成的共识机制,重新利用有意义的工作来形成共识机制,这就是 PFT(powerfault tolerance),进化版的拜占庭容错机制,将矿工当前在网中使用的存储量和生成的时空证明转化为投票的权重,然后节点利用这个权重进行选举产生一个或者多个领导节点,领导节点创建新的 block 并把它们传播到网络。Filecoin的 block 数据结构采用了 DAG 结构。
4、智能合约
Filecoin采用了两个基本的 api 供用户使用,数据存储 put,数据获取 get,在这两种操作的基础上Filecoin 支持文件合约 (FileContracts),让用户可以有更精细化的控制。Filecoin集成了合约系统和桥系统,把Filecoin 的存储系统提供给其他区块链系统使用,同时可以让Filecoin 使用其它区块链的功能。
Filecoin开发了桥(Bridge) 工具,它可以链接不同的区块链,这就是为什么那么多的白皮书提到要和 IPFS 和区块链链接起来,因为Filecoin 天生就拥有这样的能力。
四、开发者如何抉择IPFS与Filecoin?
很多开发者都会问我:我想用IPFS来做开发,该怎么提供解决方案?
一般来说,我都会反问开发者两个问题。当他们回答完这两个问题后,选择IPFS还是Filecoin已经是不言自明了。
问题1: 有数据分发需求吗?
问题2:有数据存储需求吗?
在我们已经知道IPFS与Filecoin是什么、有什么关联之后,我们还需要了解它们在数据分发与存储上的不同侧重点。希望大家能好好体会下面的这组对比。
IPFS:数据的分发和定位
传输:数据在节点之间进行传输
定位:寻址,发现数据的存储位置
存储:自己提供存储(可以保证存储的安全性),其它节点不保证数据存储的安全性
用户:下载数据免费,自己提供服务器,自己搭建节点
存储内容:只存储节点自己感兴趣的内容
Filecoin: 数据存储(类似一个云存储)
存储:付费存储,用户付费,矿工和Filecoin网络保证存储的安全性
下载:付费下载,用户付费,矿工负责发送数据
用户:不需要自己提供存储,也不需要自己提供节点
存储内容:收费存储一切
从以上的对比可以看出:IPFS与Filecoin都可以完成存储,但只有IPFS才能完成数据传输。
那么结论就很清晰了:
如果仅仅想要一个安全、快速的云存储,那么选择Filecoin即可。
如果除了数据存储需求,还需要分发数据,那么选择IPFS即可。
如果既有数据存储需求,又有数据的分发需求,那么可以单独选择IPFS,也可以IPFS+Filecoin一起。
五、借助于Filecoin的一种可能的区块链数据存储方案
当前所有的区块链数据存储几乎都是矿工的本地存储。那么,随着时间的累积,区块链的数据也会不断增长,存储的成本也会越来越高。
对于区块链一般可能会有两种数据:区块链数据和其它数据,其他数据可能是智能合约的代码,也可能是Dapp的所需的文件。有了Filecoin以后,矿工可以将区块链数据存储到Filecoin里面,而在本地仅仅保留数据的哈希值,这样本地存储压力就会大大降低,由于使用Filecoin存储,存储的成本也会下降很多。
有朋友会问一个问题:存到Filecoin里面的数据还是我的数据么?如果被修改了怎么办?
注意:Filecoin是一个云存储,由区块链和哈希值保证数据不会被篡改。矿工可以把Filecoin看做是一个数据库即可。至于真正的数据存在什么地方,不用关心。如果做得更进一步,在区块链里面存储共识的哈希值即可。
问题又来了:矿工把区块数据存储到亚马逊的s3,或者是阿里云OSS,跟Filecoin有什么不同?
单独从存储角度来讲没有不同,都是存储而已。但是Filecoin提供了区块链所特有的特性,是其它云存储多不具备的,例如:数据不能被篡改,智能合约,加密等,总之你的数据你做主。从这个角度来讲,矿工把数据存储到Filecoin是更好的选择。
由于软件架构没有统一的标准,IPFS与Filecoin的使用还需要case bycase地分析。本文作为基础的介绍,厘清了IPFS与Filecoin的关系,为开发者在IPFS与Filecoin的应用抉择提供一些思路。欢迎大家与我交流,提出更多方案与建议。
---结束---
区块链技术与应用 论坛的详细介绍:
http://www.datastoragesummit.com/topics/cn/dqkl.html
打开左下角“阅读原文”,可以看到中国存储与数据峰会《区块链的技术与应用论坛》所有嘉宾的彩照和详细介绍。
扫描如下二维码是区块链论坛专属的报名链接。