Vikram Dhillon pragnie zadedykować tę pracę Aaronowi Hillelowi Swartzowi i jego spuściźnie.

David Metcalf pragnie podziękować Katy, Adamowi i Andrew za cierpliwość okazywaną w trakcie długich godzin tworzenia książki oraz kolegom i studentom z UCF i programu NSF I-Corps, którzy odkryli potęgę Bitcoina i technologii blockchain lata temu oraz podzielili się swoją wiedzą i perspektywami na przyszłość, co zainspirowało nas do zajęcia się tym obszarem badań. Podziękowania należą się także współautorom, współpracownikom i ofiarodawcom, i oczywiście Bogu – za mądrość, umożliwienie i ośmielenie do wcielenia tego pomysłu w życie.

Max Hooper pragnie podziękować współautorom i kolegom z UCF/METIL Lab. Szczególne wyrazy wdzięczności kieruje do Mindy Hooper za jej pomoc i wsparcie. Chce podkreślić patronat Boga nad projektem i podziękować mu za inspirację, przewodnictwo, ukierunkowanie oraz mądrość.

Dane oryginału

Original edition copyright © 2017 by Vikram Dhillon, David Metcalf, and Max Hooper.

Title of English-language original: Blockchain Enabled Applications. Understand the Blockchain Ecosystem and How to Make it Work for You, ISBN 978-1-4842-3080-0, published by Apress. All rights reserved.

Polish-language edition copyright © 2018 by Polish Scientific Publishers PWN Wydawnictwo Naukowe PWN Spółka Akcyjna. All rights reserved.

Przekład Filip Fierek

Projekt okładki i stron tytułowych Joanna Andryjowicz

Wydawca Edyta Kawala

Redaktor prowadzący Jolanta Kowalczuk

Redaktor Irena Puchalska

Koordynator produkcji Anna Bączkowska

Skład wersji elektronicznej na zlecenie Wydawnictwa Naukowego PWN Marcin Kapusta / konwersja.virtualo.pl

Konsultacja prof. Krzysztof Piech

Zastrzeżonych nazw firm i produktów użyto w książce wyłącznie w celu identyfikacji.

Copyright © for the Polish edition by Wydawnictwo Naukowe PWN SA

Warszawa 2018

eBook został przygotowany na podstawie wydania papierowego z 2018 r., (wyd. I)

Warszawa 2018

ISBN 978-83-01-20328-3

Wydawnictwo Naukowe PWN SA

02-460 Warszawa, ul. Gottlieba Daimlera 2

tel. 22 69 54 321, faks 22 69 54 288

infolinia 801 33 33 88

e-mail: pwn@pwn.com.pl, reklama@pwn.pl

www.pwn.pl

O autorach

Vikram Dhillon jest pracownikiem naukowym w Institute for Simulation and Training na Uniwersytecie Centralnej Florydy (UCF), gdzie zajmuje się problematyką integrowania nowych technologii z istniejącą infrastrukturą. W ostatnich pracach koncentruje się na technologiach rejestru rozproszonego. Posiada bakalaureat z biologii molekularnej, który otrzymał na Uniwersytecie Centralnej Florydy, gdzie zajmował się bioinformatyką. Obecnie realizuje studia DO/MBA w College of Medicine na Nova Southeastern University. Jest autorem kilku prac naukowych z zakresu genomiki obliczeniowej i dwóch książek, z których najnowsza dotyczy zastosowań technologii blockchain. Pisze również specjalistyczne artykuły dla „Bitcoin Magazine” i teksty dla „New York Timesa”. Jako stypendysta Narodowej Fundacji Nauki w ramach programu Innovation Corps zajmował się tzw. odkrywaniem klienta (customer discovery) i stosowaniem tej metody w start-upach wysokiego ryzyka. Jest członkiem Linux Foundation i od kilku lat pozostaje aktywny w obszarze inicjatyw i projektów open source. Często występuje na lokalnych konferencjach i spotkaniach dotyczących programowania, projektowania, bezpieczeństwa oraz przedsiębiorczości. Mieszka w Fort Lauderdale na Florydzie i prowadzi bloga o technologiach opsbug.com.

David Metcalf ma ponad dwudziestoletnie doświadczenie w projektowaniu i badaniu technologii sieciowych i mobilnych z zakresu edukacji i opieki zdrowotnej. Dr Metcalf jest dyrektorem Mixed Emerging Technology Integration Lab (METIL) przy Institute for Simulation and Training na Uniwersytecie Centralnej Florydy (UCF). Zespół ten zaprojektował rozwiązania z zakresu mHealth i eLearningu, symulacje, gry oraz mobilne i biznesowe systemy IT, m.in. dla Google, J&J, Veterans Administration, armii USA i College of Medicine na UCF. Ostatnie projekty obejmują prototyp inteligentnego domu Lake Nona oraz SignificantTechnology – stopień naukowy online i zestaw e-zasobów. Dr Metcalf propaguje wydzielanie nowych jednostek z laboratorium (spin-offy), uznając to za część procesu innowacji. Zainicjował Moving Knowledge i inne przedsięwzięcia komercyjne, jak i non profit. Poza zaangażowaniem w badania i biznes dr Metcalf wspiera przedsiębiorczość w obszarze edukacji i zdrowia. W swej działalności łączy edukację korporacyjną, techniki symulacji oraz przedsiębiorczość społeczną i non profit. Obecnymi tematami jego badań są symulacja, mobilizacja, mobilne rejestry pacjentów, systemy wspierania decyzji medycznych, systemy wizualizacji, modele skalowalności, bezpieczeństwo danych mobilnych, gaming, zarządzanie innowacją i doskonalenie operacyjne. Dr Metcalf często bierze udział w wydarzeniach branżowych i naukowych poświęconych strategiom biznesowym i zastosowaniom technologii wspierającej edukację, zdrowie oraz efektywność pracowników. Jest współredaktorem i autorem Connected Health (2017), HIMSS mHealth Innovation (2014) oraz bestsellera HIMSS Books mHealth: From Smartphones to Smart Systems (2012).

Max Hooper jest dyrektorem generalnym Merging Traffic. Odpowiada za zarządzanie firmą i jej strategię wzrostu, a także reprezentuje ją w kontaktach z branżą usług finansowych i z różnymi grupami kapitału. Przed jej utworzeniem był współzałożycielem Equity Broadcasting Corporation (EBC), firmy z branży mediów, która prowadziła ponad 100 stacji telewizyjnych w Stanach Zjednoczonych. Odpowiadał tam za sprawy związane z telewizją kablową, telewizją satelitarną, bankowością inwestycyjną i technologią. Podczas jego pracy EBC stało się jedną z dziesięciu największych firm nadawczych w kraju. Hooper posiada pięć stopni doktorskich, m.in. z nauk humanistycznych i teologii, nadanych mu przez różne instytucje. Będąc zapalonym biegaczem, ukończył ponad 100 maratonów i 20 ultramaratonów, których dystans wynosił 50 albo 100 mil. Ukończył Grand Slam of Ultra Running. Hooper poświęca rodzinie dużo czasu jako mąż, ojciec pięciorga dzieci i dziadek siedmiorga wnucząt. Działa w wielu organizacjach i zasiada w wielu zespołach kierowniczych. Współpracuje z ministerstwami i grupami pomocowymi na całym świecie, a w 2015 roku miał zaszczyt przemawiać na szczycie ONZ w Nowym Jorku.

O recenzencie

Zeeshan Chawdhary jest entuzjastą i specjalistą w zakresie technologii z trzynastoletnim doświadczeniem w branży. Zaczął od programowania mobilnego J2ME w 2005 roku, po czym zajął się programowaniem sieciowym. Posiada szerokie doświadczenie w tworzeniu solidnych i skalowalnych aplikacji sieciowych. Przewodził zespołom projektującym aplikacje sieciowe i mobilne dla takich firm jak Nokia, Motorola, Mercedes, General Motors, American Airlines i Marriott, będąc jednocześnie CTO w firmie z San Francisco. Mieszka w Mumbaju w Indiach, gdzie zaangażowany jest w wiele start-upów, kieruje zespołami pracującymi nad modelem Houzz+Etsy i platformą wypożyczania samochodów. Jest autorem książek o iOS, Windows Phone i iBooks. Obecnie pracuje w międzynarodowym zespole jako dyrektor rozwoju, gdzie odpowiada za takie technologie jak Magento, Wordpress, WooCommerce, Laravel, ReactJS i .Net. Można skontaktować się z nim drogą mailową (imzeeschanc@gmail.com) lub na Twitterze (@imzeeschan).

Podziękowania

Autorzy pragną podziękować redaktorkom Nancy Chen i Louise Corrigan za wsparcie i wskazówki. Ilustracje zamieszczone w książce powstały z wykorzystaniem Lucidchart. Wszystkie ilustracje pochodzące z innych źródeł zostały przedrukowane za odpowiednią zgodą.

Wprowadzenie

Technologia blockchain jest gotowa, by dogłębnie przeobrazić nasz wirtualny świat. Jednym z jej zastosowań jest sieć Bitcoin, ale chociaż nie stanowi cudownego, lukratywnego rozwiązania ani leku na wszystko, przyczynia się do fundamentalnej zmiany w rzeczywistości offline zapoczątkowanej już przez internet, który przyniósł swobodny dostęp do informacji i po raz pierwszy w historii na taką skalę umożliwił dokonywanie cyfrowych kopii danych i treści w celu ich globalnej dystrybucji. Stąd też wzięła się jego nazwa – sieć ogólnoświatowa (World Wide Web). Łączność, którą oferuje internet, napotyka jednak poważne przeszkody, gdy w grę wchodzą transakcje i związany z nimi problem zaufania.

Fundamentalna zmiana reprezentowana przez technologię blockchain polega na odrzuceniu centralnego autorytetu gwarantującego zaufanie w warunkach sieci rozproszonej. Zamiast niego pojawia się wiele źródeł zaufania, które bazując na algorytmie, muszą się ze sobą porozumieć co do ważności transakcji. Ponadto większość rozwiązań opartych na blockchainie pozwala na dokonywanie nieodwracalnego i trwałego zapisu transakcji, dzięki czemu nie może go zmienić ani na zaufany, ani pozbawiony zaufania podmiot. W ten sposób w naszym wirtualnym świecie pojawia się całkowicie nowy poziom bezpieczeństwa, prywatności i zaufania. Jak zobaczymy w niniejszej książce, na obecny ekosystem blockchaina składa się cały wachlarz zastosowań, protokołów i standardów.

Zależało nam na zachowaniu równowagi między pracą teoretyczną a praktycznym podręcznikiem ukazującym konkretne przykłady dotyczące zarówno obecnych, jak i przyszłych przypadków użycia. Nie wyczerpując tematu, wybraliśmy kilka obiecujących obszarów, w których technologia blockchain zaczyna przynosić efekty w postaci całkowicie nowych zastosowań. Mamy nadzieję, że książka ta będzie miała dla czytelnika wartość poznawczą i dostarczy mu drogowskazów pomocnych do osiągnięcia sukcesu z wykorzystaniem technologii blockchain umożliwiającej nowe rozwiązania biznesowe.

W trakcie lektury czytelnik pozna wiele zastosowań technologii blockchain. Przykłady wczesnych wdrożeń wykraczają poza transakcje finansowe, obejmując kwestie FinTech, RegTech (regulacje), InsuranceTech, GovTech (e-głosowanie, licencjonowanie, rejestrowanie i certyfikowanie), HealthTech i wiele innych.

Aby zrozumieć te wczesne zastosowania, niezbędne jest poznanie historii technologii blockchain, podstaw rozproszonego zaufania, konsensusu, sprzętu, oprogramowania i zasad szyfrowania, które przedstawiliśmy w początkowych rozdziałach książki. Następnie zajęliśmy się transakcjami zachodzącymi w sieci i uproszczonymi zasadami płatności w blockchainie. Informacje te porównaliśmy z rozszerzonymi możliwościami Ethereum i zaprezentowaliśmy szczegółową charakterystykę sieci, omawiając działanie gasu i aplikacji rozproszonych, a także prezentując przykłady Blockchain as a Service. Dwa rozdziały poświęciliśmy organizacjom zdecentralizowanym (DAO), które omówiliśmy szczegółowo i na konkretnych przykładach. W rozdziale siódmym przedstawiliśmy tokeny Ethereum w kontekście tworzenia wartości, powołując się na różne przykłady z sektora technologii i biznesu, ukazujące znaczenie inteligentnych umów, dzięki którym możliwe jest wprowadzenie do samych transakcji różnych źródeł wartości i reguł. W kolejnych trzech rozdziałach, ósmym, dziewiątym i dziesiątym, przedstawiliśmy zastosowania blockchaina w nauce i opiece zdrowotnej, a także zaprezentowaliśmy Hyperledger Project. W dwóch końcowych rozdziałach zajęliśmy się ostatnimi unowocześnieniami i kierunkami na przyszłość, szczególnie w kontekście ICO i wpływu na rynki finansowe i zachodzące na nich procesy. Warto wspomnieć także o dodanym w ostatniej chwili aneksie zawierającym wyczerpujący wywiad z liderem Hashed Health, w którym przedstawia on swoje spostrzeżenia na temat roli technologii blockchain w opiece zdrowotnej. Mamy nadzieję, że wiadomości zawarte w książce uznają Państwo za przydatne w toku zapoznawania się z podstawami, dobrymi praktykami i potencjałem zastosowań technologii blockchain. Na komentarze czekamy pod adresem info@metil.org.

01
My, marzyciele

Dlaczego niby człowiek miałby chcieć życia pełnego niepokoju?

Imbolo Mbue

Niepokój jest chyba najlepszym słowem opisującym nastawienie do rynków finansowych, które zawładnęło umysłami inwestorów i opinii publicznej pod koniec 2008 roku. Wielu ekonomistów uważa ówczesne załamanie gospodarcze za największe od czasów Wielkiego Kryzysu. Poprzedzające go lata były okresem zalewu nieodpowiedzialnie udzielanych kredytów hipotecznych i rozległego niepowodzenia systemu regulacji i nadzoru. Skutek okazał się tak ogromny, że nad dużymi instytucjami finansowymi zawisła groźba upadku. Zmuszone do interwencji rządy udzieliły najważniejszym bankom pomocy finansowej. Niniejszy rozdział zaczynamy od rozważań na temat kryzysu ekonomicznego z 2008 roku, po czym omawiamy jego następstwa, które doprowadziły do powstania środowiska sprzyjającego rozkwitowi nowego systemu bankowego i alternatywnej waluty, jaką jest bitcoin[I]. W dalszej kolejności skupiamy się na stosie technologicznym, na którym jest oparty protokół Bitcoin. Warto zauważyć, że elementy tego stosu nie są zupełnie nowe, tylko zostały ze sobą połączone według przemyślanego wzoru. Pod koniec rozdziału odnosimy się do coraz większego zainteresowania blockchainem – ważnym przełomem technologicznym mogącym zrewolucjonizować różne branże.

Zmiana paradygmatu

Rewolucje często wyglądają na chaotyczne, ale ta, na której czele stała nieznana osoba marząca o przeobrażeniu świata finansów i posługująca się imieniem Satoshi Nakamoto, dojrzewała w ciszy. O doprowadzenie do kryzysu ekonomicznego można obwiniać każdą ze stron, ale jego podstawą było to, że kluczowe instrumenty finansowe służące do podtrzymywania integralności całego systemu stały się zbyt złożone, a w związku z tym nieskuteczne. W 2008 roku zaczęło znikać kluczowe spoiwo wszelkich systemów finansowych – zaufanie. Z czasem, by zapobiegać podobnym sytuacjom, uchwalono nowe przepisy, ale stało się jasne, że nie obejdzie się bez zmian w zakresie transparentności i zaufania między kontrahentami, dzięki którym będą oni w stanie zawierać dowolne rodzaje umów. Mówiąc najogólniej, kontrahent to jedna ze stron transakcji finansowej. Innymi słowy, to kupujący w relacji do sprzedającego lub na odwrót. Jeśli chodzi o transakcje finansowe, jednym z rodzajów ryzyka, które za sobą niosą, jest tak zwane ryzyko kontrahenta, polegające na tym, że zarówno jedna, jak i druga strona umowy może nie być w stanie wywiązać się z dotyczących jej postanowień. Wspomniane wcześniej niepowodzenie systemu można pojmować właśnie w kategoriach ryzyka kontrahenta – obie strony transakcji brały na siebie znaczne ryzyko tego rodzaju, by w końcu upaść na mocy zawartej umowy. Wyobraźmy sobie podobny scenariusz, w którym bierze udział wiele stron, a każda z nich jest ważnym bankiem albo firmą ubezpieczeniową mającą miliony klientów. Właśnie to wydarzyło się podczas kryzysu w 2008 roku.

Następnym zagadnieniem, które należy omówić, jest podwójne wydatkowanie tych samych środków (double spending). Ponownie przyjrzymy mu się dokładniej w kontekście bitcoina, ale już teraz warto rozważyć jego znaczenie w odniesieniu do kryzysu finansowego. Reguła związana z podwójnym wydatkowaniem głosi, że zasoby przypisane jednej domenie (np. jednej transakcji) nie mogą być jednocześnie przypisane drugiej. Niesie to ze sobą oczywiste konsekwencje dla walut cyfrowych, ale odnosi się także do niektórych problemów, które wystąpiły podczas kryzysu finansowego.

Oto jak do niego doszło. Pożyczki (w formie kredytów hipotecznych) były udzielane osobom ze złą historią kredytową, które miały trudności z ich spłaceniem. Następnie eksperci finansowi pracujący dla wielkich banków z kredytów hipotecznych wysokiego ryzyka tworzyli pakiety papierów wartościowych niskiego ryzyka, organizując długi w pule[II]. Ten sposób tworzenia pul sprawdza się, o ile ryzyko związane z jedną pożyczką (kredytem hipotecznym) nie ma nic wspólnego z ryzykiem związanym z inną. Eksperci wielkich banków zakładali, że wartość nieruchomości w różnych miastach całego kraju będzie się zmieniać niezależnie, dlatego taką operację uważali za nieobarczoną ryzykiem. Okazało się, że byli w ogromnym błędzie. Pakiety kredytów zorganizowanych w pule były następnie wykorzystywane do tworzenia papierów wartościowych nazywanych obligacjami zabezpieczonymi długiem (CDO). Obligacje dzielono na transze i sprzedawano inwestorom. Transze te były oceniane przez agencje ratingowe, a inwestorzy, polegając na ich opiniach, kupowali najbezpieczniejsze z nich. Gdy doszło do zwrotu na amerykańskim rynku nieruchomości, powstał efekt domina niszczący wszystko na swojej drodze. Mimo ratingów obligacje okazały się bezwartościowe. Kredyty hipoteczne zorganizowane w pule straciły na wartości, a wszystkie sprzedawane pakiety momentalnie wyparowały. Każda sprzedaż, włączona w złożony łańcuch transakcji, podnosiła ryzyko i przyczyniała się do zjawiska podwójnego wydatkowania na wielu poziomach. Koniec końców system osiągnął równowagę tylko po to, by odkryć potężne luki, i załamał się pod własnym ciężarem. Poniżej znajduje się zwięzłe kalendarium roku 2008. (Kalendarium zostało opracowane na podstawie prezentacji Micaha Winkelspechta przedstawionej podczas Distributed Health w 2016 r.).

■ 11 stycznia – Bank of America wykupuje mającą problemy Countrywide.

■ 16 marca – Fed wymusza sprzedaż Bear Stearns.

■ 15 września – Lehman Brothers wnosi o upadłość zgodnie z rozdziałem 11 Kodeksu upadłościowego.

■ 16 września – Fed przekazuje American International Group (AIG) 85 miliardów USD w ramach pomocy finansowej.

■ 25 września – upada Washington Mutual.

■ 29 września – na rynkach finansowych dochodzi do krachu; indeks Dow Jones Industrial Average spada o 777,68 punktu; cały system jest na skraju upadku.

■ 3 października – rząd USA zatwierdza pomoc finansową dla banków w wysokości 700 miliardów USD.

Pomoc finansowa niosła za sobą ogromne konsekwencje ekonomiczne, ale – co ważniejsze – dała początek środowisku, w którym mógł rozkwitnąć bitcoin. W listopadzie 2008 roku na liście mailingowej Cryptography and Cryptography Policy Mailing List został opublikowany dokument Bitcoin: System pieniądza elektronicznego typu peer-to-peer (Bitcoin: A Peer-to-Peer Electronic Cash System) sygnowany przez Satoshiego Nakamoto. W dokumencie szczegółowo omówiono protokół Bitcoin i zaprezentowano pierwotny kod dla jego wczesnych wersji. W pewnym sensie był on odpowiedzą na krach, który właśnie się wydarzył, ale miało minąć trochę czasu, zanim ta technologiczna rewolucja się przyjęła. Od samego początku niektórzy programiści żywili obawy o jej powodzenie. Były one związane ze skalowalnością elektronicznego systemu pieniężnego, co przedstawiono na ilustracji 1.1.

Ilustracja 1.1. Początkowe obawy żywione wobec protokołu Bitcoin dotyczyły jego skalowalności i realistycznych perspektyw na przyszłość

Kim jest Nakamoto? Skąd się wywodzi? Krótka i prosta odpowiedź brzmi – nie wiadomo. Tak naprawdę nie ma powodu, by twierdzić, że to w istocie „on”. Imię Satoshi Nakamoto jako pseudonim było używane rzadko i może to być „ona”, a nawet „oni”. Kilkoro dziennikarzy i kilka redakcji poświęciło czas i energię, by przeprowadzić cyfrowe śledztwo, zawęzić liczbę kandydatów i odkryć prawdziwą tożsamość Nakamoto, ale wszystkie wysiłki były szukaniem wiatru w polu. Społeczność zaczyna sobie uświadamiać, że może nieważne, kim jest Nakamoto, skoro z samej natury open source wynika nieadekwatność takiego pytania. Jeff Garzik, jeden z najbardziej szanowanych przez społeczność Bitcoin programistów, odniósł się do tego następująco: „Satoshi opublikował system open source po to, by nie trzeba było wiedzieć, kim jest, polegać na tym, kim jest, ani martwić się o to, co wie”. Prawdziwy duch open source sprawia bowiem, że kod mówi sam za siebie, bez udziału twórcy czy programisty.

Społeczność cypherpunku

Prawdziwy geniusz Nakamoto tworzącego protokół Bitcoin polegał na rozwiązaniu problemu bizantyjskich generałów. Rozwiązanie to zostało poszerzone o elementy i idee zaczerpnięte od społeczności cypherpunku. Omawiamy pokrótce trzy z nich: Hashcash w kontekście dowodu pracy, tolerancję wady bizantyjskiej w kontekście sieci zdecentralizowanej i blockchain eliminujący potrzebę istnienia centralnego autorytetu czy scentralizowanego zaufania. Przyjrzyjmy się im po kolei, zaczynając od Hashcash.

Hashcash został wymyślony przez Adama Blacka w późnych latach 90. ubiegłego wieku w celu ograniczenia mailowego spamu za pomocą algorytmu będącego pierwszym przykładem dowodu pracy (PoW). U swych podstaw Hashcash zakładał, by wysyłanie maili wymagało poniesienia pewnego wydatku obliczeniowego. Spamerzy wykorzystują model, który polega na wysyłaniu dużej liczby maili z ominięciem wysokich kosztów za każdy z nich. Jednakże gdyby każda wysłana wiadomość spam pociągała za sobą choćby niewielki koszt, koszt ten pomnożony przez tysiące maili czyniłby ich przedsięwzięcie nieopłacalnym. Hashcash opiera się na idei kryptograficznych funkcji skrótu. Funkcja skrótu danego rodzaju (w przypadku Bitcoina – SHA1) przetwarza dane wejściowe w ciąg tworzący skrót wiadomości, co zaprezentowano na ilustracji 1.2. Funkcje skrótu są tak zaprojektowane, by cechowała je jednokierunkowość, a to sprawia, że o ile za ich pomocą potencjalne dane wejściowe można dopasować do skrótu, o tyle odtworzenie danych wejściowych na podstawie tego ostatniego nie jest wykonalne. Jedynym sposobem odtworzenia wejścia jest użycie metody brute force. W praktyce właśnie to stanowi wymagający obliczeniowo element Hashcash, jak i – ostatecznie – Bitcoina. Zasada ta stała się fundamentem dowodów pracy stojących dziś u podstaw Bitcoina i większości kryptowalut. Dowód pracy w sieci Bitcoin jest bardziej złożony i zawiera nowe elementy, które szczegółowo omówimy w kolejnych rozdziałach.

Ilustracja 1.2. Mechanizm kryptograficznej funkcji skrótu. Wykorzystuje dane wejściowe i według niezmiennych zasad przetwarza je w wyjściowy ciąg skrótu

Następnym zagadnieniem, które należy rozważyć, jest problem bizantyjskich generałów. Jest to problem dotyczący porozumienia grupy generałów, z których każdy przewodzi części armii bizantyjskiej gotowej do ataku na miasto. Generałowie muszą opracować strategię szturmu i skutecznie ją sobie przekazać. Rzecz w tym, by każdy z generałów przystał na wspólnie podjętą decyzję, bo niemrawy atak kilku z nich byłby gorszy niż skoordynowana ofensywa czy odwrót. Sedno problemu polega na tym, że niektórzy z generałów są zdrajcami. Mogą zagłosować tak, by zmylić pozostałych dowódców i ostatecznie doprowadzić do wyboru nieoptymalnej strategii. Weźmy konkretny przykład. Liczba generałów jest nieparzysta, dajmy na to, że jest ich siedmiu, z czego trójka głosuje za atakiem, a trójka popiera wycofanie się. Siódmy generał trzem dowódcom oznajmia, że popiera wycofanie się, a pozostałym trzem – że przychyla się do ataku, w wyniku czego cały plan upada. Siłom atakujących nie udaje się zdobyć miasta z powodu braku niezbędnego centralnego autorytetu, który mógłby rozstrzygnąć kwestię zaufania wśród wszystkich siedmiu generałów.

W tym scenariuszu tolerancja wady bizantyjskiej mogłaby zostać osiągnięta, gdyby wszyscy lojalni generałowie byli w stanie skomunikować się i zawrzeć bezsporne porozumienie strategiczne. Gdyby było to możliwe, mylący (wadliwy) głos oddany przez generała zdrajcę zostałby wykryty i nie zakłóciłby działania systemu jako całości. W przypadku protokołu Bitcoin kluczową innowacją wprowadzoną przez Nakamoto, by osiągnąć tolerancję na wadę bizantyjską, było stworzenie sieci peer-to-peer z rejestrem, który zapisuje i weryfikuje zgodę większości, a co za tym idzie – wykrywa każdą fałszywą (zdradziecką) transakcję. Rejestr ten, nazywany blockchainem, oferuje spójne środki komunikacji i pozwala na wyeliminowanie problemu zaufania na poziomie całego systemu. Wykorzystanie go przez Nakamoto pozwoliło bitcoinowi stać się pierwszą walutą cyfrową rozwiązującą problem podwójnego wydatkowania na poziomie całej sieci. W pozostałej części tego rozdziału prezentujemy ogólny szkic tej technologii i aplikacji opartych na blockchainie.

W podstawowym sensie blockchain to rejestr, który gwarantuje zaangażowanym stronom bezpieczne i synchroniczne zapisywanie transakcji od początku do końca. Blockchain umożliwia rejestrowanie setek transakcji w bardzo szybkim tempie za pomocą kilku wpisanych w jego budowę metod kryptograficznych odpowiadających za bezpieczeństwo danych, spójność i ważność. Transakcje zawierane w blockchainie są grupowane w jednostki zwane blokami i uzupełniane znacznikiem czasu (kryptograficznym odciskiem palca), który wiąże obecny blok z blokiem go poprzedzającym. W taki sposób powstaje nieodwracalny i odporny na manipulacje łańcuch bloków połączonych znacznikami czasu, dla wygody nazywany blockchainem. Architektura blockchaina jest tak pomyślana, aby każda transakcja w bardzo krótkim czasie mogła zostać zweryfikowana przez wszystkich członków sieci. Członkowie ci posiadają aktualną kopię łańcucha bloków, co pozwala na osiągnięcie konsensusu w ramach zdecentralizowanej sieci. Możliwości takie jak nieodwracalne rejestrowanie i konsensus w ramach całej sieci mogą zostać włączone w stos, dzięki czemu powstają nowe typy aplikacji nazywane aplikacjami zdecentralizowanymi (DApp). Na ilustracji 1.3 zaprezentowano prototyp takiej aplikacji według schematu Model–Widok–Kontroler (MVC).

UWAGA. Pierwszy blok w łańcuchu jest nazywany blokiem Genesis. Jest on wyjątkowy w tym sensie, że nie istnieje blok, który by go poprzedzał i z którym ten by się łączył. Nakamoto dodał do niego historyczną informację, tworząc kontekst związany z ówczesną sytuacją finansową w Wielkiej Brytanii: „The Times/03/Jan/2009 Lord Kanclerz bliski udzielenia bankom pomocy finansowej po raz drugi”. Blok nie tylko udowadnia, że Bitcoin przed 3 stycznia 2009 roku nie istniał, ale też pozwala zajrzeć do umysłów jego twórców.

Ilustracja 1.3. Prosty prototyp aplikacji zdecentralizowanej, która w finalnej fazie wchodzi w interakcje z użytkownikiem końcowym

Model i kontroler oparte są tu na łańcuchu bloków ze względu na dane (ich spójność i bezpieczeństwo) i odpowiednio aktualizują widok dla użytkownika końcowego. Klucz do sukcesu tego prototypu tkwi w interfejsie programowania aplikacji (API), który pobiera informacje z łańcucha bloków i dostarcza je modelowi oraz kontrolerowi. API pozwala na rozszerzanie logiki biznesowej i integrowanie jej z blockchainem, jak również na podstawowe operacje: przyjmowanie bloków jako danych wejściowych i dostarczanie odpowiedzi na pytania binarne. Aplikację, która pracuje na dużych ilościach danych bieżących i wyróżnia się zaawansowaną logiką biznesową, możemy zaklasyfikować jako aplikację opartą na blockchainie.

Podsumowanie

W niniejszym rozdziale omówiliśmy początki historii Bitcoina w kontekście ekonomicznym. W kolejnych rozdziałach będziemy kontynuować rozważania na temat blockchaina i konkretnych elementów zdecentralizowanej sieci, takich jak na przykład górnicy. Pozycje literatury wykorzystane w tym rozdziale można znaleźć na końcu książki.

02
Gorączka złota Wydobywanie bitcoina

W czasie gorączki złota wielu niedoszłych górników straciło pieniądze, ale ludzie, którzy sprzedawali im kilofy, łopaty, namioty i jeansy (Levi Strauss), osiągnęli niezły zysk.

Peter Lynch

Wydobywanie (ang. mining) jest koncepcją kluczową do zrozumienia działania protokołu Bitcoin. Oznacza ono zdecentralizowany proces przeglądu dokonywany na każdym bloku w łańcuchu w celu osiągnięcia konsensusu bez potrzeby odwoływania się do centralnego autorytetu gwarantującego zaufanie. Innymi słowy, wydobywanie jest obliczeniowym ekwiwalentem wzajemnej weryfikacji w zdecentralizowanym środowisku, w którym żadna z zainteresowanych stron nie ufa innej. Omawianie funkcji skrótu, które rozpoczęliśmy w rozdziale 1, kontynuujemy tu właśnie w odniesieniu do tego procesu, jak i w kontekście rozwiązywania dowodu pracy. Problem wydobywania wiążemy następnie z zagadnieniami wartości docelowej i trudności wydobywania oraz analizujemy, jak górnicy starają się dotrzymać kroku wzrostowi poziomu tej ostatniej. To zaś prowadzi nas do dyskusji nad sposobami wydobywania bitcoina i coraz to nowszymi rodzajami służącego do tego sprzętu. Rozdział zamykamy omówieniem start-upów, które zanim upadły, zajmowały się jego sprzedażą, przyczyniając się do „wyścigu zbrojeń” wśród górników.

Osiąganie konsensusu

Wydobywanie jest centralnym aspektem protokołu Bitcoin i pełni dwie podstawowe funkcje. Dzięki niemu do całkowitej podaży pieniądza są dodawane nowe bitcoiny oraz dochodzi do weryfikacji transakcji. W tym rozdziale przyjrzymy się mechanizmom stojącym za tymi dwoma procesami. Mówiąc ogólnie, wydobywanie stanowi odpowiedź na problem podwójnego wydatkowania, który omawialiśmy wcześniej. Osoby posiadające klienta Bitcoin na własnym sprzęcie (nazywane górnikami) uczestniczą w sieci i sprawdzają, czy transakcje między dwoma stronami przebiegają uczciwie, dzięki czemu nie musi istnieć centralny autorytet gwarantujący zaufanie. Wydobywanie jest czynnością wymagającą obliczeniowo, więc warto zapytać, jakimi motywacjami kierują się ci, którzy angażują się w wydobywanie nowych bitcoinów. Otóż kluczowym motywem działań górników jest wynagrodzenie w postaci bitcoinów przyznawane za ich udział w tym procesie. Spójrzmy na uproszczony schemat procesu wydobywania przedstawiony na ilustracji 2.1.

Ilustracja 2.1. Uproszczony schemat procesu wydobywania

Rozproszone transakcje, do których doszło w ostatnim czasie w sieci Bitcoin, pozostają w puli transakcji, dopóki górnik ich nie zbierze i nie spakuje w blok. Warunkiem, jaki utworzony blok musi spełnić, aby został zaakceptowany przez łańcuch, jest posiadanie nagłówka. Pomyślmy o tym jak o wysyłaniu paczki – na gotową paczkę przed wysyłką trzeba nakleić znaczek. Górnik wykorzystuje nagłówek poprzedniego bloku w łańcuchu, by skonstruować nagłówek dla obecnego bloku. Nagłówek bloku ma także inne elementy, takie jak znacznik czasu, wersja klienta Bitcoin czy dane identyfikacyjne poprzedniego bloku w łańcuchu. Powstały w ten sposób blok jest nazywany blokiem kandydującym i może zostać dołączony do łańcucha, o ile zostanie spełnionych kilka warunków.

Proces wydobywania jest bardzo skomplikowany, dlatego na ilustracji 2.1 jest zarysowany jedynie ogólny obraz przedstawiający udział górnika w protokole. Teraz przyjrzymy się kwestiom związanym ze znaczkiem (patrz: analogia przywołana wyżej) i mechanizmowi oznaczania paczki. Należy pamiętać, że wydobywanie jest czynnością rywalizacyjną – na ilustracji 2.1 przedstawiono ten proces na przykładzie zaledwie jednego górnika, ale w rzeczywistości w sieci uczestniczy ich bardzo wielu. Górnicy rywalizują ze sobą, poszukując znaczków dla paczki (bloku), którą stworzyli, a pierwszy, który go odkryje, wygrywa. Wyścig między górnikami, którego celem jest odnalezienie znaczka, kończy się w ciągu około dziesięciu minut, po czym rozpoczyna się kolejny dziesięciominutowy wyścig. Kiedy znaczek zostaje odnaleziony, górnik może ukończyć blok i rozgłosić go w sieci, po czym dodaje się go do łańcucha. Spójrzmy na proces poszukiwania znaczka, zwanego nagłówkiem bloku, przedstawiony na ilustracji 2.2.

Ilustracja 2.2. Generowanie nagłówka bloku przez rozwiązywanie dowodu pracy (PoW)

[I] W przekładzie przyjęto zasadę, zgodnie z którą zapis „Bitcoin” od wielkiej litery jest zarezerwowany na określenie technologii tego środka płatności, a zapis „bitcoin” od małej litery sygnalizuje, że mowa jest o walucie i jej jednostkach. Oczywiście nie zawsze łatwo jest te dwa znaczenia rozgraniczyć (przyp. tłum.).

[II] Autorzy opisują tu tzw. sekurytyzację (ang. securities) polegającą na przekształcaniu aktywów, np. wierzytelności, w papiery wartościowe. Wraz z sekurytyzacją odbywał się tzw. transfer ryzyka, które było przenoszone na nabywcę instrumentu pochodnego (np. obligatariusza posiadającego CDO) (przyp. tłum.).