【万向区块链蜂巢学院公开课】第二课:了解区块链,从搞懂这10个关键词开始
收藏

"

10月31日,万向区块链实验室联合新链空间主办的【万向区块链蜂巢学院公开课】正式开课,万向区块链实验室负责人杜宇在第一课上给大家介绍了区块链基础知识及行业发展。11月7日,新链空间负责人郝玉琨在第二课详细讲解了区块链最经常出现的10个关键词:区块链、分布式账本、块链式数据结构、共识、公私钥账户、智能合约、去中心化、哈希、跨链、分叉。


每周四晚上七点,蜂巢学院公开课都将在位于虹口区塘沽路463号的虹口科技金融大厦19层金融极客工场准时开课。面向零基础,收取零费用,行业一线大咖亲自授课,欢迎所有对区块链感兴趣的朋友参加。请大家持续关注本公众号,了解后续课程及报名方式。


"

以下内容根据现场速记整理,有部分不影响原意的删减:

   

郝玉琨在演讲


大家好!今天我们的题目是“了解区块链,从读懂这10个关键词开始”。作为我们蜂巢公开课的第二讲,今天用一个小时的时间,用大家熟悉的例子、通俗的语言,把区块链关键的概念讲一下;如果可以的话,我们在每个词上再做一些延伸,让这个科普更有深度一点,让在座各个层次的听众都能有所收获。


大家请先看这段文字,它摘自前两天非常火的文章:《中国区块链标准往事》,文章提到的人员均来自中国区块链技术和产业发展论坛,论坛成立于2016年10月18日,是工信部电子标准院联合万向区块链、微众银行、蚂蚁金服、平安等头部企业成立的区块链行业组织,它的主要职责是区块链应用推广和标准制定,包括区块链国家标准和ISO/TC 307等国际标准的制定工作。特别地,全国区块链和分布式记账技术标准化技术委员会筹建于2018年6月,之后国内大概有20-30家头部企业参与其中。


“区块链就是区块链,不是哲学,不是玄学,不是诡辩,不是禅,而是科学。”10月24日的政策春风吹来之后,大家可能会听到各种对于区块链的描述,有从哲学角度的,有从社会学角度的,不一而足,但是一切的一切,最终都是靠代码实现的,区块链是科学的,是前人在计算科学领域成果的集大成。我喜欢这句话的原因,在于它可以给我们区块链初学者定一个正确的理念和基调,希望我们大家可以用科学的态度、严谨的方法、务实的姿态,共同探索区块链与实际应用场景结合,让区块链这门新兴技术在实体产业中创造更大的价值。


区块链

“区块链是用密码技术将共识确认的区块按顺序追加形成的分布式账本。”这是基于国际标准ISO/DIS22739 英文定义,翻译出几个版本的中文,又经过几十家企业代表投票表决,最后确定出来定义。当时讨论组的负责人讲:“这30个字一个都不多,一个都不少”,这可以说是非常精炼地概括了区块链的核心要素:第一,区块链是一种分布式账本,但是分布式账本不只包含区块链;第二,区块链和密码技术有着非常紧密的关系,密码技术是区块链的“灵魂”;第三,区块链上所有数据是经共识确认过的,共识是区块链非常重要的概念;第四,区块顺序追加形成,其中的块链式结构造就了区块链特殊的形态。


这里我们提一段逸闻,聊一下区块链这几个字怎么来的。源起于 2018 年的这篇论文:《比特币:一种点对点电子现金系统》,但是在英文原版白皮书里并没有blockchain这个词,只出现了一次“chain of blocks”。我试图通过谷歌搜索,确认blockchain这个词第一次出现在哪里,但是并没有搜到确切的时间。考虑到英文中有“合成词”这样一种造词法:从chain of blocks到blockchain,这可能不是一个太难的过程。按照行业公认的一种说法,中文“区块链”这个词源于第一版(2011年)对比特币白皮书的翻译,作者是名为QQAgent(吴忌寒)的网友。以上,由我帮助大家梳理了“区块链”这个词的由来。


接下来,我们了解下区块链的几个技术特点:一是难以篡改,二是只能追加,三是高度依赖密码学,四是去中心化,五是开源。这里我们会重点讲一下开源。开源,是区块链必不可少的一个要素,我们讲“信任的机器”,如果不能把代码公开出来接受公众的审视,我们又如何相信它宣称的那一套“不可抵赖”与“可追溯”呢?对比传统的互联网应用,不管是社交、购物,还是打车、直播,数据的安全问题源于用户没法知道软件界面背后到底是什么:你完全看不到它的代码。即便作为普通网民,没有能力分析这个代码到底是什么、和它的声称的应用是不是相符,但是开源足够让事物都放在阳光下,总有人可以搞明白这些代码有没有捣鬼。开源的姿态是必须的。


分布式账本

分布式账本是:在分布式节点之间共享并使用共识机制同步的账本。区块链是一种分布式账本,但是分布式账本不全是区块链。


分布式账本不是由一个人、一个机构来单独维护的。它由众多参与方共同维护,每一方保存一套完整账本。分布式账本也有共识算法,所以共识算法这个东西并不是区块链独有,但是区块链用到的共识算法和分布式账本用的共识算法因为场景不同,有着明显的差异,这个太技术了,这里就不赘述。


如上图,左侧是分布式账本的示意图,右侧表征了区块链和分布式账本的关系,区块链是一种特殊的分布式账本,它维护了特殊的一个链式结构。


块链式数据结构

根据ISO/DIS22739的定义,块链式数据结构是“一段时间内发生的事务处理以区块为单位进行存储,并以密码学算法将区块按时间顺序连接成链条的一种数据结构”。


区块对应的单词是block,直译是块。但为什么多了一个“区”字呢?链上的数据按照“block”为单位打包,联想数据库里面分库分表的这类分“区”的概念,“区块”两字就不难理解了。


块链式结构就像兔子舞


关于块链式结构,大家可以看图上的这个结构图,这里可以举一个大家熟悉的例子:兔子舞。大家团建时候经常玩的一个游戏,一个人就一是个块,后面同学用手搭在前面同学的肩上,搭上的手就是你这个区块的哈希值,当所有的区块连成一起的时候,就构成了这样一个类似兔子舞的链条。不管链上每个区块内数据有多少、数据怎么来的,区块链的形态就是这样。大家把图上的这个兔子舞的图片映在脑子里,可以形象地理解这就是所谓的区块链。大家只要知道它长这个样子就够了。


共识

共识的定义它有点绕口,“分布式账本节点间就如下事项达成的协议:1)某笔交易已验证通过;2)就验证通过的交易而言,分布式账本包含一个具备一致性的集合和顺序记录。”,这个解释同样来自ISO/DIS 22739的翻译。共识是一个协议,一种就某种情形的一种约定,共识算法则是达成这种约定所需要采取的措施方法。对于区块链而言,所谓的共识是多数人认可,像是我们更熟悉的原则:“少数服从多数”。记住,共识不意味着所有人都认可,共识只意味着大多数人认可。


共识算法的种类


以上罗列了几种常见的共识算法:PoW,Proof of Work,是比特币使用的共识算法。网络上关于比特币挖矿费电的话题,背后其实就是这个PoW 共识算法。理论上,比特币网络所有在线全节点都可以参与PoW共识,形象地说,就是“一人一票”,公平性最好,但是效率就比较低下。


PoS,Proof of Stake,大家可以形象地理解为“股东大会”。谁的股权多,谁手里持有的资产多,在形成决议过程中,或者说形成共识过程中,就听谁的。


DPoS,Delegate Proof of Stake,D就是代理的意思,它相当于上面PoS的一个进化。我们开股东大会所有人都来,太费劲了,成本高,效率差,那我们干脆开董事会吧,我们先选出比如21个董事,由他们来代表大家做共识。这样大家讨论出一个共识就相对容易的多。DPoS让渡了一些公平,但是效率提升很明显。


前面三个是目前公有链常见的共识算法。


Paxos,很多经典的分布式数据库用的就是Paxos算法。它有一套很复杂的选举机制,简单讲就是选村长,选出村长来大家就听村长,但选村长过程中有一个博弈:先选出来的村长要快速地履行职责,不然可能后面会有新的村长被选出来,把前面的人替代掉。它是一个很复杂的选举+博弈的机制。


PBFT,采用了和Paxos类似的选举机制,并增加了拜占廷容错。PBFT一般是用在联盟链产品中,因为它节点比较少,效率会很好,在政府、大型企业这类大型应用场景中,使用的比较多。


关于共识算法,主要有前面介绍的这几种。随着行业的发展,PoW、PoS、DPoS这几个有了变种出来,但阳光之下无新事,要么将PoS的S改成别的要素,核心还是你占有越多,权利越大;要么是将DPoS董事会的选举机制做一些微创新,核心还是代理人代替大众做决策。原始的PoW、PoS、DPoS、PBFT这几种共识算法经过几年的实践验证,经受住了时间的考验,运行稳定,效果可预期,在实际使用中是不错的 候选项。


公私钥账户

公私钥账户,每个账户都是由一对钥匙定义,一个私钥一个公钥,账户以地址为索引,地址由公钥衍生而来。


公私钥账户目前较多地使用在公链产品中,但是很多的联盟链产品也可以经过配置后支持这样的功能。不管是比特币、以太坊,还是其他的产品,共性地会先生成一个私钥,基于生成出来的私钥,通过一个特定的计算机算法,生成一个公钥。出于对公钥信息的保护,以及用户体验的考虑,系统会经过如图的复杂机制生成一个地址。对照大家熟悉的银行帐户,可以这么理解:公钥就是账户,私钥对应着密码。但是差别在于,银行帐户是由银行来替代客户管理的,忘记密码丢了之后,客户可以拿身份证去银行找回,区块链公私钥账户体系完全由用户自己保管,丢就丢了,永远没法找回。所以权利和责任是对等的,大家享有对自己资产100%的所有权的同时,就要承担对自己账户保护的责任。


在区块链应用过程中,有个数据确权的概念触动大家兴奋点:在区块链时代每个人的数据可以完全属于他自己。比之当下,明明数据是自己产生的,但消费数据归淘宝,通话数据归运营商,出行数据要归滴滴。我同意这种说法。我们需要在互联网之上来构建一个全新的、有规矩的个人信息基础设施,让大家有新的权利和义务,从个人的角度我希望并相信它会实现。


智能合约

智能合约是存储在分布式账本中的计算机程序,其中该程序的任何执行结果都记录在分布式账本中。如果没有智能合约,我们可能还停留在比特币时代,也就是区块链1.0,无法支撑运行复杂应用。


区块链2.0,标志性的是有了智能合约,上面可以跑相对复杂的应用。举个以太坊的例子,我们说它上面的智能合约是做图灵完备的,忽略这个很学术的词,意思就是说,虽然语法简单,但是它理论上可以完成复杂计算机所能够完成所有事情。


介绍完智能合约的概念之后,这里做四点思考:第一,“智能”这两个字对应的英文原词是“Smart”,可以说译者赋予“Smart Contract”非常美好的期望,但是它不是万能的,在实际的应用过程中有自己的能力边界,我们需要调整预期,合理使用;第二,合约执行条件的触发很多时候依赖于外部输入,预言机(Oracle)是链外数据输入到链上的关键连接件,数据能否高效、可信地从外部输入到链上,目前来看还是有诸多挑战;第三,实际应用中链上智能合约条件触发形成响应时,需要传导到链外来完成响应,比如物联网设备、比如其他的 IT 系统,目前这块还不那么完善;第四,合约的升级一直是个难题,一方面是功能更新没法原地升级,一方面是小的错误没法原地更新修正,只能废掉旧的重来。智能合约作为区块链上执行应用的关键设施,还有较大的提升空间。


智能合约的行业应用


讲完概念,我们看一下列举的十个应用,这些应用当然是区块链与具体业务结合、与其他IT技术结合共同实现的,但核心部分是用智能合约编写的链上逻辑、进而完成区块链应用。


去中心化

去中心化,它在标准里面也没有专门的提,我找了一下维基百科和MBA百科的说明。维基百科讲的更笼统一些,MBA百科讲的更形象一些。去中心化是现象或结构,它只能出现在拥有众多用户或者众多节点的系统中,每个用户都可以连接并影响其他节点,每个人都是中心,扁平化、开源化、平等化的现象或结构称之为去中心化。


去中心化并不是区块链独有的,去中心化是一个很有历史感的词。像 Wikipedia、Flickr、Blogger、滴滴、微博这些例子,其实都是有去中心化的,比如,维基百科每个人都可以上去共享信息,Flickr 人人都可以上传图片,微博人人可以发表内容。去中心化定义的核心:每个人都可以参与,每个人都可以影响别人,这些不都算是去中心化的么?对于区块链而言,并无必要刻意强调原教旨的去中心化,关注广义的去中心化,关注区块链在于传统产业融合中发挥的价值,或许更有意义一些。


这里提醒大家一点,在国内去中心化是应用、是用户,不是运营主体。在国内,我们不管服务的是政府、企业,还是个人用户,大家都一定要严格遵守各部委各监管机构的要求。对于企业,特别关注最下面的这一条:网信办发布的《区块链信息服务管理规定》,企业需要履行为区块链信息服务备案的义务。


哈希

哈希,“通过将任意长度的消息输入变成固定长度的短消息输出来保障数据的完整性”。哈希,是英文单词 Hash 的音译,或许我们叫它摘要算法更合适。摘要是什么意思呢?不管你原来的数据有多大,最后经过算法算出来,它就是固定长度的。你选取算法的不同,它输出的固定长度不一样,我们讲块链结构,举跳兔子舞的例子,搭在肩膀上的手就是哈希。区块链可以说因为有哈希,保证他的不可篡改:每个区块内哪怕改了一个字节,哈希函数算出来的值就不一样了,进而导致与之前区块记录的块哈希不一致。


在摘要之下,哈希潜在的一个功能是“一一对应”。理论上无论什么信息都可以通过哈希,一对一的转化成一个固定长度的“码”,而且不冲突。比如,比特币使用的哈希函数,SHA-256,产生256位哈希,“2的256次”这个数字超过宇宙中原子的数量。不准确地说,通过 SHA-256 可以给宇宙的每个原子都做摘要、编“码”,且不会冲突。正是这个“不冲突”支持了区块链世界的安全性。


跨链

跨链是在2019年区块链行业最期待的技术突破。但是跨链是什么呢?狭义上是两个相对独立的区块链账本间进行资产互操作的过程,广义上是两个独立的账本间进行资产、数据的互操作的过程。互操作并不是个新的概念,在国内IT标准中早就有过定义,互操作是两个不同的系统,以及系统的两个不同的模块之间相互操作。


跨链例子示意图


举个不严谨的例子,如图所示,左侧是MacOS,右侧是windows,两个是不一样的系统、不同的运行机制,怎么让两个系统相互的操作呢?这发生在横跨两个不同系统间的操作,就可以理解为是跨链。


从业务上看,全国各地,各级政府、企业已经做了很多区块链的行业应用,但是不同系统之间是隔离的,囿于区块链的特性,链上信息并不互通,这给我们用户带来很多困扰。我们畅想一下,未来可能有打车链、电商链、医保链、税务链等,互联网业务有多少种,未来的链就可能有多少条,但是注意,从目前的技术看这些链是不通的。互联网好不容易做到的数据互通、信息共享,这个时候又被拎起来变成了一个一个数据烟囱,这就是跨链的要解决的问题。我们希望在技术上有这样一个链上原生跨链产品,不需要任何非技术的、额外的操作,在链上全帮用户解决掉上面的问题。这是技术上对于跨链的诉求和需求。


分叉

分叉,简单的讲就是区块链是一条链,某个时间点,一条链叉出两个头,一般是出块规则发生变化(区别于短暂的最长链选择)。它分为两种,软分叉和硬分叉,讲开了很复杂,简单讲就几个字,软分叉是向前兼容,小改进,硬分叉是不兼容,大升级。


比特币的 SegWit(隔离验证)就是软分叉的一个例子,它是对于比特币网络扩容的小改进的方案。以太坊升级到以太坊 2.0 则是一个典型的硬分叉的例子,它原有共识算法是PoW,未来它出于对于效率等的考虑,要改成PoS,共识算法发生变化,需要通过硬分叉来升级整个网络。对于普通爱好者来讲,分叉是什么?做一个不严谨的比方,分叉正面的功能就是帮助区块链系统做升级,像大家熟悉的升级windows一样。


活动现场图


总结

最后我带领大家共同回顾一下区块链的这十年历程,一切始于2008年10月31日比特币白皮书的发表。万向区块链实验室作为国内首家专注于区块链技术的非营利性前沿研究机构,一路走来,我们筚路蓝缕,砥砺前行,未来:我们将继续推进区块链核心技术难点的突破,攻坚克难,推动自主可控区块链的研发;我们将不断推进区块链与云计算、大数据、物联网、人工智能等多领域技术的融合运用,相辅相成,提升运用区块链技术解决实际问题的能力;我们将加大力度推进区块链在数字金融、物联网、智能制造、供应链管理等多个领域的应用实践,虚实结合,让区块链技术在服务实体产业的过程中体现出价值来。   


今天,我举了不少例子,打了很多比方来帮助大家理解区块链的基础概念,希望能给大家提供一点帮助,如果发现讲的不准,大家多多包涵。谢谢大家!


小编提醒:蜂巢学院公开课上线混沌大学啦,识别下方二维码,即可在线免费学习区块链知识。



推荐阅读:

【蜂巢学院公开课】杜宇:区块链基础知识及行业发展

万向区块链蜂巢学院公开课上线混沌大学,可以在线免费学习区块链知识啦!


End

※———长按识别下方二维码 关注我们———※


长按识别下方二维码,加入万向区块链
多个核心岗位在招,薪资福利优厚

    公众号
    关注公众号订阅更多技术干货!