Skip to main content

工作量证明是解决拜占庭将军问题的唯一办法

文 | Oleg Andreev. 2014.5.23. 原标题:Proof That Proof-of-Work is the Only Solution to the Byzantine Generals' Problem

(本文是)回复@Vlad_Roberto的话:“不,(我)不是程序员。我只是知道有更好的方法来做任何事情,而无需大量的能源消耗和银行。”

想象一下你正坐在一个掩体里。你不知道外面的人是什么以及他们的意图是什么。你只会收到一些来自陌生人的传入消息,其中可能包含任何内容。它们可能只是随机的垃圾或故意制作的消息来迷惑你或对你撒谎。你永远不会知道。你不能相信任何人。

“金钱”或任何其他“社会契约”的问题在于,每个人都应该能够知道大多数人同意什么,而不必信任某些中间人(否则他们很容易滥用自己的特殊地位)。如果每个人都投票给“X”,那么坐在地堡里的你必须以某种方式独立地弄清楚所有其他人确实投票给“X”而不是“Y”或“Z”。但请记住:你不能相信任何人的消息,消息是你从外界获得的唯一信息。

当两个提案“X”和“Y”进入你的地堡时,我们没有可靠的参考点来确定哪一个得到了大多数其他人的支持。我们只有“数据本身”来判断应该选择哪一个作为主要数据。为了让事情变得更简单,我们并不是试图对任何一个命题应用主观判断,而只是试图让每个人都同意一个选项。就比特币而言,这是一个合理的假设:每个人都是自己货币的所有者,因此只要尊重自己的余额,没有人真正关心选择哪个历史版本。

那么,X 应该如何与 Y 区分开来,以便我们确信没有人会意外地选择 Y、Z 或 W?第一个属性:该数据应该是“最近的”。因此,我们知道,我们并没有固守某些旧共识,而其他人都已经转进到其他方面了。第二个属性:任何“最近”的替代品都应该不可能产生。因为如果可以产生,那么总是有机会让一些人看到它并接受这种替代方案。而且你无法估计存在多少这样的替代方案以及有多少人接受它(因为你坐在一个掩体中,你无法信任传入的消息或知道你错过了多少消息)。

我们如何定义“不可能”?它意味着两件事之一:要么逻辑上不可能,要么实际上(经济上)不可能。如果逻辑上不可能,那么我们只需使用归纳法就可以提前知道所有未来的共识(例如一串确定性的数字)。但这是不行的,因为我们首先必须就起点达成一些一致。所以我们最终(只好)要求实际上不可能。换句话说,我们需要以下内容:

消息 X 应该被证明是最近的,并且实际上不可能产生替代品。

实际的不可能性可以用“机会成本”来重新定义:物理资源是有限的,这些资源应该主要分配给X而不是Y,所以我们可以看到X从任何替代品中吞噬了所有资源。因为如果没有,那么剩余资源是否用于替代品 Y 或者它们不干扰投票过程就有了巨大的不确定性。是否有可能 X 没有吸收大量资源,而替代品仍然不可能?那么这意味着 X 在逻辑上遵循系统之前的任何状态,并且不需要投票过程。

因此:消息 X 应该是可证明是最近的,并且应该使用了可证明的大量资源,足够大,以至于没有足够的资源可供任何替代品 Y 在相当短的时间范围内产生。此外,消息 X 应该始终是“最近的”并且始终胜过任何替代品。因为我们无法可靠地比较“旧”消息:Y 是刚刚交付的“旧”消息,还是在 X 上花费的资源释放后刚刚生成的?

这从逻辑上引导我们得出以下结论:我们应该只接受带有最大工作量证明的消息,并且工作量证明应该是有史以来最大的,因此不存在任何替代品在短时间内产生的可能性。而且工作量证明必须不断得到加强,否则随着替代品(出现)机会的增加,先前共识的价值就会开始迅速消失。

昂贵、高度专业化的计算机群是达成共识的最可靠方式。如果我们要使用非专业资源,就很难判断它们中的大多数是否确实用于工作量证明计算。通过观察大量工作发生在经济中一个非常具体、易于观察的部分,我们可以估计产生另一种同样困难的信息的成本有多大。就比特币矿场而言,这种替代方案将需要非常昂贵且复杂的生产链,需要要么超越其他使用芯片代工厂的公司,要么在地球上最具成本效益的地点(使用最便宜的电力)建造一次性数据中心 、最冷的天气、低延迟连接等)

结论

如果在实践中以非信任方式达成共识是可能的,那么只有通过工作量证明方案和高度专业化的昂贵产业链才有可能实现。此外,共识只在短时间内有价值,因此必须不断强化。