10分で論文略読: Asynchronous Byzantine Agreement Protocols (1987)
Asynchronous Byzantine Agreement Protocols
Lamport, Shostak, Pease の The Byzantine General Problem (1983) ではシステムが許容可能な故障プロセス数を
- Introduction to reliable and secure distributed programming (2011)
- Secure intrusion-tolerant replication on the internet (2002)
- Asynchronous BFT Made Practical (2018)
BRACHA, Gabriel. Asynchronous Byzantine agreement protocols. Information and Computation, 1987, 75.2: 130-143.
Abstract
コンセンサスプロトコルは
1. Introduction
- Agreement: すべての正常なプロセスは同じ値を決定する
- Validity: すべての正常なプロセスが同じ値
で開始すると、すべての正常なプロセスは値v で決定する。v
全
決定論的 Termination は非同期環境では FLP Impossibility により達成できない。ランダム化されたコンセンサスは FLP Impossibility を回避するためにランダムさを加えて確率的 Termination 特性を持つ。
2. Reliable Broadcast
あるプロセス
-
が正常なとき、すべての正常なプロセスなメッセージの値に合意する。p -
が故障のとき、すべての正常なプロセスは同じ値に合意するか、またはp からのいかなる値も受理しない。p
2.1 The Broadcast Primitive
この論文で紹介するプロトコルのメッセージは initial, echo, ready の 3 種類。
- (initial,
) はv が値p を送信したいことを意味する。v - (echo,
) は送信者がv から (initial,p ) を受信しているか、またはそれを裏付ける十分な (echo,v ) または (ready,v ) を受信してv がp を送信したことを知っていることを意味する。v - (ready,
) はv がv によって送信された唯一の値であり、また十分な (echo,p ) または (ready,v ) を受信しているためv を受理する準備があることを意味する。v
あるプロセスが十分な (ready,
* Protocol 1 *
Broadcast(v)
step 0. (By process p)
Send (initial, v) to all the processes.
step 1. Wait until the receipt of,
one (initial, v) message
or (n+t)/2 (echo, v) messages
or (t+1) (ready, v) messages
for some v.
Send (echo, v) to all the processes.
step 2. Wait until the receipt of,
(n+t)/2 (echo, v) messages
or t+1 (ready, v) messags
(including messages received in step 1)
for some v.
Send (ready, v) to all the processes.
step 3. Wait until the receipt of,
2t+1 (ready, v) messages
(including messages received in step 1 and step 2) for some v.
Accept v.
Fig. 1. The broadcast primitive
2.2 Correctness Proof
Lemma 1. 2 つの正常なプロセス
と s がそれぞれ (ready, t ) と (ready, v ) メッセージを送信するとき、 u である。 v=u
証明. (ready,
Lemma 2. 2 つの正常なプロセス
と q がそれぞれ r と v の値を受理したとき、 u である。 v=u
証明.
Lemma 3. 正常なプロセス
が値 q を受理するとき、他のすべてのプロセスは最終的に v を受理する。 v
証明.
Lemma 4. 正常なプロセス
が値 p をブロードキャストするとき、すべての正常なプロセスは v を受理する。 v
証明.
定理 1. Fig 1 のプロトコルは高信頼性ブロードキャストプロトコルである。
証明.
-
が正常であれば、Lemma 4 よりすべての正常なプロセスはp を受理する。v -
が故障であり、ある正常なプロセスp が値q を受理すれば、Lemma 3 よりすべての正常なプロセスはv を受理する。さもなくばすべての正常なプロセスは値を受理しない。v
3. Correctness Enforcement
Lemma 5. 2 つの正常なプロセス
と p がそれぞれ q と (r,k,v) メッセージを検証したとき、 (r,k,u) である。 u=v
証明.
Lemma 6. 正常なプロセス
が p -メッセージ k を検証するとき、他のすべての正常なぷp炉セス m は q を検証する。つまり m と p が正常であれば q である。 {\sf VALID}_p^k = {\sf VALID}_q^k
証明.
Lemma 7. 正常なプロセス
が p -メッセージ k をブロードキャストするとき、すべての正常なプロセスは最終的に m を検証する。 m
round(k) by process p
Send (p, k, v) to all the processes
Wait until a set S of n-t messages from round k have been received
v := N (k, S)
Fig. 2. A round of general synchronous protocol.
round(k) by process p
Broadcast (p, k, v)
Wait till a set S of n-t k-messages have been validated
v := N (k, S)
Fig. 3. A modified round of a general asynchronous protocol.
4. The Consensus Protocol
- ラウンド: 1 回のブロードキャスト。
- フェーズ: 1 回の合意シーケンス。1 フェーズは 3 ラウンドで構成される。
-
-メッセージ: ラウンドk に送信されるメッセージ。k
5. Correctness Proof
Fig. 4 は
Lemma 8. 正常なプロセス
がラウンド p にいるとき、 i は最終的にラウンド p へ進行する。 i+1
証明. もしそうでないと、ある正常なプロ祖エスは永遠にブロックする。プロセス
Lemma 9. ラウンド
の開始ですべての正しいプロセスが値 3r+1 を持つとき、それらはすべてラウンド v で 3r+3 を決定する。 v
証明. すべての
Lemma 10.
と p を正常なプロセスとする。フェーズ q で r が p のメッセージを検証し、 (d,v) が q のメッセージを検証するとき、 (d,u) である。 u=v
証明. ─
定理 2. Fig. 4 で述べたプロトコルは、
に対して t \lt n/3 -relisient なコンセンサスプロトコルである。 t
証明.
- Validity: Lemma 9 より、値
で開始したプロセスはすべてv で終了する。v - Agreement: ラウンド
で3r+3 が 1 に決めたとき、少なくともp 個の2t+1 メッセージを検証しているはずであり、Lemma 6 より他のすべての正常なプロセスは少な渥とも(d,1) 個の同じメッセージを検証している。したがってラウンドt+1 のステップ (ii) ですべての正常なプロセスは3r+3 を決定している。フェーズv_q=1 の開始ですべての正常なプロ背えすは 1 を持ち、Lemma 9 によりフェーズr+1 の終わりに 1 に決定する。r+1 - Termination: フェーズ
について、いくつかのプロセスはステップ (ii) でラウンドr の値を強制され、残りのプロセスは (iii) で恋んトスで値を決定するとする。このとき 2 ケースが考えられる。3r+3 -
はp を検証した。フェーズ(d,v) でコイントスしたすべての正常なプロセスはr の確率でp \gt 2^{-(n-t)} をトスする。Lemma 10 より、正常なプロセスの残りは値をv に決定する。v -
はp を検証していない。─(d,v)
-
いずれも
Bracha and Toueg (1985) では
* Protocol 2 *
Phase(i): (by process p)
1. Broadcast (p, 3i+1, value[p]). Wait until validate n-t 3i+1-messages.
value[p] := majoriby value of the n-t validated messages.
2. Broadcast (p, 3i+2, value[p]). Wait until validate n-t 3i+2-messages.
(i) If more than n/2 of the messages have the same value v, then value[p] := v
(ii) Otherwise, value[p] := value[p].
3. Broadcast (p, 3i+3, value[p]). Wait until validate n-t 3i+3-messages.
(i) If validated more than 2t messages with value (d, v) then decition[p] := value[p] := v
(ii) If validated more than t messages with value (d, v) then value[p] = v.
(iii) Otherwise, value[p] := coin_toss(0 or 1 with probability 1/2).
Go to round 1 of phase i+1
Fig. 4. The consensus protocol.
6. Performance
定理 3. (i) 定数
に対して c のとき、合意に達する期待フェーズ数は t = c \cdot n のべき乗である。 (ii) 定数 n に対して c のとき、合意に達する期待フェーズ数は t=c \sqrt{n} に依存しない (ただし n に対して指数的である)。 c
証明. Ben-Or (1983) にある。
定理 3 は非同期のケース。同期の場合は注意が必要。
7. Rabin's Model
期待ラウンド 4 の
8. Asynchronous Byzantine General Protocol
非同期ではビザンチン将軍プロトコルは termination 特性を達成できない。
定理 4. ビザンチン将軍プロトコルは、ただ一つの故障プロセスの存在で非同期環境では不可能である。
証明. 非同期環境でビザンチン将軍プロトコルが可能だと仮定して次のシナリオを考える。
- 送信者が故障しているとき、プロトコル中にほかの正常なプロセスにメッセージを送信しない。Termination 特性によりプロセスは同じ値、我々の場合は 0 に、
で合意する。T_0 - 送信者と他のプロセスが正常で、プロトコルに従って
-メッセージを送るが、時刻1 までにメッセージが到着しなかった。正常なプロセスはシナリオ 1 のように尾奈jビューを持ち、従ってT_0 で 0 に決定する。これは Validity 特性に違反する。T_0
Weak Termination: 送信者が正常なら、すべての正常なプロセスは最終的に値を決定する。送信者が故障していれば、すべての正常なプロセスは最終的に決定するか、誰も決定しないかのいずれかである。
定理 5. 非同期システムにおいて、ビザンチン将軍プロトコルは Weak Termination で
でのみ可能である。 t \lt n/3
証明.
- A と B のプロセスが正常で、送信者は
-メッセージを送る。C のプロセスは故障で、プロトコル中にメッセージを送信しない。送信者が正常で、最大でも0 個のプロセスが故障しているため、A と B のプロセスは同時刻t に 0 に合意しなければならない。T_0 - 送信者のみが故障しているとき、A と B のプロセスには
-メッセージを、C のプロセスには0 -メッセージを送る。C からのメッセージは遅延し1 より後に受信される。A と B はシナリオ 1 と同じシステムのビューを持ち、したがって時刻T_0 に 0 で合意する。T_0
同様の方法で 3 つ目のシナリオを構築できる。
- 送信者のみが故障yしている場合、
-メッセージを A と B に送信し、1 -メッセージを C に送信する。B からのメッセージは遅延し、0 には受信されない。T_0 で A と C のプロセスは 1 に合意する。T_1
シナリオ 2 と 3 を組み合わせるとシナリオ 4 となり矛盾が生じる。
- A のプロセスが故障しており、B と C のプロセスは正常である。A のプロセスはシナリオ 2 のように B のプロセスに、またシナリオ 3 のように C のプロセスに送信すると、B のプロセスと C のプロセスの間のすべてのプロセスは遅延し、
まで受信されない。このシナリオでは\max(T_0,T_1) に B のプロセスが 0 に合意し、C のプロセスは 1 に合意するため矛盾する。\max(T_0,T_1)
Discussion