Nuovo listing

Cos'è un albero di Merkle?

2022-11-28 06:49087

Cari Bitgetters globali,

L'albero di Merkle è una struttura di dati, conosciuta anche come albero hash. Esso archivia i dati in nodi foglia in una struttura ad albero, facendo l'hashing dei dati passo passo fino al nodo radice, quello più in alto. Così, ogni cambiamento nei dati dei nodi foglia passerà a quelli di livello superiore, venendo eventualmente mostrati come cambiamenti nella radice dell'albero.

1. Il ruolo dell'albero di Merkle
- Protocollo a conoscenza zero
- Assicurare l'immutabilità dei dati
- Assicurare la privacy dei dati


2. Bitget Limited: definizione albero di Merkle
2.1 Informazioni dei nodi
Le informazioni arichiviate nei nodi dell'albero includono:
1. valori hash

2. il numero di valute contenute nello snapshot degli asset di un utente (per esempio: BTC, ETH e USDT)
Cos'è un albero di Merkle? image 0

2.2 Regole di hash
Nodi foglia (eccetto i nodi padding)
Cos'è un albero di Merkle? image 1
- encryptUid: UID crittografato dell'utente
- nonce: un valore unico assegnato a ogni utente
- balances: stringa json composta dal numero di valute nello snapshot degli asset dell'utente (nota: rimuovere lo 0 invalido alla fine e mantenere la precisione a 8 bit)
- Per esempio: {"BTC":1.763,"ETH":362,"USDT":1077200.2274}

Nodo padre
Cos'è un albero di Merkle? image 2
- h1: hash del nodo figlio di sinistra del nodo corrente,
- h2: hash del nodo figlio di destra del nodo corrente,
- level: posizione del nodo padre

Definizione livello dei nodi dell'albero: Un albero di Merkle completo (albero completamente binario) richiede 2^n dati di nodi foglia, livello di nodi foglia = n + 1, livello del nodo padre = livello del nodo figlio - 1, livello del nodo radice = 1, con livello massimo pari a quello del nodo foglia

Regole dei nodi padding
Un albero di Merkle completo (albero completamente binario) richiede 2^n dati di nodi foglia, ma il numero di dati potrebbe essere non soddisfacente e dispari. In questo caso, se un nodo k non ha un nodo fratello, allora il padding automatico ne genera uno denominato k', con hash(k') = hash(k), e numero di valute di k' pari a zero.

Per esempio:
Cos'è un albero di Merkle? image 3
Quindi i valori archiviati dal nodo padding hash4 = hash3, sono {"BTC": 0, "ETH": 0, "USDT": 0}, come mostrato dal nodo evidenziato nella figura uno.
Figura uno
Cos'è un albero di Merkle? image 4

Cos'è un albero di Merkle? image 5

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

Principio di verifica
1. Principio di verifica: Secondo la definizione dell'albero di Merkle di Bitget Limited, il valore hash del nodo padre è calcolato a partire dal nodo foglia dell'utente fino al nodo radice, e il valore hash del nodo radice è comparato con il valore hash dell'albero di Merkle nel "Proceso di verifica - Passo 1". Se entrambi sono uguali, la verifica è superata, altrimenti fallisce.

2. Esempio: Combinando la figura uno con il testo json qui di seguito, e basandosi sul nodo foglia h3 dell'utente e sulle informazioni fornite da quello h4 adiacente, possiamo calcolare l'hash del nodo padre h6. Con le informazioni fornite dal nodo h5 adiacente, possiamo calcolare l'hash del nodo padre h7, per poi comparare il valore hash con il nodo radice h7 fornito dai dati di percorso dell'albero di Merkle, verificando così se i valori hash equivalgono per completare la verifica.
Testo json sui dati di percorso dell'albero di Merkle:
Cos'è un albero di Merkle? image 6

Passi di verifica
1. Accedi al tuo account Bitget, clicca su "Asset Overview - Proof of Assets", e vai su "Proof of Assets" per visualizzare le verifiche recenti. Per la loro visualizzazione, al momento della verifica i dati saranno automaticamente ampliati.
Cos'è un albero di Merkle? image 7

2. Per verificare manualmente se i tuoi asset sono inclusi nell'albero di Merkle, basta seguire i passi di verifica. Clicca su "Download Data" per ricevere i dati necessari per la convalida manuale, e scaricare un file con il nome di default: merkle_tree_bg.json
Cos'è un albero di Merkle? image 8

3. Operazioni specifiche:
Nel nostro esempio, il nome del file è merkel_tree_bg.json. Il testo json del percorso di dati dell'albero di Merkle è quanto segue:
Cos'è un albero di Merkle? image 9

4. Scarica lo strumento di verifica open source ProofOfReserves.zip, fornito da Bitget Limited.
5. Decomprimi il file ProofOfReserves.zip nella directory corrente e archivia il file merkel_tree_bg.json salvato nel passo 3 nella stessa cartella. Nel nostro caso, il file è in Downloads, e il nome della cartella è proof-of-reserves. Di seguito lo screenshot:
Cos'è un albero di Merkle? image 10

6. Apri il prompt dei comandi (sistemi Mac: applicazione terminale; sistemi Windows: applicazione cmd)
7. Inserisci il comando cd ~/Downloads/proof-of-reserves nel prompt dei comandi, e accedi alla directory dell'archivio scaricato
8. Verifica i tuoi dati inserendo i seguenti comandi

Mac/Linux
Cos'è un albero di Merkle? image 11

Windows
Clicca il file start.bat

Nota: Se stai usando un Mac e hai dei problemi con le impostazioni di sicurezza in questo passo, vai su Preferenze di sistema -> Sicurezza e privacy -> Generale -> premi il lucchetto per effettuare delle alterazioni -> Permetti app scaricate da: App Store e sviluppatori identificati -> Dai il permesso agli strumenti.
Se si verifica il seguente problema, zsh: permission denied: . /start.sh, esegui il comando qui di seguito
Cos'è un albero di Merkle? image 12

9. Visualizzare i risultati
(1) Se i dati sono corretti e la verifica è stata superata, il risultato sarà: "Merkle tree root hash consistent, verification succeeded".
Cos'è un albero di Merkle? image 13

(2) Se i dati sono incorretti e la verifica non è stata superata, il risultato sarà: "Merkle tree root hash inconsistency, verification failed".
Cos'è un albero di Merkle? image 14

10. Puoi anche usare il codice open source dello strumento di verifica di Bitget Limited, e la definizione dell'albero di Merkle (vai alla sezione "Cos'è l'albero di Merkle"). In questo modo, sarai in grado di creare un programma per verificare il percorso di dati ottenuto nel passo 2, o controllare se i tuoi asset sono inclusi dell'albero di Merkle generato da questa verifica.

Team Bitget