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 z bardzo ważnych elementów, które trzeba poznać, by zrozumieć działanie Bitcoina, jest tzw. łańcuch bloków (blockchain). Poprzednio rozpatrzyliśmy przykład użytkowniczki Alicji, która chciała przesłać trochę bitcoinów innemu użytkownikowi, Bobowi. Żeby rozpocząć transakcję, Alicja musiała skonstruować zapis zawierający informacje o transakcji i podpisać go przy użyciu klucza podpisu. Zapis zawierał też publiczny klucz weryfikacyjny Alicji oraz publiczny klucz weryfikacyjny Boba. Te dane transakcji zostały rozesłane, jak wspomnieliśmy, po całym systemie Bitcoin, do wszystkich węzłów sieci peer-to-peer. W Bitcoinie znajdują się rozmaite węzły. Otrzymają informacje o tej transakcji. A także informacje o wielu innych transakcjach odbywających się w tym czasie. Węzły zaczną pracować nad włączeniem zapisu tej transakcji do księgi wszystkich transakcji, do których kiedykolwiek doszło w systemie. Każdy węzeł najpierw bierze dane wszystkich nowych transakcji, które do niego dotarły. Czyli wszystkich, do których doszło w określonym przedziale czasowym. Chodzi o te wszystkie bitcoinowe transakcje wokoło. Te węzły, nazywane kopalniami, otrzymają informacje o transakcjach i zaczną je odnotowywać. Pierwszy cel - to połączyć te transakcje w tzw. blok. W analogii do księgi rachunkowej... jedna transakcja bitcoinowa odpowiada jednemu wpisowi. Natomiast blok odpowiada całej stronie, z licznymi transakcjami, które tam wyszczególniono. Celem kopalni jest dodanie tej strony do globalnej księgi rachunkowej. Żeby wykonać to zadanie, węzły biorą wszystkie rozesłane transakcje. Powiedzmy, że to te cztery. Węzły zhaszują te transakcje parami. Powstanie drzewo. Zastosują do tych transakcji kryptograficzną funkcję skrótu. Uzyskają więc skrót. Podobnie zrobią z tymi transakcjami, zhaszują te skróty i uzyskają jeden, ostatni skrót. Koduje on wszystkie transakcje jeszcze niezarejestrowane, które dotarły do poszczególnych węzłów. Zostanie połączony ze skrótem bloku transakcji zaakceptowanych przez sieć. Wyobraźcie sobie... Sieć będzie zawierać serię bloków, które już zaakceptowano. Każdy blok, jak wspomniałem, zawiera blok poprzedni. Ten będzie zawierał blok wykorzystany tuż przed tym, a ten - jeszcze wcześniejszy, i tak dalej, dosłownie do początków Bitcoina. Tutaj zaczął się czas dla systemu Bitcoin. Tu mamy czas zerowy dla Bitcoina. Węzły wezmą ten ostatni blok i... połączą go z najnowszym. Zatem mamy tu nie tylko pojedynczy blok, bo każdy blok zawiera w sobie ten poprzedni. Nie mamy do czynienia z oddzielnymi blokami, ale z łańcuchem bloków, który zaczyna się u samych początków Bitcoina. Te połączenia zakończycie kryptograficznym haszowaniem. Uzyskacie ciąg liczb. Ten ciąg powstanie z łączenia bloków. Będzie zatem ciąg. Weźmiemy ten ciąg liczb i przekształcimy go w ciąg zapytań w protokole "proof of work". Zrobiłem oddzielny film o tym protokole. Obejrzyjcie go, żeby poznać mechanizmy działania. W skrócie: kopalnia musi teraz wziąć bitcoin... bierze ciąg zapytań i stara się uzyskać inny ciąg liczb, który nazywamy dowodem pracy. Musi on mieć pewną właściwość matematyczną. Chodzi o to że jeśli weźmiecie liczby z ciągu zapytań i liczby z dowodu, połączycie je i wprowadzicie do kryptograficznej funkcji skrótu, to wynik ma mieć długi prefiks z samych zer. Cały nie musi składać się z zer, ale duża część, na początku - tak. Pomyślcie: ponieważ wyniki kryptograficznych funkcji skrótu wyglądają na losowe, to jest nieprawdopodobne, że od razu dostrzeżecie dowód. Proponowany dowód z długim ciągiem zer na początku. Górnik musi więc, przeciętnie, wypróbować wiele możliwości szukając dowodu, aż natknie się na ciąg mający tę dziwną statystyczną właściwość. Jak się domyślacie, trudność ze znalezieniem tych liczb zależy od tego, ile dokładnie zer ma mieć ciąg. Im więcej zer wymaganych jest w dowodzie, tym więcej trzeba czasu na znalezienie dowodu pasującego do danego ciągu zapytań. Im mniej trzeba zer, tym mniej czasu to zajmie. Konkretna liczba... bitów równych 0 wymaganych w protokole zmienia się. Jest ustalana tak, by, przeciętnie, czas poświęcony szukaniu w systemie wynosił około 10 minut. Zatem trzeba 10 minut, by co najmniej jeden węzeł podał prawidłowy dowód. Pamiętajmy, że wiele węzłów pracuje jednocześnie. Gdy dowód pracy zostanie znaleziony... powiedzmy, że tak się stało... kopalnia ogłasza wyniki w całej sieci peer-to-peer. Weźmie dowód oraz cały ciąg zapytań i roześle je do wszystkich węzłów. Węzły powiedzą: "Hej, ktoś znalazł dowód. Rzućmy inną robotę i zacznijmy budować coś na tym nowym dowodzie". Pamiętajcie, nowy dowód zawiera wszystkie poprzednie bloki. Węzły zaczynają pracę nad nowym, uaktualnionym łańcuchem bloków. Przyjmą do tego łańcucha nowe niezarejestrowane transakcje. Parę spostrzeżeń. Po pierwsze, konstruując te bloki i włączając je do łańcucha, kopalnie otrzymują małą nagrodę. Wolno im włączyć do bloku specjalną transakcję tylko dla siebie. Będzie to nagroda... nagrodę zaznaczę na zielonkawo. Mogą wziąć pierwszy blok, pierwszą transakcję, jej zapis, i do tego zapisu dodać nagrodę dla siebie. Wielkość nagrody zmienia się. Chciałbym dodać, że transakcję nazywa się transakcją monetarną albo transakcją generowania. Tak nowe monety zostają wprowadzone do systemu. Gdy kopalnia zdoła przedstawić dowód, może dopisać własną transakcję, aby wręczyć sobie nagrodę za wysiłek konieczny do podania dowodu i za wykonanie pracy z dodawaniem nowego bloku do istniejącego łańcucha. To rozsądne. W końcu węzły używają dużo mocy obliczeniowej, by znaleźć te dowody. A zużywanie mocy obliczeniowej oznacza, że ktoś gdzieś wydaje pieniądze na prąd itd. Chcę również zauważyć, że prócz monetarnej nagrody węzły-kopalnie, te, które znajdą dowód, mogą też wziąć opłatę transakcyjną określoną w zapisie transakcji. Jeśli pamiętacie, osoba zawierająca transakcję może odłożyć pewną ilość pieniędzy, np. bitcoin lub jego ułamek, dla węzła, który poda prawidłowy dowód pracy. Ten węzeł może dodać transakcję do łańcucha bloków. Węzeł, który wykona tę pracę, otrzymuje nagrodę: kolejną opłatę transakcyjną. Nagroda może być spora, bo węzeł dostanie nie tylko opłatę transakcyjną przed jedną transakcją, ale też za wszystkie transakcje, które pojawiły się w bieżącym bloku. Opłata będzie dotyczyć transakcji połączonych. Druga uwaga: jest możliwe, że dwa węzły niezależnie poradzą sobie z dowodem pracy. I oba spróbują go dodać do istniejącego łańcucha bloków. Może dojść do dziwnego rozwidlenia. W takiej sytuacji węzły sieci Bitcoin wychodzą z impasu, wybierając dłuższy łańcuch. Nie taki, który zawiera najwięcej transakcji, tylko taki, gdzie włożono najwięcej wysiłku w wykonanie protokołu "proof of work" w każdym z bloków. Rozważymy więc całkowity wysiłek włożony w wygenerowanie łańcucha odnoszącego się do dowodu pracy. Łańcuch skojarzony z największą ilością pracy akceptują wszyscy. Możecie zauważyć rozbieżności z powodu opóźnień w sieci, ale idea jest taka, że po kilku rundach te "remisy" rozwiązują się same, o ile większość węzłów zachowuje się uczciwie i wdraża protokół. Ponieważ kopalnie generują bitcoiny, pojawia się pytanie o kontrolę podaży pieniądza w Bitcoinie, i o zarządzanie środkami. Omówię to w następnym filmiku.