The DAO: эксперимент, который поставил код и право по разные стороны
Как уязвимость The DAO превратила технический вопрос в спор о правилах, праве и коллективном выборе Ethereum.
Представьте, что контракт в блокчейне точно исполняет написанный код, но код содержит уязвимость. Средства уходят не так, как ожидали создатели и вкладчики. Что теперь считать правильным: оставить результат исполнения или изменить состояние сети? В 2016 году история The DAO поставила этот вопрос перед Ethereum — и разделила разговор о техническом правиле, праве и коллективном решении.

Содержание
- Организация, созданная через токены
- Что обещал контракт
- Уязвимость и движение средств
- Спор о вмешательстве
- Две цепи после fork
- Код, закон и управление
Организация, созданная через токены
The DAO возникла как эксперимент: участники отправляли ether в смарт-контракт и получали DAO-токены, которые давали им возможность участвовать в голосовании о финансируемых проектах. Идея привлекала обещанием коллективного управления без привычного совета директоров и посредника, который вручную распоряжается казной. Но код не превращал организацию в общество без институтов: он переносил часть решений в программные правила, а часть оставлял людям.
В апреле–мае 2016 года прошла продажа токенов. SEC позднее описала сбор как значительное предложение цифровых активов, рассмотрев его в контексте федерального законодательства США о ценных бумагах. Важно точно передавать статус этого документа: это доклад расследования Комиссии 2017 года, а не судебное решение по уголовному делу и не утверждение, что все токены и проекты одинаковы. SEC решила не возбуждать исполнительное производство в данном конкретном случае, но изложила анализ обстоятельств продажи.
Замысел DAO был амбициозен, но сложность интерфейса и голосования создавала собственные барьеры. Держатель токена должен был понимать предложения, сроки, правила кворума и работу контракта. Формальное право голоса не означает, что каждый владелец обладает одинаковой информацией, временем или способностью оценивать риски. Поэтому «децентрализованное управление» надо рассматривать как набор конкретных процедур, а не как гарантию справедливости.
Что обещал контракт
Смарт-контракт — программа, которую узлы исполняют по правилам виртуальной машины. После размещения кода его поведение может быть предсказуемым в смысле инструкций, но не обязательно совпадает с человеческим представлением о намерениях. Код не понимает контекст так, как юрист, участник голосования или автор проекта. Он выполняет операции, заданные программистом, и делает это в присутствии всех условий, включая неожиданные сочетания вызовов.
В The DAO участники могли создавать дочерние организации и запрашивать вывод средств согласно процедурам контракта. Критическим оказался порядок внешнего вызова и обновления внутреннего состояния. Уязвимость, известная как повторный вход (reentrancy), позволяла внешнему коду снова вызвать функцию до того, как контракт зафиксировал изменение баланса. Упрощённая схема ниже передаёт общий класс ошибки, а не претендует на замену исходного кода или аудита.

На уровне проектирования часто говорят о принципе «сначала обновить состояние, затем вызвать внешний код». Но эта формула не заменяет полноценную проверку системы: безопасность зависит от всего графа вызовов, экономических стимулов и того, как контракт взаимодействует с другими контрактами. Сам факт, что транзакция прошла правилам виртуальной машины, ещё не доказывает, что поведение соответствовало ожиданиям вкладчиков.
Уязвимость и движение средств
В июне 2016 года уязвимость использовали для перенаправления ether из The DAO в дочернюю структуру, доступ к которой был ограничен предусмотренным периодом ожидания. Это создало временное окно, когда средства нельзя было сразу переместить обычной транзакцией. Ethereum Foundation сообщила о намерении подготовить обновление, которое могло бы заморозить перевод средств до решения сообщества. Участникам рынка и разработчикам пришлось реагировать на событие, пока его последствия ещё разворачивались.
Числа в публикациях различаются по дате и по тому, считают ли они первоначальный отток, переведённые средства или общие остатки в связанных контрактах. SEC описывала примерно 1,15 миллиона ether, собранного в продаже, и более 3,6 миллиона ether, перенаправленного в дочернюю DAO вследствие уязвимости. Ethereum Foundation после fork сообщала о примерно 12 миллионах ETH, переведённых из совокупности Dark DAO и Whitehat DAO в контракт восстановления; это уже иной показатель и более поздний этап. Эти значения нельзя смешивать в один «объём кражи».
Термины «взлом», «эксплойт» и «кража» несут разные оттенки. Технически транзакции были корректны согласно действовавшим тогда правилам исполнения. С точки зрения вкладчиков и создателей проекта, использование неожиданного поведения контракта нарушало предполагаемые условия. Рассказ должен показывать это различие, а не делать вид, что спор о языке решает вопрос о праве собственности.
Спор о вмешательстве
Участники обсуждали несколько вариантов. Можно было не вмешиваться: тогда цепь оставалась бы непрерывной, а результат определяли бы код и временные ограничения. Можно было предложить soft fork, который временно блокировал бы определённые операции; противники указывали на риски непредусмотренных последствий и цензуры. Третий вариант — hard fork с изменением состояния на конкретной высоте блока, чтобы перевести средства в контракт вывода.
Выбор был не между «кодом» и «моралью» в чистом виде. Любой путь требовал кода и социального согласия. Отказ от изменений тоже был решением, закрепляющим один вариант последствий. А вмешательство означало, что разработчики клиентов, майнеры, биржи, держатели ether и прочие участники должны скоординировать программное обеспечение и понять, какую цепь они поддерживают.
Голосования в интернете и заявления публичных фигур помогали измерить настроения, но не являлись обязательным референдумом с универсальным списком избирателей. У Ethereum нет органа, чьё решение автоматически применяется к каждому узлу. Набор аргументов был разнонаправленным: защита вкладчиков, предсказуемость правил, репутация молодой платформы, риск повторения подобных вмешательств и принцип нейтральности инфраструктуры.

Две цепи после fork
20 июля 2016 года на блоке 1 920 000 состоялось обновление, описанное Ethereum Foundation как irregular state change: средства из связанных контрактов переместили в WithdrawDAO, откуда держатели DAO-токенов могли запросить возврат. В своём сообщении Foundation отмечала, что примерно 85% майнеров на тот момент добывали блоки на fork-цепи. Это снимок конкретного этапа перехода, не вечная доля голосов и не оценка каждого участника.
Не все приняли обновление. Часть узлов продолжила старые правила, и возникла цепь, позднее получившая название Ethereum Classic. Развилка показывает, что обновление клиента само по себе не переписывает программное обеспечение на компьютерах других людей. Узлы выбирают, какие блоки считать допустимыми; майнеры выбирают, какую цепь поддерживать вычислительной работой; сервисы решают, как обозначать активы и обслуживать пользователей.

В EIP-779 fork описан не как обычное изменение опкодов или формата транзакций, а как специальное изменение состояния, перечисляющее счета для перевода в WithdrawDAO. Документ создан позднее, в 2017 году, и служит ретроспективной спецификацией. Для картины дня важнее датированное сообщение Ethereum Foundation от 20 июля 2016 года; поздний документ не следует выдавать за источник, которым участники руководствовались до обновления.
Код, закон и управление
История The DAO часто используется как пример того, что «код — это закон». Эта фраза слишком проста. Контракт устанавливает правила, которые исполняются программно, но люди выбирают клиента, интерпретируют документы, создают биржевую инфраструктуру и решают, какую ветвь поддерживать. Код ограничивает множество возможных действий; он не выносит моральный или юридический вердикт по каждому результату.
Право также не исчезло из-за наличия блокчейна. В отчёте 2017 года SEC рассмотрела обстоятельства продажи DAO-токенов и применила тест Хауи к конкретному предложению, одновременно указав, что не преследует участников в рамках исполнительного производства по известным Комиссии на тот момент фактам. Этот документ важен как свидетельство того, что продажа токенов может затрагивать существующее регулирование, но не является универсальным заключением обо всех DAO.
Для читателя криптоистории урок не в том, что вмешательство всегда правильно или всегда недопустимо. Событие показало, как технический сбой превращается в вопрос легитимности, когда большие средства и ожидания людей зависят от общего программного состояния. Каждое решение несёт цену: оставить результат, заморозить средства, изменить состояние или принять разделение сети. Ретроспективная оценка должна сохранять неопределённость и видеть последствия для разных групп.
Именно поэтому The DAO остаётся важной историей даже для тех, кто не интересуется инвестициями в DAO-токены. Она напоминает: «децентрализованный» не означает «без человеческих решений». Программный протокол может автоматизировать исполнение, но управление проявляется в подготовке обновлений, выборе клиентов и общественном признании результата. Конфликт 2016 года не дал одной формулы для всех будущих случаев; он сделал сам вопрос видимым.
Что означает «код сработал правильно»
Фраза может описывать несколько разных вещей. На уровне виртуальной машины узел принял транзакцию, потому что она удовлетворяла действовавшим правилам. На уровне проекта операция могла нарушить ожидания участников, которые считали, что баланс не должен повторно списываться до завершения запроса. На уровне права вопрос состоит в том, какие соглашения и обязанности применимы к продаже токенов и конкретным действиям. Эти ответы не обязаны совпадать.
Именно из-за этого аналогия с обычным договором ограниченна. Традиционный договор может содержать слова о цели, добросовестности и ошибке, а контракт исполняет конкретные инструкции. Но код тоже пишут люди, документацию читают люди, а суд или регулятор оценивает обстоятельства в юридической системе. Автоматизация сокращает часть посредничества, но одновременно увеличивает значение проектирования, тестирования и процедур на случай сбоя.
Обещание неизменности также требует точности. Блокчейн сохраняет последовательность подтверждённых блоков в рамках правил, принятых участниками. Чтобы новое состояние стало общим, нужно, чтобы узлы и экономическая инфраструктура принимали его. Fork не стирает старую историю до точки разделения; он создаёт несовместимые продолжения. Поэтому спор о сохранении состояния в The DAO был спором о будущем принятом состоянии, а не простым редактированием прошлого у всех пользователей.
Разница между «протоколом» и «проектом» тоже существенна. Ethereum — общая платформа, тогда как The DAO была приложением, созданным поверх неё. Ошибка приложения не означала, что каждый узел Ethereum нарушил собственные правила. Но масштаб средств и ожидания инвесторов превратили частную уязвимость в системный вопрос: если никто не отвечает за приложение, кто и по каким процедурам может помочь пострадавшим? Ответ оказался коллективным и конфликтным, а не встроенным автоматически в виртуальную машину.
Кому досталась цена решения
Держатели DAO-токенов надеялись на возврат средств, но люди, выбравшие старую цепь, считали принципиальным не менять состояние ради конкретного случая. Разработчики должны были обеспечивать клиенты и объяснять миграцию; майнеры — выбирать, какие блоки производить; биржи — принимать решения о тикерах, депозитах и выводах. Пользователи, которые не следили за дискуссией, могли столкнуться с непривычным фактом: их программное обеспечение не автоматически решает, какой актив имеет для них ценность.
Здесь нет безболезненного контрфактического сценария. Отказ от изменений сохранил бы одно понимание нейтральности, но оставил бы вкладчиков с последствиями уязвимости. Fork помог части держателей претендовать на возврат, но показал, что правило «состояние никогда не меняется» имеет социальные пределы. Два пути не делают автоматически победителем ни один моральный принцип; они документируют разные приоритеты участников.
SEC report добавляет ещё один слой: регулятор анализировал, как продажа токенов и ожидание прибыли соотносятся с законодательством о ценных бумагах. Доклад рассматривал факты The DAO, а не выдавал технический сертификат для всех будущих проектов. Читая его рядом с описанием fork, полезно не смешивать правовую классификацию токенов, безопасность программного кода и согласие сети на изменение состояния. Это самостоятельные вопросы, хотя один кризис заставил их столкнуться.
После The DAO разработчики стали уделять больше внимания независимым аудитам, тестовым сетям и безопасным шаблонам, однако аудит не превращает сложную систему в безошибочную. Проверка охватывает определённый код и модель угроз, а обновления и взаимодействия с другими контрактами могут породить новые условия. Хорошая практика — заранее описывать процесс аварийного реагирования и пределы полномочий, чтобы участники понимали их до кризиса, а не только когда средства уже перемещены.
Источники
- SEC, Report of Investigation Pursuant to Section 21(a): The DAO. Официальный правовой анализ токенов DAO и событий.
- Ethereum Foundation, Hard Fork Completed. Оперативный отчёт об обновлении и восстановительном контракте.
- EIP-779: Hardfork Meta: DAO Fork. Спецификация irregular state change; не источник до события.
- Ethereum, Timeline of all forks: DAO fork. Контекст даты и высоты блока.
- SEC, Investor Bulletin: Initial Coin Offerings. Общий контекст позиции SEC по ICO в 2017 году.
- The DAO, White Paper (archived project document). Первичное описание проекта и заявленной модели.
Также читайте
«Восхождение денег»: как читать финансовую историю Нилла Фергюсона
Что финансовая история Фергюсона помогает увидеть в политике и обществе — и почему его широкую оптику важно читать критически.
Война за размер блока: почему сообщество биткоина раскололось
Как спор о пропускной способности Bitcoin превратился в конфликт о правилах сети, ролях участников и цене разных решений.
Инфляция глазами семьи, бизнеса и центрального банка
Почему официальная инфляция не совпадает с ощущениями каждой семьи, как цены проходят через бизнес и на что способен центральный банк.
Доказательства с нулевым разглашением: от научной идеи к блокчейну
Почему доказательство с нулевым разглашением не делает автоматически приватным всё приложение? История идеи от интерактивной криптографии до Zcash и rollups — и границы того, что действительно скрывается.
Mt. Gox: как карточный сайт стал центром биткоин-экономики
Mt. Gox начиналась как идея для карточного обмена, а стала крупнейшим шлюзом в Bitcoin. По датированным документам разбираем, как концентрация торговли, хранения и учёта превратила сбой одной компании в кризис для рынка.
Хэл Финни: криптография, первые транзакции и цифровое наследие
Как опыт Хэла Финни в PGP и RPOW связан с первыми днями Bitcoin? Разбираем его свидетельство, раннюю транзакцию и границу между фактами и догадками об авторстве.

Комментарии