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.

106 Dodatek B. Uzgadnianie w asynchronicznym systemie<br />

p ′ = p Rozważmy decydujący przebieg σ nie uwzględniający p z C 0 oraz niech<br />

A = σ(C 0 ). Z lematu 1 wynika, że σ może zaistnieć dla D i oraz prowadzi<br />

do i-określonej konfiguracji E i = σ(D i ),i ∈{0, 1}. Także z lematu<br />

1 wynika, e(A) =E 0 oraz e(e ′ (A)) = E 1 . Co za tym idzie, A jest dwuokreślone,<br />

co nie zgadza się z założeniem. Ostatecznie D musi zawierać<br />

dwuokreśloną konfigurację.<br />

Powyższe rozważania prowadzą do wniosku, że każdy decydujący przebieg<br />

rozpoczy<strong>na</strong>jący się dwuokreśloną konfiguracją przechodzi do jednookreślonej<br />

konfiguracji w jakimś kroku. Ten krok determinuje przyszłą war<strong>to</strong>ść decyzyjną.<br />

W całkowicie asynchronicznym pro<strong>to</strong>kole uzgadniania gdy jakikolwiek z procesów<br />

jest uszkodzony, moż<strong>na</strong> unikać takiego kroku, który powoduje przejście<br />

z dwuokreślonej konfiguracji do jednookreślonej. Używając udowodnionych lematów<br />

moż<strong>na</strong> pokazać, że <strong>na</strong>stępujące twierdzenie jest prawdziwe.<br />

Twierdzenie 5 Nie istnieje taki pro<strong>to</strong>kół asynchronicznego uzgadniania P, który<br />

byłby całkowicie poprawny, gdy chociaż jeden proces działa błędnie.<br />

Dowód. Przebieg, który nie prowadzi do uzgodnienia decyzji (war<strong>to</strong>ści) konstruowany<br />

jest w fazach. Utrzymywa<strong>na</strong> jest kolejka procesów początkowo nieuporządkowa<strong>na</strong>.<br />

Bufor wiadomości uporządkowany jest zgodnie z czasem ich<br />

<strong>na</strong>dania, w porządku od <strong>na</strong>jstarszej wiadomości do <strong>na</strong>jmłodszej. Każda faza<br />

składa się z pewnej liczby kroków. Faza przebiega począwszy od pierwszego<br />

procesu w kolejce procesów, którego bufor wiadomości nie jest pusty <strong>na</strong> początku<br />

fazy, odbiera on <strong>na</strong>jstarszą wiadomość i jest ustawiany <strong>na</strong> koniec kolejki.<br />

W ten sposób, żaden z procesów nie jest zagłodzony, wykonuje wszystkie kroki<br />

i odbiera wszelkie wysłane do niego wiadomości.<br />

Niech C 0 jest dwuokreśloną konfiguracją początkową, której istnienie gwarantuje<br />

lemat 2. Załóżmy, że proces p jest <strong>na</strong> początku kolejki procesów, a m<br />

jest <strong>na</strong>jstarszą wiadomością wysłaną do p, a w innym przypadku φ. Zdarzenie<br />

e =(p, m) jest ostatnim zdarzeniem przeprowadzającym konfigurację C do C ′ ,<br />

gdzie C ′ jest dwuokreślone co gwarantuje lemat 3. Ta sekwencja kroków zakańcza<br />

fazę.<br />

Każda faza zakańcza się dwuokreśloną konfiguracją, co prowadzi do nieskończonego<br />

przebiegu, gdzie decyzja nigdy nie zostaje podjęta, <strong>to</strong> pociąga za sobą,<br />

że P nie jest całkowicie poprawne.<br />

Zrozumienie tego dowodu daje świadomość, że nie ma pro<strong>to</strong>kołu, który pozwalałby<br />

podjąć decyzję przez grupę procesów, jeżeli któryś z nich nie działa

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

Saved successfully!

Ooh no, something went wrong!