Роковой рекурсивный вызов и фейковая децентрализация
Скандал недели случился в криптомире — The DAO на грани смерти и хардфорк Ethereum. Далее я попытаюсь посмотреть на первые следствия всего произошедшего кипиша. Я не буду ниже тратить время на объяснение того, что же произошло, поэтому предварительно прошу ознакомиться на выбор вот с этими ссылками (первая, вторая, третья), иначе возможно пост будет не понят. Далее растекаться мыслью по древу буду в рамках этих ключевых слов: Bitcoin и DAO, взлом и атака на Ethereum, эфир и смарт-контракты, хакеры и безопасность, будущее криптовалют и проблемы липовой децентрализации.
Итак, какова текущая расстановка сил, а также последствия того, что случилось после хакерской атаки на The DAO.
То, что произошло на прошлой неделе — грандиозно, и оно требует ещё своего спокойного осмысления. Ранее речь шла про децентрализованные сети или платежные сервисы типа Биткоин. Но Эфириум — это фактически распределенный компьютер, который децентрализовано исполняет принятые разными сторонами смарт-контракты. Будучи однажды запущен, такой смарт-контракт будет безусловно исполнен.
Дизайн сети гарантирует это. Просто нет того компьютера, который можно отключить, равно как невозможно локализовать программу-контракт, который можно было бы как-то подправить.
Но что же произошло? Обнаруженная уязвимость приложения The DAO позволила посредством бесчисленного множества рекурсивных вызовов скушать всю доступную в Фонде сумму, плавно перекачав её на счета «злоумышленников». И слово злоумышленники я не зря взял выше в кавычки. Но обо всём по порядку.
Цена эфир стремительно падает; DAO взломан https://t.co/PpTXGR00WR pic.twitter.com/wjSTcJoVQT
— CoinNews (@getcoinnews) June 17, 2016
1. Похачить всё взад
Сама Ethereum Foundation желая вернуть обратно похищенные деньги вкладчиков The DAO ерепениться по беспределу выполнить хардфорк проекта, то есть ни много ни мало изменить правила игры глобально в рамках всей сети, чтобы посредством магического эффекта, сопоставимого с Нео останавливающим ладонью пули, вернуть уже ушедшие прочь деньги обратно, таким образом провернув фарш обратно в первоначальную тушку.
Хм, парадокс — полностью децентрализованному и независимому в своем арбитраже мировому компьютеру Эфириум велено на раз-два отыграть хакерскую сделку взад, дважды подмигнув своим создателям (сначала через софтфорк, а потом и через хардфорк проекта). Сделано это собирается быть публично и с особым цинизмом относительно высших гуманистических идеалов крипто-анархического сообщества.
Голубоглазый Vitalik беспомощно разводит руками: другого выхода нет, кроме как врубить режим бога и пропатчить криптографическую реальность через грязный бит-хак.
2. А ты кто такой?
Чтобы ещё больше запутать всех, злоумышленник выступил с открытым обвинением/угрозами сообществу в нарушении принципов необратимости смарт-контрактов. Он собирается одеть свой парадный смокинг и деанонимизироваться, попутно наняв юристов и стравив их всех на Виталика Бутерина, а также на «всю его криптографическую банду за мошенничество». Серьёзно, дело пахнет керосином.
Хакер theDAO качает права https://t.co/2CHt9lIlCq pic.twitter.com/SUmw4I8oMI
— Bitcoin: вce новости (@bit_novosti) June 18, 2016
Смотрите сами: чисто формально смарт-контракт был опубликован, злоумышленник акцептировал его условия, тогда контракт со стороны машины был исполнен. Что же поделать, что один из его вариантов кода предусматривал бесконечную рекурсию невыгодную для самого Фонда, и злоумышленник «просто воспользовался публично предоставленным легальным сервисом».
Помахивая блокчейном, хакер, склонный к нездоровым бесконечным рекурсиям, теперь собирается судиться с его создателем.
Welcome to Gibson«s future: «The DAO was not hacked. It simply executed its code, and by doing so, it went bankrupt«https://t.co/NWhmPWM8mF
— Chris (@senorprogrammer) June 21, 2016
3. Виталика не виновата?
Но из композиции всех факторов возникает ещё более тупиковая ситуация. Уязвимость была в приложении The DAO, запущенного поверх стэка Эфира. Это одним абстрактным этажём выше самой эфирной сети. Причем тут Vitalik? Это не проблема Ethereum.
Тем не менее сеть оказалась заложником утечки столь гигантской суммы, а, значит, мишенью для репутационной атаки.
Вот это прямо из дурного фантастического романа. Виталика Бутерина маленько жалко: https://t.co/fXLTYAdUyr
— Pavel Kushelev (@pqorama) June 18, 2016
The DAO между прочим поставило мировой рекорд крауфандинга, собрав гигантскую сумму в долларах.
И что делать теперь, когда некий аноним только и ждёт разблокировки средств, обуреваемый страстным желанием подвигать своими блоками?
The DAO didn’t just break the record for crowdfunding, it SMASHED it!: So first off, this isn’t a d… https://t.co/bzlzHk0UO0 #ethereum
— Bitcoin (@bitcoinpoet) May 15, 2016
Основатель The Dao как только запахло жаренным — свалил, куча чужих денег теперь сосредоточена у явного проходимца, который ждёт разморозки актива (эта пауза на вывод — условие смарт-контракта, ещё примерно 20 дней осталось до анхолда всей суммы) и размахивает угрозами судиться с каждым, кто станет на пути его блокчейновых транзакций.
4. Сode is king
Не знаю, чем всё это закончится, но понятно одно: для подобных проектов требуется невероятная глубина экспертизы. Уровень компетенций архитекторов, участвующих в подобных глобальных проектах должен зашкаливать. Любой баг в подобной среде — критичен и необратим. Это корни проблемы: мечта реальна, но спешная реализация нас подкачала.
Итак, первый аспект проблемы: здесь нужно отказаться от случайных людей в индустрии и перестать экономить, нанимая для подобных задач случайных и бюджетных программистов. Ниже типичный пример поиска кодеров для крупного крипто-проекта на левых форумах —
Школо-разработчики атакуют, а платить будут дошираком! https://t.co/ewldPSWFHa #криптовалюты #двач #2ch #bitcoin pic.twitter.com/ARZg8MvKee
— YugoS (@yugosobolev) June 10, 2016
Второй момент, насчет которого сейчас ведется спор между двумя вариантами интерпретации происходящего: случайная ли это ошибка и проблема ли это отдельного приложения, или это уязвимость by design, имманентно присущая самой среде Эфира.
Об потенциальных опасностях и слабой предсказуемости этой сверхсложной среды писали ещё раньше, вот хороший разбор потенциальной опасности смарт-контрактов. Такие среды требуют серьёзной предварительной подготовки-анализа, возможно, математического моделирования.
И, наконец, третий аспект — необратимость операций блокчейна — это новый источник проблем, порождающий ошибки/ситуации, которые невозможно обработать или устранить штатными средствами.
5. Второе дно децентрализации
Безусловно, события будут развиваться дальше, и, вероятно, мы ещё увидим много крипто-анархического кипиша на этой киберпанковской поляне, но пока я лично согласен вот с таким консервативным выводом — время смарт-контрактов, видимо, ещё не пришло. Даешь консервативные ценности!
Bitcoin Maximalism — Good tldr by @oleganza from his article https://t.co/YC7J31Trgl pic.twitter.com/1pJRMFokwG
— flibbr (@flibbr) June 19, 2016
Смотрите, как удивительно всё оказалось на практике: наличие «здорового центра», который лихо решает проблемы сети, чем хвастались тот же DASH (быстро увеличив размер блока в своей сети) или Ethereum (также лихо сейчас решающий проблемы акционеров The DAO), всегда казалось большим плюсом, по сравнению с обезглавленным динозавром Биткоином, на которого многие смотрели с презрением («где толпа народа годами никак не может решить даже проблемы с размером блока»).
Но Биткоин по-прежнему автономен и работает как ни в чем не бывало, а вот все эти новомодные децентрализованные сети с централизованным вторым дном, что-то чувствуют себя не ахти.
HN is clueless as usual pic.twitter.com/rHy7wsQTXs
— Oleg Andreev (@oleganza) June 19, 2016
Далее иллюстрирующая цитата взята отсюда:
Теперь в исполняющей системе Ethereum (крутящейся, как и в биткойне, на распределенной сети компьютеров «майнеров», поддерживающих базу транзакций за небольшую денежку) придется что-то менять, во-первых, для предотвращения подобных взломов в будущем (хотя если можно передать в систему какой-то код на выполнение — взломы практически гарантированы), а во-вторых, для отката уже наделанных злоумышленником операций split.
Интрига заключается в том, как именно это будет сделано: до сих пор предполагалось, что любая транзакция в рамках блокчейн-технологии сохраняется в общей базе навсегда (и служит основной для подписания следующих транзакций, в чем собственно блокчейн и заключается). То есть по уму все платежи злоумышленнику нужно признавать технически правильными, а деньги у него отбирать другими способами (в реальном мире — полиция ловит грабителей банков, и отбирает у них мешки с деньгами не с помощью платежных поручений). Однако основа идеологии блокчейна заключается как раз в том, что полиции нам не надо, у нас все денежки электронные, электронно и будем отбирать. Вот как сумеет Ethereum отобрать деньги электронно, и что из этого выйдет — как раз самое интересное в этой истории.
6. Промежуточные выводы
Реально, фэйл ETH заставил многих серьёзно задуматься, ИМХО он многому научил. Обжегшись, настало время откатится малость назад, дабы обработать фатальные исключения и зализать кровоточащие раны.
The Path to Learning requires Failing: The DAO https://t.co/WvuvobFtJt pic.twitter.com/Y5ti815gAy
— Chris Dixon (@cdixon) June 20, 2016
Подобно Илону Маску, возможно, нам понадобится несколько попыток для успешного запуска смартовой крипто-ракеты, а пока можно определено сказать лишь одно: нужно быть осторожным, очень осторожным, ибо неконтролируемая сложность готова в любой момент сожрать наши молодые и такие амбициозные проекты. Виталик Бутерин видится мне в роли Искусителя, который показал всем чарующие горизонты нового дивного мира, но нам еще предстоит побороться, чтобы отладить его Мечту до состояния продакшена.
Мы делаем только первые робкие шаги в этом грандиозном и новом для всех направлении. После произошедшей библейской по своим масштабам катастрофы, понятно, что смарт-контракты потребуют каких-то иных подходов не только в философии устройства блокчейна, но и в этой области программирования. Здесь очень важно не спешить, ибо это дает справедливый повод для подобных подозрений:
Вы уловили послание. Все эти биткойны и этериумы — попытка взломать традиционную систему (национальных) государств, и события могут стать прямо таки учебниковой иллюстрацией к тезису анти-либертарианцев: «вы просто хотите сами стать государством, возможно, под другим названием».
Кто ничего не понял, вот краткое графическое содержание всей истории для самых маленьких. Действующие ниже лица: Ethereum, The DAO, Bitcoin: