Drzewo Merkle pozwala komputerów w sieci, aby weryfikować poszczególne rekordy bez konieczności przeglądania i porównywania wersji całej bazy danych. Robią to za pomocą kryptografii, która ujawnia pojedynczy rekord, a jednocześnie gwarantuje, że wszystkie inne rekordy w bazie danych nie zostały zmienione. Drzewa Merkle, po raz pierwszy opatentowane w 1979 roku przez Ralpha Merkle, były ważnym kluczem do weryfikacji baz danych w całej historii komputerów.

Drzewa Merkle są szczególnie przydatne w sieciach rozproszonych, w których wiele komputerów przechowuje kopie tej samej bazy danych lub księgi. Kiedy Satoshi stworzył Bitcoin, użycie drzewa Merkle do weryfikacji transakcji było oczywiste. Ze względu na rozproszony charakter łańcucha bloków potrzebujemy bezpiecznego i szybkiego sposobu, aby upewnić się, że wszyscy w sieci mają tę samą księgę.

Jeśli studiowałeś blockchain, prawdopodobnie słyszałeś o drzewach Merkle i korzeniach Merkle. Jednak wielu inwestorów i entuzjastów nie wie, jak działają. Biorąc pod uwagę, że są one kluczową częścią bezpieczeństwa i zaufania w łańcuchu bloków, warto zrozumieć podstawy. Ten genialny mechanizm umożliwia przechowywanie i odzyskiwanie milionów transakcji typu blockchain.

Potrzeba skutecznej weryfikacji

Zacznijmy od podstaw. Dlaczego potrzebujemy drzew Merkle i co sprawia, że ​​są przydatne w kontekście łańcucha bloków?

Aby odpowiedzieć na to pytanie, rozważ świat bez drzew Merkle do weryfikacji. Gdyby Bitcoin nie miał drzew Merkle, każdy węzeł w sieci musiałby przechowywać pełną kopię każdej pojedynczej transakcji, która kiedykolwiek miała miejsce na Bitcoinie. Następnie, potwierdzając przeszłą transakcję, węzeł musiałby sięgnąć do sieci i pobrać kopie księgi od swoich rówieśników. Linia po linii, węzeł musiałby porównać każdy wpis z własnymi rekordami, aby upewnić się, że księgi sieciowe są dokładnie dopasowane. Gdyby doszło do jakichkolwiek zmian, zagroziłoby to bezpieczeństwu sieci.

Ponieważ walidacja danych wymaga posiadania samych danych, każde żądanie weryfikacji na Bitcoin wymagałoby przesłania ogromnych pakietów informacji przez sieć. Następnie komputer weryfikujący musiałby poświęcić moc obliczeniową na porównanie rejestrów, aby upewnić się, że nie ma żadnych zmian.

Drzewa Merkle rozwiązują ten problem, haszując rekordy w księdze. To skutecznie oddziela dowód danych od samych danych. Te skróty są o rząd wielkości mniejsze niż sama księga, więc udowodnienie ważności transakcji obejmuje tylko wysyłanie małych pakietów przez sieć. Pozwala udowodnić, że dwie wersje księgi są spójne przy minimalnej mocy obliczeniowej i przepustowości sieci.

Jeśli to brzmi świetnie, to dlatego, że tak jest. Drzewa Merkle to naprawdę fajny wynalazek kryptograficzny. Więc teraz pytanie brzmi, jak one działają?

Szybkie przypomnienie haszowania

Zanim przejdziemy do szczegółów drzew Merkle, potrzebujemy podstaw kryptograficznych w haszowaniu. Blockchainy używają haszowania wszędzie, od algorytmów sprawdzania poprawności pracy po weryfikację plików. Haszowanie jest podstawą nowoczesnej kryptografii.

Bez wchodzenia zbyt daleko w chwasty, skrót to rodzaj algorytmu, który pobiera dowolne dane wejściowe, bez względu na długość, i wyświetla losowe dane wyjściowe o standardowej długości. Na przykład w Bitcoin transakcja „Alicja wysyła Bobowi 1 BTC” wygląda jak ciąg losowych znaków:

„3cbcf3e1075b0b3357140de438336733bd6927cd1e78d36cc278324fcce932ad”

Ten ciąg znaków jest hashem i jest deterministyczny. Oznacza to, że „A -> B 1BTC ”zawsze łączy się z tym samym wyjściem.

Jednak skróty mają inną wspaniałą właściwość. Nawet niewielka zmiana w lawinie wejściowej prowadzi do drastycznej zmiany mocy wyjściowej. Jeśli nieznacznie zmienimy transakcję na „A-> B 1.1BTC ”, wtedy skrót staje się zupełnie inny. Dlatego od razu widać, czy rekord został zmieniony nawet o jeden znak.

Hashe są niesamowite również z innych powodów, ale zrozumienie, że skróty są deterministyczne, a zmiany tworzą wodospad, wystarczy, aby zrozumieć, jak działa drzewo Merkle.

Jak tworzysz drzewo Merkle

drzewo merkle proste

Drzewo Merkle. Drzewa Blockchain Merkle zawierają tysiące skrótów. Na zdjęciu tylko 8.

Nadszedł czas, aby zbudować nasze drzewo Merkle. Nazwiemy naszą transakcję Allice / Bob powyżej „Transakcja A”. Kiedy ta transakcja zostanie dodana do łańcucha bloków, staje się częścią bloku z innymi transakcjami. Dla uproszczenia nazwiemy te transakcje po prostu B, C i D..

Każda z tych transakcji jest zaszyfrowana, więc nie musimy trzymać się szczegółów, kto i ile była transakcja. Ale nadal możemy udowodnić, że transakcja nie została zmieniona, ponieważ mamy wszystkie skróty. Teraz mamy H (A), H (B), H (C) i H (D).

Trzymanie się czterech haszów nie jest takie trudne. Jednak każdy blok Bitcoin zawiera około 2000 transakcji, więc trzymanie i przesyłanie wszystkich tych skrótów to zbyt dużo pamięci i przepustowości. Drzewo Merkle rozwiązuje ten problem, łącząc transakcje w pary i łącząc je razem.

Teraz H (A) + H (B) = H (AB) i H (C) + H (D) = H (CD). Łącząc i haszując transakcje, zmniejszyliśmy o połowę liczbę skrótów, które musimy przechowywać. Możemy zrobić to samo ponownie, więc H (AB) + H (CD) = H (ABCD). W ten sposób mamy teraz do przechowywania tylko jeden hash, który jest deterministyczny na podstawie skrótów wszystkich transakcji bazowych. Ten pojedynczy hash nazywa się korzeniem Merkle.

Weryfikacja transakcji za pomocą głównego katalogu Merkle

Hash root drzewa Merkle jest kluczową częścią każdego bloku Bitcoin, który jest łączony z następnym blokiem w łańcuchu.

Każdy blok Bitcoin ma korzeń Merkle zawarty w nagłówku bloku. W ten sposób weryfikujemy zawartość bloku i spójność wielu ksiąg. Jeśli moja kopia łańcucha bloków ma ten sam katalog główny Merkle dla bloku, co twoja kopia łańcucha bloków, to wiemy, że wszystkie transakcje w tym bloku są takie same i zgadzamy się co do księgi. Nawet niewielka niespójność prowadziłaby do bardzo różnych korzeni Merkle z powodu właściwości haszyszu.

merkle potwierdź tx

Aby potwierdzić transakcję D, wystarczy znać H (AB), H (C), H (D) i H (EFGH).

Jeśli wystąpi rozbieżność w katalogu głównym Merkle, mogę poprosić o te dwa skróty podrzędne od zaufanego organu. Stamtąd możemy zawęzić, na który rekord się nie zgadzamy, prosząc o dalsze pod-hashowanie. W rezultacie możemy zidentyfikować rozbieżności bez konieczności przechodzenia linia po linijce przez całą księgę.

Wniosek

Łańcuchy bloków, bazy danych i sieci na całym świecie używają drzew Merkle do szybkiego i wydajnego koordynowania rekordów na wielu komputerach. Teraz, gdy znasz już podstawy, możesz łatwo zrozumieć, dlaczego ten sposób strukturyzowania danych sprawia, że ​​łańcuch bloków jest bezpieczny i wydajny.

Mike Owergreen Administrator
Sorry! The Author has not filled his profile.
follow me