left-back

Merkle Ağacı Nedir?

Bitget Global Kullanıcıları,

Merkle Ağacı Hash Ağacı olarak da bilinen bir veri yapısıdır. Merkle ağacı, verileri ağaç yapısının yaprak node’larında depolar ve verileri adım adım en üst kök node’a hashlenmesiyle, yaprak node’ların verilerindeki herhangi bir değişiklik daha üst seviyedeki node'lara iletilir ve sonunda değişiklik olarak ağaç kökünde görüntülenir.

1. Merkle Ağacı Rolleri
- Sıfır Bilgi İspatı (ZKP)
- Verinin değişmemesini sağlama
- Veri gizliliğini sağlama


2. Bitget Limited Merkle Ağacı Tanımı
2.1 Node Bilgisi
Her ağaç node'unda saklanan bilgi şunları içerir:
1. hash değeri

2. kullanıcının varlık anlık görüntüsünde bulunan coin sayısı (örneğin BTC, ETH, USDT)

2.2 Hash Kuralları
Yaprak node'lar (padding node'ları hariç)

- encryptUid: kullanıcının şifrelenmiş UID'si
- nonce: her kullanıcıya atanan eşsiz bir değer
- bakiyeler: kullanıcı varlıklarının anlık görüntüsündeki coin sayısınndan oluşan json dizisi (note: remove the invalid 0 at the end and keep precision of 8 bits)
- Örneğin: {"BTC":1.763,"ETH":362,"USDT":1077200.2274}

Üst node

- h1: mevcut node'un sol alt node'undaki hash,
- h2: mevcut node'un sol alt node'undaki hash,
- level: üst node'un bulunduğu yer

Ağaç node'u seviyesi tanımı: Tamamlanmış bir Merkle Ağacı (tam ikili ağaç) şunları gerektirir; 2^n yaprak node'u verisi, yaprak node seviyesi = n + 1, üst node seviyesi = alt node seviyesi - 1, kök node seviyesi = 1, yaprak node seviyesi en yüksek seviyededir

Padding node kuralları
Tamamlanmış bir Merkle Ağacı (tam ikili ağaç) 2^n yaprak node'u verisi gerektir, ancak gerçek veri sayısı tatmin etmeyebilir ve garip olabilir. Böyle bir durumda, k node'unun bir kardeş node'u yoksa, auto padding bir kardeş node k' oluşturur, ve hash(k') = hash(k), ve node k' coin sayısı sıfır olarak ayarlanır.

Örneğin:

Padding node'u hash4 = hash3, saklanan bakiye, Şekil birde gösterildiği gibi {"BTC": 0, "ETH": 0, "USDT": 0} olur.


Şekil bir

Böylece, hash6 = SHA256 (hash3 + hash3, {BTC: (2+0), ETH:(1+0), USDT:(12+0)}, level)

Doğrulama İlkesi
1. Doğrulama ilkesi: Bitget Limited Merkle ağacının tanımına göre, kullanıcının kendi yaprak node'undan kök node'a kadar olan üst node'un hash değeri hesaplanır ve kök node'un hash değeri ile Merkle ağacının hash değeri karşılaştırılır. "Doğrulama Adımı - Adım 1", ikisi eşitse doğrulama başarılı olur, değilse doğrulama başarısız olur.
2. Örnek: Şekil 1 ve aşağıdaki json metnini birleştirerek ve kullanıcının kendi yaprak node'u h3 ve bitişik node h4 tarafından sağlanan bilgilere dayanarak, h6 üst node'unun hash değerini hesaplayabiliriz, ardından bitişik node h5'te sağlanan bilgilerle, üst node h7'nin hash değerini hesaplayabilir, ardından doğrulamayı tamamlamak adına hash değerlerinin eşit olup olmadığını görmek için hash değerini Merkle ağaç yolu verisinde sağlanan kök node h7 ile karşılaştırabiliriz.
Merkle ağacı yolu verisi json metni:

Doğrulama Adımları
1. Bitget hesabınıza giriş yapın, "Varlıklar - Varlık İspatı" sekmesine, ve son denetimleri görmek için "Varlık İspatı" sekmesine gidin. Denetimi yaptığınız zamandaki veri varsayılan olarak genişletilecektir.

2. Varlıklarınızın Merkle ağacına dahil edildiğini manuel olarak daha fazla doğrulamak isterseniz doğrulama adımlarını izleyerek bunu yapabilirsiniz. Manuel doğrulama için gerekli verileri almak için "Verileri İndir" düğmesine tıklayın, böylece, varsayılan ismi merkel_tree_bg.json olan bir dosya indirilecektir.


3. Spesifik operasyonlar:
Bizim örneğimizde, dosya adı merkel_tree_bg.json'dır. Merkle Ağacı yolu verisi json'ı aşağıda verilmiştir:

4. Bitget Limited tarafından sağlanan açık kaynak doğrulama aracı ProofOfReserves.zip'i indirin.
5. ProofOfReserves.zip dosyasını mevcut dizine çıkarın ve 3. adımda merkel_tree_bg.json dosyasını aynı klasörde saklayın. Bizim durumumuzda dosya, İndirilenlerde saklanır ve klasör adı proof-of-reserves'dür ve ekran görüntüsü aşağıda verilmiştir:

6. Terminal programını açın (Mac: terminal uygulaması, Windows: cmd uygulaması)
7. Terminal programında cd ~/Downloads/proof-of-reserves komutunu girin ve indirilen paket dizinini açın
8. Aşağıdaki komutu girerek verinizi doğrulayın
Mac/Linux

Windows
start.bat dosyasına tıklayın

Not: Mac sistemi kullanıyorsanız ve bu adım sırasında güvenlik ayarlarıyla ilgili sorunlarla karşılaşırsanız, Sistem Tercihleri -> Güvenlik ve Gizlilik -> Genel -> Değişiklik yapmak için kilit düğmesine dokunun -> Şuradan indirilen uygulamalara izin ver: App Store ve onaylı geliştiriciler -> Araçlara izin verin.
Şu sorunla karşılaşırsanız zsh: izin reddedildi: . /start.sh, aşağıdaki komutu girin

9. Sonuçları Göster
(1) Veriniz doğruysa ve doğrulamanız başarılıysa, sonuç "Merkle ağacı kök hash tutarlı, doğrulama başarılı" olacaktır.

(2) Veriniz yanlışsa ve doğrulama başarısız olursa, sonuç "Merkle ağacı kök hash tutarsız, doğrulama başarısız" olacaktır.

10. Ayrıca Bitget Limited açık kaynak doğrulama aracı koduna ve Merkle ağacı tanımına ("Merkle Ağacı Nedir" bölümüne bakın) göz atabilir ve 2. adımda elde edilen yol verisini doğrulamak için kendi programınızı yazabilir veya varlıklarınızın bu denetim tarafından oluşturulan Merkel ağacına dahil edildiğinden emin olmak için kontrol edebilirsiniz.

Bitget Ekibi