Hi 游客

更多精彩,请登录!

比特池塘 区块链前沿 正文
拜占庭容错技术,是一类分布式计算领域的容错技术。名称拜占庭是一个泛指,它代表着计算机领域,在这个领域内会有很多问题,如硬件错误、网络拥堵或中断以及遭到恶意攻击等等,造成计算机网络可能出现的混乱。BFT技术就是为了使混乱状态达到一致性。
8 e5 [$ Z" o  F9 d1 f' T2 e, N
4 \' j; y2 ]4 C' Z拜占庭将军问题
; L* J/ s3 O8 c) s6 C4 U5 D7 O0 Y9 t3 O! n4 |
BFT技术的由来源于一个叫拜占庭将军问题。: z' e5 D0 G; _+ ~

* F% o/ ?: V2 u+ m- p  N" e! Q拜占庭位于如今的土耳其的伊斯坦布尔,是东罗马帝国的首都,由于当时拜占庭罗马帝国国土辽阔,每支军队的驻地分隔很远,将军们只能靠信使传递消息。发生战争时,将军们必须制订统一的行动计划。然而,这些将军中有叛徒,叛徒希望通过影响统一行动计划的制定与传播,破坏忠诚的将军们一致的行动计划。因此,将军们必须有一个预定的方法协议,使所有忠诚的将军能够达成一致,而且少数几个叛徒不能使忠诚的将军做出错误的计划。也就是说,拜占庭将军问题的实质就是要寻找一个方法,使得将军们能在一个有叛徒的非信任环境中建立对战斗计划的共识,拜占庭问题就此形成。
) L9 ~8 L6 f: s# B+ O) S2 Y0 N5 a# M& H2 ~1 [* K
拜占庭将军问题(Byzantine Generals Problem),首先由Leslie Lamport与另外两人在1982年提出,很简单的故事模型,却困扰了计算机科学家们数十年。. N* Q( j( S+ f
* ?& N) X* x7 |5 c
我们将拜占庭将军问题简化一下,所有忠诚的将军都能够让别的将军接收到自己的真实意图,并最终一致行动;而形式化的要求就是,“一致性”与“正确性”。
4 h$ W) N0 c# C4 h7 N* A7 L9 r* F, L9 z  c5 B
一致性:每个忠诚的将军必须收到相同的命令值vi(vi是第i个将军的命令)
7 Y2 Q# T0 \* U" Q1 Z& {: F: Q% |+ s4 c/ m$ v5 d
正确性:如果第i个将军是忠诚的,那么他发送的命令和每个忠诚将军收到的vi相同。2 s' I: c5 B& E! o

" N' b% S& {9 r7 j2 [0 fLamport对拜占庭将军的问题的研究表明,当n > 3m时,即叛徒的个数m小于将军总数的n的1/3时,通过口头同步通信(假设通信是可靠的),可以构造同时满足“一致性”和“正确性”的解决方法,即将军们可以达成一致的命令。
) x: ?6 T6 V$ W8 j; h& d3 J
5 w+ `8 J1 r& h# r1 _拜占庭容错理论算法
+ J+ f$ D0 {9 Q0 |
5 B" k: P/ B) A  J( K$ H拜占庭容错系统,英文全称是Byzantine Fault Tolerance,是一种理论上解决拜占庭问题的方法,并非实用,不过基于BFT理论延伸出了其他共识机制。
9 ?0 r) D8 r! n( @+ R, s6 J, E0 f9 h
区块链网络的记账共识和拜占庭将军的问题是相似的。参与共识记账的每一个节点相当于将军,节点之间的消息传递相当于信使,某些节点可能由于各种原因而产生错误的信息传递给其他节点。通常这些发生故障的节点被称为拜占庭节点,而正常的节点即为非拜占庭节点。
1 S  x7 X& a9 g
* J5 M" L4 i7 t假设分布式系统拥有n台节点,并假设整个系统拜占庭节点不超过m台(n≥3m+1),拜占庭容错系统需要满足如下两个条件:
! X& o1 O2 U: F+ `# A, R6 {
  X* C, X$ ~& D4 R. L所有非拜占庭节点使用相同的输入信息,产生同样的结果。在区块链bbcaijing.cn系统中,可以理解为,随机数相同、区块算法相同、原账本相同的时候,计算结果相同。
; j) j8 F9 i3 Z& r1 d3 O* ?& X2 f# ^+ L! y- ~' L6 L) a( i
如果输入的信息正确,那么所有非拜占庭节点必须接收这个消息,并计算相应的结果。在区块链系统中,可以理解为,非拜占庭节点需要对客户的请求进行计算并生成区块。
: B7 j0 ?& K4 `6 \# b
5 h2 P& a! t* T8 F% q& v" D) n另外,拜占庭容错系统需要达成如下两个指标:
/ h6 T9 s" |' i! N0 Y
: s* o  t( L  F: H1 v4 A7 v: f9 _安全性:任何已经完成的请求都不会被更改,它可以在以后请求看到。在区块链系统中,可以理解为,已经生成的账本不可篡改,并且可以被节点随时查看。- C2 i% G, @/ `5 n; e7 }; b
- l- Q6 q6 k& b$ T' n0 k
活性:可以接受并且执行非拜占庭客户端的请求,不会被任何因素影响而导致非拜占庭客户端的请求不能执行。在区块链系统中,可以理解为,系统需要持续生成区块,为用户记账,这主要靠挖矿的激励机制来保证。, T4 y: N; u9 p' p+ j, z

5 i0 T+ e2 k1 `8 J/ g1 h$ V在分析拜占庭问题的时候,假设信道是可信的。拓展开来,在拜占庭容错系统,普遍采用的假设条件包括:( Q9 c5 A; h3 ?' z0 d2 w! l+ q  U

; e* U7 T- z; G; V! b+ V拜占庭节点的行为可以是任意的,拜占庭节点之间可以共谋;
6 Q; N6 V, |; y) ?4 ~& w/ Z
5 }1 K1 s; d3 V8 t节点之间的错误是不相关的;( J! ^0 `1 r: b; r$ K- H/ N; f

4 h4 h( C! X- e, `节点之间通过异步网络连接,网络中的消息可能丢失、乱序并延时到达,但大部分协议假设消息在有限的时间里能传达到目的地;
$ j* V% \5 ~7 L  x' f7 u2 [7 `* s2 z, |, L) e( \
节点之间传递的信息,第三方可以嗅探到,但是不能篡改、伪造信息的内容和破坏信息的完整性。
BitMere.com 比特池塘系信息发布平台,比特池塘仅提供信息存储空间服务。
声明:该文观点仅代表作者本人,本文不代表比特池塘立场,且不构成建议,请谨慎对待。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

成为第一个吐槽的人

虹桥大宝剑 初中生
  • 粉丝

    0

  • 关注

    0

  • 主题

    26