Bitcoin: Elektroniczny system przeniersienia wartości oparty o sieć peer-to-peer.
Satoshi Nakamoto
2008
www.bitcoin.org
Wersja pieniądza elektronicznego oparta na modelu komunikacji sieciowej typu peer-to-peer pozwoliłaby na przesyłanie płatności online bezpośrednio od jednego podmiotu do drugiego bez pośrednictwa instytucji finasowych. Podpisy cyfrowe dają jedynie częściowe rozwiązanie problemu, jednak podstawową wadą tego rozwiązania, jest wymagana obecność zaufanego, nadrzędnego podmiotu, aby zapobiec podwójnemu wydaniu tych samych środków (tzw. double-spending).
Proponujemy rozwiązanie tego problemu w postaci wykorzystania sieci peer-to-peer. Sieć oznacza transakcje przy pomocy znaczników czasu, hashując je do postaci ciągłego łańcucha dowodów wykonanej pracy (tzw. proof-of-work), tworząc rejestr, który nie może zostać zmieniony bez dokonania modyfikacji dowodów wykonanej pracy. Najdłuższy łańcuch nie służy tylko jako dowód wykonania sekwencji zdarzeń, lecz także jako potwierdzenie, że pochodzi ona z największej puli mocy obliczeniowej. Tak długo jak większość mocy obliczeniowej (min. 51%) znajduje się pod kontrolą węzłów, nie współpracujących ze sobą w celu zaatakowania sieci, tworzą one najdłuższy łańcuch i wyprzedzą tym samym potencjalny atak.
Sama sieć wymaga minimalistycznej struktury. Informacje rozpropagowywane są na zasadzie najwyższej staranności, a same węzły mogą opuścić i ponownie dołączyć do sieci w każdym momencie, przejmując najdłuższy łańcuch dowodów wykonanej pracy jako potwierdzenie tego co sie wydarzyło w sieci podczas ich nieobecności.
1. Wstęp do manifestu
Handel internetowy zmuszony jest polegać na instytucjach finansowych, które służą jako podmioty zaufane przetwarzające elektroniczne płatności . Mimo, że system działa wystarczająco sprawnie dla większości transakcji, wciąż jest obarczony wadami modelu bazującego na zaufaniu. Całkowicie nieodwracalne transakcje nie są możliwe w tym modelu, nie można uniknąć kwestii spornych i uczestnictwa instytucji finansowych w związanych z nimi mediacjach. Koszty mediacyjne podnoszą koszty transakcji. Pojawia się także znacznie większy koszt niemożności dokonywania nieodwracalnych transakcji w przypadku usług, także o charakterze nieodwracalnym.
Wraz z możliwością dokonywania transakcji zwrotnych, potrzeba zaufania wzrasta. Handlowcy muszą być ostrożni w relacjach ze swoimi klientami, wymagając od nich zazwyczaj znacznie więcej informacji niż jest to konieczne. Określony odsetek oszustw jest akceptowany jako nieunikniony. Wymienionych kosztów oraz niepewności związanych z płatnością można uniknąć, dokonując transakcji bezpośredniej z wykorzystaniem fizycznego pieniądza, jednak nie istnieją mechanizmy dokonywania płatności poprzez kanały komunikacyjne bez obecności zaufanej strony trzeciej.
Wszystko co jest nam potrzebne, to elektroniczny system płatności oparty na dowodach kryptografii, a nie na zaufaniu, umożliwiając dowolnym dwóm podmiotom, realizację transakcji bezpośrednio pomiędzy sobą bez potrzeby uczestnictwa zbędnego zaufanego podmiotu. Transakcje, których wycofanie jest obliczeniowo niepraktyczne będą bronić sprzedawców przed oszustwami, zaś wprowadzenie rutynowych mechanizmów depozytowych z łatwością chroniłoby kupujących.
W niniejszym opracowaniu przedstawiamy rozwiązanie problemu podwójnego wydatkowania, przez implementację modelu rozproszonych czasowych serwerów znakujących, w celu wygenerowania kalkulacyjnego dowodu chronologicznego porządku zrealizowanych transakcji. System takowy jest bezpieczny tak długo, jak rzetelne węzły wspólnie kontrolują większą moc obliczeniową niż jakakolwiek współpracująca ze sobą grupa węzłów atakujących.
2. Transakcje
Definiujemy walutę elektroniczną jako łańcuch bloków (blockchain) podpisów cyfrowych. Właściciel może przenieść własność monety poprzez cyfrowe podpisanie hasha transakcji oraz klucza publicznego przyszłego właściciela, dodając te wartość na koniec zapisu monety. Odbiorca płatności ma możliwość weryfikacji tych podpisów, pragnąc sprawdzić łańcuch posiadania.
Problemem jest oczywiście to, że odbiorca płatności nie ma możliwości sprawdzenia czy jeden z posiadaczy nie spieniężył monety kolejny raz. Powszechnym rozwiązaniem jest wprowadzenie centralnego zaufanego autorytetu lub mennicy, która weryfikuje transakcję, aby zapobiedz dwukrotnemu wydatkowaniu. Po dokonaniu transakcji moneta musi być zwrócona do mennicy, aby ta wyemitowała ponownie monety i jedynie monety pozyskane bezpośrednio od mennicy są postrzegane jako zaufane i z pewnością nie wydane więcej niż raz. Problemz tego rodzaju rozwiązaniem polega na tym, że w takim przypadku system monetarny oparty jest na instytucji, która prowadzi mennicę, przez która każda transakcja zmuszona jest przejść, zupełnie tak jak przez bank.
Potrzebujemy rozwiązania dla odbiorcy płatności, aby mógł mieć pewność, że poprzedni właściciele monet nie podpisali jakichkolwiek wcześniejszych transakcji. Dla naszych potrzeb, zakładamy, że liczy się najwcześniejsza transakcja, więc nie dbamy już o późniejsze próby podwójnego wydawania. Jedynym sposobem potwierdzenia nieobecności transakcji jest wgląd w historię wszystkich transakcji. W modelu opartym na istnieniu mennicy, była ona zaznajomiona ze wszystkimi transakcjami i decydowała, która z nich dociera jako pierwsza. Jeśli chcemy dokonać tego bez zaufanej trzeciej strony, transakcje muszą być rozgłaszane publicznie. Potrzebujemy takiego systemu dla uczestników transakcji, w którym uzgodnimy pojedynczą historię uwzględniającą kolejność w jakiej otrzymywano transakcje. Odbiorca płatności potrzebuje dowodu, że w momencie realizacji każdej z transakcji, większość węzłów zgadzało się, że była ona pierwszą jaką wykonały.
3. Czasowy serwer hashujący
Zaproponowane rozwiązanie zakłada istnienie czasowego serwera hashującego. Serwer znakujący pobiera hash pozycji listy, które mają zostać oznakowane znacznikami czasowymi i powszechnie rozgłasza hash. Znacznik czasowy udowadnia, że dane istniały w określonym czasie, aby móc dostać się do hasha. Kolejny znacznik czasowy umieszcza poprzedni znacznik w swoim hashu, tworząc w ten sposób łańcuch, w którym każdykolejny znacznik wzmacnia, te występujące wcześniej.
4. Dowód wykonania pracy
Chcąc wdrożyć model rozproszonego czasowego serwera znakującego na zasadach sieci peer-to-peer, będziemy musieli wykorzystać system dowodu dokonanej pracy (ang. Proof of Work), który zakłada poszukiwanie zahashowanej wartości rozpoczynającej się od określonej liczby zerowych bitów, tak jak ma to miejsce w przypadku szyfrowania SHA-256. Przeciętny wymagany nakład pracy rośnie wykładniczo wraz z liczbą bitów zerowych i może zostać zweryfikowany poprzez wykonanie pojedynczego hasha.
W sieci opartej o model czasowego serwera znakującego, użyliśmy systemu dowodu wykonanej pracy (PoW), w którym zwiększamy wartość jednorazowej liczby znakującej szyfrowany komunikat (tzw. nonce), do momentu odnalezienia wartości, która daje przynależnemu do bloku hashowi wymagane bity zerowe. Kiedy wysiłek mocy obliczeniowej procesorów zostanie już rozszerzony na tyle, aby spełnić wymagania dowodu wykonanej pracy, blok nie może zostać zmieniony bez ponownego wykonania tej samej pracy. Po określonym bloku do łańcucha dołączają następne, próba zmiany określonego bloku wiązałyby się ze zmianą wszystkich bloków kolejnych po nim.
Model PoW rozwiązuje także problem wyłaniania większości w większościowym modelu podejmowania decyzji. Jeśli większość byłaby oparta na zasadzie – jeden adres IP = jeden głos – mogłaby zostać bez problemu podważona przez kogokolwiek zdolnego do przydzielenia sobie wielu adresów IP. Jest to w isatocie prosta zasada: jeden procesor = jeden głos. Decyzja większościowa reprezentowana jest przez najdłuższy łańcuch, który zainwestował największy wysiłek pracy. Jeśli większość mocy obliczeniowej znajduje się pod kontrolą „uczciwych” węzłów, „uczciwy” węzeł będzie rósł najszybciej, pozostawiając daleko w tyle potencjalne węzły konkurujące. Chcąc zmodyfikować któryś z poprzednich bloków, atakujący musiałby przerobić dowód wykonanej pracy danego bloku oraz wszystkich bloków następujących po nim, później dogonić oraz wyprzedzić pracę „uczciwych” węzłów. W dalszych częściach referatu wykażemy, że prawdopodobieństwo dogonienia pracy „uczciwych” węzłów przez potencjalnego, wolniejszego atakującego spada wykładniczo wraz z dodaniem kolejnych bloków.
Chcąc zrekompensować ciągły wzrost dostępnej mocy obliczeniowej sprzętu komputerowego oraz zmienne zainteresowanie eksploatacją węzłów z perspektywy czasu, poziom trudności dowodu wykonanej pracy jest determinowany przez ruchomą średnią określającą ilość bloków złamanych w ciągu godziny. Jeśli te obliczane są zbyt szybko to poziom trudności wzrasta.
5. Sieć blockchain krok po kroku.
- Nowe transakcje są rozgłaszane do wszystkich węzłów.
- Każdy węzeł zbiera wszystkie transakcje do pojedynczego bloku.
- Każdy z węzłów pracuje nad odnalezieniem skomplikowanego dowodu pracy dla swojego bloku.
- Kiedy węzeł odnajduje dowód, rozgłasza blok do wszystkich węzłów.
- Węzły akceptują block tylko wtedy, jeżeli wszystkie zawarte w nim transakcje są autentyczne i nie zostały już wcześniej zrealizowane.
- Węzły wyrażają swoją akceptację w stosunku do danego bloku, rozpoczynając pracę nad następnym blokiem, używając hasha zaakceptowanego bloku, jako hasha poprzedniego.
Węzły uważają najdłuższy łańcuch za właściwy, kontynuując pracę nad jego przedłużeniem. Gdy węzły rozpowszechnią dwie wersje następnego bloku jednocześnie, poszczególne węzły otrzymają obie wersje w różnej kolejności w określonych odstępach czasu. W takim przypadku, pracować będą zawsze nad pierwszym jaki otrzymały, zachowując jednak kolejną gałąź na wypadek jeżeli to właśnie ta miałaby stać się dłuższa. Węzeł zostaje zerwany w momencie odnalezienia następnego dowodu wykonanej pracy, który wydłuża jedną z gałęzi. Węzły, które pracowały nad niewłaściwą gałęzią przełączą się do gałęzi dłuższej.
Wiadomość o wystąpieniu nowych transakcji, nie muszą koniecznie dotrzeć do wszystkich węzłów. Wystarczy, że dotrą do odpowiednio dużej ich ilości. W takim wypadku w krótkim czasie także dostaną się do bloku. Transmisja bloków jest także odporna na ewentualność niedostarczenia informacji. Jeśli węzeł nie otrzyma bloku, poprosi o niego w momencie kiedy otrzyma następny blok, zdając sobie sprawę, że jeden został przez niego przegapiony.
6. Zachęta
Zgodnie z założeniem, pierwsza transakcja w bloku jest transakcją specjalnego rodzaju, rozpoczynającą nową monetę, należącą do twórcy złamanego bloku. Daje to zachętę, motywację dla pozostałych węzłów, aby wspierać sieć, dając także możliwość początkowej dystrybucji monet do obiegu, jako że model ten nie uznaje centralnego autorytetu, który miałby je emitować. Równomierny przyrost ilości nowych monet jest analogiczny do dawnych poszukiwaczy, wydobywców złota eksploatujących coraz to głębsze zasoby, dodając w ten sposób nowe ilości złota do obiegu. W naszym przypadku, głębokość eksploatacyjna polega na zwiększaniu zużycia czasu obliczeniowego procesora oraz energii.
Zachęta może być odnajdywana także w opłatach transakcyjnych. Jeżeli wartość wyjściowa transakcji jest mniejsza niż jej wartość wejściowa, różnica stanowi opłatę transakcyjną, uiszczaną jako dodatkowa nagroda, składając się na łączną sumę nagród za złamanie bloku zawierającego tą transakcję. Wraz z osiągnięciem odgórnie ustalonej liczby monet w obiegu, zachęta może zostać skierowana całkowicie na opłaty transakcyjne, będąc całkowicie odporną na inflację.
Motywacja tego typu może pomóc zachęcić węzły do poprawnego – prawego funkcjonowania. Jeśli zachłanny atakujący będzie w stanie zgromadzić większy zbiór mocy obliczeniowej w porównaniu do wszystkich „uczciwych” węzłów, będzie musiał wybierać pomiędzy wykorzystaniem tego do okradania ludzi poprzez ponowne wykradanie swoich płatności albo wykorzystaniem tego do generowania nowych monet. W efekcie powinien dojść do wniosku, iż bardziej opłacalnym jest postępowanie według zasad. Zasad, które nagradzają go większą ilością monet niż ktokolwiek i cokolwiek innego, razem wzięte. Powinien także zdać sobie sprawę z nieopłacalności podważania całego systemu, a więc w rezultacie jego wiarygodności – a co za tym idzie, także wartości swojego własnego majątku.