Один из самых ранних языков для умных контрактов Ethereum - Serpent отправлен на пенсию 04.08.2017

Serpent - один из ранних языков умных контрактов в Ethereum более не безопасен для использования

«Serpent» - один из ранних языков умных контрактов в Ethereum более не безопасен для использования.

Возможно это самый большое решение при аудите компилируемого Ethereum языка -  Seprent, которое было выпущено на прошлой неделе компанией по безопасности Zeppelin Solutions. Исследование компании указывает на десятки проблем с компилятором, включая восемь критических уязвимостей.

Компания Zeppelin была нанята Augur – проектом, который занимается прогнозированием Ethereum-ориентированных рынков, около 2 месяцев назад. Имея токены REP почти на 2 миллиона долларов, которые были зашиты в контракты Seprent, у компании Augur были веские основания для беспокойства о безопасности старого языка.

Augur был одним из первых ethereum проектов и в то время, когда был написан контракт для Augur, Seprent был основным доступным языком. Но вскоре после этого был представлен новый язык умных контрактов – «Solidity», выталкивая язык Seprent с арены.

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

Он сказал:

«Никто никогда не говорил, что Seprent небезопасен или устарел. Он был просто не так популярен, как Solidity»

Пока Augur планировал перейти на другой язык смарт-контрактов, результаты аудита компилятора по существу ускорили процесс. Как только Zeppelin уведомил Augur о проблемах в безопасности, Augur быстро переместил свои токены REP в безопасные токены ERC-20, написанные на Solidity.

«Низкое качество» и «дающий трещину»

Для тех, кто интересуется Zeppelin Solutions изложила результаты своей проверки в 36 страничном отчете.

В своем блоге Zeppelin назвал проект Serpent проектом «низкого качества» и «дающим трещину» и предостерег разработчиков от использования языка до тех пор, пока не будет исправлено множество критических проблем.

Эта новость побудила создателя сети Ethereum Виталика Бутерина отправить твит, назвав язык «устаревшей технологией» и предупредил, что языку не хватает соответствующей «защиты безопасности».

Что касается Augur, наиболее критической уязвимостью Serpent была та, которая позволила бы хакеру изменить дату, на которую был создан контракт REP токена, существенно замедлив поставку токена.

«Вы могли заставить контракт думать, что он не был еще официально создан и ни одна из транзакций не работала бы» сказал Круг.

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

Вместо этого, следуя по пути обновления, описанному Zeppelin, Augur перезаписал свои старые REP токены и развернул новые контракты на контрактах ERC-20. Затем он эффективно взломал собственный смарт контракт на Serpent, заморозив REP токен, до того, как замороженный REP токен смог переместиться в новый контракт.

В различных постах на блоге Zeppelin призвал остальные Ethereum следовать аналогичному пути, чтобы переместить в более безопасную систему контрактов Solidity.

Необходимо больше вовлеченных людей

Язык программирования Serpent и компилятор были написаны Бутериным. Но тот факт, что язык был написан одним человеком может лежать в основе некоторых проблем Serpent.

Zeppelin написали в своем отчете:

«Меньше глаз, обращенных на код означает меньше багов, которые были обнаружены»

Zeppelin также обратила внимание что языку Serpent почти 2 года и всего несколько коммитов с октября 2015. К тому же, вряд ли кто-то использует Serpent сейчас, у тех кто его использует немного возможностей по поиску проблем в коде.

С другой стороны, Solidity был написан группой людей во главе с Гевином Вудом, одним из основателей Ethereum. И поскольку Solidity более широко распространен и активно используется – в 30 раз больше pull запросов, в 20 раз больше коммитов, в 8 раз больше участников, согласно Zeppelin, по сравнению с Serpent. Новая программа имеет намного меньше проблем.

Что касается того, что разработчики должны использовать вместо Serpent, согласно отчету Zeppelin – Solidity лучший вариант на сегодня. Тем не менее, Zeppelin предалагет рассмотреть на сегодня Viper – преемника Serpent, заявив, что Viper «выглядит превосходно» для Serpent. Но в своем твите Бутерин рекомендовал разработчикам немного подождать пока Viper не пройдет внешний аудит.

Аудит Solidity?

Но, возможно одна из самых тревожных проблем, выявленных аудитом Serpent – это то, что сам Solidity                не был проверен. И учитывая, что токены, стоимостью миллионы долларов сейчас управляются умными контрактами, написанными на Solidity, некоторые люди, в том числе Круг, находят эти новости тревожными.

Вдобавок к опасениям по поводу Solidity, аудит компилятора Zeppelin проходит по пятам взлома кошелька Parity, стоимостью в 30 миллионов долларов, где ошибка в коде Parity по существу позволила хакеру превратить 3 кошелька с мультиключами в кошелек с нулевым ключом и слить денежные средства.

В своем блоге после этой атаки Parity указали на язык Solidity заявив, что «ответственность за эту ошибку лежит на языке Solidity и на его нынешнем воплощении, сложность с которой один объект может узнать разрешения на выполнение другого субъекта через функции».

Но даже более крупная Ethereum кража произошла чуть более года назад, когда хакер воспользовался лазейкой в коде Solidity, для того, чтобы слить 50 миллионов в эфир из проекта под название DAO. Ущерб был признан настолько обширным, что разработчики, стоящие за Ethereum произвели жесткое разделение в протоколе, чтобы отменить историю транзакций.

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

«Учитывая количество уязвимостей, обнаруженных в Serpent, мы считаем, что аудит компилятора наряду с проверкой кода должен стать постоянной практикой», написал он в электронном письме к проекту CoinDesk. Он добавил, что в настоящее время ведутся переговоры с проектов Ethereum для внедрения этой практики в жизнь.

Между тем, Круг высказал свои мысли по этому поводу, сказав:

«В целом, главная мысль – как можно больше вещей должно быт проверено»

Источник: coindesk.com

Текущие курсы валют

BTC -
BCH -
LTC -
ETH -
ETC -
ZEC -
XRP -
DASH -