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.3 Algorytm BFT 43<br />

2. Replika głów<strong>na</strong> p rozgłasza σp ,m><br />

3. Replika i rozgłasza < PREPARE, v, n, d, i> σi i czeka <strong>na</strong> 2f +1takich<br />

komunikatów uwzględniając własny.<br />

4. Gdy warunek z poprzedniego punku jest spełniony replika i rozsyła komunikat<br />

< COMMIT, v, n, d, i> σi i czeka <strong>na</strong> 2f +1 takich samych<br />

komunikatów od innych replik.<br />

5. Gdy warunek z poprzedniego punku jest spełniony replika i wykonuje<br />

zlecenie oraz wysyła odpowiedź do klienta c postaci < REPLY, t, i, r> σi .<br />

Widoki. Mechanizm widoków v jest związany z wprowadzeniem odporności<br />

<strong>na</strong> uszkodzenie repliki głównej p. Gdy replika głów<strong>na</strong> nie odpowie <strong>na</strong> zlecenie<br />

klienta, a rozgłoszone zlecenie dotrze do innej repliki, <strong>to</strong> replika która odebrała<br />

komunikat wysyła < VIEW-CHANGE, v +1, n, C, P, i> σi . C jest zbiorem<br />

2f +1 punktów kontrolnych potwierdzających poprawność stanu s, aP jest<br />

zbiorem zbiorów zleceń P m przygo<strong>to</strong>wanych przez i o z<strong>na</strong>czniku większym niż<br />

n. Każdy podzbiór P m składa się z wiadomości przed-przygo<strong>to</strong>wania oraz 2f<br />

odpowiadających jej wiadomości przygo<strong>to</strong>wania zgodnych co do v, n oraz m.<br />

Nowa replika głów<strong>na</strong> p po odebraniu 2f komunikatów o zmianie widoku<br />

rozsyła wiadomość < NEW-VIEW, v +1, V, O > σp , gdzie V jest zbiorem<br />

komunikatów zmiany widoku. Zbiór O jest wyz<strong>na</strong>czany <strong>na</strong>stępująco:<br />

1. Replika głów<strong>na</strong> określa dwie war<strong>to</strong>ści min s - numer ostatniego stabilnego<br />

z<strong>na</strong>cznika zatwierdzenia stanu w V oraz max s , <strong>na</strong>jwyższy numer zlecenia<br />

w V.<br />

2. Replika głów<strong>na</strong> przygo<strong>to</strong>wuje nowe wiadomości przed-przygo<strong>to</strong>wania dla<br />

każdego n ∈ (min s ,max s ). Mogą zaistnieć dwa przypadki: (1) istnieje<br />

przy<strong>na</strong>jmniej jeden zbiór w P gdzie wystąpił komunikat zmiany widoku<br />

w V z numerem sekwencji n lub (2) nie ma takiego zbioru. W pierwszym<br />

przypadku replika głów<strong>na</strong> tworzy komunikat < PRE-PREPARE, v +1,<br />

n, d> σp , gdzie d jest skrótem zlecenia o <strong>na</strong>jwiększej sekwencji n w<br />

V. W przeciwnym razie replika głów<strong>na</strong> konstruuje komunikat < PRE-<br />

PREPARE, v+1, n, d null > σp , gdzie d null jest skrótem specjalnego pustego<br />

zlecenia null, które jest obsługiwane przez repliki w taki sam sposób, jak<br />

inne zlecenia, ale nie zmienia stanu. Ta technika ma <strong>na</strong> celu usunięcie<br />

ewentualnych luk.<br />

Jeżeli min s jest większe od ostatniego stabilnego stanu dla p, <strong>to</strong>p zapamiętuje<br />

dowód stabilności dla min s . Repliki zapasowe wykonują zlecenia <strong>na</strong>desłane<br />

przez nową replikę główną dla sekwencji pomiędzy min s oraz max s ,alewysyłają<br />

tylko te odpowiedzi do klientów, które nie zostały im przesłane.

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

Saved successfully!

Ooh no, something went wrong!