探寻拜占庭将军之谜,它与虚拟货币之间又存在着怎样的联系?揭开区块链不可或缺的核心技术奥秘。
近年来,区块链技术衍生出了众多不同的算法,但其核心要解决的问题,始终是著名的拜占庭将军问题。对于研究区块链的朋友而言,这并不陌生,而对于刚刚踏入虚拟货币领域的新手来说,这个概念可能显得有些晦涩难懂。拜占庭将军问题,作为一个历史悠久、跨越哲学、数学与逻辑领域的难题,一直被视作该领域中最具挑战性的问题之一。你还记得区块链吗?简单来说,区块链技术使得我们无需依赖中心化的第三方(如政府、银行等)来确认交易费用的传递,以及确认土地所有权的真实性(例如,防止贪腐的银行扣留交易而未传递给对方,或贪腐的政府低价出售土地给国际企业)。区块链通过共识机制,让一群人达成公正的判决,虽然听起来有些戏剧化,但裁判与摄影师的比喻却颇为贴切。
这种共识机制正是解决拜占庭将军问题的关键所在。
Leslie Lamport,一位荣获图灵奖的数学家,也是提出拜占庭将军问题解决方案的人,他在论文中这样描述了这个问题:
一群拜占庭将军分别率领各自的军队围困一座城市。为了简化问题,我们假设军队的行动策略只能是进攻或撤退。由于部分军队进攻而部分撤退可能导致灾难性后果,因此各位将军必须通过投票达成一致策略,即所有军队同时进攻或同时撤退。由于将军们分散在城市的不同方向,他们只能通过信使进行沟通。在投票过程中,每位将军将通过信使将自己的投票信息(进攻或撤退)告知其他所有将军。这样一来,每位将军根据其他将军送来的信息,可以判断出共同的投票结果,进而决定自己的行动策略。
让我再次解释一下这个问题
在拜占庭帝国时期,有四位英勇的将军:蜘蛛人、美国队长、索尔和钢铁人,他们各自指挥着自己的军队,目标是攻陷萨诺斯的城堡(请不要将我当成三岁孩子,这只是一个例子,请继续阅读)。
但是,要想取得胜利,四支军队必须同时发起进攻,才有机会攻克这座城堡(这开始有点像电影情节了)。
在此前提下,最关键的任务是四位将军必须互相沟通,确认各自的决策和进攻时间,才有可能取得胜利。
如果决策确定了,接下来便是寻找沟通的方式。在拜占庭时代,没有电话(我也无法解释为什么钢铁人的AI系统Friday无法发挥作用),他们唯一的沟通方式是派遣信使,告知对方自己的想法。
于是,钢铁人将军派遣了三位信使给其他三位将军,信使传达的信息是:“我将在星期一进攻,你愿意跟我一起在周一进攻吗?”蜘蛛人可能会回答:“不,我需要多一天时间陪我的阿姨,但我会在周二进攻。你愿意跟我一起在周二进攻吗?”然后让钢铁人信使将这个新信息带回。
然而,问题出现了,钢铁人的信使可能会在途中被萨诺斯拦截,萨诺斯的属下甚至有人可以伪装成信使,将假信息带回去,告诉钢铁人将军说蜘蛛人将军同意了他的提议,我们将在周一进攻。
由于四位将军没有同时进攻,萨诺斯最终赢得了战争。
这就是四位拜占庭将军所面临的共识问题,他们的沟通渠道并不可靠。如果将四位将军比作虚拟货币钱包,钢铁人希望将100个Bitcoin转给蜘蛛人,但萨诺斯可以篡改交易,使得蜘蛛人什么也得不到。因为沟通渠道不可靠,他们无法信任收到的任何信息,那么该如何解决这个问题呢?
如果我们是拜占庭军师,我们先来了解一下这些信息的特征。
星期一进攻
星期二进攻
星期一撤退
简单来说,在信息中会有两个元素:一是时间,二是进攻或撤退的决策。由于蜘蛛人无法确认信息是否真实,或是否确实来自钢铁人,这就给了萨诺斯极大的动机去拦截或篡改信息,这与所有以区块链为技术核心的虚拟货币一样,它们都需要一个能够辨认真伪、确认信息未被修改过的通信机制。
在区块链中,我们使用哈希算法(Hash functions)进行加密,不需要担心,专业术语就讲到这里。如果你想要了解更多,请查阅维基百科上关于哈希函数的解释。现在你需要知道的是,哈希函数的特性。
当钢铁人(或任何其他将军)要向蜘蛛人及其他将军传送一个信息时,他必须通过哈希函数(加密)来帮助伪装信使和信息本身。这种伪装的前提是伪装的外观必须是钢铁人和蜘蛛人共同认可的,到达蜘蛛人手中时,他才能辨认出来(例如,他们两人都同意将信使伪装成浩克,如果出现的是洛基,他们就知道信息可能被篡改过)。
实现这种伪装需要耗费大量精力,萨诺斯的实力非常强大,几乎可以看透一切,因此在我们这些拜占庭将军传送信息时,必须花费大量成本来伪装成浩克(使用哈希函数加密),才能避免被萨诺斯篡改信息,让接收信息的将军能够辨认真伪。同样,蜘蛛人回复给钢铁人的信息也会使用这种加密模式,让钢铁人能够确认信息的真伪。
这在Bitcoin中被称为PoW(Proof of Work,工作证明),我们会在未来的文章中进一步解释。
伪装信息有一个小问题,如果萨诺斯愿意投入同等级的成本和时间,他仍然有可能篡改信息,伪装成浩克。那么如何让篡改信息变得不可能呢?
区块链的做法其实并不复杂,它将多个将军的信息和伪装集合起来,再用杂凑函数加密一次,这个技巧被称为Merkle Tree,简单来说如下。
群体信息再次加密后,几乎无法被篡改,萨诺斯必须付出比单一信息高得多的成本,才有可能篡改,而这个成本可能比他守住城堡所能获得的利益还要高,另外,等到萨诺斯破解了信息时,进攻可能早已发生。
这个群体信息再次加密后,形成的就是一个“区块”,其他将军也能更加确信自己收到的信息的真实性。
值得注意的是,在区块链技术上,所有数据都是公开的,因此区块链的加密并不是为了让萨诺斯或其他参与者看不到信息,而是确保信息无法被修改而不被等待信息的将军察觉。
有了这样的加密技术,将军之间达成共识成为可能,在区块链上,对于交易的确认、身份的认可等,也可以由多个电脑(节点)达成协议进行确认,不再需要一个中心化的机构来认证。这就像是推翻现实生活中的萨诺斯、贪腐的银行和政府,让社会能够更加公平地向前发展。
当然,这个例子与现实情况可能会有一些出入,欢迎大家提出指正。但希望这个例子能够帮助新进者更好地理解区块链的运作原理。
标签: 比特币行情