Практические гайды
Почему ошибка в программе The DAO привела к спорному хардфорку Ethereum, как две версии истории продолжили существовать и что из этого следует о блокчейне.
9 разделов · начните с короткого ответа или выберите нужный
Летом 2016 года в смарт-контракте The DAO обнаружили и использовали ошибку, позволявшую многократно выводить средства. Участники Ethereum не сошлись во мнении, нужно ли менять правила сети ради возврата этих денег. 20 июля 2016 года часть сообщества перешла на новую версию протокола с исключительным изменением состояния, другая часть продолжила старую цепочку.
Летом 2016 года в смарт-контракте The DAO обнаружили и использовали ошибку, позволявшую многократно выводить средства. Участники Ethereum не сошлись во мнении, нужно ли менять правила сети ради возврата этих денег. 20 июля 2016 года часть сообщества перешла на новую версию протокола с исключительным изменением состояния, другая часть продолжила старую цепочку.
В результате сформировались две отдельные сети: Ethereum (ETH) и Ethereum Classic (ETC). Это история не о смене логотипа и не о «двойном списании» в одном блокчейне. Речь о том, что разные группы участников стали признавать разную историю и разные правила.
Смарт-контракт — программа, которая выполняется в сети по заданным правилам. The DAO был ранним проектом коллективного управления средствами через смарт-контракты Ethereum. Участники могли вносить ETH и получать связанные с проектом токены для участия в его механизмах.
Слово DAO сейчас употребляют для многих форм организации. Но The DAO с заглавным The — конкретный проект 2016 года. Его авария не означает, что любой DAO устроен таким же образом.
17 июня 2016 года разработчики Ethereum Foundation опубликовали предупреждение: средства The DAO выводились в так называемый child DAO через уязвимость повторного вызова функции (reentrancy).
Объяснение на простом примере. Представим программу, которая перед отправкой денег должна уменьшить записанный остаток пользователя. Вместо этого она сначала отправляет деньги во внешний контракт, а остаток обновляет позже. Внешний контракт получает возможность снова вызвать вывод, пока старый остаток ещё виден, и повторять действие.
Это упрощённая модель, а не инструкция по взлому. Для The DAO ошибку описывали именно как повторный вызов функции разделения. Проблема была в программном коде The DAO, а не в подделанной цифровой подписи или сломанном шифровании основного Ethereum.
Оригинальное предупреждение разработчиков от 17 июня сохранилось.
В обычном банке есть организация, которая в рамках своих полномочий может заблокировать операцию или изменить запись в собственной системе. В публичном блокчейне отдельный разработчик не обладает такой властью над всеми компьютерами сети.
Для изменения правил необходимо выпустить новое программное обеспечение и добиться, чтобы его приняли реальные операторы узлов. И даже тогда часть людей может отказаться. Правила общие лишь пока участники выбирают совместимую версию.
После атаки разработчики обсуждали несколько вариантов. 15 июля Ethereum Foundation публично описала предложение об исключительном изменении состояния на определённом блоке. Это и было предметом тяжёлого спора: ради защиты пострадавших стоит ли менять ожидаемое поведение цепочки?
На высоте 1 920 000 Ethereum выполнил хардфорк: обновлённые узлы приняли правила со специальным переводом средств из связанных с The DAO контрактов в контракт возврата. Это не было «удалением всех прежних блоков»; менялось состояние, которое должны были считать допустимым новые клиенты.
Часть участников не приняла такой шаг и продолжила работать по прежним правилам. Эта сеть известна как Ethereum Classic (ETC). Сеть, выбравшая изменение, сохранила название Ethereum (ETH).
Поэтому фраза «Ethereum откатил весь блокчейн назад» неверна. Важна точная механика изменения состояния и факт существования двух несовместимых продолжений.
Зависит от критерия, и его следует назвать.
Обе позиции имеют последствия. Возврат средств может защищать пользователей в чрезвычайном случае. Но одностороннее представление о «правильной истории» тоже стало бы ложным: сеть существует потому, что люди добровольно поддерживают её правила.
«Код — закон» — не технический закон природы. Код исполняется, но люди пишут программы, выбирают обновления, обсуждают спорные решения и могут разделиться на разные сети.
При этом The DAO показывает другую, более простую вещь: смарт-контракт может выполняться точно так, как написан, и всё равно приводить к нежелательному результату. Надёжность базового блокчейна не гарантирует отсутствие ошибок в приложениях.
Подробнее о том, как меняют правила блокчейна, и в историческом событии 20 июля.
Кризис The DAO не остановил разработку приложений. В 2017 году CryptoKitties превратила смарт-контракты в пользовательскую игру, а первые DeFi-протоколы стали использовать такие программы для залогов и обменов. Ошибки кода при этом не исчезли.
Сверено 18 октября 2026 года:
Понятия
Словарь — короткие объяснения понятий, встречающихся в материале.
История
История криптовалют — события и перемены по датам.
Обучение
Уроки с нуля — разберитесь в основных понятиях по порядку.
Другие темы
Все объяснения — статьи и разборы.
Выберите интересную тему и продолжайте разбираться.
Летом 2016 года в смарт-контракте The DAO обнаружили и использовали ошибку, позволявшую многократно выводить средства. Участники Ethereum не сошлись во мнении, нужно ли менять правила сети ради возврата этих денег. 20 июля 2016 года часть сообщества перешла на новую версию протокола с исключительным изменением состояния, другая часть продолжила старую цепочку.
Смарт-контракт — программа, которая выполняется в сети по заданным правилам. The DAO был ранним проектом коллективного управления средствами через смарт-контракты Ethereum. Участники могли вносить ETH и получать связанные с проектом токены для участия в его механизмах.
17 июня 2016 года разработчики Ethereum Foundation опубликовали предупреждение: средства The DAO выводились в так называемый child DAO через уязвимость повторного вызова функции (reentrancy).
В обычном банке есть организация, которая в рамках своих полномочий может заблокировать операцию или изменить запись в собственной системе. В публичном блокчейне отдельный разработчик не обладает такой властью над всеми компьютерами сети.
На высоте 1 920 000 Ethereum выполнил хардфорк: обновлённые узлы приняли правила со специальным переводом средств из связанных с The DAO контрактов в контракт возврата. Это не было «удалением всех прежних блоков»; менялось состояние, которое должны были считать допустимым новые клиенты.
Зависит от критерия, и его следует назвать.
Показано 6 из 17. Все ссылки и источники — в раскрываемом списке ниже.
Хотите разобраться с нуля?
Пройдите бесплатный курс «Входим в криптомир» →