22 Eylül akşamı bir kullanıcı ATOM transferi gönderdi.
Bir gece geçti ve işlem hâlâ "doğrulanmayı bekliyordu".
Özel anahtar kaybolmadı ve cüzdanda imza istisnası yoktu. Ertesi gün tekrar kontrol edildiğinde, birden fazla halka açık RPC, Cosmos Hub'ın 33.086.740 blok yüksekliğinde durduğunu gösterdi.
Yeni bir blok oluşturulmazsa doğal olarak bu işlemi paketleyecek yer kalmayacaktır.
Cosmos Hub yaklaşık bir gün sonra blok üretimine yeniden başlayana kadar, bekleyen ATOM aktarımı nihayet başarılı oldu.
Sıradan kullanıcılar için bu, blockchain konsensüsünü anlama konusunda en sezgisel ders olabilir.
"Hiçbir merkezi kuruluşun halka açık bir zinciri kapatamayacağını" söylemeye alışkınız ama gerçek elbette çok daha karmaşık. Yeterince merkezi olmayan bir blok zincirinin sunucu odasında genellikle "kapatma düğmesi" bulunmaz, ancak yine de durabilir.
Cosmos Hub'ın bu sefer askıya alınması, genellikle alt kısımda gizlenen bu mekanizmayı sıradan kullanıcıların kullanımına tamamen açık hale getirdi.
1. Cosmos neden aniden "blok üretmeyi bıraktı"?
Öncelikle kolayca kafa karıştıran bir konuyu açıklığa kavuşturmamız gerekiyor. Bu sefer doğrudan saldırıya uğrayan Cosmos Hub değildi.
Olay ilk olarak Neutron'da meydana geldi.
22 Eylül'de "AIATO: AI Agent Takeover" adlı bir Neutron yönetişim teklifi kabul edildi. Saldırgan, zincir düzeyinde yönetim izinlerindeki boşluklardan yararlandı ve wasmd çerçevesi tarafından yerel olarak sağlanan ayrıcalıklı talimatları kullanarak Astroport ve Drop gibi uygulamaların sözleşme yöneticilerini saldırgan tarafından kontrol edilen adreslerle değiştirdi.
Bu genellikle anladığımız türden bir "kod güvenlik açığı" veya "protokol hatası" değildir.
Basitçe uygulamanın kendisinin kendi "kapı kilidine" sahip olduğu anlaşılabilir, ancak Neutron'un zincir düzeyindeki yönetişimi aynı zamanda daha yüksek yetkiye sahip bir "ana anahtara" da sahiptir. Saldırganın yönetişim sonuçlarını kontrol etmesi, bu anahtarı almaya eşdeğerdir ve yöneticiyi yeniden atayabilir, sözleşmeyi taşıyabilir ve varlıkları daha fazla aktarabilir.
Cosmos Hub'ı gerçekten işin içine sokan şey, daha sonra gerçekleşen zincirler arası fon transferi oldu.
Cosmos Labs incelemesi, Neutron'un çalışmasını durdurmadan önce saldırganın bazı varlıkları birden fazla ağa aktardığını gösteriyor. Yaklaşık 1,7 milyon ATOM, Cosmos Hub'a devredildi ve zincirler arası likidite yoluyla takas edilmeye başlandı.
Başka bir deyişle, Cosmos Hub'ın kendisi doğrudan saldırıya uğramadı ve Neutron'un güvenlik açığı nedeniyle sıradan Hub kullanıcı fonları doğrudan çalınmadı.
Ancak saldırıdan elde edilen ATOM zaten Hub'a girmiştir. Kalan ATOM'un dışarı akmasını önlemek için bazı Cosmos Hub doğrulayıcıları düğüm işlemini durdurmaya başladı.
22 Eylül saat 19:18 (SGT) civarında, durdurulan doğrulayıcılar toplam oylama gücünün üçte birinden fazlasını temsil ediyordu ve bu nedenle Cosmos Hub yeni bloklar oluşturmaya devam edemedi ve sonunda 33.086.740'ta durdu.
Bu adım çok kritik.
Bu, bir şirketin doğrudan Cosmos Hub'a tıklayabileceği bir "Duraklat" düğmesinin olmadığı veya önce zincir üzerinde bir yönetim oylamasından geçmeyeceği anlamına gelir. Ağı gerçekten durduran şey, yeterli doğrulayıcının artık bir fikir birliği oluşturmaya katılmamasıdır.
Ancak daha dikkat çekici olan aslında daha sonraki iyileşme sürecidir.
Zincirin askıya alınmasından yaklaşık 4 saat sonra, doğrulayıcı eksiksiz bir kurtarma planı aldı: zincirin askıya alınmasının yüksekliği için tek seferlik bir durum değişikliği gerçekleştirin ve saldırganın adresinde kalan ATOM'u, topluluk doğrulayıcıları tarafından ortaklaşa yönetilen çoklu imzalı bir adrese aktarın.
Cosmos Labs daha sonra doğrulayıcıların ulaştığı çözüme göre Gaia v28.3.0 yamasını üretti, test etti ve doğrulayıcılara dağıttı.
Gaia'nın bu sürümü, saldırganın adresindeki 1.227.121 ATOM'u Nansen, Keplr, Enigma, Silknodes, Kiln ve Polkachu'dan oluşan 4/6 çoklu imza adresine aktararak, belirtilen kurtarma yüksekliğinde tek seferlik bir durum değişikliği gerçekleştirecek.
23 Eylül sabahı erken saatlerde, v28.3.0'ı yüklediği doğrulanan doğrulayıcıların sayısı toplam oy gücünün %67'sini aşmıştı. Bu nedenle o gün 12:00 UTC'de Cosmos Hub yeniden başlatmayı koordine etti. Yaklaşık 6 dakika sonra, bu tek seferlik durum değişikliği 33.086.741 blok yüksekliğinde gerçekleştirildi ve ağ normal blok üretimine geri döndü.
Sonuçta, Cosmos'un blok üretmeyi durdurmasından yeniden çalışmaya başlamasına kadar olan tüm süreç boyunca, ağın Canlılığını kaybetmesine ilk neden olan doğrulayıcılardı ve ardından oylama gücünün üçte ikisinden fazlası yeni bir durum geçiş kuralları dizisini kabul etti ve sonuçta bu kurallar dizisini geri yüklenen kanonik durum haline getirdi.
Bu noktada görünüşte basit bir soru ortaya çıkıyor: Merkezi olmayan bir halka açık zincir olduğuna göre, neden doğrulama haklarının üçte birinden fazlası onu durdurabiliyor ve ağı geri yüklemek için yeterli sayıda doğrulayıcının aynı yazılım setini kabul etmesi ve çalıştırması gerekiyor?
Cevap aslında "fikir birliği" kelimesinde yatıyor.
2. Sözde fikir birliği “asla durmaz”.
Blockchain ile ilgili en yanlış anlaşılan şeylerden biri, “merkeziyetsizliğin” “asla kesinti olmaması” ile eşitlenmesidir.
Aslında, fikir birliği mekanizmasının gerçekten çözdüğü sorun, merkezi bir muhasebecinin yokluğunda kaç düğümün işlem sırası ve defter durumu konusunda anlaşmaya varabileceğidir.
Ancak farklı halka açık zincirler bunu farklı şekillerde uyguluyor.
Bitcoin'in en klasik örneği, işin kanıtı olan PoW'dur; madenciler, bilgi işlem gücüne dayalı bloklar üretmek için rekabet eder. Kısa bir süre içinde ağda iki yasal dal göründüğünde düğüm, biriken iş yüküne göre oluşturmaya devam etmek için bunlardan birini seçer.
Dolayısıyla Bitcoin'in net bir "%67 oylamadan sonra bu blok sonsuza kadar sonuçlanacak" anı yok. Olasılıksal bir kesinliğe daha yakındır. Sonraki blokların sayısı arttıkça, önceki işlemleri yeniden düzenlemek için gereken bilgi işlem gücü maliyeti de o kadar yüksek olacaktır.
Bu nedenle herkes bir Bitcoin işleminin onaylanması için 6 blok beklemenin en iyisi olduğunu söylerdi. Sonuçta, bilgi işlem gücü ne kadar yüksek olursa olsun, düğümler tarafından yürütülen fikir birliği kurallarını kolayca atlayamaz.
Elbette bu, Bitcoin'in durumunun hiçbir koşulda "kesinlikle değiştirilemez" olduğu anlamına gelmiyor. Teorik olarak, ekosistemin tamamı yeni bir istemci kümesini ve yeni fikir birliği kurallarını kabul ederse, Hard Fork aracılığıyla geçmiş kurallara göre geçersiz olan durum değişiklikleri de geçerli hale getirilebilir.
Ancak soru şu: Böyle yeni bir kurallar dizisini kabul edecek kadar madenciyi, Tam Düğümü, ticaret platformunu, cüzdanı ve kullanıcıyı kim elde etme yeteneğine sahip?
Zorlu.
Geliştirme ekibi, Bitcoin ağının tamamı için fikir birliği kurallarına karar veremez. Madenciler ve ticaret platformları için de zor çünkü geçmesi gereken konsensüs eşiği çok yüksek. Binance'ten 7.000 BTC çalındığında, bazı kişiler CZ'nin büyük madencilerle iletişime geçmesini önerdi ancak sonuçta hiçbir şey olmadı.
Ethereum başka bir klasik örnek sunuyor.
PoS'a geçtikten sonra Ethereum artık Casper FFG ve LMD-GHOST'tan oluşan Gasper konsensüsünü kullanıyor. Basitçe anlamak gerekirse, mekanizmanın bir kısmı "şu anda hangi zincirin takip edilmesi gerektiğini" belirlemekten, diğer kısmı ise bloğun gerçek anlamda kesinliğe ulaşmasından sorumludur.
Stacked ETH'nin en az üçte ikisini temsil eden doğrulayıcılar ilgili kontrol noktasında anlaşmaya vardığında blok sonlandırılmaya doğru ilerleyebilir; tersine, eğer hisselerin üçte birinden fazlası uzun süre doğru oylamaya katılmazsa, ağ geçici olarak kesinlik elde edemeyebilir. Bununla birlikte Ethereum, sonlandırma uzun süre boyunca tamamlanamadığında çevrimdışı doğrulayıcıların etkin ağırlığını kademeli olarak azaltmak için bir hareketsizlik sızıntısı da tasarladı ve ağa nihayet kesinliği geri kazanma şansı verdi.
Bu sonucu gerçekten değiştirmek için protokol kurallarını ve istemciyi de değiştirmeniz gerekir.
Tıpkı 2016'daki DAO olayında olduğu gibi, Ethereum topluluğu nihayet Ethereum Vakfı tarafından 1.920.000 blokta düzensiz durum değişikliği adı verilen özel bir durum değişikliğini Hard Fork aracılığıyla hayata geçirdi ve ilgili ETH'yi kurtarma sözleşmesine aktardı.
Bununla birlikte, yükseltmeyi reddeden ve orijinal durumunu korumaya devam eden bazı madenciler ve topluluklar, sonunda Ethereum Classic'i (ETC) kurdu ve bu da herkesin bu kurallar dizisini kabul etmediğini gösteren iyi bilinen ETH ve ETC çatalına yol açtı.
Cosmos Hub yine farklı. Tipik bir BFT konsensusuna daha yakın olan CometBFT'yi kullanır.
Daha tipik bir BFT konsensüsü olarak anlaşılabilir; yani bir bloğun gerçekten sunulması için oylama gücünün üçte ikisinden fazlasının Taahhüdünü alması gerekir.
Avantajı Kesinliğin çok açık olmasıdır. Yeterli doğrulama haklarıyla oylama yoluyla bir blok gönderildikten sonra, PoW gibi giderek daha fazla blok beklemeye devam etmenize gerek kalmaz ve olasılıkları bir güvenlik duygusuyla değiştirirsiniz.
Ancak işin diğer tarafı da çok basit; yani oylama gücünün üçte biri veya daha fazlası artık bir Komite oluşturmak için gereken oyları sağlayamıyorsa, geri kalan onaylayıcılar ne kadar çalışırlarsa çalışsınlar üçte ikiden fazlasını alamayacaklar.
Şu anda ağ için en güvenli seçim bu sefer "blok üretimini duraklatmak"tır, dolayısıyla dağıtılmış bir sistem açısından bakıldığında Cosmos Hub'ın bu kısa süreli askıya alınması aslında gizemli değildir.
Kısacası, yeterli oylama gücüne sahip bir grup doğrulayıcı katılımı bıraktıktan sonra, konsensüs protokolü, kendi kurallarına göre, yeterli konsensüs olmadan yeni blokları onaylamaya devam etmektense kullanılabilirliği kaybetmeyi tercih eder.
Bunun arkasında aslında dağıtık sistemlerde sıradan kullanıcıların sıklıkla karıştırdığı iki kavrama karşılık geliyor:
Güvenlik: Farklı düğümler aynı anda iki çelişen son durumu doğrulayamaz;
Canlılık: Ağ ilerlemeye ve yeni işlemleri işlemeye devam edebilir mi?
BFT sistemi için, fikir birliğine katılan yeterli düğüm olmadığında, askıya alma bazen Güvenliği sürdürmenin bedelidir. Açıkça söylemek gerekirse, bu merkezi olmayan defter, geri kalan insanların kendi hesaplarını tutmasına izin vermek yerine burada durmayı tercih ediyor.
Bu perspektiften geriye baktığınızda, halka açık zincirlerin tarihinde birbirinden tamamen farklı gibi görünen pek çok kazanın aslında aynı şeyin etrafında döndüğünü göreceksiniz:
Dağıtılmış düğümler artık "doğru durum" konusunda anlaşamadığında ağ ne yapar?
3. Bitcoin'den Solana'ya, halka açık zincirlerin gerçek risk sınırı nerede?
Bu, Cosmos'un bu konuyu masaya ilk getirmesi değil.
2013 gibi erken bir tarihte Bitcoin'de çok klasik bir zincir çatal kazası yaşandı.
O sırada Bitcoin 0.8, temel veritabanını Berkeley DB'den LevelDB'ye geçirdi ve ardından çok sayıda işlem girişi içeren bir blok ortaya çıktı. Düğümün yeni sürümü bunu normal şekilde işleyebilir ancak bazı eski sürüm düğümleri, Berkeley DB kilitlerinin sayısındaki sınır nedeniyle bloğun geçersiz olduğuna karar verdi.
Böylece çok utanç verici bir tablo ortaya çıktı. Herkes Bitcoin kullanıyordu ancak eski ve yeni müşteriler "bu bloğun yasal olup olmadığı" sorusuna farklı yanıtlar vermeye başladı.
Sonuç olarak, ağ iki zincire bölündü ve yeni sürüm 0.8 tarafı bir zamanlar bilgi işlem gücünün yaklaşık %60'ına sahipti ve kendi başına hızlı bir şekilde birleşmek için normal bilgi işlem gücü rekabetine güvenemiyordu.
Sonunda, büyük madencilik havuzları eski sürüme geri dönmek üzere koordine edildi, eski kuralların yanında daha fazla bilgi işlem gücü elde edildi ve ağ yeniden birleşti. Bitcoin daha sonra BIP 50 ile olan kazayı özel olarak inceledi.
2016 yılında Ethereum'da yaşanan DAO olayı sorunu bir adım daha ileri taşıdı.
Yukarıda DAO olayında belirtildiği gibi, Ethereum topluluğu nihayet Ethereum Vakfı tarafından 1.920.000 bloğunda Hard Fork aracılığıyla açıkça düzensiz durum değişikliği olarak adlandırılan özel bir durum değişikliğini uyguladı ve ilgili ETH'yi kurtarma sözleşmesine aktardı.
Ancak herkes bu karara katılmadı. Durum değişikliğini kabul etmeyi reddeden bazı madenciler ve topluluklar orijinal kuralları korumaya devam etti ve uzun süredir devam eden Ethereum Classic (ETC) daha sonra ortaya çıktı.
Bu DAO Çatalı aynı zamanda klasik bir olaydır ve bu, herkese aşırı olaylar meydana geldiğinde kod fikir birliğinin yanı sıra sosyal fikir birliğinin de olduğunu anlatmakla eşdeğerdir. Yeterince tutarlı bir görüş oluşturulamadığı takdirde bir zincir gerçekten ikiye bölünebilir.
2021 Solana tamamen farklı bir başarısızlık yolu gösteriyor.
Aynı yılın Eylül ayında, ağa çok sayıda robot işlemi döküldü ve bu durum, doğrulama düğümü belleğinin tükenmesine ve çok sayıda düğümün çökmesine neden oldu. Sonunda tüm ağ mevcut durum hakkında fikir birliğine varamadı ve yaklaşık 17 saat boyunca yeni blokları onaylamayı bıraktı. Daha sonra doğrulayıcılar ağı geri yüklemek için birlikte çalıştı.
Bu kazaları bir araya getirdiğinizde aynı şey olmadıklarını göreceksiniz:
2013 yılında Bitcoin ile ilgili sorun, farklı müşterilerin farklı geçerlilik kuralları uygulamaya başlamasıdır;
Solana'nın 2021'deki sorunu, çok sayıda doğrulama düğümünün konsensüse normal şekilde katılmaya devam edememesi ve ağın Canlılığını kaybetmesidir;
Ethereum DAO'nun karşılaştığı şey, bir topluluğun yeni protokol kuralları aracılığıyla durumu aktif olarak değiştirmesi gerekip gerekmediği sorusuna daha yakın;
Bu sefer Cosmos Hub'ın başka bir özelliği daha var. Ağ, saldırı varlıklarının hareket etmeye devam etmesini önlemek için öncelikle doğrulayıcı koordinasyonu yoluyla Canlılığı aktif olarak kaybeder; daha sonra, doğrulama haklarının yeterince yüksek bir oranı yeni yazılımı ortaklaşa kabul eder ve durumu geri yükleyerek ağı yeniden tutarlı hale getirir;
Dolayısıyla bu olayları basitçe "Blockchain'ler kapanabilir" ve "merkeziyetsizlik sahtedir" şeklinde açıklamak yerine daha gerçek bir gerçeği kabul etmek daha doğru olacaktır:
Konsensüs mekanizması hiçbir zaman yıkılmaz bir makine değildir. Gerçekte sağladığı şey, bir anlaşmazlık meydana geldiğinde doğru zincire kimin karar vereceği gibi bir dizi merkezi olmayan kuraldır; kaç katılımcı eyalet finali yapabilir; bir arıza meydana geldiğinde ağ çalışmaya devam etmeyi veya durmayı seçer; ve aşırı durumlarda ne tür bir kolektif eylemin bir sonraki işleyiş kurallarını değiştirebileceği.
Bu aynı zamanda bu Cosmos olayının sıradan kullanıcılar tarafından "zincir durdurulmalı mı?" sorusundan daha dikkate değer bir soru bırakmasına neden oluyor.
sonunda yaz
Sıklıkla şunu söyleriz: Anahtarlarınız ya da madeni paralarınız değil.
Elbette bu cümle hala geçerli ancak varlık kontrolünü vurguluyor; özel anahtar kendi elinizde olduğu sürece cüzdanlar, ticaret platformları veya diğer üçüncü taraflar normalde sizin için bir transfer imzalayamaz.
Buradaki öncül, üzerinde bulunduğunuz blockchain'in bu imzayı istediğiniz zaman işleyebilmesi gerektiğidir.
Cosmos Hub'ın blok üretmeyi bıraktığı gün kullanıcılar hâlâ özel anahtarlarını elinde tutuyor ve varlıklar birdenbire yok olmuyor. Ancak bir işlemi doğru imzalasanız bile onu kabul edecek yeni bir blok oluşmaz.
Kurtarma süreci ayrıca, yeterli sayıda konsensüs katılımcısının yeni bir durum kuralları dizisini kabul etmesi durumunda, belirli bir hesabın zincir içi durumunun, orijinal adresin özel anahtarının imzası olmadan da değişebileceğini açıklıyor.
Bu, "Anahtarlarınız değil, madeni paralarınız değil" ifadesini geçersiz kılmaz, ancak bize özel anahtar özerkliği ile temel fikir birliği haklarının asla aynı şey olmadığını hatırlatır.
Aynı şey cüzdanlar için de geçerli.
M-cüzdan, özel anahtarın ve imza haklarının kullanıcının elinde olmasını sağlayabilir, zincir düzeyindeki anormallikleri olabildiğince hızlı bir şekilde tanımlayabilir, işlem durumunu doğru bir şekilde görüntüleyebilir, RPC ve düğüm yedekliliğini kurabilir ve ağ geri yüklendikten sonra işlemin nihai sonucunu yeniden doğrulayabilir.
Ancak cüzdan, halka açık bir zincir için mutabakatı yeniden sağlayamaz, temeldeki ağın asla kesintiye uğramayacağını garanti edemez veya zincirin kurallarının ve durumunun mutabakat düzeyinde asla değişmeyeceğini garanti edemez.
Bu nedenle olgun bir merkezi olmayan sistemin gerçekte takip etmesi gereken şey asla "hiçbir şeyin değiştirilemeyeceği" olmayabilir; tam tersine, bu kusurlu sınırlar mümkün olduğunca açık hale getirilmelidir: Uzlaşmayı kim askıya alabilir? Ne kadar ağırlığa ihtiyaç var? Hangi durumlarda acil müdahaleye izin verilir?
Gerçek merkeziyetsizlik nedeniyle sistemin hiçbir zaman kazalarla karşılaşmaması imkansızdır. Önemli olan şu ki, bir kaza meydana gelse bile, bu hesabın bir sonraki adımda nasıl kaydedilmesi gerektiğine kimin, hangi kurallara göre ve hangi düzeyde fikir birliği ile karar vereceğini hala bilebiliriz.