Yeni Listeleme

Merkle Ağacı Nedir?

2022-11-28 06:49088

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)
Merkle Ağacı Nedir? image 0

2.2 Hash Kuralları
Yaprak node'lar (padding node'ları hariç)
Merkle Ağacı Nedir? image 1
- 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
Merkle Ağacı Nedir? image 2
- 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:
Merkle Ağacı Nedir? image 3
Padding node'u hash4 = hash3, saklanan bakiye, Şekil birde gösterildiği gibi {"BTC": 0, "ETH": 0, "USDT": 0} olur.


Şekil bir
Merkle Ağacı Nedir? image 4

Merkle Ağacı Nedir? image 5

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:
Merkle Ağacı Nedir? image 6

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.
Merkle Ağacı Nedir? image 7

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.

Merkle Ağacı Nedir? image 8


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:
Merkle Ağacı Nedir? image 9

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:
Merkle Ağacı Nedir? image 10

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
Merkle Ağacı Nedir? image 11

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
Merkle Ağacı Nedir? image 12

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.
Merkle Ağacı Nedir? image 13

(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.
Merkle Ağacı Nedir? image 14

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