您当前的位置:首页 > 电脑百科 > 程序开发 > 算法

共识算法:计算机如何共同达成协议并保持安全

时间:2023-09-12 12:18:40  来源:51CTO  作者:

译者 | 刘涛

审校 | 重楼

在去中心化网络的世界里,计算机需要在没有中心权威控制的情况下协作。共识算法是帮助它们合作并找到共同基础的关键所在。这些算法确保网络中的所有节点对真实信息以及虚假信息地达成一致,以保证数据安全和交易有效性。

在这篇博客中,我们将以简单的术语探索共识算法的奥秘。我们将了解这些智能系统如何确保所有计算机状态一致,以及它们如何防范欺诈性攻击。做好准备,来发现计算机如何在一个没有中心权威控制的数字世界中团队协作并保持安全!

共识算法

简单来说,共识算法就是计算机网络的节点在某些问题上达成一致,比如共享数据库的状态或交易的有效性。它确保网络中的所有计算机保持状态一致,平稳协作。

实例展示

想象这样一个场景,一群朋友在网络文件夹中共享一份数字文档。所有人都可以访问这个文件并对其进行修改。然而,为避免混乱,他们需要就文档的同一个版本达成一致。

共识算法的实际应用

还是以上述一群朋友共享数字文档的场景为例:

  1. 爱丽丝对文档提出了修改建议,在文末添加一个新段落。
  2. 网络中的另外两个朋友鲍勃和查理看到了爱丽丝的建议,并表示赞同。他们对这项修改投了赞成票。
  3. 由于大多数朋友(超过一半)同意这一调整,所以小组成员达成共识,对文档进行了相应修改。
  4. 现在,所有朋友都可以看到更新后的版本,他们知道这个版本已经被公认为有效文件了。

在这个例子中,朋友们通过对文档修改建议进行投票,使用了一个简单的共识算法。多数人的意见统一才能保证文档的一致性,每个人都在处理相同的信息。

在更复杂的系统中,比如区块链网络(例如比特币或以太坊),共识算法在验证和保障交易的安全性方面发挥着至关重要的作用,而不需要中心权威控制。算法确保网络中的所有节点就交易顺序和有效性达成一致,维护区块链和参与者之间共享信息的完整性。

以太坊中的权益证明(PoS)共识算法

在 PoS 共识算法中,根据“抵押"或冻结的代币数量(以太币)来选择校验者,从而创建新的区块并保障网络安全。一个校验者抵押的以太币数量越多,其被选中提议和验证区块的机会就越大。

工作原理

  1. 校验者:在 PoS 系统中,部分节点被选为校验者。要成为校验者,节点需要"抵押"一定数量的加密货币(在这里是以太币)作为担保。抵押的以太币越多,被选为校验者的机会就越大。
  2. 区块提议者:校验者轮流成为“区块提议者”来创建新的交易区块。抵押数量最高的校验者通常有更高的机会被选为区块提议者。
  3. 区块验证:一旦一个校验者提出新的区块,其他校验者就会检查区块内交易的合法性,确保它们符合网络规则,并且不是欺诈性行为。
  4. 达成共识和最终确定:如果大多数校验者同意提议的区块有效,它就会被添加到区块链中。共识是通过这些校验者的协议达成的,因为他们有经济动机诚实行事,否则他们就会面临失去抵押代币的风险。

实例展示

想象一群朋友运营一个类似以太坊的网络,来跟踪他们的共同费用和交易。他们使用权益证明(PoS)来达成共识。

1. 校验者:在他们的网络中,每一个人都要拿出自己一定数量的以太币作抵押,才能成为校验者。爱丽丝抵押了10个以太币,鲍勃抵押了5个以太币,查理抵押了8个以太币。

2. 区块提议者:由于爱丽丝抵押的以太币最多(10 个以太币),她在第一轮中被选为区块提议者的机会更大。

3. 区块验证:爱丽丝提议了一个包含最近交易的新区块。鲍勃和查理像其他校验人员一样,对交易进行检查,以确保其合法性。

4. 达成共识和最终确定性:如果鲍勃和查理对爱丽丝提出的新区块的提议表示赞同,他们就会将其添加到区块链中。作为提出该新区块的校验者,爱丽丝会获得一定的交易手续费作为奖励,然后这个朋友圈组成的类以太坊网络就进入下一轮区块生成流程。

在这个实例中,朋友们通过轮流提出新的区块并通过PoS共识算法对其进行验证,从而维护他们共享的财务记录。他们抵押的以太币越多,成为校验者并因保护网络而获得奖励的机会就越大。

以太坊权益证明(PoS)可能遭遇的攻击

以下用实际例子更详细地说明以太坊的权益证明(PoS)共识算法可能遭受的一些常见攻击:

  1. 无成本攻击(Nothing-at-Stake Attack)
  • 描述:在PoS中,校验者可以去创建和验证多个冲突的区块链版本,而不需要承担任何成本。这种无代价的做法会助长不诚信的行为,导致无法达成共识,从而降低了安全性。
  • 实例:想象爱丽丝和鲍勃都是以太坊的校验者。他们没有就单一的区块链版本达成共识,而是分别创建和验证不同的区块链,也不需要承担真正的后果。这会引起混乱,损害了网络的安全性。当用户试图确认区块链的真实状态时,所得到的信息却互相矛盾,这使得用户很难相信系统的完整性。
  1. 长程攻击(Long-Range Attack )
  • 描述:这类攻击是指攻击者在初始区块创立时,就准备好另外一个可替代的区块版本,然后用它取代当前的区块链。
  • 实例:假定查理想在以太坊中更改一个以前的交易。他开始从第一个区块创建一个可替代的区块,并将其隐藏起来。随着时间推移,查理还在秘密地向自己的替代品中增加更多的区块。当他终于公开这个被他隐藏起来的更长区块链时,整个网络都会对区块真正的历史版本感到困惑。参与者很难决定要相信哪条区块链,致使网络变得很容易被操纵。
  1. 无风险套利攻击(Nothing-to-Stake Attack)
  • 描述:在这种攻击下,校验者抵押的担保很少,因此缺乏足够的动机遵守规则并诚信行事。
  • 实例:想象夏娃成为以太坊的一个校验者,却没有抵押多少以太币。由于她没有太多资金押注,所以她可以不诚信行事而又无须承担严重后果。夏娃可能会验证包含无效交易的区块,或支持互相冲突的区块链,从而破坏网络的一致性。因此,参与者会丧失对区块链的有效性的信心,进而引发信任危机,导致系统可能陷入混乱。
  1. 51% 攻击
  • 描述:在这种攻击下,攻击者控制了网络中超过51%的投票权,使其可以控制共识过程,并可能操纵交易。
  • 实例:一群攻击者设法抵押了以太坊网络中超过51%的以太币总量。有了多数控制权,他们可以决定哪些区块被添加到区块链中,并排除特定的交易。这种攻击可能造成同样的金额两次支出,造成经济损失并破坏网络的完整性。用户无法依赖区块链的精准性,这导致对系统的信心崩溃和信任丧失。

为了防范这些攻击,以太坊的 PoS 协议包含了惩罚抵押和检查点等安全措施。这些机制共同保证了网络的安全性,并使参与者能够达成共识。有了这些防范措施,以太坊仍然是安全的,区块链也可以被信任。共识算法维护了网络的可靠性和安全性,在确保所有参与者能够充满信心地协作方面发挥着至关重要的作用。

因此,下次当你听到区块链或加密货币时,请记住共识算法在保持每件事同步和确保计算机之间的完美协作方面所发挥的重要作用。

感谢您加入我们对共识算法奥秘的探索之旅。

译者介绍

刘涛,51CTO社区编辑,某大型央企系统上线检测管控负责人。

原文标题:Consensus Algorithms: How Computers Agree and Stay Safe Together,作者:Sahil Sojitra



Tags:共识算法   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除。
▌相关推荐
译者 | 刘涛审校 | 重楼在去中心化网络的世界里,计算机需要在没有中心权威控制的情况下协作。共识算法是帮助它们合作并找到共同基础的关键所在。这些算法确保网络中的所有节...【详细内容】
2023-09-12  Tags: 共识算法  点击:(0)  评论:(0)  加入收藏
分布式系统的模型为了更容易理解分布式系统,我们先来构建一个模型。 武当派因为人口增长变成 11 个办事处分散在地图各地; 办事处之间的通信只能依靠信鸽; 一只信鸽可能无法完...【详细内容】
2022-07-01  Tags: 共识算法  点击:(162)  评论:(0)  加入收藏
前文《理解 Paxos》只包含伪代码,帮助了理解但又不够爽,既然现在都讲究 Talk is cheap. Show me the code.这次就把文章中的伪代码用 Go 语言实现出来,希望能帮助各位朋友更直...【详细内容】
2020-12-15  Tags: 共识算法  点击:(269)  评论:(0)  加入收藏
我们先从常见的拜占庭将军问题中理解一下什么是共识。 拜占庭将军问题 拜占庭位于如今的土耳其的伊斯坦布尔,是东罗马帝国的首都。由于当时拜占庭罗马帝国国土辽阔,为了防御目...【详细内容】
2020-11-11  Tags: 共识算法  点击:(228)  评论:(0)  加入收藏
拜占庭将军问题是分布式领域最复杂、最严格的容错模型。但在日常工作中使用的分布式系统面对的问题不会那么复杂,更多的是计算机故障挂掉了,或者网络通信问题而没法传递信息,这...【详细内容】
2020-01-02  Tags: 共识算法  点击:(297)  评论:(0)  加入收藏
摘 要 共识算法是区块链技术的核心要素, 也是近年来分布式系统研究的热点. 本文系统性地梳理和讨论了区块链发展过程中的 32 种重要共识算法, 介绍了传统分布式一致性算法...【详细内容】
2019-11-14  Tags: 共识算法  点击:(341)  评论:(0)  加入收藏
▌简易百科推荐
译者 | 刘涛审校 | 重楼在去中心化网络的世界里,计算机需要在没有中心权威控制的情况下协作。共识算法是帮助它们合作并找到共同基础的关键所在。这些算法确保网络中的所有节...【详细内容】
2023-09-12    51CTO  Tags:共识算法   点击:(0)  评论:(0)  加入收藏
当谈到数据结构与算法,特别是动态规划和空间复杂度时,有一个清晰的理解是非常重要的。让我们从动态规划算法的基本思想和应用开始,然后深入研究动态规划算法的空间复杂度和时间...【详细内容】
2023-09-06  树言树语Tree  今日头条  Tags:算法   点击:(14)  评论:(0)  加入收藏
你对正则表达式有何看法?我猜你会说这太晦涩难懂了,我对它根本不感兴趣。是的,我曾经和你一样,以为我这辈子都学不会了。但我们不能否认它确实很强大,我在工作中经常使用它,今天,我...【详细内容】
2023-09-05  web前端开发  微信公众号  Tags:正则表达式   点击:(20)  评论:(0)  加入收藏
作者 | 弘远君导读introduction本文以百度垂类离线计算系统的演进方向为主线,详细描述搜索垂类离线计算系统发展过程中遇到的问题,以及对应的解决方案。架构演进过程中一直奉...【详细内容】
2023-09-01  OSC开源社区    Tags:垂类离线计算   点击:(22)  评论:(0)  加入收藏
前面的几篇文章,作者深入探讨过RLHF 的算法原理,今天站在一定高度讨论,为什么需要RLHF 这么复杂的强化学习算法,为什么SL(监督学习) 不能达到这样一个效果?这篇文章就从Sebastian...【详细内容】
2023-08-31  机器学习搬运工    Tags:算法   点击:(26)  评论:(0)  加入收藏
当谈到数据结构与算法,理解复杂度是非常重要的,因为它可以帮助你评估算法的性能以及在不同情况下的表现。在分析算法的复杂度时,我们通常关注三种情况:最坏情况、平均情况和最好...【详细内容】
2023-08-31  树言树语Tree    Tags:算法   点击:(29)  评论:(0)  加入收藏
前言如果嫌麻烦,你可以直接跳到正题观看~最近无论是在工作中的交谈,还是在日常刷屏的新闻,铺天盖地的都是大模型。我横竖是看不明白,费了大劲终于从字缝里看到了两个字,玄学。仿...【详细内容】
2023-08-30    OSC开源社区  Tags:算法   点击:(30)  评论:(0)  加入收藏
我们假设B+树一个节点可以有100个关键字,那么3层的B树可以容纳大概1000000多个关键字(100+101100+101101*100)。而红黑树要存储这么多至少要20层。所以使用B树相对于红黑树和A...【详细内容】
2023-08-29  做好一个程序猿    Tags:搜索树   点击:(29)  评论:(0)  加入收藏
随着人工智能技术的迅猛发展,深度学习成为了解决复杂问题的有力工具。然而,深度学习模型的训练过程常常需要大量的计算资源,而在实际应用中,模型的推理阶段同样需要高效的计算支...【详细内容】
2023-08-28  亚托克索的日记    Tags:深度学习   点击:(28)  评论:(0)  加入收藏
在信息时代,海量的数据和知识被广泛积累,但如何将这些碎片化的信息有效地整合、关联和应用,一直是一个重要的挑战。知识图谱技术应运而生,它以图谱的形式将各种实体、属性和关系...【详细内容】
2023-08-28  王旭妍爱生活    Tags:知识图谱   点击:(21)  评论:(0)  加入收藏
站内最新
站内热门
站内头条