Blockchain dla Nie-TechnikówNew Economy

Przechowywanie danych transakcji



Budowanie i utrzymywanie historii danych transakcji

W oparciu o poprzednie pięć kroków powinieneś teraz być w stanie śledzić własność na podstawie całej historii danych transakcji i opisywać poszczególne przeniesienia własności w bezpieczny sposób, autoryzując transakcje z podpisami cyfrowymi i jednoznacznie identyfikując konta użytkowników. Nie zastanawiałem się jednak, jak bezpiecznie przechowywać wszystkie dane transakcji, które składają się na historię transakcji. To jest punkt, w którym struktura danych blockchain wchodzi do dyskusji. Ten krok wprowadza strukturę danych blockchain i wyjaśnia, jak jest skonstruowana.

Metafora Czy pamiętasz ostatnią wizytę w bibliotece i skorzystałeś z jednego z tradycyjnych katalogów kart? Katalogi biblioteczne są rejestrami wszystkich książek będących własnością biblioteki. Niektóre tradycyjne biblioteki nadal używają katalogów kart do zarządzania swoimi zapasami. Każda karta w jednym z tych katalogów reprezentuje jedną książkę, a na karcie znajdują się najważniejsze informacje o tej książce, takie jak imię i nazwisko autora, tytuł książki, data publikacji oraz lokalizacja książki w bibliotece takie jak numer podłogi, pokoju, półki i regału. Aby zidentyfikować książki, karty katalogowe często zawierają unikalne numery referencyjne, które są również wyświetlane na grzbietach książek. Większość bibliotek prowadzi więcej niż jeden katalog kart, które różnią się w zależności od kryterium użytego do zamówienia kart. Na przykład w katalogu autora karty są sortowane alfabetycznie według nazwisk autorów, natomiast w katalogu tytułów karty są sortowane alfabetycznie według tytułów. Można również wymyślić katalog zamówień, w którym karty są sortowane według kolejności, w której książki zostały dodane do biblioteki. W tym kroku wyjaśniono, w jaki sposób blockchain przechowuje dane transakcji w sposób podobny do biblioteki z katalogiem zamówień.

Cel

Celem blockchain jest utrzymanie całej historii danych transakcji w uporządkowany sposób.

Wyzwanie

Wyzwanie polega na przechowywaniu wszystkich danych transakcji, które kiedykolwiek miały miejsce, w sposób, który zachowuje kolejność, w jakiej transakcje miały miejsce, oraz w sposób, który szybko i łatwo wykrywa wszelkie zmiany danych. Szybkie wykrywanie zmian jest ważne, ponieważ stanowi podstawę zapobiegania manipulacjom lub fałszowaniu historii transakcji.

Pomysł

Chodzi o stworzenie biblioteki danych transakcji i utrzymanie katalogu zamówień, który zachowa kolejność dodawania transakcji do biblioteki. Aby wykryć wszelkie zmiany dokonane w katalogu zamówień lub w danych poszczególnych transakcji, dane muszą być przechowywane w sposób wrażliwy na zmiany za pomocą odwołań do skrótów.

Przekształcanie książki w strukturę danych Blockchain

Ta sekcja wyjaśnia, jak zamienić książkę w małą bibliotekę z katalogiem zamówień, który okazuje się być uproszczoną wersją struktury bloków danych.

Punkt początkowy: książka

Przez wiele stuleci pisemne informacje były przechowywane na nieporęcznych szpulach pergaminu, zwanych zwojami. W dzisiejszych czasach jesteśmy przyzwyczajeni do przechowywania zapisanych informacji w kodeksach: oprawionych w twardą oprawę stron numerowanych, które nazywamy książkami. Ponieważ książki są tak powszechne, możemy uznać ich innowacje za pewnik. Niektóre z ich ważnych właściwości obejmują:

•  Przechowywanie treści: Książki przechowują zawartość na swoich stronach.
•  Zamawianie: zdania na stronach oraz strony w książce są uporządkowane.
•  Łączenie stron: Strony są fizycznie połączone poprzez kręgosłup książki i logicznie połączone poprzez ich zawartość i numery stron.

W wyniku tych właściwości możemy przeglądać książki do przodu i do tyłu, kartkując strony lub możemy przejść bezpośrednio do określonych stron, korzystając z numerów stron. Zobaczmy, co moglibyśmy osiągnąć, gdybyśmy zmienili niektóre z tych właściwości.

Transformacja 1: Wyjaśnienie zależności strony

Rycina przedstawia schematyczną ilustrację dwóch stron z bardzo prostej książki.



Każda strona zawiera górny margines, który przedstawia numer strony i obszar zawartości, który zawiera tylko jedno słowo. Numery stron służą ważnemu celowi: możesz dowiedzieć się, czy ktoś usunął stronę z książki, sprawdzając, czy numery stron są kontynuowane bez pomijania numeru. Wyobraź sobie, że obecnie czytasz stronę numer 42 naszej uproszczonej książki. Jaki numer strony powinna mieć poprzednia strona? Jest to bardzo proste: poprzednia strona powinna mieć liczbę 41, która równa się 42 minus 1. Aby sprawdzić, czy rzeczywiście nikt nie usunął poprzedniej strony, porównujemy liczbę wyświetlaną na poprzedniej stronie z oczekiwanym numerem strony, czyli liczba bieżącej strony minus 1. Jeśli obie liczby są równe, możemy stwierdzić, że poprzednia strona nie została usunięta. Dlaczego wiemy, że liczba poprzedniej strony powinna być równa liczbie bieżącej strony minus 1? Odpowiedź jest taka, że zakładamy, że wszystkie książki są zgodne z konwencją oznaczania stron kolejnymi liczbami naturalnymi. Ale co, jeśli to założenie nie jest prawdziwe, ponieważ autor lub wydawca książki zdecydował się użyć innego schematu numeracji stron (np. używając tylko liczb parzystych lub wielokrotności trzech)? W takim przypadku nasze podejście do sprawdzenia, czy poprzednia strona nie została usunięta, kończy się niepowodzeniem. Aby ułatwić sprawdzenie, czy żadna strona nie została usunięta z książki, moglibyśmy wyraźnie wskazać połączenie każdej strony z jej poprzednikiem. Rysunek pokazuje, jak to się robi w naszym przykładzie



Każda strona pokazuje nie tylko swój numer, ale także numer poprzedniej strony. Ten schemat numeracji stron wyraźnie określa zależność między dowolną stroną a poprzednią stroną. Bezpośrednie odwołanie do poprzedniej strony sprawia, że sprawdzenie, czy żadna strona nie została usunięta, jest bardzo łatwe, ponieważ nie opiera się już na domniemanych założeniach

Transformacja 2: Outsourcing treści

Strony naszej książki zawierają treść i informacje niezbędne do utrzymania ich kolejności: numery stron. Możemy sprawić, by nasza książka była wygodniejsza, zlecając jej outsourcing i pozwalając skupić się wyłącznie na zadaniu utrzymania porządku. Rysunek pokazuje, jak wyglądają strony naszej schematu po zleceniu nam outsourcingu treści.



Strony nie zawierają już żadnej treści, lecz zawierają numery referencyjne wskazujące na treść, którą można przechowywać w dowolnym miejscu (np. W pudełku, na półce lub gdzie indziej). Osiągnięcie tego kroku jest następujące: Zamieniliśmy naszą książkę w małą bibliotekę. Książka, która kiedyś zawierała zawartość i numery stron, została zamieniona w katalog, którego jedynym celem jest utrzymanie kolejności treści, podczas gdy treść jest przechowywana na oddzielnych stronach, które są oznaczone unikalnymi numerami referencyjnymi.

Transformacja 3: Zastępowanie numerów stron

Nasza książka, która jest teraz katalogiem zamówień, zachowuje porządek swoich stron na dwa różne sposoby: Po pierwsze, poprzez fizyczną lokalizację stron w książce utrwaloną w grzbiecie książki; po drugie, według numerów stron i wyraźnego odwołania do poprzedniej strony. Z uwagi na fakt, że fizyczna konstrukcja książki zachowuje porządek stron, możemy eksperymentować z innym schematem numeracji stron. Możemy faktycznie zastąpić liczby naturalne użyte do oznaczenia stron numerami referencyjnymi. Rysunek pokazuje wynik tej transformacji.



Na przykład strona poprzednio oznaczona numerem 42 jest teraz identyfikowana za pomocą numeru referencyjnego strony 8118E736. W podobny sposób strona, która poprzednio nosiła numer strony 41, jest teraz identyfikowana za pomocą numeru referencyjnego strony B779E800. Zauważ, że odniesienia do poprzedniej strony również zostały zaktualizowane. Strona o numerze referencyjnym 8118E736 zawiera poprawny numer referencyjny do poprzedniej strony.

Transformacja 4: Tworzenie numerów referencyjnych

W poprzedniej transformacji zastąpiliśmy numery stron w naszej książce numerami referencyjnymi. Nie dyskutowałem jednak o tym, jak zostaną stworzone. Najlepszym sposobem tworzenia unikalnych numerów referencyjnych jest użycie kryptograficznych wartości skrótu. W związku z tym możemy zidentyfikować strony w naszym katalogu, a także odpowiadające im strony zawartości z ich kryptograficznymi wartościami skrótu, które są cyfrowymi odciskami palców ich treści. Dla uproszczenia, zarówno Rysunki powyższe używają skróconych wartości skrótu. Na przykład strona zawartości zawierająca słowo Hello jest identyfikowana przez skróconą wartość skrótu Hello, która wynosi 185F8DB3. Obliczana jest wartość referencyjna naszych stron książek na podstawie ich treści, która jest numerem referencyjnym treści i numerem referencyjnym poprzedniej strony. Na przykład numer referencyjny strony B779E800 to wartość skrótu 011C01C1185F8DB3.

Transformacja 5: Pozbycie się grzbietu książki

Nasz katalog zamówień jest niezwykłą książką, ponieważ każda z jego stron zawiera własny numer referencyjny, numer referencyjny poprzedniej strony oraz numer referencyjny odpowiedniej strony z treścią. Jednak nasz katalog porządkowy jest nadal tradycyjną książką, której strony są utrwalone w grzbiecie książki. Co się stanie, jeśli pozbędziemy się grzbietu i zamienimy naszą książkę zamówień na stos luźnych stron? W ten sposób niszczymy fizyczne połączenie stron, w wyniku czego tracimy również fizyczne uporządkowanie naszych stron. Na szczęście uporządkowanie stron nie zostało całkowicie utracone. Każda strona zawiera numer referencyjny poprzedniej strony. W rezultacie możemy przechodzić od strony do strony wstecz, postępując zgodnie z numerami stron na poprzedniej stronie. Jeśli rozdzielimy ostatnią stronę katalogu porządkowego, zawsze możemy przeglądać wszystkie strony w odwrotnej kolejności.

Cel osiągnięty: Docenianie wyniku

Podsumujmy, co osiągnęliśmy w tym przykładzie. Klasyczną książkę zamieniliśmy w dwa fizycznie nieuporządkowane stosy luźnych stron, które są połączone z unikalnymi numerami referencyjnymi. Jeden stos stron zawiera treść, a drugi stos stron utrzymuje porządek. Dla uproszczenia nazywamy ten ostatni stos stron katalogiem porządkowym. Każda strona katalogu porządkowefo zawiera numer referencyjny na poprzedniej stronie oraz numer referencyjny odpowiedniej strony z treścią. W rezultacie oddzieliliśmy kolejność od przechowywania informacji i logicznej lokalizacji (kolejności) od fizycznej lokalizacji stron. Z uwagi na fakt, że użyliśmy wartości skrótu jako numerów referencyjnych, każdy może zweryfikować ich poprawność, po prostu przeliczając je ponownie. Ponieważ strony katalogu porządkowego nie są już ustalony na grzbiecie książki, możemy przeglądać go wstecz w kolejności strona po stronie, podążając za numerami stron wskazującymi na poprzednią stronę.

Struktura danych Blockchain

Co to jest struktura danych blockchain? Właściwie znasz już odpowiedź, ponieważ w poprzednim przykładzie opracowano uproszczoną strukturę danych blockchain. Używaliśmy jednak innej terminologii. Ta sekcja kończy analogię, łącząc elementy przekształconej książki z terminologią stosowaną w kontekście łańcucha bloków. Nasza przekształcona książka składa się z:

* Jednostki mentalnej składającej się ze strony katalogu zamawiającego i jego strony odpowiedniej strony z treścią
* Stos luźnych stron zwany katalogiem zamówień
* Stos luźnych stron zawierających treść
* Numery referencyjne stron do identyfikacji i łączenia stron z katalogu porządkowego
* Numery referencyjne treści do identyfikacji i łączenia stron treści

Jednostka mentalna strony katalogu zamówień i odpowiadająca jej treść

Jednostka mentalna strony katalogu zamawiania i odpowiadającej jej strony treści dotyczy jednego bloku w strukturze danych blockchain. Wszystkie te bloki razem tworzą strukturę danych blockchain. Należy zauważyć, że jednostka strony zamawiającej i odpowiadającej jej strony treści jest tylko jednostką mentalną, ponieważ strony katalogu porządkowego i strony treści są fizycznie odrębnymi jednostkami. Pierwsze odnoszą się do drugich za pomocą skrótów, które w rezultacie stanowią jedność umysłu.

Katalog porządkowy

Katalog porządkowy naszej przekształconej książki odpowiada łańcuchowi nagłówków bloków w strukturze danych łańcucha bloków. Każda strona katalogu porządkowego odpowiada jednemu nagłówkowi bloku w strukturze danych blockchain. Ponieważ nagłówki bloków są połączone ze sobą za pomocą odniesień w sposób liniowy, podobnie jak ogniwa łańcucha, tworzą one łańcuch nagłówków bloku. Podobnie jak w naszym katalogu porządkowym, łańcuch nagłówków bloków nie przechowuje bezpośrednio danych transakcji, a jedynie przechowuje odwołania do odpowiednich danych transakcji. To jest punkt, w którym jednostka mentalna katalogu zamówień i treści staje się ważna.

Strony z treścią

Treść przekształconej księgi jest równoważna z danymi transakcji obsługiwanymi przez blockchain. Są one specyficzne dla naszego obszaru aplikacji, który zarządza własnością. W rzeczywistych aplikacjach blockchain nie ma stron z treścią; Z powodów dydaktycznych stworzyłem termin strony z treścią. Rzeczywiste aplikacje blockchain przechowują dane treści (np. dane transakcji) bezpośrednio w bazie danych, a my nazywamy je drzewami Merkle, których korzenie są przechowywane w nagłówkach bloków.

Numery referencyjne stron katalogu

Numery stron naszej przekształconej książki używane do identyfikacji stron katalogu poządkowego odpowiadają kryptograficznym wartościom skrótu poszczególnych nagłówków bloków w strukturze danych łańcucha bloków. Są one odpowiednio nazywane skrótem blokowym lub skrótem poprzedniego bloku. Służą do jednoznacznej identyfikacji każdego nagłówka bloku i odnoszą się do poprzedniego nagłówka bloku. Rzeczywiste odniesienie z jednego nagłówka bloku do jego poprzednika odbywa się za pomocą odwołania skrótu.

Numery referencyjne treści

Numery referencyjne treści w naszej przekształconej książce używane do identyfikowania stron treści są równoważne referencjom skrótu w łańcuchu nagłówków bloków wskazujących na powiązane dane transakcji. Mówiąc ściślej, numer referencyjny zawartości przechowywany w nagłówku bloku jest katalogiem głównym drzewa Merkle danych transakcji przechowywanych w bazie danych. Jest to punkt, w którym tworzona jest jednostka mentalna katalogu zamawiania (nagłówek bloku) i odpowiadająca jej zawartość (drzewo Merkle z danymi transakcji).

Przechowywanie transakcji w strukturze danych Blockchain

Rysunek podsumowuje to, czego się nauczyłeś, schematycznie przedstawiając strukturę danych blockchain, która przechowuje cztery transakcje.



Ilustracja podana powyżej pokazuje uproszczoną strukturę danych łańcucha bloków, która składa się z dwóch bloków oznaczonych BLOK 1 i BLOK 2. Aby podkreślić mentalną naturę bloków, są one rysowane liniami przerywanymi. Oba bloki zawierają nagłówki bloków odpowiednio oznaczone jako Nagłówek bloku 1 i Nagłówek bloku 2. BLOK 1 jest pierwszym blokiem w tej strukturze danych, dlatego nie ma poprzedniego bloku, a zatem nagłówek bloku 1 nie zawiera żadnego odniesienia do poprzedniego nagłówka bloku. Ponieważ BLOK 2 ma poprzednika, Nagłówek bloku 2 zachowuje odniesienie skrótu do poprzedniego nagłówka bloku oznaczonego jako B1. Przedstawiona struktura danych blockchain zachowuje odniesienie skrótowe do dwóch różnych drzew Merkle, których korzenie są oznaczone odpowiednio R12 i R34. Etykiety korzeni Merkle dają nam już wskazanie danych transakcji, które zawierają (np. Drzewo Merkle z korzeniem R12 zawiera dwie pierwsze transakcje oznaczone jako Transakcja 1 i Transakcja 2 oraz odpowiadające im skróty R1 i R2, które wskazują im). Jeśli dołączyłeś do rozproszonego systemu peer-to-peer, który utrzymywał strukturę danych blockchain, jak pokazano na rysunku, otrzymasz wszystkie dane transakcji, wszystkie wartości referencyjne skrótów i wszystkie nagłówki bloków. Na podstawie tych danych komputer lokalny utworzyłby strukturę danych blockchain, w tym odwołania do skrótów wskazujące dane przechowywane na komputerze lokalnym. Wyposażony w te dane i w odniesieniu do najbardziej aktualnego nagłówka bloku można przeglądać historię wszystkich danych transakcji, które kiedykolwiek zostały przesłane do systemu od momentu ich utworzenia w odwrotnej kolejności, co w naszym przypadku to tylko cztery transakcje. Zauważ, że odniesienie do najczęściej dodawanego nagłówka bloku nazywa się nagłówkiem struktury danych blockchain, ponieważ jest to miejsce, w którym zostanie dodany następny blok. Czasami zarówno ostatnio dodawany nagłówek bloku, jak i odnośnik wskazuje na to, że nazywa się głową struktury danych blockchain. Na rysunku odnośnik oznaczony jako B2 jest głową struktury danych blockchain. Ważne jest, aby nie mieszać terminów "głowa" i "nagłówek": struktura danych blockchain składa się z wielu bloków, z których każdy ma swój własny nagłówek, ale cała struktura danych blockchain ma tylko jedną głowę.

Uwaga

Struktura danych blockchain omówiona na tym etapie i zilustrowana na rysunku została uproszczona z powodów dydaktycznych. Wiele szczegółów dotyczących informacji przechowywanych w nagłówkach bloków zostało celowo pominiętych. Niektóre z nich zostaną omówione w następnych krokach, gdy skończysz rozumieć blockchain.

Perspektywy

W tym kroku wprowadzono strukturę danych blockchain i wyjaśniono jej budowę. Sposób, w jaki struktura danych blockchain w znacznym stopniu wykorzystuje odwołania do skrótów, sprawia, że jest to magazyn danych bardzo wrażliwy na zmiany. Następny krok wyjaśnia tę właściwość bardziej szczegółowo, ponieważ jest to klucz do zrozumienia, w jaki sposób łańcuch bloków jest bezpieczny.

PODSUMOWANIE

•  Struktura danych blockchain to szczególny rodzaj struktury danych, który składa się z uporządkowanych jednostek zwanych blokami.
•  Każdy blok struktury danych blockchain składa się z nagłówka bloku i drzewa Merkle zawierającego dane transakcji.
•  Struktura danych blockchain składa się z dwóch głównych struktur danych: uporządkowanego łańcucha nagłówków bloków i drzew Merkle.
•  Można sobie wyobrazić uporządkowany łańcuch nagłówków bloków jako cyfrowy odpowiednik staromodnego katalogu kart bibliotecznych, w którym poszczególne karty katalogowe są sortowane zgodnie z kolejnością, w jakiej zostały dodane do katalogu.
•  Posiadanie każdego nagłówka bloku odnoszącego się do poprzedniego nagłówka bloku zachowuje kolejność odpowiednio poszczególnych nagłówków bloków i bloków, które tworzą strukturę danych blockchain.
•  Każdy nagłówek bloku w strukturze danych blockchain jest identyfikowany przez jego kryptograficzną wartość skrótu i zawiera odwołanie do poprzedniego nagłówka bloku oraz odwołanie do danych specyficznych dla aplikacji, których kolejność zachowuje.
•  Odwołanie skrótu do danych specyficznych dla aplikacji jest zwykle korzeniem drzewa Merkle, które utrzymuje odniesienia skrótu do danych specyficznych dla aplikacji.