

Stale block, aynı bloğun iki kez çıkarılması durumunda kullanılan bir tabirdir.
Detaylandırmak gerekirse; blokzincir ağı üzerinde çözümlenmiş olan bir blok, daha sonra başka bir madenci tarafından yeniden çıkarılabilir. Bu durumda ikinci kez çıkarılan blok; hükümsüz, geçersiz ya da eski olarak tanımlanır.
Herhangi bir değeri yoktur ve önceki bloğun önüne geçemediği için kullanılamaz niteliktedir. Söz konusu blok değer taşımadığı için onu çıkaran madenci de herhangi bir ödül alamaz.
Stale block’un üst bloğu (parent block) bellidir. Blokzincire matematiksel olarak doğru şekilde bağlanır. Sorun geçerlilikte değil, hangi dalın ana zincir olarak kabul edileceğindedir.
Stale block ne zaman yaşanır?
Proof of work yönteminin uygulanması sırasında bazı gecikmeler yaşanabilir. Bu gecikmelerin sonucu olarak da aynı yükseklikte birden fazla blok çıkarılabilir. Ortaya çıkan bloklar arasında en uzun zincire sahip olan ilk önce çıkarılır ve gerçek blok olarak kabul edilir.
Geride kalan diğer kısa bloklar da başka bir zaman diliminde keşfedilip, çıkarılabilir. Çıkarıldığında, öncekiyle aynı olduğu anlaşıldığı için stale block olarak kabul edilir. Aslında bunlar geçerli ve doğrulanmış bloklar olsalar da ilk olamadıkları için blokzincir ağı tarafından reddedilmiş olarak tanımlanırlar.
Stale block nasıl oluşur?
Stale block, iki madencinin birbirine çok yakın zamanda aynı blok yüksekliği için geçerli blok bulması ve ağın bu iki bloğu farklı sırayla öğrenmesi sonucunda ortaya çıkar. Süreç şu adımlarla ilerler:
- Eşzamanlı blok bulma: İki farklı madenci veya havuz, birbirinden habersiz şekilde aynı yükseklik için geçerli bir blok üretir.
- Ağ gecikmesi (network latency): Bloklar ağa yayıldığında farklı düğümler (node’lar) bu iki bloktan hangisini önce alacağına göre farklı taraflar tutar.
- Geçici çatallanma (fork): Ağda kısa süreliğine iki rakip dal oluşur ve madencilerin bir kısmı birinci, bir kısmı ikinci blok üzerine çalışmaya devam eder.
- Chainwork karşılaştırması: Dallardan biri bir sonraki blokla önce genişler ve daha fazla toplam iş biriktirir. Ağ bu dalı ana zincir kabul eder.
Burada kritik nokta, en uzun zincir ifadesinin yanıltıcı olabilmesidir. Bitcoin protokolü aslında en çok blok sayısına değil, en fazla birikmiş işe (chainwork) sahip zinciri esas alır.
Stale block ile orphan block arasındaki fark nedir?
Stale block’un üst bloğu bellidir ve blok geçerlidir. Yalnızca ana zincir yarışını kaybetmiştir. Orphan block ise üst bloğu henüz bilinmeyen, bu yüzden zincire nereden bağlanacağı belirsiz olan bloktur. Modern Bitcoin yazılımında orphan block pratikte artık neredeyse hiç görülmez.
Stale block ile orphan block dört temel noktada birbirinden ayrılır. Stale block’un üst bloğu bellidir ve blok protokol kurallarına tamamen uygundur ancak ana zincirde kalıcı olarak dışarıda kalır. Orphan block ise üst bloğu bilinmeyen, doğrulama bekleyen geçici bir bloktur ve üst blok ağa ulaştığında ya çözülür ya da reddedilir.
Günümüzdeki sıklık açısından da fark belirgindir. Stale block düşük bir oranda olsa da hâlâ görülmeye devam eder. Orphan block ise Bitcoin Core’un headers-first senkronizasyon güncellemesinden sonra pratikte yok denecek kadar azalmıştır.
Bitcoin Wiki, madenciliğin erken dönemlerinde orphan block’ların gerçekten var olduğunu ancak Bitcoin Core yazılımının 0.10 sürümüyle gelen headers-first senkronizasyon değişikliğinin bu tür blokları büyük ölçüde ortadan kaldırdığını aktarır. Bu güncellemeden sonra düğümler önce blok başlığını inceler ve üst bloğu bilinmeyen blokları hiç indirmez.
Madenci ödülü ve işlemlere ne olur?
Bir blok stale hâline geldiğinde, o bloğu bulan madenci elektrik ve işlem gücünü (hash gücü) harcamış olur ancak karşılığında hiçbir kazanç elde edemez. Blok ödülü ve işlem ücretleri yalnızca ana zincirde yer alan bloklarda harcanabilir hâle gelir. Stale bloktaki coinbase ödülü ana zincirin parçası olmadığı için kullanılamaz.
Bu durum bireysel madenciler için haksız bir kayıp gibi görünse de ağın dağıtık yapısının doğal bir sonucudur. Büyük ve iyi bağlantılı madencilik havuzları, bloklarını ağa daha hızlı yaydıkları için bu riski daha düşük oranda yaşar.
İşlemler açısından durum farklıdır. Stale bloktaki işlemler ana zincirde henüz onaylanmadıysa kaybolmaz, mempool adı verilen bekleme havuzuna geri döner ve genellikle bir sonraki blokta yeniden işlenir. Bu nedenle bir işlemin stale bir dalda görünmesi, o işlemin kalıcı olarak onaylandığı anlamına gelmez.
Stale block ağ güvenliğini tehdit eder mi?
Tek başına düşük oranlı stale block olayları Bitcoin’in güvenliğini tehdit etmez ve merkeziyetsiz, dağıtık bir ağın doğal sonucudur. Stale block oranının ani ve sürekli yükselmesi ise ağ gecikmesinde bir sorunu veya blok üretim hızının yayılım kapasitesini aştığını işaret edebilir. Bu yüzden stale oranı, madencilik altyapısını izleyen ekipler için önemli bir gösterge kabul edilir.
Özetle, tekil stale block olayları normal işleyişin parçasıdır. Stale oranındaki kalıcı artış ise ağ altyapısı açısından daha yakından incelenmesi gereken bir sinyaldir.
Ethereum’da uncle (ommer) blok neydi?
Ethereum, Proof-of-Work (PoW) döneminde stale block’a benzer bir sorunu farklı biçimde çözmüştü. İki madenci eşzamanlı geçerli blok ürettiğinde, kaybeden blok tamamen değersiz sayılmak yerine uncle block (ommer block) adıyla ana zincire referans olarak dahil edilebiliyordu. Bu blokları üreten madenciler kısmi bir ödül alıyordu.
Ethereum madencilik belgelerine göre bu mekanizma ağın daha fazla merkeziyetsizliğe sahip olmasını sağlıyor, ağ gecikmesi daha yüksek küçük madencilerin de blok ödülü üzerinden getiri elde etmesine imkân tanıyordu.
Eylül 2022’deki Merge güncellemesiyle Ethereum, Proof-of-Stake (PoS) mekanizmasına geçti. Her slotta yalnızca tek bir doğrulayıcı blok önerdiği için eşzamanlı blok üretimi ve dolayısıyla uncle block olasılığı ortadan kalktı.
Merge teknik değişiklikleri açıklamasına göre bu geçişle birlikte her blokta yer alan ommer listesi artık her zaman boş kalır. Bugün bu kavram yalnızca Ethereum’un PoW dönemine ait tarihsel bir referans olarak anlam taşır.
Stale block oranı zaman içinde nasıl değişti?
Bitcoin ağının erken dönemlerinde orphan ve stale block olayları günümüze göre daha sık görülüyordu. Zamanla hem yazılım güncellemeleri hem de altyapı iyileştirmeleri bu oranı belirgin biçimde düşürdü. Orphan block sıklığı verilerine göre Bitcoin ağında ilk orphan block 18 Mart 2015’te görülmüş, 2016 yılında bu eğilim azalmış ve 2017 yılının haziran ayından itibaren listeye hiç yeni orphan block eklenmemiştir.
Bu iyileşmenin arkasında birkaç teknik gelişme yer alır. Compact Blocks gibi protokol güncellemeleri, tam blok yerine yalnızca farkları ileterek yayılım süresini kısaltmıştır. Madencilik havuzlarının düşük gecikmeli özel ağlar kurması ve birbirleriyle doğrudan bağlantı kurması da stale oranını azaltan bir diğer etkendir.
Ancak bu iyileşmenin sınırları vardır. Blok boyutu yayılım analizi, başlık tabanlı blok yayılımında stale oranının 1-2 megabaytlık bloklarda düşük kaldığını fakat blok boyutu 4 megabaytı aştığında bu oranın yeniden yükseldiğini gösterir. Bu da blok boyutu artışı ile stale oran arasındaki dengenin hâlâ geçerli bir teknik kısıt olduğunu ortaya koyar.
