链客,专为开发者而生,有问必答!

此文章来自区块链技术社区,未经允许拒绝转载。


Chapter-1:什么是共识机制?

技术定义是:共识机制是一个群体决策的流程,群体中的个体会执行和支持对群体其他个人最好的决定。这是一个个体需要支持大多数人决定的解决方式,不管他们意愿如何。

简单地说,这仅仅是一个群体决策的方式,举例说明,10个人的小团体,要决策出对他们所有人最有利的决定,每一个人都提出一个方案,但是大多数人只会支持那个对他们最有利的方案,而其他人只能服从这个决定,不管个人意愿如何。

共识机制不仅仅是同意大多数同意的决定,同时需要同意那个对所有人都最有利的方案,因此,它是一个网络共赢的决定。区块链共识模型是在网络世界中创造平等和公平,用于达成共识的共识系统叫做共识理论。

区块链共识模型包括以下内容:

达成一致:机制将收集群体中所有一致意见

合作:群体中每个人都是为了更好地达成一致,从而群体利益一致

合作:个体都考虑群体,而不考虑他们个人利益

平等的权利:每一个个体参与者都有相同投票的权利,这意味着每一个人的投票都非常重要

参与:每个在网络中的个体都需要参与投票,没有人能够逃避或者仅仅在集体中而不投票

积极性:群体中每个成员都是相同的活跃度,没有人需要承担群体中的更多的责任

不同的共识机制:

Chapter-2: 拜占庭容错问题

拜占庭容错是一个特殊错误事项的系统,它叫拜占庭将军问题。你可以在一台分布式计算机系统中经历这种情形,通常是共识系统失灵。

系统组件处理更加相互冲突的信息,共识系统只有在所有因素都正常工作的状态下才能正常工作。因此,当其中一个系统组件失灵的时候,会导致整个系统奔溃。

失灵的组件通常是由拜占庭容错系统的不一致导致,这也是为什么这些去中心化网络的共识系统使用感并不理想。

专家称之为“拜占庭将军问题”,是否仍然令人困惑?让我用一个共识的例子来说明。

想象有一群将军,每个将军都有一支他们自己的拜占庭战士队伍。他们将要攻占一座城市,因此他们需要计划攻占的战术。

你可能会认为这是徒劳的,因为这个只是一个小问题。将军们可以通过一个信使来沟通,但是当中一些背信弃义的将军可能试图破坏整个攻占计划。

他们可以通过信使传达一些不真实的信息,甚至信使可能是敌人派来潜伏的卧底。

信使也有可能传达错误的信息蓄意破坏整个攻占计划。

这就是为什么需要小心谨慎。第一,所有将军们必须达成了一致的攻占决定;第二,保证不会出现任何的叛徒,否则整个任务都会失败。

这看起来很简单,但实际上,并不是。根据研究,平均3n+1个将军中就会有n个叛徒出现,4个将军对付一个叛徒,这也是相当棘手了。

Chapter-3:为什么我们需要共识机制?

拜占庭问题主要就是为了达成一致。即使出现一个错误,节点们也不能达成一致,或者将达成一致的难度系数提高。

另外,共识机制并不是真的解决这类型问题,它们的初衷是在任何情况下都能够达成一个特殊目标。区块链共识模型将比拜占庭更加可靠,以及容错性更高。

Chapter-4: 区块链:去中心化网络组织数据的架构

重新看一下区块链技术,获得一个整体网络的全貌 ——组织数据库的新方式 ——可以存储网络中任何变化的内容 ——所有数据都将像物质一样被放进区块中

因此,在区块链中你将不会看到任何去中心化,这是因为区块链本身不提供去中心化的环境。这也是为什么我们需要共识机制来保证我们的系统是完全去中心化的。

因此,区块链技术仅仅是创造了一个结构化的数据库,并不会执行去中心化的流程。这就是为什么区块链技术被称为去中心化网络的架构而已。

Chapter-5:共识机制:网络的灵魂

这个方式相当简洁。区块链共识模型仅仅是达成一致的方式,然而任何去中心化系统都离不开共识机制。

节点是否相互信任也不重要,网络会遵循一定的原则去达成集体的一致。因此,你需要了解所有类型的共识机制。

目前为止我们没有发现有某一种共识机制存在所有区块链技术项目中的。我们来看一下不同的共识机制。

Chapter-6:不同类型的共识机制

所有共识机制列表

Proof-of-Work 工作量证明

Proof-of-Stake 权益证明

Delegated Proof-of-Stake 委托权益证明

Leased Proof-Of-Stake 租用权益证明

Proof of Elapsed Time 过去时间证明

Practical Byzantine Fault Tolerance 实用拜占庭容错

Simplified Byzantine Fault Tolerance 简单拜占庭容错

Delegated Byzantine Fault Tolerance 委托拜占庭容错

Directed Acyclic Graphs 有向非循环图

Proof-of-Activity 活动量证明

Proof-of-Importance 重要性证明

Proof-of-Capacity 容量证明

Proof-of-Burn 燃烧证明

Proof-of-Weight 重量证明

Proof of Work工作量证明

工作量证明是第一个区块链共识机制。许多区块链项目都是用共识机制来验证交易以及产生相关区块的。

去中心化账本系统收集所有关于区块的信息,然而需要一个对所有交易区块作特殊贡献的角色。

承担这些任务的所有个体节点叫矿工,它们完成这些任务的过程叫“挖矿”。

这项技术背后最核心的原则是解决复杂的数学问题以及很容易得到答案。

这个数学问题是什么?这些数学问题就是,消耗大量计算机计算能力,去解决哈希函数(Hash Function),或者在不知道输入值的情况下找到输出值,另外一个就是整数分解(integer factorization),这也包含大量猜谜过程。

当服务器遭受DDoS攻击或者去解决共识系统难题需要消耗大量算力,这时矿工就派上用场。用数学等式解决整个问题的答案就叫哈希。

然而工作量证明有很多缺陷。由于网络增长得过于庞大,需要消耗大量算力,这个过程也增加了系统整体的敏感性。

为什么系统变得如此敏感?

区块链共识顺序依靠准确的数据和信息。然而系统速度极慢。如果一个问题非常复杂,将耗费大量时间去产生一个区块。

交易被延迟,然后整个工作流程将停滞。如果区块产生问题不能在一定时间内解决,那么区块产生将成为一个幻想。然而如果问题被系统很容易解决了,这又可能导致DDoS攻击。同时,解决方案需要被进一步仔细检查,因为不是所有节点都能够发现潜在的错误。

如果他们能够做到,网络将失去最重要的特性——透明。

工作量证明如何应用在一个区块链网络中?

首先,矿工解决所有猜谜问题,然后产生新区块,然后验证交易。无法说明一个猜谜难题有多复杂,这取决于用户数量最大值,当时算力的最小值,以及网络整体容量。

新区块在哈希函数被解决之后产生,以及每一个新产生区块都包含前一个区块的哈希函数值。通过这种方式,网络增加了保护性以及可以组织任何暴力攻击。一旦一个矿工解决了谜题,一个新区块将产生,然后交易信息被验证。

工作量证明共识机制实际被用于何处?

被应用最广泛的就是比特币,比特币是第一个采用这种共识机制的加密数字货币。区块链共识模式允许根据网络整体算力,动态改变算力谜题的难度。

产生一个新区块需要10分钟。其他加密货币例如莱特币,也是采用同样的共识机制。

另外一个工作量证明的区块链,以太坊,平台上3-4个大项目都是采用工作量证明。然而,以太坊在逐渐过渡至权益证明。

为什么区块链技术优先采用工作量证明?

为什么其他区块链项目会优先采用工作量证明?这是因为工作量证明提供DDoS攻击保护,以及降低整体权益挖矿。

工作量证明给黑客攻击造成不小的难度,因为整个系统有大量算力以及其他要求。这就是为什么虽然黑客能攻击区块链共识模型,但需要耗费大量时间,以及攻击难度会使整体成本过高。

另外,没有矿工能够左右整个网络,因为决策不是根据金钱数量,而是根据你拥有能够创造新区块的算力决定的。

工作量证明共识机制主要受到的批评?

没有一个共识机制是完美的,工作量证明也不例外。它有许多优点,同时也带来很多缺陷。主要被诟病以下方面:

消耗大量能源

区块链网络包含数百万计的用于解决哈希问题的定制芯片,这个过程要求大量的能源支撑。

目前,比特币拥有每秒200亿哈希算力。网络中矿工使用一些特殊设计的芯片,这为网络增加了一层防止僵尸网络攻击(botnet attack)的保护。工作量证明的区块链网络的保护层消耗大量密集型能源。算力的增加逐渐成为全球能耗的一个问题——矿工也面临增加大量电力成本。

解决这个问题的最好方式是寻找便宜的能源。

矿工的中心化

由于能耗问题,工作量证明也转向便宜电力能源作为解决方案。然而,主要的问题是比特币大矿工数量的增加。在一定时间内,大矿工会因为拥有大量算力,而尝试对挖矿系统制定新规则。这样会造成一个去中心化网络中逐渐中心化。这也是工作量证明共识机制面临的另外一个重大问题。

什么是51%攻击?

这是一个由可以控制大多数用户,或者占领多数挖矿能力的人(或节点、或群体)发动的攻击。在这种情形下, 攻击者有足够的算力去控制网络中的一切。

举例,想象一个情形,当Alice向Bob通过区块链网络发送一些加密货币,然而Alice被卷入这场攻击中,而Bob没有。这个转账交易虽然发生了,但是攻击者通过区块链的分叉,阻止了任何加密货币的转账。

另外一个情形,矿工如果加入了其中一个阵营,他们绝对算力会继续在这些区块后产生验证区块,这也是为什么更加短的区块链会被拒绝验证。同样,Bob也无法接收转账。

Proof of Stake权益证明

什么是权益证明?

权益证明的产生就是为了解决工作量证明的缺陷。在网络中加入其它区块之前,每一个区块将被验证。链如果有任何一点的扭曲,矿工可以用持有的加密货币对挖矿过程进行投票。

权益证明是一种允许每个个体,根据他们持有的加密货币数量,参与挖矿或者验证区块的共识机制。因此,在这种情形下,你拥有的加密货币数量越多,意味着你的权益越大。

这是如何工作的?

这种共识机制中,少数派被优先选择。尽管整个流程是完全随机的,但也不是每一个少数派都能参与投票。网络中的矿工是随机被选择的。

如果你有一定数量的加密货币存储在钱包中,你将有资格成为网络中的一个节点。当成为一个节点后,如果你想要成为一个矿工,你需要抵押一定数量的加密数字货币,然后投票系统选出验证者,这是矿工必须将按照最少要求数量的加密货币抵押到一个特殊的钱包中。

整个过程很简单。新区块将根据特殊钱包中的加密货币的数量比例产生。例如,如果你拥有10%的加密货币,那么你拥有10%机会挖出新区块。许多区块链项目采用不同的权益共识机制。

然而所有的权益共识机制对于新区块产生都是一样的,每一个矿工都将获得区块奖励以及一定数量的交易手续费。

权益证明池里将会发生什么?

还有其他方式参与投票,如果权益数量太多,你可以加入一个池然后从中获取收益。有以下两种方式:

你可以将你持有的加密货币借给池子里要参与的用户,然后分享收益。然而,你需要找到一个可靠的人去将你手中的币给他。

你可以自己加入一个池子,参与这个池子的每个人将根据他们权益的数量分享收益。

权益证明:优势?

这种共识机制不需要任何硬件支持。你只需要一个运行正常的计算机系统,以及一个稳定的网络即可。网络中拥有足够加密货币的任何人都可以验证交易。

如果一个人在网络中进行投资,他的投资不会贬值或者折旧。能影响收益的唯一因素就是加密货币的价格波动。权益证明共识机制的区块链比工作量证明更加节能,它不会消耗大量资源。

能够减少51%攻击的威胁。

尽管权益证明看起来比工作量证明更加合算,但仍然有一个很大的缺点,就是不是完全去中心化。这是由于只有一部分节点能够参与网络投票。而拥有最多数量加密货币的人将最终控制大部分系统。

采用权益证明的主要加密货币

PIVX

这是一个几乎0交易费的匿名币。PIVX是从DASH分叉出来的,然而不同于DASH采用工作量证明,PIVX采用权益证明。他们用分布式区块的主节点来保证更好的投票效果。如果你想要拥有PIVX,你必须下载官方钱包,然后同步于区块链网络中,接着,你必须往钱包中转入一些加密货币,然后保持连接。

NavCoin

许多加密货币是比特币的分叉币,NavCoin也是其中之一,这个项目是完全开源的,他们也转向了权益证明。为了最大化收益,你的计算机需要更长时间连接网络。由于权益证明异常轻量级,你可以毫不担心地任其运行更长时间。

Stratis

他们主要提供企业级服务,企业可以使用Stratis去建立自己的dApps,而不用搭建自己底层的区块链网络。Stratis这个平台提供侧链进行搭建app,从而阻止网络滞后。虽然他们以工作量证明开始,但是最终将转向权益证明。 Delegated Proof-of-Stake Consensus委托权益证明共识

委托权益证明是权益证明的变体。系统具有相当的鲁棒性,然后往整体增加了一个不同形式的弹性机制。

如果你想要快速、有效率、去中心化共识机制,那么委托权益证明将会是最好的选择。权益拥有者的事项将通过一种民主的方式得到完全解决。网络中的每一个组件将成为一个代理。

不同于矿工或者验证者,这里的节点被成为代理者。通过决定区块产生,系统可以以秒级处理交易。而且,系统被设计成可以对所有监管问题进行保护和对抗。

见证者验证所有签名

通常,见证者免于所有监管以及其他中性词。传统合约中的标准见证者都会对一个特殊的点进行见证验证。他们仅仅是保证个体在一个特点时间参与了合约。

在DPOS中,见证者可以产生区块信息。顶级见证者要投票选出。通常只有完全去中心化系统中才会发生这种投票。

所有的见证者都会在产生区块后收到报酬。这个报酬的比例由投票系统事先制定。

投票选择代理者中的特殊参数改变

跟见证者一样,代理者也由投票产生。代理者可以改变整个网络的参数。你可以通过代理者,去改变手续费、出块时间、区块大小和见证者报酬。如果要改变网络参数,需要大多数代理者都参与投票支持。然而,代理者不会像见证者获得报酬。

改变原有的规则

为了使系统平稳运行,不时需要加入一些不同的功能。然而,无法在缺少潜在相关者的情况下添加功能。见证者可以聚集起来,改变政策,但是他们被系统限定不能如此。 见证者需要保持中立,以及他们仅仅是作为利益相关者的雇员。所以,所有事项都由利益相关者决定。

双花攻击风险

在DPOS中,双花攻击风险被最大程度降低。双花攻击是指区块链网络无法包含数据库中之前的交易记录。网络可以在无人帮助的情况下进行自我检查,然后发现类似的损失。通过这种方式,来保证数据库的100%透明。

权益证明下的交易完成

尽管这是权益证明的一个变体,但核心交易系统仍然是整个运行在权益证明机制上的。权益证明的交易流程增加一个保护层对抗错误的共识系统。

谁采用委托权益证明?

LISK,为开发者可以在这个区块链平台上,便利地开发基于JavaScript的去中心化应用。

Lisk跟以太坊有很多相似的地方,然而,它采用委托权益证明而非权益证明。这里的投票运行机制不一样。 Leased Proof-Of-Stake (LPoS) 租用权益证明

权益证明的另外一个变体是租用权益证明。采用这个新型共识机制的区块链项目是Waves平台。就像其他区块链平台一样,Waves也是属于能耗少的。权益证明对于投票机制存在一些限制。拥有少量加密货币的个体可能永远也无法实际参与投票环节。为了维持网络运行,只有少数拥有更多加密货币的个体可以参与。这个流程会导致在一个去中心化平台中存在中心化团体,这显然不是大家愿意看到的。

在租用权益证明中,即使拥有少量加密货币的持币者也能有机会参与投票。他们可以把手中的币借给网络,然后从中获取收益。引入新型的租用权益证明后,情况完全变化了。系统之前的缺陷可以毫无难度地得到解决。Waves平台最主要的目的就是顾及少数的投资者。那些只拥有少量加密货币在钱包中的人可能永远都无法像大户一样有机会获取收益。这也导致了共识机制一个主要命题——透明性。 Proof of Elapsed Time (PoET) 过去时间证明

过去时间证明是最好的共识机制之一。这个特殊的机制被主要用于联盟链网络——即你需要得到许可才能加入这个网络中。这些可允许网络需要对挖矿权利或投票原则等事项进行决策。为了一切顺利运行,过去时间证明采用一个特殊的手段来覆盖整个网络的透明性。这个共识机制同时能够保证系统的安全登录,在成为矿工前网络需要进行验证。毋庸置疑,在这个共识机制下,挑选出胜者只能依靠公平手段。

这个牛逼的共识序列的主要战略是什么?

网络中每一个个体必须等待一定量的时间,然而时间的限制是完全随机的。

参与者必须完成TA的等待时间后,才能在账本中创造新的区块。

为了证实这些场景共识机制必须考虑以下两点

胜者是否首先就选择了随机数?TA能否选择一个短时间的随机数然后就获胜

个体是否真的完成TA被分配的等待时间?

过去时间证明依靠一个特殊的CPU设备——Intel软件保护扩展。这个设备能够在网络中运行特殊的代码,过去时间证明就是采用这个系统来保证胜局完全公平。

Intel SGX系统

由于过去时间共识机制采用SGX系统来验证公平性。我们来详细说一下这个系统。

首先,一个特殊的硬件系统创造一个认证来使用特殊可信任的代码。代码是在一个安全的环境中产生的。任何外界都可以用这个认证来验证是否被篡改。

第二,这些代码是在网络中的隔绝区域中运行的,没有人可以连接到。

第一个步骤能够证明你是在网络中真实地使用可信代码,而不是随机的把戏。如果步骤一不能够正常运行,主网络甚至无法发现。 第二个步骤阻止任何用户通过认为TA在运行代码从而操纵系统。步骤二保证了共识机制的安全性。

可信任代码

简单地罗列出代码的要点

加入区块链网络

一个新用户首先需要下载区块链中可信任的代码

开启后,他们会获得一个特殊的钥匙对

运行这个钥匙对,用户就可以发送SGX认证到网络中,请求通过

参与乐透系统

个体将会从可信代码源中得到一个已经签名的计时器。之后,个体将需要等待,直到时间完全消耗掉。最后,这个个体将会得到一个完成任务的资格。

协议同时保证了基于SGX不同层级的保护。系统将计算一个用户需要多少次才能赢得一次乐透。通过这样,他们将得知个人用户的SGX是否被损害了。 Practical Byzantine Fault Tolerance (PBFT) 实用拜占庭容错

PBFT主要用于状态机,它复制系统,但是又可以免于拜占庭将军问题。如何做到的?

PBFT一开始就假设网络中存在潜在的错误,以及一些独立的节点将在某些特定时间失灵。

PBFT就是为异步共识系统所设计的,而且进一步优化,通过一种高效的方式去解决所有问题。系统中的所有节点都按照特殊的顺序进行设置。其中一个节点被选为最初的一个,其他作为备选方案。然而系统中所有的节点都有序地运行,之间也能够彼此沟通。

沟通层设置得相当高级,因为节点间想要验证系统中的每一个信息。而这个设置可以避免不可靠信息问题。

然而,通过这种方式,甚至一个节点被损害了,他们也能够发现。所有的节点将通过大多数投票来达成一致。

共识机制的优点

这个模型最初是为了实际应用所设计的,非常容易应用。因此PBFT在所有共识机制中都占据优势。

不需要验证

网络中的交易运行跟别的系统有点区别。它可以使一笔交易最后落实,而不需要像POW系统那样进行验证。如果节点在某个区块上达成一致,则这笔交易就算最终完成。这是基于所有可信的节点在同一时间进行了相互沟通后,然后对某一区块都有认知这一事实。

减少能源消耗

PBFT可以比POW减少大量能源消耗。在POW中,每一个区块产生都需要一个POW解题循环。然而,PBFT中,不是每一个矿工都在解决哈希算法。这就是为什么PBFT系统不用耗用如此多的算力。

系统的缺点

沟通的缺口

PBFT中最重要的因素就是节点间的沟通,系统中的每一个节点都必须保证他们收集的信息是可靠的。然而,共识机制仅在一小部分节点中得到有效运行。

如果节点数量增加到一定程度,系统将难以追踪所有的节点,也无法与每一个节点都有单独联系。

有论文提出用MACs以及其他数字签名来证明信息的真实性。但有说法认为,MACs无法处理区块链网络系统,使用它最终会造成重大的损失。

数字签名是个好主意,但是维持所有沟通节点的安全性,将会随着节点数量增加,变得越来越难。

女巫攻击

PBFT相当容易遭受女巫攻击。在女巫攻击中,通过操纵一定数量的节点,来损害整个网络。更庞大的网络情形将更加糟糕,同时系统的扩展性也会降低。

如果可以将PBFT跟其他共识机制一起使用,它们可能可会得到非常稳固安全的连击措施。 Simplified Byzantine Fault Tolerance (SBFT) 简易拜占庭容错

SBFT的系统运行有点不一样。

第一,区块生成器将一次性收集所有的交易,把他们放进一个新区块后,再进行验证。简单地说,一个区块将收集所有的交易,按照顺序将他们放进另外一个区块后,再对他们进行验证。区块生成器采用一定的规则,能够使所有节点都验证所有交易。

接着,一个区块授权节点(singer)将再验证所有交易后,然后为他们添加属于他们自己的签名。这就是为什么如果任何区块缺少一个签名都将被拒绝。

简易拜占庭容错的不同阶段

整个流程从创造阶段开始,资产的用户将生成一定数量独特的资产ID。

接着,在提交阶段,用户向平台提交所有ID。

然后,验证阶段,ID将获得实际用例的特定条件。

一旦他们获得签名,ID将被存储和发送至不同账户中。交易将由智能合约开启。

最后,交易被激活。

这个优秀系统另外一个非常有趣的功能是账户经理,这个账户经理将涉及许多阶段。最初的目标是将所有的资产进行安全地存储。账户经理也存储着所有的交易数据,这个经理可为不同用户覆盖所有类型的组合式数据。

你可以把这个当做数字钱包。通过使用数字钱包,你可以从钱包中转移你的资产,然后重新获得他们以及收益。你可以通过智能合约来使用账户经理,当需要满足某些要求的时候,他可以释放资金。

资产的所有权将流向何方?他们使用了一个推动模型,你可以将赚取的资产发送至这个模型包含地址和资产ID。

安全和隐私

SBFT是一个私人网络,将保密性作为网络最高级别的任务。平台被设计成面向敏感信息,但同时拥有一些限制。这也是为什么系统有三个技术特征:

一次性使用地址

当一个用户每次想要用TA的钱包接收一些资产时,他们将被授予一次性使用地址。每一个地址都不同,这样可以防止任何用户去拦截交易。

零知识证明

零知识证明被用于隐藏交易的所有内容。然而,整个网络依旧能够被验证其真实性。这个通过零知识证明——只有接收者和发送者可以看到交易内容——可以完成。

元数据加密

交易的元数据被加密,以进一步保证其安全性。网络允许通过密钥来验证其真实性。然而,为了达到更好地保护效果,密钥将2-3天内进行改变。

同时,所有元数据被分隔存放在数据网络中的不同地方。因此,如果其中一个数据被黑客攻击,其他可以使用其他密钥来生成更多的密钥。管理和每隔几天进行流转这些密钥对于保证共识机制的真实性来说,非常有必要。

链,一个用SBFT去验证网络中的交易的区块链平台。除此之外,还使用HSM来提供工业级别的安全性,而不需要对单点失效进行处理,就能提供额外的安全保障。 Delegated Byzantine Fault Tolerance (dBFT) 委托拜占庭容错

工作量证明和权益证明是运用最广泛的共识机制。许多区块链生态系统都采用者两种共识机制,但有些项目尝试使用更新型更先进的共识机制系统,NEO就是这样的代表。

过去的12个月里,经历了疯狂的增长,NEO现在已经成为业务炙手可热的项目。中国品牌显现出其潜力。为什么这么说?因为他们是这个先进的共识机制的发明者——委托拜占庭容错。

一个热门的区块链项目:NEO

这是目前行业中热门的项目之一,被称为“中国版以太坊”。NEO主要目标是创造一个智能经济体系,在那里你可以低成本地进行数字资产交易。

NEO采用委托拜占庭容错来验证交易。如果你拥有NEO代币,你将生产GAS——平台主要的流通货币。你将为你的每一笔交易付出一定量的手续费,即GAS。也就是说,你拥有的NEO越多,你获得的GAS越多。

然而,这个份额与POS有点不一样。许多交易所提供一个撮合系统,然而,最好是使用NEO的官方钱包,而不是其他的存储钱包。

在我们开始分析dBFT前,你要知道dBFT的元机制——拜占庭容错共识机制——的主要缺陷。

拜占庭将军问题的缺陷

当我们见证任何投票以及结果的时候,系统的一个主要缺陷将出现。以下的例子将帮助你更好地理解。

你已经知道遵循dBFT共识机制的节点都像军队的展示一样。军队中的节点都有只有一个将军,通常他们听从将军的命令。现在想象一下,拜占庭军队计划攻占罗马,假设拜占庭军队有9位将军,他们包围了罗马城,准备攻打。将军们只有执行统一的一个战术——进攻或撤退——才能成功拿下罗马。

这就是问题所在。将军们都各怀心事——只有超过半数同意的策略他们才会遵循。这里有另外一个假设,将军们是不会坐在一张桌子上进行商讨决策的,他们分布在不同的地点,使用信使来传递信息。

4大威胁

4种情况可能帮助罗马人维持他们的统治:

罗马人可以贿赂将军来获得他们的支持,接受贿赂的将军被称为“叛变的将军”。

其中一位将军可能采取了错误的决策,被称为“行动错误的将军”。

罗马人可以贿赂信使,让信使传达错误信息,来误导其他将军的决策。

罗马人可以杀掉信使,直接破坏将军们的通信网络。

所以拜占庭容错有4个突出的缺陷,导致不完美的共识机制。

委托拜占庭容错如何改变这种局面?

NEO为我们展示了拜占庭容错问题的一个更好的解决方式。我们来看看令NEO自豪的dBFT。dBFT主要用以下两种方式解决现有问题——更好的扩展性,以及更强的性能。

代言人和代理者

我们用另外一个例子说明dBFT。假设拜占庭军队中有一个竞选出的领导者,而不是官僚做派的将军。这个被选出的领导者将扮演军队品牌的代理者。

你可能认为将军们可能被这些民选出的代理者所替代。甚至军队的其他成员可以反对这些代理者,然后再重新选举。官僚做派的将军有劣势,以及没有将军能够贿赂整个队伍,因此罗马人无法直接贿赂将军来实现他们的目的。

在dBFT中,被选出来的代理者可以追踪每一个节点的决策。一个去中心化账本可以标记所有节点的所有决策。

节点同时可以选出代言人来向代理者表达他们的共识和统一的想法。为了通过一项新政策,代言人可以向代理者传达节点的诉求,并且获得至少2/3的代理者同意。否则,这项提案将不被通过。

如果一项提案没有获得2/3代理者的支持, 将被拒绝,同时一项新提案将被提出,直到达成共识。这个过程保证了整个军队不受到叛变将军以及被贿赂将军的破坏。

不诚实的代言人

还有两种情况会损害dBFT共识机制的正直——不诚实的代言人,和不诚实的代理者。

dBFT共识机制也给出了解决方案。

正如前文所述,账本将节点所有的决策都记录保存在一个地方。代理者可以验证代言人的说法是否代表所有节点。如果账本不接受代言人的提案,66%的代理者将拒绝代言人的提案,并且将代言人拉黑。

不诚实的代理者

第二种情况是不诚实的代理者,被贿赂的代理者。在这里,诚实的代理者和诚实的代言人将会努力获得2/3大多数,来消除不诚实代理者的影响。

所以,你能够看到dBFT是如何克服拜占庭将军问题和BFT共识机制的缺陷的。当然,NEO值得获得全世界的赞誉,因为它们努力地创造出一个更加优秀的共识机制。

Directed Acyclic Graphs (DAG) 有向非循环图

大家都认为比特币是区块链1.0的代表,以太坊是区块链2.0的代表。但我们看到市场中有更加先进技术的出现。

有些人认为DAG是区块链3.0的代表,同时很多项目也争做成为区块链3.0。例如,NXT将是这场DAG应用竞争中领先的项目,除了NXT,IOTA和 IoT链也是采用DAG的。

DAG是如何工作的?

你可能认为DAG是一种共识机制,但实际上DAG是一种数据结构。当大多数区块链被认为是由包含数据的区块组成的一条链,DAG是数据拓扑排序的无缝隙图,可以便利地处理数据如数据传输、数据路由、数据压缩。

工作量证明机制需要10分钟生成新区块。是的,POW就是行动极其缓慢的人。DAG采用侧链而不是仅仅在单链上工作。侧链允许不同的交易独立在多条链上发生。这减少了创造和验证区块的时间。实际上,它减少了对区块的需要。挖矿需要消耗大量的时间和能源。

这里,所有的交易都是被安排罗列到一定序列中,系统是非循环的,意味着找到父节点的几率为0,因为这是呈树状的节点,而不是呈回路的节点。DAG给世界展示了没有区块的区块链的可能。

DAG的基本概念

没有双花

传统的区块链一次性挖矿一个区块。存在这种可能性:多于一个矿工去验证节点。这个将会带来双花的可能性。甚至这种情形会导致软或者硬分叉。DAG基于之前转账的数量,验证一个特殊的交易。这将会使区块链系统更加安全和更具鲁棒性。

更小的宽度

在其他共识机制下,交易节点是被加入整个网络中的,这导致系统变得非常庞大。而DAG将新交易与以往的交易图连接起来,这使得整个网络可以更加直接间接地验证某项交易。

更快以及更智能

由于DAG具有无区块的特性,它可以更快地处理交易。实际上,它让POW和POS的处理速度看起来像祖辈一样缓慢。

更加支持小额交易

不是每笔交易都会进行数百万美元的转账的,实际上,小额支付更为常见。但是比特币和以太坊的转账手续费看起来对小额支付转账并不友好。另外,因为非常低的交易费,让DAG完美地适应小额交易。Chapter-7:其他共识机制

Proof-of-Activity 活动量证明

当人们争论是POW还是POS更好的时候,莱特币的发明人和另外三位从业者则在尝试更为聪明的想法。他们提出一个简单的问题:为什么不将POW和POS放在一块儿,让他们相互竞争呢?

因此,这个吸引人的混合体诞生了——活动量证明。它结合了两大最好的特性,能够更安全地面对攻击,同时也不是一个消耗大量资源的系统。

活动量证明是如何工作的?

在POA区块链共识协议中,挖矿部分就是像POW一样开始,矿工解决一个难题就能够获得奖励。POA跟POW最大的不同?在POW中,矿工会在一项完整交易后进行挖矿。

而在POA中,矿工只是对区块模板进行挖矿。区块模板包括两项内容:顶端的信息,以及矿工的奖励地址。

一旦矿工开始对区块模板进行挖矿,系统就转向POS。区块中的顶端信息将随机发送给一个利益相关者,然后他们将验证这些预挖的区块。越多堆栈(stack)被验证者获取,他们成为区块的可能性就会增加。经过验证,这个区块进入区块链。

这就是POA如何运用最优秀的两个共识机制来验证区块以及往链上添加区块。同时,系统将用一定量的手续费对矿工和验证者进行奖励。因此系统能够对抗“公有地悲剧”,以及为区块链验证创造一个更好的解决方法。

POA的影响

区块链面临最大的威胁之一是51%攻击。POA将51%攻击的可能性降到几乎为0。它使得无论矿工还是验证者都无法成为大多数,从而往网络中增加区块需要双方平等的努力。

尽管有批评说POA存在一些缺陷,第一是挖矿导致的大量能源消耗,第二是POA没有办法解决验证者双重签名问题。这两大问题严重地限制POA的使用。

有两个采用POA的热门区块链项目——Decred和Espers。但是他们两者有很多不同,实际上,Decred被认为要比Espers运行得更加成功。

Proof-of-Importance 重要性证明

POI最有代表性的项目是NEM,POI是POS的延伸。同时,NEM还采用一个新机制——捕获(harvesting)或等待行权(vesting)。

捕获机制决定一个节点是否被加入区块链中,你在一个节点中捕获越多,它被加入链的几率越大。捕获机制的回报是,节点可以在验证者验证后,获得交易手续费。你的账户需要有至少10,000XEM,才有资格进行捕获。

这解决了POS的主要问题,POS中,相比验证只能获得很少回报,越富有的人获得的回报越多。例如,如果你拥有20%的加密货币,你可以对网络中20%的区块进行挖矿。这将导致共识机制对富人更加有利。

POI重要的特征

等待行权

这个共识机制最令人关注的特点是「等待行权」或「捕获」。如前所述,首先你必须拥有至少10,000加密货币,才有资格参与捕获。你POI的得分将取决于你捕获的数量,同时,共识机制会把你拥有加密货币的时间点加以考虑。

交易合作伙伴关系

在POI中,如果你与其他NEM持币者进行交易,将会获得回报。系统将认为你们是合作伙伴关系,但是如果你们计划伪造合作伙伴关系,系统将识别出。

得分系统

交易将影响你的POI得分,得分将基于30天内你进行的交易。交易越频繁、交易累计金额越多,你在NEM网络中的得分越多。

Proof-of-Capacity 容量证明

POC是POW的升级版,最重要的特点是“标记(plotting)”。在你开始挖矿前,你可以贡献你的算力或者硬盘存储资源。

这使得整个系统比POW更加快速,POC仅需在数分钟内生成新区块,而POW需要10分钟。而且POC尝试解决POW的哈希问题。你的计算机拥有越多解决方案或标记,你赢得挖矿竞争的几率越高。

POC是如何工作的?

为了理解POC的本质,你需要抓住两个概念——标记(plotting)和挖矿(mining)。

通过标记你计算机中的硬盘,你就创造了一个随机数(nonce)。POC的随机数与比特币的随机数有点不一样,你需要将你的ID和数据做“哈希”(散列,或预映射),直到你接出这些随机数。每一个随机数都附带有8,192个哈希值,这些附带数被称为“小铲”,每一个ID最多会有 4,095个“小铲”。

另外一个概念是硬盘“挖矿”,如前所述,你会一次性收到0到4,095个“小铲”,然后将其存储在你的硬盘当中。你将被设定解出随机数的最短时限,这个时限就是创造区块的时间。

如果你能够比其他矿工更早地解出随机数,你将获得一个区块作为奖励。POC的一个典型项目就是Burst。

POC的优点和缺点

硬盘挖矿比一般的POW挖矿要节省能源,你不需要像昂贵的比特币挖矿一样投入大量金钱。你家庭电脑中的硬盘就足以开启POC挖矿。

但事实上,POC有一些致命的缺点。首先,这种机制会造成大量多余的硬盘空间,系统会倾向那些拥有更大存储量的矿工,这对去中心化是个威胁。黑客将开发系统,以及令系统感染上恶意挖矿软件。

Proof-of-Burn 燃烧证明

这个共识序列是令人印象深刻的。为了保护POW加密货币,一部分的加密货币将被烧毁!当矿工将一部分加密货币发送到“食客地址(Eater Address)”的时候,这个过程就会发生。

“食客地址”不能以任何理由花费上面的加密货币,有一个账本会持续追踪被烧毁的加密货币,来保证它们确实没有被花费。烧毁加密货币的用户将会得到一定报酬。

虽然燃烧是一种损失,但是损失是暂时的,因为这个机制将长期保护加密货币不受到黑客攻击。而且,燃烧机制将增加其余加密货币的价值权益。

这种机制增加了矿工开挖下一个区块的机会,同时增加他们未来的收益,所以,燃烧被认为是挖矿特权。对手就是一个加密货币的共识案例——运用这个区块链共识协议。

食客地址

为了然后加密货币,用户将其加密货币发送到食客地址。食客地址没有任何私钥,因此没有人能够进入这个地址,去花费上面的加密货币。同时,这些食客地址是随机生成的。

虽然这么加密货币无法追踪或者“永远消失”,但他们仍然被视为是合适的供给,以及被标记成被烧毁。

POB算法的利与弊

燃烧这些加密货币的初衷是为了增加稳定性。我们知道长期玩家是倾向长期持有加密货币以获得收益的。

系统通过为他们提供更加稳定的加密货币以及长期保障来支持这些长期投资者。同时,这也会增强去中心化以及创造一个更好的分布式网络。

但是无论从哪个角度看,燃烧意味着浪费。即使某些食客地址有超过价值100,000美元的比特币,但是也无法恢复,因为它们被烧毁了。

Proof-of-Weight 重量证明

重量证明是我们最后介绍的共识机制,它是POS共识机制的一次重大升级。在POS中,你拥有的代币越多,你将有机会发现更多,这导致了整个系统有失偏颇。

重量证明试图解决POS的偏颇问题。Algorand, Filecoin, Chia都采用了重量证明。重量证明考虑其他因素,而不是POS中拥有更多代币。

这些因素被成为“权重因素”,例如,Filecoin认为拥有的IPFS数据的数量为权重因素,其他因素包括但不限于时空证明和复制证明。

这种系统核心的优势包括定制化和扩展性,虽然激励性可能成为这种共识机制的一大挑战。 共识机制的比较


Chapter-8: 结论

是共识机制让区块链网络变得全面,当然,没有任何一种共识机制堪称完美,但是技术的美妙之处就是不断地改变以及完善。

如果没有这些其他的共识机制,我们可能仍然依赖POW,不管你喜欢与否,POW一定程度上威胁了去中心化以及区块链分布式的特性。

区块链技术的基础就是去中心化,是对抗君主政治的反抗,是普罗大众对腐化错误系统的终结。我们强烈期待,更好的共识机制的出现,改变我们的生活,创造更好的未来。

共识机制:区块链技术的根基相关推荐

  1. 从VAS公链上线看区块链共识与区块链技术发展

    最近整个币圈链圈销圈盘圈从10月下旬开始一直被一个来自暗网的项目VAS刷屏,开始对这个项目并未在意,认为只是一个模式币而已,11月1日VAS官网上线暗网,各种消息开始满天飞,各种打call,到处都是首 ...

  2. 共识机制-区块链核心技术之一

    id:BSN_2021 公众号:BSN研习社 区块链是一种多项计算机技术的集成融合创新.在这众多来源中,最重要的一个是共识机制技术. 共识机制就是所有记账节点之间怎么达成共识,去认定一个记录的有效性, ...

  3. 区块链技术的分析与应用

    随着信息技术的快速发展,数字货币.智能合约等问题逐渐浮出水面,传统的信息技术面临着诸多挑战.区块链技术作为一种新型的分布式账本技术,具有去中心化.不可篡改.透明等特点,成为了信息技术领域的热门话题.本 ...

  4. 探秘区块链技术在计算机取证过程中的机制与应用

    本文讨论区块链技术在计算机取证过程中扮演什么角色以及发挥的作用,同时,以实际案例论述其发挥作用的机制与原理. 摘要:本文讨论区块链技术在计算机取证过程中扮演什么角色以及发挥的作用,同时,以实际案例论述 ...

  5. 区块链技术指2.1 区块链技术

    摘要 区块链基础 区块链是随着比特币等数字加密货币的日益普及而逐渐兴起的一种全新技术,它提供了一种去中心化的.无需信任积累的信用建立范式,目前已经引起金融行业.科研机构.政府部门和投资公司的高度重视与 ...

  6. 区块链技术指南笔记(三):区块链运作的核心技术

    前言 在学习区块链的时候,有很多知识点,作为读者的我们不能第一时间去消化它(也没必要第一遍就弄懂),某些方面的设计思想看的也是一知半解.我遇到这种情况,一般会将书多看几遍,再去寻找各个知识点之间的关系 ...

  7. 区块链技术及其在信息安全领域的研究进展 简单概括

    一.摘要部分 区块链是一种源于数字加密货币比特币的分布式总账技术,其发展引起了产业界与学术界的广泛关注. 区块链具有去中心化.去信任.匿名.数据不可篡改等优势,突破了传统基于中心式技术的局限,具有广阔 ...

  8. 区块链技术流派和各主流平台概览

    如果你关注区块链技术长达几个月,可能也会跟我一样,对没完没了的原理介绍.前景描绘.行业探讨和链圈新闻产生了审美疲劳.没错,区块链必须与行业紧密结合,它也有颠覆人类协作方式之洪荒巨力,但是说到底它还是一 ...

  9. 基于区块链技术的超级账本(Hyperledger) - 从理论到实战

    什么是区块链?简单来说区块链就是一个分布式的记账本,或者分布式的数据库. 区块链的数据结构是一个链表,交易数据被存储到链表的区块中,区块链的第一个区块叫创世区块,除了创世块以外,每个区块还包含前一个区 ...

最新文章

  1. ITTC数据挖掘平台介绍(四) 框架改进和新功能
  2. PokeCats开发者日志(二)
  3. Javascript 调用XML制作连动下拉框
  4. Centos DHCP服务搭建及测试
  5. Hybris Commerce里的持久层
  6. 做一个有胆识的有为青年
  7. 数据分析告诉你,韦小宝跟他七个老婆哪个最亲?
  8. Controller数据导出Excel 详细教程
  9. ae计算机内存不足,解决电脑内存不足的解决方法|电脑内存不足怎么办
  10. oracle表空间配额和unlimited tablespace权限
  11. KeeperErrorCode = ConnectionLoss for /dubbo报错问题解决方法
  12. C语言输入年月日判断距今,C语言课程设计万年历打印.doc
  13. ADC或DAC中的LSB
  14. Git Bash 下进行快速复制粘贴
  15. 刮刮彩票 (20 分)
  16. 区块链产业发展面临的挑战、发展建议以及趋势丨2021中国区块链产业发展报告...
  17. 微信支付找不到sdk
  18. 学计算机学文学理,大学期末特惨专业排行榜!
  19. 手机空间不足?教你2招省5G空间
  20. C++11:使用 auto/decltype/result_of使代码可读易维护

热门文章

  1. 软件测试实验--数据工厂DataFactory+MySQL数据构造
  2. iOS 图片处理-利用GPUImage 磨皮和美白图片
  3. 终止forEach的循环
  4. bzoj 4025 二分图——线段树分治+LCT
  5. 高可用架构篇 MySQL源码编译安装(CentOS-6.6+MySQL-5.6)
  6. 2017年7个主要的金融行业数据趋势
  7. 自然语言处理:汉语分词
  8. 如何免费(轻成本)在网上做推广宣传
  9. 仿余额宝数字跳动效果 TextCounter
  10. Animation 模拟纸盒的爆破