реклама
Бургер менюБургер меню

Лора Шин – На шифре. Инсайдерская история криптовалютного бума (страница 34)

18

Такая возможность представилась во вторник 21 июня. В 19:00 по берлинскому времени неизвестный держатель токенов начал атаку на контракт главной DAO, вытягивая средства в дочернюю DAO. Хотя речь шла всего о паре ETH за транзакцию, хакер уже натаскал несколько тысяч долларов. Решив, что он репетирует перед атакой покрупнее, группа «Робин Гуд» – Грифф и Лефтерис в Берлине, Авса в Рио, – бросилась спасать эфир из The DAO через дочернюю DAO 78. Первый хакер тем вечером набрал темпы, затем появились еще шестеро – кое-кто уже успел провести тридцать транзакций по несколько сотен эфира. Но у RHG было больше всего токенов, что позволяло каждый раз выводить больше денег. В 19:44 по берлинскому времени они активировали свой контракт и сделали двенадцать переводов по 816 ETH (9 792 доллара) на общую сумму около 9 800 ETH (110 400 долларов). Испытав работу контрактов, они кое-что подправили. Во вторую атаку в 19:51 они сделали тридцать один перевод по чуть больше чем 816 ETH, всего собрав 25 307 ETH (более 325 000 долларов). Опять почистили баги. В третью атаку, в 20:00, они сделали тридцать один перевод по 4 174 ETH (50 088 долларов), всего собрав 129 390 ETH (1,55 миллиона долларов). Они только разогревались. В 20:43 по берлинскому времени The DAO начал опустошать еще один хакер, совершая рекурсивные вызовы на суммы от 1 ETH (11 долларов) до 430 ETH (около 5 519 долларов). Но к 21:02 группа «Робин Гуд», имея в своем распоряжении 4,1 миллиона токенов, сделала тридцать один перевод по 41 187 ETH (494 244 доллара), собрав 1 276 797 ETH. При стоимости 12 долларов за 1 ETH они переносили по 15,3 миллиона долларов за вызов. В 21:36 появился еще один хакер, выводя по 53 ETH (636 доллара) с каждым рекурсивным вызовом, но он быстро отвалился. Когда робин гуды наконец отладили свои контракты, они перестали вводить команды вручную и предоставили всю работу алгоритмам. Так начались войны DAO.

В следующие часы они присматривали за своими контрактами рекурсивного вызова. У каждого участника группы действовал свой контракт, пока не прекращал функционировать. Поскольку атака не соответствовала устройству The DAO, их контракты ломались, переведя где-то 70–80 % ETH, – как глохнет перегретый двигатель автомобиля. Затем эстафету подхватывал новый участник и выводил 70–80 % от остатка. Между делом они доводили контракты до совершенства.

Сообщество DAO наблюдало за этим в Slack: «Это как участвовать в научно-фантастическом романе в реальном времени», – прокомментировал один человек. «Через 10 лет владеть токеном DAO будет все равно что владеть куском „Титаника“. Круто», – сказал другой. Но не всех впечатлили войны DAO: «Это просто полный трындец».

Затем контракты группы «Робин Гуд» начали буксовать. Из где-то 100 миллионов долларов в главном контракте они не могли подчистить оставшиеся 4 миллиона или около того. Тогда в дело вступило секретное оружие.

Джорди Байлина – тихий программист в очках с пышной взъерошенной шевелюрой, седеющей на висках, работал техническим директором в семейной компании в Барселоне. Он кодил с двенадцатилетнего возраста, получил степень MBA и уже основал две своих компании. Теперь он возглавлял команду из полудюжины программистов по созданию систем управления – например систем бронирования для сайтов отелей. В 2013 году он прочитал «белую книгу» биткойна и пробовал писать для него программы, но решил, что биткойн ограничен только областью цифровых денег. К тому же на биткойн-митапах в Барселоне мало обсуждались технологии – участников больше интересовали такие темы, как отмывание денег. Через два года Джорди услышал об Ethereum и понял, что может написать смарт-контракт за две минуты. Тут он уже не мог остановиться и проводил все свободное время за изучением смарт-контрактов и размышлениями о децентрализации. Когда появилась The DAO, он влился в глобальное движение мечтателей, стремящихся создать нечто новое. Прошел курс ниндзя от Гриффа и удивился, что в конце Грифф прислал ему эфира на 5 долларов. Он даже мечтал внедрить в The DAO «ликвидную демократию» и написал программу, чтобы люди могли делегировать другим свои токены и те бы голосовали от их лица, но не успел завершить ее до запуска. Впрочем, благодаря этому он многое узнал об устройстве The DAO.

Крипта изменила его жизнь. Раньше он просто работал на начальника. Крипта подарила ощущение, что он разрабатывает нечто для следующего поколения. Дарила такое удовлетворение, какого, считал он теперь, в «старой системе» не найти.

Но он все еще был новеньким, и, когда начались первые созвоны по поводу The DAO, в основном только слушал. Его поразило, что киты, даже не зная участников группы «Робин Гуд» лично, легко выдали им токены на миллионы долларов.

Но увидев те последние застрявшие 4 миллиона, Джорди сказал: «У меня есть свой смарт-контракт. Может, попробовать его?» Другие члены RHG скинули ему деньги на атаку – и да, у него получилось достать те 4 миллиона. Он был в шоке: на прошлой работе он и не мечтал получить такую сумму за всю свою жизнь.

С началом атак Авса твитнул: «ИДЕТ КОНТРОЛИРИУЕМОЕ ОПУСТОШЕНИЕ THE DAO. БЕЗ ПАНИКИ». (Кто-то ответил: «НИКТО НЕ ПИШЕТ „БЕЗ ПАНИКИ“ КАПСОМ»)

Через три с половиной часа Авса твитнул: «The DAO почти пустая. Пока что выведено 7,2М».

На Reddit он объяснил, что в DAO группы «Робин Гуд» вошли еще два человека, но, как он выразился, «зато риск сократился с 20 тысяч хакеров до всего 2».

Он обратился к этим двоим, а также к другим создателям дочерних DAO, попросив, чтобы они помогли спасти эфир из The DAO. Затем сказал: «Если вы хакер, могу только сказать, что мы идем за вами».

Но зато в ту ночь, обезопасив 7,2 миллиона эфира, группа «Робин Гуд» спала спокойно.

7. 21 июня 2016 – 24 июля 2016

Несмотря на облегчение при виде поста Авсы о том, что бóльшая часть эфира спасена, многие комменты на Reddit сводились к одному: «Есть очень веские доводы в пользу ограниченного, добровольного, временного обновления, чтобы майнеры могли предотвращать новые подобные атаки, а также использовать их для исключения дальнейших атак на эти дочерние DAO».

Верхний комментарий гласил: «После временного софтфорка весь эфир можно переслать в контракт возврата средств – и кошмар закончится!» Но Стефан Туаль ответил: «Самым простым, быстрым и безопасным решением все еще (ИМХО) остается хардфорк». Следующий комментатор написал: «Я был за хардфорк, но теперь незачем раскалывать сообщество. Потеря 30 % активов вполне приемлема… Хардфорки – это крайняя мера».

Эти споры разгорелись уже в первые часы после атаки: хардфорк или софтфорк? После короткого поста Кристофа в субботу 18 июня, где он оставил решение за сообществом, 19 июня Лефтерис написал более подробный пост в воскресенье, уточнив все варианты. Первый – обойтись без софт- и хардфорка, только скоординировать атаки большого числа держателей токенов. Если проводить коллективную атаку правильно, они не дадут хакеру вывести эфир. Минус: этим придется заниматься вечно – и никто не сможет вернуть свои деньги.

Затем Лефтерис описал софтфорк. Это был сложный процесс из пяти шагов, каждый с разными сроками, всего составляющий по длительности, как он указал в первом пункте, двадцать пять дней, за которые «очень много всего должно пройти как надо». Вдобавок люди не смогут вернуть себе украденный эфир еще семьдесят три дня. Да и тогда хакер сможет помешать, просто переведя эфир в любую другую дочернюю DAO – даже ту, из которой сам уже не сможет забрать средства; атака просто лишит софтфорк смысла. Лефтерис делал вывод: «Описанное выше – очень длительный процесс со множеством рискованных моментов… В конечном счете хардфорк – простое решение, которое решит проблему гарантированно».

Хардфорк действительно был проще, особенно в сравнении с тем же процессом на биткойне. Поскольку Биткойн, как выразился в «белой книге» Сатоси Накамото, – это «децентрализованная электронная денежная система», в нем есть «цепочка ответственности» от момента создания одного биткойна до того, как он (или его доля) становятся чьей-то собственностью. Это как цифровой эквивалент пути долларовой банкноты с момента, когда ее выпустили, до момента, когда ее дают на чай таксисту, он покупает на нее цветы у флориста, а тот уже потом оплачивает проезд на автобусе. В биткойне, чтобы отменить что-нибудь наподобие The DAO – то есть забрать чаевые у таксиста, пришлось бы заодно отменить проезд на автобусе и вернуть цветы.

Как выразился Грифф во время сеанса по видеосвязи на следующий день после атаки, находясь дома у родителей Кристофа, «В Ethereum все совсем по-другому. В Ethereum есть балансы. В токен-контракте нет отслеживания монет после их перевода… это просто база данных, как таблица в Excel. Видишь адрес и баланс, и каждый раз, когда токен переводится, он просто сменяет в этой таблице номер… Поэтому у децентрализованной автономной организации, такой как Ethereum, и есть возможность внести изменения, которые не затронут всех».

Он объяснил, что Гэвин, Виталик и Кристоф выработали решение в духе «заменить CD-плеер на беспроводную магнитолу в машине, пока она едет на круиз-контроле по шоссе». Это возможно благодаря блокам из блокчейна в духе Эдварда Мейбриджа[17] – они за раз перейдут с дискредитированного The DAO к контракту возврата средств, не потревожив Ethereum в целом.