The DAO и учение Дао. Аварийный выход

tao-monadКрупнейшее ограбление в истории США – в 1997 году на заводе Dunbar Armored были похищены 18,9 миллионов долларов (это около 27,9 миллионов в сегодняшних деньгах). Недавняя уязвимость в коде The DAO унесла 53 миллиона. По сравнению с этой суммой, ограбление в Данбаре – карманная кража.

В предыдущих постах моих коллег по IC3 Эмина Гюн Сайера и Фила Дайана подробно рассмотрены технические аспекты уязвимости и показана необходимость технических предохранителей, таких как формальная верификация, тщательный дебаггинг и новые возможности высокоуровневых языков программирования. Предохранители, вместе с независимыми от программного кода спецификациями, отдельно создаваемыми для каждого контракта, должны лечь в основу разработки смарт контрактов нового поколения.

Избежать повторения судьбы The DAO поможет не только предотвращение атак, но и создание аварийных выходов

houdini1 (1)Несмотря на принимаемые меры предосторожности, новые уязвимости, подобные той, что была обнаружена в The DAO, будут и дальше попадаться в смарт контрактах. Это неизбежно. В комплексной и динамичной среде смарт контрактов Эфириума практически невозможно избежать ошибок кода и непредвиденных уязвимостей. Перечисленные выше технические решения не смогли бы предотвратить возможных проблем, описанных в Предложении моратория The DAO Сайера, Замфира и Марка, так же как и рекурсивного вызова, которым воспользовался злоумышленник, атаковавший The DAO. Моделирование ошибок, комплексные взаимозависимости контрактов и другие процедуры могут привести к тому, что контракты перестанут отражать изначальные замыслы своих создателей.

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

Основное предложение состоит в том, чтобы включить в смарт контракты «аварийные выходы» – четко прописанные процедуры модификации и расторжения контрактов в свете непредвиденных обстоятельств (то, что полностью отсутствовало в The DAO). Именно на этом я настаивал в октябре 2015 на форуме DEVCON1 (тогда Slock.it был известен в основном, производством дверных замков), затем в мае на конференции IC3, и буду отстаивать в совместной с Ari Juels работе, которую я представлю 9 июля на симпозиуме RuleML 2016.

Аварийные выходы могут и должны базироваться на Контрактном Праве

Гудини найдет выход

Гудини найдет выход

Хорошая новость заключается в том, что создавая аварийные выходы для смарт контрактов, нам не нужно начинать с нуля. В реальном мире, в контракты уже включены разного рода аварийные выходы, базирующиеся на существующем контрактном праве. За долгий срок правовое сообщество определило и отладило обширный набор средств исправления ошибок, и действий в непредвиденных обстоятельствах для обычных контрактов (модификация, реформирование, завершение, аннулирование). Мы просто можем преобразовать их в аналогичные инструменты в смарт контрактах.

В свете атаки на The DAO, важнейший урок, которому учит нас контрактное право, заключается в том, что аварийные выходы просто должны существовать. В мире смарт контрактов, в настоящее время, они отсутствуют. В контрактном праве они присутствуют со времен Древнего Рима, когда actio redhibitoria (аннулирование и реституция), т. е., отказ от контракта, и возвращение обеих сторон к предыдущему состоянию, был одним из основных средств, применяющихся в случае, если кто-то продал вам на рынке гнилые фрукты. Конечно, контракты в оффлайне могут быть изменены после окончания их действия. Смарт контракты – нет. Это означает, что создание аварийных выходов потребует значительных усилий от разработчиков программ, библиотек, платформ, языков программирования, а также от команды Эфириума.

Как пункт об аварийном выходе помог бы сэкономить кое-кому 53 миллионаhoudini4

Проблемная функция в DAO.sol – splitDAO, уязвимая к рекурсивному вызову. Как показал Фил Дайан, атака требует от ее инициатора множественных вызовов splitDAO. Если бы в коде был аварийный выход, он бы остановил исполнение splitDAO или заморозил ее исполнение до выяснения, а вывод средств из The DAO был бы остановлен сразу после обнаружения.

Остановка splitDAO – худшее решение из возможных, потому что она бы полностью парализовала работу The DAO. Тем не менее, подходящий механизм нейтрализации было бы легко запрограммировать ( и это давно должно было быть сделано). Можно было снабдить функцию splitDAO логическим оператором, который активировался бы, к примеру, кворумом сообщества, кураторами The DAO, или наблюдателями Эфириума. Такой предохранитель пригодился бы и в других недоброкачественных контрактах с таким же багом, как в The DAO. Это может стать самым распространенным решением в смарт контрактах.

Замена функции splitDAO на версию без бага лучше, чем ее отключение, поскольку работа The DAO должна быть продолжена. Такие способы есть. Например, функция splitDAO – да и любая из функций DAO.sol – может быть разделена на несколько отдельных смарт контрактов. Для вызова таких сателлитных контрактов DAO.sol будет использовать функции-указатели с помощью внешних адресов и ABI, которые записаны в легко заменяемых строках-переменных. Если в одной из функций возникает проблема, просто создайте новую и смените указатель в основном контракте. (Конечно, не каждый будет обладать доступом к изменению указателей, так что придется ограничить доступ к замене переменных).

Этот подход, как мне кажется, и есть то направление модификаций контракта, на которое намекал Виталик в описании DAO. Если мы будем строить модифицируемые контракты таким образом, мы получим ситуацию, в которой сможем оперативно реагировать на баги и другие непредвиденные обстоятельства. Далее, если защита встроена в функции, инициирующие замену переменных (при получении одобрения всех сторон, и, возможно, при выполнении определенных условий), может быть обеспечена необходимая гибкость, которая не будет угрожать неизменяемости смарт контракта (которая, несомненно, является ключевым условием).

Как аварийные выходы работают на возмещение ущерба, а не только на его предотвращениеhoudini2

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

Представим, к примеру, что выплаты The DAO проводят некоторое время в карантине на временных эскроу-счетах, которые, в случае роспуска The DAO, автоматически выплачиваются инвесторам в соответствующей пропорции. Если бы такой тонкий механизм в свое время был вставлен в контракт, мы могли бы сейчас принять вариант аннулирования The DAO, с немедленным возвратом средств инвесторам, и хоть завтра начать с чистого листа, с исправленным контрактом.

Кто будет контролировать такие операции? Контрактное право дает однозначный, совершенно прозрачный ответ: только стороны контракта и суды имеют право изменять и аннулировать контракты. Мы также можем создать протокол, который позволяет нажать кнопку аннулирования при условии единогласного голосования, или «доверенного посредника» (пример – разработчики Эфириума). Мне могут возразить, что последний способ подрывает распределенную природу блокчейна. Однако то же самое можно сказать о структуре The DAO с ее кураторами. Призывы к основателям Эфириума о форке всей сети Эфириума из-за атаки имеют ту же природу. Фактически, модель централизованного управления, или точнее, смешанная модель, которая сочетает центральное управление с консенсусом, уже используется в The DAO. При том, что архитектура блокчейна обеспечивает дополнительную ответственность управленцев, мы смело можем использовать такую модель для создания аварийных выходов.

Итогиhoudini5

Мой вывод: чтобы создать детализированные и надежные аварийные выходов, нам необходимо больше исследований. Нам нужно больше инженеров для создания и тестирования таких программ.

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

На микроуровне есть смысл стандартизировать коды аварийных выходов для всех контрактов и поместить их в открытые библиотеки. Это не только сделает коды выходов многоразовыми, но и подвергнет их более глубокому изучению со стороны пользователей. При создании кода мы должны опираться на те же инженерные принципы, которые я упомянул в начале этой колонки: формальная верификация, тщательное моделирование, минимальный размер кода. И конечно, необходимы инвестиции (как бы там ни было, The DAO проявило немыслимую щедрость, и тем самым привлекло всеобщее внимание к багу).

Если бы описанные методы и трудозатраты были задействованы для создания аварийных выходов несколько месяцев назад, сейчас разговор бы шел только о сроках возврата эфира инвесторам и мы бы не утонули в бесконечных обсуждениях. К несчастью, обещания того, что смарт контракты полностью устранят необходимость вмешательства судов превратились в фарс за последние несколько дней – уже даже предполагаемый хакер грозит судебным преследованием.

Наконец, уже слишком поздно делать что-либо с предохранителями в The DAO. Однако не поздно построить их для будущего и предотвратить убытки – или, принимая даоистское мировоззрение, минимизировать их – в The DAO v.2.

P. S.

Любопытный комментарий к исходной статье:

В. Бутерин: Забавно, что сплиттинг в The DAO задумывался как раз в качестве специального аварийного выхода. И вот именно он-то и оказался источником уязвимости. Так может быть, нам надо больше работать над стандартизацией уже существующих аварийных выходов и их модернизацией.

Источник: http://hackingdistributed.com/2016/06/22/smart-contract-escape-hatches/



Categories: Альткойны, Безопасность, Инвестиции, Технологии

Tags: , , , , ,

Leave a Reply

27 Комментарий на "The DAO и учение Дао. Аварийный выход"

Notify of
avatar
trackback
Обзор 2016 года: новый импульс биткойна и индустрии блокчейна | Заработок онлайн доступный каждому

[…] и, таким образом, был создан Ethereum Classic]. Обсуждение и дебаты вокруг уязвимости theDAO поднимают вопросы о доверии и человеческом факторе в […]

trackback
Обзор 2016 года: новый импульс биткойна и индустрии блокчейна – Bit•Новости

[…] и, таким образом, был создан Ethereum Classic]. Обсуждение и дебаты вокруг уязвимости theDAO поднимают вопросы о доверии и человеческом факторе в […]

trackback
17 блокчейн-пророчеств – Bit•Новости

[…] кто участвовал в катастрофе theDAO понимают, что безопасность смарт-контрактов стала […]

trackback
Что такое блокчейн-технология? Пошаговое руководство для новичков. Часть 3 – Bit•Новости

[…] был запущен без должной осмотрительности, что привело к катастрофическим последствиям. Несмотря на это, эксперимент DAO показывает что […]

trackback
Обзор блокчейн-индустрии за 2016 год простым языком – Bit•Новости

[…] и новых исследователей. Хотя использование Эфириума пока не стало мейнстримом (блокчейну Эфириума всего полтора года), при помощи […]

trackback
Шесть главных технологий 2016 по версии Bitcoin Magazine | Заработок онлайн доступный каждому

[…] после чего Фонд Эфириума пришел к весьма спорному аварийному хардфорку для восстановления потерянных средств, чем вызвал […]

trackback
Шесть главных технологий 2016 по версии Bitcoin Magazine – Bit•Новости

[…] после чего Фонд Эфириума пришел к весьма спорному аварийному хардфорку для восстановления потерянных средств, чем вызвал […]

trackback
Мишка на блокчейне: Российские власти не знают что делать – Bit•Новости

[…] Децентрализованных Автономных Организаций (DAO) или подобных соглашений, где контракты реализованы с […]

trackback
О токенах и краудсейлах: как стартапы используют блокчейн для сбора денег | Заработок онлайн доступный каждому

[…] собой доли распределённой автономной организации (DAO). Её код отвечает за выпуск токенов, хранение денег, […]

trackback
О токенах и краудсейлах: как стартапы используют блокчейн для сбора денег – Bit•Новости

[…] собой доли распределённой автономной организации (DAO). Её код отвечает за выпуск токенов, хранение денег, […]

trackback
«Умные контракты» в этом сложном мире — EthereumClassic

[…] […]

trackback
Заменят ли смарт-контракты юридические фирмы? – Bit•Новости

[…] постигшее The DAO – доказательство того, что для реализации такого […]

trackback
Раз Эфириум, Два Эфириум: что к чему — EthereumClassic

[…] Пожалуй, стоит начать с ДАО. […]

Al
Гость

Идея не особенно жизнеспособная,
во-первых, возможность произвольного ручного вмешательства в смарт-контракты подрывает их основные достоинства, связанные с автоматическим неизбежным и алгоритмически беспристрастным исполнением,
во-вторых, код в EVM исполняется синхронно (данная особенность продиктована архитектурой блокчейнов) и у вас нет возможности применить аварийный выход в ситуации подобной той, в которую попало the DAO — любые изменения вступят в силу уже после того как потенциально нежелательный код успеет выполниться, даже если это рекурсивное выполнение.
Просто стоит более тщательно относиться к проектированию смарт-контрактов, автор, как мне показалось, мыслит несколько вне контекста особенностей блокчейн архитектуры и пытается перенести сюда практики, более подходящие для централизованных проектов.

Анонимно
Гость

Чем сложнее система, тем больше ошибок в ней может быть. Именно поэтому биткойн не убиваем — он прост, понятен, в нём простой скриптинг для траты биткойнов. И у него уже давно запредельные майнинговые мощности, по настоящему распределённые. Всё остальное — чепуха…

Анонимно
Гость

Для бывалых биткойн прост, а для новичков это новый мир. ДАО/умные контракты в разы круче биткойна, это будущее и не важно на сколько граблей придется наступить.

Не удивительно что после появления и укрепления цифровой криптовалюты мы строим цифровое крипто-государство. Умные контракты лишь первая ступень, которой по сути еще и нет.

Петр
Гость

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

Анонимно
Гость

Речь о ДАО и смарт-контрактах. Причем тут вообще эфит/тнеДАО ?

Анонимно
Гость

мы строим цифровое крипто-государство

Что простите? Многие предпочитают крипто-анархию.

Анонимно
Гость

Биткойн не пытается управлять чем-то, кроме самого себя. А всякие смарт-контракты, регистрация прав собственности в блокчейн — пытаются управлять людьми, предписывать им определенное поведение.

Даулет Калабаев
Гость
В том то и дело, что ключевая идея Смарт контракта заключается в отсутствии так называемого «человеческого фактора» Совершенно не важно что происходит с ними сейчас, важно создать или максимально стремиться к созданию таких смарт контрактов, в которые судам вмешиваться было нельзя. Форки если и допустимы то только повышающие защищенность кода и контрактов, форк который планируется в системе Эфир в связи с ДАО ошибочен в принципе, несправедлив, но что более важно фундаментально противоречит неприкосновенности частной собственности, и по сути разрушит саму суть Эфириума. Неважно что сейчас заложено в смарт контракты, важно что идея контрактов без демократии, контрактов в которые нет возможности… Read more »
Анонимно
Гость

На 100% согласен с Вами!
Только программные выходы, без вмешательства людей с благими намерениями.

trackback
Биткойн: объяснение для начинающих | Заработок онлайн доступный каждому

[…] ‹ The DAO и учение Дао. Аварийный выход […]

Анонимно
Гость

Так почему-же сейчас сообщество, прельстившись мимолётной выгодой игнорирует саму идею криптовалют и перспективы долгосрочного развития, с такой радостью, рвением и беззаботностью открывает ящик регуляции криптовалюты, тем самым забивая гвозди в гроб Ethereum?..

trackback
The DAO и учение Дао. Аварийный выход | Заработок онлайн доступный каждому

[…] Source link […]

wpDiscuz