Blockchain dla Nie-TechnikówNew Economy

Mieszanie w prawdziwym świecie



Opowieść o porównywaniu danych i tworzeniu zagadek obliczeniowych

W kroku poprzednim wprowadzono kryptograficzne funkcje skrótu i omówiono różne wzorce stosowania funkcji skrótu do danych. Krok ten mógł się wydawać suchym ćwiczeniem intelektualnym, ale w rzeczywistości ma on bardzo praktyczne znaczenie. Dlatego ten krok koncentruje się na zastosowaniu funkcji skrótu i wartości skrótu w świecie rzeczywistym. Bierze pod uwagę główne przypadki użycia funkcji skrótu w prawdziwym życiu i wyjaśnia ich ideę. Ten krok pokazuje również, dlaczego te przypadki użycia działają zgodnie z przeznaczeniem. Wreszcie, ten krok wskazuje, gdzie blockchain używa wartości skrótu.

Porównywanie danych

Ponieważ jest to najprostszy przypadek użycia wartości skrótu, najpierw rozważa się porównanie danych na podstawie ich wartości skrótu.

Cel

Celem jest porównanie danych (np. plików lub danych transakcyjnych) bez porównywania ich zawartości kawałek po kawałku i sprawienie, by porównywanie dowolnego rodzaju danych, niezależnie od ich wielkości i zawartości, było tak proste, jak porównywanie dwóch liczb.

Pomysł

Zamiast porównywać dane poprzez jawne porównywanie ich zawartości kawałek po kawałku, porównujesz ich kryptograficzne wartości skrótu.

Jak to działa

Obliczasz i porównujesz kryptograficzną wartość skrótu wszystkich rozważanych danych. Jeśli wszystkie wartości skrótu kryptograficznego są różne, wszystkie rozważane dane również się różnią. Jeśli dwie lub więcej kryptograficznych wartości skrótu są identyczne, odpowiadające im dane wejściowe są również identyczne.

Dlaczego to działa

Porównywanie danych przez porównanie ich wartości skrótu kryptograficznego działa ze względu na odporność na zderzenia funkcji skrótu kryptograficznego.

Wykrywanie zmian danych

Pomysł porównania danych na podstawie ich wartości skrótu można łatwo rozszerzyć na przypadek wykrycia zmian.

Cel

Celem jest ustalenie, czy dane (np. dane pliku lub transakcji), które mają pozostać niezmienione, zostały zmienione po określonej dacie lub po wysłaniu do kogoś lub po zapisaniu w bazie danych.

Pomysł

Porównanie kryptograficznej wartości skrótu rozważanych danych, która została utworzona w przeszłości, z nowo utworzoną kryptograficzną wartością skrótu tych samych danych jest kluczem do identyfikacji zmian. Jeśli obie wartości skrótu są identyczne, dane nie zostały zmienione po czasie, w którym utworzono starą wartość skrótu.

Jak to działa

Tworzysz kryptograficzną wartość skrótu danych, które powinny pozostać niezmienione. Gdy musisz sprawdzić, czy dane zostały zmienione w późniejszym czasie, ponownie utworzysz kryptograficzną wartość skrótu danych. Następnie porównujesz nowo utworzoną wartość skrótu z wartością skrótu utworzoną w przeszłości. Jeśli obie wartości skrótu są identyczne, dane nie zostały zmienione po utworzeniu pierwszej wartości skrótu. W przeciwnym razie dane zostały w międzyczasie zmienione. Ten sam pomysł można zastosować przy wysyłaniu danych do kogoś. Jeśli utworzysz wartość skrótu danych przed ich wysłaniem, a odbiorca utworzy wartość skrótu danych, które otrzymuje, zarówno nadawca, jak i odbiorca porównają obie wartości skrótu. Jeśli obie wartości skrótu są identyczne, dane nie zostały zmienione w trakcie przesyłania.

Dlaczego to działa

Wykrywanie zmian w danych jest w rzeczywistości procesem porównywania danych ze sobą przed i po określonych zdarzeniach, takich jak upływ czasu, przechowywanie lub pobieranie danych z bazy danych lub wysyłanie ich przez sieć. Wykrywanie zmian w danych, które powinny pozostać niezmienione, działa z powodu odporności na zderzenia funkcji kryptograficznych funkcji skrótu.

Odwoływanie się do danych w sposób wrażliwy na zmiany

Porównywanie danych i wykrywanie zmian na podstawie ich wartości skrótu można uznać za podstawowe przypadki użycia wartości skrótu. Nieco bardziej zaawansowanym przypadkiem zastosowania wartości skrótu są odwołania skrótu, które zostały przedstawione poniżej.

Cel

Celem jest odniesienie się do danych (np. danych transakcji), które są przechowywane gdzie indziej (np. na dysku twardym lub w bazie danych) i zapewnienie, że dane pozostały niezmienione.

Pomysł

Chodzi o połączenie kryptograficznej wartości skrótu przechowywanych danych z informacją o miejscu, w którym dane się znajdują. Gdyby dane zostały zmienione, obie informacje nie byłyby już spójne, a zatem odwołanie do skrótu stałoby się nieprawidłowe.

Jak to działa

Odniesienia do danych są cyfrowym odpowiednikiem biletów do szatni. Bilety do szatni wskazują fizyczne miejsce, w którym kurtka jest przechowywana w szatni. Kupon do szatni służy później do odzyskania kurtki. Odniesienia do danych w komputerach działają w ten sam sposób: są to fragmenty danych, które odnoszą się do innych danych. Programy komputerowe używają referencji w celu zapamiętania miejsca, w którym dane zostały zapisane, i późniejszego ich odzyskania. Odnośniki do skrótów to szczególny rodzaj odniesień, które wykorzystują moc kryptograficzną wartości skrótu. Dla uproszczenia odniesienia do skrótów można traktować jako bilety do szatni, które wyświetlają wartości skrótów zamiast zwykłych liczb Referencje skrótu odnoszą się do innych danych i dodatkowo sprawdzają, czy dane, o których mowa, nie uległy zmianie od czasu utworzenia odwołania. W przypadku, gdy dane, których dotyczy odwołanie, zostały zmienione, odwołanie nie pozwala już na ich odzyskanie. W takim przypadku odwołanie do skrótu uważa się za uszkodzone lub nieprawidłowe. Jest to podobne do posiadania biletu do szatni, który wskazuje na wieszak na płaszcz, który nie nosi już twojej kurtki. W takim przypadku pracownik szatni nie może już przekazać kurtki. Cała idea referencji skrótu polega na ochronie użytkowników przed odzyskiwaniem danych, które zostały przypadkowo zmienione z powodu błędów technicznych lub celowo przez kogoś innego, bez informowania o tym użytkownika. Dlatego odwołania do skrótów są używane we wszystkich przypadkach, w których dane powinny pozostać niezmienione po utworzeniu.

Schematyczna ilustracja

Blockchain w dużym stopniu zależy od odniesień do skrótów. Dlatego ich zrozumienie jest kluczowe dla zrozumienia blockchaina i zrozumienia następujących kroków . Z tego powodu następujące trzy rysunki służą dwóm celom: Po pierwsze, schematycznie ilustrują one funkcjonowanie skrótów. Po drugie, wprowadzają obrazową reprezentację odwołań do skrótów, która jest wykorzystywana w poniższych krokach podczas ilustrowania funkcjonowania struktury danych blockchain. Rysunek pierwszy ilustruje schematycznie funkcjonowanie odniesień skrótu, przedstawiając prawidłowe odwołanie do skrótu.



Szare kółko oznaczone R1 oznacza prawidłowe odwołanie do skrótu. Białe pole reprezentuje niektóre dane, które powinny pozostać niezmienione. Strzałka, która przechodzi od koła do pudełka, przedstawia funkcjonowanie odwołania skrótu. Strzałka wskazuje odniesienie do danych, do których się odnosi. Rysunek drugi ilustruje symboliczną reprezentację przerwanego lub nieprawidłowego skrótu.



Czarna skrzynka zawierająca zmodyfikowane powitanie reprezentuje dane, które zostały zmienione po utworzeniu odwołania. Szary okrąg nadal reprezentuje pierwotnie utworzone odwołanie do skrótu. Przeciągnięta strzałka, która wskazuje od koła do zmienionego pola, wskazuje, że odniesienie skrótu R1 jest uszkodzone, nie pozwala już na dostęp do pobierania danych, ponieważ zostały one w międzyczasie zmienione. Rysunek trzeci ilustruje sytuację, w której nowe odwołanie do skrótu zostało utworzone po zmianie danych.



Sytuację tę przedstawia czarna ramka reprezentująca zmienione dane, czarny okrąg reprezentujący nowo utworzone odwołanie do skrótu oraz prosta strzałka wskazująca od koła do ramki.

Dlaczego to działa

Kluczowym punktem odwołań do skrótów jest fakt, że wykorzystują one kryptograficzne wartości skrótów, które można postrzegać jako unikalne odciski palców danych. Dlatego bardzo mało prawdopodobne jest, aby mieć dwa różne fragmenty danych o identycznej wartości skrótu. W rezultacie przerwane odwołanie do skrótu jest uważane za dowód, że dane zostały zmienione po utworzeniu odwołania do skrótu.

Przechowywanie danych w sposób wrażliwy na zmiany

Pomysł odwoływania się do danych na podstawie ich wartości skrótu można rozszerzyć. Naturalnym rozszerzeniem tego pomysłu jest przechowywanie danych w sposób wrażliwy na zmiany.

Cel

Celem jest przechowywanie dużej ilości danych, np. Danych transakcji, które powinny pozostać niezmienione. Wszelkie zmiany tych danych należy szybko i łatwo wykryć.

Pomysł

Numerki do szatni wskazują na wieszaki na kurtki. To jest proste i jednoznaczne. Ale co uniemożliwia ci włożenie numerku do szatni do kieszeni innej kurtki i przechowywanie drugiej kurtki również w szatni? W rezultacie ten ostatni numerek do szatni wskazuje na kurtkę zawierającą bilet do szatni, która z kolei wskazuje na inną kurtkę. W rzeczywistości możesz tworzyć długie i skomplikowane łańcuchy kurtek, które mają numerki do szatni w swoich kieszeniach, które wskazują na inne kurtki, które również mają bilet do szatni w kieszeniach i tak dalej. W podobny sposób można przechowywać dane wraz z odwołaniami do skrótów, które wskazują na inne dane, które z kolei przechowują odniesienia do skrótów, które odnoszą się do dalszych danych, i tak dalej. Jeśli dowolne z odwołań do danych lub skrótów zostaną zmienione po ich utworzeniu, wszystkie odwołania do skrótów zostaną zerwane. Od złamanego skrótu ,referencje służą jako dowód, że dane zostały zmienione po utworzeniu referencji, cała konstrukcja przechowuje dane w sposób wrażliwy na zmiany.

Jak to działa

Istnieją dwa klasyczne wzorce używania referencji skrótu w celu przechowywania danych w sposób wrażliwy na zmiany:

•  Łańcuch
•  Drzewo

Łańcuch

Łańcuch połączonych danych, zwany także połączoną listą 2, powstaje, gdy każda część danych zawiera również odwołanie skrótu do innej części danych. Taka struktura jest przydatna do przechowywania i łączenia danych, które nie są w pełni dostępne w danym momencie, ale zamiast tego przybywają krok po kroku w sposób ciągły. Rysunek ilustruje ten pomysł za pomocą symboli wprowadzonych powyżej.

Utworzenie takiego łańcucha rozpoczyna się od fragmentu danych oznaczonego Dane 1 i utworzenia odwołania R1. Będąc pierwszą częścią danych, Dane 1 nie zawierają żadnego odwołania do skrótu. Gdy nadchodzą nowe dane, są one łączone z odwołaniem do skrótu, który wskazuje na Dane 1. Odniesienie do skrótu R2 odnosi się do nowo przybyłych danych i do skrótu R1. Odniesienie skrótu R3, które odnosi się do danych 3, i odniesienie skrótu R2, jest tworzone w podobny sposób. Numer referencyjny skrótu R3 jest wszystkim, czego potrzebujesz, aby uzyskać dostęp do wszystkich danych w łańcuchu w odwrotnej kolejności od ich przybycia. Odniesienie R3 jest również nazywane wierzchołkiem łańcucha, ponieważ odnosi się do najczęściej dodawanego fragmentu danych. Ważne jest, aby nie pomieszać terminu "głowa" (jest to obecnie najczęściej dodawany fragment danych) z terminem "nagłówek".

Drzewo

Rysunek ilustruje, w jaki sposób dane transakcji mogą być łączone z odniesieniami skrótu w sposób podobny do drzewa.

Taka struktura jest również nazywana drzewem Merkle , ponieważ zaproponował ją informatyk o nazwisku Merkle, który wygląda jak drzewo wywrócone do góry nogami. Jest to bardzo przydatne do grupowania wielu różnych fragmentów danych, które są dostępne w tym samym czasie, i udostępniania ich za pomocą pojedynczego skrótu. Aby utworzyć drzewo zilustrowane na powyższym rysunku, zacznij od czterech danych transakcji reprezentowanych przez pola na dole rysunku. Najpierw tworzone są odwołania mieszające do poszczególnych danych transakcji (R1 do R4), które są następnie grupowane w pary. Następnie tworzone są odwołania skrótu do par odwołań skrótu (R12 i R34). Ta procedura jest powtarzana, aż w końcu dojdziesz do pojedynczego odwołania do skrótu, które jest również nazywane źródłem root Drzewa Merkle (oznaczone R).

Dlaczego to działa

Wyjaśnione struktury danych przechowują dane w sposób wrażliwy na zmiany, ponieważ łączą i łączą dane z odwołaniami do skrótów. Odnośniki te ulegają uszkodzeniu, gdy dane, do których się odnoszą, są zmieniane po ich utworzeniu. Stąd obserwowanie zepsutego odwołania w takiej konstrukcji jest dowodem na to, że niektóre dane zostały zmienione po utworzeniu struktury. W przeciwnym razie można stwierdzić, że cały konstrukt nie został zmieniony od momentu jego utworzenia.

Spowodowanie czasochłonnych obliczeń

Wartości skrótu są przydatne nie tylko do zapewnienia bezpieczeństwa i wydajności podstawowych operacji na plikach, takich jak porównywanie, odsyłanie i przechowywanie danych. Wartości skrótu można także użyć, aby umożliwić komputerom wyzwanie innym komputerom za pomocą skomplikowanych łamigłówek. Choć może to zabrzmieć nieco dziwnie, okaże się, że takie użycie wartości skrótu jest jedną z najważniejszych koncepcji blockchaina.

Cel

Z powodów, które staną się zrozumiałe na późniejszych etapach, konieczne może być stworzenie zagadek wymagających zasobów obliczeniowych w celu rozwiązania. Rozwiązanie tych zagadek na podstawie wiedzy lub danych przechowywanych gdzieś lub za pomocą myślenia, takich jak test IQ lub test wiedzy, nie powinno być możliwe. Jedynym sposobem na rozwiązanie tych zagadek jest sama moc obliczeniowa i trudność pracy obliczeniowej.

Pomysł

Zamek szyfrowy to specyficzny zamek, który wymaga unikalnej sekwencji cyfr, aby go otworzyć. Jeśli nie znasz sekwencji otwierającej zamek, będziesz systematycznie wypróbowywać wszystkie możliwe kombinacje, aż w końcu dojdziesz do unikalnej kombinacji, która otwiera zamek. Ta procedura gwarantuje otwarcie zamka, ale jest czasochłonna. Systematyczne wypróbowywanie wszystkich możliwych kombinacji nie ma nic wspólnego z wiedzą lub rozumowaniem intelektualnym. Podejście do otwierania zamka szyfrowego opiera się na czystej staranności i ciężkiej pracy. Łamigłówki to łamigłówki obliczeniowe, które można postrzegać jako cyfrowy odpowiednik zadania polegającego na otwieraniu zamka szyfrowego metodą prób i błędów.

Jak to działa

Elementy mieszania puzzli to:

•  Podane dane muszą pozostać niezmienione
•  Dane, które można dowolnie zmieniać, tzw. nonce
•  Należy zastosować funkcję skrótu
•  Ograniczenia wartości skrótu połączonego skrótu, zwanego także poziomem trudności

Rysunek poniższy ilustruje ustawienie puzzli mieszających.



Połączony skrót jest stosowany do danych i wartości jednorazowej. Wynikowa wartość skrótu musi spełniać podane ograniczenia. Łamigłówki można rozwiązać tylko metodą prób i błędów. Wymaga to odgadnięcia wartości jednorazowej, obliczenia wartości skrótu połączonych danych za pomocą wymaganej funkcji skrótu i oceny wynikowej wartości skrótu na podstawie ograniczeń. Jeśli wartość skrótu spełnia ograniczenia, rozwiążesz zagadkę skrótu; w przeciwnym razie kontynuowałbyś z innym nonce, aż w końcu rozwiążesz zagadkę. Rozwiązanie, które w połączeniu z podanymi danymi daje wartość skrótu spełniającą ograniczenia, nazywane jest rozwiązaniem. Zawsze musisz przedstawić ten konkretny nonce, twierdząc, że rozwiązałeś zagadkę haszującą.

Przykład ilustrujący

Rozważmy prawdziwą łamigłówkę do zilustrowania jej działania. Wcześniej ,zobaczyłeś, że skrócona wartość skrótu w Hello World! to 7F83B165. Ale jakie dane połączone z Hello World! dałoby skróconą wartość skrótu z trzema wiodącymi zerami? Zatem hashowa łamigłówka brzmi: znajdź nonce w połączeniu z Hello World! dającce skróconą wartość skrótu, która zaczyna się od trzech zer wiodących. Pobrudźmy sobie ręce i wypróbujmy nonce. Tabela poniżej pokazuje wartość jednorazową, tekst do zaszyfrowania i wynikową skróconą wartość skrótu.



Jak widać, nonce 614 rozwiązuje zagadkę haszującą, co oznacza, że zaczynając od nonce 0 i zwiększając kolejno o 1, potrzebujesz 615 kroków, aby znaleźć rozwiązanie. Gdyby ograniczenie znalazło wartość skrótu z jednym wiodącym zerem, rozwiązalibyśmy ją już po czterech krokach, odkąd Hello World! 3 daje wartość skrótu z jednym wiodącym zerem.

Poziom trudności

Wymaganie wartości skrótu w celu spełnienia określonego ograniczenia jest rdzeniem układanki skrótu. Stąd ani ograniczenie, ani jego opis nie są arbitralne. Zamiast tego ograniczenie stosowane przez łamigłówki jest zestandaryzowane, dzięki czemu komputery mogą kwestionować inne komputery z łamigłówkami. W kontekście zagadek mieszających ograniczenia są często nazywane odpowiednio poziomem trudności lub poziomem trudności. Trudność jest wyrażana jako liczba naturalna i odnosi się do liczby wiodących ze jaką musi mieć wartość hash . Zatem trudność 1 oznacza, że wartość skrótu musi mieć (co najmniej) jedno wiodące zero, podczas gdy trudność 10 oznacza, że wartość skrótu musi mieć co najmniej 10 zer wiodących. Im wyższy poziom trudności, tym więcej wymaganych zer wiodących i bardziej skomplikowana łamigłówka. Im bardziej skomplikowana jest łamigłówka, tym więcej mocy obliczeniowej lub czasu potrzeba na jej rozwiązanie.

Dlaczego to działa
Funkcjonowanie łamigłówek zależy od tego, że funkcje skrótu są funkcjami jednokierunkowymi. Nie można rozwiązać zagadki hash poprzez sprawdzenie ograniczeń, które musi spełniać wartość skrótu, a następnie zastosowanie funkcji skrótu w przeciwnym kierunku (tj. Przejście od pożądanego wyniku do wymaganego wejścia). Łamigłówki można rozwiązać tylko metodą prób i błędów, która zużywa dużo mocy obliczeniowej, a tym samym dużo czasu i energii. Poziom trudności wpływa bezpośrednio na liczbę prób potrzebnych średnio do znalezienia rozwiązania, co z kolei wpływa na zasoby obliczeniowe lub czas potrzebny na znalezienie rozwiązania. Funkcje skrótu są deterministyczne i szybko generują wartości skrótu dla dowolnego rodzaju danych. Dlatego po znalezieniu rozwiązania łatwo jest zweryfikować, czy dane w połączeniu z wartością jednorazową rzeczywiście dają wartość skrótu spełniającą ograniczenia. Jeśli obliczona wartość nie spełnia ograniczenia, nie można winić funkcji skrótu, ponieważ odchylenie jest spowodowane tylko tym, że zagadka nie została rozwiązana.

Uwaga

W kontekście blockchaina łamigłówki są często nazywane dowodem pracy, ponieważ ich rozwiązanie dowodzi, że ktoś wykonał pracę niezbędną do jego rozwiązania.

Zastosowanie haszowania w Blockchain

W obrębie łańcucha bloków hashowanie stosuje się w następujących przypadkach: Przechowywanie danych transakcji w sposób wrażliwy na zmiany Jako cyfrowy odcisk palca danych transakcji Jako sposób na poniesienie kosztów obliczeniowych związanych ze zmianą struktury danych blockchain

Perspektywy

W tym kroku wyjaśniono główne przypadki użycia wartości skrótu i naszkicowano ich użycie w łańcuchu bloków. Kolejne kroki omówią bardziej szczegółowo sposób, w jaki haszowanie jest wykorzystywane przez blockchain.

PODSUMOWANIE

•  Wartości skrótu można użyć:

-Aby porównać dane
-Aby wykryć, czy dane, które miały pozostać niezmienione, zostały zmienione
-Odwoływanie się do danych w sposób wrażliwy na zmiany
-Aby przechowywać zbiór danych w sposób wrażliwy na zmiany
-Aby utworzyć kosztownie obliczeniowe zadania