编者按:本文系万云区块链的李晨讲师,在掘金技术社区主办的《给开发者的区块链技术指南 | JTalk 掘金线下活动第五期》 活动上的分享整理。掘金 JTalk 目前已举办5期,每期 JTalk 会邀请垂直行业的优秀工程师来分享优秀的实践经验,技巧方法。旨在为开发者提供线下技术交流互动机会,帮助开发者成长。
李晨,万向首席架构师兼产品总监,具有多年区块链和云计算从业经验, 5项相关的技术专利作者。区块链社区活跃分子,专注于区块链底层技术研究和架构演进。更早之前服务于通联数据,担任金融云平台负责人。本次分享将围绕区块链技术本身进行深度剖析,同时结合万云在区块链开发道路上的应用实践,希望给予开发者一个快速入门的技术指南。以下是JTalk演讲实录:
从技术角度看区块链
- 零故障。从2009年比特币创始到现在,没有出现任何故障,也就是说它的可用性是100%,我相信现在做得最好的产品,微信也好、支付宝也好,都没有办法做到百分之百的可用性。
- 零成本。比特币网络如此庞大规模的网络,每天有大量交易和节点挖矿,却没有专职维护人员在维护。以支付宝和微信举例,腾讯或阿里后面有多少运维人员在维护它,每年付出维护方面的成本是多少,但比特币网络没有做这个事情。
- 零错误。比特币网络没有记错任何一笔账。
- 零风险。中本聪账户上大概100多万枚比特币,即使价格跌下来,也是非常大的一笔钱,我相信全世界的黑客一定在想方设法攻破比特币网络,但是到现在比特币网络上没有消失过一分钱。所谓的掉钱,我认为是一些币比较多的人,他们的设备里被植入了木马。从比特币网络上来说,从来没有掉过一分钱,没有被黑客攻破过一次。从这个角度来看,它比支付宝稳定性要好,比支付宝更安全,比支付宝成本更低。而且,连它的创始人中本聪,大家都不知道他究竟是一个人、一个组织,还是什么。 在这样一种模式下,能够创造出这样一套达到如此高规格的系统,这是颠覆性的。
区块链也是这样一个情景,比特币最早的白皮书就是点对点的现金系统,区块链要做的事情就是建立一个去中心化的信息系统,但是我认为区块链发展到现在,并不仅仅是点对点的现金系统。
- 数据层。比特币网络最下面是一个数据层,数据层解决数据区块、链式结构、时间戳,其实就解决了两件事——即上面的数据不可以被篡改、数据可以被追踪。
- 网络层。比特币网络所有技术在比特币提出来之前很多年早就提出了,都非常成熟。为什么要有P2P网络,而不是其他网络?因为P2P网络是对等网络,它符合区块链里面去中心化的理念,不怕其中任何一个节点当机瘫痪。
- 共识层。共识这套逻辑可能是中本聪创造的,就是一些很难的题目让大家去解开,去争取记账权。
- 激励层。有一套发行机制,和一套分配机制。
共识、网络、数据全部是技术层面的东西,激励层是经济模型层面的东西。如果只是下面三层,我觉得比特币肯定玩不起来,因为没有激励,只是一个纯技术的东西,它的社群不可能像现在这么壮大。最根本的创新或最伟大的创新是在这上面有一层激励层。通过代币形式,形成对自我循环的机器模型,基于区块链的技术。
POW的算法会消耗大量的算力,随着挖矿节点越来越多,就会产生Block,这个账本生成速度也会越来越慢,所以POW是造成现在比特币网络性能越来越慢的罪魁祸首。其实区块链性能最大的一个问题是共识的算法。 如果说比特币是区块链1.0的话,以太坊就是区块链2.0。它从根本上改变了比特币只是一个电子现金的系统、只有一个代币的状况。到了以太坊,就不一样了,拥有智能合约,所写的这个合约在任何区块链网上都不会被篡改,这就是区块链2.0,有了智能合约,就可以做去中心化的应用。从技术角度来看,我认为智能合约没有特别大的创新,因为基于智能合约下面一个虚拟机EVM。 比特币最大的创新是代币机制和激励机制,以太坊最大的创新是智能合约,智能合约是可编程的,让数字货币可编程,比特币真的就像中本聪一样,是一个点对点的电子现金系统,其实就是支付系统,就是记账。有了智能合约以后,以太坊可编程,这个变化就厉害了,最根本的革新是把商业逻辑可以编程,可以把业务逻辑放到区块链上,业务逻辑透明、不可篡改。有了智能合约以后,它就是一个应用系统可以把各种各样商业逻辑放上去。 2.0带来特别大的变革,最核心的东西就是将商业逻辑上链或让数字货币有可编程能力。我个人认为这就是所谓1.0和2.0之间核心的区别。 3.0是什么?我也不知道。目前看来,有几个方向可能会是3.0能够做的方向:
- 提升单条链的技术指标,其实不管是以太坊也好、比特币也好,1.0、2.0性能都比较慢,这是它的核心问题,满足不了现在真正使用化的需求。有一些隐私方面的东西,能够保护,让其他一些商用标准,比如用在金融系统里,必须符合加密标准,要符合一些认证的东西,这些都是目前所有区块链项目当中没有一个能够符合这个标准的。提高单链技术指标,可能是区块链3.0的第一个方向。
- 跨链。现在每个链都是独立的孤岛,有自己的项目、有自己的社区、有自己的代币,所谓的链和链之间不大相同,每个链是独立的王国。最后一定需要有一种机制能把这套链打通,不可能只是用一种数字代替,跨链会是区块链3.0我个人看好的第二个方向。
关键技术点
共识性能
- POW,说白了就是拼算力,大概10分钟左右,它有两个个问题,第一比较慢;第二耗费算力,据说比特币现在挖矿耗电量很大。以太坊现在还处于POS和POW兼有阶段,POS是1%,POS是99%,POS是权益证明,谁拥有的币更多谁更有可能挖到矿,基于拥有这么多币就不会破坏这个网络,这个模式改善对资源的消耗。原来POS,只要每个人有币,都可以去挖矿,不是说币少一定挖不到矿,也有可能挖到矿,只是挖到的概率会比较低一点。POS是网络中每个节点记所有的账。DPOS是网络当中部分节点记所有的账。类似于现实世界中的形态,DPOS就是议会制,所谓选出来超级节点也好或其他名字也好,就是议员,大家投票选议员,由议员来记账。
- 牺牲容错性。POS、POW都是50%的容错性,所以安全性很高。为了提高性能,拜占廷算法容错率降到30%,现在超过1/3的节点就可以破坏这样的帐号,牺牲一个技术指标里提升另一个技术指标,所有技术在某种意义上都是权衡的东西,不太可能做到每一个都特别好。
- 牺牲安全性。假设这个网络被篡改过。网络的通讯都是安全的。
- 并行。原来迅速地算,算完了第一个算第二个,现在就像食堂打饭一样,原来就一个窗口,只有一条队伍可排,现在多开几个窗口,比如开十个窗口,性能就高了。用牺牲计算性能去做一些其他的事情。但是并行有一个问题,并行特别难,很多算法,尤其区块链是时间序列的数据存储方式,要让它并行去做,当中会有很多矛盾,这条路并不好走。
- 分片。通过分而治之的方法去优化,也是很经典的做法了。
- 数据隐私
跨链
区块链带来研发过程的改变
- 开源:区块链所有的东西都是开源的,这样就没有技术壁垒。我要做一个分叉太简单了,在早几年,有很多染色币,看看其中的代码,跟比特币代码完全一样,就是换了两个参数,甚至我看到一个染色币就把名字换了一下,再部署一下。所以开源会带来第一个问题就是没有任何技术壁垒,从好的角度来说,因为所有的东西都公开,所以技术迭代会非常新,有一些新的技术成果大家都随时可以看到。从坏的角度来说,像空气币、泡沫币会层出不穷,因为去复制一条链没有任何成本。苹果、微软公司所有的东西都是闭源的,要做一个iPhone、Office软件是很难的。所以开源带来研发的改变,就是没有任何技术壁垒。
- 迭代:区块链的迭代特别的快,这是因为开源,也是因为区块链的商业模式,让项目不的不快。无论技术,产品以及其他任何方面,都是透明公开的。所以只有不断加速迭代,才能保持领先。
- 社区:更多依赖社区的资源。比如拿测试来说,在传统软件开发中,原来发布一个产品的话,产品做好以后,内部要做好几轮测试,然后再推出来。区块链完全不一样,区块链是不断的发布,不断更新测试网络,社区通过测试网络去进行测试,并反馈结果,当然也会得到回报。好的项目,社区会争先恐后的去做测试,我认为这样的测试是最充分的测试,会比传统形态要充分、灵活和有效的多。这就是依靠社区资源的一个例子。
我们遇到的坑
- 命名服务。区块链上的地址,大家用任何一种代币,你的钱包就是一个地址,这个东西不适合人类去阅读,也没办法记,我现在也背不出我钱包的地址是多少,因为太长了。所以这对真正想将这个系统落地、想将它企业化来说是特别大的一个坑。
- 准入机制。原来企业内部系统,不管是CRM起来ERP,都需要CA认证,但是区块链没有这样一个认证体系。
- 合约升级。因为每个智能合约都不能像过去的软件一样被卸载后重新部署,原来写了这样一个业务逻辑,过两个月不符合了,只能重新建一个智能合约,这样做太麻烦,合约里的数据又该如何处理。
应用案例
**联盟链优化数据交换平台
关于万云
最后送给大家的几句话
五年前跟现在区块链一样,大家都在讨论云计算,当时很大的问题是云计算一直飘在云上,什么时候落地,五年后的今天云计算已经落地了。两年前,大家都在讨论大数据,我理解两年前的大数据其实应该叫数据大,有大量的数据,但没有挖掘数据的价值,2018年来看,大数据行业已经显现出其价值。区块链和云计算、大数据特别像,如今大家都在讨论区块链,特别热特别火,但似乎落地的还不多,我相信一段时间以后区块链一定真正的落地,帮助到各行各业。
以上是《给开发者的区块链技术指南 | JTalk 掘金线下活动第五期》 讲师李晨的分享,如果你对掘金的 JTalk 线下活动感兴趣,可以关注掘金活动页面的 JTalk 活动报名。掘金 JTalk 目前已举办5期,每月一期的 JTalk 会邀请垂直行业的优秀工程师来分享优秀的实践经验,技巧方法。旨在为开发者提供线下技术交流互动机会,帮助开发者成长。
JTalk 预告
JTalk 第六期即将在杭州举办。
- 主题:从前端到“后端”
- 时间:5.20