区块链关键技术点在应用实践中的解决方案

区块链关键技术点在应用实践中的解决方案

本文整理自4月22日掘金JTalk区块链专题线下活动,万云首席架构师李晨Leo的现场演讲速记。本次分享李晨Leo围绕区块链技术本身进行深度剖析,同时结合万云在区块链开发道路上的应用实践,希望给予开发者一个快速入门的技术指南。

李晨

万云首席架构师兼产品总监

具有多年区块链和云计算从业经验,5项相关的技术专利作者。区块链社区活跃分子,专注于区块链底层技术研究和架构演进。更早之前服务于通联数据,担任金融云平台负责人。

以下是演讲全文,Enjoy!


我觉得区块链是一个特别新的东西,即使从2009年比特币第一个区块的诞生,到现在已经有一段时间了,我依然觉得它还是一个非常新的东西。在我看来,区块链不管是在商业模式,还是在技术阶段,都仍处于非常早期的阶段。

我个人一直有着一个观点,即如果从价值观上对一个新兴事物的理解是不同的,做出来的东西一定是不一样的。下面先介绍一下我对区块链的理解。

一、
从技术角度看区块链

我是做技术出身,后来做了一段时间金融,做Fintech相关的东西,正因为我是做技术出身,所以对区块的理解上走过一段弯路。2013年左右第一次接触到区块链,一开始对比特币充满了不屑感。从技术角度来看,觉得它非常不成熟,认为它就是一个数据库。我觉得当时的自己认识还是很浅薄的。

后来我对它的认识有所不同,首先我们从技术角度去看比特币网络:

1.零故障。从2009年比特币创始到现在,没有出现任何故障,也就是说它的可用性是100%。我相信现在做得最好的产品,微信也好、支付宝也好,都没有办法做到百分之百的可用性。

2.零成本。比特币网络是如此庞大规模的网络,每天有大量交易和节点挖矿,却没有专职维护人员在维护。以支付宝和微信举例,腾讯或阿里后面有多少运维人员在维护它,每年付出维护方面的成本是多少,但比特币网络没有做这个事情。

3.零错误。比特币网络没有记错任何一笔账。

4.零风险。中本聪账户上大概100多万枚比特币,即使价格跌下来,也是非常大的一笔钱,我相信全世界的黑客一定在想方设法攻破比特币网络,但是到现在比特币网络上没有消失过一分钱。所谓的掉钱,我认为是一些币比较多的人,他们的设备里被植入了木马。从比特币网络上来说,从来没有掉过一分钱,没有被黑客攻破过一次。从这个角度来看,它比支付宝稳定性要好,比支付宝更安全,比支付宝成本更低。而且,连它的创始人中本聪,大家都不知道他究竟是一个人、一个组织,还是什么。

在这样一种模式下,能够创造出这样一套达到如此高规格的系统,这是颠覆性的。

区块链也是这样一个情景,比特币最早的白皮书就是点对点的现金系统,区块链要做的事情就是建立一个去中心化的信息系统,但是我认为区块链发展到现在,并不仅仅是点对点的现金系统。

比特币网络特别简单。

1.数据层。比特币网络最下面是一个数据层,数据层解决数据区块、链式结构、时间戳,其实就解决了两件事——即上面的数据不可以被篡改和数据可以被追踪。

2.网络层。比特币网络所有技术在比特币提出来之前很多年早就提出了,都非常成熟。为什么要有P2P网络,而不是其他网络?因为P2P网络是对等网络,它符合区块链里面去中心化的理念,不怕其中任何一个节点当机瘫痪。

3.共识层。共识这套逻辑可能是中本聪创造的,就是一些很难的题目让大家去解开,去争取记账权。

4.激励层。有一套发行机制,和一套分配机制。

共识、网络、数据全部是技术层面的东西,激励层是经济模型层面的东西。如果只是下面三层,我觉得比特币肯定玩不起来,因为没有激励,只是一个纯技术的东西,它的社群不可能像现在这么壮大。最根本的创新或最伟大的创新是在这上面有一层激励层。基于区块链的技术,通过代币形式,形成对自我循环的机器模型。

POW的算法会消耗大量的算力,随着挖矿节点越来越多,就会产生Block,这个账本生成速度也会越来越慢,所以POW是造成现在比特币网络性能越来越慢的罪魁祸首。其实区块链性能最大的一个问题是共识的算法。

如果说比特币是区块链1.0的话,以太坊就是区块链2.0。它从根本上改变了比特币只是一个电子现金的系统、只有一个代币的状况。到了以太坊,就不一样了,拥有智能合约,所写的这个合约在任何区块链网上都不会被篡改,这就是区块链2.0,有了智能合约,就可以做去中心化的应用。

比特币最大的创新是代币机制和激励机制,以太坊最大的创新是智能合约,智能合约是可编程的,让数字货币可编程。比特币是一个点对点的电子现金系统,其实就是支付系统,就是记账。有了智能合约以后,以太坊可编程,这个变化就厉害了,最根本的革新是把商业逻辑可以编程,可以把业务逻辑放到区块链上,业务逻辑透明、不可篡改。有了智能合约以后,它就是一个应用系统可以把各种各样商业逻辑放上去。

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. 分片。通过分而治之的方法去优化,也是很经典的做法了。

数据隐私

区块链现在很难解决链上隐私的问题,链上的数据大家都能看得到。比方说有一个人给你转了币,你想看看这个人多有钱,只要到网上一查,就看得到有多少,包括他持有多少代币,因为区块链足够安全,反正也偷不掉;但现实生活中有人通过银行给你转一笔账,肯定不知道他有多少存款。可能在某些场景下并不一定是我们想做的事情,所以现在区块链上所有的数据都是透明的,这个事情是不是符合实际需求,这很难说,至少在我们看到的很多企业级应用项目中,对数据隐私有比较大的诉求。

解决数据隐私问题,也是两条路。

一个是架构调整。只存证不存储,把你希望别人看不到你的数据,但让他相信你有这个数据,做成一个Hash,让这个Hash存在于这个链上。因为Hash不可逆,它可以证明你有这样一些数据。

另一个是黑科技,比如环签名和零知识证明。所谓的零知识证明,就是我不必向你展示我有一个东西,但是可以告诉你我有。打个比方,我要证明我有这个房间的钥匙,但我不必展示这边钥匙,只要告诉你这个房间里一共有几盏灯,其中哪几盏是亮的,就可以证明了。

跨链

跨链,就是链和链之间是打通的。从技术角度来看,跨链有三种实现——侧链、闪电网络和中继。

跨链种类有两种:第一种是价值跨链,就是代币跨链。比如,以太坊上可以存比特币,比特币上可以存以太币。第二种是服务跨链,比如某条链可以去调以太坊的智能合约。

三、
其它改变

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

1. 开源。区块链所有的东西都是开源的,这样就没有技术壁垒。我要做一个分叉太简单了,在早几年,有很多染色币,看看其中的代码,跟比特币代码完全一样,就是换了两个参数,甚至我看到一个染色币就把名字换了一下,再部署一下。所以开源会带来第一个问题就是没有任何技术壁垒,从好的角度来说,因为所有的东西都公开,所以技术迭代会非常新,有一些新的技术成果大家都随时可以看到。从坏的角度来说,像空气币、泡沫币会层出不穷,因为去复制一条链没有任何成本。苹果、微软公司所有的东西都是闭源的,要做一个iPhone、Office软件是很难的。所以开源带来研发的改变,就是没有任何技术壁垒。

2.迭代。区块链的迭代特别的快,这是因为开源,也是因为区块链的商业模式,让项目不的不快。无论技术,产品以及其他任何方面,都是透明公开的。所以只有不断加速迭代,才能保持领先。

3.社区。更多依赖社区的资源。比如拿测试来说,在传统软件开发中,原来发布一个产品的话,产品做好以后,内部要做好几轮测试,然后再推出来。区块链完全不一样,区块链是不断的发布,不断更新测试网络,社区通过测试网络去进行测试,并反馈结果,当然也会得到回报。好的项目,社区会争先恐后的去做测试,我认为这样的测试是最充分的测试,会比传统形态要充分、灵活和有效的多。这就是依靠社区资源的一个例子。

四、
目前的坑

我们遇到的坑

1.命名服务。区块链上的地址,大家用任何一种代币,你的钱包就是一个地址,这个东西不适合人类去阅读,也没办法记,我现在也背不出我钱包的地址是多少,因为太长了。所以这对真正想将这个系统落地、想将它企业化来说是特别大的一个坑。

2.准入机制。原来企业内部系统,不管是CRM起来ERP,都需要CA认证,但是区块链没有这样一个认证体系。

3.合约升级。因为每个智能合约都不能像过去的软件一样被卸载后重新部署,原来写了这样一个业务逻辑,过两个月不符合了,只能重新建一个智能合约,这样做太麻烦,合约里的数据又该如何处理。

五、
应用案例

联盟链优化数据交换平台

假设这样一个业务,数据交换平台,通过平台交换数据,大家都信任这个平台。原来你把这个数据给平台不放心,因为平台可以做恶。现在有了区块链,完全可以把什么时候用了数据,用了哪些数据,全部记在账本上,跑在合约里,参与方都相信算法和机器。还有一种更好的方法,引入和联盟链中其他人没有任何关系的第三方来记账,这样更加具有公信力。

最后送给大家几句话

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/101694.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号