10.03.2015 Views

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 ...

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!