Sözlük / Madencilik ve konsensüs
Merkle kökü
- Merkle kökü nedir?
- Merkle kökü, bir blok başlığındaki, madencinin dizdiği tam sırayla o bloktaki her işlemi taahhüt eden tek 32 baytlık hash'tir.
Tek bir ödemedeki tek bir satoshiyi değiştirin, iki işlemin sırasını değiştirin ya da bir işlem daha ekleyin, kök tamamen değişir. Madenciler buna güvenir: 32 bitlik nonce yalnızca yaklaşık 4,3 milyar deneme sunar, bu yüzden madencilik yazılımı yeni bir kök üretmek ve aramaya devam etmek için coinbase işlemini düzenler. Bitcoin tutan herkes için o tek alan, bir bloğun madencilik yapıldıktan sonra sessizce bir ödeme kazanmasının ya da kaybetmesinin neden mümkün olmadığının açıklamasıdır.
Nasıl çalışır
Merkle kökü seçilmez, hesaplanır; ona bir değer katan da budur.
Başlıktaki 80 baytın 32 tanesini kaplar ve madenci, işlemlerin ürettiği değeri neyse onu yazar. Bloğu alan her düğüm, kendisine gönderilen işlem listesinden ağacı yeniden kurar ve kendi sonucunu başlıkla karşılaştırır. Uyuşmazlık, hemen ve tartışmasız reddetme anlamına gelir. Başlığın bir şey söylediği, blok gövdesinin başka bir şey söylediği hiçbir protokol sürümü yoktur.
Bu kontrol, kökü madencilik döngüsünün menteşesi yapar. Nonce yalnızca dört bayt genişliğindedir, bu da 4.294.967.296 olası değer demektir; saniyede 200 trilyon hash hızında çalışan bir makine bunların hepsini yaklaşık yirmi mikrosaniyede tüketir. Bu nedenle madencilerin yeni adaylar üretmenin bir yoluna ihtiyacı vardır ve en ucuz yol coinbase işlemini değiştirmektir. Havuzlar her makineye coinbase'i aralarında boşluk olan iki yarıya bölünmüş olarak gönderir, makine kendi baytlarını boşluğa yazar, coinbase işlem kimliği değişir, Merkle kökü değişir ve 4,3 milyar yeni nonce kullanılabilir hale gelir. Zaman damgasını ve BIP320 tarafından ayrılmış 16 sürüm bitini değiştirmek ek alan sağlar.
Segregated witness, başlığa dokunmadan ikinci bir kök ekledi, çünkü başlığa dokunmak bir hard fork olurdu. BIP141, tanık işlem kimlikleri üzerinde ayrı bir ağaç tanımlar; bu ağacın kökü, dört baytlık 0xaa21a9ed önekiyle işaretlenmiş olarak coinbase işleminin bir çıktısına yazılır. Coinbase'in kendisi olağan ağacın bir yaprağı olduğundan, o tanık taahhüdü zaten bir seviye uzaktan başlığın Merkle köküne katılmış olur.
Nerede görürsünüz
Merkle kökü, herhangi bir blok gezgininin size göstereceği alanlardan biridir ve elle doğrulayabileceğiniz az sayıdaki alandan biridir.
Bitcoin Core bunu getblockheader ve getblock çıktısında merkleroot olarak bildirir. 4a5e1e4b ile başlayan genesis bloğunun değeri başlamak için iyi bir yerdir, çünkü o blok tek bir işlem barındırır: tek yapraklı bir ağaç kendi köküdür, yani Merkle kökü ile işlem kimliği aynıdır. Yalnızca bir coinbase işlemi içeren her blok aynı özelliğe sahiptir.
Bunu bloklardan çok madencilik protokollerinde de görürsünüz. Bir Stratum iş bildirimi, madenciye işlemleri hiç göndermez. Coinbase yarılarını ve coinbase'den zirveye çıkmak için gereken kısa hash listesini gönderir, böylece makine denediği her ek nonce için kökü kendisi hesaplayabilir. Stratum V2, işlemleri baştan kimin seçtiğini değiştirir, ancak kök yine aynı şekilde kurulur.
Merkle kökü vs önceki blok başlığı hash'i
Merkle kökü ile önceki blok başlığı hash'i, aynı 80 baytlık başlıkta yan yana duran iki 32 baytlık hash'tir ve farklı yönlere taahhüt eder. Merkle kökü içe, bu bloğun içeriğine işaret eder: işlemler, sıraları ve başka hiçbir şey. Önceki blok başlığı hash'i geriye, arkasındaki tüm geçmişe işaret eder. Bir ödemeyi düzenlerseniz yalnızca Merkle kökü bozulur. Geçen yıldan bir bloğu düzenlerseniz o zamandan beri her bloğun önceki blok başlığı hash'i yanlış olur; bir bloğu kurcalamak ile bir zinciri kurcalamak arasındaki fark da budur.