В 2017–2018 годах, когда аббревиатура DeFi (Decentralized Finance) только входила в обиход, маркетинг новой индустрии строился на жёсткой оппозиции существовавшим финансовым сервисам.
Нарратив был простым и убедительным.
Прошло несколько лет. Сегодня этот нарратив мёртв, хотя об этом не принято говорить громко. Подавляющее большинство современных DeFi-протоколов (Aave, Compound, Uniswap V3, Sky Protocol, различные мосты и L2-решения) технически являются изменяемыми. У их администраторов есть ключи, которые превращают смарт-контракт в аналог обычного веб-сервера, где админ может обновить бэкэнд в любой момент.
Почему произошла эта тихая революция, как именно разработчики обходят неизменность блокчейна и осталось ли в так называемых “децентрализованных финансах” хоть что-то по-настоящему неизменяемое?
Многие сейчас зададутся вопросом: “Подождите, но ведь идеология DeFi зародилась в недрах Ethereum. А в этом блокчейне после неоднозначной истории с The DAO никто больше не рискнёт перезаписать что-то. Значит, код любого смарт-контракта останется неизменным после загрузки (деплоя)!”.
Это правда. Не только Ethereum, но и любой другой блокчейн - это база данных, работающая только на добавление (append-only). Никто не сотрёт записанный в блокчейне контракт. Но разработчики нашли изящный обход, ставший индустриальным стандартом: Proxy Pattern.
Представьте себе, что приложение состоит не из одного контракта, а из двух:
Когда вы вносите или выводите токены, вы обращаетесь к Прокси. Прокси использует низкоуровневую команду delegatecall, чтобы прочитать контракт Реализации и выполнить его код в контексте своего хранилища.
В контракте Прокси есть функция _implementation, которая сообщает адрес текущей Реализации. И есть специальная функция, доступная только администратору: upgradeTo(newAddress).

Администратор контракта Прокси может в любой момент:
upgradeTo в Прокси и указать адрес нового контракта Реализации.После этих действий Прокси мгновенно начнёт использовать новую логику. Для пользователя адрес контракта не изменился, его криптовалюта лежит там же. По факту же правила игры могли измениться полностью. Если админ загрузил вредоносную Реализацию (например, разрешающую админу вывод всех средств), Прокси послушно отдаст всю криптовалюту, так как он слепо выполняет код, на который ему указывают.
Переход от неизменяемости к управляемости произошёл не по злому умыслу, а под давлением обстоятельств.
Во-первых, давайте ещё раз вспомним The DAO, уязвимость в контракте которого позволила хакеру вывести оттуда огромную сумму и заставила владельцев узлов Ethereum совершить кощунственный для криптоэнтузиастов поступок: переписать блокчейн для отмены транзакции. Эта драма показала: неизменяемый код означает неизменяемые ошибки. Если в контракте есть дыра, её нельзя заделать. Остаются лишь два выхода: централизованное управление всей сетью (как тогда и случилось с Ethereum) или централизованное управление смарт-контрактами. Постепенно индустрия склонилась к тому, что кажется меньшим из зол: к централизации каждого контракта в отдельности при сохранении хотя бы видимости децентрализации всей экосистемы в целом.
Во-вторых, многие проекты DeFi - это стартапы. Им нужно развиваться, добавлять новые стратегии и токены. Без прокси-контрактов каждое обновление требовало бы от пользователей выводить криптовалюту из старого контракта и вносить в новый. Это неудобно и дорого.
В-третьих, в дело вмешались регуляторы. DeFi очень сильно зависит от стейблкоинов, а финансовые регуляторы утверждают, что стейблкоины обязаны иметь функции блокировки адресов (blacklist) и обновления логики, чтобы соответствовать регуляторным требованиям. Даже MakerDAO - эмитент известного децентрализованного стейблкоина DAI - был вынужден при ребрендинге в Sky Protocol добавить эти функции к своему новому стейблкоину USDS.
А пользователи проголосовали долларом: им важнее высокий доход (APY) и удобный интерфейс, чем абстрактная децентрализация.
Разработчики многих проектов утверждают, что их сервисы децентрализованы, потому что административный ключ находится не у одного человека. Но что это меняет?
Существуют ли ещё сервисы, где код - это закон? Да, это золотой стандарт DeFi, который сейчас занимает очень узкую нишу.
Uniswap V1 / V2. Здесь пулы ликвидности неизменяемы. Ни разработчики, ни инвесторы, ни государства технически не могут забрать ликвидность из смарт-контракта, изменить формулы или правила возврата средств.
Liquity USD. У смарт-контракта LUSD нет админских ключей и нет функции обновления. Параметры системы заданы математически раз и навсегда при запуске. Это делает его одним из самых устойчивых стейблкоинов. Им мало пользуются: наверное, потенциальные пользователи опасаются, что он недостаточно ликвиден. Но это не так. Во-первых, на уровне протокола все токены LUSD можно обменять на ETH, которым они обеспечены. Во-вторых, на rabbit.io можно обменять LUSD на любую криптовалюту без каких-либо лимитов и ограничений.
Tornado Cash V1 / V2. У смарт-контрактов первых версий протокола есть административные ключи. Они были необходимы для доработки протокола и исправления ошибок в “боевых” условиях. Но когда разработчики пришли к выводу, что протокол работает стабильно, право управления было передано адресу 0x00...0000 - иными словами, сожжено.
Кстати, с Tornado Cash связан яркий пример того, почему управляемость - это зло для таких проектов. Версия V3 позволяла вносить произвольные суммы и использовать переводы внутри скрытого пула (L2-решение на базе Gnosis Chain). Это было удобнее для пользователей. Но развитие такой сложной системы требовало сохранения возможности вносить изменения и исправлять ошибки. Контроль был передан DAO - держателям токенов TORN.
В 2023 году злоумышленник предложил DAO проголосовать за безобидное на вид обновление. В его коде скрывался троян, который после принятия позволил хакеру захватить полный контроль над управлением. Он получил возможность менять логику контракта и украл часть токенов управления. В классических версиях такая атака была бы невозможна физически, так как там нет механизма голосования и обновлений.
Прокси-контракты стали фактическим стандартом для EVM-сетей. А как обстоят дела в других экосистемах?
В Solana ситуация с неизменяемостью зачастую хуже, чем в Ethereum. Архитектура по умолчанию позволяет обновлять смарт-контракты через Upgrade Authority. Разработчик может “отказаться” от этих полномочий и сделать программу неизменяемой, но в культуре Solana, нацеленной на быстрые изменения, это не принято. Аналогичная ситуация - в Near Protocol.
В Polkadot и Cosmos обновления функциональности протоколов часто происходят через голосования на уровне валидаторов цепочки, а не через админ-функции внутри контрактов. То есть при внесении средств в смарт-контракт в таких сетях вы доверяете контроль над средствами не администратору контракта, а валидаторам блокчейна.
В Cardano есть несколько типов смарт-контрактов. Основной и наиболее используемый - Plutus-скрипты. Plutus-скрипт привязывается к конкретному UTXO. Его код хэшируется и становится частью адреса. После деплоя код нельзя изменить в принципе. Если нужно исправить ошибку, поменять экономику или добавить функцию, то единственный вариант - задеплоить новый скрипт с другим хэшем и перенести средства вручную. Прокси-паттерн невозможен архитектурно. Правда, есть и другие типы контрактов (с оффчейн-логикой), и существует техническая возможность превратить их в инструменты управляемого хранения средств пользователей. Но на практике такая схема не стала популярной в Cardano, в отличие от EVM-сетей.
В экосистеме Биткоина тоже существуют смарт-контракты.
Таким образом, даже в биткоин-сообществе разработаны протоколы смарт-контрактов, позволяющие владельцам сервисов изменять правила после получения средств от пользователей.

Похоже, термин “децентрализованное приложение” во многих случаях является маркетинговой уловкой. Это не обязательно плохо: возможность обновления спасла миллиарды долларов при обнаружении уязвимостей. Но пользователь должен понимать риски:
Настоящая неизменяемость осталась уделом консервативных протоколов вроде Uniswap V2, Liquity и нативных решений в рамках Cardano и поверх Биткоина, которые жертвуют гибкостью ради безопасности. Всё остальное - это вопрос доверия к командам, прикрывающимся красивым термином "DAO".