Wpis z mikrobloga

Krypto ciekawostek ciąg dalszy: Co to jest Merkle Tree, jak jest używany w Bitcoinie I dlaczego w ETH pozwala na przyspieszoną synchronizację.

W dużym skrócie Merkle Tree to inaczej drzewo hashy, w którym po jednej stronie jest hash główny, tzw. Merkle Tree Root, a lot przeciwnej stronie są tzw. liście - które są efektywnie hashami komórek bazy danych. Dokładną strukturę pokazuje załączona ilustracja. (Zwracam uwagę, że merkle root jest tutaj na górze, a końcowe komórki danych są na dole)

Po co używa się tego typu rozwiązania? Ogólna odpowiedź brzmi: w celu weryfikacji spójności danych. W przypadku kiedy część danych jest uszkodzona i nie pasuje do nadrzędnych hashy, merkle tree pozwala na wykrycie które komórki danych są uszkodzone i selektywną wymianę/naprawę, bez potrzeby ponownego pobierania wszystkich danych.

Co to ma do Bitcoina i Ethereum?

W Bitcoinie używa się tego rozwiązania do weryfikacji spójności bloku. Jeśli blok jest uszkodzony, klient jest w stanie zdiagnozować, które elementy są wadliwe i pobrać je z innego źródła. Deweloperzy poszli nawet o krok dalej: zamiast przesyłać cały blok, obecnie przesyła się Merkle Tree którego 'liśćmi' są hashe transakcji. W rezultacie peer zamiast pobierać cały blok, pobiera jedynie drzewo hashy i uzupełnia brakujące dane przy użyciu transkacji znajdujących się w mempoolu (plus ewentualnie odpytuje peera o brakujące elementy). Dzięki temu spada ilość danych które trzeba przesłać, wymagania co do łącza są mniejsze, a propagacja bloków jest szybsza.

A jaką rolę to rozwiązanie spełnia w Ethereum? Twórcy ETH użyli możliwości Merkle Tree do absolutnego maksimum. W tej kryptowalucie drzewo hashy obejmuje nie tylko sam blok, ale też całą bazę danych

W rezultacie mając nagłówek bloku, zawierający hash główny (Merkle root) który jest potwierdzony dowodem pracy, klient jest w stanie zweryfikować zarówno poprawność całego drzewa, jak i wszystkich komórek bazy danych

Rezultatem tego rozwiązania jest to, że niezbędne staje się użycie napędów SSD ze względu na bardzo dużą liczbę odczytów związanych z weryfikacją każdej gałęzi drzewa. W zamian klient otrzymuje gwarancję, że dane pobrane z potencjalnie niezaufanego źródła są poprawne. Dzięki temu Ethereum nie musi wykonywać replaya wszystkich transakcji w celu zbudowania aktualnego UTXO (w ETH nazywają to State Database). Zwyczajnie pobiera te dane od dowolnego peera i weryfikuje czy wszystkie hashe się zgadzają aż do samego korzenia (Merkle tree root)

Dlatego też wszelkie oskarżenia jakoby ETH nie weryfikowało swojej bazy danych i jakoby wszystkie klienty były lekkie, wynikają tylko i wyłącznie z bezkresnej ignorancji osób szerzących te brednie

Będzie jeszcze część 2, bo ETH ma w zanadrzu kilka innych tricków związanych z tym rozwiązaniem. Ale o tym kiedy indziej.

#bitcoin #ethereum
#kryptowaluty
A.....o - Krypto ciekawostek ciąg dalszy: Co to jest Merkle Tree, jak jest używany w ...

źródło: comment_1593770893DdUmEMAujh7q2JnQIfHEwc.jpg

Pobierz
  • 41
@Amebcio: Oczywiście że nie weryfikuje. Merkle tree jast dla weryfikacji portfela SPV a nie dla noda, buahahaha.
Jak zwykle mu się #!$%@?...

Jeszcze obie wymyśla standardowo jakieś sprawdzanie spójności bloku.

W Bitcoinie używa się tego rozwiązania do weryfikacji spójności bloku. Jeśli blok jest uszkodzony, klient jest w stanie zdiagnozować, które elementy są wadliwe i pobrać je z innego źródła


Dlaczego ty sobie wiecznie wymyślasz coś z dupy i jeszcze to szerzysz
@cyberpunkbtc: To że używa się go do SPV nie oznacza że nie można użyć go do pełnego (dokładnie do weryfikacji bazy danych pełnego węzła). To Bitcoin nie weryfikuje swojego UTXO, jedyny bezpieczny sposób to dla niego zbudowanie tegoż UTXO od zera
@Amebcio: Jakiego budowania utxo od zera? Co ty #!$%@? wymyślasz? Node BTC ma swoją bazę UTXO poza całym blockchainem. Ja #!$%@?ę ty #!$%@? znów wymyślasz wszystko. Przestań #!$%@?ć do #!$%@? na każdym kroku...
@Amebcio: No. I hash całego bloku wystarcz bez drzewa a ty sobie wymyślasz że ono do tego służy. #!$%@? ty masz braki w podstawach informatyki w ogóle. Nawet w bajcie ostatni bit jest suma kontrolą parzystości.
@Amebcio: Dobra, #!$%@? sobie tu co chcesz. Nie będę znów tracił czasu na idiotę który będzie mnie karmił jakimś gównem wymyślanym prosto z dupy a ja udowadniał jak gówno jest to warte. Gadaj sobie i ucz ludzi swoich wysrywów nie mających nic wspólnego z rzeczywistością.

TY SOBIE WSZYSTKO #!$%@? WYMYŚLASZ.
@Amebcio: Chodzi o nagłówek mongole tylko on jest potrzebny jako suma kontrolna i można go wyliczyć z całego pakietu danych. W BTC wylicza się go robiąc drzewo (przy okazji) które służy do czegoś zupełnie innego. Ja #!$%@?ę....
@Amebcio: Jakie moje vs wiki? Ja nie przeczę temu co tam jest napisane #!$%@?. Czytać ze zrozumieniem nie potrafisz? A #!$%@? zapomniałem, shit....

Dobra jak już powiedziałem. Kolejna porcja gówna na chłopski rozum wymyślonych przez ciebie #!$%@? bzdur. Pokaż mi jeszcze te nody być ze specjalnym softem które dodawały do blockchaina same nagłówki i reszta ich nie odrzucała. I ty wymyślasz kompletne bzdury na każdym kroku.

Chcesz uchodzić zaq #!$%@? wie
@cyberpunkbtc:
XD masz nawet na Wiki filmik mówiący, że transakcje są hashowane i z tych hashy buduje się Merkle tree ( ͡° ͜ʖ ͡°)

Nie wiem jak bardziej prostacko można to wyjaśnić. Nawet Wiki nie dociera do tego twojego bąbla w którym żyjesz...
A.....o - @cyberpunkbtc: 
XD masz nawet na Wiki filmik mówiący, że transakcje są has...
@Amebcio: NO #!$%@? WIEM. I CO Z TEGO? MÓWIĘ ŻE W INNYM CELU.
Wrzuci idiota filmik i się cieszy, gdzie ja mu nie zaprzeczam. I co? Wstawiłeś filmik z tym samym co masz na obrazku. Czy ja #!$%@? mówię że drzewo merkle nie istnieje? I się ciszy...
Już #!$%@? pomijam że w ogóle sedno twoich wniosków jest kompletnie błędne bo weryfikacja transakcji przez node nie ma żadnego związku z żadnymi drzewami i nie polega na weryfikacji poprawności gołych danych ale poprawności transakcji w blockchainie. A ty sobie przeczytałeś że jest weryfikacja że dana tx jest w danym bloku i skojarzyłeś to sobie z weryfikacją poprawności transakcji i pomyślałeś że chodzi o to samo!!!!!!!!!!!!! :DDDDDDDD
@Amebcio: Ale grzana.

Mówiąc że Node weryfikuje poprawność transakcji mówi się o tym zanim on jeszcze została do boku. Nie ma żadnego drzewa nawet :)

Weryfikacja to sprawdzanie czy można taką tx wykonać, czy jest dana utxo na adresie z którego chcemy przesłać btc, czy została podpisana kluczem prywatnym.

A ty to sobie skojarzyłeś (bo też weryfikacja) weryfikacja czy dana tx Znajduje się już w bloku!!!!!

ŁAHAHAHAHAHAHAHAHAHA ( ͡°(
@cyberpunkbtc: Jezu, ty nawet nie odróżniasz czynności związanych z konsensusem, od niezwiązanych.

Zapamiętaj raz na zawsze, że klient otrzymując wykopany blok z transakcjami, musi sprawdzić sygnatury oraz to czy nie wydają nieistniejących UTXO. W wypadku kiedy sygnatury się nie zgadzają, bądź transakcja chce wydać nieistniejące monety, blok jest niezgodny z konsensusem i musi zostać zignorowany.

To jest kompletnie niezależne od weryfikacji transakcji w mempoolu