Download as pdf or txt
Download as pdf or txt
You are on page 1of 14

Bitcoin: Elektroniczny system pieniężny Peer-to-Peer1

Satoshi Nakamoto
satoshin@gmx.com
www.bitcoin.org

Streszczenie. Elektroniczna gotówka w prawdziwym systemie peer-to-peer pozwoli na


bezpośrednie przesyłanie płatności online pomiędzy użytkownikami, bez pośrednictwa
instytucji finansowych. Część rozwiązania zapewniają już podpisy cyfrowe, ale główne
korzyści ulegają zatarciu, jeżeli konieczny jest zaufany pośrednik, aby uniemożliwić podwójne
wydatkowanie środków [ang. double spending]. Proponujemy rozwiązanie problemu
podwójnego wydatkowania za pomocą sieci peer-to-peer. Sieć nakłada na transakcję
„znacznik czasu”2 przypisując go do stale powstającego łańcucha potwierdzeń wykonania
działań, czyli dowodu wykonania pracy3. W ten sposób powstaje zapis, którego nie można
zmienić bez ponownego dokonania obliczeń w ramach dowodu wykonania pracy. Najdłuższy
łańcuch nie tylko potwierdza zajście sekwencji odnotowanych zdarzeń, ale także dowodzi,
iż sekwencja ta pochodzi z puli o najwyższej mocy obliczeniowej. Dopóki większość mocy
procesorów jest pod kontrolą węzłów, które nie współpracują w celu dokonania ataku na
sieć, procesory te będą generować najdłuższy łańcuch, a zatem będą w stanie wyprzedzać
napastników. Sama sieć wymaga minimalnej struktury. Wiadomości transmitowane są na
zasadzie najlepszego wyniku pracy, a węzły mogą swobodnie opuszczać sieć i powracać do
niej, przyjmując najdłuższy łańcuch dowodów wykonania pracy, jako potwierdzenie działań
wykonanych w czasie ich nieobecności.

1. Wprowadzenie

Handel w Internecie polega już niemal wyłącznie na instytucjach finansowych, służących jako
zaufani pośrednicy, którzy przetwarzają płatności elektroniczne. Choć system taki wystarcza
dla większości transakcji, to nadal pociąga za sobą nieodłączne bolączki modelu opartego na
zaufaniu. Transakcje całkowicie nieodwracalne są de facto niemożliwe, ponieważ instytucje
finansowe nie mogą uniknąć mediacji w sporach. Koszt mediacji powiększa koszty
transakcyjne, co praktycznie ogranicza minimalną wielkość transakcji i uniemożliwia
dokonywanie małych transakcji okazjonalnych. Pojawia się również koszt dodatkowy,
w postaci utraty możliwości dokonania nieodwracalnych płatności za nieodwracalne usługi.
Gdy występuje możliwość cofnięcia transakcji, konieczne staje się zaufanie. Sprzedawcy

1
Model komunikacji w sieci komputerowej. Źródło: http://pl.wikipedia.org/wiki/Peer-to-peer [Dostęp:
19.10.2012]
2
Podobnie jak na poczcie – datownik określa precyzyjnie datę – tak znacznik czasu precyzyjnie określa
konkretny dzień i czas. Źródło: http://en.wikipedia.org/wiki/Timestamp [Dostęp: 19.10.2012]
3
Ang. proof-of-work – dowód wykonania konkretnej pracy, dowód wykonania konkretnych, ściśle ustalonych
działań, obliczeń matematycznych. Źródło: http://en.wikipedia.org/wiki/Proof-of-work_system [Dostęp:
19.10.2012]

str. 1 z 14
muszą ostrożniej podchodzić do swoich klientów, zmuszając ich do podania większej ilości
informacji, niż byłoby to konieczne w innych okolicznościach. Pewien odsetek oszustw
przyjmuje się za nieunikniony. Kosztów tych oraz niepewności co do płatności można uniknąć
dzięki osobistym transakcjom za pomocą waluty fizycznej, ale nie istnieje żaden mechanizm
dokonywania płatności poprzez urządzenia telekomunikacyjne, bez zaufanego pośrednika.

Potrzebujemy zatem elektronicznego systemu płatności, który będzie oparty na


potwierdzeniu kryptograficznym, nie zaś na zaufaniu, co umożliwi bezpośrednie transakcje
między dowolnymi dwiema stronami, bez konieczności ingerencji zaufanej strony trzeciej.
Fakt, iż transakcje będą praktycznie nieodwracalne, ze względu na ograniczenia obliczeniowe
ochroni sprzedawców przed oszustwami, a w celu ochrony kupujących można łatwo
wprowadzić typowe mechanizmy Escrow4. W niniejszej pracy proponujemy rozwiązanie
problemu podwójnego wydatkowania przy pomocy rozproszonego „znacznika czasu”
serwerów peer-to-peer, potwierdzającego obliczeniowo chronologiczny porządek transakcji.
System jest bezpieczny tak długo, jak „uczciwe” węzły będą wspólnie posiadać większą moc
obliczeniową niż jakakolwiek grupa węzłów prowadzących atak.

2. Transakcje

Elektroniczną monetę definiujemy jako łańcuch podpisów cyfrowych. Każdy właściciel


przekazuje monety innemu podmiotowi poprzez cyfrowe podpisanie „funkcji skrótu”5
poprzedniej transakcji oraz klucza publicznego kolejnego właściciela i dodaje te dane do
zakończenia kodu danej monety. Odbiorca jest w stanie zweryfikować podpisy,
aby potwierdzić dotychczasowy łańcuch własności.

4
Usługa w ramach której pośrednik zabezpiecza prawidłowy przebieg transakcji kupna-sprzedaży. Źródło:
http://pl.wikipedia.org/wiki/Escrow [Dostęp: 19.10.2012]

5
Jest to funkcja, która przyporządkowuje dowolnie dużej liczbie krótką, zwykle posiadającą stały rozmiar, nie
specyficzną, quasi-losową wartość, tzw. skrót nieodwracalny. Źródło:
http://pl.wikipedia.org/wiki/Funkcja_skrótu [Dostęp: 19.10.2012]

str. 2 z 14
Problem oczywiście polega na tym, że odbiorca nie może zweryfikować, czy jeden
z poprzednich właścicieli nie wydatkował danych monet podwójnie. Typowo stosowanym
rozwiązaniem jest wprowadzenie zaufanych organów centralnych, czy też mennic, które
sprawdzają każdą transakcję pod kątem podwójnego wydatkowania. Po każdej transakcji,
monety muszą zostać zwrócone do mennicy celem wydania nowych monet, a tylko do
monet emitowanych bezpośrednio w mennicy można mieć zaufane, że nie zostały
dwukrotnie wydane. Problem tego rozwiązania polega na tym, że los całego systemu
monetarnego zależy od spółki prowadzącej mennicę, a każda transakcja musi przez nią
przejść, tak jak w banku.

Potrzebny jest sposób upewnienia odbiorcy, że poprzedni właściciele nie dokonali żadnych
wcześniejszych transakcji (tymi właśnie, konkretnymi monetami). Dla naszych celów liczyć się
będzie najwcześniejsza transakcja, więc nie dbamy o późniejsze próby dwukrotnego
wydatkowania. Jedynym sposobem potwierdzenia braku transakcji jest informacja
o wszystkich transakcjach. W modelu opartym na mennicy, to mennica znała wszystkie
transakcje i decydowała która nastąpiła jako pierwsza. Aby osiągnąć to samo bez
pośrednictwa zaufanej strony, transakcje muszą być ogłaszane publicznie [1],
a my potrzebujemy systemu, w którym uczestnicy zgadzają się na jedną historię kolejności,
w jakiej wpłynęły transakcje. Odbiorca potrzebuje potwierdzenia, że podczas każdej
transakcji, większość węzłów potwierdziła, że to właśnie on otrzymał daną monetę jako
pierwszy.

str. 3 z 14
3. Serwer datowania (serwer znaczników czasu)

Proponowane rozwiązanie rozpoczyna się od „serwera datowania” [ang. Timestamp Server].


Serwer ten działa w ten sposób, że pobiera nieodwracalny obliczeniowo skrót bloku
elementów, nadaje mu znacznik czasu, po czym szeroko publikuje dany skrót,
np. w tradycyjnej drukowanej gazecie lub w formie postu Usenet6 [2-5]. „Znacznik czasu”
stanowi dowód, iż dane musiały oczywiście istnieć w czasie, gdy powstała dla nich funkcja
skrótu. Każdy „znacznik czasu” zawiera poprzednie „znaczniki czasu” w swojej funkcji skrótu,
co tworzy łańcuch, a każda następna operacja przypisania „znacznika czasu” dodatkowo
potwierdza operacje poprzednie.

4. „Dowód pracy” – dowód (potwierdzenie) wykonania działań (Proof-of-Work)

Aby umożliwić implementację rozproszonego serwera datowania na zasadach peer-to-peer,


będziemy musieli wykorzystać system generowania potwierdzeń wykonywania działań
podobny do systemu Hashcash Adama Backa [6], nie zaś gazety, czy posty sieci Usenet.

Dowody wykonania działań polegają na wyszukiwaniu wartości, dla której funkcja skrótu,
taka jak SHA-256, zaczyna się od pewnej liczby bitów zerowych. Średnia wymagana praca
rośnie wykładniczo względem liczby wymaganych bitów zerowych, a można ją zweryfikować
obliczając jedną funkcję skrótu.

Dla potrzeb naszej sieci „znaczników czasu”, wdrażamy dowód wykonania działań,
zwiększając wartość unikalną [nonce] w bloku aż do znalezienia wartości, która daje skrótowi
danego bloku wymagane bity zerowe. Po wykonaniu przez CPU (procesor) pracy w celu
uzyskania potwierdzenia wykonania działań, blok nie może zostać zmieniony bez ponownego
wykonania działań. Z uwagi na to, że następne bloki są dodawane do łańcucha, zmiana
danego bloku wiązałaby się z koniecznością zmiany wszystkich bloków następujących po nim.

6
Usenet (ang. USEr NETwork – sieć użytkowników) to ogólnoświatowy system grup dyskusyjnych, z którego
można korzystać przez Internet. Źródło: http://pl.wikipedia.org/wiki/Usenet [Dostęp: 19.10.2012]

str. 4 z 14
„Dowód wykonania pracy” rozwiązuje również problem ustalenia reprezentacji występujący
przy podejmowaniu decyzji większością głosów. Gdyby większość była oparta na zasadzie
„jeden-adres-IP-to-jeden-głos”, to mogłoby dojść do jej obalenia przez kogokolwiek,
kto byłby w stanie przydzielić sobie wiele adresów IP. Zastosowanie „dowodów wykonania
pracy” zasadniczo oznacza, że „jeden CPU to jeden głos”. Decyzję większości reprezentuje
najdłuższy łańcuch, który wiąże się z największym wysiłkiem obliczeniowym
zainwestowanym w dowód wykonania działań. Jeżeli większość mocy procesorów jest
sterowana przez „uczciwe”7 węzły, „uczciwy” łańcuch będzie rósł najszybciej i wyprzedzi
wszelkie łańcuchy konkurencyjne. Aby zmodyfikować dotychczasowy blok, napastnik
musiałby ponownie dokonać obliczeń w ramach proof-of-work dla danego bloku oraz
wszystkich bloków po nim, a następnie dogonić i prześcignąć pracę „uczciwych” węzłów.
Jak wykażemy później, prawdopodobieństwo, że wolniejszy napastnik nadrobi zaległości,
maleje wykładniczo wraz z dodawaniem kolejnych bloków.

Aby skompensować wzrost prędkości sprzętu i zmienność zainteresowania eksploatacją


węzłów w czasie, trudność obliczania dowodów wykonania działań jest określana przez
ruchomą średnią – wyznaczającą średnią liczbę bloków na godzinę. Jeśli są one wytwarzane
zbyt szybko, trudność wzrasta.

5. Sieć

Kroki (zasady) działania sieci są następujące:

1) Nowe transakcje są przekazywane (rozgłaszane) wszystkim węzłom.

2) Każdy węzeł zbiera nowe transakcje w blok.

3) Każdy węzeł pracuje nad znalezieniem „trudnego dowodu pracy8” [proof-of-work], czyli
dowodu wykonania działań dla swojego bloku.

7
„Uczciwe”, czyli takie, które służą do autoryzacji transakcji w sieci Bitcoin i „obrony” systemu przed
ewentualnym atakiem.
8
Czym jest „trudny dowód pracy” wyjaśniono w akapicie 4.

str. 5 z 14
4) Gdy węzeł znajdzie dowód wykonania działań, nadaje (rozgłasza) blok do wszystkich
węzłów.

5) Węzły akceptują blok tylko wtedy, gdy wszystkie zawarte w nim transakcje są ważne i nie
doszło do podwójnego wydatkowania.

6) Węzły wyrażają zgodę na przyjęcie bloku poprzez pracę nad stworzeniem kolejnego bloku
w łańcuchu, używając do obliczeń skrótu przyjętego bloku. Węzły zawsze przyjmują
najdłuższy łańcuch jako prawidłowy i pracują nad jego przedłużeniem. Jeśli dwa węzły nadają
różne wersje następnego bloku jednocześnie, niektóre węzły mogą otrzymać jeden z nich
jako pierwszy. W takim wypadku, pracują nad pierwszym otrzymanym blokiem,
ale zachowują drugi, na wypadek gdyby stał się dłuższy. Powiązanie zostanie przerwane,
kiedy zostanie znaleziony następny dowód wykonania działań i jedna z gałęzi staje się
dłuższa. Węzły, które pracowały nad drugim odgałęzieniem, następnie przełączą się na
odgałęzienie dłuższe.

Przekazy dotyczące nowych transakcji nie muszą koniecznie dotrzeć do wszystkich węzłów.
Jeżeli tylko dotrą do wielu węzłów, zostaną wkrótce włączone do bloków. Transmisje
blokowe mają również tolerancję dla wiadomości zagubionych. Jeśli węzeł nie otrzyma
danego bloku, poprosi o niego po otrzymaniu kolejnego bloku, gdy zda sobie sprawę,
że go nie otrzymał.

6. Zachęta

Zgodnie z przyjętą konwencją, pierwsza transakcja w bloku to transakcja specjalna, która


tworzy nową monetę, będącą własnością twórcy bloku. Daje to węzłom zachętę do
wspierania sieci i wprowadza nowe monety do obiegu, ponieważ nie istnieje żaden centralny
organ do ich wydawania. Ciągły dodatek stałej ilości nowych monet jest analogiczny do
poszukiwaczy złota zużywających zasoby, aby dodać złoto do obiegu. W naszym przypadku te
zasoby to czas pracy procesora oraz energia elektryczna, którą się zużywa.

Również opłaty transakcyjne mogą służyć jako zachęta. Jeśli wartość wyjściowa transakcji
jest niższa od jej wartości wejściowej, różnicą jest opłata transakcyjna, którą dodaje się
do wartości motywacyjnej bloku zawierającego transakcję. Po wejściu do obiegu ustalonej
liczby monet, zachęta może w całości przełożyć się na opłaty transakcyjne i być całkowicie
niezależna od inflacji.

Zachęta może pomóc węzłom pozostać uczciwymi. Jeśli „zachłanny” napastnik jest w stanie
zgromadzić więcej mocy obliczeniowej niż wszystkie uczciwe węzły, będzie musiał wybrać
między wykorzystaniem jej do okradania ludzi poprzez kradzież wpłaconych przez siebie
kwot, a użyciem jej do generowania nowych monet. Bardziej powinno mu się opłacać
działanie zgodne z zasadami, ponieważ postępowanie w ramach reguł przysporzy mu więcej
nowych monet niż posiadają pozostali użytkownicy razem wzięci. Stąd też nie będzie mieć
sensu podważanie systemu stanowiącego podstawę jego bogactwa.

str. 6 z 14
7. Odzyskiwanie miejsca na dysku

Po pokryciu ostatniej transakcji dla danej monety wystarczająco dużą liczbą bloków, dane
o poprzednich transakcjach będzie można usunąć, aby zaoszczędzić miejsce na dysku. Aby to
ułatwić bez niszczenia funkcji skrótu danego bloku, transakcje będą zapisywane w drzewie
Merkle [7] [2] [5], a tylko ich korzeń będzie zawarty w bloku skrótu. Stare bloki można
następnie skrócić przez odcięcie gałęzi drzewa. Nie ma konieczności przechowywania
wewnętrznych funkcji skrótu (ang. interior hashes).

Nagłówek bloku bez transakcji zajmie około 80 bajtów. Jeśli założymy, że bloki generowane
są co 10 minut, 80 bajtów * 6 * 24 * 365 = 4,2MB rocznie. Na rok 2008, przy systemach
komputerowych zazwyczaj sprzedawanych z 2 GB pamięci RAM, przewidując wzrost
wynikający z prawa Moore'a na poziomie 1,2 GB rocznie, nawet jeśli nagłówki bloków będą
musiały być przechowywane w pamięci, nie powinno to stanowić problemu.

8. Uproszczona weryfikacja płatności

Możliwe jest sprawdzenie płatności bez konieczności uruchamiania pełnego węzła sieci.
Użytkownik musi tylko zachować kopię nagłówków bloków łańcucha o najdłuższym
dowodzie wykonania działań, które może uzyskać przez przeszukiwanie węzłów sieci, dopóki
nie jest przekonany, że posiada najdłuższy łańcuch, a także uzyskać gałąź drzewa Merkle
łączącą transakcję z blokiem w którym została zapisana ze znacznikiem czasu. Użytkownik nie
może sprawdzić transakcji dla siebie, ale łącząc ją z miejscem w łańcuchu, widzi, że węzeł
sieci ją zaakceptował, a bloki dodane po niej stanowią dalsze potwierdzenie przyjęcia przez
sieć.

str. 7 z 14
Weryfikacja taka jest wiarygodna, dopóki uczciwe węzły kontrolują sieć, ale jest bardziej
narażona na przekłamania, jeśli sieć zostanie „pokonana” (opanowana) przez atakującego.
Podczas gdy węzły sieci mogą sprawdzić transakcje dla siebie, uproszczona metoda może
zostać zafałszowana przez fałszywe transakcje napastnika, dopóki napastnik będzie w stanie
„panować nad siecią”. Jedną ze strategii ochrony przed taką sytuacją byłoby przyjmowanie
alertów z węzłów sieci po wykryciu nieprawidłowego bloku, co skłoni oprogramowanie
użytkownika do pobrania pełnego bloku oraz transakcji objętych alertem, w celu
potwierdzenia niezgodności. Firmy otrzymujące częste płatności będą prawdopodobnie
chciały uruchomić własne węzły, co zapewni więcej niezależności, bezpieczeństwa i szybszą
weryfikację.

9. Łączenie i dzielenie wartości

Chociaż byłoby możliwe obracanie monetami indywidualnie, prowadzenie oddzielnych


transakcji dla każdego centa w transferze jest niewygodne. Aby umożliwić dzielenie i łączenie
wartości, transakcje zawierają wiele danych wejściowych i wyjściowych. Zwykle istnieć
będzie albo jeden zestaw danych wejściowych z poprzedniej większej transakcji, albo wiele
zestawów łączących mniejsze kwoty, oraz co najwyżej dwa zestawy danych wyjścia: jeden
dotyczący zapłaty i jeden dotyczący ewentualnego wydania reszty.

str. 8 z 14
Należy zauważyć, że „fan-out”9, gdzie transakcja zależy od kilku transakcji, które z kolei
zależą od wielu innych, nie stanowi tu problemu. Nigdy nie ma konieczności wyodrębnienia
kompletnej autonomicznej kopii historii danej transakcji.

10. Prywatność

Tradycyjny model bankowości osiąga pewien poziom prywatności poprzez ograniczenie


dostępu do informacji (i ukazywanie jej wyłącznie) uczestnikom transakcji oraz zaufanej
stronie trzeciej. Konieczność publicznego ogłoszenia wszystkich transakcji uniemożliwia
zastosowanie tej metody, ale prywatność można jeszcze utrzymać poprzez przerwanie
przepływu informacji w innym miejscu, przy zachowaniu anonimowości kluczy publicznych.
Można zobaczyć, że ktoś wysyła daną kwotę do kogoś innego, ale bez informacji
pozwalającej na połączenie transakcji z kimkolwiek. Jest to podobne do poziomu informacji
ujawnianych przez giełdy papierów wartościowych, gdzie czas i wielkość poszczególnych
wymian, tzw. „taśma”10 jest udostępniana publicznie, ale bez podawania kim są strony
transakcji.

9
W elektronice cyfrowej „fan-out” to „obciążenie”, czyli liczba wejść do których jest podłączona bramka
logiczna. Źródło: http://en.wikipedia.org/wiki/Fan-out [Dostęp: 19.10.2012]
10
Rodzaj nośnika danych zawierającego „komunikaty” z giełdy. Dawniej informacje giełdowe były
przekazywane na taśmach. Obecnie publikowane są m.in. w Internecie takie dane z giełdy jak: rodzaj akcji,
cena, wolumen oraz czas dokonania danej transakcji. Źródło: http://en.wikipedia.org/wiki/Ticker_tape [Dostęp:
19.10.2012]

str. 9 z 14
Dodatkową „zaporę” powinno zapewnić generowanie nowej pary kluczy dla każdej
transakcji, aby uniemożliwić powiązanie ich ze wspólnym właścicielem. Pewne możliwości
łączenia nadal są nieuniknione przy transakcjach o wielu danych wejściowych,
które z konieczności pokazują, że dane wejścia były własnością tego samego użytkownika.
Istnieje ryzyko, że jeśli dojdzie do ujawnienia właściciela klucza, połączenie danych może
ujawnić inne transakcje przeprowadzone przez tego samego użytkownika.

11. Obliczenia

Rozważany tu scenariusz zakłada, że atakujący stara się wygenerować alternatywny łańcuch


szybciej niż tworzy się łańcuch uczciwy. Nawet jeśli to się uda, nie naraża to od razu systemu
na dowolne zmiany, takie jak „tworzenie wartości z powietrza (z niczego)” lub zagarnięcie
pieniędzy, które nigdy nie należały do atakującego. Węzły nie przyjmą nieprawidłowych
transakcji jako wpłat. Uczciwe węzły nigdy nie zaakceptują zawierających je bloków.
Osoba atakująca może jedynie próbować zmienić jedną z własnych transakcji, aby odebrać
niedawno wydane pieniądze (aby próbować je ponownie wydać).

Wyścig pomiędzy łańcuchem uczciwym i łańcuchem atakującego można opisać jako


dwumianowy proces błądzenia losowego. Powodzenie ma miejsce, gdy uczciwy łańcuch
zostanie przedłużony o jeden blok, zwiększając swoją przewagę o +1, a niepowodzenie ma
miejsce, gdy łańcuch atakującego zostanie przedłużony o jeden blok, zmniejszając lukę o 1.

Prawdopodobieństwo, że atakujący nadrobi zaległości przy danym deficycie jest analogiczne


do zadania o „ruinie hazardzisty”11. Załóżmy, że gracz z nieograniczonymi zasobami
rozpoczyna od deficytu i rozgrywa potencjalnie nieskończoną liczbę rozdań, aby spróbować
wyrównać stratę. Możemy obliczyć prawdopodobieństwo, że kiedykolwiek wyrówna stratę,
lub że atakujący kiedykolwiek dogoni uczciwy łańcuch, w następujący sposób [8]:

p = prawdopodobieństwo, że uczciwy węzeł znajdzie kolejny blok,

q = prawdopodobieństwo, że napastnik znajdzie następny blok,

11
Źródło: http://en.wikipedia.org/wiki/Gambler%27s_ruin [Dostęp: 19.10.2012]

str. 10 z 14
qz = prawdopodobieństwo, że atakujący kiedykolwiek nadrobi stratę o długości „z” bloków.

Biorąc pod uwagę nasze założenie, że p>q, prawdopodobieństwo spada wykładniczo wraz ze
wzrostem liczby bloków, które musi dogonić atakujący. Przy prawdopodobieństwie
działającym przeciwko napastnikowi, jeżeli nie poszczęści mu się znacząco na początku, jego
szanse stają się znikomo małe, im bardziej zostaje w tyle.

Rozważymy teraz jak długo odbiorca nowej transakcji musi czekać, zanim uzyska
wystarczającą pewność, że nadawca nie może cofnąć transakcji. Zakładamy, że nadawca to
napastnik, który chce aby odbiorca na chwilę uwierzył, że otrzymał wpłatę, aby po upływie
pewnego czasu zwrócić daną kwotę sobie. Odbiorca zostanie ostrzeżony gdy tak się stanie,
ale nadawca ma nadzieję, że wtedy będzie już za późno.

Odbiorca generuje nową parę kluczy i przekazuje klucz publiczny nadawcy na krótko przed
podpisaniem. Uniemożliwia to nadawcy przygotowanie łańcucha bloków z wyprzedzeniem,
dzięki nieprzerwanej pracy nad nim, aż poszczęściłoby mu się na tyle, że zdobyłby
wystarczająco duże prowadzenie, a następnie wykonał transakcję. Gdy transakcja zostaje
wysłana, nieuczciwy nadawca w tajemnicy rozpoczyna pracę nad równoległym łańcuchem
zawierającym alternatywną wersję swojej transakcji.

Odbiorca czeka, aż transakcja zostanie dodana do bloku i przyłączy się do niej liczba „z”
następnych bloków. Odbiorca nie wie jaki postęp osiągnął napastnik, ale zakładając,
że generowanie każdego „uczciwego” bloku zajęło średni oczekiwany czas, potencjalny
postęp atakującego będzie miał rozkład Poissona12 o następującej oczekiwanej wartości:

Aby obliczyć prawdopodobieństwo nadrobienia zaległości przez atakującego w tym


momencie, mnożymy gęstości Poissona dla każdego „postępu”, który mógł osiągnąć, przez
prawdopodobieństwo, że mógł nadrobić zaległości od tego momentu:

12
Źródło: http://pl.wikipedia.org/wiki/Rozkład_Poissona [Dostęp: 19.10.2012]

str. 11 z 14
Przekształcamy, aby uniknąć „sumowania nieskończonego”13 ogona rozkładu14...

Konwertując na kod C15…

Obserwując wybrane wyniki, możemy zaobserwować, że prawdopodobieństwo spada


wykładniczo wraz ze wzrostem wartości „z”.

13
Przekształcenie ma na celu uniknięcie dokonywania działań na bardzo dużych liczbach, gdyż wynik
„zmierzałby do nieskończoności”.
14
Źródło: http://pl.wikipedia.org/wiki/Rozkład_prawdopodobieństwa [Dostęp: 19.10.2012]
15
Język programowania C. Źródło: http://pl.wikipedia.org/wiki/C_(język_programowania) [Dostęp: 19.10.2012]

str. 12 z 14
Rozwiązanie dla P mniejszego niż 0,1% ...

12. Wniosek

Zaproponowaliśmy system transakcji elektronicznych nieopierający się na zaufaniu.


Rozpoczęliśmy od typowych zasad dotyczących monet w postaci podpisów cyfrowych, które
zapewniają mocną kontrolę własności, ale są niekompletne bez sposobu zapobiegania
podwójnemu wydatkowaniu. Aby rozwiązać ten problem, zaproponowaliśmy sieć peer-to-
peer z wykorzystaniem dowodów wykonywania działań, aby zapisywać publiczną historię
transakcji, której zmiana szybko staje się „obliczeniowo niewykonalna” dla napastnika, jeżeli
uczciwe węzły kontrolują większość mocy obliczeniowej. Siła sieci leży w jej prostocie i braku
struktury. Węzły pracują wszystkie naraz przy niewielkiej koordynacji. Nie muszą podlegać
identyfikacji, ponieważ wiadomości nie są kierowane do konkretnego miejsca, a jedynie
muszą być dostarczane na zasadzie „najlepszego wyniku pracy”. Węzły mogą dowolnie
opuszczać sieć i powracać do niej, przyjmując łańcuch dowodu wykonania działań jako
potwierdzenie tego, co miało miejsce podczas ich nieobecności. Głosują za pomocą swojej
str. 13 z 14
mocy obliczeniowej, akceptując ważne bloki poprzez pracę nad ich wydłużeniem,
a nieprawidłowe bloki odrzucają odmawiając pracy nad nimi. Wszelkie konieczne zasady
i zachęty można egzekwować w oparciu o ten mechanizm konsensusu.

Źródła:

str. 14 z 14

You might also like