Мифы против Web 3.0 & Web. Кейс №01. The DAO форк
У каждой из сторон есть стимул представить себя сильнее, чтобы её победа казалась неизбежной. Виталик Бутерин
Введение
В этой серии видео и текстов, связанных друг с другом (на одно видео - один текст), хочу рассказать о наиболее значимых мифах крипто-индустрии, которые до сих пор, хотя порой прошло 5-10 и даже 15 и более лет, оказывают влияние на не окрепшие умы неофитов.
И начну с The DAO, но рассмотрю этот случай не с позиции, которая была описана в книгах, исследованиях, статьях, постах и комментариях множество раз, а с расстановки акцентов, исходя из ончейн-аналитики и веб-архивов.
Нарочно не замечанные факты
Давайте зададим себя простой вопрос: "Какая доля майнеров реально поддержала DAO hard-fork к блоку 1 920 000?" - и попробуем найти на него ответ.
Первое, что стоит узнать, что порядка 54%-60% общего хешрейта было явно зафиксировано за про‑форк‑пулами (ПФП) ещё до учёта позднего присоединения/следования за большинством со стороны F2Pool и BW.
Пример №01. Reddit
Откуда эти данные? Скажем, в одной общедоступной reddit‑агрегации на базе EtherChain ПФП суммировались в 54%. И это не просто цифра из воздуха: она складывалась из многих мнений и ончейн-источников: приходили пулы и добавлялись, проводились голосования внутри них, etc. Поэтому данная ветка - ценная находка для любого нетсталкера. И это при том, что на "... пулы приходилось более 98% хешрейта, следовательно, доля соло-майнеров должна (была) быть менее 2%", - т.е. резкий выход не согласных с любым пулом - был сразу заметен.
Не забывайте, что всегда стоит искать веб-архивы, потому что из них можно получить массу ценно информации. Например:
Как видим, таблица, составленная ДО реального голосования, УЖЕ объединяет сразу три разных источника:
То есть уже тогда все понимали, что простого голосования недостаточно - нужно смотреть на готовность всей инфраструктуры.
Но самое интересное даже не в предварительных данных, а в том, что обсуждалось ниже:
Таким образом, было добавлено 261 + 26 = 287 обновлённых клиентов, но одновременно было добавлено 1 + 1 + 2 + 7 + 13 + 3 + 19 + 43 + 40 + 35 + 96 = 260 клиентов со старыми версиями. Особенно если сравнить число 261 с числом 260, складывается впечатление, что это скоординированная акция.
Кто-то добавляет ноды на старых версиях клиента практически на каждую ноду, которая обновляется, чтобы показатели НЕ демонстрировали наличие консенсуса.
За последние три часа этот человек или группа добавили более 500 клиентов (в нормальной ситуации, судя по числу обновлений, 261 нода со старой версией должна была исчезнуть, однако вместо этого сверху было добавлено ещё 260 новых нод со старой версией)".
Объяснение, конечно же нашлось: "Похоже, Ethernodes запустил новый алгоритм сканирования сети и сообщил, что теперь обнаруживает ноды, которые раньше не удавалось найти. Это наиболее вероятная причина, почему общее количество нод выросло и почему старые версии клиентов тоже начали появляться в списке как "новые"... Но, как заметил один из участников форума: "Конечно, за два дня до хардфорка - идеальный момент, чтобы тестировать новый алгоритм поиска нод".
Не менее важно, что мы можем узнать и проверить, это то, что F2Pool и BW были готовы следовать за большинством: то есть фактически все шансы у тех, кто был против форка были, т.к. эти 2 пула составляли до 30%.
Чтобы стало ещё понятнее: у EthPool было на тот момент всего ок. 7,1%! Более того: MiningPoolHub с 1,8% вычислительной мощности сети тоже решил поддержать хардфорк. Там же был и пул: Alpereum с долей сети ок. 0,4%. Ethc.epool.io и их 0,1% хешрейта. Поэтому 30% - колоссальная цифра, как ни крути.
При этом у Ethpool к финалу возник раскол между внутрипуловым голосованием и реальным выбором цепи. Финальное сообщение Ethpool гласило, что 65% голосовавшей мощности были против поддержки форка, но сам оператор пула всё равно объявил, что будет майнить форк, потому что крупнейшие пулы уже уходят туда и майнить на вероятной проигрывающей цепи означало бы риск орфанов для участников пула. Поэтому и здесь у каждого не согласного было время, чтобы подумать и подключиться к сторонникам своей точки зрения.
Но не торопитесь делать выводы, потому что дальше узнаём следующее по ETHPool: "Я до сих пор не могу понять, как так резко выросло число голосов против хардфорка. Теперь они уже составляют большинство, и это совпало с внезапным скачком хешрейта пула. Подозреваю, что это арендованный хешрейт, возможно, со стороны эксплуататора(ов)".
То есть манипуляций со стороны тех, кто хардфорка не желал - хватало? Конечно.
Более того, ниже есть конкретные цифры: "Скорее всего, это действительно арендованный хешрейт - целых 20 GH/s!!! Потом ещё два майнера по 9 GH/s! Я вообще не понимаю, чего эти шутники пытаются добиться. Dr_pra совершенно ясно заявил, что в конечном итоге пулы будут следовать общему консенсусу сети, независимо от того, совпадает ли он с результатами голосования внутри конкретного пула. Поэтому пытаться повлиять на форк через голосование в одном пуле кажется мне просто нелепым".
Самое важное, на чём сходятся обсуждения: "В конечном счёте именно супербольшинство хешрейта определит, по какой цепочке пойдёт сеть. Нынешние опросы это всего лишь неформальные предварительные голосования".
И очень чётко изложено, почему майнеры могли не голосовать предварительно:
- им это безразлично;
- они считают, что результаты голосования и так отражают их позицию;
- они уверены, что голос против всё равно ничего не изменит;
- либо существует множество других причин, о которых мы даже не думаем.
Поскольку я сам тогда майнил ETH, то следующий тейк считаю наиболее значимым: "В конечном итоге майнеры выполнят свою основную функцию: будут защищать сеть своим хешрейтом независимо от того, насколько активно они интересуются вопросами изменения протокола. Даже если майнер не поддерживает ни одну из сторон, он всё равно проверяет транзакции и защищает сеть от атак. Именно в этом заключается роль майнеров".
Ещё один важный тезис звучит очень просто, но вдумайтесь в его содержание: "Честно говоря, я всё ещё очень обеспокоен. Времени осталось совсем мало. Нам нужно, чтобы как минимум 60% нод работали на версии 1.4.10. Хотелось бы, чтобы майнинговые пулы обязали своих пользователей проголосовать и обновить программное обеспечение (либо за, либо против форка) и не принимали их блоки, пока они этого не сделают".
Но вот что ему отвечает другой участник: "Это приведёт к очень централизованному механизму проведения хардфорка".
Поэтому нейтральность пулов, кот. мы можем наблюдать в ходе подготовки и проведения хард-форка - ещё одно доказательство того, что сеть хотела оставить нейтральность как фундамент.
Интересно, что даже такие малые пулы как Alpereum уведомляли пользователей в течение 3 недель: говорить после этого, что всё лоббировалось и ни у кого не было права выбора и возможности его даже - как минимум, странно.
При этом уже за 2-3 дня до форка "... клиенты, готовые к хардфорку, составляли уже более 30% сети". И это по очень сырым подсчётам, где были не учтены те самые 30% (а это итак 60%).
Таким образом, из одной этой ветки можно получить множество источников данных:
- https://www.ethernodes.org/network/1
- https://forum.ethereum.org/discussion/8382/dao-hard-fork-voting-on-ethpool-ethermine/p2
- http://ethpool.org/stats
- https://docs.google.com/spreadsheets/d/160clbc6bFKEvar091iNYyg0zEJxhyAZTDoxcm7cF2II/edit#gid=0
Также мы узнаём, что "... операторы EthPool, Ethermine и Dwarfpool... поддержали хардфорк" и, как заметил один из участинков: "Это их пул - их правила". И, как написал выше, выход из таких пулов - был бы явным подтверждением позиции ПРОТИВ хардфорка, но даже этого не произошло по большей части.
Итоговые значения в его расчётах составляют:
- За форк: 48,2% общего хешрейта (2,8% ещё не определились внутри этой группы);
- Против форка: 39,3% (11,7% - ожидают достижения порога или не выразили позицию);
- Всего учтено: 87,5% хешрейта сети;
- Неизвестно: 12,5%.
Вот ещё одна сводная таблица, собранная через глубокое исследование с ChatGPT:
График выше показывает не долю всей сети, а только процент yes среди уже
проголосовавшей мощности внутри соответствующего пула. Именно поэтому Ethpool мог
закончить с 35% yes / 65% no среди vote‑participants и все равно реально уйти на fork‑chain
График выше показывает не долю всей сети, а только процент yes среди уже
проголосовавшей мощности внутри соответствующего пула. Именно поэтому Ethpool мог
закончить с 35% yes / 65% no среди vote‑participants и все равно реально уйти на fork‑chain
И вот выводы по нему (специально не акцентирую большого внимания, хотя там порядка 10 страниц текста, кода и др. данных, т.к. иных источников не мало): "Если свести все имеющиеся данные воедино, получается следующая картина. До проведения хардфорка можно достаточно уверенно подтвердить лишь 54–60% публично заявленного хешрейта, поддерживавшего форк. В момент активации форка наиболее достоверные оценки показывают, что около 85% вычислительной мощности сети уже добывало блоки новой цепи. Спустя несколько дней, к 26 июля 2016 года, доля оставшейся цепи, впоследствии ставшей Ethereum Classic, по сохранившимся данным fork.ethstats составляла примерно 17,5% общего хешрейта. Именно эти цифры можно считать наиболее добросовестной реконструкцией распределения майнинговой мощности в период форка The DAO, поскольку они основаны на сохранившихся источниках того времени, а не на более поздних интерпретациях и пересказах".
Пример №02. Форум
Теперь давайте обратимся непосредственно к Эфир-форуму.
Первое и очень важное: "Мы по-прежнему оставляем за собой право не следовать результатам голосования, если в коде хардфорка будут обнаружены проблемы безопасности или если пул окажется на проигрывающей цепочке". То есть каждый отдавал себе отчёт в том, что он может проиграть и никакой 100%-й гарантии, как это преподносят СМИ и через 10 лет, не было. Да и быть не могло.
Второй важный тезис звучит так: "Большинством вполне могла стать и цепочка без форка, и тогда пул последовал бы именно за ней. Это работает в обе стороны. Мне кажется, что сторонники NOHF просто не могут смириться с мыслью, что большинство людей с ними не согласно. Поэтому они начинают говорить о заговоре, манипуляциях, мошенничестве. Но на самом деле всё гораздо проще: большинство просто придерживается другой точки зрения... Это не охота на ведьм.Это просто ситуация, когда разные люди придерживаются разных взглядов".
Самое интересное кроется даже не в самом ответе, а в том, кто его дал: "Я такой же майнер, как и вы. И, кстати, у меня даже нет токенов DAO". И да, я был ровно в таком же положении: правда, немного токенов The DAO у меня всё же было. Но суть в том, что активность комьюнити майнеров - очевидна: все, кто хотел высказаться, делали это не только ончейн, через пулы, на реддите, но и на форуме эфировском непосредственно, и в чатах, и много где ещё. Все, кто хотел именно.
Но самый интересный тезис звучит ещё проще: "Вполне возможно, что сам атакующий и его союзники действительно предпринимают скоординированные усилия, чтобы помешать проведению хардфорка. Помните, что атакующий публично заявлял, будто его главная цель - нанести ущерб Ethereum, поскольку он является большим сторонником Bitcoin?...". Выводы, как говорится, делайте сами.
Ещё один тезис, который пропускают (якобы) сторонники (якобы) позиции "код - это закон", звучит так: "Если вы читали комментарии к коду The DAO, то совершенно очевидно, что возможность рекурсивного вызова не была предусмотрена разработчиками. Более того, для проведения атаки потребовался существенно модифицированный клиент Ethereum, способный сформировать транзакцию, выводящую ETH из The DAO. С помощью обычного клиента Ethereum сделать это невозможно". Ведь, согласитесь, это 100% хак, а не просто "фича"?
И, наконец, тезис, сторонником которого я являюсь на 100%, поэтому вынесу его тоже цитатой:
Позвольте объяснить, почему ваши выводы ошибочны. Ethereum действительно остаётся децентрализованной системой. Более того, история с хардфорком The DAO как раз это и демонстрирует. Ни одна отдельная организация не может самостоятельно провести хардфорк. Для этого требуется децентрализованный консенсус участников сети... Обнаруженная во время подготовки Soft Fork атака типа DoS показывает, что Ethereum оказался даже более устойчивым к цензуре со стороны майнеров, чем другие криптовалюты.
Более того, в самом начале это было выражено иначе, но в той же коннотации: "То, что происходит сейчас в Ethereum, называется консенсусом, а вовсе не сговором. Сговор по определению предполагает тайное соглашение. Здесь же всё происходит абсолютно публично. То, что вы не согласны с мнением большинства, ещё не означает существование какого-либо заговора. Это лишь означает, что ваша позиция находится в меньшинстве". И именно подобного взгляда придерживаюсь сам.
Более того, уже в те дни тезисов очевидных накопилось много: в том числе - относительно сравнения с форком Биткоина в 2010 году: "Мне действительно хотелось бы понять, на каком основании вы и многие другие противники хардфорка утверждаете как установленный факт, что после форка целостность блокчейна Ethereum будет утрачена. В первые годы существования Bitcoin тоже произошёл серьёзный хардфорк с откатом цепочки. И, насколько я вижу, Bitcoin после этого никуда не исчез. Поэтому хочу уточнить: Ваше утверждение основано исключительно на вашем предположении о том, как люди отреагируют на откат последствий мошенничества с The DAO? Или вы можете привести какие-либо реальные исторические прецеденты, подтверждающие такую точку зрения?".
Ещё один важный тезис, который ника мне приемлют критики, звучит следующим образом: "В самом хардфорке нет ничего особенно сложного. И это далеко не первый и уж точно не последний хардфорк в истории Ethereum. Более того, вероятно, это одно из самых простых изменений консенсуса, которые когда-либо будет проходить сеть. Мне очень понравилось, как ситуацию сформулировал Гэвин Андресен. Если пересказать его мысль своими словами"... Приведу цитату полностью:
Если существует простой способ исправить ситуацию наиболее справедливым образом, то бездействие означает фактическое соучастие в действиях атакующего.
Ещё в одной Reddit было сказано в поддержку той же позиции буквально следующее: " Любые обновления протокола, например Metropolis, также являются хардфорками. Иногда создаётся ощущение, что противники хардфорка относятся к нему почти как к религиозной ереси. Безусловно, применять его нужно крайне осторожно. Но хардфорк - это одна из предусмотренных возможностей любой блокчейн-системы". И вот это - факт.
При этом в другой части того же форума была высказана ещё одна здравая мысль: "Но сама идея о существовании «майнеров-зомби» противоречит базовому предположению любой децентрализованной сети: большинство участников должно действовать разумно и добросовестно". Сложно с ней не согласится.
Что важно: на форуме даже тех, кто оскорблял других, старались не удалять, чтобы сохранить нейтралитет. Цитата: " Вы получаете официальное предупреждение за оскорбительное поведение. Тем не менее пока я оставлю большинство ваших сообщений без удаления, чтобы все могли сами увидеть, почему было вынесено это предупреждение". И всё равно СМИ после этого твердят, что всё было подстроено...
При этом здесь мы находим подтверждение, что сторонники НЕ принятия форка пытались манипулировать данными хешрейта (и голосованиями на его основе - соответственно): "https://www.miningrigrentals.com/u/adaseb - сервис сдаёт свои майнинговые установки в аренду через MiningRigRentals. Их никто не взламывал. Их просто арендовали. По сути, мы уже и так пришли к выводу, что использовался именно арендованный хешрейт".
Но и это не всё - далее мы находим этому конкретное подтверждение: "Я действительно сдал свои риги в аренду. Этот человек платил примерно на 50% больше, чем можно было заработать на обычном майнинге ETH. К концу дня все доступные риги были арендованы. Похоже, в итоге он сильно проиграл, поскольку так и не добился желаемого результата".
Поэтому подобные факты - навсегда остаются в истории: их не просто порой разыскать, но почти всегда - возможно.
И вот какой результат мы в итоге получаем из архива, ссылка на который опубликована на этом форуме:
Легко по сложности распознать мнение большинства.
Пример №03. СМИ
К слову, статье CCN - накануне форка - тот же лагерь (за форк) округлялся до “ок. 60%” и отдельно отмечалось, что F2Pool и BW (а это ок. 30%, ещё раз напомню) с высокой вероятностью тоже перейдут на хардфорк‑клиент.
Самое важное методологическое уточнение: "сколько майнеров" в смысле уникальных людей/риг‑операторов 2016‑источники почти не дают. Источники тех лет измеряют в основном долю хешрейта или долю голосовавшей мощности внутри пулов, а не количество уникальных субъектов. Поэтому точный ответ в общем виде - возможен, а точный вот точный ответ в форме привязки к субъектам - скорее, нет. Но это и не нужно, т.к. все данные в итоге были в ончейне.
Найти др. источники в медиа не сложно, но я уделяю им мало внимания в силу того, что в них слишком много хайпа и чересчур мало фактологии. Впрочем, всегда готов обсудить любые примеры, кот. кажутся вам интересными.
Пример №04. Ончейн
Берём ссылку на известный ресурс и читаем:" Для проведения хардфорка программное обеспечение клиентов Ethereum было обновлено таким образом, чтобы при обработке блока №1 920 000 применялись ... дополнительные правила".
И отсюда мы узнаём, что в коде есть вполне конкретный параметр: var MainNetDAOForkBlock = big.NewInt(1920000).
И далее видим по уже вот этой ссылке следующее:
- DAOForkBlockExtra - значение поля ExtraData заголовка блока, которое устанавливается в момент хардфорка The DAO и ещё для нескольких последующих блоков, чтобы клиенты Fast Sync и Light Sync могли корректно определить, какую ветвь цепочки они должны выбрать ("dao-hard-fork").
- DAOForkExtraRange - количество последовательных блоков, начиная с точки хардфорка The DAO, для которых поле ExtraData принудительно переопределяется, чтобы предотвратить атаки со стороны клиентов, не поддерживающих хардфорк (no-fork attacks).
- DAORefundContract - адрес контракта возврата средств, на который будут переведены все балансы The DAO.
- DAODrainList - список аккаунтов, полные балансы которых будут перенесены в контракт возврата средств в начале блока хардфорка The DAO.
Как видим, процесс не просто прозрачен, а полностью формализован. И весьма прост. Даже по-хорошему примитивен. Можно ли это назвать манипуляцией? Не думаю: манипуляторы стараются всегда запутать следы, "навести туману", что называется. Прозрачность - не их конёк.
Подобной верификации на гите найти можно в достаточном количестве: пример доп. №01 и доп. №02.
Но давайте посмотрим на самое известное голосование:
Самое важно, что даже в нём отфильтрованы адреса CEXs (Accounts filtered (Exchange's withdraw address))%
- Yunbi: 0xd94c9ff168dc6aebf9b6cc86deff54f3fb0afc33
- Kraken: 0x2910543af39aba0cd09dbb2d50200b3e800a63d2
- Poloniex: 0x32be343b94f860124dc4fee278fdcbd38c102d88
- Bitfinex: 0xcafb10ee663f465f9d10588ac44ed20ed608c11e
- BTC-e: 0x91337a300e0361bddb2e377dd4e88ccb7796663d
- BitcoinToYou: 0xf4fe90e63f2a90710bcc0c00f38812c4a882f2ff
- Shapeshift1: 0x120a270bbc009644e35f0bb6ab13f95b8199c4ad
- Shapeshift2: 0x9e6316f44baeeee5d41a1070516cc5fa47baf227
- f2pool: 0x61c808d82a3ac53231750dadc13c777b59310bd9
- DwarfPool1: 0x2a65aca4d5fc5b5c859090a6c34d164135398226
- Gemini: 0xd24400ae8bfebb18ca49be86258a3c749cf46853
Поэтому транзакции навроде такой: https://etherscan.io/tx/0xc165ab5726c66bb3db50544981f20d143b46a3e990d7b424dbf81d5070dd6278:
Вопрос логичный и простой: зачем так делать, если хочется манипулировать? Вот именно: незачем.
Тем более что давайте это оценим сквозь призму голосования:
Дополнительное объяснение: как работала система Carbonvote
- Кто мог голосовать? Голосовать могли владельцы ETH.
- Что являлось голосом? Голосом служили ETH: чем больше ETH находилось на адресе, тем больше был вес голоса.
- Как (можно было) проголосовать? Чтобы проголосовать: необходимо было отправить транзакцию на адрес YES, если вы поддерживаете предложение; либо на адрес NO, если вы выступаете против. При этом у участников оставалась возможность изменить своё решение. Если адрес хотя бы один раз отправил транзакцию на адрес YES, то весь объём ETH, находящийся на этом адресе, автоматически учитывался как голос "ЗА". Если позже тот же адрес отправлял транзакцию на адрес NO, то весь этот объём ETH автоматически пересчитывался как голос "Против". Если же после голосования владелец адреса решал воздержаться, он мог просто перевести свои ETH на другой адрес, который ещё не участвовал в голосовании.
- Подсчёт голосовпроисходил динамически и в реальном времени. Система не считала количество отправленных транзакций. Она постоянно отслеживала, какой объём ETH находится на адресах, уже принявших участие в голосовании, и именно этот баланс учитывался при подсчёте.
- Безопасность средств. Никакие ETH не собирались и не блокировались. Поскольку система учитывала не количество ETH, отправленных на адреса YES или NO, а текущий баланс адресов, участвовавших в голосовании, пользователям рекомендовалось отправлять нулевую транзакцию (или минимально возможную сумму ETH, если кошелёк не поддерживал нулевые переводы) лишь для передачи сигнала о своём выборе. Например, кошелёк Mist не позволял отправлять транзакции с нулевой суммой, поэтому в нём требовалось отправить минимально возможное количество ETH. Если же по какой-либо причине смарт-контракт всё-таки получал от голосующего реальные средства, эти ETH автоматически возвращались на исходный адрес сразу после получения.
Поэтому когда говорят о 5.5% и подобных цифрах, то попросту забывают, что CEXs, на которых Эфира было очень много (в 2016-ом DeFi лишь зарождались) попросту сошли с дистанции, а ряд пользователей вообще хранили средства на холоде (скажем, у меня из всех кошельков было активен лишь 1).
Ещё одна важная цитата звучит так: ".... технически это софтфорк. Однако если за ним не окажется 51% хешрейта, то на практике он будет вести себя как хардфорк. Я не считаю справедливым предполагать, что это обновление обязательно получит поддержку 51% вычислительной мощности сети. Поэтому эти строки кода всё равно следует удалить". И зададим себе вопрос: если всё предопределено, то зачем же так заморачиваться?
Больше скажу вам, точнее - скажет один из участников обсуждения на Гитхабе: "Следует учитывать, что режимы fast sync и light client не проверяют переходы состояния. Они проверяют только заголовки блоков и Proof-of-Work. Поэтому клиент, не знающий о форке (то есть не обновлённый), всегда будет синхронизироваться с самой длинной цепочкой, поскольку у него нет информации о том, какие значения искать в заголовках. Даже если вы выступаете против форка, рекомендуется обновить клиент, чтобы он знал, какую цепочку следует игнорировать". Опять же: зачем так делать, если кругом все лоббируют лишь хардфорк?
Пример №05. Позиция Ethereum Classic
Возьмём большой документ и рассмотрим его тезисы:
- Около 70% потерянных средств удалось вернуть, однако оставшиеся 30% оставались под контролем атакующего и не могли быть возвращены.
- Весьма спорное "голосование монетами" (coin vote) привело к тому, что Ethereum Foundation поддержала проведение хардфорка, отказавшись от своей прежней нейтральной позиции.
- Будущие историки криптовалют, несомненно, будут рассматривать происхождение Ethereum Classic как уникальный пример, наглядно демонстрирующий социально-технологическую природу блокчейнов.
- Все, кто внесли вклад в создание Ethereum — сторонники форка, противники форка, разработчики и участники сообщества — заслуживают уважения за свою роль в создании одного из наиболее значимых технологических достижений своего поколения.
- В этой истории можно увидеть обстоятельства, которые позволяют предположить наличие потенциальных финансовых конфликтов интересов. Однако подобные стимулы являются естественной частью практически любого блокчейн-проекта и потому скорее ожидаемы, чем удивительны. В любом случае невозможно достоверно определить, насколько такие стимулы действительно повлияли на принятие решений. Поэтому, по мнению авторов, все участники событий заслуживают презумпции добросовестности.
- The DAO быстро стала одной из главных тем в экосистеме Ethereum. Во многом это объяснялось тем, что проект получил заметную поддержку со стороны многих членов Ethereum Foundation. Помимо того что руководителем проекта являлся бывший директор по коммуникациям EF, The DAO назначила группу кураторов (curators). Кураторы обладали правом накладывать вето на отдельные действия и выступали в качестве своеобразного механизма аварийной защиты (fail-safe). Предполагалось, что это повысит доверие инвесторов, поскольку позволит защитить средства от некоторых видов атак. Все 11 кураторов ранее работали непосредственно в проекте Ethereum или в Ethereum Foundation, включая нескольких весьма известных представителей сообщества.
- Условия создания The DAO определяются кодом смарт-контракта, размещённого в блокчейне Ethereum по адресу
0xbb9bc244d798123fde783fcc1c72d3bb8c189413. Никакие положения настоящего описания, а также никакие иные документы или сообщения не могут изменять либо дополнять обязательства и гарантии сверх тех, что содержатся в коде The DAO. Все пояснения и описания предоставляются исключительно в образовательных целях и не заменяют и не изменяют положения, закреплённые в коде The DAO. Если между настоящим описанием и фактической функциональностью кода The DAO существует какое-либо противоречие, приоритет всегда имеет код смарт-контракта. - Сообщество Ethereum раскололось на два противостоящих лагеря: сторонников форка (forkers) и противников форка (anti-forkers).
- В ответ на... опасения сторонники форка, по мнению авторов, стремились преуменьшить риск раскола сети. Такие предупреждения зачастую сводились к утверждениям вроде: "Не стоит об этом беспокоиться - это лишь теория заговора, придуманная биткоин-максималистами". Более того, авторы отмечают, что никакой подготовки к возможному расколу сети практически не проводилось. В частности: не была реализована защита от replay-атак; криптовалютные биржи не были заранее предупреждены о возможном появлении двух цепочек, чтобы защититься от двойного расходования (double spending).
- Кульминацией этой неприятной истории стали угрозы деанонимизации (doxxing) и иных форм давления в отношении противников хардфорка. В частности, представители slock.it призывали раскрывать личности тех, кто выступал против форка, что, по мнению авторов, создавало атмосферу запугивания и удерживало многих известных противников форка от публичных выступлений... "Мне было бы ОЧЕНЬ интересно узнать личности тех, кто координирует сопротивление хардфорку. Напишите мне в личные сообщения [адрес скрыт]@slock.it".
- Если посмотреть на обсуждения форка The DAO на Reddit, можно заметить, что, судя по количеству голосов (upvotes), значительная часть сообщества Ethereum выступала против хардфорка. По мнению авторов, причиной этого было опасение, что подобные меры сами по себе признали бы возможность раскола сети, а значит - сделали бы его более вероятным.
- Во время обсуждений Ethereum Foundation официально пыталась сохранять позицию нейтралитета. Предполагалось, что вопрос о том, как реагировать на взлом The DAO, должно решать само сообщество Ethereum, а не руководство фонда. Такой подход был важен, поскольку формально снимал с Ethereum Foundation ответственность за принятое решение. Однако, по мнению авторов, несмотря на заявления о нейтралитете, различные подразделения Ethereum Foundation своими действиями демонстрировали обратное.
- При этом авторы отмечают, что некоторые другие команды внутри Ethereum Foundation действительно пытались сохранить нейтральный подход. Например, браузер децентрализованных приложений Mist при запуске не выбирал цепочку автоматически, а требовал от пользователя явно указать, какую версию блокчейна он хочет использовать. Тем самым пользователь не оказывался по умолчанию на одной из сторон раскола.
- Как выяснилось: один адрес обладал таким количеством ETH, что обеспечил около 25% всех поданных голосов; никакого минимального порога участия (quorum) предусмотрено не было; участие в голосовании приняли лишь около 6% всего объёма ETH; голосование было объявлено и завершено всего за 12 часов, что практически не оставило времени противникам форка организовать ответную кампанию и исключило возможность участия значительной части мирового сообщества, находившейся в это время в другом часовом поясе.
И вот что интересно: ни один из доводов, к сожалению, я подтвердить не смог в результате обычной аналитики:
- На разных форумах нашёл больше сторонников форков.
- Никаких выходов ради подтверждения приверженности НЕ форка - тоже.
- А тезис про то, что запуск голосования - это не легально, совсем уж... мелко: создать подобное могла и другая сторона, но почему-то так и не сделала. Почему? На этот вопрос ответа до сих пор нет.
- То, что подготовки не было... Выше есть масса пруфов, доказывающих обратное.
Виталик Бутерин и моральный риск
Чтобы не ходить вокруг да около - сразу к сути: как видите, даже через 3 года после форка, когда у Виталика точно были все карты в руках, он не нашёл поддержки большинства на внедрения механизма того самого "рычага", про кот. постоянно талдычат СМИ.
Зачем же задавать вопрос, если такой механизм УЖЕ ЯКОБЫ БЫЛ в 2016 году? Вот именно: незачем.
Поэтому т.н. моральный риск, на кот. постоянно ссылаются противники хардфорка - это за уши притянутый тезис. Именно к The DAO форку.
Выводы
Таким образом, как ни пытался я найти данные, подтверждающие позицию Ethereum Classic, которую в своё время (и до сих пор) так сильно зашилли СМИ, но ничего подобного не обнаружил:
- Голосования проходили на разных платформах и везде, где смог найти архивы и др. данные, они были в пользу форка.
- На подготовку ушло не 12 часов и не 3, а достаточное количество дней: и противники форка были явно менее активны.
- Манипуляции были и с той и с другой стороны.
- The DAO команда вела себя плохо, т.к. не обратила внимания должного на уже найденные ошибки и недочёты.
- Но только речь шла не про форк контрактов The DAO, а всей сети Эфира и поэтому я так и не увидел в этом никакого нарушения децентрализации: комьюнити спросили - комьюнити ответило.
В целом ещё много "но" находят критики: скажем, что майнеры... были финансово мотивированы! Но "секрет" в том, что майнеры ВСЕГДА финансово мотивированы. Абсолютно всегда.
Поэтому данные у вас в руках: как с ними поступать - решать вам, но я свои выводы сделали и итоги подвёл.
Код - это закон?
Да. Но напомню банальные истины:
Поэтому закон без легитимности - ничто, а легитимность должна исходить от народа, а народ в любом чейне - это его майнеры/валидаторы/etc., HODLs и др. участники.
Поэтому для децентрализации важнее другое: это всё ещё блокчейн для людей или это люди, уже встроенные в блокчейн, который вне?..
Базовые документы
- До форка: https://blog.ethereum.org/2016/07/15/to-fork-or-not-to-fork
- После форка: https://blog.ethereum.org/2016/07/20/hard-fork-completed
- Блок форка: https://etherscan.io/block/1920000
- EIP: https://eips.ethereum.org/EIPS/eip-779
- Архив сообщений: https://roddie.digital/cryptopians/index.html
- Форк-база: https://forklog.com/news/sostoyalsya-uspeshnyj-hardfork-ethereum
- Основатели: https://web.archive.org/web/20151003053127/http://slock.it/
- История на английском: https://medium.com/slock-it-blog/the-history-of-the-dao-and-lessons-learned-d06740f8cfa5
- Доп. к истории на англ.: https://www.ofnumbers.com/2016/05/15/whats-the-deal-with-daos
- История на русском: https://habr.com/ru/companies/wirex/articles/394903/
- Общие данные по истории: https://forklog.com/exclusive/zahvatyvayushhaya-istoriya-the-dao-rabota-nad-oshibkami
- Мораторий: https://forklog.com/exclusive/the-dao-moratorium
- Письмо: https://forklog.com/news/vse-po-zakonu-atakovavshij-the-dao-obratilsya-k-soobshhestvu
- Оценка письма как подделки: https://forklog.com/news/mnenie-ekspertov-pismo-ot-imeni-atakovavshego-the-dao-poddelka
- Краткая сводка: https://xakep.ru/2016/06/17/splitdao-attack
- Уязвимости до взлома: https://web.archive.org/web/20201108090731/https://news.softpedia.com/news/researchers-find-security-flaws-in-dao-ethereum-vc-fund-on-the-eve-of-its-launch-504615.shtml
- Перевод по уязвимостям: https://web.archive.org/web/20200814060232/https://xakep.ru/2016/06/01/dao-criticism/
- Атаки Влада: https://forklog.com/exclusive/ataki-vlada-obzor-osnovnyh-uyazvimostej-the-dao
- Влияние атак: https://forklog.com/exclusive/rekursivnyj-vyzov-the-dao-na-grani-smerti-i-hardfork-ethereum
- Итоги: https://forklog.com/exclusive/uroki-dao-kuda-privodyat-mechty