İçeriğe geçin
buybitcoinsmart

Sözlük / Madencilik ve konsensüs

Merkle ağacı

Merkle ağacı nedir?
Merkle ağacı, bir bloktaki her işlemi tek bir 32 baytlık değere indiren hash piramididir; böylece herhangi bir ödeme, geri kalanı olmadan kanıtlanabilir.

İşlem hash'lerini ikili eşleştirin, her çiftin hash'ini alın ve tek bir hash kalana kadar bunu tekrarlayın. Bu tek değer blok başlığına girer ve bir işlemin bunun altında yer aldığını kanıtlamak için yalnızca tek bir yol üzerindeki hash'ler gerekir: 2.000 ödeme içeren bir blok için on bir hash, 352 bayt. Bir telefon cüzdanının, bloğu indirmeden bitcoinlerinizin ulaştığını kontrol edebilmesinin nedeni budur.

Nasıl çalışır

Merkle ağacı, bir listeyi komşuları birbirine hash'leyerek katman katman bir piramide dönüştürür, ta ki tek bir hash kalana kadar.

Yapraklar, madencinin yerleştirdiği sıradaki işlem kimlikleridir. Bitcoin her çifti, iki 32 baytlık değeri birleştirip sonucun üzerinde iki kez SHA-256 çalıştırarak bir araya getirir. Bir katmanda tek sayıda girdi olduğunda son girdi kendisinin bir kopyasıyla eşleştirilir; bu, algoritmayı basit tutar ve bir zamanlar gerçek bir soruna yol açmıştır: Mayıs 2012'de açıklanan ve aynı ay yamalanan, CVE-2012-2459 olarak kataloglanan güvenlik açığı, altta yatan işlemler sorunsuz olsa bile düğümlere geçersiz görünen bir blok oluşturmak için bu çoğaltmayı kötüye kullanmıştı.

Kazanç logaritmiktir. İşlem sayısını ikiye katlamak, her işlem için bir hash değil, bir katman ekler. 1.024 ödeme içeren bir blok, üyeliği kanıtlamak için on hash gerektirir, 320 bayt. Dört bin doksan altı ödeme ise on iki hash gerektirir, 384 bayt. Kanıtı kontrol eden kişi yolu yukarı doğru yeniden hesaplar ve sonucu başlıktan zaten güvendiği kök ile karşılaştırır; SHA-256'yı kırmadan bir yolu sahte hale getirmenin bir yolu yoktur.

Bunların hiçbiri Bitcoin ile başlamaz. Ralph Merkle bu yapıyı, 1979'da başvurusu yapılan ve Ocak 1982'de verilen US 4.309.569 patentine dönüşen patent başvurusunda tanımlamıştı. Whitepaper onun çalışmasına atıfta bulunur ve ağacı iki amaçla kullanır: disk alanından tasarruf etmek için eski bloklardan harcanmış işlemleri budamak, 7. bölümde, ve bir istemcinin yalnızca başlıkları tutarak bir ödemeyi doğrulamasına izin vermek, 8. bölümde.

Nerede görürsünüz

Merkle ağaçları, bir sistemin tek bir öğenin büyük bir kümeye ait olduğunu kümeyi göndermeden kanıtlaması gereken her yerde ortaya çıkar.

Bitcoin içinde her blok başlığı bir ağacın tepesini taşır. Bir düğüm, aldığı işlemlerden ağacı yeniden oluşturur ve sonuç uyuşmazsa bloğu reddeder. Bitcoin Core bu mekanizmayı doğrudan sunar: gettxoutproof, bir işlemin bir bloğa dahil edildiğine dair serileştirilmiş bir kanıt üretir, verifytxoutproof ise bunu kontrol eder; bu, birine cüzdan vermeden bir ödemenin kanıtını sunmanın pratik bir yoludur.

Bitcoin'in başka bir yerinde Taproot ikinci bir ağaç kurar: bir Taproot çıktısının alternatif harcama koşulları bir ağaç olarak düzenlenir, böylece kullandığınız dalı açığa çıkarmak, kullanmadığınız dallar hakkında hiçbir şey ifşa etmez. Bitcoin'in dışında aynı biçim, Git commit geçmişinin, yanlış verilmiş web sertifikalarını yakalayan Certificate Transparency günlüklerinin ve ZFS dosya sisteminin veri bütünlüğü kontrollerinin temelini oluşturur.

Bir cüzdan kullanıcısı için görünür sonuç küçük ve faydalıdır. Birkaç düzine megabayt başlık tutan hafif bir istemci, işleminizin belirli bir blokta, belirli bir derinlikte olduğunu doğrulayabilir ve yalnızca biri sahte bir zincirde geçerli iş kanıtı üretmişse yanlış yanıt alır; bunun da gerçek bir maliyeti vardır.

Merkle ağacı vs merkle kökü

Merkle ağacı çalışma yapısıdır; Merkle kökü ise sonrasında saklanan tek değerdir. Bir düğüm, bir bloğu doğrularken tüm piramidi bellekte oluşturur ve ardından atar, yalnızca tepede kalan 32 baytı saklar, çünkü altındaki her şey işlemlerden yeniden üretilebilir. Bir blok gezgini size Merkle kökü adlı bir alan gösterdiğinde, o hayatta kalan değerdir. Kimse ağacı saklamaz ve kimsenin saklamasına gerek yoktur.

Karıştırılmaması gerekenler

Sık sorulan sorular

Bitcoin neden tüm işlem listesinin hash'ini almak yerine Merkle ağacı kullanır?

Çünkü listenin tek bir hash'i yalnızca listenin tamamına sahip olduğunuzu kanıtlar. Bir ağaç ise tek bir işlemin bir bloğa ait olduğunu yaklaşık bir düzine hash ile kanıtlamanızı sağlar; hafif cüzdanları mümkün kılan da budur.

Bir Merkle kanıtı ne kadar büyük?

Ağacın her katmanı için yaklaşık 32 bayt. 2.000 işlem içeren bir blok on bir katman gerektirir, dolayısıyla bir kanıt yaklaşık 352 bayttır; yavaş bir mobil bağlantı üzerinden gönderilebilecek kadar küçüktür.

Sıradaki okuma

İlgili terimler

Daha fazlası: Madencilik ve konsensüs

Bu sayfayı İngilizce okuyun