Sözlük / Madencilik ve konsensüs
Yetim blok
- Yetim blok nedir?
- Yetim blok, düğümünüzün ana bloğunu henüz görmediği, bu yüzden doğrulanamayan veya zincire bağlanamayan bir bloktur; çoğu kişinin bu kelimeyle kastettiği şey bu değildir.
Kelimenin iki hayatı var. Protokolde, sırasız gelen ve bağlanacak bilinen bir atası bulunmayan bir bloğu tanımlar; günlük kullanımda ve çoğu blok gezgininde ise yalnızca bir yarışı kaybetmiş geçerli bir bloğu etiketler, ki buna doğrusu bayat blok denir. Bitcoin Core, Şubat 2015'te yayımlanan 0.10 sürümünde yetim blokları tutmayı tamamen bıraktı.
Nasıl çalışır
Yetim blok yalnızca bir bloğun alınması ile nereye ait olduğunun bilinmesi arasındaki boşlukta var olur.
Doğrulama sıralıdır. Bir bloğu kontrol etmek için hemen ondan önceki harcanmamış çıktı kümesine ihtiyacınız vardır ve bunu, önceki her bloğu sırayla uygulayarak kurarsınız. Ana bloğu eksik bir bloğu düğüme verirseniz, düğüm başlıktaki iş kanıtını (proof of work) doğrulayabilir ama başka hiçbir şeyi doğrulayamaz: ne ücretleri, ne sübvansiyonu, ne de herhangi bir girdinin daha önce harcanıp harcanmadığını. Blok geçersiz değil, doğrulanamaz durumdadır.
Bitcoin Core yazılımının eski sürümleri bu tür blokları bellekte bekletirdi ve eksik ana bloğun gelmesini beklerdi. Bu gerekliydi, çünkü bloklar duyuruyla istenirdi ve bir eş düğüm onları kolayca sıra dışı teslim edebilirdi. Önce başlıkların (headers-first) eşitlenmesi bu ihtiyacı ortadan kaldırdı. Artık bir düğüm, tek bir blok gövdesi istemeden önce 80 baytlık başlıklardan oluşan zinciri indirir ve kontrol eder; bu da gelen bir bloğun nereye ait olduğunu her zaman bildiği ve gövdesini karışıklık olmadan birkaç eş düğümden aynı anda isteyebildiği anlamına gelir. Yetim blok havuzu aynı sürümde kaldırıldı ve modern bir düğümde gerçek bir yetim blok üretmek esasen imkansızdır.
Bir şey bu adı korudu. Bitcoin Core, girdilerini henüz görmediği işlemler için hâlâ bir yetim işlem havuzu tutar ve varsayılan olarak bunlardan 100 tanesine kadar saklar; eksik ana işlemin birkaç saniye geriden geldiğine dair makul bir varsayımla. Yani kelime Core'un kendi günlüklerinde veya yapılandırmasında geçtiğinde işlemlerden söz eder, asla bloklardan.
Nerede karşınıza çıkar
Yetim kelimesi çoğunlukla başka bir şeyi anlatan yerlerde yaşamaya devam ediyor.
Blok gezginleri karışıklığın en büyük kaynağıdır: birkaçı, rakip bir blok kazandığında düşürülen geçerli blokları listeleyen bir yetim bloklar sayfası yayımlar ve haberler bu etiketi kopyalar. Madencilik havuzu panelleri de aynısını yapar ve aslında bayat oran olan bir yetim oranı bildirir. Altcoin belgeleri, çoğu Bitcoin'in erken dönem wiki'sinden kopyalanmış olarak, terimi iki anlam için birbirinin yerine kullanır.
Bitcoin Core bunu yapmaz. Ona bildiği rakip dalları sorduğunuzda her dal ucunu active, valid fork, valid headers, headers only veya invalid durumuyla bildirir. Yetim diye bir durum yoktur, çünkü kelimenin bir zamanlar tanımladığı durum artık ortaya çıkmıyor.
Bir okuyucu için faydalı test, söz konusu bloğun hiç kontrol edilip edilmediğidir. Biri size blok yüksekliğini, işlem sayısını ve onu çıkaran havuzu söyleyebiliyorsa, blok tamamen doğrulanmış ve bir yarışı kaybetmiştir, dolayısıyla aradığınız kelime bayattır.
Yetim blok vs bayat blok
Yetim blok doğrulanamaz çünkü ana bloğu bilinmez. Bayat blok ise doğrulanmış, tamamen geçerli olmuş ve yalnızca aynı yükseklikteki başka bir bloğun üzerine daha önce inşa edilmesi nedeniyle terk edilmiştir. Yetim diyen neredeyse herkes, birkaç gezgin dahil, bayat demek ister; bu yüzden bir kaynaktan sonuç çıkarmadan önce hangisini kastettiğini sormakta fayda var. İkisi de kullanıcı olarak size hiçbir maliyet getirmez: düşürülen bir bloktaki ödemeler mempool'a geri döner ve genellikle bir iki blok içinde yeniden çıkarılır.