Dzisiaj wyjaśnimy, czym jest haszowanie i podpis cyfrowy w łańcuchu bloków.
Czym jest hashowanie w łańcuchu bloków?
Haszowanie odnosi się do koncepcji pobierania dowolnej ilości danych wejściowych, stosowania do niej pewnego algorytmu i generowania danych wyjściowych o stałym rozmiarze zwanych hashem. Dane wejściowe mogą być dowolną liczbą bitów, które mogą reprezentować pojedynczy znak, plik MP3, całą powieść, arkusz kalkulacyjny historii bankowej lub nawet cały Internet.
Chodzi o to, że dane wejściowe mogą być nieskończenie duże. Algorytm haszowania można wybrać w zależności od potrzeb i istnieje wiele publicznie dostępnych algorytmów haszujących. Chodzi o to, że algorytm przyjmuje nieskończoną liczbę bitów, stosuje do nich pewne obliczenia i wytwarza skończoną liczbę bitów. Na przykład 256 bitów.
Do czego można użyć tego haszyszu?
Obecnie powszechnie używa się skrótów do pobierania odcisków palców, zwanych również strefami weryfikacji. Oznacza to, że hash jest używany do sprawdzenia, czy plik nie został zmodyfikowany ani zmodyfikowany w niezamierzony sposób przez autora. Jeśli na przykład WikiLeaks opublikuje zestaw plików wraz z ich skrótami MD5, ktokolwiek pobierze te pliki, może sprawdzić, czy faktycznie pochodzą one z WikiLeaks, obliczając skrót MD5 pobranych plików, a jeśli skrót nie pasuje do tego, co zostało opublikowane przez WikiLeaks, to wiesz, że plik został w jakiś sposób zmodyfikowany.
W jaki sposób blockchain wykorzystuje hash?
Hasze są używane w blockchainach do reprezentowania aktualnego stanu świata. Dane wejściowe to kompletny stan łańcucha bloków, tj. Wszystkie transakcje, które miały miejsce do tej pory, a wynikowy skrót wyjściowy reprezentuje bieżący stan łańcucha bloków. Skrót służy do uzgodnienia między wszystkimi stronami, że stan globalny jest jeden i ten sam, ale w jaki sposób oblicza się te skróty?
Pierwszy hash jest obliczany dla pierwszego bloku lub bloku Genesis przy użyciu transakcji w tym bloku. Sekwencja transakcji początkowych jest używana do obliczenia skrótu bloku dla bloku Genesis. Dla każdego nowego bloku, który jest następnie generowany, skrót poprzedniego bloku, a także jego własne transakcje, są również używane jako dane wejściowe do określenia skrótu jego bloku. W ten sposób powstaje łańcuch bloków, każdy nowy hash bloku wskazuje na wcześniejszy skrót bloku.
Ten system haszowania zapewnia, że żadna transakcja w historii nie może być manipulowana, ponieważ jeśli jakakolwiek część transakcji ulegnie zmianie, zmieni się również hash bloku, do którego należy, oraz wszelkie kolejne skróty blokowe w rezultacie. W rezultacie dość łatwo byłoby wyłapać jakąkolwiek manipulację, ponieważ można porównać tylko skróty. Jest to świetne, ponieważ wszyscy w łańcuchu bloków muszą zgodzić się tylko na 256 bitów, aby reprezentować potencjalnie nieskończony stan łańcucha blokowego. Łańcuch bloków Ethereum ma obecnie dziesiątki gigabajtów, ale aktualny stan łańcucha bloków, w tym nagraniu, to ten szesnastkowy hash reprezentujący 256 bitów.
Co to są podpisy cyfrowe w łańcuchu bloków?
Podpisy cyfrowe, podobnie jak podpisy rzeczywiste, są sposobem na udowodnienie, że ktoś jest tym, za kogo się podaje, z wyjątkiem tego, że używamy kryptografii lub matematyki, które są bezpieczniejsze niż podpisy odręczne, które można łatwo sfałszować. Podpis cyfrowy to sposób na udowodnienie, że wiadomość pochodzi od konkretnej osoby i od nikogo innego, na przykład od hakera.
Podpisy cyfrowe są dziś używane w całym Internecie. Za każdym razem, gdy odwiedzasz witrynę internetową za pośrednictwem ACTPS, korzystasz z protokołu SSL, który wykorzystuje podpisy cyfrowe do ustanowienia zaufania między Tobą a serwerem. Oznacza to, że kiedy odwiedzasz Facebook.com, Twoja przeglądarka może sprawdzić podpis cyfrowy dołączony do strony internetowej, aby zweryfikować, czy faktycznie pochodzi on z Facebooka, a nie od hakera.
W asymetrycznych systemach szyfrowania użytkownicy generują coś, co nazywa się parą kluczy, czyli kluczem publicznym i prywatnym przy użyciu znanego algorytmu. Klucz publiczny i klucz prywatny są ze sobą powiązane pewną matematyczną zależnością. Klucz publiczny ma być rozpowszechniany publicznie, aby służyć jako adres do odbierania wiadomości od innych użytkowników, takich jak adres IP lub adres domowy.
Klucz prywatny musi być trzymany w tajemnicy i służy do cyfrowego podpisywania wiadomości wysyłanych do innych użytkowników. Podpis jest dołączany do wiadomości, aby odbiorca mógł ją zweryfikować za pomocą klucza publicznego nadawcy. W ten sposób odbiorca ma pewność, że tylko nadawca mógł wysłać tę wiadomość. Generowanie pary kluczy jest analogiczne do tworzenia konta w łańcuchu bloków, ale bez konieczności rejestracji w dowolnym miejscu. Całkiem fajne. Dodatkowo każda transakcja wykonywana na blockchainie jest cyfrowo podpisana przez nadawcę.
Aby to wszystko powiązać, nie byłoby blockchaina bez hashowania i podpisów cyfrowych. Hashing umożliwia wszystkim członkom łańcucha blokowego uzgodnienie aktualnego stanu świata, podczas gdy podpisy cyfrowe zapewniają, że wszystkie transakcje są dokonywane tylko przez prawowitych właścicieli. Opieramy się na tych dwóch właściwościach, aby upewnić się, że łańcuch bloków nie został uszkodzony ani naruszony.