小白学习区块链之拜占庭将军的问题
Hi5
发表于 2022-11-17 14:52:26
75
0
0
看到这个词语时,我曾经一度认为有一位名叫拜占庭的将军带领着一支庞大的军队打仗时遇到了难题,但查阅了一些资料后,发现实际上并没有拜占庭将军,也没有这场战争,完全是计算机专家假想出的问题。$ O$ s9 R9 N0 k0 P' Q6 L5 h
拜占庭这个专有名词取自于拜占庭帝国,又叫东罗马帝国,其军事力量很强大,地处现今欧洲的土耳其国家。: W) r8 F8 H( R- c
# m# G9 o6 A$ g7 c, ?, y% [
莱斯利·兰伯特(LeslieLamport),是微软研究院的首席研究员,曾获得2013年图灵奖——计算机界的诺贝尔奖。这家伙觉得故事让问题变得受欢迎,因此他在提出观点和问题时常用故事背景吸引眼球,拜占庭将军的故事就是兰伯特在研究分布式系统容错性的时候编出的一个故事。
( y' O. h/ S9 ?# h& S5 g
拜占庭将军问题描述1 o2 w* w4 v/ ^) u \ S# H6 @9 e
% B( E- C h0 Y+ D; [
论文中的原文:
5 X4 _7 ^+ a R% j( W' V4 ?
WeimaginethatseveraldivisionsoftheByzantinearmyarecampedoutsideanenemycity,eachdivisioncommandedbyitsowngeneral.Thegeneralscancommunicatewithoneanotheronlybymessenger.Afterobservingtheenemy,theymustdecideuponacommonplanofaction.However,someofthegeneralsmaybetraitors,tryingtopreventtheloyalgeneralsfromreachingagreement.
K! }# Y% w2 X7 V6 p
关于拜占庭将军问题,一个简易的非正式描述如下:% \$ W3 O& y9 f8 n
" F0 T6 F7 K& x9 a, a3 b" M
拜占庭帝国想要进攻一个强大的敌人,为此派出了10支军队去包围这个敌人。这个敌人虽不比拜占庭帝国,但也足以抵御5支常规拜占庭军队的同时袭击。基于一些原因,这10支军队不能集合在一起单点突破,必须在分开的包围状态下同时攻击。
. E$ g, b5 u& m4 t& O
他们任一支军队单独进攻都毫无胜算,除非有至少6支军队同时袭击才能攻下敌国。他们分散在敌国的四周,依靠通信兵相互通信来协商进攻意向及进攻时间。8 N" q$ r! n6 c- N
$ b# ~0 l3 O4 B6 g2 Y
这个问题的简洁描述:这些将军离得很远,不能每遇到一个问题,就聚到一起开会商量对策,耽误时机,拜占庭将军们能否找到一种分布式的协议来让他们能够远程协商,达成共识,执行共同的作战计划,来取得战争的胜利?' B. |9 n% T) \* C \ e& w& t2 Y
这就是著名的拜占庭将军问题。/ p& T3 E2 a, W
7 D' h- \7 K- d6 G! V+ v! y
拜占庭将军问题包含着两军问题,国内大量解释拜占庭将军问题的文章将两者混为一谈,这两个问题看起来的确有点相似,但是问题的前提和研究方向都截然不同。1 ]& P. R4 V5 e4 n ?
. m: u& w- d' K5 g- y$ n
两军问题的难点:
+ _. T3 A2 g: ~$ p
·他们不确定他们中是否有叛徒,叛徒可能擅自变更进攻意向或者进攻时间。
·信使在传递消息时可能会把信弄丢
·信息可能会被敌国截获7 K3 T$ {: [, L1 ^% t9 n9 ]! z
·无法确定消息是否真的来自某位将军9 @3 @- N9 [" Y" T; Q0 C# @9 Z u
9 E1 a9 u0 W! V# |2 D; ~
因此,拜占庭将军问题的场景,是建立在信兵可以正确的传达信息的基础上的,即信道绝对可信。两军问题的探讨更多是真假信道的实质。1 N$ }+ }) E2 x1 m
区块链的解决方案' y% G+ R9 d3 S; t# D" x
把军队想像成计算机节点,把信使想像成计算机间的网络通讯,攻占敌军就是写入一个大家公认的区块记录。
区块链技术在发送信息中加入了成本,降低了信息传递的速率,并采用了工作量证明(PoW),即一个节点必须经过大量尝试性计算才能得出一个结果,而其它节点只需极少的时间就能证明其真伪,这样能够减少垃圾消息、假消息在节点间传播的状况。% q8 f. n# O! V/ x% \
/ B$ z/ h* F0 z
挖矿节点把一段时间内的交易信息打包成一个区块,盖上时间戳,与上一个区块衔接在一起,每个区块都包含了上一个区块的索引(哈希值),然后再写入新的信息,从而形成新的区块,首尾相连,最终形成了区块链。
用工作量证明、公钥加密等技术,使比特币网络从一个去中心化的不可信网络变为可信网络,使所有参与者可以在某些事情上达成一致,使价值传递成为了可能。
5 f# ~: m" [' {$ U0 M) v, i6 G* o
如果10个将军中的几个同时发起消息,势必会造成系统的混乱,造成各说各的攻击时间方案,行动难以一致。
' N2 ?. q6 T; z1 ~# Q0 d
中本聪巧妙地在个系统加入了发送信息的成本,即:一段时间内只有一个节点可以传播信息。2 L7 w1 e" O, M- Y7 M! D
它加入的成本就是”工作量“——节点必须完成一个计算工作才能向各城邦传播消息,当然,谁第一个完成工作,谁才能传播消息。
当某个节点发出统一进攻的消息后,各个节点收到发起者的消息必须签名盖章,确认各自的身份。中本聪在这里引用现代加密技术为这个信息签名。& f' E8 l( ?' k. T% U# o3 E" g
加密、非加密解决签名问题# N+ Y8 ^1 v# T. x5 t6 U' |
·消息传送的私密性1 C! ^1 o+ g$ U) D& B# c' V
, X8 L# n/ s0 M/ k8 ~6 W! C1 W
·能够确认身份
" a2 @# ?3 P6 p2 [
·签名不可伪造、篡改' ?& Y% y9 m* |' k1 s: }% {( @( O
) c4 K2 v( ?& M6 y
由此,一个不可信的分布式网络变成了一个可信的网络,所有的参与者可以在某件事在达成一致。9 J% b% {/ r+ R6 E
( Y/ _( {. s4 x8 @9 g$ D6 h: I3 t
使用消息加密技术、以及公平的工作量证明机制,创建了一组所有将军都认可的协议,这套协议的出现,拜占庭将军问题也就完美的得到了解决。
成为第一个吐槽的人