Wzorce funkcji hashowania

Niezależne hashowanie

Niezależne hashowanie oznacza niezależne stosowanie funkcji mieszania dla każdej części danych. Rysunek 1 ilustruje tę koncepcję, obliczając skróconą wartość hash dwóch odrębnych słów osobno.

Białe pola zawierające słowo reprezentują dane, które mają być mieszane, a szare kółka odpowiadają odpowiednim wartościom skrótu. Strzałki, które wskazują pola z okręgów, schematycznie ilustrują transformację danych w wartości haszującej. Jak widać na rysunku 1, różne słowa dają różne wartości mieszania.

Powtórne haszowanie

Nauczyłeś się, że funkcje mieszania przekształcają dowolny dowolny fragment danych w wartość mieszającą. Sama wartość hashująca może być uznana za część danych. W związku z tym powinno być możliwe podanie wartości mieszania jako wartości wejściowej dla funkcji mieszającej i obliczenie jej wartości skrótu. A to faktycznie działa! Powtórzone hashowanie to powtórne zastosowanie funkcji hash do własnego wyniku. Rysunek 2 ilustruje tę koncepcję, obliczając wielokrotnie skróconą wartość mieszania. Tekst Hello World! daje wartość skrótu 7F83B165, co z kolei daje skróconą wartość mieszania 45A47BE7.

Mieszane hashowanie

Celem mieszanego mieszania jest uzyskanie pojedynczej wartości skrótu dla więcej niż jednej części danych za jednym zamachem. Łączenie wszystkich niezależnych elementów danych w jedną część danych i obliczanie ich wartości haszującej jest sposobem na osiągnięcie tego. Jest to szczególnie przydatne, jeśli chcesz utworzyć jedną wartość mieszania dla zbioru danych, które są dostępne w danym czasie. Ponieważ łączenie danych wiąże się z kosztami mocy obliczeniowej, czasem i pamięcią, łączone mieszanie powinno być stosowane tylko wtedy, gdy pojedyncze dane są niewielkie. Inną wadą połączonego mieszania jest to, że wartości mieszania poszczególnych fragmentów danych nie są dostępne, ponieważ tylko połączone dane są przekazywane do funkcji mieszania. Rysunek 3 przedstawia koncepcję kombinowanego mieszania.

Poszczególne słowa są najpierw łączone w jedno słowo z przestrzenią między nimi, a wynikowa fraza jest następnie mieszana. Wynikowa wartość mieszania przedstawiona na rysunku 3 jest konsekwentnie identyczna z pierwszą wartością mieszania na rysunku 2. Zauważ, że wartość mieszana połączonych danych zależy krytycznie od sposobu połączenia danych. Na rysunku 2, oba słowa zostały połączone, pisząc je obok siebie z przestrzenią między nimi, co w konsekwencji daje Hello World! Czasami określone symbole, takie jak znak plus (+) lub znak hashtag (#) są używane do oznaczenia punktu, w którym dane są połączone, co w rezultacie wpływa na wynikową wartość skrótu.

Sekwencyjne mieszanie

Celem sekwencyjnego mieszania jest przyrostowa aktualizacja wartości skrótu w miarę nadejścia nowych danych. Osiąga się to poprzez jednoczesne stosowanie mieszanego i powtarzanego mieszania. Istniejąca wartość skrótu jest łączona z nowymi danymi, a następnie przekazywana do funkcji skrótu, aby uzyskać zaktualizowaną wartość skrótu. Sekwencyjne mieszanie jest szczególnie przydatne, jeśli chcesz zachować pojedynczą wartość mieszania w czasie i aktualizować je, gdy tylko pojawią się nowe dane. Zaletą tego typu mieszania jest to, że w danym momencie masz wartość mieszającą, której ewolucję można prześledzić do nadejścia nowych danych. Rysunek 4 ilustruje pojęcie sekwencyjnego mieszania, rozpoczynając od słowa mieszającego Hello indywidualnie, co daje skróconą wartość skrótu 185F8DB3.

Gdy nowe dane są reprezentowane przez słowo Świat! przyjazd, jest on łączony z istniejącą wartością skrótu i ​​dostarczany jako wejście do funkcji mieszającej. Wartość skrótu 5795A986 to skrócona wartość skrótu tekstu wejściowego World! 185F8DB3.

Hierarchiczne Hashowanie

Rysunek 5 ilustruje pojęcie hierarchicznego mieszania.

Zastosowanie kombinacji mieszania do pary wartości mieszania tworzy małą hierarchię wartości mieszania z jedną wartością na górze. Podobnie jak w przypadku mieszanego mieszania, ideą hierarchicznego mieszania jest tworzeniem pojedynczej wartości skrótu dla zbioru danych. Hierarchiczne mieszanie jest bardziej wydajne, ponieważ łączy wartości mieszania, które mają zawsze stały rozmiar zamiast oryginalnych danych, które mogą mieć dowolny rozmiar. Dodatkowo, hierarchiczne hashowanie łączy tylko dwie wartości mieszania w każdym kroku, podczas gdy łączone mieszanie będzie łączyć tyle danych, ile podasz w jednej próbie.

Spróbuj sam

Tu omówimy stosowanie funkcji haszujących, prowadząc cię przez prosty przykład. W tym celu zajmuję się stroną towarzyszącą, która zapewnia narzędzie do tworzenia wartości mieszania prostych danych tekstowych: http://www.blockchainbasics.com/HashFunctions.html. Po otwarciu tej strony w przeglądarce internetowej zobaczysz pole wprowadzania i pole wyjściowe, jak pokazano na rysunku poniżej. Wpisz tekst Hello World! w polu wprowadzania po lewej stronie i kliknij przycisk z etykietą “Oblicz wartość skrótu” umieszczoną pod polem tekstowym. Upewnij się, że wpisujesz Hello World! dokładnie w polu wprowadzania, w przeciwnym razie otrzymasz wyniki, które różnią się od pokazanych na rysunku

W wyniku kliknięcia przycisku pole wyjściowe po prawej stronie wyświetli wartość mieszania tekstu wejściowego obliczoną za pomocą czterech różnych funkcji skrótu. Wartości skrótu są często uważane za liczby haszujące, ponieważ używają one nie tylko cyfry od 0 do 9, ale także litery od A do F, które reprezentują wartości od 11 do 16 w celu wyrażenia wartości liczbowych. Liczby te są nazywane liczbami szesnastkowymi. Informatycy uwielbiają je z powodów, o których nie chcę dyskutować. Zauważ, że wartości mieszania różnią się ze względu na różne szczegóły implementacji funkcji mieszających, które je generują. Te wartości są brane za pewnik, ponieważ tak robimy nie chcemy zatracić się w szerokim temacie wdrażania funkcji haszujących. Kryptograficzne wartości mieszania są dość długie i dlatego trudne do odczytania lub porównania dla ludzkiego oka. Jednak w trakcie tego kroku będziesz porównywał różne sposoby mieszania danych, co wiąże się z odczytywaniem i porównywaniem wartości mieszania. Wykonanie tego za pomocą kryptograficznych wartości skrótów szybko stanie się żmudnym zadaniem. Dlatego z przyczyn dydaktycznych używam skróconej wersji wartości skrótu kryptograficznego SHA256 w pozostałej części tego kroku. Możesz odtworzyć wszystkie wartości mieszania za pomocą narzędzia dostępnego na dołączonej stronie internetowej: www.blockchain-basics.com/Hashing.html. Po otwarciu tej strony w przeglądarce internetowej pojawi się okno wprowadzania prostych tekstów, przycisk ze strzałką wskazującą pole wyjściowe, jak pokazano na rysunku poniżej. Po kliknięciu przycisku ze strzałką pole wyjściowe wyświetli skróconą wartość skrótu tekstu podanego w polu wprowadzania.

Wzorce danych hashujących

Jak dotąd nauczyłeś się, że dane mogą być użyte jako dane wejściowe dla funkcji mieszania, co z kolei daje wartość mieszającą tych danych. Oznacza to, że każda niezależna część danych ma swoją unikalną kryptograficzną wartość mieszania. Ale co byś zrobił, gdyby poproszono cię o podanie jednej wartości hash dla wielu niezależnych danych? Pamiętaj, że funkcje skrótu akceptują tylko jedną część danych w danym czasie. Nie ma funkcji mieszania, która akceptuje kilka niezależnych danych naraz, ale w rzeczywistości często potrzebujemy jednej wartości mieszania dla dużej kolekcji danych. W szczególności struktura danych blockchain musi zająć się wieloma danymi transakcji jednocześnie i wymaga jednej wartości skrótu dla wszystkich z nich. Jak radzisz sobie z tym zadaniem?

Odpowiedź polega na wykorzystaniu jednego z następujących wzorców w stosowaniu funkcji haszowania danych:

  • Niezależny hashing
  • Powtarzane mieszanie
  • Połączone mieszanie
  • Sekwencyjne mieszanie
  • Hierarchiczne haszowanie

Jak to działa cz. II

Szybkie dostarczanie wartości skrótu dla dowolnych danych

Ta właściwość jest w rzeczywistości kombinacją dwóch właściwości. Po pierwsze funkcja skrótu jest w stanie obliczyć wartości mieszania dla wszystkich rodzajów danych. Po drugie funkcja skrótu wykonuje swoje obliczenia szybko. Te właściwości są ważne, ponieważ tego nie chcesz aby funkcja mieszania zapewniała bezużyteczne informacje, takie jak komunikaty o błędach, lub poświęcenie dużej ilości czasu na zwrócenie wyników.

Deterministyczna

Deterministyczne oznacza, że ​​funkcja hash daje identyczne wartości mieszania dla identycznych danych wejściowych. Oznacza to, że wszelkie zaobserwowane rozbieżności wartości mieszania danych muszą być spowodowane wyłącznie rozbieżnościami danych wejściowych, a nie przez elementy wewnętrzne funkcji mieszającej.

Pseudolosowa

Bycie pseudolosowym oznacza, że ​​wartość mieszania zwrócona przez funkcję mieszającą zmienia się nieprzewidywalnie, gdy dane wejściowe zostaną zmienione. Nawet jeśli dane wejściowe zostały zmienione tylko trochę, wynikowa wartość mieszania będzie się różnić nieprzewidywalnie. Inaczej mówiąc, wartość mieszająca zmienionych danych zawsze musi być niespodzianką. Nie powinno być możliwe przewidzenie wartości mieszania w oparciu o dane wejściowe.

Funkcja jednokierunkowa

Funkcja jednokierunkowa nie zapewnia żadnego sposobu śledzenia jej wartości wejściowych przez jej wyjścia. Stąd bycie funkcją jednokierunkową oznacza, że ​​nie można jej używać na odwrót. Inaczej mówiąc, niemożliwe jest odtworzenie oryginalnych danych wejściowych na podstawie wartości skrótu. Oznacza to, że wartości mieszania nie mówią nic o zawartości danych wejściowych w taki sam sposób, jak odcisk palca nie zawiera informacji o osobie, której palec ją utworzył. Mówi się również, że funkcje jednokierunkowe są nieodwracalne.

Odporna na kolizje

Funkcja skrótu nazywana jest odporną na kolizję, jeśli bardzo trudno jest znaleźć dwa lub więcej odrębnych fragmentów danych, dla których daje identyczną wartość mieszającą. Lub, inaczej mówiąc, jeśli szansa na otrzymanie identycznej wartości skrótu dla różnych fragmentów danych jest niewielka, to funkcja hash jest odporna na kolizje. W tym przypadku można uznać, że wartości mieszania utworzone przez funkcję mieszającą są unikalne, a zatem są użyteczne do identyfikowania danych. Jeśli uzyskasz identyczną wartość skrótu dla różnych elementów danych, wystąpi kolizja haszująca. Kolizja hash jest cyfrowym odpowiednikiem posiadania dwóch osób z identycznymi odciskami palców. Odporność na kolizje jest obowiązkowa, ponieważ wartości mieszania mogą być wykorzystywane jako cyfrowe odciski palców. W jaki sposób funkcje mieszania odporne na kolizje działają wewnętrznie poza naszym zakresem, ale możesz mieć pewność, że ogromny wysiłek został poświęcony na zmniejszenie ich ryzyka w celu wywołania kolizji mieszania.

Hashowanie danych. Identyfikacja danych z ich cyfrowego odcisku palca

W tym kroku wyjaśniono jedną z najważniejszych podstawowych technologii łańcucha bloków: wartości mieszania. Omawia ważne właściwości kryptograficznych funkcji skrótu i wprowadza wzorce stosowania funkcji haszujących do danych.

Metafora

Odciski palców są odciskami ciernymi wszystkich lub dowolnychh części palców ludzkiej ręki. Uważa się, że są w stanie jednoznacznie identyfikować ludzi. Zostały one wykorzystane do zbadania przestępstw, identyfikacji przestępców i oczyszczenia niewinnych. W tym kroku wprowadzono koncepcję identyfikacji danych, którą można uznać za cyfrowy odpowiednik odcisków palców. Pojęcie to nazywane jest kryptograficzną wartością mieszającą, a blockchain wykorzystuje ją w szerokim zakresie. Stąd zrozumienie hashowania kryptograficznego jest obowiązkowe dla zrozumienia blockchain.

Cel

W rozproszonym systemie peer-to-peer zajmiesz się ogromną liczbą danych transakcyjnych. W rezultacie będziesz musiał zidentyfikować je w sposób unikalny i porównać je tak szybko i tak łatwo, jak to możliwe. Dlatego celem jest identyfikacja danych transakcyjnych i ewentualnie wszelkiego rodzaju danych w sposób unikalny za pomocą ich cyfrowych odcisków palców.

Jak to działa

Funkcje skrótu to małe programy komputerowe, które przekształcają dowolny rodzaj danych w pewną liczbę stałych długości, niezależnie od wielkości danych wejściowych. Funkcje skrótu akceptują tylko jedną część danych w danym momencie jako dane wejściowe i tworzą wartość mieszania opartą o bity i bajty, które tworzą dane. Wartości skrótu mogą mieć początkowe zera, aby zapewnić wymaganą długość. Istnieje wiele różnych funkcji skrótu, które różnią się między sobą pod względem długości wartości mieszania . Ważną grupą funkcji  haszujących są kryptograficzne funkcje mieszające, które tworzą cyfrowe odciski palców dla każdego rodzaju danych. Kryptograficzne funkcje mieszające mają następujące właściwości:

  • Szybko dostarcza wartości mieszania dla dowolnego rodzaju danych
  • Jest deterministyczna
  • jest pseudolosowa
  • Funkcja jednokierunkowa
  • Odporna na kolizje

Znaczenie zamawiania

Agregacja danych transakcji ma na celu odzyskanie obecnego stanu własności i wyjaśnienie własności. Ważne jest, aby pamiętać, że kolejność, w której doszło do transakcji, musi zostać zachowana, aby uzyskać identyczny wynik za każdym razem, gdy dane są agregowane. Zmiana kolejności danych transakcji zmieni wynik ich agregacji. Na pierwszy rzut oka nie wydaje się, aby wynik bardzo się zmienił, niezależnie od tego, czy otrzymam płatność w wysokości 50 USD najpierw od przyjaciela, a potem 50 dolarów, aby zapłacić rachunek lub czy te dwie transakcje miały miejsce w odwrotnej kolejności. Ale co się stanie, jeśli moje konto bankowe nie będzie zawierało żadnych pieniędzy i nie wolno mi go przekroczyć? W takim przypadku moja zdolność do zapłaty mojego rachunku zależy od tego, czy otrzymałem najpierw płatność od mojego przyjaciela. W przeciwnym razie bank odmówi przekazania pieniędzy na opłacenie rachunku z powodu braku funduszy. W związku z tym kolejność występowania transakcji ma znaczenie.

Integralność historii transakcji

Bez przesady można stwierdzić, że historia danych transakcyjnych jest sercem każdego łańcucha blokowego, który zarządza własnością, ponieważ jest podstawą do rekonstrukcji stanu własności. W związku z tym konieczne jest zachowanie tej historii danych w sposób bezpieczny, kompletny, poprawny i spójny, tak aby zachować integralność całego systemu, a co za tym idzie, móc składać prawdziwe oświadczenia dotyczące obecnego stanu własności. W związku z tym blockchain musi zapewniać środki bezpieczeństwa, aby zapewnić, że tylko prawidłowe dane transakcji są dodawane do struktury danych blockchain. Badanie ważności danych transakcji obejmuje trzy aspekty:

  • Formalna poprawność
  • Semantyczna poprawność
  • Upoważnienie

Formalna poprawność

Formalna poprawność oznacza, że ​​opis transakcji zawiera wszystkie wymagane dane oraz że dane są dostarczane we właściwym formacie.

Semantyczna poprawność

Poprawność semantyczna koncentruje się na znaczeniu danych transakcji i ich zamierzonym efekcie. Dlatego walidacja semantycznej poprawności wymaga znajomości dziedziny biznesu. Badanie semantycznej poprawności danych transakcji często odbywa się na podstawie reguł biznesowych, takich jak:

  • Upewnienie się, że konto nie przekazuje więcej niż jest obecnie w posiadaniu
  • Zapobieganie podwójnym wydatkom
  • Ograniczanie ilości produktów, które można przenieść w ramach pojedynczej transakcji
  • Ograniczenie liczby transakcji na użytkownika
  • Ograniczenie całkowitej ilości przedmiotów wydanych w danym okresie
  • Egzekwowanie, że konto utrzymuje produkt przez minimalny okres, zanim będzie można go dalej przenieść

Upoważnienie

Tylko właściciel konta, który nie ma prawa własności, powinien mieć na to zezwolenie aby doradzać blockchainowi, aby wykonać transakcję w jego imieniu. W wyniku tego blockchain wymaga, aby każda transakcja zawierała informacje potwierdzające, że właściciel konta, który oddaje własność, faktycznie zgadza się z tym przelewem.

Jak to działa?

Dokumentacja własności za pomocą blockchain obejmuje następujące aspekty:

  • Opisywanie przeniesienia własności
  • Utrzymywanie historii transferów

Opis przenoszenia własności

Transakcja jest przeniesieniem prawa własności z jednego właściciela na inny. Akt przeniesienia własności opiera się na danych, które określają zamierzony transfer. Dane te zawierają wszystkie informacje niezbędne do wykonania przeniesienia prawa własności. Przykładem danych, które opisują zamierzone przeniesienie własności, byłby formularz przelewu bankowego, który służy do żądania od banku dokonania przelewu pieniędzy w imieniu klienta. Formularz przelewu bankowego wymaga podania wszystkich informacji niezbędnych do umożliwienia bankowi dokonania przelewu w Twoim imieniu. W podobny sposób informacje używane przez blockchain do opisania transakcji to:

  • Identyfikator konta, które ma przekazać własność na inne konto
  • Identyfikator konta, które ma otrzymać prawo własności
  • Ilość towarów do przesłania
  • Czas realizacji transakcji
  • Opłata, którą należy uiścić w systemie za wykonanie transakcji
  • Dowód, że właściciel konta, który nie posiada własności, rzeczywiście się zgadza z tym przeniesieniem

Większość tych danych jest znana każdemu, kto dokonał przelewu pieniężnego w  banku. Jednak analogia do przelewu bankowego kończy się, gdy opłaty są uwzględniane. Z uwagi na fakt, że banki są scentralizowanymi instytucjami, utrzymują centralny program opłat, który jest stosowany do wszystkich klientów. W przeciwieństwie do tego, blockchain jest systemem rozproszonym bez centralnego punktu kontroli. Dlatego blockchain nie może mieć centralnego harmonogramu opłat. Podczas korzystania z blockchain każdy użytkownik musi wcześniej poinformować system, ile chce zapłacić za wykonanie transakcji. Konto, które oddaje własność, płaci również opłatę za transakcję.

Utrzymywanie historii transferów

Dane transakcji dostarczają obowiązkowych informacji niezbędnych do wykonania przeniesienia własności zgodnie z przeznaczeniem. Realizacja transakcji oznacza dokonanie przeniesienia prawa własności w sposób opisany w danych transakcji. Wykonywanie transakcji oznacza dodanie danych transakcji do księgi głównej. Po dodaniu danych transakcji do księgi transakcja staje się częścią historii transakcji, która służy do wyjaśnienia własności. Gdy księga zostanie użyta następnym razem w celu wyjaśnienia własności poprzez agregację zawartych w niej danych transakcji, nowo dodana transakcja zostanie uwzględniona w agregacji, a tym samym wpłynie na wynikowy stan własności. Blockchain przechowuje całą historię wszystkich transakcji, które kiedykolwiek miały miejsce, przechowując ich dane transakcji w strukturze danych blockchain w kolejności, w jakiej wystąpiły. Każda transakcja, która nie jest częścią tej historii, jest traktowana tak, jakby nigdy się nie wydarzyła. Dlatego dodanie danych transakcji do struktury danych blokowych oznacza wykonanie tej transakcji i umożliwienie jej wpłynięcia na wynik użycia historii w celu zidentyfikowania obecnego właściciela.

Dlaczego to działa?

Ponieważ dane transakcyjne zawierają wszystkie informacje o koncie, które oddala prawo własności, konto, które otrzymuje prawo własności, a także przedmiot i kwotę do przeniesienia, można odtworzyć informacje o własności dla każdego konta, o ile dostępna jest cała historia transakcji. W rezultacie cała historia wszystkich dane transakcji są wystarczające do udokumentowania własności.

Dokumentowanie własności

Używanie przebiegu historii jako dowodu na obecny stan własności

W tym kroku rozważa się zadanie opisania własności w sposób, który jest użyteczny w przypadku czysto rozproszonego systemu ksiąg rachunkowych typu peer-to-peer. W tym kroku wyjaśniono, w jaki sposób blockchain dokumentuje własność i obsługuje przeniesienie własności. Dodatkowo, ten krok wskazuje na znaczenie zamawiania podczas dokumentowania przeniesienia własności. Wreszcie, ten krok podkreśla znaczenie integralności danych transakcyjnych dla integralności całego systemu.

Metafora

Sztafeta to wyścig pomiędzy drużynami biegaczy, gdzie każdy członek zespołu obejmuje tylko część całkowitej odległości. Podczas wyścigu każdy biegacz musi przekazać określony przedmiot, tzw. pałeczkę, następnemu biegaczowi w określonej strefie oznaczonej na torze. W dowolnym momencie wyścigu tylko jeden członek konkurencyjnych zespołów niesie pałeczkę. W celu ustalenia, który członek danej drużyny aktualnie posiada pałeczkę, wystarczy wiedzieć, komu z zespołu została przekazana pałeczka najpóźniej od ręki. Aby śledzić, kto w danym momencie nosił pałeczkę, należy zarejestrować czas każdego przekazania i zawodników, którzy byli zaangażowani. Ten krok wyjaśnia, w jaki sposób blockchain traktuje własność

Wyzwanie

Wyzwanie polega na znalezieniu dokumentacji własności, która nie tylko twierdzi, że ktoś jest właścicielem czegoś, ale także dostarcza dowodów własności i stąd służy jako dowód własności w podobny sposób do sposobu, w jaki sztafety wykorzystują pałki.

Pomysł

Zamiast opisywania obecnego stanu własności według danych inwentaryzacyjnych (tj. poprzez zestawienie bieżących posiadłości wszystkich właścicieli), w sposób ciągły zachowuje się listę wszystkich przeniesień własności w księdze głównej. Każde przeniesienie własności jest opisywane przez dane transakcji, które wyraźnie wskazują, który właściciel oddaje własność do której pozycji i do kogo o której godzinie. Cała historia danych transakcji przechowywanych w księdze rachunkowej staje się ścieżką audytu, która dostarcza dowodów na to, jak każdy osiągnął swoją własność. Jest to równoważne śledzeniu każdego przekazania pałeczki w sztafecie, co pozwala każdemu odtworzyć cały wyścig później.

Krótki objazd do zapasów i danych transakcji

Istnieją dwa konkurencyjne sposoby opisywania własności – za pośrednictwem danych inwentaryzacyjnych lub danych transakcji. Dane o zapasach opisują obecny stan własności. Są one podobne do wyciągu z rachunku bankowego, który wyświetla aktualnie dostępną ilość pieniędzy. Dane transakcji opisują przeniesienia własności. Są one podobne do wyciągu z konta bankowego, który zawiera listę wypłat, depozytów i przelewów pieniężnych. Można wyodrębnić dane inwentaryzacyjne, agregując dane transakcji. Poza tym, że zarówno dane dotyczące inwentarza, jak i dane transakcji opisują własność, ich podstawowa filozofia różni się diametralnie. Dane dotyczące zapasów po prostu określają własność lub roszczenie, a dane dotyczące transakcji wyjaśniają, a tym samym uzasadniają własność. Jednak dane inwentaryzacyjne są często uważane za wygodniejsze, ponieważ od razu stwierdzają, że jest to interesujące dla większości ludzi, czyli obecnego stanu własności.

Jak działa Blockchain? c.d.

Zadanie 1: Opisując Własność

Zanim będzie można zacząć rozwijanie blockchain, trzeba zadać sobie pytanie, co chcesz z nim zrobić. Ponieważ będziemy chcieli zaprojektować system oprogramowania, który zarządza własność, trzeba najpierw zdecydować, w jaki sposób opisać własności. Okazuje się, że transakcje są dobrym sposobem na opisanie każdego przeniesienia prawa własności, a całą historię transakcji jest kluczem do identyfikacji obecnych właścicieli. Stąd Krok 9 Transakcje wyjaśni czym są, jak można je opisać i jak można z nich korzystać w celu wyjaśnienia własności.

Zadanie 2: Ochrona własności

Opisanie własności za pomocą transakcji jest tylko punktem wyjścia. Ponadto potrzebny jest sposób, aby odwieść ludzi od  dostępu do właściwości innych. W prawdziwym życiu, można łatwo odwieść ludzi od korzystania z samochodu lub z wejściem do nie swojego dom ,za pomocą drzwi z zamkami. Okazuje się, że kryptografia dostarcza sposób ochrony transakcji na poziomie indywidualnym, podobnie jak sposób poszczególne drzwi z zamkami chronić swój samochód lub dom. Ochrona własności ma trzy główne elementy: identyfikacja i uwierzytelnianie właściciela, a także ograniczanie dostępu do usługi, do ich właścicieli. Etapy 12 i 13 wyjaśnią te pojęcia w sposób bardziej szczegółowy. Jednak te kroki polegać na koncepcji wartości hash. Jeśli nigdy nie słyszałeś o wartości hash, nie trzeba się martwić., Etap 10 i 11 wyjaśni wartości hash w szczegółach. Te dwa etapy będą również ciekawymi spostrzeżeniami dla tych, którzy już mają wykształcenie techniczne lub wiedzą o wartości hash.

Zadanie 3: Zapisywanie danych transakcji

Opisując własności za pomocą transakcji i posiadając środki ochrony, chroni własność na poziomie poszczególnych transakcji są ważne kroki w kierunku bramki projektowania systemu oprogramowania, który zarządza własności. Jednak trzeba znaleźć sposób dla przechowywania całej historii transakcji, jak ta historia jest używana do wyjaśnienia własności. Ponieważ historia transakcji jest kluczowym elementem w wyjaśnianiu własności, musi być przechowywane w bezpieczny sposób. Okazuje się, że blockchain-data-structure jest cyfrowym odpowiednikiem do księgi głównej. Etapy 14 i 15 wyjaśnią, że ​​wymóg blockchain-structure-data musi być spełnione, aby służyć jako księgi cyfrowej i jak jest realizowany.

Zadanie 4: Przygotowanie ksiąg dla dystrybuowania w nierzetelnym  środowisku

Posiadanie jednej wyizolowanej księgi lub blockchain-structure-data, która zawiera dane transakcji jest dobre,, ale celem jest zaprojektowanie systemu rozproszonego peer-to-peer z księgami, która działają w środowisku nierzetelnym. Stąd, będziesz miał kopie księgi uruchomiony na nierzetelnym węźle  w sieci nierzetelnej. Ponadto, można oddać kontrolę nad księgami dla całej sieci, bez żadnego centralnego punktu sterowania lub koordynacji. Jak można zapobiec manipulacjom w księgach (na przykład poprzez usunięcie transakcji z historii transakcji nielegalnych lub dodanie do niego)? Okazuje się, że najlepszym sposobem, aby zapobiec zmianie w  historii transakcji jest stworzenie jej niezmiennej. Oznacza to, że księgi, a zatem historia transakcji nie może być zmieniana  kiedy jest raz zapisana . W rezultacie, nie trzeba się obawiać, że księgi zostaną naruszone lub nadpisane, ponieważ nie mogą być zmienione w pierwszej kolejności. Jednakże mając rozproszony system peer-to-peer z księgami, które nigdy nie mogą być zmienione , brzmią jak bardzo bezpieczne, ale całkiem bezużyteczne rzeczy, ponieważ nie będzie można dodawać nowych transakcji. Stąd wyzwaniem blockchain-structure-data ma być niezmienność, z jednej strony, akceptując nowe transakcje które są dodawane do niej, z drugiej strony. To brzmi jak sprzeczność w słowach, ale okazuje się, że jest to osiągalne z technicznego punktu widzenia, który jest wyjaśnione w punkcie 16. W rezultacie powstaje struktura, która jest blockchain-data-append-only: możliwe jest dodawanie nowych transakcji; ale jest prawie niemożliwe, aby zmienić dane, które zostały dodane w przeszłości.

Zadanie 5: Dystrybucja w księgach

Kiedy księga główna jest append-only, można utworzyć rozproszony system peer-to-peer z ksiąg poprzez jej dostępne kopie dla każdego, kto o to poprosi. Jednak poświadczone kopie ksiąg append-only nie spełnia swoich celów. Rozproszony system, który zarządza własności polega na interakcji między peerami lub węzłów, odpowiednio. Stąd Krok 17 wyjaśnia, jak węzły w systemie współdziałają ze sobą i jakie informacje są wymieniane między nimi.

Zadanie 6: Dodawanie nowych transakcji do ksiąg

Rozproszony system peer-to-peer będzie składać się z członków, których komputery utrzymują poszczególne kopie append-only blockchain-data-struktury. Ponieważ struktura danych pozwala na dodawanie nowych danych transakcyjnych, będziesz musiał upewnić się, że tylko poprawne i autoryzowane transakcje są dodawane. Okazuje się, że jest to możliwe poprzez umożliwienie wszystkim członkom systemu peer-to-peer, aby dodać nowe dane i obracając Dodatkowo każdy członek systemu peer-to-peer do przełożonych z peerami. W rezultacie, wszyscy członkowie będą nadzorować nawzajem i zwrócić uwagę na wszelkie błędy popełnione przez swoich rówieśników. Krok podejście 18 wyjaśnia to bardziej szczegółowo, jak również zachęt udzielonych rówieśników do spełnienia swoją rolę.

Zadanie 7: podejmowaniu decyzji, które Ledgers Reprezentujesz Prawdę

Nowe transakcje mogą być dodawane do poszczególnych ksiąg w systemie peer-to-peer, jedna prowadzi do problemu, który jest typowy dla każdej rozproszonym systemie peer-to-peer, różni peers mogą otrzymali różne transakcje i wkrótce historii transakcji utrzymywane przez nich różni się. Stąd różne wersje historii transakcji mogą istnieć w systemie peer-to-peer. Ponieważ historia transakcji jest podstawą do identyfikacji legalnych właścicieli, posiadanie różnych sprzecznych historii transakcji jest poważnym zagrożeniem dla integralności systemu. Stąd ważne jest, aby znaleźć sposób, albo aby zapobiec pojawianiu się różnych historii transakcji w pierwszej kolejności lub znaleźć sposób, aby zdecydować, które transakcja historia przedstawia prawdę. Ze względu na charakter w czysto rozproszonym systemie peer-to-peer, ostatnie podejście nie jest możliwe. W rezultacie trzeba kryterium, jak znaleźć i wybrać jedną historię transakcji, która reprezentuje prawdę. Ale jest inny problem: nie istnieje centralny organ w czysto rozproszonym systemie peer-to-peer, który może zadeklarować, która historia transakcji musi zostać wybrana. Okazuje się, że można rozwiązać ten problem poprzez każdy węzeł w systemie peer-to-peer decydujący o własnej historii transakcji, która reprezentuje prawdę w taki sposób, że większość peerów zgadza się na tę decyzję samodzielnie. Okazuje się też, że sposób, w jaki blockchain pozwala dodawać nowe transakcje append-only blockchain-structure-data zawiera już rozwiązanie tego problemu. 19 krok wyjaśnia te kryteria w szczegółach i jak są one wykorzystywane.

W tym kroku zidentyfikowano siedem zadań, które stanowią wymagającą intelektualną podróż po koncepcjach stanowiących blockchain. Po wykonaniu tych zadań dotrzesz na szczyt: zrozumiesz blockchain. Krok 21 to punkt, w którym połączysz wszystkie te koncepcje i rozkoszujesz się rezultatami tego wysiłku uczenia się. Krok 21 będzie przeglądową częścią podobnym do tego, ale będzie czerpał z wiedzy technicznej, którą zdobędziesz w międzyczasie.

Jak działa Blockchain?

Planowanie Blockchain. Podstawowe pojęcia zarządzania własnością z blockchain

W poprzednich krokach odkryto związek między zaufaniem, integralnością, czysto rozproszonymi systemami peer-to-peer i blockchain. W rezultacie dobrze rozumiesz, czym jest blockchain, dlaczego jest on potrzebny i jaki problem rozwiązuje. Jednak nadal nie wiesz, jak działa blockchain wewnętrznie. Ten krok daje pierwsze wrażenie, jak działa blockchain, wyjaśniając ogólny scenariusz zastosowania, który poprowadzi Cię przez kolejne kroki. Podkreśla również główne zadania w projektowaniu blockchain do zarządzania własnością i zapewnia przegląd jego głównych koncepcji. Ten krok służy jako punkt wyjścia do kolejnych kroków, które szczegółowo omawiają koncepcje i technologie, które składają się na blockchain.

Cel

Celem jest zrozumienie pojęć składających się na blockchain. Ze względów dydaktycznych przedstawię wyzwanie związane z zaprojektowaniem własnego systemu zarządzania własnością. Stąd też stoją przed tymi samymi wyzwaniami, które wynalazca blockchainu kiedyś stawiał i rozwiązał pomyślnie: zaprojektowanie oprogramowania zarządzającego własnością w czysto rozproszonym systemie peer-to-peer, który działa w całkowicie otwartym i niewiarygodnym środowisku.

Punkt początkowy

Punktem wyjścia mogą być główne fakty dotyczące rozważanego systemu podsumowane w następujący sposób:

System będzie czysto rozproszonym systemem peer-to-peer, który składa się z zasobów obliczeniowych udostępnianych przez jego użytkowników. System peer-to-peer wykorzystuje Internet jako sieć do łączenia poszczególnych węzłów. Ani liczba węzłów, ani ich wiarygodność i niezawodność nie są znane. Celem systemu peer-to-peer jest zarządzanie własnością towaru cyfrowego (np. punktami sprzedaży lub cyfrowymi pieniędzmi).

Ścieżka do naśladowania

Istnieje siedem głównych zadań, którymi należy się zająć przy projektowaniu i rozwijaniu systemu oprogramowania zarządzającego własnością za pomocą czysto rozproszonego systemu peer-to-peer w środowisku otwartych i nierzetelnych księgach rachunkowych:

  • Opisywanie własności
  • Ochrona własności
  • Przechowywanie danych transakcji
  • Przygotowywanie ksiąg do rozpowszechniania w niewiarygodnym środowisku
  • Dystrybucja ksiąg
  • Dodanie nowej transakcji do ksiąg
  • Podejmowanie decyzji, które księgi reprezentuje prawdę

Podwójne wydatki jako problem kopiowania towarów cyfrowych

W kontekście kopiowania produktów cyfrowych problem podwójnego wydawania wiąże się z faktem, że dane na komputerze mogą być kopiowane bez zauważalnych ograniczeń. Fakt ten powoduje problemy z pieniędzmi cyfrowymi lub innymi danymi, które w danym momencie mają tylko jednego właściciela. Kopiowanie umożliwia replikowanie danych reprezentujących fragmenty cyfrowych pieniędzy i wykorzystywanie ich więcej niż jeden raz do dokonywania płatności. Jest to cyfrowy odpowiednik replikacji banknotów za pomocą maszyny kopiującej. Poza tym, że jest to technicznie możliwe, kopiowanie pieniędzy cyfrowych narusza podstawową zasadę pieniądza: identycznej części pieniędzy nie można przekazywać różnym osobom w tym samym czasie. Możliwość wielokrotnego kopiowania i wydawania pieniędzy cyfrowych sprawia, że ​​pieniądze stają się bezużyteczne, a tym samym problem podwójnego wydawania pieniędzy.

Podwójne wydatki jako problem rozproszonych systemów peer-to-peer w księgach

W przypadku opisywania problemu rozproszonego systemu peer-to-peer w księgach, problem podwójnego wydawania wiąże się z faktem, że przekazywanie informacji do wszystkich elementów takiego systemu wymaga czasu, w związku z czym nie wszyscy użytkownicy mają te same informacje o własności w tym samym czasie. czas. Ponieważ nie wszyscy mają aktualne informacje, mogą być wykorzystywani przez każdego, kto ma już najnowsze informacje. W rezultacie jedna osoba może przenieść własność więcej niż raz, co powoduje podwójne wydatki.

Podwójne wydatki jako przykład naruszenia integralności w rozproszonych systemach peer-to-peer

Korzystanie z rozproszonych systemów peer-to-peer nie ogranicza się do zarządzania własnością. Jednak problem przekazywania informacji między  urządzeniami równorzędnymi i aktualizacji danych utrzymywanych przez członków systemu pozostaje taki sam, niezależnie od konkretnej domeny aplikacji. W związku z tym na bardziej abstrakcyjnym poziomie problem podwójnego wydatkowania może być postrzegany jako problem utrzymania spójności danych w rozproszonych systemach peer-to-peer. Ponieważ spójność danych jest jednym z aspektów integralności systemu, można powiedzieć, że problem podwójnych wydatków jest szczególnym przykładem naruszenia integralności systemu

Jak rozwiązać problem podwójnych wydatków?

Ponieważ podwójne wydatki mogą mieć różne znaczenia, nie ma jednego sposobu, aby temu zapobiec. Zamiast tego może istnieć wiele różnych rozwiązań. W poniższych sekcjach opisano niektóre z nich.

Rozwiązywanie podwójnych wydatków jako problem kopiowania towarów cyfrowych

Problem polegający na tym, że wydawanie pieniędzy cyfrowych lub jakichkolwiek innych zasobów cyfrowych niejednokrotnie przez kopiowanie danych jest w rzeczywistości problemem związanym z charakterem własności. Wszelkie zaakceptowane sposoby mapowania danych, które reprezentują towary cyfrowe dla ich właścicieli, rozwiążą ten problem, niezależnie od jego konkretnej implementacji. Nawet fizyczna centralna książka lub (bardziej realistycznie) księga elektroniczna, niezależnie od jej architektury (scentralizowana lub peer-to-peer), może zapewnić, że dobro cyfrowe zostanie wydane tylko raz, pod warunkiem, że księga działa poprawnie przez cały czas.

Rozwiązywanie podwójnych wydatków jako problem rozproszonego systemu ksiąg rachunkowych typu peer-to-peer 

W tym kontekście podano architekturę oraz dziedzinę zastosowania systemu. Rozproszone systemy peer-to-peer w księgach są często uważane za klasyczny przykład wyprowadzania blockchain. W wyjaśnieniach przedstawionych w kroku 6 podkreślono zależność między łańcuchem blockchain a rozproszonymi systemami peer-to-peer w księgach. Dlatego blockchain, jako że termin ten jest używany tu, może być postrzegany jako rozwiązanie problemu podwójnego wydawania pieniędzy w rozproszonym systemie peer-to-peer.

Rozwiązywanie podwójnych wydatków jako przykład naruszenia integralności w rozproszonych systemach peer-to-peer

W tym kontekście została określona architektura systemu, ale domena aplikacji pozostaje nieokreślona. Dlatego rozwiązania na tym poziomie koncentrują się na osiągnięciu i utrzymaniu integralności w rozproszonych systemach peer-to-peer, niezależnie od ich konkretnego zastosowania. Jednak konkretne użycie rozproszonego systemu peer-to-peer określa znaczenie integralności. Na przykład prosta aplikacja do wymiany plików może uwzględniać różne aspekty definiowania integralności w porównaniu z systemem zarządzającym własnością w cyfrowej walucie. Stąd pytanie, czy blockchain-technology-suite jest właściwym narzędziem do osiągnięcia i utrzymania systemu