Przejdź do treści
Słownikpodstawybezpieczenstwobitcoinethereum

Drzewo Merkle’a

Drzewo Merkle’a, po angielsku Merkle tree, to struktura danych, która używa hashy do reprezentowania dużego zbioru elementów jednym root hashem.

Czym jest drzewo Merkle’a

Drzewo Merkle’a bierze wiele elementów danych, hashuje je, a następnie łączy hashe parami i hashuje ponownie aż do uzyskania jednego końcowego hasha.

Ten końcowy hash nazywa się Merkle root albo root hash. Reprezentuje cały zbiór danych.

Jeśli zmieni się choć jeden element na dole drzewa, zmieni się też ścieżka hashy prowadząca do root hasha.

Elementy drzewa Merkle’a

Liść
Najniższy element drzewa, zwykle hash pojedynczej transakcji albo danych.
Hash pośredni
Hash powstały z połączenia dwóch niższych hashy.
Root hash
Końcowy hash reprezentujący cały zbiór.
Ścieżka
Zestaw hashy potrzebny do sprawdzenia, czy element należy do drzewa.
Dowód Merkle’a
Kompaktowy dowód przynależności elementu do drzewa.

Po co blockchainom drzewa Merkle’a

Blockchainy muszą reprezentować duże zbiory transakcji i danych w sposób możliwy do sprawdzenia.

Bitcoin umieszcza Merkle root w nagłówku bloku. Dzięki temu nagłówek może odnosić się do wszystkich transakcji w bloku bez przechowywania każdego hasha osobno w nagłówku.

Light client albo bridge może użyć dowodu Merkle’a, żeby sprawdzić wybrany element bez pobierania całego zbioru.

Ethereum i warianty Merkle

Ethereum używa struktur pokrewnych Merkle tree w bardziej wyspecjalizowany sposób, m.in. do stanu kont i danych.

W praktyce użytkownik nie musi znać wszystkich wariantów technicznych. Najważniejsza idea pozostaje ta sama: root hash zobowiązuje do określonego zbioru danych.

Mosty, rollupy i systemy ZK często korzystają z Merkle-like commitments, bo pozwalają tanio sprawdzać fragment dużego stanu.

Najczęstsze błędne założenia

  • Drzewo Merkle’a nie jest zwykłym indeksem bazy danych.
  • Root hash reprezentuje zbiór danych, ale nie wyjaśnia sam, skąd ten zbiór pochodzi.
  • Dowód Merkle’a sprawdza przynależność elementu, a nie pełną historię łańcucha.
  • Zmiana jednego liścia powinna zmienić root hash.
  • Różne protokoły mogą używać różnych wariantów drzew i kodowania danych.

Root hash kompresuje cały zbiór

Drzewo Merkle’a pozwala reprezentować tysiące elementów jednym hashem i później sprawdzać pojedyncze elementy przez krótki dowód.

Najczęstsze pytania

Tak. Bitcoin używa Merkle root w nagłówkach bloków do reprezentowania transakcji zawartych w bloku.

Drzewo Merkle’a to cała struktura danych. Dowód Merkle’a to krótki zestaw danych pozwalający sprawdzić jeden element względem root hasha.

Nie służy głównie do ukrywania danych. Służy do tworzenia kryptograficznego zobowiązania do zbioru i sprawdzania przynależności elementów.