【问链-区块链基础知识系列】 第十课 首席架构师谈区块链技术演进

一、区块链和比特币,都有“币-链-网”三层含义

1、第一层含义是“币”。这个“币”并不是刚才王行长所说的真正意义上的“货币”,而是一种与区块链密切相关的通证(Blockchain Token)。其本质,是记录在区块链账本结构中的某个“元信息”。例如,比特币区块链的账本中的记录的主要元数据结构就是“交易”,那么它所交易的是什么东西呢?实际上就是一个记账符号。一个单位的记账符号,就对应一个比特币(bitcoin)。所有的公有区块链,都不可避免的引入了某种经济激励机制,也就是说,都内置有与区块链密切相关的Token。例如,比特币区块链有比特币,以太坊区块链有以太币,Ripple区块链有瑞波币等等。

2、第二层含义是“链”。这个链,一方面是指特殊的“块链式”的数据结构;另一方面,是指围绕这个数据结构的应用软件系统,我称之为区块链节点(Blockchain Node)。

3、第三层含义是“网”。是由多个区块链节点而构成的网络(Node Network),这是一个软件定义的网络。

二、区块链的概念

首先,从包含关系上看,区块链也可以无“币”。在比特币诞生后的很长一段时间,链和“币”是密不可分的。在2016年3月,英国政府首席科学顾问发表了一份研究报告《分布式账本技术:超越区块链》,定义了一个新术语——分布式总账技术(DLT),而区块链只是实现分布式总账的技术之一。也就是说DLT是去“币”化的,但并没有说明区块链是否需要去“币”化。再后来,R3和SWIFT也分别发表了相关研究报告,进一步将区块链与密码学货币(Crypto-currency)区分开来。一般来说,公有区块链系统,如比特币、以太坊等,通常都有自带有原生“币”。虽然早些时候,人们称之为“密码学货币”,但其实际上只是一种记账符号,也就是通证(Token)。而对于私有链和与联盟链而言,则可以没有“币”。

【问链-区块链基础知识系列】 第十课 首席架构师谈区块链技术演进_第1张图片
图1:区块链的概念体系

其次,从层次关系来讲,区块链就类似于一个操作系统,而比特币或者是各种各样区块链应用,则类似于运行在操作系统之上的一个软件应用。

最后,从先后关系来看,两者是有某种先后顺序的。不过,这里有两个不同的结论。一个结论是从词语的产生来看,比特币(Bitcoin)这个词是2008年随着中本聪的论文《Bitcoin: A Peer-to-Peer Electronic Cash System》而产生的,而区块链(Blockchain)则是到2015年才出现,所以,是“先有币后有链”。而另一个想反的结论则是从前面“比特币是区块链第一个应用”这个观点推导而出,是“先有区块链,后有比特币”。至于到底谁先谁后,其实就和“鸡蛋先后问题”一样,不用太过纠结。

三、区块链到底是什么?

对于“区块链”,其实还没有业界公认的、严格的定义。套用区块链的行话来说,就是还没达成共识。我曾经直接或间接参与多项区块链标准的制定,每个标准都重新对区块链做出了自己的定义,而且每一个定义都还不一样。

这里,我不做严格的定义,而是通过几个简单的类比,来解释什么是区块链。

【问链-区块链基础知识系列】 第十课 首席架构师谈区块链技术演进_第2张图片

图2:区块链的概念类比

第一个类比,是根据中本聪的白皮书来理解区块链的,把它视为一种分散化、去信任、集体维护的“可靠数据库”。更具体一点,是一种分布式、多副本、防篡改的数据库。但这个定义,会让人有一种错觉,好像我们可以简单地用区块链产品去替代已经被广泛使用的传统数据库。但是,如果这么做了之后,会发现它一点也不好用,性能也不行,吞吐率很低,延迟也很大,很难支持同步性的业务,远远比不上原有的数据库系统。

第二个类比,大家根据2015年美国《经济学人》杂志的封面文章来理解区块链,认为其是一种“信任的机器”,可以让信任得以传递,并源源不断地产生新的信任关系。

第三个类比,是以太坊创始人Vitalik Buterin提出的“世界计算机”的概念,他认为,以太坊就是一个人人能用、永不停止的世界级计算机,任何人都能够以无服务器(Serverless)模式执行计算,也就是说,只需编写分布式应用(DApp)并提交给以太坊区块链网络,由以太坊网络去执行相应的计算逻辑。这个愿景确实很宏伟,但是现实很骨感。但是最近一、两年,以太坊团队已经不再提这个“世界计算机”概念了,因为其架构,还远远不能承载这个愿景。几个月前一个叫“CryptoKitties”的小游戏,就导致了以太坊网络的严重拥堵。

第四个类比,“印刷机的逆向机”,这是长铗(本名:刘志鹏)提出来的,他是巴比特创始人,同时还是一名科幻作家。他认为,我们面对的有两个世界,一个是物理世界,一个是数字世界。在物理世界中,每一片树叶都是不一样的,每个物品也都是不一样的,都是竞争性资源,也就是当某人拥有某个物品时,其他人就无法再拥有该物品了。而在数字世界中,一切内容皆可复制,每个复制品都是一模一样的,每个bit都绝对一致。但是有两件产品或技术,打破了这个规律。一个是印刷机以及3D打印机,能够将物理世界的竞争性资源,变成非竞争资源。例如通过纸质复印或3D打印,复制出大量相同内容的纸张或者物品。而区块链则正好相反,能够把数字世界中的非竞争资源,变成竞争性资源。例如,某人持有了某个比特币,那么其他人就无法再拥有了。

【问链-区块链基础知识系列】 第十课 首席架构师谈区块链技术演进_第3张图片
图3:区块链,好似印刷机的逆向机

第五个类比,是“价值互联网”,能够让价值资产在互联网上进行大范围地流动,它与现有的“信息互联网”相对应。但我觉得这个类比有点夸大,我更倾向于将其类比为一种“新型协作网络”,能够让很多很多的人或组织、实现大范围的平等协作,并形成某种分散的自治性组织(DAO)。

区块链是跨学科的,和好几个学科都有着极大的交叉,容易带来跨学科理解上的误区,尤其对于初学者,很容易导致盲人摸象、管中窥豹的状况。因此,我们不能从单一的角度去看这个东西,而需要从多个角度、综合地去思考。

四、区块链核心特性是高度防篡改

刚开始,认为区块链有很多特性,如去中心化、去信任、可靠、匿名、开源、智能合约、P2P网络等等,但是后来仔细思考,发现这都不是区块链的核心部分。区块链的核心特性只有一条,那就是“高度防篡改”。在2017年4月的腾讯区块链方案白皮书中,开篇提出“打造数字经济时代信用基石”,其本质也是利用了区块链的这个核心特性。

一般来说,基于传统PKI体系的数字签名技术,就可实现防篡改。而区块链技术,在此技术上,有增加了2个维度来提高其防篡改能力。一个是时间维度。因为时间是唯一没法造假,区块链通过一个一个区块不断地叠加时间戳,修改每个区块,需要同时篡改其后的所有区块内容,这样随着时间持续,篡改的难度也会指数级增长。另一个维度,是集体维护。也就是多个参与方,基于某种预先设定好的共识机制,集体维护区块链账本的不可篡改性,并能够有效防范少数参与方的作恶。

既然区块链核心特性是高度防篡改,那么要把区块链用好,就得围绕核心特性来。那么,接下来的问题是,我们需要防篡改的是什么内容?

目前,我们看到的区块链应用五花八门,非常繁多。其实如果总结起来,大体上可以分为三类。而这三大类应用,就可覆盖绝大多数的区块链应用场景。

第一类,是数据记录类。将一些信息写入区块链,使其难以被篡改。1)可以写入数据的哈希指纹,这样可以提供存证证明(Proof of Existence),证明某个数据在某个时间点附近存在过。例如,电子合同验真环节,怎么证明这个电子合同是原始签订的电子合同呢,而不是后来某个时间重新签发的?以前是采用时间戳加数字签名技术来实现的,现在就可以借助区块链技术来实现。时间戳证明的只是孤立的时间点,而区块链证明的则是一条完整时间序列,效果更好。2)可以写入数字签名信息,我们就可提供数据确权,不但证明其时间,还可证明其所有权。很多微版权业务,都开始用区块链来实现,而无需通过版权中心等权威机构,成本更低,效率更高,验证方便。

第二类,是流程溯源类。与数据记录不同的是,多条记录之间存在着某种关联关系。1)非标物的信息流,如奢侈品、艺术品等,每件物品都是独一无二的。此时,需要单独记录每件物品各个阶段的状态信息,以及所有权的转移等,这些都可以采用键-值对的方式来实现。2)等标物的信息流,如食品、药品等,同一个厂商在相同批次生产的产品,我们可以认为其大致是相同标准、可以互相替换的。这类物品发生所有权转移时,就不一定是整体转移,也可能有拆分和合并,就像一袋大米可以分装成多个小包装,也可以多个小包装大米合并成大包装。这里面需要严格地额度控制,确保总的额度不变。

第三类,是数字资产类。这个是从第二类中的“等标物溯源”衍生过来的,典型的数字资产包括积分、优惠券、票据、数字代币等等,借助区块链可靠地记录数字资产的全部交易过程,使其可信。具体实现方式,一种是基于账户模型,如以太坊;一种是基于UTXO交易模型,如比特币。

三类应用的主要差异,仅仅是在区块链账本中存储的数据不同。

五、区块链的技术层级

区块链并不是什么全新的技术,而是一种新的技术组合,如果拆开来看,每项都是很多年前就已经诞生的老技术。

【问链-区块链基础知识系列】 第十课 首席架构师谈区块链技术演进_第4张图片

图4:区块链的技术层级

下面,我尝试从传统分布式技术出发,来理解区块链技术的层级,如图4所示。

第一层,分布式技术。随着互联网技术的发展,我们已经开始从传统的集中式技术,走向分布式技术,包括分布式网络、分布式计算、分布式存储等等。

第二层,分布式总账技术(DLT)。其本质是一种分布式存储技术。我们需要将数据复制成多个副本,存放在多个位置,通过冗余来提高数据的可靠性。此时,就面临着多副本数据一致性的问题。如何实现分布式一致性,同时保持较高的可靠性,是一个很大的课题。目前已经学者以及研究出PAXOS、RAFT等多种分布式一致性算法,并广泛应用于分布式数据库领域。

前两层,都隐含着一个假设,所有的系统都是运行在一个相对可信的环境,除了宕机故障之外,不会有系统节点故意“作恶”,即产生“拜占庭故障”。但现实中,一旦涉及多个参与主体,一旦跨越不可信的广域网,“作恶”节点就必然会出现。下面三层,就是为了解决在“弱信任环境”下,达成分布式数据一致性的技术。

第三层,可拜占庭容错的分布式总账。简单说,就是引入一些能够拜占庭容错的共识算法。这里面包括PoW、PoS、DPoS之类的大概率一致性算法,和基于投票的PBFT、RBFT、CBFT等确定一致性算法。能够在少数节点“作恶”的情况下,实现数据一致。

第四层,区块链。通过引入密码学技术(如非对称加密、哈希算法等)以及特定的数据结构(如哈希指针、块-链结构、Markel树等),进一步提供数据的防篡改能力。这一层面,主要是针对机构(toB)应用的许可型区块链(Permissioned-Blockchain),或者简称许可链。

第五层,密码学代币。这个层面,主要是针对公众业务的非许可型区块链(Permissionless-Blockchain),又称公有链。由于公有链没有任何许可限制,人人都可参与,那么,如何确保公有链的健康运转呢?一般来说,技术解决不了的事情,可以让经济学来解决。所以,中本聪在这里创新性的引入了博弈理论和经济学原理,通过区块链自带的原生“密码学代币”进行适当的激励,来保证区块链的安全运转。某种意义上说,公有链才是真正的非中心化区块链。

我们发现,在第五层的时候,会产生了一种用于激励机制的Token,在早些时候,它甚至被称为密码学货币(Crypto-currency)。刚才王行长也讲了,这类密码学货币,其实都不是真正意义上的货币。而且,一旦和人民币紧密挂钩的话,这里面有非常大的法律风险。如果在这一层研究区块链的人,就需要仔细研究各国的法律条文了,确保你的区块链是合法、合规的。

六、区块链的技术演进方向

1、技术演进的第一个方向,是哈希算法的创新,以抵御专用矿机的攻击。

早期的山寨币,则主要就是在比特币PoW共识的基础上,通过将原来的SHA256哈希算法替换为其它哈希算法。例如以太坊采用的Ethash和莱特币采用的Scrypt等哈希算法,都依赖较大内存进行计算,从而具备抵御矿机、ASIC专业芯片的能力。而达世币采用X11算法,则是采用11中哈希算法进行串联,其抵御矿机能力更强。有了串联就有并联,一种叫Heavycoin山寨币则采用了HVC算法,将4中哈希算法进行并联,从而具备较强的抵御碰撞攻击的能力。

但这类创新相对较小,抵御专用矿机的能力也很有限。比如,达世币,在比特大陆生产出针对达世币的专用矿机“蚂蚁矿机D3”之后,币值一泻千里。

2、技术演进的第二个方向,是数据结构的创新。

随着比特币系统后来暴露出来的性能不足和容量不足的问题,有产生了很多创新。

最简单的,就是修改区块参数直接扩容。

后来,则是针对账本区块内部结构的创新。比特币可以被视为是一种面向UTXO交易的区块链,同样,我们还可以定义只存哈希指纹的面向存证的区块链、只存数字签名的面向确权的区块链、存储要素信息的面向登记的区块链,还有面向K-V结构的区块链等等。

另外,针对账本区块之间结构的创新。比如不再是链条,还可以由多个区块组成区块树、由多个区块组成区块图等等。

3、技术演进的第三个方向,是共识算法的创新。

最近一两年创新比较多的地方就是拜占庭容错共识算法。主要有两大类,一是确定性一致性算法,如基于投票机制的PBFT、RBFT、CBFT等。二是大概率一致性算法,包括基于算力证明的PoW共识和基于权益证明的PoS。

但上述共识算法都有其不足。

(1)BFT类共识,主要是支持的共识节点有效,强烈依赖网络质量,一点带宽不足或网速抖动,会导致共识效率急剧下降,甚至无法形成共识。

(2)PoW类共识,导致高能耗,既不环保也不经济。而且是不具备确定性,容易受到51%算力攻击。

(3)PoS类共识,则非常依赖原生代币所产生的权益账户,其安全性也很难进行形式化证明。

单一的共识机制,在一些要求较高的场景下使用,比如法定数字货币场景。所以,后来有衍生出来一些新的共识机制,将多种共识混合使用。简单来说,就是将共识分为多个阶段,每个阶段采用不同的共识机制。

4、技术演进的第四个方向,是隐私保护的创新。

传统的公有链模式这方面要求较低,只是通过简单匿名实现很有限的隐私保护。

但在一些联盟链的场景,尤其是toB的应用场景,这个需求非常强烈。一般来说,可以和传统软件一样,从网络层、应用层或者是交易层各方面来做。网络层和应用层不用多说,至于交易层的很多解决方式,就是把传统的密码学的体系引入进来,包括环签名、零知识证明、同态加密等等,这些理论和算法,就算在密码学的学术界也属于比较前沿性的,有些在在理论上已经成熟了,但很多在工程上还不可行,或者导致数据膨胀太厉害,或者性能下降太多,难以在实际区块链系统中大规模运用。

总的来说,区块链还处于早期阶段,尤其是toB的区块链,在可扩展性、节点存储、隐私保护等方面还很受限;另外,其共识算法安全性难以证明,智能合约安全性难以验证、量子计算的攻击难以抵御;最后,缺乏好的开发工具、缺乏相关治理和标准,其升级和演化机制也不成熟。

但与此同时,这方面的创新,一直在进行。一般来说,工程上的问题总是能解决的,只是时间早晚而已,区块链的未来还是很值得期待的。

你可能感兴趣的:(区块链那些事儿)