Od Redakcji
Mamy przyjemność ogłosić publikację pierwszej części tłumaczenia manifestu Bitcoina autorstwa Satoshiego Nakamoto na Bithub.pl. To doskonała okazja zarówno dla wszystkich początkujących, jak i doświadczonych adeptów bitcoinowej sztuki, aby z uwagą prześledzić raz jeszcze myśl Ojca Bitcoina w języku polskim. Część 2 już za tydzień. Whitepaper Bitcoina po polsku. Chłońcie:)
Whitepaper Bitcoina po polsku
Abstrakt: Wersja elektronicznej gotówki w wersji peer-to-peer umożliwiłaby korzystanie z internetowych płatności wysyłanych bezpośrednio od jednej strony do drugiej z pominięciem instytucji finansowych. Podpisy cyfrowe stanowią część rozwiązania, ale główne korzyści są zatracone, jeśli zaufana trzecia strona jest nadal wymagana, aby zapobiec podwójnemu wydawaniu. Proponujemy rozwiązanie problemu podwójnego wydawania za pomocą sieci peer-to-peer. Sieć datuje transakcje poprzez szyfrowanie ich w ciągły łańcuch oparty o szyfrowany dowód pracy, tworząc jednocześnie zapis, który nie może być zmieniony bez ponownego wykonania dowodu pracy. Najdłuższy łańcuch służy nie tylko jako dowód sekwencji wydarzeń, ale także dowodzi tego, że pochodzi z największej puli mocy procesora. Tak długo jak większość mocy procesora jest kontrolowana przez węzły, które nie współpracują w celu zaatakowania sieci, wygenerują one najdłuższy łańcuch i odeprą atak na niego. Sieć sama w sobie wymaga bardzo prostej struktury. Wiadomości są nadawane na podstawie największej pracy, a węzły mogą dowolnie opuszczać i ponownie dołączać do sieci, przyjmując najdłuższy łańcuch oparty o dowód pracy jako dowód tego, co wydarzyło się, gdy ich nie było
Wprowadzenie
Handel w Internecie opiera się prawie wyłącznie na instytucjach finansowych pełniących funkcję zaufanej trzeciej strony do przetwarzania płatności elektronicznych. Podczas gdy system działa wystarczająco dobrze dla w większości transakcji, to nadal cierpi z powodu nieodłącznych słabości modelu opartego na zaufaniu. Całkowicie nieodwracalne transakcje nie są tak naprawdę możliwe, ponieważ instytucje finansowe nie mogą unikać sporów mediacyjnych. Koszt mediacji zwiększa koszty transakcji, ograniczając minimalny praktyczny rozmiar transakcji i możliwości dokonywania drobnych transakcji dorywczych. Dodatkowo koszty związane z utratą zdolności do dokonywania nieodwracalnych płatności za nieodwracalne usługi wzrastają. Wraz z możliwością unieważnienia transakcji rośnie zapotrzebowanie na zaufanie. Kupcy muszą uważać na swoich klientów, próbując uzyskać więcej informacji, niż byłoby potrzebne. Pewien odsetek oszustw jest akceptowany jako nieunikniony. Te koszty i niepewność przy płatnościach mogą być zniwelowane poprzez używanie fizycznej waluty, ale nie istnieje mechanizm dokonywania płatności poprzez kanały komunikacyjne bez zaufanej trzeciej strony.
Potrzebny jest elektroniczny system płatności oparty na dowodzie kryptograficznym zamiast zaufaniu, pozwalający dwóm chętnym stronom na bezpośrednią transakcję bez potrzeby posiadania zaufanej trzeciej strony. Transakcje, które są obliczeniowo niepraktyczne do odwrócenia, chroniłyby sprzedawców przed oszustwem, a rutynowe mechanizmy depozytowe można łatwo by wdrożyć, aby chronić kupujących. W tym artykule proponujemy rozwiązanie problemu podwójnego wydawania za pomocą dystrybucyjnego serwera peer-to-peer ze znacznikiem czasu do generowania obliczeniowego dowodu chronologicznej kolejności transakcji. System jest bezpieczny tak długo, dopóki uczciwe węzły wspólnie kontrolują więcej mocy procesora niż jakakolwiek inna grupa współpracujących węzłów atakujących.
Transakcje
Monetę elektroniczną definiujemy jako ciąg podpisów cyfrowych. Każdy właściciel przekazuje monetę do następnego użytkownika podpisując cyfrowo hash poprzedniej transakcji oraz klucz publiczny następnego właściciela, dodając je na końcu monety. Odbiorca może zweryfikować podpisy w celu weryfikacji łańcucha przekazywania własności.
Problem polega oczywiście na tym, że odbiorca nie może zweryfikować, czy jeden z właścicieli nie wydał podwójnie monety. Powszechnym rozwiązaniem jest wprowadzenie zaufanego organu centralnego lub mennicy, które sprawdzają wszystkie transakcje pod kontem podwójnego wydawania. Po każdej transakcji moneta musi zostać zwrócona do mennicy aby wyemitować nową monetę i tylko monety wyemitowane bezpośrednio przez mennicę są traktowane jako nie wydane podwójnie. Problem z tym rozwiązaniem polega na tym, że los całego systemu finansowego zależy od firmy prowadzącej mennicę, przy czym każda transakcja musi być przez nią zweryfikowana, tak jak w banku.
Potrzebujemy sposobu, aby odbiorca wiedział, że poprzedni właściciele nie podpisali żadnych wcześniejszych transakcji. Dla naszych celów liczy się najwcześniejsza transakcja, więc nie obchodzą nas późniejsze próby podwójnego wydawania. Jedynym sposobem na potwierdzenie braku transakcji jest wiedza na temat wszystkich transakcji. W modelu opartym na mennicy to ona znała wszystkie transakcje i decydowała, które przybyły jako pierwsze. Aby to osiągnąć bez zaufanej trzeciej strony, transakcje muszą być ogłoszone publicznie, a my potrzebujemy systemu umożliwiającego uczestnikom uzgodnienie jednej historii kolejność, w jakiej je otrzymano. Odbiorca potrzebuje dowodu, że w momencie każdej transakcji, większość węzłów zgodziła się, że była to pierwsza otrzymana transakcja.
Serwery znaczników czasu
Proponowane przez nas rozwiązanie zaczyna się od serwera znaczników czasu. Serwer znaczników czasu działa, biorąc hash bloku z elementami, który ma być oznaczony czasowo i publikując go, tak jak robią to gazety lub poczta Usenet. Sygnatura czasowa potwierdza, że dane musiały istnieć w czasie, aby naturalnie dostać się do hashu. Każdy znacznik czasu zawiera poprzedni znacznik czasu w swoim hashu, tworząc łańcuch, z każdym dodatkowym znacznikiem czasu wzmacniającym te przed nim.
Dowód pracy
Aby wdrożyć rozproszony serwer znaczników czasu na zasadzie peer-to-peer, będziemy musieli użyć systemu opartego o dowód pracy podobnego do Hashcasha Adama Backa, zamiast gazet lub poczty Usenet. Dowód pracy polega na skanowaniu wartości w momencie zaszyfrowania, na przykład SHA-256, kiedy hash rozpoczyna się od liczby zeru bitów. Średnia wymagana praca jest wykładnicza w liczbie wymaganych zerowych bitów i może być zweryfikowana poprzez wykonanie pojedynczego hashu.
W naszej sieci znaczników czasu wdrażamy dowód pracy, zwiększając wartość liczb jednokrotnego użytku w bloku, dopóki nie zostanie znaleziona wartość dająca hashowi bloku wymagane zero bitów. Gdy praca wykonana przez CPU była na tyle duża aby spełnić dowód pracy, blok nie może zostać zmieniony bez ponownego wykonania owej pracy. Następnie bloki są ustawiane w łańcuchu, co sprawia, że zmiana bloku wymaga także zmianę we wszystkich blokach po nim następujących.
Dowód pracy rozwiązuje również problem określania reprezentacji w większościowym procesie decyzyjności. Gdyby większość opierała się na zasadzie jeden adres IP, jeden głos, każdy mógłby ją osiągnąć poprzez przydzielenie wiele adresów IP. Dowód pracy to w zasadzie system jeden procesor-jeden głos. Większość decyzyjna jest reprezentowana przez najdłuższy łańcuch, który ma najwięcej zainwestowanej mocy pochodzącej z dowodu pracy. Jeśli większość mocy procesora jest kontrolowana przez uczciwe węzły, uczciwy łańcuch rośnie najszybciej i wyprzedzi konkurencyjne łańcuchy. Aby zmodyfikować wcześniejszy blok, atakujący musiałby to zrobić poprzez ponowne wykonanie dowodu pracy danego bloku, a także wszystkich bloków po nim. Następnie dogonić i przewyższyć pracę uczciwych węzłów. Później pokażemy prawdopodobieństwo nadrobienia zaległości przez wolniejszego napastnika, które zmniejszają się wykładniczo wraz z dodawaniem kolejnych bloków. Aby zrekompensować wzrost mocy obliczeniowej sprzętu i zmienne zainteresowanie w utrzymaniu węzłów w czasie, trudność w dowodzie pracy jest określana przez średnią kroczącą ukierunkowaną na średnią liczbę bloków na godzinę. Jeśli bloki są generowane zbyt szybko, trudność wzrasta.
Sieć
Kroki do uruchomienia sieci są następujące:
1) Nowe transakcje są rozgłaszane do wszystkich węzłów.
2) Każdy węzeł gromadzi nowe transakcje w bloku.
3) Każdy węzeł pracuje nad znalezieniem trudności dowodu pracy dla swojego bloku.
4) Kiedy węzeł znajdzie dowód pracy, rozgłasza on blok do wszystkich węzłów.
5) Węzły akceptują blok tylko wtedy, gdy wszystkie transakcje w nim są ważne i nie zostały jeszcze wykonane.
6) Węzły wyrażają swoją akceptację bloku, pracując nad tworzeniem następnego bloku w łańcuchu, używając hashu zaakceptowanego bloku jako poprzedni hash.
Węzły zawsze uznają najdłuższy łańcuch za prawidłowy i będą kontynuować nad nim pracę poprzez wydłużanie go. Jeśli dwa węzły jednocześnie ogłoszą różne wersje następnego bloku, niektóre węzły mogą otrzymać jeden lub drugi jako pierwszy. W takim przypadku pracują nad pierwszym, które otrzymały, ale zapisują także drugi blok na wypadek, gdyby ten łańcuch stał się dłuższy. Równowaga zostanie zerwana, gdy kolejny dowód pracy zostanie dostarczony i jeden łańcuch się wydłuży; węzły, które pracowały nad drugim, krótszym łańcuchem przełączą się na pierwszy, dłuższy łańcuch.
Ogłoszenie nowej transakcji niekoniecznie musi dotrzeć do wszystkich węzłów. Tak długo, jak ogłoszenie dotrze do większości węzłów, transakcja będzie umieszczona w bloku. Proces ogłaszania nowych bloków jest również tolerancyjny dla pominiętych wiadomości. Jeśli węzeł nie otrzyma bloku, zażąda go, gdy otrzyma następny blok i zda sobie sprawę, że przegapiłem poprzedni.
Motywacja
Zgodnie z konwencją pierwsza transakcja w bloku jest transakcją specjalną, która tworzy nową monetę posiadaną przez twórcę bloku. To zachęca węzły do obsługi sieci i zapewnia sposób na dystrybucję monet w obiegu, ponieważ nie ma centralnego organu do ich emisji. Sztywna podaż stałej ilości nowych monet jest analogiczna do pracy górników złota wykorzystujących zasoby, aby dodać złoto do obiegu. W naszym przypadku mowa o czasie procesora i energii elektrycznej jako zużytych zasobach. Węzły są również zachęcane poprzez opłaty transakcyjne. Jeśli wartość wyjściowa transakcji jest mniejsza niż wartość wejściowa, różnica stanowi opłatę transakcyjną, która jest dodawana do wartości zachęcającej danego bloku, który zawiera transakcję. Po wprowadzeniu z góry określonej liczby monet do obiegu, zachęta może całkowicie przejść na opłaty transakcyjne i być całkowicie wolna od inflacji.
Zachęta może pomóc przekonać węzły do zachowania uczciwości. Jeśli chciwy atakujący jest w stanie zgromadzić więcej mocy procesora niż wszystkie uczciwe węzły, musiałby wybierać pomiędzy jego użyciem w celu oszukania ludzi, kradnąc z powrotem swoje transakcje lub wykorzystaniem go do generowania nowych monet. Atakujący powinien dojść do wniosku aby zrobić to według zasad, takich, które faworyzują go z większą ilością nowych monet niż wszystkich innych razem wziętych, niż podważać system i ważność własnego bogactwa.
Druga część polskiej wersji whitepapera Bitcoina już w przyszły wtorek. Oryginalną wersję dokumentu znajdziecie tutaj.
Maciej Kmita