主页 > imtoken中国版下载 > 主流共识算法

主流共识算法

imtoken中国版下载 2023-09-20 05:13:32

共识算法是指在分布式场景下,多个节点运行以达到相同数据状态的分布式算法。

一、简介

自人类社会出现以来,人们就一直从事着各种各样的贸易活动。 货币体系在整个贸易活动中起着重要的作用。 人类经历了从易货到贝壳等稀有产品,再到银本位。 而金本位,最后到今天的法币体系。 与一开始的易货交易相比,很明显实物货币体系可以大大提高贸易效率。 而法币和之前的实物货币有什么区别呢? 当今社会为什么要使用法定货币? 主要原因是国家为了控制国家的经济,将货币的发行权和使用权集中起来。 因此,与之前的货币相比,法本完全没有稀有属性。 只要国家政府愿意,各国政府都可以随意印钞票,但同时需要承担通货膨胀等风险。 法币基本上取决于国家政府的公信力。 当一个国家的经济更加稳定、更加富裕,黄金储备更加丰富时,该国的法币就更加受欢迎,更有说服力。 随着当今国际贸易的繁荣和国际社会的不稳定,法币的这些缺陷被逐渐放大。 比如每次国际贸易都需要兑换成对方的法定货币来实现贸易交易,而兑换的过程中会产生大量的金钱损失,比如经济困难和战争导致美国印钞美元随便乱用,美元在人们手中的价值越来越低。 美国政府窃取了人们的财富,也导致了美元公信力的下降。 因此,世界需要一种能够产生共识、被所有人认可、稀有、能够稳定发展的货币。 2008年,中本聪提出区块链思想,实现了数字货币比特币。 区块链采用点对点协议,基于共识协议,使节点间的决策达成共识,形成共识。 区块链技术因其去中心化、信息不可篡改不可伪造、公开等特点,在金融、政务、防伪溯源、征信、知识产权等领域有着非常广泛的应用场景. 比特币虽然是2008年提出的,但早在1970年代就提出了共识协议:“一系列机器能否达成共识,如何达成共识”。 这个问题称为共识。 共识算法是指在分布式场景下,多个节点运行以达到相同数据状态的分布式算法。

2.算法介绍

在分布式场景下,可能会出现网络丢包、时钟漂移、节点宕机、恶意行为等故障。 共识算法需要能够容忍这些错误,保证多个节点获得相同的数据状态。

因此,根据可容忍的故障类型不同,共识算法可以分为两类:

容错共识算法),可以容忍网络丢包、时钟漂移和部分节点宕机等良性错误。 常见的算法包括 Paxos 和 Raft。

容错共识算法),它可以容忍某些节点中的任何类型的错误,包括节点作恶的情况。 常见的算法包括 PBFT、工作量证明 (PoW)、权益证明 (PoS) 等。

根据不同的使用场景,共识算法可以分为公链共识和联盟链共识两种。

下面对几种常用的算法进行详细介绍:

2.1 工作量证明(PoW)

比特币共识算法_比特币算法源代码_比特币的共识

在比特币中,共识是只有拥有记账权的人才有资格修改账本,并且账本内容是一致的。 当比特币被提出时,采用的是工作量证明共识算法。 这一概念最早由 Cynthia Dwork 和 Moni Naor 在 1993 年的学术论文中提出。工作量证明是区块链网络中达成共识机制的主流算法。 也是比特币和以太坊等各种加密货币的底层共识模型,它描述了一个系统需要相当大的努力来挖掘新的区块,以防止恶意使用计算能力,以及其他可能对系统进行的攻击,例如拒绝服务攻击以及其他服务滥用行为,例如通过让服务请求者做一些要求高的工作来发送垃圾邮件。 在区块链网络中,PoW 共识机制要求每个挖矿节点通过大量计算证明自己完成并提交的工作,然后才有资格接收包含添加到区块链的区块的新交易。 其中,谁的算力更高,或者谁的工作量更大,就可以拥有记账权,被加入到下一个区块中。

工作量证明最常用的技术原理是哈希函数。 由于输入的哈希函数h的任意值n都会对应一个h(n)的结果,而只要n改变一位就会造成雪崩效应,所以几乎不可能从h(n ), 所以借用 Proof-of-work 可以通过指定寻找 h(n) 的特征并允许用户进行大量的穷举计算来实现。 比特币使用的哈希加密算法是 SHA-256。 破解加密算法SHA-256只能靠暴力破解比特币共识算法,这几乎是不可能的,需要数十年的计算。 除非有量子计算机,否则在量子计算机的计算能力面前,可能几个小时就解决了,但目前来说,根本不用担心。 目前量子计算机的发展还不足以使其实用化。 现有系统将在两者之间的很长一段时间内正常运行。 其加密算法也将同时进行优化。 因此,可以认为工作证明是非常可靠的。

PoW算法的主要优点是:

稳定可靠。 为了获得大多数节点的认可,攻击者必须投入超过整体计算的一半(51% 攻击)才能保证篡改结果。 这使得成功的攻击非常昂贵且难以实现。 从某种程度上来说是公平的,你投入的算力越多,你就越有可能获得包装权。

主要缺点是:

非常浪费能源。 投入单一加密货币的能源量可能超过一个小国家的总使用量。 由于加密货币成为世界范围内的投资标的,技术人员开发了由ASIC组成的专用计算设备(矿机)来独占算力。 这与加密货币的去中心化理念背道而驰。

2.2 延迟工作量证明(dPoW)

延迟工作量证明(dPoW)是Komodo项目设计的一种安全机制。 基本上,它是工作量证明 (PoW) 共识算法的修改版本,利用比特币区块链的哈希能力来增强网络安全性。 通过使用延迟工作量证明 (dPoW),Komodo 开发人员不仅可以保护自己的网络,还可以保护未来加入 Komodo 生态系统的任何第三方区块链。事实上,dPoW 可用于保护任何独立的网络使用UTXO模型开发的区块链项目

dPoW 是一种混合共识方法。 dPoW 的原理是让一个区块链利用第二个区块链的哈希算力(Hashing Power)提供的安全性。 这种机制是通过一组公证节点(Notary Node)来实现的。 公证节点实现将第一个区块链的数据添加到第二个区块链。 反过来,第二个区块链请求两个区块链之间的妥协,削弱第一个区块链的安全性。 .

比特币算法源代码_比特币共识算法_比特币的共识

dPoW 的主要优点是:

增加节能和安全性,dPoW 可以通过间接提供比特币而不支付比特币交易的价格来为其他区块链增值

主要缺点是:

只有使用 PoW 或 PoS 的区块链才能使用这种共识算法。 在公证人激活的模式下,不同节点的哈希率必须进行校准,否则哈希率之间的差异会爆炸

2.3 股权证明(PoS)

工作量证明 Pow 通过算力挖矿获得工作量证明,获得区块奖励,鼓励矿工参与维护。 Pow带来的主要问题是能耗。 仅比特币挖矿的能耗就接近一个国家的用电量。 挖矿比拼的是装备数量,其实就是拼钱。 那么为什么不直接拼钱分享奖励呢,省去不必要的挖矿过程。 因此,基于这一理论,权益证明被提出。

Proof-of-Stake的原理是指根据自己手中的份额来统计算力。 股权份额代表算力比例,持股人可以投票决定是否执行该决定。

显然 PoS 被提出作为 Pow 的替代技术,旨在解决 PoW 的一些固有问题。 PoS不采用传统的挖矿方式,但用户必须在系统中拥有一定的权益。 因此比特币共识算法,如果用户拥有一定比例的权益,那么用户挖出下一个区块的可能性就是这个百分比。对于工作量证明来说,它的优点是

节约能耗不需要挖矿闭环。 基于工作量的机制不是闭环,足够的法币可以对任何区块链加密货币发起攻击。 即使拥有货币为0,也可以通过购买装备进行51攻击,尤其是小额货币。 这种外部攻击使得这些货币很容易被扼杀在摇篮里。 而基于权益证明共识机制的加密货币,需要购买这种货币才能发动攻击,即攻击的资源必须来自内部,这种攻击的难度极高。 大量购买必然导致价格快速上涨,货币开发商可及时应对,或选择赚钱跑路。不易受规模经济影响

比特币算法源代码_比特币的共识_比特币共识算法

主要缺点是“Nothing at stake”攻击问题。 这种对多个区块历史(分叉)进行投票的方式不会对区块生成器造成任何损失,进而阻碍共识。 在 PoS 和 PoW 中,你可以在区块链的两边抵押资产(“无抵押”问题)。 在 PoW 中,你不能同时从链的两侧挖矿,因为它很难实现。

2.4 委托权益证明(DPoS)

委托权益证明(DPoS)算法是对 PoS 算法的改进。 DPoS算法中使用了见证人机制(witness)来解决中心化问题。 共有 N 个见证人在区块上签名。 DPoS 消除了交易等待一定数量的区块被不可信节点验证的需要。 通过减少对确认的要求,DPoS 算法大大提高了交易速度。 通过信任少数诚实节点,可以删除块签名过程中不必要的步骤。 DPoS 区块可以容纳比 PoW 或 PoS 更多的交易,使加密数字货币的交易速度接近 Visa 和 Mastercard 等中心化清算系统。

委托权益证明的原理是:

一是成立评审委员会。 世界上所有的节点都可以注册。 注册的前提是交定金。 通过审核并符合要求的前N个节点将被选为候选节点,进入下一轮,即选举阶段。 这些候选节点会通过各种演讲游说其他代币持有者,让他们为自己投票,对场外的选民来说可能会有一些好处。 最终得票总数排名前 m 的候选节点成为公链的代理人,负责出块。 每次出块时,系统都会随机选择一个代理出块。 Each elected agent has a term of office. 任期内,如发现任期内有不良行为,将被追究责任并引咎辞职。

委托权益证明的主要优点是:

节能。 快速地。 例如使用该算法的EOS出块时间为0.5秒。

主要缺点是:

略居中。 拥有高权益的参与者可以投票成为验证者。 这是最近EOS出现的问题。

比特币共识算法_比特币算法源代码_比特币的共识

2.5 实用拜占庭容错算法(PBFT)

拜占庭容错算法是主流共识算法之一,起源于Leslie Lamport在其论文中描述的拜占庭一般问题:

一群拜占庭将军各自率领一支军队围攻一座城市。 为了简化问题,将各军的行动策略限定为进攻或撤退。 由于一些部队进攻和一些撤退可能是灾难性的,将军们必须投票决定所有部队一起进攻或所有部队一起撤退的战略。 由于将军们分布在城池的不同方向,他们之间只能通过信使来往。 在投票过程中,每个将领会通过Messenger将自己投票进攻还是撤退的信息通知给其他所有的将领,这样每个将领就可以根据自己的投票结果和其他所有将领发送的信息知道共同的投票结果决定行动策略。

这个问题的第一个解决方案被称为“实用拜占庭容错”(PBFT)。 PBFT 最早由 MIT 的 Miguel 和 Barbara Liskov 于 1999 年在一篇学术论文中提出,他们的初衷是设计一个低延迟的存储系统设计系统,将算法的复杂度从指数级降低到多项式级,使得拜占庭容错算法在实际系统应用中具有可行性,主要针对不需要大交易量但需要处理大量事件的数字资产平台。 每个节点都可以发布公钥,这是允许的。 节点会对经过该节点的所有消息进行签名,以验证其准确性。当获得一定数量的签名时,交易被视为有效

PBFT算法的运行原理是:

将一个副本作为主节点,其他副本作为备份。 客户端向主节点发送请求使用服务操作。 主节点通过广播向其他副本发送请求。 所有副本执行请求并将结果发送回客户端。 客户端需要等待F+1个不同的副本节点发回相同的结果作为整个操作的最终结果。

PBFT算法的主要优点是:

高性能计算将算法复杂度从指数级降低到多项式级,使得拜占庭容错算法在实际系统应用中变得可行。

主要缺点是:

比特币算法源代码_比特币共识算法_比特币的共识

计算效率取决于参与协议的节点数量。 不适用于节点过多的区块链系统,可扩展性较差。 系统节点固定,无法应对公链开放环境,仅适用于联盟链或私有链环境。 PBFT算法要求总节点数n>=3f+1(其中f代表恶意节点数)。 系统故障节点数不超过全网节点数的1/3,容错率较低。 3 其他算法

除了上述共识算法外,还有很多算法是基于上述理论进行优化和改进的。 下面简单介绍一下:

Solana 采用 PoHistory(历史证明)共识算法。 基本思想不是相信交易中的时间戳,而是证明交易发生在某个事件之前或之后的某个时间点。 HyperLedger Sawtooth采用的时间证明(PoET,Proof of Elapsed Time)共识算法。 PoET 共识机制算法通常用于许可的区块链网络,它可以确定网络中获得区块的人的挖矿权。 许可的区块链网络要求任何潜在参与者在加入之前验证其身份。 根据公平抽奖制度的原则,每个节点中奖的机会均等。 PoET 机制为大量可能的网络参与者提供了平等的获胜机会。 PoET 的工作机制如下:网络中的每个参与节点都必须等待一段随机选择的时间,第一个完成设定等待时间的节点将获得一个新区块。 区块链网络中的每个节点都会产生一个随机的等待时间,并休眠一段设定的时间。 最先醒来的节点,即等待时间最短的节点,醒来并向区块链提交新区块,然后向整个对等网络广播必要的信息。 将重复相同的过程以发现下一个块。 NEM采用的PoImportance(重要性证明)共识算法。 NEM 共识网络不仅依赖于代币的数量,还依赖于生成系统的行为获得奖励的可能性。

区块收益率是多种因素之一,此外还有不良声誉(取决于不同的框架设计目标)、保证金以及从中进行和接收的交易数量。 它也被称为“重要性计算”,因为它提供了“有用”系统成员的更全面的画面。 IPFS Private Cluster 和 Quorum 采用的 RAFT 共识算法。 dRaft 是一种旨在取代 Paxos 的共识算法。 它的初衷是实现逻辑分离,比Paxos更容易理解。 但它也可以被正式证明是安全的,并提供一些额外的属性。 Raft 提供了一种在计算系统集群中实现分布式状态机的通用方法,确保集群中的每个节点对同一组状态转换达成共识。 它有一系列开源参考实现,包括 Go、C++、Java、Scala 等的完全声明式实现。 Neo采用的授权拜占庭容错算法,简称dBFT,是一种支持大规模通过代理投票参与共识的拜占庭容错共识算法。 在 Neo 中,代币持有者可以投票选出他们支持的簿记员。 之后,被选中的记账人组使用BFT算法达成共识,产生新的区块。 Neo 网络中的投票是实时的,而不是个人的。 dBFT 为具有共识节点的共识系统提供容错能力。 这种容错还涵盖了安全性和可用性,不受将军错误和拜占庭错误的影响,适用于任何网络环境。 dBFT具有良好的最终性,即一旦最终确认,区块将不会被分叉,交易也不会被撤销或回滚。 4. 讨论与比较分析

无论是在现实生活中还是在计算机世界中,共识算法都需要解决两个基本问题才能达成共识:

首先,如何提出提案才能获得共识? 例如,通过代币转移、随机选择、权重比较、解谜等; 其次,如何让多个节点对提案达成共识(同意或拒绝),例如投票、规则验证等。理论上,如果分布式系统中的每个节点都能够稳定运行并具有非常“理想”的性能(瞬时响应,超高吞吐量),而节点间的通信是瞬时传递的(如量子纠缠),则共识过程不是很理想。 困难,只需通过广播进行即时投票和回答。

不幸的是,这样一个“理想”的系统在现实中并不存在。 不同节点之间的通信存在延迟(光速的物理限制,通信处理延迟),任何一个链路都可能出现故障(系统规模越大,故障的可能性越高)。 例如,通信网络会中断,节点会失效,甚至被入侵的节点会故意伪造消息,破坏正常的共识过程。

此外,任何处理都是有成本的,共识也是如此。 当存在一定的信任前提(如经过验证的接入节点、节点性能稳定、安全性高)时,相对容易达成共识,共识性能也高; 相反,在不受信任的场景下很难达成共识。 付出很大的代价(如时间、经济、安全等)。

因此,共识算法的设计通常需要考虑如何达成共识。 算法的质量取决于达成共识的速度、安全性和性能消耗。 例如,PoW 算法通常会消耗大量的性能,而 DPoW 则考虑其他区块通过计算获得的安全性来降低性能消耗,而 PoS 通过权利证明避免计算来避免性能消耗,同时加快速度。 不可避免地会引入部分中心化的问题。 PBFT 算法运算性能高,但容错率低。

五、结语

区块链是一项突破性的技术。 加密货币的普及已经从信息的广泛传播转变为价值的广泛传播。 区块链技术将在各行各业得到妥善应用和实践。 在以上讨论中,本文总结了共识算法在区块链中的应用,以及主流的共识算法:工作量证明算法、延迟工作量证明算法、权益证明算法、委托权益证明算法、拜占庭容错算法分析与对比. 没有一种算法对任何场景都是完美的。 在速度、安全性和成本方面总是存在妥协,每个都有自己的优点和缺点。 未来会朝着混合方式的趋势发展更多。

本文参与登联社区写作激励计划,好文章好收益,欢迎正在阅读的你加入。