简单读懂拜占庭容错

转载
2056 天前
10742
蓝狐笔记

来源:蓝狐笔记     原创: Demiro Massessi     翻译:Dyna


本文简化了“拜占庭将军问题”中可能出现的多种数学模型,简要指出拜占庭问题解决的核心是“尽管有破坏者存在,拥有最多算力的链即可认定为主链,因为做叛徒(发布虚假区块)的成本和竞争难度非常大,以至于几乎不可能。”由于区块链的去中心化和自治属性,如何在容许一定差错的情况下让众多参与的节点达成共识并传递信息,这是一个核心问题,中本聪第一个做到了。


当你开始深入了解区块链时,会经常听到一个术语:拜占庭容错(BFT)。如果你想弄清楚它,一个听起来非常奇怪和神秘的术语,我们可以用一个故事来解释。

1982年,一个叫做拜占庭将军问题的数学问题被提出来。这里不详细描述它背后的数学原理,本质上,拜占庭将军问题是一个关于两个帝国之间一场战争的故事。


骑士精神:中世纪的战争

一个帝国置身于坚实的城墙里,另一个帝国的数位将军包围了这座城市,每个将军都带领着军队等候进攻。两个帝国势均力敌。

如果所有的将军达成一致同时进攻,他们就有足够的力量战胜城墙里的帝国,从而赢得战争。

但是,不管出于什么原因,如果他们不能协调好同时发动进攻,哪怕只有一个将军错过了信息,他们的围攻计划将会失败并输掉这场战争。

拜占庭将军问题探讨了密码学的一个关键领域,事实上,这是密码学的核心,本质是如何在一个某些人可能会“叛变”的环境中交换信息。

现在, 这些将军们唯一的沟通方式就是派一个伪装的信使,穿过城市给其他将军传递信息。这里将会一直存在一个风险。如果你是其中一个将军, 你将从其中的一位信使那里得到一个消息,那么你怎么知道, 或者你怎么能够比随机决定有更大把握相信你得到的信息是可靠且没有被篡改过的?

这也是1982年提出的一个假设,直到2008年才得以解决。那一年匿名的中本聪(Satoshi Nakamoto)提出了一个解决办法,这使得比特币成为可能。

本质上,解决方案是让所有的将军都尽可能拥有更多的数学家。

“当我们谈论拜占庭容错时,我们谈论的是将军们比城墙内的帝国拥有更多的权限,更多的数学家,或更多的算力。”

所以, 如果我能雇更多的数学家, 那就意味着我可以越来越复杂地加密我通过城里传递的信息;但如果城外将军们的权力平衡局面变得非常有利, 且他们可以使用的加密方法是如此复杂, 以至于城里的任何一位数学家真的没有机会或非常小的机会,能够在将军们几乎注意不到的足够快的时间里,拦截消息,然后解密、改变内容并重新加密。

这就是拜占庭容错。

这也是现在我们看到的,大多数公共区块链解决方案中使用的容错机制,包括我之前提到的比特币和以太坊,尽管以太坊正在过渡到权益证明系统(Proof of Stake)。

因此,说到区块链,当你听到拜占庭容错时,它表示的含义就是如果区块链上的算力和哈希能力比链外的更强大,它就会变得安全。

比特币是目前最大的区块链网络, 拥有超过30,000个节点, Ethereum有超过16,000个节点, 它为我们提供了高度的安全性和不可变性。这些网络上的算力非常强大, 以至于真的没有多少机会,让一个对手可以控制尽可能多的算力来攻击该区块链上的数据。

如果有人要这样做,其背后的经济机会很可能是,他们将花费更多的钱来同时利用所有的算力,这可能是他们无法承受的。

关于这个问题,你会听到很多关于51%攻击的问题。最后, 我们可以说, 拜占庭容错是密码学的根源, 它只是单纯研究我们如何在有“敌对方和恶意行为者”的时候能够安全地来回传递信息, 它是存在于区块链中所有安全性和不可变性的基础。