blockchain

Podstawy Bitcoin: Blockchain, hashowanie i wydobywanie… o rany!

Kontynuujemy odkurzanie archiwów tym kawałkiem z Daz Bea, po raz pierwszy opublikowano na Medium w lipcu 2021 r. Wprowadzono kilka drobnych zmian, aby zwiększyć przejrzystość… miłej zabawy.

Być może dopiero zaczynasz przygodę z bitcoinem, a może byłeś w króliczej norze przez jakiś czas, ale nigdy tak naprawdę nie rozumiałeś dokładnie, co dzieje się za kulisami, w łańcuchu bloków. Mam nadzieję, że w jednym prostym artykule odkryję tajemnicę blockchaina, haszowania, wydobywania bitcoinów i rozproszonych ksiąg rachunkowych. Weź się w garść, mamy dużo do przejścia.

Haszowanie SHA256

Sieć bitcoin wykorzystuje algorytm SHA256 do przeprowadzania funkcji haszujących. Zdezorientowany już? Nie martw się, może to być bardzo skomplikowane i znacznie przekraczające moje zarobki, ale wyjaśnię podstawy najlepiej, jak potrafię.

Pomyśl o haszowaniu jako o tworzeniu cyfrowego odcisku palca zestawu danych. Dane trafiają do algorytmu (dane wejściowe), algorytm wykonuje swoją magię i wypluwa serię znaków alfanumerycznych (wyjście). To, co jest naprawdę fajne w mieszaniu, to to, że nie ma znaczenia, ile danych przepuszczasz przez algorytm, dane wyjściowe są zawsze tej samej długości, 64 znaki szesnastkowe dla algorytmu SHA256.

Rysunek 1 pokazuje funkcję skrótu SHA256 (odtąd będziemy ją nazywać haszowaniem) o nazwie „Daz”. „Daz” to wejście, a 3445748836aa04e53fd5de81c41c4a370f0cf52004659abf87920abc0da1bbaf to wyjście…
Proste, prawda?

Rysunek 1
Rysunek 1. Skrót nazwy „Daz”

Teraz zamienię wielką literę „D” na małą literę „d” (Rysunek 2), aby zademonstrować, że jedna prosta, niewielka zmiana danych wejściowych daje zupełnie nowe wyniki. Wejście = daz, wyjście = ae5e9de1ed5510933a86705cb253b3cbd0b0891e70217c7a64603869aeaac093. Jak widać z naszego nowego dorobku, w porównaniu z oryginałem postacie są zupełnie inne. Nie ma dostrzegalnego wzorca między nimi.

zrzut ekranu 2023 07 15 w 10.22.51 am
Rysunek 2. Skrót nazwy „daz” z małą literą „d”

Jak wspomniano wcześniej, wynikowy skrót ma długość 64 znaków. Tak jest zawsze, bez względu na rozmiar danych, które umieszczamy w algorytmie. Na rysunku 3 wklejam cały artykuł z Wikipedii na temat Fender Stratocaster do danych wejściowych, dane wyjściowe mają długość 64 znaków. Ta funkcja pozostałaby prawdziwa, gdybyś poddał algorytmowi całą zawartość Internetu, za każdym razem 64 znaki.

błotnik
Rysunek 3. Hash artykułu w Wikipedii na temat Fender Stratocaster (źródło: https://en.wikipedia.org/wiki/Fender_Stratocaster)

Cechą funkcji skrótu SHA256 jest to, że gdybyśmy mieli ponownie zaszyfrować dokładnie ten sam zestaw danych, otrzymalibyśmy ten sam skrót tych danych za każdym razem. Jest to coś, co jest często używane na całym świecie do porównywania wielu dużych zbiorów danych w celu zapewnienia ich dokładności. Porównywanie danych wyjściowych skrótu jest łatwiejsze niż porównywanie całej zawartości znak po znaku. Ta cecha stanowi podstawę łańcucha blokowego bitcoin. Zanurzmy się w kolejnym kawałku tej układanki… Bloki.

Bloki i wydobycie

Możemy użyć funkcji skrótu SHA256, aby rozpocząć budowanie bloków danych. Dla każdego bloku mamy dane wejściowe (zbiór danych) i dodajemy do tych danych pewne wyróżniające cechy, takie jak numer bloku, jako przykład. I przepuszczamy to przez funkcję haszującą.

Na rysunku 4 widzimy, że mamy kilka pól danych, takich jak blok #, nonce (porozmawiamy o tym wkrótce), aw tej chwili nasze pole danych jest puste. Hash tych obejmujących pól danych to: 0000f727854b50bb95c054b39c1fe5c92e5ebcfa4bcb5dc279f56aa96a365e5a

blok 1 skrótu
Rysunek 4. Przykład bloku 1

Zauważysz wyróżniającą cechę tego skrótu, zauważ, że 4 wiodące znaki to wszystkie 0. To nie przypadek. Widzisz, wyjściowy skrót algorytmu SHA256 jest w rzeczywistości bardzo dużą liczbą. W życiu codziennym jesteśmy przyzwyczajeni do używania systemu liczbowego zwanego base10. Oznacza to, że nasz system liczbowy to system oparty na liczbach od 0 do 9.

Istnieje kilka różnych systemów liczbowych, szczególnie w informatyce. Base2 to kolejny powszechny system numeracji, być może znasz termin Binarny. Base 2 lub Binary to system liczbowy powszechnie używany do podstawowej struktury systemów komputerowych składających się z liczb 0 i 1.

Wyjście algorytmów bitcoin SHA256 jest w formacie Base16, znanym również jako szesnastkowy. Baza 16 po prostu wykorzystuje system liczbowy base10 od 0 do 9 i rozszerza ten system liczbowy o litery a aż do f małymi literami, aby utworzyć równoważny system liczbowy z wartościami od 0 do 15 przedstawionymi w tabeli 1.

figure2.26
Tabela 1: System liczbowy o podstawie 16 (szesnastkowy).

Dlaczego warto używać base16? Po prostu używamy podstawy 16 ze względu na zwięzłość. Sposób przedstawiania bardzo dużych liczb przy jednoczesnym zmniejszeniu całkowitej liczby znaków.

Teraz wprowadźmy 2 nowe terminy związane z wydobywaniem bitcoinów. Trudność i cel. Trudność i cel to sposoby, w jakie protokół bitcoin kontroluje trudność znalezienia bloków. Dotykam tego w pewnym stopniu w jednym z moich poprzednich artykułów na temat Regulacja trudności, możesz to przeczytać tutaj.

Na razie po prostu zrozum, że program, którego używamy do tej demonstracji, ma stałe "cel" aby funkcja skrótu wyjściowego była poniżej określonej liczby docelowej, co utrudnia znalezienie nonce. Dla protokołu bitcoin, tzw cel jest dostosowywany co 2 tygodnie, aby regulować średnią szybkość uwalniania bloków wynoszącą 1 x blok co 10 minut, ponieważ w sieci Bitcoin jest przesyłana większa moc obliczeniowa, bloki są rozwiązywane szybciej, protokół spogląda wstecz na poprzednie bloki z 2016 roku i dostosowuje trudność wydobywania bloków poprzez obniżenie wartości docelowej, co utrudnia znalezienie nonce.

Nie będziemy się w to zagłębiać w tym artykule, zostawimy to na inną okazję. Dzisiaj skupimy się bardziej na nonce i jak zbudować blockchain.

Wróćmy do naszego przykładu w Rysunek 4. Teraz dodajmy trochę danych do tego bloku. Dodam zdanie "Witaj świecie". Gdy dodam te dane, zauważysz, że tło zmieniło kolor na czerwony (Rysunek 5), program nie jest teraz zadowolony z naszego bloku. Przypomnij sobie z rysunku 4, że skrót tego zestawu danych rozpoczął się od 4 x wiodących zer. Ten konkretny program, który uruchamiam, wymaga, aby hash zawsze znajdował się poniżej wartości docelowej, a hash wyjściowy zaczynał się od 0 wiodących zer, przy czym ta liczba w pełnej formie base4 to: 0ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff

Witaj świecie, blok 1
Rysunek 5. Zmiana danych unieważniła blok.

Kiedy zmieniłem dane, dodając „Hello World”, algorytm SHA256 dostarczył nowy hash i jak widzimy, mój nowy hash nie zaczyna się od 4 wiodących zer, wyjściowy hash jest powyżej naszej wartości docelowej i dlatego jest nieprawidłowy.

W algorytmach SHA256 tkwi fundamentalna prawda istnieje zestaw danych, który kiedyś został zawarty w połączeniu z innymi moimi danymi w bloku, co skutkowałoby haszem wyjściowym poniżej mojej liczby docelowej. W rzeczywistości może być więcej niż jedna odpowiedź, w rzeczywistości prawdopodobnie będzie ich wiele. Trudność (zamierzona gra słów) polega jednak na tym, jakie dane mogłyby rozwiązać problem?

To jest, gdy Chwilowo wchodzi w grę. Jeśli rozbijemy mój zbiór danych w ramach bloku, mamy numer bloku (1) i Dane (Hello World) oraz dodatkowe pole o nazwie nonce (obecnie o wartości: 72608). Co by było, gdyby istniał zestaw danych, który mógłbym uwzględnić jako wartość jednorazową, która po dodaniu do pozostałych danych skutkowałaby hashem spełniającym wymagania mojego programu, aby hash wyjściowy dawał liczbę mniejszą niż 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff

Piękne w kryptografii jest to, że nie można tego obliczyć ręcznie. Moją jedyną opcją jest próba arbitralnego odgadnięcia, jakie to mogą być dane. Mogę zmienić wartość nonce na 1? Albo zmienić na 2? lub mogę spróbować 2456395697 lub 45628496902074?…….. Mogę tu być przez chwilę.

Albo możemy użyć mocy mojego komputera. Możemy wykorzystać zdolność komputera do szybkiego przetwarzania informacji, aby zacząć zgadywać, jakie dane moglibyśmy umieścić w polu „Nonce”, które po przejściu przez funkcję skrótu skutkowałyby haszem wyjściowym poniżej 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff.

Jeśli kliknę „Mój” w moim programie, mój komputer zacznie zgadywać wartości dla nonce, nie ma innego sposobu na obliczenie tej wartości poza zgadywaniem i sprawdzaniem, zgadywaniem i sprawdzaniem, dopóki nie znajdziemy wartości jednorazowej, która osiąga wynik poniżej naszą wartość docelową.

Po znalezieniu rozwiązania program sprawdza wynik, a blok ponownie zmienia kolor na zielony. to jest szczęśliwe. Ten proces może zająć trochę czasu, w zależności od sposobu trudny polega na znalezieniu pasującego zestawu danych. To, w uproszczeniu, jest znane jako górnictwo. „Przekopujemy się” przez kombinacje danych, aby znaleźć rozwiązanie problemu matematycznego. Próbujemy znaleźć wartość nonce, która w połączeniu z naszymi danymi daje z góry określone wymaganie (w naszym przypadku hash wyjściowy poniżej wartości numerycznej base16 równej 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff). Rysunek 6 pokazuje, jak to wygląda w naszym przykładzie, zajęło to około 3 sekund na moim komputerze stacjonarnym. Nonce to liczba 24894.

witaj świecie wydobyty
Rysunek 6. Eksploracja nowej wartości jednorazowej w celu spełnienia funkcji skrótu z 4 x wiodącymi zerami.

Gratulacje! Wydobyliśmy nasz pierwszy blok.

Blockchain

Blockchain to…… czekaj na to…….łańcuch bloków. Jest to łańcuch bloków, podobnie jak pierwszy blok, który wydobyliśmy powyżej, ale z pewnymi różnicami.

Zestaw danych jest wprowadzany do bloku 1, wydobywamy ten blok, aby odkryć wartość jednorazową spełniającą wymagania dotyczące trudności (wyjściowy skrót poniżej wartości docelowej). Spowoduje to utworzenie skrótu i ​​nasz blok zostanie zakończony. Następnie tworzymy nowy blok. Dołączymy nowe pole danych do tego nowego bloku. Pole danych, w którym uwzględniamy skrót wyjściowy bloku postępowania jako dane wejściowe w nowy blok.

Możemy zobaczyć w Rysunek 7, że mamy łańcuch 2 bloków. Pierwszy blok jest kopią naszych powyższych przykładów, ale mamy oznaczone nowe pole „Poprzedni” zawiera nowe dane. Blok 1 to nasz blok genesis, zawiera dowolne informacje w polu prev. Blok jest wydobywany i uzyskiwany jest nasz skrót tych danych.

W bloku 2 dołączamy wyjściowy skrót z bloku 1 jako dane wejściowe do naszego nowego bloku. Dane te umieszczamy w polu „Prev”. Dodajemy nowe dane, które chcemy uwzględnić w tym drugim bloku i wydobywamy ten blok. Oba nasze bloki są zadowolone.

bloki blockchain x2
Rysunek 7. Budowa łańcucha bloków. Hash wyjściowy bloku 1 jest dodawany do pola „Prev” bloku 2.

Teraz wróćmy i zmieńmy coś w bloku 1. Dodam kropkę „.” do danych. Widzimy teraz na rysunku 8, że cały łańcuch bloków nie jest szczęśliwy. Oba bloki są czerwone. Zmieniłem dane i przerwałem łańcuch. Hash bloku 1 nie jest już poniżej wartości docelowej. Dodanie kropki „.” do danych, dał nowy hash o wartości powyżej naszej wartości docelowej 0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff, co oznacza, że ​​jest niezgodny z wymaganiami programu. Ale dane wyjściowe bloku 1 są również danymi wejściowymi bloku 2, co również unieważnia hash bloku 2. Przerwaliśmy łańcuch.

blockchain dodaj kropkę
Rysunek 8. Zmiana w Bloku 1 przerwała łańcuch.

Ponowne wydobycie bloku 1 rozwiązało program dla bloku 1, ale ponownie dane zostały zmienione w bloku 2 z powodu zmiany nowego skrótu wyjściowego z bloku 1, nadal nie jest zadowolony (Rysunek 9).

dodaj kropkę moja 1
Rysunek 9. Ponownie wydobyliśmy blok 1, ale blok 2 nadal nie jest zadowolony.

Musimy teraz ponownie zaminować blok 2, aby upewnić się, że spełnia on wymagania dotyczące trudności. Rysunek 10 pokazuje, że ponownie mamy 2 x szczęśliwe bloki po przerobieniu praca za 2 bloki. "Praca" to termin opisujący moc obliczeniową, jaką wykorzystaliśmy w procesie wydobywania. Być może słyszałeś to określenie Dowód pracy przed, który odnosi się do tej koncepcji zabezpieczenia łańcucha bloków bitcoin poprzez proces wydatkowania energii… pracy.

dodaj kropkę moja 2
Rysunek 10. Ponowne wydobycie bloków 1, a następnie 2. Program znów jest szczęśliwy.

Zwróć uwagę na konieczność wydobywania bloków w kolejności. Ponowne wydobycie bloku 2, zanim wykonaliśmy prace potrzebne do wykonania bloku 1, spowodowałoby konieczność ponownego wydobycia bloku 2.

Mamy teraz podstawę dla naszego łańcucha bloków, można dodać trzeci, a następnie czwarty blok, eksplorując każdy blok z nowymi danymi wejściowymi, z hashem wyjściowym bloku 3 prowadzącym do wejścia bloku 4, a wyjściem bloku 2 prowadzącym do wejście bloku 3 i tak dalej i tak dalej.

Jeśli nasz blockchain ma teraz 4 bloki i ponownie spróbujemy zmienić dane w bloku 1. Unieważni to cały łańcuch. Musielibyśmy wtedy ponownie wydobyć blok 1, następnie blok 2, a następnie blok 3….. rozumiesz, do czego zmierzam?

Mamy teraz dobre zrozumienie łańcucha blokowego i elementów, które muszą ze sobą współgrać, aby stworzyć łańcuch. Teraz rozwińmy to myślenie i spójrzmy na rozproszony łańcuch bloków.

Rozproszony łańcuch bloków i konsensus

Jedną z pięknych rzeczy w blockchainie bitcoin jest rozproszona księga. Wkrótce przejdziemy do strony „księgi rachunkowej”, na razie po prostu spójrzmy na rozproszony łańcuch bloków, aby zrozumieć tę koncepcję.

Powiedzmy, że miałem łańcuch bloków, który zawierał serię bloków, z których każdy zawierał jakieś dane. Dane te zostały zaszyfrowane i połączone razem, jak widzieliśmy powyżej, w celu utworzenia łańcucha bloków. Trzymam kopię tego łańcucha bloków na moim komputerze. A gdyby zaszła potrzeba porównania notatek z kimś innym? Co jeśli integralność tych danych była dla mnie naprawdę ważna i chciałem mieć pewność, że nie zostały naruszone? A gdybym chciał mieć pewność, że dane, które posiadam, są prawdziwą i poprawną wersją tej serii danych? Byłoby przydatne, gdyby istniała dokładna kopia tego łańcucha bloków, abym mógł porównać moją wersję z…. Prawidłowy?

W tym miejscu pojawia się piękno rozproszonego łańcucha bloków. Co by było, gdybym dał komuś innemu kopię mojego łańcucha bloków, abym mógł w dowolnym momencie przejść i porównać notatki. A gdybym napisał program, który zrobiłby to za mnie automatycznie? Mógłby stale porównywać mój zestaw danych z moimi przyjaciółmi i oznaczać wszelkie rozbieżności.

Aby podać pomniejszony przykład. Załóżmy, że mam łańcuch bloków o długości zaledwie 3 bloków, zawierający naprawdę ważne dane, nad którymi pracowałem. Mógłbym zabezpieczyć te dane w rozproszonym łańcuchu bloków, przechowując kopię w domu (Rysunek 11 — Peer A) i przekazując kopię komuś innemu lub po prostu przechowując kopię na swoim komputerze w biurze (Rysunek 11 — Peer B).

dystrybuowane 1.
Rysunek 11. Przykład rozproszonego łańcucha bloków — Peer A to dom, a Peer B to biuro.

Jeśli zostawię włączony i odblokowany komputer, a pojawi się jakiś nikczemny aktor (są wszędzie) i zmieni dane w bloku 2 (czy potrafisz dostrzec różnice?). Mogliby ponownie wydobywać każdy blok od 2 do 4, więc moja kopia łańcucha blokowego wygląda OK pod względem łańcucha i funkcji haszujących dla każdego bloku. Jednak kiedy wracam do mojego rozproszonego programu blockchain, oznacza to, że moja wersja prawdy różni się od tej na moim biurowym komputerze? Szybkie porównanie pokazuje, że rzeczywiście haszowanie zmieniło się od bloku 2 do bloku 4. (Rysunek 12). Oba łańcuchy same w sobie wyglądają dobrze, oba są zielone, ale mój program komputerowy, który porównuje każdą dystrybuowaną wersję, zaznaczył rozbieżność między haszami i zaalarmował mnie, że nie pasują.

dystrybuowane 2
Rysunek 12. Dane zostały zmienione w bloku 2 łańcucha blokowego Peer A, bloki zostały ponownie wydobyte. Skróty z bloku 2 są teraz inne.

Ale która wersja jest poprawna? Nie można powiedzieć, chyba że wiedziałem, którą konkretną wersję zmienił atakujący.

Byłoby wtedy logiczne, że przydałoby się mieć jeszcze inną wersję do porównania. Zatrzymam kopię w domu (Rysunek 13a — Peer A), kopię w biurze (Rysunek 13b — Peer B) i kolejną kopię w domu mojej teściowej (Rysunek 13c — Peer C).

konsensus rówieśniczy a
Rysunek 13a — Wersja blockchain Peer A

konsensus rówieśniczy b
Rysunek 13b — Wersja blockchain Peer B

konsensus rówieśniczy c
Rysunek 13c — Wersja blockchain Peer C

Teraz nikczemny aktor ponownie uderza, ponownie zmieniają dane w mojej domowej wersji na PC i ponownie wydobywają wszystkie bloki w domu. Ale teraz mam mechanizm konsensusu, dzięki któremu porównuję wersje. Mam system głosowania. Mam 3 kopie prawdy. Peer A (Rysunek 14a) mówi mi jedno, a pozostali 2 (Rysunek 14b) są zgodni co do innej wersji prawdy.

brak konsensusu równorzędnego a
Rysunek 14a — Wersja Peer A (zmiana wprowadzona do bloku 2)

brak konsensusu równorzędnego b&c
Rysunek 14b — Peer B i Peer C są w konsensusie.

Mogę zaufać temu konsensusowi, zakładając, że nikczemny aktor nie byłby w stanie:

  1. Poznaj fizyczną lokalizację moich łańcuchów bloków
  2. Być w stanie włamać się, zmienić dane i ponownie wydobyć 2 z 3 zestawów tego łańcucha bloków.

Powyższy scenariusz jest wprawdzie możliwy, ale mało prawdopodobny.

Mogę więc zignorować moją wersję domową, wykonać kopię zapasową tej wersji, korzystając z wersji z mojego biura i wersji teściowej, i być pewnym, że odzyskałem PRAWIDŁOWĄ wersję prawdy. Dzięki Bogu za teściowe i technologię blockchain.

Teraz wyobraź sobie, że mam dziesiątki tysięcy komputerów (węzłów), losowo rozmieszczonych na całym świecie, obsługujących ten łańcuch bloków (w końcu te dane są dla mnie dość szczególne). Ten zły aktor musiałby wyśledzić ponad 10% tych węzłów i zmienić każdą z nich, aby podać w wątpliwość, która wersja łańcucha jest prawdziwa. Jest to wysoce nieprawdopodobne, jeśli nie niemożliwe. Dokładnie tak działa blockchain bitcoina. Sieć losowo rozmieszczonych węzłów, zarządzanych przez zwykłych ludzi, na oprogramowaniu na ich komputerach lub małych, tanich dedykowanych urządzeniach, przechowujących wersję prawdy i zapewniających sobie wzajemną uczciwość. To właśnie sprawia, że ​​bitcoin jest zdecentralizowany i pozbawiony zaufania. Nie ma jednej strony, która kontroluje blockchain, zarządza nim społeczność uczestników.

Ale Daz, a co z samym bitcoinem? Co z monetami? A co z Ledgerem?

Bitcoiny i Księga Główna

Z wiedzy, którą zbudowaliśmy do tej pory na temat łańcucha bloków, zrozumienie księgi rachunkowej jest tak proste, jak sformatowanie zbioru danych, z którym się bawiliśmy. Do tej pory bawiliśmy się polem tekstowym. I równie ważna jak informacja, że ​​„Daz jest całkiem fajny”, okazuje się, że nikogo to nie obchodzi.

Ale przydałoby się, gdybyśmy wykorzystali „pole danych” do rozpoczęcia rejestrowania czegoś przydatnego, na przykład transakcji. Wyobraźmy sobie, że mamy teraz łańcuch blokowy rozproszony między wieloma węzłami, ale po prostu spojrzymy na Peers A i B, aby zrozumieć ten pomysł, ale w rzeczywistości istnieją tysiące węzłów obsługujących ten sam łańcuch blokowy. W naszym przykładzie zastąpiliśmy pole tekstowe danymi serią pól transakcji. Rysunek 15 pokazuje bloki 4 i 5 z Peer A i Peer B i widzimy, że w każdym bloku znajduje się seria danych transakcyjnych.

księga 1
Rysunek 15 — Peer A i Peer B z danymi transakcyjnymi w łańcuchu bloków.

W bloku 4 widzimy, że osoba o imieniu Rick wysłała kwotę 62.19 USD do osoby o imieniu Isla. Była to jedna transakcja spośród 5 wszystkich transakcji zawartych w tym bloku. Blok danych jest haszowany i wydobywany dokładnie tak, jak widzieliśmy wcześniej.

Nasz nikczemny aktor ponownie uderza, nazywa się Sam i otrzymał od Ricka 97.13 $. Sam zna się trochę na kodowaniu i decyduje, że chce ukraść trochę $$ od Ricka, postanawia zmienić swoją wersję prawdy i zmienia kwotę transakcji na 97,000.13 16 $. Ponownie kopiuje swoją wersję (Rysunek XNUMX), ale jest ona bezużyteczna. Ogromna liczba węzłów w sieci widzi, że jest to wersja prawdy, która nie zgadza się z większością, ta wersja jest odrzucana przez sieć. Niezła próba Sam.

Sam kontra Rick
Rysunek 16. Sam próbuje oszukać Ricka, zmieniając kwotę transakcji. Jest to odrzucane przez sieć konsensusu.

Widzimy całą masę transakcji między stronami, ale skąd wiemy, że Rick miał do wydania 97.13 $?

Coinbase — blok Genesis

Jeśli jesteś w społeczności Bitcoin od jakiegoś czasu, z pewnością słyszałeś o niesławnym bloku Genesis. Satoshi Nakamoto (niesławny, pseudonimowy twórca Bitcoina) wydobył pierwszy blok, który zawierał nagrodę w wysokości 50 Bitcoinów. Nagrody blokowe tworzą bazę monet dla bitcoinów, innymi słowy, aby wydać monety, muszą one najpierw zostać wprowadzone do obiegu. Blok Bitcoin Genesis był w rzeczywistości liczony jako blok „0”, a pierwszych 50 bitcoinów faktycznie nie można było wydać, ale począwszy od bloku 1 tworzyły one bazę monet.

Monety są wprowadzane z każdym blokiem zgodnie ze ściśle kontrolowanym harmonogramem uwalniania. Ten harmonogram wydań to 1 blok mniej więcej co 10 minut. Co 210,000 2021 bloków nagroda za blok jest zmniejszana o połowę. W chwili pisania tego tekstu w lipcu 6.25 r. nagroda za blok wynosi 10 BTC co ~18.7 minut. Obecnie w obiegu znajduje się bitcoin o wartości 21 miliona dolarów, a ostatni 2140-milionowy bitcoin zostanie wydobyty w roku XNUMX.

Blok 1 ustanowił początkową bazę monet, kolejne wydobycie kolejnych bloków rozszerza bazę monet poprzez nagrody blokowe. Patrząc na nasz przykład, zaczynam od bloku numer 1, który tworzy moją bazę monet.

Jeśli spojrzymy na nasz przykład blockchaina (Rysunek 17), zobaczymy, że nagrodziłem się 100 $ w naszym pierwszym bloku. Częściowo dlatego, że jestem dobrym facetem, a częściowo dlatego, że tak się złożyło, że to ja zaminowałem pierwszy blok. Kiedy przechodzimy do bloku 2, zaczynam wydawać monety.

Program zawsze sprawdzi, czy wyniki moich transakcji (wydawane przeze mnie monety) nie przekraczają mojego salda w bazie monet. Dołączam dane transakcyjne do bloku 2 i również wydobywam ten blok, otrzymuję więcej monet jako nagrodę blokową za blok 2.

Odtąd łańcuch blokowy nadal się buduje, utrzymując rozproszoną kopię księgi między węzłami, a te węzły egzekwują reguły określone przez program. Blok 3 jest dołączany do większej liczby transakcji, gdy inni użytkownicy rozpoczynają transakcje. Lucas również wydobywa, rozwiązując zagadkę trudności dla bloku 3 i otrzymuje nagrodę za blok za ten blok. A łańcuch rośnie w kółko.

baza monet 1
Rysunek 17. Baza monet jest teraz dodawana do łańcucha bloków

Zgodnie z konsekwencją, jeśli dane zostaną zmienione, nawet mój jeden prosty znak, niezależnie od tego, czy będzie to sam wynik mieszania, czy dane transakcyjne, jeśli czyjś łańcuch nie jest zgodny z większością, jest po prostu odrzucany.

Jeśli chodzi o saldo, jeśli spróbuję wydać więcej niż moje saldo, sieć odrzuci transakcję. W naszym wcześniejszym przykładzie Sama próbującego zmienić kwotę, którą wysłał mu Rick, wbudowana jest kolejna warstwa bezpieczeństwa zwana kryptografią klucza publicznego i prywatnego, która będzie tematem następnego artykułu. W rzeczywistości Sam nie może edytować tego wpisu, chyba że posiada również klucz prywatny Ricka.

Jeśli spróbuję zmienić historię, sieć odrzuci historię, porównując skróty każdego bloku. Węzły są źródłem prawdy i sprawiają, że wszyscy są uczciwi.

Górnicy rzucają moc obliczeniową na rozwiązanie zagadek kryptograficznych dla każdego bloku, są nagradzani nagrodą za swój wysiłek. Wydobywanie jest niezbędną funkcją łańcucha bloków bitcoinów, bez wydobycia nie ma wartości ani bezpieczeństwa.

Górnicy muszą zużywać energię, aby rozwiązać bloki, jest to naprawdę niedoceniana cecha bezpieczeństwa Bitcoina. W całym tym artykule obszernie mówiliśmy o wydobyciu i przypominaniu bloków, w których wprowadza się zmiany. To, co naprawdę należy zauważyć, to ogromna ilość mocy obliczeniowej przesyłanej do protokołu Bitcoin w każdej minucie każdego dnia. Jeśli tej niezwykle rozległej sieci znalezienie ostatniego bloku zajęłoby 10 minut, ile czasu zajęłoby złemu aktorowi, działającemu w pojedynkę, znalezienie alternatywnego nonce do samodzielnego wydobycia bloku w celu zmiany danych w nim zawartych. Ile energii musiałoby przechwycić państwo narodowe, aby zmienić historię blockchaina Bitcoina? A w połączeniu z wcześniejszym punktem dotyczącym kluczy publicznych i prywatnych chroniących księgę, jedyną rzeczą, którą zły aktor byłby w stanie osiągnąć, jest podwójne wydanie monet, które już posiada, i musieliby mieć większej mocy obliczeniowej z dostępną energią, aby prześcignąć całą resztę sieci. Jest to praktycznie niemożliwe.

Pomaga to również wyjaśnić, dlaczego Bitcoin jest jedynym zasobem cyfrowym, któremu warto poświęcić swój czas, wygrywa pod względem samych efektów sieciowych. Porównaj szybkość mieszania Bitcoina z jakimkolwiek innym protokołem i bledną w porównaniu.

Aby zapoznać się z dalszymi przykładami wszystkich tych funkcji, gorąco polecamy przeczytanie naszej książki B jest dla Bitcoina, dostępne przez Amazon. Przeprowadzimy Cię przez to wszystko i wiele, wiele więcej, aby uzyskać dogłębne, ale przystępne wprowadzenie do wszystkiego, co musisz wiedzieć o Bitcoin.

Wniosek

Omówiliśmy tutaj uproszczoną wersję tego, jak dokładnie działa sieć bitcoin. Rozproszone księgi rachunkowe, hashowanie, łańcuchy bloków, węzły i górnicy pracujący w harmonii, aby zapewnić całkowicie pozbawioną zaufania, odporną na cenzurę, otwartą księgę, otwartą sieć pieniężną. Nikt nie może zmienić księgi, nikt nie może zatrzymać transakcji, nikt nie może cofnąć transakcji i nikt nie może podwójnie wydać swoich monet. Jest genialny i całkowicie rewolucjonizuje światowe finanse.

Pełna historia transakcji jest dostępna dla każdego do przesłuchania i weryfikacji. Oczywiście, w przeciwieństwie do naszych dzisiejszych przykładów, blockchain bitcoin nie wyświetla tożsamości osób dokonujących transakcji, a jedynie ich adresy. Adresy będą tematem następnego artykułu, jest to zbyt obszerny temat, aby go dziś omówić.

W tym artykule wykorzystałem niesamowicie interaktywną platformę zbudowaną przez Andersa Brownwortha, który wykładał blockchain na MIT. Odwiedzać tutaj, idź, zagraj i lepiej zrozumiej koncepcje, które omówiliśmy w tym artykule, uzyskasz znacznie głębsze zrozumienie, jeśli pobawisz się tym wszystkim. Anders ma również bardzo dobry samouczek wideo z tą zawartością, aby pomóc utrwalić naukę.

Jeśli chodzi o adopcję bitcoinów, jeśli to czytasz, jesteś już na czele stawki pod względem adopcji bitcoinów. Adopcja instytucjonalna nadchodzi i nadchodzi szybko, wciąż mamy czas, aby wyprzedzić dużych chłopców. Z moich artykułów staram się pomóc Przeciętnemu Joe edukować się w zakresie tej technologii, abyśmy mogli z niej skorzystać. Najwięcej zyskamy, faceci w okopach, walczący o płace. Rozpocznij uśrednianie kosztów w dolarach na bitcoiny, kupuj codziennie/co tydzień. Traktuj bitcoiny jako swoje konto oszczędnościowe i płyń w górę, to najtrudniejsze pieniądze, jakie kiedykolwiek istniały i rosną wykładniczo każdego dnia. (Nie dotyczy wyłącznie porad finansowych, celów edukacyjnych i rozrywkowych)

Happy Stacking, dzięki za przeczytanie

Daz Bea
Twitter @dazbea

Zalecana literatura:
B jest dla Bitcoina
„Opanowanie Bitcoina”– Andreas M. Antonopoulos
Demo Blockchain – Andersa Brownwortha

Zostaw komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

edycja obrazu 3 4203740775
Współzałożyciel, dyrektor operacyjny