区块链关键技术点在应用实践中的解决方案 - 李晨 | JTalk 第五期

编者按:本文系万云区块链的李晨讲师,在掘金技术社区主办的《给开发者的区块链技术指南 | JTalk 掘金线下活动第五期》 活动上的分享整理。掘金 JTalk 目前已举办5期,每期 JTalk 会邀请垂直行业的优秀工程师来分享优秀的实践经验,技巧方法。旨在为开发者提供线下技术交流互动机会,帮助开发者成长。前端

李晨,万向首席架构师兼产品总监,具备多年区块链和云计算从业经验, 5项相关的技术专利做者。区块链社区活跃分子,专一于区块链底层技术研究和架构演进。更早以前服务于通联数据,担任金融云平台负责人。本次分享将围绕区块链技术自己进行深度剖析,同时结合万云在区块链开发道路上的应用实践,但愿给予开发者一个快速入门的技术指南。如下是JTalk演讲实录:算法

我以为区块链是一个特别新的东西,即便从2009年比特币第一个区块诞生,到如今有一段时间了,我依然以为它仍是一个很是新的东西。在我看来,区块链无论是在商业模式,仍是在技术阶段,都仍处于很是早期的阶段。 我我的一直有着一个观点,即若是从价值观上对一个新兴事物的理解是不一样的,作出来的东西必定是不同的。先介绍一下我对区块链的理解。

从技术角度看区块链

我是作技术出身,后来作了一段时间金融,作Fintech相关的东西,正由于我是作技术出身,因此对区块的理解上走了一段弯路。2013年左右第一次接触到区块链,一开始对比特币充满了不屑感,从技术角度来看,以为它很是不成熟,认为它就是一个数据库,这是我走过的弯路,我以为(当时的)本身认识仍是很浅薄的。 后来我对它的认识有所不一样,首先从技术角度去看比特币网络:

  1. 零故障。从2009年比特币创始到如今,没有出现任何故障,也就是说它的可用性是100%,我相信如今作得最好的产品,微信也好、支付宝也好,都没有办法作到百分之百的可用性。
  2. 零成本。比特币网络如此庞大规模的网络,天天有大量交易和节点挖矿,却没有专职维护人员在维护。以支付宝和微信举例,腾讯或阿里后面有多少运维人员在维护它,每一年付出维护方面的成本是多少,但比特币网络没有作这个事情。
  3. 零错误。比特币网络没有记错任何一笔帐。
  4. 零风险。中本聪帐户上大概100多万枚比特币,即便价格跌下来,也是很是大的一笔钱,我相信全世界的黑客必定在千方百计攻破比特币网络,可是到如今比特币网络上没有消失过一分钱。所谓的掉钱,我认为是一些币比较多的人,他们的设备里被植入了木马。从比特币网络上来讲,历来没有掉过一分钱,没有被黑客攻破过一次。从这个角度来看,它比支付宝稳定性要好,比支付宝更安全,比支付宝成本更低。并且,连它的创始人中本聪,你们都不知道他到底是一我的、一个组织,仍是什么。 在这样一种模式下,可以创造出这样一套达到如此高规格的系统,这是颠覆性的。

区块链也是这样一个情景,比特币最先的白皮书就是点对点的现金系统,区块链要作的事情就是创建一个去中心化的信息系统,可是我认为区块链发展到如今,并不只仅是点对点的现金系统。 数据库

比特币网络特别简单。

  • 数据层。比特币网络最下面是一个数据层,数据层解决数据区块、链式结构、时间戳,其实就解决了两件事——即上面的数据不能够被篡改、数据能够被追踪。
  • 网络层。比特币网络全部技术在比特币提出来以前不少年早就提出了,都很是成熟。为何要有P2P网络,而不是其余网络?由于P2P网络是对等网络,它符合区块链里面去中心化的理念,不怕其中任何一个节点当机瘫痪。
  • 共识层。共识这套逻辑多是中本聪创造的,就是一些很难的题目让你们去解开,去争取记帐权。
  • 激励层。有一套发行机制,和一套分配机制。 共识、网络、数据所有是技术层面的东西,激励层是经济模型层面的东西。若是只是下面三层,我以为比特币确定玩不起来,由于没有激励,只是一个纯技术的东西,它的社群不可能像如今这么壮大。最根本的创新或最伟大的创新是在这上面有一层激励层。经过代币形式,造成对自我循环的机器模型,基于区块链的技术。
    POW的算法会消耗大量的算力,随着挖矿节点愈来愈多,就会产生Block,这个帐本生成速度也会愈来愈慢,因此POW是形成如今比特币网络性能愈来愈慢的罪魁祸首。其实区块链性能最大的一个问题是共识的算法。 若是说比特币是区块链1.0的话,以太坊就是区块链2.0。它从根本上改变了比特币只是一个电子现金的系统、只有一个代币的情况。到了以太坊,就不同了,拥有智能合约,所写的这个合约在任何区块链网上都不会被篡改,这就是区块链2.0,有了智能合约,就能够作去中心化的应用。从技术角度来看,我认为智能合约没有特别大的创新,由于基于智能合约下面一个虚拟机EVM。 比特币最大的创新是代币机制激励机制,以太坊最大的创新是智能合约,智能合约是可编程的,让数字货币可编程,比特币真的就像中本聪同样,是一个点对点的电子现金系统,其实就是支付系统,就是记帐。有了智能合约之后,以太坊可编程,这个变化就厉害了,最根本的革新是把商业逻辑能够编程,能够把业务逻辑放到区块链上,业务逻辑透明、不可篡改。有了智能合约之后,它就是一个应用系统能够把各类各样商业逻辑放上去。 2.0带来特别大的变革,最核心的东西就是将商业逻辑上链或让数字货币有可编程能力。我我的认为这就是所谓1.0和2.0之间核心的区别。 3.0是什么?我也不知道。目前看来,有几个方向可能会是3.0可以作的方向:
  1. 提高单条链的技术指标,其实无论是以太坊也好、比特币也好,1.0、2.0性能都比较慢,这是它的核心问题,知足不了如今真正使用化的需求。有一些隐私方面的东西,可以保护,让其余一些商用标准,好比用在金融系统里,必须符合加密标准,要符合一些认证的东西,这些都是目前全部区块链项目当中没有一个可以符合这个标准的。提升单链技术指标,多是区块链3.0的第一个方向。
  2. 跨链。如今每一个链都是独立的孤岛,有本身的项目、有本身的社区、有本身的代币,所谓的链和链之间不大相同,每一个链是独立的王国。最后必定须要有一种机制能把这套链打通,不可能只是用一种数字代替,跨链会是区块链3.0我我的看好的第二个方向。

关键技术点

共识性能

讲到核心技术,目前你们吐槽最多的是区块链性能很慢,转移须要几分钟,要收取很高的矿工费用。这彻底很难知足如今的要求。我我的观点是要提升性能核心是在共识上,目前看来共识有几种:

  1. POW,说白了就是拼算力,大概10分钟左右,它有两个个问题,第一比较慢;第二耗费算力,听说比特币如今挖矿耗电量很大。以太坊如今还处于POS和POW兼有阶段,POS是1%,POS是99%,POS是权益证实,谁拥有的币更多谁更有可能挖到矿,基于拥有这么多币就不会破坏这个网络,这个模式改善对资源的消耗。原来POS,只要每一个人有币,均可以去挖矿,不是说币少必定挖不到矿,也有可能挖到矿,只是挖到的几率会比较低一点。POS是网络中每一个节点记全部的帐。DPOS是网络当中部分节点记全部的帐。相似于现实世界中的形态,DPOS就是议会制,所谓选出来超级节点也好或其余名字也好,就是议员,你们投票选议员,由议员来记帐。
  2. 牺牲容错性。POS、POW都是50%的容错性,因此安全性很高。为了提升性能,拜占廷算法容错率降到30%,如今超过1/3的节点就能够破坏这样的账号,牺牲一个技术指标里提高另外一个技术指标,全部技术在某种意义上都是权衡的东西,不太可能作到每个都特别好。
  3. 牺牲安全性。假设这个网络被篡改过。网络的通信都是安全的。

从价值上来讲也是两条路:

  1. 并行。原来迅速地算,算完了第一个算第二个,如今就像食堂打饭同样,原来就一个窗口,只有一条队伍可排,如今多开几个窗口,好比开十个窗口,性能就高了。用牺牲计算性能去作一些其余的事情。可是并行有一个问题,并行特别难,不少算法,尤为区块链是时间序列的数据存储方式,要让它并行去作,当中会有不少矛盾,这条路并很差走。
  2. 分片。经过分而治之的方法去优化,也是很经典的作法了。
  3. 数据隐私

区块链如今很难解决链上隐私的问题,链上的数据你们都能看获得。比方说有一我的给你转了币,你想看看这我的多有钱,只要到网上一查,就看获得有多少,包括他持有多少代币,由于区块链足够安全,反正也偷不掉;但现实生活中有人经过银行给你转一笔帐,确定不知道他有多少存款。可能在某些场景下并不必定是咱们想作的事情,因此如今区块链上全部的数据都是透明的,这个事情是否是符合实际需求,这很难说,至少在咱们看到的不少企业级应用项目中,对数据隐私有比较大的诉求。 解决数据隐私问题,也是两条路。一个是 架构调整只存证不存储,把你但愿别人看不到你的数据,但让他相信你有这个数据,作成一个Hash,让这个Hash存在于这个链上。由于Hash不可逆,它能够证实你有这样一些数据。 另外一个是黑科技。好比 环签名零知识证实。所谓的零知识证实,就是我没必要向你展现我有一个东西,可是能够告诉你我有。打个比方,我要证实我有这个房间的钥匙,但我没必要展现这边钥匙,只要告诉你这个房间里一共有几盏灯,其中哪几盏是亮的,就能够证实了。

跨链

跨链,就是链和链之间是打通的。从技术角度来看,跨链有三种实现—— 侧链、闪电网络和中继。 跨链种类有两种:第一种是价值跨链,就是代币跨链。好比,以太坊上能够存比特币,比特币上能够存以太币。第二种是服务跨链,好比某条链能够去调以太坊的智能合约。

区块链带来研发过程的改变

  1. 开源:区块链全部的东西都是开源的,这样就没有技术壁垒。我要作一个分叉太简单了,在早几年,有不少染色币,看看其中的代码,跟比特币代码彻底同样,就是换了两个参数,甚至我看到一个染色币就把名字换了一下,再部署一下。因此开源会带来第一个问题就是没有任何技术壁垒,从好的角度来讲,由于全部的东西都公开,因此技术迭代会很是新,有一些新的技术成果你们都随时能够看到。从坏的角度来讲,像空气币、泡沫币会层出不穷,由于去复制一条链没有任何成本。苹果、微软公司全部的东西都是闭源的,要作一个iPhone、Office软件是很难的。因此开源带来研发的改变,就是没有任何技术壁垒。
  2. 迭代:区块链的迭代特别的快,这是由于开源,也是由于区块链的商业模式,让项目不的不快。不管技术,产品以及其余任何方面,都是透明公开的。因此只有不断加速迭代,才能保持领先。
  3. 社区:更多依赖社区的资源。好比拿测试来讲,在传统软件开发中,原来发布一个产品的话,产品作好之后,内部要作好几轮测试,而后再推出来。区块链彻底不同,区块链是不断的发布,不断更新测试网络,社区经过测试网络去进行测试,并反馈结果,固然也会获得回报。好的项目,社区会争先恐后的去作测试,我认为这样的测试是最充分的测试,会比传统形态要充分、灵活和有效的多。这就是依靠社区资源的一个例子。

咱们遇到的坑

  • 命名服务。区块链上的地址,你们用任何一种代币,你的钱包就是一个地址,这个东西不适合人类去阅读,也没办法记,我如今也背不出我钱包的地址是多少,由于太长了。因此这对真正想将这个系统落地、想将它企业化来讲是特别大的一个坑。
  • 准入机制。原来企业内部系统,无论是CRM起来ERP,都须要CA认证,可是区块链没有这样一个认证体系。
  • 合约升级。由于每一个智能合约都不能像过去的软件同样被卸载后从新部署,原来写了这样一个业务逻辑,过两个月不符合了,只能从新建一个智能合约,这样作太麻烦,合约里的数据又该如何处理。

应用案例

**联盟链优化数据交换平台 编程

假设这样一个业务,数据交换平台,经过平台交换数据,你们都信任这个平台。原来你把这个数据给平台不放心,由于平台能够作恶。如今有了区块链,彻底能够把何时用了数据,用了哪些数据,所有记在帐本上,跑在合约里,参与方都相信算法和机器。还有一种更好的方法,引入和联盟链中其余人没有任何关系的第三方来记帐,这样更加具备公信力。

关于万云

最后送给你们的几句话

五年前跟如今区块链同样,你们都在讨论云计算,当时很大的问题是云计算一直飘在云上,何时落地,五年后的今天云计算已经落地了。两年前,你们都在讨论大数据,我理解两年前的大数据其实应该叫数据大,有大量的数据,但没有挖掘数据的价值,2018年来看,大数据行业已经显现出其价值。区块链和云计算、大数据特别像,现在你们都在讨论区块链,特别热特别火,但彷佛落地的还很少,我相信一段时间之后区块链必定真正的落地,帮助到各行各业。后端


以上是《给开发者的区块链技术指南 | JTalk 掘金线下活动第五期》 讲师李晨的分享,若是你对掘金的 JTalk 线下活动感兴趣,能够关注掘金活动页面的 JTalk 活动报名。掘金 JTalk 目前已举办5期,每个月一期的 JTalk 会邀请垂直行业的优秀工程师来分享优秀的实践经验,技巧方法。旨在为开发者提供线下技术交流互动机会,帮助开发者成长。安全

JTalk 预告

JTalk 第六期即将在杭州举办。微信

  • 主题:从前端到“后端”
  • 时间:5.20
相关文章
相关标签/搜索