点对点传输软件网络和对等式网络关系是什么?

  对等网络Peer-to-Peer一般常采用星型網络拓扑结构,最简单的对等网络就是使用双绞线直接相连的两台计算机如图,常常被称做工作组

  在对等网络中,计算机的数量通常不会超过10台网络结构相对比较简单。

  对等网不需要专门的服务器来支持网络也不需要其他组件来提高网络的性能,因而对等網络的价格 相对其他模式的网络来说要便宜很多对等网可以共享文件和网络打印机,如同使用本地打印机一样方便由于对等网的这些特点,使得它在家庭或者其他小型网络中应用得很广泛

  在对等式网络结构中,每一个节点之间的地位对等没有专用的服务器,在需要的情况下每一个节点既可以起客户机的作用也可以起服务器的作用这与C/S模式是不同的。


您需要 才可以下载或查看没有帐号?

}

下面是一张神经网络的图片现茬给此图的不同部分约定一些名字

有一个个体,属性值为:

  • 隐藏层:上图的四个结点
  • 输出层:上图的最后一层由一个结点构成
    • 输入层的噭活值,即输入特征 0 0
    • 它是一个4维的列向量维度就是隐藏神经元的个数

    最后要注意到,隐藏层以及最后的输出层是带有参数的这里的隐藏层将拥有一个参数矩阵  [1],表示这些参数是和第一层这个隐层有关的

    b[1]=?????b1?b2?b3?b4???????

    类似的输出层也有其关联的参数:

    • W[2]昰4维的列向量

    上一节介绍了只有一个隐层的神经网络的结构与符号表示,现在我们来看这个神经网络是如何计算输出 a表示每个神经元的輸出 W表示特征的权重,上标表示神经网

      ?W[1]?????????x1?x2?x3????????? ?input?+????????????b1[1]?b2[1]?b3[1]?b4[1]??????????????

    a[1]=????????????a1[1]?a2[1]?a3[1]?a4[1]??????????????=σ???????????????????????????z1[1]?z2[1]?z3[1]?z4[1]?????????????? ?z[1]?????????????????

    • 输出层计算(参考逻辑回归即单个神经元嘚计算):

    前面一节讲了单一训练个体的神经网络的输出值计算,下面讲多训练个体并计算出结果。

    对于一个给定的输入特征向量 x这四個等式可以计算出 y^?。这是针对于单一的训练个体的如果有m个训练个体,那么就需要重复这个过程

    [2]表示神经网络的第二层,即用第m个個体训练出来的第二层的输出值

    0


}

原标题:主流区块链共识机制的簡介与比较——区块链技术引卷之三

本文将介绍主流共识机制的特点探讨共识机制分类的标准并作出分类

在区块链被发明后的近十年历程里,不断有新的共识机制被创造出来有些算法在工作量证明的基础上作出改进,有些则将传统的分布式容错算法运用到区块链网络中我们尝试将共识机制的“容错”、“节点参与共识过程的资格”、“形成共识的依据”、“共识的内容”等要素作为区分不同类别共识機制的标准,将共识机制分为竞争记账权间接形成共识的Proof of X类、投票直接形成共识的BFT类、选举代理人间接参与共识的代理类以及舍弃传统区塊概念的DAG类共识

BTC的初衷是建设一个开放的公有区块链基础设施,网络中的节点可以自由地加入及退出平等地竞争记账权。如果节点获嘚记账权的概率与该节点拥有某种难以垄断的资源的比例相关并存在算法能够快速验证某个节点确实拥有这部分资源,就称这类共识机淛为Proof of X类共识X代表竞争记账权所需要的资源。这类共识机制包括以算力竞争的PoW、以权益竞争的PoS以及针对PoS的一些缺陷作出改进的PoA、PoSV、Casper等,鉯及按其他不易垄断的资源分配记账权的PoST、Proof of Authority等

BFT类共识机制与Proof of X采用了不同的思路形成非中心化的共识,并且同样能容忍网络中的拜占庭错誤即通过对提案(区块内容)直接投票表决,相同意见的票数超过一定比例则作为决策共识的“直接形成共识”主流的BFT类共识机制有pBFT、dBFT以及FBA。

代理类共识机制借鉴现实社会中的选举节点可以作为参选人参加选举,也可以给参选人投票节点控制的选票数量与其持有的某种权益或资源多少挂钩,网络定期按照节点的得票数选出一定数量的“共识节点”仅由共识节点按照一定的共识算法完成区块链网络嘚共识过程。

DAG(有向无环图)是一类可以作为记录区块链交易历史的数据结构不同于传统的将交易打包成区块,对区块形成共识的方式IOTA使用的Tangle(缠结)共识能够对交易直接形成共识。

最后我们总结了区块链共识机制的分类方式并且比较了PoS、PoW、BFT类共识的优势与缺陷。

风險提示:算力中心化风险、共识节点中心化风险

1 记账权的竞争——Proof of X类共识机制

1.5 将“浪费”的算力用于有意义的计算

2 直接形成共识——BFT类共識机制

2.1 pBFT——实用拜占庭容错

2.2 基于联邦拜占庭协议的共识机制

3 通过选举间接形成共识——Delegated共识机制

4 不再是区块“链”——DAG类共识机制

4.1 使用DAG作為记录账本的数据结构

5 几类共识机制的对比

5.1 共识机制分类标准

在上一篇专题《坎坷的“共识机制”之路——区块链技术引卷之一》中我們以BTC为例分析了Proof of Work(PoW,工作量证明)共识机制中本聪在BTC白皮书:《一种点对点的电子现金系统》中提出了一种能够应用到区块链中的PoW共识機制,其核心思想是通过要求网络中的节点付出一定量的算力竞争记录区块的权利(即记账权)来保证共识的一致性。

我们回顾一下上篇专题提出的“共识机制关键要素”并将PoW共识机制的特点总结如下:

1. 容错:PoW能够容忍拜占庭节点,并且容错能力为1/2;

2. CAP:PoW可以满足CAP但网絡效率较低;

3. 哪些节点可以参与共识过程:网络中的全部节点;

4. 节点如何获得记账权:通过解决Hash谜题;

5. 需要形成共识的内容:若干交易打包的区块;

6. 形成共识的依据:区块内的交易是否合法,以及当前链是否为最长链;

7. 激励措施:记账节点可以获得区块奖励;

8. 惩罚措施:没囿对恶意节点直接的惩罚机制(但有挖矿的沉没成本);

4和6分别代表了工作量证明的两个特点:一是工作量(Work)由于节点需要不断改变區块头中的nonce值使区块Hash满足一定的条件,找到合法区块的节点必然需要付出相应的工作量即为Work;二是证明(Proof),其他节点可以迅速地验证區块的合法性即能够对节点的工作量进行检验,即为Proof

随着数字通证逐步被更多的人所认知,人们也对其采用的底层区块链技术的共识機制进行不断改进其中有一类称为Proof of X。与PoW类似这类共识机制主要针对PoW的节点竞争记账权的方式作出改进或替代方案。

1记账权的竞争——Proof of X類共识机制

BTC的初衷是建设一个开放的公有区块链基础设施网络中的节点可以自由地加入以及退出,能够平等地竞争记账权在这一类共識机制下,节点获得记账权的概率与该节点拥有某种资源的比例相关并且这种资源是难以垄断的。此外还需要一个能够快速验证某个节點确实拥有这部分资源的算法

在PoW共识机制中,这种资源是所谓的“算力”即一定量的CPU或GPU计算时间,验证节点算力则是利用了Hash函数易于計算、内容隐秘的特性在PoS(Proof of Stake)共识中,资源是所谓的“权益”节点按照其持有的某种权益数量的比例分配记账权。此外还有PoSpace(Proof of Space)类共識资源是节点提供的一定量磁盘或者内存空间;Proof of Bandwith,资源是节点提供的网络带宽;Proof of Ownership资源是节点所持有的特定数据。

我们将PoW的哈希解谜过程表示为节点不断改变区块头部的nonce使区块Hash满足目标条件Target的过程可以由以下的公式描述:

Target根据网络的难度进行设定,难度每隔一段时间根據规定的算法进行调整目的是保证网络中挖掘出区块的时间期望为固定值。H(x)表示Hash函数我们把x的取值范围称为节点的搜索空间。

PoW机制中節点的搜索空间是所有正整数由于Hash函数的特性,不等式左边可以认为是在Hash函数值域上均匀分布的随机变量Target对于全体节点都是相同的,節点获得记账权的概率取决于其计算Hash的速度

BTC以及其分叉通证、LTC、ETH(当前Metropolis版本)等大部分主流数字通证均采用PoW共识机制,它们之间的区别主要是采用的哈希算法不同以及具体参数例如难度调节机制、区块激励机制的不同。例如LTC的总量为8400万个区块速度改为2.5分钟,采用scrypt哈希算法ETH进一步减少了区块时间,并对引用孤块的矿工提供一定奖励采用GPU挖矿算法削弱专业ASIC矿机的算力优势。XMR、ZCash在BTC基础上增强了交易的匿洺性等

在上一篇专题中,我们总结了几种恶意攻击者可能采取的攻击方式

女巫攻击是攻击者以大量制造节点“伪装”成不同身份加入網络的方式发起的攻击。在PoW共识机制下节点虽然无需身份验证,但获得记账奖励的概率与节点的实际算力相关女巫攻击是不可行的。

雙重支付攻击需要攻击者在发出一笔交易后挖掘出比当前链更长的包含双花交易的攻击链因此又称为重组区块历史类型的攻击。攻击者偅组区块链历史成功的概率随他落后当前最长链的区块个数增加而降低中本聪在BTC白皮书中给出如下计算公式:

其中z表示交易的接收者观察到这笔交易得到的区块确认个数,P表示攻击者发动双重支付攻击成功的概率q表示攻击者掌握的算力占全网算力比例,且q<0.5例如在q=0.1的条件下,当z=5时P已经小于0.001。

51%攻击在以上公式中,若q>p即攻击者掌握的算力超过了全网算力的一半时,无论诚实的交易者观察到一笔交易被哆少个区块确认攻击者总是可以追上最长链,也就是所说的51%攻击但发动这种攻击所需的成本是巨大的,并且会使通证严重贬值

PoS 按节點持有的某种权益占网络中全部节点的比例来分配记账权,它的出现源自人们对PoW“算力竞赛”中消耗大量能源的批判PoS尝试在不使用大量能源的情况下,仍然保证不弱于PoW共识机制的安全性

点点(Peercoin)是首个将PoS理念加入到共识机制中的数字通证。严格来说Peercoin采用的是PoS+PoW混合共识机淛考虑到它在PoS发展历程中的重要地位,我们将Peercoin作为分析PoS共识机制的第一个例子

Peercoin提出了“币龄”的概念。通证币龄等于通证的数量乘以該部分通证自上次交易经过的时间Peercoin沿用与BTC相似的区块以及交易结构设计,因此同样有UTXO(未使用交易输出)这一概念一笔UTXO包含一定数量嘚通证,并记录了包含这笔交易的区块被挖掘的时间从而可以计算出对应的币龄。当UTXO被使用后这部分通证的币龄也被清零。Peercoin使用CoinDay作为幣龄的单位(1单位通证1天积累的币龄)

与BTC区块的coinbase(币基)交易对应,Peercoin的PoS区块还包含一个类似的coinstake(币利)交易它的输入包含核心(Kernel)输叺与权益(Stake)输入两部分。节点可以将自己的UTXO作为核心输入并通过消耗币龄获取生产PoS区块的权利。Peercoin的PoS挖矿过程与PoW工作量证明类似同样需要节点进行哈希计算并使结果满足目标值,目标值越大则越容易获得生产区块的权利。其挖矿过程可以表示为:

不等式左边Hash函数搜索涳间中的Timestamp表示当前时间Peercoin规定了一个区块的时间戳必须在由前一个区块所决定的时间范围之内,否则该区块不会被其他节点接受StakeModifier是每过┅定数量区块就根据最新区块Hash重新计算的值,它的设计是为了防止节点提前计算未来某个时间的Hash值这样得出的Hash可以保证是节点在规定的時间范围内计算出的。不等式右边BaseTarget由当前PoS挖矿的基础难度决定CoinAge表示节点投入参与记账权竞争的币龄。

与PoW网络的节点在一个非常广泛的搜索空间里寻找nonce不同由于时间戳取整数进行Hash运算, Peercoin网络中的节点固定时间间隔内的搜索空间是有限的限制了节点因算力差异产生的竞争。而节点币龄越大目标空间也越大,Hash值满足条件的概率越高

Peercoin的激励机制在于,获得记账权的节点可以添加一笔权益输入根据区块内所有交易消耗总币龄的多少生产一定比例的利息支付给自己,Peercoin中每一单位的通证一年的币龄会产生1%的利息

与PoW的最长链原则类似(累计工莋量最高),Peercoin的区块也会记录该区块内交易的总币龄累计消耗币龄最多的链将成为主链。

未来币(Nextcoin)是另一种以不同的方式实现PoS共识机淛的数字通证2013年9月一个名为BCNext的用户在著名的bitcointalk.org发表了一篇帖子,宣布将发行一个“机制与代码与BTC完全不同”的数字通证即Nextcoin。它引入了“透明锻造”的概念并由此实现纯粹的PoS。

Nextcoin没有采用BTC的UTXO设计方案而是使用账户余额方案,更加接近传统银行的处理方式每一个账户(Account)對应一个私钥,链上的区块都有独特的生成签名(generationSig)当新一轮共识开始时,参与“锻造区块”的账户用自己的私钥对前一个区块的生成簽名进行签名采用SHA256散列算法计算该签名结果的Hash,取前8个字节称为hit。只要hit值满足目标值则该账户可以生产一个新区块。将其判定方式表示为:

不等式右边的目标值由基础难度、账户有效余额、当前时间与前一个区块生产的时间间隔相乘得到基础难度是对所有账户都相同嘚、随全网有效总余额的变化不断调整,各账户独立的目标值与其有效余额有关随时间的流逝增加。

由于在上一个区块产生时其生成簽名已经确定了,每个账户的hit值也由此确定了相比BTC需要搜索合适的nonce值,Peercoin要在一个有限区间中进行Hash计算Nextcoin的账户没有任何搜索空间,由于hit徝仅有8字节因此随着目标值的不断增加,总是有账户能够满足条件生产区块hit是一个对所有账户期望值相同的随机变量,因此账户获得記账权的概率与其有效余额成正比

前一个区块确定后,hit、基础难度、有效余额都是确定的因此每个账户可以立即计算出自己需要经过哆长时间可以获得生产区块的权利,并将这一时间向其他节点广播这样全部节点都可以预知在接下来的某个时刻,是哪个节点能够生产噺区块这就是所谓的“透明锻造”,在前一个区块生产出来时下一个区块的“未来”就已经确定了。

以通证数量代替币龄作为竞争记賬权依据的方式也被很多山寨通证如Novacoin、Blackcoin采用

在网络安全性方面,对PoS共识机制发起51%攻击的可能仍然存在但相比PoW,对PoS进行51%攻击所需的成本通常可能会更高在以币龄为权益的PoS算法中,攻击者发起攻击不仅需要金钱成本还要付出时间成本,恶意囤积通证的可能性也被限制攻击者在记录一次区块后币龄会清零,该部分通证一段时间内不能再被用于竞争记账权增加了重组区块链历史、发动双花攻击的难度。朂后攻击者必须持有通证才能竞争记账权,发起以破坏区块链为目的攻击会使攻击者本身遭受损失

虽然解决了能源消耗问题,PoS也引入叻新的问题

在传统PoS中,节点不需要在线也可以累积币龄这可能导致网络在线的记账节点数量较低,网络安全得不到保障

另一方面,PoS對抗硬分叉的能力很弱即所谓Nothing at Stake(零成本,简写N@S)攻击

由于网络分叉后节点可以同时在两条链上拥有记账权益并同时获得收益,理性的節点会默认分叉行为的产生反而可能造成通证价值的下降。甚至在攻击者没有掌握51%以上记账权的情况下发起分叉仍然是能够成功的。

洏PoW的矿工如果想在分叉链上挖矿则必须切换一部分算力,这样造成在两条链上的收益均下降因此理性的矿工只会在最长链(即成为共識链概率最大的链)上挖矿。

解决N@S的方法主要是加入对不诚实节点的惩罚机制将在Casper共识部分阐述。

类似Nextcoin的PoS机制的缺点还包括:高度依赖精确的时间轴如果网络节点间的时间不统一,那么可能对区块的有效性无法形成共识另外,当记账节点非常多的时候最新区块附近鈈可避免地会产生很多分叉,因此需要交易确认需要一定时间以保证共识的一致性

PoA是一种PoW+PoS混合共识机制,最早在李启威(LTC的创造者)和其他三位作者共同发表的论文中提出针对传统PoS离线也可以积累币龄或权益,没有机制促使节点保持在线以维持网络运作的问题作出改进

在PoA共识机制中,节点首先通过传统PoW的方式进行挖矿但是这个新区块不打包任何交易,仅仅包含区块头信息和区块coinbase奖励的发送地址

当涳区块被产出后,系统切换到PoS模式并随机选出若干个权益持有人(Stakeholder)向空区块中填充交易并签名,称他们为“验证者”(Validator)当随机选絀的验证者全部签署了区块后,该区块便成为共识验证者和区块的PoW开采者将该区块的手续费按一定规则分配。

PoA选择验证者(即为记账节點)的算法称为“Follow the Satoshi”(跟随中本聪)“聪”是BTC的最小货币单位,PoA将随机数映射到目前已经开采出的1“聪”通证上并且从这1聪通证被开采出的区块开始追溯每一笔交易,直到它目前的持有人该名持有人就成为验证者。由于区块的开采和交易的排列是规定顺序的所以能夠以这种方式追溯交易历史。

Satoshi”方式每个节点成为验证者的概率与其持有权益的大小成正比。另外如果被选出的验证者没有对区块进荇签名,那么这个区块将作废因此希望竞争记账权利的节点需要保持在线以准备签署区块。这也是Activity(活跃)的原意有别于传统的节点離线也可以积累币龄的PoS共识。目前采用PoA的数字通证有Decred等

Casper是目前第二大公链Ethereum最受期待的升级之一,是ETH接下来的升级中将采用的PoS共识机制通过加入对恶意节点的惩罚措施来解决N@S零成本攻击。

区块仍然通过传统PoW方式产出并且每隔一定数量的区块设置一个PoS检查点(Checkpoint),选出一萣数量的验证人对检查点进行验证并投票投票阶段采用类似BFT的容错算法(BFT会在接下来部分讨论),若表决通过则检查点之前的所有区块鈈会再被撤销即在最长链协议对链达成概率共识的基础上再对一定数量的区块达成最终共识。降低了对网络发动双花、分叉攻击的可能性

Casper协议的主要特点是:

问责制。Casper协议中验证人需要向智能合约支付一笔“押金”,并作为分配区块收益的凭证违反协议规则的节点昰可以被识别的,如果在共识过程中节点表现出恶意、消极或投机行为押金会被合约没收,这样极大地提高了攻击者发动攻击的成本唎如网络出现分叉时,验证人在检查点高度投票给两个不同的区块即同时在两个分叉上“投注”,此类行为被认为是支持N@S攻击的投机者将受到没收“押金”的惩罚。

动态选择验证人网络每隔一段时间根据投票动态地切换验证人,相对于传统BFT类共识机制更加非中心化

PoW+PoS混合共识。由于区块还是以PoW的方式生产的有一定的算力支撑,可以在一定程度上避免N@S攻击

Ouroboros(俄洛波洛斯),是北欧神话中一条衔着尾巴的巨蛇象征着“循环”与“无限”。有些PoW共识的支持者认为PoS共识机制以自身发行的通证为资源来生产新的通证,没有任何的外部资源作为区块链安全与通证价值的担保以“一条衔住自己尾巴的蛇”来比喻PoS。

Ouroboros作为新一代数字通证Cardano的共识机制是首个被学术界证明是安铨健壮的PoS共识算法,以此作为共识的名称体现了其信心与技术水平。相比传统PoS选择验证人的随机算法Ouroboros实现了一个安全的、无法被大量算力或其他计算资源操纵、并且可验证的随机数协议。并以此随机数算法为工具通过类似PoA的“Follow the Satoshi”算法按照节点持有的权益选择验证者生產区块。

Ouroboros同样能有效地防止N@S攻击通过随机算法选择验证者生产区块,因此不会像PoW共识机制存在网络中几乎同时挖掘出多个合法区块的可能性从根源上减少了网络分叉发生的几率。另外在共识算法中加入使验证者忽略在自己上次在线时收到的区块之前的所有分叉的协议,来增强共识的最终性

PoSV由Reddcoin提出,针对传统PoS机制鼓励人们持有通证从而减少了网络活跃度的问题作出改进。它借鉴经济学“货币流通速喥”的概念认为数字通证的价值在于“所有权”(Stake)的确认和价值的“流通”(Velocity)两方面。

PoSV同样根据节点参与竞争的币龄分配记账权泹是将币龄的计算公式修改为增长率指数衰减的函数。Reddcoin将币龄增长率的半衰期设为1个月假设单位通证在第1天能够积累1CoinDay币龄,在第31天只能積累0.5CoinDay币龄第61天只能积累0.25CoinDay币龄,以此类推通过这种方式促使节点在持有通证一段时间后用它进行一笔交易,从而重新开始计算币龄提高网络中通证的流通速度。

节点用于竞选记账权的资源不再是算力或是权益而是“Authority”,可以理解为权限、身份之意节点必须具有真实鈳验证的身份,才能获得成为区块验证者记账的权限而一旦被发现恶意行为,成为验证者的权限会被移除节点的身份认证可以由初始嘚一组“管理员”节点授予。

采用类似“换届选举”的方式节点通过抵押通证投票选出若干验证者组成的“委员会”轮流生产区块,每10汾钟进行一轮投票并且通过扣除已经生产过区块的节点的的票数等方式增加区块生产者的流动性。

Republication)共识机制的基础上搭建一个非中心囮的共享存储网络根据IPFS白皮书的描述,节点可以通过PoST生成一个可验证的、表明自己在一段时间内存储了规定数据的证明根据提供存储涳间的大小获得相应Filecoin挖矿及交易费用产生的权益。

是一类较为有趣的共识机制节点需要通过“燃烧”一定数量通证或其他链上的通证如BTC、ETH来换取一定的权重,并根据此权重竞争记账权并且权重会随着时间流逝降低。“燃烧”通证的方式可以通过将通证转给一个不存在或鍺通过合约锁定的地址上完成

1.5 将“浪费”的算力用于有意义的计算

为解决PoW共识过程大量节点的算力被浪费的问题,一些共识机制对节点偅复计算哈希值的过程作出改进将Hash函数替换为其他验证结果很容易但寻找满足目标的解非常困难的函数,例如寻找大素数希望能够尽量利用这些被“浪费”的算力。例如Primecoin等

2直接形成共识——BFT类共识机制

Proof of X类共识通过验证节点持有一定比例的某种资源如算力、权益,节点囿相应的概率被选为某个区块的生产者(取得记账权)在符合一定规则的前提下,由该节点决定区块的内容再经其他节点验证。生产匼法区块的节点通常可以获得一定的激励通常称这类共识是“间接形成”的。

BFT类共识机制与Proof of X采用了不同的思路形成非中心化的共识并苴同样能容忍网络中的拜占庭错误,即通过对提案(区块内容)直接投票表决相同意见的票数超过一定比例则作为决策共识的“直接形荿共识”。主流的BFT类共识机制有pBFT以及FBA

2.1 pBFT——实用拜占庭容错

pBFT最早在1999年提出,原目的是为了解决传统分布式系统中的一致性问题与区块链囲识机制的目标不谋而合,是首个高效地解决拜占庭容错问题的算法目前超级账本Hyperledger Fabric采用pBFT共识机制。

pBFT算法引入“视图”(View)和“主从节点”(Replica)的概念Replica包括主节点(Primary)以及备份节点(Backups),主节点通常在每一轮共识过程开始时随机选取或者轮流担任“视图”表示一次主节點分发请求的过程。

当一轮共识开始时首先检查主节点的有效性。如果备份节点检测到主节点失效需要选举出新的主节点,称为“视圖更换”共识过程分为包括预准备、准备、确认阶段,又称“三阶段协议”

如果将pBFT算法应用到区块链中,假设n个节点中最多有f个拜占庭节点所有共识节点独立监听全网的交易广播,当主节点确定后将区块及签名信息以预准备消息的形式广播到备份节点,备份节点收箌交易并确认合法后就会进入准备阶段向包括主节点在内的其他节点发送一条准备消息;否则会认为主节点发生故障,发出一条更改视圖的消息

经过两轮消息广播后每个节点会收到一个来自预准备消息的区块和若干条来自其他节点准备消息的区块。节点使用预准备区块驗证准备区块的合法性如果任意节点收到合法的区块(包括自身的准备消息)大于等于2f+1,则节点进入确认阶段广播一条确认消息。若節点收到2f+1条确认消息(包括自身的确认消息)表明该区块得到最终确认一轮共识完成。

pBFT算法对于一个n=3f+1个节点组成的区块链网络可以提供f的容错能力,容错能力近似为1/3由于一轮共识过程中节点间的通信次数与n^2成正比,考虑到通信延迟的存在当节点的数量达到一定规模後,pBFT的效率会严重下降目前实践中还没有拥有大规模共识节点的采用pBFT算法的区块链网络应用。

2.2 基于联邦拜占庭协议的共识机制

FBA(Federated Byzantine Agreement联邦拜占庭协议)是另一种解决拜占庭将军问题的算法。它通过一种在子网络内部形成信任(即联邦)将子网络作为整体视为网络的节点的協议。类比节点之间保持通信子网络之间也应该保证最低的连通度。

基于FBA的共识机制有RPCA(瑞波共识机制)、恒星共识机制等

在瑞波共識机制中,节点分为验证节点和不参与共识过程的非验证节点验证节点是被服务节点加入信任列表的节点。服务节点由瑞波基金会选出并且拥有自己的信任节点列表(UNL, Unique Node List),在共识过程中服务节点只接受来自UNL的投票,并且信任它们不会联合作弊这样服务节点以及它的UNL僦组成一个“联邦”,在其内部可以按一定的规则达成共识从而将其看作一个整体。

瑞波共识机制分两阶段进行:形成交易集的共识以忣形成新区块的共识在一轮共识开始后,每个节点监听网络中的需要确认的交易将其放到一个交易候选集中。服务节点对自己UNL节点的候选集做并集并且对每一个交易在UNL中投票表决,最终得到80%投票的交易会被放入交易集中不满足条件的交易会被丢弃或重新放入候选集。

形成交易集后每一个节点开始将交易集打包为新的区块并计算区块Hash,广播到网络中服务节点接收到来自UNL广播的Hash值,若计算出比例最高的Hash值占比超过80%则说明该Hash对应的区块成为最新的共识。网络的容错能力为1/5

恒星共识机制与RPCA类似,恒星共识机制的特点是通过节点可以洎由地选择要加入的“联邦”无需中心化的组织预先选出“服务节点”。具体共识机制实现方式较为复杂此处不再详细介绍。

3通过选舉间接形成共识——Delegated共识机制

前面提到pBFT、FBA等共识机制有一些局限:参与共识的节点数量有限制或者参与共识的部分节点必须是可信任的。但一些公共区块链希望尽可能多的节点参与到共识过程中去因此一类“代理”共识机制被发明了。借鉴现实社会中的选举节点可以莋为参选人参加选举,也可以给参选人投票节点控制的选票数量与其持有的某种权益或资源多少挂钩,网络定期按照节点的得票数选出┅定数量的“共识节点”仅由共识节点完成区块链网络的共识过程。

虽然PoS针对PoW能源消耗等不足做出了改进但它们仍然存在区块容量、絀块速度等方面的局限。为了解决这些问题Dan Larimer(BM)于2013年启动了BitShares项目,采用了一种通过代理投票实现大部分节点参与共识的共识机制DPoS

在BitShares网絡中,通证被称为“股”通证的持有者被视作股东。股东拥有每股一票选举“见证人”的权利以及成为候选人参与竞选的权利,获得選票前101名的节点获得参与网络共识过程的资格被称为“见证人”。各见证人的记账权利是相同的不因获票数的多少产生区别。网络中嘚投票是实时进行的间隔固定的时间重新统计获票数。

见证人的义务包括提供带宽以及计算能力以维持网络的运作、参与共识过程生产區块、维护网络的安全见证人可以通过生产区块获得区块奖励及交易费用,但如果股东们发现见证人未能履行义务或作出不符合整体利益的行为见证人会被取消记账权,由获票数最多的候选人替补

每个见证人按照一定的顺序(BitShares中是随机的)轮流获得生产区块的机会,洅根据一定的规则对区块链达成共识在BitShares中,见证人根据类似PoW的最长链原则选择在高度最高的区块后添加自己的区块

继BitShares之后,BM又开发了Steemit、EOS等同样使用DPoS共识机制的区块链项目EOS使用的DPoS-BFT共识机制在以股权投票选举出见证人(EOS称为BP,Block Producer)的基础上使用BFT类算法在BP之间形成共识。EOS的見证人共有21名在BFT的三阶段协议中,区块得到15个BP的确认就可最终确认

另一种dBFT是由NEO提出的对pBFT共识算法的改进。以NEO为例NEO网络中有两种通证,管理通证NEO以及燃料通证GAS节点根据持有管理通证的份额获得相应数量的选票,选举出一定数量的见证人(共识节点)由见证人通过改進的pBFT算法形成共识,生产区块区块中会有奖励的燃料通证,按持有NEO的比例分配给各节点

从本质上来说,NEO的dBFT与EOS的DPoS-BFT共识类似所谓“dPoS”是指见证人根据获得获得权益支持的多少选出,见证人形成共识的算法可以是BFT或其他算法NEO网络中燃料通证奖励是直接按权益比例分配的,鈈涉及PoS共识过程

代理类共识机制中,最终参与共识的只有数量有限的若干个见证人见证人是由网络中的全体节点投票选出的,理论上見证人因担心不符合选民利益的举动会让自己失去选票会对自己的行为有所约束。此类共识机制既保证了一定的非中心化程度相对PoW提高了网络效率,是两者的相对均衡但同样存在着一些缺陷。

由于见证人的数量有限并且公开攻击者想要发动DDoS攻击较为容易,见证人需偠额外的保护措施增加了运行共识节点的成本。

类似PoS共识中的“富者更富”掌握了更多具有投票权的通证的节点通常有更大的话语权,甚至可以操纵投票结果而如果限制节点的最高投票权重,也可以通过转移通证到不同的节点来规避如果实行“一节点一票”的机制,又会导致“女巫攻击”变得可行寻找一个平衡安全性与非中心化的投票算法是较为困难的。

4不再是区块“链”——DAG类共识机制

4.1 使用DAG作為记录账本的数据结构

我们之前分析的共识机制中节点所维护的交易历史是一个由区块组成的哈希链表,它具有单向、线性的特点区塊只能作为唯一一个区块的后继区块,并且区块只能有唯一的后继区块记账节点收集一段时间内的未确认交易,打包进区块并对区块戓者链达成共识。

而DAG(Directed Acyclic Graph有向无环图)是一种计算机科学领域常用的数据结构,它满足每条边都是有向的并且从任意顶点出发无法经若干條边回到该点IOTA就是采用DAG作为记录交易历史的数据结构,使用Tangle(缠结)技术对交易形成共识的创新型数字通证

在IOTA中,一笔交易视为顶点它可以选择两笔已经存在于区块链历史(IOTA称为Tangle)中的交易验证其合法性并引用(又称“连接”)。这样就形成了两条有向的边由于节點加入Tangle的时间存在顺序关系,因此Tangle中不会存在环路

如图,没有被任何交易验证过的交易称为tip(末端图中灰色顶点),一笔新的交易需偠选择两个tip进行验证并确保它们与之前的任何的交易没有冲突。如果验证合法则验证路径(按交易引用的交易遍历下去得到的交易集合图中灰色阴影)上的交易就得到一次确认。

按交易得到确认次数的多少可以划分不同的确认级别如果一笔交易得到所有tip的确认,那么稱它是被完全确认的(图中绿色顶点)

Tangle共识不需要专门负责记账的矿工,而是由新交易给历史交易提供验证因此不需要交易费用。交噫者要付出的代价是付出算力验证两个tip是否与tangle中的历史交易冲突为网络提供安全性。

Tangle共识的优势在于不需要将交易打包成区块。由于單个节点验证tip的效率很高因此交易得到确认的速度取决于新交易加入Tangle的速度。

Tangle共识的缺点是对交易缺乏过滤机制因此容易遭到大量垃圾交易的攻击,并且没有有效的机制过滤作恶的节点

5.1 共识机制分类标准

区块链的近十年历程里,不断有新的共识机制被创造出来有些算法对工作量证明作出了改进,有些则是将传统的分布式容错算法运用到区块链网络中我们尝试将共识机制要素作为区分不同类别共识機制的标准。

根据“容错”可以将共识机制分为能够容忍拜占庭错误与不能容忍拜占庭错误两类传统的分布式共识算法如Paxos、RAFT便属于前一類,本文不再赘述而是主要分析适用于分布式对等网络的具有拜占庭容错能力的共识机制。

根据 “节点如何获得记账权”和“形成共识嘚依据”可以将共识机制分为间接形成共识和直接形成共识两类PoW、PoS等属于前者,而pBFT、FBA等属于后者

根据“节点参与共识过程的资格”可鉯将共识机制分为全体参与共识、投票选举见证人、需要身份认证非中心化程度不同的三类。

根据 “共识的内容”可以将共识机制分为对區块(交易的集合)形成共识以及对交易直接形成共识例如IOTA采用的共识机制就属于后者。

此外在共识的不同阶段结合不同算法的优势產生的“混合共识机制”也是未来共识机制演进的趋势。

BFT和PoX都是在存在拜占庭节点的分布式对等网络中达成共识的算法两者存在若干区別。

参与共识的节点规模来说:

在n个节点组成的网络中BFT类算法完成一轮共识所需的时间复杂度为O(n^2),因此网络的规模有一定的限制共識过程开始需要在节点中选出“主节点”发出提案,因此需要维护一个可信任的节点身份列表可扩展性较低。大规模的网络通常采用联邦拜占庭协议或代理投票共识中心化程度较高。

采用PoX类共识的网络中所有节点都根据其拥有的某种资源来竞争记账权理论上可以实现較低的中心化程度以及相对较高的扩展性。

选择记账节点的角度来说:

BFT类共识是轮流更换“主节点”发出区块提案所有节点直接对区塊进行投票表决,称为直接达成共识不存在严格意义的记账节点。PoX类共识通过固定的规则先选出记账节点由记账节点决定区块的内容,再通过一定规则对可能出现的分叉链进行选择称为间接达成共识。

BFT类共识在区块被记录到区块链历史上之后不会发生重组或分叉。洏PoX类共识即使在没有恶意节点的情况下也有发生分叉的可能性,需要通过一定的规则对链达成共识PoX共识通常需要一定的区块确认,牺牲交易效率以保证非中心化的共识一致性

BFT类共识没有挖矿过程,可以没有激励机制而PoX类共识需要激励机制来约束记账节点不会作出破壞区块链的行为,并增加恶意节点发动攻击的成本

网络的实际性能来说:

BFT类共识由于直接达成共识,因此响应时间(指一笔交易从广播到得到确认的时间)快交易承载力高。PoX类共识由于客观的区块容量、出块速度、网络通信延迟的限制为了保证网络安全性,只能牺牲交易承载力与响应时间而相比BFT,PoX的优势在于扩展性和非中心化程度

从共识机制层面来说,PoX类共识的主要区别在于节点竞争记账权的依据和验证节点确实拥有等量资源的算法以PoW与PoS的对比为例。

PoW共识中节点根据拥有算力的多少竞争记账权验证节点算力的方式是通过让節点完成哈希解谜(一定的工作量),根据采用的哈希函数或其他符合规则的函数又有细微差异例如BTC、BCH有专门用于计算SHA-256的ASIC矿机,而有些通证为了减少挖矿设备专业化可能带来的矿池中心化影响采用了其他特殊的哈希算法但它们的共同缺点是浪费大量的能源。此外BTC及类姒的分配方式决定经过一定时间后,区块激励会减少此时节点记账的成本被转嫁到交易手续费上。如果网络的交易量或者交易者愿意付絀的交易手续费无法支撑记账的能源消耗势必会造成网络算力的减少,导致安全性降低

PoS共识中节点获得记账权的概率与持有的权益相關,解决了能源消耗高的弊端但同时也带来了新的问题。一是前面提到的“零成本攻击”可以通过加入对作恶节点的惩罚遏制此类现潒;二是由于持有的权益越多,节点预期将来能够获得的收益也越多因此相当于鼓励人们持有通证,导致网络的交易量下降另一方面,也导致卡特尔的形成即寡头垄断区块链的记账权,造成中心化和安全问题有几种对PoS的改进针对这些问题提出了解决方案,但仍不成熟三是大量的通证是通过募资分配或“预挖”的,造成初始分配的不均衡

因一些原因,本文中的一些名词标注并不是十分精准主要洳:通证、数字通证、数字currency、货币、token、Crowdsale等,读者如有疑问可来电来函共同探讨。

}

我要回帖

更多关于 点对点传输 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信