Коротко; DR: Існуюча парадигма модернізації програм Solana — це катастрофа. Найнебезпечніше у написанні коду смарт-контрактів полягає в тому, що моделі даних програм фактично заблоковані після розгортання. У традиційному SWE клієнтський API відокремлений від бекенду. Ви можете непомітно змінити бекенд-схему або додати міграції до бази даних. У програмуванні Solana ви можете спробувати підготувати контракт до майбутнього, шляхом: - Додавання заповнення структур і надія на достатню кількість порожніх бітів у даних облікового запису для майбутніх змін - Вимога від користувачів вручну підписувати документи для міграції стану додатку (жахливий UX) - Реалізація адміністративних дій на рівні додатків для міграції схем Зверніть увагу, що все вищезазначене має потенціал порушити композиційність на рівні VM. Вони також потребують складної та схильної до помилок логіки для безпечного виконання. Вона не лише вводить логічний ризик даних, а й ключовий управлінський ризик. Один із аргументів — ніколи не змінювати код після розгортання. Адже існуючий фреймворк робить надзвичайно складним безпечне модифікування існуючих форматів даних. Однак, навіть якщо незмінність бажана, наївно і безрозсудно думати, що немає катастрофічних багів для виправлення або критичних функцій для додавання в майбутньому (деякі з яких можуть вимагати заміни дроту). Бізнеси, що будують на цьому стеку, змушені обирати між безпекою, швидкістю та якістю. Сьогодні інструменти для підтримки та безперервної розробки достатньо складного смарт-контракту відсутні. Ось деякі функції, про які я б подумав, якби будував це середовище з перших принципів: - У віртуальній машині мають бути окремі API для читання та запису даних облікового запису. Це дозволяє змінювати схему без порушення формату дроту як для споживачів на ланцюгу, так і поза мережею. - Деякі адміністративні функції смарт-контрактів (за участю) мають існувати на рівні системи, а не на рівні додатка. - При оновленні виконуваного файлу одночасно має відбутися опціональна атомарна міграція облікових записів, що належать цій програмі. Навіть якщо мета — незмінність, впровадження системних інструментів для безпечного оновлення програмного забезпечення є критично важливим для споживчих додатків із змінним станом. Поточна система настільки крихка, що найкраща порада для розробників — ніколи не чіпати схеми на ланцюзі, якщо вони дійсно не знають, що роблять.