Produkt News

Was ist ein Merkle Tree?

Liebe Bitgetter aus aller Welt,

Merkle Tree ist eine Datenstruktur, die auch als Hash Tree bekannt ist. Der Merkle Tree speichert Daten in den Leaf Nodes (Blattknoten) der Baumstruktur. Indem die Daten schrittweise bis zum obersten Root Node (Wurzelknoten) gehasht werden, werden alle Änderungen in den Daten der Leaf Nodes an die höher gelegenen Nodes weitergegeben und schließlich als Änderungen im Root Node angezeigt.

1. Die Aufgaben des Merkle Trees
- Zero-knowledge proof
- Gewährleistung der Unveränderbarkeit von Daten
- Gewährleistet den Datenschutz


2. Bitget Limited Merkle Tree Definition
2.1 Node Information
Die in jedem Knoten der Baumstruktur gespeicherten Informationen umfassen:
1. den Hash-Wert

2. die Anzahl der Coins, die im Asset-Snapshot des Nutzers enthalten sind (z. B. BTC, ETH, USDT)
Was ist ein Merkle Tree? image 0

2.2 Hash Regeln
Leaf Nodes (außer Padding Nodes)
Was ist ein Merkle Tree? image 1
- encryptUid: verschlüsselte UID des Nutzers
- nonce: ein eindeutiger Wert, der jedem Nutzer zugewiesen wird
- Guthaben: json-String mit der Anzahl der Coins im Asset-Snapshot des Nutzers (Hinweis: Entfernen Sie die ungültige 0 am Ende und behalten Sie die Genauigkeit von 8 Bit bei)
- Zum Beispiel: {"BTC":1.763,"ETH":362,"USDT":1077200.2274}

Übergeordneter Knoten
Was ist ein Merkle Tree? image 2
- h1: Hash des linken untergeordneten Knotens des aktuellen Knotens,
- h2: Hash des rechten untergeordneten Knotens des aktuellen Knotens,
- Ebene: wo der übergeordnete Knoten liegt

Definition der Ebene der Baumknoten: Ein vollständiger Merkle Tree (vollständiger Binärbaum) erfordert 2^n Daten von Leaf Nodes, Leaf Node Level = n + 1, Parent Node Level = Child Node Level - 1, Root Node Level = 1, Leaf Node Level ist das Maximum

Padding Node Regeln
Ein vollständiger Merkle Tree (vollständiger Binärbaum) erfordert 2^n Leaf Node Daten, aber die tatsächliche Anzahl der Daten kann nicht ausreichend sein und kann ungerade sein. Wenn in einem solchen Fall ein Knoten k keinen Partnerknoten hat, wird durch automatisches Auffüllen ein Partnerknoten k' erzeugt, und Hash(k') = Hash(k), und die Anzahl der Coins von Knoten k' wird auf Null gesetzt.

Zum Beispiel:
Was ist ein Merkle Tree? image 3
Dann ist der Padding-Node hash4 = hash3, die gespeicherten Salden sind {"BTC": 0, "ETH": 0, "USDT": 0}, wie in dem markierten Knoten in Abbildung eins dargestellt.
Abbildung Eins
Was ist ein Merkle Tree? image 4

Was ist ein Merkle Tree? image 5

Daher gilt: hash6 = SHA256 (hash3 + hash3, {BTC: (2+0), ETH:(1+0), USDT:(12+0)}, level)

Verifikationsprinzip
1. Verifikationsprinzip: Gemäß der Definition des Bitget Limited Merkle-Trees wird der Hash-Wert des übergeordneten Knotens vom eigenen Leaf Node des Nutzers bis zum Root Node berechnet, und der Hash-Wert des Root Nodes wird mit dem Hash-Wert des Merkle-Trees in "Verifikationsschritt - Schritt 1" verglichen. Wenn die beiden gleich sind, ist die Verifikation erfolgreich, wenn nicht, schlägt die Verifikation fehl.

2. Beispiel: Durch die Kombination von Abbildung Eins und dem folgenden json-Text können wir auf der Grundlage des Leaf Nodes des Nutzers (h3) und der vom benachbarten Node (h4) bereitgestellten Informationen den Hash-Wert des Parent Nodes (h6) berechnen und dann mit den vom benachbarten Node (h5) bereitgestellten Informationen den Hash-Wert des Parent Nodes (h7) berechnen und dann den Hash-Wert mit dem Root Node (h7) vergleichen, der in den Merkle-Tree-Pfaddaten bereitgestellt wird, um zu sehen, ob die Hash-Werte gleich sind, um die Validierung abzuschließen.
Merkle-Tree-Pfaddaten json Text:
Was ist ein Merkle Tree? image 6

Schritte zur Verifikation
1. Loggen Sie sich in Ihr Bitget-Konto ein, klicken Sie auf "Asset Überblick - Proof of Assets" und gehen Sie zu "Proof of Assets", um die letzten Audits direkt anzuzeigen. Die Daten zum Zeitpunkt Ihrer Prüfung werden standardmäßig erweitert und angezeigt.Was ist ein Merkle Tree? image 7
2. Wenn Sie weiter manuell überprüfen möchten, ob Ihre Assets im Merkle Tree enthalten sind, können Sie dies tun, indem Sie die Verifizierungsschritte befolgen. Klicken Sie auf die Schaltfläche "Daten herunterladen", um die für die manuelle Überprüfung benötigten Daten abzurufen. Es wird eine Datei mit dem Standardnamen "merkel_tree_bg.json" heruntergeladen
Was ist ein Merkle Tree? image 8
1. Spezifische Aktionen:
In unserem Beispiel lautet der Dateiname merkel_tree_bg.json. Der Text der Merkle-Tree Pfaddaten json ist unten dargestellt:
Was ist ein Merkle Tree? image 9

2. Laden Sie das Open-Source-Verifizierungstool ProofOfReserves.zip herunter, das von Bitget Limited bereitgestellt wird.
3. Entpacken Sie die Datei "ProofOfReserves.zip" in das aktuelle Verzeichnis und speichern Sie die in Schritt 3 gespeicherte Datei "merkel_tree_bg.json" in demselben Ordner. In unserem Fall wird die Datei in Downloads gespeichert, und der Ordnername ist proof-of-reserves. Der Screenshot sieht wie folgt aus:
Was ist ein Merkle Tree? image 10

4. Öffnen Sie das Terminalprogramm (Mac-System: Terminalprogramm, Windows-System: cmd-Programm)
5. Geben Sie im Terminalprogramm den Befehl cd ~/Downloads/proof-of-reserves ein und geben Sie das Verzeichnis des heruntergeladenen Pakets ein.
6. Überprüfen Sie Ihre Daten durch Eingabe des folgenden Befehls

Mac/Linux
Was ist ein Merkle Tree? image 11
Windows
Klicken Sie auf die Datei start.bat

Hinweis: Wenn Sie ein Mac-System verwenden und bei diesem Schritt Probleme mit den Sicherheitseinstellungen auftreten, gehen Sie zu Systemeinstellungen -> Sicherheit und Datenschutz -> Allgemein -> Tippen Sie auf die Schaltfläche mit dem Schloss, um Änderungen vorzunehmen -> Zulassen von Apps, die aus dem App Store und von zugelassenen Entwicklern heruntergeladen wurden -> Zulassen von Tools.
Wenn das folgende Problem auftritt, zsh: permission denied: . /start.sh, führen Sie den folgenden Befehl aus
Was ist ein Merkle Tree? image 12

7. Ergebnisse anzeigen
(1) Wenn Ihre Daten korrekt sind und die Überprüfung erfolgreich war, lautet das Ergebnis "Merkle tree root hash consistent, verification succeeded".
Was ist ein Merkle Tree? image 13
(2) Wenn Ihre Daten falsch sind und die Überprüfung fehlschlägt, lautet das Ergebnis "Merkle tree root hash inconsistency, verification failed".
Was ist ein Merkle Tree? image 14

8. Sie können auch den Code des Open-Source-Verifizierungstools von Bitget Limited und die Definition des Merkle Trees heranziehen (siehe den Abschnitt "Was ist ein Merkle Tree") und ein eigenes Programm schreiben, um die in Schritt 2 erhaltenen Pfaddaten zu überprüfen, oder Sie können überprüfen, ob Ihre Assets in dem durch diese Prüfung erzeugten Merkle Tree enthalten sind.

Ihr Bitget-Team