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

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

时间: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:共识算法   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
共识算法:计算机如何共同达成协议并保持安全
译者 | 刘涛审校 | 重楼在去中心化网络的世界里,计算机需要在没有中心权威控制的情况下协作。共识算法是帮助它们合作并找到共同基础的关键所在。这些算法确保网络中的所有节...【详细内容】
2023-09-12  Search: 共识算法  点击:(332)  评论:(0)  加入收藏
共识算法与分布式一致性算法
分布式系统的模型为了更容易理解分布式系统,我们先来构建一个模型。 武当派因为人口增长变成 11 个办事处分散在地图各地; 办事处之间的通信只能依靠信鸽; 一只信鸽可能无法完...【详细内容】
2022-07-01  Search: 共识算法  点击:(336)  评论:(0)  加入收藏
用 Golang 快速实现 Paxos 分布式共识算法
前文《理解 Paxos》只包含伪代码,帮助了理解但又不够爽,既然现在都讲究 Talk is cheap. Show me the code.这次就把文章中的伪代码用 Go 语言实现出来,希望能帮助各位朋友更直...【详细内容】
2020-12-15  Search: 共识算法  点击:(354)  评论:(0)  加入收藏
你知道区块链这几种共识算法吗?
我们先从常见的拜占庭将军问题中理解一下什么是共识。 拜占庭将军问题 拜占庭位于如今的土耳其的伊斯坦布尔,是东罗马帝国的首都。由于当时拜占庭罗马帝国国土辽阔,为了防御目...【详细内容】
2020-11-11  Search: 共识算法  点击:(290)  评论:(0)  加入收藏
共识算法Raft为什么这么流行,及原理解析
拜占庭将军问题是分布式领域最复杂、最严格的容错模型。但在日常工作中使用的分布式系统面对的问题不会那么复杂,更多的是计算机故障挂掉了,或者网络通信问题而没法传递信息,这...【详细内容】
2020-01-02  Search: 共识算法  点击:(377)  评论:(0)  加入收藏
区块链共识算法的发展现状与展望
摘 要 共识算法是区块链技术的核心要素, 也是近年来分布式系统研究的热点. 本文系统性地梳理和讨论了区块链发展过程中的 32 种重要共识算法, 介绍了传统分布式一致性算法...【详细内容】
2019-11-14  Search: 共识算法  点击:(441)  评论:(0)  加入收藏
▌简易百科推荐
小红书、视频号、抖音流量算法解析,干货满满,值得一看!
咱们中国现在可不是一般的牛!网上的网友已经破了十个亿啦!到了这个互联网的新时代,谁有更多的人流量,谁就能赢得更多的掌声哦~抖音、小红书、、视频号,是很多品牌必争的流量洼地...【详细内容】
2024-02-23  二手车小胖说    Tags:流量算法   点击:(12)  评论:(0)  加入收藏
雪花算法详解与Java实现:分布式唯一ID生成原理
SnowFlake 算法,是 Twitter 开源的分布式 ID 生成算法。其核心思想就是:使用一个 64 bit 的 long 型的数字作为全局唯一 ID。在分布式系统中的应用十分广泛,且 ID 引入了时间戳...【详细内容】
2024-02-03   一安未来  微信公众号  Tags:雪花算法   点击:(50)  评论:(0)  加入收藏
程序开发中常用的十种算法,你用过几种?
当编写程序时,了解和使用不同的算法对解决问题至关重要。以下是C#中常用的10种算法,每个算法都伴随着示例代码和详细说明。1. 冒泡排序 (Bubble Sort):冒泡排序是一种简单的比...【详细内容】
2024-01-17  架构师老卢  今日头条  Tags:算法   点击:(44)  评论:(0)  加入收藏
百度推荐排序技术的思考与实践
本文将分享百度在推荐排序方面的思考与实践。在整个工业界的推广搜场景上,特征设计通常都是采用离散化的设计,需要保证两方面的效果,一方面是记忆,另一方面是泛化。特征都是通过...【详细内容】
2024-01-09  DataFunTalk  微信公众号  Tags:百度推荐   点击:(73)  评论:(0)  加入收藏
什么是布隆过滤器?如何实现布隆过滤器?
以下我们介绍了什么是布隆过滤器?它的使用场景和执行流程,以及在 Redis 中它的使用,那么问题来了,在日常开发中,也就是在 Java 开发中,我们又将如何操作布隆过滤器呢?布隆过滤器(Blo...【详细内容】
2024-01-05  Java中文社群  微信公众号  Tags:布隆过滤器   点击:(87)  评论:(0)  加入收藏
面向推荐系统的深度强化学习算法研究与应用
随着互联网的快速发展,推荐系统在各个领域中扮演着重要的角色。传统的推荐算法在面对大规模、复杂的数据时存在一定的局限性。为了解决这一问题,深度强化学习算法应运而生。本...【详细内容】
2024-01-04  数码小风向    Tags:算法   点击:(89)  评论:(0)  加入收藏
非负矩阵分解算法:从非负数据中提取主题、特征等信息
非负矩阵分解算法(Non-negativeMatrixFactorization,简称NMF)是一种常用的数据分析和特征提取方法,主要用于从非负数据中提取主题、特征等有意义的信息。本文将介绍非负矩阵分解...【详细内容】
2024-01-02  毛晓峰    Tags:算法   点击:(62)  评论:(0)  加入收藏
再谈前端算法,你这回明白了吗?
楔子 -- 青蛙跳台阶一只青蛙一次可以跳上一级台阶,也可以跳上二级台阶,求该青蛙跳上一个n级的台阶总共需要多少种跳法。分析: 当n=1的时候,①只需要跳一次即可;只有一种跳法,即f(...【详细内容】
2023-12-28  前端爱好者  微信公众号  Tags:前端算法   点击:(107)  评论:(0)  加入收藏
三分钟学习二分查找
二分查找是一种在有序数组中查找元素的算法,通过不断将搜索区域分成两半来实现。你可能在日常生活中已经不知不觉地使用了大脑里的二分查找。最常见的例子是在字典中查找一个...【详细内容】
2023-12-22  小技术君  微信公众号  Tags:二分查找   点击:(78)  评论:(0)  加入收藏
强化学习算法在资源调度与优化中的应用
随着云计算和大数据技术的快速发展,资源调度与优化成为了现代计算系统中的重要问题。传统的资源调度算法往往基于静态规则或启发式方法,无法适应动态变化的环境和复杂的任务需...【详细内容】
2023-12-14  职场小达人欢晓    Tags:算法   点击:(164)  评论:(0)  加入收藏
站内最新
站内热门
站内头条