Часть 1. Ошибка, которая расколола Ethereum

Весной 2016 года проект The DAO собрал около 12 млн ETH — примерно $150 млн по тогдашнему курсу. Это должен был быть инвестиционный фонд без директора: владельцы токенов коллективно решали, какие проекты финансировать.

17 июня всё пошло не по плану. В коде существовала уязвимость повторного входа: контракт сначала отправлял эфир, а уже потом обновлял баланс пользователя.

Атакующий заставил функцию вызывать саму себя снова и снова — как банкомат, который выдаёт деньги, но каждый раз забывает списать их со счёта.

В отдельную структуру ушло около 3,6 млн ETH, примерно треть всех средств The DAO. Благодаря встроенной задержке вывести добычу сразу было нельзя, поэтому у сообщества оставалось несколько недель на решение.

Но исправить код было проще, чем ответить на главный вопрос: имеет ли кто-то право отменить то, что уже записано в блокчейн?

Продолжение: The DAO: взлом, расколовший Ethereum

Часть 2. Деньги или принцип «код — это закон»?

После атаки на The DAO сообщество Ethereum оказалось перед невозможным выбором.

Первый вариант: ничего не менять. Блокчейн исполнил написанный код, а значит история должна остаться неприкосновенной — даже если результатом стали украденные миллионы.

Второй: провести хардфорк и создать новую версию истории, где похищенный эфир переводился в контракт возврата средств.

20 июля 2016 года на блоке 1 920 000 большинство сети перешло на новую цепочку. Она сохранила имя Ethereum. Меньшинство отказалось принимать переписанную историю и продолжило старую цепь — так появился Ethereum Classic.

Деньги попытались вернуть, но цена решения оказалась философской: блокчейн, задуманный как неизменяемый, изменили коллективным решением.

Так один баг создал не только крупнейший кризис раннего Ethereum, но и две криптовалюты, которые существуют до сих пор.

Источники

Важно

Материал носит информационно-развлекательный характер и не является финансовой рекомендацией.

Продолжение и мемы — в Telegram