Özet; DR: Solana programlarını yükseltmek için mevcut paradigma tam bir felaket. Akıllı sözleşme kodu yazmanın en tehlikeli yanı, program veri modellerinin dağıtımdan sonra etkili şekilde kilitlenmiş olmasıdır. Geleneksel yazılım sisteminde, istemci API'si arka uçtan ayrılmıştır. Bir arka uç şemasını görünmez şekilde değiştirebilir veya veritabanına göçler ekleyebilirsiniz. Solana programlamasında, bir sözleşmeyi geleceğe hazırlıklı hale getirmeye çalışabilirsiniz: - Yapı dolgusu eklemek ve gelecekteki değişiklikler için hesap verilerinde yeterince boş bit olmasını ummak - Kullanıcıların uygulama durumunu taşımak için manuel imzalamalarını zorunlu kılmak (berbat UX) - Şemaları taşımak için uygulama düzeyinde yönetici işlemlerinin uygulanması Yukarıdakilerin hepsinin VM seviyesinde kompozisyon yaratma potansiyeline sahip olduğunu unutmayın. Ayrıca güvenli şekilde çalıştırılabilmek için karmaşık ve hata yapmaya açık mantık gerektirir. Sadece mantıklı veri riskini değil, aynı zamanda anahtar yönetim riskini de getirir. Bir argüman, dağıtımdan sonra kodu asla değiştirmemektir. Sonuçta, mevcut çerçeve mevcut veri formatlarını güvenli bir şekilde değiştirmeyi son derece zorlaştırıyor. Ancak, değişmezlik arzu edilse bile, gelecekte düzeltilecek felaket hatalar veya kritik özellikler (bazıları kablo değişimi gerektirebilir) yok diye düşünmek safça ve pervasızlıktır. Bu yığın üzerine inşa eden işletmeler, güvenlik, hız ve kalite arasında seçim yapmak zorundadır. Bugün, yeterince karmaşık bir akıllı sözleşmenin sürdürülebilirliğini ve sürekli geliştirilmesini sağlayacak araçlar yok. Bu ortamı ilk prensiplerden inşa ediyor olsaydım dahil etmeyi düşüneceğim bazı özellikler şunlar: - VM'de hesap verilerini okumak ve yazmak için ayrı API'ler olmalıdır. Bu, hem zincir içi hem de zincir dışı tüketiciler için kablo formatını bozmadan şema değişikliklerini mümkün kılar. - Bazı (isteğe bağlı) idari akıllı sözleşme fonksiyonları, uygulama düzeyinde değil, sistem düzeyinde bulunmalıdır. - Yürütülebilir yükseltmede, aynı anda o programa ait hesapların isteğe bağlı atomik taşınması olmalıdır. Amaç değişmezlik olsa bile, güvenli yazılım yükseltmelerini mümkün kılacak sistem düzeyinde araçlar eklemek tüketici uygulamaları için kritik öneme sahiptir. Mevcut sistem o kadar kırılgan ki, bu geliştiriciler için en iyi tavsiye, gerçekten ne yaptıklarını bilmedikleri sürece zincir içi şemalara asla dokunmamaları.