Değiştirilemez Akıllı Sözleşmeler Nereye Gitti?

Değiştirilemez Akıllı Sözleşmeler Nereye Gitti?

İngilizceden çevrilmiştir

DeFi ilk ivme kazanmaya başladığında, en güçlü satış noktalarından biri değiştirilemezlikti. Savunucular, akıllı sözleşmeleri borsalar veya kumarhaneler gibi merkezileşmiş hizmetlerle karşılaştırırdı.

Anlatı basit ve etkileyiciydi.

  • Merkezileşmiş borsalar, kumarhaneler, ödeme işlemcileri ve benzeri hizmetler sahiplerine güven gerektirir. Sahip, hesabınızı dondurabilir, ücretleri değiştirebilir, kriptonuzla kaçabilir veya ilk talep edildiğinde bunu devlete teslim edebilir.
  • Buna karşılık DeFi'nin yalnızca akıllı sözleşme kodunun güvenilirliğine güvenmesi gerektiği varsayılıyordu. Bir akıllı sözleşme, blokzincirinin betonu içinde kaplanmış bir otomat olarak sunuluyordu. Kuralları önceden biliniyordu ve başlatıldıktan sonra hiç kimse — ne geliştirici, ne polis, ne de mahkeme — bunları değiştiremezdi.

Birkaç yıl geçti. Bugün, bu anlatı fiilen ölüdür; nadiren açıkça kabul edilse de. Modern DeFi protokollerinin ezici çoğunluğu (Aave, Compound, Uniswap V3, Sky Protocol, çeşitli köprüler ve L2 çözümleri) teknik açıdan yükseltilebilir durumdadır. Yöneticileri, bir akıllı sözleşmeyi arka ucu her an güncellenebilen sıradan bir web sunucusuna daha yakın hâle getiren anahtarlara sahiptir.

Bu sessiz devrim nasıl oldu? Geliştiriciler tam olarak blokzincirinin değiştirilemezliğini nasıl aşmayı öğrendi? Ve hâlâ "merkeziyetsiz finans" dediğimiz şeyde gerçekten değiştirilemez kalan bir şey var mı?

Kontrolün Anatomisi: Proxy Sözleşmeler Nasıl Çalışır

Birçok okuyucu bu noktada itiraz edebilir: 'Bir dakika. DeFi ideolojisi Ethereum içinde ortaya çıktı. Ve tartışmalı The DAO olayı'ndan sonra kimse o blokzincirinde hiçbir şeyi bir daha yazmaya cesaret edemezdi. Yani herhangi bir akıllı sözleşmenin kodu dağıtıldıktan sonra değişmez olmak zorunda.'

Bu doğru. Sadece Ethereum değil, herhangi bir blokzinciri ekleme-yalnızca bir veritabanıdır. Bir sözleşme zincire yazıldıktan sonra kimse onu silemez.

Ancak geliştiriciler sonunda endüstri standardı hâline gelen zarif bir çözüm buldular: Proxy Deseni.

Bir uygulamanın tek bir sözleşmeden değil, iki sözleşmeden oluştuğunu hayal edin.

  • Proxy dış arayüzdür. Kullanıcıların etkileşimde bulunduğu sabit bir zincir adresi vardır ve tüm tokenler ve bakiye kayıtları burada saklanır. Ancak bu sözleşme bilerek sığdır: temel finansal mantığı içermez.
  • Implementation iç mekanizmadır. Faiz nasıl hesaplanır, tokenler nasıl takas edilir, kim ne kadar çekebilir gibi formüller burada yaşar. Ancak bu sözleşme kendisi kripto para tutmaz.

Token yatırdığınızda veya çektiğinizde Proxy ile etkileşirsiniz. Proxy, delegatecall adlı düşük seviyeli bir talimat kullanarak Implementation sözleşmesini okur ve onun kodunu Proxy'nin kendi depolama bağlamında yürütür.

Proxy sözleşmesinin içinde, mevcut Implementation adresini saklayan bir değişken vardır (genellikle dahili bir _implementation fonksiyonu aracılığıyla açığa çıkarılır). Ayrıca yalnızca yöneticinin erişebildiği özel bir fonksiyon bulunur: upgradeTo(newAddress).

Proxy sözleşmesi

Herhangi bir anda Proxy yöneticisi şunları yapabilir:

  • blokzincire yeni bir Implementation sözleşmesi dağıtmak (örneğin yeni bir özellik veya hata düzeltmesi için);
  • Proxy üzerinde upgradeTo çağrısı yapıp onu yeni Implementation adresine yönlendirmek.

Bundan sonra Proxy anında yeni mantığı kullanmaya başlar.

Kullanıcının perspektifinden hiçbir şey değişmemiş gibi görünür. Sözleşme adresi aynı kalır ve kripto paraları hâlâ orada saklıdır. Ancak gerçekte sistemin kuralları tamamen değişmiş olabilir.

Eğer yönetici kötü amaçlı bir Implementation dağıtırsa (örneğin yöneticinin tüm fonları çekmesine izin veren bir kod), Proxy itaatle tüm kripto parayı teslim eder — çünkü kullanması söylenen her kodu körü körüne yürütür.

Bunu Neden Kabul Ettik?

Değiştirilemezlikten yükseltilebilirliğe kayış kötülükten doğmadı — zorunluluktan kaynaklandı.

Öncelikle, The DAO hikâyesini hatırlayalım. Onun akıllı sözleşmesindeki bir güvenlik açığı bir saldırgana büyük miktarda fon çektirdi. Bunu geri almak için Ethereum düğüm operatörleri kripto tutkunları için bir heretik hareket yaptı: saldırganın işlemini geri almak için blokzincirinin geçmişini yeniden yazdılar. Bu olay bir şeyi netleştirdi - değiştirilemez kod, değiştirilemez hatalar demektir. Bir sözleşmede bir kusur varsa, yamalanamaz. Bu durumda iki seçenek kalır: tüm ağ üzerinde merkezi kontrol (o anda Ethereum'da olduğu gibi) veya bireysel sözleşmeler üzerinde merkezi kontrol. Zamanla sektör, daha az kötü görünen çözümde karar kıldı: ekosistem düzeyinde merkeziyetsizliğin görüntüsünü korurken sözleşme düzeyinde merkezi kontrole izin vermek.

İkincisi, birçok DeFi projesi fiilen birer startup'tır. Evrimleşmeleri gerekir — yeni stratejiler eklemek, yeni tokenleri desteklemek, uç durumları düzeltmek. Proxy sözleşmeleri olmasaydı, her güncelleme kullanıcıları eski sözleşmeden fonlarını çekmeye ve yeni olandan yeniden yatırmaya zorlayacaktı. Bu hantal, maliyetli ve benimsenme açısından kötüdür.

Üçüncüsü, düzenleyiciler devreye girdi. DeFi büyük ölçüde stablecoin'lere bağımlı ve düzenleyiciler bunun adres kara listeleme ve yükseltilebilir mantık gibi özellikleri içermesi gerektiğini söylüyor. Hatta DAI'nın yayımlayıcısı olan MakerDAO — bir zamanlar merkeziyetsiz stablecoin'in poster çocuğu — baskıya boyun eğmek zorunda kaldı. Sky Protocol adı altında yeniden markalaştığında, yeni stablecoini USDS'ye yönetici kontrollü özellikler ekledi.

Peki kullanıcılar? Cüzdanlarıyla oy verdiler. Çoğu insan için soyut ideallerden (örneğin merkeziyetsizlik) çok daha önemli olan yüksek getiriler (APY) ve şık arayüzlerdir.

Merkeziyetsizlik İllüzyonu: 'Kırmızı Düğmeye' Kim Sahip?

Birçok proje yalnızca admin anahtarının tek bir kişi tarafından kontrol edilmemesi nedeniyle merkeziyetsiz olduğunu iddia eder. Peki bu gerçekten bir şeyi değiştiriyor mu?

Yükseltme anahtarı tek bir geliştiricideyse, bu açıkça en riskli senaryodur. O kişi hacklenirse veya baskı altına alınırsa (fiziksel veya yasal), kullanıcı fonları bir anda kaybolabilir. Yine de bu düzen hala yaygındır — özellikle çoğu zaman ciddiye alınmayan meme coin sözleşmelerinde.

Bazen anahtar birkaç parçaya bölünür — örneğin beş kişi (çoğunlukla kurucular ve erken yatırımcılar) her biri bir parça tutar ve değişiklik yapmak için üç imza gerekir. Ancak bu hâlâ merkezileşmedir. İşbirliği (kollüzyon) mümkündür. Devlet müdahalesi de mümkündür.

Birkaç daha güvenli seçenekten biri Timelock mekanizmasıdır. Burada bir yönetici yükseltmeyi planlayabilir, ama bu ancak 24 - 48 saat sonra yürürlüğe girer. Bu, kullanıcılara yeni kodu incelemek ve değişiklik kötü niyetli ise fonlarını çekmek için zaman verir. Ancak gerçekte, kimse akıllı sözleşmeleri 7/24 izlemez. Ve acil durumlarda (örneğin aktif bir sömürü durumda), 24 - 48 saat bir saldırganın her şeyi boşaltması için fazlasıyla yeterli olabilir.

Daha az kötü olanı DAO tabanlı yönetişimtir. Compound ve Uniswap gibi protokollerde yükseltme yetkisi token sahibi oylarına bağlı akıllı sözleşmeler tarafından ele alınır. Değişiklikler yalnızca yeterli oy lehine kullanıldığında gerçekleşir. Teoride bu gerçek merkeziyetsizliğe bir adımdır. Ancak pratikte büyük VC fonları (a16z veya Polychain gibi) o kadar çok yönetişim token'ına sahiptir ki neredeyse her kararı geçirebilirler. Ayrıca oy katılımı sıklıkla çok düşük olur, bu da süreci kontrol etmeyi kolaylaştırır.

Değişmezliğin Adaları: Hâlâ Değişmeyenler Kimler?

Hâlâ 'kod kanundur' diyen DeFi hizmetleri var mı? Evet — ama artık ekosistemde çok dar bir nişi işgal ediyorlar. Bunlar gerçekten değiştirilemez akıllı sözleşmelere nadir örneklerdir.

Uniswap V1 / V2
Bu sürümlerdeki likidite havuzları tamamen değiştirilemezdir. Ne geliştiriciler, ne yatırımcılar, ne de hükümetler fonları çekemez, formülleri değiştiremez veya kuralları değiştiremez. Akıllı sözleşmeler taşla kazınmış gibidir — yönetici anahtarı yok, yükseltme yolu yok.

Liquity USD (LUSD)
LUSD sözleşmesinin yönetici anahtarı veya yükseltme fonksiyonu yoktur. Sistem parametreleri lansmanda matematiksel olarak sert kodlanmıştır ve asla değiştirilemez. Bu, onu DeFi'deki en dirençli stablecoin'lerden biri yapar. Yaygın olarak kullanılmıyor — belki insanların likidite eksikliği olduğunu varsaymasından dolayı. Ancak bu bir yanılgıdır:

  • Protokol düzeyinde her LUSD her zaman onu destekleyen ETH ile geri alınabilir.
  • rabbit.io üzerinde, LUSD herhangi bir kripto ile sınırlama veya kısıtlama olmadan takas edilebilir.

Tornado Cash V1 / V2
Tornado Cash sözleşmelerinin erken sürümlerinde başlangıçta hata düzeltmeleri için gerekli olan yönetici anahtarları vardı. Ancak protokol kararlı olduğunu kanıtladıktan sonra kontrol feragat edildi: yönetici anahtarı 0x00...0000 adresine verildi ve sözleşmeler tamamen değiştirilemez hâle geldi.

Bu karar değiştirilemezliğin temel bir gerçeğini vurguladı: yönetişim saldırılarına karşı korur.

Uyarıcı bir örnek olarak Tornado Cash V3'ü ele alın. Bu sürüm geliştirmeler getirdi: esnek depozito boyutları (sadece 0.1, 1, 10 veya 100 ETH değil) ve Gnosis Chain üzerinden L2 tabanlı özel transfer sistemi. Böyle karmaşık bir protokol için yükseltmelere ve güvenlik yamalarına olanak sağlamak amacıyla yönetişim bir DAO'ya — özellikle TORN token sahiplerine — devredildi.

2023'te bir saldırgan görünüşte zararsız bir yönetişim güncellemesi önerdi. Koddaki gizli bir arka kapı ile birlikteydi. Kabul edildikten sonra saldırgana DAO üzerinde tam kontrol verdi. Sözleşme mantığını ele geçirdiler ve yönetişim token'larının bir kısmını çaldılar.

Böyle bir saldırı değiştirilemez sürümlerde fiilen imkansız olurdu. Yükseltme yolları yoktu. Oylar yoktu. Kırmızı düğmeler yoktu.

Ethereum Ötesi: Diğer Ekosistemler Sözleşme Yükseltmelerini Nasıl Ele Alıyor?

Proxy sözleşmeler EVM uyumlu blokzincirler genelinde fiilen standart hâline geldi. Peki EVM olmayan ekosistemler ne yapıyor?

Solana
Birçok durumda değiştirilemezlik Ethereum'dan daha zayıftır. Varsayılan olarak Solana akıllı sözleşmeleri bir Upgrade Authority kullanılarak yükseltilebilir. Geliştiriciler programı değiştirilemez yapmak için bu yetkiyi feragat edebilir, ama Solana'nın hızlı hareket eden ve yeniliği öncelikleyen kültüründe bunu yapmak nadirdir. Benzer bir durum Near Protocol'de de geçerlidir; yükseltilebilirlik normdur.

Polkadot ve Cosmos
Bu ekosistemler farklı bir yaklaşım izler: güncellemeler sözleşme içindeki yönetici fonksiyonları yoluyla değil, doğrulayıcı (validator) düzeyindeki yönetişim aracılığıyla yapılır. Bu ağlarda bir akıllı sözleşmeye fon yatırdığınızda, sözleşme yöneticisine değil, tüm zincirin doğrulayıcılarının dürüst davranacağına güvenirsiniz.

Cardano
Cardano birkaç tür akıllı sözleşmeyi destekler, ancak birincil olanı Plutus script'leridir ve bunlar katı bir değiştirilemezlik modeli etrafında inşa edilmiştir.

  • Bir Plutus script belirli bir UTXO'ya bağlıdır ve kodu adresin kendisine hashlenir.
  • Dağıtıldıktan sonra kod değiştirilemez — kesinlikle.
  • Geliştiriciler bir hatayı düzeltmeleri veya iş mantığını değiştirmeleri gerektiğinde, farklı bir hash ile yeni bir script dağıtmak ve fonları manuel olarak taşımak zorundadır.
  • Bu mimari nedeniyle proxy desenleri imkansızdır.

Teknik olarak Cardano ayrıca zincir dışı mantık sözleşmelerini destekler; bunlar yönetici kontrolü ile yükseltilebilir sistemler kurmak için kullanılabilir. Ancak pratikte, bu tür tasarımlar EVM zincirlerindeki kadar yaygın değildir.

Bitcoin Ekosistemi
Evet, Bitcoin'in de akıllı sözleşme protokolleri var.

  • RGB
    Burada hem akıllı sözleşme hem de token durumu zincir üzerinde değil, kullanıcıların cihazlarında yerel olarak saklanır. Yükseltilebilen merkezi bir sözleşme yoktur. Bir token ihraççısı yeni kurallar yayınlarsa, kullanıcıların güncellemeyi tercih etmesi gerekir — tıpkı cihazınızdaki bir uygulamayı güncellemek gibi. Tüm kullanıcılar üzerinde tek taraflı değişiklik zorla yapılamaz.
  • Stacks
    Stacks'teki tüm akıllı sözleşmeler dağıtıldıktan sonra değiştirilemez hâle gelir. Güncellemeler ancak modüler bir mimari aracılığıyla yapılabilir: yeni işlevsellik, orijinal sözleşme ile etkileşime giren ayrı sözleşmelerle eklenir, fakat mevcut kuralları geçersiz kılacak veya değiştirecek şekilde olamaz. Başka bir deyişle, herhangi bir güncelleme bir ektir, bir değişiklik değil. Orijinal mantık sağlam kalır ve uygulanabilir; dağıtılmış sözleşmenin hiçbir parçası geriye dönük olarak değiştirilemez.
  • Elastos ve Rootstock
    Bunlar EVM uyumlu sidechain'lerdir; yani Ethereum ile aynı yükseltme desenlerini izlerler. Geliştiriciler proxy sözleşmeleri uygulayabilir ve tıpkı herhangi bir EVM zincirinde olduğu gibi yönetici kontrolünü koruyabilirler.

Dolayısıyla, geleneksel olarak esnekliğe göre değiştirilemezliği değerleyen Bitcoin topluluğunda bile, servis operatörlerinin kullanıcıların fonlarını kabul ettikten sonra kuralları değiştirmesine izin veren akıllı sözleşme protokolleri artık vardır.

Kod yasadır

Sonuç

'Merkeziyetsiz uygulama' terimi sıklıkla sadece bir pazarlama numarasından ibaret görünüyor. Bu mutlaka kötü bir şey değil: akıllı sözleşmeleri güncelleme yeteneği, güvenlik açıkları keşfedildiğinde milyarlarca doların kurtarılmasını sağladı. Fakat kullanıcıların riskleri anlaması gerekiyor:

  • Geleneksel bir merkezileşmiş hizmette, cüzdanın anahtarlarına sahip olmadığınız için kriptonuzu kaybedebilirsiniz.
  • Modern DeFi'de ise, yöneticinin kilidi (akıllı sözleşme kurallarını) değiştirebilmesi nedeniyle kriptonuzu kaybedebilirsiniz.

Gerçek değiştirilemezlik, esnekliği güvenlik pahasına feda eden konservatif protokollerde kalıyor: Tornado Cash Classic, Liquity ve Cardano veya Bitcoin üzerinde yerel çözümler gibi. Geri kalan her şey nihayetinde bir güvendi—parlak bir 'DAO' etiketi ardına saklanan ekiplerdeki güvendi.