Обновляемые смарт-контракты — это баг [https://medium.com/consensys-diligence/upgradeability-is-a-bug-dba0203152ce]. Помните эту статью? Сейчас это в основном спорный тезис, потому что в наши дни очень немногие проекты делают неизменяемые смарт-контракты (но Curve и Yield Basis делают).
Так почему же неизменяемые смарт-контракты — это хорошо?
- Люди допускают ошибки в коде. Стив Макконнелл в своей книге «Code Complete» писал: средний показатель по индустрии разработки ПО — от 1 до 25 дефектов на 1000 строк кода, а в Microsoft после хорошего тестирования этот показатель снижается до 0,5 дефекта на 1000 строк. Средний смарт-контракт — это несколько тысяч строк = 1 баг даже после тщательного тестирования, и будем надеяться, что он не критический (критические части должны быть меньше нескольких тысяч строк). Теперь представьте, что смарт-контракты будут обновляться снова и снова и снова — и вам нужно защищать уже не 2000 строк, а 100'000 строк (смарт-контракты каждого релиза).
- Да, возможность обновления может спасти вас, если вы нашли ошибку раньше хакеров. Но если нет? Упс.
- Обновления могут ломать интеграции. Помните пулы Curve, которые используют токены Aave, а теперь они отключены? Не очень приятно.
- А что если разработчиков заменят новые разработчики? Будут ли они столь же компетентны, как предыдущие? Меньше доверия к людям = лучше!
- Возможно, сейчас это не проблема, но обновляемость действительно увеличивает поверхность регуляторных атак.
Так что неизменяемые смарт-контракты — наше всё!
#DeFi #security
Post #114
5.09K