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.