2018年11月05日,区块链百家讲谈创始人宇鸣初特邀:美国区块链媒体BTC Media亚太区CTO,区块链技术专栏作者,Ripple早期开发者古千峰先生,在BTRAC区块链技术研究应用交流中心(Blockchain Technology Research and Application Club)作主题分享。链世纪财经作为区块链百家讲谈联合发起人和独家合作媒体对分享的精彩内容作特别报道。
BTRAC(全称:BTRAC区块链技术研究应用交流中心Blockchain Technology Research and Application Club)智库由各有关部门研究院和行业协会、各新闻媒体,世界著名高等学府,哈佛大学、麻省理工大学、斯坦福大学、普林斯顿大学、牛津大学,剑桥大学、北京大学、清华大学、香港大学、新加坡国立大学、中国科学院、美国科学院、法国科学院等近200所全球著名高等学府的教授、专家、学者、高校优秀学生(博士研究生以上)及海内外优秀中华儿女入驻的一个线上高等智库。
BTRAC区块链技术研究应用交流中心智库创始人宇鸣初表示:“BTRAC智库,是立足于区块链行业,着眼于学术、技术与应用,定位于业界高端人士的学习与交流平台,目前已在日本东京,美国硅谷,美国华尔街,新加坡和国内大中城市地区布局形成线上交流线下互动的整个区块链高等社区智库。
他们专长于技术架构、程序开发、应用落地、人工智能、量子计算、云计算、云服务、物联网、互联网、3D打印、密码学、大数据、VC风控、法律法规、市场分析…….
他们是院士、国家杰青、教授、学者、专家、博士硕士,是创业者、投资人、CEO、是主编、名记,是联盟盟主、协会会长……
他们在BTRAC智库这个大家庭里,共享着智慧与思想,受益于讨论和碰撞,合力建设着这个个高门槛、高水准、高质量、高等级的精神家园。
BTRAC智库,区块链行业中,独一无二的价值平台
专家介绍:古千峰
美国区块链媒体BTC Media亚太区CTO,区块链技术专栏作者,Ripple早期开发者,武谷社区创始成员,IPFS原力区创始成员,柚子杯黑客马拉松巡回赛发起人,企业通证战略顾问,15年外贸从业经验,高级经济师,老码农。
分享为语音形式,以下为分享主题文字内容。
首先声明,我在讲IPFS时,有三个不讲:一是不讲矿机。
为什么不讲矿机呢?因为从做技术的角度来看,买矿机挖“矿”是一种投资。同样的,Filecoin是协议实验室团队发行的用区块链技术实现激励机制的通证,IPFS是存储技术,Filecoin是激励机制。
下面简单介绍下IPFS存储的基本原理。IPFS有四个技术特点:
IPFS存储的基本原理
对于分布式存储,IPFS有四个技术特点
默克尔树
IPFS的数据结构是默克尔树,默克尔树是现在绝大多数区块链所采取的数据架构,70年代末的时候,由美国科学家Merkle发明的一种哈希树的数据结构。每个叶节点均以数据块的哈希作为标签,而叶节点的上层节点则以其子节点标签的哈希值作为标签 。哈希树能够高效、安全地验证大型数据结构的内容,通过这种方式能有效地确保数据的完整性。
当一个文件在IPFS节点上保存时,先把它进行切片,切完以后片与片之间会形成一个个新的哈希标签,一层层往上递进,最终得到root根节点哈希。root哈希值如果发生变化,说明它下面的文件片里面数据被篡改或者掉包了,这种方式通过默克尔树的root哈希值来进行验证,它不仅仅适用于IPFS,像比特币也用到了这个技术。这是IPFS在数据结构的文件数据结构的共同特点。
网络发行机制
它是通过KD的机制,KD的算法是在02、03年由两个学生发明的,机制有点像二叉树,是把寻址的模式进行二叉树,进行二二分法,通过KD算法对哈希的逻辑距离进行比较,通过不断的二分法,找到这个文件与他最近的哈希。KD算法现在也是比较流行的,在分布式网络发现这个算法里面属于比较典型的算法,如果假设节点数是N就是通过以二为底的N次幂次数,就可以找到所需要的节点。
内容寻址
每一个上传到IPFS上面去的文件、文件夹,都是以Qm为开头字母的哈希值,无需知道文件存储在哪里,通过哈希值就能够找到这个文件,这种方式叫内容寻址。
网络底层
IPFS的结构和技术底层是基于点对点网络的,针对于非点对点网络情况下面,(像互联网这种有根节点的网络寻址)IPFS并不是太适用,是适合于网状的麦序网络架构下面文件的存储。
IPFS的六大误区
误区一,认知误区
认为IPFS是能够取代Http,严格来讲并不是误区,应该是未来的梦想,是IPFS团队当初做APP项目时希望能够达到的,目前来讲还比较难,要取代Http最大的坎是怎样让主流的浏览器支持IPFS协议,现在是通过Http网关的方式访问IPFS网上面存在的文件。
如果未来IPFS能取代Http的情况是怎么样的?
在网络浏览器里直接输入IPFS或IPFS://直接加一个哈希值就能够访问到这个文件。目前这种方式访问IPFS还需要插件,这个插件的使用不广泛,所以,目前是不会替代Http的,IPFS要代替Http就要开发自己的浏览器,或者说服主流浏览器开发他们的插件。
误区二,FCoin上线之前IPFS无法使用
我在2015年开始用IPFS的,很多节点都是IPFS官方自己建的,还有一些爱好者和技术人员贡献的服务器,或者贡献自己的电脑资源,为整个IPFS网络提供节点,IPFS目前是可以使用的。
误区三,IPFS是区块链
APFS是存储协议,Filecoin是区块链,区块链最大的作用是记账作用,Filecoin是为IPFS网络上供应存储以及检索能力的人,和需要存储和检索能力的人,让他们之间产生交易行为,交易行为通过区块链的方式来进行记账。Filecoin是区块链记账的功能,而IPFS从2015年开始到现在没有改变,就是存储。
误区四,IPFS能够让切片后的文件分节点保存
在很长时间里我也是这样认知,看了IPFS的源代码后,发现并不是这样,IPFS切片后会把整个切片全部完整地保存在一个节点上面,而不是把一部分的切片文件保存在A节点,然后把其他的文件散布到其它的节点上面去,像CDM一样的做法。用户访问数据的时候,获取切片数据则有可能来自于不同节点,只要该节点有文件的数据冗余。
误区五,IPFS能够让数据存储与检索价格更便宜
现在讲到IPFS都会讲到矿机,说IPFS能够让数据的存储以及检索的价格便宜,便宜后用上家庭的闲置的带宽,给整个网络贡献自己的检索能力和存储能力,家庭带宽成本比较低,能够让成本降低,但其实并不是这样,这里面涉及到价格的存储、文件的安全存储、需要多少备份的问题,备份越高成本就越高。
误区六,IPFS能够让数据永存
这是IPFS一直打的广告,数据是存在矿机上的,如果矿机它通过IPN把文件给删除了,那么文件也就没了,如果矿机因为某种物理原因关机了、停电了、永远再不开机了,文件也没有了。
为什么说IPFS能够让数据永存?IPFS的一个机制叫下载及分享或者叫下载及分发,有点像迅雷,下载完以后就变成一个保存这个文件的节点,就可以分发了。
主流分布式存储介绍
关于APFS的作用,从分布式存储技术开始
现在主流的分布式存储技术主要服务于云存储,云存储是基于分布式存储,有代表性的第一个是gfS,谷歌的分布式存储技术,分布式文件管理技术的另一个是pad,叫HDFS,这两种架构都是采取储存架构,一个主控服务器,很多数据服务器。不适合多用户同时写操作,这种架构本质上是一个中心化存储,当你需要数据请求的时候,它可以通过rest请求,然后主组控制服务器上获取文件,你所需要的文件在dadnote上面的一个位置,或者说一个ID,获得ID后到note上去获取所需要的文件,这种模式就是我们所说的中心化偏中性化的存储。
分布式存储的优点
第一,可扩展性强可以基于比较廉价的电脑或者说服务器来组建海量的存储系统。
第二,内部冗余机制可以复制,可以在不同的节点上生成备份,保证文件的可用性。
第三,是分布式存储很大的特点,一次写多次读,这种方式更适合于流数据的场景。比如视频,只要存储上去,几百几千几万次读的读取,这种模式非常适合分布式存储,也是分布式存储所能发挥优点的地方。
分布式存储的缺点
第一,仅仅适合于对延迟要求并不是很高的数据访问。
第二,不适合需要频繁修改的文件。比如,文件放上去以后还要进行修改,分布式存储并不能适用
第三,需要在主控服务器上面保存索引。索引取决于主控服务器的内存大小,如果内存太小,所能保存的索引文件就相对比较小,如果有很多海量的文件,而且文件都比较小,数量比较大,主控服务器承载不了,所以,不适合海量的小文件存储。
第四,不能够直接通过Http访问。绝大多数情况下是无法直接通过http访问的。更不能直接把网站架设到这些分布式存储的上面通过Http直接访问网站,在目前像GFSHDFS这些云存储的技术目前实现不了。
IPFS真正的价值和魅力
去中心化的存储机制,是为了解决分布式存储的缺陷而生。IPFS在很大程度上克服了这些缺陷。
第一,不需要主控服务器,完全是采用KD网络发现机制。
第二,文件大小(切片大小)无所谓。
用MFS可以切片到64兆的,IPFS的分片是小到256K,文件切得越小,网络的要求越高,但是IPFS完全可以支撑。
第三,可以直接通过Http访问网关,直接调用文件。
或者说直接访问哈希值所对应的网站,网站也好、目录也好、内容也好都可以通过Http或Https直接访问。
第四,可以处理高频修改的文件。
这个机制现在还没发现他实现了,但是在IPFS官方文档里提到一个get up的版本管理机制。这个管理机制一旦上来,也就意味着我们可以多人同时去修改同一个文件,这个文件进行改动以后,之前所有的版本记录都可以进行追溯,这样一来,完全改变了现有的分布式存储不能够同时修改文件这个缺陷。
第五,下载及分发。
保存的文件同时能够对其他人、其他节点进行分发,节点越多也就意味访问的性能越高,通过这种方式弥补分布式存储低,只能够适应低延迟场景的缺陷。
IPFS文件本身就很小,在部署的时候对硬件的要求更低,到IPFS —log官网可以看到有各种各样版本客户端,这些客户端可以很方便地部署各种各样的设备,尤其是端设备。
最近IPFS安卓手机版的客户端已经退推出,未来的端设备在5G网络情况下,会成为一个存储的节点,不光是存储,而且是分发节点。在这种情况下,哪个技术能够最快,最直接占领端设备市场,这个技术的有可能就会影响到未来的点对点网络基础设施
第六,可以独立的部署静态网站,不需要任何服务器的支持。
最近我在写基于IPFS— log分布式数据库的动态网站,希望能够通过,如果要架设一个静态网站,它有很多根服务器上的数据调研,他有可能是用X去调用的,假设没有任何的服务器,没有任何的后端php服务,仅仅依靠IPFS本身的数据库机制来完整动态网页,通过IPFS—log如果成功了我再跟大家再分享。
综上所述
IPFS代表了下一代的云存储技术,它的优势代表了下一代云存储可选的技术之一,因为现在的主流云存储缺陷都可以被IPFS所弥补。
分布式存储产业的四象限布局
从分布式存储产业布局来评估十字四象限
左右是供应存储的供应方和存储的需求方,还包括流量的供应和流量的需求。现在所习惯的坐标轴里面,为这个行业里很多从业者提供很多想象空间。
比如,有矿机资源就可以做流量的存储方;做网站视频应用的,就可以去载流量的需求方,可以做很多事情。如果为了加速,可以往往CDN上面去走,可以把IPFS做开发、做调整,然后改成CDN加速版本。如果针商业存储服务,就可以往稳定、安全上走,做文件,做
冗余备份。四个象限是为未来从事分布式存储行业或需要运用到分布式存储的朋友,可以往四个象限里看自己,需要在哪去耕耘,或需要往哪发展,四个象限基本上描绘了未来整个行业的布局。
IPFS技术未来发展壮大的四个关键点
我把这个需求拉动定在IPFS未来要发展壮大的最重要的环节上面。
在辩证三角形当中寻求合理的业务支撑点,变成三角形。
推动IPFS健康发展第一个关键点:需求拉动
把需求拉动定在IPFS未来要发展壮大的最重要的环节上面,因为有了需求拉动,供应进来才会体现价值,这是我义务做IPFS宣传工作的原因,我希望任何技术不能太从资本角度看待。
例如:海外有个项目,整个供应大概在4P,全球供应量在4P已经很小了。但是,使用量更可怕,前段时间只有2.6T,2.6T使用跟4P的使用,对于分布式存储行业来简直是笑话。
为什么?
因为没有需求拉动,把需求拉动起来以后供应才会进来,供应进来才会体现价值。
推动IPFS健康发展第二个关键点:辩证三角
在辩证三角形当中寻求合理的业务支撑点。
叫它辩证三角形,而不叫不可能三角,我的观点是,不可能三角形太多了,区块链playdisc类的,还有Cpt不可能三角,不可能三角会给这个行业里的人士造成了恐惧,换个名字叫辩证三角,也许,是行业里第一个提出这个观点的,所谓的辩证三角,是这三个关系怎样合理的取其二弃一,把主要矛盾回避掉,或者把近期不能解决的问题暂时回避掉。
在我国计算机还没有普及的时候,大家都是在网吧上网,在网吧上网时,用户列表和账号资料全部保存在本地,历史上已经发生过好多次这种事件,包括音、视频的分享工具,也是采取点对点的方式进行分享的,最后因为版权的原因被迫关闭。
在分布式存储行业里存在三个角,这三个角是非技术性的。
第一个角代表分布式程度。对于分布式存储行业分布越广、越分散性能越高,因为下载的人越多,节点越多性能和效率也就越高,而这一点恰恰是区块链所望尘莫及的,区块链的分布越广性能和效率越低。
第二个角,代表内容的合法性。把内容的合法性放在分布式存储这里,P2P技术并不是新的技术,P2P技术比互联网还老。互联网开始之前,所有的网络都是点对点技术,包括当初的“ICQC”也就是,QQ的前身所参照的也是,OSQYCQ是参照ICQ的。icq也是点对点的技术,点对点的存储,跟客户端和服务器架构最不一样的地方,是把数据放在服务器上面的。点对点是把所有的数据保存在本机上的。ICQ从美国引进来的时候是点对点的,马化腾在做QQ的时候,把OICQ和QQ改造成客户端和服务器的架构,他发现,按照点对点的这架构做的时候,很多好友列表只能够保存在本地,一方面数据是不安全的,二方面上面所有的内容,下次再换台电脑就全部没了。马化腾当初在做OICQ的时候把点对点的文件内容保存方式改成了客户机和服务器的方式,这种方式一直延续到现在。
浏览器和服务器体系很多是点对点,所有的数据都保存在本地,Mosaic浏览器出来以后,把文件的分享方式变成了cancer架构,把文件的分享方式变成了C/S架构,然后把所有的内容都保存在服务器上面,点对点和cs架构最大区别在于内容的可控性。点对点网络对于内容是不可控的,cs架构是由服务端负责对内容的把控。回到IPFS,分布式网络,分布式存储,BT这些技术它为什么很吸引人对吧?
技术上没毛病,但是一直推不下去,这里很重要的一点就在于内容的合法性,因为它是点对点的,内容分布在每个节点上,怎样确保内容的合法性?一旦内容上发现有问题,那么对不起,这个技术很有可能会遭到封杀。所以,在布式存储辩证三角里面,必须要把内容的合法性考虑进去。
第三个角,代表数据的安全。数据安全就是分布式存储如何让我相信,我的数据放在我不认识的电脑上?怎样解决这个问题?核心是通过加密的方式,现在好多区块链存储都在实践,在尝试采取这种方式来解决数据安全问题。
推动IPFS健康发展第三动如脱兔个关键点:5G网路
未来要推动IPFS健康发展的第三个因素,是5G网络、高速网络、5G网络在明年年初的明年年终的时候会逐步开始实行,从历史上来看,每一次网络的突破,网络网速的突破都是对整个互联网行业产生颠覆性影响的。
4G网络它开始干什么了?4G网络移动互联网产生了;3G网络改变了人们用手机上网的习惯,从web变成手机;4G的移动互联网大发展,5G网络未来会怎么样?我相信,肯定会有非常颠覆性的改变。未来的5G网络跟现在4G网络相比,速率、移动性、频率是颠覆性的上涨。
推动IPFS健康发展第四个关键点:C-IPFS与可信网络
P2P点对点网络其实是互联网的前身。因为需要普及推广、需要对内容的整合、提高用户的易用性的因素,把点对点网络改成了cs架构,客户端服务器的这种架构,大家都在说WEB3.0会重新回归到点对点网络,回归到点对点网络,需要解决几个问题,其中最重要的是信任问题。
要解决信任问题,要从五个方面去进行。
第一,解决可信账本问题。最近火爆的技术叫区块链技术,区块链技术是干嘛的?其实就是解决可信账本的问题,通过分布式记账解决点节点和节点之间,大家账本的统一性。
第二,存储。采取之前客户端的存储、云存储,解决不了信任问题,因为是中心化的,中心化的存储是可以人为改变数据的,中心化存储作为服务器提供商和管理方,可以很方便的改变存储的内容和文件,如果说是驱动性存储,或者分布式存储比较难改变,再结合区块链的技术,就可以把存储也用可信的笼子给造起来。
第三,可信身份。需要涉及到中心化的机构对于身份的认证,IPFS目前不会在这上面做太多的事情,现在有成熟的技术来解决。
第四,可信计算。最重要的安全多方计算,是为了计算节点和节点之间在互不信任的情况下,进行数据的互通以及计算。有很多区块链项目,发现这个问题,但目前解决不了,比如医疗项目。
针对IPFS目前所存在的问题,技术性、非技术性问题提出一些解决方案,针对像IPFS分布式存储、数据安全隐私保护这块,现在是有现成的方式方案去解决的。
比如现在很多区块链医疗,区块链医疗涉及到病人的隐私数据,如何在不同的医院之间进行跨医院的交流,其实是违法的,怎样在不违法的情况完成数据交互,好多区块链医疗项目都卡在这个点上,如果通过可信多方安全计算,其实是可以解决这个问题的,通过技术方式解决病患者的数据保护。
可信网络组成部分就是高速网络,区块链现在TPS过低,现在TPS计算和评估是在实验室环境下做的,实验室环境下并没有考虑网速问题,一旦脱离实验室,正式开始主网上线以后,网络的网速将会是非常重要的影响因素,区块链的TPS要去提高,在高速网络情况下自然而然就可以达到比较高的程度。
IPFS的两大急需改进技术
IPFS两大急需改进的技术,也是我们中国人所关心的。
NAT穿透:今年7月份董天一到德国柏林,参加一个开发者的会议,会议上团队的表示近期内不考虑NAT穿透问题。但这问题恰恰是我们中国用户最关心的问题,在使用过程当中经常会遇到,比如突然发现某天我的一个文件外网访问不了了,但有时候我的文件外网立马就可以访问,这什么原因?就是因为NAT穿透的问题,解决这个问题有现成框架的,二次框架,但是二次框架要用新版本去写可能需要一点时间,这是IPFS很严重的一个问题,尤其对于中国用户,也是影响矿机在中国市场推广使用很重要的因素。
解决方案
数据安全与隐私保护
数据安全与隐私保护IPFS目前不会管,管了以后会面临IPFS当初所提出的设想,需要让数据无国界、无障碍的流通。
基于点对点网络做数据安全隐私保护,必须要基于端到端的加密,因为cs架构是把密码和用户名保存在服务器上面的,假设服务器是可信的,而且是安全的,在这种情况下,把密码放在上面,这个密码也是经过处理的,那么,真正的安全是什么?是像区块链一样端加密的。
端加密的方式:
第一种方式最简单,把密钥进行处理,比如,密码是ABCD,就用ABCD给它加密,加密完以后,通过其他的渠道,把ABCD这个密码告诉我所需要分享的朋友,他下载这个文件后再用ABCD密钥去打开,这种方式的相对比较危险。
第二种是生成一个公、私钥加密,有两种做法,第一种用区块链的公私钥;第二种是生成一个公、私钥,比如,我要把文件分享给B,我先用B的公钥把这个文件进行加密,加密完了以后,把这个文件发给他,或者我上传到IPFS网络,对方把文件进行下载,下载后用他的私钥进行解密,这种方式的优点是方便简单,它的缺点是同一文件用不同的人去加密以后,会产生重复,重复了以后对于IPFS的网络会产生较高的负载。
第三种方式是采取对密钥进行加密,如果ABCD,我通过qq、电话的方式给对方。
另一种方式,结合公、私钥的方式:
用对方的公钥来对我的ABCD密钥进行加密,加密完以后,我把加密后的文件发给对方,对方用他的私钥去解开以后,他知道原来这是ABCD,对于IPFS网络只保存备份,就是源文件,通过ABCD的密钥进行加密的备份,这样可以完成趋同的问题。
解决应用的问题
应用问题跟技术关系不太大,是场景适用性的问题,先把IPFS未来的应用分成三个部分。
- 第一部分,是下载及分发的分布式CDM。可以充分的利用家庭的存储和带宽资源。
- 第二部分,是商业化的存储。要走商业化存储,家庭式宽带肯定是不适合的,需要更专业的团队、更专业的设备和更专业的网络提供存储。
- 第三部分,是未来端设备节点。端设备节点是能够提供在垂直领域的一个分布的存储。
区块存储利用区块链记账
比如像方一块,是用区块链在记账;除了区块链记账之外,还有像中心化的数据库记账;还有IPFS log用基于IPFS它本身的分布式数据库进行记账;用区块链记账的时候必须要防止木桶效应。
木桶效应
区块链技术受到的瓶颈就是TPS,如果正常的、被广泛使用的分布式存储的并发量,远远超过区块链现在能够支撑的TPS,意味着每笔数据的存取,如果都需要在链上进行记录,那么,整个区块链存储系统的性能取决于,区块链本身的TPS,而不是取决存储部分的高并发性或者高性能。这也是目前区块链存储行业所需要警惕的地方,要去采用的链必须要有足够的能力支撑存储。
IPFS+区块链开发框架
在四个象限里面,右边叫原生的代表应用,包括钱包、区块链浏览器,DAPP是直接从区块链获取数据,用到的API往往是跟链直接有关的API。
左边是应用类DAPP,包括游戏类,这种DAPP复杂程度要远远超过右边。是通过RGS库,比如VP3机,采用USGS,通过这些前端库跟IPFS进行交互,把数据存在IPFS上,IPV保存以后,会返回一个哈希值,再把哈希值在链上进行保存和处理。
这跟IPFS有关,剩下部分跟智能合约有关,通过智能合约跟区块链上的数据进行互动,所以左边叫应用型的带宽,开发架构必须要考虑两层,第一层是链上的数据,第二层是IPFS上的数据,链上数据有可能更多的是结构化数据,IPFS上面往往是保存一些非结构化数据,像图片、文档等。这种架构才是开发完整的代表他所需要的思路架构。
100年来网络结构的发展历史
100年来网络结构从中心化到去中心化,再到分布式,是去中心化的在先还是分布式在先谁都讲不清楚,因为两这两种网络形态其实是同时发展的,只是他们采取了走了两条不同的路,一条是应用型更强,但是是安全性有可能比较弱;另外一个求安全,但是易用性不太高。
3G时代更多的是abc的服务器托管;
4G时代进入了云计算和云存储以及移动互联网。
到了5G时代,我们究竟会怎么样?
个人认为,去中心化的云存储应该是5G时代,具有发展潜力的技术,这也是我个人看好IPFS的原因。
非常感谢大家!