“将军,有叛徒” “无妨,有拜占庭容错”
摘要: “将军,有叛徒” “无妨,有拜占庭容错”
事情是这样的
(本事件纯属虚构,如有雷同一定是巧合)
拜占庭帝国的皇帝下令:
奉天承运、皇帝诏曰。信开疆拓土为国之大计,又我国将领各个神勇,特令十位将军带领自己的军队,分布于某城池的不同位置,并以围剿包抄战术突袭该城!敌军不防之际,正是我军直捣黄龙之时。
钦此
将军们得令后,立即整军连夜出发,趁着昏黄夜色,几位将军都安全潜入预定位置进行埋伏,只待得到其他所有将军一致进攻命令时,一举拿下城池。
然而,奇怪的事情发生了……
将军们从信使那里收到的各处信息并不一致,有的写着进攻、有的勒令撤退、有的甚至没有信息!将军们一时无法决议,只能继续等待!
随着时间推移,将军们失去了最好的进攻时机,天蒙蒙亮时,埋伏的军队被敌军发现并且逐个击破,最终拜占庭的攻城计划失败了。
这其中,发现了什么问题?
信息不一致。
彼此不信任。
没错!这场战役胜利的关键,必须满足以下条件:
-
每个将军必须决定:进攻或撤退(是或否);
-
决定一经作出,不得更改;
-
所有将军必须就同一个决定达成一致并以同步方式执行。
这里最直接的问题就表现在:一名将军只能通过信使传达的消息与另一名将军进行通信。因此,拜占庭将军问题的核心挑战是消息可能会以某种方式延迟、破坏或丢失。
另外,即使消息成功传递,有些将军可能会出于某种原因,比如:叛变,选择恶意行事并发送欺诈性消息以迷惑其他将军,从而导致彻底失败。
此时,我们将拜占庭将军问题应用到区块链中,每个将军代表一个网络节点,节点需要就系统的当前状态达成共识。换句话说,分布式网络中的大多数参与者必须同意并执行相同的操作,才能避免完全失败。
而在区块链这种分布式系统中达成共识的唯一方法就是拥有至少 ⅔ 或更多可靠和诚实的网络节点,这意味着,如果网络的大多数节点决定采取恶意行动,则系统很容易受到故障和攻击(例如51% 攻击)。
共识机制
众所周知,区块链是去中心化的、由分布式计算机节点网络去维护的共享数据库。区块链技术允许创建去信任化的经济系统,在不需要中介的情况下,可以执行透明、可靠的金融交易。
而自2008年中本聪发明的比特币诞生后,许多将区块链作为架构核心元素的、有特定机制的加密货币被创造出来。基于区块链衍生的加密货币也正被多个国家,用作严重依赖信任的传统银行和支付系统的可行替代方案。
就像大多数分布式计算系统一样,加密货币网络的参与者需要定期就区块链的当前状态达成一致,这就是我们所说的共识达成。然而,以安全有效的方式就分布式网络达成共识远非易事。(这就好比上述遇到的拜占庭将军问题)
如果某些节点出现故障或不诚实行事,分布式计算机节点的决策如何才能达成一致?这就催生了拜占庭容错的概念。
拜占庭容错 (BFT)
本质上,拜占庭容错 (BFT)就是让所有的将军都尽可能拥有更多的数学家。
如果将军们能雇更多的数学家, 那就意味着他们可以将信息通过复杂的加密方法加密后再传递;这种信息加密非常复杂,以至于城里的任何一位数学家真的没有机会或非常小的机会,能够在足够快的时间里,拦截消息,然后解密、改变内容并重新加密。
BFT使得系统能够抵抗源自拜占庭将军问题的故障,即使某些节点出现问题或恶意操作,BFT系统也能够继续运行。 这也能更容易揪出将军中的“叛徒”(即不诚实的计算机节点)。
BFT系统目前情况
BFT在很多场景都有应用,例如:航空、航天和核电等行业。在区块链应用中,一般适用于对强一致性有要求的私有链和联盟链场景。例如,在IBM主导的区块链超级账本项目中,实用拜占庭容错系统是一个可选的共识协议。让我们一起期待更多符合市场生态的BFT解决方案吧!
作者:探索实验室;来自链得得内容开放平台“得得号”,本文仅代表作者观点,不代表链得得官方立场凡“得得号”文章,原创性和内容的真实性由投稿人保证,如果稿件因抄袭、作假等行为导致的法律后果,由投稿人本人负责得得号平台发布文章,如有侵权、违规及其他不当言论内容,请广大读者监督,一经证实,平台会立即下线。如遇文章内容问题,请联系微信:chaindd123。
评论(0)
Oh! no
您是否确认要删除该条评论吗?