Kryptowaluty od zera - Tomasz Kabarowski, Piotr Wójcik - ebook

Kryptowaluty od zera ebook

Tomasz Kabarowski, Piotr Wójcik

4,0

24 osoby interesują się tą książką

Opis

Czy naprawdę da się zarobić majątek na kryptowalutach? Jak wygląda krypto-kot, za którego zapłacono 172 tys. dolarów? Jak bogaty jest twórca bitcoina? Na te i wiele innych pytań znajdziecie odpowiedź w książce „Kryptowaluty od zera”.

Autorzy w przystępny, a zarazem frapujący sposób przedstawiają w niej historię i mechanizm działania kryptowalut oraz technologii blockchain. To doskonała pozycja dla wszystkich ciekawych świata i nowoczesnych technologii, które rewolucjonizują naszą rzeczywistość. Bez względu na to, czy złapałeś już bakcyla inwestowania czy dopiero planujesz rozpocząć swoją przygodę z kryptowalutami, ta książka przybliży ci najważniejsze kwestie związane ze światem walut cyfrowych. A co zrobisz z tą wiedzą, zależy już tylko od ciebie!

Mogę z czystym sumieniem polecić tę książkę wszystkim, którzy chcą zrozumieć,
czym tak naprawdę jest blockchain – technologia, która podbiła świat biznesu, a znaczenie jej wynalezienia jest przyrównywane do wynalezienia internetu.

CHRISTINA KUCIŃSKA – EKSPERT W DZIEDZINIE CORPORATE FINANCE, KRYPTO BLOGGER WWW.CRYPTOQUEEN.PL

Książkę „Kryptowaluty od zera” polecam szczególnie osobom, które chcą zrozumieć,
jakie nowe mechanizmy wprowadza blockchain i dlaczego kryptowaluty nagle stały się tak bardzo popularne. Opisana tu technologia nie jest prosta i jej zrozumienie wymaga pewnego wysiłku, lecz autorzy postarali się, aby możliwie
najprościej opisać złożone mechanizmy. Blockchain z pewnością znajdzie zastosowanie w przyszłości nie tylko w FinTech, ale również w innych branżach, dlatego wiedza, którą posiądziecie, czytając tę książkę, na pewno Wam się przyda.
RAFAŁ TOMKOWICZ – EKSPERT BRANŻY FINTECH, TWÓRCA START-UPÓW,
PREZES FIRMY SFERA FINANSÓW S.A.


Tomasz Kabarowski - informatyk i przedsiębiorca. Od ponad 20 lat realizuje projekty internetowe dla branży finansowej oraz e-commerce. Twórca i szef jednego z czołowych polskich internetowych kantorów kryptowalut KantorBitcoin.pl. Na co dzień mieszka w Wielkiej Brytanii, gdzie tworzy oprogramowanie dla projektów FinTech.

Piotr Wójcik - z wykształcenia magister farmacji, entuzjasta i ekspert w dziedzinie kryptowalut, od lat współtworzy jeden z największych w Polsce kantorów kryptowalutowych - Kantorbitcoin.pl

Ebooka przeczytasz w aplikacjach Legimi na:

Androidzie
iOS
czytnikach certyfikowanych
przez Legimi
czytnikach Kindle™
(dla wybranych pakietów)
Windows
10
Windows
Phone

Liczba stron: 114

Odsłuch ebooka (TTS) dostepny w abonamencie „ebooki+audiobooki bez limitu” w aplikacjach Legimi na:

Androidzie
iOS

Popularność




WPROWADZENIE

Historia bitcoina – pierwszej kryptowaluty – rozpoczęła się w 2008 roku. Wtedy to jej twórca, skrywający się pod pseudonimem Satoshi Nakamoto, opublikował jego białą księgę zatytułowaną: Bitcoin: A Peer-to-Peer Electronic Cash System. Ten bardzo ważny dokument zawiera specyfikację oraz wszystkie detale techniczne dotyczące bitcoina, a przy tym jest ogólnodostępny w internecie. Publikacja wyglądem przypomina opracowanie naukowe. Pierwszy bitcoin został wykopany 3 stycznia 2009 roku i zapoczątkował erę kryptowalut. Prawdziwa tożsamość jego twórcy wciąż pozostaje zagadką, chociaż wiele osób próbowało się już pod niego podszyć. Ostatecznym dowodem na potwierdzenie, że jest się twórcą tej kryptowaluty, byłoby wykonanie transakcji z konta należącego do Satoshiego Nakamoto, na którym znajduje się aktualnie prawie milion bitcoinów. W 2010 roku opuścił on społeczność bitcoina, twierdząc, że musi zająć się czymś innym. Od tamtego czasu nie daje znaku życia, a jego środki pozostają nietknięte. Dokładnemu oszacowaniu, ile aktualnie wynosi jego majątek, zostanie poświęcony osobny podrozdział w dalszej części książki. Pierwotną motywacją twórcy bitcoina było opracowanie systemu płatniczego, podobnego do gotówki, który pozwalałby na transakcje elektroniczne bez konieczności korzystania z trzeciej strony. Aby dobrze zrozumieć powody, dla których ludzie wykorzystują kryptowaluty, warto sobie uświadomić, w czym wykazują one podobieństwo do walut fiducjarnych (takich jak dolar, euro, złoty itp.), a czym się od nich różnią. Tradycyjne waluty są kontrolowane przez banki centralne i określone państwa. Są to legalnie uznane środki płatnicze, których możemy używać praktycznie na całym świecie. Bitcoin nie ma centralnego emitenta, który zarządzałby jego dystrybucją, oraz nie jest uznawany za prawny środek płatniczy (bezpośrednio nie zapłacimy nim np. podatków). Kryptowaluty są traktowane raczej jako cyfrowe środki wymiany niż prawdziwe waluty.

Transakcje gotówkowe

Mówiąc o gotówce, mamy na myśli zazwyczaj pieniądz w postaci papierowej lub monetę o określonej wartości. Jeśli przekazujemy nasze środki drugiej osobie w takiej postaci, nie potrzeba pośrednika, który kontrolowałby przebieg tej transakcji. Obydwie strony mogą więc pozostać anonimowe. Dużą zaletą gotówki jest fakt, że ktokolwiek jest w fizycznym jej posiadaniu, domyślnie jest jej jedynym właścicielem. Nie ma centralnego organu, który wymaga prowadzenia rachunku. Każdy może z niej korzystać i jest dostępna bez zezwolenia, jednak ma też swoje wady. Kupujący oraz sprzedający muszą być obecni w tym samym miejscu, aby przeprowadzić transakcję, co w wielu życiowych sytuacjach jest niewykonalne.

Rys. 1. Transakcja gotówkowa

Transakcje elektroniczne

Uniwersalnym systemem płatności byłby system, w którym określona wartość pieniężna mogłaby zostać przeniesiona elektronicznie, za pomocą plików zawierających dane gotówkowe. Jednak problem polega na tym, że takie dane cyfrowe są podatne na kopiowanie, co jest wysoce niepożądaną funkcją dla jakiejkolwiek waluty. Duplikaty mogłyby zostać wykorzystane do płatności i tu powstaje problem tzw. podwójnego wydatkowania (ang. double spending problem). Aby tego uniknąć, klasyczne systemy płatności elektronicznych są oparte na centralnym organie (np. banku), który sprawdza zasadność wykonywanych transakcji i śledzi, czy posiadamy środki, które próbujemy wydać. Kupujący inicjuje płatność poprzez wysłanie zamówienia, a następnie bank może zweryfikować, czy posiada on na rachunku niezbędne środki do zrealizowania danej transakcji. System ten rozwiązuje problem kilkakrotnego wydawania tych samych środków, ale wymaga zaufania bankowi, w którym trzymamy środki, że nie nadużywa przekazanej mu nad nimi władzy. Warto dodać, iż scentralizowane serwery są podatne na ataki hakerskie, awarie techniczne, działalność rządów oraz urzędników, którzy mogą ingerować w nasze saldo oraz rekwirować lub blokować fundusze.

Rys. 2. Transakcja elektroniczna

Transakcje z wykorzystaniem rozproszonej księgi

Jest to system opierający się na bazie danych, która jest współdzielona i synchronizowana w wielu lokalizacjach geograficznych oraz na serwerach rozmieszczonych na całym świecie. Każda transakcja wykonana w takim systemie posiada publicznych „świadków”, co uniemożliwia jednostkowy cyberatak na sieć. Uczestnik jest w stanie z każdego węzła w sieci (tj. komputera o dużej mocy obliczeniowej, który weryfikuje poprawność transakcji) uzyskać dostęp do całej historii transakcji i zawsze będzie ona identyczna. Ponadto wszelkie zmiany, mające na celu uzupełnienie rozproszonej księgi, są kopiowane do wszystkich uczestników w sieci w ciągu kilku minut. Rozproszona księga może być opisana jako zbiór umów i transakcji w zdecentralizowanej formie, co znosi potrzebę kontroli przez organ centralny. Jest to swoista ochrona przed manipulacją, która eliminuje konieczność zaufania trzeciej stronie. Wszystkie informacje przechowywane w takiej sieci są całkowicie bezpieczne ze względu na odpowiednie metody szyfrowania kryptograficznego, jakie wykorzystuje. Zagadnienie to zostanie szczegółowo omówione w dalszej części książki. Sieć ta jest również bardziej odporna na ataki hakerskie, ponieważ musiałaby zostać zaatakowana ponad połowa węzłów jednocześnie, aby akcja zakończyła się sukcesem. Wprowadzenie zmian w jednym lub kilku z nich nie zaburza działania sieci. Błędy są szybko weryfikowane przez pozostałe węzły.

Od zamierzchłych czasów księgi rachunkowe były podstawą ewidencjonowania transakcji gospodarczych. Rejestrowano w nich płatności, kontrakty, transakcje kupna-sprzedaży i zmiany właścicieli określonych nieruchomości. Technologię rozproszonej księgi wykorzystuje blockchain, na którym opiera się podstawa działania bitcoina.

Rys. 3. Rozproszona sieć

Problem bizantyjskich generałów

Wprowadzenie do problemu

Wyobraźmy sobie wielką, zrobotyzowaną fabrykę, która nie może pozwolić sobie na przestoje, a jej prace przez dwadzieścia cztery godziny na dobę nadzorują złożone systemy informatyczne. Projektantom takiego systemu będzie więc zależało aby był on jak najmniej awaryjny. Żeby to osiągnąć, zwiększają oni liczbę urządzeń działających w najbardziej istotnych punktach systemów. Jeżeli któryś element zawiedzie, jego pracę przejmie inny, co pozwoli na nieprzerwaną pracę maszyn. W takim przypadku zepsutą część będzie bardzo łatwo namierzyć i podjąć próbę naprawienia jej. Jednak co w wypadku, gdy dany element nie przestanie pracować, a zacznie wysyłać błędne sygnały wskazujące na awarię? Jego funkcja zostanie przejęta przez inne urządzenie. Może ono wykorzystywać również potencjalną ochronę przed błędami w oprogramowaniu i posiadać inny program niż oryginał. Jak wtedy ocenić, który z dwóch poprawnie działających procesorów podejmuje dobrą decyzję?

Zagadnienie to bardzo obrazowo sformułowali w roku 1980 trzej naukowcy: Marshall Pease, Leslie Lamport oraz Robert Shostak, sam problem opisując następująco:

Grupa armii bizantyjskich otacza miasto wroga z czterech stron. Aby je zdobyć, wszystkie oddziały muszą zaatakować jednocześnie, w przeciwnym wypadku poniosą klęskę. Każdy dowódca oddziału ma swojego zaufanego posłańca, który dostarczy komunikat do innego dowódcy. Jednak nie mamy pewności, czy któryś z dowódców nie jest zdrajcą, któremu zależy na doprowadzeniu wojsk bizantyjskich do porażki. Należy więc opracować taki algorytm, który pozwoli wszystkim wiernym generałom na uzgodnienie planu działania. Jeśli któryś okaże się zdrajcą, wtedy będzie jeszcze możliwość odwrotu i ocalenia wojsk – jeśli natomiast zdrajca ujawniłby się dopiero podczas ataku, byłoby już za późno na odwrót, co oznaczałoby klęskę całej armii.

Dowódcy oddziałów są więc podmiotami decyzyjnymi w systemie rozproszonym, a posłańcy to kanały komunikacyjne. Aby algorytm zadziałał, musi on spełniać następujące warunki1:

1. Wszyscy wierni dowódcy podejmują taką samą decyzję.

2. Niewielka liczba zdrajców nie spowoduje podjęcia złej decyzji ostatecznej, która byłaby niezgodna z zamiarami większości dowódców.

Możemy również założyć, kiedy ewentualnie należałoby się wycofać, poprzez ustalenie limitów czasowych, po przekroczeniu których, jeśli nie uzyskamy odpowiedzi od reszty oddziałów, uznajemy, że nie zdecydowały się one na atak.

Czy da się go rozwiązać?

Tak, jednak wymaga to bardzo wielu rund, w których będą wysyłane komunikaty. W pierwszej kolejności dowódca przekazuje pozostałym oddziałom swoją decyzję. Otrzymane od innych informacje oraz swój głos zapisuje na unikalnej tablicy. Następnie każdy z dowódców przekazuje innym zawartość swojej tablicy. Nie musi on otrzymać tablicy, którą sam wypełniał, oraz przekazywać tej, którą posiada, z powrotem do nadawcy. W przypadku czterech dowódców, z których jeden jest zdrajcą, do rozwiązania problemu wystarczą dwie rundy wykonane przez zaufanego posłańca. Większa liczba zdrajców lub dowódców wygeneruje konieczność wykonania większej liczby rund do skutecznego rozwiązania tego problemu. Ze względu na znaczną liczbę komunikatów, jakiej wymagałoby to rozwiązanie, w praktyce byłoby ono nieskalowalne. Skutkiem tego byłaby jego niska efektywność w przypadku, gdyby liczba zdrajców lub dowódców okazała się zbyt duża.

Jakie rozwiązanie oferuje technologia blockchain?

W przypadku technologii blockchain metaforyczny problem bizantyjskich generałów odnosi się do sytuacji, w której przynajmniej dwa węzły będą mogły komunikować się ze sobą, mając gwarancję wyświetlania takich samych danych. Jest to trudne zadanie, jednak sytuacja taka jest możliwa do osiągnięcia. Sieć blockchain wykorzystuje technologię P2P (ang. peer-to-peer), w której konsensus jest osiągany, jeśli „lojalne” lub nieuszkodzone węzły podejmą większościową zgodę co do decyzji. Sieć większości kryptowalut wykorzystuje tzw. algorytm konsensusu, który jest mechanizmem zapewniającym rozwiązanie problemu bizantyjskich generałów. Najczęściej spotykanymi implementacjami są protokoły proof-of-work lubproof-of-stake.

Cechy protokołów wykorzystywanych w sieciach kryptowalut

Protokoły stanowią fundamentalną część sieci internetowych, na której opiera się ich działanie. Od samych początków istnienia internetu są one wykorzystywane, aby przesyłać dane z jednego komputera na drugi.

Trzy główne protokoły w sieciach internetowych, o których prawdopodobnie udało Ci się usłyszeć, to:

HTTP (ang. hypertext transfer protocol),

TCP (ang. transfer control protocol),

IP (ang. Internet Protocol).

TCP/IP są to zbiory protokołów, które umożliwiają transmisję danych w sieci komputerowej. HTTP natomiast pozwala przeglądarkom na komunikację z serwerami WWW.

W standardowych bazach danych występuje architektura serwer–klient, która przechowuje informacje w centralnych bazach danych. Czasami podanie osobistych informacji jest niezbędne, aby korzystać ze wszystkich funkcji danej platformy. Facebook czy Google posiadają ogromne, scentralizowane serwery i tam znajdują się m.in. takie informacje jak historia transakcji użytkowników czy dane osobowe. Wszyscy korzystamy z nich na co dzień za pomocą protokołów HTTP.

Rozproszenie sieci

W sieci blockchain dane również mogą być przesyłane między użytkownikami, jednak w nieco inny sposób niż w przypadku zwykłych protokołów internetowych.

Pierwszą cechą, która je definiuje, jest zdecentralizowana baza danych, współdzielona przez użytkowników z całego świata w wielu różnych lokalizacjach. Wykorzystuje ona sieć P2P (ang. peer-to-peer), w której każda transakcja jest współdzielona i przechowywana przez węzły (tj. komputery o dużej mocy obliczeniowej, współtworzące sieć). Taka sieć nie posiada pośrednika, który działa jako centralny punkt zapisu informacji. Oznacza to również, że nie ma pojedynczego punktu awarii, co zmniejsza prawdopodobieństwo włamania do serwera lub utraty informacji. Nie istnieje też jeden podmiot, który byłby właścicielem sieci, przez co nikt nie ma możliwości zarabiania na danych ani wykorzystywania ich w sposób niepożądany przez użytkowników.

Kryptografia

Interakcje w łańcuchu bloków są szyfrowane za pomocą zaawansowanych metod kryptograficznych. Jest to główny powód, dla którego protokoły związane z blockchainem są bezpieczniejsze od tych tradycyjnych. Szyfrowanie wykorzystuje trzy główne narzędzia – hashing, uwierzytelnianie przy pomocy klucza prywatnego i publicznego oraz podpis cyfrowy. Warto pamiętać, że metody te istniały o wiele wcześniej, niż powstała technologia blockchain. Zostały one zaimplementowane w niej jako gotowe rozwiązania. Hashing jest funkcją matematyczną, która pobiera dane wejściowe o dowolnej długości i używa odpowiednich formuł, aby stworzyć pozornie losowy wynik stałej liczby liter i cyfr.

Jeśli użyjemy formuły, którą wykorzystuje algorytm bitcoina – SHA256 – możemy zakodować dowolne hasło i otrzymamy określony ciąg znaków. Na przykład dla frazy: „Ta książka jest super”:

A52DD2A0A99336F427FC0B621647ACBEDE016958A7C84B62EA3CB386D8A4B373

Co ciekawe, jakakolwiek zmiana w zakodowanej nazwie, np. poprzez dodanie wykrzyknika na końcu zdania, spowoduje powstanie całkiem innych danych wyjściowych, które na pierwszy rzut oka są całkowicie losowe. „Ta książka jest super!”:

684351F7385DCA30254EB1C5D7B7C4AD5BC7967AA30A2A138A54EF6F1593C12D

Algorytmem tym rządzi jednak kilka reguł:

Takie same dane wejściowe zawsze dają identyczny rezultat.

Dwa różne hasła wejściowe nie mogą dać takich samych danych wyjściowych.

Na podstawie samych danych wyjściowych nie jesteśmy w stanie określić, jakie hasło zostało zakodowane.

Nieznaczne zmiany powodują powstanie całkowicie innego wyniku.

Główną zaletą tej enkrypcji jest fakt, że nawet ściana tekstu może zostać sprowadzona do kodu, który zmieści się w jednej linijce. Jest to również unikalna, jednokierunkowa funkcja, której nie da się odwrócić.

Cała ta książka po zakodowaniu to tylko jedna prosta linijka danych wyjściowych:

9A9F7EEA774F21BA1DF02A82C83B3E57DD50B0207AF85AD86AFFFFD7DBC70058

W sieci blockchain enkrypcja jest używana do tworzenia podpisów cyfrowych i integracji bloków transakcyjnych, co wpływa na jej nienaruszalność i bezpieczeństwo.

Kolejnym narzędziem zabezpieczającym sieć jest szyfrowanie klucza prywatnego i publicznego – zwane również szyfrowaniem asymetrycznym. Wykorzystują je wszystkie protokoły w sieci blockchain. W metodzie tej klucz publiczny możemy udostępnić każdemu, a prywatny jest tylko dla nas. Te dwa klucze są powiązane matematycznie, co oznacza, że treść zaszyfrowana przy użyciu klucza publicznego może zostać rozkodowana tylko kluczem prywatnym.

Rys. 4. Szyfrowanie klucza publicznego i klucza prywatnego

Ostatnia składowa wykorzystywana w kryptografii protokołów to podpis cyfrowy. Wykonanie go jest możliwe za pomocą dwóch wcześniej opisanych metod. Umożliwia on uwierzytelnienie tożsamości nadawcy i potwierdzenie, że dokument nie został zmieniony podczas przesyłania.

Nadawca przy pomocy hashingu koduje swoją wiadomość i szyfruje ją za pomocą klucza prywatnego, po czym przesyła dokument do odbiorcy. Ten zaś jest w stanie odszyfrować wiadomość kluczem publicznym nadawcy i uzyskać skrót przesłanego pliku w postaci zhaszowanego kodu. Następnie może zhaszować pełną wersję dokumentu i porównać kod z tym, który otrzymał od nadawcy. Dzięki temu odbiorca może uwierzytelnić identyfikację nadawcy, mając pewność, że nic nie zostało zmienione podczas transferu.

1 Mordechai Ben-Ari, Podstawy programowania współbieżnego i rozproszonego, Wydawnictwa Naukowo-Techniczne, Warszawa 2009, s. 238.

WIODĄCE ALGORYTMY KONSENSUSU W SIECIACH BLOCKCHAIN

W sieciach blockchain potrzebna jest procedura, dzięki której wszystkie ich węzły mogą dojść do porozumienia związanego z poprawnym funkcjonowaniem sieci. Jako że nie ma tu centralnego organu podejmującego decyzje, musi istnieć mechanizm, który skłoni jej uczestników do współpracy. Sieci blockchainowe posiadają algorytmy konsensusu, odpowiadające za sprawne ich działanie w tej kwestii. Algorytmy te są mechanizmem, który zapewnia przestrzeganie założeń określonej sieci zawartych w protokołach. Służą one do potwierdzania informacji na temat ważności wychodzących transakcji i zabezpieczania ich. Sprawdzają również, czy osoba wysyłająca składnik aktywów w sieci jest w rzeczywistości właścicielem tego zasobu. Dzięki temu niemożliwe jest podwójne wydatkowanie swoich środków. Jest to ważne, ponieważ zasoby cyfrowe są łatwe do „skopiowania” i mogłyby być używane kilkakrotnie, gdyby nie odpowiednie zabezpieczenia.

Proof of work – dowód pracy

Pierwszym algorytmem, który powstał i został zaimplementowany do technologii blockchain, był protokół proof-of-work. Wymaga