Команда Parity выложила для обсуждения очередное предложение (EIP-999) по спасению 513 000 ETH, оказавшихся замороженными на мультиподписном кошельке компании в ноябре 2017 года. Неумелый пользователь Github, случайно наткнувшись на уязвимость в коде кошелька, оставленную разработчиками, воспользовался ей и объявил себя владельцем кошелька, а затем уничтожил библиотеки функций смарт-контракта, после чего весь эфир в кошельке стал недоступен.

Первая попытка вернуть средства

В первый раз для спасения замороженных средств Parity вынесла на обсуждение проект изменений в протоколе Виртуальной Машины Эфириума, включающий опкоды для восстановления удаленного контракта. Команда рассчитывала заручиться поддержкой пользователей, столкнувшихся с аналогичной проблемой ранее – смарт-контрактов, «убитых» по разным причинам, оказалось неожиданно много. Однако, тот проект встретил активное сопротивление как завсегдатаев Reddit, опасающихся за свои инвестиции, так и разработчиков Фонда Эфириума, указывавших на риски внесения изменений в код EVM.

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

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

  • За – неизменяемость блокчейна не абсолютна, и тому есть примеры из прошлого: в ранние дни биткойна в результате ошибки протокола был выпущен почти триллион монет, а также происшествие с TheDAO. Если придерживаться железобетонных принципов, то развитие экосистемы может замедлиться – ведь эксперименты становятся наказуемыми, да и крупные компании подумают более чем дважды перед тем, как инвестировать ресурсы в «пожароопасную» среду. Таким образом, выбирая неизменяемость, приходится жертвовать инновациями.

Не получив поддержки, команда Parity внесла новое предложение, реализация которого выглядит значительно проще.

EIP-999

Новое предложение содержит всего один пункт: восстановление кода единственного контракта (0x863DF6BFa4469f3ead0bE8f9F2AAE51c91A907b4с) помощью небольшой «заплатки». Как обычно, комментаторы Reddit взорвались негативом, однако на этот раз предложение встретило более благожелательное отношение разработчиков, в основном, благодаря своей простоте. В интервью Coindesk разработчик Фонда Ник Джонсон (Nick Johnson) сказал:

«Полагаю, восстановление библиотек контракта проще с технической точки зрения, к тому же это будет выглядеть более искренним, чем первоначальное предложение о модификации опкода EVM […] Что касается моего мнения, то я за помощь в возврате средств, если цена такого шага намного меньше «спасенной» суммы, владелец добросовестен, и это единственный способ. Мне кажется, что случай мультиподписного кошелька Parity удовлетворяет всем трем критериям».

Интересно, что в отличие от пользователей Reddit, голосование по EIP-999 (продлится до 24 апреля) среди владельцев ETH по состоянию на момент написания статьи показывает существенный перевес голосов в пользу спасения средств: 60.8% (21715.2 ETH) за и 37.9% (13315.2 ETH) – против. Каждый голос взвешивается балансом голосующего кошелька. Однако, как неоднократно отмечали Влад Замфир и Виталик Бутерин, голосование балансом кошелька не может служить единственным критерием выбора. Дело в пассивности (апатии) голосующих. В период проведения подобного голосования по поводу возврата средств, похищенных в TheDAO, проголосовало в общей сложности не больше 15% балансов. Поэтому голосование является важным, но не определяющим фактором в принятии решения.