Najcięższe kryterium łańcucha

We wcześniejszych krokach dowiedziałeś się, że aplikacje blockchain rzadko wykorzystują stały poziom trudności do rozwiązania zagadki mieszającej w celu dodania nowego bloku do struktury danych blockchain. Zamiast tego zazwyczaj określają poziom trudności dynamicznie, co powoduje, że bloki różnią się w odniesieniu do wysiłku obliczeniowego, który został poświęcony na dodanie ich do struktury danych blokowych. Z drugiej strony kryterium najdłuższego łańcucha opiera się na założeniu, że ścieżka zawierająca najwięcej bloków jest tą, która reprezentuje najbardziej obliczeniowy wysiłek. Jednak w przypadku niejednorodnych poziomów trudności najdłuższa ścieżka niekoniecznie jest tą, która reprezentuje najbardziej obliczeniowy wysiłek. Dla każdej ścieżki wysiłek obliczeniowy, który został na nią wydany, można zmierzyć, dodając poziom trudności wszystkich bloków, które do niego należą. Wartość tę można obliczyć, wykorzystując fakt, że nagłówek bloku zawiera poziom trudności swojej łamigłówki. Zagregowany poziom trudności ścieżki jest często nazywany jej wagą. Rysunek

przedstawia identyczną strukturę danych blockchain, jak pokazano na rysunku kast, tym razem pokazuje również poziom trudności dla każdego z jego bloków. Najdłuższy łańcuch (ścieżka od korzenia 33FF do liścia 0101) ma wagę 5, podczas gdy drugi co drugi łańcuch (ścieżka od korzenia 33FF do liścia CCC1) ma wagę 6. Stąd struktura danych blokowych przedstawiona na rysunku ilustruje sytuację, w której kryterium najdłuższego łańcucha powoduje, że węzły wybierają łańcuch, który nie reprezentuje największego wysiłku obliczeniowego. W rezultacie, łańcuchy blokowe, które dynamicznie określają poziom trudności, nie wykorzystują najdłuższego kryterium łańcucha. Zamiast tego wykorzystują najcięższe kryteria łańcucha: wybierają historię danych transakcji, która jest reprezentowana przez najcięższy łańcuch. W przypadku, gdy poziom trudności jest identyczny dla wszystkich bloków, najdłuższa ścieżka jest identyczna z najcięższą ścieżką, a kryterium najdłuższego łańcucha i kryterium najcięższego łańcucha dają identyczny wynik.

Konsekwencje wyboru jednego łańcucha.

Wybór jednego określonego łańcucha pomiędzy wersjami powodującymi konflikt i ustanowienie go jako łańcucha autorytatywnego ma następujące konsekwencje:

  • Bloki sierota
  • Odzyskana nagroda
  • Wyjaśnienie własności
  • Ponowne przetwarzanie transakcji
  • Rosnący wspólny pień
  • Ewentualna spójność
  • Odporność na manipulacje

Bloki Sieroty

Struktura danych blockchain, która rośnie razem, wygląda jak drzewo, którego gałęzie reprezentują różne sprzeczne wersje historii transakcji. Zastosowanie kryterium wyboru faktycznie oznacza wybranie jednej ścieżki tego drzewa i ustanowienie go jako autorytatywnej wersji historii danych transakcji. Wszystkie bloki w drzewiastej strukturze danych, które nie są częścią ścieżki autorytatywnej, są opuszczane przez węzły i są nazywane blokami osieroconymi. Przy stosowaniu kryterium najcięższego łańcucha do sytuacji przedstawionej na rysunku powyżej,bloki 0101, BB11 i DD01 nie są częścią łańcucha autorytatywnego i dlatego są porzucane.

Odzyskana nagroda

Bloki sieroyt są bezużyteczne w celu wyjaśnienia własności, ponieważ nie przyczyniają się do autorytatywnego łańcucha. W rezultacie, nagroda przyznana węzłowi, który je stworzył i przesłał, jest odzyskiwana. Wynika to z reguły 11 i reguły 13 algorytmu blockchain, jak wyjaśniono w kroku , który stwierdza, że ​​jeśli blok dodany do struktury danych blockchain zostanie zidentyfikowany jako nieważny lub później nieużyteczny, ten blok, jak również wszystkie jego kolejne bloki zostaną logicznie usunięte ze struktury danych blockchain, a nagroda za dodanie do niej zostanie wycofana z węzła, który ją otrzymał.

Wyjaśnienie własności

Tylko te transakcje, które są częścią wiarygodnego łańcucha, zostały uznane za dokonane i służą do wyjaśnienia wniosków dotyczących własności. Bloki sierot nie należą do kolektywnie wybranego łańcucha. Dlatego ich dane transakcyjne nie są częścią historii danych transakcji. Zamiast tego są one traktowane tak, jakby nigdy się nie wydarzyły i są traktowane jako nieistniejące, jeśli chodzi o wyjaśnienie wniosków związanych z własnością.

Ponowne przetwarzanie transakcji

Dane transakcji, które są częścią bloków osieroconych, zostały pierwotnie przesłane w celu dodania ich do historii transakcji. Fakt, że traktuje się je tak, jakby nigdy się nie wydarzyły, nigdy nie był planowany wcześniej, zamiast tego jest wynikiem losowy charakter dowodu pracy i jego roli w powiększaniu bazy danych blockchain. Dane transakcji, które nieszczęśliwie trafiły do ​​bloków osieroconych, mają kolejną szansę, aby stać się częścią historii wybranych transakcji, umieszczając je ponownie w skrzynce odbiorczej węzła, aby można je było ponownie przetworzyć i później dodać do bazy danych blockchain. Wynika to z reguły 11 algorytmu blockchain, jak wyjaśniono wcześniej. W rezultacie transakcje, które kiedyś były częścią autorytatywnego łańcucha, mogą zniknąć na jakiś czas, jeśli większość węzłów opuści blok, do którego należą, ale pojawią się one później, gdy tylko zostaną przetworzone.

Rosnący wspólny pień

Zastosowanie kryterium wyboru nie zawsze daje jednoznaczny wynik. Na przykład w sytuacjach takich jak te przedstawione na rysunku z ostatnią częścią istnieje więcej niż jeden najdłuższy łańcuch. W takich sytuacjach struktura danych blockchain ma dwie równe ścieżki, które powstają ze wspólnego łącza. Na rysunku 3 wspólny pień składa się tylko z dwóch bloków, które tworzą krótki łańcuch A397 → 33FF. Na rysunku 4 wspólny bagażnik składa się już z trzech bloków, które tworzą łańcuch AB12 → A397 → 33FF, który obejmuje wspólny pień poprzedniej sytuacji. Dlatego nawet jeśli kryterium selekcji daje niejednoznaczne wyniki, sprzeczne wersje historii transakcji powstają z mniej niejednoznacznego wspólnego pnia. Im głębiej w dół, jak wyglądasz, tym mniej dwuznaczna jest decyzja, czy blok jest częścią najdłuższego łańcucha.

Ewentualna spójność

Rozważmy sytuację przedstawioną na Rysunku 4, gdzie najdłuższa charakterystyka łańcucha nie daje jednoznacznego wyniku. Jak widać na rys. 5, następny blok dodawany do struktury danych blokowych określa, czy blok BB11, czy CCC1 będzie albo częścią najdłuższego łańcucha, albo zostanie porzucony. Ale kto decyduje, że następny blok dodawany do struktury danych blockchain pokazanej na rysunku 4 odnosi się do bloku BB11 jako jego poprzednika, a zatem porzuca blok CCC1? Zaskakująca i być może rozczarowująca odpowiedź jest taka, że ​​jest czysto losowa. W sytuacji pokazanej na Rysunku 4, węzły mają swobodę decydowania o tym, która gałąź się rozszerzy. W rezultacie, niektóre węzły mogą dążyć do znalezienia nowego bloku, który odnosi się do bloku BB11 jako jego poprzednika, podczas gdy inne węzły mogą dążyć do znalezienia nowego bloku, który odnosi się do bloku CCC1 jako jego poprzednika. Który z nich kończy pierwszy blok, zależy od rozwiązania zagadki, która zajmuje skończony, ale losowy okres czasu. Węzeł, który rozwiązuje łamigłówkę nowego bloku, najpierw decyduje, które ze współpracujących ze sobą gałęzi zostanie przedłużone i które bloki zostaną opuszczone. W związku z tym wzrost drzewa-struktury danych typu blockchain wykazuje losowe zachowanie ze względu na wyścig prędkości do rozwiązania zagadki i losowych fluktuacji w wiadomościach przesyłanych przez sieć. Następny blok, którego czas pojawienia się jest zarządzany przez losowy czas potrzebny do rozwiązania swojej łamigłówki, określa, które ścieżki zostaną przedłużone i który blok zostanie opuszczony. Jak wcześniej wspomniano, kolidujące gałęzie struktury danych blokowych w kształcie drzewa dzielą wspólny pień, który pozostaje stały niezależnie od bloków lub listków, które są opuszczone. W związku z tym bloki znajdujące się w górnej części autorytatywnego łańcucha lub w jego pobliżu najbardziej odczuwają losowy charakter pojawiania się nowych bloków, podczas gdy bloki znajdujące się głębiej w strukturze danych blokowych są mniej dotknięte. Stąd można stwierdzić: im głębiej w dół łańcucha autorytatywnego znajduje się blok:

  • Im dalej w przeszłości został dodany
  • Im więcej czasu upłynęło od włączenia go do struktury danych blockchain
  • Im więcej wspólnych wysiłków poświęcono na dodawanie kolejnych bloków
  • Im mniej ma to wpływu na losowe zmiany bloków należących do najdłuższego łańcucha
  • Im mniej prawdopodobne, że zostanie porzucony
  • Im bardziej akceptują to węzły systemu
  • Im bardziej zakotwiczone jest we wspólnej historii węzłów

Fakt, że pewność co do włączenia bloków do autorytatywnego łańcucha rośnie wraz z upływem czasu, a kolejne bloki są dodawane ostatecznie nazywane jest ewentualną spójnością.

Solidność przeciwko manipulacjom

Ta ścieżka struktury danych-bloków w kształcie drzewa, która reprezentuje najbardziej wysiłek obliczeniowy, jest autorytatywną wersją historii transakcji. Ustanowienie i utrzymanie autorytatywnej ścieżki to tylko kwestia kontrolowania większości mocy obliczeniowej całego systemu. Ustanowienie nowej autorytatywnej ścieżki, która rozpoczyna się od jednego z wewnętrznych bloków bazy danych blockchain, wymaga nadrobienia i wyprzedzenia ścieżki utrzymywanej przez większość. Ten fakt jest podstawą solidności blockchain. Dopóki szczery węzeł będzie posiadał większość zasobów obliczeniowych całego systemu, utrzymywana przez nie ścieżka będzie rosła najszybciej i wyprzedzać konkurencyjne ścieżki. Aby manipulować wewnętrznym blokiem, intruz musiałby powtórzyć dowód działania tego bloku, a następnie powtórzyć łamigłówkę wszystkich bloków po nim, a następnie dogonić i wyprzedzić ścieżkę utrzymywaną przez uczciwe węzły. Jednak ustanowienie nowej ścieżki przez dogonienie i wyprzedzanie drogi utrzymywanej przez większość jest niemożliwe dla każdego napastnika kontroluje mniejszą moc obliczeniową niż większość. Dlatego każda próba ustanowienia nowej wiarygodnej ścieżki, która zawiera oszukańcze transakcje, zostanie przekroczona, a zatem zaniechana przez ścieżkę utrzymywaną przez uczciwą. większość. W rezultacie historia transakcji obsługiwanych przez system jest odporna na manipulacje.

Jak to działa

Idea wyboru historii transakcji na podstawie wysiłku obliczeniowego, który został poświęcony na jej utworzenie, doprowadziła do następujących dwóch kryteriów:

  • Kryterium najdłuższego łańcucha
  • Najcięższe kryterium łańcuchowe

Kryterium najdłuższego łańcucha

Kryterium o najdłuższym łańcuchu opiera się na założeniu, że struktura danych blokowych zawierająca najwięcej bloków reprezentuje najbardziej zagregowany wysiłek obliczeniowy. Aby zbadać to kryterium, rozważmy sytuację początkową gdy węzły systemu rozproszonego utrzymują i zgadzają się na identyczną wersję struktury danych blokowych, jak pokazano na rysunku , która przedstawia schemat struktury danych blokowych, która pomija wiele szczegółów dla uproszczenia. Każde pole oznacza jeden blok, który jest identyfikowany skróconą wartością skrótu. Strzałka, która wskazuje z jednego pola do drugiego, reprezentuje skrót hash, który łączy nagłówek bloku z jego poprzednikiem. W tej sytuacji początkowej wszystkie węzły zgadzają się na jedną historię danych transakcji i dążą do rozszerzenia istniejącego łańcucha o inny blok odnoszący się do bloku A397 jako jego poprzednika

Znalezienie nowego bloku jest wyścigiem między wszystkimi węzłami, ponieważ wymaga rozwiązania blokowej łamigłówki. Rysunek  pokazuje strukturę danych blockchain, którą większość węzłów utrzymuje po tym, jak jeden węzeł rozwiązał układ haszowania nowego bloku i wysłał go do swoich peerów.

W rezultacie, te węzły, które utrzymują strukturę danych blokowych, jak przedstawiono powyżej, dążą do rozszerzenia jej o nowy blok, który odnosi się do bloku AB12 jako jego poprzednika. Z większościowego punktu widzenia istnieje tylko jedna wersja struktury danych blockchain składająca się z trzech bloków. Jednak wysłanie nowego bloku za pośrednictwem sieci kosztuje i czas spotyka różnego rodzaju przeciwników. Z powodu opóźnienia w przekazywaniu wiadomości, mniejszość węzłów nie otrzymała jeszcze bloku AB12. W związku z tym nadal próbują przedłużyć łańcuch przedstawiony na  pierwszym rysunku. W końcu jeden z nich z powodzeniem rozwiązuje zagadkę mieszania dla nowego bloku z wartością mieszającą DD01 i przekazuje ją swoim rówieśnikom. Ostatecznie większość węzłów otrzymała zarówno blok AB12, jak i blok DD01. W rezultacie większość węzłów utrzymuje strukturę danych blokowych, jak pokazano na rysunku , który składa się z dwóch gałęzi na szczycie wspólnego pnia.

W takiej sytuacji kryterium najdłuższego łańcucha nie daje jednoznacznego wyniku, ponieważ oba łańcuchy (AB12 → A397 → 33FF i DD01 → A397 → 33FF) mają tę samą długość. W sytuacji przedstawionej na powyższym rysunku węzły mają swobodę decydowania o tym, która gałąź się rozszerzyć. Niektóre węzły mogą dążyć do znalezienia nowego bloku, który odnosi się do bloku AB12 jako jego poprzednika, podczas gdy inne węzły dążą do znalezienia nowego bloku, który odnosi się do bloku DD01 jako jego poprzednika. Nagle większość węzłów otrzymuje dwa nowe bloki, BB11 i CCC1, które oba odnoszą się do bloku AB12 jako swojego poprzednika. Może się tak zdarzyć, ponieważ dwa węzły kończą dowód pracy dla swoich bloków prawie w tym samym czasie. Wynikiem włączenia tych dwóch nowych bloków do struktury danych blockchain jest struktura danych, która zawiera trzy łańcuchy, jak pokazano na rysunku

Jeden z łańcuchów składa się tylko z trzech bloków, podczas gdy pozostałe dwa składają się z czterech bloków. Kryterium o najdłuższym łańcuchu wyraźnie wyklucza najkrótszy łańcuch, którym jest łańcuch DD01 → A397 → 33FF. Jednak kryterium najdłuższego łańcucha nie daje jednoznacznego wyniku, ponieważ istnieją dwa łańcuchy o tej samej długości. W rezultacie, niektóre węzły mogą dążyć do znalezienia nowego bloku, który odnosi się do bloku BB11 jako jego poprzednika, podczas gdy inne węzły mogą dążyć do znalezienia nowego bloku, który odnosi się do bloku CCC1 jako jego poprzednika. Ostatecznie pojawia się nowy blok odnoszący się do bloku BB11 jako jego poprzednika, który daje strukturę danych, jak pokazano na rysunku

Struktura danych blockchain przedstawiona na rysunku zawiera wiele sprzecznych wersji historii transakcji, ale kryterium najdłuższego łańcucha daje jeden jednoznaczny wynik, którym jest łańcuch składający się z bloków 0101 → BB11 → AB12 → A397 → 33FF. Większość węzłów i ostatecznie wszystkie węzły systemu będą używać tego łańcucha do wyjaśniania żądań związanych z własnością. Większość węzłów i ostatecznie wszystkie węzły systemu będą dążyć do rozszerzenia tej gałęzi poprzez znalezienie nowego bloku, który odnosi się do bloku 0101 jako jego poprzednika. Ważnym rezultatem jest to, że struktura danych blockchaina w rzeczywistości nie wygląda jak prosty łańcuch, zamiast tego wygląda bardziej jak drzewo lub kolumnowy kaktus, jak by to nazwać “blockcactus”. Gałęzie drzewa reprezentują sprzeczne wersje historii transakcji, ale w oparciu o kryterium najdłuższego łańcucha, wszystkie węzły ostatecznie identyfikują identyczną wersję historii transakcji w sposób zgodny.

Uwaga

Ze względu na swój kształt struktura danych blockchain jest często nazywana strukturą danych drzewa. Pierwszy i najstarszy blok w strukturze danych blokowych to ten, który nie ma poprzednika i jest często nazywany korzeniem struktury w kształcie drzewa. Blok bez następcy nazywa się liściem. Prosta sekwencja bloków od korzenia do liścia nazywana jest ścieżką.

Wybór historii transakcji. Niech komputery głosują stopami

Krok wcześniej wyjaśnił, w jaki sposób węzły danych transakcji procesu blockchain i nowe bloki. Jednak historia transakcji obsługiwana przez poszczególne węzły systemu może nadal różnić się z powodu opóźnień lub błędów w przekazywaniu wiadomości. W związku z tym krok ten koncentruje się na rozwiązywaniu konfliktów między różnymi wersjami historii transakcji obsługiwanymi przez poszczególne węzły systemu.

Metafora

Kiedy ostatni raz spacerowałeś po parku? Czy zauważyłeś zjawisko, które można zaobserwować w większości parków na całym świecie? Wytyczono ścieżki, które zostały stworzone w oparciu o plany i pomysły architektów krajobrazu, a także wytyczono szlaki stworzone przez odwiedzających. Często te utarte ścieżki są prostymi liniami na trawniku i zapewniają efektywne skróty między dwoma punktami orientacyjnymi, dwoma ławkami parku lub innymi punktami zainteresowania. Pobite ścieżki pojawiają się w miejscach, w których wiele osób samodzielnie i konsekwentnie decyduje się na zejście z utwardzonych ścieżek, ponieważ jest to bardziej pożądane niż podążanie ścieżką utwardzoną. Stąd tworzenie dróg gruntowych w parkach można postrzegać jako wynik bardzo podstawowej formy demokracji. Nie ma oficjalnych sondaży ani wyborów, które rządzą tworzeniem tych ścieżek, zamiast tego każdy odwiedzający przyczynia się do ich powstania z własną niezależną decyzją chodzenia lub nie chodzenia po pewnych ścieżkach i pozostawienia swoich śladów na ziemi. Rzadziej używane szlaki znikają, gdy natura odbiera swoje terytorium, ale inne pozostają, ponieważ wiele osób nadal chodzi po nich. Ten etap nauki wyjaśnia aspekt blockchain, który działa podobnie do pojawiania się i zaniku utartych ścieżek w parkach.

Cel

Celem jest utrzymanie jednej jednoznacznej historii danych transakcji pomiędzy wszystkimi węzłami w sieci, która w rezultacie daje identyczne wyniki przy wyjaśnianiu żądań dotyczących własności, bez względu na to, czy dany węzeł jest kontaktowany czy żądany.

Wyzwanie

Algorytm blockchain, jak wyjaśniono w kroku poprzednim, narzuca dwustopniowy rytm wszystkim węzłom systemu. W dowolnym momencie każdy węzeł systemu sprawdza nowy blok utworzony przez jednego z jego peerów lub próbuje być następnym węzłem, który tworzy nowy blok, który następnie musi zostać sprawdzony przez wszystkie inne. Jednak nie ma globalnego zegara, który rządzi węzłami i określa, które z tych dwóch rodzajów pracy muszą być wykonane w danym momencie. Przyjazd nowymi blokami w skrzynkach odbiorczych poszczególnych węzłów jest generatorem impulsów zegarowych, który reguluje pracę dowolnego węzła. Jednak pojawienie się nowych bloków w skrzynkach odbiorczych poszczególnych węzłów zależy w dużej mierze od dostarczania wiadomości i możliwości sieci, która ma swoje przeciwności. Wiadomości mogą się zagubić, mogą zostać dostarczone z opóźnieniem lub mogą pojawić się w dowolnej kolejności. W rezultacie węzły sieci nie mają w tym samym czasie identycznych informacji. Co więcej, przełączanie między dwiema fazami roboczymi nie odbywa się w tym samym czasie dla wszystkich węzłów. W razie potrzeby, każdy węzeł przełącza się pomiędzy dwiema fazami roboczymi w swoim indywidualnym czasie regulowanym przez nadejście wiadomości w swojej skrzynce odbiorczej. Powoduje to nakładanie się faz roboczych poszczególnych węzłów. Oba efekty narzucają ogromną przeszkodę w utrzymaniu jednej jednoznacznej historii danych transakcji wśród wszystkich rówieśników w sieci. Stąd wyzwaniem jest znalezienie sposobu na zidentyfikowanie jednej jednoznacznej historii danych transakcyjnych w obliczu wszelkich przeciwności w dostarczaniu wiadomości i bez konieczności powrotu do scentralizowanego rozwiązania.

Pomysł

Przykład utartych ścieżek w parkach pokazuje, że grupa ludzi może dojść do porozumienia lub dojść do porozumienia w kolektywnych problemach decyzyjnych, niezależnie i konsekwentnie głosując nogami. Wynik takiego głosowania jest często nazywany rozproszonym konsensusem, ponieważ jest osiągany przez niezależnie działające osoby bez centralnego elementu kontroli lub koordynacji.

Uwaga

Konsensu jest synonimem porozumienia pomiędzy niezależnymi osobami. Rozproszony konsensus to porozumienie pomiędzy członkami czysto rozproszonego systemu peer-to-peer.

Sytuacje, w których tłum lub roje niezależnie działających osób rozwiązuje zbiorowy problem, mogą charakteryzować następujące warunki:

  1. Grupa osób działa w identycznym środowisku.
  2. Istnieje kolektywny problem decyzyjny.
  3. Osoby samodzielnie dążą do osiągnięcia identycznego celu.
  4. Poszczególne działania wykonywane w celu osiągnięcia celu pozostawiają widoczne ślady w środowisku, które pomagają w podjęciu decyzji o zbiorowym problemie decyzyjnym.
  5. Osoby używają identycznego kryterium do oceny problemu decyzyjnego w oparciu o zmianę swojego środowiska.

Ideą blockchain jest umożliwienie wszystkim węzłom niezależnego głosowania nogami, a tym samym osiągnięcie porozumienia zbiorowego dotyczącego wyboru jednej wersji historii transakcji. Blockchain, jaki my znamy w tym momencie spełnia pierwsze cztery warunki zbiorowego podejmowania decyzji:

  1. Wszystkie węzły działają w identycznym środowisku składającym się z sieci, węzłów, które utrzymują swoje indywidualne kopie struktury danych blokowych i algorytmu blockchain, który reguluje zachowanie węzłów.
  2. Problemem decyzyjnym jest zbiorowe wybieranie jednej historii transakcji.
  3. Wszystkie węzły starają się zmaksymalizować swój indywidualny dochód uzyskany w nagrodę za dodanie nowych ważnych bloków do struktury danych blockchain.
  4. Aby osiągnąć swoje cele, wszystkie węzły wysyłają nowe bloki do wszystkich swoich rówieśników, aby je zbadać i zaakceptować. W rezultacie każdy węzeł pozostawia swój indywidualny ślad w środowisku, które jest zbiorowo utrzymywaną strukturą danych blokowych.

Brakuje jednak piątego punktu: kryterium stosowanego przez wszystkie węzły do ​​podejmowania decyzji w oparciu o zmiany w ich otoczeniu. Idea wyboru historii danych transakcji opiera się na tym, w jaki sposób dodawane są nowe bloki do struktury danych blokowych oraz w jaki sposób dane są chronione przed manipulacją. Ze względu na dowód pracy dodanie nowego bloku jest kosztowne pod względem obliczeniowym i sprawia, że ​​próby manipulowania historią transakcji są jeszcze bardziej kosztowne obliczeniowo. W związku z tym ilość zagregowanych wysiłków obliczeniowych poświęconych na tworzenie historii transakcji wydaje się być naturalnym kryterium wyboru historii danych transakcji w przypadku, gdy istnieje więcej niż jedna wersja powodująca konflikt. Jeśli wszystkie węzły systemu stosują identyczne kryterium wyboru historii transakcji , wtedy wszystkie węzły systemu ostatecznie uzgodnią identyczną wersję historii. Zbiorowo wybrana wersja historii transakcji jest często nazywana autorytatywnym łańcuchem lub historią.

Jak to działa: Szkielet

Zasady konkursu ustanawiają prosty dwustopniowy rytm, który reguluje pracę każdego węzła w sieci. W dowolnym momencie wszystkie węzły systemu znajdują się w jednej z dwóch faz:

  1. Ocena nowego bloku, który został utworzony i przesłany przez jednego z uczestników
  2. Trudno jest znaleźć następny węzeł, który tworzy nowy blok, który z kolei musi być oceniany przez wszystkie pozostałe

Jednym z najważniejszych wyników algorytmu blockchain jest to, że nie tylko zapewnia on walidację danych transakcji i bloków, ale także zapewnia, że ​​wszystkie węzły mają identyczny rytm pracy. Ten identyczny rytm pracy jest podstawową koncepcją upewnij się, że wszystkie bloki zachowują identyczną historię danych transakcji. Jednakże rytm pracy nie jest narzucany węzłom przez zegar centralny, ponieważ byłoby to sprzeczne z czysto rozproszoną naturą systemu. To, co sprawia, że ​​rytm jest odpowiedni, to pojawianie się komunikatów w poszczególnych węzłach. Gdy tylko węzeł otrzyma wiadomość zawierającą nowy blok, przechodzi do fazy oceny; i jak tylko zakończy się faza oceny, węzeł przełącza się z powrotem do weryfikacji nowych danych transakcji i utworzenia nowego bloku.

Jak to działa: szczegóły

Procedura, która określa sposób, w jaki węzły obsługują nowe dane transakcji i bloki, które otrzymują od swoich rówieśników, składa się z następujących reguł (reguły wydrukowane czcionką pogrubioną są tymi, które ustanawiają dwustopniowy rytm):

  1. Nowe dane transakcji, a także nowe bloki są przekazywane do wszystkich węzłów w sposób plotkarski.
  2. Każdy węzeł gromadzi nowe dane transakcji w skrzynce odbiorczej i wybiera je do przetwarzania.
  3. Każdy węzeł natychmiast przetwarza nowe bloki o najwyższym priorytecie.
  4. Każdy węzeł przetwarza nowe dane transakcji, zatwierdzając je pod kątem autoryzacji oraz poprawności formalnej i semantycznej.
  5. Każdy węzeł gromadzi tylko prawidłowe dane transakcji w drzewie Merkle i rozpoczyna tworzenie nowego bloku poprzez rozwiązywanie jego łamigłówki.
  6. Gdy węzeł zakończy układkę haszującą, wysyła nowo utworzony blok do wszystkich innych węzłów.
  7. Każdy węzeł przetwarza nowe bloki, sprawdzając rozwiązanie swojej łamigłówki i weryfikując wszystkie zawarte w niej dane transakcji pod kątem poprawności formalnej, semantycznej poprawności i autoryzacji.
  8. Każdy węzeł dodaje poprawne bloki do swojej kopii bazy danych blockchain.
  9. Jeśli nowo przybyły blok został zidentyfikowany jako nieważny, zostanie odrzucony, a węzły będą kontynuować przetwarzanie danych transakcji lub po zakończeniu układania haszowania nowego bloku.
  10. Jeśli nowo przybyły blok został zidentyfikowany jako prawidłowy, węzeł usuwa transakcje zawarte w nowym bloku z własnej skrzynki odbiorczej i rozpoczyna przetwarzanie danych transakcji i utworzenie nowego bloku.
  11. Jeśli blok dodany do struktury danych blockchain zostanie zidentyfikowany jako niepoprawny lub później nieużyteczny, ten blok, jak również wszystkie jego kolejne bloki zostaną usunięte ze struktury blockchain-data, a ich transakcje zostaną dodane do skrzynkę odbiorczą do ponownego przetworzenia.
  12. Węzeł, którego blok został zaakceptowany, otrzyma opłaty za wszystkie transakcje zawarte w bloku jako nagrodę.
  13. Jeśli blok zostanie usunięty ze struktury danych blockchain, nagroda za jego dodanie zostanie wycofana z węzła, który ją otrzymał.

Dlaczego to działa

Powody, dla których działają poprzednie zasady:

Ze względu na regułę 1 wszystkie węzły otrzymują wszystkie informacje potrzebne do sprawdzenia poprawności i dodania danych transakcji.

Z powodu reguły 2, węzły przetwarzają otrzymywane nowe dane transakcji.

Z powodu reguły 3 bloki utworzone przez inne węzły są przetwarzane natychmiast po przybyciu do skrzynki odbiorczej węzłów.

Z powodu reguły 4, tylko poprawne dane transakcji są dodawane do bazy danych blockchain.

Z powodu zasady 5 wszystkie węzły biorą udział w wyścigu o rozwiązanie zagadki hash. Ze względu na charakter łamigłówki jest nieprzewidywalne, który węzeł rozwiąże ją w pierwszej kolejności.

Ze względu na regułę 6 wszystkie węzły są informowane, gdy węzeł rozwiąże układ haszowania nowego bloku.

Zgodnie z regułami 6 i 3, wszystkie węzły otrzymują nowo utworzony blok i rozpoznają zwycięzcę wyścigu w celu rozwiązania zagadki hash.

Zgodnie z zasadą 7 wszystkie węzły systemu sprawdzają i weryfikują nowo utworzone bloki i zapewniają, że akceptowane są tylko prawidłowe bloki.

Z powodu reguły 8 wszystkie węzły dodają nowe bloki do swojej własnej kopii struktury danych blockchain, a tym samym rozwijają historię transakcji.

Z powodu reguły 9, utrzymywana zbiorowo historia transakcji jest wolna od nieprawidłowych transakcji, a tym samym zachowuje integralność.

Z powodu reguły 10 żadne dane transakcji nie zostaną dodane dwukrotnie.

Z powodu reguły 11, żadna ważna transakcja nie zostanie utracona, nawet jeśli wcześniej przetworzone bloki zostaną ponownie przetworzone.

Z uwagi na regułę 11 system jest w stanie sprawdzać ważność ex post historii transakcji i korygować ją retrospektywnie.

Zgodnie z regułą 12 węzły mają motywację do przetwarzania transakcji i szybkiego tworzenia nowych bloków.

Z powodu reguły 12 wszystkie węzły mają motywację do informowania wszystkich innych węzłów o a nowy blok, ponieważ zdobycie nagrody zależy od sprawdzenia transakcji i zaakceptowania przez wszystkie inne węzły.

Zgodnie z zasadą 13, węzły mają motywację do prawidłowego działania, aby uniknąć przyjmowania nieprawidłowych danych transakcji lub tworzenia nieprawidłowych bloków.

Zgodnie z zasadą 13, węzły mają zachętę do przeglądania i ponownego zatwierdzania bloków i transakcji w sposób retrospektywny.

Radzenie sobie z nieuczciwym zachowaniem

Blockchain ma na celu stworzenie integralności i zaufania do całkowicie otwartego systemu peer-to-peer, który składa się z nieznanej liczby węzłów o nieznanej niezawodności i wiarygodności. Najważniejsze rodzaje nieuczciwych zachowań w systemach peer-to-peer zarządzających własnością to:

  • Przesyłanie transakcji przez udawanie kogoś innego
  • Akceptowanie nieprawidłowych danych transakcji lub bloków
  • Przytłaczanie węzła z wieloma danymi transakcji w celu spowodowania awarii
  • Odmowa przetwarzania pewnych danych transakcji
  • Odmawianie przekazywania informacji

Wszystkie te przypadki nieuczciwego zachowania są już objęte:

  • Koncepcją bezpieczeństwa transakcji (identyfikacja, uwierzytelnienie i autoryzacja za pomocą asymetrycznej kryptografii i podpisów cyfrowych), która ogranicza dostęp do konta właścicielowi odpowiedniego klucza prywatnego
  • Modelem komunikacji plotki, który zapewnia, że ​​każdy węzeł ostatecznie otrzymuje wszystkie informacje
  • Architekturą systemu zapewniającą, że ​​cały system pozostaje żywy, nawet jeśli niektóre pojedyncze węzły ulegną awarii lub przestaną przetwarzać dane
  • Algorytm blockchain

Najważniejszą bronią blockchainu przeciwko nieuczciwym węzłom jest siła uczciwej większości oraz efekty nagrody i kary. Nawet jeśli niektóre węzły wysyłają sfałszowane transakcje lub akceptują nieprawidłowe dane transakcji lub są nieprawidłowe bloki, większość uczciwych węzłów i ich dążenie do nagrody przeważy próby nieuczciwości, aby przeciwdziałać integralności systemu. Oczywiście, takie podejście zależy od założenia, że ​​naprawdę jest większość uczciwych  węzłów.

Perspektywy

W tym kroku wyjaśniono, w jaki sposób blockchain przetwarza dane transakcji i dodaje je do struktury danych blockchain, a tym samym włącza je do oficjalnej historii danych transakcji. Instrukcje omówione w tym kroku mają zapewnić, że wszystkie węzły w systemie zachowują identyczne wersje bazy danych blockchain i tym samym zachowują identyczną historię danych transakcji. Czasami jednak węzły utrzymują różne historie, a to oznacza, że ​​nie zgadzają się na jedną identyczną historię danych transakcji. Rozwiązanie tych konfliktów jest kolejnym zadaniem algorytmu blockchain, który zostanie rozpatrzony w następnym kroku

Jak to działa: Bloki konstrukcyjne

Algorytm blockchain to sekwencja instrukcji, która określa sposób przetwarzania danych i bloków w nowych węzłach. Poszczególne reguły i procedury można powiązać z następującymi elementami:

  • Zasady sprawdzania poprawności
  • Nagroda
  • Kara
  • Zawody
  • Kontrola peerów

Zasady walidacji

Ostatecznym celem algorytmu blockchain jest zapewnienie, że struktura blockchain-data zawiera tylko prawidłowe bloki, które z kolei są poprawnymi danymi transakcji i prawidłowymi nagłówkami bloków. Ważność tych danych jest oceniana na podstawie dwóch odrębnych grup reguł walidacji:

  • Reguły walidacji dla danych transakcji
  • Reguły walidacji dla nagłówków bloków

Zasady walidacji dla danych transakcji

Reguły walidacji dla danych transakcji definiują, które dane są wymagane do opisu transakcji. Zasady te obejmują poprawność formalną, poprawność semantyczną i autoryzację. W kroku wcześniejszym omówiono zasady sprawdzania poprawności danych dotyczących transakcji. Te zasady są specyficzne dla celu aplikacji blockchain. W związku z tym blockchain do zarządzania własnością w cyfrowych punktach bonusowych może mieć różne zasady sprawdzania poprawności niż blockchain, który zarządza własnością nieruchomości.

Reguły walidacji dla nagłówków bloków

Zasady sprawdzania poprawności nagłówków bloków koncentrują się na poprawności formalnej i semantycznej nagłówków bloków. Zasady te są agnostyczne w stosunku do zawartości danych transakcji; zamiast tego zajmują się sposobem, w jaki informacje są dodawane do struktury danych blockchain. W kroku  wcześniejszym omówiono obowiązkowe dane nagłówka bloku i zasady ich sprawdzania. Centralnym elementem walidacji nagłówków bloków jest odpowiednio weryfikacja dowodu pracy lub układanki. Tylko bloki, których nagłówki zawierają poprawne rozwiązanie swojej indywidualnej łamigłówki, są przetwarzane dalej. Każdy blok, którego nagłówek nie przejdzie weryfikacji jego dowodu pracy, zostanie natychmiast odrzucony.

Nagroda

Tworzenie prawidłowych bloków kosztuje energię, czas i pieniądze, ponieważ wymaga rozwiązania skomplikowanej kosztowo układanki mieszającej, która jest unikalna dla każdego bloku. Układka haszująca jest integralnym elementem, który sprawia, że ​​struktura blockchain-data jest niezmienna. W związku z tym, rozwiązywanie zagadki hash jest absolutnie niezbędne, podobnie jak koszty. Jedynym sposobem, aby przekonać peerów do przeniesienia ciężaru rozwiązywania łamigłówki, jest zaoferowanie im nagrody jako rekompensaty za ich pracę. W związku z tym algorytm blockchain określa, w jaki sposób węzły, które przesyłają prawidłowe bloki, są nagradzane. Z bardziej abstrakcyjnego punktu widzenia można stwierdzić, że nagrodą jest rekompensata za wszystkie obciążenia związane z osiągnięciem i utrzymaniem integralności całego systemu

Kara

Nagroda jest tylko jednym z instrumentów, który zapewnia peerom motywację do walidacji danych transakcji i tworzenia prawidłowych bloków. Blockchain również potrzebuje sposobu na ukaranie peerów za przeciwdziałanie integralności systemu. Typowe środki kary są odebranymi nagrodami za bloki, które zostały zaakceptowane w przeszłości, ale zostały uznane za nieważne lub później bezużyteczne. Inną formą kary jest brak nagrody. Pozwalanie węzłom na udowodnienie pracy, ale nie nagradzanie ich za to, że identyfikuje blok jako duplikat, jest za stare lub jest bezużyteczne, jest karą samą w sobie. Jest to prawdą, ponieważ utworzenie poprawnego bloku wymaga rozwiązania zagadki, która z kolei wiąże się z kosztami. Otrzymanie nagrody za tworzenie bloku oznacza, że ​​nie można pokryć kosztów jego utworzenia. Dlatego też nieuznanie nagrody jest również formą kary.

Zawody

Nagradzanie węzłów za przesyłanie prawidłowych bloków jest podstawową koncepcją algorytmu blockchain, ale rozdawanie nagród kosztuje zasoby. Dlatego ważne jest zapobieganie marnowaniu zasobów poprzez nagradzanie węzłów, które nie przyczyniają się znacząco do utrzymania systemu. Najlepszym sposobem na osiągnięcie wysokiej jakości pracy przy jednoczesnym obniżeniu kosztów jest ustalenie konkursu na nagrody w oparciu o dobrze zdefiniowane kryterium. Algorytm blockchain utrzymuje ciągłą konkurencję o nagrody oparte na dwóch kryteriach. Konkurencja jest w rzeczywistości połączeniem następujących konkursów, które odbywają się sekwencyjnie:

  • Szybka konkurencja
  • Konkurencja jakościowa

Tylko węzeł, który wygra oba konkursy, otrzymuje nagrodę za złożenie nowego bloku. Sztuczka polega na tym, że przegrani w zawodach szybkościowych są sędziami w konkurencjach jakościowych i potwierdzają blok, który składa zwycięzca konkursu prędkości. Zapewnia to dokładną analizę złożonego bloku.

Szybka rywalizacja

Konkurencja prędkości pomiędzy węzłami opiera się na układance hash. Centralnym elementem tworzenia poprawnego bloku jest stworzenie dowodu pracy, co oznacza rozwiązanie unikatowej łamigłówki nowego bloku. Z uwagi na charakter kryptograficznych funkcji skrótu, rozwiązywanie zagadki zajmuje nieokreślony okres czas. Nie ma sposobu, aby rozwiązać zagadkę hashowania, ponieważ zagadka zależy od zawartości samego bloku. W rezultacie wszystkie węzły biorą udział w konkursie na rozwiązywanie zagadki nowego bloku. Gdy węzeł prześle nowy blok, konkurencja prędkości zostanie zakończona. Pierwszy węzeł, który przesyła nowy blok z poprawnym rozwiązaniem swojej łamigłówki, jest zwycięzcą konkursu prędkości i staje się jedynym kandydatem w konkursie jakości.

Konkurencja jakości

Konkurs jakościowy koncentruje się na poprawności przesłanego bloku. Gdy węzeł prześle nowy blok, zostanie wysłany do wszystkich węzłów systemu. Otrzymując nowy blok, każdy węzeł musi działać jako sędzia w konkurencji jakości, co oznacza sprawdzanie poprawności nowego bloku na podstawie reguł sprawdzania poprawności danych transakcji i nagłówków bloków. Jeśli blok zostanie uznany za prawidłowy, węzeł, który przesłał nowy blok, otrzyma nagrodę i zostanie otwarta nowa konkurencja szybkościowa z danymi dotyczącymi transakcji, które zostały w międzyczasie lub zostały dostarczone. Jeśli blok zostanie uznany za nieważny, zostanie odrzucony, a konkurencja prędkości zostanie ponownie uruchomiona ze wszystkimi transakcjami, które już były zagrożone. Konkurencja jakościowa ma interesujący aspekt kontroli rówieśniczej. Otrzymując nowy blok, każdy węzeł zdaje sobie sprawę, że stracił już konkurencję prędkości i że musi pracować jako sędzia w konkurencji jakości. Jest rzeczą oczywistą, że sędziowie ci są najbardziej drobiazgowymi i surowymi sędziami, jakich można sobie wyobrazić, ponieważ stracili już konkurencję szybkości, a zatem nie mają już nic do stracenia. W rzeczywistości wszystkie węzły wiedzą, że mogą odzyskać nagrodę, jeśli udowodnią, że przesłany blok jest nieważny. W takim przypadku zawody prędkości otwierają się ponownie i mają szansę ukończyć swój własny blok, którego ukończenie zostało przerwane, i samemu wygrać wyścig. W rezultacie, konkurencja jakościowa lub badanie zgłoszonego bloku będą odpowiednio wykonane z bardzo dużą dokładnością.

Kontrola peerów

Nawet najlepsze zasady są bezużyteczne, jeśli nikt ich nie przestrzega, zauważa, że ​​były przestrzegane i egzekwuje ich spełnienie. Niestety, czysto rozproszone systemy peer-to-peer nie mają ani nie zaakceptowałyby centralnego punktu kontroli lub koordynacji, który mógłby nadzorować przestrzeganie zasad i egzekwować ich wdrażanie. W związku z tym algorytm blockchain sprawia, że ​​wszystkie węzły systemu są nadzorcami wszystkich innych węzłów. Węzły systemu są jednocześnie pracownikami i przełożonymi, ponieważ weryfikują transakcje i tworzą nowe bloki podczas odbierania, przeglądania i sprawdzania poprawności bloków utworzonych również przez inne węzły. Praca każdego węzła przyczynia się do tworzenia nowych poprawnych bloków, a także do wykrywania, odrzucania lub usuwania nieprawidłowych danych transakcji lub nieprawidłowych bloków.

Weryfikacja i dodawanie transakcji. Rządząc grupą komputerów “marchewką i kijem”

W kroku poprzednim poszczególne komputery zostały przekształcone w węzły czysto rozproszonego systemu peer-to-peer, które komunikują się między sobą  danymi transakcji i nowymi blokami, które mają zostać dodane do struktury danych blockchain. Ten krok skupia się na tym co się stanie, gdy węzeł odbierze dane transakcji i jak zapewnić, że tylko poprawne dane transakcji i bloki zostaną dodane do struktury danych blockchain.

Metafora

Rozważmy firmę, która oferuje prostą usługę: ocenianie testów wielokrotnego wyboru dla szkół i uniwersytetów. Szkoły i uczelnie mogą wysyłać formularze odpowiedzi na pytania dotyczące mnożenia uczniów wraz z odpowiednimi rozwiązaniami dla firmy, które z kolei ocenią wszystkie arkusze odpowiedzi. Niestety pracownicy firmy wykazują niewielką motywację, by dobrze wykonywać swoją pracę. W rezultacie firma zamienia wszystkich swoich pracowników w kontrahentów, którzy otrzymują jedynie rekompensatę związaną z wynikami, która podlega następującym trzem zasadom:

  1. Wszystkie arkusze odpowiedzi do zaznaczenia, rozwiązania oraz wszystkie zaznaczone arkusze odpowiedzi są dostępne dla wszystkich kontrahentów w dowolnym momencie za pośrednictwem oprogramowania firmy.
  2. Tylko pierwszy wykonawca, który zaznacza arkusz odpowiedzi, otrzymuje w nagrodę jednego dolara.
  3.  Jeśli wykonawca dowiaduje się, że inny kontrahent zaznaczył arkusz odpowiedzi nieprawidłowo, wykonawca, który popełnił błąd, musi zwrócić rekompensatę, a osoba, która znalazła i skorygowała błąd, otrzyma odszkodowanie.

Konsekwencje

Istnieje kilka konsekwencji dla reguł powyższego scenariusza:

  • Z uwagi na to, że wykonawcy otrzymują jedynie rekompensatę związaną z wynikami, mają silną motywację ekonomiczną do przestrzegania zasad.
  • Zgodnie z zasadą 1 wszyscy wykonawcy mają taką samą szansę na pracę i zarabianie pieniędzy.
  • Zgodnie z zasadą 1 wszyscy wykonawcy mają niezbędne informacje do kontrolowania i poprawiania pracy swoich współpracowników.
  • Zgodnie z regułą 2 każdy wykonawca ma motywację do szybkiej pracy. Jednak jakość pracy może ucierpieć z powodu prędkości.
  • Z uwagi na regułę 3 każdy wykonawca ma motywację do rzetelnej pracy.
  • Zgodnie z regułą 3 każdy wykonawca ma motywację do kontrolowania i korygowania pracy swoich współpracowników.

Dzięki tym zasadom wydajność firmy znacznie wzrosła, ale po kilku miesiącach firma otrzymała od swoich klientów masowe reklamacje. Jakość pracy spadła dramatycznie. Wydaje się, że wszystkie wielokrotnego wyboru testy zostały całkowicie losowo oznaczone. Po przeprowadzeniu badań firma odkryła, że ​​wykonawcy zawarli pakt. Uzgodnili między sobą, że nie będą kontrolować wyników współpracowników, a zamiast tego będą robić to tak szybko, jak to możliwe. Ponieważ losowe przydzielanie znaków jest najszybszym sposobem na wykonanie zadania, wszyscy wykonawcy ostatecznie wykorzystali tę strategię znakowania. Lekcja wyciągnięta z tej metafory polega na tym, że kombinacja nagrody, kary, presji rówieśników i konkurencji może być użyta do zarządzania grupą niezależnie działających osób, o ile nie zbiorowo przeciwdziałają. Ten krok wyjaśnia algorytm blockchain, który to to nic innego jak sprytna implementacja podejścia “marchewka-kijek” połączona z konkurencją i presją rówieśników, która działa w podobny sposób jak firma w tym przykładzie. Jednak wyzwanie polega na tym, aby wszystkie szczegóły były poprawne.

Cel

Celem jest umożliwienie każdemu dodania nowych danych transakcji do historii danych transakcyjnych przy zachowaniu jej integralności.

Wyzwanie

Blockchain jest całkowicie otwarty. Każdy, nawet najbardziej nieuczciwy, może łączyć komputery z systemem, w wyniku czego może tworzyć transakcje i wysyłać je do wszystkich innych węzłów, które tworzą system. W rezultacie nie można zagwarantować, że transakcje wysłane za pośrednictwem sieci są prawidłowe. Dlatego wyzwanie polega na utrzymaniu otwartości systemu dla wszystkich przy jednoczesnym zapewnieniu, że dodawane są tylko prawidłowe transakcje.

Pomysł

Aby zapewnić, że do systemu dodawane są tylko prawidłowe transakcje, wszystkie węzły systemu mogą pełnić rolę nadzorców swoich teerów i nagradzać ich za dodawanie ważnych i autoryzowanych transakcji oraz za znajdowanie błędów w pracy innych. W rezultacie wszystkie węzły systemu mają motywację do prawidłowego przetwarzania transakcji oraz do nadzorowania i wskazywania wszelkich błędów popełnionych przez któregokolwiek z jego partnerów.

Jak to działa: Omówienie

Systemy peer-to-peer komputerów są cyfrowym odpowiednikiem grup ludzi. Poszczególne komputery, które tworzą system peer-to-peer, również mają małą rozmowę, wymieniają wiadomości i akceptują nowych członków poprzez rytuał inicjacyjny. Te interakcje są integralną częścią każdego systemu peer-to-peer. Podobnie jak ludzie, którzy komunikują się ze sobą za pomocą słów, komputery w rozproszonym systemie peer-to-peer komunikują się za pośrednictwem sieci cyfrowej. Największa sieć łącząca ogromną liczbę komputerów to Internet. Drogim sposobem skonstruowania systemu peer-to-peer jest umożliwienie węzłom komunikowania się ze sobą za pośrednictwem Internetu. Stąd rozproszony system peer-to-peer wykorzystujący Internet jako medium komunikacji charakteryzujące się następującymi faktami:

  • Każdy komputer jest połączony z systemem za pośrednictwem Internetu.
  • Każdy komputer jest identyfikowany przez unikalny adres.
  • Każdy komputer może rozłączyć się i połączyć z systemem w dowolnym momencie.
  • Każdy komputer niezależnie utrzymuje listę rówieśników, z którymi się komunikuje.
  • Komunikacja między węzłami opiera się na wiadomościach.

Wiadomości są przesyłane z jednego węzła do drugiego przez Internet przy użyciu ich unikatowych adresów internetowych. Fakt, że węzły komunikują się przez sieć i że mogą się rozłączyć i ponownie połączyć w dowolnym czasie, wpływa na dostarczanie wiadomości. Dostarczanie wiadomości w takiej sieci ma następujące cechy:

  • Wiadomości nie mogą dotrzeć do adresatów, mogą się zgubić.
  • Wiadomości mogą nadejść więcej niż raz.
  • Wiadomości mogą nadejść w innej kolejności, niż zostały wysłane.

Te cechy powodują pewne utrudnienia w komunikacji, ale są rozwiązywane w następujący sposób:

  • Wiadomości są wysyłane w stylu plotek. Każdy węzeł, który otrzymuje nowe informacje, przekazuje je do równorzędnych użytkowników, z którymi komunikuje się, co z kolei będzie obsługiwać wiadomości w ten sam sposób. Gwarantuje to, że ostatecznie każdy węzeł odbierze wiadomości, nawet jeśli niektóre indywidualne wiadomości zostaną utracone.
  • Ze względu na to, że wiadomości mogą być identyfikowane za pomocą cyfrowej wartości odcisku palca lub kryptograficznego, węzły mogą łatwo identyfikować duplikaty i ignorować je.
  • Fakt, że dane transakcji, a także nagłówki bloków zawierają znaczniki czasu, pozwala węzłom zamawiać je na podstawie obiektywnego kryterium

Jak to działa: Szczegóły

Komunikacja pomiędzy węzłami, które składają się na rozproszony system peer-to-peer, ma następujące trzy cele:

  • Utrzymywanie istniejących połączeń przy życiu
  • Nawiązywanie nowych połączeń
  • Dystrybucja nowych informacji

Pierwsze dwa rodzaje komunikacji koncentrują się głównie na samym systemie peer-to-peer. Zajmują się utrzymywaniem sieci rówieśników i robieniem cyfrowej opieki. Jednak celem systemu peer-to-peer nie jest zajęcie się tylko po to, by zostać zajęty. Innym celem systemu peer-to-peer jest zarządzanie własnością. Trzeci rodzaj komunikacji koncentruje się na nowych danych transakcyjnych i nowych blokach, które należy dodać do struktury danych blockchain. Ta informacja jest potrzebna każdemu węzłowi systemu, aby zachować własną wersję historii transakcji.

Utrzymywanie istniejących połączeń

Każdy komputer w sieci niezależnie utrzymuje listę komunikatorów, z którymi się komunikuje. Ta lista zawiera tylko podzbiór wszystkich węzłów, które składają się na cały system. Jest to podobne do pracowników, którzy utrzymują kontakty społeczne z niektórymi współpracownikami, stanowiącymi jedynie podgrupę wszystkich pracowników tej samej firmy. Na bieżąco każdy komputer weryfikuje, czy te węzły równorzędne są nadal dostępne. Odbywa się to poprzez wysłanie peerom małej wiadomości, często nazywanej ping, z prośbą o odpowiedź na nią za pomocą wiadomości o nazwie pong. Rówieśnicy, którzy wielokrotnie nie odpowiadają na te wiadomości, są usuwani z listy rówieśników. Jest to podobne do krótkich rozmów między kolegami, co służy przede wszystkim utrzymaniu relacji społecznych.

Ustanawianie nowych połączeń

Każdy komputer może zażądać dołączenia do systemu peer-to-peer, wysyłając odpowiedni komunikat żądania do dowolnego węzła, który tworzy system. Żądany węzeł dodaje adres pytającego do swojej listy rówieśników i wysyła potwierdzenie jako odpowiedź. Po otrzymaniu odpowiedzi węzeł doda również adres nadawcy do swojej własnej listy rówieśników. W wyniku tego powstaje nowe połączenie, a system powiększył się o jeden węzeł. Posiadanie tylko jednego połączenia z systemem jest ryzykowne, ponieważ każdy węzeł może zakończyć połączenie, zamknąć się, a nawet zawiesić w dowolnym momencie. W związku z tym, po dołączeniu do systemu peer-to-peer, komputer zazwyczaj ustanawia połączenia z wieloma różnymi węzłami, które są już częścią systemu. Zapewnia to utrzymanie połączenia z systemem jako całością, nawet jeśli poszczególne węzły rozłączają się lub wyłączają.

Dystrybucja nowych informacji

Ten rodzaj komunikacji służy celowi aplikacji systemu zarządzającego własnością. Odbywa się to poprzez przekazywanie nowych danych transakcji i nowych bloków, które mają zostać dodane do struktury danych blockchain w formie informacji typu plotkowego przekierowania. Udostępnianie informacji dotyczących własności odbywa się w trzech następujących przypadkach:

  • W sposób ciągły: nowe informacje (np. Nowe dane transakcji i nowe bloki) są dystrybuowane w miarę ich pojawiania się. Każdy węzeł podłączony do systemu w końcu otrzyma wszystkie wiadomości.
  • Jako aktualizację: węzły, które ponownie łączą się z systemem po rozłączeniu przez pewien czas, otrzymają wszystkie dane transakcji i bloki, które w międzyczasie straciły.
  • W ramach procedury wstępnej: nowe węzły, które dołączają do systemu, nie miały szansy na zbudowanie własnej historii transakcji, ponieważ nigdy wcześniej nie były połączone z tym systemem. W związku z tym muszą uzyskać całą historię transakcji, które nastąpiły do ​​momentu, w którym dołączyły do systemu. Przesłanie kopii najnowszej wersji struktury danych blockchain do węzła newbie zapewnia, że ​​po dołączeniu do systemu stanie się pełnowartościowym węzłem. Ten rodzaj dostarczania informacji może być postrzegany jako skrajny przypadek aktualizacji: aktualizacja całej historii transakcji, które kiedykolwiek miały miejsce w systemie.

Dlaczego to działa

Różne rodzaje komunikacji zapewniają, że nowe komputery mogą dołączyć do systemu, a tym samym przyczynić się do jego rozwoju. Dodatkowo, system jest utrzymywany razem w oparciu o komunikację, która koncentruje się na tworzeniu nowych i utrzymywaniu istniejących połączeń. Co najważniejsze, system wykorzystuje komunikację typu plotka, która zapewnia, że ​​ostatecznie wszyscy członkowie systemu peer-to-peer otrzymają wszystkie dane transakcji i bloki, które mają zostać dodane do struktury danych blockchain.

Perspektywy

Krok ten skupił się na tym, w jaki sposób poszczególne komputery stają się węzłami rozproszonego systemu peer-to-peer oraz w jaki sposób komputery tworzące system komunikują się ze sobą. W szczególności ten krok skupiał się na aspektach dostarczania wiadomości w niewiarygodnej sieci. Jednak ta dyskusja nie uwzględniała tego, co poszczególne węzły robią z informacjami po ich otrzymaniu, ale przetwarzanie informacji jest tak samo ważne jak odbieranie informacji. Stąd następny krok omawia sposób przetwarzania danych transakcyjnych w poszczególnych węzłach

Dystrybucja magazynu danych wśród peerów kiedy plotkują komputery

Krok poprzedni przekształcił strukturę danych blockchain w niezmienny magazyn danych tylko do dodania, który może służyć jako odporna na manipulację księga danych transakcji. Posiadanie jednej niezmiennej historii danych transakcji tylko w stanie insolacji może mieć ograniczoną wartość dla celu wyjaśnienia własności w oparciu o grupę komputerów, która działa jako świadek zdarzeń związanych z własnością. W związku z tym krok ten koncentruje się na ustanowieniu czysto rozproszonego systemu peer-to-peer, który umożliwia dzielenie się informacjami o transakcjach.

Metafora

Jaki jest najlepszy sposób na rozpowszechnianie osobistych wiadomości wśród wszystkich pracowników firmy, jeśli nie masz dostępu do globalnej listy dystrybucyjnej e-maili? Jednym ze sposobów, który gwarantuje, że wszyscy pracownicy otrzymają wiadomość, jest podzielenie się nią z jednym lub dwoma dobrze skomunikowanymi i rozmownymi współpracownikami i poproszenie ich o trzymanie wiadomości w tajemnicy. To podejście sprawdza się, ponieważ prawie nie ma innych informacji, które są szybciej wymieniane między współpracownikami niż osobiste wiadomości, które są udostępniane w warunkach poufności. Przyczyna tego faktu jest dość prosta: istoty ludzkie są istotami społecznymi, które szczerze interesują się swoimi rówieśnikami, a dzielenie się informacjami o innych jest zwyczajowym wzorcem zachowania dla odnowienia lub wzmocnienia kontaktów społecznych. W tym kroku rozważany jest aspekt blockchaina, który może przedstawiać systemy peer-to-peer w innym, niemal ludzkim świetle. Aspektem omówionym na tym etapie jest wymiana informacji między komputerami za pomocą komunikacji.

Cel

Blockchain jest czysto rozproszonym systemem peer-to-peer do zarządzania własnością. Składa się z pojedynczych komputerów, które utrzymują własną wersję niezmiennej księgi, która przechowuje całą historię danych transakcji. W związku z tym poszczególne komputery są równoważne ze świadkami, którzy mogą potwierdzić, że pewna transakcja miała miejsce zgodnie z ich wspomnieniami. Ale w jaki sposób poszczególne komputery obserwują lub dowiadują się o transakcjach? Dlatego głównym celem tego kroku jest zapewnienie, że poszczególne komputery, które tworzą system peer-to-peer, który otrzymuje informacje o transakcjach i jest w stanie zachować swoją historię transakcji.

Wyzwanie

Czysto rozproszony system peer-to-peer nie ma centralnego punktu koordynacji ani kontroli. Dlatego nie ma centralnego komponentu, który rozpowszechnia informacje na wszystkich komputerach tworzących system. Istnienie takiego centralnego punktu informacyjnego byłoby sprzeczne z punktu widzenia. Ponadto dystrybucja informacji może się nie powieść z powodu problemów technicznych. Dlatego wyzwanie polega na tym, aby wszystkie węzły systemu otrzymywały informacje o wszystkich transakcjach bez konieczności powrotu do centralnego komponentu.

Pomysł

Chodzi o to, aby komputery tworzące system peer-to-peer współdzieliły i wymieniały informacje w taki sam sposób, w jaki ludzie dzielą się nowościami. Jeśli węzły systemu peer-to-peer przekazują informacje do swoich węzłów równorzędnych, które z kolei przekazują informacje do swoich peerów, to ostatecznie wszystkie węzły w systemie otrzymają tę informację. Na bardziej szczegółowym poziomie system peer-to-peer będzie naśladować sposób, w jaki grupy ludzi, takie jak pracownicy firmy, grupy przyjaciół lub członkowie klubu sportowego, komunikują się ze sobą. W skrócie, członkowie tych grup są zaangażowani w trzy różne rodzaje rozmów służce celom rejonowym:

  • Rozmowa towarzyska, która służy ważnemu celowi ze społecznego punktu widzenia, ponieważ utrzymuje istniejące relacje przy życiu, ale nie zawiera żadnych istotnych informacji.
  • Wiadomości, w tym rozmowy, w których między uczestnikami wymieniane są istotne informacje.
  • Przedstawianie nowych peerów, rodzaje rozmów, które są niezbędne, aby nowe osoby mogły dołączyć do istniejącej grupy znajomych lub współpracowników. Nawiązanie nowego związku i przyjęcie nowego członka do grupy zawsze wymaga jakiejś formy rytuału inicjacyjnego. To jest punkt, w którym początkujący członkowie są zaznajomieni z historią grupy i jej wartościami i są przedstawiani wybitnym członkom grupy

Dane obowiązkowe

Każdy nagłówek bloku struktury danych blockchain musi zawierać co najmniej następujące dane:

  • Źródło drzewa transakcji zawierające dane Merkle
  • Skrót do nagłówka poprzedniego bloku
  • Poziom trudności układanki haszującej
  • Czas rozpoczęcia rozwiązywania zagadki hash
  • Nonce, który rozwiązuje zagadkę hash

Proces tworzenia nowego bloku

Utworzenie nowego bloku obejmuje następujące kroki:

  1. Uzyskaj katalog główny drzewa Merkle zawierającego dane transakcji do dodania.
  2. Utwórz odwołanie do nagłówka tego bloku, który będzie jego poprzednikiem z punktu widzenia nagłówka nowego bloku.
  3. Uzyskaj wymagany poziom trudności.
  4. Uzyskaj aktualny czas.
  5. Utwórz wstępny nagłówek bloku zawierający dane wymienione w punktach od 1 do 4.
  6. Rozwiąż zagadkę haszowania dla wstępnego nagłówka bloku.
  7. Ukończ nowy blok, dodając element, który rozwiązuje układ haszowania do wstępnego nagłówka.

Rysunek 1 ilustruje ukłądankę haszującą, którą należy rozwiązać, dodając nowy blok do struktury danych blockchain. Pokazuje dane nagłówka bloku, którego wartość mieszania musi odpowiednio odpowiadać podanemu ograniczeniu lub poziomowi trudności. Zauważ, że poziom trudności jest częścią nagłówka bloku, a więc jest również częścią wartości skrótu bloku. Gwarantuje to, że nikt nie może ominąć kosztów obliczeniowych układu haszowania, arbitralnie zmniejszając poziom trudności.

Zasady walidacji

Każdy nagłówek bloku musi spełniać następujące zasady:

  1. Musi zawierać poprawne odwołanie do poprzedniego bloku.
  2. Musi zawierać poprawny katalog główny drzewa transakcji zawierających dane Merkle.
  3. Musi zawierać prawidłowy poziom trudności.
  4. Jego znacznik czasu znajduje się za znacznikiem czasu poprzedniego nagłówka bloku.
  5. Musi zawierać nonce.
  6. Wartość mieszająca wszystkich pięciu połączonych ze sobą danych spełnia poziom trudności.

Reguły walidacji zapewniają, że tylko te bloki są dodawane do struktury danych blockchain, dla której rozwiązano zagadkę haszowania i zapłacono koszty obliczeniowe. Zasada 4 gwarantuje, że bloki i dane transakcji są rzeczywiście uporządkowane zgodnie z dodanym czasem.

Uwaga

Aktywność dodawania nowego bloku do struktury danych blockchain poprzez rozwiązywanie łamigłówki nazywana jest także wydobywaniem lub wydobywaniem bloków.

Dlaczego to działa

Struktura danych blockchain sprawia, że ​​każda zmiana danych jest wyjątkowa ze względu na niestabilność referencji hash w odniesieniu do zmian danych, które są przekazywane. Powoduje to konieczność przepisania wszystkich bloków, na które ma wpływ manipulacja. Układanka haszująca powoduje koszty dla każdego bloku, który musi zostać przepisany w trakcie osadzania manipulacji. Skumulowane koszty przepisania struktury blockchaindata w trakcie osadzania manipulacji powodują, że jest ona nieatrakcyjna i najpierw manipuluje historią transakcji. W rezultacie struktura blockchain-data staje się niezmiennym magazynem danych tylko do dodania.

Koszty manipulowania strukturą danych Blockchain

Załóżmy, że spróbujemy zmanipulować konkretnym fragmentem danych transakcji, który jest częścią drzewa Merkle, którego korzeń należy do nagłówka bloku znajdującego się 20 bloków poniżej bieżącej głowy struktury danych blockchain. Osadzanie zmanipulowanych danych transakcji wymaga następujących działań:

  1. Przepisz drzewo Merkle, do którego należy manipulowana transakcja.
  2. Przepisz nagłówek bloku, do którego należy root przepisanego drzewa Merkle.
  3. Przepisz wszystkie kolejne nagłówki bloków do nagłówka bazy danych blockchain.

Punkt 2 wymaga rozwiązania puzzli, ponieważ zmiana korzenia Merkle zmienia wartość mieszania nagłówka bloku, a tym samym rozwiązanie jego łamigłówki. Punkt 3 wymaga rozwiązania 20 zagadek hashowych ze względu na kolejne zmiany odwołań hashowych do poprzedniego nagłówka bloku. Zakładając, że rozwiązywanie łamigłówki zajmuje średnio 10 minut, potrzebowalibyśmy w sumie 210 minut na osadzenie manipulacji w transakcji, która należy do nagłówka bloku znajdującego się 20 bloków poniżej bieżącej głowy. Te ogromne koszty zniechęcają węzły do ​​zmiany struktury danych blockchain.

Niezmienny magazyn danych w realnym świecie

Niezmienność struktury danych blokowych zależy od kosztów obliczeniowych wywołanych układem haszowania. Trudność zagadki mieszającej decyduje o tym, ile wysiłku obliczeniowego i ile czasu potrzeba na ich rozwiązanie, co z kolei decyduje o odporności struktury danych blockchain. Jeśli trudność jest zbyt niska, koszty obliczeniowe zmieniające strukturę danych blockchain spadną i nie będą już uważane za zbyt wysokie, co z kolei może zachęcać węzły do ​​manipulowania historią danych transakcyjnych. Z drugiej strony koszty są zbyt wysokie, nawet koszty obliczeniowe związane z dodaniem nowego bloku mogą być uznane za zbyt wysokie. Wyzwaniem w projektowaniu blockchaina jest określenie odpowiedniego poziomu trudności dla zagadek hashowych. To wyzwanie jest jeszcze bardziej wymagające, ponieważ moc obliczeniowa komputera zmienia się z powodu postępu technicznego. W rezultacie poziom trudności musi być określany dynamicznie. Aplikacje Blockchain w świecie rzeczywistym stosują stały poziom trudności dla wszystkich bloków. Zamiast tego zazwyczaj korzystają z nowych bloków są dodawane. Gwarantuje to, że czas potrzebny na rozwiązanie zagadki mieszające na poziomie, który uniemożliwia węzłom manipulowanie historią danych transakcji, podczas gdy rzeczywisty wysiłek obliczeniowy może wzrosnąć.

Perspektywy

W tym kroku wyjaśniono, że blockchain uniemożliwia manipulację lub fałszowanie historii danych transakcji przez przekształcenie struktury danych blockchain w niezmienny magazyn danych tylko do dodania. Kolejny krok do utworzenia tego magazynu danych dostępnego dla wszystkich w rozproszonym systemie peer-to-peer

Krótki objazd do niezmienności

Niezmienność oznacza, że ​​czegoś nie można zmienić. Dane, które są niezmienne, nie mogą zostać zmienione po ich utworzeniu lub zapisaniu. Z tego powodu te dane są również nazywane danymi tylko do odczytu. Cała ich korzyść polega wyłącznie na przedstawianiu informacji do celów czytania lub prezentacji. Jest to szczególnie pożądane, jeśli trzeba przekazać dane innym, a tym samym traci kontrolę nad wykorzystaniem danych. Przekazywanie niezmiennych danych jest skutecznym sposobem zapobiegania zmianom lub manipulacji danymi. Prawa jazdy, paszporty i świadectwa edukacyjne są przykładami niezmiennych przedmiotów w prawdziwym życiu. Władze produkują je w celu udokumentowania czegoś, a ich jedynym czytelnym użyciem jest je pokazać i odczytać.

Jak to działa: The Big Picture

Główną ideą stosowaną przez blockchain do uniezależnienia historii transakcji jest uczynienie ich zmianą niezwykle kosztowną i sprawienie, by koszty te zniechęciły wszystkich do jej zmiany. Uczynienie historii danych transakcji niezmienną ma trzy elementy:

  1. Przechowywanie historii danych transakcji w taki sposób, aby nawet najdrobniejsza manipulacja zawartością była widoczna i stała się zauważalna.
  2. Egzekwowanie osadzania manipulacji w historii transakcji wymaga przepisania ogromnej jej części.
  3. Dokonywanie dodawania, pisania lub przepisywania danych do historii kosztownie obliczeniowej.

Wykonywanie manipulacji wyróżnia się

Struktura danych blockchain przechowująca dane w sposób uwzględniający zmiany spełnia pierwszy element. W rezultacie nie można w milczeniu manipulować danymi, które są częścią struktury danych blockchain i mam nadzieję, że nikt tego nie zauważy. Każda zmiana będzie się wyróżniała z ogromnym “hałasem” spowodowanym przez łamanie odnośników hash, które stają się nieważne w wyniku zmiany danych, do których się odnoszą.

Egzekwowanie przepisywania historii do osadzania zmian

Struktura danych blockchain spełnia także drugi element, ponieważ dąży do radykalnego podejścia “wszystko albo nic”, jeśli chodzi o zmianę danych: Jeden albo zmienia strukturę danych, zaczynając od punktu, który powoduje zmianę, aż do głowy całości. łańcuch lub jeden lepszy, pozostaw to bez zmian.

Dokonywanie dodawania danych drogą obliczeniową

Trzeci element dotyczy tych, którzy nie boją się przepisać dużych części struktury danych blockchain w trakcie manipulacji osadzonej w historii transakcji. Ale skoro tylko pisanie lub przepisywanie struktury danych blockchain pociąga za sobą ogromne koszty obliczeniowe, ludzie będą dwa razy zastanawiać się, czy zmiana jest dobrym pomysłem. Pakiet technologii blockchain sprawia, że ​​zawartość bazy danych blockchain jest niezmienna przez ponoszenie znacznych kosztów obliczeniowych dla każdego bloku zapisywanego, przepisywanego lub dodawanego do struktury danych blockchain. Koszty obliczeniowe są ponoszone przez tablice skrótów, które są unikalne dla każdego nagłówka bloku. W rezultacie akceptuje się całkowity koszt zmiany struktury danych z punktu, który powoduje zmianę, aż do początku łańcucha, rozwiązując układ haszowania dla każdego nagłówka bloku lub lepiej pozostawić go niezmienionym.

Jak to działa: szczegóły

Procedura dodawania nowego bloku do struktury danych blockchain, jak omówiono wcześniej, nie jest kosztowna pod względem obliczeniowym, ponieważ wymaga jedynie dodania referencji hash, która wskazuje bieżący nagłówek łańcucha do nowego nagłówka bloku i deklaruje go jako nowa głowa łańcucha. Wyzwaniem związanym z niezmiennością struktury blockchain-danych jest dodanie nowego bloku do zadania kosztownego obliczeniowo. Podczas realizacji tego należy uwzględnić następujące aspekty:

  • Obowiązkowe dane nagłówków bloków
  • Proces tworzenia nowego nagłówka bloku
  • Reguły walidacji dla nagłówków bloków