OdpornoÅÄ na bÅÄdy bizantyjskie w systemach peer-to-peer - Instytut ...
OdpornoÅÄ na bÅÄdy bizantyjskie w systemach peer-to-peer - Instytut ...
OdpornoÅÄ na bÅÄdy bizantyjskie w systemach peer-to-peer - Instytut ...
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
3.5 Podsumowanie 57<br />
Pro<strong>to</strong>kół 3.5.2: Validated Byzantine Agreement - VBA<br />
dla uczestnika P i , z<strong>na</strong>cznika ID oraz predykatu Q ID<br />
ISTNIEJE PREDYKAT V ID|a (v, ρ):<br />
V ID|a (v, ρ) ≡ (v =0)or (v =1and ρ spełnia c-broadcast<br />
dla wiadomości ( v-echo, w a , π a ) oz<strong>na</strong>czonej ID.a.0 tak, że<br />
Q ID (w a ,π a ) jest spełnione)<br />
PO ODEBRANIU WIADOMOŚCI ( ID, in, v-propose, w, π ):<br />
c-broadcast ( v-echo, w , π ) ozaczone ID|vcbc.i.0<br />
w j ←⊥; π j ←⊥ (1 ≤ j ≤ n)<br />
wait for n − t wiadomości ( v-echo, w j , π j )<br />
c-delivered oz<strong>na</strong>czonych ID|vcbc.j.0 od różnych P j<br />
takich,<br />
{<br />
że spełnione jest Q ID (w j ,π j )<br />
1 jeżeli wj ≠ ⊥<br />
c j ←<br />
(1 ≤ j ≤ n)<br />
0 w innym wypadku<br />
C ← [c 1 , ···,c n ]<br />
c-broadcast ( v-commit, C ) i oz<strong>na</strong>czone ID|vcbc.i.0<br />
C j ←⊥ (1 ≤ j ≤ n)<br />
wait for n − t wiadomości ( v-commit, C j ) j<br />
c-delivered oz<strong>na</strong>czonych ID|vcbc.j.0<br />
takich, że przy<strong>na</strong>jmniej n − t wpisów w C j =1<br />
wygeneruj udział γ w progowym podrzucaniu monetą oz<strong>na</strong>czoną ID|vba<br />
send( ID, v-coin, γ ) i do wszystkich P<br />
wait for t +1wiadomości zawierających udziały w ID|vba<br />
scal udziały by otrzymać S = F (ID|vba) ∈{0, 1} k′′<br />
wybierz losową permutację Π używając genera<strong>to</strong>ra G zziarnemS<br />
l ← 0<br />
repeat<br />
l ← l +1;a ← Π(l)<br />
if w a = ⊥<br />
then<br />
{<br />
send ( ID, v-vote, a, 0, ⊥ ) i do wszystkich P<br />
niech ρ jest wiadomością c-broadcast oz<strong>na</strong>czoną ID|vcbc.a.0<br />
else<br />
send ( ID, v-vote, a, 1, ρ ) i do wszystkich P<br />
u j ←⊥; r j ←⊥ (1 ≤ j ≤ n)<br />
wait for n − t wiadomości ( ID, v-vote, a, u j , ρ j ) j od różnych P j<br />
takich, że V ID|a jest spełnione oraz C j [a] =0gdy u j =0<br />
if ∃ u j =1<br />
then v ← 1; ρ ← ρ j<br />
else v ← 0; ρ ←⊥<br />
zaproponuj v potwierdzone przez ρ dla BBA w stronę 1 z V ID|a<br />
wait for ustalenie war<strong>to</strong>ści b potwierdzonej przez σ dla ID|a<br />
until b =1if w a = ⊥<br />
{<br />
użyj σ do zakończenia c-broadcast oz<strong>na</strong>czonego ID|vcbc.a.0<br />
then<br />
oraz c-deliver (ID, v-echo, w a , π a )<br />
zakończ ( ID, out, v-decide, w a , π a ) i , halt