n n
n−1
n f
�0�1�n−1
δ
P0
�0
�0,...,�3�2
L
v
0
1
2
v =v
vv
v
v
v
0
v
v
0
1
3
2
3
v =v v = v
0
L
L
1
3
L
2
v
v
00
1
3
2
3
v =v v = v
0
L
L
1
3
L
2
L
v =v
0
1
2
v =v
v =v
v =v
v =v
v =y
v =z
y
z
v
v
�0v�1�2�3
�2�3�1v
�2v�3�1v=majorite(v, v, v)
�1v�3y�2v=majorite(v, y, v)
�3v�1x�2v=majorite(v, x, v)
�1�2v�0
n m n>3m
m=0
�0v
�jvvj=v vj=DEF
mm>0n>3m>0
�0v
�j
vvj=v vj=DEF
vj
n−2
�ij=i
vjv�i�jvj=DEF
δ
val =majorite(v0,...,v
n−1)
majorite(v0,...,v
n−1)=�v v
DEF
val
n m 3n>m)
1
m=0
m k n>2k+m k
m
n
m=0
m>0
Fig. 1 – Exemple pour 4 lieutenants avec l2traitre
majeur est d’ˆetre robuste vis `a vis des pannes (de sites ou de communications). Consid´erons le
probl`eme des g´en´eraux byzantins. L’arm´ee byzantine assi`ege une ville : elle a ncampements com-
mand´e par un lieutenant. Un g´en´eral commande un parmi ces ncampements et commande aussi
les n−1 lieutenants. Par abus de notation, le g´en´eral sera aussi consid´er´e comme un lieutenant.
Parmi ces n lieutenants, il y a ftraites (ou byzantins). Cette arm´ee doit attaquer cette ville. Pour
r´eussir il faut que tous les campements command´es par des lieutenants loyaux doivent attaquer
en mˆeme temps. Chaque jour, le g´en´eral donne l’ordre d’attaquer ou d’attendre : il est not´e l0.
Les autres lieutenants sont not´es l1, ..., ln−1. Le probl`eme est ´etudi´e dans le cadre suivant dans le
mode synchrone et dans le monde se restreint au probl`eme suivant :
1. dans le mode de communication oral : Les communications se font par l’interm´ediaire de
messagers (chaque destinataire d’un message connaˆıt l’exp´editeur).
2. dans une nombre limit´e d’ordres : deux possibles < AT T AQUER > ou < REP OSER >.
3. dans le mode de synchrone : le temps de transmission ne peut pas ˆetre sup´erieure `a φ. Les
lieutenants se rendent compte quand il y a une perte de messages. Lors de non-r´eception de
messages, la valeur re¸cue par d´efaut sera DEF.
Le r´esultat de l’algorithme doit satisfaire les deux conditions suivantes :
IC1 : tous les lieutenants loyaux prennent la mˆeme d´ecision processus normaux doivent connaˆıtre/prendre
la d´ecision de P0.
IC2 : Si le g´en´eral l0est byzantin, alors chaque lieutenant loyal ob´eissent `a l’ordre du g´en´eral.
Description de l’algorithme Voici l’algorithme P(0) avec ncampements et mparticipants by-
zantins (n > 3m) :
1. Cas P(0) (aucun participant est byzantin : m = 0) :
(a) Le g´en´eral l0envoie la valeur < v > `a chacun de ses lieutenants.
(b) Si le lieutenant ljre¸coit la valeur < v > alors vj=vsinon vj=DEF (d´etection d’une
non r´eception d’un message).
2. Cas P(m) (m participants byzantins, m > 0, n > 3m > 0) :
(a) Le g´en´eral l0envoie la valeur < v > `a chacun de ses lieutenants.
(b) Pour chaque lieutenant lj,
i s’il re¸coit la valeur < v > alors vj=vsinon vj= DEF
ii il lance la proc´edure P(m-1) en se comportant comme g´en´eral et en envoyant vj`a
ces n−2 autres lieutenants.
2