Teknik İyileştirme — 4-5 Ekim 2025 Massa Olayları

Yönetici Özeti
4 Ekim'de Massa'da kendini kısa sürede toparlayan bir ağ bozulması yaşandı; 5 Ekim'de aynı desen ağır çatallaşma nedeniyle tüm ağa yayılan bir kesintiye dönüştü. Kök neden, nadir görülen döngü yoğun bir desen altında çalışan otonom akıllı sözleşmeler ile Execution, Transaction Pool ve Block Factory modüllerinin operasyonel olarak birbirine sıkı bağlı olmasının etkileşimiydi. Tek bir slot zaman zaman 60 saniyeye kadar uzadı (hedef ≤300 ms), bu da durum erişimini kilitledi, havuzu durdurdu ve düğümlerin eski ana bloklarla blok üretmesine yol açarak yaygın çatallanmalar yarattı. Belirli host çağrıları için gaz maliyetlerini artırmak ve kilit/çekişmelerini azaltmak dahil performans düzeltmelerini dağıttık, ağı geri kazandık ve bu tür geri basınç zincirlerini önlemek için modüller arası ayrışmayı sertleştirecek 4.1 sürümünü tamamlıyoruz.
Etki ve Tespit
Cumartesi günü düğümlerin yaklaşık %40'ı düştü, CPU kullanımı fırladı, slot yürütme belirgin şekilde yavaşladı ve ağ yeniden başlatmalar sonrasında geçici olarak toparlandı. Metrix'lerde saniyedeki final slot sayısında keskin düşüş, "miss" (boş slot) grafiğinde yükseliş ve otonom sözleşmelerin kullandığı asenkron mesaj havuzu ile net bir korelasyon görüldü. Pazar günü aynı desen bu kez kalıcılaştı: düğümler ardışık olarak çakışan bloklar üretti, konsensüs rekabet eden kliklerin yükü altında boğuldu ve ağ elle müdahale edilene kadar devre dışı kaldı. Merkezi borsalar ve köprü etkilenmekle birlikte ağ yeniden kurulduğunda kontrollü biçimde tekrar çevrimiçi oldular.
Teknik Olarak Ne Yaşandı
Yaklaşık 50 GB log ve hedefli depo incelemeleri, zincir üstü arbitraj stratejisine benzer otonom akıllı sözleşmelerin bu olayı tetiklediğini gösterdi. Belirli, derin döngülü bir desen altında host ("ABI") çağrıları ile slot yürütme süresi yaklaşık 60 saniyeye şişti. Execution bu slotlar boyunca durum üzerinde uzun süreli bir yazma kilidi tuttu. Ücret denklik kontrolü için Execution'dan durum okuyan Transaction Pool kilit nedeniyle beklemek zorunda kaldı. Block Factory ise ebeveyn blokları seçip havuzun operasyon döndürmesini beklerken bu kilitlenmeye takıldı; yanıt geldiğinde seçtiği ebeveyn yaklaşık 60 saniyelik gecikmeyle güncelliğini yitirmişti. Bloklar içerik bakımından geçerli olsa da ebeveynleri bayat olduğundan zinciri geriye doğru çatallandırdılar. Benzer kilit gecikmesini yaşayan çok sayıda düğüm aynı anda bu tür bloklar yayınlayınca çatallar büyüdü ve konsensüs birleşemez hale geldi. Massa konsensüsü önemli gecikmelere toleranslı olsa da, çoklu iş parçacığında dakikaya varan senkron gecikme bu tolerans zarfını aştı.
Bir Slot Neden 60 Saniye Sürebildi?
Başlangıçtaki gaz kalibrasyonu, referans bir makinede rastgele sözleşme üreticileri ve emniyet paylarıyla yapılmıştı; ancak belirli host çağrılarının yer aldığı aşırı döngüsel, adversaryal desenleri yeterince kapsamıyordu. Bu desende üç mekanizma olumsuz biçimde etkileşti:
- Paylaşılan kaynaklardaki atomik kilitler, çok sayıda döngü iterasyonu boyunca CPU önbellek davranışını bozdu ve çekirdekler arası çekişmeyi artırdı.
- Rust HashMap korumaları (süreç başına rastgele tuzlama), yoğun ve tekrarlı erişim altında RNG'yi tüketip beklemelere neden olarak karma hesaplama maliyetlerini büyüttü.
- Deterministik yürütme için Wasmer/Cranelift gaz ölçümü prob ekliyor; host çağrıları WASM sınırını sık ve sıkı döngülerde geçtiğinde ölçüm yükü birleşerek bu dar senaryoda yaklaşık 200 kata varan yavaşlamalar üretti.
Tek tek bu mekanizmalar sağlıklı olsa da, yalnızca bu döngü ağırlıklı biçimde bir araya geldiklerinde patolojik gecikme doğurdu.
Uygulanan İyileştirmeler
Execution motorunu atomik kilitlerin çoğunu kaldırarak veya hafifleterek, sıcak patikalarda hassas HashMap erişim desenlerini elimine ederek ve gaz erişim rutinlerini optimize ederek iyileştirdik. Belirli host ABI çağrıları için gaz maliyetlerini yaklaşık 5 kat yükselttik; bu çağrıları kullanan geliştiricilerin slot süresi hedeflerini korumak için gaz bütçelerini yeniden değerlendirmesi gerekiyor. Ayrıca olağandışı uzun slot yürütmelerini gözlemlemek için hedefli gözlemlenebilirlik sinyalleri ekledik. Bu değişiklikler dağıtıldı; düğümler, borsalar ve köprü yeniden başlatıldı ve ağ şu an stabil.
Yapısal Sertleştirme (4.1 ile Geliyor)
4.1 sürümüyle Execution, Havuz ve Block Factory arasındaki geri basınç zincirini ortadan kaldıracak, geriye dönük uyumlu bir ayrıştırma yükseltmesini tamamlıyoruz. Havuz, Block Factory'nin anında başvurabileceği hazır-okunur bir anlık görüntü (çift tamponlama) tutacak; canlı havuz durum kontrollerini tamamladığında anlık görüntüyü atomik olarak değiş tokuş edecek. Block Factory, havuzdan yanıt beklerken bir saniyeyi aşmayacak; yanıt gelmese bile taze ebeveynler üzerinde daha az işlemle veya boş blokla üretim yapacak, böylece bayat ebeveynlerle yayın riskini ortadan kaldıracak. Güvenli zamanlama eşiklerini aşan üretimlerde uyarılar tetiklenecek ve aşırı durumlarda üretimi erteleme seçeneği yapılandırılabilir olacak. Bu çalışma kapsamlı inceleme ve testlerden geçiyor, 4.1 ile yayımlanacak.
Neler İyi Gitti ve Nereleri İyileştireceğiz
Zengin telemetri ile disiplinli anlık görüntü/log toplama, karmaşık bir entegrasyon hatasını kesin biçimde teşhis etmemizi sağladı. Kurtarma adımları, ağı ve ekosistem servislerini kontrollü biçimde yeniden çevrimiçi getirdi. İleriye dönük olarak, derin döngülü host çağrısı desenlerini kapsayacak stres ve adversaryal testleri genişletiyor, modül izolasyonunu güçlendirerek alt sistemler arası kilit zincirlerini engelliyor ve slot gecikmeleri ile modüller arası zaman aşımı uyarılarını rafine ediyoruz.
Mevcut Durum ve Sonraki Adımlar
Ağ, uygulanan düzeltmelerle normal şekilde çalışıyor. Yapısal ayrıştırma ve ek güvenlik önlemleri için 4.1 sürümü çıktığında güncel kalmanızı ve yükseltmeye hazırlanmanızı öneririz. Geliştiriciler host çağrılarını gözden geçirip gaz bütçelerini yeniden değerlendirmeli. 4.1 ve sonraki geliştirmelerle ilgili zaman çizelgelerini paylaşmaya devam edeceğiz; yoğun destekleri için topluluğa teşekkür ederiz.



