
1.6 共识机制与链的进化
区块链这个命名是对区块链技术的最大误解。
要建立一个数据共享体系,这些数据不论是写入的权利,读取的权利,需要什么样的存储系统保持数据一致性,都是非常复杂的,在区块链技术领域,将这些原则归结为共识机制。目前分布式账本的共识机制主流有以下四种。
1. 工作证明
比特币在Block的生成过程中使用了工作证明( Proof of Work,PoW)机制,一个符合要求的BlockHash由n个前导零构成,零的个数取决于网络的难度值。要得到合理的BlockHash需要经过大量尝试计算,计算时间取决于机器的哈希运算速度。当某个节点提供出一个合理的BlockHash值,说明该节点确实经过了大量的尝试计算。当然,并不能得出计算次数的绝对值,因为寻找合理的Hash是一个概率事件,当节点拥有占全网n%的算力时,该节点即有n%的概率找到BlockHash。
2. 股权证明
股权证明(Proof of Stake,PoS)根据你持有数字货币的量和时间确定你的权益,分配给你相应的利息,同时可以利用股权确定生成块的权利。
根据你持有货币的量和时间来计算的结果简称“币龄”,当你获得生成块的权利时,币龄会被清空,清空的同时,将币龄兑换为对应的“币”的奖励。由于每次生成时,币龄多者会被清空,这样所有参与者都有机会将自己的“币龄”兑换为股息。
3. 委托权益证明
委托权益证明(Delegated Proof of Stake,DPoS)机制,它的原理是让每一个持有比特股的人进行投票,由此产生101位代表,可以将其理解为101个超级节点或者矿池,而这101个超级节点彼此的权利是完全相等的。从某种角度来看,DPoS有点像是议会制度或人民代表大会制度。如果代表不能履行他们的职责(当轮到他们时,没能生成区块),他们会被除名,网络会选出新的超级节点来取代他们。
4. 实用拜占庭容错算法
与普通的共识算法(例如MajorityWins,即超过一半人赞成即有效)不同的是,实用拜占庭容错算法(Practical Byzantine Fault Tolerance,PBFT)可以容忍投票的人中产生叛徒或者不响应者。PBFT是一种状态机副本复制算法,即服务作为状态机进行建模,状态机在分布式系统的不同节点进行副本复制,每个状态机的副本都保存了服务的状态,同时也实现了服务的操作,将所有的副本组成的集合使用大写字母N表示,使用0~ N-1的整数表示每一个副本。为了描述方便,假设所有节点总数是N= 3f+1,这里f是有可能失效的或恶意节点副本的最大个数。简单地说,有2f+1个节点和该节点数据一致,就可以证明该节点的有效性。PBFT可以提供一个基于有限节点构造的共识系统,系统总节点规模取决于失效或恶意节点的总和f的数量,只要f<N-2f,这个系统就能达成共识。
以上是目前主流的共识算法。
对于PoW,直接让比特币成为了现实,并投入使用,而PoS提供了不依赖算力取得共识的方法。不仅如此,由于专业矿工和矿机的存在,新发布的公链,如果基于PoW,则直接面临算力攻占的问题,因此后来又出现DPoS,这种不需要消耗太多额外的算力来进行矿池产出物的分配权益方式。
如果结合政治与经济,或许还会涌现出更多的共识算法。
还有一个问题是,目前的共识是建立在分布式共享账本这样的框架下,如果新的非账本框架被引进,则可能建立更多的共识机制。反之,新的共识机制也会推动新的存在计算模型的建立。
现今的区块链技术在存储结构上,已经突破了早期的经典链式结构,演变出了多种数据结构。
区块链技术早期的区块模型改变了世界记录数字数据的方式,但它也存在阻碍其整体采用和使用的缺陷。为了避免许多与区块链相关的问题,字节雪球Byteball决定采用一种完全不同的方法来连接和验证其数据。与连接直线链中的块的比特币不同,Byteball通过将新上传的信息附加到多个先前的数据事务来将其连接到数据库。交易构建在一起,形成一个称为DAG(有向无环图)的结构。虽然该平台为任何数据类型提供不可变的存储,但最值得注意的功能是其多功能的条件支付系统,简单到足以让任何用户理解。智能合约系统允许轻松创建和定制智能合约以满足任何个人需求。
还有一些项目并不显示关联的各个区块,而是直接存储起来,比如Corda就没有链式或者图形的数据结构,同样可以实现数据不可篡改的特性。我们主导的DataCell技术可以让任何单条数据都具备不可篡改的特点。
举个思想案例,现在数据的可靠存储并不是一个技术问题,关键是用共识机制,认定这个存储是无法篡改的,具备信息可证明的特征,也就是具备数据共识。
简单地构造一个中心存储节点,然后建造一个符合PBFT共识机制的监督系统,监督系统里面存储的是中心节点的Meltree数据,需要验证时,利用Meltree就可以验证数据的完整性和一致性。这样,系统的处理能力和吞吐能力非常高,普通的验证可以在监督系统里进行,而复杂的验证和写入操作可以分布式进行。更简单的方法是,中心系统可以没有区块的概念,仅仅向监督系统同步的是Timestamp(5)服务器的每条数据的Hash,或整个数据结构的Merkle树。
对于更加宽泛的可证信息系统来说,管理的颗粒度可能是每条数据,只要这条数据是可证明的,相当于实现了共识。例如,我给一个公司发送了一个合同和确认信息,只要证明这条信息是我发送的,且内容不可篡改,就相当于建立了点对点共识,这种共识并不需要账本的存在,而这也是社会上信用交换最简单的方式,这正是“数据细胞”技术的前提。如果这样的数学和密码学证明方式,得到法律上的支持,则可以建立基于密码学更加广泛的社会信用系统。
从分布式账本的发展历程上看,公链技术是最广泛的开放信息共享框架。而私链和联盟链这些技术,则推向一个更加强调局部共识的账本技术,进一步的发展,会继续沿着私有化地路径进展,直到每个人可以私有化地管理数据。
随着这样的推进,数据结构也在演化,为P2P共享数据便利的区块的概念会被弱化,中心化管理系统和分布式账本体系会融合成一个可用的系统。最后,分布式个体存储和权利自主的数据处理会进一步为点对点的数据共识系统奠定基础。
去中心的概念从分布式存储证明逐渐向数据自证的概念演进。