Рекурсивный вызов: The DAO на грани смерти и хардфорк Ethereum
Ethereum Foundation во главе с Виталиком Бутерином пошли на спасение фондов the DAO в пользу инвесторов. Однако, последние будут иметь возможность только вывести средства — похоже, the DAO пришел конец.
Как сообщил Бутерин в записи на блоге проекта, устранение последствий атаки потребует сначала софтфорка, а потом и хардфорка сети Ethereum:
«Сообщество разработчиков предлагает софтфорк, (без отката; ни одна транзакция или блоки не будут «аннулированы»), который сделает так, что любые транзакции, использующие команды call/callcode/delegatecall и исполняющие код с хэшем 0x7278d050619a624f84f51987149ddb439cdaadfba5966f7cfaea7ad44340a4ba (т.е. The DAO и дочерние ДАО) приведут к недействительности транзакции (не только команды, но и транзакции), начиная с блока номер 176000 (точный номер блока, с которого изменения вступят в силу до момента выпуска кода), предотвращая возможность вывода эфиров после 27-дневного окна. После этого будет осуществлен хардфорк, который позволит держателям токенов забрать свои эфиры», — разъяснил ситуацию Бутерин.
Хронология событий
В пятницу 17 июня произошла атака на The DAO — первый децентрализованный венчурный фонд на базе Ethereum. Сообщения об этом появились в официальном блоге проекта The DAO, в slack-сообществах и в социальных сетях. В течение последующих нескольких часов события развивались очень стремительно и драматично.
В официальном блоге the DAO был опубликован предполагаемый план действий для устранения последствий атаки. В частности, пользователям предлагалось осуществить спам атаку на Ethereum-адрес проекта, чтобы приостановить утечку средств.
Монеты ETH плавно перетекали на адрес злоумышленника, и на момент публикации новости баланс контракта превышал 3 641 694 ETH или свыше $64 млн. Однако злоумышленник не сможет вывести монеты из созданной дочерней DAO в ближайшие 27 дней (окно создания дочерней DAO).
Реакция рынка
Токен DAO очень быстро потерял в цене порядка 60%, в какой-то момент упав до 0.00007100 BTC за 1 DAO.
Ethereum также отреагировал на атаку, в определенный момент цена криптовалюты упала ниже отметки в 0.02000000 BTC
В свою очередь Виталик Бутерин в связи с атакой на The DAO призвал руководство криптовалютных бирж приостановить ввод и вывод средств, а также заморозить торги. Реакция не заставила себя ждать, и спустя некоторое время в официальном твиттере биржи Kraken появилось сообщение:
«Вывод средств временно приостановлен до появления отчета от @ethereumproject относительно утечки ETH из The DAO. Средства Kraken в безопасности»
Withdrawals temporarily suspended pending report from the @ethereumproject on The DAO ether leak. Kraken funds safe. https://t.co/dmh6V5NB79
Ликвидация атаки и конец The DAO
Позже Виталик Бутерин опубликовал подробный пост о произошедшей атаке, в котором рассказал о сути задействованной уязвимости и дальнейших планах сообщества.
На данный момент, утверждает Бутерин, атака успешно идентифицирована. По его словам, атака на The DAO все ещё продолжается с помощью разновидности «рекурсивного вызова». Это позволяет бесконечно снимать средства The DAO и переводить их в дочернее ДАО посредством многократного разделения ДАО, повторно собирая эфиры в рамках одной транзакции. Тем не менее, адрес дочернего ДАО, куда уходят похищенные средства установлен, а у сообщества есть около 27 дней (окно для создания дочернего ДАО, в рамках которого вывести средства невозможно), чтобы устранить проблему.
На изображении ниже показано предложение о разделении, с помощью которого злоумышленник воспользовался уязвимостью.
На текущий момент, по словам Бутерина, майнеры могут спокойно продолжать подтверждение транзакций в нормальном режиме, потом дождаться софтфорка и установить его, если они согласны на такое развитие событий.
Отдельно он отметил, что использованная хакерами уязвимость касается только The DAO:
«Это проблема, которая влияет конкретно на The DAO; Ethereum в полной безопасности», — заявил Бутерин.
Держателей DAO-токенов лидер Ethereum призвал «сидеть смирно и не переживать», а биржи продолжать торги эфиром (не упомянув, однако, о токенах DAO).
Кроме того, Бутерин предостерег создаталей контрактов на Ethereum от создания контрактов на сумму более $10 млн и призвал к осторожности при разработке, чтобы не создать баги, позволяющие многократно снимать средства в рамках одной транзакции. Во избежание подобных багов в будущем сообществу — ориентировочно в течение недели — будут представлены рекомендации по созданию контрактов. Также Бутерин напомнил, что создатели удобных инструментов для разработки безопасных контрактов на Ethereum являются основными кандидатами на получение грантов.
Примечательно, что данная уязвимость была обнаружена примерно неделю назад, и ранее разработчики сообщали об её устранении. Тогда сооснователь Slock.it Стефан Туаль подробно рассказал об особенностях данной уязвимости и анонсировал релиз обновлений, устраняющих её. По всей видимости, что-то пошло не так.
«The DAO должны были больше времени уделить тестированию и работе в тестовой сети, но слишком всё быстро происходит, и сообщество постоянно ждёт продуктов на blockchain «завтра». Стефан [Туаль — прим.ред] все равно молодец. […] The DAO стали второй по значимости организацией, которая рассказала, что такое децентрализованные автономные организации, и своим появлением создала рынок моделей ДАО на платформе Ethereum и её аналогах”, — прокомментировал ситуацию лидер команды разработчиков проекта Aira Сергей Лоншаков.
В связи с успехом рекурсивной атаки было принято решение о вероятном закрытии проекта The DAO и возврате вложенных монет ETH пользователям. The DAO будет переведен в обычный контракт, используя который инвесторы смогут вернуть вложенные в проект монеты ETH.
Несмотря на завершение эксперимента The DAO, такое использование принципа too big to fail со стороны Ethereum Foundation привело ко вздоху облегчения со стороны участников организации, что отображено в заголовке соответствующей записи в официальном блоге:
«Краткое резюме по атаке #theDAO: форки и координация с [Ethereum] Foundation позволят вернуть все похищенные средства. Те же форки позволят передать эфиры из токенов DAO в умный контракт, который содержит только функцию выведения средств. Так как никакие деньги в The DAO не были потрачены и ничего не было украдено, ничего не пропало», — прокомментировал редакции Forklog сооснователь Slock.it Стефан Туаль.
Несмотря на сложившуюся ситуацию, представители Slock.it считают её только временной преградой к успеху концепции ДАО, однако о дальнейших планах сообщать, очевидно, пока не готовы.
Комментарии экспертов
Даниэль Надь, разработчик в проекте Ethereum:
«Суть бага в том, что единовременность (атомарность) вывода средств и уничтожения права голоса была нарушена, и при хитром инициировании раздела [на дочернюю DAO — прим.ред] образовался промежуток, куда можно было впихнуть запуск еще одного раздела. Таким образом, злоумышленники могут вывести все средства из DAO. Медленно, но верно. Этот конкретный контракт DAO — мертв, все вложенные в него эфиры потеряны вкладчиками и достанутся злоумышленнику. Хотя потратить он их сможет только через три недели. Тех, кто не вкладывались в DAO, проблема затронула лишь косвенно, путем влияния на цену эфира. Осталось два важных вопроса: Кто виноват? Что делать?»
Сергей Лоншаков, лидер команды разработчиков проекта Aira:
«Данная атака — хорошее испытание для сообщества и должна отрезвить тех людей, кто думают, что создать ДАО — это просто. The DAO первые, кто сделали на Ethereum, то о чем мы много говорили, как о перспективе — организации, которая имеет запрограммированные правила. Но предусмотреть всего сразу и когда ты первый — практически невозможно, нужно быть Сатоши, наверное. Я уверен, что решение будет найдено, возможно, оно не будет всех устраивать, но оно будет. Хоронить The DAO рано, скорее всего этот прецедент откроет возможности для других команд показать свою модель ДАО на фоне текущих проблем. Так что, мне кажется, всё к лучшему».
Андрей Хаврюченко, hacking distributed systems since 1998:
«Наилучшим, но все равно катастрофическим решением будет хардфорк Ethereum. Ошибка не в Ethereum, а в коде DAO. Попытка хардфорка убьет капитализацию Ethereum быстрее, чем любая катастрофа с DAO. Остановка торгов эфиром и DAO — тоже ошибка. Явно сейчас идут панические продажи, при которых будет украдено тоже немало монет».
Панические настроения в сообществе с одной стороны заставляют инвесторов нервничать и продавать имеющиеся на руках монеты, с другой — открывают большие спекулятивные возможности. Вероятно в ближайшие несколько дней торговля ETH будет идти очень неспокойно. Напомним, что совсем недавно Ethereum установил новый ценовой рекорд — стоимость одной монеты превысила $21.
«Мы инвестировали в данный проект, как и в Ethereum, понимая риски, что подобное может произойти, но нам эта инвестиция была интересна в том числе как эксперимент децентрализованного управления. Жаль, что он так быстро закончился. Что касается инвестиций, все эфиры инвестированные в the DAO будут возвращены, то есть можно будет обменять токены DAO на ETH. Сейчас на Poloniex премия за риск, если вдруг что-то пойдет не так, около 20%. Поэтому те, кто держит эфиры могут подзаработать. Что касаемо самого Ethereum, ликвидация The DAO отразится негативно на его цене, так как проект собрал 14% эфиров, и теперь они снова возвращаются на рынок. Многие инвесторы в связи с увеличением в портфеле ETH (поскольку они поменяют токены DAO обратно на ETH) будут продавать их. Плюс негативный фон также отразится на цене, так как инвесторы будут чуть менее оптимистичны. Долгосрочная рекомендация по Ethereum — buy and hold», — рассказал ForkLog сооснователь Cyber.fund Константин Ломашук.
Уже через несколько часов после начала атаки было заявлено о будущей ликвидации уязвимости посредством софтфорка в спокойном режиме, так как по правилам разделения ДАО злоумышленники не смогут вывести средства в течение 27 дней. При этом, как сообщил Виталик Бутерин, никаких откатов транзакций или блоков не будет. Прежде всего потому, что откат транзакций сделает недействительными доказательства, ведущие к злоумышленнику.
ForkLog продолжает следить за развитием событий.
Источник
Decentralized autonomous organisations (DAOs)
Decentralized autonomous organisations (DAOs)
DAOs are an effective and safe way to work with like-minded folks around the globe.
Think of them like an internet-native business that’s collectively owned and managed by its members. They have built-in treasuries that no one has the authority to access without the approval of the group. Decisions are governed by proposals and voting to ensure everyone in the organisation has a voice.
There’s no CEO who can authorise spending based on their own whims and no chance of a dodgy CFO manipulating the books. Everything is out in the open and the rules around spending are baked into the DAO via its code.
Why do we need DAOs?
Starting an organisation with someone that involves funding and money requires a lot of trust in the people you’re working with. But it’s hard to trust someone you’ve only ever interacted with on the internet. With DAOs you don’t need to trust anyone else in the group, just the DAO’s code, which is 100% transparent and verifiable by anyone.
This opens up so many new opportunities for global collaboration and coordination.
DAO | A traditional organisation |
---|---|
Usually flat, and fully democratized. | Usually hierarchical. |
Voting required by members for any changes to be implemented. | Depending on structure, changes can be demanded from a sole party, or voting may be offered. |
Votes tallied, and outcome implemented automatically without trusted intermediary. | If voting allowed, votes are tallied internally, and outcome of voting must be handled manually. |
Services offered are handled automatically in a decentralized manner (for example distribution of philanthropic funds). | Requires human handling, or centrally controlled automation, prone to manipulation. |
All activity is transparent and fully public. | Activity is typically private, and limited to the public. |
To help this make more sense, here’s a few examples of how you could use a DAO:
- A charity – you can accept membership and donations from anyone in the world and the group can decide how they to spend donations.
- A freelancer network – you could create a network of contractors who pool their funds for office spaces and software subscriptions.
- Ventures and grants – you could create a venture fund that pools investment capital and votes on ventures to back. Repaid money could later be redistributed amongst DAO-members.
There are different models for DAO membership. Membership can determine how voting works and other key parts of the DAO.
Usually fully permissionless, depending on the token used. Mostly these governance tokens can be traded for permissionlessly on a decentralized exchange. Others must be earned through providing liquidity or some other ‘proof of work’. Either way, simply holding the token grants access to voting.
Typically used to govern broad decentralized protocols and/or tokens themselves.
A famous example
MakerDAO – MakerDAO’s token MKR is widely available on decentralized exchanges. So anyone can buy into having voting power on the Maker protocol’s future.
Share-based DAOs are more permissioned, but still quite open. Any prospective members can submit a proposal to join the DAO, usually offering tribute of some value in the form of tokens or work. Shares represent direct voting power and ownership. Members can exit at anytime with their proportionate share of the treasury.
Typically used for more closer-knit, human-centric organizations like charities, worker collectives, and investment clubs. Can also govern protocols and tokens as well.
A famous example
MolochDAO – MolochDAO is focused on funding Ethereum projects. They require a proposal for membership so the group can assess whether you have the necessary expertise and capital to make informed judgments about potential grantees. You can’t just buy access to the DAO on the open market.
How do DAOs work?
The backbone of a DAO is its smart contract. The contract defines the rules of the organisation and holds the group’s treasury. Once the contract is live on Ethereum, no one can change the rules except by a vote. If anyone tries to do something that’s not covered by the rules and logic in the code, it will fail. And because the treasury is defined by the smart contract too that means no one can spend the money without the group’s approval either. This means that DAOs don’t need a central authority. Instead the group makes decisions collectively and payments are authorised automatically when votes pass.
This is possible because smart contracts are tamper-proof once they go live on Ethereum. You can’t just edit the code (the DAOs rules) without people noticing because everything is public.
More on smart contracts
Ethereum and DAOs
Ethereum is the perfect foundation for DAOs for a number of reasons:
- Ethereum’s own consensus is distributed and established enough for organizations to trust the network.
- Smart contract code can’t be modified once live, even by its owners. This allows the DAO to run by the rules it was programmed with.
- Smart contracts can send/receive funds. Without this you’d need a trusted intermediary to manage group funds.
- The Ethereum community has proven to be more collaborative than competitive, allowing for best practices and support systems to emerge quickly.
Источник