Bitcoin: Elektroniczny system pieniężny Peer-to-Peer 1 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 pracy 3. 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 Escrow 4. 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 Usenet 6 [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 pracy 8 [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 Poissona 12 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ładu 14... Konwertując na kod C 15 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-topeer 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