共识算法

共识算法

共识算法是指一种数据保存、处理和传输过程中,参与方之间通过特定的算法协商达成共识的一种算法模型。其目的是让各个参与方能够达成一致的结果,避免出现同时存在多个结果的情况,以保证最终的结果的有效性和可信度。


共识算法有许多种,包括工作量证明(Proof-of-Work)和拜占庭将军问题(Byzantine Generals Problem),以及改进版的工作量证明算法(POW),以及它们抽象之后的变体,如共识机制(Consensus Mechanism),等等。

工作量证明(Proof-of-Work)是最初用于比特币的共识算法,该算法通过让网络中的节点执行大量的计算耗时的hash运算,来证明节点有能力拥有对数据的有效控制权,这样就有能力参与网络的共识。

拜占庭将军问题(Byzantine Generals Problem)是Larry Lamport等人发明的一种可以解决分布式系统的安全可靠性问题的算法,也是区块链技术分布式系统的基础之一,BGP问题考虑的是可以让多个网络有效地同步和确认数据,而不受到所谓的“拜占庭将军问题”的干扰。

另一类新的共识算法,是改进版的工作量证明算法(POW)——挖矿,挖矿是共识算法的一种,让网络上的节点参与到一起来讨论新交易的可验证性,节点根据已有的交易块来生成新的交易块,最终网络中有共识产生,然后新的交易可以被放入网络中执行。

此外,还有另外一种抽象之后的变体,叫做共识机制(Consensus Mechanism),它考虑的是通过特定算法来让网络的所有节点都能达成共识,以及多个不同类型节点之间如何达到相同的共识的机制。

有许多种共识算法,一般而言,它们具有相似的特征,包括分布式性,共识机制和共识方案。它们都能够在不同节点之间提供一致的结果,最终形成一个可信的数据传输网络,从而确保各个节点的数据安全和数据有效性。


区块链共识算法


PoW (Proof of work) 工作量证明
PBFT (Practical byzantine fault tolerance) 实用拜占庭容错
PoS (Proof of stake) 权益证明
DPOS(Delegated proof of stake) 委托权益证明
Ripple 瑞波
Tendermint

PBFT (Practical byzantine fault tolerance) 实用拜占庭容错

通俗的解释就是大家共同商定好的一种规则,大家为了一个共同的目的共同达成的一个认知。区块链网络节点达成的记账共识与拜占庭将军问题的攻城是相似的,可以将区块链中的节点比作将军,不会背叛的将军比作正常节点,会背叛的将军比作恶意节点。

为了方便理解,我们假设有甲、乙、丙、丁 4 位将军攻城。同时有 3 位将军进攻视为进攻成功。我们假设将军乙为叛徒,将军甲派出通信兵告诉其他 3 位将军子时进攻,因为将军乙是叛徒,他收到将军甲的消息后,派出通信兵告诉将军丙和将军丁丑时进攻。将军丙收到将军甲的消息派出通信兵告诉将军乙和将军丁子时进攻。将军丁收到将军甲的消息派出通信兵告诉将军乙和将军丙子时进攻。于是:

将军乙收到:子时、子时、子时;

将军丙收到:子时、丑时、子时;

将军丁收到:子时、丑时、子时;

这样每个将军执行自己收到的最多的消息。将军丙和将军丁收到的子时进攻消息最多,将军甲、将军丙、将军丁 3 位将军于子时进攻,进攻成功。这就是 PBFT 算法,在研究拜占庭将军问题时,分布式节点总数必须大于或等于4,且恶意节点不能超过三分之一时,就可以保障节点达成一致性结果,区块链的中的各个节点按照这种算法即可达成共识。


PoW (Proof of work) 工作量证明

PoW的方法最直观——哈希函数是密码学上计算难度经过反复验证的东西,所以用它来做证明是最有效不过的。每发一条消息(上传一个区块)的时候,你要证明你付出了一定的算力,你的证据就是某串你加在区块里的无意义字符串,而加上这个字符串之后,你的区块的哈希值正好小于某个数。哈希函数的特性告诉我们,你没有任何取巧的方法可以做到这一点——唯一的可能是,你真的一个一个字符串地去试了。所以,我们知道你确实付出了很多的代价才能给出这么一个字符串。

然而,PoW不是没有缺陷,除了大量消耗能源之外,PoW的另外一个问题是它的价值回路必须要通过外部输入。


PoS (Proof of stake) 权益证明

POS的设想是非常好的——采用POS的货币的安全性直接与使用者相关,省去了矿工这个媒介。POS简单说就是,每当发表一条消息的时候,不用证明你付出了什么代价,而要证明你拥有一定数量的钱。而拥有钱代表着,如果你作弊损害了这个系统的安全性,你的钱会贬值,这变相地让你付出了代价。这东西更好的一点是,如果采用POS,实际上连挖矿奖励都不需要,因为POS实际上不需要付出任何代价。

然而,对于没钱的人而言,他们没代价可付,所以一些恶意行为对于他们是有益的,这就会导致著名的公地悲剧。这种叫Nothing-at-stake attack(无利益攻击),所有POS算法,必须有对付这种攻击的机制,否则就不能用。


DPOS(Delegated proof of stake) 委托权益证明

PoS 是根据节点的持币数量与持币时间争取记帐权, 而 DPoS 则是以网路中利益相关人的选票选择记帐节点。

DPoS 网路中,有两个重要的角色「见证人」与「利益相关者」

「见证人」或可称为超级节点,其工作是为区块链添加新的区块,也就是记帐。

「利益相关者」也就是网路中的持币者,能够透过交易所或钱包,在抵押代币后选择要支持谁来担任验证人,利益相关者持有的代币越多,投票的权重就越高,而有些验证人会提供分红,将挖矿奖励分享给支持他的利益相关者。

DPoS 的一个重要特点是,任何系统参数都可以通过利益相关者的投票进行更改。


Ripple 瑞波

Ripple(瑞波)是一种基于互联网的开源支付协议,可以实现去中心化的货币兑换、支付与清算功能。在 Ripple 的网络中,交易由客户端(应用)发起,经过追踪节点(tracking node)或验证节点(validatingnode)把交易广播到整个网络中。追踪节点的主要功能是分发交易信息以及响应客户端的账本请求。验证节点除包含追踪节点的所有功能外,还能够通过共识协议,在账本中增加新的账本实例数据

Ripple 共识算法:

Ripple 的共识达成发生在验证节点之间,每个验证节点都预先配置了一份可信任节点名单,每个验证节点都预先配置了一份可信任节点名单,称为 UNL(Unique Node List)。在名单上的节点可对交易达成进行投票。每隔几秒,Ripple 网络将进行如下共识过程:

1)每个验证节点会不断收到从网络发送过来的交易,通过与本地账本数据验证后,不合法的交易直接丢弃,合法的交易将汇总成交易候选集(candidate set)。交易候选集里面还包括之前共识过程无法确认而遗留下来的交易。

2)每个验证节点把自己的交易候选集作为提案发送给其他验证节点。

3)验证节点在收到其他节点发来的提案后,如果不是来自 UNL上的节点,则忽略该提案;如果是来自 UNL 上的节点,就会对比提案中的交易和本地的交易候选 候选集,如果有相同的交易,该交易就获得一票。在一定时间内,当交易获得超过 50%的票数时,则该交易进入下一轮。没有超过 50%的交易,将留待下一次共识过程去确认。

4)验证节点把超过 50%票数的交易作为提案发给其他节点,同时提高所需票数的阈值到 60%,重复步骤 3)步骤 4),直到阈值达到 80%。

5)验证节点把经过 80%UNL 节点确认的交易正式写入本地的账本数据中,称为最后关闭账本(Last Closed Ledger),即账本最后(最新)的状态。

Ripple是一种利用较大网络中的集体信任子网络的共识算法。在网络中,节点分为两种类型:参与共识过程的服务器和只转移资金的客户端。每台服务器都有一个唯一的节点列表(UNL)。UNL对服务器很重要。当确定是否将事务放入分类帐时,服务器将查询UNL中的节点,如果收到同意的数目已达到80%,该事务将被打包到分类帐中。对于节点,只要UNL中故障节点的百分比小于20%,分类帐将保持正确。


Tendermint

Tendermint属于拜占庭容错算法,它针对PBFT(实用拜占庭容错算法)做了优化,只需要有两轮即可达成共识。

投票

简单地说,Tendermint里面对高度为h的块共识的每一轮包括3个步骤:Propose(提议),Prevote(预投票),Precommit(预提交)。

当在某一轮达成共识(收到大于2/3的Precommit投票)后,就会进入对下一个高度的共识,从第0轮开始 。 Tendermint中有个很重要的概念:PoLC,全称为Proof of Lock Change,表示在某个特定的高度和轮数(height,round),对某个块或nil(空块)超过总结点2/3的Prevote投票集合,简单来说PoLC就是Prevote的投票集。Tendermint中的参与者叫做 “验证人”(validator)。他们轮流对交易区块进行提议,并对这些区块进行投票。区块会被提交到链上,每一个块占据一个高度h。当然提交块可能会失败,如果失败就会开始下一轮的提交。 要想成功提交一个块,需要有两个阶段的投票:预投票和预提交。在同一轮提交中,只有超过2/3 的验证人对同一个块进行了预提交,这个块才能被提交到链上。假设少于1/3的验证者是拜占庭,Tendermint保证安全永远不会被破坏。也就是说验证者(2/3以上)永远不会在同一个高度提交冲突的区块。因此,基于Temdermint的区块链永远不会分叉。

24小时热点

热点专题

Gem和Genie功能大对比

2022年4月25日,OpenSea官方发推宣布收购NFT交 ...

2397889

TopHolder 头号藏家

Genie 就是一个 NFT 市场的交易聚合器

Web3 中的「聚合器」是一个非常重要的组件,例如 1inc ...

2363077

嗨艺购

一个pi币现在值多少人民币?pi币2024年可以交易吗?

近年来,加密货币市场迅速发展,各种新型数字资产层出不穷。其中 ...

1625055

Alameda Research

USDT是什么币?新手如何购买和交易?

USDT是什么币?新手如何购买和交易?USDT是什么?USD ...

1301292

Cosmos Art

2024年pi币多少钱一个?介绍pi币历年价格

Pi币是一种新兴的数字货币,它的概念于2019年由一位斯坦福 ...

1287487

Alameda Research

CORE未来能涨到多少钱?core2024大约能涨到多少钱?

在数字货币市场中,CORE 作为一种加密货币,在过去的一段时 ...

878479

BitKeep钱包

欧科集团设立1000万元疫情防治专项基金 联合中华慈善总会共同支援一线防护工作

这个春节,新型冠状病毒疫情牵动着大家的心。1月26日0—24 ...

832338

TokenInsight

举报:PAXG币 (PAX Gold)涉嫌违法?

PAXG币(PAX Gold)是一种基于以太坊区块链网络创建 ...

780914

NewsBTC

什么是Polygon(Matic)网络?

由于网络拥堵仍然是以太坊区块链的一个问题,像Polygon这 ...

774002

树图链

ZT交易所介绍

ZT交易所介绍 ZT是为全球用户提供最优质数字资 ...

759409

ZT GLOBAL 交易所