Moduł 3 z 8

Techniczna historia Bitcoina

3.0 Wprowadzenie

Streszczenie White Paper Bitcoin

Czysto peer-to-peerowa wersja elektronicznej gotówki pozwoliłaby na przesyłanie płatności online bezpośrednio od jednej osoby do drugiej bez pośrednictwa instytucji finansowej. Podpisy cyfrowe stanowią część rozwiązania, ale główne korzyści zostają utracone, jeśli zaufana trzecia strona jest nadal wymagana, aby zapobiec podwójnemu wydawaniu. Proponujemy rozwiązanie problemu podwójnego wydawania z wykorzystaniem sieci peer-to-peer. Sieć znaczy czasem transakcje poprzez haszowanie ich do ciągłego łańcucha dowodu pracy opartego na haszach, tworząc zapis, którego nie można zmienić bez ponownego wykonania dowodu pracy. Najdłuższy łańcuch służy nie tylko jako dowód kolejności zaobserwowanych zdarzeń, ale także jako dowód, że pochodzi on z największej puli mocy obliczeniowej CPU. Dopóki większość mocy CPU jest kontrolowana przez węzły, które nie współpracują w celu ataku na sieć, będą one generować najdłuższy łańcuch i wyprzedzać atakujących. Sama sieć wymaga minimalnej struktury. Wiadomości są rozgłaszane w miarę możliwości, a węzły mogą opuszczać i dołączać do sieci według własnej woli, akceptując najdłuższy łańcuch dowodu pracy jako dowód tego, co się wydarzyło podczas ich nieobecności.

Bitcoin nie pojawił się znikąd, lecz powstał na bazie pracy wielu osób z poprzednich dekad. Ten moduł przybliży fundamenty internetu, na których opiera się Bitcoin, a także badania i rozwój uznane w whitepaperze.

W latach 70. grupa osób zauważyła, że rząd USA w szczególności próbował ograniczyć dostęp do kryptografii, i postanowiła zadbać o to, by ta technologia była dostępna dla wszystkich ludzi, aby mogli chronić swoją prywatność w internecie. Niektórzy z tych wczesnych pionierów skupiali się również na potencjalnych korzyściach płynących z cyfrowego systemu „solidnych pieniędzy”, który mógłby służyć do przechowywania i wymiany wartości w rodzącym się internecie. Friedrich Hayek – czołowy przedstawiciel ekonomii austriackiej – już przed erą internetu wyobrażał sobie, jak mogłaby wyglądać idealna waluta oparta na wolnorynkowej konkurencji, ale uznał, że jest to technicznie i politycznie niewykonalne. Oprócz cyfrowej prywatności, ta grupa, która przekształciła się w Cypherpunks, próbowała zrealizować wizję Hayeka dotyczącą cyfrowych pieniędzy, lecz te próby kończyły się niepowodzeniem aż do momentu, gdy Satoshi opublikował swoje pomysły na liście mailingowej.

  • Protokół TCP/IP (1976)
  • Protokoły dla kryptosystemów z kluczem publicznym – Ralph Merkle (1980)
  • Digicash – David Chaum (1989)
  • Cyfrowe znakowanie czasem (lata 90.)
  • Hashcash – Adam Back (1997)
  • BitTorrent – Bram Cohen (2001)
  • Reusable POW – Hal Finney (2004)
  • Whitepaper Bitcoin – Satoshi Nakamoto (2008)

Kluczowy wpływ na rozwój Bitcoina miało pojawienie się ruchu Cypherpunk w latach 90. Opracowali oni kilka technologii kryptograficznych, w tym kryptografię z kluczem publicznym, umożliwiającą użytkownikom bezpieczną i prywatną komunikację oraz wymianę informacji. Wiele z opisanych tu osiągnięć i zaangażowanych osób należało do tej grupy.

Potrzeba cyfrowej gotówki została również zidentyfikowana i podjęto kilka prób jej stworzenia, ale miały one ograniczenia, które uniemożliwiły im sukces. Geniusz Satoshiego Nakamoto polegał na tym, że połączył te możliwości, a wraz z własnymi innowacjami zbudował na ich podstawie protokół Bitcoin używany do dziś. W kolejnych sekcjach przyjrzymy się niektórym z tych osiągnięć i wyjaśnimy, jak wpłynęły one na projekt Bitcoina. Omówimy także, jakie elementy układanki brakowały, które Satoshi zdołał rozwiązać.

3.1 Rozwój TCP/IP

Większość z nas zna dziś protokoły TCP/IP jako fundament internetu. Ich początki sięgają końca lat 70., kiedy naukowcy badali alternatywne rozwiązania dla Arpanetu – jeszcze wcześniejszej sieci stworzonej przez Departament Obrony USA w celu umożliwienia współdzielenia zasobów między odległymi komputerami. TCP/IP stał się standardowym protokołem dla Arpanetu w 1983 roku, co doprowadziło do jego dominacji jako modelu sieciowego pod koniec lat 90. i stanowi dziś podstawę internetu, na którym działa Bitcoin.

Model OSI TCP/IP
Aplikacja Aplikacja
Prezentacja Aplikacja
Sesja Aplikacja
Transport Transport
Sieć Sieć
Łącze danych Łącze danych
Warstwa fizyczna Warstwa fizyczna

W tym samym czasie, gdy rozwijano model TCP/IP, Międzynarodowa Organizacja Normalizacyjna (ISO) oraz branża telekomunikacyjna (CCITT) opracowywały podobne, lecz bardziej rozbudowane ramy. Proces tworzenia nowych protokołów lub sugerowania zmian był jednak powolny i nieporęczny w porównaniu z bardziej zdecentralizowanym podejściem stosowanym przy TCP/IP, co doprowadziło do dominacji tego drugiego rozwiązania.

Wniosek o zmianę

Wszelkie proponowane rozwinięcia istniejących protokołów lub pomysły na nowe mogą być zgłaszane w modelu TCP/IP poprzez Wniosek o zmianę proces. Przechodzą one przez proces zatwierdzania, zarządzany przez Internet Engineering Task Force (IETF), a po zatwierdzeniu stają się otwartym oprogramowaniem, co pozwala każdemu na ich wdrożenie i przyjęcie. Przykłady warte uwagi:

  • 1969 RFC 1 Opisano, jak pakiety będą przesyłane w Arpanecie
  • 1981 RFC791 zdefiniował protokół internetowy V4 – nadal szeroko stosowany
  • 1982 RFC 821 Prosty protokół przesyłania poczty elektronicznej
  • 1987 System nazw domen – sposób rozwiązywania nazw domen na adresy IP
  • 1999 RDC 2616 Protokół przesyłania hipertekstu – kluczowy dla przeglądania stron WWW

Bitcoin Improvement Proposal (BIP) stosuje podobne podejście jak RFC, ale skupia się wyłącznie na ulepszeniach samego Bitcoina, a nie na rozwoju nowych lub alternatywnych protokołów. Bitcoin również czerpie z tego modelu warstwowego i zobaczysz dodatkowe protokoły opisywane jako warstwa druga lub trzecia.

Podobnie jak podstawowe warstwy modelu TCP/IP zmieniały się stosunkowo niewiele w ostatnich dekadach, a innowacje zachodziły na wyższych warstwach, tak i podstawowa warstwa Bitcoina prawdopodobnie będzie się teraz zmieniać bardzo powoli, a rozwiązania skalujące, takie jak Lightning i Liquid, będą rozwijane powyżej niej.

Dobrym przykładem tego, jak protokoły warstwy bazowej stają się trudne do zmiany z upływem czasu, jest IPv6. Oczekiwane wyczerpanie przestrzeni adresowej w IPv4 stworzyło zapotrzebowanie na nowy protokół. Pierwszy projekt standardu powstał w 1998 roku, ale został zatwierdzony jako standard internetowy dopiero w 2017 roku. Chociaż rozwiązał wiele problemów IPv4 i jest znacznie bardziej przyszłościowy, jego wdrażanie w branży przebiega bardzo powoli. W tym czasie na wyższych warstwach zdefiniowano wiele nowych protokołów umożliwiających multimedia, e-mail itp.

Klocki budulcowe używane przez Bitcoina

To rozdzielenie problemów związanych z łącznością pozwala na niezależny rozwój protokołów względem warstw powyżej i poniżej. Zamiast wymyślać rozwiązania na nowo dla każdej warstwy, sieć Bitcoin może polegać na podstawowych możliwościach sieci dostarczanych na warstwie fizycznej i łącza danych.

Warstwa Oryginalny TCP/IP
Aplikacja Używa systemu nazw domen (DNS) do identyfikacji sąsiednich węzłów. Port 8333 sygnalizuje protokół Bitcoina.
Transport UDP do komunikacji FIBRE między górnikami dla niskich opóźnień. TCP do komunikacji P2P między węzłami.
Transport Routing TOR: Zapewnia anonimowość i prywatność. Protokół rozgłoszeniowy: Kieruje ruchem w sieci.
Łącze Działa na dowolnym medium (np. Ethernet, Wi-Fi itp.)
Warstwa fizyczna Transmisja fizyczna przez sieć bezprzewodową, Ethernet lub inne interfejsy sprzętowe.
Bitcoin jest neutralnym protokołem do przesyłania wartości, tak jak HTTPS jest protokołem do przesyłania informacji
  • HTTPS: Bezpieczne strony internetowe
  • SMTP: Wysyłaj e-maile
  • FTP: Przesyłaj pliki
  • DNS: Zarządzaj nazwami domen
  • BTC: Przechowuj i przesyłaj wartość

Bitcoin umożliwia niezawodne przenoszenie wartości bez konieczności korzystania z pośredników, pomiędzy ludźmi lub urządzeniami przez Internet. Oczekuje się, że to odblokuje ogromną wartość.

3.2 Kryptografia klucza publicznego i protokoły

Współczesny Internet i większość nowoczesnych systemów komputerowych opiera się na kryptografii, czyli metodzie ukrywania informacji w taki sposób, aby tylko odbiorca mógł ją odszyfrować. Podstawy kryptografii wykorzystywanej do zabezpieczania Bitcoina sięgają lat 70.

Pierwszym problemem do rozwiązania jest – jak przesłać wspólny sekret przez niezabezpieczone medium.

Jako pierwsi zajęli się tym Whitfield Diffie i Martin Hellman.

Problem: dwie strony – zwykle nazywane Alicją i Bartkiem – chcą wymienić się tajną informacją przez sieć, w której inni mogą podsłuchiwać. Aby to osiągnąć, stworzyli proces wymiany klucza Diffiego-Hellmana.

Ten wspólny sekret może następnie posłużyć jako wartość początkowa do tworzenia wielu kluczy symetrycznych, które pozwalają szyfrować i odszyfrowywać wiadomości bez konieczności ujawniania samego klucza.

Ponieważ klucz prywatny nigdy nie musi być udostępniany, a do szyfrowania i odszyfrowywania używane są różne klucze po obu stronach, nazywa się to algorytmem szyfrowania asymetrycznego.

Przykłady zastosowań:

  • Alicja podpisuje wiadomość kluczem publicznym Bartka – tylko on może ją odszyfrować za pomocą swojego klucza prywatnego
  • Alicja podpisuje wiadomość swoim kluczem prywatnym – każdy może zweryfikować, że wiadomość została wysłana przez Alicję, odszyfrowując ją jej kluczem publicznym, nie znając jej klucza prywatnego
  • Łącząc te dwa podejścia w dwóch warstwach szyfrowania, można wysłać wiadomość zaszyfrowaną tak, że tylko Bartek może ją odszyfrować, a następnie potwierdzić, że nadawcą była rzeczywiście Alicja

Chociaż nie został wymieniony jako autor publikacji, Ralph Merkle odegrał kluczową rolę w rozwiązaniu tego, co do tej pory uważano za nierozwiązywalną zagadkę – jak nawiązać lub odnowić prywatną komunikację w otwartej i potencjalnie wrogiej sieci.

To podejście samo w sobie jest podatne na atak brute force, w którym atakujący może przejąć wspólne liczby i ostatecznie odtworzyć wspólny klucz, jeśli tylko będzie miał wystarczająco dużo czasu i zasobów, więc nie jest to kompletne rozwiązanie.

Protokoły dla kryptosystemów klucza publicznego

Oprócz wkładu w system klucza publicznego Diffiego-Hellmana opisany powyżej, Ralph Merkle przez wiele lat kontynuował pracę w tej dziedzinie i odegrał kluczową rolę w rozwoju niektórych elementów wykorzystywanych przez Bitcoina.

Kryptograficzna funkcja skrótu to algorytm matematyczny, który przyjmuje dane wejściowe dowolnej wielkości i przetwarza złożone obliczenia, aby zwrócić wartość skrótu w bitach, która zwykle jest przedstawiana jako stałej długości wyjście alfanumeryczne w formacie szesnastkowym.

  • Dane wejściowe mogą mieć dowolny rozmiar
  • Wynik ma zawsze stałą długość i jest deterministyczny (te same dane wejściowe zawsze tworzą ten sam skrót)
  • Łatwo jest zweryfikować wynik, ale niezwykle trudno odwrócić proces, aby ustalić dane wejściowe
  • Niewielka zmiana danych całkowicie zmienia wynik
Hash function

Haszowanie jest integralną częścią protokołu Bitcoina. SHA-256, używany w Bitcoinie, został stworzony przez NSA i jest przykładem kryptograficznego algorytmu haszującego.

  • Każdy blok w łańcuchu jest haszowany, aby dane nie mogły zostać zmienione – zapewnia to integralność rozproszonej księgi
  • Wygenerowany skrót musi spełniać kryteria „Proof of work”, aby blok został uznany za ważny
  • Drzewa Merkle’a – dzięki rozgałęzieniom i haszowaniu skrótów, drzewa skrótów umożliwiają weryfikację dużych zbiorów danych przy minimalnym zużyciu pamięci
  • Podpisy i klucze oparte na skrótach mogą być używane do portfeli, adresów i autoryzacji transakcji

Rozproszona weryfikacja stanów blockchaina i modele księgi tylko do dopisywania, odporne na zmiany, są możliwe dzięki jednokierunkowemu haszowaniu. Funkcje skrótu zapewniają niezawodny, deterministyczny sposób weryfikacji zdarzeń w publicznych księgach, takich jak Bitcoin, bez scentralizowanego modelu zaufania.

Twórcy tych nowych możliwości w dziedzinie kryptografii spodziewali się, że zapoczątkują one nową falę innowacji.

Kryptografia krzywych eliptycznych

Jedną z późniejszych innowacji była kryptografia krzywych eliptycznych.

Kryptografia krzywych eliptycznych została wprowadzona w 1985 roku przez dwóch naukowców, N. Koblitza i V. Millera. Zaproponowali oni wykorzystanie punktów zdefiniowanych przez krzywe eliptyczne zamiast skończonych pól pierwszych, tak aby założenie o problemie dyskretnego logarytmu było spełnione, jak to się zwykle robi w standardowym protokole wymiany klucza Diffiego-Hellmana. Szczegóły działania wykraczają poza zakres tej sekcji, ale ogólnie rzecz biorąc, krzywa eliptyczna to zbiór punktów spełniających określone równanie matematyczne.

Równanie krzywej eliptycznej wygląda mniej więcej tak:

Elliptic curve

Ma to kilka przydatnych właściwości:

  • Symetria względem osi poziomej. Każdy punkt na krzywej można odbić względem osi x i pozostanie on na tej samej krzywej.
  • każda niepionowa prosta przetnie krzywą w maksymalnie trzech miejscach.
  • Kompaktowe rozmiary kluczy są niezbędne do efektywnego przechowywania i przesyłania kluczy publicznych w blockchainie.

Te właściwości można wykorzystać do tworzenia par kluczy w podobny sposób jak w algorytmie Diffiego-Hellmana. Bitcoin używa ECDSA, czyli Elliptic Curve Digital Signature Algorithm. Jest to proces, który wykorzystuje krzywą eliptyczną i skończone pole do „podpisywania” danych w taki sposób, że osoby trzecie mogą zweryfikować autentyczność podpisu, podczas gdy podpisujący zachowuje wyłączną możliwość jego tworzenia. W przypadku bitcoina podpisywane są dane dotyczące transakcji przenoszącej własność.

Część „skończona” jest podobna do podejścia „mod” w Diffie-Hellmanie, gdzie wynik równania jest dzielony, a reszta z dzielenia służy do zapewnienia, że mieści się on w określonym zakresie liczb.

3.3 DigiCash

Jednym z pierwszych uczestników „nowej fali zainteresowania” kryptografią był David Chaum. W młodości uczył się łamać systemy komputerowe, a jego sukcesy zrodziły nieufność wobec rzekomo „bezpiecznych” systemów. Zauważył też problem, którego dotąd nie brano pod uwagę: „jak zachować w tajemnicy wiedzę o tym, kto z kim i kiedy rozmawia”.

Opracował anonimowy protokół pocztowy wykorzystujący kryptografię klucza publicznego, który „mieszał” wiadomości, aby zachować anonimowość nadawcy i odbiorcy. To stało się podstawą sieci TOR.

Chaum patrzył na płatności cyfrowe w podobny sposób – dostrzegając, że „śledzone transakcje finansowe dokonywane przez osobę mogą ujawnić wiele na temat jej miejsca pobytu, kontaktów i stylu życia”. W 1980 roku opatentował system cyfrowej gotówki zabezpieczony kryptografią, który stał się podstawą kryptowalut. Zaczął także badać pomysł wykorzystania kryptografii do stworzenia w pełni zdecentralizowanej gospodarki opartej na decentralizacji komunikacji i płatności.

Rządy są dobre w ścinaniu głów scentralizowanych sieci, takich jak Napster, ale czysto P2P sieci, takie jak Gnutella i TOR, wydają się trzymać się mocno.
Satoshi Nakamoto

Zdecentralizowane systemy bez centralnej władzy – peer-to-peer – oferują kilka zalet:

  • Mogą szybko się rozwijać, ponieważ każdy może rozbudować system, po prostu uruchamiając nowy węzeł bez potrzeby rejestracji czy zgody
  • Wszystkie węzły są takie same, więc awarie można łatwo ominąć
  • Brak centralnej władzy, którą można przejąć i skompromitować cały system
  • Są trudniejsze do przejęcia, regulowania, opodatkowania czy inwigilowania bez scentralizowanych punktów kontroli

Dekadę później założył swoją firmę, Digicash, aby stworzyć „ecash” – pierwszy na świecie system cyfrowej gotówki. W Digicash przez pewien czas pracowało wiele znanych nazwisk, firma odniosła pewne sukcesy, ale ostatecznie upadła i ogłosiła bankructwo.

Dalszy rozwój cyfrowych pieniędzy

W poście na forum z lipca 2010 roku Satoshi Nakamoto napisał: „Bitcoin to realizacja propozycji b-money Wei Dai’a na Cypherpunks w 1998 roku oraz propozycji Bit Gold Nicka Szabo”.

Chociaż żadna z tych dwóch idei nie wyszła poza fazę propozycji, niektóre z zawartych w nich pomysłów wyraźnie wpłynęły na rozwój Bitcoina:

  • Wykorzystanie „Proof of work” do przypisywania wartości pieniężnej pracy obliczeniowej
  • Koncepcja, że koszt obliczeń zmienia się w czasie i musi być uwzględniany

Ale najpierw przyjrzymy się Hashcash.

3.4 Hashcash

Hashcash został stworzony przez Adama Backa, kolejnego z wczesnych innowatorów w tej dziedzinie. Adam bardzo interesował się wolnym rynkiem i prywatnością w internecie, natrafił na listę dyskusyjną Cypherpunks, do której dołączył i stał się aktywnym uczestnikiem.

Bardzo interesował się cyfrowymi pieniędzmi i zaproponował, aby grupa mogła potencjalnie ściślej współpracować nad DigiCash z Chaumem, ale te pomysły nie zostały zrealizowane. Następnie skupił się na innym pojawiającym się problemie – spamie e-mailowym. On i reszta Cypherpunków chcieli znaleźć rozwiązanie problemu spamu, gdzie dla spamerów było banalnie łatwe tworzenie i wysyłanie tysięcy wiadomości, które zapychają sieci. Jego innowacyjne rozwiązanie opierało się na haszowaniu – możliwości kryptograficznego przekształcenia dowolnych danych w unikalny i losowy ciąg o określonej długości, aby stworzyć cyfrowy „znaczek”, który musiał być dołączony do e-maila, by był uznany za ważny i przesłany przez sieć. To był niewielki koszt dla prawdziwego e-maila, ale zaporowy dla spamera.

Kluczową innowacją Hashcash było powiązanie zasobów ze świata rzeczywistego – mocy obliczeniowej – z siecią cyfrową. Podczas gdy zasoby cyfrowe do tej pory mogły być kopiowane bez ograniczeń, liczba „hashcash” była ograniczona przez to, ile energii ludzie byli gotowi w to zainwestować.

Chociaż rozwiązanie spełniało część kryteriów, które Adam uważał za niezbędne w systemie cyfrowej gotówki – było anonimowe, odporne i nie wymagało zaufania – każdy hashcash nie był wielokrotnego użytku i nie był naprawdę rzadki. Zaproponował inne sposoby rozwiązania tych problemów z wykorzystaniem zewnętrznych stron trzecich.

BitGold

Nick Szabo rozwinął koncepcję Hashcash i dowodu pracy, proponując alternatywne rozwiązanie, które opisał na liście dyskusyjnej rok po opublikowaniu Hashcash, w 1998 roku.

Chociaż było to bliżej rozwiązania, ta propozycja nadal miała kilka wyzwań.

  • Kto miałby prowadzić rejestr własności hashy i jak można im ufać?
  • Haszowanie generalnie stawałoby się tańsze z czasem, co było również wyzwaniem dla HashCash.

Ponieważ powiązane hashe miały być oznaczane czasowo, zaproponował pewną formę historycznego śledzenia trudności haszowania w danym momencie; wcześniejszy hash wymagałby większych kosztów przetwarzania niż późniejszy, ponieważ koszty spadały. Niestety oznaczało to, że hashe nie byłyby „zamienne”, czyli równej wartości, co jest kluczową cechą cyfrowych pieniędzy. Aby to rozwiązać, Nick zasugerował pewną formę „wolnej bankowości” działającej na BitGold, która mogłaby agregować różne grupy hashy wyceniane tak samo.

B-Money

Wkrótce po propozycji Bit Gold, Wei Dai zaproponował podobne rozwiązanie. Już wcześniej opracował kilka innych narzędzi dla Cypherpunków i miał własne pomysły na temat cyfrowych pieniędzy.

Jego propozycja przypominała Bit Gold tym, że wykorzystywała podpisy cyfrowe do przekazywania środków, a zapisy transakcji miały być przechowywane w rejestrze, zawierającym klucze publiczne i ilość jednostek waluty przypisanych do każdego z nich. Podobnie jak w Bit-Gold, zaufane strony trzecie były uważane za luki w bezpieczeństwie, a przekonanie było takie, że elektroniczny system gotówkowy nie powinien polegać na jednej jednostce do śledzenia sald, transakcji czy zapobiegania podwójnemu wydaniu.

Wei Dai zaproponował kilka rozwiązań tych problemów, z których jedno polegało na tym, że zamiast centralnej jednostki (lub jednostek) utrzymującej rejestr, WSZYSTKIE węzły miałyby własną kopię. Jeśli wszyscy użytkownicy sprawdzaliby własny rejestr i ważność każdej transakcji, to dopóki wszystkie węzły byłyby aktualne, rejestry powinny pozostać zsynchronizowane w całej sieci. Taki wysoce rozproszony system byłby trudny do skorumpowania.

Wei Dai zauważył, że to nie rozwiązuje problemu generałów bizantyjskich (1), ponieważ węzły mogłyby łatwo stracić synchronizację lub po prostu kłamać. Zaproponował alternatywne metody, takie jak wyznaczenie podzbioru „zaufanych” serwerów utrzymujących rejestr oraz stworzenie bodźców finansowych, by te serwery pozostały uczciwe.

Jeśli chodzi o politykę pieniężną, zaproponował powiązanie siły nabywczej B-Money z jakimś zewnętrznym indeksem cen konsumpcyjnych. Chciał, aby ta sama ilość B-Money mogła kupić równy udział w indeksie w czasie, zapewniając pewną stabilność cen. Każdy mógłby generować nowe jednostki waluty, dostarczając poprawny hash, ale trudność generowania hashy mogłaby się zmieniać w czasie w zależności od kosztów CPU i indeksu cen, tak aby każda jednostka była „niezmienna”.

3.5 BitTorrent

Innym projektem, który odegrał znaczącą rolę w kształtowaniu kryptowalut przed pojawieniem się bitcoina, jest BitTorrent.

W 2001 roku Bram Cohen opublikował projekt protokołu o nazwie BitTorrent, który został stworzony do obsługi systemu wymiany plików peer-to-peer. Zaczął pracować w firmie o nazwie MojoNation, która została założona, aby umożliwić ludziom dzielenie poufnych plików na zaszyfrowane fragmenty, które są rozprowadzane na komputerach z zainstalowanym oprogramowaniem. Kopia pliku była pobierana jednocześnie z wielu komputerów. Chociaż ostatecznie projekt się nie powiódł, wprowadził Cohena w świat wymiany plików, gdzie postanowił stworzyć lepszy protokół, który składał się z:

  • Rój: społeczność maszyn, które pobierają lub udostępniają treści
  • Tracker: dedykowane narzędzie, które działa podobnie jak wyszukiwarka, ale śledzi pliki znajdujące się w roju. Dzięki temu użytkownicy mogą łatwo zobaczyć i uzyskać dostęp do dowolnego potrzebnego pliku
  • Klient BitTorrent: instalowany na komputerze w celu uzyskania dostępu do trackera. Należy zauważyć, że rój to jedyne miejsce, gdzie pliki są faktycznie przechowywane
  • System zachęt, w którym użytkownicy uczestniczący w sieci jako udostępniający pliki otrzymują szybsze pobieranie

Podobieństwa do Bitcoina:

  • Oba protokoły działają na zasadzie peer-to-peer
  • Zdecentralizowana konstrukcja
  • Pliki BitTorrent i księga Bitcoina są rozproszone w całej sieci
  • Pochodzenie open-source (BitTorrent ostatecznie stał się oprogramowaniem zamkniętym)

3.6 Wielokrotnego użytku dowód pracy

Hal Finney to kolejny znany członek ruchu Cypherpunk, który był bardzo zainteresowany rozwojem elektronicznej gotówki i aktywnie uczestniczył na liście mailingowej.

Postanowił ponownie spróbować opracować system elektronicznej gotówki oparty na proof-of-work. Do tej pory wynik funkcji skrótu był unikalny dla każdej transakcji, ale jego pomysłem było stworzenie „wielokrotnego użytku dowodów pracy”.

Minusem tego podejścia jest scentralizowany serwer, któremu trzeba ufać, że nie dokona podwójnego wydania lub nie zostanie wyłączony. Aby temu zaradzić, Hal zaproponował użycie wolnego i otwartego oprogramowania, które mogłoby być hostowane na bezpiecznym komponencie sprzętowym i niezależnie weryfikowane.

To rozwiązanie nadal napotykało niektóre z tych samych problemów, co inne propozycje:

  • Problem „jajka i kury” z adopcją, gdzie brakuje zachęty dla użytkowników, by chcieli żądać tokenów, a sprzedawcy nie chcą dołączać do systemu, dopóki użytkownicy nie będą chcieli płacić tymi tokenami.
  • Proof-of-work prawdopodobnie będzie też z czasem coraz tańszy, wraz ze wzrostem wydajności komputerów, co sugeruje, że rynek zostałby ostatecznie zalany jednostkami waluty RPOW.
Jeśli prawo Moore’a nadal będzie obowiązywać, koszt stworzenia tokena (POW) będzie spadał w stałym, wykładniczym tempie. Pamiętaj, że to nie są pieniądze i nie mają służyć jako środek przechowywania wartości, lecz raczej jako łatwa do wymiany reprezentacja wysiłku komputerowego.
Hal Finney

Te cechy ograniczyły atrakcyjność, a tym samym adopcję projektu, i pomimo najlepszych starań projekt zakończył się kolejną nieudaną próbą stworzenia elektronicznej gotówki.

3.7 Bitcoin

Po wielu latach i nieudanych próbach Cypherpunks w większości zaczęli tracić zainteresowanie ideą cyfrowej waluty bez zezwoleń, gdy Adam Back otrzymał e-mail z linkiem do szkicu whitepaper zatytułowanego „electronic cash without a third party” od anonimowej osoby podającej się za Satoshi Nakamoto.

Podsumowując na tym etapie, mamy przynajmniej następujące idee:

  • Podpisy kryptograficzne, które mogłyby zapewnić pewien poziom prywatności i anonimowości
  • Koncepcja waluty bez pokrycia (B-Money)
  • Propozycje (ale brak środków) ograniczające emisję nowej waluty
  • Cyfrowe monety, których własność była przypisywana przez klucze publiczne (B-Money) i mogły być przenoszone przez podpisywanie oraz przypisywane na nowo na podstawie adresu odbiorcy (RPOW i Hashcash)
  • Wszystkie węzły utrzymują kopię całkowicie rozproszonej księgi (B-Money) (wówczas odrzucone jako niepraktyczne)
  • Protokół znakowania czasem – wykorzystanie haszowania drzewa Merkle’a do zapewnienia matematycznie udowadnialnej chronologii zdarzeń, którą trudno sfałszować, jeśli wszyscy użytkownicy przechowują te same zapisy
  • Proof of work, aby powiązać rzeczywisty wysiłek z systemem (ale używając samego hasha jako waluty)
  • Całkowicie zdecentralizowane sieci, w których wszyscy uczestnicy są równi i mogą dowolnie dołączać i opuszczać sieć (BitTorrent)
  • Koncepcja powiązania nowych hashy z poprzednimi (Bit Gold i znakowanie czasem)

Czego wówczas brakowało:

  • Realnego rozwiązania problemu „bizantyjskich generałów”
  • Metody ograniczenia ilości pieniędzy w obiegu mimo ciągłych ulepszeń sprzętu
  • Systemu zachęt do udziału (problem jajka i kury)

Drugą istotną różnicą między ostatnimi próbami a Bitcoinem było to, że Satoshi pracował nad kodem przez pewien czas, zgodnie z prawdziwą etyką „Cypherpunks piszą kod”, zanim ogłosił go na listach dyskusyjnych, w przeciwieństwie do Bit Gold i B-Money, które były bardziej koncepcyjne.

Jaka była innowacja, która wyróżniła Bitcoina na tle wcześniejszych prób stworzenia elektronicznej gotówki?

Proof of work miał być używany jako mechanizm konsensusu oraz sposób zapewnienia bezpieczeństwa i niezmienności: Zamiast używać hasha jako formy pieniądza, miał być wykorzystywany przez nowy proces koncepcyjny zwany kopaniem, gdzie węzeł grupował zestaw transakcji, dodawał losową liczbę, a następnie stosował haszowanie do „bloku” danych. Prawidłowy blok spełniający wymagania hasha był następnie ogłaszany w sieci. Bloki te były ze sobą powiązane poprzez hash poprzedniego bloku w każdym z nich, a najdłuższy łańcuch bloków był używany w przypadku remisu, gdy różne węzły weryfikowały i ogłaszały różne bloki jednocześnie, tworząc rozgałęzienia łańcucha. Proof of work stał się rozproszonym rozstrzygaczem remisów, rozwiązując problem bizantyjskich generałów.

Ci górnicy otrzymywali również zachętę do udostępniania mocy obliczeniowej wymaganej do przeprowadzenia proof-of-work poprzez przydzielanie im nowych bitcoinów za każdy blok. Ilość Bitcoinów, którą otrzymują, jest również zaprogramowana tak, aby zmniejszała się mniej więcej co 4 lata, aż wszystkie Bitcoiny zostaną wykopane, co tworzy twardy limit całkowitej liczby Bitcoinów, które kiedykolwiek będą w obiegu – 21 milionów.

Najbardziej oryginalnym pomysłem był sposób, w jaki rozwiązano problem ilości tworzonej waluty w miarę ulepszania sprzętu i zwiększania mocy sieci. Znaczniki czasu ustalonej liczby bloków (2016) były uśredniane, a jeśli były tworzone zbyt szybko, wymagany hash do utworzenia nowego bloku był utrudniany, jeśli zbyt wolno – ułatwiany. Było to wbudowane w zdecentralizowany protokół, który uruchamiają wszystkie węzły, więc każdy górnik ignorujący to traciłby energię na wydobycie bloku bez korzyści, ponieważ zostałby on odrzucony przez resztę sieci. Ta korekta zapewnia, że tworzenie nowych bloków pozostaje zgodne z planowanym harmonogramem emisji i motywuje górników do „grania według zasad”.


Podsumowanie

Wiele elementów układanki potrzebnych do zbudowania zdecentralizowanego, peer-to-peer systemu elektronicznej gotówki opartego na zasadach zdrowego pieniądza było już gotowych, zanim Satoshi opublikował swój whitepaper i wkrótce po początkowym wydaniu kodu.

Natura Bitcoina jest taka, że po wydaniu wersji 0.1 podstawowy projekt został ustalony na resztę jego istnienia
Satoshi Nakamoto

Chociaż zaproponowano i przyjęto wiele pomysłów na ulepszenia (BIP), Bitcoin działa w tle od 2009 roku, podążając za protokołem zaprojektowanym w początkowym wydaniu i praktycznie bez zakłóceń. Wszystkie ulepszenia zostały wprowadzone przy zachowaniu kompatybilności wstecznej ze wszystkimi poprzednimi wersjami.

Notatki
  1. Wyjaśnienie problemu bizantyjskich generałów – zobacz https://pl.wikipedia.org/wiki/Problem_bizantyjskich_genera%C5%82%C3%B3w

↑ Wróć do spisu treści