Aktualny czas:0:00Całkowity czas trwania:11:25
0 punktów energii
Uczysz się do testu? Skorzystaj z tych 8 lekcji na temat Pieniądze, bankowość i banki centralne.
Zobacz 8 lekcji
Transkrypcja filmu video (w języku angielskim)
Ostatnim istotnym zagadnieniem związanym z mechanizmem działania bitmonet jest tak zwany łańcuch bloków. W jednym z poprzednich filmów podawałem przykład użytkowniczki Alice, która chciała przesłać pewną ilość bitmonet użytkownikowi o imieniu Bob. Aby zainicjować taką transakcję Alice musiała stworzyć swego rodzaju zapis, zawierający informacje o transakcji i podpisany jej kluczem prywatnym. Protokół zawierał także klucze publiczne Alice i Boba. Ta informacja o transakcji była wysyłana do całego systemu Bitcoin, do wszystkich węzłów w sieci peer-to-peer tego systemu. Poszczególne węzły w systemie Bitcoin otrzymają informację o tej transakcji. Będą jednocześnie dostawać informacje o wielu innych transakcjach odbywających się mniej więcej w tym samym czasie. W związku z tym węzły będą starały się dołączyć zapis tej transkacji do swoistej księgi wszystkich transakcji, kiedykolwiek przeprowadzonych w systemie Bitcoin. Każdy węzeł analizuje wszystkie dotychczas niezapisane transakcje, o których informacja do niego dotarła. Są to wszystkie transakcje przeprowadzone w konkretnym okresie czasu. Chodzi o transakcje niejako swobodnie krążące w systemie. Te węzły, nazywane też węzłami generującymi bitmonety, otrzymają informację o wspomnianych transakcjach i zaczną pracować nad włączeniem ich do istniejącej bazy danych. Na początku mają za zadanie stworzyć z nich tak zwany blok transakcji. Przywołując analogię do systemu księgowania, pojedyncza transakcja w systemie Bitcoin odpowiada wpisowi w księdze głównej. Analogicznie, blok transakcji odpowiada stronie w takiej księdze, na której zapisana jest pewna liczba transakcji. Węzły generujące mają za zadanie dodanie tej strony do globalnej księgi transakcyjnej, zawierającej całościowy zapis wszystkich transakcji. Węzły pracują nad osiągnięciem tego celu, ale mają też inne zadania. Po pierwsze, analizują wszystkie transakcje znajdujące się w systemie powiedzmy, że są to te cztery transakcje, i łączą je w pary, tworzące strukturę na kształt drzewa. Zastosują kryptograficzną funkcję haszującą do tych dwóch transakcji i otrzymają odpowiedni skrót, tak samo postąpią z tą parą transakcji, następnie połączą oba uzyskane skróty i uzyskają pojedynczą wartość skróconą. Ta wartość zawiera zaszyfrowaną informację o wszystkich dotąd niezapisanych transakcjach, informację o których otrzymały poszczególne węzły. Wartość ta zostanie powiązana z wartością symbolizującą blok transakcji poprzednio zaakceptowany przez sieć. Można pomyśleć, że w sieci znajduje się wiele wcześniej zaakceptowanych bloków transakcji. W rzeczywistości, każdy blok transakcji zawiera w sobie poprzedzający go blok. Ten blok zawiera więc blok stworzony bezpośrednio przed nim. Z kolei ten blok zawiera blok stworzony wcześniej. W ten sposób można cofnąć się dosłownie do początków systemu Bitcoin. Tam znajduje się początek całego systemu. Można to określić jako czas równy zeru. Węzły połączą ten ostatni blok z najnowszym blokiem. Trzeba uświadomić sobie, że mamy do czynienia nie tylko z pojedynczym blokiem ponieważ każdy blok zawiera w sobie blok, który go poprzedza, nie mamy do czynienia z pojedynczym, odrębnym blokiem transakcji, ale z łańcuchem bloków, który rozpoczyna się dosłownie u zarania całego systemu Bitcoin. Podczas przeprowadzania tych kombinacji, będzie trzeba zastosować kryptograficzne funkcje haszujące, w wyniku czego otrzymamy ciąg cyfr. Ten ciąg cyfr otrzymamy łącząc ze sobą wszystkie te bloki. Otrzymany ciąg cyfr należy przekonwertować, zmieniając go w zapytanie w protokole proof of work. Stworzyłem specjalny film na temat protokołów proof of work. Zachęcam do zapoznania się z nim aby lepiej zrozumieć ich zasady działania. W skrócie chodzi o to, że węzeł generujący przyjmie zapytanie i będzie starał się znaleźć inny ciąg cyfr, zwykle nazywany dowodem, od angielskiej nazwy proof of work. Wspomniany dowód musi posiadać konkretną matematyczną cechę. Chodzi o to, że łącząc ciąg cyfr zapytania z ciągiem cyfr dowodu, wiążąc je ze sobą i wstawiając do kryptograficznej funkcji haszującej musimy uzyskać wynik, który rozpoczyna się od dużego bloku złożonego z zer. Ten początkowy blok cyfr nie musi składać się z samych zer, ale muszą one stanowić przeważającą większość. Biorąc pod uwagę jak skonstruowane są funkcje haszujące oraz to, że ich wyniki wyglądają na całkowicie losowe, jest bardzo mało prawdopodobne, że uzyskamy dowód, który rozpoczyna się od większego bloku zer. Węzeł generujący zazwyczaj musi wypróbować dużą liczbę możliwych wariantów ciągu cyfr tworzącego dowód, zanim dopisze mu szczęście i znajdzie taki ciąg, który posiada tą osobliwą cechę. Trudność w znalezieniu takiego ciągu cyfr ściśle zależy od ilości zer, które mają się znaleźć na początku. Im więcej zer jest wymaganych, tym dłużej zajmuje rozwiązanie tego problemu. Wtedy dłużej zajmuje znalezienie dowodu dokładnie pasującego do konkretnego zapytania. Im mniej wymaganych zer, tym mniej czasu to zajmie. Dokładna liczba wymaganych zer zmienia się z upływem czasu. Nie jest to wartość stała. Średni czas potrzebny na tą operację w systemie to około 10 minut. Potrzeba 10 minut aby przynajmniej jeden węzeł znalazł odpowiedni dowód. Należy pamiętać, że wiele węzłów pracuje jednocześnie nad znalezieniem dowodu. Kiedy to się stanie... Załóżmy, że dowód został znaleziony. ...węzeł generujący ogłasza wynik w całej sieci peer-to-peer. Dowód i zapytanie zostają podane do wiadomości pozostałych węzłów. Węzły te nie stwierdzą jednak: "Tu jest gotowy dowód, został już znaleziony! Możemy zakończyć naszą pracę i zacząć pracować na podstawie tego dowodu." Oczywiście ten nowy dowód i zapytanie zawierają wszystkie poprzednie bloki transakcji. Węzły zaczynają w tym momencie tworzenie nowego, aktualnego łańcucha bloków. Będą włączać do niego wszystkie nowe, niezarejestrowane transakcje i tworzyć nowy łańcuch bloków. Chciałbym zwrócić uwagę na kilka kwestii. Po pierwsze, podczas tworzenia łańcucha bloków, w zasadzie włączania transakcji w łańcuch bloków, węzły generujące mają prawo do specjalnej nagrody. Mogą mianowicie dołączyć do bloku transakcji specjalny węzeł przeznaczony dla nich. Będzie on specjalną nagrodą... Oznaczę ją piaskowym kolorem. ...mogą przejąć pierwszy blok, pierwszy zapis transakcji, i mogą w tym zapisie wyznaczyć dla siebie nagrodę. Wielkość tej nagrody jest zmienna w czasie. Taka transakcja zazwyczaj jest nazywana transakcją coinbase lub transakcją generowania. W ten sposób w systemie powstają nowe bitmonety. Zawsze gdy węzeł generujący odnajduje odpowiedni dowód ma prawo przeprowadzić swoją własną transakcję i uzyskać nagrodę za moc zużytą podczas poszukiwania dowodu oraz za wykonanie pracy związanej z dodaniem nowego bloku transakcji do istniejącego łańcucha bloków. Ma to swoje uzasadnienie, ponieważ węzły wykorzystują dużą moc obliczeniową w celu znalezienia dowodów. Wykorzystanie mocy obliczeniowej oznacza, że ktoś po drugiej stronie łącza ponosi koszty energii elektrycznej itp. Chciałbym także zwrócić uwagę na słowo "monety" w nazwie systemu. Węzły, które generują bitmonety, które robią to z powodzeniem, pobierają także opłaty transakcyjne, wyszczególnione w zapisie transakcji. Osoba inicjująca transakcję w systemie Bitcoin może przeznaczyć albo odłożyć pewną ilość pieniędzy, może to być bitmoneta lub jej ułamek, dla węzła, któremu uda się znaleźć odpowiedni dowód i dodać transakcję do głównego łańcucha bloków. Tak więc węzeł, który z wykona to zadanie otrzymuje nagrodę w postaci opłaty transakcyjnej. Nagroda może być stosunkowo duża ponieważ węzeł, który ma otrzymać opłatę za pojedynczą transakcję, otrzyma opłatę za wszystkie transakcje, które wchodzą w skład danego bloku. Otrzyma więc sumę opłat z tych wszystkich transakcji. Moja druga uwaga dotyczy tego, iż może się zdarzyć, że dwa niezależne węzły znajdą ten sam dowód. Wtedy oba mogą próbować dodać transakcję do istniejącego łańcucha, więc może on się rozgałęziać. W takim wypadku, użytkownicy sieci Bitcoin poradzą sobie z tym problemem wybierając dłuższy łańcuch. Dłuższy nie oznacza, że zawiera on najwięcej transakcji. Istotna jest najwyższa trudność związana ze znalezieniem dowodu w protokole proof of work dla każdego bloku transakcji. Innymi słowy, chodzi o całkowitą ilość wysiłku włożonego w stworzenie tego łańcucha, w odniesieniu do protokołu proof of work, zostanie więc wybrany ten łańcuch, do którego przypisana jest największa wykonana praca. Mogą tu wystąpić rozbieżności, ale po kilku cyklach gdzie występują takie odgałęzienia zostaną one w pewien sposób wyeliminowane jeśli większość węzłów działa zgodnie z zasadami i nie zmienia uzyskanych przez siebie wartości. Węzły generujące wytwarzają bitmonety, więc nasuwa się pytanie w jaki sposób jest kontrolowana wielkość ich zasobów i jak zasoby te są zarządzane. Kwestie te będą przedmiotem kolejnego filmu.