Spisu treści:

Jak właściwie działa blockchain
Jak właściwie działa blockchain

Wideo: Jak właściwie działa blockchain

Wideo: Jak właściwie działa blockchain
Wideo: "Tragedia Ukrainy. Od malezyjskiego Boeinga do wojny" - relacja ze spotkania z Keesem van der Pijlem 2024, Może
Anonim

Ten post ma na celu opowiedzenie wszystkim, dlaczego wymyślono blockchain, jak działają kryptowaluty i dlaczego jest to najpiękniejszy system ostatnich lat z punktu widzenia logiki.

Od razu uprzedzę, że pod wycięciem jest OGROMNA kartka tekstu i jeśli nie jesteście gotowi, aby raz na zawsze „zamknąć” pytanie na temat kryptowalut, dodaj wpis do ulubionych już teraz i zarezerwuj czas)

Blockchain to technologia, nowa, dziwna, niezrozumiała, ale wydaje się, że zmienia świat, w przeciwieństwie do tych twoich historii. Podobno jest z nami od dawna.

Ten post jest napisany tak, jakby był opowiadany ludziom, którzy są bardzo daleko od komputerów i znają je tylko powierzchownie, na przykład wyobraź sobie, że przygotowywał się dla twoich rodziców. Mogę nawet zrzucić to na moich kolegów humanistów i mieć pewność, że zrozumieją.

A Oleg pomoże nam wszystkim w tej trudnej sprawie. Poznać!

Jeśli nie lubisz Olega, wyrzucę go.

Podstawy: po co nam blockchain?

Blockchain został opisany w artykule Satoshi Nakamoto „Bitcoin: A Peer-to-Peer Electronic Cash System”. Tam na zaledwie ośmiu stronach autor opisał podstawy kryptowaluty Bitcoin, która została oparta na algorytmie Blockchain.

Lista, której nie można zmienić

Blockchain - łańcuch bloków lub innymi słowy połączona lista. Na takiej liście każdy następny rekord odnosi się do poprzedniego i tak dalej aż do pierwszego. Jak wagony pociągu, każdy ciągnie za sobą następny. Jeśli chodzi o listy, jest dobry artykuł Nikity Lichaczowa na temat TJ, w którym to samo jest wyjaśnione dla zupełnie początkujących. Częściowo zaczerpnięto stąd analogie.

Weźmy przykład

Przyjaciele Olega ciągle pożyczają od niego pieniądze. Oleg jest miły, ale niezwykle zapominalski. Tydzień później nie pamięta już, kto nie zwrócił mu długu, ale wstydzi się wszystkich o to zapytać. Dlatego pewnego dnia postanowił położyć temu kres, tworząc na tablicy w domu listę znajomych, którym pożyczył pieniądze.

Teraz Oleg zawsze może podejść do tablicy i upewnić się, że Max zwrócił wszystko, ale Wania nie daje już 700 rubli. Pewnego dnia Oleg zaprasza Wanię na drinka do swojego domu. Podczas gdy Oleg idzie do toalety, Wania wymazuje wpis „Pożyczyłem 200 rubli na Wanię” i pisze w jego miejsce „Wania dała 500 rubli”.

Oleg, który zaufał swojej liście, zapomina o długu i traci 700 rubli. Postanawia jakoś z tym walczyć. W zeszłym roku Oleg uczęszczał na kurs programowania, na którym powiedziano mu o haszowaniu. Pamięta, że każdy ciąg można zamienić w jednoznaczny zestaw znaków - hasz, a zmiana dowolnego znaku w ciągu całkowicie go zmieni.

Dodanie kropki na końcu zmieniło ostateczny hash nie do poznania - możesz go użyć.

Oleg bierze dobrze znany skrót SHA-256 i haszuje z nim każdy rekord, dodając wynik na końcu. Teraz Oleg może upewnić się, że nikt nie zmienił swoich rekordów, ponownie je haszując i porównując z zielonym.

Ale EVIL IVAN również wie, jak używać SHA-256 i może łatwo zmienić wpis wraz z hashem. Zwłaszcza jeśli hasz jest napisany tuż obok niego na tablicy.

Dlatego dla większego bezpieczeństwa Oleg decyduje się na hashowanie nie tylko samego rekordu, ale dodaje go razem z hashem z poprzedniego rekordu. Teraz wszystkie kolejne wpisy zależą od poprzednich. Jeśli zmienisz przynajmniej jedną linię, będziesz musiał ponownie obliczyć skróty wszystkich pozostałych na liście.

Ale pewnego dnia Ivan zakrada się w nocy, zmienia wpis, którego potrzebuje, i aktualizuje skróty całej listy do końca. Zajmuje mu to kilka godzin, ale Oleg nadal mocno śpi i nie słyszy. Rano Oleg odkrywa absolutnie poprawną listę – wszystkie hashy pasują do siebie. Ale Iwan i tak go oszukał, mimo że spędził nad tym bezsenną noc. Jak jeszcze możesz uchronić się przed Nocnym Iwanem?

Oleg postanawia jakoś skomplikować sobie życie. Teraz, aby dodać nowy wpis do listy, Oleg rozwiąże złożony problem z nim związany, na przykład równanie matematyczne. Doda odpowiedź do końcowego hasza.

Oleg jest dobry z matematyki, ale nawet dodanie wpisu zajmuje dziesięć minut. Mimo to spędzony czas jest tego wart, bo jeśli Iwan chce znowu coś zmienić, będzie musiał ponownie rozwiązać równania dla każdego wiersza, a może ich być dziesiątki. Zajmie to dużo czasu, ponieważ równania są za każdym razem niepowtarzalne i powiązane z konkretnym rekordem.

Ale sprawdzenie listy jest równie proste: najpierw musisz porównać skróty jak poprzednio, a następnie sprawdzić rozwiązania równań przez proste podstawienie. Jeśli wszystko jest zbieżne, lista nie ulega zmianie.

W rzeczywistości z równaniami nie jest tak dobrze: komputery rozwiązują je zbyt dobrze i gdzie przechowywać tak wiele unikalnych równań. Dlatego autorzy blockchaina wymyślili piękniejszy problem: trzeba znaleźć taką liczbę (nonce), aby końcowy hash całego rekordu zaczynał się od 10 zer. Taki nonce jest trudny do znalezienia, ale wynik zawsze można sprawdzić tylko oczami.

Teraz Oleg weryfikuje wszystkie skróty i dodatkowo upewnia się, że każdy zaczyna się od określonej liczby zer. Chytry Iwan, nawet uzbrojony w potężny laptop, nie zdąży w nocy przeliczyć wszystkich skrótów, aby spełniały warunek - czasu nie starczy.

Taka lista jest w rzeczywistości domowym blockchainem na kolanie. Jej bezpieczeństwo gwarantują matematycy, którzy udowodnili, że tych skrótów nie da się obliczyć jakoś szybciej, chyba że za pomocą brutalnej siły. Takie wyliczanie hashów dla każdego rekordu to górnictwo, o którym dziś będzie dużo i szczegółowo.

Centralizacja zaufania

Naszym znajomym spodobał się pomysł prowadzenia fałszywej listy „kto kogo pożyczył”. Nie chcą też pamiętać, kto za kogo zapłacił w barze i ile jeszcze są winni - wszystko jest napisane na ścianie. Przedyskutowałeś ten pomysł i zdecydowałeś, że teraz potrzebujesz jednej listy dla wszystkich.

Ale komu powierzyć tak ważną księgowość? W końcu, jeśli chodzi o pieniądze, na pierwszy plan wysuwa się zaufanie. Nie będziemy ufać, że nieznane zatrzyma nasze pieniądze. W tym celu nasi przodkowie wymyślili banki, którym z czasem zaczęto ufać, bo za nimi stoi licencja, prawa i ubezpieczenia z Banku Centralnego.

W gronie przyjaciół wszyscy ufają sobie nawzajem i możesz po prostu wybrać najbardziej odpowiedzialnego do tej roli. Ale co, jeśli pytanie dotyczy nieznajomych? Całe miasto, kraj czy cały świat, jak w przypadku Bitcoina? Generalnie nikt tam nikomu nie może ufać.

Decentralizacja: nikt nikomu nie ufa

Wymyślili więc alternatywne podejście: zachowaj kopię listy dla wszystkich. W ten sposób atakujący musiałby nie tylko przepisać jedną listę, ale także zakraść się do każdego domu i przepisać tam listy. A potem okazuje się, że ktoś trzymał w domu kilka list, o których nikt nie wiedział. To jest decentralizacja.

Minusem tego podejścia jest to, że aby dokonać nowych wpisów, będziesz musiał zadzwonić do wszystkich pozostałych uczestników i poinformować każdego z nich o najnowszych zmianach. Ale jeśli ci uczestnicy są bezdusznymi maszynami, to w ogóle przestaje być problemem.

W takim systemie nie ma jednego punktu zaufania, a co za tym idzie możliwości przekupstwa i oszustwa. Wszyscy uczestnicy systemu działają według jednej zasady: nikt nikomu nie ufa. Każdy wierzy tylko w informacje, którymi dysponuje. To jest główne prawo każdej zdecentralizowanej sieci.

Transakcje

Kupując doniczkę w sklepie, wpisujesz kod PIN z karty, dzięki czemu sklep może zapytać bank, czy masz na koncie 35 rubli. Innymi słowy, podpisujesz transakcję na 35 rubli swoim kodem PIN, który bank potwierdza lub odrzuca.

Nasze zapisy typu „Pożyczyłem Wania 500 rubli” to również transakcje. Ale nie mamy banku autoryzującego autora transakcji. Jak sprawdzić, czy Iwan nie dodał po cichu wpisu „Max jest winien Olegowi 100 500 rubli”?

Blockchain wykorzystuje do tego mechanizm kluczy publicznych i prywatnych, których specjaliści IT od dawna używają do autoryzacji w tym samym SSH. Wyjaśniłem to na palcach w poście „Bezpieczeństwo, szyfrowanie, cyberpunk” w dziale „Wprowadzenie do szyfrowania”.

Krótko o tym, jak działa ta złożona, ale piękna matematyka: generujesz na komputerze parę długich liczb pierwszych - klucz publiczny i prywatny. Klucz prywatny jest uważany za supertajny, ponieważ może odszyfrować to, co jest zaszyfrowane publicznie.

Ale działa też odwrotnie. Jeśli udostępnisz klucz publiczny wszystkim swoim znajomym, będą oni mogli zaszyfrować dla nich dowolną wiadomość, tak aby tylko Ty mógł ją przeczytać, ponieważ jesteś właścicielem prywatnego.

Ale poza tym klucz publiczny ma pożyteczny efekt - dzięki niemu możesz sprawdzić, czy dane zostały zaszyfrowane Twoim kluczem prywatnym, bez odszyfrowywania samych danych. Wszystkie te właściwości są dobrze opisane w „Księdze Szyfrów”.

Jesteśmy w zdecentralizowanym Internecie, w którym nikomu nie można ufać. Transakcja podpisywana jest kluczem prywatnym i wraz z kluczem publicznym trafia do specjalnego magazynu - puli niepotwierdzonych transakcji. Każdy członek sieci może więc zweryfikować, czy to Ty ją zainicjowałeś, a nie ktoś inny chce spłacić Twoje pieniądze.

Zapewnia to otwartość i bezpieczeństwo sieci. Jeśli były za to odpowiedzialne wcześniejsze banki, to w blockchain odpowiadają za to matematycy.

Zwykłym użytkownikom, którzy nie chcą zastanawiać się, jak wydawać i przechowywać klucze prywatne, pomogą usługi portfela online. Aby skopiować długie klucze publiczne, tworzone są tam wygodne kody QR. Na przykład Blockchain Wallet, ponieważ posiada wygodną aplikację mobilną i obsługuje dwie główne kryptowaluty – BTC i ETH.

Brak pojęcia „równowagi”

Podobnie jak nasza tablica, blockchain zasadniczo składa się wyłącznie z historii transakcji. Nie przechowuje salda każdego portfela, w przeciwnym razie musielibyśmy wymyślić dodatkowe metody ochrony.

Tylko klucz prywatny potwierdza własność portfela. Ale jak inni członkowie sieci mogą upewnić się, że mam wystarczająco dużo pieniędzy na zakup?

Ponieważ nie mamy równowagi, musisz to udowodnić. Dlatego transakcja blockchain zawiera nie tylko Twój podpis i ile chcesz wydać, ale także linki do poprzednich transakcji, w których otrzymałeś wymaganą kwotę pieniędzy.

Oznacza to, że jeśli chcesz wydać 400 rubli, przeglądasz całą historię dochodów i wydatków i dołączasz do transakcji te dochody, w których otrzymałeś 100 + 250 + 50 rubli, udowadniając w ten sposób, że masz te 400 rubli.

Każdy członek sieci po raz kolejny upewni się, że dwa razy sprawdził, czy nie zawiązałeś dochodu. Że te 300 rubli, które Max dał w zeszłym tygodniu, naprawdę jeszcze nie wydałeś.

Takie dochody związane z transakcją nazywane są wkładami w łańcuchu bloków, a wszyscy odbiorcy pieniędzy są nazywani wyjściami. Suma wszystkich wejść rzadko jest dokładnie taka sama, jak chcesz przenieść na raz - dlatego jednym z wyjść będziesz najczęściej Ty. Innymi słowy, transakcja na blockchain wygląda tak: „Dostałem 3 i 2 BTC, chcę od nich przenieść 4 BTC i zwrócić pozostałe 1 BTC”.

Piękno blockchain polega na tym, że dane wejściowe nie muszą pochodzić z jednego portfela. W końcu sprawdzany jest tylko klucz. Jeśli znasz klucz prywatny wszystkich wejść, możesz łatwo dołączyć je do swojej transakcji i zapłacić tymi pieniędzmi. Jakbyś płacił w supermarkecie kilkoma kartami, z których znasz kod PIN.

Jeśli jednak zgubisz swój klucz prywatny, twój dysk zginie lub twój laptop zostanie skradziony, twoje bitcoiny zostaną utracone na zawsze. Nikt nie może ich używać jako danych wejściowych do nowych transakcji.

Ta kwota będzie na zawsze niedostępna dla całego świata - tak, jakbyś spalił plik banknotów. Nie ma jednego banku, w którym możesz napisać wniosek z kopią paszportu, a on go wydrukuje. Wymaga to dodatkowego wydania nowych bitcoinów „z niczego”.

Problem podwójnego wydawania

Powyżej powiedziałem, że transakcje są dodawane do specjalnej „puli niepotwierdzonych transakcji”. Po co nam jakiś podmiot pośredniczący, skoro faktycznie mamy już gotowe, podpisane transakcje? Dlaczego nie napisać ich bezpośrednio do łańcucha bloków?

Ponieważ sygnały z punktu A do punktu B zawsze idą z opóźnieniem. Dwie transakcje mogą przebiegać zupełnie innymi drogami. A transakcja, która została zainicjowana jako pierwsza, może później trafić do odbiorcy, ponieważ miała dłuższą ścieżkę.

Skutkuje to podwójnymi wydatkami, gdy te same pieniądze trafiają do dwóch adresatów jednocześnie, o czym nawet się nie domyślają. Nie oznacza to przekazywania rachunków z ręki do ręki.

W przypadku zdecentralizowanej sieci, w której nikomu nie można ufać, problem ten jest szczególnie dotkliwy. Oto jak upewniasz się, że jedna transakcja była zdecydowanie przed następną? Poproś nadawcę, aby umieścił w nim czas wysyłki, prawda? Ale pamiętaj - nie możesz ufać nikomu, nawet nadawcy.

Czas na wszystkich komputerach z konieczności będzie się różnił i nie ma gwarantowanego sposobu ich synchronizacji. Kopia łańcucha bloków jest przechowywana na każdym komputerze w sieci i każdy uczestnik ma zaufanie tylko do niego.

Jak możesz się upewnić, że jedna transakcja była wcześniejsza niż inna?

Odpowiedź jest prosta: to niemożliwe. Nie ma możliwości potwierdzenia czasu transakcji w zdecentralizowanej sieci. A rozwiązaniem tego problemu jest trzeci ważny pomysł na blockchain, który wymyślił Satoshi i który, co dziwne, jest napisany w jego imieniu - bloki.

Bloki są podstawą łańcucha bloków

Każdy działający komputer w sieci wybiera dowolne transakcje z ogólnej puli. Zwykle tylko za najwyższą prowizję, jaką może na tym zarobić. Zbiera więc dla siebie transakcje, aż ich łączna wielkość osiągnie wynegocjowany limit. W Bitcoin ten limit wielkości bloku wynosi 1 MB (po SegWit2x będzie to 2 MB), a w Bitcoin Cash - 8 MB.

Cały blockchain to w zasadzie lista takich bloków, z których każdy odnosi się do poprzedniego. Można go wykorzystać do śledzenia dowolnej transakcji w całej historii, rozwijając blockchain nawet do pierwszego rekordu.

To właśnie ta lista waży teraz setki gigabajtów i musi być w całości pobrana na wszystkie komputery, które chcą brać udział w sieci (ale nie jest to konieczne do zwykłego tworzenia transakcji i przesyłania pieniędzy). Jest on pobierany w ten sam sposób ze wszystkich najbliższych komputerów w sieci, tak jakbyś ściągał serię z torrentów, tylko nowe odcinki są w nim wydawane co 10 minut.

Po wpisaniu dla siebie transakcji z puli komputer zaczyna komponować z nich tę samą niemożliwą do podrobienia listę, którą robiliśmy na początku wpisu na tablicy w domu.

Tylko on robi to w formie drzewa - haszuje rekordy w parach, następnie wynik jest znowu w parach i tak dalej, aż zostanie tylko jeden hasz - korzeń drzewa, który jest dodawany do bloku. Dlaczego właśnie z drzewem - nie znalazłem odpowiedzi, ale przypuszczam, że tak jest po prostu szybciej. Przeczytaj więcej na wiki: Drzewo Merkle.

Ponieważ obecny blockchain został już pobrany, nasz komputer dokładnie wie, jaki jest w nim ostatni blok. Musi tylko dodać do niego link w nagłówku bloku, zahaszować to wszystko i powiedzieć wszystkim innym komputerom w sieci „patrz, stworzyłem nowy blok, dodajmy go do naszego łańcucha bloków”.

Reszta powinna sprawdzić, czy blok jest zbudowany zgodnie ze wszystkimi zasadami i czy nie dodaliśmy tam niepotrzebnych transakcji, a następnie dodać je do naszych łańcuchów. Teraz wszystkie transakcje w nim są potwierdzone, blockchain zostaje powiększony o jeden blok i wszystko idzie dobrze, prawda?

Ale nie. Tysiące komputerów jednocześnie pracuje w sieci, a gdy tylko montują nowy blok, prawie jednocześnie spieszą, aby poinformować wszystkich, że ich blok został utworzony jako pierwszy. A z poprzedniej sekcji wiemy już, że w zdecentralizowanej sieci nie da się udowodnić, kto tak naprawdę był pierwszy.

Podobnie jak w szkole, kiedy wszyscy rozwiązywali trudny test, rzadko zdarzało się, aby nawet znakomici uczniowie przyjmowali odpowiedzi w tym samym czasie.

Ale jeśli dla osoby jest trudnym zadaniem zaplanowanie wakacji, aby dostał się na święta majowe, a bilety na morze są niedrogie, to dla komputera jest to dodanie takiej liczby (nonce) na końcu blok tak, że w rezultacie hash SHA-256 dla całego bloku zaczyna się powiedzmy 10 zer. To jest problem, który należy rozwiązać, aby dodać blok do sieci Bitcoin. W przypadku innych sieci zadania mogą się różnić.

Dochodzimy więc do koncepcji wydobycia, na punkcie której wszyscy mieli obsesję w ostatnich latach.

Górnictwo

Wydobywanie bitcoinów nie jest jakimś świętym sakramentem. Wydobywanie nie polega na znajdowaniu nowych bitcoinów gdzieś w czeluściach Internetu. Wydobywanie jest wtedy, gdy tysiące komputerów na całym świecie brzęczy w piwnicach, przeglądając miliony liczb na sekundę, próbując znaleźć skrót zaczynający się od 10 zer. Nie muszą nawet być online, aby to zrobić.

Karty graficzne z setkami równoległych rdzeni rozwiązują ten problem szybciej niż jakikolwiek inny procesor.

Dlaczego dokładnie 10 zer? I tak po prostu, to nie ma sensu. Więc Satoshi wymyślił. Bo to jeden z tych problemów, dla których zawsze jest rozwiązanie, ale na pewno nie da się go szybciej znaleźć niż długie, monotonne wyliczanie opcji.

Złożoność wydobycia zależy bezpośrednio od wielkości sieci, czyli od jej całkowitej mocy. Jeśli tworzysz własny blockchain i uruchamiasz go samodzielnie w domu na dwóch laptopach, to zadanie powinno być prostsze. Na przykład, aby hash zaczynał się tylko od jednego zera, lub aby suma cyfr parzystych była równa sumie nieparzystych.

Jeden komputer zajmie kilka dekad, aby znaleźć skrót zaczynający się od 10 zer. Ale jeśli połączysz tysiące komputerów w jedną sieć i równolegle będziesz wyszukiwać, to zgodnie z teorią prawdopodobieństwa problem ten zostanie rozwiązany średnio w 10 minut. Jest to czas, w którym w łańcuchu bloków bitcoin pojawia się nowy blok.

Co 8-12 minut ktoś na ziemi znajduje taki hasz i ma przywilej ogłaszania swojego odkrycia wszystkim, unikając w ten sposób problemu, kto był pierwszy.

Za znalezienie odpowiedzi komputer (stan na 2017 r.) otrzymuje 12,5 BTC - jest to kwota nagrody, która jest generowana przez system bitcoin „z niczego” i maleje co cztery lata.

Technicznie oznacza to, że każdy górnik zawsze dodaje kolejną transakcję do swojego bloku – „utwórz 12,5 BTC i wyślij je do mojego portfela”. Kiedy słyszysz „liczba bitcoinów na świecie jest ograniczona do 21 milionów, teraz zatrudnili już 16 milionów” – to nagrody generowane przez sieć.

Idź zobaczyć prawdziwy blok Bitcoin na żywo na jednej z dedykowanych stron. Są też transakcje z wejściami i wyjściami oraz aż 18 zer na początku i wszystkie opisane powyżej skróty.

To górnicy dodają pojawiające się transakcje do łańcucha bloków. Jeśli więc ktoś powie Ci, że „zrobi blockchain za ***”, pierwsze pytanie, na które musi odpowiedzieć, to kto będzie na nim kopał i dlaczego. Najczęściej poprawną odpowiedzią jest „każdy to zrobi, bo za wydobycie dajemy nasze monety, które będą rosły i jest to opłacalne dla górników”. Ale to nie dotyczy wszystkich projektów.

Na przykład, niektóre Ministerstwo Zdrowia jutro tworzy własny zamknięty blockchain dla lekarzy (a oni tego chcą), kto go wydobędzie? Terapeuci weekendowi?

Ale jaka będzie korzyść dla górników później, gdy nagrody znikną lub staną się skąpe?

Zgodnie z ideą Twórcy, do tego czasu ludzie będą musieli uwierzyć w realia bitcoinów, a wydobycie zacznie się spłacać kwotą opłat zawartych w każdej transakcji. Tutaj wszystko idzie: jeszcze w 2012 roku wszystkie prowizje były zerowe, górnicy wydobywali tylko nagrody z bloków. Dziś transakcja z zerową prowizją może wisieć w puli kilka godzin, bo jest konkurencja i ludzie są skłonni zapłacić za szybkość.

Oznacza to, że istotą górnictwa jest rozwiązywanie bezsensownych problemów. Czy cała ta moc nie może być wykorzystana do czegoś bardziej pożytecznego - na przykład do poszukiwania lekarstwa na raka?

Istotą górnictwa jest rozwiązanie każdego problemu obliczeniowego. Zadanie to powinno być na tyle proste, aby uczestnicy sieci mieli stabilne prawdopodobieństwo znalezienia odpowiedzi – w przeciwnym razie transakcje zostaną potwierdzone na zawsze. Wyobraź sobie, że przy kasie w sklepie musisz każdorazowo czekać pół godziny na potwierdzenie transakcji przez bank. Nikt nie skorzysta z takiego banku.

Ale zadanie musi być jednocześnie trudne, aby wszyscy internauci nie znaleźli odpowiedzi od razu. Bo w tym przypadku ogłoszą do sieci wiele bloków z tymi samymi transakcjami i będzie możliwość „podwójnego marnotrawstwa”, o czym wspomniałem. Albo jeszcze gorzej – podzielenie pojedynczego blockchaina na kilka gałęzi, w których nikt nie może rozgryźć, która transakcja jest potwierdzona, a która nie.

Jeśli nagroda w wysokości 12,5 BTC jest wręczana tylko raz na 10 minut i tylko jedna osoba, która znalazła blok, okazuje się, że muszę marnować karty wideo przez kilka lat w nadziei, że kiedyś zrzucę 40 000 $ (na aktualny kurs wymiany)?

Dokładnie tak jest w przypadku bitcoina. Ale nie zawsze tak było. Wcześniej sieć była mniejsza, złożoność mniejsza, co oznacza, że prawdopodobieństwo samodzielnego znalezienia skrótu dla nowego bloku jest większe. Ale wtedy bitcoin nie był tak drogi.

Teraz nikt sam nie wydobywa bitcoinów. Teraz uczestnicy są zjednoczeni w specjalnych grupach - basenach wydobywczych, gdzie wszyscy razem starają się znaleźć właściwy hash.

Jeśli przynajmniej jeden z grupy znajdzie, cała nagroda jest dzielona między uczestników, w zależności od ich wkładu we wspólną pracę. Okazuje się, że wydobywasz i co tydzień dostajesz pensa z całego udziału.

Ale wydobycie solo jest całkiem możliwe w innych sieciach. Do niedawna łatwo było wydobywać Ethereum, gdzie bloki znajdują się co 10 sekund. Nagroda za blok jest tam znacznie niższa, ale prawdopodobieństwo zarobienia ładnego grosza jest wyższe.

Więc zamierzamy spalić tysiące kart wideo na próżno i nie ma wyjścia?

Tak, ale są pomysły. Mining, który opisałem jest klasyczny i nosi nazwę Proof-of-Work (proof of work). Oznacza to, że każda maszyna udowadnia, że działała na korzyść sieci, rozwiązując bezsensowne problemy z określonym prawdopodobieństwem.

Ale niektórzy faceci zaczynają tworzyć blockchainy z innymi rodzajami wydobycia. Teraz drugą najpopularniejszą koncepcją jest Proof-of-Stake (dowód stawki). W tego typu kopaniu im więcej „monet” uczestnik sieci ma na swoim koncie, tym większe prawdopodobieństwo, że wstawi swój blok do łańcucha bloków. Jak najgłośniejszy facet w wiosce.

Możesz pomyśleć o innych rodzajach wydobycia. Jak już sugerowano, wszystkie komputery w sieci mogą szukać lekarstwa na raka, tylko ty musisz dowiedzieć się, jak w tym przypadku rejestrować swój wkład do systemu. W końcu mogę zadeklarować, że też biorę udział, ale wyłącz moją kartę graficzną i nic nie licz.

Jak określić ilościowo wkład każdego uczestnika w znalezienie leku na raka? Jeśli wpadniesz na pomysł - odważysz się wyciąć CancerCoin, szum w mediach jest gwarantowany.

Blockchain

Wyobraźmy sobie sytuację, w której pomimo całej naszej teorii prawdopodobieństwa, dwóch górników wciąż zdołało znaleźć właściwą odpowiedź w tym samym czasie. Zaczynają wysyłać przez sieć dwa absolutnie poprawne bloki.

Te bloki na pewno będą różne, ponieważ nawet jeśli w cudowny sposób wybrali te same transakcje z puli, wykonali absolutnie identyczne drzewa i odgadli tę samą losową liczbę (nonce), ich haszy będą nadal różne, ponieważ każdy zapisze swój numer portfela w blok na nagrodę.

Teraz mamy dwa prawidłowe bloki i ponownie pojawia się problem, kogo należy wziąć pod uwagę jako pierwszy. Jak w takim przypadku zachowa się sieć?

Algorytm blockchain stwierdza, że uczestnicy sieci po prostu akceptują pierwszą poprawną odpowiedź, która do nich dotrze. Wtedy żyją w oparciu o własny obraz świata.

Obaj górnicy otrzymają nagrodę, a cała reszta zacznie kopać, opierając się na ostatnim bloku, który osobiście otrzymali, odrzucając całą resztę, która jest ponownie poprawna. W sieci pojawiają się dwie wersje prawidłowego łańcucha bloków. Taki jest paradoks.

To rutynowa sytuacja, w której znów pomaga teoria prawdopodobieństwa. Sieć działa w tak rozwidlonym stanie, dopóki jeden z górników nie znajdzie kolejnego bloku w jednym z tych łańcuchów.

Gdy tylko taki blok zostanie znaleziony i wprowadzony do łańcucha, staje się on dłuższy i uwzględniana jest jedna z umów sieci blockchain: w każdych warunkach najdłuższy blockchain jest akceptowany jako jedyny prawdziwy dla całej sieci.

Krótki łańcuch, pomimo całej swojej poprawności, jest odrzucany przez wszystkich uczestników sieci. Transakcje z niej wracają do puli (jeśli nie zostały potwierdzone w innym), a ich przetwarzanie rozpoczyna się od nowa. Górnik traci nagrodę, ponieważ jego blok już nie istnieje.

Wraz z rozwojem sieci takie zbiegi okoliczności z „bardzo mało prawdopodobne” trafiają do kategorii „no, czasami się zdarza”. Starsi ludzie mówią, że zdarzały się przypadki, gdy łańcuch czterech bloków został upuszczony jednocześnie.

Z tego powodu wymyślono trzy zasady braku bezpieczeństwa na końcu łańcucha:

1. Nagrody za wydobycie można wykorzystać dopiero po kolejnych 20 potwierdzonych blokach po otrzymaniu. W przypadku Bitcoina to około trzech godzin.

2. Jeśli bitcoiny zostały wysłane do Ciebie, możesz ich użyć jako danych wejściowych w nowych transakcjach dopiero po 1-5 blokach.

3. Zasady 1 i 2 są po prostu określone w ustawieniach każdego klienta. Nikt nie monitoruje ich przestrzegania. Ale prawo dotyczące najdłuższego łańcucha i tak wymaże wszystkie twoje transakcje, jeśli spróbujesz oszukać system, aby ich nie egzekwował.

Próbuję oszukać blockchain

Teraz, gdy wiesz już wszystko o kopaniu, urządzeniu łańcucha bloków i regule najdłuższego łańcucha, możesz mieć pytanie: czy można w jakiś sposób przejąć łańcuch bloków, samodzielnie tworząc najdłuższy łańcuch, potwierdzając w ten sposób fałszywe transakcje.

Załóżmy, że masz najpotężniejszy komputer na świecie. Centra danych Google i Amazon stawiają do Twojej dyspozycji i próbujesz obliczyć taki łańcuch, który stanie się najdłuższym blockchainem w sieci.

Nie możesz wziąć i natychmiast obliczyć kilku bloków łańcucha, ponieważ każdy kolejny blok zależy od poprzedniego. Następnie decydujesz tak szybko, jak to możliwe, aby policzyć każdy blok w swoich ogromnych centrach danych równolegle z tym, w jaki sposób wszyscy inni uczestnicy nadal zwiększają główny łańcuch bloków. Czy da się ich wyprzedzić? Prawdopodobnie tak.

Jeśli twoja moc obliczeniowa jest większa niż 50% mocy wszystkich uczestników sieci, to z prawdopodobieństwem 50% będziesz w stanie zbudować dłuższy łańcuch szybciej niż wszystkie inne razem wzięte. Jest to teoretycznie możliwy sposób na oszukanie łańcucha bloków poprzez obliczenie dłuższego łańcucha transakcji. Wtedy wszystkie transakcje w prawdziwej sieci zostaną uznane za nieważne, a Ty zbierzesz wszystkie nagrody i rozpoczniesz nowy kamień milowy w historii kryptowalut, który nazywa się „podziałem blockchain”. Kiedyś, z powodu błędu w kodzie, tak było w przypadku Ethereum.

Ale w rzeczywistości żadne centrum danych nie może być porównywane pod względem mocy ze wszystkimi komputerami na świecie. Półtora miliarda Chińczyków z ikami, kolejne półtora miliarda głodnych Hindusów z farmami wydobywczymi i tanim prądem – to ogromna moc obliczeniowa. Nikt na świecie nie może jeszcze konkurować z nimi sam, nawet Google.

To tak, jakby wyjść na ulicę i próbować przekonać każdą osobę na świecie, że dolar jest teraz wart 1 rubla i zdążyć na czas, zanim media Cię zdemaskują. A jeśli uda ci się przekonać wszystkich, możesz załamać światową gospodarkę. W teorii, czy nie jest to możliwe? Ale w praktyce z jakiegoś powodu nikomu się to nie udało.

Blockchain również opiera się na tym prawdopodobieństwie. Im więcej uczestników-górników, tym większe bezpieczeństwo i zaufanie do sieci. Dlatego też, gdy inna duża farma górnicza jest objęta w Chinach, stawka spada. Wszyscy boją się, że gdzieś na świecie był zły geniusz, który zebrał już pulę górników na ~49% pojemności.

Wniosek

Blockchain nie jest ściśle określonym zestawem algorytmów. Jest to struktura do budowania fałszywej sieci między uczestnikami, w której nikt nie może nikomu ufać. Podczas czytania pewnie nie raz myślałeś, że „możesz to zrobić tak, a będzie jeszcze bardziej przydatne”. Oznacza to, że rozumiesz blockchain, gratulacje.

Niektórzy faceci na świecie również to rozumieli i chcieli poprawić lub przystosować się do pewnych konkretnych zadań. Kryptowaluty to nie to samo, choć jest ich też sporo. Oto krótka lista niektórych pomysłów i projektów, które zyskały pewną popularność dzięki ponownemu przemyśleniu idei blockchain.

Ethereum

„Etery” to drugie najpopularniejsze słowo, które słyszysz w wiadomościach o kryptowalutach, po Bitcoinie. Dla zwykłych ludzi jest to kolejna kryptowaluta i sposób na zrobienie najmodniejszej rzeczy zwanej ICO. Deweloperzy na stronie opisują Ethereum jako „konstruktora blockchain dla Twoich potrzeb”. To też jest możliwe, tak.

Ale jeśli zagłębisz się jeszcze głębiej, eter to nie tylko sieć monet. Jest to ogromna globalna maszyna obliczeniowa, w której użytkownicy wykonują kod programów innych ludzi (inteligentne kontrakty), otrzymując nagrodę za każdą wykonaną linię. A wszystko to jest zdecentralizowane, niezniszczalne i ze wszystkimi gwarancjami blockchaina.

O Ethereum i smart kontraktach możemy mówić tak długo, że wystarczy na kolejny taki post. Dlatego będziemy działać w stylu najlepszych blogerów: jeśli ten post jest aktywnie repostowany i retweetowany, a do piątku uzyska co najmniej 1500 unikalnych wyświetleń, napiszę sequel o Ethereum i inteligentnych kontraktach.

Zalecana: