Nowe notowanie

Czym jest drzewo skrótów?

2022-11-28 06:490107

Drodzy Bitgetowicze z całego świata,

Drzewo skrótów to struktura danych, znana również jako drzewo hasz. Drzewo skrótów przechowuje dane w węzłach liści, poprzez hashowanie danych krok po kroku aż do górnego węzła głównego, wszelkie zmiany w danych węzłów będą przekazywane do węzłów wyższego poziomu i ostatecznie wyświetlane jako zmiany w korzeniu drzewa.

1. Role drzewa skrótów
- Zero-knowledge proof
- Zapewnienie niezmienności danych
- Zapewnienie prywatności danych

2. Definicja drzewa skrótów Bitget Limited
2.1 Informacje o węźle
Informacje przechowywane w każdym węźle drzewa obejmują:
1. wartość hash 2. liczba monet zawartych w snapshot aktywów użytkownika (na przykład BTC, ETH, USDT)
Czym jest drzewo skrótów? image 0

2.2 Zasady haszowania
Węzły liściowe (z wyjątkiem węzłów padding)
Czym jest drzewo skrótów? image 1
- encryptUid: zaszyfrowany UID użytkownika
- nonce: unikalna wartość przypisana do każdego użytkownika
- balances: ciąg json składający się z liczby monet w snapshot użytkownika (uwaga: usuń niepoprawne 0 na końcu i zachowaj precyzję 8 bitów))
- Na przykład: {"BTC":1.763,"ETH":362,"USDT":1077200.2274}

Węzeł nadrzędny (rodzic)
Czym jest drzewo skrótów? image 2
- h1: hasz lewego dziecka bieżącego węzła,
- h2: hasz prawego węzła-dziecka bieżącego węzła,
- level: gdzie znajduje się węzeł nadrzędny (rodzic)

Definicja poziomu węzła drzewal: Kompletne drzewo skrótów (pełne drzewo binarne) wymaga 2^n danych węzłów liściowych, poziom węzła liściowego = n + 1, poziom węzła rodzica = poziom węzła potomnego - 1, poziom węzła korzenia = 1, poziom węzła liścia jest maksymalny

Zasady dotyczące węzłów padding
Kompletne drzewo skrótów (pełne drzewo binarne) wymaga 2^n danych węzłów liści, ale rzeczywista liczba danych może nie spełniać i może być nieparzysta. W takim przypadku, jeśli węzeł k nie ma węzła rodzeństwa, to auto padding generuje węzeł rodzeństwa k', a hash(k') = hash(k), zaś liczba monet węzła k' jest ustawiona na zero.

Na przykład:
Czym jest drzewo skrótów? image 3

Następnie węzeł paddingowy hash4 = hash3, przechowywane salda to {"BTC": 0, "ETH": 0, "USDT": 0}, jak pokazano w wyróżnionym węźle na rysunku pierwszym.
Rysunek 1
Czym jest drzewo skrótów? image 4

Czym jest drzewo skrótów? image 5

Zatem hash6 = SHA256 (hash3 + hash3, {BTC: (2+0), ETH:(1+0), USDT:(12+0)}, poziom)

Zasada weryfikacji
1. Zasada weryfikacji: Zgodnie z definicją drzewa skrótów Bitget Limited, wartość hashowa węzła nadrzędnego jest obliczana od własnego węzła liściowego użytkownika aż do węzła głównego (korzenia), a wartość hashowa węzła głównego jest porównywana z wartością hashową drzewa w "1 kroku weryfukacji", jeśli oba są równe, weryfikacja przebiega pomyślnie, jeśli nie, weryfikacja kończy się niepowodzeniem.

2. Przykład: Łącząc figurę pierwszą i następujący tekst json, a także w oparciu o własny węzeł liścia użytkownika h3 i informacje dostarczone przez sąsiedni węzeł h4, możemy obliczyć hash węzła rodzica h6, a następnie z informacjami dostarczonymi przez sąsiedni węzeł h5, możemy obliczyć hash węzła rodzica h7, a następnie porównać wartość hash z węzłem głównym h7 dostarczonym w danych ścieżki drzewa skrótów, aby sprawdzić, czy wartości hash są równe, aby zakończyć walidację.
Ścieżka drzewa skrótów w formacie json:
Czym jest drzewo skrótów? image 6

Etapy weryfikacji
1. Zaloguj się na swoje konto Bitget, kliknij "Przegląd aktywów - Dowody aktywów" i przejdź do "Dowodów aktywów", aby bezpośrednio obejrzeć ostatnie audyty. Dane w czasie twojego audytu zostaną pokazane domyślnie.
Czym jest drzewo skrótów? image 7

2. Jeśli chcesz dalej ręcznie zweryfikować, czy Twoje aktywa znajdują się w drzewie skrótów, możesz to zrobić, wykonując kroki weryfikacji. Kliknij przycisk "Pobierz dane", aby uzyskać dane potrzebne do ręcznej walidacji - plik o domyślnej nazwie: merkel_tree_bg.json.
Czym jest drzewo skrótów? image 8
3. Operacje szczególne:
W naszym przykładzie nazwa pliku to merkel_tree_bg.json. Tekst danych ścieżki drzewa merkel json został pokazany poniżej:
Czym jest drzewo skrótów? image 9

4. Pobierz narzędzie do weryfikacji open source ProofOfReserves.zip udostępnione przez Bitget Limited..
5. Rozpakuj plik ProofOfReserves.zip do bieżącego katalogu i przechowuj plik merkel_tree_bg.json zapisany w kroku 3 w tym samym folderze. W naszym przypadku plik jest przechowywany w Downloads, a nazwa folderu to proof-of-reserves, a zrzut ekranu wygląda następująco:
Czym jest drzewo skrótów? image 10

6. Otwórz program terminala (system Mac: aplikacja terminal. system Windows: aplikacja cmd)
7. Wpisz w programie terminal polecenie cd ~/Downloads/proof-of-reserves i przejdź do katalogu z pobranym pakietem
8. Zweryfikuj swoje dane, wpisując następujące polecenie

Mac/Linux
Czym jest drzewo skrótów? image 11

Windows
Kliknij plik start.bat

Uwaga: Jeśli korzystasz z systemu Mac i podczas tego kroku napotkasz problemy z ustawieniami bezpieczeństwa, przejdź do Preferencji systemowych -> Bezpieczeństwo i prywatność -> Ogólne -> Kliknij przycisk blokady, aby wprowadzić zmiany -> Zezwalaj na aplikacje pobrane z: App Store i od zatwierdzonych deweloperów -> Udziel zgody na narzędzia.
Jeśli wystąpi następujący problem, zsh: permission denied: . /start.sh, wykonaj następujące polecenie
Czym jest drzewo skrótów? image 12

9. Wyświetlanie wyników
(1) Jeżeli Twoje dane są poprawne i weryfikacja przebiegła pomyślnie, to wynikiem jest "Hash korzenia drzewa skrótów zgodny, weryfikacja zakończona sukcesem".
Czym jest drzewo skrótów? image 13

(2) Jeśli twoje dane są błędne i weryfikacja nie powiedzie się, wynik to "Niespójność korzenia drzewa skrótów, weryfikacja zakończona niepowodzeniem".
Czym jest drzewo skrótów? image 14

10. Możesz również odwołać się do kodu narzędzia weryfikacji Bitget Limited open source i definicji drzewa skrótów (patrz rozdział "Czym jest drzewo skrótów") i napisać własny program, aby zweryfikować dane ścieżki uzyskane w kroku 2, lub sprawdzić, czy Twoje aktywa znajdują się w drzewie skrótów wygenerowanym przez ten audyt.

Zespół Bitget