
Aynı hata, iki farklı sonuç: Telestai, Ravencoin ve bir çatallanmanın devraldıkları
Dün Ravencoin'in uzlaşma hatasını yazmıştık: blok başlığındaki doğrulanmamış bir nHeight alanı saldırganların iş kanıtını taklit etmesine izin veriyordu ve bunu geri almak üç gün derinliğinde bir zincir yeniden düzenlemesi gerektirdi.
O hikâyenin bir ikinci yarısı var ve daha faydalı olanı o. Başka bir zincir tam olarak aynı yerde tam olarak aynı hatayı taşıyordu. O hata hiç istismar edilmedi.
Bu iki sonuç arasındaki farkı anlamaya değer, çünkü fark koddan gelmiyor.
Telestai kusuru devraldı, çünkü çatallanmalar bunu yapar
Telestai bir Ravencoin çatallanmasıdır. Kod tabanı, Meowcoin üzerinden Ravencoin'inkinden gelir — Telestai Core 3.0.1'in sürüm notları temizlikler arasında hâlâ bir "Meowcoin kaynak temizliği" sayıyor; bu da o soy zincirinin kaynak ağacında daha ne kadar yakın zamana dek görünür olduğunu anlatıyor.
Ravencoin'in başlık doğrulaması, bildirilen nHeight değerini bloğun zincirdeki gerçek konumuyla karşılaştırmıyordu. Meowcoin'inki de. Telestai'ninki de. Hatayı Telestai'ye kimse sokmadı; her şeyle birlikte geldi — bir çatallanmanın, kimsenin bakmadığı kod parçalarını bakılanlarla birlikte devralması biçiminde.
Tek bir kusurun birkaç zincirin sorunu hâline gelmesinin gösterişsiz mekaniği budur. Çatallanmalar, bağımsızlığa doğru savrulan kopyalar değildir. Ebeveynin bütün varsayım geçmişini taşıyan kopyalardır — bu örnekte, o alanı zaten birinin doğruladığı varsayımı dahil.
Telestai iki günlük haberle ne yaptı
Ravencoin'in istismarı 11 Ağustos 2026'da kamuya açıklandı. Telestai Core 2.1.8, 13 Ağustos'ta, açık açık "Security: KAWPOW nHeight bind" başlığıyla yayımlandı.
Sürüm notları lafı dolandırmıyor:
Bu sürüm, başlıktaki
nHeightalanının (ethash dönemini seçen alan) zincire bağlanmamış olmasından kaynaklanan bir KAWPOW uzlaşma/DoS sorununu düzeltir. Aynı sınıf hata Ravencoin ana ağında istismar edildi. Eski sürümleri çalıştıran Telestai düğümleri yükseltene kadar açıkta kalır.
Düzeltmenin kendisi katmanlı ve asıl ilginç olan bu katmanlanma:
- Mutlak bir dönem sınırı hemen uygulanıyor, herhangi bir iş kanıtı özeti hesaplanmadan önce.
- Katı
height == prev + 1bağı 1.100.000 numaralı blokta etkinleşiyor — yumuşak çatallanma tarzında, tarihi yeniden yazmadan. - İş kanıtı yalnızca ebeveyn blok bulunduktan ve yükseklik doğrulandıktan sonra hesaplanıyor; bu da bir düğümün, daha baştan reddetmesi gereken bir başlık üzerinde pahalı işe zorlanabildiği bellek tüketimi yolunu kapatıyor.
- Aynı denetimler
ConnectBlockveVerifyDBüzerinde de geçerli; böylece veri tabanını yeniden dizinleyen bir düğüm, yeni kuralların yasakladığını sessizce yeniden kabul edemiyor.
2.1.8 yayımlandığında ana ağ 1.057.000 yüksekliği civarındaydı. Uygulama 1.100.000'e ayarlandı. Yaklaşık 43.000 bloktan oluşan bu aralık kasıtlıydı: borsaların, havuzların, gezginlerin ve düğüm işletmecilerinin kural devreye girmeden önce yükseltmesine yetecek kadar pist, pencereyi süresiz açık bırakmayacak kadar da az.
Telestai kaynağını da belirtti. Notlar 2miners/Ravencoin deposunun rvn-nheight-fix dalına işaret ediyor — Ravencoin olayından çıkan yamanın ta kendisi — ve daha kapsamlı başlık kabul düzeltmesini belgeleyen araştırmacılara teşekkür ediyor. Çare, hatanın geldiği yoldan gitti.
İki sonuç yan yana
İki zincir. Tek bir kod mirası. Aynı uyuyan kusur.
Ravencoin'inkini önce bir saldırgan buldu. Sonuç: kamuya açıklanana kadar dört gün sahte blok, yatırma ve çekmeyi durduran borsalar, yaklaşık %20'lik bir fiyat düşüşü ve zehirlenmiş dalı temizlemek için üç günlük bir yeniden düzenleme.
Telestai'ninkini ise birinin olay raporunu okuyarak buldular. Sonuç: iki gün sonra bir yama, boşluk payı bırakılarak belirlenmiş bir etkinleşme yüksekliği ve — kaldırılacak geçersiz bir tarih olmadığı için — hiçbir yeniden düzenleme yok. Hiçbir şey geri alınmadı, çünkü hiçbir şeyin geri alınmasına gerek yoktu.
Bütün fark bu. Daha iyi kod değil. Farklı bir hata değil. Sadece kimin önce fark ettiği ve zinciri sürdürenlerin başkasının kötü haftasına ne kadar hızlı davrandığı.
Sonra Telestai algoritmayı tümüyle değiştirdi
Güvenlik yamasından altı gün sonra Telestai, Core 3.0.0'ı yayımladı ve 1.150.000 numaralı blokta — 16 Ekim 2026 civarı — kendi iş kanıtı algoritması olan Meraki'ye çatallandı. Meraki hâlâ KAWPOW'un akrabası (ProgPoW tadında bir Ethash türevi ve madenci kawpowminer'ın bir çatallanması olarak doğdu); daha az güç tüketen ve mütevazı ekran kartlarıyla erişilebilir olarak sunuluyor.
Buradaki nedenselliğe dikkat etmekte fayda var, çünkü düz bir çizgi çizmek cazip ama çizgi düz değil. Meraki ağustostan önce zaten yoldaydı: 3.0.0 için test ağı yerleşim derlemeleri 13 ve 14 Ağustos'ta, yani güvenlik sürümüyle aynı günlerde yayımlandı ve bu, kimsenin kırk sekiz saatte kuracağı bir takvim değil. Algoritma değişikliği, tesadüfen bir olayın yanına düşmüş planlı bir işti; ona verilmiş bir tepki değil.
Sürüm listesinde bir zinciri sürdürmenin gösterişsiz yanlarına dair küçük bir ders de var. Güvenlik düzeltmesiyle çatallanma arasında Telestai, uzlaşmayla hiç ilgisi olmayan bir nedenle 2.1.9'u yayımladı: 2.1.8 daha yeni bir Berkeley DB'ye karşı derlenmişti ve onunla eski bir wallet.dat açmak, cüzdanın günlüklerini eski istemcilerin dosyayı artık okuyamayacağı biçimde yeniden yazabiliyordu. Bu yüzden Berkeley DB 4.8'e karşı yeniden derleyip tekrar yayımladılar. Ona yükselmek kullanıcılarınızın cüzdan dosyalarını riske atıyorsa, bir güvenlik sürümünün pek faydası olmaz.
Bu neden iki küçük zincirin ötesinde önemli
Bunu okuyanların çoğunda ne RVN var ne TLS. Genelleşen şey örüntü.
Çatallanmış zincirler ortak bir hata yüzeyini paylaşır ve bunu neredeyse kimse izlemez. Litecoin, Dogecoin, Bitcoin Cash, Ravencoin, Zcash ve düzinelerce başkası Bitcoin Core'dan gelir ve her biri, akış yukarısındaki düzeltmelerin kendiliğinden gelmeyi bıraktığı bir ayrılma noktası taşır. Bir zincirde açıklanan bir zafiyet, aynı kodun aşağısındaki her zincir için açık bir sorudur — ve bir çatallanma ne kadar uzaklaşmışsa, düzeltmenin geçerli olup olmadığını bilmek bile o kadar iş ister. Telestai bu soruyu iki günde yanıtladı. Her çatallanmanın bunu işi bilen biri yoktur.
"Kimse istismar etmedi", "orada yoktu" ile aynı şey değildir. Telestai'nin düğüm yazılımı var olduğu sürece savunmasızdı. Hata baştan beri gerçekti; yeni olan yalnızca dikkatti. Bir kardeşinden hiç olay raporu almayan zincirler bunu bu yoldan öğrenemez.
İstismardan önce gelen bir düzeltme neredeyse hiçbir şeye mal olmaz. Aynı düzeltme sonradan bir yeniden düzenlemeye mal olur. Telestai 2.1.8'deki ve Ravencoin'in sert çatallanmasındaki teknik iş kabaca aynı yama. Farklı olan, etrafındaki her şeydi: atılacak geçersiz bir tarih var mıydı, borsalar durmak zorunda mıydı, kullanıcıların onayları üç gün boyunca bir şey ifade ediyor muydu.
Bu, yeniden üretilebilir derlemelerin ve bağımlılık incelemesinin ardındaki akıl yürütmenin aynısı: sizi koruyan şeylerin çoğu, bir cüzdanın içinden görebileceğiniz her şeyin akış yukarısındadır ve sizin adınıza dikkat eden insanlar tarafından sürdürülür.
Bunun SSP'deki karşılığı
Pratikte: sizin için değişen bir şey yok.
SSP Ravencoin'i destekliyor ve düğümümüz kurtarılan zincirde 4.8.0 çalıştırıyor; dünkü yazıda yeniden düzenlemenin iki yanındaki blok özetlerini referans zincirle karşılaştırıp doğrulamıştık. SSP Telestai'yi desteklemiyor, dolayısıyla cüzdanınızda kaygılanacağınız bir Telestai bakiyesi yok.
Desteklemediğimiz bir zincir hakkında yazıyoruz, çünkü bu hikâye ciddiye aldığımız bir şeyi temiz biçimde örnekliyor. Düğüm altyapısı işletmek, taşıdığımız her zincir için akış yukarısındaki güvenlik çalışmasını izlemek demektir — kod tabanları ortak atalara sahip olanlar dahil. Bunun değeri işlerken tümüyle görünmezdir: yamalı bir düğüm, yamasız olanla tıpatıp aynı görünür; ta ki görünmediği güne kadar.
Telestai'nin ağustosu, bunun içeriden nasıl göründüğü: projeyi sürdüren biri başkasının istismarını okur, aynı biçimi kendi kod ağacında tanır ve yayımlar. Olay yok, yeniden düzenleme yok, dışarıdan kimsenin hatırlayacağı bir duyuru yok. Sadece yükselen bir sürüm numarası.


