KESİNLİK
BLOK YÜKSEKLİĞİ
AKTİF DOĞRULAYICILAR

Merkle Ağaçları ve Durum Kökleri, Yalnızca Tanımlanmış Değil, Gösterilmiş

Bir Merkle ağacı her şeyden önce bir şekildir: en altta bir yaprak sırası, her çift birlikte özetlenerek üstteki sırayı oluşturur, o sıra yine çiftler hâlinde özetlenir ve böyle devam eder, ta ki en tepede tam olarak bir özet kalana kadar: kök. O şeklin hiçbir yanı blokzincirlerden söz etmez. Büyük bir veri yığınının parmak izini tek bir kısa değerle çıkarmanın, ama yine de yığındaki herhangi bir tek parçanın ona ait olduğunu kanıtlayabilmenin genel bir yoludur.

state_root: 9045d9ed5ab3f444bc59c8899629031f640d48ce74d29a7aaa17b525d54483f1

Bu, bu sayfa için kurulmuş bir oyuncak örnek değildir. Bu sayfanın yazıldığı andaki gerçek son bloğun gerçek state_root alanıdır. İnternetteki her Merkle ağacı anlatımı eninde sonunda size kutulardaki harflerle bir şema gösterir: H(A,B), H(C,D) ve böyle devam eder. Çok azı size çalışan bir zincirden canlı bir kök özeti gösterir. Bu sayfa sırayla ikisini de yapıyor.

Şekil, genel olarak

Alttan başlayın. Her yaprak bir veri parçasının özetidir: bir hesap bakiyesi, bir belge, bir işlem, ağacın özetlediği şey her neyse. Komşu yaprakları eşleştirin ve her çifti birlikte özetleyin; bu, yarısı kadar girdiyle bir üst katmanı üretir. Tekrarlayın: eşleştir, özetle, yukarı çık. Bir milyon yapraklı bir ağaç yaklaşık yirmi katmanda tek bir köke iner, çünkü her katman sayıyı yarıya indirir.

Yapının, yalnızca bir kök üretmenin ötesinde bir yararlı parçası daha vardır: içerme kanıtı. Belirli bir yaprağın gerçekten verilen bir kökün ardındaki kümenin parçası olduğunu göstermek için bütün veri kümesini vermeniz gerekmez; yalnızca o yapraktan köke giden yol boyunca kardeş özetleri gönderirsiniz, yani bir milyon yapraklı bir ağaç için bir milyon değil kabaca yirmi özet. Kökü elinde tutan herkes o kısa yolu yeniden hesaplayıp zaten güvendiği değere varıp varmadığını kontrol edebilir.

Tek bir özet neden bütün bir veri kümesinin yerine geçebiliyor

Bunu inşa etmeye değer kılan özellik söylemesi basit ve hafife alması kolaydır: ağacın herhangi bir yerinde tek bir yaprağı değiştirin, kök değişir. O yaprağın üstündeki her katman en tepeye kadar yeniden hesaplanır. Kök gözle görülür biçimde kımıldamadan tek bir hesap bakiyesini, tek bir belgeyi, tek bir girdiyi değiştirmenin yolu yoktur.

Bu, kökü kurcalamanın belli olduğu bir özete çevirir. Elinde altta yatan veri kümesi değil yalnızca kök olan bir yabancı, bütün kümeyi indirmeden ya da ona güvenmeden hâlâ "bu belirli veri parçası, bu kökün özetlediğini iddia ettiği kümeye gerçekten ait mi?" diye sorabilir ve kontrol edilebilir bir evet ya da hayır alabilir. Kök, bir mesaj başlığına, bir sertifikaya ya da anlaşıldığı üzere bir bloğa konacak kadar küçüktür.

Canlı örnek

O blokta durdukları hâliyle hesap bakiyelerini, DID kayıtlarını, verilmiş kimlik bilgilerini ve doğrulayıcı stake'ini özetler: dört ayrı alt ağaç, blok başlığının taşıdığı tek kökte birleştirilmiş. Herhangi bir hesap bakiyesi, DID kaydı, kimlik bilgisi ya da stake değiştikten sonra aynı yöntemi yeniden çekin ve farklı bir kök alırsınız: durum kımıldadığı anda kök de kımıldar. Bu beklenendir: bir durum kökü sabit bir değer değil, tek bir durumun anlık görüntüsüdür.

Kök gerçektir; onu üreten ağ hâlâ erken aşamadadır.

İlkeli doğru atfetmek

Bunların hiçbiri Solidus'un icadı değildir. Ralph Merkle özet ağacı yapısını 1979'daki Stanford çalışmasında tarif etti ve aynı yıl patentini aldı: blokzincirlerden onlarca yıl öncedir ve başka birçok yerin yanı sıra Certificate Transparency günlüklerinde, git'in nesne modelinde ve Bitcoin'in 2008 blok tasarımında görülür. Bir durum taahhüdünü doğrudan her blok başlığına koyma, böylece tek başına bir başlığın yalnızca o bloktaki işlemleri değil tam bir hesap durumu anlık görüntüsünü kanıtlaması hamlesi, Ethereum'un 2014 Sarı Kitabı (Gavin Wood) tarafından yaygınlaştırıldı. Solidus ikisini de icat etmek yerine bir araya getirir; ağaç kodunun kendisi Ethereum'un bir çatalı değil, sıfırdan yazılmış bir Rust uygulamasıdır. Tam yapı ve Solidus'un belirli varyantının, yani BLAKE3 ile birleştirilmiş bir Seyrek Merkle Ağacının nasıl çalıştığı için Lexicon'un Merkle Ağacı ve Durum Kökü girdilerine bakın.

Bloğa geri dönüş

Bu sitedeki blok okuma sayfası, bir blok başlığındaki diğer her şeyi, yani yüksekliği, özetleri, işlem sayısını ve önereni adım adım anlatırken state_root alanını bilerek atladı. O alanın düzgün açıklandığı yer burasıdır: bir blok başlığında bloğun kendisiyle değil, o noktadaki bütün zincir durumuyla ilgili olan tek alandır. Aynı mantık, ağın en baştan bir bloğun kesin olduğunda nasıl anlaştığı için de geçerlidir ve ayrıca kesinlik nasıl işler sayfasında ele alınır.

Kendiniz kontrol edin

rpc.solidus.network adresine karşı solidus_getLatestBlock sorgulayın ya da doğrudan gezginin blok listesini açın ve baktığınızda güncel olan blokta state_root alanını bulun. Bu sayfadakinden farklı bir özet olacaktır; mesele de budur. Mekanizma tek bir sayının aynı kalmasına bağlı değildir; altındaki bir şey değiştiği anda sayının değişmesine bağlıdır.

Okumaya devam edin

Merkle Ağaçları ve Durum Kökleri, Yalnızca Tanımlanmış Değil, Gösterilmiş · Solidus — Solidus Explorer