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

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

B.2 Uzgadnianie z częściowym zachowaniem poprawności 107<br />

poprawnie, chociaż może odpowiadać <strong>na</strong> otrzymane wiadomości. Musi istnieć<br />

mechanizm, gdzie pozostałe procesy są w stanie ustalić, który z procesów zawiódł<br />

i wykluczyć go z uzgadniania. Twierdzenie 1 jest is<strong>to</strong>tne z praktycznego<br />

punktu widzenia, gdyż wskazuje, że s<strong>to</strong>sowalne pro<strong>to</strong>koły muszą zakładać synchronizację<br />

między procesami w celu zapewnienia częściowej poprawności.<br />

B.2 Uzgadnianie z częściowym zachowaniem poprawności<br />

Rozpatrujemy system wprowadzony w poprzednim punkcie. Pokażemy pro<strong>to</strong>kół<br />

działający dwufazowo, który potwierdza poprawność <strong>na</strong>stępującego twierdzenia.<br />

Twierdzenie 6 Istnieje częściowo poprawny pro<strong>to</strong>kół uzgadniania, w którym<br />

wszystkie poprawnie działające procesy podejmą decyzję, jeżeli tylko stanowią<br />

większość i podczas uzgadniania wszystkie, te procesy pozostaną sprawne.<br />

Szkic dowodu. Każdy proces konstruuje skierowany graf G, gdzie węzłami są<br />

inne procesy, rozsyła do wszystkich procesów wiadomość ze swoim numerem i<br />

czeka <strong>na</strong> L − 1 odpowiedzi <strong>na</strong> wiadomość od innych procesów, L = ⌈ ⌉<br />

(N+1)<br />

2 . G<br />

ma gałąź od i do j jeżeli j odbierze wiadomość. G jest s<strong>to</strong>pnia L − 1.<br />

Druga faza. Procesy konstruują graf G + , tak, że każdy proces k po zakończeniu<br />

fazy z<strong>na</strong> wszystkie krawędzie (j, k) incydentne do k w G + ,jakrównież<br />

początkowe war<strong>to</strong>ści dla j. Konstrukcja G + przebiega w ten sposób, że każdy<br />

proces rozgłasza numery L − 1 procesów, od których otrzymało komunikat w<br />

fazie pierwszej, <strong>na</strong>stępnie czeka <strong>na</strong> odpowiedzi od każdego poprzednika w G z<br />

fazy pierwszej. W ten sposób k wie o L−1 sąsiadach, jak również o wszystkich<br />

węzłach, dla których on jest sąsiadem. Zatem każdy z procesów z<strong>na</strong> początkową<br />

klikę w G + o war<strong>to</strong>ści przy<strong>na</strong>jmniej L. Następnie każdy proces podejmuje<br />

decyzję <strong>na</strong> podstawie odebranych war<strong>to</strong>ści początkowych od innych procesów.<br />

Ten pro<strong>to</strong>kół ma bardzo ważną właściwość, a mianowicie wystarczy jedynie,<br />

⌈ <strong>to</strong> żeby⌉ większość procesów była spraw<strong>na</strong>, by uzgodnienie doszło do skutku<br />

(N+1)<br />

2 . Gdyby uzgodnienie nie doszło do skutku, bo jakiś z poprawnych procesów<br />

odmówiłby uczestniczenia w pro<strong>to</strong>kole, <strong>to</strong> konieczne byłoby rozpoczęcie<br />

uzgadniania od początku wykluczając ten proces. Opisany pro<strong>to</strong>kół do złudzenia<br />

przypomi<strong>na</strong> ten, który s<strong>to</strong>sowano do rozwiązania problemu bizanyjskich generałów,<br />

z tym wyjątkiem, że tu, każdy z uczestników uzgadnia jedną war<strong>to</strong>ść dla<br />

całej grupy.

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

Saved successfully!

Ooh no, something went wrong!