15

作者:万云首席架构师兼产品总监李晨
原文链接:http://mp.weixin.qq.com/s/snl...
如需转载请联系万云官方微信:万云Wancloud

2018年开始,好像所有的人都在谈论区块链,资本、精英、草根不断进场投身到区块链的浪潮之中。在外围观望的你或许懂技术而对区块链一知半解,或许有场景与创意却碍于其研发门槛,或许是已身处于行业却难于前行。区块链是机遇也是挑战,如何在这风起云涌的区块链世界里获得加速卡实现弯道超车?没有区块链技术基础的你又怎样迅速部署属于自己的第一个应用?本文整理自2018年2月7日万云首席架构师兼产品总监李晨在infoQ社群的分享内容,详读此文,将为你打开通向未来世界的快速通道。

以下是分享正文,enjoy!

大家好!我是万向区块链万云平台的李晨Leo。感谢主办方的邀请,很高兴有这个机会跟infoQ社区的朋友们分享我和万云团队对区块链技术及应用的思考。

我今天的演讲将主要从以下两个方面进行:

第一,对区块链技术进行基本介绍,尤其是区块链的发展历史和核心技术。
第二,分享万云平台在区块链行业当中的探索。万云专注于将区块链技术应用于各个行业,促进区块链在业务中的真正落地。

Part 1 技术原理

1.我们先看当下的区块链。下面这张图所展现的是区块链在互联网上的热度,两个最大的互联网平台Google和百度均显示区块链的搜索指数呈数级增长,可以发现当下区块链的热度十分高。

clipboard.png

2.然后我们来看资本市场。二级市场相比一级市场更为严肃,更为传统也相对稳健,从公告和研报的数量来看,区块链在资本市场的表现也十分出色,公告有443篇,研报1000+。综合以上只能用一个字来形容当下的区块链——“热”,非常“热”。

clipboard.png

从以上两张图所呈现的数字也反映出两种情况:从搜索指数来看,普通大众对区块链关注度日益增高且势头不减,从相关二级市场的情况来看,专业机构对区块链也越来越青睐有加。

那么,区块链到底是什么?区块链有哪些技术特色?

区块链的诞生之路:在人类历史上经历了几次重大技术革命,第一次工业革命解放了基本生产力;第一台计算机的诞生开启了信息化的进程;而互联网时代的到来建立起数据在不同主体之间的瞬间连接和交换,对信息流通产生了根本性变革;2008年“中本聪”第一次提出了区块链的概念,开启了信息互联网到价值互联网的变迁,其根本意义在于将原来的数据交换变成价值互联,而价值互联也正是区块链所重构的商业逻辑的关键所在。

clipboard.png
从技术的角度定义区块链 :“区块链是以区块结构存储数据,多方参与、多方维护,通过密码学、P2P网络、共识算法等保证数据可靠的传输、存储、访问的技术体系”。

区块链有哪些特点?最主要的技术特点是三个:去中心化、不可篡改、可追溯。

clipboard.png
1.去中心化。在区块链的网络中分布着众多的节点,节点和节点之间地位平等,可以自由连接进行数据交换,不存在中心节点。所谓的去中心化和传统的分布式有稍微意义上的不同,传统分布式还是有中心的节点,最常见的就是所谓的负载均衡节点(Load Balance),只不过在中心节点后有很多其它节点,在数据结构上通常会形成“树”的形式,去中心化是“图”的结构,“图”的结构中每个节点是对等的。

2.不可篡改性。利用密码学的技术保证区块链上的数据不可被篡改,主要是两个点:①哈希;②非对称加密。

3.可追溯性。区块链的数据结构保证了从第一个区块(创世区块)开始所有的数据形成了一条链,在链上的任何记录都可以通过链的结构追溯到本源(也就是创世区块的信息)。

以上就是区块链最大的三个技术上的特点。要实现以上三个技术特点需要有三块重要的技术基石。

clipboard.png
1.第一块基石是P2P网络,P2P的网络去中心化,高性能,高可靠通讯的保证。

2.第二块基石是密码学,密码学保证数据无法被篡改而且是安全并可验证的。

3.第三块基石是共识算法,区块链网络各节点达成一致性的保障,也是现在评判区块链技术的核心指标之一。

接下来我分别讲讲这三块重要的技术内容。

1.P2P网络。在传统的网络是中心化的网络,大家可以看左边这张图所有的机器、通讯都要走过一个中心化的节点完成通讯,一旦这个节点出现了问题整个网络就瘫痪了。就像现在如果电信、移动、联通的基站出现问题周围的网络通讯将会受到影响。右边这张图所显示的是P2P网络,大家可以看到它并没有一个中心化的节点,所有的节点之间直接互联互通。同时也因为没有中心化的节点,其中任意一点出现问题依旧能够保证整个网络还能通讯,因为你可以连接到其它节点上。所以P2P网络是去中心化的,参与各方地位对等,从而保证网络的健壮性、扩展性、高性能。

clipboard.png
其实所有区块链的底层技术大多都在区块链概念提出之前就已经存在,只是区块链的出现将它们天才有效地结合在一起。比如P2P网络很早就出现了,我们常用的BT下载,它就是最早的P2P网络。

2.密码学。密码学在区块链当中用的非常多,因为时间关系这里不作展开说明。讲一下如何通过“Merkle Tree”保证区块链上的数据不可被篡改。大家可以看这张区块链数据结构图,上方每一个大长方形就是一个区块(block),该区块内所有的交易数据都被存储在这个区块上;最下方的第三个交易 Tx3,简单说每一个交易会生成一个哈希,Hash3就是第三笔交易Tx3的哈希值。Hash2下面没有画,是第二笔交易Tx2的值,Hash3和Hash2组合在一起就是Hash23,最后变成“Merkle Tree”的根节点“Merkle Root”。每一个区块都有Merkle Tree,区块上所有的交易都会被存储在Merkle Tree上。区块和区块之间也是相互链接的,每一个区块都知道上一个区块的Hash值。

clipboard.png
那为什么这样的区块结构能实现数据不可篡改呢?假设我要篡改 Tx3,那我们将要篡改Hash3的值,接下来改变了Hash3就要改变Hash23,以此类推一直要改变Merkle Root的Hash值。因为区块的HASH中包括了该区块Merkle Tree Root的HASH值,所以一旦你改变了区块的HASH,就必须要修改之后所有区块的哈希值。同时这样的修改还要被网络中超过共识算法要求的节点接受。这就造成了篡改数据树的成本极高,几乎是不可能的。比特币网络运行了那么久,在没有一个人去专门维护它的情况下,从来没有发生过任何篡改,也就是这个道理。

3.共识算法。共识算法是区块链比较核心的技术之一,保证区块一致性是其主要作用。常用的共识算法有:POW、POS、DPOS、PAXOS、PNFT。

clipboard.png

①POW共识算法。也就是常见的比特币网络的共识算法,它通过哈希算力作为工作量证明去竞争记账权。POW的几个缺点:性能比较低;消耗大量的资源,尤其是算力;出块比较慢,10分钟左右。但它也优点,抗容错性很好,只有超过51%的节点攻击网络,网络才会失败, 容错性50%。

②POS共识算法。相对POW,POS是用所谓的权益计算法。相对POW来说它有几大改进:不再消耗资源;提高性能,2分钟左右出块;同样容错性也是50%。

③DPOS共识算法。POS实现2分钟左右出块是比较大的提高,但距离业务的要求还有一定距离,所以在此基础上进行优化产生了DPOS,简单来说DPOS不要求每个节点记帐,而是有代理节点来记帐,这比较像现实生活当中的议会制度,大家选出代表帮忙记帐,这样参与记帐的节点会相对集中,性能也就会提高。所以在DPOS情况下基本可以做到秒级出块,容错性也是50%。

④PBFT共识算法。PBFT也就是所谓的拜占廷容错,它的性能非常非常快,可以达到秒级出块甚至比秒级还要快,但是它的容错性相对差一些,一般是33%左右。

⑤PXOS共识算法。PXOS假设的前提是没有恶意参与者,简单说就是节点不会发送错误的信息,但有可能漏发信息。在这种前提下容错性50%,性能也是很快的,基本上秒级出块。

以上就是目前常见的5种共识算法。我们也可以看到评判共识算法大概有3个标准:1.效率,达成共识确认的效率,简单就是出块的效率。2.资源消耗,可能消耗电力、存储或者其他资源;3.容错性,就是网络可以抵抗多大比例的节点出错。

接下来再给大家讲一下区块链的分代和分类,首先说下区块链分代。

clipboard.png

按照《区块链:新经济蓝图》一书中的概念,把比特币以及相关的数字货币划分为区块链1.0,以以太坊为代表的智能合约划分为区块链2.0,而在非货币和金融领域外,在其他领域里的区块链的应用划分为区块链3.0。区块链1.0是基础的区块链,实现了数字货币所需的所有特性。区块链2.0的核心概念是智能合约,简单说就是可编程的数字货币。虽然只是加了一个前缀,但却是巨大的进步。这意味着不仅仅价值本身,价值相关的商业规则也可以被数字化,是价值互联网的一个巨大进度。关于区块链3.0,我图上画了一个问号,因为我也不知道怎么算区块链3.0。目前看有几大技术可以算是区块链3.0的潜在标准,比如解决链上数据隐私和协作矛盾的零知识证明技术,或者解决连接各种不同链的跨链技术等。

clipboard.png

由于时间关系这里简单介绍一个跨链技术COSMOS。我们认为世界不可能是有一两个区块链所主导的,会有比较多的区块链,每一个链都完成它自己特有的功能,我们会将来生活在一个多链的世界里。通过跨链技术可以形成一个统一的生态系统,包括联盟链和私有链。跨链技术是实现价值互联网的关键,它连接起不同区块链的孤岛,也是区块链向外拓展的桥梁。

COSMOS是基于Tendermint共识引擎的前沿跨链技术。Tendermint共识引擎实现了跨链技术中的基本技术需求(高性能和一致性)。同时Tendermint将共识引擎和底下的P2P网络层打包在一起形成Tendermint Core,加上具有很好扩张性的COSMOS SDK(实现多代币账户体系,见证人机制和出块等功能),这些都为跨链功能打下了扎实的技术基础。 COSOMS跨链网络通过IBC(inter-blockchain communication)协议通信,而COSMOS HUB扮演枢纽角色,简单说就是链之间的路由。通过COSMOS网络不但可以进行价值跨链转移,扩展IBC协议中的PAYLOAD,还可以进行其他信息的跨链转移。

区块链分类目前有三种:①公有链、②联盟链、③私有链。

clipboard.png

所谓的公有链是任何人都可读取的、任何人都能发送交易且交易能获得有效确认的、任何人都能参与其中共识过程的区块链。 随着公链规模的扩大,目前一些主流公链的性能都有待提高。 联盟链主要针对有竞争又需要合作的场景,技术上联盟区块链是指其共识过程受到预选节点控制的区块链。只有获准进入联盟的节点才可以参与其中。私有链一般仅在一个公司或者组织内使用,我觉得私有链更像一个分布式账本。

Part 2 应用实践

第一部分我介绍了区块链的发展历史及基本的技术概念。接下来我结合自身以及万云团队一直以来所做的实践,来分享区块链怎么帮助各行各业?也就是怎样让区块链结合现实以实现应用落地?

区块链技术的两大核心特征:第一个是不可篡改性,第二个是可追溯性。在区块链解决行业的问题当中,我们万云团队也提炼了一些解决方案,基本上也是遵从这两个目的。

1.数据不可篡改性。基于这个特征行业中用的比较多的场景是信托。在市场加速释放的前提下,传统信托行业所存在的如文档安全性、时间有效性等信任问题日益凸显,而利用区块链不可篡改的特性能有效解决信托业务中所存在“互不信任”的市场痛点。如何实现?利用区块链技术可以将信托业务中的关键材料经过哈希加密处理,转换成不可逆推的特征值存储在区块链上,信托公司和用户如需进行数据验证,只要将已有的材料和信息经过哈希加密处理,再次与区块链上与其对应的信息进行对比,即可验证材料是否曾经被进行篡改。值得一提的是,2018年1月,万云团队帮助万向信托所开发的基于区块链的家族信托业务已上线使用,通过区块链技术,为万向信托可持续发展注入了新的生命力。

2.可追溯性。钻石一直以来被视为是爱情、权利、地位和富贵的象征,一方面因人类的情感赋予让钻石有了高昂的价值,另一方面也因其价格诱人让市场滋生了走私的风气,从而使得产品与价格混乱,国家税收损失和难于监管。而利用区块链的可溯源特性,以构造共享数据库的联盟链为基础,通过多中心的方式与海外钻石平台、钻石交易所等共享数据,以行业4C为标准定义每一颗钻石的身份标签和流转体系,促进钻石交易的正规化。通过可溯源让每一颗存储在区块链上的钻石信息都可查证,让市场上存在的黑手无孔可寻,从而让钻石市场真正回归“透明”。

当然除此之外,区块链技术还可为更多行业提供解决方案,如版权交易、数字存证、智慧医疗等。

接下来我们讲区块链应用开发的模式,因为我们的所开发的应用都是以万云平台为基础,因此我将先对万云平台作一个简单的分享。

万云有一个宗旨,所有的技术都是为业务来服务的,我们不是为了技术而技术,不为了区块链而区块链,而是切实想让区块链真正帮助到这个行业。所以万云在产品的架构、设计之初我们就考虑到这点。万云的服务流程从底层的技术到上层的业务:不仅能提供底层技术、也能帮助企业设计解决方案,越往底越靠技术端,越往上越靠业务端。任何的区块链的开发者都可以从中选择一个适合自己的纬度,在万云上开发一条链,或者开发区块链相关的应用程序。

clipboard.png

万云生态的底层,主要是底层链。我们有两部分,一部分是公链的节点,一部分是联盟链的节点,所有的这些节点都部署在万云高性能的基础设施上,在万云产品的模块中称之为“极速万云”。在所有的这些点的节点之上有跨链技术,我们会把所有的链整合在一起,联盟链和公链上面会有一层跨链技术,这样即做到了统一,又各具特色,这都万云生态中最底层的架构。在底层链上提供两套模块:1.万云API,直接提供万云上承载的链原始的API,你可以在上面部署一个智能合约,也可以直接查询区块链数据。2.万云的IDE。其特色是可以即直接在万云上使用,也可以在本地安装。

我认为更有价值的是在上层。上层不仅有业务API,也提供行业解决方案,根据不同的行业,万云梳理出业务API,设计合适的解决方案。业务API落地在区块链上,但是对外呈现的形式和业务本身比较契合。通过业务API,可以节省开发和运维成本从而更专注于业务创新。区块链底层技术相关的工作,以及实现高可用、高性能、强安全的技术保障,所有这些都可以由万云轻松帮你实现。

在万云生态的更上层,还提供解决方案的设计、应用发布市场及交流论坛。部署在万云平台的优质的区块链项目可以选择在万云市场上进行推广;而万云论坛致力为所有区块链技术爱好者提供一个可自由交流的平台。

下面我将以“万云抽奖”——一个完全部署在万云平台上的DApp为例,来介绍其诞生的流程,我将会重点从技术角度来还原。

万云抽奖是我们所做的基于公有链的应用,主要是为解决抽奖过程中的“公开”、“公正”问题,是万云团队开发的一款基于区块链的抽奖程序。通过将所有抽奖的信息记录在区块链上,保证数据不可被篡改以及可溯源来实现抽奖结果公开,这点大家都比较容易懂。而实现“公正”是抽奖的难点所在,我们通过基于区块链来生成随机数解决了这个问题,下面我将会重点详细说明。

传统算法生成的随机数实际上并不是完全不可预测的,在随机种子的基础上结合算法自动生成的的数实际上是可复制的,算不上真正的随机(伪随机数)。随机数的随机性问题是基础算法面临的问题。我们的思路是随机性的生成,不被任何个体所控制,通过这个来解决随机性问题。

随机数通过所有参与者共同产生。首先,在区块链中创建一个合约,它定义了参与规则。具体的生成一个随机数的基本过程可以分为三个阶段:

clipboard.png

第一阶段:收集有效的HASH(S),其中S就是随机种子。参与随机数生成的账号都在指定的时间段内向合约发送一定的代币作为质押,同时提供HASH(S),S是参与者选择的随机种子。

第二阶段:收集有效的S。在第一步完成之后,成功申请HASH(S)的人需要在第一阶段的指定时间内发送随机种子的S到合约。合约将运行HASH并将结果与之前提交的数据进行比较来检查S是否有效。有效S将被保存到种子集合中,用来生成随机数。

第三阶段:计算随机数,退还质押的代币和奖金。在所有随机种子被成功收集之后,合约通过这些种子生成随机数。同时将来自于消费随机数方提供的利润分配给参与方,并将质押的代币退回参与方。

以上,就从技术上实现了一个基本的区块链抽奖应用。同时利用了公有链的激励机制使得这个模式可以运行。

抽奖DApp从开发到落地只用了两周不到的时间,如此快的开发速度,离不开万云所搭建的“底层链 --> 开发工具 --> 解决方案 -->DApp应用”的一站式解决方案。当然这个应用也比较简单,下面是万云抽奖的一些截图。

clipboard.png

结语

作为本次活动的最后一张PPT,我放了一张这样的图。这是2016年两张关于区块链技术的研报。其中两句话在当时说的特别好:“区块链是互联网的诗和远方”、“理论照进现实”。当时大家都看好区块链,认为它是未来有可能会改变整个商业模式至关重要的技术。但当时区块链技术还不成熟,只是停留在想法层面,并没有找到切实落地的场景和方案。
clipboard.png

当时间的车轮驶向2018年以后,我们相信区块链将不再是诗和远方,理论最终也会照进现实,成为时代变迁的标志。而我们身处浪潮之中,所要做的是心无旁骛,努力让区块链实现落地,让所构想的未来图纸成为现实,不只是吟唱诗与远方,而是真正地走到远方。


Wancloud万云
91 声望21 粉丝