“问题”起源
拜占庭将军问题,是由莱斯利·兰伯特于1982年提出的点对点通信中的基本问题。之所以叫“拜占庭将军问题”,而不是“美国将军问题”、“法国将军问题”,是因为兰伯特不想因为这个问题而引起大家关于种族问题的争论。
拜占庭帝国想要进攻一个强大的敌人,派出了10支军队去包围这个敌人。这个敌人足以抵御5支常规拜占庭军队的同时袭击。基于一些原因,这10支军队不能集合在一起,必须在分开的包围状态下同时攻击。他们任一支军队单独进攻都毫无胜算,除非有至少6支军队同时袭击才能胜利。
他们依靠通信兵相互通信来协商进攻意向及进攻时间,不确定是否有叛徒,叛徒可能擅自变更进攻意向或者进攻时间或者传递虚假信息,拜占庭将军们能否找到一种分布式的协议来让他们能够远程协商?这就是著名的拜占庭将军问题。
“问题”核心
拜占庭假设是对现实世界的模型化,由于硬件错误、网络拥塞或断开以及遭到恶意攻击,计算机和网络可能出现不可预料的行为。拜占庭失效是指一方给另一方发送消息,另一方没有收到,或者收到了错误的信息的情形。简单说就是解决信息传递的“一致性”和“正确性”问题。
2008年冬季,美国麻省理工学院的密码学邮件讨论小组里,一个声称构造出来了P2P的去中心化的电子现金支付系统引起了大家的争议。作者在这封邮件里解释了如何破解“拜占庭将军问题”的算法,而这个神秘的作者就是中本聪。
比特币的解决方案
2009年,比特币的出现全面解决了这一问题。中本聪在设计比特币时,它采用了一种叫哈希现金的工作量证明机制(PoW机制),工作量证明系统的主要特征就是众多参与节点需要做一定难度的工作得出一个结果,谁先得出立即全网广播,其他节点很容易通过结果来检查出之前节点是不是做了相应的工作,一旦结果被证明正确,其他节点会把前面节点的结果添加到各自的账单中,为争取下一笔的交易记录做好计算的准备。
也有完全同时广播出来的情况,就是“分叉”,出现一个分开的两条链,之后哪条链上添加的账本多,哪条就成为主链,另一条分叉链就此中断或被部分矿工认可继续添加(例如以太坊和以太坊经典)。
网友评论